PGh0bWw+CjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPjwvaGVhZD4K PGJvZHk+CiAgICA8ZGl2PgogICAgICAgIAogICAgICAgICAgICAgICAgPHNj cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPndpbmRvdy5QbG90bHlDb25m aWcgPSB7TWF0aEpheENvbmZpZzogJ2xvY2FsJ307PC9zY3JpcHQ+CiAgICAg ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8qKgoqIHBsb3Rs eS5qcyB2MS41Mi4yCiogQ29weXJpZ2h0IDIwMTItMjAyMCwgUGxvdGx5LCBJ bmMuCiogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKiBMaWNlbnNlZCB1bmRlciB0 aGUgTUlUIGxpY2Vuc2UKKi8KIWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT10 eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9k dWxlLmV4cG9ydHM9dCgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRl ZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sdCk7ZWxzZXsoInVuZGVmaW5l ZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Yg Z2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0 aGlzKS5QbG90bHk9dCgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24o KXtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbil7ZnVuY3Rpb24gYShvLHMpe2lm KCFyW29dKXtpZighZVtvXSl7dmFyIGw9ImZ1bmN0aW9uIj09dHlwZW9mIHJl cXVpcmUmJnJlcXVpcmU7aWYoIXMmJmwpcmV0dXJuIGwobywhMCk7aWYoaSly ZXR1cm4gaShvLCEwKTt2YXIgYz1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1v ZHVsZSAnIitvKyInIik7dGhyb3cgYy5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5E IixjfXZhciB1PXJbb109e2V4cG9ydHM6e319O2Vbb11bMF0uY2FsbCh1LmV4 cG9ydHMsZnVuY3Rpb24odCl7cmV0dXJuIGEoZVtvXVsxXVt0XXx8dCl9LHUs dS5leHBvcnRzLHQsZSxyLG4pfXJldHVybiByW29dLmV4cG9ydHN9Zm9yKHZh ciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLG89MDtv PG4ubGVuZ3RoO28rKylhKG5bb10pO3JldHVybiBhfX0oKSh7MTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zcmMvbGliIiks YT17IlgsWCBkaXYiOiJkaXJlY3Rpb246bHRyO2ZvbnQtZmFtaWx5OidPcGVu IFNhbnMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjttYXJnaW46MDtw YWRkaW5nOjA7IiwiWCBpbnB1dCxYIGJ1dHRvbiI6ImZvbnQtZmFtaWx5OidP cGVuIFNhbnMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjsiLCJYIGlu cHV0OmZvY3VzLFggYnV0dG9uOmZvY3VzIjoib3V0bGluZTpub25lOyIsIlgg YSI6InRleHQtZGVjb3JhdGlvbjpub25lOyIsIlggYTpob3ZlciI6InRleHQt ZGVjb3JhdGlvbjpub25lOyIsIlggLmNyaXNwIjoic2hhcGUtcmVuZGVyaW5n OmNyaXNwRWRnZXM7IiwiWCAudXNlci1zZWxlY3Qtbm9uZSI6Ii13ZWJraXQt dXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVz ZXItc2VsZWN0Om5vbmU7LW8tdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVj dDpub25lOyIsIlggc3ZnIjoib3ZlcmZsb3c6aGlkZGVuOyIsIlggc3ZnIGEi OiJmaWxsOiM0NDdhZGI7IiwiWCBzdmcgYTpob3ZlciI6ImZpbGw6IzNjNmRj NTsiLCJYIC5tYWluLXN2ZyI6InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xl ZnQ6MDtwb2ludGVyLWV2ZW50czpub25lOyIsIlggLm1haW4tc3ZnIC5kcmFn bGF5ZXIiOiJwb2ludGVyLWV2ZW50czphbGw7IiwiWCAuY3Vyc29yLWRlZmF1 bHQiOiJjdXJzb3I6ZGVmYXVsdDsiLCJYIC5jdXJzb3ItcG9pbnRlciI6ImN1 cnNvcjpwb2ludGVyOyIsIlggLmN1cnNvci1jcm9zc2hhaXIiOiJjdXJzb3I6 Y3Jvc3NoYWlyOyIsIlggLmN1cnNvci1tb3ZlIjoiY3Vyc29yOm1vdmU7Iiwi WCAuY3Vyc29yLWNvbC1yZXNpemUiOiJjdXJzb3I6Y29sLXJlc2l6ZTsiLCJY IC5jdXJzb3Itcm93LXJlc2l6ZSI6ImN1cnNvcjpyb3ctcmVzaXplOyIsIlgg LmN1cnNvci1ucy1yZXNpemUiOiJjdXJzb3I6bnMtcmVzaXplOyIsIlggLmN1 cnNvci1ldy1yZXNpemUiOiJjdXJzb3I6ZXctcmVzaXplOyIsIlggLmN1cnNv ci1zdy1yZXNpemUiOiJjdXJzb3I6c3ctcmVzaXplOyIsIlggLmN1cnNvci1z LXJlc2l6ZSI6ImN1cnNvcjpzLXJlc2l6ZTsiLCJYIC5jdXJzb3Itc2UtcmVz aXplIjoiY3Vyc29yOnNlLXJlc2l6ZTsiLCJYIC5jdXJzb3Itdy1yZXNpemUi OiJjdXJzb3I6dy1yZXNpemU7IiwiWCAuY3Vyc29yLWUtcmVzaXplIjoiY3Vy c29yOmUtcmVzaXplOyIsIlggLmN1cnNvci1udy1yZXNpemUiOiJjdXJzb3I6 bnctcmVzaXplOyIsIlggLmN1cnNvci1uLXJlc2l6ZSI6ImN1cnNvcjpuLXJl c2l6ZTsiLCJYIC5jdXJzb3ItbmUtcmVzaXplIjoiY3Vyc29yOm5lLXJlc2l6 ZTsiLCJYIC5jdXJzb3ItZ3JhYiI6ImN1cnNvcjotd2Via2l0LWdyYWI7Y3Vy c29yOmdyYWI7IiwiWCAubW9kZWJhciI6InBvc2l0aW9uOmFic29sdXRlO3Rv cDoycHg7cmlnaHQ6MnB4OyIsIlggLmVhc2UtYmciOiItd2Via2l0LXRyYW5z aXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UgMHM7LW1vei10cmFu c2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlIDBzOy1tcy10cmFu c2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlIDBzOy1vLXRyYW5z aXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UgMHM7dHJhbnNpdGlv bjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSAwczsiLCJYIC5tb2RlYmFy LS1ob3Zlcj46bm90KC53YXRlcm1hcmspIjoib3BhY2l0eTowOy13ZWJraXQt dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgZWFzZSAwczstbW96LXRyYW5zaXRp b246b3BhY2l0eSAwLjNzIGVhc2UgMHM7LW1zLXRyYW5zaXRpb246b3BhY2l0 eSAwLjNzIGVhc2UgMHM7LW8tdHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgZWFz ZSAwczt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBlYXNlIDBzOyIsIlg6aG92 ZXIgLm1vZGViYXItLWhvdmVyIC5tb2RlYmFyLWdyb3VwIjoib3BhY2l0eTox OyIsIlggLm1vZGViYXItZ3JvdXAiOiJmbG9hdDpsZWZ0O2Rpc3BsYXk6aW5s aW5lLWJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLWxlZnQ6 OHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3 aGl0ZS1zcGFjZTpub3dyYXA7IiwiWCAubW9kZWJhci1idG4iOiJwb3NpdGlv bjpyZWxhdGl2ZTtmb250LXNpemU6MTZweDtwYWRkaW5nOjNweCA0cHg7aGVp Z2h0OjIycHg7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6bm9ybWFsO2Jv eC1zaXppbmc6Ym9yZGVyLWJveDsiLCJYIC5tb2RlYmFyLWJ0biBzdmciOiJw b3NpdGlvbjpyZWxhdGl2ZTt0b3A6MnB4OyIsIlggLm1vZGViYXIudmVydGlj YWwiOiJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgt d3JhcDp3cmFwO2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQ7bWF4LWhlaWdodDox MDAlOyIsIlggLm1vZGViYXIudmVydGljYWwgc3ZnIjoidG9wOi0xcHg7Iiwi WCAubW9kZWJhci52ZXJ0aWNhbCAubW9kZWJhci1ncm91cCI6ImRpc3BsYXk6 YmxvY2s7ZmxvYXQ6bm9uZTtwYWRkaW5nLWxlZnQ6MHB4O3BhZGRpbmctYm90 dG9tOjhweDsiLCJYIC5tb2RlYmFyLnZlcnRpY2FsIC5tb2RlYmFyLWdyb3Vw IC5tb2RlYmFyLWJ0biI6ImRpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50 ZXI7IiwiWCBbZGF0YS10aXRsZV06YmVmb3JlLFggW2RhdGEtdGl0bGVdOmFm dGVyIjoicG9zaXRpb246YWJzb2x1dGU7LXdlYmtpdC10cmFuc2Zvcm06dHJh bnNsYXRlM2QoMCwgMCwgMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlM2Qo MCwgMCwgMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTst by10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNmb3JtOnRy YW5zbGF0ZTNkKDAsIDAsIDApO2Rpc3BsYXk6bm9uZTtvcGFjaXR5OjA7ei1p bmRleDoxMDAxO3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjExMCU7cmlnaHQ6 NTAlOyIsIlggW2RhdGEtdGl0bGVdOmhvdmVyOmJlZm9yZSxYIFtkYXRhLXRp dGxlXTpob3ZlcjphZnRlciI6ImRpc3BsYXk6YmxvY2s7b3BhY2l0eToxOyIs IlggW2RhdGEtdGl0bGVdOmJlZm9yZSI6ImNvbnRlbnQ6Jyc7cG9zaXRpb246 YWJzb2x1dGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6NnB4IHNv bGlkIHRyYW5zcGFyZW50O3otaW5kZXg6MTAwMjttYXJnaW4tdG9wOi0xMnB4 O2JvcmRlci1ib3R0b20tY29sb3I6IzY5NzM4YTttYXJnaW4tcmlnaHQ6LTZw eDsiLCJYIFtkYXRhLXRpdGxlXTphZnRlciI6ImNvbnRlbnQ6YXR0cihkYXRh LXRpdGxlKTtiYWNrZ3JvdW5kOiM2OTczOGE7Y29sb3I6d2hpdGU7cGFkZGlu Zzo4cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxMnB4O3do aXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tcmlnaHQ6LTE4cHg7Ym9yZGVyLXJh ZGl1czoycHg7IiwiWCAudmVydGljYWwgW2RhdGEtdGl0bGVdOmJlZm9yZSxY IC52ZXJ0aWNhbCBbZGF0YS10aXRsZV06YWZ0ZXIiOiJ0b3A6MCU7cmlnaHQ6 MjAwJTsiLCJYIC52ZXJ0aWNhbCBbZGF0YS10aXRsZV06YmVmb3JlIjoiYm9y ZGVyOjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdC1jb2xvcjoj Njk3MzhhO21hcmdpbi10b3A6OHB4O21hcmdpbi1yaWdodDotMzBweDsiLCJY IC5zZWxlY3Qtb3V0bGluZSI6ImZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MTtz aGFwZS1yZW5kZXJpbmc6Y3Jpc3BFZGdlczsiLCJYIC5zZWxlY3Qtb3V0bGlu ZS0xIjoic3Ryb2tlOndoaXRlOyIsIlggLnNlbGVjdC1vdXRsaW5lLTIiOiJz dHJva2U6YmxhY2s7c3Ryb2tlLWRhc2hhcnJheToycHggMnB4OyIsWToiZm9u dC1mYW1pbHk6J09wZW4gU2Fucyc7cG9zaXRpb246Zml4ZWQ7dG9wOjUwcHg7 cmlnaHQ6MjBweDt6LWluZGV4OjEwMDAwO2ZvbnQtc2l6ZToxMHB0O21heC13 aWR0aDoxODBweDsiLCJZIHAiOiJtYXJnaW46MDsiLCJZIC5ub3RpZmllci1u b3RlIjoibWluLXdpZHRoOjE4MHB4O21heC13aWR0aDoyNTBweDtib3JkZXI6 MXB4IHNvbGlkICNmZmY7ei1pbmRleDozMDAwO21hcmdpbjowO2JhY2tncm91 bmQtY29sb3I6IzhjOTdhZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTQwLDE1 MSwxNzUsMC45KTtjb2xvcjojZmZmO3BhZGRpbmc6MTBweDtvdmVyZmxvdy13 cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmQ7LW1zLWh5cGhl bnM6YXV0bzstd2Via2l0LWh5cGhlbnM6YXV0bztoeXBoZW5zOmF1dG87Iiwi WSAubm90aWZpZXItY2xvc2UiOiJjb2xvcjojZmZmO29wYWNpdHk6MC44O2Zs b2F0OnJpZ2h0O3BhZGRpbmc6MCA1cHg7YmFja2dyb3VuZDpub25lO2JvcmRl cjpub25lO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1o ZWlnaHQ6MjBweDsiLCJZIC5ub3RpZmllci1jbG9zZTpob3ZlciI6ImNvbG9y OiM0NDQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7In07 Zm9yKHZhciBpIGluIGEpe3ZhciBvPWkucmVwbGFjZSgvXiwvLCIgLCIpLnJl cGxhY2UoL1gvZywiLmpzLXBsb3RseS1wbG90IC5wbG90bHkiKS5yZXBsYWNl KC9ZL2csIi5wbG90bHktbm90aWZpZXIiKTtuLmFkZFN0eWxlUnVsZShvLGFb aV0pfX0seyIuLi9zcmMvbGliIjo3MTd9XSwyOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhbnNmb3Jtcy9h Z2dyZWdhdGUiKX0seyIuLi9zcmMvdHJhbnNmb3Jtcy9hZ2dyZWdhdGUiOjEy OTd9XSwzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz10KCIuLi9zcmMvdHJhY2VzL2JhciIpfSx7Ii4uL3NyYy90cmFjZXMvYmFy Ijo4NjR9XSw0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz10KCIuLi9zcmMvdHJhY2VzL2JhcnBvbGFyIil9LHsiLi4vc3JjL3Ry YWNlcy9iYXJwb2xhciI6ODc3fV0sNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9ib3giKX0seyIu Li9zcmMvdHJhY2VzL2JveCI6ODg3fV0sNjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL2NvbXBvbmVudHMvY2Fs ZW5kYXJzIil9LHsiLi4vc3JjL2NvbXBvbmVudHMvY2FsZW5kYXJzIjo1OTB9 XSw3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10 KCIuLi9zcmMvdHJhY2VzL2NhbmRsZXN0aWNrIil9LHsiLi4vc3JjL3RyYWNl cy9jYW5kbGVzdGljayI6ODk2fV0sODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9jYXJwZXQiKX0s eyIuLi9zcmMvdHJhY2VzL2NhcnBldCI6OTE1fV0sOTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9j aG9yb3BsZXRoIil9LHsiLi4vc3JjL3RyYWNlcy9jaG9yb3BsZXRoIjo5Mjl9 XSwxMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 dCgiLi4vc3JjL3RyYWNlcy9jaG9yb3BsZXRobWFwYm94Iil9LHsiLi4vc3Jj L3RyYWNlcy9jaG9yb3BsZXRobWFwYm94Ijo5MzZ9XSwxMTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNl cy9jb25lIil9LHsiLi4vc3JjL3RyYWNlcy9jb25lIjo5NDJ9XSwxMjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3Jj L3RyYWNlcy9jb250b3VyIil9LHsiLi4vc3JjL3RyYWNlcy9jb250b3VyIjo5 NTd9XSwxMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9dCgiLi4vc3JjL3RyYWNlcy9jb250b3VyY2FycGV0Iil9LHsiLi4vc3Jj L3RyYWNlcy9jb250b3VyY2FycGV0Ijo5Njh9XSwxNDpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL2NvcmUiKX0s eyIuLi9zcmMvY29yZSI6Njk1fV0sMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvZGVuc2l0eW1h cGJveCIpfSx7Ii4uL3NyYy90cmFjZXMvZGVuc2l0eW1hcGJveCI6OTc2fV0s MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQo Ii4uL3NyYy90cmFuc2Zvcm1zL2ZpbHRlciIpfSx7Ii4uL3NyYy90cmFuc2Zv cm1zL2ZpbHRlciI6MTI5OH1dLDE3OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2Z1bm5lbCIpfSx7 Ii4uL3NyYy90cmFjZXMvZnVubmVsIjo5ODZ9XSwxODpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9m dW5uZWxhcmVhIil9LHsiLi4vc3JjL3RyYWNlcy9mdW5uZWxhcmVhIjo5OTV9 XSwxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 dCgiLi4vc3JjL3RyYW5zZm9ybXMvZ3JvdXBieSIpfSx7Ii4uL3NyYy90cmFu c2Zvcm1zL2dyb3VwYnkiOjEyOTl9XSwyMDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9oZWF0bWFw Iil9LHsiLi4vc3JjL3RyYWNlcy9oZWF0bWFwIjoxMDA4fV0sMjE6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90 cmFjZXMvaGVhdG1hcGdsIil9LHsiLi4vc3JjL3RyYWNlcy9oZWF0bWFwZ2wi OjEwMTd9XSwyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9oaXN0b2dyYW0iKX0seyIuLi9zcmMv dHJhY2VzL2hpc3RvZ3JhbSI6MTAyOX1dLDIzOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2hpc3Rv Z3JhbTJkIil9LHsiLi4vc3JjL3RyYWNlcy9oaXN0b2dyYW0yZCI6MTAzNX1d LDI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10 KCIuLi9zcmMvdHJhY2VzL2hpc3RvZ3JhbTJkY29udG91ciIpfSx7Ii4uL3Ny Yy90cmFjZXMvaGlzdG9ncmFtMmRjb250b3VyIjoxMDM5fV0sMjU6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90 cmFjZXMvaW1hZ2UiKX0seyIuLi9zcmMvdHJhY2VzL2ltYWdlIjoxMDQ2fV0s MjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9j b3JlIik7bi5yZWdpc3RlcihbdCgiLi9iYXIiKSx0KCIuL2JveCIpLHQoIi4v aGVhdG1hcCIpLHQoIi4vaGlzdG9ncmFtIiksdCgiLi9oaXN0b2dyYW0yZCIp LHQoIi4vaGlzdG9ncmFtMmRjb250b3VyIiksdCgiLi9jb250b3VyIiksdCgi Li9zY2F0dGVydGVybmFyeSIpLHQoIi4vdmlvbGluIiksdCgiLi9mdW5uZWwi KSx0KCIuL3dhdGVyZmFsbCIpLHQoIi4vaW1hZ2UiKSx0KCIuL3BpZSIpLHQo Ii4vc3VuYnVyc3QiKSx0KCIuL3RyZWVtYXAiKSx0KCIuL2Z1bm5lbGFyZWEi KSx0KCIuL3NjYXR0ZXIzZCIpLHQoIi4vc3VyZmFjZSIpLHQoIi4vaXNvc3Vy ZmFjZSIpLHQoIi4vdm9sdW1lIiksdCgiLi9tZXNoM2QiKSx0KCIuL2NvbmUi KSx0KCIuL3N0cmVhbXR1YmUiKSx0KCIuL3NjYXR0ZXJnZW8iKSx0KCIuL2No b3JvcGxldGgiKSx0KCIuL3NjYXR0ZXJnbCIpLHQoIi4vc3Bsb20iKSx0KCIu L3BvaW50Y2xvdWQiKSx0KCIuL2hlYXRtYXBnbCIpLHQoIi4vcGFyY29vcmRz IiksdCgiLi9wYXJjYXRzIiksdCgiLi9zY2F0dGVybWFwYm94IiksdCgiLi9j aG9yb3BsZXRobWFwYm94IiksdCgiLi9kZW5zaXR5bWFwYm94IiksdCgiLi9z YW5rZXkiKSx0KCIuL2luZGljYXRvciIpLHQoIi4vdGFibGUiKSx0KCIuL2Nh cnBldCIpLHQoIi4vc2NhdHRlcmNhcnBldCIpLHQoIi4vY29udG91cmNhcnBl dCIpLHQoIi4vb2hsYyIpLHQoIi4vY2FuZGxlc3RpY2siKSx0KCIuL3NjYXR0 ZXJwb2xhciIpLHQoIi4vc2NhdHRlcnBvbGFyZ2wiKSx0KCIuL2JhcnBvbGFy IildKSxuLnJlZ2lzdGVyKFt0KCIuL2FnZ3JlZ2F0ZSIpLHQoIi4vZmlsdGVy IiksdCgiLi9ncm91cGJ5IiksdCgiLi9zb3J0IildKSxuLnJlZ2lzdGVyKFt0 KCIuL2NhbGVuZGFycyIpXSksZS5leHBvcnRzPW59LHsiLi9hZ2dyZWdhdGUi OjIsIi4vYmFyIjozLCIuL2JhcnBvbGFyIjo0LCIuL2JveCI6NSwiLi9jYWxl bmRhcnMiOjYsIi4vY2FuZGxlc3RpY2siOjcsIi4vY2FycGV0Ijo4LCIuL2No b3JvcGxldGgiOjksIi4vY2hvcm9wbGV0aG1hcGJveCI6MTAsIi4vY29uZSI6 MTEsIi4vY29udG91ciI6MTIsIi4vY29udG91cmNhcnBldCI6MTMsIi4vY29y ZSI6MTQsIi4vZGVuc2l0eW1hcGJveCI6MTUsIi4vZmlsdGVyIjoxNiwiLi9m dW5uZWwiOjE3LCIuL2Z1bm5lbGFyZWEiOjE4LCIuL2dyb3VwYnkiOjE5LCIu L2hlYXRtYXAiOjIwLCIuL2hlYXRtYXBnbCI6MjEsIi4vaGlzdG9ncmFtIjoy MiwiLi9oaXN0b2dyYW0yZCI6MjMsIi4vaGlzdG9ncmFtMmRjb250b3VyIjoy NCwiLi9pbWFnZSI6MjUsIi4vaW5kaWNhdG9yIjoyNywiLi9pc29zdXJmYWNl IjoyOCwiLi9tZXNoM2QiOjI5LCIuL29obGMiOjMwLCIuL3BhcmNhdHMiOjMx LCIuL3BhcmNvb3JkcyI6MzIsIi4vcGllIjozMywiLi9wb2ludGNsb3VkIjoz NCwiLi9zYW5rZXkiOjM1LCIuL3NjYXR0ZXIzZCI6MzYsIi4vc2NhdHRlcmNh cnBldCI6MzcsIi4vc2NhdHRlcmdlbyI6MzgsIi4vc2NhdHRlcmdsIjozOSwi Li9zY2F0dGVybWFwYm94Ijo0MCwiLi9zY2F0dGVycG9sYXIiOjQxLCIuL3Nj YXR0ZXJwb2xhcmdsIjo0MiwiLi9zY2F0dGVydGVybmFyeSI6NDMsIi4vc29y dCI6NDQsIi4vc3Bsb20iOjQ1LCIuL3N0cmVhbXR1YmUiOjQ2LCIuL3N1bmJ1 cnN0Ijo0NywiLi9zdXJmYWNlIjo0OCwiLi90YWJsZSI6NDksIi4vdHJlZW1h cCI6NTAsIi4vdmlvbGluIjo1MSwiLi92b2x1bWUiOjUyLCIuL3dhdGVyZmFs bCI6NTN9XSwyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9pbmRpY2F0b3IiKX0seyIuLi9zcmMv dHJhY2VzL2luZGljYXRvciI6MTA1NH1dLDI4OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2lzb3N1 cmZhY2UiKX0seyIuLi9zcmMvdHJhY2VzL2lzb3N1cmZhY2UiOjEwNjB9XSwy OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgi Li4vc3JjL3RyYWNlcy9tZXNoM2QiKX0seyIuLi9zcmMvdHJhY2VzL21lc2gz ZCI6MTA2NX1dLDMwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL29obGMiKX0seyIuLi9zcmMvdHJh Y2VzL29obGMiOjEwNzB9XSwzMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9wYXJjYXRzIil9LHsi Li4vc3JjL3RyYWNlcy9wYXJjYXRzIjoxMDc5fV0sMzI6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMv cGFyY29vcmRzIil9LHsiLi4vc3JjL3RyYWNlcy9wYXJjb29yZHMiOjEwODl9 XSwzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 dCgiLi4vc3JjL3RyYWNlcy9waWUiKX0seyIuLi9zcmMvdHJhY2VzL3BpZSI6 MTEwMH1dLDM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz10KCIuLi9zcmMvdHJhY2VzL3BvaW50Y2xvdWQiKX0seyIuLi9zcmMv dHJhY2VzL3BvaW50Y2xvdWQiOjExMDl9XSwzNTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9zYW5r ZXkiKX0seyIuLi9zcmMvdHJhY2VzL3NhbmtleSI6MTExNX1dLDM2OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMv dHJhY2VzL3NjYXR0ZXIzZCIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcjNk IjoxMTUyfV0sMzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRlcmNhcnBldCIpfSx7Ii4u L3NyYy90cmFjZXMvc2NhdHRlcmNhcnBldCI6MTE1OX1dLDM4OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJh Y2VzL3NjYXR0ZXJnZW8iKX0seyIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJnZW8i OjExNjd9XSwzOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9zY2F0dGVyZ2wiKX0seyIuLi9zcmMv dHJhY2VzL3NjYXR0ZXJnbCI6MTE4MH1dLDQwOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3NjYXR0 ZXJtYXBib3giKX0seyIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJtYXBib3giOjEx OTB9XSw0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9dCgiLi4vc3JjL3RyYWNlcy9zY2F0dGVycG9sYXIiKX0seyIuLi9zcmMv dHJhY2VzL3NjYXR0ZXJwb2xhciI6MTE5OH1dLDQyOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3Nj YXR0ZXJwb2xhcmdsIil9LHsiLi4vc3JjL3RyYWNlcy9zY2F0dGVycG9sYXJn bCI6MTIwNX1dLDQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJ0ZXJuYXJ5Iil9LHsi Li4vc3JjL3RyYWNlcy9zY2F0dGVydGVybmFyeSI6MTIxM31dLDQ0OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMv dHJhbnNmb3Jtcy9zb3J0Iil9LHsiLi4vc3JjL3RyYW5zZm9ybXMvc29ydCI6 MTMwMX1dLDQ1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz10KCIuLi9zcmMvdHJhY2VzL3NwbG9tIil9LHsiLi4vc3JjL3RyYWNl cy9zcGxvbSI6MTIyMn1dLDQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3N0cmVhbXR1YmUiKX0s eyIuLi9zcmMvdHJhY2VzL3N0cmVhbXR1YmUiOjEyMzB9XSw0NzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3Ry YWNlcy9zdW5idXJzdCIpfSx7Ii4uL3NyYy90cmFjZXMvc3VuYnVyc3QiOjEy Mzh9XSw0ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9dCgiLi4vc3JjL3RyYWNlcy9zdXJmYWNlIil9LHsiLi4vc3JjL3RyYWNl cy9zdXJmYWNlIjoxMjQ3fV0sNDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvdGFibGUiKX0seyIu Li9zcmMvdHJhY2VzL3RhYmxlIjoxMjU1fV0sNTA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvdHJl ZW1hcCIpfSx7Ii4uL3NyYy90cmFjZXMvdHJlZW1hcCI6MTI2NH1dLDUxOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9z cmMvdHJhY2VzL3Zpb2xpbiIpfSx7Ii4uL3NyYy90cmFjZXMvdmlvbGluIjox Mjc2fV0sNTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBv cnRzPXQoIi4uL3NyYy90cmFjZXMvdm9sdW1lIil9LHsiLi4vc3JjL3RyYWNl cy92b2x1bWUiOjEyODR9XSw1MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy93YXRlcmZhbGwiKX0s eyIuLi9zcmMvdHJhY2VzL3dhdGVyZmFsbCI6MTI5Mn1dLDU0OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2 YXIgZT0odD10fHx7fSkuZXllfHxbMCwwLDFdLHI9dC5jZW50ZXJ8fFswLDAs MF0scz10LnVwfHxbMCwxLDBdLGw9dC5kaXN0YW5jZUxpbWl0c3x8WzAsMS8w XSxjPXQubW9kZXx8InR1cm50YWJsZSIsdT1uKCksaD1hKCksZj1pKCk7cmV0 dXJuIHUuc2V0RGlzdGFuY2VMaW1pdHMobFswXSxsWzFdKSx1Lmxvb2tBdCgw LGUscixzKSxoLnNldERpc3RhbmNlTGltaXRzKGxbMF0sbFsxXSksaC5sb29r QXQoMCxlLHIscyksZi5zZXREaXN0YW5jZUxpbWl0cyhsWzBdLGxbMV0pLGYu bG9va0F0KDAsZSxyLHMpLG5ldyBvKHt0dXJudGFibGU6dSxvcmJpdDpoLG1h dHJpeDpmfSxjKX07dmFyIG49dCgidHVybnRhYmxlLWNhbWVyYS1jb250cm9s bGVyIiksYT10KCJvcmJpdC1jYW1lcmEtY29udHJvbGxlciIpLGk9dCgibWF0 cml4LWNhbWVyYS1jb250cm9sbGVyIik7ZnVuY3Rpb24gbyh0LGUpe3RoaXMu X2NvbnRyb2xsZXJOYW1lcz1PYmplY3Qua2V5cyh0KSx0aGlzLl9jb250cm9s bGVyTGlzdD10aGlzLl9jb250cm9sbGVyTmFtZXMubWFwKGZ1bmN0aW9uKGUp e3JldHVybiB0W2VdfSksdGhpcy5fbW9kZT1lLHRoaXMuX2FjdGl2ZT10W2Vd LHRoaXMuX2FjdGl2ZXx8KHRoaXMuX21vZGU9InR1cm50YWJsZSIsdGhpcy5f YWN0aXZlPXQudHVybnRhYmxlKSx0aGlzLm1vZGVzPXRoaXMuX2NvbnRyb2xs ZXJOYW1lcyx0aGlzLmNvbXB1dGVkTWF0cml4PXRoaXMuX2FjdGl2ZS5jb21w dXRlZE1hdHJpeCx0aGlzLmNvbXB1dGVkRXllPXRoaXMuX2FjdGl2ZS5jb21w dXRlZEV5ZSx0aGlzLmNvbXB1dGVkVXA9dGhpcy5fYWN0aXZlLmNvbXB1dGVk VXAsdGhpcy5jb21wdXRlZENlbnRlcj10aGlzLl9hY3RpdmUuY29tcHV0ZWRD ZW50ZXIsdGhpcy5jb21wdXRlZFJhZGl1cz10aGlzLl9hY3RpdmUuY29tcHV0 ZWRSYWRpdXN9dmFyIHM9by5wcm90b3R5cGU7W1siZmx1c2giLDFdLFsiaWRs ZSIsMV0sWyJsb29rQXQiLDRdLFsicm90YXRlIiw0XSxbInBhbiIsNF0sWyJ0 cmFuc2xhdGUiLDRdLFsic2V0TWF0cml4IiwyXSxbInNldERpc3RhbmNlTGlt aXRzIiwyXSxbInNldERpc3RhbmNlIiwyXV0uZm9yRWFjaChmdW5jdGlvbih0 KXtmb3IodmFyIGU9dFswXSxyPVtdLG49MDtuPHRbMV07KytuKXIucHVzaCgi YSIrbik7dmFyIGE9InZhciBjYz10aGlzLl9jb250cm9sbGVyTGlzdDtmb3Io dmFyIGk9MDtpPGNjLmxlbmd0aDsrK2kpe2NjW2ldLiIrdFswXSsiKCIrci5q b2luKCkrIil9IjtzW2VdPUZ1bmN0aW9uLmFwcGx5KG51bGwsci5jb25jYXQo YSkpfSkscy5yZWNhbGNNYXRyaXg9ZnVuY3Rpb24odCl7dGhpcy5fYWN0aXZl LnJlY2FsY01hdHJpeCh0KX0scy5nZXREaXN0YW5jZT1mdW5jdGlvbih0KXty ZXR1cm4gdGhpcy5fYWN0aXZlLmdldERpc3RhbmNlKHQpfSxzLmdldERpc3Rh bmNlTGltaXRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hY3RpdmUuZ2V0 RGlzdGFuY2VMaW1pdHModCl9LHMubGFzdFQ9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fYWN0aXZlLmxhc3RUKCl9LHMuc2V0TW9kZT1mdW5jdGlvbih0KXtp Zih0IT09dGhpcy5fbW9kZSl7dmFyIGU9dGhpcy5fY29udHJvbGxlck5hbWVz LmluZGV4T2YodCk7aWYoIShlPDApKXt2YXIgcj10aGlzLl9hY3RpdmUsbj10 aGlzLl9jb250cm9sbGVyTGlzdFtlXSxhPU1hdGgubWF4KHIubGFzdFQoKSxu Lmxhc3RUKCkpO3IucmVjYWxjTWF0cml4KGEpLG4uc2V0TWF0cml4KGEsci5j b21wdXRlZE1hdHJpeCksdGhpcy5fYWN0aXZlPW4sdGhpcy5fbW9kZT10LHRo aXMuY29tcHV0ZWRNYXRyaXg9dGhpcy5fYWN0aXZlLmNvbXB1dGVkTWF0cml4 LHRoaXMuY29tcHV0ZWRFeWU9dGhpcy5fYWN0aXZlLmNvbXB1dGVkRXllLHRo aXMuY29tcHV0ZWRVcD10aGlzLl9hY3RpdmUuY29tcHV0ZWRVcCx0aGlzLmNv bXB1dGVkQ2VudGVyPXRoaXMuX2FjdGl2ZS5jb21wdXRlZENlbnRlcix0aGlz LmNvbXB1dGVkUmFkaXVzPXRoaXMuX2FjdGl2ZS5jb21wdXRlZFJhZGl1c319 fSxzLmdldE1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9kZX19LHsi bWF0cml4LWNhbWVyYS1jb250cm9sbGVyIjo0MzUsIm9yYml0LWNhbWVyYS1j b250cm9sbGVyIjo0NTgsInR1cm50YWJsZS1jYW1lcmEtY29udHJvbGxlciI6 NTQxfV0sNTU6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbixhO249dGhpcyxhPWZ1 bmN0aW9uKHQsZSxyLG4sYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCl7 cmV0dXJuIHQudGFyZ2V0LmRlcHRofWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4g dC5zb3VyY2VMaW5rcy5sZW5ndGg/dC5kZXB0aDplLTF9ZnVuY3Rpb24gcyh0 KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19YT1hJiZhLmhhc093blBy b3BlcnR5KCJkZWZhdWx0Iik/YS5kZWZhdWx0OmE7dmFyIGw9ImZ1bmN0aW9u Ij09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRl cmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0 KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25z dHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJv bCI6dHlwZW9mIHR9O2Z1bmN0aW9uIGModCxlKXtyZXR1cm4gaCh0LnNvdXJj ZSxlLnNvdXJjZSl8fHQuaW5kZXgtZS5pbmRleH1mdW5jdGlvbiB1KHQsZSl7 cmV0dXJuIGgodC50YXJnZXQsZS50YXJnZXQpfHx0LmluZGV4LWUuaW5kZXh9 ZnVuY3Rpb24gaCh0LGUpe3JldHVybiB0LnBhcnRPZkN5Y2xlPT09ZS5wYXJ0 T2ZDeWNsZT90LnkwLWUueTA6InRvcCI9PT10LmNpcmN1bGFyTGlua1R5cGV8 fCJib3R0b20iPT09ZS5jaXJjdWxhckxpbmtUeXBlPy0xOjF9ZnVuY3Rpb24g Zih0KXtyZXR1cm4gdC52YWx1ZX1mdW5jdGlvbiBwKHQpe3JldHVybih0Lnkw K3QueTEpLzJ9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gcCh0LnNvdXJjZSl9ZnVu Y3Rpb24gZyh0KXtyZXR1cm4gcCh0LnRhcmdldCl9ZnVuY3Rpb24gdih0KXty ZXR1cm4gdC5pbmRleH1mdW5jdGlvbiBtKHQpe3JldHVybiB0Lm5vZGVzfWZ1 bmN0aW9uIHkodCl7cmV0dXJuIHQubGlua3N9ZnVuY3Rpb24geCh0LGUpe3Zh ciByPXQuZ2V0KGUpO2lmKCFyKXRocm93IG5ldyBFcnJvcigibWlzc2luZzog IitlKTtyZXR1cm4gcn1mdW5jdGlvbiBiKHQsZSl7cmV0dXJuIGUodCl9dmFy IF89MjUsdz0xMCxrPS4zO2Z1bmN0aW9uIFQodCxlKXt2YXIgcj0wLG49MDt0 LmxpbmtzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jaXJjdWxhciYmKGEuc291 cmNlLmNpcmN1bGFyTGlua1R5cGV8fGEudGFyZ2V0LmNpcmN1bGFyTGlua1R5 cGU/YS5jaXJjdWxhckxpbmtUeXBlPWEuc291cmNlLmNpcmN1bGFyTGlua1R5 cGU/YS5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZTphLnRhcmdldC5jaXJjdWxh ckxpbmtUeXBlOmEuY2lyY3VsYXJMaW5rVHlwZT1yPG4/InRvcCI6ImJvdHRv bSIsInRvcCI9PWEuY2lyY3VsYXJMaW5rVHlwZT9yKz0xOm4rPTEsdC5ub2Rl cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2IodCxlKSE9YihhLnNvdXJjZSxlKSYm Yih0LGUpIT1iKGEudGFyZ2V0LGUpfHwodC5jaXJjdWxhckxpbmtUeXBlPWEu Y2lyY3VsYXJMaW5rVHlwZSl9KSl9KSx0LmxpbmtzLmZvckVhY2goZnVuY3Rp b24odCl7dC5jaXJjdWxhciYmKHQuc291cmNlLmNpcmN1bGFyTGlua1R5cGU9 PXQudGFyZ2V0LmNpcmN1bGFyTGlua1R5cGUmJih0LmNpcmN1bGFyTGlua1R5 cGU9dC5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZSksWSh0LGUpJiYodC5jaXJj dWxhckxpbmtUeXBlPXQuc291cmNlLmNpcmN1bGFyTGlua1R5cGUpKX0pfWZ1 bmN0aW9uIE0odCl7dmFyIGU9TWF0aC5hYnModC55MS10LnkwKSxyPU1hdGgu YWJzKHQudGFyZ2V0LngwLXQuc291cmNlLngxKTtyZXR1cm4gTWF0aC5hdGFu KHIvZSl9ZnVuY3Rpb24gQSh0LGUpe3ZhciByPTA7dC5zb3VyY2VMaW5rcy5m b3JFYWNoKGZ1bmN0aW9uKHQpe3I9dC5jaXJjdWxhciYmIVkodCxlKT9yKzE6 cn0pO3ZhciBuPTA7cmV0dXJuIHQudGFyZ2V0TGlua3MuZm9yRWFjaChmdW5j dGlvbih0KXtuPXQuY2lyY3VsYXImJiFZKHQsZSk/bisxOm59KSxyK259ZnVu Y3Rpb24gUyh0KXt2YXIgZT10LnNvdXJjZS5zb3VyY2VMaW5rcyxyPTA7ZS5m b3JFYWNoKGZ1bmN0aW9uKHQpe3I9dC5jaXJjdWxhcj9yKzE6cn0pO3ZhciBu PXQudGFyZ2V0LnRhcmdldExpbmtzLGE9MDtyZXR1cm4gbi5mb3JFYWNoKGZ1 bmN0aW9uKHQpe2E9dC5jaXJjdWxhcj9hKzE6YX0pLCEocj4xfHxhPjEpfWZ1 bmN0aW9uIEUodCxlLHIpe3JldHVybiB0LnNvcnQoQyksdC5mb3JFYWNoKGZ1 bmN0aW9uKG4sYSl7dmFyIGksbyxzPTA7aWYoWShuLHIpJiZTKG4pKW4uY2ly Y3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEJ1ZmZlcj1zK24ud2lkdGgvMjtlbHNl e2Zvcih2YXIgbD0wO2w8YTtsKyspaWYoaT10W2FdLG89dFtsXSwhKGkuc291 cmNlLmNvbHVtbjxvLnRhcmdldC5jb2x1bW58fGkudGFyZ2V0LmNvbHVtbj5v LnNvdXJjZS5jb2x1bW4pKXt2YXIgYz10W2xdLmNpcmN1bGFyUGF0aERhdGEu dmVydGljYWxCdWZmZXIrdFtsXS53aWR0aC8yK2U7cz1jPnM/YzpzfW4uY2ly Y3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEJ1ZmZlcj1zK24ud2lkdGgvMn19KSx0 fWZ1bmN0aW9uIEwodCxyLGEsaSl7dmFyIG89ZS5taW4odC5saW5rcyxmdW5j dGlvbih0KXtyZXR1cm4gdC5zb3VyY2UueTB9KTt0LmxpbmtzLmZvckVhY2go ZnVuY3Rpb24odCl7dC5jaXJjdWxhciYmKHQuY2lyY3VsYXJQYXRoRGF0YT17 fSl9KSxFKHQubGlua3MuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiJ0b3Ai PT10LmNpcmN1bGFyTGlua1R5cGV9KSxyLGkpLEUodC5saW5rcy5maWx0ZXIo ZnVuY3Rpb24odCl7cmV0dXJuImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5rVHlw ZX0pLHIsaSksdC5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUuY2ly Y3VsYXIpe2lmKGUuY2lyY3VsYXJQYXRoRGF0YS5hcmNSYWRpdXM9ZS53aWR0 aCt3LGUuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0Tm9kZUJ1ZmZlcj01LGUuY2ly Y3VsYXJQYXRoRGF0YS5yaWdodE5vZGVCdWZmZXI9NSxlLmNpcmN1bGFyUGF0 aERhdGEuc291cmNlV2lkdGg9ZS5zb3VyY2UueDEtZS5zb3VyY2UueDAsZS5j aXJjdWxhclBhdGhEYXRhLnNvdXJjZVg9ZS5zb3VyY2UueDArZS5jaXJjdWxh clBhdGhEYXRhLnNvdXJjZVdpZHRoLGUuY2lyY3VsYXJQYXRoRGF0YS50YXJn ZXRYPWUudGFyZ2V0LngwLGUuY2lyY3VsYXJQYXRoRGF0YS5zb3VyY2VZPWUu eTAsZS5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFk9ZS55MSxZKGUsaSkmJlMo ZSkpZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRTbWFsbEFyY1JhZGl1cz13K2Uu d2lkdGgvMixlLmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVz PXcrZS53aWR0aC8yLGUuY2lyY3VsYXJQYXRoRGF0YS5yaWdodFNtYWxsQXJj UmFkaXVzPXcrZS53aWR0aC8yLGUuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExh cmdlQXJjUmFkaXVzPXcrZS53aWR0aC8yLCJib3R0b20iPT1lLmNpcmN1bGFy TGlua1R5cGU/KGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRl bnQ9ZS5zb3VyY2UueTErXytlLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxC dWZmZXIsZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsTGVmdElubmVyRXh0 ZW50PWUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQtZS5j aXJjdWxhclBhdGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cyxlLmNpcmN1bGFy UGF0aERhdGEudmVydGljYWxSaWdodElubmVyRXh0ZW50PWUuY2lyY3VsYXJQ YXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQtZS5jaXJjdWxhclBhdGhEYXRh LnJpZ2h0TGFyZ2VBcmNSYWRpdXMpOihlLmNpcmN1bGFyUGF0aERhdGEudmVy dGljYWxGdWxsRXh0ZW50PWUuc291cmNlLnkwLV8tZS5jaXJjdWxhclBhdGhE YXRhLnZlcnRpY2FsQnVmZmVyLGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNh bExlZnRJbm5lckV4dGVudD1lLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxG dWxsRXh0ZW50K2UuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0TGFyZ2VBcmNSYWRp dXMsZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsUmlnaHRJbm5lckV4dGVu dD1lLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxGdWxsRXh0ZW50K2UuY2ly Y3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzKTtlbHNle3ZhciBz PWUuc291cmNlLmNvbHVtbixsPWUuY2lyY3VsYXJMaW5rVHlwZSxjPXQubGlu a3MuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNvdXJjZS5jb2x1bW49 PXMmJnQuY2lyY3VsYXJMaW5rVHlwZT09bH0pOyJib3R0b20iPT1lLmNpcmN1 bGFyTGlua1R5cGU/Yy5zb3J0KE8pOmMuc29ydChQKTt2YXIgdT0wO2MuZm9y RWFjaChmdW5jdGlvbih0LG4pe3QuY2lyY3VsYXJMaW5rSUQ9PWUuY2lyY3Vs YXJMaW5rSUQmJihlLmNpcmN1bGFyUGF0aERhdGEubGVmdFNtYWxsQXJjUmFk aXVzPXcrZS53aWR0aC8yK3UsZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRMYXJn ZUFyY1JhZGl1cz13K2Uud2lkdGgvMituKnIrdSksdSs9dC53aWR0aH0pLHM9 ZS50YXJnZXQuY29sdW1uLGM9dC5saW5rcy5maWx0ZXIoZnVuY3Rpb24odCl7 cmV0dXJuIHQudGFyZ2V0LmNvbHVtbj09cyYmdC5jaXJjdWxhckxpbmtUeXBl PT1sfSksImJvdHRvbSI9PWUuY2lyY3VsYXJMaW5rVHlwZT9jLnNvcnQoSSk6 Yy5zb3J0KHopLHU9MCxjLmZvckVhY2goZnVuY3Rpb24odCxuKXt0LmNpcmN1 bGFyTGlua0lEPT1lLmNpcmN1bGFyTGlua0lEJiYoZS5jaXJjdWxhclBhdGhE YXRhLnJpZ2h0U21hbGxBcmNSYWRpdXM9dytlLndpZHRoLzIrdSxlLmNpcmN1 bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cz13K2Uud2lkdGgvMitu KnIrdSksdSs9dC53aWR0aH0pLCJib3R0b20iPT1lLmNpcmN1bGFyTGlua1R5 cGU/KGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQ9TWF0 aC5tYXgoYSxlLnNvdXJjZS55MSxlLnRhcmdldC55MSkrXytlLmNpcmN1bGFy UGF0aERhdGEudmVydGljYWxCdWZmZXIsZS5jaXJjdWxhclBhdGhEYXRhLnZl cnRpY2FsTGVmdElubmVyRXh0ZW50PWUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0 aWNhbEZ1bGxFeHRlbnQtZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRMYXJnZUFy Y1JhZGl1cyxlLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxSaWdodElubmVy RXh0ZW50PWUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQt ZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMpOihlLmNp cmN1bGFyUGF0aERhdGEudmVydGljYWxGdWxsRXh0ZW50PW8tXy1lLmNpcmN1 bGFyUGF0aERhdGEudmVydGljYWxCdWZmZXIsZS5jaXJjdWxhclBhdGhEYXRh LnZlcnRpY2FsTGVmdElubmVyRXh0ZW50PWUuY2lyY3VsYXJQYXRoRGF0YS52 ZXJ0aWNhbEZ1bGxFeHRlbnQrZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRMYXJn ZUFyY1JhZGl1cyxlLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxSaWdodElu bmVyRXh0ZW50PWUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRl bnQrZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMpfWUu Y2lyY3VsYXJQYXRoRGF0YS5sZWZ0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBh dGhEYXRhLnNvdXJjZVgrZS5jaXJjdWxhclBhdGhEYXRhLmxlZnROb2RlQnVm ZmVyLGUuY2lyY3VsYXJQYXRoRGF0YS5yaWdodElubmVyRXh0ZW50PWUuY2ly Y3VsYXJQYXRoRGF0YS50YXJnZXRYLWUuY2lyY3VsYXJQYXRoRGF0YS5yaWdo dE5vZGVCdWZmZXIsZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRGdWxsRXh0ZW50 PWUuY2lyY3VsYXJQYXRoRGF0YS5zb3VyY2VYK2UuY2lyY3VsYXJQYXRoRGF0 YS5sZWZ0TGFyZ2VBcmNSYWRpdXMrZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRO b2RlQnVmZmVyLGUuY2lyY3VsYXJQYXRoRGF0YS5yaWdodEZ1bGxFeHRlbnQ9 ZS5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFgtZS5jaXJjdWxhclBhdGhEYXRh LnJpZ2h0TGFyZ2VBcmNSYWRpdXMtZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0 Tm9kZUJ1ZmZlcn1pZihlLmNpcmN1bGFyKWUucGF0aD1mdW5jdGlvbih0KXt2 YXIgZT0iIjtlPSJ0b3AiPT10LmNpcmN1bGFyTGlua1R5cGU/Ik0iK3QuY2ly Y3VsYXJQYXRoRGF0YS5zb3VyY2VYKyIgIit0LmNpcmN1bGFyUGF0aERhdGEu c291cmNlWSsiIEwiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0SW5uZXJFeHRl bnQrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5zb3VyY2VZKyIgQSIrdC5jaXJj dWxhclBhdGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cysiICIrdC5jaXJjdWxh clBhdGhEYXRhLmxlZnRTbWFsbEFyY1JhZGl1cysiIDAgMCAwICIrdC5jaXJj dWxhclBhdGhEYXRhLmxlZnRGdWxsRXh0ZW50KyIgIisodC5jaXJjdWxhclBh dGhEYXRhLnNvdXJjZVktdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRTbWFsbEFy Y1JhZGl1cykrIiBMIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdEZ1bGxFeHRl bnQrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbExlZnRJbm5lckV4 dGVudCsiIEEiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0TGFyZ2VBcmNSYWRp dXMrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0TGFyZ2VBcmNSYWRpdXMr IiAwIDAgMCAiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0SW5uZXJFeHRlbnQr IiAiK3QuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQrIiBM Iit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRJbm5lckV4dGVudCsiICIrdC5j aXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudCsiIEEiK3QuY2ly Y3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzKyIgIit0LmNpcmN1 bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cysiIDAgMCAwICIrdC5j aXJjdWxhclBhdGhEYXRhLnJpZ2h0RnVsbEV4dGVudCsiICIrdC5jaXJjdWxh clBhdGhEYXRhLnZlcnRpY2FsUmlnaHRJbm5lckV4dGVudCsiIEwiK3QuY2ly Y3VsYXJQYXRoRGF0YS5yaWdodEZ1bGxFeHRlbnQrIiAiKyh0LmNpcmN1bGFy UGF0aERhdGEudGFyZ2V0WS10LmNpcmN1bGFyUGF0aERhdGEucmlnaHRTbWFs bEFyY1JhZGl1cykrIiBBIit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJn ZUFyY1JhZGl1cysiICIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0U21hbGxB cmNSYWRpdXMrIiAwIDAgMCAiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodElu bmVyRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEudGFyZ2V0WSsiIEwi K3QuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRYKyIgIit0LmNpcmN1bGFyUGF0 aERhdGEudGFyZ2V0WToiTSIrdC5jaXJjdWxhclBhdGhEYXRhLnNvdXJjZVgr IiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5zb3VyY2VZKyIgTCIrdC5jaXJjdWxh clBhdGhEYXRhLmxlZnRJbm5lckV4dGVudCsiICIrdC5jaXJjdWxhclBhdGhE YXRhLnNvdXJjZVkrIiBBIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdl QXJjUmFkaXVzKyIgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdFNtYWxsQXJj UmFkaXVzKyIgMCAwIDEgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdEZ1bGxF eHRlbnQrIiAiKyh0LmNpcmN1bGFyUGF0aERhdGEuc291cmNlWSt0LmNpcmN1 bGFyUGF0aERhdGEubGVmdFNtYWxsQXJjUmFkaXVzKSsiIEwiK3QuY2lyY3Vs YXJQYXRoRGF0YS5sZWZ0RnVsbEV4dGVudCsiICIrdC5jaXJjdWxhclBhdGhE YXRhLnZlcnRpY2FsTGVmdElubmVyRXh0ZW50KyIgQSIrdC5jaXJjdWxhclBh dGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cysiICIrdC5jaXJjdWxhclBhdGhE YXRhLmxlZnRMYXJnZUFyY1JhZGl1cysiIDAgMCAxICIrdC5jaXJjdWxhclBh dGhEYXRhLmxlZnRJbm5lckV4dGVudCsiICIrdC5jaXJjdWxhclBhdGhEYXRh LnZlcnRpY2FsRnVsbEV4dGVudCsiIEwiK3QuY2lyY3VsYXJQYXRoRGF0YS5y aWdodElubmVyRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEudmVydGlj YWxGdWxsRXh0ZW50KyIgQSIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFy Z2VBcmNSYWRpdXMrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExhcmdl QXJjUmFkaXVzKyIgMCAwIDEgIit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRG dWxsRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxSaWdo dElubmVyRXh0ZW50KyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0RnVs bEV4dGVudCsiICIrKHQuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRZK3QuY2ly Y3VsYXJQYXRoRGF0YS5yaWdodFNtYWxsQXJjUmFkaXVzKSsiIEEiK3QuY2ly Y3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzKyIgIit0LmNpcmN1 bGFyUGF0aERhdGEucmlnaHRTbWFsbEFyY1JhZGl1cysiIDAgMCAxICIrdC5j aXJjdWxhclBhdGhEYXRhLnJpZ2h0SW5uZXJFeHRlbnQrIiAiK3QuY2lyY3Vs YXJQYXRoRGF0YS50YXJnZXRZKyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLnRh cmdldFgrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRZO3JldHVybiBl fShlKTtlbHNle3ZhciBoPW4ubGlua0hvcml6b250YWwoKS5zb3VyY2UoZnVu Y3Rpb24odCl7cmV0dXJuW3Quc291cmNlLngwKyh0LnNvdXJjZS54MS10LnNv dXJjZS54MCksdC55MF19KS50YXJnZXQoZnVuY3Rpb24odCl7cmV0dXJuW3Qu dGFyZ2V0LngwLHQueTFdfSk7ZS5wYXRoPWgoZSl9fSl9ZnVuY3Rpb24gQyh0 LGUpe3JldHVybiBEKHQpPT1EKGUpPyJib3R0b20iPT10LmNpcmN1bGFyTGlu a1R5cGU/Tyh0LGUpOlAodCxlKTpEKGUpLUQodCl9ZnVuY3Rpb24gUCh0LGUp e3JldHVybiB0LnkwLWUueTB9ZnVuY3Rpb24gTyh0LGUpe3JldHVybiBlLnkw LXQueTB9ZnVuY3Rpb24geih0LGUpe3JldHVybiB0LnkxLWUueTF9ZnVuY3Rp b24gSSh0LGUpe3JldHVybiBlLnkxLXQueTF9ZnVuY3Rpb24gRCh0KXtyZXR1 cm4gdC50YXJnZXQuY29sdW1uLXQuc291cmNlLmNvbHVtbn1mdW5jdGlvbiBS KHQpe3JldHVybiB0LnRhcmdldC54MC10LnNvdXJjZS54MX1mdW5jdGlvbiBG KHQsZSl7dmFyIHI9TSh0KSxuPVIoZSkvTWF0aC50YW4ocik7cmV0dXJuInVw Ij09Ryh0KT90LnkxK246dC55MS1ufWZ1bmN0aW9uIEIodCxlKXt2YXIgcj1N KHQpLG49UihlKS9NYXRoLnRhbihyKTtyZXR1cm4idXAiPT1HKHQpP3QueTEt bjp0LnkxK259ZnVuY3Rpb24gTih0LGUscixuKXt0LmxpbmtzLmZvckVhY2go ZnVuY3Rpb24oYSl7aWYoIWEuY2lyY3VsYXImJmEudGFyZ2V0LmNvbHVtbi1h LnNvdXJjZS5jb2x1bW4+MSl7dmFyIGk9YS5zb3VyY2UuY29sdW1uKzEsbz1h LnRhcmdldC5jb2x1bW4tMSxzPTEsbD1vLWkrMTtmb3Iocz0xO2k8PW87aSsr LHMrKyl0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24obyl7aWYoby5jb2x1bW49 PWkpe3ZhciBjLHU9cy8obCsxKSxoPU1hdGgucG93KDEtdSwzKSxmPTMqdSpN YXRoLnBvdygxLXUsMikscD0zKk1hdGgucG93KHUsMikqKDEtdSksZD1NYXRo LnBvdyh1LDMpLGc9aCphLnkwK2YqYS55MCtwKmEueTErZCphLnkxLHY9Zy1h LndpZHRoLzIsbT1nK2Eud2lkdGgvMjt2Pm8ueTAmJnY8by55MT8oYz1vLnkx LXYrMTAsYz0iYm90dG9tIj09by5jaXJjdWxhckxpbmtUeXBlP2M6LWMsbz1W KG8sYyxlLHIpLHQubm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXtiKHQsbikh PWIobyxuKSYmdC5jb2x1bW49PW8uY29sdW1uJiZqKG8sdCkmJlYodCxjLGUs cil9KSk6bT5vLnkwJiZtPG8ueTE/KGM9bS1vLnkwKzEwLG89VihvLGMsZSxy KSx0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7Yih0LG4pIT1iKG8sbikm JnQuY29sdW1uPT1vLmNvbHVtbiYmdC55MDxvLnkxJiZ0LnkxPm8ueTEmJlYo dCxjLGUscil9KSk6djxvLnkwJiZtPm8ueTEmJihjPW0tby55MCsxMCxvPVYo byxjLGUsciksdC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2IodCxuKSE9 YihvLG4pJiZ0LmNvbHVtbj09by5jb2x1bW4mJnQueTA8by55MSYmdC55MT5v LnkxJiZWKHQsYyxlLHIpfSkpfX0pfX0pfWZ1bmN0aW9uIGoodCxlKXtyZXR1 cm4gdC55MD5lLnkwJiZ0LnkwPGUueTF8fCh0LnkxPmUueTAmJnQueTE8ZS55 MXx8dC55MDxlLnkwJiZ0LnkxPmUueTEpfWZ1bmN0aW9uIFYodCxlLHIsbil7 cmV0dXJuIHQueTArZT49ciYmdC55MStlPD1uJiYodC55MD10LnkwK2UsdC55 MT10LnkxK2UsdC50YXJnZXRMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qu eTE9dC55MStlfSksdC5zb3VyY2VMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQp e3QueTA9dC55MCtlfSkpLHR9ZnVuY3Rpb24gVSh0LGUscixuKXt0Lm5vZGVz LmZvckVhY2goZnVuY3Rpb24oYSl7biYmYS55KyhhLnkxLWEueTApPmUmJihh Lnk9YS55LShhLnkrKGEueTEtYS55MCktZSkpO3ZhciBpPXQubGlua3MuZmls dGVyKGZ1bmN0aW9uKHQpe3JldHVybiBiKHQuc291cmNlLHIpPT1iKGEscil9 KSxvPWkubGVuZ3RoO28+MSYmaS5zb3J0KGZ1bmN0aW9uKHQsZSl7aWYoIXQu Y2lyY3VsYXImJiFlLmNpcmN1bGFyKXtpZih0LnRhcmdldC5jb2x1bW49PWUu dGFyZ2V0LmNvbHVtbilyZXR1cm4gdC55MS1lLnkxO2lmKCFIKHQsZSkpcmV0 dXJuIHQueTEtZS55MTtpZih0LnRhcmdldC5jb2x1bW4+ZS50YXJnZXQuY29s dW1uKXt2YXIgcj1CKGUsdCk7cmV0dXJuIHQueTEtcn1pZihlLnRhcmdldC5j b2x1bW4+dC50YXJnZXQuY29sdW1uKXJldHVybiBCKHQsZSktZS55MX1yZXR1 cm4gdC5jaXJjdWxhciYmIWUuY2lyY3VsYXI/InRvcCI9PXQuY2lyY3VsYXJM aW5rVHlwZT8tMToxOmUuY2lyY3VsYXImJiF0LmNpcmN1bGFyPyJ0b3AiPT1l LmNpcmN1bGFyTGlua1R5cGU/MTotMTp0LmNpcmN1bGFyJiZlLmNpcmN1bGFy P3QuY2lyY3VsYXJMaW5rVHlwZT09PWUuY2lyY3VsYXJMaW5rVHlwZSYmInRv cCI9PXQuY2lyY3VsYXJMaW5rVHlwZT90LnRhcmdldC5jb2x1bW49PT1lLnRh cmdldC5jb2x1bW4/dC50YXJnZXQueTEtZS50YXJnZXQueTE6ZS50YXJnZXQu Y29sdW1uLXQudGFyZ2V0LmNvbHVtbjp0LmNpcmN1bGFyTGlua1R5cGU9PT1l LmNpcmN1bGFyTGlua1R5cGUmJiJib3R0b20iPT10LmNpcmN1bGFyTGlua1R5 cGU/dC50YXJnZXQuY29sdW1uPT09ZS50YXJnZXQuY29sdW1uP2UudGFyZ2V0 LnkxLXQudGFyZ2V0LnkxOnQudGFyZ2V0LmNvbHVtbi1lLnRhcmdldC5jb2x1 bW46InRvcCI9PXQuY2lyY3VsYXJMaW5rVHlwZT8tMToxOnZvaWQgMH0pO3Zh ciBzPWEueTA7aS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QueTA9cyt0LndpZHRo LzIscys9dC53aWR0aH0pLGkuZm9yRWFjaChmdW5jdGlvbih0LGUpe2lmKCJi b3R0b20iPT10LmNpcmN1bGFyTGlua1R5cGUpe2Zvcih2YXIgcj1lKzEsbj0w O3I8bztyKyspbis9aVtyXS53aWR0aDt0LnkwPWEueTEtbi10LndpZHRoLzJ9 fSl9KX1mdW5jdGlvbiBxKHQsZSxyKXt0Lm5vZGVzLmZvckVhY2goZnVuY3Rp b24oZSl7dmFyIG49dC5saW5rcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJu IGIodC50YXJnZXQscik9PWIoZSxyKX0pLGE9bi5sZW5ndGg7YT4xJiZuLnNv cnQoZnVuY3Rpb24odCxlKXtpZighdC5jaXJjdWxhciYmIWUuY2lyY3VsYXIp e2lmKHQuc291cmNlLmNvbHVtbj09ZS5zb3VyY2UuY29sdW1uKXJldHVybiB0 LnkwLWUueTA7aWYoIUgodCxlKSlyZXR1cm4gdC55MC1lLnkwO2lmKGUuc291 cmNlLmNvbHVtbjx0LnNvdXJjZS5jb2x1bW4pe3ZhciByPUYoZSx0KTtyZXR1 cm4gdC55MC1yfWlmKHQuc291cmNlLmNvbHVtbjxlLnNvdXJjZS5jb2x1bW4p cmV0dXJuIEYodCxlKS1lLnkwfXJldHVybiB0LmNpcmN1bGFyJiYhZS5jaXJj dWxhcj8idG9wIj09dC5jaXJjdWxhckxpbmtUeXBlPy0xOjE6ZS5jaXJjdWxh ciYmIXQuY2lyY3VsYXI/InRvcCI9PWUuY2lyY3VsYXJMaW5rVHlwZT8xOi0x OnQuY2lyY3VsYXImJmUuY2lyY3VsYXI/dC5jaXJjdWxhckxpbmtUeXBlPT09 ZS5jaXJjdWxhckxpbmtUeXBlJiYidG9wIj09dC5jaXJjdWxhckxpbmtUeXBl P3Quc291cmNlLmNvbHVtbj09PWUuc291cmNlLmNvbHVtbj90LnNvdXJjZS55 MS1lLnNvdXJjZS55MTp0LnNvdXJjZS5jb2x1bW4tZS5zb3VyY2UuY29sdW1u OnQuY2lyY3VsYXJMaW5rVHlwZT09PWUuY2lyY3VsYXJMaW5rVHlwZSYmImJv dHRvbSI9PXQuY2lyY3VsYXJMaW5rVHlwZT90LnNvdXJjZS5jb2x1bW49PT1l LnNvdXJjZS5jb2x1bW4/dC5zb3VyY2UueTEtZS5zb3VyY2UueTE6ZS5zb3Vy Y2UuY29sdW1uLXQuc291cmNlLmNvbHVtbjoidG9wIj09dC5jaXJjdWxhckxp bmtUeXBlPy0xOjE6dm9pZCAwfSk7dmFyIGk9ZS55MDtuLmZvckVhY2goZnVu Y3Rpb24odCl7dC55MT1pK3Qud2lkdGgvMixpKz10LndpZHRofSksbi5mb3JF YWNoKGZ1bmN0aW9uKHQscil7aWYoImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5r VHlwZSl7Zm9yKHZhciBpPXIrMSxvPTA7aTxhO2krKylvKz1uW2ldLndpZHRo O3QueTE9ZS55MS1vLXQud2lkdGgvMn19KX0pfWZ1bmN0aW9uIEgodCxlKXty ZXR1cm4gRyh0KT09RyhlKX1mdW5jdGlvbiBHKHQpe3JldHVybiB0LnkwLXQu eTE+MD8idXAiOiJkb3duIn1mdW5jdGlvbiBZKHQsZSl7cmV0dXJuIGIodC5z b3VyY2UsZSk9PWIodC50YXJnZXQsZSl9dC5zYW5rZXlDaXJjdWxhcj1mdW5j dGlvbigpe3ZhciB0LG4saT0wLGI9MCxNPTEsUz0xLEU9MjQsQz12LFA9byxP PW0sej15LEk9MzIsRD0yLFI9bnVsbDtmdW5jdGlvbiBGKCl7dmFyIG89e25v ZGVzOk8uYXBwbHkobnVsbCxhcmd1bWVudHMpLGxpbmtzOnouYXBwbHkobnVs bCxhcmd1bWVudHMpfTshZnVuY3Rpb24odCl7dC5ub2Rlcy5mb3JFYWNoKGZ1 bmN0aW9uKHQsZSl7dC5pbmRleD1lLHQuc291cmNlTGlua3M9W10sdC50YXJn ZXRMaW5rcz1bXX0pO3ZhciBlPXIubWFwKHQubm9kZXMsQyk7dC5saW5rcy5m b3JFYWNoKGZ1bmN0aW9uKHQscil7dC5pbmRleD1yO3ZhciBuPXQuc291cmNl LGE9dC50YXJnZXQ7Im9iamVjdCIhPT0oInVuZGVmaW5lZCI9PXR5cGVvZiBu PyJ1bmRlZmluZWQiOmwobikpJiYobj10LnNvdXJjZT14KGUsbikpLCJvYmpl Y3QiIT09KCJ1bmRlZmluZWQiPT10eXBlb2YgYT8idW5kZWZpbmVkIjpsKGEp KSYmKGE9dC50YXJnZXQ9eChlLGEpKSxuLnNvdXJjZUxpbmtzLnB1c2godCks YS50YXJnZXRMaW5rcy5wdXNoKHQpfSl9KG8pLGZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj0wO2lmKG51bGw9PT1yKXtmb3IodmFyIGk9W10sbz0wO288dC5saW5r cy5sZW5ndGg7bysrKXt2YXIgcz10LmxpbmtzW29dLGw9cy5zb3VyY2UuaW5k ZXgsYz1zLnRhcmdldC5pbmRleDtpW2xdfHwoaVtsXT1bXSksaVtjXXx8KGlb Y109W10pLC0xPT09aVtsXS5pbmRleE9mKGMpJiZpW2xdLnB1c2goYyl9dmFy IHU9YShpKTt1LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGgt ZS5sZW5ndGh9KTt2YXIgaD17fTtmb3Iobz0wO288dS5sZW5ndGg7bysrKXt2 YXIgZj11W29dLHA9Zi5zbGljZSgtMik7aFtwWzBdXXx8KGhbcFswXV09e30p LGhbcFswXV1bcFsxXV09ITB9dC5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQp e3ZhciBlPXQudGFyZ2V0LmluZGV4LHI9dC5zb3VyY2UuaW5kZXg7ZT09PXJ8 fGhbcl0mJmhbcl1bZV0/KHQuY2lyY3VsYXI9ITAsdC5jaXJjdWxhckxpbmtJ RD1uLG4rPTEpOnQuY2lyY3VsYXI9ITF9KX1lbHNlIHQubGlua3MuZm9yRWFj aChmdW5jdGlvbih0KXt0LnNvdXJjZVtyXTx0LnRhcmdldFtyXT90LmNpcmN1 bGFyPSExOih0LmNpcmN1bGFyPSEwLHQuY2lyY3VsYXJMaW5rSUQ9bixuKz0x KX0pfShvLDAsUiksZnVuY3Rpb24odCl7dC5ub2Rlcy5mb3JFYWNoKGZ1bmN0 aW9uKHQpe3QucGFydE9mQ3ljbGU9ITEsdC52YWx1ZT1NYXRoLm1heChlLnN1 bSh0LnNvdXJjZUxpbmtzLGYpLGUuc3VtKHQudGFyZ2V0TGlua3MsZikpLHQu c291cmNlTGlua3MuZm9yRWFjaChmdW5jdGlvbihlKXtlLmNpcmN1bGFyJiYo dC5wYXJ0T2ZDeWNsZT0hMCx0LmNpcmN1bGFyTGlua1R5cGU9ZS5jaXJjdWxh ckxpbmtUeXBlKX0pLHQudGFyZ2V0TGlua3MuZm9yRWFjaChmdW5jdGlvbihl KXtlLmNpcmN1bGFyJiYodC5wYXJ0T2ZDeWNsZT0hMCx0LmNpcmN1bGFyTGlu a1R5cGU9ZS5jaXJjdWxhckxpbmtUeXBlKX0pfSl9KG8pLGZ1bmN0aW9uKHQp e3ZhciBlLHIsbjtmb3IoZT10Lm5vZGVzLHI9W10sbj0wO2UubGVuZ3RoOysr bixlPXIscj1bXSllLmZvckVhY2goZnVuY3Rpb24odCl7dC5kZXB0aD1uLHQu c291cmNlTGlua3MuZm9yRWFjaChmdW5jdGlvbih0KXtyLmluZGV4T2YodC50 YXJnZXQpPDAmJiF0LmNpcmN1bGFyJiZyLnB1c2godC50YXJnZXQpfSl9KTtm b3IoZT10Lm5vZGVzLHI9W10sbj0wO2UubGVuZ3RoOysrbixlPXIscj1bXSll LmZvckVhY2goZnVuY3Rpb24odCl7dC5oZWlnaHQ9bix0LnRhcmdldExpbmtz LmZvckVhY2goZnVuY3Rpb24odCl7ci5pbmRleE9mKHQuc291cmNlKTwwJiYh dC5jaXJjdWxhciYmci5wdXNoKHQuc291cmNlKX0pfSk7dC5ub2Rlcy5mb3JF YWNoKGZ1bmN0aW9uKHQpe3QuY29sdW1uPU1hdGguZmxvb3IoUC5jYWxsKG51 bGwsdCxuKSl9KX0obyksVChvLEMpLGZ1bmN0aW9uKGEsbyxzKXt2YXIgbD1y Lm5lc3QoKS5rZXkoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sdW1ufSkuc29y dEtleXMoZS5hc2NlbmRpbmcpLmVudHJpZXMoYS5ub2RlcykubWFwKGZ1bmN0 aW9uKHQpe3JldHVybiB0LnZhbHVlc30pOyhmdW5jdGlvbihyKXtpZihuKXt2 YXIgbz0xLzA7bC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPVMqbi8odC5s ZW5ndGgrMSk7bz1lPG8/ZTpvfSksdD1vfXZhciBzPWUubWluKGwsZnVuY3Rp b24ocil7cmV0dXJuKFMtYi0oci5sZW5ndGgtMSkqdCkvZS5zdW0ocixmKX0p O3MqPWssYS5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qud2lkdGg9dC52 YWx1ZSpzfSk7dmFyIGM9ZnVuY3Rpb24odCl7dmFyIHI9MCxuPTAsYT0wLGk9 MCxvPWUubWF4KHQubm9kZXMsZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sdW1u fSk7cmV0dXJuIHQubGlua3MuZm9yRWFjaChmdW5jdGlvbih0KXt0LmNpcmN1 bGFyJiYoInRvcCI9PXQuY2lyY3VsYXJMaW5rVHlwZT9yKz10LndpZHRoOm4r PXQud2lkdGgsMD09dC50YXJnZXQuY29sdW1uJiYoaSs9dC53aWR0aCksdC5z b3VyY2UuY29sdW1uPT1vJiYoYSs9dC53aWR0aCkpfSkse3RvcDpyPXI+MD9y K18rdzpyLGJvdHRvbTpuPW4+MD9uK18rdzpuLGxlZnQ6aT1pPjA/aStfK3c6 aSxyaWdodDphPWE+MD9hK18rdzphfX0oYSksdT1mdW5jdGlvbih0LHIpe3Zh ciBuPWUubWF4KHQubm9kZXMsZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sdW1u fSksYT1NLWksbz1TLWIscz1hK3IucmlnaHQrci5sZWZ0LGw9bytyLnRvcCty LmJvdHRvbSxjPWEvcyx1PW8vbDtyZXR1cm4gaT1pKmMrci5sZWZ0LE09MD09 ci5yaWdodD9NOk0qYyxiPWIqdStyLnRvcCxTKj11LHQubm9kZXMuZm9yRWFj aChmdW5jdGlvbih0KXt0LngwPWkrdC5jb2x1bW4qKChNLWktRSkvbiksdC54 MT10LngwK0V9KSx1fShhLGMpO3MqPXUsYS5saW5rcy5mb3JFYWNoKGZ1bmN0 aW9uKHQpe3Qud2lkdGg9dC52YWx1ZSpzfSksbC5mb3JFYWNoKGZ1bmN0aW9u KHQpe3ZhciBlPXQubGVuZ3RoO3QuZm9yRWFjaChmdW5jdGlvbih0LG4pe3Qu ZGVwdGg9PWwubGVuZ3RoLTEmJjE9PWU/KHQueTA9Uy8yLXQudmFsdWUqcyx0 LnkxPXQueTArdC52YWx1ZSpzKTowPT10LmRlcHRoJiYxPT1lPyh0LnkwPVMv Mi10LnZhbHVlKnMsdC55MT10LnkwK3QudmFsdWUqcyk6dC5wYXJ0T2ZDeWNs ZT8wPT1BKHQscik/KHQueTA9Uy8yK24sdC55MT10LnkwK3QudmFsdWUqcyk6 InRvcCI9PXQuY2lyY3VsYXJMaW5rVHlwZT8odC55MD1iK24sdC55MT10Lnkw K3QudmFsdWUqcyk6KHQueTA9Uy10LnZhbHVlKnMtbix0LnkxPXQueTArdC52 YWx1ZSpzKTowPT1jLnRvcHx8MD09Yy5ib3R0b20/KHQueTA9KFMtYikvZSpu LHQueTE9dC55MCt0LnZhbHVlKnMpOih0LnkwPShTLWIpLzItZS8yK24sdC55 MT10LnkwK3QudmFsdWUqcyl9KX0pfSkocyksbSgpO2Zvcih2YXIgYz0xLHU9 bzt1PjA7LS11KXYoYyo9Ljk5LHMpLG0oKTtmdW5jdGlvbiB2KHQscil7dmFy IG49bC5sZW5ndGg7bC5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBpPWEubGVu Z3RoLG89YVswXS5kZXB0aDthLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIHM7 aWYoYS5zb3VyY2VMaW5rcy5sZW5ndGh8fGEudGFyZ2V0TGlua3MubGVuZ3Ro KWlmKGEucGFydE9mQ3ljbGUmJkEoYSxyKT4wKTtlbHNlIGlmKDA9PW8mJjE9 PWkpcz1hLnkxLWEueTAsYS55MD1TLzItcy8yLGEueTE9Uy8yK3MvMjtlbHNl IGlmKG89PW4tMSYmMT09aSlzPWEueTEtYS55MCxhLnkwPVMvMi1zLzIsYS55 MT1TLzIrcy8yO2Vsc2V7dmFyIGw9ZS5tZWFuKGEuc291cmNlTGlua3MsZyks Yz1lLm1lYW4oYS50YXJnZXRMaW5rcyxkKSx1PSgobCYmYz8obCtjKS8yOmx8 fGMpLXAoYSkpKnQ7YS55MCs9dSxhLnkxKz11fX0pfSl9ZnVuY3Rpb24gbSgp e2wuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcixuLGEsaT1iLG89ZS5sZW5n dGg7Zm9yKGUuc29ydChoKSxhPTA7YTxvOysrYSlyPWVbYV0sKG49aS1yLnkw KT4wJiYoci55MCs9bixyLnkxKz1uKSxpPXIueTErdDtpZigobj1pLXQtUyk+ MClmb3IoaT1yLnkwLT1uLHIueTEtPW4sYT1vLTI7YT49MDstLWEpcj1lW2Fd LChuPXIueTErdC1pKT4wJiYoci55MC09bixyLnkxLT1uKSxpPXIueTB9KX19 KG8sSSxDKSxCKG8pO2Zvcih2YXIgcz0wO3M8NDtzKyspVShvLFMsQykscShv LDAsQyksTihvLGIsUyxDKSxVKG8sUyxDKSxxKG8sMCxDKTtyZXR1cm4gZnVu Y3Rpb24odCxyLG4pe3ZhciBhPXQubm9kZXMsaT10LmxpbmtzLG89ITEscz0h MTtpZihpLmZvckVhY2goZnVuY3Rpb24odCl7InRvcCI9PXQuY2lyY3VsYXJM aW5rVHlwZT9vPSEwOiJib3R0b20iPT10LmNpcmN1bGFyTGlua1R5cGUmJihz PSEwKX0pLDA9PW98fDA9PXMpe3ZhciBsPWUubWluKGEsZnVuY3Rpb24odCl7 cmV0dXJuIHQueTB9KSxjPWUubWF4KGEsZnVuY3Rpb24odCl7cmV0dXJuIHQu eTF9KSx1PWMtbCxoPW4tcixmPWgvdTthLmZvckVhY2goZnVuY3Rpb24odCl7 dmFyIGU9KHQueTEtdC55MCkqZjt0LnkwPSh0LnkwLWwpKmYsdC55MT10Lnkw K2V9KSxpLmZvckVhY2goZnVuY3Rpb24odCl7dC55MD0odC55MC1sKSpmLHQu eTE9KHQueTEtbCkqZix0LndpZHRoPXQud2lkdGgqZn0pfX0obyxiLFMpLEwo byxELFMsQyksb31mdW5jdGlvbiBCKHQpe3Qubm9kZXMuZm9yRWFjaChmdW5j dGlvbih0KXt0LnNvdXJjZUxpbmtzLnNvcnQodSksdC50YXJnZXRMaW5rcy5z b3J0KGMpfSksdC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXQu eTAscj1lLG49dC55MSxhPW47dC5zb3VyY2VMaW5rcy5mb3JFYWNoKGZ1bmN0 aW9uKHQpe3QuY2lyY3VsYXI/KHQueTA9bi10LndpZHRoLzIsbi09dC53aWR0 aCk6KHQueTA9ZSt0LndpZHRoLzIsZSs9dC53aWR0aCl9KSx0LnRhcmdldExp bmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC5jaXJjdWxhcj8odC55MT1hLXQu d2lkdGgvMixhLT10LndpZHRoKToodC55MT1yK3Qud2lkdGgvMixyKz10Lndp ZHRoKX0pfSl9cmV0dXJuIEYubm9kZUlkPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhDPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cyh0 KSxGKTpDfSxGLm5vZGVBbGlnbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8oUD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnModCksRik6 UH0sRi5ub2RlV2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/KEU9K3QsRik6RX0sRi5ub2RlUGFkZGluZz1mdW5jdGlvbihlKXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxGKTp0fSxGLm5vZGVzPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhPPSJmdW5jdGlv biI9PXR5cGVvZiB0P3Q6cyh0KSxGKTpPfSxGLmxpbmtzPWZ1bmN0aW9uKHQp e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh6PSJmdW5jdGlvbiI9PXR5cGVv ZiB0P3Q6cyh0KSxGKTp6fSxGLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KGk9Yj0wLE09K3RbMF0sUz0rdFsxXSxGKTpbTS1p LFMtYl19LEYuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhpPSt0WzBdWzBdLE09K3RbMV1bMF0sYj0rdFswXVsxXSxTPSt0 WzFdWzFdLEYpOltbaSxiXSxbTSxTXV19LEYuaXRlcmF0aW9ucz1mdW5jdGlv bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oST0rdCxGKTpJfSxGLmNp cmN1bGFyTGlua0dhcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8oRD0rdCxGKTpEfSxGLm5vZGVQYWRkaW5nUmF0aW89ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsRik6bn0sRi5zb3J0 Tm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFI9 dCxGKTpSfSxGLnVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gVCh0LEMpLEIo dCksdC5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuY2lyY3VsYXImJih0 LmNpcmN1bGFyTGlua1R5cGU9dC55MCt0LnkxPFM/InRvcCI6ImJvdHRvbSIs dC5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZT10LmNpcmN1bGFyTGlua1R5cGUs dC50YXJnZXQuY2lyY3VsYXJMaW5rVHlwZT10LmNpcmN1bGFyTGlua1R5cGUp fSksVSh0LFMsQywhMSkscSh0LDAsQyksTCh0LEQsUyxDKSx0fSxGfSx0LnNh bmtleUNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdC50YXJnZXRMaW5rcy5s ZW5ndGg/dC5kZXB0aDp0LnNvdXJjZUxpbmtzLmxlbmd0aD9lLm1pbih0LnNv dXJjZUxpbmtzLGkpLTE6MH0sdC5zYW5rZXlMZWZ0PWZ1bmN0aW9uKHQpe3Jl dHVybiB0LmRlcHRofSx0LnNhbmtleVJpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGUtMS10LmhlaWdodH0sdC5zYW5rZXlKdXN0aWZ5PW8sT2JqZWN0LmRl ZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwib2Jq ZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQiIT10eXBlb2YgZT9hKHIsdCgi ZDMtYXJyYXkiKSx0KCJkMy1jb2xsZWN0aW9uIiksdCgiZDMtc2hhcGUiKSx0 KCJlbGVtZW50YXJ5LWNpcmN1aXRzLWRpcmVjdGVkLWdyYXBoIikpOmEobi5k Mz1uLmQzfHx7fSxuLmQzLG4uZDMsbi5kMyxudWxsKX0seyJkMy1hcnJheSI6 MTU0LCJkMy1jb2xsZWN0aW9uIjoxNTUsImQzLXNoYXBlIjoxNjMsImVsZW1l bnRhcnktY2lyY3VpdHMtZGlyZWN0ZWQtZ3JhcGgiOjE3NX1dLDU2OltmdW5j dGlvbih0LGUscil7dmFyIG4sYTtuPXRoaXMsYT1mdW5jdGlvbih0LGUscixu KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdC50YXJnZXQu ZGVwdGh9ZnVuY3Rpb24gaSh0LGUpe3JldHVybiB0LnNvdXJjZUxpbmtzLmxl bmd0aD90LmRlcHRoOmUtMX1mdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlv bigpe3JldHVybiB0fX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGModC5zb3Vy Y2UsZS5zb3VyY2UpfHx0LmluZGV4LWUuaW5kZXh9ZnVuY3Rpb24gbCh0LGUp e3JldHVybiBjKHQudGFyZ2V0LGUudGFyZ2V0KXx8dC5pbmRleC1lLmluZGV4 fWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gdC55MC1lLnkwfWZ1bmN0aW9uIHUo dCl7cmV0dXJuIHQudmFsdWV9ZnVuY3Rpb24gaCh0KXtyZXR1cm4odC55MCt0 LnkxKS8yfWZ1bmN0aW9uIGYodCl7cmV0dXJuIGgodC5zb3VyY2UpKnQudmFs dWV9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gaCh0LnRhcmdldCkqdC52YWx1ZX1m dW5jdGlvbiBkKHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIGcodCl7cmV0 dXJuIHQubm9kZXN9ZnVuY3Rpb24gdih0KXtyZXR1cm4gdC5saW5rc31mdW5j dGlvbiBtKHQsZSl7dmFyIHI9dC5nZXQoZSk7aWYoIXIpdGhyb3cgbmV3IEVy cm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiByfWZ1bmN0aW9uIHkodCl7cmV0 dXJuW3Quc291cmNlLngxLHQueTBdfWZ1bmN0aW9uIHgodCl7cmV0dXJuW3Qu dGFyZ2V0LngwLHQueTFdfXQuc2Fua2V5PWZ1bmN0aW9uKCl7dmFyIHQ9MCxu PTAsYT0xLHk9MSx4PTI0LGI9OCxfPWQsdz1pLGs9ZyxUPXYsTT0zMixBPTIv MztmdW5jdGlvbiBTKCl7dmFyIGk9e25vZGVzOmsuYXBwbHkobnVsbCxhcmd1 bWVudHMpLGxpbmtzOlQuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtyZXR1cm4g ZnVuY3Rpb24odCl7dC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dC5p bmRleD1lLHQuc291cmNlTGlua3M9W10sdC50YXJnZXRMaW5rcz1bXX0pO3Zh ciBlPXIubWFwKHQubm9kZXMsXyk7dC5saW5rcy5mb3JFYWNoKGZ1bmN0aW9u KHQscil7dC5pbmRleD1yO3ZhciBuPXQuc291cmNlLGE9dC50YXJnZXQ7Im9i amVjdCIhPXR5cGVvZiBuJiYobj10LnNvdXJjZT1tKGUsbikpLCJvYmplY3Qi IT10eXBlb2YgYSYmKGE9dC50YXJnZXQ9bShlLGEpKSxuLnNvdXJjZUxpbmtz LnB1c2godCksYS50YXJnZXRMaW5rcy5wdXNoKHQpfSl9KGkpLGZ1bmN0aW9u KHQpe3Qubm9kZXMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnZhbHVlPU1hdGgu bWF4KGUuc3VtKHQuc291cmNlTGlua3MsdSksZS5zdW0odC50YXJnZXRMaW5r cyx1KSl9KX0oaSksZnVuY3Rpb24oZSl7dmFyIHIsbixpO2ZvcihyPWUubm9k ZXMsbj1bXSxpPTA7ci5sZW5ndGg7KytpLHI9bixuPVtdKXIuZm9yRWFjaChm dW5jdGlvbih0KXt0LmRlcHRoPWksdC5zb3VyY2VMaW5rcy5mb3JFYWNoKGZ1 bmN0aW9uKHQpe24uaW5kZXhPZih0LnRhcmdldCk8MCYmbi5wdXNoKHQudGFy Z2V0KX0pfSk7Zm9yKHI9ZS5ub2RlcyxuPVtdLGk9MDtyLmxlbmd0aDsrK2ks cj1uLG49W10pci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuaGVpZ2h0PWksdC50 YXJnZXRMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe24uaW5kZXhPZih0LnNv dXJjZSk8MCYmbi5wdXNoKHQuc291cmNlKX0pfSk7dmFyIG89KGEtdC14KS8o aS0xKTtlLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS54MT0oZS54MD10 K01hdGgubWF4KDAsTWF0aC5taW4oaS0xLE1hdGguZmxvb3Iody5jYWxsKG51 bGwsZSxpKSkpKSpvKSt4fSl9KGkpLGZ1bmN0aW9uKHQpe3ZhciBhPXIubmVz dCgpLmtleShmdW5jdGlvbih0KXtyZXR1cm4gdC54MH0pLnNvcnRLZXlzKGUu YXNjZW5kaW5nKS5lbnRyaWVzKHQubm9kZXMpLm1hcChmdW5jdGlvbih0KXty ZXR1cm4gdC52YWx1ZXN9KTsoZnVuY3Rpb24oKXt2YXIgcj1lLm1heChhLGZ1 bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pLGk9QSooeS1uKS8oci0xKTti PmkmJihiPWkpO3ZhciBvPWUubWluKGEsZnVuY3Rpb24odCl7cmV0dXJuKHkt bi0odC5sZW5ndGgtMSkqYikvZS5zdW0odCx1KX0pO2EuZm9yRWFjaChmdW5j dGlvbih0KXt0LmZvckVhY2goZnVuY3Rpb24odCxlKXt0LnkxPSh0LnkwPWUp K3QudmFsdWUqb30pfSksdC5saW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qu d2lkdGg9dC52YWx1ZSpvfSl9KSgpLGQoKTtmb3IodmFyIGk9MSxvPU07bz4w Oy0tbylsKGkqPS45OSksZCgpLHMoaSksZCgpO2Z1bmN0aW9uIHModCl7YS5m b3JFYWNoKGZ1bmN0aW9uKHIpe3IuZm9yRWFjaChmdW5jdGlvbihyKXtpZihy LnRhcmdldExpbmtzLmxlbmd0aCl7dmFyIG49KGUuc3VtKHIudGFyZ2V0TGlu a3MsZikvZS5zdW0oci50YXJnZXRMaW5rcyx1KS1oKHIpKSp0O3IueTArPW4s ci55MSs9bn19KX0pfWZ1bmN0aW9uIGwodCl7YS5zbGljZSgpLnJldmVyc2Uo KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3IuZm9yRWFjaChmdW5jdGlvbihyKXtp ZihyLnNvdXJjZUxpbmtzLmxlbmd0aCl7dmFyIG49KGUuc3VtKHIuc291cmNl TGlua3MscCkvZS5zdW0oci5zb3VyY2VMaW5rcyx1KS1oKHIpKSp0O3IueTAr PW4sci55MSs9bn19KX0pfWZ1bmN0aW9uIGQoKXthLmZvckVhY2goZnVuY3Rp b24odCl7dmFyIGUscixhLGk9bixvPXQubGVuZ3RoO2Zvcih0LnNvcnQoYyks YT0wO2E8bzsrK2EpZT10W2FdLChyPWktZS55MCk+MCYmKGUueTArPXIsZS55 MSs9ciksaT1lLnkxK2I7aWYoKHI9aS1iLXkpPjApZm9yKGk9ZS55MC09cixl LnkxLT1yLGE9by0yO2E+PTA7LS1hKWU9dFthXSwocj1lLnkxK2ItaSk+MCYm KGUueTAtPXIsZS55MS09ciksaT1lLnkwfSl9fShpKSxFKGkpLGl9ZnVuY3Rp b24gRSh0KXt0Lm5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7dC5zb3VyY2VM aW5rcy5zb3J0KGwpLHQudGFyZ2V0TGlua3Muc29ydChzKX0pLHQubm9kZXMu Zm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT10LnkwLHI9ZTt0LnNvdXJjZUxp bmtzLmZvckVhY2goZnVuY3Rpb24odCl7dC55MD1lK3Qud2lkdGgvMixlKz10 LndpZHRofSksdC50YXJnZXRMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qu eTE9cit0LndpZHRoLzIscis9dC53aWR0aH0pfSl9cmV0dXJuIFMudXBkYXRl PWZ1bmN0aW9uKHQpe3JldHVybiBFKHQpLHR9LFMubm9kZUlkPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPSJmdW5jdGlvbiI9PXR5 cGVvZiB0P3Q6byh0KSxTKTpffSxTLm5vZGVBbGlnbj1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0iZnVuY3Rpb24iPT10eXBlb2Yg dD90Om8odCksUyk6d30sUy5ub2RlV2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KHg9K3QsUyk6eH0sUy5ub2RlUGFkZGluZz1m dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0rdCxTKTpi fSxTLm5vZGVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro PyhrPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6byh0KSxTKTprfSxTLmxpbmtz PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPSJmdW5j dGlvbiI9PXR5cGVvZiB0P3Q6byh0KSxTKTpUfSxTLnNpemU9ZnVuY3Rpb24o ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bj0wLGE9K2VbMF0seT0r ZVsxXSxTKTpbYS10LHktbl19LFMuZXh0ZW50PWZ1bmN0aW9uKGUpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyh0PStlWzBdWzBdLGE9K2VbMV1bMF0sbj0r ZVswXVsxXSx5PStlWzFdWzFdLFMpOltbdCxuXSxbYSx5XV19LFMuaXRlcmF0 aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT0r dCxTKTpNfSxTfSx0LnNhbmtleUNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4g dC50YXJnZXRMaW5rcy5sZW5ndGg/dC5kZXB0aDp0LnNvdXJjZUxpbmtzLmxl bmd0aD9lLm1pbih0LnNvdXJjZUxpbmtzLGEpLTE6MH0sdC5zYW5rZXlMZWZ0 PWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlcHRofSx0LnNhbmtleVJpZ2h0PWZ1 bmN0aW9uKHQsZSl7cmV0dXJuIGUtMS10LmhlaWdodH0sdC5zYW5rZXlKdXN0 aWZ5PWksdC5zYW5rZXlMaW5rSG9yaXpvbnRhbD1mdW5jdGlvbigpe3JldHVy biBuLmxpbmtIb3Jpem9udGFsKCkuc291cmNlKHkpLnRhcmdldCh4KX0sT2Jq ZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p fSwib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQiIT10eXBlb2YgZT9h KHIsdCgiZDMtYXJyYXkiKSx0KCJkMy1jb2xsZWN0aW9uIiksdCgiZDMtc2hh cGUiKSk6YShuLmQzPW4uZDN8fHt9LG4uZDMsbi5kMyxuLmQzKX0seyJkMy1h cnJheSI6MTU0LCJkMy1jb2xsZWN0aW9uIjoxNTUsImQzLXNoYXBlIjoxNjN9 XSw1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVm aW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49 dCgiQHR1cmYvbWV0YSIpLGE9NjM3ODEzNztmdW5jdGlvbiBpKHQpe3ZhciBl PTA7aWYodCYmdC5sZW5ndGg+MCl7ZSs9TWF0aC5hYnMobyh0WzBdKSk7Zm9y KHZhciByPTE7cjx0Lmxlbmd0aDtyKyspZS09TWF0aC5hYnMobyh0W3JdKSl9 cmV0dXJuIGV9ZnVuY3Rpb24gbyh0KXt2YXIgZSxyLG4saSxvLGwsYz0wLHU9 dC5sZW5ndGg7aWYodT4yKXtmb3IobD0wO2w8dTtsKyspbD09PXUtMj8obj11 LTIsaT11LTEsbz0wKTpsPT09dS0xPyhuPXUtMSxpPTAsbz0xKToobj1sLGk9 bCsxLG89bCsyKSxlPXRbbl0scj10W2ldLGMrPShzKHRbb11bMF0pLXMoZVsw XSkpKk1hdGguc2luKHMoclsxXSkpO2M9YyphKmEvMn1yZXR1cm4gY31mdW5j dGlvbiBzKHQpe3JldHVybiB0Kk1hdGguUEkvMTgwfXIuZGVmYXVsdD1mdW5j dGlvbih0KXtyZXR1cm4gbi5nZW9tUmVkdWNlKHQsZnVuY3Rpb24odCxlKXty ZXR1cm4gdCtmdW5jdGlvbih0KXt2YXIgZSxyPTA7c3dpdGNoKHQudHlwZSl7 Y2FzZSJQb2x5Z29uIjpyZXR1cm4gaSh0LmNvb3JkaW5hdGVzKTtjYXNlIk11 bHRpUG9seWdvbiI6Zm9yKGU9MDtlPHQuY29vcmRpbmF0ZXMubGVuZ3RoO2Ur KylyKz1pKHQuY29vcmRpbmF0ZXNbZV0pO3JldHVybiByO2Nhc2UiUG9pbnQi OmNhc2UiTXVsdGlQb2ludCI6Y2FzZSJMaW5lU3RyaW5nIjpjYXNlIk11bHRp TGluZVN0cmluZyI6cmV0dXJuIDB9cmV0dXJuIDB9KGUpfSwwKX19LHsiQHR1 cmYvbWV0YSI6NjF9XSw1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtPYmplY3QuZGVmaW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVl OiEwfSk7dmFyIG49dCgiQHR1cmYvbWV0YSIpO3IuZGVmYXVsdD1mdW5jdGlv bih0KXt2YXIgZT1bMS8wLDEvMCwtMS8wLC0xLzBdO3JldHVybiBuLmNvb3Jk RWFjaCh0LGZ1bmN0aW9uKHQpe2VbMF0+dFswXSYmKGVbMF09dFswXSksZVsx XT50WzFdJiYoZVsxXT10WzFdKSxlWzJdPHRbMF0mJihlWzJdPXRbMF0pLGVb M108dFsxXSYmKGVbM109dFsxXSl9KSxlfX0seyJAdHVyZi9tZXRhIjo2MX1d LDU5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZp bmVQcm9wZXJ0eShyLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj10 KCJAdHVyZi9tZXRhIiksYT10KCJAdHVyZi9oZWxwZXJzIik7ci5kZWZhdWx0 PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciByPTAsaT0w LG89MDtyZXR1cm4gbi5jb29yZEVhY2godCxmdW5jdGlvbih0KXtyKz10WzBd LGkrPXRbMV0sbysrfSksYS5wb2ludChbci9vLGkvb10sZS5wcm9wZXJ0aWVz KX19LHsiQHR1cmYvaGVscGVycyI6NjAsIkB0dXJmL21ldGEiOjYxfV0sNjA6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUs cil7dm9pZCAwPT09ciYmKHI9e30pO3ZhciBuPXt0eXBlOiJGZWF0dXJlIn07 cmV0dXJuKDA9PT1yLmlkfHxyLmlkKSYmKG4uaWQ9ci5pZCksci5iYm94JiYo bi5iYm94PXIuYmJveCksbi5wcm9wZXJ0aWVzPWV8fHt9LG4uZ2VvbWV0cnk9 dCxufWZ1bmN0aW9uIGEodCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj17 fSksbih7dHlwZToiUG9pbnQiLGNvb3JkaW5hdGVzOnR9LGUscil9ZnVuY3Rp b24gaSh0LGUscil7dm9pZCAwPT09ciYmKHI9e30pO2Zvcih2YXIgYT0wLGk9 dDthPGkubGVuZ3RoO2ErKyl7dmFyIG89aVthXTtpZihvLmxlbmd0aDw0KXRo cm93IG5ldyBFcnJvcigiRWFjaCBMaW5lYXJSaW5nIG9mIGEgUG9seWdvbiBt dXN0IGhhdmUgNCBvciBtb3JlIFBvc2l0aW9ucy4iKTtmb3IodmFyIHM9MDtz PG9bby5sZW5ndGgtMV0ubGVuZ3RoO3MrKylpZihvW28ubGVuZ3RoLTFdW3Nd IT09b1swXVtzXSl0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGFuZCBsYXN0IFBv c2l0aW9uIGFyZSBub3QgZXF1aXZhbGVudC4iKX1yZXR1cm4gbih7dHlwZToi UG9seWdvbiIsY29vcmRpbmF0ZXM6dH0sZSxyKX1mdW5jdGlvbiBvKHQsZSxy KXtpZih2b2lkIDA9PT1yJiYocj17fSksdC5sZW5ndGg8Mil0aHJvdyBuZXcg RXJyb3IoImNvb3JkaW5hdGVzIG11c3QgYmUgYW4gYXJyYXkgb2YgdHdvIG9y IG1vcmUgcG9zaXRpb25zIik7cmV0dXJuIG4oe3R5cGU6IkxpbmVTdHJpbmci LGNvb3JkaW5hdGVzOnR9LGUscil9ZnVuY3Rpb24gcyh0LGUpe3ZvaWQgMD09 PWUmJihlPXt9KTt2YXIgcj17dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24ifTty ZXR1cm4gZS5pZCYmKHIuaWQ9ZS5pZCksZS5iYm94JiYoci5iYm94PWUuYmJv eCksci5mZWF0dXJlcz10LHJ9ZnVuY3Rpb24gbCh0LGUscil7cmV0dXJuIHZv aWQgMD09PXImJihyPXt9KSxuKHt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNv b3JkaW5hdGVzOnR9LGUscil9ZnVuY3Rpb24gYyh0LGUscil7cmV0dXJuIHZv aWQgMD09PXImJihyPXt9KSxuKHt0eXBlOiJNdWx0aVBvaW50Iixjb29yZGlu YXRlczp0fSxlLHIpfWZ1bmN0aW9uIHUodCxlLHIpe3JldHVybiB2b2lkIDA9 PT1yJiYocj17fSksbih7dHlwZToiTXVsdGlQb2x5Z29uIixjb29yZGluYXRl czp0fSxlLHIpfWZ1bmN0aW9uIGgodCxlKXt2b2lkIDA9PT1lJiYoZT0ia2ls b21ldGVycyIpO3ZhciBuPXIuZmFjdG9yc1tlXTtpZighbil0aHJvdyBuZXcg RXJyb3IoZSsiIHVuaXRzIGlzIGludmFsaWQiKTtyZXR1cm4gdCpufWZ1bmN0 aW9uIGYodCxlKXt2b2lkIDA9PT1lJiYoZT0ia2lsb21ldGVycyIpO3ZhciBu PXIuZmFjdG9yc1tlXTtpZighbil0aHJvdyBuZXcgRXJyb3IoZSsiIHVuaXRz IGlzIGludmFsaWQiKTtyZXR1cm4gdC9ufWZ1bmN0aW9uIHAodCl7cmV0dXJu IDE4MCoodCUoMipNYXRoLlBJKSkvTWF0aC5QSX1mdW5jdGlvbiBkKHQpe3Jl dHVybiFpc05hTih0KSYmbnVsbCE9PXQmJiFBcnJheS5pc0FycmF5KHQpJiYh L15ccyokLy50ZXN0KHQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJfX2Vz TW9kdWxlIix7dmFsdWU6ITB9KSxyLmVhcnRoUmFkaXVzPTYzNzEwMDguOCxy LmZhY3RvcnM9e2NlbnRpbWV0ZXJzOjEwMCpyLmVhcnRoUmFkaXVzLGNlbnRp bWV0cmVzOjEwMCpyLmVhcnRoUmFkaXVzLGRlZ3JlZXM6ci5lYXJ0aFJhZGl1 cy8xMTEzMjUsZmVldDozLjI4MDg0KnIuZWFydGhSYWRpdXMsaW5jaGVzOjM5 LjM3KnIuZWFydGhSYWRpdXMsa2lsb21ldGVyczpyLmVhcnRoUmFkaXVzLzFl MyxraWxvbWV0cmVzOnIuZWFydGhSYWRpdXMvMWUzLG1ldGVyczpyLmVhcnRo UmFkaXVzLG1ldHJlczpyLmVhcnRoUmFkaXVzLG1pbGVzOnIuZWFydGhSYWRp dXMvMTYwOS4zNDQsbWlsbGltZXRlcnM6MWUzKnIuZWFydGhSYWRpdXMsbWls bGltZXRyZXM6MWUzKnIuZWFydGhSYWRpdXMsbmF1dGljYWxtaWxlczpyLmVh cnRoUmFkaXVzLzE4NTIscmFkaWFuczoxLHlhcmRzOnIuZWFydGhSYWRpdXMv MS4wOTM2fSxyLnVuaXRzRmFjdG9ycz17Y2VudGltZXRlcnM6MTAwLGNlbnRp bWV0cmVzOjEwMCxkZWdyZWVzOjEvMTExMzI1LGZlZXQ6My4yODA4NCxpbmNo ZXM6MzkuMzcsa2lsb21ldGVyczouMDAxLGtpbG9tZXRyZXM6LjAwMSxtZXRl cnM6MSxtZXRyZXM6MSxtaWxlczoxLzE2MDkuMzQ0LG1pbGxpbWV0ZXJzOjFl MyxtaWxsaW1ldHJlczoxZTMsbmF1dGljYWxtaWxlczoxLzE4NTIscmFkaWFu czoxL3IuZWFydGhSYWRpdXMseWFyZHM6MS8xLjA5MzZ9LHIuYXJlYUZhY3Rv cnM9e2FjcmVzOjI0NzEwNWUtOSxjZW50aW1ldGVyczoxZTQsY2VudGltZXRy ZXM6MWU0LGZlZXQ6MTAuNzYzOTEwNDE3LGluY2hlczoxNTUwLjAwMzEwMDAw NixraWxvbWV0ZXJzOjFlLTYsa2lsb21ldHJlczoxZS02LG1ldGVyczoxLG1l dHJlczoxLG1pbGVzOjMuODZlLTcsbWlsbGltZXRlcnM6MWU2LG1pbGxpbWV0 cmVzOjFlNix5YXJkczoxLjE5NTk5MDA0Nn0sci5mZWF0dXJlPW4sci5nZW9t ZXRyeT1mdW5jdGlvbih0LGUscil7c3dpdGNoKHZvaWQgMD09PXImJihyPXt9 KSx0KXtjYXNlIlBvaW50IjpyZXR1cm4gYShlKS5nZW9tZXRyeTtjYXNlIkxp bmVTdHJpbmciOnJldHVybiBvKGUpLmdlb21ldHJ5O2Nhc2UiUG9seWdvbiI6 cmV0dXJuIGkoZSkuZ2VvbWV0cnk7Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4g YyhlKS5nZW9tZXRyeTtjYXNlIk11bHRpTGluZVN0cmluZyI6cmV0dXJuIGwo ZSkuZ2VvbWV0cnk7Y2FzZSJNdWx0aVBvbHlnb24iOnJldHVybiB1KGUpLmdl b21ldHJ5O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKHQrIiBpcyBpbnZhbGlk Iil9fSxyLnBvaW50PWEsci5wb2ludHM9ZnVuY3Rpb24odCxlLHIpe3JldHVy biB2b2lkIDA9PT1yJiYocj17fSkscyh0Lm1hcChmdW5jdGlvbih0KXtyZXR1 cm4gYSh0LGUpfSkscil9LHIucG9seWdvbj1pLHIucG9seWdvbnM9ZnVuY3Rp b24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj17fSkscyh0Lm1hcChm dW5jdGlvbih0KXtyZXR1cm4gaSh0LGUpfSkscil9LHIubGluZVN0cmluZz1v LHIubGluZVN0cmluZ3M9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9 PT1yJiYocj17fSkscyh0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbyh0LGUp fSkscil9LHIuZmVhdHVyZUNvbGxlY3Rpb249cyxyLm11bHRpTGluZVN0cmlu Zz1sLHIubXVsdGlQb2ludD1jLHIubXVsdGlQb2x5Z29uPXUsci5nZW9tZXRy eUNvbGxlY3Rpb249ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1y JiYocj17fSksbih7dHlwZToiR2VvbWV0cnlDb2xsZWN0aW9uIixnZW9tZXRy aWVzOnR9LGUscil9LHIucm91bmQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9 PT1lJiYoZT0wKSxlJiYhKGU+PTApKXRocm93IG5ldyBFcnJvcigicHJlY2lz aW9uIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTt2YXIgcj1NYXRoLnBv dygxMCxlfHwwKTtyZXR1cm4gTWF0aC5yb3VuZCh0KnIpL3J9LHIucmFkaWFu c1RvTGVuZ3RoPWgsci5sZW5ndGhUb1JhZGlhbnM9ZixyLmxlbmd0aFRvRGVn cmVlcz1mdW5jdGlvbih0LGUpe3JldHVybiBwKGYodCxlKSl9LHIuYmVhcmlu Z1RvQXppbXV0aD1mdW5jdGlvbih0KXt2YXIgZT10JTM2MDtyZXR1cm4gZTww JiYoZSs9MzYwKSxlfSxyLnJhZGlhbnNUb0RlZ3JlZXM9cCxyLmRlZ3JlZXNU b1JhZGlhbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHQlMzYwKk1hdGguUEkvMTgw fSxyLmNvbnZlcnRMZW5ndGg9ZnVuY3Rpb24odCxlLHIpe2lmKHZvaWQgMD09 PWUmJihlPSJraWxvbWV0ZXJzIiksdm9pZCAwPT09ciYmKHI9ImtpbG9tZXRl cnMiKSwhKHQ+PTApKXRocm93IG5ldyBFcnJvcigibGVuZ3RoIG11c3QgYmUg YSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gaChmKHQsZSkscil9LHIuY29u dmVydEFyZWE9ZnVuY3Rpb24odCxlLG4pe2lmKHZvaWQgMD09PWUmJihlPSJt ZXRlcnMiKSx2b2lkIDA9PT1uJiYobj0ia2lsb21ldGVycyIpLCEodD49MCkp dGhyb3cgbmV3IEVycm9yKCJhcmVhIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1i ZXIiKTt2YXIgYT1yLmFyZWFGYWN0b3JzW2VdO2lmKCFhKXRocm93IG5ldyBF cnJvcigiaW52YWxpZCBvcmlnaW5hbCB1bml0cyIpO3ZhciBpPXIuYXJlYUZh Y3RvcnNbbl07aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZpbmFs IHVuaXRzIik7cmV0dXJuIHQvYSppfSxyLmlzTnVtYmVyPWQsci5pc09iamVj dD1mdW5jdGlvbih0KXtyZXR1cm4hIXQmJnQuY29uc3RydWN0b3I9PT1PYmpl Y3R9LHIudmFsaWRhdGVCQm94PWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5l dyBFcnJvcigiYmJveCBpcyByZXF1aXJlZCIpO2lmKCFBcnJheS5pc0FycmF5 KHQpKXRocm93IG5ldyBFcnJvcigiYmJveCBtdXN0IGJlIGFuIEFycmF5Iik7 aWYoNCE9PXQubGVuZ3RoJiY2IT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9y KCJiYm94IG11c3QgYmUgYW4gQXJyYXkgb2YgNCBvciA2IG51bWJlcnMiKTt0 LmZvckVhY2goZnVuY3Rpb24odCl7aWYoIWQodCkpdGhyb3cgbmV3IEVycm9y KCJiYm94IG11c3Qgb25seSBjb250YWluIG51bWJlcnMiKX0pfSxyLnZhbGlk YXRlSWQ9ZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJpZCBp cyByZXF1aXJlZCIpO2lmKC0xPT09WyJzdHJpbmciLCJudW1iZXIiXS5pbmRl eE9mKHR5cGVvZiB0KSl0aHJvdyBuZXcgRXJyb3IoImlkIG11c3QgYmUgYSBu dW1iZXIgb3IgYSBzdHJpbmciKX0sci5yYWRpYW5zMmRlZ3JlZXM9ZnVuY3Rp b24oKXt0aHJvdyBuZXcgRXJyb3IoIm1ldGhvZCBoYXMgYmVlbiByZW5hbWVk IHRvIGByYWRpYW5zVG9EZWdyZWVzYCIpfSxyLmRlZ3JlZXMycmFkaWFucz1m dW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJl bmFtZWQgdG8gYGRlZ3JlZXNUb1JhZGlhbnNgIil9LHIuZGlzdGFuY2VUb0Rl Z3JlZXM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIm1ldGhvZCBoYXMg YmVlbiByZW5hbWVkIHRvIGBsZW5ndGhUb0RlZ3JlZXNgIil9LHIuZGlzdGFu Y2VUb1JhZGlhbnM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIm1ldGhv ZCBoYXMgYmVlbiByZW5hbWVkIHRvIGBsZW5ndGhUb1JhZGlhbnNgIil9LHIu cmFkaWFuc1RvRGlzdGFuY2U9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Io Im1ldGhvZCBoYXMgYmVlbiByZW5hbWVkIHRvIGByYWRpYW5zVG9MZW5ndGhg Iil9LHIuYmVhcmluZ1RvQW5nbGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJy b3IoIm1ldGhvZCBoYXMgYmVlbiByZW5hbWVkIHRvIGBiZWFyaW5nVG9Bemlt dXRoYCIpfSxyLmNvbnZlcnREaXN0YW5jZT1mdW5jdGlvbigpe3Rocm93IG5l dyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGNvbnZlcnRM ZW5ndGhgIil9fSx7fV0sNjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9fZXNNb2R1bGUiLHt2YWx1 ZTohMH0pO3ZhciBuPXQoIkB0dXJmL2hlbHBlcnMiKTtmdW5jdGlvbiBhKHQs ZSxyKXtpZihudWxsIT09dClmb3IodmFyIG4saSxvLHMsbCxjLHUsaCxmPTAs cD0wLGQ9dC50eXBlLGc9IkZlYXR1cmVDb2xsZWN0aW9uIj09PWQsdj0iRmVh dHVyZSI9PT1kLG09Zz90LmZlYXR1cmVzLmxlbmd0aDoxLHk9MDt5PG07eSsr KXtsPShoPSEhKHU9Zz90LmZlYXR1cmVzW3ldLmdlb21ldHJ5OnY/dC5nZW9t ZXRyeTp0KSYmIkdlb21ldHJ5Q29sbGVjdGlvbiI9PT11LnR5cGUpP3UuZ2Vv bWV0cmllcy5sZW5ndGg6MTtmb3IodmFyIHg9MDt4PGw7eCsrKXt2YXIgYj0w LF89MDtpZihudWxsIT09KHM9aD91Lmdlb21ldHJpZXNbeF06dSkpe2M9cy5j b29yZGluYXRlczt2YXIgdz1zLnR5cGU7c3dpdGNoKGY9IXJ8fCJQb2x5Z29u IiE9PXcmJiJNdWx0aVBvbHlnb24iIT09dz8wOjEsdyl7Y2FzZSBudWxsOmJy ZWFrO2Nhc2UiUG9pbnQiOmlmKCExPT09ZShjLHAseSxiLF8pKXJldHVybiEx O3ArKyxiKys7YnJlYWs7Y2FzZSJMaW5lU3RyaW5nIjpjYXNlIk11bHRpUG9p bnQiOmZvcihuPTA7bjxjLmxlbmd0aDtuKyspe2lmKCExPT09ZShjW25dLHAs eSxiLF8pKXJldHVybiExO3ArKywiTXVsdGlQb2ludCI9PT13JiZiKyt9Ikxp bmVTdHJpbmciPT09dyYmYisrO2JyZWFrO2Nhc2UiUG9seWdvbiI6Y2FzZSJN dWx0aUxpbmVTdHJpbmciOmZvcihuPTA7bjxjLmxlbmd0aDtuKyspe2Zvcihp PTA7aTxjW25dLmxlbmd0aC1mO2krKyl7aWYoITE9PT1lKGNbbl1baV0scCx5 LGIsXykpcmV0dXJuITE7cCsrfSJNdWx0aUxpbmVTdHJpbmciPT09dyYmYisr LCJQb2x5Z29uIj09PXcmJl8rK30iUG9seWdvbiI9PT13JiZiKys7YnJlYWs7 Y2FzZSJNdWx0aVBvbHlnb24iOmZvcihuPTA7bjxjLmxlbmd0aDtuKyspe2Zv cihfPTAsaT0wO2k8Y1tuXS5sZW5ndGg7aSsrKXtmb3Iobz0wO288Y1tuXVtp XS5sZW5ndGgtZjtvKyspe2lmKCExPT09ZShjW25dW2ldW29dLHAseSxiLF8p KXJldHVybiExO3ArK31fKyt9YisrfWJyZWFrO2Nhc2UiR2VvbWV0cnlDb2xs ZWN0aW9uIjpmb3Iobj0wO248cy5nZW9tZXRyaWVzLmxlbmd0aDtuKyspaWYo ITE9PT1hKHMuZ2VvbWV0cmllc1tuXSxlLHIpKXJldHVybiExO2JyZWFrO2Rl ZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIEdlb21ldHJ5IFR5cGUi KX19fX19ZnVuY3Rpb24gaSh0LGUpe3ZhciByO3N3aXRjaCh0LnR5cGUpe2Nh c2UiRmVhdHVyZUNvbGxlY3Rpb24iOmZvcihyPTA7cjx0LmZlYXR1cmVzLmxl bmd0aCYmITEhPT1lKHQuZmVhdHVyZXNbcl0ucHJvcGVydGllcyxyKTtyKysp O2JyZWFrO2Nhc2UiRmVhdHVyZSI6ZSh0LnByb3BlcnRpZXMsMCl9fWZ1bmN0 aW9uIG8odCxlKXtpZigiRmVhdHVyZSI9PT10LnR5cGUpZSh0LDApO2Vsc2Ug aWYoIkZlYXR1cmVDb2xsZWN0aW9uIj09PXQudHlwZSlmb3IodmFyIHI9MDty PHQuZmVhdHVyZXMubGVuZ3RoJiYhMSE9PWUodC5mZWF0dXJlc1tyXSxyKTty KyspO31mdW5jdGlvbiBzKHQsZSl7dmFyIHIsbixhLGksbyxzLGwsYyx1LGgs Zj0wLHA9IkZlYXR1cmVDb2xsZWN0aW9uIj09PXQudHlwZSxkPSJGZWF0dXJl Ij09PXQudHlwZSxnPXA/dC5mZWF0dXJlcy5sZW5ndGg6MTtmb3Iocj0wO3I8 ZztyKyspe2ZvcihzPXA/dC5mZWF0dXJlc1tyXS5nZW9tZXRyeTpkP3QuZ2Vv bWV0cnk6dCxjPXA/dC5mZWF0dXJlc1tyXS5wcm9wZXJ0aWVzOmQ/dC5wcm9w ZXJ0aWVzOnt9LHU9cD90LmZlYXR1cmVzW3JdLmJib3g6ZD90LmJib3g6dm9p ZCAwLGg9cD90LmZlYXR1cmVzW3JdLmlkOmQ/dC5pZDp2b2lkIDAsbz0obD0h IXMmJiJHZW9tZXRyeUNvbGxlY3Rpb24iPT09cy50eXBlKT9zLmdlb21ldHJp ZXMubGVuZ3RoOjEsYT0wO2E8bzthKyspaWYobnVsbCE9PShpPWw/cy5nZW9t ZXRyaWVzW2FdOnMpKXN3aXRjaChpLnR5cGUpe2Nhc2UiUG9pbnQiOmNhc2Ui TGluZVN0cmluZyI6Y2FzZSJNdWx0aVBvaW50IjpjYXNlIlBvbHlnb24iOmNh c2UiTXVsdGlMaW5lU3RyaW5nIjpjYXNlIk11bHRpUG9seWdvbiI6aWYoITE9 PT1lKGksZixjLHUsaCkpcmV0dXJuITE7YnJlYWs7Y2FzZSJHZW9tZXRyeUNv bGxlY3Rpb24iOmZvcihuPTA7bjxpLmdlb21ldHJpZXMubGVuZ3RoO24rKylp ZighMT09PWUoaS5nZW9tZXRyaWVzW25dLGYsYyx1LGgpKXJldHVybiExO2Jy ZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIEdlb21ldHJ5 IFR5cGUiKX1lbHNlIGlmKCExPT09ZShudWxsLGYsYyx1LGgpKXJldHVybiEx O2YrK319ZnVuY3Rpb24gbCh0LGUpe3ModCxmdW5jdGlvbih0LHIsYSxpLG8p e3ZhciBzLGw9bnVsbD09PXQ/bnVsbDp0LnR5cGU7c3dpdGNoKGwpe2Nhc2Ug bnVsbDpjYXNlIlBvaW50IjpjYXNlIkxpbmVTdHJpbmciOmNhc2UiUG9seWdv biI6cmV0dXJuITEhPT1lKG4uZmVhdHVyZSh0LGEse2Jib3g6aSxpZDpvfSks ciwwKSYmdm9pZCAwfXN3aXRjaChsKXtjYXNlIk11bHRpUG9pbnQiOnM9IlBv aW50IjticmVhaztjYXNlIk11bHRpTGluZVN0cmluZyI6cz0iTGluZVN0cmlu ZyI7YnJlYWs7Y2FzZSJNdWx0aVBvbHlnb24iOnM9IlBvbHlnb24ifWZvcih2 YXIgYz0wO2M8dC5jb29yZGluYXRlcy5sZW5ndGg7YysrKXt2YXIgdT17dHlw ZTpzLGNvb3JkaW5hdGVzOnQuY29vcmRpbmF0ZXNbY119O2lmKCExPT09ZShu LmZlYXR1cmUodSxhKSxyLGMpKXJldHVybiExfX0pfWZ1bmN0aW9uIGModCxl KXtsKHQsZnVuY3Rpb24odCxyLGkpe3ZhciBvPTA7aWYodC5nZW9tZXRyeSl7 dmFyIHM9dC5nZW9tZXRyeS50eXBlO2lmKCJQb2ludCIhPT1zJiYiTXVsdGlQ b2ludCIhPT1zKXt2YXIgbCxjPTAsdT0wLGg9MDtyZXR1cm4hMSE9PWEodCxm dW5jdGlvbihhLHMsZixwLGQpe2lmKHZvaWQgMD09PWx8fHI+Y3x8cD51fHxk PmgpcmV0dXJuIGw9YSxjPXIsdT1wLGg9ZCx2b2lkKG89MCk7dmFyIGc9bi5s aW5lU3RyaW5nKFtsLGFdLHQucHJvcGVydGllcyk7aWYoITE9PT1lKGcscixp LGQsbykpcmV0dXJuITE7bysrLGw9YX0pJiZ2b2lkIDB9fX0pfWZ1bmN0aW9u IHUodCxlKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoImdlb2pzb24gaXMgcmVx dWlyZWQiKTtsKHQsZnVuY3Rpb24odCxyLGEpe2lmKG51bGwhPT10Lmdlb21l dHJ5KXt2YXIgaT10Lmdlb21ldHJ5LnR5cGUsbz10Lmdlb21ldHJ5LmNvb3Jk aW5hdGVzO3N3aXRjaChpKXtjYXNlIkxpbmVTdHJpbmciOmlmKCExPT09ZSh0 LHIsYSwwLDApKXJldHVybiExO2JyZWFrO2Nhc2UiUG9seWdvbiI6Zm9yKHZh ciBzPTA7czxvLmxlbmd0aDtzKyspaWYoITE9PT1lKG4ubGluZVN0cmluZyhv W3NdLHQucHJvcGVydGllcykscixhLHMpKXJldHVybiExfX19KX1yLmNvb3Jk RWFjaD1hLHIuY29vcmRSZWR1Y2U9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9 cjtyZXR1cm4gYSh0LGZ1bmN0aW9uKHQsbixhLG8scyl7aT0wPT09biYmdm9p ZCAwPT09cj90OmUoaSx0LG4sYSxvLHMpfSxuKSxpfSxyLnByb3BFYWNoPWks ci5wcm9wUmVkdWNlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yO3JldHVybiBp KHQsZnVuY3Rpb24odCxhKXtuPTA9PT1hJiZ2b2lkIDA9PT1yP3Q6ZShuLHQs YSl9KSxufSxyLmZlYXR1cmVFYWNoPW8sci5mZWF0dXJlUmVkdWNlPWZ1bmN0 aW9uKHQsZSxyKXt2YXIgbj1yO3JldHVybiBvKHQsZnVuY3Rpb24odCxhKXtu PTA9PT1hJiZ2b2lkIDA9PT1yP3Q6ZShuLHQsYSl9KSxufSxyLmNvb3JkQWxs PWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiBhKHQsZnVuY3Rpb24odCl7 ZS5wdXNoKHQpfSksZX0sci5nZW9tRWFjaD1zLHIuZ2VvbVJlZHVjZT1mdW5j dGlvbih0LGUscil7dmFyIG49cjtyZXR1cm4gcyh0LGZ1bmN0aW9uKHQsYSxp LG8scyl7bj0wPT09YSYmdm9pZCAwPT09cj90OmUobix0LGEsaSxvLHMpfSks bn0sci5mbGF0dGVuRWFjaD1sLHIuZmxhdHRlblJlZHVjZT1mdW5jdGlvbih0 LGUscil7dmFyIG49cjtyZXR1cm4gbCh0LGZ1bmN0aW9uKHQsYSxpKXtuPTA9 PT1hJiYwPT09aSYmdm9pZCAwPT09cj90OmUobix0LGEsaSl9KSxufSxyLnNl Z21lbnRFYWNoPWMsci5zZWdtZW50UmVkdWNlPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj1yLGE9ITE7cmV0dXJuIGModCxmdW5jdGlvbih0LGksbyxzLGwpe249 ITE9PT1hJiZ2b2lkIDA9PT1yP3Q6ZShuLHQsaSxvLHMsbCksYT0hMH0pLG59 LHIubGluZUVhY2g9dSxyLmxpbmVSZWR1Y2U9ZnVuY3Rpb24odCxlLHIpe3Zh ciBuPXI7cmV0dXJuIHUodCxmdW5jdGlvbih0LGEsaSxvKXtuPTA9PT1hJiZ2 b2lkIDA9PT1yP3Q6ZShuLHQsYSxpLG8pfSksbn0sci5maW5kU2VnbWVudD1m dW5jdGlvbih0LGUpe2lmKGU9ZXx8e30sIW4uaXNPYmplY3QoZSkpdGhyb3cg bmV3IEVycm9yKCJvcHRpb25zIGlzIGludmFsaWQiKTt2YXIgcixhPWUuZmVh dHVyZUluZGV4fHwwLGk9ZS5tdWx0aUZlYXR1cmVJbmRleHx8MCxvPWUuZ2Vv bWV0cnlJbmRleHx8MCxzPWUuc2VnbWVudEluZGV4fHwwLGw9ZS5wcm9wZXJ0 aWVzO3N3aXRjaCh0LnR5cGUpe2Nhc2UiRmVhdHVyZUNvbGxlY3Rpb24iOmE8 MCYmKGE9dC5mZWF0dXJlcy5sZW5ndGgrYSksbD1sfHx0LmZlYXR1cmVzW2Fd LnByb3BlcnRpZXMscj10LmZlYXR1cmVzW2FdLmdlb21ldHJ5O2JyZWFrO2Nh c2UiRmVhdHVyZSI6bD1sfHx0LnByb3BlcnRpZXMscj10Lmdlb21ldHJ5O2Jy ZWFrO2Nhc2UiUG9pbnQiOmNhc2UiTXVsdGlQb2ludCI6cmV0dXJuIG51bGw7 Y2FzZSJMaW5lU3RyaW5nIjpjYXNlIlBvbHlnb24iOmNhc2UiTXVsdGlMaW5l U3RyaW5nIjpjYXNlIk11bHRpUG9seWdvbiI6cj10O2JyZWFrO2RlZmF1bHQ6 dGhyb3cgbmV3IEVycm9yKCJnZW9qc29uIGlzIGludmFsaWQiKX1pZihudWxs PT09cilyZXR1cm4gbnVsbDt2YXIgYz1yLmNvb3JkaW5hdGVzO3N3aXRjaChy LnR5cGUpe2Nhc2UiUG9pbnQiOmNhc2UiTXVsdGlQb2ludCI6cmV0dXJuIG51 bGw7Y2FzZSJMaW5lU3RyaW5nIjpyZXR1cm4gczwwJiYocz1jLmxlbmd0aCtz LTEpLG4ubGluZVN0cmluZyhbY1tzXSxjW3MrMV1dLGwsZSk7Y2FzZSJQb2x5 Z29uIjpyZXR1cm4gbzwwJiYobz1jLmxlbmd0aCtvKSxzPDAmJihzPWNbb10u bGVuZ3RoK3MtMSksbi5saW5lU3RyaW5nKFtjW29dW3NdLGNbb11bcysxXV0s bCxlKTtjYXNlIk11bHRpTGluZVN0cmluZyI6cmV0dXJuIGk8MCYmKGk9Yy5s ZW5ndGgraSksczwwJiYocz1jW2ldLmxlbmd0aCtzLTEpLG4ubGluZVN0cmlu ZyhbY1tpXVtzXSxjW2ldW3MrMV1dLGwsZSk7Y2FzZSJNdWx0aVBvbHlnb24i OnJldHVybiBpPDAmJihpPWMubGVuZ3RoK2kpLG88MCYmKG89Y1tpXS5sZW5n dGgrbyksczwwJiYocz1jW2ldW29dLmxlbmd0aC1zLTEpLG4ubGluZVN0cmlu ZyhbY1tpXVtvXVtzXSxjW2ldW29dW3MrMV1dLGwsZSl9dGhyb3cgbmV3IEVy cm9yKCJnZW9qc29uIGlzIGludmFsaWQiKX0sci5maW5kUG9pbnQ9ZnVuY3Rp b24odCxlKXtpZihlPWV8fHt9LCFuLmlzT2JqZWN0KGUpKXRocm93IG5ldyBF cnJvcigib3B0aW9ucyBpcyBpbnZhbGlkIik7dmFyIHIsYT1lLmZlYXR1cmVJ bmRleHx8MCxpPWUubXVsdGlGZWF0dXJlSW5kZXh8fDAsbz1lLmdlb21ldHJ5 SW5kZXh8fDAscz1lLmNvb3JkSW5kZXh8fDAsbD1lLnByb3BlcnRpZXM7c3dp dGNoKHQudHlwZSl7Y2FzZSJGZWF0dXJlQ29sbGVjdGlvbiI6YTwwJiYoYT10 LmZlYXR1cmVzLmxlbmd0aCthKSxsPWx8fHQuZmVhdHVyZXNbYV0ucHJvcGVy dGllcyxyPXQuZmVhdHVyZXNbYV0uZ2VvbWV0cnk7YnJlYWs7Y2FzZSJGZWF0 dXJlIjpsPWx8fHQucHJvcGVydGllcyxyPXQuZ2VvbWV0cnk7YnJlYWs7Y2Fz ZSJQb2ludCI6Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4gbnVsbDtjYXNlIkxp bmVTdHJpbmciOmNhc2UiUG9seWdvbiI6Y2FzZSJNdWx0aUxpbmVTdHJpbmci OmNhc2UiTXVsdGlQb2x5Z29uIjpyPXQ7YnJlYWs7ZGVmYXVsdDp0aHJvdyBu ZXcgRXJyb3IoImdlb2pzb24gaXMgaW52YWxpZCIpfWlmKG51bGw9PT1yKXJl dHVybiBudWxsO3ZhciBjPXIuY29vcmRpbmF0ZXM7c3dpdGNoKHIudHlwZSl7 Y2FzZSJQb2ludCI6cmV0dXJuIG4ucG9pbnQoYyxsLGUpO2Nhc2UiTXVsdGlQ b2ludCI6cmV0dXJuIGk8MCYmKGk9Yy5sZW5ndGgraSksbi5wb2ludChjW2ld LGwsZSk7Y2FzZSJMaW5lU3RyaW5nIjpyZXR1cm4gczwwJiYocz1jLmxlbmd0 aCtzKSxuLnBvaW50KGNbc10sbCxlKTtjYXNlIlBvbHlnb24iOnJldHVybiBv PDAmJihvPWMubGVuZ3RoK28pLHM8MCYmKHM9Y1tvXS5sZW5ndGgrcyksbi5w b2ludChjW29dW3NdLGwsZSk7Y2FzZSJNdWx0aUxpbmVTdHJpbmciOnJldHVy biBpPDAmJihpPWMubGVuZ3RoK2kpLHM8MCYmKHM9Y1tpXS5sZW5ndGgrcyks bi5wb2ludChjW2ldW3NdLGwsZSk7Y2FzZSJNdWx0aVBvbHlnb24iOnJldHVy biBpPDAmJihpPWMubGVuZ3RoK2kpLG88MCYmKG89Y1tpXS5sZW5ndGgrbyks czwwJiYocz1jW2ldW29dLmxlbmd0aC1zKSxuLnBvaW50KGNbaV1bb11bc10s bCxlKX10aHJvdyBuZXcgRXJyb3IoImdlb2pzb24gaXMgaW52YWxpZCIpfX0s eyJAdHVyZi9oZWxwZXJzIjo2MH1dLDYyOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPSJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha01hcD90 KCJ3ZWFrLW1hcCIpOldlYWtNYXAsYT10KCJnbC1idWZmZXIiKSxpPXQoImds LXZhbyIpLG89bmV3IG47ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW8u Z2V0KHQpLHI9ZSYmKGUuX3RyaWFuZ2xlQnVmZmVyLmhhbmRsZXx8ZS5fdHJp YW5nbGVCdWZmZXIuYnVmZmVyKTtpZighcnx8IXQuaXNCdWZmZXIocikpe3Zh ciBuPWEodCxuZXcgRmxvYXQzMkFycmF5KFstMSwtMSwtMSw0LDQsLTFdKSk7 KGU9aSh0LFt7YnVmZmVyOm4sdHlwZTp0LkZMT0FULHNpemU6Mn1dKSkuX3Ry aWFuZ2xlQnVmZmVyPW4sby5zZXQodCxlKX1lLmJpbmQoKSx0LmRyYXdBcnJh eXModC5UUklBTkdMRVMsMCwzKSxlLnVuYmluZCgpfX0seyJnbC1idWZmZXIi OjI0NCwiZ2wtdmFvIjozMjksIndlYWstbWFwIjo1NTF9XSw2MzpbZnVuY3Rp b24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT0wLHI9MCxu PTAsYT0wO3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXt2YXIgaT0odD10LnNs aWNlKCkpWzBdLG89aS50b1VwcGVyQ2FzZSgpO2lmKGkhPW8pc3dpdGNoKHRb MF09byxpKXtjYXNlImEiOnRbNl0rPW4sdFs3XSs9YTticmVhaztjYXNlInYi OnRbMV0rPWE7YnJlYWs7Y2FzZSJoIjp0WzFdKz1uO2JyZWFrO2RlZmF1bHQ6 Zm9yKHZhciBzPTE7czx0Lmxlbmd0aDspdFtzKytdKz1uLHRbcysrXSs9YX1z d2l0Y2gobyl7Y2FzZSJaIjpuPWUsYT1yO2JyZWFrO2Nhc2UiSCI6bj10WzFd O2JyZWFrO2Nhc2UiViI6YT10WzFdO2JyZWFrO2Nhc2UiTSI6bj1lPXRbMV0s YT1yPXRbMl07YnJlYWs7ZGVmYXVsdDpuPXRbdC5sZW5ndGgtMl0sYT10W3Qu bGVuZ3RoLTFdfXJldHVybiB0fSl9fSx7fV0sNjQ6W2Z1bmN0aW9uKHQsZSxy KXt2YXIgbj10KCJwYWQtbGVmdCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cil7ZT0ibnVtYmVyIj09dHlwZW9mIGU/ZToxLHI9cnx8IjogIjt2YXIgYT10 LnNwbGl0KC9ccj9cbi8pLGk9U3RyaW5nKGEubGVuZ3RoK2UtMSkubGVuZ3Ro O3JldHVybiBhLm1hcChmdW5jdGlvbih0LGEpe3ZhciBvPWErZSxzPVN0cmlu ZyhvKS5sZW5ndGgsbD1uKG8saS1zKTtyZXR1cm4gbCtyK3R9KS5qb2luKCJc biIpfX0seyJwYWQtbGVmdCI6NDU5fV0sNjU6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVu Z3RoO2lmKDA9PT1lKXJldHVybltdO2lmKDE9PT1lKXJldHVyblswXTtmb3Io dmFyIHI9dFswXS5sZW5ndGgsbj1bdFswXV0saT1bMF0sbz0xO288ZTsrK28p aWYobi5wdXNoKHRbb10pLGEobixyKSl7aWYoaS5wdXNoKG8pLGkubGVuZ3Ro PT09cisxKXJldHVybiBpfWVsc2Ugbi5wb3AoKTtyZXR1cm4gaX07dmFyIG49 dCgicm9idXN0LW9yaWVudGF0aW9uIik7ZnVuY3Rpb24gYSh0LGUpe2Zvcih2 YXIgcj1uZXcgQXJyYXkoZSsxKSxhPTA7YTx0Lmxlbmd0aDsrK2EpclthXT10 W2FdO2ZvcihhPTA7YTw9dC5sZW5ndGg7KythKXtmb3IodmFyIGk9dC5sZW5n dGg7aTw9ZTsrK2kpe2Zvcih2YXIgbz1uZXcgQXJyYXkoZSkscz0wO3M8ZTsr K3Mpb1tzXT1NYXRoLnBvdyhpKzEtYSxzKTtyW2ldPW99aWYobi5hcHBseSh2 b2lkIDAscikpcmV0dXJuITB9cmV0dXJuITF9fSx7InJvYnVzdC1vcmllbnRh dGlvbiI6NTA5fV0sNjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oZSkuZmlsdGVyKGZ1 bmN0aW9uKHIpe2Zvcih2YXIgbj1uZXcgQXJyYXkoci5sZW5ndGgpLGk9MDtp PHIubGVuZ3RoOysraSluW2ldPWVbcltpXV07cmV0dXJuIGEobikqdDwxfSl9 O3ZhciBuPXQoImRlbGF1bmF5LXRyaWFuZ3VsYXRlIiksYT10KCJjaXJjdW1y YWRpdXMiKX0se2NpcmN1bXJhZGl1czoxMTYsImRlbGF1bmF5LXRyaWFuZ3Vs YXRlIjoxNjd9XSw2NzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3JldHVybiBhKG4odCxlKSl9O3ZhciBuPXQoImFscGhhLWNv bXBsZXgiKSxhPXQoInNpbXBsaWNpYWwtY29tcGxleC1ib3VuZGFyeSIpfSx7 ImFscGhhLWNvbXBsZXgiOjY2LCJzaW1wbGljaWFsLWNvbXBsZXgtYm91bmRh cnkiOjUxNn1dLDY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCF0fHxudWxsPT10Lmxlbmd0aCl0 aHJvdyBFcnJvcigiQXJndW1lbnQgc2hvdWxkIGJlIGFuIGFycmF5Iik7ZT1u dWxsPT1lPzE6TWF0aC5mbG9vcihlKTtmb3IodmFyIHI9QXJyYXkoMiplKSxu PTA7bjxlO24rKyl7Zm9yKHZhciBhPS0xLzAsaT0xLzAsbz1uLHM9dC5sZW5n dGg7bzxzO28rPWUpdFtvXT5hJiYoYT10W29dKSx0W29dPGkmJihpPXRbb10p O3Jbbl09aSxyW2Urbl09YX1yZXR1cm4gcn19LHt9XSw2OTpbZnVuY3Rpb24o dCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPSJudW1iZXIi PT10eXBlb2YgdCxuPSJudW1iZXIiPT10eXBlb2YgZTtyJiYhbj8oZT10LHQ9 MCk6cnx8bnx8KHQ9MCxlPTApO3ZhciBhPShlfD0wKS0odHw9MCk7aWYoYTww KXRocm93IG5ldyBFcnJvcigiYXJyYXkgbGVuZ3RoIG11c3QgYmUgcG9zaXRp dmUiKTtmb3IodmFyIGk9bmV3IEFycmF5KGEpLG89MCxzPXQ7bzxhO28rKyxz KyspaVtvXT1zO3JldHVybiBpfX0se31dLDcwOltmdW5jdGlvbih0LGUscil7 KGZ1bmN0aW9uKHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJvYmplY3QtYXNz aWduIik7ZnVuY3Rpb24gYSh0LGUpe2lmKHQ9PT1lKXJldHVybiAwO2Zvcih2 YXIgcj10Lmxlbmd0aCxuPWUubGVuZ3RoLGE9MCxpPU1hdGgubWluKHIsbik7 YTxpOysrYSlpZih0W2FdIT09ZVthXSl7cj10W2FdLG49ZVthXTticmVha31y ZXR1cm4gcjxuPy0xOm48cj8xOjB9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gci5C dWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiByLkJ1ZmZlci5pc0J1ZmZlcj9y LkJ1ZmZlci5pc0J1ZmZlcih0KTohKG51bGw9PXR8fCF0Ll9pc0J1ZmZlcil9 dmFyIG89dCgidXRpbC8iKSxzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv cGVydHksbD1BcnJheS5wcm90b3R5cGUuc2xpY2UsYz0iZm9vIj09PWZ1bmN0 aW9uKCl7fS5uYW1lO2Z1bmN0aW9uIHUodCl7cmV0dXJuIE9iamVjdC5wcm90 b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBoKHQpe3JldHVybiFp KHQpJiYoImZ1bmN0aW9uIj09dHlwZW9mIHIuQXJyYXlCdWZmZXImJigiZnVu Y3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVy LmlzVmlldyh0KTohIXQmJih0IGluc3RhbmNlb2YgRGF0YVZpZXd8fCEhKHQu YnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkpKX12 YXIgZj1lLmV4cG9ydHM9eSxwPS9ccypmdW5jdGlvblxzKyhbXlwoXHNdKilc cyovO2Z1bmN0aW9uIGQodCl7aWYoby5pc0Z1bmN0aW9uKHQpKXtpZihjKXJl dHVybiB0Lm5hbWU7dmFyIGU9dC50b1N0cmluZygpLm1hdGNoKHApO3JldHVy biBlJiZlWzFdfX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuInN0cmluZyI9PXR5 cGVvZiB0P3QubGVuZ3RoPGU/dDp0LnNsaWNlKDAsZSk6dH1mdW5jdGlvbiB2 KHQpe2lmKGN8fCFvLmlzRnVuY3Rpb24odCkpcmV0dXJuIG8uaW5zcGVjdCh0 KTt2YXIgZT1kKHQpO3JldHVybiJbRnVuY3Rpb24iKyhlPyI6ICIrZToiIikr Il0ifWZ1bmN0aW9uIG0odCxlLHIsbixhKXt0aHJvdyBuZXcgZi5Bc3NlcnRp b25FcnJvcih7bWVzc2FnZTpyLGFjdHVhbDp0LGV4cGVjdGVkOmUsb3BlcmF0 b3I6bixzdGFja1N0YXJ0RnVuY3Rpb246YX0pfWZ1bmN0aW9uIHkodCxlKXt0 fHxtKHQsITAsZSwiPT0iLGYub2spfWZ1bmN0aW9uIHgodCxlLHIsbil7aWYo dD09PWUpcmV0dXJuITA7aWYoaSh0KSYmaShlKSlyZXR1cm4gMD09PWEodCxl KTtpZihvLmlzRGF0ZSh0KSYmby5pc0RhdGUoZSkpcmV0dXJuIHQuZ2V0VGlt ZSgpPT09ZS5nZXRUaW1lKCk7aWYoby5pc1JlZ0V4cCh0KSYmby5pc1JlZ0V4 cChlKSlyZXR1cm4gdC5zb3VyY2U9PT1lLnNvdXJjZSYmdC5nbG9iYWw9PT1l Lmdsb2JhbCYmdC5tdWx0aWxpbmU9PT1lLm11bHRpbGluZSYmdC5sYXN0SW5k ZXg9PT1lLmxhc3RJbmRleCYmdC5pZ25vcmVDYXNlPT09ZS5pZ25vcmVDYXNl O2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fG51bGwhPT1lJiYi b2JqZWN0Ij09dHlwZW9mIGUpe2lmKGgodCkmJmgoZSkmJnUodCk9PT11KGUp JiYhKHQgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBG bG9hdDY0QXJyYXkpKXJldHVybiAwPT09YShuZXcgVWludDhBcnJheSh0LmJ1 ZmZlciksbmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpKTtpZihpKHQpIT09aShl KSlyZXR1cm4hMTt2YXIgcz0obj1ufHx7YWN0dWFsOltdLGV4cGVjdGVkOltd fSkuYWN0dWFsLmluZGV4T2YodCk7cmV0dXJuLTEhPT1zJiZzPT09bi5leHBl Y3RlZC5pbmRleE9mKGUpfHwobi5hY3R1YWwucHVzaCh0KSxuLmV4cGVjdGVk LnB1c2goZSksZnVuY3Rpb24odCxlLHIsbil7aWYobnVsbD09dHx8bnVsbD09 ZSlyZXR1cm4hMTtpZihvLmlzUHJpbWl0aXZlKHQpfHxvLmlzUHJpbWl0aXZl KGUpKXJldHVybiB0PT09ZTtpZihyJiZPYmplY3QuZ2V0UHJvdG90eXBlT2Yo dCkhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpcmV0dXJuITE7dmFyIGE9 Yih0KSxpPWIoZSk7aWYoYSYmIWl8fCFhJiZpKXJldHVybiExO2lmKGEpcmV0 dXJuIHQ9bC5jYWxsKHQpLGU9bC5jYWxsKGUpLHgodCxlLHIpO3ZhciBzLGMs dT1rKHQpLGg9ayhlKTtpZih1Lmxlbmd0aCE9PWgubGVuZ3RoKXJldHVybiEx O2Zvcih1LnNvcnQoKSxoLnNvcnQoKSxjPXUubGVuZ3RoLTE7Yz49MDtjLS0p aWYodVtjXSE9PWhbY10pcmV0dXJuITE7Zm9yKGM9dS5sZW5ndGgtMTtjPj0w O2MtLSlpZihzPXVbY10sIXgodFtzXSxlW3NdLHIsbikpcmV0dXJuITE7cmV0 dXJuITB9KHQsZSxyLG4pKX1yZXR1cm4gcj90PT09ZTp0PT1lfWZ1bmN0aW9u IGIodCl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PU9iamVjdC5wcm90 b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBfKHQsZSl7aWYoIXR8 fCFlKXJldHVybiExO2lmKCJbb2JqZWN0IFJlZ0V4cF0iPT1PYmplY3QucHJv dG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIGUudGVzdCh0KTt0cnl7 aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuITB9Y2F0Y2godCl7fXJldHVybiFF cnJvci5pc1Byb3RvdHlwZU9mKGUpJiYhMD09PWUuY2FsbCh7fSx0KX1mdW5j dGlvbiB3KHQsZSxyLG4pe3ZhciBhO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBl KXRocm93IG5ldyBUeXBlRXJyb3IoJyJibG9jayIgYXJndW1lbnQgbXVzdCBi ZSBhIGZ1bmN0aW9uJyk7InN0cmluZyI9PXR5cGVvZiByJiYobj1yLHI9bnVs bCksYT1mdW5jdGlvbih0KXt2YXIgZTt0cnl7dCgpfWNhdGNoKHQpe2U9dH1y ZXR1cm4gZX0oZSksbj0ociYmci5uYW1lPyIgKCIrci5uYW1lKyIpLiI6Ii4i KSsobj8iICIrbjoiLiIpLHQmJiFhJiZtKGEsciwiTWlzc2luZyBleHBlY3Rl ZCBleGNlcHRpb24iK24pO3ZhciBpPSJzdHJpbmciPT10eXBlb2YgbixzPSF0 JiZhJiYhcjtpZigoIXQmJm8uaXNFcnJvcihhKSYmaSYmXyhhLHIpfHxzKSYm bShhLHIsIkdvdCB1bndhbnRlZCBleGNlcHRpb24iK24pLHQmJmEmJnImJiFf KGEscil8fCF0JiZhKXRocm93IGF9Zi5Bc3NlcnRpb25FcnJvcj1mdW5jdGlv bih0KXt2YXIgZTt0aGlzLm5hbWU9IkFzc2VydGlvbkVycm9yIix0aGlzLmFj dHVhbD10LmFjdHVhbCx0aGlzLmV4cGVjdGVkPXQuZXhwZWN0ZWQsdGhpcy5v cGVyYXRvcj10Lm9wZXJhdG9yLHQubWVzc2FnZT8odGhpcy5tZXNzYWdlPXQu bWVzc2FnZSx0aGlzLmdlbmVyYXRlZE1lc3NhZ2U9ITEpOih0aGlzLm1lc3Nh Z2U9Zyh2KChlPXRoaXMpLmFjdHVhbCksMTI4KSsiICIrZS5vcGVyYXRvcisi ICIrZyh2KGUuZXhwZWN0ZWQpLDEyOCksdGhpcy5nZW5lcmF0ZWRNZXNzYWdl PSEwKTt2YXIgcj10LnN0YWNrU3RhcnRGdW5jdGlvbnx8bTtpZihFcnJvci5j YXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlz LHIpO2Vsc2V7dmFyIG49bmV3IEVycm9yO2lmKG4uc3RhY2spe3ZhciBhPW4u c3RhY2ssaT1kKHIpLG89YS5pbmRleE9mKCJcbiIraSk7aWYobz49MCl7dmFy IHM9YS5pbmRleE9mKCJcbiIsbysxKTthPWEuc3Vic3RyaW5nKHMrMSl9dGhp cy5zdGFjaz1hfX19LG8uaW5oZXJpdHMoZi5Bc3NlcnRpb25FcnJvcixFcnJv ciksZi5mYWlsPW0sZi5vaz15LGYuZXF1YWw9ZnVuY3Rpb24odCxlLHIpe3Qh PWUmJm0odCxlLHIsIj09IixmLmVxdWFsKX0sZi5ub3RFcXVhbD1mdW5jdGlv bih0LGUscil7dD09ZSYmbSh0LGUsciwiIT0iLGYubm90RXF1YWwpfSxmLmRl ZXBFcXVhbD1mdW5jdGlvbih0LGUscil7eCh0LGUsITEpfHxtKHQsZSxyLCJk ZWVwRXF1YWwiLGYuZGVlcEVxdWFsKX0sZi5kZWVwU3RyaWN0RXF1YWw9ZnVu Y3Rpb24odCxlLHIpe3godCxlLCEwKXx8bSh0LGUsciwiZGVlcFN0cmljdEVx dWFsIixmLmRlZXBTdHJpY3RFcXVhbCl9LGYubm90RGVlcEVxdWFsPWZ1bmN0 aW9uKHQsZSxyKXt4KHQsZSwhMSkmJm0odCxlLHIsIm5vdERlZXBFcXVhbCIs Zi5ub3REZWVwRXF1YWwpfSxmLm5vdERlZXBTdHJpY3RFcXVhbD1mdW5jdGlv biB0KGUscixuKXt4KGUsciwhMCkmJm0oZSxyLG4sIm5vdERlZXBTdHJpY3RF cXVhbCIsdCl9LGYuc3RyaWN0RXF1YWw9ZnVuY3Rpb24odCxlLHIpe3QhPT1l JiZtKHQsZSxyLCI9PT0iLGYuc3RyaWN0RXF1YWwpfSxmLm5vdFN0cmljdEVx dWFsPWZ1bmN0aW9uKHQsZSxyKXt0PT09ZSYmbSh0LGUsciwiIT09IixmLm5v dFN0cmljdEVxdWFsKX0sZi50aHJvd3M9ZnVuY3Rpb24odCxlLHIpe3coITAs dCxlLHIpfSxmLmRvZXNOb3RUaHJvdz1mdW5jdGlvbih0LGUscil7dyghMSx0 LGUscil9LGYuaWZFcnJvcj1mdW5jdGlvbih0KXtpZih0KXRocm93IHR9LGYu c3RyaWN0PW4oZnVuY3Rpb24gdChlLHIpe2V8fG0oZSwhMCxyLCI9PSIsdCl9 LGYse2VxdWFsOmYuc3RyaWN0RXF1YWwsZGVlcEVxdWFsOmYuZGVlcFN0cmlj dEVxdWFsLG5vdEVxdWFsOmYubm90U3RyaWN0RXF1YWwsbm90RGVlcEVxdWFs OmYubm90RGVlcFN0cmljdEVxdWFsfSksZi5zdHJpY3Quc3RyaWN0PWYuc3Ry aWN0O3ZhciBrPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXt2YXIgZT1bXTtm b3IodmFyIHIgaW4gdClzLmNhbGwodCxyKSYmZS5wdXNoKHIpO3JldHVybiBl fX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9i YWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIh PXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyJvYmplY3QtYXNzaWduIjo0 NTYsInV0aWwvIjo3M31dLDcxOltmdW5jdGlvbih0LGUscil7ImZ1bmN0aW9u Ij09dHlwZW9mIE9iamVjdC5jcmVhdGU/ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7dC5zdXBlcl89ZSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJv dG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdy aXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KX06ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7dC5zdXBlcl89ZTt2YXIgcj1mdW5jdGlvbigpe307ci5wcm90 b3R5cGU9ZS5wcm90b3R5cGUsdC5wcm90b3R5cGU9bmV3IHIsdC5wcm90b3R5 cGUuY29uc3RydWN0b3I9dH19LHt9XSw3MjpbZnVuY3Rpb24odCxlLHIpe2Uu ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVv ZiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5jb3B5JiYiZnVuY3Rpb24iPT10 eXBlb2YgdC5maWxsJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5yZWFkVUludDh9 fSx7fV0sNzM6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSxuKXt2YXIg YT0vJVtzZGolXS9nO3IuZm9ybWF0PWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXtm b3IodmFyIGU9W10scj0wO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspZS5wdXNo KHMoYXJndW1lbnRzW3JdKSk7cmV0dXJuIGUuam9pbigiICIpfXI9MTtmb3Io dmFyIG49YXJndW1lbnRzLGk9bi5sZW5ndGgsbz1TdHJpbmcodCkucmVwbGFj ZShhLGZ1bmN0aW9uKHQpe2lmKCIlJSI9PT10KXJldHVybiIlIjtpZihyPj1p KXJldHVybiB0O3N3aXRjaCh0KXtjYXNlIiVzIjpyZXR1cm4gU3RyaW5nKG5b cisrXSk7Y2FzZSIlZCI6cmV0dXJuIE51bWJlcihuW3IrK10pO2Nhc2UiJWoi OnRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkobltyKytdKX1jYXRjaCh0KXty ZXR1cm4iW0NpcmN1bGFyXSJ9ZGVmYXVsdDpyZXR1cm4gdH19KSxsPW5bcl07 cjxpO2w9blsrK3JdKWcobCl8fCFiKGwpP28rPSIgIitsOm8rPSIgIitzKGwp O3JldHVybiBvfSxyLmRlcHJlY2F0ZT1mdW5jdGlvbih0LGEpe2lmKHkobi5w cm9jZXNzKSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gci5kZXByZWNhdGUo dCxhKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2lmKCEwPT09ZS5ub0RlcHJl Y2F0aW9uKXJldHVybiB0O3ZhciBpPSExO3JldHVybiBmdW5jdGlvbigpe2lm KCFpKXtpZihlLnRocm93RGVwcmVjYXRpb24pdGhyb3cgbmV3IEVycm9yKGEp O2UudHJhY2VEZXByZWNhdGlvbj9jb25zb2xlLnRyYWNlKGEpOmNvbnNvbGUu ZXJyb3IoYSksaT0hMH1yZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9 fTt2YXIgaSxvPXt9O2Z1bmN0aW9uIHModCxlKXt2YXIgbj17c2VlbjpbXSxz dHlsaXplOmN9O3JldHVybiBhcmd1bWVudHMubGVuZ3RoPj0zJiYobi5kZXB0 aD1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg+PTQmJihuLmNvbG9y cz1hcmd1bWVudHNbM10pLGQoZSk/bi5zaG93SGlkZGVuPWU6ZSYmci5fZXh0 ZW5kKG4sZSkseShuLnNob3dIaWRkZW4pJiYobi5zaG93SGlkZGVuPSExKSx5 KG4uZGVwdGgpJiYobi5kZXB0aD0yKSx5KG4uY29sb3JzKSYmKG4uY29sb3Jz PSExKSx5KG4uY3VzdG9tSW5zcGVjdCkmJihuLmN1c3RvbUluc3BlY3Q9ITAp LG4uY29sb3JzJiYobi5zdHlsaXplPWwpLHUobix0LG4uZGVwdGgpfWZ1bmN0 aW9uIGwodCxlKXt2YXIgcj1zLnN0eWxlc1tlXTtyZXR1cm4gcj8iXHgxYlsi K3MuY29sb3JzW3JdWzBdKyJtIit0KyJceDFiWyIrcy5jb2xvcnNbcl1bMV0r Im0iOnR9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB0fWZ1bmN0aW9uIHUodCxl LG4pe2lmKHQuY3VzdG9tSW5zcGVjdCYmZSYmayhlLmluc3BlY3QpJiZlLmlu c3BlY3QhPT1yLmluc3BlY3QmJighZS5jb25zdHJ1Y3Rvcnx8ZS5jb25zdHJ1 Y3Rvci5wcm90b3R5cGUhPT1lKSl7dmFyIGE9ZS5pbnNwZWN0KG4sdCk7cmV0 dXJuIG0oYSl8fChhPXUodCxhLG4pKSxhfXZhciBpPWZ1bmN0aW9uKHQsZSl7 aWYoeShlKSlyZXR1cm4gdC5zdHlsaXplKCJ1bmRlZmluZWQiLCJ1bmRlZmlu ZWQiKTtpZihtKGUpKXt2YXIgcj0iJyIrSlNPTi5zdHJpbmdpZnkoZSkucmVw bGFjZSgvXiJ8IiQvZywiIikucmVwbGFjZSgvJy9nLCJcXCciKS5yZXBsYWNl KC9cXCIvZywnIicpKyInIjtyZXR1cm4gdC5zdHlsaXplKHIsInN0cmluZyIp fWlmKHYoZSkpcmV0dXJuIHQuc3R5bGl6ZSgiIitlLCJudW1iZXIiKTtpZihk KGUpKXJldHVybiB0LnN0eWxpemUoIiIrZSwiYm9vbGVhbiIpO2lmKGcoZSkp cmV0dXJuIHQuc3R5bGl6ZSgibnVsbCIsIm51bGwiKX0odCxlKTtpZihpKXJl dHVybiBpO3ZhciBvPU9iamVjdC5rZXlzKGUpLHM9ZnVuY3Rpb24odCl7dmFy IGU9e307cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0LHIpe2VbdF09ITB9 KSxlfShvKTtpZih0LnNob3dIaWRkZW4mJihvPU9iamVjdC5nZXRPd25Qcm9w ZXJ0eU5hbWVzKGUpKSx3KGUpJiYoby5pbmRleE9mKCJtZXNzYWdlIik+PTB8 fG8uaW5kZXhPZigiZGVzY3JpcHRpb24iKT49MCkpcmV0dXJuIGgoZSk7aWYo MD09PW8ubGVuZ3RoKXtpZihrKGUpKXt2YXIgbD1lLm5hbWU/IjogIitlLm5h bWU6IiI7cmV0dXJuIHQuc3R5bGl6ZSgiW0Z1bmN0aW9uIitsKyJdIiwic3Bl Y2lhbCIpfWlmKHgoZSkpcmV0dXJuIHQuc3R5bGl6ZShSZWdFeHAucHJvdG90 eXBlLnRvU3RyaW5nLmNhbGwoZSksInJlZ2V4cCIpO2lmKF8oZSkpcmV0dXJu IHQuc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLCJk YXRlIik7aWYodyhlKSlyZXR1cm4gaChlKX12YXIgYyxiPSIiLFQ9ITEsTT1b InsiLCJ9Il07KHAoZSkmJihUPSEwLE09WyJbIiwiXSJdKSxrKGUpKSYmKGI9 IiBbRnVuY3Rpb24iKyhlLm5hbWU/IjogIitlLm5hbWU6IiIpKyJdIik7cmV0 dXJuIHgoZSkmJihiPSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNh bGwoZSkpLF8oZSkmJihiPSIgIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmlu Zy5jYWxsKGUpKSx3KGUpJiYoYj0iICIraChlKSksMCE9PW8ubGVuZ3RofHxU JiYwIT1lLmxlbmd0aD9uPDA/eChlKT90LnN0eWxpemUoUmVnRXhwLnByb3Rv dHlwZS50b1N0cmluZy5jYWxsKGUpLCJyZWdleHAiKTp0LnN0eWxpemUoIltP YmplY3RdIiwic3BlY2lhbCIpOih0LnNlZW4ucHVzaChlKSxjPVQ/ZnVuY3Rp b24odCxlLHIsbixhKXtmb3IodmFyIGk9W10sbz0wLHM9ZS5sZW5ndGg7bzxz OysrbylTKGUsU3RyaW5nKG8pKT9pLnB1c2goZih0LGUscixuLFN0cmluZyhv KSwhMCkpOmkucHVzaCgiIik7cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihh KXthLm1hdGNoKC9eXGQrJC8pfHxpLnB1c2goZih0LGUscixuLGEsITApKX0p LGl9KHQsZSxuLHMsbyk6by5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIGYodCxl LG4scyxyLFQpfSksdC5zZWVuLnBvcCgpLGZ1bmN0aW9uKHQsZSxyKXtpZih0 LnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiAwLGUuaW5kZXhPZigiXG4i KT49MCYmMCx0K2UucmVwbGFjZSgvXHUwMDFiXFtcZFxkP20vZywiIikubGVu Z3RoKzF9LDApPjYwKXJldHVybiByWzBdKygiIj09PWU/IiI6ZSsiXG4gIikr IiAiK3Quam9pbigiLFxuICAiKSsiICIrclsxXTtyZXR1cm4gclswXStlKyIg Iit0LmpvaW4oIiwgIikrIiAiK3JbMV19KGMsYixNKSk6TVswXStiK01bMV19 ZnVuY3Rpb24gaCh0KXtyZXR1cm4iWyIrRXJyb3IucHJvdG90eXBlLnRvU3Ry aW5nLmNhbGwodCkrIl0ifWZ1bmN0aW9uIGYodCxlLHIsbixhLGkpe3ZhciBv LHMsbDtpZigobD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUs YSl8fHt2YWx1ZTplW2FdfSkuZ2V0P3M9bC5zZXQ/dC5zdHlsaXplKCJbR2V0 dGVyL1NldHRlcl0iLCJzcGVjaWFsIik6dC5zdHlsaXplKCJbR2V0dGVyXSIs InNwZWNpYWwiKTpsLnNldCYmKHM9dC5zdHlsaXplKCJbU2V0dGVyXSIsInNw ZWNpYWwiKSksUyhuLGEpfHwobz0iWyIrYSsiXSIpLHN8fCh0LnNlZW4uaW5k ZXhPZihsLnZhbHVlKTwwPyhzPWcocik/dSh0LGwudmFsdWUsbnVsbCk6dSh0 LGwudmFsdWUsci0xKSkuaW5kZXhPZigiXG4iKT4tMSYmKHM9aT9zLnNwbGl0 KCJcbiIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iICAiK3R9KS5qb2luKCJc biIpLnN1YnN0cigyKToiXG4iK3Muc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9u KHQpe3JldHVybiIgICAiK3R9KS5qb2luKCJcbiIpKTpzPXQuc3R5bGl6ZSgi W0NpcmN1bGFyXSIsInNwZWNpYWwiKSkseShvKSl7aWYoaSYmYS5tYXRjaCgv XlxkKyQvKSlyZXR1cm4gczsobz1KU09OLnN0cmluZ2lmeSgiIithKSkubWF0 Y2goL14iKFthLXpBLVpfXVthLXpBLVpfMC05XSopIiQvKT8obz1vLnN1YnN0 cigxLG8ubGVuZ3RoLTIpLG89dC5zdHlsaXplKG8sIm5hbWUiKSk6KG89by5y ZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykucmVwbGFj ZSgvKF4ifCIkKS9nLCInIiksbz10LnN0eWxpemUobywic3RyaW5nIikpfXJl dHVybiBvKyI6ICIrc31mdW5jdGlvbiBwKHQpe3JldHVybiBBcnJheS5pc0Fy cmF5KHQpfWZ1bmN0aW9uIGQodCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2Yg dH1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsPT09dH1mdW5jdGlvbiB2KHQp e3JldHVybiJudW1iZXIiPT10eXBlb2YgdH1mdW5jdGlvbiBtKHQpe3JldHVy biJzdHJpbmciPT10eXBlb2YgdH1mdW5jdGlvbiB5KHQpe3JldHVybiB2b2lk IDA9PT10fWZ1bmN0aW9uIHgodCl7cmV0dXJuIGIodCkmJiJbb2JqZWN0IFJl Z0V4cF0iPT09VCh0KX1mdW5jdGlvbiBiKHQpe3JldHVybiJvYmplY3QiPT10 eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gYih0KSYm IltvYmplY3QgRGF0ZV0iPT09VCh0KX1mdW5jdGlvbiB3KHQpe3JldHVybiBi KHQpJiYoIltvYmplY3QgRXJyb3JdIj09PVQodCl8fHQgaW5zdGFuY2VvZiBF cnJvcil9ZnVuY3Rpb24gayh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Yg dH1mdW5jdGlvbiBUKHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3Ry aW5nLmNhbGwodCl9ZnVuY3Rpb24gTSh0KXtyZXR1cm4gdDwxMD8iMCIrdC50 b1N0cmluZygxMCk6dC50b1N0cmluZygxMCl9ci5kZWJ1Z2xvZz1mdW5jdGlv bih0KXtpZih5KGkpJiYoaT1lLmVudi5OT0RFX0RFQlVHfHwiIiksdD10LnRv VXBwZXJDYXNlKCksIW9bdF0paWYobmV3IFJlZ0V4cCgiXFxiIit0KyJcXGIi LCJpIikudGVzdChpKSl7dmFyIG49ZS5waWQ7b1t0XT1mdW5jdGlvbigpe3Zh ciBlPXIuZm9ybWF0LmFwcGx5KHIsYXJndW1lbnRzKTtjb25zb2xlLmVycm9y KCIlcyAlZDogJXMiLHQsbixlKX19ZWxzZSBvW3RdPWZ1bmN0aW9uKCl7fTty ZXR1cm4gb1t0XX0sci5pbnNwZWN0PXMscy5jb2xvcnM9e2JvbGQ6WzEsMjJd LGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxpbnZlcnNlOls3LDI3 XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpbMzAsMzldLGJs dWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRh OlszNSwzOV0scmVkOlszMSwzOV0seWVsbG93OlszMywzOV19LHMuc3R5bGVz PXtzcGVjaWFsOiJjeWFuIixudW1iZXI6InllbGxvdyIsYm9vbGVhbjoieWVs bG93Iix1bmRlZmluZWQ6ImdyZXkiLG51bGw6ImJvbGQiLHN0cmluZzoiZ3Jl ZW4iLGRhdGU6Im1hZ2VudGEiLHJlZ2V4cDoicmVkIn0sci5pc0FycmF5PXAs ci5pc0Jvb2xlYW49ZCxyLmlzTnVsbD1nLHIuaXNOdWxsT3JVbmRlZmluZWQ9 ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR9LHIuaXNOdW1iZXI9dixyLmlz U3RyaW5nPW0sci5pc1N5bWJvbD1mdW5jdGlvbih0KXtyZXR1cm4ic3ltYm9s Ij09dHlwZW9mIHR9LHIuaXNVbmRlZmluZWQ9eSxyLmlzUmVnRXhwPXgsci5p c09iamVjdD1iLHIuaXNEYXRlPV8sci5pc0Vycm9yPXcsci5pc0Z1bmN0aW9u PWssci5pc1ByaW1pdGl2ZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXR8 fCJib29sZWFuIj09dHlwZW9mIHR8fCJudW1iZXIiPT10eXBlb2YgdHx8InN0 cmluZyI9PXR5cGVvZiB0fHwic3ltYm9sIj09dHlwZW9mIHR8fCJ1bmRlZmlu ZWQiPT10eXBlb2YgdH0sci5pc0J1ZmZlcj10KCIuL3N1cHBvcnQvaXNCdWZm ZXIiKTt2YXIgQT1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1 biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdO2Z1bmN0 aW9uIFModCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w ZXJ0eS5jYWxsKHQsZSl9ci5sb2c9ZnVuY3Rpb24oKXt2YXIgdCxlO2NvbnNv bGUubG9nKCIlcyAtICVzIiwodD1uZXcgRGF0ZSxlPVtNKHQuZ2V0SG91cnMo KSksTSh0LmdldE1pbnV0ZXMoKSksTSh0LmdldFNlY29uZHMoKSldLmpvaW4o IjoiKSxbdC5nZXREYXRlKCksQVt0LmdldE1vbnRoKCldLGVdLmpvaW4oIiAi KSksci5mb3JtYXQuYXBwbHkocixhcmd1bWVudHMpKX0sci5pbmhlcml0cz10 KCJpbmhlcml0cyIpLHIuX2V4dGVuZD1mdW5jdGlvbih0LGUpe2lmKCFlfHwh YihlKSlyZXR1cm4gdDtmb3IodmFyIHI9T2JqZWN0LmtleXMoZSksbj1yLmxl bmd0aDtuLS07KXRbcltuXV09ZVtyW25dXTtyZXR1cm4gdH19KS5jYWxsKHRo aXMsdCgiX3Byb2Nlc3MiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9n bG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5l ZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL3N1cHBvcnQvaXNC dWZmZXIiOjcyLF9wcm9jZXNzOjQ4NCxpbmhlcml0czo3MX1dLDc0OltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhdG9i KHQpfX0se31dLDc1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lLmxlbmd0aCxpPW5l dyBBcnJheShyKzEpLG89MDtvPHI7KytvKXtmb3IodmFyIHM9bmV3IEFycmF5 KHIrMSksbD0wO2w8PXI7KytsKXNbbF09dFtsXVtvXTtpW29dPXN9aVtyXT1u ZXcgQXJyYXkocisxKTtmb3IodmFyIG89MDtvPD1yOysrbylpW3JdW29dPTE7 Zm9yKHZhciBjPW5ldyBBcnJheShyKzEpLG89MDtvPHI7KytvKWNbb109ZVtv XTtjW3JdPTE7dmFyIHU9bihpLGMpLGg9YSh1W3IrMV0pOzA9PT1oJiYoaD0x KTtmb3IodmFyIGY9bmV3IEFycmF5KHIrMSksbz0wO288PXI7KytvKWZbb109 YSh1W29dKS9oO3JldHVybiBmfTt2YXIgbj10KCJyb2J1c3QtbGluZWFyLXNv bHZlIik7ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0 aDsrK3IpZSs9dFtyXTtyZXR1cm4gZX19LHsicm9idXN0LWxpbmVhci1zb2x2 ZSI6NTA4fV0sNzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5i eXRlTGVuZ3RoPWZ1bmN0aW9uKHQpe3ZhciBlPWModCkscj1lWzBdLG49ZVsx XTtyZXR1cm4gMyoocituKS80LW59LHIudG9CeXRlQXJyYXk9ZnVuY3Rpb24o dCl7dmFyIGUscixuPWModCksbz1uWzBdLHM9blsxXSxsPW5ldyBpKGZ1bmN0 aW9uKHQsZSxyKXtyZXR1cm4gMyooZStyKS80LXJ9KDAsbyxzKSksdT0wLGg9 cz4wP28tNDpvO2ZvcihyPTA7cjxoO3IrPTQpZT1hW3QuY2hhckNvZGVBdChy KV08PDE4fGFbdC5jaGFyQ29kZUF0KHIrMSldPDwxMnxhW3QuY2hhckNvZGVB dChyKzIpXTw8NnxhW3QuY2hhckNvZGVBdChyKzMpXSxsW3UrK109ZT4+MTYm MjU1LGxbdSsrXT1lPj44JjI1NSxsW3UrK109MjU1JmU7Mj09PXMmJihlPWFb dC5jaGFyQ29kZUF0KHIpXTw8MnxhW3QuY2hhckNvZGVBdChyKzEpXT4+NCxs W3UrK109MjU1JmUpOzE9PT1zJiYoZT1hW3QuY2hhckNvZGVBdChyKV08PDEw fGFbdC5jaGFyQ29kZUF0KHIrMSldPDw0fGFbdC5jaGFyQ29kZUF0KHIrMild Pj4yLGxbdSsrXT1lPj44JjI1NSxsW3UrK109MjU1JmUpO3JldHVybiBsfSxy LmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9dC5sZW5n dGgsYT1yJTMsaT1bXSxvPTAscz1yLWE7bzxzO28rPTE2MzgzKWkucHVzaCh1 KHQsbyxvKzE2MzgzPnM/czpvKzE2MzgzKSk7MT09PWE/KGU9dFtyLTFdLGku cHVzaChuW2U+PjJdK25bZTw8NCY2M10rIj09IikpOjI9PT1hJiYoZT0odFty LTJdPDw4KSt0W3ItMV0saS5wdXNoKG5bZT4+MTBdK25bZT4+NCY2M10rbltl PDwyJjYzXSsiPSIpKTtyZXR1cm4gaS5qb2luKCIiKX07Zm9yKHZhciBuPVtd LGE9W10saT0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhB cnJheTpBcnJheSxvPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2Rl ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixzPTAsbD1vLmxl bmd0aDtzPGw7KytzKW5bc109b1tzXSxhW28uY2hhckNvZGVBdChzKV09cztm dW5jdGlvbiBjKHQpe3ZhciBlPXQubGVuZ3RoO2lmKGUlND4wKXRocm93IG5l dyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVs dGlwbGUgb2YgNCIpO3ZhciByPXQuaW5kZXhPZigiPSIpO3JldHVybi0xPT09 ciYmKHI9ZSksW3Iscj09PWU/MDo0LXIlNF19ZnVuY3Rpb24gdSh0LGUscil7 Zm9yKHZhciBhLGksbz1bXSxzPWU7czxyO3MrPTMpYT0odFtzXTw8MTYmMTY3 MTE2ODApKyh0W3MrMV08PDgmNjUyODApKygyNTUmdFtzKzJdKSxvLnB1c2go blsoaT1hKT4+MTgmNjNdK25baT4+MTImNjNdK25baT4+NiY2M10rbls2MyZp XSk7cmV0dXJuIG8uam9pbigiIil9YVsiLSIuY2hhckNvZGVBdCgwKV09NjIs YVsiXyIuY2hhckNvZGVBdCgwKV09NjN9LHt9XSw3NzpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9yYXRpb25hbGl6ZSIp O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuKHRbMF0ubXVsKGVb MV0pLmFkZChlWzBdLm11bCh0WzFdKSksdFsxXS5tdWwoZVsxXSkpfX0seyIu L2xpYi9yYXRpb25hbGl6ZSI6ODd9XSw3ODpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFsw XS5tdWwoZVsxXSkuY21wKGVbMF0ubXVsKHRbMV0pKX19LHt9XSw3OTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9yYXRp b25hbGl6ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuKHRb MF0ubXVsKGVbMV0pLHRbMV0ubXVsKGVbMF0pKX19LHsiLi9saWIvcmF0aW9u YWxpemUiOjg3fV0sODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi9pcy1yYXQiKSxhPXQoIi4vbGliL2lzLWJuIiksaT10KCIu L2xpYi9udW0tdG8tYm4iKSxvPXQoIi4vbGliL3N0ci10by1ibiIpLHM9dCgi Li9saWIvcmF0aW9uYWxpemUiKSxsPXQoIi4vZGl2Iik7ZS5leHBvcnRzPWZ1 bmN0aW9uIHQoZSxyKXtpZihuKGUpKXJldHVybiByP2woZSx0KHIpKTpbZVsw XS5jbG9uZSgpLGVbMV0uY2xvbmUoKV07dmFyIGM9MDt2YXIgdSxoO2lmKGEo ZSkpdT1lLmNsb25lKCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpdT1v KGUpO2Vsc2V7aWYoMD09PWUpcmV0dXJuW2koMCksaSgxKV07aWYoZT09PU1h dGguZmxvb3IoZSkpdT1pKGUpO2Vsc2V7Zm9yKDtlIT09TWF0aC5mbG9vcihl KTspZSo9TWF0aC5wb3coMiwyNTYpLGMtPTI1Njt1PWkoZSl9fWlmKG4ocikp dS5tdWwoclsxXSksaD1yWzBdLmNsb25lKCk7ZWxzZSBpZihhKHIpKWg9ci5j bG9uZSgpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiByKWg9byhyKTtlbHNl IGlmKHIpaWYocj09PU1hdGguZmxvb3IocikpaD1pKHIpO2Vsc2V7Zm9yKDty IT09TWF0aC5mbG9vcihyKTspcio9TWF0aC5wb3coMiwyNTYpLGMrPTI1Njto PWkocil9ZWxzZSBoPWkoMSk7Yz4wP3U9dS51c2hsbihjKTpjPDAmJihoPWgu dXNobG4oLWMpKTtyZXR1cm4gcyh1LGgpfX0seyIuL2RpdiI6NzksIi4vaXMt cmF0Ijo4MSwiLi9saWIvaXMtYm4iOjg1LCIuL2xpYi9udW0tdG8tYm4iOjg2 LCIuL2xpYi9yYXRpb25hbGl6ZSI6ODcsIi4vbGliL3N0ci10by1ibiI6ODh9 XSw4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu L2xpYi9pcy1ibiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gQXJy YXkuaXNBcnJheSh0KSYmMj09PXQubGVuZ3RoJiZuKHRbMF0pJiZuKHRbMV0p fX0seyIuL2xpYi9pcy1ibiI6ODV9XSw4MjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJibi5qcyIpO2UuZXhwb3J0cz1mdW5jdGlv bih0KXtyZXR1cm4gdC5jbXAobmV3IG4oMCkpfX0seyJibi5qcyI6OTZ9XSw4 MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2Ju LXNpZ24iKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgs cj10LndvcmRzLGE9MDtpZigxPT09ZSlhPXJbMF07ZWxzZSBpZigyPT09ZSlh PXJbMF0rNjcxMDg4NjQqclsxXTtlbHNlIGZvcih2YXIgaT0wO2k8ZTtpKysp e3ZhciBvPXJbaV07YSs9bypNYXRoLnBvdyg2NzEwODg2NCxpKX1yZXR1cm4g bih0KSphfX0seyIuL2JuLXNpZ24iOjgyfV0sODQ6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiZG91YmxlLWJpdHMiKSxhPXQoImJp dC10d2lkZGxlIikuY291bnRUcmFpbGluZ1plcm9zO2UuZXhwb3J0cz1mdW5j dGlvbih0KXt2YXIgZT1hKG4ubG8odCkpO2lmKGU8MzIpcmV0dXJuIGU7dmFy IHI9YShuLmhpKHQpKTtpZihyPjIwKXJldHVybiA1MjtyZXR1cm4gciszMn19 LHsiYml0LXR3aWRkbGUiOjk0LCJkb3VibGUtYml0cyI6MTY5fV0sODU6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dCgiYm4uanMiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdCYm Qm9vbGVhbih0LndvcmRzKX19LHsiYm4uanMiOjk2fV0sODY6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYm4uanMiKSxhPXQoImRv dWJsZS1iaXRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWEuZXhw b25lbnQodCk7cmV0dXJuIGU8NTI/bmV3IG4odCk6bmV3IG4odCpNYXRoLnBv dygyLDUyLWUpKS51c2hsbihlLTUyKX19LHsiYm4uanMiOjk2LCJkb3VibGUt Yml0cyI6MTY5fV0sODc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi9udW0tdG8tYm4iKSxhPXQoIi4vYm4tc2lnbiIpO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWEodCksaT1hKGUpO2lmKDA9PT1y KXJldHVybltuKDApLG4oMSldO2lmKDA9PT1pKXJldHVybltuKDApLG4oMCld O2k8MCYmKHQ9dC5uZWcoKSxlPWUubmVnKCkpO3ZhciBvPXQuZ2NkKGUpO2lm KG8uY21wbigxKSlyZXR1cm5bdC5kaXYobyksZS5kaXYobyldO3JldHVyblt0 LGVdfX0seyIuL2JuLXNpZ24iOjgyLCIuL251bS10by1ibiI6ODZ9XSw4ODpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJibi5qcyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG4odCl9fSx7ImJu LmpzIjo5Nn1dLDg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4vbGliL3JhdGlvbmFsaXplIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIG4odFswXS5tdWwoZVswXSksdFsxXS5tdWwoZVsxXSkp fX0seyIuL2xpYi9yYXRpb25hbGl6ZSI6ODd9XSw5MDpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9ibi1zaWduIik7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuKHRbMF0pKm4odFsxXSl9fSx7 Ii4vbGliL2JuLXNpZ24iOjgyfV0sOTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi9saWIvcmF0aW9uYWxpemUiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0WzBdLm11bChlWzFdKS5zdWIo dFsxXS5tdWwoZVswXSkpLHRbMV0ubXVsKGVbMV0pKX19LHsiLi9saWIvcmF0 aW9uYWxpemUiOjg3fV0sOTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi9saWIvYm4tdG8tbnVtIiksYT10KCIuL2xpYi9jdHoi KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxyPXRbMV07aWYo MD09PWUuY21wbigwKSlyZXR1cm4gMDt2YXIgaT1lLmFicygpLmRpdm1vZChy LmFicygpKSxvPWkuZGl2LHM9bihvKSxsPWkubW9kLGM9ZS5uZWdhdGl2ZSE9 PXIubmVnYXRpdmU/LTE6MTtpZigwPT09bC5jbXBuKDApKXJldHVybiBjKnM7 aWYocyl7dmFyIHU9YShzKSs0LGg9bihsLnVzaGxuKHUpLmRpdlJvdW5kKHIp KTtyZXR1cm4gYyoocytoKk1hdGgucG93KDIsLXUpKX12YXIgZj1yLmJpdExl bmd0aCgpLWwuYml0TGVuZ3RoKCkrNTMsaD1uKGwudXNobG4oZikuZGl2Um91 bmQocikpO3JldHVybiBmPDEwMjM/YypoKk1hdGgucG93KDIsLWYpOihoKj1N YXRoLnBvdygyLC0xMDIzKSxjKmgqTWF0aC5wb3coMiwxMDIzLWYpKX19LHsi Li9saWIvYm4tdG8tbnVtIjo4MywiLi9saWIvY3R6Ijo4NH1dLDkzOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlLHIsbixh LGkpe3ZhciBvPVsiZnVuY3Rpb24gIix0LCIoYSxsLGgsIixuLmpvaW4oIiwi KSwiKXsiLGk/IiI6InZhciBpPSIscj8ibC0xIjoiaCsxIiwiO3doaWxlKGw8 PWgpe3ZhciBtPShsK2gpPj4+MSx4PWEiLGE/Ii5nZXQobSkiOiJbbV0iXTty ZXR1cm4gaT9lLmluZGV4T2YoImMiKTwwP28ucHVzaCgiO2lmKHg9PT15KXty ZXR1cm4gbX1lbHNlIGlmKHg8PXkpeyIpOm8ucHVzaCgiO3ZhciBwPWMoeCx5 KTtpZihwPT09MCl7cmV0dXJuIG19ZWxzZSBpZihwPD0wKXsiKTpvLnB1c2go IjtpZigiLGUsIil7aT1tOyIpLHI/by5wdXNoKCJsPW0rMX1lbHNle2g9bS0x fSIpOm8ucHVzaCgiaD1tLTF9ZWxzZXtsPW0rMX0iKSxvLnB1c2goIn0iKSxp P28ucHVzaCgicmV0dXJuIC0xfTsiKTpvLnB1c2goInJldHVybiBpfTsiKSxv LmpvaW4oIiIpfWZ1bmN0aW9uIGEodCxlLHIsYSl7cmV0dXJuIG5ldyBGdW5j dGlvbihbbigiQSIsIngiK3QrInkiLGUsWyJ5Il0sITEsYSksbigiQiIsIngi K3QrInkiLGUsWyJ5Il0sITAsYSksbigiUCIsImMoeCx5KSIrdCsiMCIsZSxb InkiLCJjIl0sITEsYSksbigiUSIsImMoeCx5KSIrdCsiMCIsZSxbInkiLCJj Il0sITAsYSksImZ1bmN0aW9uIGRpc3BhdGNoQnNlYXJjaCIsciwiKGEseSxj LGwsaCl7aWYoYS5zaGFwZSl7aWYodHlwZW9mKGMpPT09J2Z1bmN0aW9uJyl7 cmV0dXJuIFEoYSwobD09PXVuZGVmaW5lZCk/MDpsfDAsKGg9PT11bmRlZmlu ZWQpP2Euc2hhcGVbMF0tMTpofDAseSxjKX1lbHNle3JldHVybiBCKGEsKGM9 PT11bmRlZmluZWQpPzA6Y3wwLChsPT09dW5kZWZpbmVkKT9hLnNoYXBlWzBd LTE6bHwwLHkpfX1lbHNle2lmKHR5cGVvZihjKT09PSdmdW5jdGlvbicpe3Jl dHVybiBQKGEsKGw9PT11bmRlZmluZWQpPzA6bHwwLChoPT09dW5kZWZpbmVk KT9hLmxlbmd0aC0xOmh8MCx5LGMpfWVsc2V7cmV0dXJuIEEoYSwoYz09PXVu ZGVmaW5lZCk/MDpjfDAsKGw9PT11bmRlZmluZWQpP2EubGVuZ3RoLTE6bHww LHkpfX19cmV0dXJuIGRpc3BhdGNoQnNlYXJjaCIscl0uam9pbigiIikpKCl9 ZS5leHBvcnRzPXtnZTphKCI+PSIsITEsIkdFIiksZ3Q6YSgiPiIsITEsIkdU IiksbHQ6YSgiPCIsITAsIkxUIiksbGU6YSgiPD0iLCEwLCJMRSIpLGVxOmEo Ii0iLCEwLCJFUSIsITApfX0se31dLDk0OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9MzI7cmV0dXJuKHQmPS10 KSYmZS0tLDY1NTM1JnQmJihlLT0xNiksMTY3MTE5MzUmdCYmKGUtPTgpLDI1 MjY0NTEzNSZ0JiYoZS09NCksODU4OTkzNDU5JnQmJihlLT0yKSwxNDMxNjU1 NzY1JnQmJihlLT0xKSxlfXIuSU5UX0JJVFM9MzIsci5JTlRfTUFYPTIxNDc0 ODM2NDcsci5JTlRfTUlOPS0xPDwzMSxyLnNpZ249ZnVuY3Rpb24odCl7cmV0 dXJuKHQ+MCktKHQ8MCl9LHIuYWJzPWZ1bmN0aW9uKHQpe3ZhciBlPXQ+PjMx O3JldHVybih0XmUpLWV9LHIubWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVe KHReZSkmLSh0PGUpfSxyLm1heD1mdW5jdGlvbih0LGUpe3JldHVybiB0Xih0 XmUpJi0odDxlKX0sci5pc1BvdzI9ZnVuY3Rpb24odCl7cmV0dXJuISh0JnQt MXx8IXQpfSxyLmxvZzI9ZnVuY3Rpb24odCl7dmFyIGUscjtyZXR1cm4gZT0o dD42NTUzNSk8PDQsZXw9cj0oKHQ+Pj49ZSk+MjU1KTw8MyxlfD1yPSgodD4+ Pj1yKT4xNSk8PDIsKGV8PXI9KCh0Pj4+PXIpPjMpPDwxKXwodD4+Pj1yKT4+ MX0sci5sb2cxMD1mdW5jdGlvbih0KXtyZXR1cm4gdD49MWU5Pzk6dD49MWU4 Pzg6dD49MWU3Pzc6dD49MWU2PzY6dD49MWU1PzU6dD49MWU0PzQ6dD49MWUz PzM6dD49MTAwPzI6dD49MTA/MTowfSxyLnBvcENvdW50PWZ1bmN0aW9uKHQp e3JldHVybiAxNjg0MzAwOSooKHQ9KDg1ODk5MzQ1OSYodC09dD4+PjEmMTQz MTY1NTc2NSkpKyh0Pj4+MiY4NTg5OTM0NTkpKSsodD4+PjQpJjI1MjY0NTEz NSk+Pj4yNH0sci5jb3VudFRyYWlsaW5nWmVyb3M9bixyLm5leHRQb3cyPWZ1 bmN0aW9uKHQpe3JldHVybiB0Kz0wPT09dCwtLXQsdHw9dD4+PjEsdHw9dD4+ PjIsdHw9dD4+PjQsdHw9dD4+PjgsKHR8PXQ+Pj4xNikrMX0sci5wcmV2UG93 Mj1mdW5jdGlvbih0KXtyZXR1cm4gdHw9dD4+PjEsdHw9dD4+PjIsdHw9dD4+ PjQsdHw9dD4+PjgsKHR8PXQ+Pj4xNiktKHQ+Pj4xKX0sci5wYXJpdHk9ZnVu Y3Rpb24odCl7cmV0dXJuIHRePXQ+Pj4xNix0Xj10Pj4+OCx0Xj10Pj4+NCwy NzAzMD4+Pih0Jj0xNSkmMX07dmFyIGE9bmV3IEFycmF5KDI1Nik7IWZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT0wO2U8MjU2OysrZSl7dmFyIHI9ZSxuPWUsYT03 O2ZvcihyPj4+PTE7cjtyPj4+PTEpbjw8PTEsbnw9MSZyLC0tYTt0W2VdPW48 PGEmMjU1fX0oYSksci5yZXZlcnNlPWZ1bmN0aW9uKHQpe3JldHVybiBhWzI1 NSZ0XTw8MjR8YVt0Pj4+OCYyNTVdPDwxNnxhW3Q+Pj4xNiYyNTVdPDw4fGFb dD4+PjI0JjI1NV19LHIuaW50ZXJsZWF2ZTI9ZnVuY3Rpb24odCxlKXtyZXR1 cm4odD0xNDMxNjU1NzY1JigodD04NTg5OTM0NTkmKCh0PTI1MjY0NTEzNSYo KHQ9MTY3MTE5MzUmKCh0Jj02NTUzNSl8dDw8OCkpfHQ8PDQpKXx0PDwyKSl8 dDw8MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5MzQ1OSYoKGU9MjUyNjQ1 MTM1JigoZT0xNjcxMTkzNSYoKGUmPTY1NTM1KXxlPDw4KSl8ZTw8NCkpfGU8 PDIpKXxlPDwxKSk8PDF9LHIuZGVpbnRlcmxlYXZlMj1mdW5jdGlvbih0LGUp e3JldHVybih0PTY1NTM1JigodD0xNjcxMTkzNSYoKHQ9MjUyNjQ1MTM1Jigo dD04NTg5OTM0NTkmKCh0PXQ+Pj5lJjE0MzE2NTU3NjUpfHQ+Pj4xKSl8dD4+ PjIpKXx0Pj4+NCkpfHQ+Pj4xNikpPDwxNj4+MTZ9LHIuaW50ZXJsZWF2ZTM9 ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PTEyMjcxMzM1MTMmKCh0PTMyNzIz NTYwMzUmKCh0PTI1MTcxOTY5NSYoKHQ9NDI3ODE5MDMzNSYoKHQmPTEwMjMp fHQ8PDE2KSl8dDw8OCkpfHQ8PDQpKXx0PDwyKSwodHw9KGU9MTIyNzEzMzUx MyYoKGU9MzI3MjM1NjAzNSYoKGU9MjUxNzE5Njk1JigoZT00Mjc4MTkwMzM1 JigoZSY9MTAyMyl8ZTw8MTYpKXxlPDw4KSl8ZTw8NCkpfGU8PDIpKTw8MSl8 KHI9MTIyNzEzMzUxMyYoKHI9MzI3MjM1NjAzNSYoKHI9MjUxNzE5Njk1Jigo cj00Mjc4MTkwMzM1JigociY9MTAyMyl8cjw8MTYpKXxyPDw4KSl8cjw8NCkp fHI8PDIpKTw8Mn0sci5kZWludGVybGVhdmUzPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuKHQ9MTAyMyYoKHQ9NDI3ODE5MDMzNSYoKHQ9MjUxNzE5Njk1JigodD0z MjcyMzU2MDM1JigodD10Pj4+ZSYxMjI3MTMzNTEzKXx0Pj4+MikpfHQ+Pj40 KSl8dD4+PjgpKXx0Pj4+MTYpKTw8MjI+PjIyfSxyLm5leHRDb21iaW5hdGlv bj1mdW5jdGlvbih0KXt2YXIgZT10fHQtMTtyZXR1cm4gZSsxfCh+ZSYtfmUp LTE+Pj5uKHQpKzF9fSx7fV0sOTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiY2xhbXAiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXtlfHwoZT17fSk7dmFyIHIsbyxzLGwsYyx1LGgsZixwLGQsZyx2PW51bGw9 PWUuY3V0b2ZmPy4yNTplLmN1dG9mZixtPW51bGw9PWUucmFkaXVzPzg6ZS5y YWRpdXMseT1lLmNoYW5uZWx8fDA7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHQp fHxBcnJheS5pc0FycmF5KHQpKXtpZighZS53aWR0aHx8IWUuaGVpZ2h0KXRo cm93IEVycm9yKCJGb3IgcmF3IGRhdGEgd2lkdGggYW5kIGhlaWdodCBzaG91 bGQgYmUgcHJvdmlkZWQgYnkgb3B0aW9ucyIpO3I9ZS53aWR0aCxvPWUuaGVp Z2h0LGw9dCx1PWUuc3RyaWRlP2Uuc3RyaWRlOk1hdGguZmxvb3IodC5sZW5n dGgvci9vKX1lbHNlIHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0 YW5jZW9mIHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudD8oaD0oZj10KS5nZXRD b250ZXh0KCIyZCIpLHI9Zi53aWR0aCxvPWYuaGVpZ2h0LHA9aC5nZXRJbWFn ZURhdGEoMCwwLHIsbyksbD1wLmRhdGEsdT00KTp3aW5kb3cuQ2FudmFzUmVu ZGVyaW5nQ29udGV4dDJEJiZ0IGluc3RhbmNlb2Ygd2luZG93LkNhbnZhc1Jl bmRlcmluZ0NvbnRleHQyRD8oZj10LmNhbnZhcyxoPXQscj1mLndpZHRoLG89 Zi5oZWlnaHQscD1oLmdldEltYWdlRGF0YSgwLDAscixvKSxsPXAuZGF0YSx1 PTQpOndpbmRvdy5JbWFnZURhdGEmJnQgaW5zdGFuY2VvZiB3aW5kb3cuSW1h Z2VEYXRhJiYocD10LHI9dC53aWR0aCxvPXQuaGVpZ2h0LGw9cC5kYXRhLHU9 NCk7aWYocz1NYXRoLm1heChyLG8pLHdpbmRvdy5VaW50OENsYW1wZWRBcnJh eSYmbCBpbnN0YW5jZW9mIHdpbmRvdy5VaW50OENsYW1wZWRBcnJheXx8d2lu ZG93LlVpbnQ4QXJyYXkmJmwgaW5zdGFuY2VvZiB3aW5kb3cuVWludDhBcnJh eSlmb3IoYz1sLGw9QXJyYXkocipvKSxkPTAsZz1jLmxlbmd0aDtkPGc7ZCsr KWxbZF09Y1tkKnUreV0vMjU1O2Vsc2UgaWYoMSE9PXUpdGhyb3cgRXJyb3Io IlJhdyBkYXRhIGNhbiBoYXZlIG9ubHkgMSB2YWx1ZSBwZXIgcGl4ZWwiKTt2 YXIgeD1BcnJheShyKm8pLGI9QXJyYXkocipvKSxfPUFycmF5KHMpLHc9QXJy YXkocyksaz1BcnJheShzKzEpLFQ9QXJyYXkocyk7Zm9yKGQ9MCxnPXIqbztk PGc7ZCsrKXt2YXIgTT1sW2RdO3hbZF09MT09PU0/MDowPT09TT9hOk1hdGgu cG93KE1hdGgubWF4KDAsLjUtTSksMiksYltkXT0xPT09TT9hOjA9PT1NPzA6 TWF0aC5wb3coTWF0aC5tYXgoMCxNLS41KSwyKX1pKHgscixvLF8sdyxULGsp LGkoYixyLG8sXyx3LFQsayk7dmFyIEE9d2luZG93LkZsb2F0MzJBcnJheT9u ZXcgRmxvYXQzMkFycmF5KHIqbyk6bmV3IEFycmF5KHIqbyk7Zm9yKGQ9MCxn PXIqbztkPGc7ZCsrKUFbZF09bigxLSgoeFtkXS1iW2RdKS9tK3YpLDAsMSk7 cmV0dXJuIEF9O3ZhciBhPTFlMjA7ZnVuY3Rpb24gaSh0LGUscixuLGEsaSxz KXtmb3IodmFyIGw9MDtsPGU7bCsrKXtmb3IodmFyIGM9MDtjPHI7YysrKW5b Y109dFtjKmUrbF07Zm9yKG8obixhLGkscyxyKSxjPTA7YzxyO2MrKyl0W2Mq ZStsXT1hW2NdfWZvcihjPTA7YzxyO2MrKyl7Zm9yKGw9MDtsPGU7bCsrKW5b bF09dFtjKmUrbF07Zm9yKG8obixhLGkscyxlKSxsPTA7bDxlO2wrKyl0W2Mq ZStsXT1NYXRoLnNxcnQoYVtsXSl9fWZ1bmN0aW9uIG8odCxlLHIsbixpKXty WzBdPTAsblswXT0tYSxuWzFdPSthO2Zvcih2YXIgbz0xLHM9MDtvPGk7bysr KXtmb3IodmFyIGw9KHRbb10rbypvLSh0W3Jbc11dK3Jbc10qcltzXSkpLygy Km8tMipyW3NdKTtsPD1uW3NdOylzLS0sbD0odFtvXStvKm8tKHRbcltzXV0r cltzXSpyW3NdKSkvKDIqby0yKnJbc10pO3JbKytzXT1vLG5bc109bCxuW3Mr MV09K2F9Zm9yKG89MCxzPTA7bzxpO28rKyl7Zm9yKDtuW3MrMV08bzspcysr O2Vbb109KG8tcltzXSkqKG8tcltzXSkrdFtyW3NdXX19fSx7Y2xhbXA6MTE3 fV0sOTY6W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24oZSxyKXsidXNlIHN0 cmljdCI7ZnVuY3Rpb24gbih0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcihl fHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIGEodCxlKXt0LnN1cGVy Xz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlw ZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10 fWZ1bmN0aW9uIGkodCxlLHIpe2lmKGkuaXNCTih0KSlyZXR1cm4gdDt0aGlz Lm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhp cy5yZWQ9bnVsbCxudWxsIT09dCYmKCJsZSIhPT1lJiYiYmUiIT09ZXx8KHI9 ZSxlPTEwKSx0aGlzLl9pbml0KHR8fDAsZXx8MTAscnx8ImJlIikpfXZhciBv OyJvYmplY3QiPT10eXBlb2YgZT9lLmV4cG9ydHM9aTpyLkJOPWksaS5CTj1p LGkud29yZFNpemU9MjY7dHJ5e289dCgiYnVmZmVyIikuQnVmZmVyfWNhdGNo KHQpe31mdW5jdGlvbiBzKHQsZSxyKXtmb3IodmFyIG49MCxhPU1hdGgubWlu KHQubGVuZ3RoLHIpLGk9ZTtpPGE7aSsrKXt2YXIgbz10LmNoYXJDb2RlQXQo aSktNDg7bjw8PTQsbnw9bz49NDkmJm88PTU0P28tNDkrMTA6bz49MTcmJm88 PTIyP28tMTcrMTA6MTUmb31yZXR1cm4gbn1mdW5jdGlvbiBsKHQsZSxyLG4p e2Zvcih2YXIgYT0wLGk9TWF0aC5taW4odC5sZW5ndGgsciksbz1lO288aTtv Kyspe3ZhciBzPXQuY2hhckNvZGVBdChvKS00ODthKj1uLGErPXM+PTQ5P3Mt NDkrMTA6cz49MTc/cy0xNysxMDpzfXJldHVybiBhfWkuaXNCTj1mdW5jdGlv bih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGl8fG51bGwhPT10JiYib2JqZWN0 Ij09dHlwZW9mIHQmJnQuY29uc3RydWN0b3Iud29yZFNpemU9PT1pLndvcmRT aXplJiZBcnJheS5pc0FycmF5KHQud29yZHMpfSxpLm1heD1mdW5jdGlvbih0 LGUpe3JldHVybiB0LmNtcChlKT4wP3Q6ZX0saS5taW49ZnVuY3Rpb24odCxl KXtyZXR1cm4gdC5jbXAoZSk8MD90OmV9LGkucHJvdG90eXBlLl9pbml0PWZ1 bmN0aW9uKHQsZSxyKXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHRo aXMuX2luaXROdW1iZXIodCxlLHIpO2lmKCJvYmplY3QiPT10eXBlb2YgdCly ZXR1cm4gdGhpcy5faW5pdEFycmF5KHQsZSxyKTsiaGV4Ij09PWUmJihlPTE2 KSxuKGU9PT0oMHxlKSYmZT49MiYmZTw9MzYpO3ZhciBhPTA7Ii0iPT09KHQ9 dC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJmErKywxNj09 PWU/dGhpcy5fcGFyc2VIZXgodCxhKTp0aGlzLl9wYXJzZUJhc2UodCxlLGEp LCItIj09PXRbMF0mJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKSwi bGUiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGUscil9 LGkucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKHQsZSxyKXt0PDAm Jih0aGlzLm5lZ2F0aXZlPTEsdD0tdCksdDw2NzEwODg2ND8odGhpcy53b3Jk cz1bNjcxMDg4NjMmdF0sdGhpcy5sZW5ndGg9MSk6dDw0NTAzNTk5NjI3Mzcw NDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ0LHQvNjcxMDg4NjQmNjcxMDg4 NjNdLHRoaXMubGVuZ3RoPTIpOihuKHQ8OTAwNzE5OTI1NDc0MDk5MiksdGhp cy53b3Jkcz1bNjcxMDg4NjMmdCx0LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRo aXMubGVuZ3RoPTMpLCJsZSI9PT1yJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50 b0FycmF5KCksZSxyKX0saS5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlv bih0LGUscil7aWYobigibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKSx0Lmxl bmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0 aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbCh0Lmxlbmd0aC8zKSx0aGlzLndv cmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBhPTA7YTx0aGlz Lmxlbmd0aDthKyspdGhpcy53b3Jkc1thXT0wO3ZhciBpLG8scz0wO2lmKCJi ZSI9PT1yKWZvcihhPXQubGVuZ3RoLTEsaT0wO2E+PTA7YS09MylvPXRbYV18 dFthLTFdPDw4fHRbYS0yXTw8MTYsdGhpcy53b3Jkc1tpXXw9bzw8cyY2NzEw ODg2Myx0aGlzLndvcmRzW2krMV09bz4+PjI2LXMmNjcxMDg4NjMsKHMrPTI0 KT49MjYmJihzLT0yNixpKyspO2Vsc2UgaWYoImxlIj09PXIpZm9yKGE9MCxp PTA7YTx0Lmxlbmd0aDthKz0zKW89dFthXXx0W2ErMV08PDh8dFthKzJdPDwx Nix0aGlzLndvcmRzW2ldfD1vPDxzJjY3MTA4ODYzLHRoaXMud29yZHNbaSsx XT1vPj4+MjYtcyY2NzEwODg2Mywocys9MjQpPj0yNiYmKHMtPTI2LGkrKyk7 cmV0dXJuIHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1 bmN0aW9uKHQsZSl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKCh0Lmxlbmd0aC1l KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZh ciByPTA7cjx0aGlzLmxlbmd0aDtyKyspdGhpcy53b3Jkc1tyXT0wO3ZhciBu LGEsaT0wO2ZvcihyPXQubGVuZ3RoLTYsbj0wO3I+PWU7ci09NilhPXModCxy LHIrNiksdGhpcy53b3Jkc1tuXXw9YTw8aSY2NzEwODg2Myx0aGlzLndvcmRz W24rMV18PWE+Pj4yNi1pJjQxOTQzMDMsKGkrPTI0KT49MjYmJihpLT0yNixu KyspO3IrNiE9PWUmJihhPXModCxlLHIrNiksdGhpcy53b3Jkc1tuXXw9YTw8 aSY2NzEwODg2Myx0aGlzLndvcmRzW24rMV18PWE+Pj4yNi1pJjQxOTQzMDMp LHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlv bih0LGUscil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFy IG49MCxhPTE7YTw9NjcxMDg4NjM7YSo9ZSluKys7bi0tLGE9YS9lfDA7Zm9y KHZhciBpPXQubGVuZ3RoLXIsbz1pJW4scz1NYXRoLm1pbihpLGktbykrcixj PTAsdT1yO3U8czt1Kz1uKWM9bCh0LHUsdStuLGUpLHRoaXMuaW11bG4oYSks dGhpcy53b3Jkc1swXStjPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWM6dGhp cy5faWFkZG4oYyk7aWYoMCE9PW8pe3ZhciBoPTE7Zm9yKGM9bCh0LHUsdC5s ZW5ndGgsZSksdT0wO3U8bzt1KyspaCo9ZTt0aGlzLmltdWxuKGgpLHRoaXMu d29yZHNbMF0rYzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1jOnRoaXMuX2lh ZGRuKGMpfX0saS5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXt0LndvcmRz PW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBlPTA7ZTx0aGlzLmxl bmd0aDtlKyspdC53b3Jkc1tlXT10aGlzLndvcmRzW2VdO3QubGVuZ3RoPXRo aXMubGVuZ3RoLHQubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSx0LnJlZD10aGlz LnJlZH0saS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcg aShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KHQpLHR9LGkucHJvdG90eXBlLl9l eHBhbmQ9ZnVuY3Rpb24odCl7Zm9yKDt0aGlzLmxlbmd0aDx0Oyl0aGlzLndv cmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LGkucHJvdG90eXBl LnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhp cy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4g dGhpcy5fbm9ybVNpZ24oKX0saS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0 aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNb MF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LGkucHJvdG90eXBlLmluc3Bl Y3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46 ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIGM9WyIiLCIwIiwiMDAi LCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAw MDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAi LCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw MDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAw MDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAw MDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAw MDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sdT1bMCwwLDI1LDE2 LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1 LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxoPVswLDAsMzM1NTQ0MzIsNDMw NDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3 NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3 LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQs NDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0 LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDks MjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1 MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIGYodCxlLHIpe3IubmVnYXRpdmU9 ZS5uZWdhdGl2ZV50Lm5lZ2F0aXZlO3ZhciBuPXQubGVuZ3RoK2UubGVuZ3Ro fDA7ci5sZW5ndGg9bixuPW4tMXwwO3ZhciBhPTB8dC53b3Jkc1swXSxpPTB8 ZS53b3Jkc1swXSxvPWEqaSxzPTY3MTA4ODYzJm8sbD1vLzY3MTA4ODY0fDA7 ci53b3Jkc1swXT1zO2Zvcih2YXIgYz0xO2M8bjtjKyspe2Zvcih2YXIgdT1s Pj4+MjYsaD02NzEwODg2MyZsLGY9TWF0aC5taW4oYyxlLmxlbmd0aC0xKSxw PU1hdGgubWF4KDAsYy10Lmxlbmd0aCsxKTtwPD1mO3ArKyl7dmFyIGQ9Yy1w fDA7dSs9KG89KGE9MHx0LndvcmRzW2RdKSooaT0wfGUud29yZHNbcF0pK2gp LzY3MTA4ODY0fDAsaD02NzEwODg2MyZvfXIud29yZHNbY109MHxoLGw9MHx1 fXJldHVybiAwIT09bD9yLndvcmRzW2NdPTB8bDpyLmxlbmd0aC0tLHIuc3Ry aXAoKX1pLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbih0LGUpe3ZhciBy O2lmKGU9MHxlfHwxLDE2PT09KHQ9dHx8MTApfHwiaGV4Ij09PXQpe3I9IiI7 Zm9yKHZhciBhPTAsaT0wLG89MDtvPHRoaXMubGVuZ3RoO28rKyl7dmFyIHM9 dGhpcy53b3Jkc1tvXSxsPSgxNjc3NzIxNSYoczw8YXxpKSkudG9TdHJpbmco MTYpO3I9MCE9PShpPXM+Pj4yNC1hJjE2Nzc3MjE1KXx8byE9PXRoaXMubGVu Z3RoLTE/Y1s2LWwubGVuZ3RoXStsK3I6bCtyLChhKz0yKT49MjYmJihhLT0y NixvLS0pfWZvcigwIT09aSYmKHI9aS50b1N0cmluZygxNikrcik7ci5sZW5n dGglZSE9MDspcj0iMCIrcjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihy PSItIityKSxyfWlmKHQ9PT0oMHx0KSYmdD49MiYmdDw9MzYpe3ZhciBmPXVb dF0scD1oW3RdO3I9IiI7dmFyIGQ9dGhpcy5jbG9uZSgpO2ZvcihkLm5lZ2F0 aXZlPTA7IWQuaXNaZXJvKCk7KXt2YXIgZz1kLm1vZG4ocCkudG9TdHJpbmco dCk7cj0oZD1kLmlkaXZuKHApKS5pc1plcm8oKT9nK3I6Y1tmLWcubGVuZ3Ro XStnK3J9Zm9yKHRoaXMuaXNaZXJvKCkmJihyPSIwIityKTtyLmxlbmd0aCVl IT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0i K3IpLHJ9bighMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIp fSxpLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMu d29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD90Kz02NzEwODg2NCp0 aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNb Ml0/dCs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFd OnRoaXMubGVuZ3RoPjImJm4oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkg c3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy10OnR9 LGkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRv U3RyaW5nKDE2KX0saS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24odCxl KXtyZXR1cm4gbigidW5kZWZpbmVkIiE9dHlwZW9mIG8pLHRoaXMudG9BcnJh eUxpa2Uobyx0LGUpfSxpLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksdCxlKX0saS5wcm90 b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMu Ynl0ZUxlbmd0aCgpLGk9cnx8TWF0aC5tYXgoMSxhKTtuKGE8PWksImJ5dGUg YXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxuKGk+MCwiUmVx dWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBv LHMsbD0ibGUiPT09ZSxjPW5ldyB0KGkpLHU9dGhpcy5jbG9uZSgpO2lmKGwp e2ZvcihzPTA7IXUuaXNaZXJvKCk7cysrKW89dS5hbmRsbigyNTUpLHUuaXVz aHJuKDgpLGNbc109bztmb3IoO3M8aTtzKyspY1tzXT0wfWVsc2V7Zm9yKHM9 MDtzPGktYTtzKyspY1tzXT0wO2ZvcihzPTA7IXUuaXNaZXJvKCk7cysrKW89 dS5hbmRsbigyNTUpLHUuaXVzaHJuKDgpLGNbaS1zLTFdPW99cmV0dXJuIGN9 LE1hdGguY2x6MzI/aS5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbih0 KXtyZXR1cm4gMzItTWF0aC5jbHozMih0KX06aS5wcm90b3R5cGUuX2NvdW50 Qml0cz1mdW5jdGlvbih0KXt2YXIgZT10LHI9MDtyZXR1cm4gZT49NDA5NiYm KHIrPTEzLGU+Pj49MTMpLGU+PTY0JiYocis9NyxlPj4+PTcpLGU+PTgmJihy Kz00LGU+Pj49NCksZT49MiYmKHIrPTIsZT4+Pj0yKSxyK2V9LGkucHJvdG90 eXBlLl96ZXJvQml0cz1mdW5jdGlvbih0KXtpZigwPT09dClyZXR1cm4gMjY7 dmFyIGU9dCxyPTA7cmV0dXJuIDA9PSg4MTkxJmUpJiYocis9MTMsZT4+Pj0x MyksMD09KDEyNyZlKSYmKHIrPTcsZT4+Pj03KSwwPT0oMTUmZSkmJihyKz00 LGU+Pj49NCksMD09KDMmZSkmJihyKz0yLGU+Pj49MiksMD09KDEmZSkmJnIr KyxyfSxpLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgdD10 aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLGU9dGhpcy5fY291bnRCaXRzKHQp O3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrZX0saS5wcm90b3R5cGUuemVy b0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zv cih2YXIgdD0wLGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl7dmFyIHI9dGhpcy5f emVyb0JpdHModGhpcy53b3Jkc1tlXSk7aWYodCs9ciwyNiE9PXIpYnJlYWt9 cmV0dXJuIHR9LGkucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXty ZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LGkucHJvdG90 eXBlLnRvVHdvcz1mdW5jdGlvbih0KXtyZXR1cm4gMCE9PXRoaXMubmVnYXRp dmU/dGhpcy5hYnMoKS5pbm90bih0KS5pYWRkbigxKTp0aGlzLmNsb25lKCl9 LGkucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz LnRlc3RuKHQtMSk/dGhpcy5ub3RuKHQpLmlhZGRuKDEpLmluZWcoKTp0aGlz LmNsb25lKCl9LGkucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJu IDAhPT10aGlzLm5lZ2F0aXZlfSxpLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0saS5wcm90b3R5cGUuaW5l Zz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdh dGl2ZV49MSksdGhpc30saS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbih0KXtm b3IoO3RoaXMubGVuZ3RoPHQubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVu Z3RoKytdPTA7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy53b3Jk c1tlXT10aGlzLndvcmRzW2VdfHQud29yZHNbZV07cmV0dXJuIHRoaXMuc3Ry aXAoKX0saS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9 PSh0aGlzLm5lZ2F0aXZlfHQubmVnYXRpdmUpKSx0aGlzLml1b3IodCl9LGku cHJvdG90eXBlLm9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50 Lmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKHQpOnQuY2xvbmUoKS5pb3IodGhp cyl9LGkucHJvdG90eXBlLnVvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5s ZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IodCk6dC5jbG9uZSgp Lml1b3IodGhpcyl9LGkucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKHQpe3Zh ciBlO2U9dGhpcy5sZW5ndGg+dC5sZW5ndGg/dDp0aGlzO2Zvcih2YXIgcj0w O3I8ZS5sZW5ndGg7cisrKXRoaXMud29yZHNbcl09dGhpcy53b3Jkc1tyXSZ0 LndvcmRzW3JdO3JldHVybiB0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLnN0 cmlwKCl9LGkucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4o MD09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQodCl9 LGkucHJvdG90eXBlLmFuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5n dGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQodCk6dC5jbG9uZSgpLmlh bmQodGhpcyl9LGkucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZCh0KTp0 LmNsb25lKCkuaXVhbmQodGhpcyl9LGkucHJvdG90eXBlLml1eG9yPWZ1bmN0 aW9uKHQpe3ZhciBlLHI7dGhpcy5sZW5ndGg+dC5sZW5ndGg/KGU9dGhpcyxy PXQpOihlPXQscj10aGlzKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl0 aGlzLndvcmRzW25dPWUud29yZHNbbl1eci53b3Jkc1tuXTtpZih0aGlzIT09 ZSlmb3IoO248ZS5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09ZS53b3Jkc1tu XTtyZXR1cm4gdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5zdHJpcCgpfSxp LnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9PSh0aGlz Lm5lZ2F0aXZlfHQubmVnYXRpdmUpKSx0aGlzLml1eG9yKHQpfSxpLnByb3Rv dHlwZS54b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVu Z3RoP3RoaXMuY2xvbmUoKS5peG9yKHQpOnQuY2xvbmUoKS5peG9yKHRoaXMp fSxpLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxl bmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IodCk6dC5jbG9uZSgp Lml1eG9yKHRoaXMpfSxpLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbih0KXtu KCJudW1iZXIiPT10eXBlb2YgdCYmdD49MCk7dmFyIGU9MHxNYXRoLmNlaWwo dC8yNikscj10JTI2O3RoaXMuX2V4cGFuZChlKSxyPjAmJmUtLTtmb3IodmFy IGE9MDthPGU7YSsrKXRoaXMud29yZHNbYV09NjcxMDg4NjMmfnRoaXMud29y ZHNbYV07cmV0dXJuIHI+MCYmKHRoaXMud29yZHNbYV09fnRoaXMud29yZHNb YV0mNjcxMDg4NjM+PjI2LXIpLHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUu bm90bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHQp fSxpLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKHQsZSl7bigibnVtYmVyIj09 dHlwZW9mIHQmJnQ+PTApO3ZhciByPXQvMjZ8MCxhPXQlMjY7cmV0dXJuIHRo aXMuX2V4cGFuZChyKzEpLHRoaXMud29yZHNbcl09ZT90aGlzLndvcmRzW3Jd fDE8PGE6dGhpcy53b3Jkc1tyXSZ+KDE8PGEpLHRoaXMuc3RyaXAoKX0saS5w cm90b3R5cGUuaWFkZD1mdW5jdGlvbih0KXt2YXIgZSxyLG47aWYoMCE9PXRo aXMubmVnYXRpdmUmJjA9PT10Lm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0 aXZlPTAsZT10aGlzLmlzdWIodCksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9u b3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09dC5uZWdhdGl2 ZSlyZXR1cm4gdC5uZWdhdGl2ZT0wLGU9dGhpcy5pc3ViKHQpLHQubmVnYXRp dmU9MSxlLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPnQubGVuZ3RoPyhyPXRo aXMsbj10KToocj10LG49dGhpcyk7Zm9yKHZhciBhPTAsaT0wO2k8bi5sZW5n dGg7aSsrKWU9KDB8ci53b3Jkc1tpXSkrKDB8bi53b3Jkc1tpXSkrYSx0aGlz LndvcmRzW2ldPTY3MTA4ODYzJmUsYT1lPj4+MjY7Zm9yKDswIT09YSYmaTxy Lmxlbmd0aDtpKyspZT0oMHxyLndvcmRzW2ldKSthLHRoaXMud29yZHNbaV09 NjcxMDg4NjMmZSxhPWU+Pj4yNjtpZih0aGlzLmxlbmd0aD1yLmxlbmd0aCww IT09YSl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1hLHRoaXMubGVuZ3RoKys7 ZWxzZSBpZihyIT09dGhpcylmb3IoO2k8ci5sZW5ndGg7aSsrKXRoaXMud29y ZHNbaV09ci53b3Jkc1tpXTtyZXR1cm4gdGhpc30saS5wcm90b3R5cGUuYWRk PWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiAwIT09dC5uZWdhdGl2ZSYmMD09 PXRoaXMubmVnYXRpdmU/KHQubmVnYXRpdmU9MCxlPXRoaXMuc3ViKHQpLHQu bmVnYXRpdmVePTEsZSk6MD09PXQubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0 aXZlPyh0aGlzLm5lZ2F0aXZlPTAsZT10LnN1Yih0aGlzKSx0aGlzLm5lZ2F0 aXZlPTEsZSk6dGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlh ZGQodCk6dC5jbG9uZSgpLmlhZGQodGhpcyl9LGkucHJvdG90eXBlLmlzdWI9 ZnVuY3Rpb24odCl7aWYoMCE9PXQubmVnYXRpdmUpe3QubmVnYXRpdmU9MDt2 YXIgZT10aGlzLmlhZGQodCk7cmV0dXJuIHQubmVnYXRpdmU9MSxlLl9ub3Jt U2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0 aXZlPTAsdGhpcy5pYWRkKHQpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3Jt U2lnbigpO3ZhciByLG4sYT10aGlzLmNtcCh0KTtpZigwPT09YSlyZXR1cm4g dGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0w LHRoaXM7YT4wPyhyPXRoaXMsbj10KToocj10LG49dGhpcyk7Zm9yKHZhciBp PTAsbz0wO288bi5sZW5ndGg7bysrKWk9KGU9KDB8ci53b3Jkc1tvXSktKDB8 bi53b3Jkc1tvXSkraSk+PjI2LHRoaXMud29yZHNbb109NjcxMDg4NjMmZTtm b3IoOzAhPT1pJiZvPHIubGVuZ3RoO28rKylpPShlPSgwfHIud29yZHNbb10p K2kpPj4yNix0aGlzLndvcmRzW29dPTY3MTA4ODYzJmU7aWYoMD09PWkmJm88 ci5sZW5ndGgmJnIhPT10aGlzKWZvcig7bzxyLmxlbmd0aDtvKyspdGhpcy53 b3Jkc1tvXT1yLndvcmRzW29dO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1h eCh0aGlzLmxlbmd0aCxvKSxyIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSks dGhpcy5zdHJpcCgpfSxpLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24odCl7cmV0 dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHQpfTt2YXIgcD1mdW5jdGlvbih0LGUs cil7dmFyIG4sYSxpLG89dC53b3JkcyxzPWUud29yZHMsbD1yLndvcmRzLGM9 MCx1PTB8b1swXSxoPTgxOTEmdSxmPXU+Pj4xMyxwPTB8b1sxXSxkPTgxOTEm cCxnPXA+Pj4xMyx2PTB8b1syXSxtPTgxOTEmdix5PXY+Pj4xMyx4PTB8b1sz XSxiPTgxOTEmeCxfPXg+Pj4xMyx3PTB8b1s0XSxrPTgxOTEmdyxUPXc+Pj4x MyxNPTB8b1s1XSxBPTgxOTEmTSxTPU0+Pj4xMyxFPTB8b1s2XSxMPTgxOTEm RSxDPUU+Pj4xMyxQPTB8b1s3XSxPPTgxOTEmUCx6PVA+Pj4xMyxJPTB8b1s4 XSxEPTgxOTEmSSxSPUk+Pj4xMyxGPTB8b1s5XSxCPTgxOTEmRixOPUY+Pj4x MyxqPTB8c1swXSxWPTgxOTEmaixVPWo+Pj4xMyxxPTB8c1sxXSxIPTgxOTEm cSxHPXE+Pj4xMyxZPTB8c1syXSxXPTgxOTEmWSxYPVk+Pj4xMyxaPTB8c1sz XSxKPTgxOTEmWixLPVo+Pj4xMyxRPTB8c1s0XSwkPTgxOTEmUSx0dD1RPj4+ MTMsZXQ9MHxzWzVdLHJ0PTgxOTEmZXQsbnQ9ZXQ+Pj4xMyxhdD0wfHNbNl0s aXQ9ODE5MSZhdCxvdD1hdD4+PjEzLHN0PTB8c1s3XSxsdD04MTkxJnN0LGN0 PXN0Pj4+MTMsdXQ9MHxzWzhdLGh0PTgxOTEmdXQsZnQ9dXQ+Pj4xMyxwdD0w fHNbOV0sZHQ9ODE5MSZwdCxndD1wdD4+PjEzO3IubmVnYXRpdmU9dC5uZWdh dGl2ZV5lLm5lZ2F0aXZlLHIubGVuZ3RoPTE5O3ZhciB2dD0oYysobj1NYXRo LmltdWwoaCxWKSl8MCkrKCg4MTkxJihhPShhPU1hdGguaW11bChoLFUpKStN YXRoLmltdWwoZixWKXwwKSk8PDEzKXwwO2M9KChpPU1hdGguaW11bChmLFUp KSsoYT4+PjEzKXwwKSsodnQ+Pj4yNil8MCx2dCY9NjcxMDg4NjMsbj1NYXRo LmltdWwoZCxWKSxhPShhPU1hdGguaW11bChkLFUpKStNYXRoLmltdWwoZyxW KXwwLGk9TWF0aC5pbXVsKGcsVSk7dmFyIG10PShjKyhuPW4rTWF0aC5pbXVs KGgsSCl8MCl8MCkrKCg4MTkxJihhPShhPWErTWF0aC5pbXVsKGgsRyl8MCkr TWF0aC5pbXVsKGYsSCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChm LEcpfDApKyhhPj4+MTMpfDApKyhtdD4+PjI2KXwwLG10Jj02NzEwODg2Myxu PU1hdGguaW11bChtLFYpLGE9KGE9TWF0aC5pbXVsKG0sVSkpK01hdGguaW11 bCh5LFYpfDAsaT1NYXRoLmltdWwoeSxVKSxuPW4rTWF0aC5pbXVsKGQsSCl8 MCxhPShhPWErTWF0aC5pbXVsKGQsRyl8MCkrTWF0aC5pbXVsKGcsSCl8MCxp PWkrTWF0aC5pbXVsKGcsRyl8MDt2YXIgeXQ9KGMrKG49bitNYXRoLmltdWwo aCxXKXwwKXwwKSsoKDgxOTEmKGE9KGE9YStNYXRoLmltdWwoaCxYKXwwKStN YXRoLmltdWwoZixXKXwwKSk8PDEzKXwwO2M9KChpPWkrTWF0aC5pbXVsKGYs WCl8MCkrKGE+Pj4xMyl8MCkrKHl0Pj4+MjYpfDAseXQmPTY3MTA4ODYzLG49 TWF0aC5pbXVsKGIsViksYT0oYT1NYXRoLmltdWwoYixVKSkrTWF0aC5pbXVs KF8sVil8MCxpPU1hdGguaW11bChfLFUpLG49bitNYXRoLmltdWwobSxIKXww LGE9KGE9YStNYXRoLmltdWwobSxHKXwwKStNYXRoLmltdWwoeSxIKXwwLGk9 aStNYXRoLmltdWwoeSxHKXwwLG49bitNYXRoLmltdWwoZCxXKXwwLGE9KGE9 YStNYXRoLmltdWwoZCxYKXwwKStNYXRoLmltdWwoZyxXKXwwLGk9aStNYXRo LmltdWwoZyxYKXwwO3ZhciB4dD0oYysobj1uK01hdGguaW11bChoLEopfDAp fDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChoLEspfDApK01hdGguaW11 bChmLEopfDApKTw8MTMpfDA7Yz0oKGk9aStNYXRoLmltdWwoZixLKXwwKSso YT4+PjEzKXwwKSsoeHQ+Pj4yNil8MCx4dCY9NjcxMDg4NjMsbj1NYXRoLmlt dWwoayxWKSxhPShhPU1hdGguaW11bChrLFUpKStNYXRoLmltdWwoVCxWKXww LGk9TWF0aC5pbXVsKFQsVSksbj1uK01hdGguaW11bChiLEgpfDAsYT0oYT1h K01hdGguaW11bChiLEcpfDApK01hdGguaW11bChfLEgpfDAsaT1pK01hdGgu aW11bChfLEcpfDAsbj1uK01hdGguaW11bChtLFcpfDAsYT0oYT1hK01hdGgu aW11bChtLFgpfDApK01hdGguaW11bCh5LFcpfDAsaT1pK01hdGguaW11bCh5 LFgpfDAsbj1uK01hdGguaW11bChkLEopfDAsYT0oYT1hK01hdGguaW11bChk LEspfDApK01hdGguaW11bChnLEopfDAsaT1pK01hdGguaW11bChnLEspfDA7 dmFyIGJ0PShjKyhuPW4rTWF0aC5pbXVsKGgsJCl8MCl8MCkrKCg4MTkxJihh PShhPWErTWF0aC5pbXVsKGgsdHQpfDApK01hdGguaW11bChmLCQpfDApKTw8 MTMpfDA7Yz0oKGk9aStNYXRoLmltdWwoZix0dCl8MCkrKGE+Pj4xMyl8MCkr KGJ0Pj4+MjYpfDAsYnQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEEsViksYT0o YT1NYXRoLmltdWwoQSxVKSkrTWF0aC5pbXVsKFMsVil8MCxpPU1hdGguaW11 bChTLFUpLG49bitNYXRoLmltdWwoayxIKXwwLGE9KGE9YStNYXRoLmltdWwo ayxHKXwwKStNYXRoLmltdWwoVCxIKXwwLGk9aStNYXRoLmltdWwoVCxHKXww LG49bitNYXRoLmltdWwoYixXKXwwLGE9KGE9YStNYXRoLmltdWwoYixYKXww KStNYXRoLmltdWwoXyxXKXwwLGk9aStNYXRoLmltdWwoXyxYKXwwLG49bitN YXRoLmltdWwobSxKKXwwLGE9KGE9YStNYXRoLmltdWwobSxLKXwwKStNYXRo LmltdWwoeSxKKXwwLGk9aStNYXRoLmltdWwoeSxLKXwwLG49bitNYXRoLmlt dWwoZCwkKXwwLGE9KGE9YStNYXRoLmltdWwoZCx0dCl8MCkrTWF0aC5pbXVs KGcsJCl8MCxpPWkrTWF0aC5pbXVsKGcsdHQpfDA7dmFyIF90PShjKyhuPW4r TWF0aC5pbXVsKGgscnQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11 bChoLG50KXwwKStNYXRoLmltdWwoZixydCl8MCkpPDwxMyl8MDtjPSgoaT1p K01hdGguaW11bChmLG50KXwwKSsoYT4+PjEzKXwwKSsoX3Q+Pj4yNil8MCxf dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoTCxWKSxhPShhPU1hdGguaW11bChM LFUpKStNYXRoLmltdWwoQyxWKXwwLGk9TWF0aC5pbXVsKEMsVSksbj1uK01h dGguaW11bChBLEgpfDAsYT0oYT1hK01hdGguaW11bChBLEcpfDApK01hdGgu aW11bChTLEgpfDAsaT1pK01hdGguaW11bChTLEcpfDAsbj1uK01hdGguaW11 bChrLFcpfDAsYT0oYT1hK01hdGguaW11bChrLFgpfDApK01hdGguaW11bChU LFcpfDAsaT1pK01hdGguaW11bChULFgpfDAsbj1uK01hdGguaW11bChiLEop fDAsYT0oYT1hK01hdGguaW11bChiLEspfDApK01hdGguaW11bChfLEopfDAs aT1pK01hdGguaW11bChfLEspfDAsbj1uK01hdGguaW11bChtLCQpfDAsYT0o YT1hK01hdGguaW11bChtLHR0KXwwKStNYXRoLmltdWwoeSwkKXwwLGk9aStN YXRoLmltdWwoeSx0dCl8MCxuPW4rTWF0aC5pbXVsKGQscnQpfDAsYT0oYT1h K01hdGguaW11bChkLG50KXwwKStNYXRoLmltdWwoZyxydCl8MCxpPWkrTWF0 aC5pbXVsKGcsbnQpfDA7dmFyIHd0PShjKyhuPW4rTWF0aC5pbXVsKGgsaXQp fDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChoLG90KXwwKStNYXRo LmltdWwoZixpdCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChmLG90 KXwwKSsoYT4+PjEzKXwwKSsod3Q+Pj4yNil8MCx3dCY9NjcxMDg4NjMsbj1N YXRoLmltdWwoTyxWKSxhPShhPU1hdGguaW11bChPLFUpKStNYXRoLmltdWwo eixWKXwwLGk9TWF0aC5pbXVsKHosVSksbj1uK01hdGguaW11bChMLEgpfDAs YT0oYT1hK01hdGguaW11bChMLEcpfDApK01hdGguaW11bChDLEgpfDAsaT1p K01hdGguaW11bChDLEcpfDAsbj1uK01hdGguaW11bChBLFcpfDAsYT0oYT1h K01hdGguaW11bChBLFgpfDApK01hdGguaW11bChTLFcpfDAsaT1pK01hdGgu aW11bChTLFgpfDAsbj1uK01hdGguaW11bChrLEopfDAsYT0oYT1hK01hdGgu aW11bChrLEspfDApK01hdGguaW11bChULEopfDAsaT1pK01hdGguaW11bChU LEspfDAsbj1uK01hdGguaW11bChiLCQpfDAsYT0oYT1hK01hdGguaW11bChi LHR0KXwwKStNYXRoLmltdWwoXywkKXwwLGk9aStNYXRoLmltdWwoXyx0dCl8 MCxuPW4rTWF0aC5pbXVsKG0scnQpfDAsYT0oYT1hK01hdGguaW11bChtLG50 KXwwKStNYXRoLmltdWwoeSxydCl8MCxpPWkrTWF0aC5pbXVsKHksbnQpfDAs bj1uK01hdGguaW11bChkLGl0KXwwLGE9KGE9YStNYXRoLmltdWwoZCxvdCl8 MCkrTWF0aC5pbXVsKGcsaXQpfDAsaT1pK01hdGguaW11bChnLG90KXwwO3Zh ciBrdD0oYysobj1uK01hdGguaW11bChoLGx0KXwwKXwwKSsoKDgxOTEmKGE9 KGE9YStNYXRoLmltdWwoaCxjdCl8MCkrTWF0aC5pbXVsKGYsbHQpfDApKTw8 MTMpfDA7Yz0oKGk9aStNYXRoLmltdWwoZixjdCl8MCkrKGE+Pj4xMyl8MCkr KGt0Pj4+MjYpfDAsa3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEQsViksYT0o YT1NYXRoLmltdWwoRCxVKSkrTWF0aC5pbXVsKFIsVil8MCxpPU1hdGguaW11 bChSLFUpLG49bitNYXRoLmltdWwoTyxIKXwwLGE9KGE9YStNYXRoLmltdWwo TyxHKXwwKStNYXRoLmltdWwoeixIKXwwLGk9aStNYXRoLmltdWwoeixHKXww LG49bitNYXRoLmltdWwoTCxXKXwwLGE9KGE9YStNYXRoLmltdWwoTCxYKXww KStNYXRoLmltdWwoQyxXKXwwLGk9aStNYXRoLmltdWwoQyxYKXwwLG49bitN YXRoLmltdWwoQSxKKXwwLGE9KGE9YStNYXRoLmltdWwoQSxLKXwwKStNYXRo LmltdWwoUyxKKXwwLGk9aStNYXRoLmltdWwoUyxLKXwwLG49bitNYXRoLmlt dWwoaywkKXwwLGE9KGE9YStNYXRoLmltdWwoayx0dCl8MCkrTWF0aC5pbXVs KFQsJCl8MCxpPWkrTWF0aC5pbXVsKFQsdHQpfDAsbj1uK01hdGguaW11bChi LHJ0KXwwLGE9KGE9YStNYXRoLmltdWwoYixudCl8MCkrTWF0aC5pbXVsKF8s cnQpfDAsaT1pK01hdGguaW11bChfLG50KXwwLG49bitNYXRoLmltdWwobSxp dCl8MCxhPShhPWErTWF0aC5pbXVsKG0sb3QpfDApK01hdGguaW11bCh5LGl0 KXwwLGk9aStNYXRoLmltdWwoeSxvdCl8MCxuPW4rTWF0aC5pbXVsKGQsbHQp fDAsYT0oYT1hK01hdGguaW11bChkLGN0KXwwKStNYXRoLmltdWwoZyxsdCl8 MCxpPWkrTWF0aC5pbXVsKGcsY3QpfDA7dmFyIFR0PShjKyhuPW4rTWF0aC5p bXVsKGgsaHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChoLGZ0 KXwwKStNYXRoLmltdWwoZixodCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGgu aW11bChmLGZ0KXwwKSsoYT4+PjEzKXwwKSsoVHQ+Pj4yNil8MCxUdCY9Njcx MDg4NjMsbj1NYXRoLmltdWwoQixWKSxhPShhPU1hdGguaW11bChCLFUpKStN YXRoLmltdWwoTixWKXwwLGk9TWF0aC5pbXVsKE4sVSksbj1uK01hdGguaW11 bChELEgpfDAsYT0oYT1hK01hdGguaW11bChELEcpfDApK01hdGguaW11bChS LEgpfDAsaT1pK01hdGguaW11bChSLEcpfDAsbj1uK01hdGguaW11bChPLFcp fDAsYT0oYT1hK01hdGguaW11bChPLFgpfDApK01hdGguaW11bCh6LFcpfDAs aT1pK01hdGguaW11bCh6LFgpfDAsbj1uK01hdGguaW11bChMLEopfDAsYT0o YT1hK01hdGguaW11bChMLEspfDApK01hdGguaW11bChDLEopfDAsaT1pK01h dGguaW11bChDLEspfDAsbj1uK01hdGguaW11bChBLCQpfDAsYT0oYT1hK01h dGguaW11bChBLHR0KXwwKStNYXRoLmltdWwoUywkKXwwLGk9aStNYXRoLmlt dWwoUyx0dCl8MCxuPW4rTWF0aC5pbXVsKGsscnQpfDAsYT0oYT1hK01hdGgu aW11bChrLG50KXwwKStNYXRoLmltdWwoVCxydCl8MCxpPWkrTWF0aC5pbXVs KFQsbnQpfDAsbj1uK01hdGguaW11bChiLGl0KXwwLGE9KGE9YStNYXRoLmlt dWwoYixvdCl8MCkrTWF0aC5pbXVsKF8saXQpfDAsaT1pK01hdGguaW11bChf LG90KXwwLG49bitNYXRoLmltdWwobSxsdCl8MCxhPShhPWErTWF0aC5pbXVs KG0sY3QpfDApK01hdGguaW11bCh5LGx0KXwwLGk9aStNYXRoLmltdWwoeSxj dCl8MCxuPW4rTWF0aC5pbXVsKGQsaHQpfDAsYT0oYT1hK01hdGguaW11bChk LGZ0KXwwKStNYXRoLmltdWwoZyxodCl8MCxpPWkrTWF0aC5pbXVsKGcsZnQp fDA7dmFyIE10PShjKyhuPW4rTWF0aC5pbXVsKGgsZHQpfDApfDApKygoODE5 MSYoYT0oYT1hK01hdGguaW11bChoLGd0KXwwKStNYXRoLmltdWwoZixkdCl8 MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bChmLGd0KXwwKSsoYT4+PjEz KXwwKSsoTXQ+Pj4yNil8MCxNdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQixI KSxhPShhPU1hdGguaW11bChCLEcpKStNYXRoLmltdWwoTixIKXwwLGk9TWF0 aC5pbXVsKE4sRyksbj1uK01hdGguaW11bChELFcpfDAsYT0oYT1hK01hdGgu aW11bChELFgpfDApK01hdGguaW11bChSLFcpfDAsaT1pK01hdGguaW11bChS LFgpfDAsbj1uK01hdGguaW11bChPLEopfDAsYT0oYT1hK01hdGguaW11bChP LEspfDApK01hdGguaW11bCh6LEopfDAsaT1pK01hdGguaW11bCh6LEspfDAs bj1uK01hdGguaW11bChMLCQpfDAsYT0oYT1hK01hdGguaW11bChMLHR0KXww KStNYXRoLmltdWwoQywkKXwwLGk9aStNYXRoLmltdWwoQyx0dCl8MCxuPW4r TWF0aC5pbXVsKEEscnQpfDAsYT0oYT1hK01hdGguaW11bChBLG50KXwwKStN YXRoLmltdWwoUyxydCl8MCxpPWkrTWF0aC5pbXVsKFMsbnQpfDAsbj1uK01h dGguaW11bChrLGl0KXwwLGE9KGE9YStNYXRoLmltdWwoayxvdCl8MCkrTWF0 aC5pbXVsKFQsaXQpfDAsaT1pK01hdGguaW11bChULG90KXwwLG49bitNYXRo LmltdWwoYixsdCl8MCxhPShhPWErTWF0aC5pbXVsKGIsY3QpfDApK01hdGgu aW11bChfLGx0KXwwLGk9aStNYXRoLmltdWwoXyxjdCl8MCxuPW4rTWF0aC5p bXVsKG0saHQpfDAsYT0oYT1hK01hdGguaW11bChtLGZ0KXwwKStNYXRoLmlt dWwoeSxodCl8MCxpPWkrTWF0aC5pbXVsKHksZnQpfDA7dmFyIEF0PShjKyhu PW4rTWF0aC5pbXVsKGQsZHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGgu aW11bChkLGd0KXwwKStNYXRoLmltdWwoZyxkdCl8MCkpPDwxMyl8MDtjPSgo aT1pK01hdGguaW11bChnLGd0KXwwKSsoYT4+PjEzKXwwKSsoQXQ+Pj4yNil8 MCxBdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQixXKSxhPShhPU1hdGguaW11 bChCLFgpKStNYXRoLmltdWwoTixXKXwwLGk9TWF0aC5pbXVsKE4sWCksbj1u K01hdGguaW11bChELEopfDAsYT0oYT1hK01hdGguaW11bChELEspfDApK01h dGguaW11bChSLEopfDAsaT1pK01hdGguaW11bChSLEspfDAsbj1uK01hdGgu aW11bChPLCQpfDAsYT0oYT1hK01hdGguaW11bChPLHR0KXwwKStNYXRoLmlt dWwoeiwkKXwwLGk9aStNYXRoLmltdWwoeix0dCl8MCxuPW4rTWF0aC5pbXVs KEwscnQpfDAsYT0oYT1hK01hdGguaW11bChMLG50KXwwKStNYXRoLmltdWwo QyxydCl8MCxpPWkrTWF0aC5pbXVsKEMsbnQpfDAsbj1uK01hdGguaW11bChB LGl0KXwwLGE9KGE9YStNYXRoLmltdWwoQSxvdCl8MCkrTWF0aC5pbXVsKFMs aXQpfDAsaT1pK01hdGguaW11bChTLG90KXwwLG49bitNYXRoLmltdWwoayxs dCl8MCxhPShhPWErTWF0aC5pbXVsKGssY3QpfDApK01hdGguaW11bChULGx0 KXwwLGk9aStNYXRoLmltdWwoVCxjdCl8MCxuPW4rTWF0aC5pbXVsKGIsaHQp fDAsYT0oYT1hK01hdGguaW11bChiLGZ0KXwwKStNYXRoLmltdWwoXyxodCl8 MCxpPWkrTWF0aC5pbXVsKF8sZnQpfDA7dmFyIFN0PShjKyhuPW4rTWF0aC5p bXVsKG0sZHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChtLGd0 KXwwKStNYXRoLmltdWwoeSxkdCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGgu aW11bCh5LGd0KXwwKSsoYT4+PjEzKXwwKSsoU3Q+Pj4yNil8MCxTdCY9Njcx MDg4NjMsbj1NYXRoLmltdWwoQixKKSxhPShhPU1hdGguaW11bChCLEspKStN YXRoLmltdWwoTixKKXwwLGk9TWF0aC5pbXVsKE4sSyksbj1uK01hdGguaW11 bChELCQpfDAsYT0oYT1hK01hdGguaW11bChELHR0KXwwKStNYXRoLmltdWwo UiwkKXwwLGk9aStNYXRoLmltdWwoUix0dCl8MCxuPW4rTWF0aC5pbXVsKE8s cnQpfDAsYT0oYT1hK01hdGguaW11bChPLG50KXwwKStNYXRoLmltdWwoeixy dCl8MCxpPWkrTWF0aC5pbXVsKHosbnQpfDAsbj1uK01hdGguaW11bChMLGl0 KXwwLGE9KGE9YStNYXRoLmltdWwoTCxvdCl8MCkrTWF0aC5pbXVsKEMsaXQp fDAsaT1pK01hdGguaW11bChDLG90KXwwLG49bitNYXRoLmltdWwoQSxsdCl8 MCxhPShhPWErTWF0aC5pbXVsKEEsY3QpfDApK01hdGguaW11bChTLGx0KXww LGk9aStNYXRoLmltdWwoUyxjdCl8MCxuPW4rTWF0aC5pbXVsKGssaHQpfDAs YT0oYT1hK01hdGguaW11bChrLGZ0KXwwKStNYXRoLmltdWwoVCxodCl8MCxp PWkrTWF0aC5pbXVsKFQsZnQpfDA7dmFyIEV0PShjKyhuPW4rTWF0aC5pbXVs KGIsZHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChiLGd0KXww KStNYXRoLmltdWwoXyxkdCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11 bChfLGd0KXwwKSsoYT4+PjEzKXwwKSsoRXQ+Pj4yNil8MCxFdCY9NjcxMDg4 NjMsbj1NYXRoLmltdWwoQiwkKSxhPShhPU1hdGguaW11bChCLHR0KSkrTWF0 aC5pbXVsKE4sJCl8MCxpPU1hdGguaW11bChOLHR0KSxuPW4rTWF0aC5pbXVs KEQscnQpfDAsYT0oYT1hK01hdGguaW11bChELG50KXwwKStNYXRoLmltdWwo UixydCl8MCxpPWkrTWF0aC5pbXVsKFIsbnQpfDAsbj1uK01hdGguaW11bChP LGl0KXwwLGE9KGE9YStNYXRoLmltdWwoTyxvdCl8MCkrTWF0aC5pbXVsKHos aXQpfDAsaT1pK01hdGguaW11bCh6LG90KXwwLG49bitNYXRoLmltdWwoTCxs dCl8MCxhPShhPWErTWF0aC5pbXVsKEwsY3QpfDApK01hdGguaW11bChDLGx0 KXwwLGk9aStNYXRoLmltdWwoQyxjdCl8MCxuPW4rTWF0aC5pbXVsKEEsaHQp fDAsYT0oYT1hK01hdGguaW11bChBLGZ0KXwwKStNYXRoLmltdWwoUyxodCl8 MCxpPWkrTWF0aC5pbXVsKFMsZnQpfDA7dmFyIEx0PShjKyhuPW4rTWF0aC5p bXVsKGssZHQpfDApfDApKygoODE5MSYoYT0oYT1hK01hdGguaW11bChrLGd0 KXwwKStNYXRoLmltdWwoVCxkdCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGgu aW11bChULGd0KXwwKSsoYT4+PjEzKXwwKSsoTHQ+Pj4yNil8MCxMdCY9Njcx MDg4NjMsbj1NYXRoLmltdWwoQixydCksYT0oYT1NYXRoLmltdWwoQixudCkp K01hdGguaW11bChOLHJ0KXwwLGk9TWF0aC5pbXVsKE4sbnQpLG49bitNYXRo LmltdWwoRCxpdCl8MCxhPShhPWErTWF0aC5pbXVsKEQsb3QpfDApK01hdGgu aW11bChSLGl0KXwwLGk9aStNYXRoLmltdWwoUixvdCl8MCxuPW4rTWF0aC5p bXVsKE8sbHQpfDAsYT0oYT1hK01hdGguaW11bChPLGN0KXwwKStNYXRoLmlt dWwoeixsdCl8MCxpPWkrTWF0aC5pbXVsKHosY3QpfDAsbj1uK01hdGguaW11 bChMLGh0KXwwLGE9KGE9YStNYXRoLmltdWwoTCxmdCl8MCkrTWF0aC5pbXVs KEMsaHQpfDAsaT1pK01hdGguaW11bChDLGZ0KXwwO3ZhciBDdD0oYysobj1u K01hdGguaW11bChBLGR0KXwwKXwwKSsoKDgxOTEmKGE9KGE9YStNYXRoLmlt dWwoQSxndCl8MCkrTWF0aC5pbXVsKFMsZHQpfDApKTw8MTMpfDA7Yz0oKGk9 aStNYXRoLmltdWwoUyxndCl8MCkrKGE+Pj4xMyl8MCkrKEN0Pj4+MjYpfDAs Q3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEIsaXQpLGE9KGE9TWF0aC5pbXVs KEIsb3QpKStNYXRoLmltdWwoTixpdCl8MCxpPU1hdGguaW11bChOLG90KSxu PW4rTWF0aC5pbXVsKEQsbHQpfDAsYT0oYT1hK01hdGguaW11bChELGN0KXww KStNYXRoLmltdWwoUixsdCl8MCxpPWkrTWF0aC5pbXVsKFIsY3QpfDAsbj1u K01hdGguaW11bChPLGh0KXwwLGE9KGE9YStNYXRoLmltdWwoTyxmdCl8MCkr TWF0aC5pbXVsKHosaHQpfDAsaT1pK01hdGguaW11bCh6LGZ0KXwwO3ZhciBQ dD0oYysobj1uK01hdGguaW11bChMLGR0KXwwKXwwKSsoKDgxOTEmKGE9KGE9 YStNYXRoLmltdWwoTCxndCl8MCkrTWF0aC5pbXVsKEMsZHQpfDApKTw8MTMp fDA7Yz0oKGk9aStNYXRoLmltdWwoQyxndCl8MCkrKGE+Pj4xMyl8MCkrKFB0 Pj4+MjYpfDAsUHQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEIsbHQpLGE9KGE9 TWF0aC5pbXVsKEIsY3QpKStNYXRoLmltdWwoTixsdCl8MCxpPU1hdGguaW11 bChOLGN0KSxuPW4rTWF0aC5pbXVsKEQsaHQpfDAsYT0oYT1hK01hdGguaW11 bChELGZ0KXwwKStNYXRoLmltdWwoUixodCl8MCxpPWkrTWF0aC5pbXVsKFIs ZnQpfDA7dmFyIE90PShjKyhuPW4rTWF0aC5pbXVsKE8sZHQpfDApfDApKygo ODE5MSYoYT0oYT1hK01hdGguaW11bChPLGd0KXwwKStNYXRoLmltdWwoeixk dCl8MCkpPDwxMyl8MDtjPSgoaT1pK01hdGguaW11bCh6LGd0KXwwKSsoYT4+ PjEzKXwwKSsoT3Q+Pj4yNil8MCxPdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwo QixodCksYT0oYT1NYXRoLmltdWwoQixmdCkpK01hdGguaW11bChOLGh0KXww LGk9TWF0aC5pbXVsKE4sZnQpO3ZhciB6dD0oYysobj1uK01hdGguaW11bChE LGR0KXwwKXwwKSsoKDgxOTEmKGE9KGE9YStNYXRoLmltdWwoRCxndCl8MCkr TWF0aC5pbXVsKFIsZHQpfDApKTw8MTMpfDA7Yz0oKGk9aStNYXRoLmltdWwo UixndCl8MCkrKGE+Pj4xMyl8MCkrKHp0Pj4+MjYpfDAsenQmPTY3MTA4ODYz O3ZhciBJdD0oYysobj1NYXRoLmltdWwoQixkdCkpfDApKygoODE5MSYoYT0o YT1NYXRoLmltdWwoQixndCkpK01hdGguaW11bChOLGR0KXwwKSk8PDEzKXww O3JldHVybiBjPSgoaT1NYXRoLmltdWwoTixndCkpKyhhPj4+MTMpfDApKyhJ dD4+PjI2KXwwLEl0Jj02NzEwODg2MyxsWzBdPXZ0LGxbMV09bXQsbFsyXT15 dCxsWzNdPXh0LGxbNF09YnQsbFs1XT1fdCxsWzZdPXd0LGxbN109a3QsbFs4 XT1UdCxsWzldPU10LGxbMTBdPUF0LGxbMTFdPVN0LGxbMTJdPUV0LGxbMTNd PUx0LGxbMTRdPUN0LGxbMTVdPVB0LGxbMTZdPU90LGxbMTddPXp0LGxbMThd PUl0LDAhPT1jJiYobFsxOV09YyxyLmxlbmd0aCsrKSxyfTtmdW5jdGlvbiBk KHQsZSxyKXtyZXR1cm4obmV3IGcpLm11bHAodCxlLHIpfWZ1bmN0aW9uIGco dCxlKXt0aGlzLng9dCx0aGlzLnk9ZX1NYXRoLmltdWx8fChwPWYpLGkucHJv dG90eXBlLm11bFRvPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5sZW5ndGgr dC5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09dC5sZW5n dGg/cCh0aGlzLHQsZSk6cjw2Mz9mKHRoaXMsdCxlKTpyPDEwMjQ/ZnVuY3Rp b24odCxlLHIpe3IubmVnYXRpdmU9ZS5uZWdhdGl2ZV50Lm5lZ2F0aXZlLHIu bGVuZ3RoPXQubGVuZ3RoK2UubGVuZ3RoO2Zvcih2YXIgbj0wLGE9MCxpPTA7 aTxyLmxlbmd0aC0xO2krKyl7dmFyIG89YTthPTA7Zm9yKHZhciBzPTY3MTA4 ODYzJm4sbD1NYXRoLm1pbihpLGUubGVuZ3RoLTEpLGM9TWF0aC5tYXgoMCxp LXQubGVuZ3RoKzEpO2M8PWw7YysrKXt2YXIgdT1pLWMsaD0oMHx0LndvcmRz W3VdKSooMHxlLndvcmRzW2NdKSxmPTY3MTA4ODYzJmg7cz02NzEwODg2MyYo Zj1mK3N8MCksYSs9KG89KG89bysoaC82NzEwODg2NHwwKXwwKSsoZj4+PjI2 KXwwKT4+PjI2LG8mPTY3MTA4ODYzfXIud29yZHNbaV09cyxuPW8sbz1hfXJl dHVybiAwIT09bj9yLndvcmRzW2ldPW46ci5sZW5ndGgtLSxyLnN0cmlwKCl9 KHRoaXMsdCxlKTpkKHRoaXMsdCxlKX0sZy5wcm90b3R5cGUubWFrZVJCVD1m dW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9aS5wcm90b3R5 cGUuX2NvdW50Qml0cyh0KS0xLG49MDtuPHQ7bisrKWVbbl09dGhpcy5yZXZC aW4obixyLHQpO3JldHVybiBlfSxnLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rp b24odCxlLHIpe2lmKDA9PT10fHx0PT09ci0xKXJldHVybiB0O2Zvcih2YXIg bj0wLGE9MDthPGU7YSsrKW58PSgxJnQpPDxlLWEtMSx0Pj49MTtyZXR1cm4g bn0sZy5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbih0LGUscixuLGEsaSl7 Zm9yKHZhciBvPTA7bzxpO28rKyluW29dPWVbdFtvXV0sYVtvXT1yW3Rbb11d fSxnLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIsbixhLGkp e3RoaXMucGVybXV0ZShpLHQsZSxyLG4sYSk7Zm9yKHZhciBvPTE7bzxhO288 PD0xKWZvcih2YXIgcz1vPDwxLGw9TWF0aC5jb3MoMipNYXRoLlBJL3MpLGM9 TWF0aC5zaW4oMipNYXRoLlBJL3MpLHU9MDt1PGE7dSs9cylmb3IodmFyIGg9 bCxmPWMscD0wO3A8bztwKyspe3ZhciBkPXJbdStwXSxnPW5bdStwXSx2PXJb dStwK29dLG09blt1K3Arb10seT1oKnYtZiptO209aCptK2Yqdix2PXksclt1 K3BdPWQrdixuW3UrcF09ZyttLHJbdStwK29dPWQtdixuW3UrcCtvXT1nLW0s cCE9PXMmJih5PWwqaC1jKmYsZj1sKmYrYypoLGg9eSl9fSxnLnByb3RvdHlw ZS5ndWVzc0xlbjEzYj1mdW5jdGlvbih0LGUpe3ZhciByPTF8TWF0aC5tYXgo ZSx0KSxuPTEmcixhPTA7Zm9yKHI9ci8yfDA7cjtyPj4+PTEpYSsrO3JldHVy biAxPDxhKzErbn0sZy5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKHQs ZSxyKXtpZighKHI8PTEpKWZvcih2YXIgbj0wO248ci8yO24rKyl7dmFyIGE9 dFtuXTt0W25dPXRbci1uLTFdLHRbci1uLTFdPWEsYT1lW25dLGVbbl09LWVb ci1uLTFdLGVbci1uLTFdPS1hfX0sZy5wcm90b3R5cGUubm9ybWFsaXplMTNi PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0wO248ZS8yO24rKyl7dmFy IGE9ODE5MipNYXRoLnJvdW5kKHRbMipuKzFdL2UpK01hdGgucm91bmQodFsy Km5dL2UpK3I7dFtuXT02NzEwODg2MyZhLHI9YTw2NzEwODg2ND8wOmEvNjcx MDg4NjR8MH1yZXR1cm4gdH0sZy5wcm90b3R5cGUuY29udmVydDEzYj1mdW5j dGlvbih0LGUscixhKXtmb3IodmFyIGk9MCxvPTA7bzxlO28rKylpKz0wfHRb b10sclsyKm9dPTgxOTEmaSxpPj4+PTEzLHJbMipvKzFdPTgxOTEmaSxpPj4+ PTEzO2ZvcihvPTIqZTtvPGE7KytvKXJbb109MDtuKDA9PT1pKSxuKDA9PSgt ODE5MiZpKSl9LGcucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24odCl7Zm9yKHZh ciBlPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyllW3JdPTA7cmV0dXJuIGV9 LGcucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPTIqdGhp cy5ndWVzc0xlbjEzYih0Lmxlbmd0aCxlLmxlbmd0aCksYT10aGlzLm1ha2VS QlQobiksaT10aGlzLnN0dWIobiksbz1uZXcgQXJyYXkobikscz1uZXcgQXJy YXkobiksbD1uZXcgQXJyYXkobiksYz1uZXcgQXJyYXkobiksdT1uZXcgQXJy YXkobiksaD1uZXcgQXJyYXkobiksZj1yLndvcmRzO2YubGVuZ3RoPW4sdGhp cy5jb252ZXJ0MTNiKHQud29yZHMsdC5sZW5ndGgsbyxuKSx0aGlzLmNvbnZl cnQxM2IoZS53b3JkcyxlLmxlbmd0aCxjLG4pLHRoaXMudHJhbnNmb3JtKG8s aSxzLGwsbixhKSx0aGlzLnRyYW5zZm9ybShjLGksdSxoLG4sYSk7Zm9yKHZh ciBwPTA7cDxuO3ArKyl7dmFyIGQ9c1twXSp1W3BdLWxbcF0qaFtwXTtsW3Bd PXNbcF0qaFtwXStsW3BdKnVbcF0sc1twXT1kfXJldHVybiB0aGlzLmNvbmp1 Z2F0ZShzLGwsbiksdGhpcy50cmFuc2Zvcm0ocyxsLGYsaSxuLGEpLHRoaXMu Y29uanVnYXRlKGYsaSxuKSx0aGlzLm5vcm1hbGl6ZTEzYihmLG4pLHIubmVn YXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlLHIubGVuZ3RoPXQubGVuZ3Ro K2UubGVuZ3RoLHIuc3RyaXAoKX0saS5wcm90b3R5cGUubXVsPWZ1bmN0aW9u KHQpe3ZhciBlPW5ldyBpKG51bGwpO3JldHVybiBlLndvcmRzPW5ldyBBcnJh eSh0aGlzLmxlbmd0aCt0Lmxlbmd0aCksdGhpcy5tdWxUbyh0LGUpfSxpLnBy b3RvdHlwZS5tdWxmPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBpKG51bGwpO3Jl dHVybiBlLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt0Lmxlbmd0aCks ZCh0aGlzLHQsZSl9LGkucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24odCl7cmV0 dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyh0LHRoaXMpfSxpLnByb3RvdHlwZS5p bXVsbj1mdW5jdGlvbih0KXtuKCJudW1iZXIiPT10eXBlb2YgdCksbih0PDY3 MTA4ODY0KTtmb3IodmFyIGU9MCxyPTA7cjx0aGlzLmxlbmd0aDtyKyspe3Zh ciBhPSgwfHRoaXMud29yZHNbcl0pKnQsaT0oNjcxMDg4NjMmYSkrKDY3MTA4 ODYzJmUpO2U+Pj0yNixlKz1hLzY3MTA4ODY0fDAsZSs9aT4+PjI2LHRoaXMu d29yZHNbcl09NjcxMDg4NjMmaX1yZXR1cm4gMCE9PWUmJih0aGlzLndvcmRz W3JdPWUsdGhpcy5sZW5ndGgrKyksdGhpc30saS5wcm90b3R5cGUubXVsbj1m dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKHQpfSxpLnBy b3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9 LGkucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVs KHRoaXMuY2xvbmUoKSl9LGkucHJvdG90eXBlLnBvdz1mdW5jdGlvbih0KXt2 YXIgZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQuYml0TGVu Z3RoKCkpLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ci8yNnwwLGE9ciUy NjtlW3JdPSh0LndvcmRzW25dJjE8PGEpPj4+YX1yZXR1cm4gZX0odCk7aWYo MD09PWUubGVuZ3RoKXJldHVybiBuZXcgaSgxKTtmb3IodmFyIHI9dGhpcyxu PTA7bjxlLmxlbmd0aCYmMD09PWVbbl07bisrLHI9ci5zcXIoKSk7aWYoKytu PGUubGVuZ3RoKWZvcih2YXIgYT1yLnNxcigpO248ZS5sZW5ndGg7bisrLGE9 YS5zcXIoKSkwIT09ZVtuXSYmKHI9ci5tdWwoYSkpO3JldHVybiByfSxpLnBy b3RvdHlwZS5pdXNobG49ZnVuY3Rpb24odCl7bigibnVtYmVyIj09dHlwZW9m IHQmJnQ+PTApO3ZhciBlLHI9dCUyNixhPSh0LXIpLzI2LGk9NjcxMDg4NjM+ Pj4yNi1yPDwyNi1yO2lmKDAhPT1yKXt2YXIgbz0wO2ZvcihlPTA7ZTx0aGlz Lmxlbmd0aDtlKyspe3ZhciBzPXRoaXMud29yZHNbZV0maSxsPSgwfHRoaXMu d29yZHNbZV0pLXM8PHI7dGhpcy53b3Jkc1tlXT1sfG8sbz1zPj4+MjYtcn1v JiYodGhpcy53b3Jkc1tlXT1vLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1hKXtm b3IoZT10aGlzLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMud29yZHNbZSthXT10 aGlzLndvcmRzW2VdO2ZvcihlPTA7ZTxhO2UrKyl0aGlzLndvcmRzW2VdPTA7 dGhpcy5sZW5ndGgrPWF9cmV0dXJuIHRoaXMuc3RyaXAoKX0saS5wcm90b3R5 cGUuaXNobG49ZnVuY3Rpb24odCl7cmV0dXJuIG4oMD09PXRoaXMubmVnYXRp dmUpLHRoaXMuaXVzaGxuKHQpfSxpLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rp b24odCxlLHIpe3ZhciBhO24oIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wKSxh PWU/KGUtZSUyNikvMjY6MDt2YXIgaT10JTI2LG89TWF0aC5taW4oKHQtaSkv MjYsdGhpcy5sZW5ndGgpLHM9NjcxMDg4NjNeNjcxMDg4NjM+Pj5pPDxpLGw9 cjtpZihhLT1vLGE9TWF0aC5tYXgoMCxhKSxsKXtmb3IodmFyIGM9MDtjPG87 YysrKWwud29yZHNbY109dGhpcy53b3Jkc1tjXTtsLmxlbmd0aD1vfWlmKDA9 PT1vKTtlbHNlIGlmKHRoaXMubGVuZ3RoPm8pZm9yKHRoaXMubGVuZ3RoLT1v LGM9MDtjPHRoaXMubGVuZ3RoO2MrKyl0aGlzLndvcmRzW2NdPXRoaXMud29y ZHNbYytvXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3Zh ciB1PTA7Zm9yKGM9dGhpcy5sZW5ndGgtMTtjPj0wJiYoMCE9PXV8fGM+PWEp O2MtLSl7dmFyIGg9MHx0aGlzLndvcmRzW2NdO3RoaXMud29yZHNbY109dTw8 MjYtaXxoPj4+aSx1PWgmc31yZXR1cm4gbCYmMCE9PXUmJihsLndvcmRzW2wu bGVuZ3RoKytdPXUpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09 MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LGkucHJvdG90eXBlLmlz aHJuPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbigwPT09dGhpcy5uZWdhdGl2 ZSksdGhpcy5pdXNocm4odCxlLHIpfSxpLnByb3RvdHlwZS5zaGxuPWZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4odCl9LGkucHJvdG90 eXBlLnVzaGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVz aGxuKHQpfSxpLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKHQpe3JldHVybiB0 aGlzLmNsb25lKCkuaXNocm4odCl9LGkucHJvdG90eXBlLnVzaHJuPWZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKHQpfSxpLnByb3Rv dHlwZS50ZXN0bj1mdW5jdGlvbih0KXtuKCJudW1iZXIiPT10eXBlb2YgdCYm dD49MCk7dmFyIGU9dCUyNixyPSh0LWUpLzI2LGE9MTw8ZTtyZXR1cm4hKHRo aXMubGVuZ3RoPD1yKSYmISEodGhpcy53b3Jkc1tyXSZhKX0saS5wcm90b3R5 cGUuaW1hc2tuPWZ1bmN0aW9uKHQpe24oIm51bWJlciI9PXR5cGVvZiB0JiZ0 Pj0wKTt2YXIgZT10JTI2LHI9KHQtZSkvMjY7aWYobigwPT09dGhpcy5uZWdh dGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJz IiksdGhpcy5sZW5ndGg8PXIpcmV0dXJuIHRoaXM7aWYoMCE9PWUmJnIrKyx0 aGlzLmxlbmd0aD1NYXRoLm1pbihyLHRoaXMubGVuZ3RoKSwwIT09ZSl7dmFy IGE9NjcxMDg4NjNeNjcxMDg4NjM+Pj5lPDxlO3RoaXMud29yZHNbdGhpcy5s ZW5ndGgtMV0mPWF9cmV0dXJuIHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUu bWFza249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24o dCl9LGkucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKHQpe3JldHVybiBuKCJu dW1iZXIiPT10eXBlb2YgdCksbih0PDY3MTA4ODY0KSx0PDA/dGhpcy5pc3Vi bigtdCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0 aGlzLndvcmRzWzBdKTx0Pyh0aGlzLndvcmRzWzBdPXQtKDB8dGhpcy53b3Jk c1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAs dGhpcy5pc3Vibih0KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFk ZG4odCl9LGkucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbih0KXt0aGlzLndv cmRzWzBdKz10O2Zvcih2YXIgZT0wO2U8dGhpcy5sZW5ndGgmJnRoaXMud29y ZHNbZV0+PTY3MTA4ODY0O2UrKyl0aGlzLndvcmRzW2VdLT02NzEwODg2NCxl PT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW2UrMV09MTp0aGlzLndvcmRz W2UrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5n dGgsZSsxKSx0aGlzfSxpLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih0KXtp ZihuKCJudW1iZXIiPT10eXBlb2YgdCksbih0PDY3MTA4ODY0KSx0PDApcmV0 dXJuIHRoaXMuaWFkZG4oLXQpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVy biB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbih0KSx0aGlzLm5lZ2F0aXZl PTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT10LDE9PT10aGlzLmxlbmd0aCYm dGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0s dGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBlPTA7ZTx0aGlzLmxlbmd0 aCYmdGhpcy53b3Jkc1tlXTwwO2UrKyl0aGlzLndvcmRzW2VdKz02NzEwODg2 NCx0aGlzLndvcmRzW2UrMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0saS5w cm90b3R5cGUuYWRkbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgp LmlhZGRuKHQpfSxpLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKHQpe3JldHVy biB0aGlzLmNsb25lKCkuaXN1Ym4odCl9LGkucHJvdG90eXBlLmlhYnM9ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LGkucHJvdG90 eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygp fSxpLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24odCxlLHIpe3Zh ciBhLGksbz10Lmxlbmd0aCtyO3RoaXMuX2V4cGFuZChvKTt2YXIgcz0wO2Zv cihhPTA7YTx0Lmxlbmd0aDthKyspe2k9KDB8dGhpcy53b3Jkc1thK3JdKStz O3ZhciBsPSgwfHQud29yZHNbYV0pKmU7cz0oKGktPTY3MTA4ODYzJmwpPj4y NiktKGwvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1thK3JdPTY3MTA4ODYzJml9 Zm9yKDthPHRoaXMubGVuZ3RoLXI7YSsrKXM9KGk9KDB8dGhpcy53b3Jkc1th K3JdKStzKT4+MjYsdGhpcy53b3Jkc1thK3JdPTY3MTA4ODYzJmk7aWYoMD09 PXMpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IobigtMT09PXMpLHM9MCxhPTA7 YTx0aGlzLmxlbmd0aDthKyspcz0oaT0tKDB8dGhpcy53b3Jkc1thXSkrcyk+ PjI2LHRoaXMud29yZHNbYV09NjcxMDg4NjMmaTtyZXR1cm4gdGhpcy5uZWdh dGl2ZT0xLHRoaXMuc3RyaXAoKX0saS5wcm90b3R5cGUuX3dvcmREaXY9ZnVu Y3Rpb24odCxlKXt2YXIgcj0odGhpcy5sZW5ndGgsdC5sZW5ndGgpLG49dGhp cy5jbG9uZSgpLGE9dCxvPTB8YS53b3Jkc1thLmxlbmd0aC0xXTswIT09KHI9 MjYtdGhpcy5fY291bnRCaXRzKG8pKSYmKGE9YS51c2hsbihyKSxuLml1c2hs bihyKSxvPTB8YS53b3Jkc1thLmxlbmd0aC0xXSk7dmFyIHMsbD1uLmxlbmd0 aC1hLmxlbmd0aDtpZigibW9kIiE9PWUpeyhzPW5ldyBpKG51bGwpKS5sZW5n dGg9bCsxLHMud29yZHM9bmV3IEFycmF5KHMubGVuZ3RoKTtmb3IodmFyIGM9 MDtjPHMubGVuZ3RoO2MrKylzLndvcmRzW2NdPTB9dmFyIHU9bi5jbG9uZSgp Ll9pc2hsbnN1Ym11bChhLDEsbCk7MD09PXUubmVnYXRpdmUmJihuPXUscyYm KHMud29yZHNbbF09MSkpO2Zvcih2YXIgaD1sLTE7aD49MDtoLS0pe3ZhciBm PTY3MTA4ODY0KigwfG4ud29yZHNbYS5sZW5ndGgraF0pKygwfG4ud29yZHNb YS5sZW5ndGgraC0xXSk7Zm9yKGY9TWF0aC5taW4oZi9vfDAsNjcxMDg4NjMp LG4uX2lzaGxuc3VibXVsKGEsZixoKTswIT09bi5uZWdhdGl2ZTspZi0tLG4u bmVnYXRpdmU9MCxuLl9pc2hsbnN1Ym11bChhLDEsaCksbi5pc1plcm8oKXx8 KG4ubmVnYXRpdmVePTEpO3MmJihzLndvcmRzW2hdPWYpfXJldHVybiBzJiZz LnN0cmlwKCksbi5zdHJpcCgpLCJkaXYiIT09ZSYmMCE9PXImJm4uaXVzaHJu KHIpLHtkaXY6c3x8bnVsbCxtb2Q6bn19LGkucHJvdG90eXBlLmRpdm1vZD1m dW5jdGlvbih0LGUscil7cmV0dXJuIG4oIXQuaXNaZXJvKCkpLHRoaXMuaXNa ZXJvKCk/e2RpdjpuZXcgaSgwKSxtb2Q6bmV3IGkoMCl9OjAhPT10aGlzLm5l Z2F0aXZlJiYwPT09dC5uZWdhdGl2ZT8ocz10aGlzLm5lZygpLmRpdm1vZCh0 LGUpLCJtb2QiIT09ZSYmKGE9cy5kaXYubmVnKCkpLCJkaXYiIT09ZSYmKG89 cy5tb2QubmVnKCksciYmMCE9PW8ubmVnYXRpdmUmJm8uaWFkZCh0KSkse2Rp djphLG1vZDpvfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT10Lm5lZ2F0aXZl PyhzPXRoaXMuZGl2bW9kKHQubmVnKCksZSksIm1vZCIhPT1lJiYoYT1zLmRp di5uZWcoKSkse2RpdjphLG1vZDpzLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZl JnQubmVnYXRpdmUpPyhzPXRoaXMubmVnKCkuZGl2bW9kKHQubmVnKCksZSks ImRpdiIhPT1lJiYobz1zLm1vZC5uZWcoKSxyJiYwIT09by5uZWdhdGl2ZSYm by5pc3ViKHQpKSx7ZGl2OnMuZGl2LG1vZDpvfSk6dC5sZW5ndGg+dGhpcy5s ZW5ndGh8fHRoaXMuY21wKHQpPDA/e2RpdjpuZXcgaSgwKSxtb2Q6dGhpc306 MT09PXQubGVuZ3RoPyJkaXYiPT09ZT97ZGl2OnRoaXMuZGl2bih0LndvcmRz WzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1lP3tkaXY6bnVsbCxtb2Q6bmV3IGko dGhpcy5tb2RuKHQud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4odC53b3Jk c1swXSksbW9kOm5ldyBpKHRoaXMubW9kbih0LndvcmRzWzBdKSl9OnRoaXMu X3dvcmREaXYodCxlKTt2YXIgYSxvLHN9LGkucHJvdG90eXBlLmRpdj1mdW5j dGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCwiZGl2IiwhMSkuZGl2fSxp LnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGl2bW9k KHQsIm1vZCIsITEpLm1vZH0saS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbih0 KXtyZXR1cm4gdGhpcy5kaXZtb2QodCwibW9kIiwhMCkubW9kfSxpLnByb3Rv dHlwZS5kaXZSb3VuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRpdm1vZCh0 KTtpZihlLm1vZC5pc1plcm8oKSlyZXR1cm4gZS5kaXY7dmFyIHI9MCE9PWUu ZGl2Lm5lZ2F0aXZlP2UubW9kLmlzdWIodCk6ZS5tb2Qsbj10LnVzaHJuKDEp LGE9dC5hbmRsbigxKSxpPXIuY21wKG4pO3JldHVybiBpPDB8fDE9PT1hJiYw PT09aT9lLmRpdjowIT09ZS5kaXYubmVnYXRpdmU/ZS5kaXYuaXN1Ym4oMSk6 ZS5kaXYuaWFkZG4oMSl9LGkucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24odCl7 bih0PD02NzEwODg2Myk7Zm9yKHZhciBlPSgxPDwyNikldCxyPTAsYT10aGlz Lmxlbmd0aC0xO2E+PTA7YS0tKXI9KGUqcisoMHx0aGlzLndvcmRzW2FdKSkl dDtyZXR1cm4gcn0saS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24odCl7bih0 PD02NzEwODg2Myk7Zm9yKHZhciBlPTAscj10aGlzLmxlbmd0aC0xO3I+PTA7 ci0tKXt2YXIgYT0oMHx0aGlzLndvcmRzW3JdKSs2NzEwODg2NCplO3RoaXMu d29yZHNbcl09YS90fDAsZT1hJXR9cmV0dXJuIHRoaXMuc3RyaXAoKX0saS5w cm90b3R5cGUuZGl2bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgp LmlkaXZuKHQpfSxpLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKHQpe24oMD09 PXQubmVnYXRpdmUpLG4oIXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNs b25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9lLnVtb2QodCk6ZS5jbG9uZSgpO2Zv cih2YXIgYT1uZXcgaSgxKSxvPW5ldyBpKDApLHM9bmV3IGkoMCksbD1uZXcg aSgxKSxjPTA7ZS5pc0V2ZW4oKSYmci5pc0V2ZW4oKTspZS5pdXNocm4oMSks ci5pdXNocm4oMSksKytjO2Zvcih2YXIgdT1yLmNsb25lKCksaD1lLmNsb25l KCk7IWUuaXNaZXJvKCk7KXtmb3IodmFyIGY9MCxwPTE7MD09KGUud29yZHNb MF0mcCkmJmY8MjY7KytmLHA8PD0xKTtpZihmPjApZm9yKGUuaXVzaHJuKGYp O2YtLSA+MDspKGEuaXNPZGQoKXx8by5pc09kZCgpKSYmKGEuaWFkZCh1KSxv LmlzdWIoaCkpLGEuaXVzaHJuKDEpLG8uaXVzaHJuKDEpO2Zvcih2YXIgZD0w LGc9MTswPT0oci53b3Jkc1swXSZnKSYmZDwyNjsrK2QsZzw8PTEpO2lmKGQ+ MClmb3Ioci5pdXNocm4oZCk7ZC0tID4wOykocy5pc09kZCgpfHxsLmlzT2Rk KCkpJiYocy5pYWRkKHUpLGwuaXN1YihoKSkscy5pdXNocm4oMSksbC5pdXNo cm4oMSk7ZS5jbXAocik+PTA/KGUuaXN1YihyKSxhLmlzdWIocyksby5pc3Vi KGwpKTooci5pc3ViKGUpLHMuaXN1YihhKSxsLmlzdWIobykpfXJldHVybnth OnMsYjpsLGdjZDpyLml1c2hsbihjKX19LGkucHJvdG90eXBlLl9pbnZtcD1m dW5jdGlvbih0KXtuKDA9PT10Lm5lZ2F0aXZlKSxuKCF0LmlzWmVybygpKTt2 YXIgZT10aGlzLHI9dC5jbG9uZSgpO2U9MCE9PWUubmVnYXRpdmU/ZS51bW9k KHQpOmUuY2xvbmUoKTtmb3IodmFyIGEsbz1uZXcgaSgxKSxzPW5ldyBpKDAp LGw9ci5jbG9uZSgpO2UuY21wbigxKT4wJiZyLmNtcG4oMSk+MDspe2Zvcih2 YXIgYz0wLHU9MTswPT0oZS53b3Jkc1swXSZ1KSYmYzwyNjsrK2MsdTw8PTEp O2lmKGM+MClmb3IoZS5pdXNocm4oYyk7Yy0tID4wOylvLmlzT2RkKCkmJm8u aWFkZChsKSxvLml1c2hybigxKTtmb3IodmFyIGg9MCxmPTE7MD09KHIud29y ZHNbMF0mZikmJmg8MjY7KytoLGY8PD0xKTtpZihoPjApZm9yKHIuaXVzaHJu KGgpO2gtLSA+MDspcy5pc09kZCgpJiZzLmlhZGQobCkscy5pdXNocm4oMSk7 ZS5jbXAocik+PTA/KGUuaXN1YihyKSxvLmlzdWIocykpOihyLmlzdWIoZSks cy5pc3ViKG8pKX1yZXR1cm4oYT0wPT09ZS5jbXBuKDEpP286cykuY21wbigw KTwwJiZhLmlhZGQodCksYX0saS5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHQp e2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHQuYWJzKCk7aWYodC5pc1plcm8o KSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgZT10aGlzLmNsb25lKCkscj10LmNs b25lKCk7ZS5uZWdhdGl2ZT0wLHIubmVnYXRpdmU9MDtmb3IodmFyIG49MDtl LmlzRXZlbigpJiZyLmlzRXZlbigpO24rKyllLml1c2hybigxKSxyLml1c2hy bigxKTtmb3IoOzspe2Zvcig7ZS5pc0V2ZW4oKTspZS5pdXNocm4oMSk7Zm9y KDtyLmlzRXZlbigpOylyLml1c2hybigxKTt2YXIgYT1lLmNtcChyKTtpZihh PDApe3ZhciBpPWU7ZT1yLHI9aX1lbHNlIGlmKDA9PT1hfHwwPT09ci5jbXBu KDEpKWJyZWFrO2UuaXN1YihyKX1yZXR1cm4gci5pdXNobG4obil9LGkucHJv dG90eXBlLmludm09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWdjZCh0KS5h LnVtb2QodCl9LGkucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVy biAwPT0oMSZ0aGlzLndvcmRzWzBdKX0saS5wcm90b3R5cGUuaXNPZGQ9ZnVu Y3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LGkucHJvdG90 eXBlLmFuZGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLndvcmRzWzBdJnR9 LGkucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKHQpe24oIm51bWJlciI9PXR5 cGVvZiB0KTt2YXIgZT10JTI2LHI9KHQtZSkvMjYsYT0xPDxlO2lmKHRoaXMu bGVuZ3RoPD1yKXJldHVybiB0aGlzLl9leHBhbmQocisxKSx0aGlzLndvcmRz W3JdfD1hLHRoaXM7Zm9yKHZhciBpPWEsbz1yOzAhPT1pJiZvPHRoaXMubGVu Z3RoO28rKyl7dmFyIHM9MHx0aGlzLndvcmRzW29dO2k9KHMrPWkpPj4+MjYs cyY9NjcxMDg4NjMsdGhpcy53b3Jkc1tvXT1zfXJldHVybiAwIT09aSYmKHRo aXMud29yZHNbb109aSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxpLnByb3RvdHlw ZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYw PT09dGhpcy53b3Jkc1swXX0saS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbih0 KXt2YXIgZSxyPXQ8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXIpcmV0dXJu LTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJnIpcmV0dXJuIDE7aWYodGhpcy5z dHJpcCgpLHRoaXMubGVuZ3RoPjEpZT0xO2Vsc2V7ciYmKHQ9LXQpLG4odDw9 NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIGE9MHx0aGlzLndv cmRzWzBdO2U9YT09PXQ/MDphPHQ/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVn YXRpdmU/MHwtZTplfSxpLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24odCl7aWYo MCE9PXRoaXMubmVnYXRpdmUmJjA9PT10Lm5lZ2F0aXZlKXJldHVybi0xO2lm KDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09dC5uZWdhdGl2ZSlyZXR1cm4gMTt2 YXIgZT10aGlzLnVjbXAodCk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8 LWU6ZX0saS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbih0KXtpZih0aGlzLmxl bmd0aD50Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDx0Lmxlbmd0 aClyZXR1cm4tMTtmb3IodmFyIGU9MCxyPXRoaXMubGVuZ3RoLTE7cj49MDty LS0pe3ZhciBuPTB8dGhpcy53b3Jkc1tyXSxhPTB8dC53b3Jkc1tyXTtpZihu IT09YSl7bjxhP2U9LTE6bj5hJiYoZT0xKTticmVha319cmV0dXJuIGV9LGku cHJvdG90eXBlLmd0bj1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXRoaXMuY21w bih0KX0saS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10 aGlzLmNtcCh0KX0saS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy5jbXBuKHQpPj0wfSxpLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24o dCl7cmV0dXJuIHRoaXMuY21wKHQpPj0wfSxpLnByb3RvdHlwZS5sdG49ZnVu Y3Rpb24odCl7cmV0dXJuLTE9PT10aGlzLmNtcG4odCl9LGkucHJvdG90eXBl Lmx0PWZ1bmN0aW9uKHQpe3JldHVybi0xPT09dGhpcy5jbXAodCl9LGkucHJv dG90eXBlLmx0ZW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wbih0KTw9 MH0saS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNt cCh0KTw9MH0saS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHQpe3JldHVybiAw PT09dGhpcy5jbXBuKHQpfSxpLnByb3RvdHlwZS5lcT1mdW5jdGlvbih0KXty ZXR1cm4gMD09PXRoaXMuY21wKHQpfSxpLnJlZD1mdW5jdGlvbih0KXtyZXR1 cm4gbmV3IHcodCl9LGkucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKHQpe3Jl dHVybiBuKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rp b24gY29udGV4dCIpLG4oMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBv bmx5IHdpdGggcG9zaXRpdmVzIiksdC5jb252ZXJ0VG8odGhpcykuX2ZvcmNl UmVkKHQpfSxpLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJu IG4odGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMg aW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0 aGlzKX0saS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKHQpe3JldHVy biB0aGlzLnJlZD10LHRoaXN9LGkucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0 aW9uKHQpe3JldHVybiBuKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBp biByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKHQpfSxpLnBy b3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQs InJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJl ZC5hZGQodGhpcyx0KX0saS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbih0 KXtyZXR1cm4gbih0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGgg cmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsdCl9LGkucHJvdG90 eXBlLnJlZFN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCwicmVk U3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1 Yih0aGlzLHQpfSxpLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKHQpe3Jl dHVybiBuKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQg bnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyx0KX0saS5wcm90b3R5cGUu cmVkU2hsPWZ1bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLCJyZWRTaGwg d29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRo aXMsdCl9LGkucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbih0KXtyZXR1cm4g bih0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVy cyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsdCksdGhpcy5yZWQubXVsKHRo aXMsdCl9LGkucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24odCl7cmV0dXJu IG4odGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJl cnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHQpLHRoaXMucmVkLmltdWwo dGhpcyx0KX0saS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJu IG4odGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJl cnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhp cyl9LGkucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0 aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi KSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMp fSxpLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhp cy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiks dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0s aS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMu cmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRo aXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LGku cHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVk LCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5y ZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxpLnByb3Rv dHlwZS5yZWRQb3c9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQmJiF0 LnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0 aGlzKSx0aGlzLnJlZC5wb3codGhpcyx0KX07dmFyIHY9e2syNTY6bnVsbCxw MjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBtKHQs ZSl7dGhpcy5uYW1lPXQsdGhpcy5wPW5ldyBpKGUsMTYpLHRoaXMubj10aGlz LnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBpKDEpLml1c2hsbih0aGlzLm4p LmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiB5 KCl7bS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZm ZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZm ZmMyZiIpfWZ1bmN0aW9uIHgoKXttLmNhbGwodGhpcywicDIyNCIsImZmZmZm ZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAw MDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gYigpe20uY2FsbCh0aGlzLCJwMTky IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZm ZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBfKCl7bS5jYWxsKHRoaXMsIjI1NTE5 IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZm ZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIHcodCl7aWYo InN0cmluZyI9PXR5cGVvZiB0KXt2YXIgZT1pLl9wcmltZSh0KTt0aGlzLm09 ZS5wLHRoaXMucHJpbWU9ZX1lbHNlIG4odC5ndG4oMSksIm1vZHVsdXMgbXVz dCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT10LHRoaXMucHJpbWU9bnVs bH1mdW5jdGlvbiBrKHQpe3cuY2FsbCh0aGlzLHQpLHRoaXMuc2hpZnQ9dGhp cy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0 Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IGkoMSkuaXVzaGxuKHRo aXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhp cy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5y aW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWlu dj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3Vi KHRoaXMubWludil9bS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciB0 PW5ldyBpKG51bGwpO3JldHVybiB0LndvcmRzPW5ldyBBcnJheShNYXRoLmNl aWwodGhpcy5uLzEzKSksdH0sbS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlv bih0KXt2YXIgZSxyPXQ7ZG97dGhpcy5zcGxpdChyLHRoaXMudG1wKSxlPShy PShyPXRoaXMuaW11bEsocikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgo KX13aGlsZShlPnRoaXMubik7dmFyIG49ZTx0aGlzLm4/LTE6ci51Y21wKHRo aXMucCk7cmV0dXJuIDA9PT1uPyhyLndvcmRzWzBdPTAsci5sZW5ndGg9MSk6 bj4wP3IuaXN1Yih0aGlzLnApOnIuc3RyaXAoKSxyfSxtLnByb3RvdHlwZS5z cGxpdD1mdW5jdGlvbih0LGUpe3QuaXVzaHJuKHRoaXMubiwwLGUpfSxtLnBy b3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pbXVsKHRoaXMu ayl9LGEoeSxtKSx5LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zv cih2YXIgcj1NYXRoLm1pbih0Lmxlbmd0aCw5KSxuPTA7bjxyO24rKyllLndv cmRzW25dPXQud29yZHNbbl07aWYoZS5sZW5ndGg9cix0Lmxlbmd0aDw9OSly ZXR1cm4gdC53b3Jkc1swXT0wLHZvaWQodC5sZW5ndGg9MSk7dmFyIGE9dC53 b3Jkc1s5XTtmb3IoZS53b3Jkc1tlLmxlbmd0aCsrXT00MTk0MzAzJmEsbj0x MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9MHx0LndvcmRzW25dO3Qud29yZHNb bi0xMF09KDQxOTQzMDMmaSk8PDR8YT4+PjIyLGE9aX1hPj4+PTIyLHQud29y ZHNbbi0xMF09YSwwPT09YSYmdC5sZW5ndGg+MTA/dC5sZW5ndGgtPTEwOnQu bGVuZ3RoLT05fSx5LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXt0Lndv cmRzW3QubGVuZ3RoXT0wLHQud29yZHNbdC5sZW5ndGgrMV09MCx0Lmxlbmd0 aCs9Mjtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPTB8 dC53b3Jkc1tyXTtlKz05Nzcqbix0LndvcmRzW3JdPTY3MTA4ODYzJmUsZT02 NCpuKyhlLzY3MTA4ODY0fDApfXJldHVybiAwPT09dC53b3Jkc1t0Lmxlbmd0 aC0xXSYmKHQubGVuZ3RoLS0sMD09PXQud29yZHNbdC5sZW5ndGgtMV0mJnQu bGVuZ3RoLS0pLHR9LGEoeCxtKSxhKGIsbSksYShfLG0pLF8ucHJvdG90eXBl LmltdWxLPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9MDtyPHQubGVuZ3Ro O3IrKyl7dmFyIG49MTkqKDB8dC53b3Jkc1tyXSkrZSxhPTY3MTA4ODYzJm47 bj4+Pj0yNix0LndvcmRzW3JdPWEsZT1ufXJldHVybiAwIT09ZSYmKHQud29y ZHNbdC5sZW5ndGgrK109ZSksdH0saS5fcHJpbWU9ZnVuY3Rpb24odCl7aWYo dlt0XSlyZXR1cm4gdlt0XTt2YXIgZTtpZigiazI1NiI9PT10KWU9bmV3IHk7 ZWxzZSBpZigicDIyNCI9PT10KWU9bmV3IHg7ZWxzZSBpZigicDE5MiI9PT10 KWU9bmV3IGI7ZWxzZXtpZigicDI1NTE5IiE9PXQpdGhyb3cgbmV3IEVycm9y KCJVbmtub3duIHByaW1lICIrdCk7ZT1uZXcgX31yZXR1cm4gdlt0XT1lLGV9 LHcucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKHQpe24oMD09PXQubmVn YXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksbih0LnJl ZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSx3LnByb3Rv dHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbih0LGUpe24oMD09KHQubmVnYXRpdmV8 ZS5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiks bih0LnJlZCYmdC5yZWQ9PT1lLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCBy ZWQgbnVtYmVycyIpfSx3LnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKHQpe3Jl dHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZSh0KS5fZm9yY2VS ZWQodGhpcyk6dC51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSx3LnBy b3RvdHlwZS5uZWc9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNaZXJvKCk/dC5j bG9uZSgpOnRoaXMubS5zdWIodCkuX2ZvcmNlUmVkKHRoaXMpfSx3LnByb3Rv dHlwZS5hZGQ9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFy IHI9dC5hZGQoZSk7cmV0dXJuIHIuY21wKHRoaXMubSk+PTAmJnIuaXN1Yih0 aGlzLm0pLHIuX2ZvcmNlUmVkKHRoaXMpfSx3LnByb3RvdHlwZS5pYWRkPWZ1 bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUpO3ZhciByPXQuaWFkZChl KTtyZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMubSkscn0s dy5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0 LGUpO3ZhciByPXQuc3ViKGUpO3JldHVybiByLmNtcG4oMCk8MCYmci5pYWRk KHRoaXMubSksci5fZm9yY2VSZWQodGhpcyl9LHcucHJvdG90eXBlLmlzdWI9 ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5pc3Vi KGUpO3JldHVybiByLmNtcG4oMCk8MCYmci5pYWRkKHRoaXMubSkscn0sdy5w cm90b3R5cGUuc2hsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3Zlcmlm eTEodCksdGhpcy5pbW9kKHQudXNobG4oZSkpfSx3LnByb3RvdHlwZS5pbXVs PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIodCxlKSx0aGlz Lmltb2QodC5pbXVsKGUpKX0sdy5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIodCxlKSx0aGlzLmltb2QodC5tdWwo ZSkpfSx3LnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz LmltdWwodCx0LmNsb25lKCkpfSx3LnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24o dCl7cmV0dXJuIHRoaXMubXVsKHQsdCl9LHcucHJvdG90eXBlLnNxcnQ9ZnVu Y3Rpb24odCl7aWYodC5pc1plcm8oKSlyZXR1cm4gdC5jbG9uZSgpO3ZhciBl PXRoaXMubS5hbmRsbigzKTtpZihuKGUlMj09MSksMz09PWUpe3ZhciByPXRo aXMubS5hZGQobmV3IGkoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3co dCxyKX1mb3IodmFyIGE9dGhpcy5tLnN1Ym4oMSksbz0wOyFhLmlzWmVybygp JiYwPT09YS5hbmRsbigxKTspbysrLGEuaXVzaHJuKDEpO24oIWEuaXNaZXJv KCkpO3ZhciBzPW5ldyBpKDEpLnRvUmVkKHRoaXMpLGw9cy5yZWROZWcoKSxj PXRoaXMubS5zdWJuKDEpLml1c2hybigxKSx1PXRoaXMubS5iaXRMZW5ndGgo KTtmb3IodT1uZXcgaSgyKnUqdSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93 KHUsYykuY21wKGwpOyl1LnJlZElBZGQobCk7Zm9yKHZhciBoPXRoaXMucG93 KHUsYSksZj10aGlzLnBvdyh0LGEuYWRkbigxKS5pdXNocm4oMSkpLHA9dGhp cy5wb3codCxhKSxkPW87MCE9PXAuY21wKHMpOyl7Zm9yKHZhciBnPXAsdj0w OzAhPT1nLmNtcChzKTt2KyspZz1nLnJlZFNxcigpO24odjxkKTt2YXIgbT10 aGlzLnBvdyhoLG5ldyBpKDEpLml1c2hsbihkLXYtMSkpO2Y9Zi5yZWRNdWwo bSksaD1tLnJlZFNxcigpLHA9cC5yZWRNdWwoaCksZD12fXJldHVybiBmfSx3 LnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2ludm1wKHRo aXMubSk7cmV0dXJuIDAhPT1lLm5lZ2F0aXZlPyhlLm5lZ2F0aXZlPTAsdGhp cy5pbW9kKGUpLnJlZE5lZygpKTp0aGlzLmltb2QoZSl9LHcucHJvdG90eXBl LnBvdz1mdW5jdGlvbih0LGUpe2lmKGUuaXNaZXJvKCkpcmV0dXJuIG5ldyBp KDEpLnRvUmVkKHRoaXMpO2lmKDA9PT1lLmNtcG4oMSkpcmV0dXJuIHQuY2xv bmUoKTt2YXIgcj1uZXcgQXJyYXkoMTYpO3JbMF09bmV3IGkoMSkudG9SZWQo dGhpcyksclsxXT10O2Zvcih2YXIgbj0yO248ci5sZW5ndGg7bisrKXJbbl09 dGhpcy5tdWwocltuLTFdLHQpO3ZhciBhPXJbMF0sbz0wLHM9MCxsPWUuYml0 TGVuZ3RoKCklMjY7Zm9yKDA9PT1sJiYobD0yNiksbj1lLmxlbmd0aC0xO24+ PTA7bi0tKXtmb3IodmFyIGM9ZS53b3Jkc1tuXSx1PWwtMTt1Pj0wO3UtLSl7 dmFyIGg9Yz4+dSYxO2EhPT1yWzBdJiYoYT10aGlzLnNxcihhKSksMCE9PWh8 fDAhPT1vPyhvPDw9MSxvfD1oLCg0PT09KytzfHwwPT09biYmMD09PXUpJiYo YT10aGlzLm11bChhLHJbb10pLHM9MCxvPTApKTpzPTB9bD0yNn1yZXR1cm4g YX0sdy5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHQpe3ZhciBlPXQu dW1vZCh0aGlzLm0pO3JldHVybiBlPT09dD9lLmNsb25lKCk6ZX0sdy5wcm90 b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24odCl7dmFyIGU9dC5jbG9uZSgp O3JldHVybiBlLnJlZD1udWxsLGV9LGkubW9udD1mdW5jdGlvbih0KXtyZXR1 cm4gbmV3IGsodCl9LGEoayx3KSxrLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVu Y3Rpb24odCl7cmV0dXJuIHRoaXMuaW1vZCh0LnVzaGxuKHRoaXMuc2hpZnQp KX0say5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5pbW9kKHQubXVsKHRoaXMucmludikpO3JldHVybiBlLnJlZD1udWxs LGV9LGsucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24odCxlKXtpZih0LmlzWmVy bygpfHxlLmlzWmVybygpKXJldHVybiB0LndvcmRzWzBdPTAsdC5sZW5ndGg9 MSx0O3ZhciByPXQuaW11bChlKSxuPXIubWFza24odGhpcy5zaGlmdCkubXVs KHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGE9 ci5pc3ViKG4pLml1c2hybih0aGlzLnNoaWZ0KSxpPWE7cmV0dXJuIGEuY21w KHRoaXMubSk+PTA/aT1hLmlzdWIodGhpcy5tKTphLmNtcG4oMCk8MCYmKGk9 YS5pYWRkKHRoaXMubSkpLGkuX2ZvcmNlUmVkKHRoaXMpfSxrLnByb3RvdHlw ZS5tdWw9ZnVuY3Rpb24odCxlKXtpZih0LmlzWmVybygpfHxlLmlzWmVybygp KXJldHVybiBuZXcgaSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHI9dC5tdWwo ZSksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNr bih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxhPXIuaXN1YihuKS5pdXNocm4o dGhpcy5zaGlmdCksbz1hO3JldHVybiBhLmNtcCh0aGlzLm0pPj0wP289YS5p c3ViKHRoaXMubSk6YS5jbXBuKDApPDAmJihvPWEuaWFkZCh0aGlzLm0pKSxv Ll9mb3JjZVJlZCh0aGlzKX0say5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih0 KXtyZXR1cm4gdGhpcy5pbW9kKHQuX2ludm1wKHRoaXMubSkubXVsKHRoaXMu cjIpKS5fZm9yY2VSZWQodGhpcyl9fSgidW5kZWZpbmVkIj09dHlwZW9mIGV8 fGUsdGhpcyl9LHtidWZmZXI6MTA1fV0sOTc6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixh PXQubGVuZ3RoLGk9MDtmb3IoZT0wO2U8YTsrK2UpaSs9dFtlXS5sZW5ndGg7 dmFyIG89bmV3IEFycmF5KGkpLHM9MDtmb3IoZT0wO2U8YTsrK2Upe3ZhciBs PXRbZV0sYz1sLmxlbmd0aDtmb3Iocj0wO3I8YzsrK3Ipe3ZhciB1PW9bcysr XT1uZXcgQXJyYXkoYy0xKSxoPTA7Zm9yKG49MDtuPGM7KytuKW4hPT1yJiYo dVtoKytdPWxbbl0pO2lmKDEmcil7dmFyIGY9dVsxXTt1WzFdPXVbMF0sdVsw XT1mfX19cmV0dXJuIG99fSx7fV0sOTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtzd2l0Y2goYXJn dW1lbnRzLmxlbmd0aCl7Y2FzZSAxOnJldHVybiBuPVtdLGMoYT10LGEsdSwh MCksbjtjYXNlIDI6cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/Yyh0LHQs ZSwhMCk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbj1bXSxjKHQsZSx1LCExKSxu fSh0LGUpO2Nhc2UgMzpyZXR1cm4gYyh0LGUsciwhMSk7ZGVmYXVsdDp0aHJv dyBuZXcgRXJyb3IoImJveC1pbnRlcnNlY3Q6IEludmFsaWQgYXJndW1lbnRz Iil9dmFyIGF9O3ZhciBuLGE9dCgidHlwZWRhcnJheS1wb29sIiksaT10KCIu L2xpYi9zd2VlcCIpLG89dCgiLi9saWIvaW50ZXJzZWN0Iik7ZnVuY3Rpb24g cyh0LGUpe2Zvcih2YXIgcj0wO3I8dDsrK3IpaWYoIShlW3JdPD1lW3IrdF0p KXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGwodCxlLHIsbil7Zm9yKHZh ciBhPTAsaT0wLG89MCxsPXQubGVuZ3RoO288bDsrK28pe3ZhciBjPXRbb107 aWYoIXMoZSxjKSl7Zm9yKHZhciB1PTA7dTwyKmU7Kyt1KXJbYSsrXT1jW3Vd O25baSsrXT1vfX1yZXR1cm4gaX1mdW5jdGlvbiBjKHQsZSxyLG4pe3ZhciBz PXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoIShzPD0wfHxjPD0wKSl7dmFyIHU9 dFswXS5sZW5ndGg+Pj4xO2lmKCEodTw9MCkpe3ZhciBoLGY9YS5tYWxsb2NE b3VibGUoMip1KnMpLHA9YS5tYWxsb2NJbnQzMihzKTtpZigocz1sKHQsdSxm LHApKT4wKXtpZigxPT09dSYmbilpLmluaXQocyksaD1pLnN3ZWVwQ29tcGxl dGUodSxyLDAscyxmLHAsMCxzLGYscCk7ZWxzZXt2YXIgZD1hLm1hbGxvY0Rv dWJsZSgyKnUqYyksZz1hLm1hbGxvY0ludDMyKGMpOyhjPWwoZSx1LGQsZykp PjAmJihpLmluaXQocytjKSxoPTE9PT11P2kuc3dlZXBCaXBhcnRpdGUodSxy LDAscyxmLHAsMCxjLGQsZyk6byh1LHIsbixzLGYscCxjLGQsZyksYS5mcmVl KGQpLGEuZnJlZShnKSl9YS5mcmVlKGYpLGEuZnJlZShwKX1yZXR1cm4gaH19 fWZ1bmN0aW9uIHUodCxlKXtuLnB1c2goW3QsZV0pfX0seyIuL2xpYi9pbnRl cnNlY3QiOjEwMCwiLi9saWIvc3dlZXAiOjEwNCwidHlwZWRhcnJheS1wb29s Ijo1NDR9XSw5OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj0iZCIsYT0iYXgiLGk9InZ2IixvPSJmcCIscz0iZXMiLGw9InJzIixjPSJy ZSIsdT0icmIiLGg9InJpIixmPSJycCIscD0iYnMiLGQ9ImJlIixnPSJiYiIs dj0iYmkiLG09ImJwIix5PSJydiIseD0iUSIsYj1bbixhLGksbCxjLHUsaCxw LGQsZyx2XTtmdW5jdGlvbiBfKHQpe3ZhciBlPSJicnV0ZUZvcmNlIisodD8i RnVsbCI6IlBhcnRpYWwiKSxyPVtdLF89Yi5zbGljZSgpO3R8fF8uc3BsaWNl KDMsMCxvKTt2YXIgdz1bImZ1bmN0aW9uICIrZSsiKCIrXy5qb2luKCkrIil7 Il07ZnVuY3Rpb24gayhlLG8pe3ZhciBfPWZ1bmN0aW9uKHQsZSxyKXt2YXIg bz0iYnJ1dGVGb3JjZSIrKHQ/IlJlZCI6IkJsdWUiKSsoZT8iRmxpcCI6IiIp KyhyPyJGdWxsIjoiIiksXz1bImZ1bmN0aW9uICIsbywiKCIsYi5qb2luKCks Iil7IiwidmFyICIscywiPTIqIixuLCI7Il0sdz0iZm9yKHZhciBpPSIrbCsi LCIrZisiPSIrcysiKiIrbCsiO2k8IitjKyI7KytpLCIrZisiKz0iK3MrIil7 dmFyIHgwPSIrdSsiWyIrYSsiKyIrZisiXSx4MT0iK3UrIlsiK2ErIisiK2Yr IisiK24rIl0seGk9IitoKyJbaV07IixrPSJmb3IodmFyIGo9IitwKyIsIitt KyI9IitzKyIqIitwKyI7ajwiK2QrIjsrK2osIittKyIrPSIrcysiKXt2YXIg eTA9IitnKyJbIithKyIrIittKyJdLCIrKHI/InkxPSIrZysiWyIrYSsiKyIr bSsiKyIrbisiXSwiOiIiKSsieWk9Iit2KyJbal07IjtyZXR1cm4gdD9fLnB1 c2godyx4LCI6IixrKTpfLnB1c2goayx4LCI6Iix3KSxyP18ucHVzaCgiaWYo eTE8eDB8fHgxPHkwKWNvbnRpbnVlOyIpOmU/Xy5wdXNoKCJpZih5MDw9eDB8 fHgxPHkwKWNvbnRpbnVlOyIpOl8ucHVzaCgiaWYoeTA8eDB8fHgxPHkwKWNv bnRpbnVlOyIpLF8ucHVzaCgiZm9yKHZhciBrPSIrYSsiKzE7azwiK24rIjsr K2spe3ZhciByMD0iK3UrIltrKyIrZisiXSxyMT0iK3UrIltrKyIrbisiKyIr ZisiXSxiMD0iK2crIltrKyIrbSsiXSxiMT0iK2crIltrKyIrbisiKyIrbSsi XTtpZihyMTxiMHx8YjE8cjApY29udGludWUgIit4KyI7fXZhciAiK3krIj0i K2krIigiKSxlP18ucHVzaCgieWkseGkiKTpfLnB1c2goInhpLHlpIiksXy5w dXNoKCIpO2lmKCIreSsiIT09dm9pZCAwKXJldHVybiAiK3krIjt9fX0iKSx7 bmFtZTpvLGNvZGU6Xy5qb2luKCIiKX19KGUsbyx0KTtyLnB1c2goXy5jb2Rl KSx3LnB1c2goInJldHVybiAiK18ubmFtZSsiKCIrYi5qb2luKCkrIik7Iil9 dy5wdXNoKCJpZigiK2MrIi0iK2wrIj4iK2QrIi0iK3ArIil7IiksdD8oaygh MCwhMSksdy5wdXNoKCJ9ZWxzZXsiKSxrKCExLCExKSk6KHcucHVzaCgiaWYo IitvKyIpeyIpLGsoITAsITApLHcucHVzaCgifWVsc2V7IiksayghMCwhMSks dy5wdXNoKCJ9fWVsc2V7aWYoIitvKyIpeyIpLGsoITEsITApLHcucHVzaCgi fWVsc2V7IiksayghMSwhMSksdy5wdXNoKCJ9IikpLHcucHVzaCgifX1yZXR1 cm4gIitlKTt2YXIgVD1yLmpvaW4oIiIpK3cuam9pbigiIik7cmV0dXJuIG5l dyBGdW5jdGlvbihUKSgpfXIucGFydGlhbD1fKCExKSxyLmZ1bGw9XyghMCl9 LHt9XSwxMDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyLGksdSxTLEUsTCxDKXshZnVuY3Rpb24odCxl KXt2YXIgcj04KmEubG9nMihlKzEpKih0KzEpfDAsaT1hLm5leHRQb3cyKGIq cik7dy5sZW5ndGg8aSYmKG4uZnJlZSh3KSx3PW4ubWFsbG9jSW50MzIoaSkp O3ZhciBvPWEubmV4dFBvdzIoXypyKTtrPG8mJihuLmZyZWUoayksaz1uLm1h bGxvY0RvdWJsZShvKSl9KHQsaStFKTt2YXIgUCxPPTAsej0yKnQ7VChPKyss MCwwLGksMCxFLHI/MTY6MCwtMS8wLDEvMCkscnx8VChPKyssMCwwLEUsMCxp LDEsLTEvMCwxLzApO2Zvcig7Tz4wOyl7dmFyIEk9KE8tPTEpKmIsRD13W0ld LFI9d1tJKzFdLEY9d1tJKzJdLEI9d1tJKzNdLE49d1tJKzRdLGo9d1tJKzVd LFY9TypfLFU9a1tWXSxxPWtbVisxXSxIPTEmaixHPSEhKDE2JmopLFk9dSxX PVMsWD1MLFo9QztpZihIJiYoWT1MLFc9QyxYPXUsWj1TKSwhKDImaiYmKEY9 dih0LEQsUixGLFksVyxxKSxSPj1GKXx8NCZqJiYoUj1tKHQsRCxSLEYsWSxX LFUpKT49Rikpe3ZhciBKPUYtUixLPU4tQjtpZihHKXtpZih0KkoqKEorSyk8 cCl7aWYodm9pZCAwIT09KFA9bC5zY2FuQ29tcGxldGUodCxELGUsUixGLFks VyxCLE4sWCxaKSkpcmV0dXJuIFA7Y29udGludWV9fWVsc2V7aWYodCpNYXRo Lm1pbihKLEspPGgpe2lmKHZvaWQgMCE9PShQPW8odCxELGUsSCxSLEYsWSxX LEIsTixYLFopKSlyZXR1cm4gUDtjb250aW51ZX1pZih0KkoqSzxmKXtpZih2 b2lkIDAhPT0oUD1sLnNjYW5CaXBhcnRpdGUodCxELGUsSCxSLEYsWSxXLEIs TixYLFopKSlyZXR1cm4gUDtjb250aW51ZX19dmFyIFE9ZCh0LEQsUixGLFks VyxVLHEpO2lmKFI8USlpZih0KihRLVIpPGgpe2lmKHZvaWQgMCE9PShQPXMo dCxEKzEsZSxSLFEsWSxXLEIsTixYLFopKSlyZXR1cm4gUH1lbHNlIGlmKEQ9 PT10LTIpe2lmKHZvaWQgMCE9PShQPUg/bC5zd2VlcEJpcGFydGl0ZSh0LGUs QixOLFgsWixSLFEsWSxXKTpsLnN3ZWVwQmlwYXJ0aXRlKHQsZSxSLFEsWSxX LEIsTixYLFopKSlyZXR1cm4gUH1lbHNlIFQoTysrLEQrMSxSLFEsQixOLEgs LTEvMCwxLzApLFQoTysrLEQrMSxCLE4sUixRLDFeSCwtMS8wLDEvMCk7aWYo UTxGKXt2YXIgJD1jKHQsRCxCLE4sWCxaKSx0dD1YW3oqJCtEXSxldD1nKHQs RCwkLE4sWCxaLHR0KTtpZihldDxOJiZUKE8rKyxELFEsRixldCxOLCg0fEgp KyhHPzE2OjApLHR0LHEpLEI8JCYmVChPKyssRCxRLEYsQiwkLCgyfEgpKyhH PzE2OjApLFUsdHQpLCQrMT09PWV0KXtpZih2b2lkIDAhPT0oUD1HP0EodCxE LGUsUSxGLFksVywkLFgsWlskXSk6TSh0LEQsZSxILFEsRixZLFcsJCxYLFpb JF0pKSlyZXR1cm4gUH1lbHNlIGlmKCQ8ZXQpe3ZhciBydDtpZihHKXtpZihy dD15KHQsRCxRLEYsWSxXLHR0KSxRPHJ0KXt2YXIgbnQ9Zyh0LEQsUSxydCxZ LFcsdHQpO2lmKEQ9PT10LTIpe2lmKFE8bnQmJnZvaWQgMCE9PShQPWwuc3dl ZXBDb21wbGV0ZSh0LGUsUSxudCxZLFcsJCxldCxYLFopKSlyZXR1cm4gUDtp ZihudDxydCYmdm9pZCAwIT09KFA9bC5zd2VlcEJpcGFydGl0ZSh0LGUsbnQs cnQsWSxXLCQsZXQsWCxaKSkpcmV0dXJuIFB9ZWxzZSBRPG50JiZUKE8rKyxE KzEsUSxudCwkLGV0LDE2LC0xLzAsMS8wKSxudDxydCYmKFQoTysrLEQrMSxu dCxydCwkLGV0LDAsLTEvMCwxLzApLFQoTysrLEQrMSwkLGV0LG50LHJ0LDEs LTEvMCwxLzApKX19ZWxzZSBydD1IP3godCxELFEsRixZLFcsdHQpOnkodCxE LFEsRixZLFcsdHQpLFE8cnQmJihEPT09dC0yP1A9SD9sLnN3ZWVwQmlwYXJ0 aXRlKHQsZSwkLGV0LFgsWixRLHJ0LFksVyk6bC5zd2VlcEJpcGFydGl0ZSh0 LGUsUSxydCxZLFcsJCxldCxYLFopOihUKE8rKyxEKzEsUSxydCwkLGV0LEgs LTEvMCwxLzApLFQoTysrLEQrMSwkLGV0LFEscnQsMV5ILC0xLzAsMS8wKSkp fX19fX07dmFyIG49dCgidHlwZWRhcnJheS1wb29sIiksYT10KCJiaXQtdHdp ZGRsZSIpLGk9dCgiLi9icnV0ZSIpLG89aS5wYXJ0aWFsLHM9aS5mdWxsLGw9 dCgiLi9zd2VlcCIpLGM9dCgiLi9tZWRpYW4iKSx1PXQoIi4vcGFydGl0aW9u IiksaD0xMjgsZj0xPDwyMixwPTE8PDIyLGQ9dSgiIShsbz49cDApJiYhKHAx Pj1oaSkiLFsicDAiLCJwMSJdKSxnPXUoImxvPT09cDAiLFsicDAiXSksdj11 KCJsbzxwMCIsWyJwMCJdKSxtPXUoImhpPD1wMCIsWyJwMCJdKSx5PXUoImxv PD1wMCYmcDA8PWhpIixbInAwIl0pLHg9dSgibG88cDAmJnAwPD1oaSIsWyJw MCJdKSxiPTYsXz0yLHc9bi5tYWxsb2NJbnQzMigxMDI0KSxrPW4ubWFsbG9j RG91YmxlKDEwMjQpO2Z1bmN0aW9uIFQodCxlLHIsbixhLGksbyxzLGwpe3Zh ciBjPWIqdDt3W2NdPWUsd1tjKzFdPXIsd1tjKzJdPW4sd1tjKzNdPWEsd1tj KzRdPWksd1tjKzVdPW87dmFyIHU9Xyp0O2tbdV09cyxrW3UrMV09bH1mdW5j dGlvbiBNKHQsZSxyLG4sYSxpLG8scyxsLGMsdSl7dmFyIGg9Mip0LGY9bCpo LHA9Y1tmK2VdO3Q6Zm9yKHZhciBkPWEsZz1hKmg7ZDxpOysrZCxnKz1oKXt2 YXIgdj1vW2crZV0sbT1vW2crZSt0XTtpZighKHA8dnx8bTxwKSYmKCFufHxw IT09dikpe2Zvcih2YXIgeSx4PXNbZF0sYj1lKzE7Yjx0OysrYil7dj1vW2cr Yl0sbT1vW2crYit0XTt2YXIgXz1jW2YrYl0sdz1jW2YrYit0XTtpZihtPF98 fHc8diljb250aW51ZSB0fWlmKHZvaWQgMCE9PSh5PW4/cih1LHgpOnIoeCx1 KSkpcmV0dXJuIHl9fX1mdW5jdGlvbiBBKHQsZSxyLG4sYSxpLG8scyxsLGMp e3ZhciB1PTIqdCxoPXMqdSxmPWxbaCtlXTt0OmZvcih2YXIgcD1uLGQ9bip1 O3A8YTsrK3AsZCs9dSl7dmFyIGc9b1twXTtpZihnIT09Yyl7dmFyIHY9aVtk K2VdLG09aVtkK2UrdF07aWYoIShmPHZ8fG08Zikpe2Zvcih2YXIgeT1lKzE7 eTx0OysreSl7dj1pW2QreV0sbT1pW2QreSt0XTt2YXIgeD1sW2greV0sYj1s W2greSt0XTtpZihtPHh8fGI8diljb250aW51ZSB0fXZhciBfPXIoZyxjKTtp Zih2b2lkIDAhPT1fKXJldHVybiBffX19fX0seyIuL2JydXRlIjo5OSwiLi9t ZWRpYW4iOjEwMSwiLi9wYXJ0aXRpb24iOjEwMiwiLi9zd2VlcCI6MTA0LCJi aXQtdHdpZGRsZSI6OTQsInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sMTAxOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscixvLHMsbCl7aWYobzw9cisxKXJldHVybiByO3ZhciBjPXIsdT1v LGg9bytyPj4+MSxmPTIqdCxwPWgsZD1zW2YqaCtlXTtmb3IoO2M8dTspe2lm KHUtYzxhKXtpKHQsZSxjLHUscyxsKSxkPXNbZipoK2VdO2JyZWFrfXZhciBn PXUtYyx2PU1hdGgucmFuZG9tKCkqZytjfDAsbT1zW2YqditlXSx5PU1hdGgu cmFuZG9tKCkqZytjfDAseD1zW2YqeStlXSxiPU1hdGgucmFuZG9tKCkqZytj fDAsXz1zW2YqYitlXTttPD14P18+PXg/KHA9eSxkPXgpOm0+PV8/KHA9dixk PW0pOihwPWIsZD1fKTp4Pj1fPyhwPXksZD14KTpfPj1tPyhwPXYsZD1tKToo cD1iLGQ9Xyk7Zm9yKHZhciB3PWYqKHUtMSksaz1mKnAsVD0wO1Q8ZjsrK1Qs Kyt3LCsrayl7dmFyIE09c1t3XTtzW3ddPXNba10sc1trXT1NfXZhciBBPWxb dS0xXTtsW3UtMV09bFtwXSxsW3BdPUEscD1uKHQsZSxjLHUtMSxzLGwsZCk7 Zm9yKHZhciB3PWYqKHUtMSksaz1mKnAsVD0wO1Q8ZjsrK1QsKyt3LCsrayl7 dmFyIE09c1t3XTtzW3ddPXNba10sc1trXT1NfXZhciBBPWxbdS0xXTtpZihs W3UtMV09bFtwXSxsW3BdPUEsaDxwKXtmb3IodT1wLTE7Yzx1JiZzW2YqKHUt MSkrZV09PT1kOyl1LT0xO3UrPTF9ZWxzZXtpZighKHA8aCkpYnJlYWs7Zm9y KGM9cCsxO2M8dSYmc1tmKmMrZV09PT1kOyljKz0xfX1yZXR1cm4gbih0LGUs cixoLHMsbCxzW2YqaCtlXSl9O3ZhciBuPXQoIi4vcGFydGl0aW9uIikoImxv PHAwIixbInAwIl0pLGE9ODtmdW5jdGlvbiBpKHQsZSxyLG4sYSxpKXtmb3Io dmFyIG89Mip0LHM9byoocisxKStlLGw9cisxO2w8bjsrK2wscys9bylmb3Io dmFyIGM9YVtzXSx1PWwsaD1vKihsLTEpO3U+ciYmYVtoK2VdPmM7LS11LGgt PW8pe2Zvcih2YXIgZj1oLHA9aCtvLGQ9MDtkPG87KytkLCsrZiwrK3Ape3Zh ciBnPWFbZl07YVtmXT1hW3BdLGFbcF09Z312YXIgdj1pW3VdO2lbdV09aVt1 LTFdLGlbdS0xXT12fX19LHsiLi9wYXJ0aXRpb24iOjEwMn1dLDEwMjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXt2YXIgcj0iYWJjZGVmIi5zcGxpdCgiIikuY29uY2F0KGUpLGE9W107 dC5pbmRleE9mKCJsbyIpPj0wJiZhLnB1c2goImxvPWVbaytuXSIpO3QuaW5k ZXhPZigiaGkiKT49MCYmYS5wdXNoKCJoaT1lW2srb10iKTtyZXR1cm4gci5w dXNoKG4ucmVwbGFjZSgiXyIsYS5qb2luKCkpLnJlcGxhY2UoIiQiLHQpKSxG dW5jdGlvbi5hcHBseSh2b2lkIDAscil9O3ZhciBuPSJmb3IodmFyIGo9Miph LGs9aipjLGw9ayxtPWMsbj1iLG89YStiLHA9YztkPnA7KytwLGsrPWope3Zh ciBfO2lmKCQpaWYobT09PXApbSs9MSxsKz1qO2Vsc2V7Zm9yKHZhciBzPTA7 aj5zOysrcyl7dmFyIHQ9ZVtrK3NdO2VbaytzXT1lW2xdLGVbbCsrXT10fXZh ciB1PWZbcF07ZltwXT1mW21dLGZbbSsrXT11fX1yZXR1cm4gbSJ9LHt9XSwx MDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7ZTw9NCpuP2EoMCxlLTEsdCk6ZnVuY3Rpb24gdChlLHIs aCl7dmFyIGY9KHItZSsxKS82fDAscD1lK2YsZD1yLWYsZz1lK3I+PjEsdj1n LWYsbT1nK2YseT1wLHg9dixiPWcsXz1tLHc9ZCxrPWUrMSxUPXItMSxNPTA7 Yyh5LHgsaCkmJihNPXkseT14LHg9TSk7YyhfLHcsaCkmJihNPV8sXz13LHc9 TSk7Yyh5LGIsaCkmJihNPXkseT1iLGI9TSk7Yyh4LGIsaCkmJihNPXgseD1i LGI9TSk7Yyh5LF8saCkmJihNPXkseT1fLF89TSk7YyhiLF8saCkmJihNPWIs Yj1fLF89TSk7Yyh4LHcsaCkmJihNPXgseD13LHc9TSk7Yyh4LGIsaCkmJihN PXgseD1iLGI9TSk7YyhfLHcsaCkmJihNPV8sXz13LHc9TSk7dmFyIEE9aFsy KnhdO3ZhciBTPWhbMip4KzFdO3ZhciBFPWhbMipfXTt2YXIgTD1oWzIqXysx XTt2YXIgQz0yKnk7dmFyIFA9MipiO3ZhciBPPTIqdzt2YXIgej0yKnA7dmFy IEk9MipnO3ZhciBEPTIqZDtmb3IodmFyIFI9MDtSPDI7KytSKXt2YXIgRj1o W0MrUl0sQj1oW1ArUl0sTj1oW08rUl07aFt6K1JdPUYsaFtJK1JdPUIsaFtE K1JdPU59byh2LGUsaCk7byhtLHIsaCk7Zm9yKHZhciBqPWs7ajw9VDsrK2op aWYodShqLEEsUyxoKSlqIT09ayYmaShqLGssaCksKytrO2Vsc2UgaWYoIXUo aixFLEwsaCkpZm9yKDs7KXtpZih1KFQsRSxMLGgpKXt1KFQsQSxTLGgpPyhz KGosayxULGgpLCsraywtLVQpOihpKGosVCxoKSwtLVQpO2JyZWFrfWlmKC0t VDxqKWJyZWFrfWwoZSxrLTEsQSxTLGgpO2wocixUKzEsRSxMLGgpO2stMi1l PD1uP2EoZSxrLTIsaCk6dChlLGstMixoKTtyLShUKzIpPD1uP2EoVCsyLHIs aCk6dChUKzIscixoKTtULWs8PW4/YShrLFQsaCk6dChrLFQsaCl9KDAsZS0x LHQpfTt2YXIgbj0zMjtmdW5jdGlvbiBhKHQsZSxyKXtmb3IodmFyIG49Mioo dCsxKSxhPXQrMTthPD1lOysrYSl7Zm9yKHZhciBpPXJbbisrXSxvPXJbbisr XSxzPWEsbD1uLTI7cy0tID50Oyl7dmFyIGM9cltsLTJdLHU9cltsLTFdO2lm KGM8aSlicmVhaztpZihjPT09aSYmdTxvKWJyZWFrO3JbbF09YyxyW2wrMV09 dSxsLT0yfXJbbF09aSxyW2wrMV09b319ZnVuY3Rpb24gaSh0LGUscil7ZSo9 Mjt2YXIgbj1yW3QqPTJdLGE9clt0KzFdO3JbdF09cltlXSxyW3QrMV09cltl KzFdLHJbZV09bixyW2UrMV09YX1mdW5jdGlvbiBvKHQsZSxyKXtlKj0yLHJb dCo9Ml09cltlXSxyW3QrMV09cltlKzFdfWZ1bmN0aW9uIHModCxlLHIsbil7 ZSo9MixyKj0yO3ZhciBhPW5bdCo9Ml0saT1uW3QrMV07blt0XT1uW2VdLG5b dCsxXT1uW2UrMV0sbltlXT1uW3JdLG5bZSsxXT1uW3IrMV0sbltyXT1hLG5b cisxXT1pfWZ1bmN0aW9uIGwodCxlLHIsbixhKXtlKj0yLGFbdCo9Ml09YVtl XSxhW2VdPXIsYVt0KzFdPWFbZSsxXSxhW2UrMV09bn1mdW5jdGlvbiBjKHQs ZSxyKXtlKj0yO3ZhciBuPXJbdCo9Ml0sYT1yW2VdO3JldHVybiEobjxhKSYm KG4hPT1hfHxyW3QrMV0+cltlKzFdKX1mdW5jdGlvbiB1KHQsZSxyLG4pe3Zh ciBhPW5bdCo9Ml07cmV0dXJuIGE8ZXx8YT09PWUmJm5bdCsxXTxyfX0se31d LDEwNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 e2luaXQ6ZnVuY3Rpb24odCl7dmFyIGU9YS5uZXh0UG93Mih0KTtzLmxlbmd0 aDxlJiYobi5mcmVlKHMpLHM9bi5tYWxsb2NJbnQzMihlKSk7bC5sZW5ndGg8 ZSYmKG4uZnJlZShsKSxsPW4ubWFsbG9jSW50MzIoZSkpO2MubGVuZ3RoPGUm JihuLmZyZWUoYyksYz1uLm1hbGxvY0ludDMyKGUpKTt1Lmxlbmd0aDxlJiYo bi5mcmVlKHUpLHU9bi5tYWxsb2NJbnQzMihlKSk7aC5sZW5ndGg8ZSYmKG4u ZnJlZShoKSxoPW4ubWFsbG9jSW50MzIoZSkpO2YubGVuZ3RoPGUmJihuLmZy ZWUoZiksZj1uLm1hbGxvY0ludDMyKGUpKTt2YXIgcj04KmU7cC5sZW5ndGg8 ciYmKG4uZnJlZShwKSxwPW4ubWFsbG9jRG91YmxlKHIpKX0sc3dlZXBCaXBh cnRpdGU6ZnVuY3Rpb24odCxlLHIsbixhLGgsZix2LG0seSl7Zm9yKHZhciB4 PTAsYj0yKnQsXz10LTEsdz1iLTEsaz1yO2s8bjsrK2spe3ZhciBUPWhba10s TT1iKms7cFt4KytdPWFbTStfXSxwW3grK109LShUKzEpLHBbeCsrXT1hW00r d10scFt4KytdPVR9Zm9yKHZhciBrPWY7azx2Oysrayl7dmFyIFQ9eVtrXStv LEE9YiprO3BbeCsrXT1tW0ErX10scFt4KytdPS1ULHBbeCsrXT1tW0Erd10s cFt4KytdPVR9dmFyIFM9eD4+PjE7aShwLFMpO2Zvcih2YXIgRT0wLEw9MCxr PTA7azxTOysrayl7dmFyIEM9MHxwWzIqaysxXTtpZihDPj1vKWQoYyx1LEwt LSxDPUMtb3wwKTtlbHNlIGlmKEM+PTApZChzLGwsRS0tLEMpO2Vsc2UgaWYo Qzw9LW8pe0M9LUMtb3wwO2Zvcih2YXIgUD0wO1A8RTsrK1Ape3ZhciBPPWUo c1tQXSxDKTtpZih2b2lkIDAhPT1PKXJldHVybiBPfWcoYyx1LEwrKyxDKX1l bHNle0M9LUMtMXwwO2Zvcih2YXIgUD0wO1A8TDsrK1Ape3ZhciBPPWUoQyxj W1BdKTtpZih2b2lkIDAhPT1PKXJldHVybiBPfWcocyxsLEUrKyxDKX19fSxz d2VlcENvbXBsZXRlOmZ1bmN0aW9uKHQsZSxyLG4sYSxvLHYsbSx5LHgpe2Zv cih2YXIgYj0wLF89Mip0LHc9dC0xLGs9Xy0xLFQ9cjtUPG47KytUKXt2YXIg TT1vW1RdKzE8PDEsQT1fKlQ7cFtiKytdPWFbQSt3XSxwW2IrK109LU0scFti KytdPWFbQStrXSxwW2IrK109TX1mb3IodmFyIFQ9djtUPG07KytUKXt2YXIg TT14W1RdKzE8PDEsUz1fKlQ7cFtiKytdPXlbUyt3XSxwW2IrK109MXwtTSxw W2IrK109eVtTK2tdLHBbYisrXT0xfE19dmFyIEU9Yj4+PjE7aShwLEUpO2Zv cih2YXIgTD0wLEM9MCxQPTAsVD0wO1Q8RTsrK1Qpe3ZhciBPPTB8cFsyKlQr MV0sej0xJk87aWYoVDxFLTEmJk8+PjE9PXBbMipUKzNdPj4xJiYoej0yLFQr PTEpLE88MCl7Zm9yKHZhciBJPS0oTz4+MSktMSxEPTA7RDxQOysrRCl7dmFy IFI9ZShoW0RdLEkpO2lmKHZvaWQgMCE9PVIpcmV0dXJuIFJ9aWYoMCE9PXop Zm9yKHZhciBEPTA7RDxMOysrRCl7dmFyIFI9ZShzW0RdLEkpO2lmKHZvaWQg MCE9PVIpcmV0dXJuIFJ9aWYoMSE9PXopZm9yKHZhciBEPTA7RDxDOysrRCl7 dmFyIFI9ZShjW0RdLEkpO2lmKHZvaWQgMCE9PVIpcmV0dXJuIFJ9MD09PXo/ ZyhzLGwsTCsrLEkpOjE9PT16P2coYyx1LEMrKyxJKToyPT09eiYmZyhoLGYs UCsrLEkpfWVsc2V7dmFyIEk9KE8+PjEpLTE7MD09PXo/ZChzLGwsTC0tLEkp OjE9PT16P2QoYyx1LEMtLSxJKToyPT09eiYmZChoLGYsUC0tLEkpfX19LHNj YW5CaXBhcnRpdGU6ZnVuY3Rpb24odCxlLHIsbixhLGMsdSxoLGYsdixtLHkp e3ZhciB4PTAsYj0yKnQsXz1lLHc9ZSt0LGs9MSxUPTE7bj9UPW86az1vO2Zv cih2YXIgTT1hO008YzsrK00pe3ZhciBBPU0rayxTPWIqTTtwW3grK109dVtT K19dLHBbeCsrXT0tQSxwW3grK109dVtTK3ddLHBbeCsrXT1BfWZvcih2YXIg TT1mO008djsrK00pe3ZhciBBPU0rVCxFPWIqTTtwW3grK109bVtFK19dLHBb eCsrXT0tQX12YXIgTD14Pj4+MTtpKHAsTCk7Zm9yKHZhciBDPTAsTT0wO008 TDsrK00pe3ZhciBQPTB8cFsyKk0rMV07aWYoUDwwKXt2YXIgQT0tUCxPPSEx O2lmKEE+PW8/KE89IW4sQS09byk6KE89ISFuLEEtPTEpLE8pZyhzLGwsQysr LEEpO2Vsc2V7dmFyIHo9eVtBXSxJPWIqQSxEPW1bSStlKzFdLFI9bVtJK2Ur MSt0XTt0OmZvcih2YXIgRj0wO0Y8QzsrK0Ype3ZhciBCPXNbRl0sTj1iKkI7 aWYoIShSPHVbTitlKzFdfHx1W04rZSsxK3RdPEQpKXtmb3IodmFyIGo9ZSsy O2o8dDsrK2opaWYobVtJK2ordF08dVtOK2pdfHx1W04rait0XTxtW0kral0p Y29udGludWUgdDt2YXIgVixVPWhbQl07aWYodm9pZCAwIT09KFY9bj9yKHos VSk6cihVLHopKSlyZXR1cm4gVn19fX1lbHNlIGQocyxsLEMtLSxQLWspfX0s c2NhbkNvbXBsZXRlOmZ1bmN0aW9uKHQsZSxyLG4sYSxsLGMsdSxoLGYsZCl7 Zm9yKHZhciBnPTAsdj0yKnQsbT1lLHk9ZSt0LHg9bjt4PGE7Kyt4KXt2YXIg Yj14K28sXz12Kng7cFtnKytdPWxbXyttXSxwW2crK109LWIscFtnKytdPWxb Xyt5XSxwW2crK109Yn1mb3IodmFyIHg9dTt4PGg7Kyt4KXt2YXIgYj14KzEs dz12Kng7cFtnKytdPWZbdyttXSxwW2crK109LWJ9dmFyIGs9Zz4+PjE7aShw LGspO2Zvcih2YXIgVD0wLHg9MDt4PGs7Kyt4KXt2YXIgTT0wfHBbMip4KzFd O2lmKE08MCl7dmFyIGI9LU07aWYoYj49bylzW1QrK109Yi1vO2Vsc2V7dmFy IEE9ZFtiLT0xXSxTPXYqYixFPWZbUytlKzFdLEw9ZltTK2UrMSt0XTt0OmZv cih2YXIgQz0wO0M8VDsrK0Mpe3ZhciBQPXNbQ10sTz1jW1BdO2lmKE89PT1B KWJyZWFrO3ZhciB6PXYqUDtpZighKEw8bFt6K2UrMV18fGxbeitlKzErdF08 RSkpe2Zvcih2YXIgST1lKzI7STx0OysrSSlpZihmW1MrSSt0XTxsW3orSV18 fGxbeitJK3RdPGZbUytJXSljb250aW51ZSB0O3ZhciBEPXIoTyxBKTtpZih2 b2lkIDAhPT1EKXJldHVybiBEfX19fWVsc2V7Zm9yKHZhciBiPU0tbyxDPVQt MTtDPj0wOy0tQylpZihzW0NdPT09Yil7Zm9yKHZhciBJPUMrMTtJPFQ7KytJ KXNbSS0xXT1zW0ldO2JyZWFrfS0tVH19fX07dmFyIG49dCgidHlwZWRhcnJh eS1wb29sIiksYT10KCJiaXQtdHdpZGRsZSIpLGk9dCgiLi9zb3J0Iiksbz0x PDwyOCxzPW4ubWFsbG9jSW50MzIoMTAyNCksbD1uLm1hbGxvY0ludDMyKDEw MjQpLGM9bi5tYWxsb2NJbnQzMigxMDI0KSx1PW4ubWFsbG9jSW50MzIoMTAy NCksaD1uLm1hbGxvY0ludDMyKDEwMjQpLGY9bi5tYWxsb2NJbnQzMigxMDI0 KSxwPW4ubWFsbG9jRG91YmxlKDgxOTIpO2Z1bmN0aW9uIGQodCxlLHIsbil7 dmFyIGE9ZVtuXSxpPXRbci0xXTt0W2FdPWksZVtpXT1hfWZ1bmN0aW9uIGco dCxlLHIsbil7dFtyXT1uLGVbbl09cn19LHsiLi9zb3J0IjoxMDMsImJpdC10 d2lkZGxlIjo5NCwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwxMDU6W2Z1bmN0 aW9uKHQsZSxyKXt9LHt9XSwxMDY6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj1P YmplY3QuY3JlYXRlfHxmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe307 cmV0dXJuIGUucHJvdG90eXBlPXQsbmV3IGV9LGE9T2JqZWN0LmtleXN8fGZ1 bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90 b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiZlLnB1c2gocik7cmV0 dXJuIHJ9LGk9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmR8fGZ1bmN0aW9uKHQp e3ZhciBlPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHko dCxhcmd1bWVudHMpfX07ZnVuY3Rpb24gbygpe3RoaXMuX2V2ZW50cyYmT2Jq ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsIl9ldmVu dHMiKXx8KHRoaXMuX2V2ZW50cz1uKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50 PTApLHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZv aWQgMH1lLmV4cG9ydHM9byxvLkV2ZW50RW1pdHRlcj1vLG8ucHJvdG90eXBl Ll9ldmVudHM9dm9pZCAwLG8ucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9p ZCAwO3ZhciBzLGw9MTA7dHJ5e3ZhciBjPXt9O09iamVjdC5kZWZpbmVQcm9w ZXJ0eSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIngiLHt2YWx1ZTowfSks cz0wPT09Yy54fWNhdGNoKHQpe3M9ITF9ZnVuY3Rpb24gdSh0KXtyZXR1cm4g dm9pZCAwPT09dC5fbWF4TGlzdGVuZXJzP28uZGVmYXVsdE1heExpc3RlbmVy czp0Ll9tYXhMaXN0ZW5lcnN9ZnVuY3Rpb24gaCh0LGUscixhKXt2YXIgaSxv LHM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJv cignImxpc3RlbmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtp Zigobz10Ll9ldmVudHMpPyhvLm5ld0xpc3RlbmVyJiYodC5lbWl0KCJuZXdM aXN0ZW5lciIsZSxyLmxpc3RlbmVyP3IubGlzdGVuZXI6ciksbz10Ll9ldmVu dHMpLHM9b1tlXSk6KG89dC5fZXZlbnRzPW4obnVsbCksdC5fZXZlbnRzQ291 bnQ9MCkscyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHM/cz1vW2VdPWE/W3Is c106W3Mscl06YT9zLnVuc2hpZnQocik6cy5wdXNoKHIpLCFzLndhcm5lZCYm KGk9dSh0KSkmJmk+MCYmcy5sZW5ndGg+aSl7cy53YXJuZWQ9ITA7dmFyIGw9 bmV3IEVycm9yKCJQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsg ZGV0ZWN0ZWQuICIrcy5sZW5ndGgrJyAiJytTdHJpbmcoZSkrJyIgbGlzdGVu ZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBp bmNyZWFzZSBsaW1pdC4nKTtsLm5hbWU9Ik1heExpc3RlbmVyc0V4Y2VlZGVk V2FybmluZyIsbC5lbWl0dGVyPXQsbC50eXBlPWUsbC5jb3VudD1zLmxlbmd0 aCwib2JqZWN0Ij09dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29u c29sZS53YXJuKCIlczogJXMiLGwubmFtZSxsLm1lc3NhZ2UpfX1lbHNlIHM9 b1tlXT1yLCsrdC5fZXZlbnRzQ291bnQ7cmV0dXJuIHR9ZnVuY3Rpb24gZigp e2lmKCF0aGlzLmZpcmVkKXN3aXRjaCh0aGlzLnRhcmdldC5yZW1vdmVMaXN0 ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsYXJn dW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0aGlzLmxpc3RlbmVyLmNh bGwodGhpcy50YXJnZXQpO2Nhc2UgMTpyZXR1cm4gdGhpcy5saXN0ZW5lci5j YWxsKHRoaXMudGFyZ2V0LGFyZ3VtZW50c1swXSk7Y2FzZSAyOnJldHVybiB0 aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQsYXJndW1lbnRzWzBdLGFy Z3VtZW50c1sxXSk7Y2FzZSAzOnJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwo dGhpcy50YXJnZXQsYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVu dHNbMl0pO2RlZmF1bHQ6Zm9yKHZhciB0PW5ldyBBcnJheShhcmd1bWVudHMu bGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDsrK2UpdFtlXT1hcmd1bWVudHNbZV07 dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCx0KX19ZnVuY3Rpb24g cCh0LGUscil7dmFyIG49e2ZpcmVkOiExLHdyYXBGbjp2b2lkIDAsdGFyZ2V0 OnQsdHlwZTplLGxpc3RlbmVyOnJ9LGE9aS5jYWxsKGYsbik7cmV0dXJuIGEu bGlzdGVuZXI9cixuLndyYXBGbj1hLGF9ZnVuY3Rpb24gZCh0LGUscil7dmFy IG49dC5fZXZlbnRzO2lmKCFuKXJldHVybltdO3ZhciBhPW5bZV07cmV0dXJu IGE/ImZ1bmN0aW9uIj09dHlwZW9mIGE/cj9bYS5saXN0ZW5lcnx8YV06W2Fd OnI/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCks cj0wO3I8ZS5sZW5ndGg7KytyKWVbcl09dFtyXS5saXN0ZW5lcnx8dFtyXTty ZXR1cm4gZX0oYSk6dihhLGEubGVuZ3RoKTpbXX1mdW5jdGlvbiBnKHQpe3Zh ciBlPXRoaXMuX2V2ZW50cztpZihlKXt2YXIgcj1lW3RdO2lmKCJmdW5jdGlv biI9PXR5cGVvZiByKXJldHVybiAxO2lmKHIpcmV0dXJuIHIubGVuZ3RofXJl dHVybiAwfWZ1bmN0aW9uIHYodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KGUp LG49MDtuPGU7KytuKXJbbl09dFtuXTtyZXR1cm4gcn1zP09iamVjdC5kZWZp bmVQcm9wZXJ0eShvLCJkZWZhdWx0TWF4TGlzdGVuZXJzIix7ZW51bWVyYWJs ZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sc2V0OmZ1bmN0aW9uKHQp e2lmKCJudW1iZXIiIT10eXBlb2YgdHx8dDwwfHx0IT10KXRocm93IG5ldyBU eXBlRXJyb3IoJyJkZWZhdWx0TWF4TGlzdGVuZXJzIiBtdXN0IGJlIGEgcG9z aXRpdmUgbnVtYmVyJyk7bD10fX0pOm8uZGVmYXVsdE1heExpc3RlbmVycz1s LG8ucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbih0KXtpZigi bnVtYmVyIiE9dHlwZW9mIHR8fHQ8MHx8aXNOYU4odCkpdGhyb3cgbmV3IFR5 cGVFcnJvcignIm4iIGFyZ3VtZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1i ZXInKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPXQsdGhpc30sby5wcm90 b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHUodGhp cyl9LG8ucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odCl7dmFyIGUscixuLGEs aSxvLHM9ImVycm9yIj09PXQ7aWYobz10aGlzLl9ldmVudHMpcz1zJiZudWxs PT1vLmVycm9yO2Vsc2UgaWYoIXMpcmV0dXJuITE7aWYocyl7aWYoYXJndW1l bnRzLmxlbmd0aD4xJiYoZT1hcmd1bWVudHNbMV0pLGUgaW5zdGFuY2VvZiBF cnJvcil0aHJvdyBlO3ZhciBsPW5ldyBFcnJvcignVW5oYW5kbGVkICJlcnJv ciIgZXZlbnQuICgnK2UrIikiKTt0aHJvdyBsLmNvbnRleHQ9ZSxsfWlmKCEo cj1vW3RdKSlyZXR1cm4hMTt2YXIgYz0iZnVuY3Rpb24iPT10eXBlb2Ygcjtz d2l0Y2gobj1hcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6IWZ1bmN0aW9uKHQs ZSxyKXtpZihlKXQuY2FsbChyKTtlbHNlIGZvcih2YXIgbj10Lmxlbmd0aCxh PXYodCxuKSxpPTA7aTxuOysraSlhW2ldLmNhbGwocil9KHIsYyx0aGlzKTti cmVhaztjYXNlIDI6IWZ1bmN0aW9uKHQsZSxyLG4pe2lmKGUpdC5jYWxsKHIs bik7ZWxzZSBmb3IodmFyIGE9dC5sZW5ndGgsaT12KHQsYSksbz0wO288YTsr K28paVtvXS5jYWxsKHIsbil9KHIsYyx0aGlzLGFyZ3VtZW50c1sxXSk7YnJl YWs7Y2FzZSAzOiFmdW5jdGlvbih0LGUscixuLGEpe2lmKGUpdC5jYWxsKHIs bixhKTtlbHNlIGZvcih2YXIgaT10Lmxlbmd0aCxvPXYodCxpKSxzPTA7czxp OysrcylvW3NdLmNhbGwocixuLGEpfShyLGMsdGhpcyxhcmd1bWVudHNbMV0s YXJndW1lbnRzWzJdKTticmVhaztjYXNlIDQ6IWZ1bmN0aW9uKHQsZSxyLG4s YSxpKXtpZihlKXQuY2FsbChyLG4sYSxpKTtlbHNlIGZvcih2YXIgbz10Lmxl bmd0aCxzPXYodCxvKSxsPTA7bDxvOysrbClzW2xdLmNhbGwocixuLGEsaSl9 KHIsYyx0aGlzLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sYXJndW1lbnRz WzNdKTticmVhaztkZWZhdWx0OmZvcihhPW5ldyBBcnJheShuLTEpLGk9MTtp PG47aSsrKWFbaS0xXT1hcmd1bWVudHNbaV07IWZ1bmN0aW9uKHQsZSxyLG4p e2lmKGUpdC5hcHBseShyLG4pO2Vsc2UgZm9yKHZhciBhPXQubGVuZ3RoLGk9 dih0LGEpLG89MDtvPGE7KytvKWlbb10uYXBwbHkocixuKX0ocixjLHRoaXMs YSl9cmV0dXJuITB9LG8ucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIGgodGhpcyx0LGUsITEpfSxvLnByb3RvdHlwZS5vbj1v LnByb3RvdHlwZS5hZGRMaXN0ZW5lcixvLnByb3RvdHlwZS5wcmVwZW5kTGlz dGVuZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaCh0aGlzLHQsZSwhMCl9LG8u cHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10 eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdGVuZXIiIGFyZ3Vt ZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO3JldHVybiB0aGlzLm9uKHQscCh0 aGlzLHQsZSkpLHRoaXN9LG8ucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVu ZXI9ZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJv dyBuZXcgVHlwZUVycm9yKCcibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUg YSBmdW5jdGlvbicpO3JldHVybiB0aGlzLnByZXBlbmRMaXN0ZW5lcih0LHAo dGhpcyx0LGUpKSx0aGlzfSxvLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1m dW5jdGlvbih0LGUpe3ZhciByLGEsaSxvLHM7aWYoImZ1bmN0aW9uIiE9dHlw ZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3RlbmVyIiBhcmd1bWVu dCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtpZighKGE9dGhpcy5fZXZlbnRzKSly ZXR1cm4gdGhpcztpZighKHI9YVt0XSkpcmV0dXJuIHRoaXM7aWYocj09PWV8 fHIubGlzdGVuZXI9PT1lKTA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5f ZXZlbnRzPW4obnVsbCk6KGRlbGV0ZSBhW3RdLGEucmVtb3ZlTGlzdGVuZXIm JnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLHQsci5saXN0ZW5lcnx8ZSkp O2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIHIpe2ZvcihpPS0xLG89ci5s ZW5ndGgtMTtvPj0wO28tLSlpZihyW29dPT09ZXx8cltvXS5saXN0ZW5lcj09 PWUpe3M9cltvXS5saXN0ZW5lcixpPW87YnJlYWt9aWYoaTwwKXJldHVybiB0 aGlzOzA9PT1pP3Iuc2hpZnQoKTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1l LG49cisxLGE9dC5sZW5ndGg7bjxhO3IrPTEsbis9MSl0W3JdPXRbbl07dC5w b3AoKX0ocixpKSwxPT09ci5sZW5ndGgmJihhW3RdPXJbMF0pLGEucmVtb3Zl TGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLHQsc3x8ZSl9 cmV0dXJuIHRoaXN9LG8ucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1m dW5jdGlvbih0KXt2YXIgZSxyLGk7aWYoIShyPXRoaXMuX2V2ZW50cykpcmV0 dXJuIHRoaXM7aWYoIXIucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1 bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9bihudWxsKSx0aGlzLl9ldmVu dHNDb3VudD0wKTpyW3RdJiYoMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlz Ll9ldmVudHM9bihudWxsKTpkZWxldGUgclt0XSksdGhpcztpZigwPT09YXJn dW1lbnRzLmxlbmd0aCl7dmFyIG8scz1hKHIpO2ZvcihpPTA7aTxzLmxlbmd0 aDsrK2kpInJlbW92ZUxpc3RlbmVyIiE9PShvPXNbaV0pJiZ0aGlzLnJlbW92 ZUFsbExpc3RlbmVycyhvKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5l cnMoInJlbW92ZUxpc3RlbmVyIiksdGhpcy5fZXZlbnRzPW4obnVsbCksdGhp cy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZihl PXJbdF0pKXRoaXMucmVtb3ZlTGlzdGVuZXIodCxlKTtlbHNlIGlmKGUpZm9y KGk9ZS5sZW5ndGgtMTtpPj0wO2ktLSl0aGlzLnJlbW92ZUxpc3RlbmVyKHQs ZVtpXSk7cmV0dXJuIHRoaXN9LG8ucHJvdG90eXBlLmxpc3RlbmVycz1mdW5j dGlvbih0KXtyZXR1cm4gZCh0aGlzLHQsITApfSxvLnByb3RvdHlwZS5yYXdM aXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuIGQodGhpcyx0LCExKX0sby5s aXN0ZW5lckNvdW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09 dHlwZW9mIHQubGlzdGVuZXJDb3VudD90Lmxpc3RlbmVyQ291bnQoZSk6Zy5j YWxsKHQsZSl9LG8ucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9ZyxvLnByb3Rv dHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50 c0NvdW50PjA/UmVmbGVjdC5vd25LZXlzKHRoaXMuX2V2ZW50cyk6W119fSx7 fV0sMTA3OltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCJiYXNlNjQtanMiKSxhPXQoImllZWU3NTQiKSxpPSJm dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJmdW5jdGlvbiI9PXR5cGVvZiBT eW1ib2wuZm9yP1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3Vz dG9tIik6bnVsbDtyLkJ1ZmZlcj1lLHIuU2xvd0J1ZmZlcj1mdW5jdGlvbih0 KXsrdCE9dCYmKHQ9MCk7cmV0dXJuIGUuYWxsb2MoK3QpfSxyLklOU1BFQ1Rf TUFYX0JZVEVTPTUwO3ZhciBvPTIxNDc0ODM2NDc7ZnVuY3Rpb24gcyh0KXtp Zih0Pm8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJyt0Kyci IGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTt2YXIgcj1uZXcgVWlu dDhBcnJheSh0KTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHIsZS5w cm90b3R5cGUpLHJ9ZnVuY3Rpb24gZSh0LGUscil7aWYoIm51bWJlciI9PXR5 cGVvZiB0KXtpZigic3RyaW5nIj09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVF cnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBz dHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7cmV0dXJuIHUodCl9cmV0 dXJuIGwodCxlLHIpfWZ1bmN0aW9uIGwodCxyLG4pe2lmKCJzdHJpbmciPT10 eXBlb2YgdClyZXR1cm4gZnVuY3Rpb24odCxyKXsic3RyaW5nIj09dHlwZW9m IHImJiIiIT09cnx8KHI9InV0ZjgiKTtpZighZS5pc0VuY29kaW5nKHIpKXRo cm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcik7dmFy IG49MHxwKHQsciksYT1zKG4pLGk9YS53cml0ZSh0LHIpO2khPT1uJiYoYT1h LnNsaWNlKDAsaSkpO3JldHVybiBhfSh0LHIpO2lmKEFycmF5QnVmZmVyLmlz Vmlldyh0KSlyZXR1cm4gaCh0KTtpZihudWxsPT10KXRocm93IG5ldyBUeXBl RXJyb3IoIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBl IHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5 LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIHQpO2lmKGoo dCxBcnJheUJ1ZmZlcil8fHQmJmoodC5idWZmZXIsQXJyYXlCdWZmZXIpKXJl dHVybiBmdW5jdGlvbih0LHIsbil7aWYocjwwfHx0LmJ5dGVMZW5ndGg8cil0 aHJvdyBuZXcgUmFuZ2VFcnJvcignIm9mZnNldCIgaXMgb3V0c2lkZSBvZiBi dWZmZXIgYm91bmRzJyk7aWYodC5ieXRlTGVuZ3RoPHIrKG58fDApKXRocm93 IG5ldyBSYW5nZUVycm9yKCcibGVuZ3RoIiBpcyBvdXRzaWRlIG9mIGJ1ZmZl ciBib3VuZHMnKTt2YXIgYTthPXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3 IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIp Om5ldyBVaW50OEFycmF5KHQscixuKTtyZXR1cm4gT2JqZWN0LnNldFByb3Rv dHlwZU9mKGEsZS5wcm90b3R5cGUpLGF9KHQscixuKTtpZigibnVtYmVyIj09 dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ2YWx1ZSIgYXJn dW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5 cGUgbnVtYmVyJyk7dmFyIGE9dC52YWx1ZU9mJiZ0LnZhbHVlT2YoKTtpZihu dWxsIT1hJiZhIT09dClyZXR1cm4gZS5mcm9tKGEscixuKTt2YXIgaT1mdW5j dGlvbih0KXtpZihlLmlzQnVmZmVyKHQpKXt2YXIgcj0wfGYodC5sZW5ndGgp LG49cyhyKTtyZXR1cm4gMD09PW4ubGVuZ3RoP246KHQuY29weShuLDAsMCxy KSxuKX1pZih2b2lkIDAhPT10Lmxlbmd0aClyZXR1cm4ibnVtYmVyIiE9dHlw ZW9mIHQubGVuZ3RofHxWKHQubGVuZ3RoKT9zKDApOmgodCk7aWYoIkJ1ZmZl ciI9PT10LnR5cGUmJkFycmF5LmlzQXJyYXkodC5kYXRhKSlyZXR1cm4gaCh0 LmRhdGEpfSh0KTtpZihpKXJldHVybiBpO2lmKCJ1bmRlZmluZWQiIT10eXBl b2YgU3ltYm9sJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5jdGlv biI9PXR5cGVvZiB0W1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIGUuZnJv bSh0W1N5bWJvbC50b1ByaW1pdGl2ZV0oInN0cmluZyIpLHIsbik7dGhyb3cg bmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25l IG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwg b3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2Yg dCl9ZnVuY3Rpb24gYyh0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cg bmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlw ZSBudW1iZXInKTtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2 YWx1ZSAiJyt0KyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1m dW5jdGlvbiB1KHQpe3JldHVybiBjKHQpLHModDwwPzA6MHxmKHQpKX1mdW5j dGlvbiBoKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDwwPzA6MHxmKHQubGVuZ3Ro KSxyPXMoZSksbj0wO248ZTtuKz0xKXJbbl09MjU1JnRbbl07cmV0dXJuIHJ9 ZnVuY3Rpb24gZih0KXtpZih0Pj1vKXRocm93IG5ldyBSYW5nZUVycm9yKCJB dHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVt IHNpemU6IDB4IitvLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8 dH1mdW5jdGlvbiBwKHQscil7aWYoZS5pc0J1ZmZlcih0KSlyZXR1cm4gdC5s ZW5ndGg7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHQpfHxqKHQsQXJyYXlCdWZm ZXIpKXJldHVybiB0LmJ5dGVMZW5ndGg7aWYoInN0cmluZyIhPXR5cGVvZiB0 KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic3RyaW5nIiBhcmd1bWVudCBt dXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1 ZmZlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTt2YXIgbj10Lmxlbmd0 aCxhPWFyZ3VtZW50cy5sZW5ndGg+MiYmITA9PT1hcmd1bWVudHNbMl07aWYo IWEmJjA9PT1uKXJldHVybiAwO2Zvcih2YXIgaT0hMTs7KXN3aXRjaChyKXtj YXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBu O2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIEYodCkubGVuZ3RoO2Nh c2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0x NmxlIjpyZXR1cm4gMipuO2Nhc2UiaGV4IjpyZXR1cm4gbj4+PjE7Y2FzZSJi YXNlNjQiOnJldHVybiBCKHQpLmxlbmd0aDtkZWZhdWx0OmlmKGkpcmV0dXJu IGE/LTE6Rih0KS5sZW5ndGg7cj0oIiIrcikudG9Mb3dlckNhc2UoKSxpPSEw fX1mdW5jdGlvbiBkKHQsZSxyKXt2YXIgbj10W2VdO3RbZV09dFtyXSx0W3Jd PW59ZnVuY3Rpb24gZyh0LHIsbixhLGkpe2lmKDA9PT10Lmxlbmd0aClyZXR1 cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIG4/KGE9bixuPTApOm4+MjE0NzQ4 MzY0Nz9uPTIxNDc0ODM2NDc6bjwtMjE0NzQ4MzY0OCYmKG49LTIxNDc0ODM2 NDgpLFYobj0rbikmJihuPWk/MDp0Lmxlbmd0aC0xKSxuPDAmJihuPXQubGVu Z3RoK24pLG4+PXQubGVuZ3RoKXtpZihpKXJldHVybi0xO249dC5sZW5ndGgt MX1lbHNlIGlmKG48MCl7aWYoIWkpcmV0dXJuLTE7bj0wfWlmKCJzdHJpbmci PT10eXBlb2YgciYmKHI9ZS5mcm9tKHIsYSkpLGUuaXNCdWZmZXIocikpcmV0 dXJuIDA9PT1yLmxlbmd0aD8tMTp2KHQscixuLGEsaSk7aWYoIm51bWJlciI9 PXR5cGVvZiByKXJldHVybiByJj0yNTUsImZ1bmN0aW9uIj09dHlwZW9mIFVp bnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/aT9VaW50OEFycmF5LnByb3Rv dHlwZS5pbmRleE9mLmNhbGwodCxyLG4pOlVpbnQ4QXJyYXkucHJvdG90eXBl Lmxhc3RJbmRleE9mLmNhbGwodCxyLG4pOnYodCxbcl0sbixhLGkpO3Rocm93 IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9y IEJ1ZmZlciIpfWZ1bmN0aW9uIHYodCxlLHIsbixhKXt2YXIgaSxvPTEscz10 Lmxlbmd0aCxsPWUubGVuZ3RoO2lmKHZvaWQgMCE9PW4mJigidWNzMiI9PT0o bj1TdHJpbmcobikudG9Mb3dlckNhc2UoKSl8fCJ1Y3MtMiI9PT1ufHwidXRm MTZsZSI9PT1ufHwidXRmLTE2bGUiPT09bikpe2lmKHQubGVuZ3RoPDJ8fGUu bGVuZ3RoPDIpcmV0dXJuLTE7bz0yLHMvPTIsbC89MixyLz0yfWZ1bmN0aW9u IGModCxlKXtyZXR1cm4gMT09PW8/dFtlXTp0LnJlYWRVSW50MTZCRShlKm8p fWlmKGEpe3ZhciB1PS0xO2ZvcihpPXI7aTxzO2krKylpZihjKHQsaSk9PT1j KGUsLTE9PT11PzA6aS11KSl7aWYoLTE9PT11JiYodT1pKSxpLXUrMT09PWwp cmV0dXJuIHUqb31lbHNlLTEhPT11JiYoaS09aS11KSx1PS0xfWVsc2UgZm9y KHIrbD5zJiYocj1zLWwpLGk9cjtpPj0wO2ktLSl7Zm9yKHZhciBoPSEwLGY9 MDtmPGw7ZisrKWlmKGModCxpK2YpIT09YyhlLGYpKXtoPSExO2JyZWFrfWlm KGgpcmV0dXJuIGl9cmV0dXJuLTF9ZnVuY3Rpb24gbSh0LGUscixuKXtyPU51 bWJlcihyKXx8MDt2YXIgYT10Lmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5h JiYobj1hKTpuPWE7dmFyIGk9ZS5sZW5ndGg7bj5pLzImJihuPWkvMik7Zm9y KHZhciBvPTA7bzxuOysrbyl7dmFyIHM9cGFyc2VJbnQoZS5zdWJzdHIoMipv LDIpLDE2KTtpZihWKHMpKXJldHVybiBvO3RbcitvXT1zfXJldHVybiBvfWZ1 bmN0aW9uIHkodCxlLHIsbil7cmV0dXJuIE4oRihlLHQubGVuZ3RoLXIpLHQs cixuKX1mdW5jdGlvbiB4KHQsZSxyLG4pe3JldHVybiBOKGZ1bmN0aW9uKHQp e2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKDI1NSZ0 LmNoYXJDb2RlQXQocikpO3JldHVybiBlfShlKSx0LHIsbil9ZnVuY3Rpb24g Yih0LGUscixuKXtyZXR1cm4geCh0LGUscixuKX1mdW5jdGlvbiBfKHQsZSxy LG4pe3JldHVybiBOKEIoZSksdCxyLG4pfWZ1bmN0aW9uIHcodCxlLHIsbil7 cmV0dXJuIE4oZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbixhLGk9W10sbz0w O288dC5sZW5ndGgmJiEoKGUtPTIpPDApOysrbylyPXQuY2hhckNvZGVBdChv KSxuPXI+PjgsYT1yJTI1NixpLnB1c2goYSksaS5wdXNoKG4pO3JldHVybiBp fShlLHQubGVuZ3RoLXIpLHQscixuKX1mdW5jdGlvbiBrKHQsZSxyKXtyZXR1 cm4gMD09PWUmJnI9PT10Lmxlbmd0aD9uLmZyb21CeXRlQXJyYXkodCk6bi5m cm9tQnl0ZUFycmF5KHQuc2xpY2UoZSxyKSl9ZnVuY3Rpb24gVCh0LGUscil7 cj1NYXRoLm1pbih0Lmxlbmd0aCxyKTtmb3IodmFyIG49W10sYT1lO2E8cjsp e3ZhciBpLG8scyxsLGM9dFthXSx1PW51bGwsaD1jPjIzOT80OmM+MjIzPzM6 Yz4xOTE/MjoxO2lmKGEraDw9cilzd2l0Y2goaCl7Y2FzZSAxOmM8MTI4JiYo dT1jKTticmVhaztjYXNlIDI6MTI4PT0oMTkyJihpPXRbYSsxXSkpJiYobD0o MzEmYyk8PDZ8NjMmaSk+MTI3JiYodT1sKTticmVhaztjYXNlIDM6aT10W2Er MV0sbz10W2ErMl0sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJihsPSgx NSZjKTw8MTJ8KDYzJmkpPDw2fDYzJm8pPjIwNDcmJihsPDU1Mjk2fHxsPjU3 MzQzKSYmKHU9bCk7YnJlYWs7Y2FzZSA0Omk9dFthKzFdLG89dFthKzJdLHM9 dFthKzNdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTIm cykmJihsPSgxNSZjKTw8MTh8KDYzJmkpPDwxMnwoNjMmbyk8PDZ8NjMmcyk+ NjU1MzUmJmw8MTExNDExMiYmKHU9bCl9bnVsbD09PXU/KHU9NjU1MzMsaD0x KTp1PjY1NTM1JiYodS09NjU1MzYsbi5wdXNoKHU+Pj4xMCYxMDIzfDU1Mjk2 KSx1PTU2MzIwfDEwMjMmdSksbi5wdXNoKHUpLGErPWh9cmV0dXJuIGZ1bmN0 aW9uKHQpe3ZhciBlPXQubGVuZ3RoO2lmKGU8PU0pcmV0dXJuIFN0cmluZy5m cm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHQpO3ZhciByPSIiLG49MDtmb3Io O248ZTspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdC5z bGljZShuLG4rPU0pKTtyZXR1cm4gcn0obil9ci5rTWF4TGVuZ3RoPW8sZS5U WVBFRF9BUlJBWV9TVVBQT1JUPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PW5ldyBV aW50OEFycmF5KDEpLGU9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3Jl dHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSxVaW50OEFycmF5LnByb3Rv dHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSksNDI9PT10LmZvbygp fWNhdGNoKHQpe3JldHVybiExfX0oKSxlLlRZUEVEX0FSUkFZX1NVUFBPUlR8 fCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZXx8ImZ1bmN0aW9uIiE9dHlw ZW9mIGNvbnNvbGUuZXJyb3J8fGNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3Nl ciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGlj aCBpcyByZXF1aXJlZCBieSBgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAg djQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LiIpLE9i amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGFyZW50Iix7ZW51 bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihlLmlzQnVmZmVyKHRoaXMp KXJldHVybiB0aGlzLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko ZS5wcm90b3R5cGUsIm9mZnNldCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0 aW9uKCl7aWYoZS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zm c2V0fX0pLCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1TeW1i b2wuc3BlY2llcyYmZVtTeW1ib2wuc3BlY2llc109PT1lJiZPYmplY3QuZGVm aW5lUHJvcGVydHkoZSxTeW1ib2wuc3BlY2llcyx7dmFsdWU6bnVsbCxjb25m aWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMX0pLGUucG9v bFNpemU9ODE5MixlLmZyb209ZnVuY3Rpb24odCxlLHIpe3JldHVybiBsKHQs ZSxyKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKGUucHJvdG90eXBlLFVpbnQ4 QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoZSxVaW50 OEFycmF5KSxlLmFsbG9jPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZnVuY3Rp b24odCxlLHIpe3JldHVybiBjKHQpLHQ8PTA/cyh0KTp2b2lkIDAhPT1lPyJz dHJpbmciPT10eXBlb2Ygcj9zKHQpLmZpbGwoZSxyKTpzKHQpLmZpbGwoZSk6 cyh0KX0odCxlLHIpfSxlLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe3JldHVy biB1KHQpfSxlLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbih0KXtyZXR1cm4g dSh0KX0sZS5pc0J1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYm ITA9PT10Ll9pc0J1ZmZlciYmdCE9PWUucHJvdG90eXBlfSxlLmNvbXBhcmU9 ZnVuY3Rpb24odCxyKXtpZihqKHQsVWludDhBcnJheSkmJih0PWUuZnJvbSh0 LHQub2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLGoocixVaW50OEFycmF5KSYmKHI9 ZS5mcm9tKHIsci5vZmZzZXQsci5ieXRlTGVuZ3RoKSksIWUuaXNCdWZmZXIo dCl8fCFlLmlzQnVmZmVyKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAi YnVmMSIsICJidWYyIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBC dWZmZXIgb3IgVWludDhBcnJheScpO2lmKHQ9PT1yKXJldHVybiAwO2Zvcih2 YXIgbj10Lmxlbmd0aCxhPXIubGVuZ3RoLGk9MCxvPU1hdGgubWluKG4sYSk7 aTxvOysraSlpZih0W2ldIT09cltpXSl7bj10W2ldLGE9cltpXTticmVha31y ZXR1cm4gbjxhPy0xOmE8bj8xOjB9LGUuaXNFbmNvZGluZz1mdW5jdGlvbih0 KXtzd2l0Y2goU3RyaW5nKHQpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4Ijpj YXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4x IjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1 Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtk ZWZhdWx0OnJldHVybiExfX0sZS5jb25jYXQ9ZnVuY3Rpb24odCxyKXtpZigh QXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIg YXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09 PXQubGVuZ3RoKXJldHVybiBlLmFsbG9jKDApO3ZhciBuO2lmKHZvaWQgMD09 PXIpZm9yKHI9MCxuPTA7bjx0Lmxlbmd0aDsrK24pcis9dFtuXS5sZW5ndGg7 dmFyIGE9ZS5hbGxvY1Vuc2FmZShyKSxpPTA7Zm9yKG49MDtuPHQubGVuZ3Ro Oysrbil7dmFyIG89dFtuXTtpZihqKG8sVWludDhBcnJheSkmJihvPWUuZnJv bShvKSksIWUuaXNCdWZmZXIobykpdGhyb3cgbmV3IFR5cGVFcnJvcignImxp c3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO28u Y29weShhLGkpLGkrPW8ubGVuZ3RofXJldHVybiBhfSxlLmJ5dGVMZW5ndGg9 cCxlLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsZS5wcm90b3R5cGUuc3dhcDE2 PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCUyIT0wKXRocm93 IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlw bGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgZT0wO2U8dDtlKz0yKWQodGhpcyxl LGUrMSk7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlv bigpe3ZhciB0PXRoaXMubGVuZ3RoO2lmKHQlNCE9MCl0aHJvdyBuZXcgUmFu Z2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMy LWJpdHMiKTtmb3IodmFyIGU9MDtlPHQ7ZSs9NClkKHRoaXMsZSxlKzMpLGQo dGhpcyxlKzEsZSsyKTtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuc3dhcDY0 PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCU4IT0wKXRocm93 IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlw bGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgZT0wO2U8dDtlKz04KWQodGhpcyxl LGUrNyksZCh0aGlzLGUrMSxlKzYpLGQodGhpcyxlKzIsZSs1KSxkKHRoaXMs ZSszLGUrNCk7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1 bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT10PyIiOjA9 PT1hcmd1bWVudHMubGVuZ3RoP1QodGhpcywwLHQpOmZ1bmN0aW9uKHQsZSxy KXt2YXIgbj0hMTtpZigodm9pZCAwPT09ZXx8ZTwwKSYmKGU9MCksZT50aGlz Lmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0 aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTAp PD0oZT4+Pj0wKSlyZXR1cm4iIjtmb3IodHx8KHQ9InV0ZjgiKTs7KXN3aXRj aCh0KXtjYXNlImhleCI6cmV0dXJuIEUodGhpcyxlLHIpO2Nhc2UidXRmOCI6 Y2FzZSJ1dGYtOCI6cmV0dXJuIFQodGhpcyxlLHIpO2Nhc2UiYXNjaWkiOnJl dHVybiBBKHRoaXMsZSxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJl dHVybiBTKHRoaXMsZSxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIGsodGhpcyxl LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNl InV0Zi0xNmxlIjpyZXR1cm4gTCh0aGlzLGUscik7ZGVmYXVsdDppZihuKXRo cm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrdCk7dD0o dCsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX0uYXBwbHkodGhpcyxhcmd1bWVu dHMpfSxlLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZz1lLnByb3RvdHlwZS50 b1N0cmluZyxlLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7aWYoIWUu aXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVz dCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09dHx8MD09PWUuY29tcGFy ZSh0aGlzLHQpfSxlLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFy IHQ9IiIsZT1yLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB0PXRoaXMudG9T dHJpbmcoImhleCIsMCxlKS5yZXBsYWNlKC8oLnsyfSkvZywiJDEgIikudHJp bSgpLHRoaXMubGVuZ3RoPmUmJih0Kz0iIC4uLiAiKSwiPEJ1ZmZlciAiK3Qr Ij4ifSxpJiYoZS5wcm90b3R5cGVbaV09ZS5wcm90b3R5cGUuaW5zcGVjdCks ZS5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbih0LHIsbixhLGkpe2lmKGoo dCxVaW50OEFycmF5KSYmKHQ9ZS5mcm9tKHQsdC5vZmZzZXQsdC5ieXRlTGVu Z3RoKSksIWUuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhl ICJ0YXJnZXQiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVy IG9yIFVpbnQ4QXJyYXkuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7aWYo dm9pZCAwPT09ciYmKHI9MCksdm9pZCAwPT09biYmKG49dD90Lmxlbmd0aDow KSx2b2lkIDA9PT1hJiYoYT0wKSx2b2lkIDA9PT1pJiYoaT10aGlzLmxlbmd0 aCkscjwwfHxuPnQubGVuZ3RofHxhPDB8fGk+dGhpcy5sZW5ndGgpdGhyb3cg bmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKGE+PWkm JnI+PW4pcmV0dXJuIDA7aWYoYT49aSlyZXR1cm4tMTtpZihyPj1uKXJldHVy biAxO2lmKHRoaXM9PT10KXJldHVybiAwO2Zvcih2YXIgbz0oaT4+Pj0wKS0o YT4+Pj0wKSxzPShuPj4+PTApLShyPj4+PTApLGw9TWF0aC5taW4obyxzKSxj PXRoaXMuc2xpY2UoYSxpKSx1PXQuc2xpY2UocixuKSxoPTA7aDxsOysraClp ZihjW2hdIT09dVtoXSl7bz1jW2hdLHM9dVtoXTticmVha31yZXR1cm4gbzxz Py0xOnM8bz8xOjB9LGUucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKHQs ZSxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZih0LGUscil9LGUucHJvdG90 eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBnKHRoaXMsdCxl LHIsITApfSxlLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbih0LGUs cil7cmV0dXJuIGcodGhpcyx0LGUsciwhMSl9LGUucHJvdG90eXBlLndyaXRl PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHZvaWQgMD09PWUpbj0idXRmOCIscj10 aGlzLmxlbmd0aCxlPTA7ZWxzZSBpZih2b2lkIDA9PT1yJiYic3RyaW5nIj09 dHlwZW9mIGUpbj1lLHI9dGhpcy5sZW5ndGgsZT0wO2Vsc2V7aWYoIWlzRmlu aXRlKGUpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywg ZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBw b3J0ZWQiKTtlPj4+PTAsaXNGaW5pdGUocik/KHI+Pj49MCx2b2lkIDA9PT1u JiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgYT10aGlzLmxlbmd0 aC1lO2lmKCh2b2lkIDA9PT1yfHxyPmEpJiYocj1hKSx0Lmxlbmd0aD4wJiYo cjwwfHxlPDApfHxlPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9y KCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258 fChuPSJ1dGY4Iik7Zm9yKHZhciBpPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4 IjpyZXR1cm4gbSh0aGlzLHQsZSxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgi OnJldHVybiB5KHRoaXMsdCxlLHIpO2Nhc2UiYXNjaWkiOnJldHVybiB4KHRo aXMsdCxlLHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGIo dGhpcyx0LGUscik7Y2FzZSJiYXNlNjQiOnJldHVybiBfKHRoaXMsdCxlLHIp O2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0 Zi0xNmxlIjpyZXR1cm4gdyh0aGlzLHQsZSxyKTtkZWZhdWx0OmlmKGkpdGhy b3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgi IituKS50b0xvd2VyQ2FzZSgpLGk9ITB9fSxlLnByb3RvdHlwZS50b0pTT049 ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnBy b3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBN PTQwOTY7ZnVuY3Rpb24gQSh0LGUscil7dmFyIG49IiI7cj1NYXRoLm1pbih0 Lmxlbmd0aCxyKTtmb3IodmFyIGE9ZTthPHI7KythKW4rPVN0cmluZy5mcm9t Q2hhckNvZGUoMTI3JnRbYV0pO3JldHVybiBufWZ1bmN0aW9uIFModCxlLHIp e3ZhciBuPSIiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKHZhciBhPWU7 YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbYV0pO3JldHVybiBu fWZ1bmN0aW9uIEUodCxlLHIpe3ZhciBuPXQubGVuZ3RoOyghZXx8ZTwwKSYm KGU9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgYT0iIixpPWU7 aTxyOysraSlhKz1SKHRbaV0pO3JldHVybiBhfWZ1bmN0aW9uIEwodCxlLHIp e2Zvcih2YXIgbj10LnNsaWNlKGUsciksYT0iIixpPTA7aTxuLmxlbmd0aDtp Kz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUobltpXSsyNTYqbltpKzFdKTty ZXR1cm4gYX1mdW5jdGlvbiBDKHQsZSxyKXtpZih0JTEhPTB8fHQ8MCl0aHJv dyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYodCtl PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5 b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBQKHQscixuLGEsaSxvKXtp ZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVy IiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYocj5p fHxyPG8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQg aXMgb3V0IG9mIGJvdW5kcycpO2lmKG4rYT50Lmxlbmd0aCl0aHJvdyBuZXcg UmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gTyh0 LGUscixuLGEsaSl7aWYocituPnQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVy cm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihyPDApdGhyb3cgbmV3IFJh bmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIHoodCxl LHIsbixpKXtyZXR1cm4gZT0rZSxyPj4+PTAsaXx8Tyh0LDAsciw0KSxhLndy aXRlKHQsZSxyLG4sMjMsNCkscis0fWZ1bmN0aW9uIEkodCxlLHIsbixpKXty ZXR1cm4gZT0rZSxyPj4+PTAsaXx8Tyh0LDAsciw4KSxhLndyaXRlKHQsZSxy LG4sNTIsOCkscis4fWUucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKHQscil7 dmFyIG49dGhpcy5sZW5ndGg7KHQ9fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0 Pm4mJih0PW4pLChyPXZvaWQgMD09PXI/bjp+fnIpPDA/KHIrPW4pPDAmJihy PTApOnI+biYmKHI9bikscjx0JiYocj10KTt2YXIgYT10aGlzLnN1YmFycmF5 KHQscik7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihhLGUucHJvdG90 eXBlKSxhfSxlLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKHQsZSxy KXt0Pj4+PTAsZT4+Pj0wLHJ8fEModCxlLHRoaXMubGVuZ3RoKTtmb3IodmFy IG49dGhpc1t0XSxhPTEsaT0wOysraTxlJiYoYSo9MjU2KTspbis9dGhpc1t0 K2ldKmE7cmV0dXJuIG59LGUucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rp b24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8Qyh0LGUsdGhpcy5sZW5ndGgp O2Zvcih2YXIgbj10aGlzW3QrLS1lXSxhPTE7ZT4wJiYoYSo9MjU2KTspbis9 dGhpc1t0Ky0tZV0qYTtyZXR1cm4gbn0sZS5wcm90b3R5cGUucmVhZFVJbnQ4 PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxDKHQsMSx0aGlzLmxl bmd0aCksdGhpc1t0XX0sZS5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxDKHQsMix0aGlzLmxlbmd0aCks dGhpc1t0XXx0aGlzW3QrMV08PDh9LGUucHJvdG90eXBlLnJlYWRVSW50MTZC RT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8Qyh0LDIsdGhpcy5s ZW5ndGgpLHRoaXNbdF08PDh8dGhpc1t0KzFdfSxlLnByb3RvdHlwZS5yZWFk VUludDMyTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEModCw0 LHRoaXMubGVuZ3RoKSwodGhpc1t0XXx0aGlzW3QrMV08PDh8dGhpc1t0KzJd PDwxNikrMTY3NzcyMTYqdGhpc1t0KzNdfSxlLnByb3RvdHlwZS5yZWFkVUlu dDMyQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEModCw0LHRo aXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW3RdKyh0aGlzW3QrMV08PDE2fHRo aXNbdCsyXTw8OHx0aGlzW3QrM10pfSxlLnByb3RvdHlwZS5yZWFkSW50TEU9 ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8Qyh0LGUsdGhpcy5s ZW5ndGgpO2Zvcih2YXIgbj10aGlzW3RdLGE9MSxpPTA7KytpPGUmJihhKj0y NTYpOyluKz10aGlzW3QraV0qYTtyZXR1cm4gbj49KGEqPTEyOCkmJihuLT1N YXRoLnBvdygyLDgqZSkpLG59LGUucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5j dGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxDKHQsZSx0aGlzLmxlbmd0 aCk7Zm9yKHZhciBuPWUsYT0xLGk9dGhpc1t0Ky0tbl07bj4wJiYoYSo9MjU2 KTspaSs9dGhpc1t0Ky0tbl0qYTtyZXR1cm4gaT49KGEqPTEyOCkmJihpLT1N YXRoLnBvdygyLDgqZSkpLGl9LGUucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxDKHQsMSx0aGlzLmxlbmd0aCks MTI4JnRoaXNbdF0/LTEqKDI1NS10aGlzW3RdKzEpOnRoaXNbdF19LGUucHJv dG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKHQsZSl7dD4+Pj0wLGV8fEMo dCwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW3RdfHRoaXNbdCsxXTw8ODty ZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sZS5wcm90b3R5cGUucmVh ZEludDE2QkU9ZnVuY3Rpb24odCxlKXt0Pj4+PTAsZXx8Qyh0LDIsdGhpcy5s ZW5ndGgpO3ZhciByPXRoaXNbdCsxXXx0aGlzW3RdPDw4O3JldHVybiAzMjc2 OCZyPzQyOTQ5MDE3NjB8cjpyfSxlLnByb3RvdHlwZS5yZWFkSW50MzJMRT1m dW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8Qyh0LDQsdGhpcy5sZW5n dGgpLHRoaXNbdF18dGhpc1t0KzFdPDw4fHRoaXNbdCsyXTw8MTZ8dGhpc1t0 KzNdPDwyNH0sZS5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24odCxl KXtyZXR1cm4gdD4+Pj0wLGV8fEModCw0LHRoaXMubGVuZ3RoKSx0aGlzW3Rd PDwyNHx0aGlzW3QrMV08PDE2fHRoaXNbdCsyXTw8OHx0aGlzW3QrM119LGUu cHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+ Pj49MCxlfHxDKHQsNCx0aGlzLmxlbmd0aCksYS5yZWFkKHRoaXMsdCwhMCwy Myw0KX0sZS5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24odCxlKXty ZXR1cm4gdD4+Pj0wLGV8fEModCw0LHRoaXMubGVuZ3RoKSxhLnJlYWQodGhp cyx0LCExLDIzLDQpfSxlLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rp b24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEModCw4LHRoaXMubGVuZ3RoKSxh LnJlYWQodGhpcyx0LCEwLDUyLDgpfSxlLnByb3RvdHlwZS5yZWFkRG91Ymxl QkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEModCw4LHRoaXMu bGVuZ3RoKSxhLnJlYWQodGhpcyx0LCExLDUyLDgpfSxlLnByb3RvdHlwZS53 cml0ZVVJbnRMRT1mdW5jdGlvbih0LGUscixuKXsodD0rdCxlPj4+PTAscj4+ Pj0wLG4pfHxQKHRoaXMsdCxlLHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFy IGE9MSxpPTA7Zm9yKHRoaXNbZV09MjU1JnQ7KytpPHImJihhKj0yNTYpOyl0 aGlzW2UraV09dC9hJjI1NTtyZXR1cm4gZStyfSxlLnByb3RvdHlwZS53cml0 ZVVJbnRCRT1mdW5jdGlvbih0LGUscixuKXsodD0rdCxlPj4+PTAscj4+Pj0w LG4pfHxQKHRoaXMsdCxlLHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9 ci0xLGk9MTtmb3IodGhpc1tlK2FdPTI1NSZ0Oy0tYT49MCYmKGkqPTI1Nik7 KXRoaXNbZSthXT10L2kmMjU1O3JldHVybiBlK3J9LGUucHJvdG90eXBlLndy aXRlVUludDg9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxy fHxQKHRoaXMsdCxlLDEsMjU1LDApLHRoaXNbZV09MjU1JnQsZSsxfSxlLnBy b3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g dD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDY1NTM1LDApLHRoaXNbZV09 MjU1JnQsdGhpc1tlKzFdPXQ+Pj44LGUrMn0sZS5wcm90b3R5cGUud3JpdGVV SW50MTZCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8 fFAodGhpcyx0LGUsMiw2NTUzNSwwKSx0aGlzW2VdPXQ+Pj44LHRoaXNbZSsx XT0yNTUmdCxlKzJ9LGUucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rp b24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDQs NDI5NDk2NzI5NSwwKSx0aGlzW2UrM109dD4+PjI0LHRoaXNbZSsyXT10Pj4+ MTYsdGhpc1tlKzFdPXQ+Pj44LHRoaXNbZV09MjU1JnQsZSs0fSxlLnByb3Rv dHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0r dCxlPj4+PTAscnx8UCh0aGlzLHQsZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1tl XT10Pj4+MjQsdGhpc1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhp c1tlKzNdPTI1NSZ0LGUrNH0sZS5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5j dGlvbih0LGUscixuKXtpZih0PSt0LGU+Pj49MCwhbil7dmFyIGE9TWF0aC5w b3coMiw4KnItMSk7UCh0aGlzLHQsZSxyLGEtMSwtYSl9dmFyIGk9MCxvPTEs cz0wO2Zvcih0aGlzW2VdPTI1NSZ0OysraTxyJiYobyo9MjU2KTspdDwwJiYw PT09cyYmMCE9PXRoaXNbZStpLTFdJiYocz0xKSx0aGlzW2UraV09KHQvbz4+ MCktcyYyNTU7cmV0dXJuIGUrcn0sZS5wcm90b3R5cGUud3JpdGVJbnRCRT1m dW5jdGlvbih0LGUscixuKXtpZih0PSt0LGU+Pj49MCwhbil7dmFyIGE9TWF0 aC5wb3coMiw4KnItMSk7UCh0aGlzLHQsZSxyLGEtMSwtYSl9dmFyIGk9ci0x LG89MSxzPTA7Zm9yKHRoaXNbZStpXT0yNTUmdDstLWk+PTAmJihvKj0yNTYp Oyl0PDAmJjA9PT1zJiYwIT09dGhpc1tlK2krMV0mJihzPTEpLHRoaXNbZStp XT0odC9vPj4wKS1zJjI1NTtyZXR1cm4gZStyfSxlLnByb3RvdHlwZS53cml0 ZUludDg9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQ KHRoaXMsdCxlLDEsMTI3LC0xMjgpLHQ8MCYmKHQ9MjU1K3QrMSksdGhpc1tl XT0yNTUmdCxlKzF9LGUucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlv bih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMiwz Mjc2NywtMzI3NjgpLHRoaXNbZV09MjU1JnQsdGhpc1tlKzFdPXQ+Pj44LGUr Mn0sZS5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDMyNzY3LC0zMjc2 OCksdGhpc1tlXT10Pj4+OCx0aGlzW2UrMV09MjU1JnQsZSsyfSxlLnByb3Rv dHlwZS53cml0ZUludDMyTEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0 LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0 OCksdGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsdGhpc1tlKzJdPXQ+ Pj4xNix0aGlzW2UrM109dD4+PjI0LGUrNH0sZS5wcm90b3R5cGUud3JpdGVJ bnQzMkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8 UCh0aGlzLHQsZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHQ8MCYmKHQ9 NDI5NDk2NzI5NSt0KzEpLHRoaXNbZV09dD4+PjI0LHRoaXNbZSsxXT10Pj4+ MTYsdGhpc1tlKzJdPXQ+Pj44LHRoaXNbZSszXT0yNTUmdCxlKzR9LGUucHJv dG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHoo dGhpcyx0LGUsITAscil9LGUucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5j dGlvbih0LGUscil7cmV0dXJuIHoodGhpcyx0LGUsITEscil9LGUucHJvdG90 eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBJKHRo aXMsdCxlLCEwLHIpfSxlLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0 aW9uKHQsZSxyKXtyZXR1cm4gSSh0aGlzLHQsZSwhMSxyKX0sZS5wcm90b3R5 cGUuY29weT1mdW5jdGlvbih0LHIsbixhKXtpZighZS5pc0J1ZmZlcih0KSl0 aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZm ZXIiKTtpZihufHwobj0wKSxhfHwwPT09YXx8KGE9dGhpcy5sZW5ndGgpLHI+ PXQubGVuZ3RoJiYocj10Lmxlbmd0aCkscnx8KHI9MCksYT4wJiZhPG4mJihh PW4pLGE9PT1uKXJldHVybiAwO2lmKDA9PT10Lmxlbmd0aHx8MD09PXRoaXMu bGVuZ3RoKXJldHVybiAwO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigi dGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MHx8bj49dGhpcy5s ZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5n ZSIpO2lmKGE8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91 dCBvZiBib3VuZHMiKTthPnRoaXMubGVuZ3RoJiYoYT10aGlzLmxlbmd0aCks dC5sZW5ndGgtcjxhLW4mJihhPXQubGVuZ3RoLXIrbik7dmFyIGk9YS1uO2lm KHRoaXM9PT10JiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90 b3R5cGUuY29weVdpdGhpbil0aGlzLmNvcHlXaXRoaW4ocixuLGEpO2Vsc2Ug aWYodGhpcz09PXQmJm48ciYmcjxhKWZvcih2YXIgbz1pLTE7bz49MDstLW8p dFtvK3JdPXRoaXNbbytuXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNl dC5jYWxsKHQsdGhpcy5zdWJhcnJheShuLGEpLHIpO3JldHVybiBpfSxlLnBy b3RvdHlwZS5maWxsPWZ1bmN0aW9uKHQscixuLGEpe2lmKCJzdHJpbmciPT10 eXBlb2YgdCl7aWYoInN0cmluZyI9PXR5cGVvZiByPyhhPXIscj0wLG49dGhp cy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgbiYmKGE9bixuPXRoaXMubGVu Z3RoKSx2b2lkIDAhPT1hJiYic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3 IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJz dHJpbmciPT10eXBlb2YgYSYmIWUuaXNFbmNvZGluZyhhKSl0aHJvdyBuZXcg VHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2EpO2lmKDE9PT10Lmxl bmd0aCl7dmFyIGk9dC5jaGFyQ29kZUF0KDApOygidXRmOCI9PT1hJiZpPDEy OHx8ImxhdGluMSI9PT1hKSYmKHQ9aSl9fWVsc2UibnVtYmVyIj09dHlwZW9m IHQ/dCY9MjU1OiJib29sZWFuIj09dHlwZW9mIHQmJih0PU51bWJlcih0KSk7 aWYocjwwfHx0aGlzLmxlbmd0aDxyfHx0aGlzLmxlbmd0aDxuKXRocm93IG5l dyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihuPD1yKXJl dHVybiB0aGlzO3ZhciBvO2lmKHI+Pj49MCxuPXZvaWQgMD09PW4/dGhpcy5s ZW5ndGg6bj4+PjAsdHx8KHQ9MCksIm51bWJlciI9PXR5cGVvZiB0KWZvcihv PXI7bzxuOysrbyl0aGlzW29dPXQ7ZWxzZXt2YXIgcz1lLmlzQnVmZmVyKHQp P3Q6ZS5mcm9tKHQsYSksbD1zLmxlbmd0aDtpZigwPT09bCl0aHJvdyBuZXcg VHlwZUVycm9yKCdUaGUgdmFsdWUgIicrdCsnIiBpcyBpbnZhbGlkIGZvciBh cmd1bWVudCAidmFsdWUiJyk7Zm9yKG89MDtvPG4tcjsrK28pdGhpc1tvK3Jd PXNbbyVsXX1yZXR1cm4gdGhpc307dmFyIEQ9L1teKy8wLTlBLVphLXotX10v ZztmdW5jdGlvbiBSKHQpe3JldHVybiB0PDE2PyIwIit0LnRvU3RyaW5nKDE2 KTp0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBGKHQsZSl7dmFyIHI7ZT1lfHwx LzA7Zm9yKHZhciBuPXQubGVuZ3RoLGE9bnVsbCxpPVtdLG89MDtvPG47Kytv KXtpZigocj10LmNoYXJDb2RlQXQobykpPjU1Mjk1JiZyPDU3MzQ0KXtpZigh YSl7aWYocj41NjMxOSl7KGUtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkp O2NvbnRpbnVlfWlmKG8rMT09PW4peyhlLT0zKT4tMSYmaS5wdXNoKDIzOSwx OTEsMTg5KTtjb250aW51ZX1hPXI7Y29udGludWV9aWYocjw1NjMyMCl7KGUt PTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpLGE9cjtjb250aW51ZX1yPTY1 NTM2KyhhLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGEmJihlLT0zKT4tMSYm aS5wdXNoKDIzOSwxOTEsMTg5KTtpZihhPW51bGwscjwxMjgpe2lmKChlLT0x KTwwKWJyZWFrO2kucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKGUtPTIp PDApYnJlYWs7aS5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8 NjU1MzYpe2lmKChlLT0zKTwwKWJyZWFrO2kucHVzaChyPj4xMnwyMjQscj4+ NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93 IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKGUtPTQpPDAp YnJlYWs7aS5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wx MjgsNjMmcnwxMjgpfX1yZXR1cm4gaX1mdW5jdGlvbiBCKHQpe3JldHVybiBu LnRvQnl0ZUFycmF5KGZ1bmN0aW9uKHQpe2lmKCh0PSh0PXQuc3BsaXQoIj0i KVswXSkudHJpbSgpLnJlcGxhY2UoRCwiIikpLmxlbmd0aDwyKXJldHVybiIi O2Zvcig7dC5sZW5ndGglNCE9MDspdCs9Ij0iO3JldHVybiB0fSh0KSl9ZnVu Y3Rpb24gTih0LGUscixuKXtmb3IodmFyIGE9MDthPG4mJiEoYStyPj1lLmxl bmd0aHx8YT49dC5sZW5ndGgpOysrYSllW2Ercl09dFthXTtyZXR1cm4gYX1m dW5jdGlvbiBqKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHxudWxsIT10 JiZudWxsIT10LmNvbnN0cnVjdG9yJiZudWxsIT10LmNvbnN0cnVjdG9yLm5h bWUmJnQuY29uc3RydWN0b3IubmFtZT09PWUubmFtZX1mdW5jdGlvbiBWKHQp e3JldHVybiB0IT10fX0pLmNhbGwodGhpcyx0KCJidWZmZXIiKS5CdWZmZXIp fSx7ImJhc2U2NC1qcyI6NzYsYnVmZmVyOjEwNyxpZWVlNzU0OjQxNH1dLDEw ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xp Yi9tb25vdG9uZSIpLGE9dCgiLi9saWIvdHJpYW5ndWxhdGlvbiIpLGk9dCgi Li9saWIvZGVsYXVuYXkiKSxvPXQoIi4vbGliL2ZpbHRlciIpO2Z1bmN0aW9u IHModCl7cmV0dXJuW01hdGgubWluKHRbMF0sdFsxXSksTWF0aC5tYXgodFsw XSx0WzFdKV19ZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRb MV0tZVsxXX1mdW5jdGlvbiBjKHQsZSxyKXtyZXR1cm4gZSBpbiB0P3RbZV06 cn1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe0FycmF5LmlzQXJyYXkoZSk/ KHI9cnx8e30sZT1lfHxbXSk6KHI9ZXx8e30sZT1bXSk7dmFyIHU9ISFjKHIs ImRlbGF1bmF5IiwhMCksaD0hIWMociwiaW50ZXJpb3IiLCEwKSxmPSEhYyhy LCJleHRlcmlvciIsITApLHA9ISFjKHIsImluZmluaXR5IiwhMSk7aWYoIWgm JiFmfHwwPT09dC5sZW5ndGgpcmV0dXJuW107dmFyIGQ9bih0LGUpO2lmKHV8 fGghPT1mfHxwKXtmb3IodmFyIGc9YSh0Lmxlbmd0aCxmdW5jdGlvbih0KXty ZXR1cm4gdC5tYXAocykuc29ydChsKX0oZSkpLHY9MDt2PGQubGVuZ3RoOysr dil7dmFyIG09ZFt2XTtnLmFkZFRyaWFuZ2xlKG1bMF0sbVsxXSxtWzJdKX1y ZXR1cm4gdSYmaSh0LGcpLGY/aD9wP28oZywwLHApOmcuY2VsbHMoKTpvKGcs MSxwKTpvKGcsLTEpfXJldHVybiBkfX0seyIuL2xpYi9kZWxhdW5heSI6MTA5 LCIuL2xpYi9maWx0ZXIiOjExMCwiLi9saWIvbW9ub3RvbmUiOjExMSwiLi9s aWIvdHJpYW5ndWxhdGlvbiI6MTEyfV0sMTA5OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoInJvYnVzdC1pbi1zcGhlcmUiKVs0XTt0 KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpO2Z1bmN0aW9uIGEodCxlLHIsYSxp LG8pe3ZhciBzPWUub3Bwb3NpdGUoYSxpKTtpZighKHM8MCkpe2lmKGk8YSl7 dmFyIGw9YTthPWksaT1sLGw9byxvPXMscz1sfWUuaXNDb25zdHJhaW50KGEs aSl8fG4odFthXSx0W2ldLHRbb10sdFtzXSk8MCYmci5wdXNoKGEsaSl9fWUu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxpPXQubGVuZ3Ro LG89ZS5zdGFycyxzPTA7czxpOysrcylmb3IodmFyIGw9b1tzXSxjPTE7Yzxs Lmxlbmd0aDtjKz0yKXt2YXIgdT1sW2NdO2lmKCEodTxzKSYmIWUuaXNDb25z dHJhaW50KHMsdSkpe2Zvcih2YXIgaD1sW2MtMV0sZj0tMSxwPTE7cDxsLmxl bmd0aDtwKz0yKWlmKGxbcC0xXT09PXUpe2Y9bFtwXTticmVha31mPDB8fG4o dFtzXSx0W3VdLHRbaF0sdFtmXSk8MCYmci5wdXNoKHMsdSl9fWZvcig7ci5s ZW5ndGg+MDspe2Zvcih2YXIgdT1yLnBvcCgpLHM9ci5wb3AoKSxoPS0xLGY9 LTEsbD1vW3NdLGQ9MTtkPGwubGVuZ3RoO2QrPTIpe3ZhciBnPWxbZC0xXSx2 PWxbZF07Zz09PXU/Zj12OnY9PT11JiYoaD1nKX1oPDB8fGY8MHx8KG4odFtz XSx0W3VdLHRbaF0sdFtmXSk+PTB8fChlLmZsaXAocyx1KSxhKHQsZSxyLGgs cyxmKSxhKHQsZSxyLHMsZixoKSxhKHQsZSxyLGYsdSxoKSxhKHQsZSxyLHUs aCxmKSkpfX19LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjExMywicm9idXN0 LWluLXNwaGVyZSI6NTA3fV0sMTEwOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuLGE9dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKTtmdW5j dGlvbiBpKHQsZSxyLG4sYSxpLG8pe3RoaXMuY2VsbHM9dCx0aGlzLm5laWdo Ym9yPWUsdGhpcy5mbGFncz1uLHRoaXMuY29uc3RyYWludD1yLHRoaXMuYWN0 aXZlPWEsdGhpcy5uZXh0PWksdGhpcy5ib3VuZGFyeT1vfWZ1bmN0aW9uIG8o dCxlKXtyZXR1cm4gdFswXS1lWzBdfHx0WzFdLWVbMV18fHRbMl0tZVsyXX1l LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByPXQuY2VsbHMoKSxuPXIubGVuZ3RoLGE9MDthPG47KythKXt2 YXIgcz1yW2FdLGw9c1swXSxjPXNbMV0sdT1zWzJdO2M8dT9jPGwmJihzWzBd PWMsc1sxXT11LHNbMl09bCk6dTxsJiYoc1swXT11LHNbMV09bCxzWzJdPWMp fXIuc29ydChvKTtmb3IodmFyIGg9bmV3IEFycmF5KG4pLGE9MDthPGgubGVu Z3RoOysrYSloW2FdPTA7dmFyIGY9W10scD1bXSxkPW5ldyBBcnJheSgzKm4p LGc9bmV3IEFycmF5KDMqbiksdj1udWxsO2UmJih2PVtdKTtmb3IodmFyIG09 bmV3IGkocixkLGcsaCxmLHAsdiksYT0wO2E8bjsrK2EpZm9yKHZhciBzPXJb YV0seT0wO3k8MzsrK3kpe3ZhciBsPXNbeV0sYz1zWyh5KzEpJTNdLHg9ZFsz KmEreV09bS5sb2NhdGUoYyxsLHQub3Bwb3NpdGUoYyxsKSksYj1nWzMqYSt5 XT10LmlzQ29uc3RyYWludChsLGMpO3g8MCYmKGI/cC5wdXNoKGEpOihmLnB1 c2goYSksaFthXT0xKSxlJiZ2LnB1c2goW2MsbCwtMV0pKX1yZXR1cm4gbX0o dCxyKTtpZigwPT09ZSlyZXR1cm4gcj9uLmNlbGxzLmNvbmNhdChuLmJvdW5k YXJ5KTpuLmNlbGxzO3ZhciBhPTEscz1uLmFjdGl2ZSxsPW4ubmV4dCxjPW4u ZmxhZ3MsdT1uLmNlbGxzLGg9bi5jb25zdHJhaW50LGY9bi5uZWlnaGJvcjtm b3IoO3MubGVuZ3RoPjB8fGwubGVuZ3RoPjA7KXtmb3IoO3MubGVuZ3RoPjA7 KXt2YXIgcD1zLnBvcCgpO2lmKGNbcF0hPT0tYSl7Y1twXT1hO3VbcF07Zm9y KHZhciBkPTA7ZDwzOysrZCl7dmFyIGc9ZlszKnArZF07Zz49MCYmMD09PWNb Z10mJihoWzMqcCtkXT9sLnB1c2goZyk6KHMucHVzaChnKSxjW2ddPWEpKX19 fXZhciB2PWw7bD1zLHM9dixsLmxlbmd0aD0wLGE9LWF9dmFyIG09ZnVuY3Rp b24odCxlLHIpe2Zvcih2YXIgbj0wLGE9MDthPHQubGVuZ3RoOysrYSllW2Fd PT09ciYmKHRbbisrXT10W2FdKTtyZXR1cm4gdC5sZW5ndGg9bix0fSh1LGMs ZSk7aWYocilyZXR1cm4gbS5jb25jYXQobi5ib3VuZGFyeSk7cmV0dXJuIG19 LGkucHJvdG90eXBlLmxvY2F0ZT0obj1bMCwwLDBdLGZ1bmN0aW9uKHQsZSxy KXt2YXIgaT10LHM9ZSxsPXI7cmV0dXJuIGU8cj9lPHQmJihpPWUscz1yLGw9 dCk6cjx0JiYoaT1yLHM9dCxsPWUpLGk8MD8tMTooblswXT1pLG5bMV09cyxu WzJdPWwsYS5lcSh0aGlzLmNlbGxzLG4sbykpfSl9LHsiYmluYXJ5LXNlYXJj aC1ib3VuZHMiOjExM31dLDExMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGE9dCgicm9i dXN0LW9yaWVudGF0aW9uIilbM10saT0wLG89MSxzPTI7ZnVuY3Rpb24gbCh0 LGUscixuLGEpe3RoaXMuYT10LHRoaXMuYj1lLHRoaXMuaWR4PXIsdGhpcy5s b3dlcklkcz1uLHRoaXMudXBwZXJJZHM9YX1mdW5jdGlvbiBjKHQsZSxyLG4p e3RoaXMuYT10LHRoaXMuYj1lLHRoaXMudHlwZT1yLHRoaXMuaWR4PW59ZnVu Y3Rpb24gdSh0LGUpe3ZhciByPXQuYVswXS1lLmFbMF18fHQuYVsxXS1lLmFb MV18fHQudHlwZS1lLnR5cGU7cmV0dXJuIHJ8fCh0LnR5cGUhPT1pJiYocj1h KHQuYSx0LmIsZS5iKSk/cjp0LmlkeC1lLmlkeCl9ZnVuY3Rpb24gaCh0LGUp e3JldHVybiBhKHQuYSx0LmIsZSl9ZnVuY3Rpb24gZih0LGUscixpLG8pe2Zv cih2YXIgcz1uLmx0KGUsaSxoKSxsPW4uZ3QoZSxpLGgpLGM9cztjPGw7Kytj KXtmb3IodmFyIHU9ZVtjXSxmPXUubG93ZXJJZHMscD1mLmxlbmd0aDtwPjEm JmEocltmW3AtMl1dLHJbZltwLTFdXSxpKT4wOyl0LnB1c2goW2ZbcC0xXSxm W3AtMl0sb10pLHAtPTE7Zi5sZW5ndGg9cCxmLnB1c2gobyk7dmFyIGQ9dS51 cHBlcklkcztmb3IocD1kLmxlbmd0aDtwPjEmJmEocltkW3AtMl1dLHJbZFtw LTFdXSxpKTwwOyl0LnB1c2goW2RbcC0yXSxkW3AtMV0sb10pLHAtPTE7ZC5s ZW5ndGg9cCxkLnB1c2gobyl9fWZ1bmN0aW9uIHAodCxlKXt2YXIgcjtyZXR1 cm4ocj10LmFbMF08ZS5hWzBdP2EodC5hLHQuYixlLmEpOmEoZS5iLGUuYSx0 LmEpKT9yOihyPWUuYlswXTx0LmJbMF0/YSh0LmEsdC5iLGUuYik6YShlLmIs ZS5hLHQuYikpfHx0LmlkeC1lLmlkeH1mdW5jdGlvbiBkKHQsZSxyKXt2YXIg YT1uLmxlKHQscixwKSxpPXRbYV0sbz1pLnVwcGVySWRzLHM9b1tvLmxlbmd0 aC0xXTtpLnVwcGVySWRzPVtzXSx0LnNwbGljZShhKzEsMCxuZXcgbChyLmEs ci5iLHIuaWR4LFtzXSxvKSl9ZnVuY3Rpb24gZyh0LGUscil7dmFyIGE9ci5h O3IuYT1yLmIsci5iPWE7dmFyIGk9bi5lcSh0LHIscCksbz10W2ldO3RbaS0x XS51cHBlcklkcz1vLnVwcGVySWRzLHQuc3BsaWNlKGksMSl9ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49ZS5sZW5ndGgs YT1bXSxoPTA7aDxyOysraClhLnB1c2gobmV3IGModFtoXSxudWxsLGksaCkp O2Zvcih2YXIgaD0wO2g8bjsrK2gpe3ZhciBwPWVbaF0sdj10W3BbMF1dLG09 dFtwWzFdXTt2WzBdPG1bMF0/YS5wdXNoKG5ldyBjKHYsbSxzLGgpLG5ldyBj KG0sdixvLGgpKTp2WzBdPm1bMF0mJmEucHVzaChuZXcgYyhtLHYscyxoKSxu ZXcgYyh2LG0sbyxoKSl9YS5zb3J0KHUpO2Zvcih2YXIgeT1hWzBdLmFbMF0t KDErTWF0aC5hYnMoYVswXS5hWzBdKSkqTWF0aC5wb3coMiwtNTIpLHg9W25l dyBsKFt5LDFdLFt5LDBdLC0xLFtdLFtdLFtdLFtdKV0sYj1bXSxoPTAsXz1h Lmxlbmd0aDtoPF87KytoKXt2YXIgdz1hW2hdLGs9dy50eXBlO2s9PT1pP2Yo Yix4LHQsdy5hLHcuaWR4KTprPT09cz9kKHgsdCx3KTpnKHgsdCx3KX1yZXR1 cm4gYn19LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjExMywicm9idXN0LW9y aWVudGF0aW9uIjo1MDl9XSwxMTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKTtmdW5jdGlv biBhKHQsZSl7dGhpcy5zdGFycz10LHRoaXMuZWRnZXM9ZX1lLmV4cG9ydHM9 ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7 KytuKXJbbl09W107cmV0dXJuIG5ldyBhKHIsZSl9O3ZhciBpPWEucHJvdG90 eXBlO2Z1bmN0aW9uIG8odCxlLHIpe2Zvcih2YXIgbj0xLGE9dC5sZW5ndGg7 bjxhO24rPTIpaWYodFtuLTFdPT09ZSYmdFtuXT09PXIpcmV0dXJuIHRbbi0x XT10W2EtMl0sdFtuXT10W2EtMV0sdm9pZCh0Lmxlbmd0aD1hLTIpfWkuaXND b25zdHJhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9WzAsMF07ZnVuY3Rpb24gZSh0 LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXX1yZXR1cm4gZnVuY3Rp b24ocixhKXtyZXR1cm4gdFswXT1NYXRoLm1pbihyLGEpLHRbMV09TWF0aC5t YXgocixhKSxuLmVxKHRoaXMuZWRnZXMsdCxlKT49MH19KCksaS5yZW1vdmVU cmlhbmdsZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5zdGFycztvKG5b dF0sZSxyKSxvKG5bZV0scix0KSxvKG5bcl0sdCxlKX0saS5hZGRUcmlhbmds ZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5zdGFycztuW3RdLnB1c2go ZSxyKSxuW2VdLnB1c2gocix0KSxuW3JdLnB1c2godCxlKX0saS5vcHBvc2l0 ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLnN0YXJzW2VdLG49MSxh PXIubGVuZ3RoO248YTtuKz0yKWlmKHJbbl09PT10KXJldHVybiByW24tMV07 cmV0dXJuLTF9LGkuZmxpcD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMub3Bw b3NpdGUodCxlKSxuPXRoaXMub3Bwb3NpdGUoZSx0KTt0aGlzLnJlbW92ZVRy aWFuZ2xlKHQsZSxyKSx0aGlzLnJlbW92ZVRyaWFuZ2xlKGUsdCxuKSx0aGlz LmFkZFRyaWFuZ2xlKHQsbixyKSx0aGlzLmFkZFRyaWFuZ2xlKGUscixuKX0s aS5lZGdlcz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLnN0YXJzLGU9W10s cj0wLG49dC5sZW5ndGg7cjxuOysrcilmb3IodmFyIGE9dFtyXSxpPTAsbz1h Lmxlbmd0aDtpPG87aSs9MillLnB1c2goW2FbaV0sYVtpKzFdXSk7cmV0dXJu IGV9LGkuY2VsbHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5zdGFycyxl PVtdLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3IpZm9yKHZhciBhPXRbcl0saT0w LG89YS5sZW5ndGg7aTxvO2krPTIpe3ZhciBzPWFbaV0sbD1hW2krMV07cjxN YXRoLm1pbihzLGwpJiZlLnB1c2goW3IscyxsXSl9cmV0dXJuIGV9fSx7ImJp bmFyeS1zZWFyY2gtYm91bmRzIjoxMTN9XSwxMTM6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGEpe3ZhciBpPVsi ZnVuY3Rpb24gIix0LCIoYSxsLGgsIixuLmpvaW4oIiwiKSwiKXsiLGE/IiI6 InZhciBpPSIscj8ibC0xIjoiaCsxIiwiO3doaWxlKGw8PWgpe3ZhciBtPShs K2gpPj4+MSx4PWFbbV0iXTtyZXR1cm4gYT9lLmluZGV4T2YoImMiKTwwP2ku cHVzaCgiO2lmKHg9PT15KXtyZXR1cm4gbX1lbHNlIGlmKHg8PXkpeyIpOmku cHVzaCgiO3ZhciBwPWMoeCx5KTtpZihwPT09MCl7cmV0dXJuIG19ZWxzZSBp ZihwPD0wKXsiKTppLnB1c2goIjtpZigiLGUsIil7aT1tOyIpLHI/aS5wdXNo KCJsPW0rMX1lbHNle2g9bS0xfSIpOmkucHVzaCgiaD1tLTF9ZWxzZXtsPW0r MX0iKSxpLnB1c2goIn0iKSxhP2kucHVzaCgicmV0dXJuIC0xfTsiKTppLnB1 c2goInJldHVybiBpfTsiKSxpLmpvaW4oIiIpfWZ1bmN0aW9uIGEodCxlLHIs YSl7cmV0dXJuIG5ldyBGdW5jdGlvbihbbigiQSIsIngiK3QrInkiLGUsWyJ5 Il0sYSksbigiUCIsImMoeCx5KSIrdCsiMCIsZSxbInkiLCJjIl0sYSksImZ1 bmN0aW9uIGRpc3BhdGNoQnNlYXJjaCIsciwiKGEseSxjLGwsaCl7aWYodHlw ZW9mKGMpPT09J2Z1bmN0aW9uJyl7cmV0dXJuIFAoYSwobD09PXZvaWQgMCk/ MDpsfDAsKGg9PT12b2lkIDApP2EubGVuZ3RoLTE6aHwwLHksYyl9ZWxzZXty ZXR1cm4gQShhLChjPT09dm9pZCAwKT8wOmN8MCwobD09PXZvaWQgMCk/YS5s ZW5ndGgtMTpsfDAseSl9fXJldHVybiBkaXNwYXRjaEJzZWFyY2giLHJdLmpv aW4oIiIpKSgpfWUuZXhwb3J0cz17Z2U6YSgiPj0iLCExLCJHRSIpLGd0OmEo Ij4iLCExLCJHVCIpLGx0OmEoIjwiLCEwLCJMVCIpLGxlOmEoIjw9IiwhMCwi TEUiKSxlcTphKCItIiwhMCwiRVEiLCEwKX19LHt9XSwxMTQ6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zv cih2YXIgZT0xLHI9MTtyPHQubGVuZ3RoOysrcilmb3IodmFyIG49MDtuPHI7 KytuKWlmKHRbcl08dFtuXSllPS1lO2Vsc2UgaWYodFtuXT09PXRbcl0pcmV0 dXJuIDA7cmV0dXJuIGV9fSx7fV0sMTE1OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoImR1cCIpLGE9dCgicm9idXN0LWxpbmVhci1z b2x2ZSIpO2Z1bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3Ro LGE9MDthPG47KythKXIrPXRbYV0qZVthXTtyZXR1cm4gcn1mdW5jdGlvbiBv KHQpe3ZhciBlPXQubGVuZ3RoO2lmKDA9PT1lKXJldHVybltdO3RbMF0ubGVu Z3RoO3ZhciByPW4oW3QubGVuZ3RoKzEsdC5sZW5ndGgrMV0sMSksbz1uKFt0 Lmxlbmd0aCsxXSwxKTtyW2VdW2VdPTA7Zm9yKHZhciBzPTA7czxlOysrcyl7 Zm9yKHZhciBsPTA7bDw9czsrK2wpcltsXVtzXT1yW3NdW2xdPTIqaSh0W3Nd LHRbbF0pO29bc109aSh0W3NdLHRbc10pfXZhciBjPWEocixvKSx1PTAsaD1j W2UrMV07Zm9yKHM9MDtzPGgubGVuZ3RoOysrcyl1Kz1oW3NdO3ZhciBmPW5l dyBBcnJheShlKTtmb3Iocz0wO3M8ZTsrK3Mpe2g9Y1tzXTt2YXIgcD0wO2Zv cihsPTA7bDxoLmxlbmd0aDsrK2wpcCs9aFtsXTtmW3NdPXAvdX1yZXR1cm4g Zn1mdW5jdGlvbiBzKHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm5bXTtmb3Io dmFyIGU9dFswXS5sZW5ndGgscj1uKFtlXSksYT1vKHQpLGk9MDtpPHQubGVu Z3RoOysraSlmb3IodmFyIHM9MDtzPGU7KytzKXJbc10rPXRbaV1bc10qYVtp XTtyZXR1cm4gcn1zLmJhcnljZW5ldHJpYz1vLGUuZXhwb3J0cz1zfSx7ZHVw OjE3Miwicm9idXN0LWxpbmVhci1zb2x2ZSI6NTA4fV0sMTE2OltmdW5jdGlv bih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uKHQp LHI9MCxhPTA7YTx0Lmxlbmd0aDsrK2EpZm9yKHZhciBpPXRbYV0sbz0wO288 ZS5sZW5ndGg7KytvKXIrPU1hdGgucG93KGlbb10tZVtvXSwyKTtyZXR1cm4g TWF0aC5zcXJ0KHIvdC5sZW5ndGgpfTt2YXIgbj10KCJjaXJjdW1jZW50ZXIi KX0se2NpcmN1bWNlbnRlcjoxMTV9XSwxMTc6W2Z1bmN0aW9uKHQsZSxyKXtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlPHI/dDxlP2U6dD5y P3I6dDp0PHI/cjp0PmU/ZTp0fX0se31dLDExODpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBu O2lmKHIpe249ZTtmb3IodmFyIGE9bmV3IEFycmF5KGUubGVuZ3RoKSxpPTA7 aTxlLmxlbmd0aDsrK2kpe3ZhciBvPWVbaV07YVtpXT1bb1swXSxvWzFdLHJb aV1dfWU9YX12YXIgcz1mdW5jdGlvbih0LGUscil7dmFyIG49ZCh0LFtdLHAo dCkpO3JldHVybiBtKGUsbixyKSwhIW59KHQsZSwhIXIpO2Zvcig7eSh0LGUs ISFyKTspcz0hMDtpZihyJiZzKXtuLmxlbmd0aD0wLHIubGVuZ3RoPTA7Zm9y KHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpe3ZhciBvPWVbaV07bi5wdXNoKFtv WzBdLG9bMV1dKSxyLnB1c2gob1syXSl9fXJldHVybiBzfTt2YXIgbj10KCJ1 bmlvbi1maW5kIiksYT10KCJib3gtaW50ZXJzZWN0IiksaT10KCJyb2J1c3Qt c2VnbWVudC1pbnRlcnNlY3QiKSxvPXQoImJpZy1yYXQiKSxzPXQoImJpZy1y YXQvY21wIiksbD10KCJiaWctcmF0L3RvLWZsb2F0IiksYz10KCJyYXQtdmVj IiksdT10KCJuZXh0YWZ0ZXIiKSxoPXQoIi4vbGliL3JhdC1zZWctaW50ZXJz ZWN0Iik7ZnVuY3Rpb24gZih0KXt2YXIgZT1sKHQpO3JldHVyblt1KGUsLTEv MCksdShlLDEvMCldfWZ1bmN0aW9uIHAodCl7Zm9yKHZhciBlPW5ldyBBcnJh eSh0Lmxlbmd0aCkscj0wO3I8dC5sZW5ndGg7KytyKXt2YXIgbj10W3JdO2Vb cl09W3UoblswXSwtMS8wKSx1KG5bMV0sLTEvMCksdShuWzBdLDEvMCksdShu WzFdLDEvMCldfXJldHVybiBlfWZ1bmN0aW9uIGQodCxlLHIpe2Zvcih2YXIg aT1lLmxlbmd0aCxvPW5ldyBuKGkpLHM9W10sbD0wO2w8ZS5sZW5ndGg7Kyts KXt2YXIgYz1lW2xdLGg9ZihjWzBdKSxwPWYoY1sxXSk7cy5wdXNoKFt1KGhb MF0sLTEvMCksdShwWzBdLC0xLzApLHUoaFsxXSwxLzApLHUocFsxXSwxLzAp XSl9YShzLGZ1bmN0aW9uKHQsZSl7by5saW5rKHQsZSl9KTt2YXIgZD0hMCxn PW5ldyBBcnJheShpKTtmb3IobD0wO2w8aTsrK2wpeyhtPW8uZmluZChsKSkh PT1sJiYoZD0hMSx0W21dPVtNYXRoLm1pbih0W2xdWzBdLHRbbV1bMF0pLE1h dGgubWluKHRbbF1bMV0sdFttXVsxXSldKX1pZihkKXJldHVybiBudWxsO3Zh ciB2PTA7Zm9yKGw9MDtsPGk7KytsKXt2YXIgbTsobT1vLmZpbmQobCkpPT09 bD8oZ1tsXT12LHRbdisrXT10W2xdKTpnW2xdPS0xfXQubGVuZ3RoPXY7Zm9y KGw9MDtsPGk7KytsKWdbbF08MCYmKGdbbF09Z1tvLmZpbmQobCldKTtyZXR1 cm4gZ31mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1l WzFdfWZ1bmN0aW9uIHYodCxlKXt2YXIgcj10WzBdLWVbMF18fHRbMV0tZVsx XTtyZXR1cm4gcnx8KHRbMl08ZVsyXT8tMTp0WzJdPmVbMl0/MTowKX1mdW5j dGlvbiBtKHQsZSxyKXtpZigwIT09dC5sZW5ndGgpe2lmKGUpZm9yKHZhciBu PTA7bjx0Lmxlbmd0aDsrK24pe3ZhciBhPWVbKG89dFtuXSlbMF1dLGk9ZVtv WzFdXTtvWzBdPU1hdGgubWluKGEsaSksb1sxXT1NYXRoLm1heChhLGkpfWVs c2UgZm9yKG49MDtuPHQubGVuZ3RoOysrbil7dmFyIG87YT0obz10W25dKVsw XSxpPW9bMV07b1swXT1NYXRoLm1pbihhLGkpLG9bMV09TWF0aC5tYXgoYSxp KX1yP3Quc29ydCh2KTp0LnNvcnQoZyk7dmFyIHM9MTtmb3Iobj0xO248dC5s ZW5ndGg7KytuKXt2YXIgbD10W24tMV0sYz10W25dOyhjWzBdIT09bFswXXx8 Y1sxXSE9PWxbMV18fHImJmNbMl0hPT1sWzJdKSYmKHRbcysrXT1jKX10Lmxl bmd0aD1zfX1mdW5jdGlvbiB5KHQsZSxyKXt2YXIgbj1mdW5jdGlvbih0LGUp e2Zvcih2YXIgcj1uZXcgQXJyYXkoZS5sZW5ndGgpLG49MDtuPGUubGVuZ3Ro Oysrbil7dmFyIGE9ZVtuXSxpPXRbYVswXV0sbz10W2FbMV1dO3Jbbl09W3Uo TWF0aC5taW4oaVswXSxvWzBdKSwtMS8wKSx1KE1hdGgubWluKGlbMV0sb1sx XSksLTEvMCksdShNYXRoLm1heChpWzBdLG9bMF0pLDEvMCksdShNYXRoLm1h eChpWzFdLG9bMV0pLDEvMCldfXJldHVybiByfSh0LGUpLGY9ZnVuY3Rpb24o dCxlLHIpe3ZhciBuPVtdO3JldHVybiBhKHIsZnVuY3Rpb24ocixhKXt2YXIg bz1lW3JdLHM9ZVthXTtpZihvWzBdIT09c1swXSYmb1swXSE9PXNbMV0mJm9b MV0hPT1zWzBdJiZvWzFdIT09c1sxXSl7dmFyIGw9dFtvWzBdXSxjPXRbb1sx XV0sdT10W3NbMF1dLGg9dFtzWzFdXTtpKGwsYyx1LGgpJiZuLnB1c2goW3Is YV0pfX0pLG59KHQsZSxuKSxnPXAodCksdj1mdW5jdGlvbih0LGUscixuKXt2 YXIgbz1bXTtyZXR1cm4gYShyLG4sZnVuY3Rpb24ocixuKXt2YXIgYT1lW3Jd O2lmKGFbMF0hPT1uJiZhWzFdIT09bil7dmFyIHM9dFtuXSxsPXRbYVswXV0s Yz10W2FbMV1dO2kobCxjLHMscykmJm8ucHVzaChbcixuXSl9fSksb30odCxl LG4sZykseT1kKHQsZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaSx1LGY9dC5t YXAoZnVuY3Rpb24odCl7cmV0dXJuW28odFswXSksbyh0WzFdKV19KTtmb3Io aT0wO2k8ci5sZW5ndGg7KytpKXt2YXIgcD1yW2ldO3U9cFswXTt2YXIgZD1w WzFdLGc9ZVt1XSx2PWVbZF0sbT1oKGModFtnWzBdXSksYyh0W2dbMV1dKSxj KHRbdlswXV0pLGModFt2WzFdXSkpO2lmKG0pe3ZhciB5PXQubGVuZ3RoO3Qu cHVzaChbbChtWzBdKSxsKG1bMV0pXSksZi5wdXNoKG0pLG4ucHVzaChbdSx5 XSxbZCx5XSl9fWZvcihuLnNvcnQoZnVuY3Rpb24odCxlKXtpZih0WzBdIT09 ZVswXSlyZXR1cm4gdFswXS1lWzBdO3ZhciByPWZbdFsxXV0sbj1mW2VbMV1d O3JldHVybiBzKHJbMF0sblswXSl8fHMoclsxXSxuWzFdKX0pLGk9bi5sZW5n dGgtMTtpPj0wOy0taSl7dmFyIHg9ZVt1PShTPW5baV0pWzBdXSxiPXhbMF0s Xz14WzFdLHc9dFtiXSxrPXRbX107aWYoKHdbMF0ta1swXXx8d1sxXS1rWzFd KTwwKXt2YXIgVD1iO2I9XyxfPVR9eFswXT1iO3ZhciBNLEE9eFsxXT1TWzFd O2ZvcihhJiYoTT14WzJdKTtpPjAmJm5baS0xXVswXT09PXU7KXt2YXIgUyxF PShTPW5bLS1pXSlbMV07YT9lLnB1c2goW0EsRSxNXSk6ZS5wdXNoKFtBLEVd KSxBPUV9YT9lLnB1c2goW0EsXyxNXSk6ZS5wdXNoKFtBLF9dKX1yZXR1cm4g Zn0odCxlLGYsdixyKSk7cmV0dXJuIG0oZSx5LHIpLCEheXx8KGYubGVuZ3Ro PjB8fHYubGVuZ3RoPjApfX0seyIuL2xpYi9yYXQtc2VnLWludGVyc2VjdCI6 MTE5LCJiaWctcmF0Ijo4MCwiYmlnLXJhdC9jbXAiOjc4LCJiaWctcmF0L3Rv LWZsb2F0Ijo5MiwiYm94LWludGVyc2VjdCI6OTgsbmV4dGFmdGVyOjQ1Mywi cmF0LXZlYyI6NDg4LCJyb2J1c3Qtc2VnbWVudC1pbnRlcnNlY3QiOjUxMiwi dW5pb24tZmluZCI6NTQ1fV0sMTE5OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXt2YXIgaT1zKGUs dCksaD1zKG4sciksZj11KGksaCk7aWYoMD09PW8oZikpcmV0dXJuIG51bGw7 dmFyIHA9cyh0LHIpLGQ9dShoLHApLGc9YShkLGYpLHY9YyhpLGcpO3JldHVy biBsKHQsdil9O3ZhciBuPXQoImJpZy1yYXQvbXVsIiksYT10KCJiaWctcmF0 L2RpdiIpLGk9dCgiYmlnLXJhdC9zdWIiKSxvPXQoImJpZy1yYXQvc2lnbiIp LHM9dCgicmF0LXZlYy9zdWIiKSxsPXQoInJhdC12ZWMvYWRkIiksYz10KCJy YXQtdmVjL211bHMiKTtmdW5jdGlvbiB1KHQsZSl7cmV0dXJuIGkobih0WzBd LGVbMV0pLG4odFsxXSxlWzBdKSl9fSx7ImJpZy1yYXQvZGl2Ijo3OSwiYmln LXJhdC9tdWwiOjg5LCJiaWctcmF0L3NpZ24iOjkwLCJiaWctcmF0L3N1YiI6 OTEsInJhdC12ZWMvYWRkIjo0ODcsInJhdC12ZWMvbXVscyI6NDg5LCJyYXQt dmVjL3N1YiI6NDkwfV0sMTIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoImNsYW1wIik7ZnVuY3Rpb24gYSh0LGUpe251bGw9PWUm JihlPSEwKTt2YXIgcj10WzBdLGE9dFsxXSxpPXRbMl0sbz10WzNdO3JldHVy biBudWxsPT1vJiYobz1lPzE6MjU1KSxlJiYocio9MjU1LGEqPTI1NSxpKj0y NTUsbyo9MjU1KSwxNjc3NzIxNioocj0yNTUmbihyLDAsMjU1KSkrKChhPTI1 NSZuKGEsMCwyNTUpKTw8MTYpKygoaT0yNTUmbihpLDAsMjU1KSk8PDgpKyhv PTI1NSZuKG8sMCwyNTUpKX1lLmV4cG9ydHM9YSxlLmV4cG9ydHMudG89YSxl LmV4cG9ydHMuZnJvbT1mdW5jdGlvbih0LGUpe3ZhciByPSh0PSt0KT4+PjI0 LG49KDE2NzExNjgwJnQpPj4+MTYsYT0oNjUyODAmdCk+Pj44LGk9MjU1JnQ7 cmV0dXJuITE9PT1lP1tyLG4sYSxpXTpbci8yNTUsbi8yNTUsYS8yNTUsaS8y NTVdfX0se2NsYW1wOjExN31dLDEyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9e2FsaWNlYmx1ZTpbMjQwLDI0OCwyNTVdLGFu dGlxdWV3aGl0ZTpbMjUwLDIzNSwyMTVdLGFxdWE6WzAsMjU1LDI1NV0sYXF1 YW1hcmluZTpbMTI3LDI1NSwyMTJdLGF6dXJlOlsyNDAsMjU1LDI1NV0sYmVp Z2U6WzI0NSwyNDUsMjIwXSxiaXNxdWU6WzI1NSwyMjgsMTk2XSxibGFjazpb MCwwLDBdLGJsYW5jaGVkYWxtb25kOlsyNTUsMjM1LDIwNV0sYmx1ZTpbMCww LDI1NV0sYmx1ZXZpb2xldDpbMTM4LDQzLDIyNl0sYnJvd246WzE2NSw0Miw0 Ml0sYnVybHl3b29kOlsyMjIsMTg0LDEzNV0sY2FkZXRibHVlOls5NSwxNTgs MTYwXSxjaGFydHJldXNlOlsxMjcsMjU1LDBdLGNob2NvbGF0ZTpbMjEwLDEw NSwzMF0sY29yYWw6WzI1NSwxMjcsODBdLGNvcm5mbG93ZXJibHVlOlsxMDAs MTQ5LDIzN10sY29ybnNpbGs6WzI1NSwyNDgsMjIwXSxjcmltc29uOlsyMjAs MjAsNjBdLGN5YW46WzAsMjU1LDI1NV0sZGFya2JsdWU6WzAsMCwxMzldLGRh cmtjeWFuOlswLDEzOSwxMzldLGRhcmtnb2xkZW5yb2Q6WzE4NCwxMzQsMTFd LGRhcmtncmF5OlsxNjksMTY5LDE2OV0sZGFya2dyZWVuOlswLDEwMCwwXSxk YXJrZ3JleTpbMTY5LDE2OSwxNjldLGRhcmtraGFraTpbMTg5LDE4MywxMDdd LGRhcmttYWdlbnRhOlsxMzksMCwxMzldLGRhcmtvbGl2ZWdyZWVuOls4NSwx MDcsNDddLGRhcmtvcmFuZ2U6WzI1NSwxNDAsMF0sZGFya29yY2hpZDpbMTUz LDUwLDIwNF0sZGFya3JlZDpbMTM5LDAsMF0sZGFya3NhbG1vbjpbMjMzLDE1 MCwxMjJdLGRhcmtzZWFncmVlbjpbMTQzLDE4OCwxNDNdLGRhcmtzbGF0ZWJs dWU6WzcyLDYxLDEzOV0sZGFya3NsYXRlZ3JheTpbNDcsNzksNzldLGRhcmtz bGF0ZWdyZXk6WzQ3LDc5LDc5XSxkYXJrdHVycXVvaXNlOlswLDIwNiwyMDld LGRhcmt2aW9sZXQ6WzE0OCwwLDIxMV0sZGVlcHBpbms6WzI1NSwyMCwxNDdd LGRlZXBza3libHVlOlswLDE5MSwyNTVdLGRpbWdyYXk6WzEwNSwxMDUsMTA1 XSxkaW1ncmV5OlsxMDUsMTA1LDEwNV0sZG9kZ2VyYmx1ZTpbMzAsMTQ0LDI1 NV0sZmlyZWJyaWNrOlsxNzgsMzQsMzRdLGZsb3JhbHdoaXRlOlsyNTUsMjUw LDI0MF0sZm9yZXN0Z3JlZW46WzM0LDEzOSwzNF0sZnVjaHNpYTpbMjU1LDAs MjU1XSxnYWluc2Jvcm86WzIyMCwyMjAsMjIwXSxnaG9zdHdoaXRlOlsyNDgs MjQ4LDI1NV0sZ29sZDpbMjU1LDIxNSwwXSxnb2xkZW5yb2Q6WzIxOCwxNjUs MzJdLGdyYXk6WzEyOCwxMjgsMTI4XSxncmVlbjpbMCwxMjgsMF0sZ3JlZW55 ZWxsb3c6WzE3MywyNTUsNDddLGdyZXk6WzEyOCwxMjgsMTI4XSxob25leWRl dzpbMjQwLDI1NSwyNDBdLGhvdHBpbms6WzI1NSwxMDUsMTgwXSxpbmRpYW5y ZWQ6WzIwNSw5Miw5Ml0saW5kaWdvOls3NSwwLDEzMF0saXZvcnk6WzI1NSwy NTUsMjQwXSxraGFraTpbMjQwLDIzMCwxNDBdLGxhdmVuZGVyOlsyMzAsMjMw LDI1MF0sbGF2ZW5kZXJibHVzaDpbMjU1LDI0MCwyNDVdLGxhd25ncmVlbjpb MTI0LDI1MiwwXSxsZW1vbmNoaWZmb246WzI1NSwyNTAsMjA1XSxsaWdodGJs dWU6WzE3MywyMTYsMjMwXSxsaWdodGNvcmFsOlsyNDAsMTI4LDEyOF0sbGln aHRjeWFuOlsyMjQsMjU1LDI1NV0sbGlnaHRnb2xkZW5yb2R5ZWxsb3c6WzI1 MCwyNTAsMjEwXSxsaWdodGdyYXk6WzIxMSwyMTEsMjExXSxsaWdodGdyZWVu OlsxNDQsMjM4LDE0NF0sbGlnaHRncmV5OlsyMTEsMjExLDIxMV0sbGlnaHRw aW5rOlsyNTUsMTgyLDE5M10sbGlnaHRzYWxtb246WzI1NSwxNjAsMTIyXSxs aWdodHNlYWdyZWVuOlszMiwxNzgsMTcwXSxsaWdodHNreWJsdWU6WzEzNSwy MDYsMjUwXSxsaWdodHNsYXRlZ3JheTpbMTE5LDEzNiwxNTNdLGxpZ2h0c2xh dGVncmV5OlsxMTksMTM2LDE1M10sbGlnaHRzdGVlbGJsdWU6WzE3NiwxOTYs MjIyXSxsaWdodHllbGxvdzpbMjU1LDI1NSwyMjRdLGxpbWU6WzAsMjU1LDBd LGxpbWVncmVlbjpbNTAsMjA1LDUwXSxsaW5lbjpbMjUwLDI0MCwyMzBdLG1h Z2VudGE6WzI1NSwwLDI1NV0sbWFyb29uOlsxMjgsMCwwXSxtZWRpdW1hcXVh bWFyaW5lOlsxMDIsMjA1LDE3MF0sbWVkaXVtYmx1ZTpbMCwwLDIwNV0sbWVk aXVtb3JjaGlkOlsxODYsODUsMjExXSxtZWRpdW1wdXJwbGU6WzE0NywxMTIs MjE5XSxtZWRpdW1zZWFncmVlbjpbNjAsMTc5LDExM10sbWVkaXVtc2xhdGVi bHVlOlsxMjMsMTA0LDIzOF0sbWVkaXVtc3ByaW5nZ3JlZW46WzAsMjUwLDE1 NF0sbWVkaXVtdHVycXVvaXNlOls3MiwyMDksMjA0XSxtZWRpdW12aW9sZXRy ZWQ6WzE5OSwyMSwxMzNdLG1pZG5pZ2h0Ymx1ZTpbMjUsMjUsMTEyXSxtaW50 Y3JlYW06WzI0NSwyNTUsMjUwXSxtaXN0eXJvc2U6WzI1NSwyMjgsMjI1XSxt b2NjYXNpbjpbMjU1LDIyOCwxODFdLG5hdmFqb3doaXRlOlsyNTUsMjIyLDE3 M10sbmF2eTpbMCwwLDEyOF0sb2xkbGFjZTpbMjUzLDI0NSwyMzBdLG9saXZl OlsxMjgsMTI4LDBdLG9saXZlZHJhYjpbMTA3LDE0MiwzNV0sb3JhbmdlOlsy NTUsMTY1LDBdLG9yYW5nZXJlZDpbMjU1LDY5LDBdLG9yY2hpZDpbMjE4LDEx MiwyMTRdLHBhbGVnb2xkZW5yb2Q6WzIzOCwyMzIsMTcwXSxwYWxlZ3JlZW46 WzE1MiwyNTEsMTUyXSxwYWxldHVycXVvaXNlOlsxNzUsMjM4LDIzOF0scGFs ZXZpb2xldHJlZDpbMjE5LDExMiwxNDddLHBhcGF5YXdoaXA6WzI1NSwyMzks MjEzXSxwZWFjaHB1ZmY6WzI1NSwyMTgsMTg1XSxwZXJ1OlsyMDUsMTMzLDYz XSxwaW5rOlsyNTUsMTkyLDIwM10scGx1bTpbMjIxLDE2MCwyMjFdLHBvd2Rl cmJsdWU6WzE3NiwyMjQsMjMwXSxwdXJwbGU6WzEyOCwwLDEyOF0scmViZWNj YXB1cnBsZTpbMTAyLDUxLDE1M10scmVkOlsyNTUsMCwwXSxyb3N5YnJvd246 WzE4OCwxNDMsMTQzXSxyb3lhbGJsdWU6WzY1LDEwNSwyMjVdLHNhZGRsZWJy b3duOlsxMzksNjksMTldLHNhbG1vbjpbMjUwLDEyOCwxMTRdLHNhbmR5YnJv d246WzI0NCwxNjQsOTZdLHNlYWdyZWVuOls0NiwxMzksODddLHNlYXNoZWxs OlsyNTUsMjQ1LDIzOF0sc2llbm5hOlsxNjAsODIsNDVdLHNpbHZlcjpbMTky LDE5MiwxOTJdLHNreWJsdWU6WzEzNSwyMDYsMjM1XSxzbGF0ZWJsdWU6WzEw Niw5MCwyMDVdLHNsYXRlZ3JheTpbMTEyLDEyOCwxNDRdLHNsYXRlZ3JleTpb MTEyLDEyOCwxNDRdLHNub3c6WzI1NSwyNTAsMjUwXSxzcHJpbmdncmVlbjpb MCwyNTUsMTI3XSxzdGVlbGJsdWU6WzcwLDEzMCwxODBdLHRhbjpbMjEwLDE4 MCwxNDBdLHRlYWw6WzAsMTI4LDEyOF0sdGhpc3RsZTpbMjE2LDE5MSwyMTZd LHRvbWF0bzpbMjU1LDk5LDcxXSx0dXJxdW9pc2U6WzY0LDIyNCwyMDhdLHZp b2xldDpbMjM4LDEzMCwyMzhdLHdoZWF0OlsyNDUsMjIyLDE3OV0sd2hpdGU6 WzI1NSwyNTUsMjU1XSx3aGl0ZXNtb2tlOlsyNDUsMjQ1LDI0NV0seWVsbG93 OlsyNTUsMjU1LDBdLHllbGxvd2dyZWVuOlsxNTQsMjA1LDUwXX19LHt9XSwx MjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiY29s b3ItcmdiYSIpLGE9dCgiY2xhbXAiKSxpPXQoImR0eXBlIik7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7ImZsb2F0IiE9PWUmJmV8fChlPSJhcnJheSIpLCJ1 aW50Ij09PWUmJihlPSJ1aW50OCIpLCJ1aW50X2NsYW1wZWQiPT09ZSYmKGU9 InVpbnQ4X2NsYW1wZWQiKTt2YXIgcj1uZXcoaShlKSkoNCksbz0idWludDgi IT09ZSYmInVpbnQ4X2NsYW1wZWQiIT09ZTtyZXR1cm4gdC5sZW5ndGgmJiJz dHJpbmciIT10eXBlb2YgdHx8KCh0PW4odCkpWzBdLz0yNTUsdFsxXS89MjU1 LHRbMl0vPTI1NSksZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBV aW50OEFycmF5fHx0IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fCEh KEFycmF5LmlzQXJyYXkodCkmJih0WzBdPjF8fDA9PT10WzBdKSYmKHRbMV0+ MXx8MD09PXRbMV0pJiYodFsyXT4xfHwwPT09dFsyXSkmJighdFszXXx8dFsz XT4xKSl9KHQpPyhyWzBdPXRbMF0sclsxXT10WzFdLHJbMl09dFsyXSxyWzNd PW51bGwhPXRbM10/dFszXToyNTUsbyYmKHJbMF0vPTI1NSxyWzFdLz0yNTUs clsyXS89MjU1LHJbM10vPTI1NSkscik6KG8/KHJbMF09dFswXSxyWzFdPXRb MV0sclsyXT10WzJdLHJbM109bnVsbCE9dFszXT90WzNdOjEpOihyWzBdPWEo TWF0aC5mbG9vcigyNTUqdFswXSksMCwyNTUpLHJbMV09YShNYXRoLmZsb29y KDI1NSp0WzFdKSwwLDI1NSksclsyXT1hKE1hdGguZmxvb3IoMjU1KnRbMl0p LDAsMjU1KSxyWzNdPW51bGw9PXRbM10/MjU1OmEoTWF0aC5mbG9vcigyNTUq dFszXSksMCwyNTUpKSxyKX19LHtjbGFtcDoxMTcsImNvbG9yLXJnYmEiOjEy NCxkdHlwZToxNzF9XSwxMjM6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24o cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNvbG9yLW5hbWUiKSxhPXQoImlz LXBsYWluLW9iaiIpLGk9dCgiZGVmaW5lZCIpO2UuZXhwb3J0cz1mdW5jdGlv bih0KXt2YXIgZSxzLGw9W10sYz0xO2lmKCJzdHJpbmciPT10eXBlb2YgdClp ZihuW3RdKWw9blt0XS5zbGljZSgpLHM9InJnYiI7ZWxzZSBpZigidHJhbnNw YXJlbnQiPT09dCljPTAscz0icmdiIixsPVswLDAsMF07ZWxzZSBpZigvXiNb QS1GYS1mMC05XSskLy50ZXN0KHQpKXt2YXIgdT10LnNsaWNlKDEpLGg9dS5s ZW5ndGgsZj1oPD00O2M9MSxmPyhsPVtwYXJzZUludCh1WzBdK3VbMF0sMTYp LHBhcnNlSW50KHVbMV0rdVsxXSwxNikscGFyc2VJbnQodVsyXSt1WzJdLDE2 KV0sND09PWgmJihjPXBhcnNlSW50KHVbM10rdVszXSwxNikvMjU1KSk6KGw9 W3BhcnNlSW50KHVbMF0rdVsxXSwxNikscGFyc2VJbnQodVsyXSt1WzNdLDE2 KSxwYXJzZUludCh1WzRdK3VbNV0sMTYpXSw4PT09aCYmKGM9cGFyc2VJbnQo dVs2XSt1WzddLDE2KS8yNTUpKSxsWzBdfHwobFswXT0wKSxsWzFdfHwobFsx XT0wKSxsWzJdfHwobFsyXT0wKSxzPSJyZ2IifWVsc2UgaWYoZT0vXigoPzpy Z2J8aHNbbHZiXXxod2J8Y215az98eHlbenldfGdyYXl8bGFifGxjaHU/dj98 W2x5XXV2fGxtcylhPylccypcKChbXlwpXSopXCkvLmV4ZWModCkpe3ZhciBw PWVbMV0sZD0icmdiIj09PXAsdT1wLnJlcGxhY2UoL2EkLywiIik7cz11O3Zh ciBoPSJjbXlrIj09PXU/NDoiZ3JheSI9PT11PzE6MztsPWVbMl0udHJpbSgp LnNwbGl0KC9ccyosXHMqLykubWFwKGZ1bmN0aW9uKHQsZSl7aWYoLyUkLy50 ZXN0KHQpKXJldHVybiBlPT09aD9wYXJzZUZsb2F0KHQpLzEwMDoicmdiIj09 PXU/MjU1KnBhcnNlRmxvYXQodCkvMTAwOnBhcnNlRmxvYXQodCk7aWYoImgi PT09dVtlXSl7aWYoL2RlZyQvLnRlc3QodCkpcmV0dXJuIHBhcnNlRmxvYXQo dCk7aWYodm9pZCAwIT09b1t0XSlyZXR1cm4gb1t0XX1yZXR1cm4gcGFyc2VG bG9hdCh0KX0pLHA9PT11JiZsLnB1c2goMSksYz1kPzE6dm9pZCAwPT09bFto XT8xOmxbaF0sbD1sLnNsaWNlKDAsaCl9ZWxzZSB0Lmxlbmd0aD4xMCYmL1sw LTldKD86XHN8XC8pLy50ZXN0KHQpJiYobD10Lm1hdGNoKC8oWzAtOV0rKS9n KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSxzPXQu bWF0Y2goLyhbYS16XSkvZ2kpLmpvaW4oIiIpLnRvTG93ZXJDYXNlKCkpO2Vs c2UgaWYoaXNOYU4odCkpaWYoYSh0KSl7dmFyIGc9aSh0LnIsdC5yZWQsdC5S LG51bGwpO251bGwhPT1nPyhzPSJyZ2IiLGw9W2csaSh0LmcsdC5ncmVlbix0 LkcpLGkodC5iLHQuYmx1ZSx0LkIpXSk6KHM9ImhzbCIsbD1baSh0LmgsdC5o dWUsdC5IKSxpKHQucyx0LnNhdHVyYXRpb24sdC5TKSxpKHQubCx0LmxpZ2h0 bmVzcyx0LkwsdC5iLHQuYnJpZ2h0bmVzcyldKSxjPWkodC5hLHQuYWxwaGEs dC5vcGFjaXR5LDEpLG51bGwhPXQub3BhY2l0eSYmKGMvPTEwMCl9ZWxzZShB cnJheS5pc0FycmF5KHQpfHxyLkFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5p c1ZpZXcmJkFycmF5QnVmZmVyLmlzVmlldyh0KSkmJihsPVt0WzBdLHRbMV0s dFsyXV0scz0icmdiIixjPTQ9PT10Lmxlbmd0aD90WzNdOjEpO2Vsc2Ugcz0i cmdiIixsPVt0Pj4+MTYsKDY1MjgwJnQpPj4+OCwyNTUmdF07cmV0dXJue3Nw YWNlOnMsdmFsdWVzOmwsYWxwaGE6Y319O3ZhciBvPXtyZWQ6MCxvcmFuZ2U6 NjAseWVsbG93OjEyMCxncmVlbjoxODAsYmx1ZToyNDAscHVycGxlOjMwMH19 KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFs OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10 eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiY29sb3ItbmFtZSI6MTIxLGRl ZmluZWQ6MTY2LCJpcy1wbGFpbi1vYmoiOjQyNH1dLDEyNDpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjb2xvci1wYXJzZSIpLGE9 dCgiY29sb3Itc3BhY2UvaHNsIiksaT10KCJjbGFtcCIpO2UuZXhwb3J0cz1m dW5jdGlvbih0KXt2YXIgZSxyPW4odCk7cmV0dXJuIHIuc3BhY2U/KChlPUFy cmF5KDMpKVswXT1pKHIudmFsdWVzWzBdLDAsMjU1KSxlWzFdPWkoci52YWx1 ZXNbMV0sMCwyNTUpLGVbMl09aShyLnZhbHVlc1syXSwwLDI1NSksImgiPT09 ci5zcGFjZVswXSYmKGU9YS5yZ2IoZSkpLGUucHVzaChpKHIuYWxwaGEsMCwx KSksZSk6W119fSx7Y2xhbXA6MTE3LCJjb2xvci1wYXJzZSI6MTIzLCJjb2xv ci1zcGFjZS9oc2wiOjEyNX1dLDEyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuL3JnYiIpO2UuZXhwb3J0cz17bmFtZToiaHNs IixtaW46WzAsMCwwXSxtYXg6WzM2MCwxMDAsMTAwXSxjaGFubmVsOlsiaHVl Iiwic2F0dXJhdGlvbiIsImxpZ2h0bmVzcyJdLGFsaWFzOlsiSFNMIl0scmdi OmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhLGksbz10WzBdLzM2MCxzPXRbMV0v MTAwLGw9dFsyXS8xMDA7aWYoMD09PXMpcmV0dXJuW2k9MjU1KmwsaSxpXTtl PTIqbC0ocj1sPC41P2wqKDErcyk6bCtzLWwqcyksYT1bMCwwLDBdO2Zvcih2 YXIgYz0wO2M8MztjKyspKG49bysxLzMqLShjLTEpKTwwP24rKzpuPjEmJm4t LSxpPTYqbjwxP2UrNiooci1lKSpuOjIqbjwxP3I6MypuPDI/ZSsoci1lKSoo Mi8zLW4pKjY6ZSxhW2NdPTI1NSppO3JldHVybiBhfX0sbi5oc2w9ZnVuY3Rp b24odCl7dmFyIGUscixuPXRbMF0vMjU1LGE9dFsxXS8yNTUsaT10WzJdLzI1 NSxvPU1hdGgubWluKG4sYSxpKSxzPU1hdGgubWF4KG4sYSxpKSxsPXMtbzty ZXR1cm4gcz09PW8/ZT0wOm49PT1zP2U9KGEtaSkvbDphPT09cz9lPTIrKGkt bikvbDppPT09cyYmKGU9NCsobi1hKS9sKSwoZT1NYXRoLm1pbig2MCplLDM2 MCkpPDAmJihlKz0zNjApLHI9KG8rcykvMixbZSwxMDAqKHM9PT1vPzA6cjw9 LjU/bC8ocytvKTpsLygyLXMtbykpLDEwMCpyXX19LHsiLi9yZ2IiOjEyNn1d LDEyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 e25hbWU6InJnYiIsbWluOlswLDAsMF0sbWF4OlsyNTUsMjU1LDI1NV0sY2hh bm5lbDpbInJlZCIsImdyZWVuIiwiYmx1ZSJdLGFsaWFzOlsiUkdCIl19fSx7 fV0sMTI3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXtqZXQ6W3tpbmRl eDowLHJnYjpbMCwwLDEzMV19LHtpbmRleDouMTI1LHJnYjpbMCw2MCwxNzBd fSx7aW5kZXg6LjM3NSxyZ2I6WzUsMjU1LDI1NV19LHtpbmRleDouNjI1LHJn YjpbMjU1LDI1NSwwXX0se2luZGV4Oi44NzUscmdiOlsyNTAsMCwwXX0se2lu ZGV4OjEscmdiOlsxMjgsMCwwXX1dLGhzdjpbe2luZGV4OjAscmdiOlsyNTUs MCwwXX0se2luZGV4Oi4xNjkscmdiOlsyNTMsMjU1LDJdfSx7aW5kZXg6LjE3 MyxyZ2I6WzI0NywyNTUsMl19LHtpbmRleDouMzM3LHJnYjpbMCwyNTIsNF19 LHtpbmRleDouMzQxLHJnYjpbMCwyNTIsMTBdfSx7aW5kZXg6LjUwNixyZ2I6 WzEsMjQ5LDI1NV19LHtpbmRleDouNjcxLHJnYjpbMiwwLDI1M119LHtpbmRl eDouNjc1LHJnYjpbOCwwLDI1M119LHtpbmRleDouODM5LHJnYjpbMjU1LDAs MjUxXX0se2luZGV4Oi44NDMscmdiOlsyNTUsMCwyNDVdfSx7aW5kZXg6MSxy Z2I6WzI1NSwwLDZdfV0saG90Olt7aW5kZXg6MCxyZ2I6WzAsMCwwXX0se2lu ZGV4Oi4zLHJnYjpbMjMwLDAsMF19LHtpbmRleDouNixyZ2I6WzI1NSwyMTAs MF19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyNTVdfV0sY29vbDpbe2luZGV4 OjAscmdiOlswLDI1NSwyNTVdfSx7aW5kZXg6MSxyZ2I6WzI1NSwwLDI1NV19 XSxzcHJpbmc6W3tpbmRleDowLHJnYjpbMjU1LDAsMjU1XX0se2luZGV4OjEs cmdiOlsyNTUsMjU1LDBdfV0sc3VtbWVyOlt7aW5kZXg6MCxyZ2I6WzAsMTI4 LDEwMl19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwxMDJdfV0sYXV0dW1uOlt7 aW5kZXg6MCxyZ2I6WzI1NSwwLDBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUs MF19XSx3aW50ZXI6W3tpbmRleDowLHJnYjpbMCwwLDI1NV19LHtpbmRleDox LHJnYjpbMCwyNTUsMTI4XX1dLGJvbmU6W3tpbmRleDowLHJnYjpbMCwwLDBd fSx7aW5kZXg6LjM3NixyZ2I6Wzg0LDg0LDExNl19LHtpbmRleDouNzUzLHJn YjpbMTY5LDIwMCwyMDBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMjU1XX1d LGNvcHBlcjpbe2luZGV4OjAscmdiOlswLDAsMF19LHtpbmRleDouODA0LHJn YjpbMjU1LDE2MCwxMDJdfSx7aW5kZXg6MSxyZ2I6WzI1NSwxOTksMTI3XX1d LGdyZXlzOlt7aW5kZXg6MCxyZ2I6WzAsMCwwXX0se2luZGV4OjEscmdiOlsy NTUsMjU1LDI1NV19XSx5aWduYnU6W3tpbmRleDowLHJnYjpbOCwyOSw4OF19 LHtpbmRleDouMTI1LHJnYjpbMzcsNTIsMTQ4XX0se2luZGV4Oi4yNSxyZ2I6 WzM0LDk0LDE2OF19LHtpbmRleDouMzc1LHJnYjpbMjksMTQ1LDE5Ml19LHtp bmRleDouNSxyZ2I6WzY1LDE4MiwxOTZdfSx7aW5kZXg6LjYyNSxyZ2I6WzEy NywyMDUsMTg3XX0se2luZGV4Oi43NSxyZ2I6WzE5OSwyMzMsMTgwXX0se2lu ZGV4Oi44NzUscmdiOlsyMzcsMjQ4LDIxN119LHtpbmRleDoxLHJnYjpbMjU1 LDI1NSwyMTddfV0sZ3JlZW5zOlt7aW5kZXg6MCxyZ2I6WzAsNjgsMjddfSx7 aW5kZXg6LjEyNSxyZ2I6WzAsMTA5LDQ0XX0se2luZGV4Oi4yNSxyZ2I6WzM1 LDEzOSw2OV19LHtpbmRleDouMzc1LHJnYjpbNjUsMTcxLDkzXX0se2luZGV4 Oi41LHJnYjpbMTE2LDE5NiwxMThdfSx7aW5kZXg6LjYyNSxyZ2I6WzE2MSwy MTcsMTU1XX0se2luZGV4Oi43NSxyZ2I6WzE5OSwyMzMsMTkyXX0se2luZGV4 Oi44NzUscmdiOlsyMjksMjQ1LDIyNF19LHtpbmRleDoxLHJnYjpbMjQ3LDI1 MiwyNDVdfV0seWlvcnJkOlt7aW5kZXg6MCxyZ2I6WzEyOCwwLDM4XX0se2lu ZGV4Oi4xMjUscmdiOlsxODksMCwzOF19LHtpbmRleDouMjUscmdiOlsyMjcs MjYsMjhdfSx7aW5kZXg6LjM3NSxyZ2I6WzI1Miw3OCw0Ml19LHtpbmRleDou NSxyZ2I6WzI1MywxNDEsNjBdfSx7aW5kZXg6LjYyNSxyZ2I6WzI1NCwxNzgs NzZdfSx7aW5kZXg6Ljc1LHJnYjpbMjU0LDIxNywxMThdfSx7aW5kZXg6Ljg3 NSxyZ2I6WzI1NSwyMzcsMTYwXX0se2luZGV4OjEscmdiOlsyNTUsMjU1LDIw NF19XSxibHVlcmVkOlt7aW5kZXg6MCxyZ2I6WzAsMCwyNTVdfSx7aW5kZXg6 MSxyZ2I6WzI1NSwwLDBdfV0scmRidTpbe2luZGV4OjAscmdiOls1LDEwLDE3 Ml19LHtpbmRleDouMzUscmdiOlsxMDYsMTM3LDI0N119LHtpbmRleDouNSxy Z2I6WzE5MCwxOTAsMTkwXX0se2luZGV4Oi42LHJnYjpbMjIwLDE3MCwxMzJd fSx7aW5kZXg6LjcscmdiOlsyMzAsMTQ1LDkwXX0se2luZGV4OjEscmdiOlsx NzgsMTAsMjhdfV0scGljbmljOlt7aW5kZXg6MCxyZ2I6WzAsMCwyNTVdfSx7 aW5kZXg6LjEscmdiOls1MSwxNTMsMjU1XX0se2luZGV4Oi4yLHJnYjpbMTAy LDIwNCwyNTVdfSx7aW5kZXg6LjMscmdiOlsxNTMsMjA0LDI1NV19LHtpbmRl eDouNCxyZ2I6WzIwNCwyMDQsMjU1XX0se2luZGV4Oi41LHJnYjpbMjU1LDI1 NSwyNTVdfSx7aW5kZXg6LjYscmdiOlsyNTUsMjA0LDI1NV19LHtpbmRleDou NyxyZ2I6WzI1NSwxNTMsMjU1XX0se2luZGV4Oi44LHJnYjpbMjU1LDEwMiwy MDRdfSx7aW5kZXg6LjkscmdiOlsyNTUsMTAyLDEwMl19LHtpbmRleDoxLHJn YjpbMjU1LDAsMF19XSxyYWluYm93Olt7aW5kZXg6MCxyZ2I6WzE1MCwwLDkw XX0se2luZGV4Oi4xMjUscmdiOlswLDAsMjAwXX0se2luZGV4Oi4yNSxyZ2I6 WzAsMjUsMjU1XX0se2luZGV4Oi4zNzUscmdiOlswLDE1MiwyNTVdfSx7aW5k ZXg6LjUscmdiOls0NCwyNTUsMTUwXX0se2luZGV4Oi42MjUscmdiOlsxNTEs MjU1LDBdfSx7aW5kZXg6Ljc1LHJnYjpbMjU1LDIzNCwwXX0se2luZGV4Oi44 NzUscmdiOlsyNTUsMTExLDBdfSx7aW5kZXg6MSxyZ2I6WzI1NSwwLDBdfV0s cG9ydGxhbmQ6W3tpbmRleDowLHJnYjpbMTIsNTEsMTMxXX0se2luZGV4Oi4y NSxyZ2I6WzEwLDEzNiwxODZdfSx7aW5kZXg6LjUscmdiOlsyNDIsMjExLDU2 XX0se2luZGV4Oi43NSxyZ2I6WzI0MiwxNDMsNTZdfSx7aW5kZXg6MSxyZ2I6 WzIxNywzMCwzMF19XSxibGFja2JvZHk6W3tpbmRleDowLHJnYjpbMCwwLDBd fSx7aW5kZXg6LjIscmdiOlsyMzAsMCwwXX0se2luZGV4Oi40LHJnYjpbMjMw LDIxMCwwXX0se2luZGV4Oi43LHJnYjpbMjU1LDI1NSwyNTVdfSx7aW5kZXg6 MSxyZ2I6WzE2MCwyMDAsMjU1XX1dLGVhcnRoOlt7aW5kZXg6MCxyZ2I6WzAs MCwxMzBdfSx7aW5kZXg6LjEscmdiOlswLDE4MCwxODBdfSx7aW5kZXg6LjIs cmdiOls0MCwyMTAsNDBdfSx7aW5kZXg6LjQscmdiOlsyMzAsMjMwLDUwXX0s e2luZGV4Oi42LHJnYjpbMTIwLDcwLDIwXX0se2luZGV4OjEscmdiOlsyNTUs MjU1LDI1NV19XSxlbGVjdHJpYzpbe2luZGV4OjAscmdiOlswLDAsMF19LHtp bmRleDouMTUscmdiOlszMCwwLDEwMF19LHtpbmRleDouNCxyZ2I6WzEyMCww LDEwMF19LHtpbmRleDouNixyZ2I6WzE2MCw5MCwwXX0se2luZGV4Oi44LHJn YjpbMjMwLDIwMCwwXX0se2luZGV4OjEscmdiOlsyNTUsMjUwLDIyMF19XSxh bHBoYTpbe2luZGV4OjAscmdiOlsyNTUsMjU1LDI1NSwwXX0se2luZGV4OjEs cmdiOlsyNTUsMjU1LDI1NSwxXX1dLHZpcmlkaXM6W3tpbmRleDowLHJnYjpb NjgsMSw4NF19LHtpbmRleDouMTMscmdiOls3MSw0NCwxMjJdfSx7aW5kZXg6 LjI1LHJnYjpbNTksODEsMTM5XX0se2luZGV4Oi4zOCxyZ2I6WzQ0LDExMywx NDJdfSx7aW5kZXg6LjUscmdiOlszMywxNDQsMTQxXX0se2luZGV4Oi42Myxy Z2I6WzM5LDE3MywxMjldfSx7aW5kZXg6Ljc1LHJnYjpbOTIsMjAwLDk5XX0s e2luZGV4Oi44OCxyZ2I6WzE3MCwyMjAsNTBdfSx7aW5kZXg6MSxyZ2I6WzI1 MywyMzEsMzddfV0saW5mZXJubzpbe2luZGV4OjAscmdiOlswLDAsNF19LHtp bmRleDouMTMscmdiOlszMSwxMiw3Ml19LHtpbmRleDouMjUscmdiOls4NSwx NSwxMDldfSx7aW5kZXg6LjM4LHJnYjpbMTM2LDM0LDEwNl19LHtpbmRleDou NSxyZ2I6WzE4Niw1NCw4NV19LHtpbmRleDouNjMscmdiOlsyMjcsODksNTFd fSx7aW5kZXg6Ljc1LHJnYjpbMjQ5LDE0MCwxMF19LHtpbmRleDouODgscmdi OlsyNDksMjAxLDUwXX0se2luZGV4OjEscmdiOlsyNTIsMjU1LDE2NF19XSxt YWdtYTpbe2luZGV4OjAscmdiOlswLDAsNF19LHtpbmRleDouMTMscmdiOlsy OCwxNiw2OF19LHtpbmRleDouMjUscmdiOls3OSwxOCwxMjNdfSx7aW5kZXg6 LjM4LHJnYjpbMTI5LDM3LDEyOV19LHtpbmRleDouNSxyZ2I6WzE4MSw1NCwx MjJdfSx7aW5kZXg6LjYzLHJnYjpbMjI5LDgwLDEwMF19LHtpbmRleDouNzUs cmdiOlsyNTEsMTM1LDk3XX0se2luZGV4Oi44OCxyZ2I6WzI1NCwxOTQsMTM1 XX0se2luZGV4OjEscmdiOlsyNTIsMjUzLDE5MV19XSxwbGFzbWE6W3tpbmRl eDowLHJnYjpbMTMsOCwxMzVdfSx7aW5kZXg6LjEzLHJnYjpbNzUsMywxNjFd fSx7aW5kZXg6LjI1LHJnYjpbMTI1LDMsMTY4XX0se2luZGV4Oi4zOCxyZ2I6 WzE2OCwzNCwxNTBdfSx7aW5kZXg6LjUscmdiOlsyMDMsNzAsMTIxXX0se2lu ZGV4Oi42MyxyZ2I6WzIyOSwxMDcsOTNdfSx7aW5kZXg6Ljc1LHJnYjpbMjQ4 LDE0OCw2NV19LHtpbmRleDouODgscmdiOlsyNTMsMTk1LDQwXX0se2luZGV4 OjEscmdiOlsyNDAsMjQ5LDMzXX1dLHdhcm06W3tpbmRleDowLHJnYjpbMTI1 LDAsMTc5XX0se2luZGV4Oi4xMyxyZ2I6WzE3MiwwLDE4N119LHtpbmRleDou MjUscmdiOlsyMTksMCwxNzBdfSx7aW5kZXg6LjM4LHJnYjpbMjU1LDAsMTMw XX0se2luZGV4Oi41LHJnYjpbMjU1LDYzLDc0XX0se2luZGV4Oi42MyxyZ2I6 WzI1NSwxMjMsMF19LHtpbmRleDouNzUscmdiOlsyMzQsMTc2LDBdfSx7aW5k ZXg6Ljg4LHJnYjpbMTkwLDIyOCwwXX0se2luZGV4OjEscmdiOlsxNDcsMjU1 LDBdfV0sY29vbDpbe2luZGV4OjAscmdiOlsxMjUsMCwxNzldfSx7aW5kZXg6 LjEzLHJnYjpbMTE2LDAsMjE4XX0se2luZGV4Oi4yNSxyZ2I6Wzk4LDc0LDIz N119LHtpbmRleDouMzgscmdiOls2OCwxNDYsMjMxXX0se2luZGV4Oi41LHJn YjpbMCwyMDQsMTk3XX0se2luZGV4Oi42MyxyZ2I6WzAsMjQ3LDE0Nl19LHtp bmRleDouNzUscmdiOlswLDI1NSw4OF19LHtpbmRleDouODgscmdiOls0MCwy NTUsOF19LHtpbmRleDoxLHJnYjpbMTQ3LDI1NSwwXX1dLCJyYWluYm93LXNv ZnQiOlt7aW5kZXg6MCxyZ2I6WzEyNSwwLDE3OV19LHtpbmRleDouMSxyZ2I6 WzE5OSwwLDE4MF19LHtpbmRleDouMixyZ2I6WzI1NSwwLDEyMV19LHtpbmRl eDouMyxyZ2I6WzI1NSwxMDgsMF19LHtpbmRleDouNCxyZ2I6WzIyMiwxOTQs MF19LHtpbmRleDouNSxyZ2I6WzE1MCwyNTUsMF19LHtpbmRleDouNixyZ2I6 WzAsMjU1LDU1XX0se2luZGV4Oi43LHJnYjpbMCwyNDYsMTUwXX0se2luZGV4 Oi44LHJnYjpbNTAsMTY3LDIyMl19LHtpbmRleDouOSxyZ2I6WzEwMyw1MSwy MzVdfSx7aW5kZXg6MSxyZ2I6WzEyNCwwLDE4Nl19XSxiYXRoeW1ldHJ5Olt7 aW5kZXg6MCxyZ2I6WzQwLDI2LDQ0XX0se2luZGV4Oi4xMyxyZ2I6WzU5LDQ5 LDkwXX0se2luZGV4Oi4yNSxyZ2I6WzY0LDc2LDEzOV19LHtpbmRleDouMzgs cmdiOls2MywxMTAsMTUxXX0se2luZGV4Oi41LHJnYjpbNzIsMTQyLDE1OF19 LHtpbmRleDouNjMscmdiOls4NSwxNzQsMTYzXX0se2luZGV4Oi43NSxyZ2I6 WzEyMCwyMDYsMTYzXX0se2luZGV4Oi44OCxyZ2I6WzE4NywyMzAsMTcyXX0s e2luZGV4OjEscmdiOlsyNTMsMjU0LDIwNF19XSxjZG9tOlt7aW5kZXg6MCxy Z2I6WzQ3LDE1LDYyXX0se2luZGV4Oi4xMyxyZ2I6Wzg3LDIzLDg2XX0se2lu ZGV4Oi4yNSxyZ2I6WzEzMCwyOCw5OV19LHtpbmRleDouMzgscmdiOlsxNzEs NDEsOTZdfSx7aW5kZXg6LjUscmdiOlsyMDYsNjcsODZdfSx7aW5kZXg6LjYz LHJnYjpbMjMwLDEwNiw4NF19LHtpbmRleDouNzUscmdiOlsyNDIsMTQ5LDEw M119LHtpbmRleDouODgscmdiOlsyNDksMTkzLDEzNV19LHtpbmRleDoxLHJn YjpbMjU0LDIzNywxNzZdfV0sY2hsb3JvcGh5bGw6W3tpbmRleDowLHJnYjpb MTgsMzYsMjBdfSx7aW5kZXg6LjEzLHJnYjpbMjUsNjMsNDFdfSx7aW5kZXg6 LjI1LHJnYjpbMjQsOTEsNTldfSx7aW5kZXg6LjM4LHJnYjpbMTMsMTE5LDcy XX0se2luZGV4Oi41LHJnYjpbMTgsMTQ4LDgwXX0se2luZGV4Oi42MyxyZ2I6 WzgwLDE3Myw4OV19LHtpbmRleDouNzUscmdiOlsxMzIsMTk2LDEyMl19LHtp bmRleDouODgscmdiOlsxNzUsMjIxLDE2Ml19LHtpbmRleDoxLHJnYjpbMjE1 LDI0OSwyMDhdfV0sZGVuc2l0eTpbe2luZGV4OjAscmdiOls1NCwxNCwzNl19 LHtpbmRleDouMTMscmdiOls4OSwyMyw4MF19LHtpbmRleDouMjUscmdiOlsx MTAsNDUsMTMyXX0se2luZGV4Oi4zOCxyZ2I6WzEyMCw3NywxNzhdfSx7aW5k ZXg6LjUscmdiOlsxMjAsMTEzLDIxM119LHtpbmRleDouNjMscmdiOlsxMTUs MTUxLDIyOF19LHtpbmRleDouNzUscmdiOlsxMzQsMTg1LDIyN119LHtpbmRl eDouODgscmdiOlsxNzcsMjE0LDIyN119LHtpbmRleDoxLHJnYjpbMjMwLDI0 MSwyNDFdfV0sImZyZWVzdXJmYWNlLWJsdWUiOlt7aW5kZXg6MCxyZ2I6WzMw LDQsMTEwXX0se2luZGV4Oi4xMyxyZ2I6WzQ3LDE0LDE3Nl19LHtpbmRleDou MjUscmdiOls0MSw0NSwyMzZdfSx7aW5kZXg6LjM4LHJnYjpbMjUsOTksMjEy XX0se2luZGV4Oi41LHJnYjpbNjgsMTMxLDIwMF19LHtpbmRleDouNjMscmdi OlsxMTQsMTU2LDE5N119LHtpbmRleDouNzUscmdiOlsxNTcsMTgxLDIwM119 LHtpbmRleDouODgscmdiOlsyMDAsMjA4LDIxNl19LHtpbmRleDoxLHJnYjpb MjQxLDIzNywyMzZdfV0sImZyZWVzdXJmYWNlLXJlZCI6W3tpbmRleDowLHJn YjpbNjAsOSwxOF19LHtpbmRleDouMTMscmdiOlsxMDAsMTcsMjddfSx7aW5k ZXg6LjI1LHJnYjpbMTQyLDIwLDI5XX0se2luZGV4Oi4zOCxyZ2I6WzE3Nyw0 MywyN119LHtpbmRleDouNSxyZ2I6WzE5Miw4Nyw2M119LHtpbmRleDouNjMs cmdiOlsyMDUsMTI1LDEwNV19LHtpbmRleDouNzUscmdiOlsyMTYsMTYyLDE0 OF19LHtpbmRleDouODgscmdiOlsyMjcsMTk5LDE5M119LHtpbmRleDoxLHJn YjpbMjQxLDIzNywyMzZdfV0sb3h5Z2VuOlt7aW5kZXg6MCxyZ2I6WzY0LDUs NV19LHtpbmRleDouMTMscmdiOlsxMDYsNiwxNV19LHtpbmRleDouMjUscmdi OlsxNDQsMjYsN119LHtpbmRleDouMzgscmdiOlsxNjgsNjQsM119LHtpbmRl eDouNSxyZ2I6WzE4OCwxMDAsNF19LHtpbmRleDouNjMscmdiOlsyMDYsMTM2 LDExXX0se2luZGV4Oi43NSxyZ2I6WzIyMCwxNzQsMjVdfSx7aW5kZXg6Ljg4 LHJnYjpbMjMxLDIxNSw0NF19LHtpbmRleDoxLHJnYjpbMjQ4LDI1NCwxMDVd fV0scGFyOlt7aW5kZXg6MCxyZ2I6WzUxLDIwLDI0XX0se2luZGV4Oi4xMyxy Z2I6WzkwLDMyLDM1XX0se2luZGV4Oi4yNSxyZ2I6WzEyOSw0NCwzNF19LHtp bmRleDouMzgscmdiOlsxNTksNjgsMjVdfSx7aW5kZXg6LjUscmdiOlsxODIs OTksMTldfSx7aW5kZXg6LjYzLHJnYjpbMTk5LDEzNCwyMl19LHtpbmRleDou NzUscmdiOlsyMTIsMTcxLDM1XX0se2luZGV4Oi44OCxyZ2I6WzIyMSwyMTAs NTRdfSx7aW5kZXg6MSxyZ2I6WzIyNSwyNTMsNzVdfV0scGhhc2U6W3tpbmRl eDowLHJnYjpbMTQ1LDEwNSwxOF19LHtpbmRleDouMTMscmdiOlsxODQsNzEs MzhdfSx7aW5kZXg6LjI1LHJnYjpbMTg2LDU4LDExNV19LHtpbmRleDouMzgs cmdiOlsxNjAsNzEsMTg1XX0se2luZGV4Oi41LHJnYjpbMTEwLDk3LDIxOF19 LHtpbmRleDouNjMscmdiOls1MCwxMjMsMTY0XX0se2luZGV4Oi43NSxyZ2I6 WzMxLDEzMSwxMTBdfSx7aW5kZXg6Ljg4LHJnYjpbNzcsMTI5LDM0XX0se2lu ZGV4OjEscmdiOlsxNDUsMTA1LDE4XX1dLHNhbGluaXR5Olt7aW5kZXg6MCxy Z2I6WzQyLDI0LDEwOF19LHtpbmRleDouMTMscmdiOlszMyw1MCwxNjJdfSx7 aW5kZXg6LjI1LHJnYjpbMTUsOTAsMTQ1XX0se2luZGV4Oi4zOCxyZ2I6WzQw LDExOCwxMzddfSx7aW5kZXg6LjUscmdiOls1OSwxNDYsMTM1XX0se2luZGV4 Oi42MyxyZ2I6Wzc5LDE3NSwxMjZdfSx7aW5kZXg6Ljc1LHJnYjpbMTIwLDIw MywxMDRdfSx7aW5kZXg6Ljg4LHJnYjpbMTkzLDIyMSwxMDBdfSx7aW5kZXg6 MSxyZ2I6WzI1MywyMzksMTU0XX1dLHRlbXBlcmF0dXJlOlt7aW5kZXg6MCxy Z2I6WzQsMzUsNTFdfSx7aW5kZXg6LjEzLHJnYjpbMjMsNTEsMTIyXX0se2lu ZGV4Oi4yNSxyZ2I6Wzg1LDU5LDE1N119LHtpbmRleDouMzgscmdiOlsxMjks NzksMTQzXX0se2luZGV4Oi41LHJnYjpbMTc1LDk1LDEzMF19LHtpbmRleDou NjMscmdiOlsyMjIsMTEyLDEwMV19LHtpbmRleDouNzUscmdiOlsyNDksMTQ2 LDY2XX0se2luZGV4Oi44OCxyZ2I6WzI0OSwxOTYsNjVdfSx7aW5kZXg6MSxy Z2I6WzIzMiwyNTAsOTFdfV0sdHVyYmlkaXR5Olt7aW5kZXg6MCxyZ2I6WzM0 LDMxLDI3XX0se2luZGV4Oi4xMyxyZ2I6WzY1LDUwLDQxXX0se2luZGV4Oi4y NSxyZ2I6Wzk4LDY5LDUyXX0se2luZGV4Oi4zOCxyZ2I6WzEzMSw4OSw1N119 LHtpbmRleDouNSxyZ2I6WzE2MSwxMTIsNTldfSx7aW5kZXg6LjYzLHJnYjpb MTg1LDE0MCw2Nl19LHtpbmRleDouNzUscmdiOlsyMDIsMTc0LDg4XX0se2lu ZGV4Oi44OCxyZ2I6WzIxNiwyMDksMTI2XX0se2luZGV4OjEscmdiOlsyMzMs MjQ2LDE3MV19XSwidmVsb2NpdHktYmx1ZSI6W3tpbmRleDowLHJnYjpbMTcs MzIsNjRdfSx7aW5kZXg6LjEzLHJnYjpbMzUsNTIsMTE2XX0se2luZGV4Oi4y NSxyZ2I6WzI5LDgxLDE1Nl19LHtpbmRleDouMzgscmdiOlszMSwxMTMsMTYy XX0se2luZGV4Oi41LHJnYjpbNTAsMTQ0LDE2OV19LHtpbmRleDouNjMscmdi Ols4NywxNzMsMTc2XX0se2luZGV4Oi43NSxyZ2I6WzE0OSwxOTYsMTg5XX0s e2luZGV4Oi44OCxyZ2I6WzIwMywyMjEsMjExXX0se2luZGV4OjEscmdiOlsy NTQsMjUxLDIzMF19XSwidmVsb2NpdHktZ3JlZW4iOlt7aW5kZXg6MCxyZ2I6 WzIzLDM1LDE5XX0se2luZGV4Oi4xMyxyZ2I6WzI0LDY0LDM4XX0se2luZGV4 Oi4yNSxyZ2I6WzExLDk1LDQ1XX0se2luZGV4Oi4zOCxyZ2I6WzM5LDEyMywz NV19LHtpbmRleDouNSxyZ2I6Wzk1LDE0NiwxMl19LHtpbmRleDouNjMscmdi OlsxNTIsMTY1LDE4XX0se2luZGV4Oi43NSxyZ2I6WzIwMSwxODYsNjldfSx7 aW5kZXg6Ljg4LHJnYjpbMjMzLDIxNiwxMzddfSx7aW5kZXg6MSxyZ2I6WzI1 NSwyNTMsMjA1XX1dLGN1YmVoZWxpeDpbe2luZGV4OjAscmdiOlswLDAsMF19 LHtpbmRleDouMDcscmdiOlsyMiw1LDU5XX0se2luZGV4Oi4xMyxyZ2I6WzYw LDQsMTA1XX0se2luZGV4Oi4yLHJnYjpbMTA5LDEsMTM1XX0se2luZGV4Oi4y NyxyZ2I6WzE2MSwwLDE0N119LHtpbmRleDouMzMscmdiOlsyMTAsMiwxNDJd fSx7aW5kZXg6LjQscmdiOlsyNTEsMTEsMTIzXX0se2luZGV4Oi40NyxyZ2I6 WzI1NSwyOSw5N119LHtpbmRleDouNTMscmdiOlsyNTUsNTQsNjldfSx7aW5k ZXg6LjYscmdiOlsyNTUsODUsNDZdfSx7aW5kZXg6LjY3LHJnYjpbMjU1LDEy MCwzNF19LHtpbmRleDouNzMscmdiOlsyNTUsMTU3LDM3XX0se2luZGV4Oi44 LHJnYjpbMjQxLDE5MSw1N119LHtpbmRleDouODcscmdiOlsyMjQsMjIwLDkz XX0se2luZGV4Oi45MyxyZ2I6WzIxOCwyNDEsMTQyXX0se2luZGV4OjEscmdi OlsyMjcsMjUzLDE5OF19XX19LHt9XSwxMjg6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb2xvclNjYWxlIiksYT10KCJsZXJw Iik7ZnVuY3Rpb24gaSh0KXtyZXR1cm5bdFswXS8yNTUsdFsxXS8yNTUsdFsy XS8yNTUsdFszXV19ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUscj0iIyIsbj0w O248MzsrK24pcis9KCIwMCIrKGU9KGU9dFtuXSkudG9TdHJpbmcoMTYpKSku c3Vic3RyKGUubGVuZ3RoKTtyZXR1cm4gcn1mdW5jdGlvbiBzKHQpe3JldHVy biJyZ2JhKCIrdC5qb2luKCIsIikrIikifWUuZXhwb3J0cz1mdW5jdGlvbih0 KXt2YXIgZSxyLGwsYyx1LGgsZixwLGQsZzt0fHwodD17fSk7cD0odC5uc2hh ZGVzfHw3MiktMSxmPXQuZm9ybWF0fHwiaGV4IiwoaD10LmNvbG9ybWFwKXx8 KGg9ImpldCIpO2lmKCJzdHJpbmciPT10eXBlb2YgaCl7aWYoaD1oLnRvTG93 ZXJDYXNlKCksIW5baF0pdGhyb3cgRXJyb3IoaCsiIG5vdCBhIHN1cHBvcnRl ZCBjb2xvcnNjYWxlIik7dT1uW2hdfWVsc2V7aWYoIUFycmF5LmlzQXJyYXko aCkpdGhyb3cgRXJyb3IoInVuc3VwcG9ydGVkIGNvbG9ybWFwIG9wdGlvbiIs aCk7dT1oLnNsaWNlKCl9aWYodS5sZW5ndGg+cCsxKXRocm93IG5ldyBFcnJv cihoKyIgbWFwIHJlcXVpcmVzIG5zaGFkZXMgdG8gYmUgYXQgbGVhc3Qgc2l6 ZSAiK3UubGVuZ3RoKTtkPUFycmF5LmlzQXJyYXkodC5hbHBoYSk/MiE9PXQu YWxwaGEubGVuZ3RoP1sxLDFdOnQuYWxwaGEuc2xpY2UoKToibnVtYmVyIj09 dHlwZW9mIHQuYWxwaGE/W3QuYWxwaGEsdC5hbHBoYV06WzEsMV07ZT11Lm1h cChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0LmluZGV4KnApfSks ZFswXT1NYXRoLm1pbihNYXRoLm1heChkWzBdLDApLDEpLGRbMV09TWF0aC5t aW4oTWF0aC5tYXgoZFsxXSwwKSwxKTt2YXIgdj11Lm1hcChmdW5jdGlvbih0 LGUpe3ZhciByPXVbZV0uaW5kZXgsbj11W2VdLnJnYi5zbGljZSgpO3JldHVy biA0PT09bi5sZW5ndGgmJm5bM10+PTAmJm5bM108PTE/bjooblszXT1kWzBd KyhkWzFdLWRbMF0pKnIsbil9KSxtPVtdO2ZvcihnPTA7ZzxlLmxlbmd0aC0x OysrZyl7Yz1lW2crMV0tZVtnXSxyPXZbZ10sbD12W2crMV07Zm9yKHZhciB5 PTA7eTxjO3krKyl7dmFyIHg9eS9jO20ucHVzaChbTWF0aC5yb3VuZChhKHJb MF0sbFswXSx4KSksTWF0aC5yb3VuZChhKHJbMV0sbFsxXSx4KSksTWF0aC5y b3VuZChhKHJbMl0sbFsyXSx4KSksYShyWzNdLGxbM10seCldKX19bS5wdXNo KHVbdS5sZW5ndGgtMV0ucmdiLmNvbmNhdChkWzFdKSksImhleCI9PT1mP209 bS5tYXAobyk6InJnYmFTdHJpbmciPT09Zj9tPW0ubWFwKHMpOiJmbG9hdCI9 PT1mJiYobT1tLm1hcChpKSk7cmV0dXJuIG19fSx7Ii4vY29sb3JTY2FsZSI6 MTI3LGxlcnA6NDI3fV0sMTI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbz1uKGUscixp KTtpZigwPT09byl7dmFyIHM9YShuKHQsZSxyKSksYz1hKG4odCxlLGkpKTtp ZihzPT09Yyl7aWYoMD09PXMpe3ZhciB1PWwodCxlLHIpLGg9bCh0LGUsaSk7 cmV0dXJuIHU9PT1oPzA6dT8xOi0xfXJldHVybiAwfXJldHVybiAwPT09Yz9z PjA/LTE6bCh0LGUsaSk/LTE6MTowPT09cz9jPjA/MTpsKHQsZSxyKT8xOi0x OmEoYy1zKX12YXIgZj1uKHQsZSxyKTtpZihmPjApcmV0dXJuIG8+MCYmbih0 LGUsaSk+MD8xOi0xO2lmKGY8MClyZXR1cm4gbz4wfHxuKHQsZSxpKT4wPzE6 LTE7dmFyIHA9bih0LGUsaSk7cmV0dXJuIHA+MD8xOmwodCxlLHIpPzE6LTF9 O3ZhciBuPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpLGE9dCgic2lnbnVtIiks aT10KCJ0d28tc3VtIiksbz10KCJyb2J1c3QtcHJvZHVjdCIpLHM9dCgicm9i dXN0LXN1bSIpO2Z1bmN0aW9uIGwodCxlLHIpe3ZhciBuPWkodFswXSwtZVsw XSksYT1pKHRbMV0sLWVbMV0pLGw9aShyWzBdLC1lWzBdKSxjPWkoclsxXSwt ZVsxXSksdT1zKG8obixsKSxvKGEsYykpO3JldHVybiB1W3UubGVuZ3RoLTFd Pj0wfX0seyJyb2J1c3Qtb3JpZW50YXRpb24iOjUwOSwicm9idXN0LXByb2R1 Y3QiOjUxMCwicm9idXN0LXN1bSI6NTE0LHNpZ251bTo1MTUsInR3by1zdW0i OjU0M31dLDEzMDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlv bih0LGUpe3ZhciByPXQubGVuZ3RoLGk9dC5sZW5ndGgtZS5sZW5ndGg7aWYo aSlyZXR1cm4gaTtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiAwO2Nhc2UgMTpy ZXR1cm4gdFswXS1lWzBdO2Nhc2UgMjpyZXR1cm4gdFswXSt0WzFdLWVbMF0t ZVsxXXx8bih0WzBdLHRbMV0pLW4oZVswXSxlWzFdKTtjYXNlIDM6dmFyIG89 dFswXSt0WzFdLHM9ZVswXStlWzFdO2lmKGk9byt0WzJdLShzK2VbMl0pKXJl dHVybiBpO3ZhciBsPW4odFswXSx0WzFdKSxjPW4oZVswXSxlWzFdKTtyZXR1 cm4gbihsLHRbMl0pLW4oYyxlWzJdKXx8bihsK3RbMl0sbyktbihjK2VbMl0s cyk7Y2FzZSA0OnZhciB1PXRbMF0saD10WzFdLGY9dFsyXSxwPXRbM10sZD1l WzBdLGc9ZVsxXSx2PWVbMl0sbT1lWzNdO3JldHVybiB1K2grZitwLShkK2cr dittKXx8bih1LGgsZixwKS1uKGQsZyx2LG0sZCl8fG4odStoLHUrZix1K3As aCtmLGgrcCxmK3ApLW4oZCtnLGQrdixkK20sZyt2LGcrbSx2K20pfHxuKHUr aCtmLHUraCtwLHUrZitwLGgrZitwKS1uKGQrZyt2LGQrZyttLGQrdittLGcr dittKTtkZWZhdWx0OmZvcih2YXIgeT10LnNsaWNlKCkuc29ydChhKSx4PWUu c2xpY2UoKS5zb3J0KGEpLGI9MDtiPHI7KytiKWlmKGk9eVtiXS14W2JdKXJl dHVybiBpO3JldHVybiAwfX07dmFyIG49TWF0aC5taW47ZnVuY3Rpb24gYSh0 LGUpe3JldHVybiB0LWV9fSx7fV0sMTMxOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoImNvbXBhcmUtY2VsbCIpLGE9dCgiY2VsbC1v cmllbnRhdGlvbiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBu KHQsZSl8fGEodCktYShlKX19LHsiY2VsbC1vcmllbnRhdGlvbiI6MTE0LCJj b21wYXJlLWNlbGwiOjEzMH1dLDEzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9jaDFkIiksYT10KCIuL2xpYi9jaDJk IiksaT10KCIuL2xpYi9jaG5kIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3Zh ciBlPXQubGVuZ3RoO2lmKDA9PT1lKXJldHVybltdO2lmKDE9PT1lKXJldHVy bltbMF1dO3ZhciByPXRbMF0ubGVuZ3RoO2lmKDA9PT1yKXJldHVybltdO2lm KDE9PT1yKXJldHVybiBuKHQpO2lmKDI9PT1yKXJldHVybiBhKHQpO3JldHVy biBpKHQscil9fSx7Ii4vbGliL2NoMWQiOjEzMywiLi9saWIvY2gyZCI6MTM0 LCIuL2xpYi9jaG5kIjoxMzV9XSwxMzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9 MCxuPTE7bjx0Lmxlbmd0aDsrK24pdFtuXVswXTx0W2VdWzBdJiYoZT1uKSx0 W25dWzBdPnRbcl1bMF0mJihyPW4pO3JldHVybiBlPHI/W1tlXSxbcl1dOmU+ cj9bW3JdLFtlXV06W1tlXV19fSx7fV0sMTM0OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uKHQp LHI9ZS5sZW5ndGg7aWYocjw9MilyZXR1cm5bXTtmb3IodmFyIGE9bmV3IEFy cmF5KHIpLGk9ZVtyLTFdLG89MDtvPHI7KytvKXt2YXIgcz1lW29dO2Fbb109 W2ksc10saT1zfXJldHVybiBhfTt2YXIgbj10KCJtb25vdG9uZS1jb252ZXgt aHVsbC0yZCIpfSx7Im1vbm90b25lLWNvbnZleC1odWxsLTJkIjo0MzZ9XSwx MzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7dHJ5e3JldHVybiBuKHQsITApfWNhdGNoKHMpe3ZhciBy PWEodCk7aWYoci5sZW5ndGg8PWUpcmV0dXJuW107dmFyIGk9ZnVuY3Rpb24o dCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksYT0wO2E8 ZS5sZW5ndGg7KythKW5bYV09dFtlW2FdXTtmb3IodmFyIGk9ZS5sZW5ndGgs YT0wO2E8cjsrK2EpZS5pbmRleE9mKGEpPDAmJihuW2krK109dFthXSk7cmV0 dXJuIG59KHQsciksbz1uKGksITApO3JldHVybiBmdW5jdGlvbih0LGUpe2Zv cih2YXIgcj10Lmxlbmd0aCxuPWUubGVuZ3RoLGE9MDthPHI7KythKWZvcih2 YXIgaT10W2FdLG89MDtvPGkubGVuZ3RoOysrbyl7dmFyIHM9aVtvXTtpZihz PG4paVtvXT1lW3NdO2Vsc2V7cy09bjtmb3IodmFyIGw9MDtsPG47KytsKXM+ PWVbbF0mJihzKz0xKTtpW29dPXN9fXJldHVybiB0fShvLHIpfX07dmFyIG49 dCgiaW5jcmVtZW50YWwtY29udmV4LWh1bGwiKSxhPXQoImFmZmluZS1odWxs Iil9LHsiYWZmaW5lLWh1bGwiOjY1LCJpbmNyZW1lbnRhbC1jb252ZXgtaHVs bCI6NDE1fV0sMTM2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXtBRkc6 ImFmZ2hhbiIsQUxBOiJcXGJcXHdsYW5kIixBTEI6ImFsYmFuaWEiLERaQToi YWxnZXJpYSIsQVNNOiJeKD89LiphbWVyaWMpLipzYW1vYSIsQU5EOiJhbmRv cnJhIixBR086ImFuZ29sYSIsQUlBOiJhbmd1aWxsP2EiLEFUQToiYW50YXJj dGljYSIsQVRHOiJhbnRpZ3VhIixBUkc6ImFyZ2VudGluIixBUk06ImFybWVu aWEiLEFCVzoiXig/IS4qYm9uYWlyZSkuKlxcYmFydWJhIixBVVM6ImF1c3Ry YWxpYSIsQVVUOiJeKD8hLipodW5nYXJ5KS4qYXVzdHJpYXxcXGJhdXN0cmku KlxcYmVtcCIsQVpFOiJhemVyYmFpamFuIixCSFM6ImJhaGFtYXMiLEJIUjoi YmFocmFpbiIsQkdEOiJiYW5nbGFkZXNofF4oPz0uKmVhc3QpLipwYWtpP3N0 YW4iLEJSQjoiYmFyYmFkb3MiLEJMUjoiYmVsYXJ1c3xieWVsbyIsQkVMOiJe KD8hLipsdXhlbSkuKmJlbGdpdW0iLEJMWjoiYmVsaXplfF4oPz0uKmJyaXRp c2gpLipob25kdXJhcyIsQkVOOiJiZW5pbnxkYWhvbWUiLEJNVToiYmVybXVk YSIsQlROOiJiaHV0YW4iLEJPTDoiYm9saXZpYSIsQkVTOiJeKD89Lipib25h aXJlKS4qZXVzdGF0aXVzfF4oPz0uKmNhcmliKS4qbmV0aGVybGFuZHN8XFxi YmVzLj9pc2xhbmRzIixCSUg6ImhlcnplZ292aW5hfGJvc25pYSIsQldBOiJi b3Rzd2FuYXxiZWNodWFuYSIsQlZUOiJib3V2ZXQiLEJSQToiYnJhemlsIixJ T1Q6ImJyaXRpc2guP2luZGlhbi4/b2NlYW4iLEJSTjoiYnJ1bmVpIixCR1I6 ImJ1bGdhcmlhIixCRkE6ImJ1cmtpbmF8XFxiZmFzb3x1cHBlci4/dm9sdGEi LEJESToiYnVydW5kaSIsQ1BWOiJ2ZXJkZSIsS0hNOiJjYW1ib2RpYXxrYW1w dWNoZWF8a2htZXIiLENNUjoiY2FtZXJvb24iLENBTjoiY2FuYWRhIixDWU06 ImNheW1hbiIsQ0FGOiJcXGJjZW50cmFsLmFmcmljYW4ucmVwdWJsaWMiLFRD RDoiXFxiY2hhZCIsQ0hMOiJcXGJjaGlsZSIsQ0hOOiJeKD8hLipcXGJtYWMp KD8hLipcXGJob25nKSg/IS4qXFxidGFpKSg/IS4qXFxicmVwKS4qY2hpbmF8 Xig/PS4qcGVvKSg/PS4qcmVwKS4qY2hpbmEiLENYUjoiY2hyaXN0bWFzIixD Q0s6IlxcYmNvY29zfGtlZWxpbmciLENPTDoiY29sb21iaWEiLENPTToiY29t b3JvIixDT0c6Il4oPyEuKlxcYmRlbSkoPyEuKlxcYmRbXFwuXT9yKSg/IS4q a2luc2hhc2EpKD8hLip6YWlyZSkoPyEuKmJlbGcpKD8hLipsLm9wb2xkdmls bGUpKD8hLipmcmVlKS4qXFxiY29uZ28iLENPSzoiXFxiY29vayIsQ1JJOiJj b3N0YS4/cmljYSIsQ0lWOiJpdm9pcmV8aXZvcnkiLEhSVjoiY3JvYXRpYSIs Q1VCOiJcXGJjdWJhIixDVVc6Il4oPyEuKmJvbmFpcmUpLipcXGJjdXJhKGN8 XHhlNylhbyIsQ1lQOiJjeXBydXMiLENTSzoiY3plY2hvc2xvdmFraWEiLENa RToiXig/PS4qcmVwKS4qY3plY2h8Y3plY2hpYXxib2hlbWlhIixDT0Q6Ilxc YmRlbS4qY29uZ298Y29uZ28uKlxcYmRlbXxjb25nby4qXFxiZFtcXC5dP3J8 XFxiZFtcXC5dP3IuKmNvbmdvfGJlbGdpYW4uP2NvbmdvfGNvbmdvLj9mcmVl Lj9zdGF0ZXxraW5zaGFzYXx6YWlyZXxsLm9wb2xkdmlsbGV8ZHJjfGRyb2N8 cmRjIixETks6ImRlbm1hcmsiLERKSToiZGppYm91dGkiLERNQToiZG9taW5p Y2EoPyFuKSIsRE9NOiJkb21pbmljYW4ucmVwIixFQ1U6ImVjdWFkb3IiLEVH WToiZWd5cHQiLFNMVjoiZWwuP3NhbHZhZG9yIixHTlE6Imd1aW5lLiplcXxl cS4qZ3VpbmV8Xig/PS4qc3BhbikuKmd1aW5lYSIsRVJJOiJlcml0cmVhIixF U1Q6ImVzdG9uaWEiLEVUSDoiZXRoaW9waWF8YWJ5c3NpbmlhIixGTEs6ImZh bGtsYW5kfG1hbHZpbmFzIixGUk86ImZhcm9lfGZhZXJvZSIsRkpJOiJmaWpp IixGSU46ImZpbmxhbmQiLEZSQToiXig/IS4qXFxiZGVwKSg/IS4qbWFydGlu aXF1ZSkuKmZyYW5jZXxmcmVuY2guP3JlcHVibGljfFxcYmdhdWwiLEdVRjoi Xig/PS4qZnJlbmNoKS4qZ3VpYW5hIixQWUY6ImZyZW5jaC4/cG9seW5lc2lh fHRhaGl0aSIsQVRGOiJmcmVuY2guP3NvdXRoZXJuIixHQUI6ImdhYm9uIixH TUI6ImdhbWJpYSIsR0VPOiJeKD8hLipzb3V0aCkuKmdlb3JnaWEiLEREUjoi Z2VybWFuLj9kZW1vY3JhdGljLj9yZXB1YmxpY3xkZW1vY3JhdGljLj9yZXB1 YmxpYy4qZ2VybWFueXxlYXN0Lmdlcm1hbnkiLERFVToiXig/IS4qZWFzdCku Kmdlcm1hbnl8Xig/PS4qXFxiZmVkLipcXGJyZXApLipnZXJtYW4iLEdIQToi Z2hhbmF8Z29sZC4/Y29hc3QiLEdJQjoiZ2licmFsdGFyIixHUkM6ImdyZWVj ZXxoZWxsZW5pY3xoZWxsYXMiLEdSTDoiZ3JlZW5sYW5kIixHUkQ6ImdyZW5h ZGEiLEdMUDoiZ3VhZGVsb3VwZSIsR1VNOiJcXGJndWFtIixHVE06Imd1YXRl bWFsYSIsR0dZOiJndWVybnNleSIsR0lOOiJeKD8hLiplcSkoPyEuKnNwYW4p KD8hLipiaXNzYXUpKD8hLipwb3J0dSkoPyEuKm5ldykuKmd1aW5lYSIsR05C OiJiaXNzYXV8Xig/PS4qcG9ydHUpLipndWluZWEiLEdVWToiZ3V5YW5hfGJy aXRpc2guP2d1aWFuYSIsSFRJOiJoYWl0aSIsSE1EOiJoZWFyZC4qbWNkb25h bGQiLFZBVDoiaG9seS4/c2VlfHZhdGljYW58cGFwYWwuP3N0IixITkQ6Il4o PyEuKmJyaXQpLipob25kdXJhcyIsSEtHOiJob25nLj9rb25nIixIVU46Il4o PyEuKmF1c3RyKS4qaHVuZ2FyeSIsSVNMOiJpY2VsYW5kIixJTkQ6ImluZGlh KD8hLipvY2VhKSIsSUROOiJpbmRvbmVzaWEiLElSTjoiXFxiaXJhbnxwZXJz aWEiLElSUToiXFxiaXJhcXxtZXNvcG90YW1pYSIsSVJMOiIoXmlyZWxhbmQp fChecmVwdWJsaWMuKmlyZWxhbmQpIixJTU46Il4oPz0uKmlzbGUpLipcXGJt YW4iLElTUjoiaXNyYWVsIixJVEE6Iml0YWx5IixKQU06ImphbWFpY2EiLEpQ TjoiamFwYW4iLEpFWToiamVyc2V5IixKT1I6ImpvcmRhbiIsS0FaOiJrYXph ayIsS0VOOiJrZW55YXxicml0aXNoLj9lYXN0Lj9hZnJpY2F8ZWFzdC4/YWZy aWNhLj9wcm90IixLSVI6ImtpcmliYXRpIixQUks6Il4oPz0uKmRlbW9jcmF0 fHBlb3BsZXxub3J0aHxkLipwLioucikuKlxcYmtvcmVhfGRwcmt8a29yZWEu KihkLipwLipyKSIsS1dUOiJrdXdhaXQiLEtHWjoia3lyZ3l6fGtpcmdoaXoi LExBTzoiXFxibGFvcz9cXGIiLExWQToibGF0dmlhIixMQk46ImxlYmFub24i LExTTzoibGVzb3Rob3xiYXN1dG8iLExCUjoibGliZXJpYSIsTEJZOiJsaWJ5 YSIsTElFOiJsaWVjaHRlbnN0ZWluIixMVFU6ImxpdGh1YW5pYSIsTFVYOiJe KD8hLipiZWxnKS4qbHV4ZW0iLE1BQzoibWFjYShvfHUpIixNREc6Im1hZGFn YXNjYXJ8bWFsYWdhc3kiLE1XSToibWFsYXdpfG55YXNhIixNWVM6Im1hbGF5 c2lhIixNRFY6Im1hbGRpdmUiLE1MSToiXFxibWFsaVxcYiIsTUxUOiJcXGJt YWx0YSIsTUhMOiJtYXJzaGFsbCIsTVRROiJtYXJ0aW5pcXVlIixNUlQ6Im1h dXJpdGFuaWEiLE1VUzoibWF1cml0aXVzIixNWVQ6IlxcYm1heW90dGUiLE1F WDoiXFxibWV4aWMiLEZTTToiZmVkLiptaWNyb25lc2lhfG1pY3JvbmVzaWEu KmZlZCIsTUNPOiJtb25hY28iLE1ORzoibW9uZ29saWEiLE1ORToiXig/IS4q c2VyYmlhKS4qbW9udGVuZWdybyIsTVNSOiJtb250c2VycmF0IixNQVI6Im1v cm9jY298XFxibWFyb2MiLE1PWjoibW96YW1iaXF1ZSIsTU1SOiJteWFubWFy fGJ1cm1hIixOQU06Im5hbWliaWEiLE5SVToibmF1cnUiLE5QTDoibmVwYWwi LE5MRDoiXig/IS4qXFxiYW50KSg/IS4qXFxiY2FyaWIpLipuZXRoZXJsYW5k cyIsQU5UOiJeKD89LipcXGJhbnQpLioobmV0aGVyfGR1dGNoKSIsTkNMOiJu ZXcuP2NhbGVkb25pYSIsTlpMOiJuZXcuP3plYWxhbmQiLE5JQzoibmljYXJh Z3VhIixORVI6IlxcYm5pZ2VyKD8haWEpIixOR0E6Im5pZ2VyaWEiLE5JVToi bml1ZSIsTkZLOiJub3Jmb2xrIixNTlA6Im1hcmlhbmEiLE5PUjoibm9yd2F5 IixPTU46IlxcYm9tYW58dHJ1Y2lhbCIsUEFLOiJeKD8hLiplYXN0KS4qcGFr aT9zdGFuIixQTFc6InBhbGF1IixQU0U6InBhbGVzdGlufFxcYmdhemF8d2Vz dC4/YmFuayIsUEFOOiJwYW5hbWEiLFBORzoicGFwdWF8bmV3Lj9ndWluZWEi LFBSWToicGFyYWd1YXkiLFBFUjoicGVydSIsUEhMOiJwaGlsaXBwaW5lcyIs UENOOiJwaXRjYWlybiIsUE9MOiJwb2xhbmQiLFBSVDoicG9ydHVnYWwiLFBS SToicHVlcnRvLj9yaWNvIixRQVQ6InFhdGFyIixLT1I6Il4oPyEuKmQuKnAu KnIpKD8hLipkZW1vY3JhdCkoPyEuKnBlb3BsZSkoPyEuKm5vcnRoKS4qXFxi a29yZWEoPyEuKmQuKnAuKnIpIixNREE6Im1vbGRvdnxiKGF8ZSlzc2FyYWJp YSIsUkVVOiJyKGV8XHhlOSl1bmlvbiIsUk9VOiJyKG98dXxvdSltYW5pYSIs UlVTOiJcXGJydXNzaWF8c292aWV0Lj91bmlvbnx1XFwuP3NcXC4/c1xcLj9y fHNvY2lhbGlzdC4/cmVwdWJsaWNzIixSV0E6InJ3YW5kYSIsQkxNOiJiYXJ0 aChlfFx4ZTkpbGVteSIsU0hOOiJoZWxlbmEiLEtOQToia2l0dHN8XFxibmV2 aXMiLExDQToiXFxibHVjaWEiLE1BRjoiXig/PS4qY29sbGVjdGl2aXR5KS4q bWFydGlufF4oPz0uKmZyYW5jZSkuKm1hcnRpbig/IWlxdWUpfF4oPz0uKmZy ZW5jaCkuKm1hcnRpbig/IWlxdWUpIixTUE06Im1pcXVlbG9uIixWQ1Q6InZp bmNlbnQiLFdTTToiXig/IS4qYW1lcikuKnNhbW9hIixTTVI6InNhbi4/bWFy aW5vIixTVFA6IlxcYnMoYXxceGUzKW8uP3RvbShlfFx4ZTkpIixTQVU6Ilxc YnNhXFx3Ki4/YXJhYmlhIixTRU46InNlbmVnYWwiLFNSQjoiXig/IS4qbW9u dGUpLipzZXJiaWEiLFNZQzoic2V5Y2hlbGwiLFNMRToic2llcnJhIixTR1A6 InNpbmdhcG9yZSIsU1hNOiJeKD8hLiptYXJ0aW4pKD8hLipzYWJhKS4qbWFh cnRlbiIsU1ZLOiJeKD8hLipjemUpLipzbG92YWsiLFNWTjoic2xvdmVuaWEi LFNMQjoic29sb21vbiIsU09NOiJzb21hbGkiLFpBRjoic291dGguYWZyaWNh fHNcXFxcLi4/YWZyaWNhIixTR1M6InNvdXRoLj9nZW9yZ2lhfHNhbmR3aWNo IixTU0Q6IlxcYnNcXHcqLj9zdWRhbiIsRVNQOiJzcGFpbiIsTEtBOiJzcmku P2xhbmthfGNleWxvbiIsU0ROOiJeKD8hLipcXGJzKD8hdSkpLipzdWRhbiIs U1VSOiJzdXJpbmFtfGR1dGNoLj9ndWlhbmEiLFNKTToic3ZhbGJhcmQiLFNX Wjoic3dhemlsYW5kIixTV0U6InN3ZWRlbiIsQ0hFOiJzd2l0enxzd2lzcyIs U1lSOiJzeXJpYSIsVFdOOiJ0YWl3YW58dGFpcGVpfGZvcm1vc2F8Xig/IS4q cGVvKSg/PS4qcmVwKS4qY2hpbmEiLFRKSzoidGFqaWsiLFRIQToidGhhaWxh bmR8XFxic2lhbSIsTUtEOiJtYWNlZG9uaWF8Znlyb20iLFRMUzoiXig/PS4q bGVzdGUpLip0aW1vcnxeKD89LiplYXN0KS4qdGltb3IiLFRHTzoidG9nbyIs VEtMOiJ0b2tlbGF1IixUT046InRvbmdhIixUVE86InRyaW5pZGFkfHRvYmFn byIsVFVOOiJ0dW5pc2lhIixUVVI6InR1cmtleSIsVEtNOiJ0dXJrbWVuIixU Q0E6InR1cmtzIixUVVY6InR1dmFsdSIsVUdBOiJ1Z2FuZGEiLFVLUjoidWty YWluIixBUkU6ImVtaXJhdGVzfF51XFwuP2FcXC4/ZVxcLj8kfHVuaXRlZC4/ YXJhYi4/ZW0iLEdCUjoidW5pdGVkLj9raW5nZG9tfGJyaXRhaW58XnVcXC4/ a1xcLj8kIixUWkE6InRhbnphbmlhIixVU0E6InVuaXRlZC4/c3RhdGVzXFxi KD8hLippc2xhbmRzKXxcXGJ1XFwuP3NcXC4/YVxcLj9cXGJ8Xlxccyp1XFwu P3NcXC4/XFxiKD8hLippc2xhbmRzKSIsVU1JOiJtaW5vci4/b3V0bHlpbmcu P2lzIixVUlk6InVydWd1YXkiLFVaQjoidXpiZWsiLFZVVDoidmFudWF0dXxu ZXcuP2hlYnJpZGVzIixWRU46InZlbmV6dWVsYSIsVk5NOiJeKD8hLipyZXB1 YmxpYykuKnZpZXQuP25hbXxeKD89Lipzb2NpYWxpc3QpLip2aWV0Lj9uYW0i LFZHQjoiXig/PS4qXFxidVxcLj9cXHM/aykuKnZpcmdpbnxeKD89Lipicml0 KS4qdmlyZ2lufF4oPz0uKmtpbmdkb20pLip2aXJnaW4iLFZJUjoiXig/PS4q XFxidVxcLj9cXHM/cykuKnZpcmdpbnxeKD89LipzdGF0ZXMpLip2aXJnaW4i LFdMRjoiZnV0dW5hfHdhbGxpcyIsRVNIOiJ3ZXN0ZXJuLnNhaGFyYSIsWUVN OiJeKD8hLiphcmFiKSg/IS4qbm9ydGgpKD8hLipzYW5hKSg/IS4qcGVvKSg/ IS4qZGVtKSg/IS4qc291dGgpKD8hLiphZGVuKSg/IS4qXFxicFxcLj9kXFwu P3IpLip5ZW1lbiIsWU1EOiJeKD89LipwZW8pLip5ZW1lbnxeKD8hLipyZXAp KD89LipkZW0pLip5ZW1lbnxeKD89Lipzb3V0aCkuKnllbWVufF4oPz0uKmFk ZW4pLip5ZW1lbnxeKD89LipcXGJwXFwuP2RcXC4/cikuKnllbWVuIixZVUc6 Inl1Z29zbGF2aWEiLFpNQjoiemFtYmlhfG5vcnRoZXJuLj9yaG9kZXNpYSIs RUFaOiJ6YW56aWJhciIsWldFOiJ6aW1iYWJ3ZXxeKD8hLipub3J0aGVybiku KnJob2Rlc2lhIn19LHt9XSwxMzc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9y dHM9WyJ4eC1zbWFsbCIsIngtc21hbGwiLCJzbWFsbCIsIm1lZGl1bSIsImxh cmdlIiwieC1sYXJnZSIsInh4LWxhcmdlIiwibGFyZ2VyIiwic21hbGxlciJd fSx7fV0sMTM4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPVsibm9ybWFs IiwiY29uZGVuc2VkIiwic2VtaS1jb25kZW5zZWQiLCJleHRyYS1jb25kZW5z ZWQiLCJ1bHRyYS1jb25kZW5zZWQiLCJleHBhbmRlZCIsInNlbWktZXhwYW5k ZWQiLCJleHRyYS1leHBhbmRlZCIsInVsdHJhLWV4cGFuZGVkIl19LHt9XSwx Mzk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9WyJub3JtYWwiLCJpdGFs aWMiLCJvYmxpcXVlIl19LHt9XSwxNDA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4 cG9ydHM9WyJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciIsIjEw MCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIs IjkwMCJdfSx7fV0sMTQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz17cGFyc2U6dCgiLi9wYXJzZSIpLHN0cmluZ2lmeTp0KCIu L3N0cmluZ2lmeSIpfX0seyIuL3BhcnNlIjoxNDMsIi4vc3RyaW5naWZ5Ijox NDR9XSwxNDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiY3NzLWZvbnQtc2l6ZS1rZXl3b3JkcyIpO2UuZXhwb3J0cz17aXNTaXpl OmZ1bmN0aW9uKHQpe3JldHVybi9eW1xkXC5dLy50ZXN0KHQpfHwtMSE9PXQu aW5kZXhPZigiLyIpfHwtMSE9PW4uaW5kZXhPZih0KX19fSx7ImNzcy1mb250 LXNpemUta2V5d29yZHMiOjEzN31dLDE0MzpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJ1bnF1b3RlIiksYT10KCJjc3MtZ2xvYmFs LWtleXdvcmRzIiksaT10KCJjc3Mtc3lzdGVtLWZvbnQta2V5d29yZHMiKSxv PXQoImNzcy1mb250LXdlaWdodC1rZXl3b3JkcyIpLHM9dCgiY3NzLWZvbnQt c3R5bGUta2V5d29yZHMiKSxsPXQoImNzcy1mb250LXN0cmV0Y2gta2V5d29y ZHMiKSxjPXQoInN0cmluZy1zcGxpdC1ieSIpLHU9dCgiLi9saWIvdXRpbCIp LmlzU2l6ZTtlLmV4cG9ydHM9Zjt2YXIgaD1mLmNhY2hlPXt9O2Z1bmN0aW9u IGYodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigi Rm9udCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpO2lmKGhbdF0pcmV0 dXJuIGhbdF07aWYoIiI9PT10KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBh cnNlIGFuIGVtcHR5IHN0cmluZy4iKTtpZigtMSE9PWkuaW5kZXhPZih0KSly ZXR1cm4gaFt0XT17c3lzdGVtOnR9O2Zvcih2YXIgZSxyPXtzdHlsZToibm9y bWFsIix2YXJpYW50OiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzdHJldGNo OiJub3JtYWwiLGxpbmVIZWlnaHQ6Im5vcm1hbCIsc2l6ZToiMXJlbSIsZmFt aWx5Olsic2VyaWYiXX0sZj1jKHQsL1xzKy8pO2U9Zi5zaGlmdCgpOyl7aWYo LTEhPT1hLmluZGV4T2YoZSkpcmV0dXJuWyJzdHlsZSIsInZhcmlhbnQiLCJ3 ZWlnaHQiLCJzdHJldGNoIl0uZm9yRWFjaChmdW5jdGlvbih0KXtyW3RdPWV9 KSxoW3RdPXI7aWYoLTE9PT1zLmluZGV4T2YoZSkpaWYoIm5vcm1hbCIhPT1l JiYic21hbGwtY2FwcyIhPT1lKWlmKC0xPT09bC5pbmRleE9mKGUpKXtpZigt MT09PW8uaW5kZXhPZihlKSl7aWYodShlKSl7dmFyIGQ9YyhlLCIvIik7aWYo ci5zaXplPWRbMF0sbnVsbCE9ZFsxXT9yLmxpbmVIZWlnaHQ9cChkWzFdKToi LyI9PT1mWzBdJiYoZi5zaGlmdCgpLHIubGluZUhlaWdodD1wKGYuc2hpZnQo KSkpLCFmLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWly ZWQgZm9udC1mYW1pbHkuIik7cmV0dXJuIHIuZmFtaWx5PWMoZi5qb2luKCIg IiksL1xzKixccyovKS5tYXAobiksaFt0XT1yfXRocm93IG5ldyBFcnJvcigi VW5rbm93biBvciB1bnN1cHBvcnRlZCBmb250IHRva2VuOiAiK2UpfXIud2Vp Z2h0PWV9ZWxzZSByLnN0cmV0Y2g9ZTtlbHNlIHIudmFyaWFudD1lO2Vsc2Ug ci5zdHlsZT1lfXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1aXJlZCBm b250LXNpemUuIil9ZnVuY3Rpb24gcCh0KXt2YXIgZT1wYXJzZUZsb2F0KHQp O3JldHVybiBlLnRvU3RyaW5nKCk9PT10P2U6dH19LHsiLi9saWIvdXRpbCI6 MTQyLCJjc3MtZm9udC1zdHJldGNoLWtleXdvcmRzIjoxMzgsImNzcy1mb250 LXN0eWxlLWtleXdvcmRzIjoxMzksImNzcy1mb250LXdlaWdodC1rZXl3b3Jk cyI6MTQwLCJjc3MtZ2xvYmFsLWtleXdvcmRzIjoxNDUsImNzcy1zeXN0ZW0t Zm9udC1rZXl3b3JkcyI6MTQ2LCJzdHJpbmctc3BsaXQtYnkiOjUyOCx1bnF1 b3RlOjU0N31dLDE0NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJwaWNrLWJ5LWFsaWFzIiksYT10KCIuL2xpYi91dGlsIikuaXNT aXplLGk9Zyh0KCJjc3MtZ2xvYmFsLWtleXdvcmRzIikpLG89Zyh0KCJjc3Mt c3lzdGVtLWZvbnQta2V5d29yZHMiKSkscz1nKHQoImNzcy1mb250LXdlaWdo dC1rZXl3b3JkcyIpKSxsPWcodCgiY3NzLWZvbnQtc3R5bGUta2V5d29yZHMi KSksYz1nKHQoImNzcy1mb250LXN0cmV0Y2gta2V5d29yZHMiKSksdT17bm9y bWFsOjEsInNtYWxsLWNhcHMiOjF9LGg9e3NlcmlmOjEsInNhbnMtc2VyaWYi OjEsbW9ub3NwYWNlOjEsY3Vyc2l2ZToxLGZhbnRhc3k6MSwic3lzdGVtLXVp IjoxfSxmPSIxcmVtIixwPSJzZXJpZiI7ZnVuY3Rpb24gZCh0LGUpe2lmKHQm JiFlW3RdJiYhaVt0XSl0aHJvdyBFcnJvcigiVW5rbm93biBrZXl3b3JkIGAi K3QrImAiKTtyZXR1cm4gdH1mdW5jdGlvbiBnKHQpe2Zvcih2YXIgZT17fSxy PTA7cjx0Lmxlbmd0aDtyKyspZVt0W3JdXT0xO3JldHVybiBlfWUuZXhwb3J0 cz1mdW5jdGlvbih0KXtpZigodD1uKHQse3N0eWxlOiJzdHlsZSBmb250c3R5 bGUgZm9udFN0eWxlIGZvbnQtc3R5bGUgc2xvcGUgZGlzdGluY3Rpb24iLHZh cmlhbnQ6InZhcmlhbnQgZm9udC12YXJpYW50IGZvbnRWYXJpYW50IGZvbnR2 YXJpYW50IHZhciBjYXBpdGFsaXphdGlvbiIsd2VpZ2h0OiJ3ZWlnaHQgdyBm b250LXdlaWdodCBmb250V2VpZ2h0IGZvbnR3ZWlnaHQiLHN0cmV0Y2g6InN0 cmV0Y2ggZm9udC1zdHJldGNoIGZvbnRTdHJldGNoIGZvbnRzdHJldGNoIHdp ZHRoIixzaXplOiJzaXplIHMgZm9udC1zaXplIGZvbnRTaXplIGZvbnRzaXpl IGhlaWdodCBlbSBlbVNpemUiLGxpbmVIZWlnaHQ6ImxoIGxpbmUtaGVpZ2h0 IGxpbmVIZWlnaHQgbGluZWhlaWdodCBsZWFkaW5nIixmYW1pbHk6ImZvbnQg ZmFtaWx5IGZvbnRGYW1pbHkgZm9udC1mYW1pbHkgZm9udGZhbWlseSB0eXBl IHR5cGVmYWNlIGZhY2UiLHN5c3RlbToic3lzdGVtIHJlc2VydmVkIGRlZmF1 bHQgZ2xvYmFsIn0pKS5zeXN0ZW0pcmV0dXJuIHQuc3lzdGVtJiZkKHQuc3lz dGVtLG8pLHQuc3lzdGVtO2lmKGQodC5zdHlsZSxsKSxkKHQudmFyaWFudCx1 KSxkKHQud2VpZ2h0LHMpLGQodC5zdHJldGNoLGMpLG51bGw9PXQuc2l6ZSYm KHQuc2l6ZT1mKSwibnVtYmVyIj09dHlwZW9mIHQuc2l6ZSYmKHQuc2l6ZSs9 InB4IiksIWEpdGhyb3cgRXJyb3IoIkJhZCBzaXplIHZhbHVlIGAiK3Quc2l6 ZSsiYCIpO3QuZmFtaWx5fHwodC5mYW1pbHk9cCksQXJyYXkuaXNBcnJheSh0 LmZhbWlseSkmJih0LmZhbWlseS5sZW5ndGh8fCh0LmZhbWlseT1bcF0pLHQu ZmFtaWx5PXQuZmFtaWx5Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gaFt0XT90 OiciJyt0KyciJ30pLmpvaW4oIiwgIikpO3ZhciBlPVtdO3JldHVybiBlLnB1 c2godC5zdHlsZSksdC52YXJpYW50IT09dC5zdHlsZSYmZS5wdXNoKHQudmFy aWFudCksdC53ZWlnaHQhPT10LnZhcmlhbnQmJnQud2VpZ2h0IT09dC5zdHls ZSYmZS5wdXNoKHQud2VpZ2h0KSx0LnN0cmV0Y2ghPT10LndlaWdodCYmdC5z dHJldGNoIT09dC52YXJpYW50JiZ0LnN0cmV0Y2ghPT10LnN0eWxlJiZlLnB1 c2godC5zdHJldGNoKSxlLnB1c2godC5zaXplKyhudWxsPT10LmxpbmVIZWln aHR8fCJub3JtYWwiPT09dC5saW5lSGVpZ2h0fHx0LmxpbmVIZWlnaHQrIiI9 PSIxIj8iIjoiLyIrdC5saW5lSGVpZ2h0KSksZS5wdXNoKHQuZmFtaWx5KSxl LmZpbHRlcihCb29sZWFuKS5qb2luKCIgIil9fSx7Ii4vbGliL3V0aWwiOjE0 MiwiY3NzLWZvbnQtc3RyZXRjaC1rZXl3b3JkcyI6MTM4LCJjc3MtZm9udC1z dHlsZS1rZXl3b3JkcyI6MTM5LCJjc3MtZm9udC13ZWlnaHQta2V5d29yZHMi OjE0MCwiY3NzLWdsb2JhbC1rZXl3b3JkcyI6MTQ1LCJjc3Mtc3lzdGVtLWZv bnQta2V5d29yZHMiOjE0NiwicGljay1ieS1hbGlhcyI6NDY3fV0sMTQ1Oltm dW5jdGlvbih0LGUscil7ZS5leHBvcnRzPVsiaW5oZXJpdCIsImluaXRpYWwi LCJ1bnNldCJdfSx7fV0sMTQ2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRz PVsiY2FwdGlvbiIsImljb24iLCJtZW51IiwibWVzc2FnZS1ib3giLCJzbWFs bC1jYXB0aW9uIiwic3RhdHVzLWJhciJdfSx7fV0sMTQ3OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixu LGEsaSl7dmFyIG89YS0xLHM9YSphLGw9bypvLGM9KDErMiphKSpsLHU9YSps LGg9cyooMy0yKmEpLGY9cypvO2lmKHQubGVuZ3RoKXtpfHwoaT1uZXcgQXJy YXkodC5sZW5ndGgpKTtmb3IodmFyIHA9dC5sZW5ndGgtMTtwPj0wOy0tcClp W3BdPWMqdFtwXSt1KmVbcF0raCpyW3BdK2YqbltwXTtyZXR1cm4gaX1yZXR1 cm4gYyp0K3UqZStoKnIrZipufSxlLmV4cG9ydHMuZGVyaXZhdGl2ZT1mdW5j dGlvbih0LGUscixuLGEsaSl7dmFyIG89NiphKmEtNiphLHM9MyphKmEtNCph KzEsbD0tNiphKmErNiphLGM9MyphKmEtMiphO2lmKHQubGVuZ3RoKXtpfHwo aT1uZXcgQXJyYXkodC5sZW5ndGgpKTtmb3IodmFyIHU9dC5sZW5ndGgtMTt1 Pj0wOy0tdSlpW3VdPW8qdFt1XStzKmVbdV0rbCpyW3VdK2Mqblt1XTtyZXR1 cm4gaX1yZXR1cm4gbyp0K3MqZStsKnJbdV0rYypufX0se31dLDE0ODpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi90aHVu ay5qcyIpO2Z1bmN0aW9uIGEoKXt0aGlzLmFyZ1R5cGVzPVtdLHRoaXMuc2hp bUFyZ3M9W10sdGhpcy5hcnJheUFyZ3M9W10sdGhpcy5hcnJheUJsb2NrSW5k aWNlcz1bXSx0aGlzLnNjYWxhckFyZ3M9W10sdGhpcy5vZmZzZXRBcmdzPVtd LHRoaXMub2Zmc2V0QXJnSW5kZXg9W10sdGhpcy5pbmRleEFyZ3M9W10sdGhp cy5zaGFwZUFyZ3M9W10sdGhpcy5mdW5jTmFtZT0iIix0aGlzLnByZT1udWxs LHRoaXMuYm9keT1udWxsLHRoaXMucG9zdD1udWxsLHRoaXMuZGVidWc9ITF9 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBhO2UucHJlPXQucHJl LGUuYm9keT10LmJvZHksZS5wb3N0PXQucG9zdDt2YXIgcj10LmFyZ3Muc2xp Y2UoMCk7ZS5hcmdUeXBlcz1yO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7Kytp KXt2YXIgbz1yW2ldO2lmKCJhcnJheSI9PT1vfHwib2JqZWN0Ij09dHlwZW9m IG8mJm8uYmxvY2tJbmRpY2VzKXtpZihlLmFyZ1R5cGVzW2ldPSJhcnJheSIs ZS5hcnJheUFyZ3MucHVzaChpKSxlLmFycmF5QmxvY2tJbmRpY2VzLnB1c2go by5ibG9ja0luZGljZXM/by5ibG9ja0luZGljZXM6MCksZS5zaGltQXJncy5w dXNoKCJhcnJheSIraSksaTxlLnByZS5hcmdzLmxlbmd0aCYmZS5wcmUuYXJn c1tpXS5jb3VudD4wKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IHByZSgpIGJs b2NrIG1heSBub3QgcmVmZXJlbmNlIGFycmF5IGFyZ3MiKTtpZihpPGUucG9z dC5hcmdzLmxlbmd0aCYmZS5wb3N0LmFyZ3NbaV0uY291bnQ+MCl0aHJvdyBu ZXcgRXJyb3IoImN3aXNlOiBwb3N0KCkgYmxvY2sgbWF5IG5vdCByZWZlcmVu Y2UgYXJyYXkgYXJncyIpfWVsc2UgaWYoInNjYWxhciI9PT1vKWUuc2NhbGFy QXJncy5wdXNoKGkpLGUuc2hpbUFyZ3MucHVzaCgic2NhbGFyIitpKTtlbHNl IGlmKCJpbmRleCI9PT1vKXtpZihlLmluZGV4QXJncy5wdXNoKGkpLGk8ZS5w cmUuYXJncy5sZW5ndGgmJmUucHJlLmFyZ3NbaV0uY291bnQ+MCl0aHJvdyBu ZXcgRXJyb3IoImN3aXNlOiBwcmUoKSBibG9jayBtYXkgbm90IHJlZmVyZW5j ZSBhcnJheSBpbmRleCIpO2lmKGk8ZS5ib2R5LmFyZ3MubGVuZ3RoJiZlLmJv ZHkuYXJnc1tpXS5sdmFsdWUpdGhyb3cgbmV3IEVycm9yKCJjd2lzZTogYm9k eSgpIGJsb2NrIG1heSBub3Qgd3JpdGUgdG8gYXJyYXkgaW5kZXgiKTtpZihp PGUucG9zdC5hcmdzLmxlbmd0aCYmZS5wb3N0LmFyZ3NbaV0uY291bnQ+MCl0 aHJvdyBuZXcgRXJyb3IoImN3aXNlOiBwb3N0KCkgYmxvY2sgbWF5IG5vdCBy ZWZlcmVuY2UgYXJyYXkgaW5kZXgiKX1lbHNlIGlmKCJzaGFwZSI9PT1vKXtp ZihlLnNoYXBlQXJncy5wdXNoKGkpLGk8ZS5wcmUuYXJncy5sZW5ndGgmJmUu cHJlLmFyZ3NbaV0ubHZhbHVlKXRocm93IG5ldyBFcnJvcigiY3dpc2U6IHBy ZSgpIGJsb2NrIG1heSBub3Qgd3JpdGUgdG8gYXJyYXkgc2hhcGUiKTtpZihp PGUuYm9keS5hcmdzLmxlbmd0aCYmZS5ib2R5LmFyZ3NbaV0ubHZhbHVlKXRo cm93IG5ldyBFcnJvcigiY3dpc2U6IGJvZHkoKSBibG9jayBtYXkgbm90IHdy aXRlIHRvIGFycmF5IHNoYXBlIik7aWYoaTxlLnBvc3QuYXJncy5sZW5ndGgm JmUucG9zdC5hcmdzW2ldLmx2YWx1ZSl0aHJvdyBuZXcgRXJyb3IoImN3aXNl OiBwb3N0KCkgYmxvY2sgbWF5IG5vdCB3cml0ZSB0byBhcnJheSBzaGFwZSIp fWVsc2V7aWYoIm9iamVjdCIhPXR5cGVvZiBvfHwhby5vZmZzZXQpdGhyb3cg bmV3IEVycm9yKCJjd2lzZTogVW5rbm93biBhcmd1bWVudCB0eXBlICIrcltp XSk7ZS5hcmdUeXBlc1tpXT0ib2Zmc2V0IixlLm9mZnNldEFyZ3MucHVzaCh7 YXJyYXk6by5hcnJheSxvZmZzZXQ6by5vZmZzZXR9KSxlLm9mZnNldEFyZ0lu ZGV4LnB1c2goaSl9fWlmKGUuYXJyYXlBcmdzLmxlbmd0aDw9MCl0aHJvdyBu ZXcgRXJyb3IoImN3aXNlOiBObyBhcnJheSBhcmd1bWVudHMgc3BlY2lmaWVk Iik7aWYoZS5wcmUuYXJncy5sZW5ndGg+ci5sZW5ndGgpdGhyb3cgbmV3IEVy cm9yKCJjd2lzZTogVG9vIG1hbnkgYXJndW1lbnRzIGluIHByZSgpIGJsb2Nr Iik7aWYoZS5ib2R5LmFyZ3MubGVuZ3RoPnIubGVuZ3RoKXRocm93IG5ldyBF cnJvcigiY3dpc2U6IFRvbyBtYW55IGFyZ3VtZW50cyBpbiBib2R5KCkgYmxv Y2siKTtpZihlLnBvc3QuYXJncy5sZW5ndGg+ci5sZW5ndGgpdGhyb3cgbmV3 IEVycm9yKCJjd2lzZTogVG9vIG1hbnkgYXJndW1lbnRzIGluIHBvc3QoKSBi bG9jayIpO3JldHVybiBlLmRlYnVnPSEhdC5wcmludENvZGV8fCEhdC5kZWJ1 ZyxlLmZ1bmNOYW1lPXQuZnVuY05hbWV8fCJjd2lzZSIsZS5ibG9ja1NpemU9 dC5ibG9ja1NpemV8fDY0LG4oZSl9fSx7Ii4vbGliL3RodW5rLmpzIjoxNTB9 XSwxNDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi dW5pcSIpO2Z1bmN0aW9uIGEodCxlLHIpe3ZhciBuLGEsaT10Lmxlbmd0aCxv PWUuYXJyYXlBcmdzLmxlbmd0aCxzPWUuaW5kZXhBcmdzLmxlbmd0aD4wLGw9 W10sYz1bXSx1PTAsaD0wO2ZvcihuPTA7bjxpOysrbiljLnB1c2goWyJpIixu LCI9MCJdLmpvaW4oIiIpKTtmb3IoYT0wO2E8bzsrK2EpZm9yKG49MDtuPGk7 KytuKWg9dSx1PXRbbl0sMD09PW4/Yy5wdXNoKFsiZCIsYSwicyIsbiwiPXQi LGEsInAiLHVdLmpvaW4oIiIpKTpjLnB1c2goWyJkIixhLCJzIixuLCI9KHQi LGEsInAiLHUsIi1zIixoLCIqdCIsYSwicCIsaCwiKSJdLmpvaW4oIiIpKTtm b3IoYy5sZW5ndGg+MCYmbC5wdXNoKCJ2YXIgIitjLmpvaW4oIiwiKSksbj1p LTE7bj49MDstLW4pdT10W25dLGwucHVzaChbImZvcihpIixuLCI9MDtpIixu LCI8cyIsdSwiOysraSIsbiwiKXsiXS5qb2luKCIiKSk7Zm9yKGwucHVzaChy KSxuPTA7bjxpOysrbil7Zm9yKGg9dSx1PXRbbl0sYT0wO2E8bzsrK2EpbC5w dXNoKFsicCIsYSwiKz1kIixhLCJzIixuXS5qb2luKCIiKSk7cyYmKG4+MCYm bC5wdXNoKFsiaW5kZXhbIixoLCJdLT1zIixoXS5qb2luKCIiKSksbC5wdXNo KFsiKytpbmRleFsiLHUsIl0iXS5qb2luKCIiKSkpLGwucHVzaCgifSIpfXJl dHVybiBsLmpvaW4oIlxuIil9ZnVuY3Rpb24gaSh0LGUscil7Zm9yKHZhciBu PXQuYm9keSxhPVtdLGk9W10sbz0wO288dC5hcmdzLmxlbmd0aDsrK28pe3Zh ciBzPXQuYXJnc1tvXTtpZighKHMuY291bnQ8PTApKXt2YXIgbD1uZXcgUmVn RXhwKHMubmFtZSwiZyIpLGM9IiIsdT1lLmFycmF5QXJncy5pbmRleE9mKG8p O3N3aXRjaChlLmFyZ1R5cGVzW29dKXtjYXNlIm9mZnNldCI6dmFyIGg9ZS5v ZmZzZXRBcmdJbmRleC5pbmRleE9mKG8pO3U9ZS5vZmZzZXRBcmdzW2hdLmFy cmF5LGM9IitxIitoO2Nhc2UiYXJyYXkiOmM9InAiK3UrYzt2YXIgZj0ibCIr byxwPSJhIit1O2lmKDA9PT1lLmFycmF5QmxvY2tJbmRpY2VzW3VdKTE9PT1z LmNvdW50PyJnZW5lcmljIj09PXJbdV0/cy5sdmFsdWU/KGEucHVzaChbInZh ciAiLGYsIj0iLHAsIi5nZXQoIixjLCIpIl0uam9pbigiIikpLG49bi5yZXBs YWNlKGwsZiksaS5wdXNoKFtwLCIuc2V0KCIsYywiLCIsZiwiKSJdLmpvaW4o IiIpKSk6bj1uLnJlcGxhY2UobCxbcCwiLmdldCgiLGMsIikiXS5qb2luKCIi KSk6bj1uLnJlcGxhY2UobCxbcCwiWyIsYywiXSJdLmpvaW4oIiIpKToiZ2Vu ZXJpYyI9PT1yW3VdPyhhLnB1c2goWyJ2YXIgIixmLCI9IixwLCIuZ2V0KCIs YywiKSJdLmpvaW4oIiIpKSxuPW4ucmVwbGFjZShsLGYpLHMubHZhbHVlJiZp LnB1c2goW3AsIi5zZXQoIixjLCIsIixmLCIpIl0uam9pbigiIikpKTooYS5w dXNoKFsidmFyICIsZiwiPSIscCwiWyIsYywiXSJdLmpvaW4oIiIpKSxuPW4u cmVwbGFjZShsLGYpLHMubHZhbHVlJiZpLnB1c2goW3AsIlsiLGMsIl09Iixm XS5qb2luKCIiKSkpO2Vsc2V7Zm9yKHZhciBkPVtzLm5hbWVdLGc9W2NdLHY9 MDt2PE1hdGguYWJzKGUuYXJyYXlCbG9ja0luZGljZXNbdV0pO3YrKylkLnB1 c2goIlxccypcXFsoW15cXF1dKylcXF0iKSxnLnB1c2goIiQiKyh2KzEpKyIq dCIrdSsiYiIrdik7aWYobD1uZXcgUmVnRXhwKGQuam9pbigiIiksImciKSxj PWcuam9pbigiKyIpLCJnZW5lcmljIj09PXJbdV0pdGhyb3cgbmV3IEVycm9y KCJjd2lzZTogR2VuZXJpYyBhcnJheXMgbm90IHN1cHBvcnRlZCBpbiBjb21i aW5hdGlvbiB3aXRoIGJsb2NrcyEiKTtuPW4ucmVwbGFjZShsLFtwLCJbIixj LCJdIl0uam9pbigiIikpfWJyZWFrO2Nhc2Uic2NhbGFyIjpuPW4ucmVwbGFj ZShsLCJZIitlLnNjYWxhckFyZ3MuaW5kZXhPZihvKSk7YnJlYWs7Y2FzZSJp bmRleCI6bj1uLnJlcGxhY2UobCwiaW5kZXgiKTticmVhaztjYXNlInNoYXBl IjpuPW4ucmVwbGFjZShsLCJzaGFwZSIpfX19cmV0dXJuW2Euam9pbigiXG4i KSxuLGkuam9pbigiXG4iKV0uam9pbigiXG4iKS50cmltKCl9ZnVuY3Rpb24g byh0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxyPSEwLG49MDtu PHQubGVuZ3RoOysrbil7dmFyIGE9dFtuXSxpPWEubWF0Y2goL1xkKy8pO2k9 aT9pWzBdOiIiLDA9PT1hLmNoYXJBdCgwKT9lW25dPSJ1IithLmNoYXJBdCgx KStpOmVbbl09YS5jaGFyQXQoMCkraSxuPjAmJihyPXImJmVbbl09PT1lW24t MV0pfXJldHVybiByP2VbMF06ZS5qb2luKCIiKX1lLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXtmb3IodmFyIHI9ZVsxXS5sZW5ndGgtTWF0aC5hYnModC5hcnJh eUJsb2NrSW5kaWNlc1swXSl8MCxzPW5ldyBBcnJheSh0LmFycmF5QXJncy5s ZW5ndGgpLGw9bmV3IEFycmF5KHQuYXJyYXlBcmdzLmxlbmd0aCksYz0wO2M8 dC5hcnJheUFyZ3MubGVuZ3RoOysrYylsW2NdPWVbMipjXSxzW2NdPWVbMipj KzFdO3ZhciB1PVtdLGg9W10sZj1bXSxwPVtdLGQ9W107Zm9yKGM9MDtjPHQu YXJyYXlBcmdzLmxlbmd0aDsrK2Mpe3QuYXJyYXlCbG9ja0luZGljZXNbY108 MD8oZi5wdXNoKDApLHAucHVzaChyKSx1LnB1c2gociksaC5wdXNoKHIrdC5h cnJheUJsb2NrSW5kaWNlc1tjXSkpOihmLnB1c2godC5hcnJheUJsb2NrSW5k aWNlc1tjXSkscC5wdXNoKHQuYXJyYXlCbG9ja0luZGljZXNbY10rciksdS5w dXNoKDApLGgucHVzaCh0LmFycmF5QmxvY2tJbmRpY2VzW2NdKSk7Zm9yKHZh ciBnPVtdLHY9MDt2PHNbY10ubGVuZ3RoO3YrKylmW2NdPD1zW2NdW3ZdJiZz W2NdW3ZdPHBbY10mJmcucHVzaChzW2NdW3ZdLWZbY10pO2QucHVzaChnKX12 YXIgbT1bIlNTIl0seT1bIid1c2Ugc3RyaWN0JyJdLHg9W107Zm9yKHY9MDt2 PHI7Kyt2KXgucHVzaChbInMiLHYsIj1TU1siLHYsIl0iXS5qb2luKCIiKSk7 Zm9yKGM9MDtjPHQuYXJyYXlBcmdzLmxlbmd0aDsrK2Mpe2ZvcihtLnB1c2go ImEiK2MpLG0ucHVzaCgidCIrYyksbS5wdXNoKCJwIitjKSx2PTA7djxyOysr dil4LnB1c2goWyJ0IixjLCJwIix2LCI9dCIsYywiWyIsZltjXSt2LCJdIl0u am9pbigiIikpO2Zvcih2PTA7djxNYXRoLmFicyh0LmFycmF5QmxvY2tJbmRp Y2VzW2NdKTsrK3YpeC5wdXNoKFsidCIsYywiYiIsdiwiPXQiLGMsIlsiLHVb Y10rdiwiXSJdLmpvaW4oIiIpKX1mb3IoYz0wO2M8dC5zY2FsYXJBcmdzLmxl bmd0aDsrK2MpbS5wdXNoKCJZIitjKTtpZih0LnNoYXBlQXJncy5sZW5ndGg+ MCYmeC5wdXNoKCJzaGFwZT1TUy5zbGljZSgwKSIpLHQuaW5kZXhBcmdzLmxl bmd0aD4wKXt2YXIgYj1uZXcgQXJyYXkocik7Zm9yKGM9MDtjPHI7KytjKWJb Y109IjAiO3gucHVzaChbImluZGV4PVsiLGIuam9pbigiLCIpLCJdIl0uam9p bigiIikpfWZvcihjPTA7Yzx0Lm9mZnNldEFyZ3MubGVuZ3RoOysrYyl7dmFy IF89dC5vZmZzZXRBcmdzW2NdLHc9W107Zm9yKHY9MDt2PF8ub2Zmc2V0Lmxl bmd0aDsrK3YpMCE9PV8ub2Zmc2V0W3ZdJiYoMT09PV8ub2Zmc2V0W3ZdP3cu cHVzaChbInQiLF8uYXJyYXksInAiLHZdLmpvaW4oIiIpKTp3LnB1c2goW18u b2Zmc2V0W3ZdLCIqdCIsXy5hcnJheSwicCIsdl0uam9pbigiIikpKTswPT09 dy5sZW5ndGg/eC5wdXNoKCJxIitjKyI9MCIpOngucHVzaChbInEiLGMsIj0i LHcuam9pbigiKyIpXS5qb2luKCIiKSl9dmFyIGs9bihbXS5jb25jYXQodC5w cmUudGhpc1ZhcnMpLmNvbmNhdCh0LmJvZHkudGhpc1ZhcnMpLmNvbmNhdCh0 LnBvc3QudGhpc1ZhcnMpKTtmb3IoKHg9eC5jb25jYXQoaykpLmxlbmd0aD4w JiZ5LnB1c2goInZhciAiK3guam9pbigiLCIpKSxjPTA7Yzx0LmFycmF5QXJn cy5sZW5ndGg7KytjKXkucHVzaCgicCIrYysifD0wIik7dC5wcmUuYm9keS5s ZW5ndGg+MyYmeS5wdXNoKGkodC5wcmUsdCxsKSk7dmFyIFQ9aSh0LmJvZHks dCxsKSxNPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dFswXS5sZW5ndGg7 ZTxyOyl7Zm9yKHZhciBuPTE7bjx0Lmxlbmd0aDsrK24paWYodFtuXVtlXSE9 PXRbMF1bZV0pcmV0dXJuIGU7KytlfXJldHVybiBlfShkKTtNPHI/eS5wdXNo KGZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgaT1lLmxlbmd0aCxvPXIuYXJy YXlBcmdzLmxlbmd0aCxzPXIuYmxvY2tTaXplLGw9ci5pbmRleEFyZ3MubGVu Z3RoPjAsYz1bXSx1PTA7dTxvOysrdSljLnB1c2goWyJ2YXIgb2Zmc2V0Iix1 LCI9cCIsdV0uam9pbigiIikpO2Zvcih1PXQ7dTxpOysrdSljLnB1c2goWyJm b3IodmFyIGoiK3UrIj1TU1siLGVbdV0sIl18MDtqIix1LCI+MDspeyJdLmpv aW4oIiIpKSxjLnB1c2goWyJpZihqIix1LCI8IixzLCIpeyJdLmpvaW4oIiIp KSxjLnB1c2goWyJzIixlW3VdLCI9aiIsdV0uam9pbigiIikpLGMucHVzaChb ImoiLHUsIj0wIl0uam9pbigiIikpLGMucHVzaChbIn1lbHNle3MiLGVbdV0s Ij0iLHNdLmpvaW4oIiIpKSxjLnB1c2goWyJqIix1LCItPSIscywifSJdLmpv aW4oIiIpKSxsJiZjLnB1c2goWyJpbmRleFsiLGVbdV0sIl09aiIsdV0uam9p bigiIikpO2Zvcih1PTA7dTxvOysrdSl7Zm9yKHZhciBoPVsib2Zmc2V0Iit1 XSxmPXQ7ZjxpOysrZiloLnB1c2goWyJqIixmLCIqdCIsdSwicCIsZVtmXV0u am9pbigiIikpO2MucHVzaChbInAiLHUsIj0oIixoLmpvaW4oIisiKSwiKSJd LmpvaW4oIiIpKX1mb3IoYy5wdXNoKGEoZSxyLG4pKSx1PXQ7dTxpOysrdSlj LnB1c2goIn0iKTtyZXR1cm4gYy5qb2luKCJcbiIpfShNLGRbMF0sdCxUKSk6 eS5wdXNoKGEoZFswXSx0LFQpKSx0LnBvc3QuYm9keS5sZW5ndGg+MyYmeS5w dXNoKGkodC5wb3N0LHQsbCkpLHQuZGVidWcmJmNvbnNvbGUubG9nKCItLS0t LUdlbmVyYXRlZCBjd2lzZSByb3V0aW5lIGZvciAiLGUsIjpcbiIreS5qb2lu KCJcbiIpKyJcbi0tLS0tLS0tLS0iKTt2YXIgQT1bdC5mdW5jTmFtZXx8InVu bmFtZWQiLCJfY3dpc2VfbG9vcF8iLHNbMF0uam9pbigicyIpLCJtIixNLG8o bCldLmpvaW4oIiIpO3JldHVybiBuZXcgRnVuY3Rpb24oWyJmdW5jdGlvbiAi LEEsIigiLG0uam9pbigiLCIpLCIpeyIseS5qb2luKCJcbiIpLCJ9IHJldHVy biAiLEFdLmpvaW4oIiIpKSgpfX0se3VuaXE6NTQ2fV0sMTUwOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29tcGlsZS5qcyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1bIid1c2Ugc3RyaWN0JyIs InZhciBDQUNIRUQ9e30iXSxyPVtdLGE9dC5mdW5jTmFtZSsiX2N3aXNlX3Ro dW5rIjtlLnB1c2goWyJyZXR1cm4gZnVuY3Rpb24gIixhLCIoIix0LnNoaW1B cmdzLmpvaW4oIiwiKSwiKXsiXS5qb2luKCIiKSk7Zm9yKHZhciBpPVtdLG89 W10scz1bWyJhcnJheSIsdC5hcnJheUFyZ3NbMF0sIi5zaGFwZS5zbGljZSgi LE1hdGgubWF4KDAsdC5hcnJheUJsb2NrSW5kaWNlc1swXSksdC5hcnJheUJs b2NrSW5kaWNlc1swXTwwPyIsIit0LmFycmF5QmxvY2tJbmRpY2VzWzBdKyIp IjoiKSJdLmpvaW4oIiIpXSxsPVtdLGM9W10sdT0wO3U8dC5hcnJheUFyZ3Mu bGVuZ3RoOysrdSl7dmFyIGg9dC5hcnJheUFyZ3NbdV07ci5wdXNoKFsidCIs aCwiPWFycmF5IixoLCIuZHR5cGUsIiwiciIsaCwiPWFycmF5IixoLCIub3Jk ZXIiXS5qb2luKCIiKSksaS5wdXNoKCJ0IitoKSxpLnB1c2goInIiK2gpLG8u cHVzaCgidCIraCksby5wdXNoKCJyIitoKyIuam9pbigpIikscy5wdXNoKCJh cnJheSIraCsiLmRhdGEiKSxzLnB1c2goImFycmF5IitoKyIuc3RyaWRlIiks cy5wdXNoKCJhcnJheSIraCsiLm9mZnNldHwwIiksdT4wJiYobC5wdXNoKCJh cnJheSIrdC5hcnJheUFyZ3NbMF0rIi5zaGFwZS5sZW5ndGg9PT1hcnJheSIr aCsiLnNoYXBlLmxlbmd0aCsiKyhNYXRoLmFicyh0LmFycmF5QmxvY2tJbmRp Y2VzWzBdKS1NYXRoLmFicyh0LmFycmF5QmxvY2tJbmRpY2VzW3VdKSkpLGMu cHVzaCgiYXJyYXkiK3QuYXJyYXlBcmdzWzBdKyIuc2hhcGVbc2hhcGVJbmRl eCsiK01hdGgubWF4KDAsdC5hcnJheUJsb2NrSW5kaWNlc1swXSkrIl09PT1h cnJheSIraCsiLnNoYXBlW3NoYXBlSW5kZXgrIitNYXRoLm1heCgwLHQuYXJy YXlCbG9ja0luZGljZXNbdV0pKyJdIikpfWZvcih0LmFycmF5QXJncy5sZW5n dGg+MSYmKGUucHVzaCgiaWYgKCEoIitsLmpvaW4oIiAmJiAiKSsiKSkgdGhy b3cgbmV3IEVycm9yKCdjd2lzZTogQXJyYXlzIGRvIG5vdCBhbGwgaGF2ZSB0 aGUgc2FtZSBkaW1lbnNpb25hbGl0eSEnKSIpLGUucHVzaCgiZm9yKHZhciBz aGFwZUluZGV4PWFycmF5Iit0LmFycmF5QXJnc1swXSsiLnNoYXBlLmxlbmd0 aC0iK01hdGguYWJzKHQuYXJyYXlCbG9ja0luZGljZXNbMF0pKyI7IHNoYXBl SW5kZXgtLVx4M2UwOykgeyIpLGUucHVzaCgiaWYgKCEoIitjLmpvaW4oIiAm JiAiKSsiKSkgdGhyb3cgbmV3IEVycm9yKCdjd2lzZTogQXJyYXlzIGRvIG5v dCBhbGwgaGF2ZSB0aGUgc2FtZSBzaGFwZSEnKSIpLGUucHVzaCgifSIpKSx1 PTA7dTx0LnNjYWxhckFyZ3MubGVuZ3RoOysrdSlzLnB1c2goInNjYWxhciIr dC5zY2FsYXJBcmdzW3VdKTtyZXR1cm4gci5wdXNoKFsidHlwZT1bIixvLmpv aW4oIiwiKSwiXS5qb2luKCkiXS5qb2luKCIiKSksci5wdXNoKCJwcm9jPUNB Q0hFRFt0eXBlXSIpLGUucHVzaCgidmFyICIrci5qb2luKCIsIikpLGUucHVz aChbImlmKCFwcm9jKXsiLCJDQUNIRURbdHlwZV09cHJvYz1jb21waWxlKFsi LGkuam9pbigiLCIpLCJdKX0iLCJyZXR1cm4gcHJvYygiLHMuam9pbigiLCIp LCIpfSJdLmpvaW4oIiIpKSx0LmRlYnVnJiZjb25zb2xlLmxvZygiLS0tLS1H ZW5lcmF0ZWQgdGh1bms6XG4iK2Uuam9pbigiXG4iKSsiXG4tLS0tLS0tLS0t IiksbmV3IEZ1bmN0aW9uKCJjb21waWxlIixlLmpvaW4oIlxuIikpKG4uYmlu ZCh2b2lkIDAsdCkpfX0seyIuL2NvbXBpbGUuanMiOjE0OX1dLDE1MTpbZnVu Y3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCJjd2lzZS1jb21waWxlciIpfSx7 ImN3aXNlLWNvbXBpbGVyIjoxNDh9XSwxNTI6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG4sYT10KCJlczUtZXh0L29iamVjdC9jb3B5Iiks aT10KCJlczUtZXh0L29iamVjdC9ub3JtYWxpemUtb3B0aW9ucyIpLG89dCgi ZXM1LWV4dC9vYmplY3QvdmFsaWQtY2FsbGFibGUiKSxzPXQoImVzNS1leHQv b2JqZWN0L21hcCIpLGw9dCgiZXM1LWV4dC9vYmplY3QvdmFsaWQtY2FsbGFi bGUiKSxjPXQoImVzNS1leHQvb2JqZWN0L3ZhbGlkLXZhbHVlIiksdT1GdW5j dGlvbi5wcm90b3R5cGUuYmluZCxoPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxm PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7bj1mdW5jdGlvbih0 LGUscil7dmFyIG4saT1jKGUpJiZsKGUudmFsdWUpO3JldHVybiBkZWxldGUo bj1hKGUpKS53cml0YWJsZSxkZWxldGUgbi52YWx1ZSxuLmdldD1mdW5jdGlv bigpe3JldHVybiFyLm92ZXJ3cml0ZURlZmluaXRpb24mJmYuY2FsbCh0aGlz LHQpP2k6KGUudmFsdWU9dS5jYWxsKGksci5yZXNvbHZlQ29udGV4dD9yLnJl c29sdmVDb250ZXh0KHRoaXMpOnRoaXMpLGgodGhpcyx0LGUpLHRoaXNbdF0p fSxufSxlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9aShhcmd1bWVudHNb MV0pO3JldHVybiBudWxsIT1lLnJlc29sdmVDb250ZXh0JiZvKGUucmVzb2x2 ZUNvbnRleHQpLHModCxmdW5jdGlvbih0LHIpe3JldHVybiBuKHIsdCxlKX0p fX0seyJlczUtZXh0L29iamVjdC9jb3B5IjoxOTIsImVzNS1leHQvb2JqZWN0 L21hcCI6MjAxLCJlczUtZXh0L29iamVjdC9ub3JtYWxpemUtb3B0aW9ucyI6 MjAyLCJlczUtZXh0L29iamVjdC92YWxpZC1jYWxsYWJsZSI6MjA2LCJlczUt ZXh0L29iamVjdC92YWxpZC12YWx1ZSI6MjA4fV0sMTUzOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImVzNS1leHQvb2JqZWN0L2Fz c2lnbiIpLGE9dCgiZXM1LWV4dC9vYmplY3Qvbm9ybWFsaXplLW9wdGlvbnMi KSxpPXQoImVzNS1leHQvb2JqZWN0L2lzLWNhbGxhYmxlIiksbz10KCJlczUt ZXh0L3N0cmluZy8jL2NvbnRhaW5zIik7KGUuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe3ZhciByLGkscyxsLGM7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mnx8 InN0cmluZyIhPXR5cGVvZiB0PyhsPWUsZT10LHQ9bnVsbCk6bD1hcmd1bWVu dHNbMl0sbnVsbD09dD8ocj1zPSEwLGk9ITEpOihyPW8uY2FsbCh0LCJjIiks aT1vLmNhbGwodCwiZSIpLHM9by5jYWxsKHQsInciKSksYz17dmFsdWU6ZSxj b25maWd1cmFibGU6cixlbnVtZXJhYmxlOmksd3JpdGFibGU6c30sbD9uKGEo bCksYyk6Y30pLmdzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgcyxsLGMsdTtyZXR1 cm4ic3RyaW5nIiE9dHlwZW9mIHQ/KGM9cixyPWUsZT10LHQ9bnVsbCk6Yz1h cmd1bWVudHNbM10sbnVsbD09ZT9lPXZvaWQgMDppKGUpP251bGw9PXI/cj12 b2lkIDA6aShyKXx8KGM9cixyPXZvaWQgMCk6KGM9ZSxlPXI9dm9pZCAwKSxu dWxsPT10PyhzPSEwLGw9ITEpOihzPW8uY2FsbCh0LCJjIiksbD1vLmNhbGwo dCwiZSIpKSx1PXtnZXQ6ZSxzZXQ6cixjb25maWd1cmFibGU6cyxlbnVtZXJh YmxlOmx9LGM/bihhKGMpLHUpOnV9fSx7ImVzNS1leHQvb2JqZWN0L2Fzc2ln biI6MTg5LCJlczUtZXh0L29iamVjdC9pcy1jYWxsYWJsZSI6MTk1LCJlczUt ZXh0L29iamVjdC9ub3JtYWxpemUtb3B0aW9ucyI6MjAyLCJlczUtZXh0L3N0 cmluZy8jL2NvbnRhaW5zIjoyMDl9XSwxNTQ6W2Z1bmN0aW9uKHQsZSxyKXt2 YXIgbjtuPXRoaXMsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u IGUodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rp b24gcih0KXt2YXIgcjtyZXR1cm4gMT09PXQubGVuZ3RoJiYocj10LHQ9ZnVu Y3Rpb24odCxuKXtyZXR1cm4gZShyKHQpLG4pfSkse2xlZnQ6ZnVuY3Rpb24o ZSxyLG4sYSl7Zm9yKG51bGw9PW4mJihuPTApLG51bGw9PWEmJihhPWUubGVu Z3RoKTtuPGE7KXt2YXIgaT1uK2E+Pj4xO3QoZVtpXSxyKTwwP249aSsxOmE9 aX1yZXR1cm4gbn0scmlnaHQ6ZnVuY3Rpb24oZSxyLG4sYSl7Zm9yKG51bGw9 PW4mJihuPTApLG51bGw9PWEmJihhPWUubGVuZ3RoKTtuPGE7KXt2YXIgaT1u K2E+Pj4xO3QoZVtpXSxyKT4wP2E9aTpuPWkrMX1yZXR1cm4gbn19fXZhciBu PXIoZSksYT1uLnJpZ2h0LGk9bi5sZWZ0O2Z1bmN0aW9uIG8odCxlKXtyZXR1 cm5bdCxlXX1mdW5jdGlvbiBzKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9 ZnVuY3Rpb24gbCh0LGUpe3ZhciByLG4sYT10Lmxlbmd0aCxpPTAsbz0tMSxs PTAsYz0wO2lmKG51bGw9PWUpZm9yKDsrK288YTspaXNOYU4ocj1zKHRbb10p KXx8KGMrPShuPXItbCkqKHItKGwrPW4vKytpKSkpO2Vsc2UgZm9yKDsrK288 YTspaXNOYU4ocj1zKGUodFtvXSxvLHQpKSl8fChjKz0obj1yLWwpKihyLShs Kz1uLysraSkpKTtpZihpPjEpcmV0dXJuIGMvKGktMSl9ZnVuY3Rpb24gYyh0 LGUpe3ZhciByPWwodCxlKTtyZXR1cm4gcj9NYXRoLnNxcnQocik6cn1mdW5j dGlvbiB1KHQsZSl7dmFyIHIsbixhLGk9dC5sZW5ndGgsbz0tMTtpZihudWxs PT1lKXtmb3IoOysrbzxpOylpZihudWxsIT0ocj10W29dKSYmcj49cilmb3Io bj1hPXI7KytvPGk7KW51bGwhPShyPXRbb10pJiYobj5yJiYobj1yKSxhPHIm JihhPXIpKX1lbHNlIGZvcig7KytvPGk7KWlmKG51bGwhPShyPWUodFtvXSxv LHQpKSYmcj49cilmb3Iobj1hPXI7KytvPGk7KW51bGwhPShyPWUodFtvXSxv LHQpKSYmKG4+ciYmKG49ciksYTxyJiYoYT1yKSk7cmV0dXJuW24sYV19dmFy IGg9QXJyYXkucHJvdG90eXBlLGY9aC5zbGljZSxwPWgubWFwO2Z1bmN0aW9u IGQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGco dCl7cmV0dXJuIHR9ZnVuY3Rpb24gdih0LGUscil7dD0rdCxlPStlLHI9KGE9 YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTphPDM/MTorcjtmb3Io dmFyIG49LTEsYT0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL3IpKSxp PW5ldyBBcnJheShhKTsrK248YTspaVtuXT10K24qcjtyZXR1cm4gaX12YXIg bT1NYXRoLnNxcnQoNTApLHk9TWF0aC5zcXJ0KDEwKSx4PU1hdGguc3FydCgy KTtmdW5jdGlvbiBiKHQsZSxyKXt2YXIgbj0oZS10KS9NYXRoLm1heCgwLHIp LGE9TWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMTApLGk9bi9NYXRo LnBvdygxMCxhKTtyZXR1cm4gYT49MD8oaT49bT8xMDppPj15PzU6aT49eD8y OjEpKk1hdGgucG93KDEwLGEpOi1NYXRoLnBvdygxMCwtYSkvKGk+PW0/MTA6 aT49eT81Omk+PXg/MjoxKX1mdW5jdGlvbiBfKHQsZSxyKXt2YXIgbj1NYXRo LmFicyhlLXQpL01hdGgubWF4KDAsciksYT1NYXRoLnBvdygxMCxNYXRoLmZs b29yKE1hdGgubG9nKG4pL01hdGguTE4xMCkpLGk9bi9hO3JldHVybiBpPj1t P2EqPTEwOmk+PXk/YSo9NTppPj14JiYoYSo9MiksZTx0Py1hOmF9ZnVuY3Rp b24gdyh0KXtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nKHQubGVuZ3RoKS9N YXRoLkxOMikrMX1mdW5jdGlvbiBrKHQsZSxyKXtpZihudWxsPT1yJiYocj1z KSxuPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fG48MilyZXR1cm4rcih0WzBd LDAsdCk7aWYoZT49MSlyZXR1cm4rcih0W24tMV0sbi0xLHQpO3ZhciBuLGE9 KG4tMSkqZSxpPU1hdGguZmxvb3IoYSksbz0rcih0W2ldLGksdCk7cmV0dXJu IG8rKCtyKHRbaSsxXSxpKzEsdCktbykqKGEtaSl9fWZ1bmN0aW9uIFQodCxl KXt2YXIgcixuLGE9dC5sZW5ndGgsaT0tMTtpZihudWxsPT1lKXtmb3IoOysr aTxhOylpZihudWxsIT0ocj10W2ldKSYmcj49cilmb3Iobj1yOysraTxhOylu dWxsIT0ocj10W2ldKSYmbj5yJiYobj1yKX1lbHNlIGZvcig7KytpPGE7KWlm KG51bGwhPShyPWUodFtpXSxpLHQpKSYmcj49cilmb3Iobj1yOysraTxhOylu dWxsIT0ocj1lKHRbaV0saSx0KSkmJm4+ciYmKG49cik7cmV0dXJuIG59ZnVu Y3Rpb24gTSh0KXtpZighKGE9dC5sZW5ndGgpKXJldHVybltdO2Zvcih2YXIg ZT0tMSxyPVQodCxBKSxuPW5ldyBBcnJheShyKTsrK2U8cjspZm9yKHZhciBh LGk9LTEsbz1uW2VdPW5ldyBBcnJheShhKTsrK2k8YTspb1tpXT10W2ldW2Vd O3JldHVybiBufWZ1bmN0aW9uIEEodCl7cmV0dXJuIHQubGVuZ3RofXQuYmlz ZWN0PWEsdC5iaXNlY3RSaWdodD1hLHQuYmlzZWN0TGVmdD1pLHQuYXNjZW5k aW5nPWUsdC5iaXNlY3Rvcj1yLHQuY3Jvc3M9ZnVuY3Rpb24odCxlLHIpe3Zh ciBuLGEsaSxzLGw9dC5sZW5ndGgsYz1lLmxlbmd0aCx1PW5ldyBBcnJheShs KmMpO2ZvcihudWxsPT1yJiYocj1vKSxuPWk9MDtuPGw7KytuKWZvcihzPXRb bl0sYT0wO2E8YzsrK2EsKytpKXVbaV09cihzLGVbYV0pO3JldHVybiB1fSx0 LmRlc2NlbmRpbmc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8x OmU+PXQ/MDpOYU59LHQuZGV2aWF0aW9uPWMsdC5leHRlbnQ9dSx0Lmhpc3Rv Z3JhbT1mdW5jdGlvbigpe3ZhciB0PWcsZT11LHI9dztmdW5jdGlvbiBuKG4p e3ZhciBpLG8scz1uLmxlbmd0aCxsPW5ldyBBcnJheShzKTtmb3IoaT0wO2k8 czsrK2kpbFtpXT10KG5baV0saSxuKTt2YXIgYz1lKGwpLHU9Y1swXSxoPWNb MV0sZj1yKGwsdSxoKTtBcnJheS5pc0FycmF5KGYpfHwoZj1fKHUsaCxmKSxm PXYoTWF0aC5jZWlsKHUvZikqZixoLGYpKTtmb3IodmFyIHA9Zi5sZW5ndGg7 ZlswXTw9dTspZi5zaGlmdCgpLC0tcDtmb3IoO2ZbcC0xXT5oOylmLnBvcCgp LC0tcDt2YXIgZCxnPW5ldyBBcnJheShwKzEpO2ZvcihpPTA7aTw9cDsrK2kp KGQ9Z1tpXT1bXSkueDA9aT4wP2ZbaS0xXTp1LGQueDE9aTxwP2ZbaV06aDtm b3IoaT0wO2k8czsrK2kpdTw9KG89bFtpXSkmJm88PWgmJmdbYShmLG8sMCxw KV0ucHVzaChuW2ldKTtyZXR1cm4gZ31yZXR1cm4gbi52YWx1ZT1mdW5jdGlv bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10 eXBlb2YgZT9lOmQoZSksbik6dH0sbi5kb21haW49ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ dDpkKFt0WzBdLHRbMV1dKSxuKTplfSxuLnRocmVzaG9sZHM9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlw ZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP2QoZi5jYWxsKHQpKTpkKHQpLG4p OnJ9LG59LHQudGhyZXNob2xkRnJlZWRtYW5EaWFjb25pcz1mdW5jdGlvbih0 LHIsbil7cmV0dXJuIHQ9cC5jYWxsKHQscykuc29ydChlKSxNYXRoLmNlaWwo KG4tcikvKDIqKGsodCwuNzUpLWsodCwuMjUpKSpNYXRoLnBvdyh0Lmxlbmd0 aCwtMS8zKSkpfSx0LnRocmVzaG9sZFNjb3R0PWZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4gTWF0aC5jZWlsKChyLWUpLygzLjUqYyh0KSpNYXRoLnBvdyh0Lmxl bmd0aCwtMS8zKSkpfSx0LnRocmVzaG9sZFN0dXJnZXM9dyx0Lm1heD1mdW5j dGlvbih0LGUpe3ZhciByLG4sYT10Lmxlbmd0aCxpPS0xO2lmKG51bGw9PWUp e2Zvcig7KytpPGE7KWlmKG51bGwhPShyPXRbaV0pJiZyPj1yKWZvcihuPXI7 KytpPGE7KW51bGwhPShyPXRbaV0pJiZyPm4mJihuPXIpfWVsc2UgZm9yKDsr K2k8YTspaWYobnVsbCE9KHI9ZSh0W2ldLGksdCkpJiZyPj1yKWZvcihuPXI7 KytpPGE7KW51bGwhPShyPWUodFtpXSxpLHQpKSYmcj5uJiYobj1yKTtyZXR1 cm4gbn0sdC5tZWFuPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10Lmxlbmd0aCxh PW4saT0tMSxvPTA7aWYobnVsbD09ZSlmb3IoOysraTxuOylpc05hTihyPXMo dFtpXSkpPy0tYTpvKz1yO2Vsc2UgZm9yKDsrK2k8bjspaXNOYU4ocj1zKGUo dFtpXSxpLHQpKSk/LS1hOm8rPXI7aWYoYSlyZXR1cm4gby9hfSx0Lm1lZGlh bj1mdW5jdGlvbih0LHIpe3ZhciBuLGE9dC5sZW5ndGgsaT0tMSxvPVtdO2lm KG51bGw9PXIpZm9yKDsrK2k8YTspaXNOYU4obj1zKHRbaV0pKXx8by5wdXNo KG4pO2Vsc2UgZm9yKDsrK2k8YTspaXNOYU4obj1zKHIodFtpXSxpLHQpKSl8 fG8ucHVzaChuKTtyZXR1cm4gayhvLnNvcnQoZSksLjUpfSx0Lm1lcmdlPWZ1 bmN0aW9uKHQpe2Zvcih2YXIgZSxyLG4sYT10Lmxlbmd0aCxpPS0xLG89MDsr K2k8YTspbys9dFtpXS5sZW5ndGg7Zm9yKHI9bmV3IEFycmF5KG8pOy0tYT49 MDspZm9yKGU9KG49dFthXSkubGVuZ3RoOy0tZT49MDspclstLW9dPW5bZV07 cmV0dXJuIHJ9LHQubWluPVQsdC5wYWlycz1mdW5jdGlvbih0LGUpe251bGw9 PWUmJihlPW8pO2Zvcih2YXIgcj0wLG49dC5sZW5ndGgtMSxhPXRbMF0saT1u ZXcgQXJyYXkobjwwPzA6bik7cjxuOylpW3JdPWUoYSxhPXRbKytyXSk7cmV0 dXJuIGl9LHQucGVybXV0ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lLmxl bmd0aCxuPW5ldyBBcnJheShyKTtyLS07KW5bcl09dFtlW3JdXTtyZXR1cm4g bn0sdC5xdWFudGlsZT1rLHQucmFuZ2U9dix0LnNjYW49ZnVuY3Rpb24odCxy KXtpZihuPXQubGVuZ3RoKXt2YXIgbixhLGk9MCxvPTAscz10W29dO2Zvcihu dWxsPT1yJiYocj1lKTsrK2k8bjspKHIoYT10W2ldLHMpPDB8fDAhPT1yKHMs cykpJiYocz1hLG89aSk7cmV0dXJuIDA9PT1yKHMscyk/bzp2b2lkIDB9fSx0 LnNodWZmbGU9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbixhLGk9KG51bGw9 PXI/dC5sZW5ndGg6ciktKGU9bnVsbD09ZT8wOitlKTtpOylhPU1hdGgucmFu ZG9tKCkqaS0tfDAsbj10W2krZV0sdFtpK2VdPXRbYStlXSx0W2ErZV09bjty ZXR1cm4gdH0sdC5zdW09ZnVuY3Rpb24odCxlKXt2YXIgcixuPXQubGVuZ3Ro LGE9LTEsaT0wO2lmKG51bGw9PWUpZm9yKDsrK2E8bjspKHI9K3RbYV0pJiYo aSs9cik7ZWxzZSBmb3IoOysrYTxuOykocj0rZSh0W2FdLGEsdCkpJiYoaSs9 cik7cmV0dXJuIGl9LHQudGlja3M9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEs aSxvLHM9LTE7aWYocj0rciwodD0rdCk9PShlPStlKSYmcj4wKXJldHVyblt0 XTtpZigobj1lPHQpJiYoYT10LHQ9ZSxlPWEpLDA9PT0obz1iKHQsZSxyKSl8 fCFpc0Zpbml0ZShvKSlyZXR1cm5bXTtpZihvPjApZm9yKHQ9TWF0aC5jZWls KHQvbyksZT1NYXRoLmZsb29yKGUvbyksaT1uZXcgQXJyYXkoYT1NYXRoLmNl aWwoZS10KzEpKTsrK3M8YTspaVtzXT0odCtzKSpvO2Vsc2UgZm9yKHQ9TWF0 aC5mbG9vcih0Km8pLGU9TWF0aC5jZWlsKGUqbyksaT1uZXcgQXJyYXkoYT1N YXRoLmNlaWwodC1lKzEpKTsrK3M8YTspaVtzXT0odC1zKS9vO3JldHVybiBu JiZpLnJldmVyc2UoKSxpfSx0LnRpY2tJbmNyZW1lbnQ9Yix0LnRpY2tTdGVw PV8sdC50cmFuc3Bvc2U9TSx0LnZhcmlhbmNlPWwsdC56aXA9ZnVuY3Rpb24o KXtyZXR1cm4gTShhcmd1bWVudHMpfSxPYmplY3QuZGVmaW5lUHJvcGVydHko dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KCJvYmplY3QiPT10eXBlb2Yg ciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP3I6bi5kMz1uLmQzfHx7fSl9LHt9 XSwxNTU6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbjtuPXRoaXMsZnVuY3Rpb24o dCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoKXt9ZnVuY3Rpb24gcih0LHIp e3ZhciBuPW5ldyBlO2lmKHQgaW5zdGFuY2VvZiBlKXQuZWFjaChmdW5jdGlv bih0LGUpe24uc2V0KGUsdCl9KTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkp e3ZhciBhLGk9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1yKWZvcig7KytpPG87 KW4uc2V0KGksdFtpXSk7ZWxzZSBmb3IoOysraTxvOyluLnNldChyKGE9dFtp XSxpLHQpLGEpfWVsc2UgaWYodClmb3IodmFyIHMgaW4gdCluLnNldChzLHRb c10pO3JldHVybiBufWZ1bmN0aW9uIG4oKXtyZXR1cm57fX1mdW5jdGlvbiBh KHQsZSxyKXt0W2VdPXJ9ZnVuY3Rpb24gaSgpe3JldHVybiByKCl9ZnVuY3Rp b24gbyh0LGUscil7dC5zZXQoZSxyKX1mdW5jdGlvbiBzKCl7fWUucHJvdG90 eXBlPXIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplLGhhczpmdW5jdGlvbih0 KXtyZXR1cm4iJCIrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXNbIiQiK3RdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1si JCIrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9IiQiK3Q7 cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0 aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpIiQiPT09dFswXSYmZGVsZXRlIHRo aXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4g dGhpcykiJCI9PT1lWzBdJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9 LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlz KSIkIj09PWVbMF0mJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmll czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKSIkIj09 PWVbMF0mJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0p O3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUg aW4gdGhpcykiJCI9PT1lWzBdJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0 aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYoIiQiPT09dFswXSlyZXR1cm4h MTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhp cykiJCI9PT1lWzBdJiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0aGlzKX19O3Zh ciBsPXIucHJvdG90eXBlO2Z1bmN0aW9uIGModCxlKXt2YXIgcj1uZXcgcztp Zih0IGluc3RhbmNlb2Ygcyl0LmVhY2goZnVuY3Rpb24odCl7ci5hZGQodCl9 KTtlbHNlIGlmKHQpe3ZhciBuPS0xLGE9dC5sZW5ndGg7aWYobnVsbD09ZSlm b3IoOysrbjxhOylyLmFkZCh0W25dKTtlbHNlIGZvcig7KytuPGE7KXIuYWRk KGUodFtuXSxuLHQpKX1yZXR1cm4gcn1zLnByb3RvdHlwZT1jLnByb3RvdHlw ZT17Y29uc3RydWN0b3I6cyxoYXM6bC5oYXMsYWRkOmZ1bmN0aW9uKHQpe3Jl dHVybiB0aGlzWyIkIisodCs9IiIpXT10LHRoaXN9LHJlbW92ZTpsLnJlbW92 ZSxjbGVhcjpsLmNsZWFyLHZhbHVlczpsLmtleXMsc2l6ZTpsLnNpemUsZW1w dHk6bC5lbXB0eSxlYWNoOmwuZWFjaH0sdC5uZXN0PWZ1bmN0aW9uKCl7dmFy IHQsZSxzLGw9W10sYz1bXTtmdW5jdGlvbiB1KG4sYSxpLG8pe2lmKGE+PWwu bGVuZ3RoKXJldHVybiBudWxsIT10JiZuLnNvcnQodCksbnVsbCE9ZT9lKG4p Om47Zm9yKHZhciBzLGMsaCxmPS0xLHA9bi5sZW5ndGgsZD1sW2ErK10sZz1y KCksdj1pKCk7KytmPHA7KShoPWcuZ2V0KHM9ZChjPW5bZl0pKyIiKSk/aC5w dXNoKGMpOmcuc2V0KHMsW2NdKTtyZXR1cm4gZy5lYWNoKGZ1bmN0aW9uKHQs ZSl7byh2LGUsdSh0LGEsaSxvKSl9KSx2fXJldHVybiBzPXtvYmplY3Q6ZnVu Y3Rpb24odCl7cmV0dXJuIHUodCwwLG4sYSl9LG1hcDpmdW5jdGlvbih0KXty ZXR1cm4gdSh0LDAsaSxvKX0sZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4g ZnVuY3Rpb24gdChyLG4pe2lmKCsrbj5sLmxlbmd0aClyZXR1cm4gcjt2YXIg YSxpPWNbbi0xXTtyZXR1cm4gbnVsbCE9ZSYmbj49bC5sZW5ndGg/YT1yLmVu dHJpZXMoKTooYT1bXSxyLmVhY2goZnVuY3Rpb24oZSxyKXthLnB1c2goe2tl eTpyLHZhbHVlczp0KGUsbil9KX0pKSxudWxsIT1pP2Euc29ydChmdW5jdGlv bih0LGUpe3JldHVybiBpKHQua2V5LGUua2V5KX0pOmF9KHUodCwwLGksbyks MCl9LGtleTpmdW5jdGlvbih0KXtyZXR1cm4gbC5wdXNoKHQpLHN9LHNvcnRL ZXlzOmZ1bmN0aW9uKHQpe3JldHVybiBjW2wubGVuZ3RoLTFdPXQsc30sc29y dFZhbHVlczpmdW5jdGlvbihlKXtyZXR1cm4gdD1lLHN9LHJvbGx1cDpmdW5j dGlvbih0KXtyZXR1cm4gZT10LHN9fX0sdC5zZXQ9Yyx0Lm1hcD1yLHQua2V5 cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdCllLnB1c2go cik7cmV0dXJuIGV9LHQudmFsdWVzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zv cih2YXIgciBpbiB0KWUucHVzaCh0W3JdKTtyZXR1cm4gZX0sdC5lbnRyaWVz PWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaCh7 a2V5OnIsdmFsdWU6dFtyXX0pO3JldHVybiBlfSxPYmplY3QuZGVmaW5lUHJv cGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KCJvYmplY3QiPT10 eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP3I6bi5kMz1uLmQzfHx7 fSl9LHt9XSwxNTY6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbjtuPXRoaXMsZnVu Y3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUodCxlLHIpe3QucHJv dG90eXBlPWUucHJvdG90eXBlPXIsci5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9u IHIodCxlKXt2YXIgcj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3Io dmFyIG4gaW4gZSlyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbigpe312 YXIgYT0iXFxzKihbKy1dP1xcZCspXFxzKiIsaT0iXFxzKihbKy1dP1xcZCpc XC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixvPSJcXHMqKFsrLV0/ XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixzPS9eIyhb MC05YS1mXXszLDh9KSQvLGw9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2EsYSxh XSsiXFwpJCIpLGM9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW28sbyxvXSsiXFwp JCIpLHU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1thLGEsYSxpXSsiXFwpJCIp LGg9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tvLG8sbyxpXSsiXFwpJCIpLGY9 bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW2ksbyxvXSsiXFwpJCIpLHA9bmV3IFJl Z0V4cCgiXmhzbGFcXCgiK1tpLG8sbyxpXSsiXFwpJCIpLGQ9e2FsaWNlYmx1 ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxh cXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTky NjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3 NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0 MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFy dHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0 MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgs Y3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJr Y3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjEx MTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJr a2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVn cmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDox MDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxk YXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFy a3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJr dHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazox NjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGlt Z3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2 NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0 MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdo aXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIw LGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1 NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjcz ODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6 MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2 ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNo aWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6 MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVs bG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0 OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxs aWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGln aHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdo dHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxp Z2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkz MzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4 ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUs bWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1l ZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAs bWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIz MDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0 OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9j Y2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgs b2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4 NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlk OjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEw MDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDox NDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3 MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxw b3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJw bGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJv eWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2 NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxz ZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMy MjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdy YXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNw cmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4 MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1 LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjEx MzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxv dzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gZygp e3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIHYoKXty ZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBtKHQpe3Zh ciBlLHI7cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChl PXMuZXhlYyh0KSk/KHI9ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2 KSw2PT09cj95KGUpOjM9PT1yP25ldyB3KGU+PjgmMTV8ZT4+NCYyNDAsZT4+ NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09cj9uZXcgdyhlPj4y NCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09cj9u ZXcgdyhlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQm MTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPWwuZXhl Yyh0KSk/bmV3IHcoZVsxXSxlWzJdLGVbM10sMSk6KGU9Yy5leGVjKHQpKT9u ZXcgdygyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwx KTooZT11LmV4ZWModCkpP3goZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9aC5l eGVjKHQpKT94KDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10v MTAwLGVbNF0pOihlPWYuZXhlYyh0KSk/QShlWzFdLGVbMl0vMTAwLGVbM10v MTAwLDEpOihlPXAuZXhlYyh0KSk/QShlWzFdLGVbMl0vMTAwLGVbM10vMTAw LGVbNF0pOmQuaGFzT3duUHJvcGVydHkodCk/eShkW3RdKToidHJhbnNwYXJl bnQiPT09dD9uZXcgdyhOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIHko dCl7cmV0dXJuIG5ldyB3KHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1m dW5jdGlvbiB4KHQsZSxyLG4pe3JldHVybiBuPD0wJiYodD1lPXI9TmFOKSxu ZXcgdyh0LGUscixuKX1mdW5jdGlvbiBiKHQpe3JldHVybiB0IGluc3RhbmNl b2Ygbnx8KHQ9bSh0KSksdD9uZXcgdygodD10LnJnYigpKS5yLHQuZyx0LmIs dC5vcGFjaXR5KTpuZXcgd31mdW5jdGlvbiBfKHQsZSxyLG4pe3JldHVybiAx PT09YXJndW1lbnRzLmxlbmd0aD9iKHQpOm5ldyB3KHQsZSxyLG51bGw9PW4/ MTpuKX1mdW5jdGlvbiB3KHQsZSxyLG4pe3RoaXMucj0rdCx0aGlzLmc9K2Us dGhpcy5iPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBrKCl7cmV0dXJu IiMiK00odGhpcy5yKStNKHRoaXMuZykrTSh0aGlzLmIpfWZ1bmN0aW9uIFQo KXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8x Ok1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStN YXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDAp KSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhp cy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5y b3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5j dGlvbiBNKHQpe3JldHVybigodD1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxN YXRoLnJvdW5kKHQpfHwwKSkpPDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9 ZnVuY3Rpb24gQSh0LGUscixuKXtyZXR1cm4gbjw9MD90PWU9cj1OYU46cjw9 MHx8cj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IEwodCxlLHIsbil9 ZnVuY3Rpb24gUyh0KXtpZih0IGluc3RhbmNlb2YgTClyZXR1cm4gbmV3IEwo dC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2Ygbnx8KHQ9 bSh0KSksIXQpcmV0dXJuIG5ldyBMO2lmKHQgaW5zdGFuY2VvZiBMKXJldHVy biB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LHI9dC5nLzI1NSxhPXQuYi8y NTUsaT1NYXRoLm1pbihlLHIsYSksbz1NYXRoLm1heChlLHIsYSkscz1OYU4s bD1vLWksYz0obytpKS8yO3JldHVybiBsPyhzPWU9PT1vPyhyLWEpL2wrNioo cjxhKTpyPT09bz8oYS1lKS9sKzI6KGUtcikvbCs0LGwvPWM8LjU/bytpOjIt by1pLHMqPTYwKTpsPWM+MCYmYzwxPzA6cyxuZXcgTChzLGwsYyx0Lm9wYWNp dHkpfWZ1bmN0aW9uIEUodCxlLHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMu bGVuZ3RoP1ModCk6bmV3IEwodCxlLHIsbnVsbD09bj8xOm4pfWZ1bmN0aW9u IEwodCxlLHIsbil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K3IsdGhp cy5vcGFjaXR5PStufWZ1bmN0aW9uIEModCxlLHIpe3JldHVybiAyNTUqKHQ8 NjA/ZSsoci1lKSp0LzYwOnQ8MTgwP3I6dDwyNDA/ZSsoci1lKSooMjQwLXQp LzYwOmUpfWUobixtLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qu YXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlh YmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUo KX0saGV4OmcsZm9ybWF0SGV4OmcsZm9ybWF0SHNsOmZ1bmN0aW9uKCl7cmV0 dXJuIFModGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjp2LHRvU3RyaW5n OnZ9KSxlKHcsXyxyKG4se2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0 PW51bGw9PXQ/MS8uNzpNYXRoLnBvdygxLy43LHQpLG5ldyB3KHRoaXMucip0 LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5j dGlvbih0KXtyZXR1cm4gdD1udWxsPT10Py43Ok1hdGgucG93KC43LHQpLG5l dyB3KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9 LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5j dGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9 dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1 LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6ayxm b3JtYXRIZXg6ayxmb3JtYXRSZ2I6VCx0b1N0cmluZzpUfSkpLGUoTCxFLHIo bix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8xLy43 Ok1hdGgucG93KDEvLjcsdCksbmV3IEwodGhpcy5oLHRoaXMucyx0aGlzLmwq dCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9 bnVsbD09dD8uNzpNYXRoLnBvdyguNyx0KSxuZXcgTCh0aGlzLmgsdGhpcy5z LHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0 PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4o dGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKmUs YT0yKnItbjtyZXR1cm4gbmV3IHcoQyh0Pj0yNDA/dC0yNDA6dCsxMjAsYSxu KSxDKHQsYSxuKSxDKHQ8MTIwP3QrMjQwOnQtMTIwLGEsbiksdGhpcy5vcGFj aXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5z JiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMu bDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1h dEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09 PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/Imhz bCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDAp KyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3Qr IikiKX19KSk7dmFyIFA9TWF0aC5QSS8xODAsTz0xODAvTWF0aC5QSSx6PS45 NjQyMixJPTEsRD0uODI1MjEsUj00LzI5LEY9Ni8yOSxCPTMqRipGLE49RipG KkY7ZnVuY3Rpb24gaih0KXtpZih0IGluc3RhbmNlb2YgVSlyZXR1cm4gbmV3 IFUodC5sLHQuYSx0LmIsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgWily ZXR1cm4gSih0KTt0IGluc3RhbmNlb2Ygd3x8KHQ9Yih0KSk7dmFyIGUscixu PVkodC5yKSxhPVkodC5nKSxpPVkodC5iKSxvPXEoKC4yMjI1MDQ1Km4rLjcx Njg3ODYqYSsuMDYwNjE2OSppKS9JKTtyZXR1cm4gbj09PWEmJmE9PT1pP2U9 cj1vOihlPXEoKC40MzYwNzQ3Km4rLjM4NTA2NDkqYSsuMTQzMDgwNCppKS96 KSxyPXEoKC4wMTM5MzIyKm4rLjA5NzEwNDUqYSsuNzE0MTczMyppKS9EKSks bmV3IFUoMTE2Km8tMTYsNTAwKihlLW8pLDIwMCooby1yKSx0Lm9wYWNpdHkp fWZ1bmN0aW9uIFYodCxlLHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVu Z3RoP2oodCk6bmV3IFUodCxlLHIsbnVsbD09bj8xOm4pfWZ1bmN0aW9uIFUo dCxlLHIsbil7dGhpcy5sPSt0LHRoaXMuYT0rZSx0aGlzLmI9K3IsdGhpcy5v cGFjaXR5PStufWZ1bmN0aW9uIHEodCl7cmV0dXJuIHQ+Tj9NYXRoLnBvdyh0 LDEvMyk6dC9CK1J9ZnVuY3Rpb24gSCh0KXtyZXR1cm4gdD5GP3QqdCp0OkIq KHQtUil9ZnVuY3Rpb24gRyh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8x Mi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9u IFkodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93 KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gVyh0KXtpZih0IGluc3Rh bmNlb2YgWilyZXR1cm4gbmV3IFoodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTtp Zih0IGluc3RhbmNlb2YgVXx8KHQ9aih0KSksMD09PXQuYSYmMD09PXQuYily ZXR1cm4gbmV3IFooTmFOLDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9w YWNpdHkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqTztyZXR1cm4gbmV3 IFooZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5s LHQub3BhY2l0eSl9ZnVuY3Rpb24gWCh0LGUscixuKXtyZXR1cm4gMT09PWFy Z3VtZW50cy5sZW5ndGg/Vyh0KTpuZXcgWih0LGUscixudWxsPT1uPzE6bil9 ZnVuY3Rpb24gWih0LGUscixuKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMu bD0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gSih0KXtpZihpc05hTih0 LmgpKXJldHVybiBuZXcgVSh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5o KlA7cmV0dXJuIG5ldyBVKHQubCxNYXRoLmNvcyhlKSp0LmMsTWF0aC5zaW4o ZSkqdC5jLHQub3BhY2l0eSl9ZShVLFYscihuLHticmlnaHRlcjpmdW5jdGlv bih0KXtyZXR1cm4gbmV3IFUodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhp cy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7 cmV0dXJuIG5ldyBVKHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0 aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRo aXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxy PWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyB3KEco My4xMzM4NTYxKihlPXoqSChlKSktMS42MTY4NjY3Kih0PUkqSCh0KSktLjQ5 MDYxNDYqKHI9RCpIKHIpKSksRygtLjk3ODc2ODQqZSsxLjkxNjE0MTUqdCsu MDMzNDU0KnIpLEcoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypy KSx0aGlzLm9wYWNpdHkpfX0pKSxlKFosWCxyKG4se2JyaWdodGVyOmZ1bmN0 aW9uKHQpe3JldHVybiBuZXcgWih0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoo bnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0 KXtyZXR1cm4gbmV3IFoodGhpcy5oLHRoaXMuYyx0aGlzLmwtMTgqKG51bGw9 PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4g Sih0aGlzKS5yZ2IoKX19KSk7dmFyIEs9LS4xNDg2MSxRPTEuNzgyNzcsJD0t LjI5MjI3LHR0PS0uOTA2NDksZXQ9MS45NzI5NCxydD1ldCp0dCxudD1ldCpR LGF0PVEqJC10dCpLO2Z1bmN0aW9uIGl0KHQsZSxyLG4pe3JldHVybiAxPT09 YXJndW1lbnRzLmxlbmd0aD9mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2Yg b3QpcmV0dXJuIG5ldyBvdCh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO3QgaW5z dGFuY2VvZiB3fHwodD1iKHQpKTt2YXIgZT10LnIvMjU1LHI9dC5nLzI1NSxu PXQuYi8yNTUsYT0oYXQqbitydCplLW50KnIpLyhhdCtydC1udCksaT1uLWEs bz0oZXQqKHItYSktJCppKS90dCxzPU1hdGguc3FydChvKm8raSppKS8oZXQq YSooMS1hKSksbD1zP01hdGguYXRhbjIobyxpKSpPLTEyMDpOYU47cmV0dXJu IG5ldyBvdChsPDA/bCszNjA6bCxzLGEsdC5vcGFjaXR5KX0odCk6bmV3IG90 KHQsZSxyLG51bGw9PW4/MTpuKX1mdW5jdGlvbiBvdCh0LGUscixuKXt0aGlz Lmg9K3QsdGhpcy5zPStlLHRoaXMubD0rcix0aGlzLm9wYWNpdHk9K259ZShv dCxpdCxyKG4se2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9 PXQ/MS8uNzpNYXRoLnBvdygxLy43LHQpLG5ldyBvdCh0aGlzLmgsdGhpcy5z LHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXty ZXR1cm4gdD1udWxsPT10Py43Ok1hdGgucG93KC43LHQpLG5ldyBvdCh0aGlz LmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlv bigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqUCxlPSt0 aGlzLmwscj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKmUqKDEtZSksbj1NYXRo LmNvcyh0KSxhPU1hdGguc2luKHQpO3JldHVybiBuZXcgdygyNTUqKGUrcioo SypuK1EqYSkpLDI1NSooZStyKigkKm4rdHQqYSkpLDI1NSooZStyKihldCpu KSksdGhpcy5vcGFjaXR5KX19KSksdC5jb2xvcj1tLHQuY3ViZWhlbGl4PWl0 LHQuZ3JheT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgVSh0LDAsMCxudWxs PT1lPzE6ZSl9LHQuaGNsPVgsdC5oc2w9RSx0LmxhYj1WLHQubGNoPWZ1bmN0 aW9uKHQsZSxyLG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9XKHQp Om5ldyBaKHIsZSx0LG51bGw9PW4/MTpuKX0sdC5yZ2I9XyxPYmplY3QuZGVm aW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KCJvYmpl Y3QiPT10eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP3I6KG49bnx8 c2VsZikuZDM9bi5kM3x8e30pfSx7fV0sMTU3OltmdW5jdGlvbih0LGUscil7 dmFyIG47bj10aGlzLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17 dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiByKCl7Zm9yKHZhciB0LGU9 MCxyPWFyZ3VtZW50cy5sZW5ndGgsYT17fTtlPHI7KytlKXtpZighKHQ9YXJn dW1lbnRzW2VdKyIiKXx8dCBpbiBhKXRocm93IG5ldyBFcnJvcigiaWxsZWdh bCB0eXBlOiAiK3QpO2FbdF09W119cmV0dXJuIG5ldyBuKGEpfWZ1bmN0aW9u IG4odCl7dGhpcy5fPXR9ZnVuY3Rpb24gYSh0LGUpe2Zvcih2YXIgcixuPTAs YT10Lmxlbmd0aDtuPGE7KytuKWlmKChyPXRbbl0pLm5hbWU9PT1lKXJldHVy biByLnZhbHVlfWZ1bmN0aW9uIGkodCxyLG4pe2Zvcih2YXIgYT0wLGk9dC5s ZW5ndGg7YTxpOysrYSlpZih0W2FdLm5hbWU9PT1yKXt0W2FdPWUsdD10LnNs aWNlKDAsYSkuY29uY2F0KHQuc2xpY2UoYSsxKSk7YnJlYWt9cmV0dXJuIG51 bGwhPW4mJnQucHVzaCh7bmFtZTpyLHZhbHVlOm59KSx0fW4ucHJvdG90eXBl PXIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpuLG9uOmZ1bmN0aW9uKHQsZSl7 dmFyIHIsbixvPXRoaXMuXyxzPShuPW8sKHQrIiIpLnRyaW0oKS5zcGxpdCgv XnxccysvKS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9IiIscj10LmluZGV4T2Yo Ii4iKTtpZihyPj0wJiYoZT10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikp LHQmJiFuLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5r bm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTplfX0pKSxsPS0x LGM9cy5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxs IT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImlu dmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2w8YzspaWYocj0odD1zW2xd KS50eXBlKW9bcl09aShvW3JdLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUp Zm9yKHIgaW4gbylvW3JdPWkob1tyXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRo aXN9Zm9yKDsrK2w8YzspaWYoKHI9KHQ9c1tsXSkudHlwZSkmJihyPWEob1ty XSx0Lm5hbWUpKSlyZXR1cm4gcn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9 LGU9dGhpcy5fO2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXS5zbGljZSgpO3Jl dHVybiBuZXcgbih0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChyPWFyZ3Vt ZW50cy5sZW5ndGgtMik+MClmb3IodmFyIHIsbixhPW5ldyBBcnJheShyKSxp PTA7aTxyOysraSlhW2ldPWFyZ3VtZW50c1tpKzJdO2lmKCF0aGlzLl8uaGFz T3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6 ICIrdCk7Zm9yKGk9MCxyPShuPXRoaXMuX1t0XSkubGVuZ3RoO2k8cjsrK2kp bltpXS52YWx1ZS5hcHBseShlLGEpfSxhcHBseTpmdW5jdGlvbih0LGUscil7 aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3Io InVua25vd24gdHlwZTogIit0KTtmb3IodmFyIG49dGhpcy5fW3RdLGE9MCxp PW4ubGVuZ3RoO2E8aTsrK2EpblthXS52YWx1ZS5hcHBseShlLHIpfX0sdC5k aXNwYXRjaD1yLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxl Iix7dmFsdWU6ITB9KX0oIm9iamVjdCI9PXR5cGVvZiByJiYidW5kZWZpbmVk IiE9dHlwZW9mIGU/cjpuLmQzPW4uZDN8fHt9KX0se31dLDE1ODpbZnVuY3Rp b24odCxlLHIpe3ZhciBuLGE7bj10aGlzLGE9ZnVuY3Rpb24odCxlLHIsbixh KXsidXNlIHN0cmljdCI7dmFyIGk9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0 aW9uKCl7cmV0dXJuIHR9fSxvPWZ1bmN0aW9uKCl7cmV0dXJuIDFlLTYqKE1h dGgucmFuZG9tKCktLjUpfTtmdW5jdGlvbiBzKHQpe3JldHVybiB0LngrdC52 eH1mdW5jdGlvbiBsKHQpe3JldHVybiB0LnkrdC52eX1mdW5jdGlvbiBjKHQp e3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIHUodCxlKXt2YXIgcj10LmdldChl KTtpZighcil0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrZSk7cmV0dXJu IHJ9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIGYodCl7cmV0 dXJuIHQueX12YXIgcD0xMCxkPU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTt0 LmZvcmNlQ2VudGVyPWZ1bmN0aW9uKHQsZSl7dmFyIHI7ZnVuY3Rpb24gbigp e3ZhciBuLGEsaT1yLmxlbmd0aCxvPTAscz0wO2ZvcihuPTA7bjxpOysrbilv Kz0oYT1yW25dKS54LHMrPWEueTtmb3Iobz1vL2ktdCxzPXMvaS1lLG49MDtu PGk7KytuKShhPXJbbl0pLngtPW8sYS55LT1zfXJldHVybiBudWxsPT10JiYo dD0wKSxudWxsPT1lJiYoZT0wKSxuLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7 cj10fSxuLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KHQ9K2Usbik6dH0sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhlPSt0LG4pOmV9LG59LHQuZm9yY2VDb2xsaWRlPWZ1bmN0aW9u KHQpe3ZhciByLG4sYT0xLGM9MTtmdW5jdGlvbiB1KCl7Zm9yKHZhciB0LGks dSxmLHAsZCxnLHY9ci5sZW5ndGgsbT0wO208YzsrK20pZm9yKGk9ZS5xdWFk dHJlZShyLHMsbCkudmlzaXRBZnRlcihoKSx0PTA7dDx2OysrdCl1PXJbdF0s ZD1uW3UuaW5kZXhdLGc9ZCpkLGY9dS54K3UudngscD11LnkrdS52eSxpLnZp c2l0KHkpO2Z1bmN0aW9uIHkodCxlLHIsbixpKXt2YXIgcz10LmRhdGEsbD10 LnIsYz1kK2w7aWYoIXMpcmV0dXJuIGU+ZitjfHxuPGYtY3x8cj5wK2N8fGk8 cC1jO2lmKHMuaW5kZXg+dS5pbmRleCl7dmFyIGg9Zi1zLngtcy52eCx2PXAt cy55LXMudnksbT1oKmgrdip2O208YypjJiYoMD09PWgmJihtKz0oaD1vKCkp KmgpLDA9PT12JiYobSs9KHY9bygpKSp2KSxtPShjLShtPU1hdGguc3FydCht KSkpL20qYSx1LnZ4Kz0oaCo9bSkqKGM9KGwqPWwpLyhnK2wpKSx1LnZ5Kz0o dio9bSkqYyxzLnZ4LT1oKihjPTEtYykscy52eS09dipjKX19fWZ1bmN0aW9u IGgodCl7aWYodC5kYXRhKXJldHVybiB0LnI9blt0LmRhdGEuaW5kZXhdO2Zv cih2YXIgZT10LnI9MDtlPDQ7KytlKXRbZV0mJnRbZV0ucj50LnImJih0LnI9 dFtlXS5yKX1mdW5jdGlvbiBmKCl7aWYocil7dmFyIGUsYSxpPXIubGVuZ3Ro O2ZvcihuPW5ldyBBcnJheShpKSxlPTA7ZTxpOysrZSlhPXJbZV0sblthLmlu ZGV4XT0rdChhLGUscil9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYo dD1pKG51bGw9PXQ/MTordCkpLHUuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXty PXQsZigpfSx1Lml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KGM9K3QsdSk6Y30sdS5zdHJlbmd0aD1mdW5jdGlvbih0 KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCx1KTphfSx1LnJhZGl1 cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVu Y3Rpb24iPT10eXBlb2YgZT9lOmkoK2UpLGYoKSx1KTp0fSx1fSx0LmZvcmNl TGluaz1mdW5jdGlvbih0KXt2YXIgZSxuLGEscyxsLGg9YyxmPWZ1bmN0aW9u KHQpe3JldHVybiAxL01hdGgubWluKHNbdC5zb3VyY2UuaW5kZXhdLHNbdC50 YXJnZXQuaW5kZXhdKX0scD1pKDMwKSxkPTE7ZnVuY3Rpb24gZyhyKXtmb3Io dmFyIGE9MCxpPXQubGVuZ3RoO2E8ZDsrK2EpZm9yKHZhciBzLGMsdSxoLGYs cCxnLHY9MDt2PGk7Kyt2KWM9KHM9dFt2XSkuc291cmNlLGg9KHU9cy50YXJn ZXQpLngrdS52eC1jLngtYy52eHx8bygpLGY9dS55K3UudnktYy55LWMudnl8 fG8oKSxoKj1wPSgocD1NYXRoLnNxcnQoaCpoK2YqZikpLW5bdl0pL3Aqcipl W3ZdLGYqPXAsdS52eC09aCooZz1sW3ZdKSx1LnZ5LT1mKmcsYy52eCs9aCoo Zz0xLWcpLGMudnkrPWYqZ31mdW5jdGlvbiB2KCl7aWYoYSl7dmFyIGksbyxj PWEubGVuZ3RoLGY9dC5sZW5ndGgscD1yLm1hcChhLGgpO2ZvcihpPTAscz1u ZXcgQXJyYXkoYyk7aTxmOysraSkobz10W2ldKS5pbmRleD1pLCJvYmplY3Qi IT10eXBlb2Ygby5zb3VyY2UmJihvLnNvdXJjZT11KHAsby5zb3VyY2UpKSwi b2JqZWN0IiE9dHlwZW9mIG8udGFyZ2V0JiYoby50YXJnZXQ9dShwLG8udGFy Z2V0KSksc1tvLnNvdXJjZS5pbmRleF09KHNbby5zb3VyY2UuaW5kZXhdfHww KSsxLHNbby50YXJnZXQuaW5kZXhdPShzW28udGFyZ2V0LmluZGV4XXx8MCkr MTtmb3IoaT0wLGw9bmV3IEFycmF5KGYpO2k8ZjsrK2kpbz10W2ldLGxbaV09 c1tvLnNvdXJjZS5pbmRleF0vKHNbby5zb3VyY2UuaW5kZXhdK3Nbby50YXJn ZXQuaW5kZXhdKTtlPW5ldyBBcnJheShmKSxtKCksbj1uZXcgQXJyYXkoZiks eSgpfX1mdW5jdGlvbiBtKCl7aWYoYSlmb3IodmFyIHI9MCxuPXQubGVuZ3Ro O3I8bjsrK3IpZVtyXT0rZih0W3JdLHIsdCl9ZnVuY3Rpb24geSgpe2lmKGEp Zm9yKHZhciBlPTAscj10Lmxlbmd0aDtlPHI7KytlKW5bZV09K3AodFtlXSxl LHQpfXJldHVybiBudWxsPT10JiYodD1bXSksZy5pbml0aWFsaXplPWZ1bmN0 aW9uKHQpe2E9dCx2KCl9LGcubGlua3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KHQ9ZSx2KCksZyk6dH0sZy5pZD1mdW5jdGlvbih0 KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD10LGcpOmh9LGcuaXRlcmF0 aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0r dCxnKTpkfSxnLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhmPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6aSgrdCksbSgp LGcpOmZ9LGcuZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KHA9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppKCt0KSx5KCks Zyk6cH0sZ30sdC5mb3JjZU1hbnlCb2R5PWZ1bmN0aW9uKCl7dmFyIHQscixu LGEscz1pKC0zMCksbD0xLGM9MS8wLHU9LjgxO2Z1bmN0aW9uIHAoYSl7dmFy IGksbz10Lmxlbmd0aCxzPWUucXVhZHRyZWUodCxoLGYpLnZpc2l0QWZ0ZXIo Zyk7Zm9yKG49YSxpPTA7aTxvOysraSlyPXRbaV0scy52aXNpdCh2KX1mdW5j dGlvbiBkKCl7aWYodCl7dmFyIGUscixuPXQubGVuZ3RoO2ZvcihhPW5ldyBB cnJheShuKSxlPTA7ZTxuOysrZSlyPXRbZV0sYVtyLmluZGV4XT0rcyhyLGUs dCl9fWZ1bmN0aW9uIGcodCl7dmFyIGUscixuLGksbyxzPTAsbD0wO2lmKHQu bGVuZ3RoKXtmb3Iobj1pPW89MDtvPDQ7KytvKShlPXRbb10pJiYocj1NYXRo LmFicyhlLnZhbHVlKSkmJihzKz1lLnZhbHVlLGwrPXIsbis9ciplLngsaSs9 ciplLnkpO3QueD1uL2wsdC55PWkvbH1lbHNleyhlPXQpLng9ZS5kYXRhLngs ZS55PWUuZGF0YS55O2Rve3MrPWFbZS5kYXRhLmluZGV4XX13aGlsZShlPWUu bmV4dCl9dC52YWx1ZT1zfWZ1bmN0aW9uIHYodCxlLGkscyl7aWYoIXQudmFs dWUpcmV0dXJuITA7dmFyIGg9dC54LXIueCxmPXQueS1yLnkscD1zLWUsZD1o KmgrZipmO2lmKHAqcC91PGQpcmV0dXJuIGQ8YyYmKDA9PT1oJiYoZCs9KGg9 bygpKSpoKSwwPT09ZiYmKGQrPShmPW8oKSkqZiksZDxsJiYoZD1NYXRoLnNx cnQobCpkKSksci52eCs9aCp0LnZhbHVlKm4vZCxyLnZ5Kz1mKnQudmFsdWUq bi9kKSwhMDtpZighKHQubGVuZ3RofHxkPj1jKSl7KHQuZGF0YSE9PXJ8fHQu bmV4dCkmJigwPT09aCYmKGQrPShoPW8oKSkqaCksMD09PWYmJihkKz0oZj1v KCkpKmYpLGQ8bCYmKGQ9TWF0aC5zcXJ0KGwqZCkpKTtkb3t0LmRhdGEhPT1y JiYocD1hW3QuZGF0YS5pbmRleF0qbi9kLHIudngrPWgqcCxyLnZ5Kz1mKnAp fXdoaWxlKHQ9dC5uZXh0KX19cmV0dXJuIHAuaW5pdGlhbGl6ZT1mdW5jdGlv bihlKXt0PWUsZCgpfSxwLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6aSgr dCksZCgpLHApOnN9LHAuZGlzdGFuY2VNaW49ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KGw9dCp0LHApOk1hdGguc3FydChsKX0scC5k aXN0YW5jZU1heD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0 aD8oYz10KnQscCk6TWF0aC5zcXJ0KGMpfSxwLnRoZXRhPWZ1bmN0aW9uKHQp e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQqdCxwKTpNYXRoLnNxcnQo dSl9LHB9LHQuZm9yY2VSYWRpYWw9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEs byxzPWkoLjEpO2Z1bmN0aW9uIGwodCl7Zm9yKHZhciBpPTAscz1uLmxlbmd0 aDtpPHM7KytpKXt2YXIgbD1uW2ldLGM9bC54LWV8fDFlLTYsdT1sLnktcnx8 MWUtNixoPU1hdGguc3FydChjKmMrdSp1KSxmPShvW2ldLWgpKmFbaV0qdC9o O2wudngrPWMqZixsLnZ5Kz11KmZ9fWZ1bmN0aW9uIGMoKXtpZihuKXt2YXIg ZSxyPW4ubGVuZ3RoO2ZvcihhPW5ldyBBcnJheShyKSxvPW5ldyBBcnJheShy KSxlPTA7ZTxyOysrZSlvW2VdPSt0KG5bZV0sZSxuKSxhW2VdPWlzTmFOKG9b ZV0pPzA6K3MobltlXSxlLG4pfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2Yg dCYmKHQ9aSgrdCkpLG51bGw9PWUmJihlPTApLG51bGw9PXImJihyPTApLGwu aW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtuPXQsYygpfSxsLnN0cmVuZ3RoPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlv biI9PXR5cGVvZiB0P3Q6aSgrdCksYygpLGwpOnN9LGwucmFkaXVzPWZ1bmN0 aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9 PXR5cGVvZiBlP2U6aSgrZSksYygpLGwpOnR9LGwueD1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxsKTplfSxsLnk9ZnVuY3Rp b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3QsbCk6cn0sbH0s dC5mb3JjZVNpbXVsYXRpb249ZnVuY3Rpb24odCl7dmFyIGUsaT0xLG89LjAw MSxzPTEtTWF0aC5wb3cobywxLzMwMCksbD0wLGM9LjYsdT1yLm1hcCgpLGg9 YS50aW1lcihnKSxmPW4uZGlzcGF0Y2goInRpY2siLCJlbmQiKTtmdW5jdGlv biBnKCl7digpLGYuY2FsbCgidGljayIsZSksaTxvJiYoaC5zdG9wKCksZi5j YWxsKCJlbmQiLGUpKX1mdW5jdGlvbiB2KCl7dmFyIGUscixuPXQubGVuZ3Ro O2ZvcihpKz0obC1pKSpzLHUuZWFjaChmdW5jdGlvbih0KXt0KGkpfSksZT0w O2U8bjsrK2UpbnVsbD09KHI9dFtlXSkuZng/ci54Kz1yLnZ4Kj1jOihyLng9 ci5meCxyLnZ4PTApLG51bGw9PXIuZnk/ci55Kz1yLnZ5Kj1jOihyLnk9ci5m eSxyLnZ5PTApfWZ1bmN0aW9uIG0oKXtmb3IodmFyIGUscj0wLG49dC5sZW5n dGg7cjxuOysrcil7aWYoKGU9dFtyXSkuaW5kZXg9cixpc05hTihlLngpfHxp c05hTihlLnkpKXt2YXIgYT1wKk1hdGguc3FydChyKSxpPXIqZDtlLng9YSpN YXRoLmNvcyhpKSxlLnk9YSpNYXRoLnNpbihpKX0oaXNOYU4oZS52eCl8fGlz TmFOKGUudnkpKSYmKGUudng9ZS52eT0wKX19ZnVuY3Rpb24geShlKXtyZXR1 cm4gZS5pbml0aWFsaXplJiZlLmluaXRpYWxpemUodCksZX1yZXR1cm4gbnVs bD09dCYmKHQ9W10pLG0oKSxlPXt0aWNrOnYscmVzdGFydDpmdW5jdGlvbigp e3JldHVybiBoLnJlc3RhcnQoZyksZX0sc3RvcDpmdW5jdGlvbigpe3JldHVy biBoLnN0b3AoKSxlfSxub2RlczpmdW5jdGlvbihyKXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8odD1yLG0oKSx1LmVhY2goeSksZSk6dH0sYWxwaGE6ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3QsZSk6aX0s YWxwaGFNaW46ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KG89K3QsZSk6b30sYWxwaGFEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8ocz0rdCxlKTorc30sYWxwaGFUYXJnZXQ6ZnVuY3Rp b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3QsZSk6bH0sdmVs b2NpdHlEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0 aD8oYz0xLXQsZSk6MS1jfSxmb3JjZTpmdW5jdGlvbih0LHIpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPjE/KG51bGw9PXI/dS5yZW1vdmUodCk6dS5zZXQo dCx5KHIpKSxlKTp1LmdldCh0KX0sZmluZDpmdW5jdGlvbihlLHIsbil7dmFy IGEsaSxvLHMsbCxjPTAsdT10Lmxlbmd0aDtmb3IobnVsbD09bj9uPTEvMDpu Kj1uLGM9MDtjPHU7KytjKShvPShhPWUtKHM9dFtjXSkueCkqYSsoaT1yLXMu eSkqaSk8biYmKGw9cyxuPW8pO3JldHVybiBsfSxvbjpmdW5jdGlvbih0LHIp e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KGYub24odCxyKSxlKTpmLm9u KHQpfX19LHQuZm9yY2VYPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhPWkoLjEp O2Z1bmN0aW9uIG8odCl7Zm9yKHZhciBhLGk9MCxvPWUubGVuZ3RoO2k8bzsr K2kpKGE9ZVtpXSkudngrPShuW2ldLWEueCkqcltpXSp0fWZ1bmN0aW9uIHMo KXtpZihlKXt2YXIgaSxvPWUubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShvKSxu PW5ldyBBcnJheShvKSxpPTA7aTxvOysraSlyW2ldPWlzTmFOKG5baV09K3Qo ZVtpXSxpLGUpKT8wOithKGVbaV0saSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9 dHlwZW9mIHQmJih0PWkobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1 bmN0aW9uKHQpe2U9dCxzKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ dDppKCt0KSxzKCksbyk6YX0sby54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6aSgrZSks cygpLG8pOnR9LG99LHQuZm9yY2VZPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixh PWkoLjEpO2Z1bmN0aW9uIG8odCl7Zm9yKHZhciBhLGk9MCxvPWUubGVuZ3Ro O2k8bzsrK2kpKGE9ZVtpXSkudnkrPShuW2ldLWEueSkqcltpXSp0fWZ1bmN0 aW9uIHMoKXtpZihlKXt2YXIgaSxvPWUubGVuZ3RoO2ZvcihyPW5ldyBBcnJh eShvKSxuPW5ldyBBcnJheShvKSxpPTA7aTxvOysraSlyW2ldPWlzTmFOKG5b aV09K3QoZVtpXSxpLGUpKT8wOithKGVbaV0saSxlKX19cmV0dXJuImZ1bmN0 aW9uIiE9dHlwZW9mIHQmJih0PWkobnVsbD09dD8wOit0KSksby5pbml0aWFs aXplPWZ1bmN0aW9uKHQpe2U9dCxzKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlw ZW9mIHQ/dDppKCt0KSxzKCksbyk6YX0sby55PWZ1bmN0aW9uKGUpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6 aSgrZSkscygpLG8pOnR9LG99LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJf X2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sIm9iamVjdCI9PXR5cGVvZiByJiYi dW5kZWZpbmVkIiE9dHlwZW9mIGU/YShyLHQoImQzLXF1YWR0cmVlIiksdCgi ZDMtY29sbGVjdGlvbiIpLHQoImQzLWRpc3BhdGNoIiksdCgiZDMtdGltZXIi KSk6YShuLmQzPW4uZDN8fHt9LG4uZDMsbi5kMyxuLmQzLG4uZDMpfSx7ImQz LWNvbGxlY3Rpb24iOjE1NSwiZDMtZGlzcGF0Y2giOjE1NywiZDMtcXVhZHRy ZWUiOjE2MiwiZDMtdGltZXIiOjE2NH1dLDE1OTpbZnVuY3Rpb24odCxlLHIp e3ZhciBuO249dGhpcyxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rp b24gZSh0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5j dGlvbiByKHQsZSl7cmV0dXJuIHQrZS54fWZ1bmN0aW9uIG4odCxlKXtyZXR1 cm4gTWF0aC5tYXgodCxlLnkpfWZ1bmN0aW9uIGEodCl7dmFyIGU9MCxyPXQu Y2hpbGRyZW4sbj1yJiZyLmxlbmd0aDtpZihuKWZvcig7LS1uPj0wOyllKz1y W25dLnZhbHVlO2Vsc2UgZT0xO3QudmFsdWU9ZX1mdW5jdGlvbiBpKHQsZSl7 dmFyIHIsbixhLGkscyx1PW5ldyBjKHQpLGg9K3QudmFsdWUmJih1LnZhbHVl PXQudmFsdWUpLGY9W3VdO2ZvcihudWxsPT1lJiYoZT1vKTtyPWYucG9wKCk7 KWlmKGgmJihyLnZhbHVlPStyLmRhdGEudmFsdWUpLChhPWUoci5kYXRhKSkm JihzPWEubGVuZ3RoKSlmb3Ioci5jaGlsZHJlbj1uZXcgQXJyYXkocyksaT1z LTE7aT49MDstLWkpZi5wdXNoKG49ci5jaGlsZHJlbltpXT1uZXcgYyhhW2ld KSksbi5wYXJlbnQ9cixuLmRlcHRoPXIuZGVwdGgrMTtyZXR1cm4gdS5lYWNo QmVmb3JlKGwpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQuY2hpbGRyZW59ZnVu Y3Rpb24gcyh0KXt0LmRhdGE9dC5kYXRhLmRhdGF9ZnVuY3Rpb24gbCh0KXt2 YXIgZT0wO2Rve3QuaGVpZ2h0PWV9d2hpbGUoKHQ9dC5wYXJlbnQpJiZ0Lmhl aWdodDwrK2UpfWZ1bmN0aW9uIGModCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0 aD10aGlzLmhlaWdodD0wLHRoaXMucGFyZW50PW51bGx9Yy5wcm90b3R5cGU9 aS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmMsY291bnQ6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoYSl9LGVhY2g6ZnVuY3Rpb24odCl7dmFy IGUscixuLGEsaT10aGlzLG89W2ldO2Rve2ZvcihlPW8ucmV2ZXJzZSgpLG89 W107aT1lLnBvcCgpOylpZih0KGkpLHI9aS5jaGlsZHJlbilmb3Iobj0wLGE9 ci5sZW5ndGg7bjxhOysrbilvLnB1c2gocltuXSl9d2hpbGUoby5sZW5ndGgp O3JldHVybiB0aGlzfSxlYWNoQWZ0ZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBl LHIsbixhPXRoaXMsaT1bYV0sbz1bXTthPWkucG9wKCk7KWlmKG8ucHVzaChh KSxlPWEuY2hpbGRyZW4pZm9yKHI9MCxuPWUubGVuZ3RoO3I8bjsrK3IpaS5w dXNoKGVbcl0pO2Zvcig7YT1vLnBvcCgpOyl0KGEpO3JldHVybiB0aGlzfSxl YWNoQmVmb3JlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyLG49dGhpcyxhPVtu XTtuPWEucG9wKCk7KWlmKHQobiksZT1uLmNoaWxkcmVuKWZvcihyPWUubGVu Z3RoLTE7cj49MDstLXIpYS5wdXNoKGVbcl0pO3JldHVybiB0aGlzfSxzdW06 ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKGZ1bmN0aW9uKGUp e2Zvcih2YXIgcj0rdChlLmRhdGEpfHwwLG49ZS5jaGlsZHJlbixhPW4mJm4u bGVuZ3RoOy0tYT49MDspcis9blthXS52YWx1ZTtlLnZhbHVlPXJ9KX0sc29y dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9u KGUpe2UuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc29ydCh0KX0pfSxwYXRoOmZ1 bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLHI9ZnVuY3Rpb24odCxlKXtpZih0 PT09ZSlyZXR1cm4gdDt2YXIgcj10LmFuY2VzdG9ycygpLG49ZS5hbmNlc3Rv cnMoKSxhPW51bGw7Zm9yKHQ9ci5wb3AoKSxlPW4ucG9wKCk7dD09PWU7KWE9 dCx0PXIucG9wKCksZT1uLnBvcCgpO3JldHVybiBhfShlLHQpLG49W2VdO2Uh PT1yOyllPWUucGFyZW50LG4ucHVzaChlKTtmb3IodmFyIGE9bi5sZW5ndGg7 dCE9PXI7KW4uc3BsaWNlKGEsMCx0KSx0PXQucGFyZW50O3JldHVybiBufSxh bmNlc3RvcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPVt0XTt0PXQu cGFyZW50OyllLnB1c2godCk7cmV0dXJuIGV9LGRlc2NlbmRhbnRzOmZ1bmN0 aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXt0 LnB1c2goZSl9KSx0fSxsZWF2ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1 cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW58fHQu cHVzaChlKX0pLHR9LGxpbmtzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPVtd O3JldHVybiB0LmVhY2goZnVuY3Rpb24ocil7ciE9PXQmJmUucHVzaCh7c291 cmNlOnIucGFyZW50LHRhcmdldDpyfSl9KSxlfSxjb3B5OmZ1bmN0aW9uKCl7 cmV0dXJuIGkodGhpcykuZWFjaEJlZm9yZShzKX19O3ZhciB1PUFycmF5LnBy b3RvdHlwZS5zbGljZTtmdW5jdGlvbiBoKHQpe2Zvcih2YXIgZSxyLG49MCxh PSh0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyLG49dC5sZW5ndGg7bjspcj1N YXRoLnJhbmRvbSgpKm4tLXwwLGU9dFtuXSx0W25dPXRbcl0sdFtyXT1lO3Jl dHVybiB0fSh1LmNhbGwodCkpKS5sZW5ndGgsaT1bXTtuPGE7KWU9dFtuXSxy JiZkKHIsZSk/KytuOihyPXYoaT1mKGksZSkpLG49MCk7cmV0dXJuIHJ9ZnVu Y3Rpb24gZih0LGUpe3ZhciByLG47aWYoZyhlLHQpKXJldHVybltlXTtmb3Io cj0wO3I8dC5sZW5ndGg7KytyKWlmKHAoZSx0W3JdKSYmZyhtKHRbcl0sZSks dCkpcmV0dXJuW3Rbcl0sZV07Zm9yKHI9MDtyPHQubGVuZ3RoLTE7KytyKWZv cihuPXIrMTtuPHQubGVuZ3RoOysrbilpZihwKG0odFtyXSx0W25dKSxlKSYm cChtKHRbcl0sZSksdFtuXSkmJnAobSh0W25dLGUpLHRbcl0pJiZnKHkodFty XSx0W25dLGUpLHQpKXJldHVyblt0W3JdLHRbbl0sZV07dGhyb3cgbmV3IEVy cm9yfWZ1bmN0aW9uIHAodCxlKXt2YXIgcj10LnItZS5yLG49ZS54LXQueCxh PWUueS10Lnk7cmV0dXJuIHI8MHx8cipyPG4qbithKmF9ZnVuY3Rpb24gZCh0 LGUpe3ZhciByPXQuci1lLnIrMWUtNixuPWUueC10LngsYT1lLnktdC55O3Jl dHVybiByPjAmJnIqcj5uKm4rYSphfWZ1bmN0aW9uIGcodCxlKXtmb3IodmFy IHI9MDtyPGUubGVuZ3RoOysrcilpZighZCh0LGVbcl0pKXJldHVybiExO3Jl dHVybiEwfWZ1bmN0aW9uIHYodCl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6 cmV0dXJue3g6KGU9dFswXSkueCx5OmUueSxyOmUucn07Y2FzZSAyOnJldHVy biBtKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiB5KHRbMF0sdFsxXSx0WzJd KX12YXIgZX1mdW5jdGlvbiBtKHQsZSl7dmFyIHI9dC54LG49dC55LGE9dC5y LGk9ZS54LG89ZS55LHM9ZS5yLGw9aS1yLGM9by1uLHU9cy1hLGg9TWF0aC5z cXJ0KGwqbCtjKmMpO3JldHVybnt4OihyK2krbC9oKnUpLzIseToobitvK2Mv aCp1KS8yLHI6KGgrYStzKS8yfX1mdW5jdGlvbiB5KHQsZSxyKXt2YXIgbj10 LngsYT10LnksaT10LnIsbz1lLngscz1lLnksbD1lLnIsYz1yLngsdT1yLnks aD1yLnIsZj1uLW8scD1uLWMsZD1hLXMsZz1hLXUsdj1sLWksbT1oLWkseT1u Km4rYSphLWkqaSx4PXktbypvLXMqcytsKmwsYj15LWMqYy11KnUraCpoLF89 cCpkLWYqZyx3PShkKmItZyp4KS8oMipfKS1uLGs9KGcqdi1kKm0pL18sVD0o cCp4LWYqYikvKDIqXyktYSxNPShmKm0tcCp2KS9fLEE9ayprK00qTS0xLFM9 MiooaSt3KmsrVCpNKSxFPXcqdytUKlQtaSppLEw9LShBPyhTK01hdGguc3Fy dChTKlMtNCpBKkUpKS8oMipBKTpFL1MpO3JldHVybnt4Om4rdytrKkwseTph K1QrTSpMLHI6TH19ZnVuY3Rpb24geCh0LGUscil7dmFyIG4sYSxpLG8scz10 LngtZS54LGw9dC55LWUueSxjPXMqcytsKmw7Yz8oYT1lLnIrci5yLGEqPWEs bz10LnIrci5yLGE+KG8qPW8pPyhuPShjK28tYSkvKDIqYyksaT1NYXRoLnNx cnQoTWF0aC5tYXgoMCxvL2MtbipuKSksci54PXQueC1uKnMtaSpsLHIueT10 LnktbipsK2kqcyk6KG49KGMrYS1vKS8oMipjKSxpPU1hdGguc3FydChNYXRo Lm1heCgwLGEvYy1uKm4pKSxyLng9ZS54K24qcy1pKmwsci55PWUueStuKmwr aSpzKSk6KHIueD1lLngrci5yLHIueT1lLnkpfWZ1bmN0aW9uIGIodCxlKXt2 YXIgcj10LnIrZS5yLTFlLTYsbj1lLngtdC54LGE9ZS55LXQueTtyZXR1cm4g cj4wJiZyKnI+bipuK2EqYX1mdW5jdGlvbiBfKHQpe3ZhciBlPXQuXyxyPXQu bmV4dC5fLG49ZS5yK3IucixhPShlLngqci5yK3IueCplLnIpL24saT0oZS55 KnIucityLnkqZS5yKS9uO3JldHVybiBhKmEraSppfWZ1bmN0aW9uIHcodCl7 dGhpcy5fPXQsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1 bmN0aW9uIGsodCl7aWYoIShhPXQubGVuZ3RoKSlyZXR1cm4gMDt2YXIgZSxy LG4sYSxpLG8scyxsLGMsdSxmO2lmKChlPXRbMF0pLng9MCxlLnk9MCwhKGE+ MSkpcmV0dXJuIGUucjtpZihyPXRbMV0sZS54PS1yLnIsci54PWUucixyLnk9 MCwhKGE+MikpcmV0dXJuIGUucityLnI7eChyLGUsbj10WzJdKSxlPW5ldyB3 KGUpLHI9bmV3IHcociksbj1uZXcgdyhuKSxlLm5leHQ9bi5wcmV2aW91cz1y LHIubmV4dD1lLnByZXZpb3VzPW4sbi5uZXh0PXIucHJldmlvdXM9ZTt0OmZv cihzPTM7czxhOysrcyl7eChlLl8sci5fLG49dFtzXSksbj1uZXcgdyhuKSxs PXIubmV4dCxjPWUucHJldmlvdXMsdT1yLl8ucixmPWUuXy5yO2Rve2lmKHU8 PWYpe2lmKGIobC5fLG4uXykpe3I9bCxlLm5leHQ9cixyLnByZXZpb3VzPWUs LS1zO2NvbnRpbnVlIHR9dSs9bC5fLnIsbD1sLm5leHR9ZWxzZXtpZihiKGMu XyxuLl8pKXsoZT1jKS5uZXh0PXIsci5wcmV2aW91cz1lLC0tcztjb250aW51 ZSB0fWYrPWMuXy5yLGM9Yy5wcmV2aW91c319d2hpbGUobCE9PWMubmV4dCk7 Zm9yKG4ucHJldmlvdXM9ZSxuLm5leHQ9cixlLm5leHQ9ci5wcmV2aW91cz1y PW4saT1fKGUpOyhuPW4ubmV4dCkhPT1yOykobz1fKG4pKTxpJiYoZT1uLGk9 byk7cj1lLm5leHR9Zm9yKGU9W3IuX10sbj1yOyhuPW4ubmV4dCkhPT1yOyll LnB1c2gobi5fKTtmb3Iobj1oKGUpLHM9MDtzPGE7KytzKShlPXRbc10pLngt PW4ueCxlLnktPW4ueTtyZXR1cm4gbi5yfWZ1bmN0aW9uIFQodCl7aWYoImZ1 bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0fWZ1 bmN0aW9uIE0oKXtyZXR1cm4gMH1mdW5jdGlvbiBBKHQpe3JldHVybiBmdW5j dGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBTKHQpe3JldHVybiBNYXRoLnNx cnQodC52YWx1ZSl9ZnVuY3Rpb24gRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7 ZS5jaGlsZHJlbnx8KGUucj1NYXRoLm1heCgwLCt0KGUpfHwwKSl9fWZ1bmN0 aW9uIEwodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7aWYobj1yLmNoaWxkcmVu KXt2YXIgbixhLGksbz1uLmxlbmd0aCxzPXQocikqZXx8MDtpZihzKWZvcihh PTA7YTxvOysrYSluW2FdLnIrPXM7aWYoaT1rKG4pLHMpZm9yKGE9MDthPG87 KythKW5bYV0uci09cztyLnI9aStzfX19ZnVuY3Rpb24gQyh0KXtyZXR1cm4g ZnVuY3Rpb24oZSl7dmFyIHI9ZS5wYXJlbnQ7ZS5yKj10LHImJihlLng9ci54 K3QqZS54LGUueT1yLnkrdCplLnkpfX1mdW5jdGlvbiBQKHQpe3QueDA9TWF0 aC5yb3VuZCh0LngwKSx0LnkwPU1hdGgucm91bmQodC55MCksdC54MT1NYXRo LnJvdW5kKHQueDEpLHQueTE9TWF0aC5yb3VuZCh0LnkxKX1mdW5jdGlvbiBP KHQsZSxyLG4sYSl7Zm9yKHZhciBpLG89dC5jaGlsZHJlbixzPS0xLGw9by5s ZW5ndGgsYz10LnZhbHVlJiYobi1lKS90LnZhbHVlOysrczxsOykoaT1vW3Nd KS55MD1yLGkueTE9YSxpLngwPWUsaS54MT1lKz1pLnZhbHVlKmN9dmFyIHo9 IiQiLEk9e2RlcHRoOi0xfSxEPXt9O2Z1bmN0aW9uIFIodCl7cmV0dXJuIHQu aWR9ZnVuY3Rpb24gRih0KXtyZXR1cm4gdC5wYXJlbnRJZH1mdW5jdGlvbiBC KHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9u IE4odCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lWzBdOnQudH1mdW5j dGlvbiBqKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVtlLmxlbmd0 aC0xXTp0LnR9ZnVuY3Rpb24gVih0LGUscil7dmFyIG49ci8oZS5pLXQuaSk7 ZS5jLT1uLGUucys9cix0LmMrPW4sZS56Kz1yLGUubSs9cn1mdW5jdGlvbiBV KHQsZSxyKXtyZXR1cm4gdC5hLnBhcmVudD09PWUucGFyZW50P3QuYTpyfWZ1 bmN0aW9uIHEodCxlKXt0aGlzLl89dCx0aGlzLnBhcmVudD1udWxsLHRoaXMu Y2hpbGRyZW49bnVsbCx0aGlzLkE9bnVsbCx0aGlzLmE9dGhpcyx0aGlzLno9 MCx0aGlzLm09MCx0aGlzLmM9MCx0aGlzLnM9MCx0aGlzLnQ9bnVsbCx0aGlz Lmk9ZX1mdW5jdGlvbiBIKHQsZSxyLG4sYSl7Zm9yKHZhciBpLG89dC5jaGls ZHJlbixzPS0xLGw9by5sZW5ndGgsYz10LnZhbHVlJiYoYS1yKS90LnZhbHVl OysrczxsOykoaT1vW3NdKS54MD1lLGkueDE9bixpLnkwPXIsaS55MT1yKz1p LnZhbHVlKmN9cS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjLnByb3RvdHlw ZSk7dmFyIEc9KDErTWF0aC5zcXJ0KDUpKS8yO2Z1bmN0aW9uIFkodCxlLHIs bixhLGkpe2Zvcih2YXIgbyxzLGwsYyx1LGgsZixwLGQsZyx2LG09W10seT1l LmNoaWxkcmVuLHg9MCxiPTAsXz15Lmxlbmd0aCx3PWUudmFsdWU7eDxfOyl7 bD1hLXIsYz1pLW47ZG97dT15W2IrK10udmFsdWV9d2hpbGUoIXUmJmI8Xyk7 Zm9yKGg9Zj11LHY9dSp1KihnPU1hdGgubWF4KGMvbCxsL2MpLyh3KnQpKSxk PU1hdGgubWF4KGYvdix2L2gpO2I8XzsrK2Ipe2lmKHUrPXM9eVtiXS52YWx1 ZSxzPGgmJihoPXMpLHM+ZiYmKGY9cyksdj11KnUqZywocD1NYXRoLm1heChm L3Ysdi9oKSk+ZCl7dS09czticmVha31kPXB9bS5wdXNoKG89e3ZhbHVlOnUs ZGljZTpsPGMsY2hpbGRyZW46eS5zbGljZSh4LGIpfSksby5kaWNlP08obyxy LG4sYSx3P24rPWMqdS93OmkpOkgobyxyLG4sdz9yKz1sKnUvdzphLGkpLHct PXUseD1ifXJldHVybiBtfXZhciBXPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24g cih0LHIsbixhLGkpe1koZSx0LHIsbixhLGkpfXJldHVybiByLnJhdGlvPWZ1 bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LHJ9KEcpLFg9ZnVu Y3Rpb24gdChlKXtmdW5jdGlvbiByKHQscixuLGEsaSl7aWYoKG89dC5fc3F1 YXJpZnkpJiZvLnJhdGlvPT09ZSlmb3IodmFyIG8scyxsLGMsdSxoPS0xLGY9 by5sZW5ndGgscD10LnZhbHVlOysraDxmOyl7Zm9yKGw9KHM9b1toXSkuY2hp bGRyZW4sYz1zLnZhbHVlPTAsdT1sLmxlbmd0aDtjPHU7KytjKXMudmFsdWUr PWxbY10udmFsdWU7cy5kaWNlP08ocyxyLG4sYSxuKz0oaS1uKSpzLnZhbHVl L3ApOkgocyxyLG4scis9KGEtcikqcy52YWx1ZS9wLGkpLHAtPXMudmFsdWV9 ZWxzZSB0Ll9zcXVhcmlmeT1vPVkoZSx0LHIsbixhLGkpLG8ucmF0aW89ZX1y ZXR1cm4gci5yYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9l OjEpfSxyfShHKTt0LmNsdXN0ZXI9ZnVuY3Rpb24oKXt2YXIgdD1lLGE9MSxp PTEsbz0hMTtmdW5jdGlvbiBzKGUpe3ZhciBzLGw9MDtlLmVhY2hBZnRlcihm dW5jdGlvbihlKXt2YXIgYT1lLmNoaWxkcmVuO2E/KGUueD1mdW5jdGlvbih0 KXtyZXR1cm4gdC5yZWR1Y2UociwwKS90Lmxlbmd0aH0oYSksZS55PWZ1bmN0 aW9uKHQpe3JldHVybiAxK3QucmVkdWNlKG4sMCl9KGEpKTooZS54PXM/bCs9 dChlLHMpOjAsZS55PTAscz1lKX0pO3ZhciBjPWZ1bmN0aW9uKHQpe2Zvcih2 YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVswXTtyZXR1cm4gdH0oZSksdT1mdW5j dGlvbih0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbZS5sZW5ndGgt MV07cmV0dXJuIHR9KGUpLGg9Yy54LXQoYyx1KS8yLGY9dS54K3QodSxjKS8y O3JldHVybiBlLmVhY2hBZnRlcihvP2Z1bmN0aW9uKHQpe3QueD0odC54LWUu eCkqYSx0Lnk9KGUueS10LnkpKml9OmZ1bmN0aW9uKHQpe3QueD0odC54LWgp LyhmLWgpKmEsdC55PSgxLShlLnk/dC55L2UueToxKSkqaX0pfXJldHVybiBz LnNlcGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KHQ9ZSxzKTp0fSxzLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KG89ITEsYT0rdFswXSxpPSt0WzFdLHMpOm8/bnVsbDpb YSxpXX0scy5ub2RlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8obz0hMCxhPSt0WzBdLGk9K3RbMV0scyk6bz9bYSxpXTpudWxs fSxzfSx0LmhpZXJhcmNoeT1pLHQucGFjaz1mdW5jdGlvbigpe3ZhciB0PW51 bGwsZT0xLHI9MSxuPU07ZnVuY3Rpb24gYShhKXtyZXR1cm4gYS54PWUvMixh Lnk9ci8yLHQ/YS5lYWNoQmVmb3JlKEUodCkpLmVhY2hBZnRlcihMKG4sLjUp KS5lYWNoQmVmb3JlKEMoMSkpOmEuZWFjaEJlZm9yZShFKFMpKS5lYWNoQWZ0 ZXIoTChNLDEpKS5lYWNoQWZ0ZXIoTChuLGEuci9NYXRoLm1pbihlLHIpKSku ZWFjaEJlZm9yZShDKE1hdGgubWluKGUscikvKDIqYS5yKSkpLGF9cmV0dXJu IGEucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro Pyh0PW51bGw9PShyPWUpP251bGw6VChyKSxhKTp0O3ZhciByfSxhLnNpemU9 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0s cj0rdFsxXSxhKTpbZSxyXX0sYS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6 QSgrdCksYSk6bn0sYX0sdC5wYWNrRW5jbG9zZT1oLHQucGFja1NpYmxpbmdz PWZ1bmN0aW9uKHQpe3JldHVybiBrKHQpLHR9LHQucGFydGl0aW9uPWZ1bmN0 aW9uKCl7dmFyIHQ9MSxlPTEscj0wLG49ITE7ZnVuY3Rpb24gYShhKXt2YXIg aT1hLmhlaWdodCsxO3JldHVybiBhLngwPWEueTA9cixhLngxPXQsYS55MT1l L2ksYS5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9u KG4pe24uY2hpbGRyZW4mJk8obixuLngwLHQqKG4uZGVwdGgrMSkvZSxuLngx LHQqKG4uZGVwdGgrMikvZSk7dmFyIGE9bi54MCxpPW4ueTAsbz1uLngxLXIs cz1uLnkxLXI7bzxhJiYoYT1vPShhK28pLzIpLHM8aSYmKGk9cz0oaStzKS8y KSxuLngwPWEsbi55MD1pLG4ueDE9byxuLnkxPXN9fShlLGkpKSxuJiZhLmVh Y2hCZWZvcmUoUCksYX1yZXR1cm4gYS5yb3VuZD1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hIXQsYSk6bn0sYS5zaXplPWZ1bmN0 aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStyWzBdLGU9K3Jb MV0sYSk6W3QsZV19LGEucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8ocj0rdCxhKTpyfSxhfSx0LnN0cmF0aWZ5PWZ1bmN0 aW9uKCl7dmFyIHQ9UixlPUY7ZnVuY3Rpb24gcihyKXt2YXIgbixhLGksbyxz LHUsaCxmPXIubGVuZ3RoLHA9bmV3IEFycmF5KGYpLGQ9e307Zm9yKGE9MDth PGY7KythKW49clthXSxzPXBbYV09bmV3IGMobiksbnVsbCE9KHU9dChuLGEs cikpJiYodSs9IiIpJiYoZFtoPXorKHMuaWQ9dSldPWggaW4gZD9EOnMpO2Zv cihhPTA7YTxmOysrYSlpZihzPXBbYV0sbnVsbCE9KHU9ZShyW2FdLGEscikp JiYodSs9IiIpKXtpZighKG89ZFt6K3VdKSl0aHJvdyBuZXcgRXJyb3IoIm1p c3Npbmc6ICIrdSk7aWYobz09PUQpdGhyb3cgbmV3IEVycm9yKCJhbWJpZ3Vv dXM6ICIrdSk7by5jaGlsZHJlbj9vLmNoaWxkcmVuLnB1c2gocyk6by5jaGls ZHJlbj1bc10scy5wYXJlbnQ9b31lbHNle2lmKGkpdGhyb3cgbmV3IEVycm9y KCJtdWx0aXBsZSByb290cyIpO2k9c31pZighaSl0aHJvdyBuZXcgRXJyb3Io Im5vIHJvb3QiKTtpZihpLnBhcmVudD1JLGkuZWFjaEJlZm9yZShmdW5jdGlv bih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS1mfSkuZWFjaEJlZm9y ZShsKSxpLnBhcmVudD1udWxsLGY+MCl0aHJvdyBuZXcgRXJyb3IoImN5Y2xl Iik7cmV0dXJuIGl9cmV0dXJuIHIuaWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KHQ9VChlKSxyKTp0fSxyLnBhcmVudElkPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPVQodCkscik6ZX0s cn0sdC50cmVlPWZ1bmN0aW9uKCl7dmFyIHQ9QixlPTEscj0xLG49bnVsbDtm dW5jdGlvbiBhKGEpe3ZhciBsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyLG4s YSxpLG89bmV3IHEodCwwKSxzPVtvXTtlPXMucG9wKCk7KWlmKG49ZS5fLmNo aWxkcmVuKWZvcihlLmNoaWxkcmVuPW5ldyBBcnJheShpPW4ubGVuZ3RoKSxh PWktMTthPj0wOy0tYSlzLnB1c2gocj1lLmNoaWxkcmVuW2FdPW5ldyBxKG5b YV0sYSkpLHIucGFyZW50PWU7cmV0dXJuKG8ucGFyZW50PW5ldyBxKG51bGws MCkpLmNoaWxkcmVuPVtvXSxvfShhKTtpZihsLmVhY2hBZnRlcihpKSxsLnBh cmVudC5tPS1sLnosbC5lYWNoQmVmb3JlKG8pLG4pYS5lYWNoQmVmb3JlKHMp O2Vsc2V7dmFyIGM9YSx1PWEsaD1hO2EuZWFjaEJlZm9yZShmdW5jdGlvbih0 KXt0Lng8Yy54JiYoYz10KSx0Lng+dS54JiYodT10KSx0LmRlcHRoPmguZGVw dGgmJihoPXQpfSk7dmFyIGY9Yz09PXU/MTp0KGMsdSkvMixwPWYtYy54LGQ9 ZS8odS54K2YrcCksZz1yLyhoLmRlcHRofHwxKTthLmVhY2hCZWZvcmUoZnVu Y3Rpb24odCl7dC54PSh0LngrcCkqZCx0Lnk9dC5kZXB0aCpnfSl9cmV0dXJu IGF9ZnVuY3Rpb24gaShlKXt2YXIgcj1lLmNoaWxkcmVuLG49ZS5wYXJlbnQu Y2hpbGRyZW4sYT1lLmk/bltlLmktMV06bnVsbDtpZihyKXshZnVuY3Rpb24o dCl7Zm9yKHZhciBlLHI9MCxuPTAsYT10LmNoaWxkcmVuLGk9YS5sZW5ndGg7 LS1pPj0wOykoZT1hW2ldKS56Kz1yLGUubSs9cixyKz1lLnMrKG4rPWUuYyl9 KGUpO3ZhciBpPShyWzBdLnorcltyLmxlbmd0aC0xXS56KS8yO2E/KGUuej1h LnordChlLl8sYS5fKSxlLm09ZS56LWkpOmUuej1pfWVsc2UgYSYmKGUuej1h LnordChlLl8sYS5fKSk7ZS5wYXJlbnQuQT1mdW5jdGlvbihlLHIsbil7aWYo cil7Zm9yKHZhciBhLGk9ZSxvPWUscz1yLGw9aS5wYXJlbnQuY2hpbGRyZW5b MF0sYz1pLm0sdT1vLm0saD1zLm0sZj1sLm07cz1qKHMpLGk9TihpKSxzJiZp OylsPU4obCksKG89aihvKSkuYT1lLChhPXMueitoLWkuei1jK3Qocy5fLGku XykpPjAmJihWKFUocyxlLG4pLGUsYSksYys9YSx1Kz1hKSxoKz1zLm0sYys9 aS5tLGYrPWwubSx1Kz1vLm07cyYmIWoobykmJihvLnQ9cyxvLm0rPWgtdSks aSYmIU4obCkmJihsLnQ9aSxsLm0rPWMtZixuPWUpfXJldHVybiBufShlLGEs ZS5wYXJlbnQuQXx8blswXSl9ZnVuY3Rpb24gbyh0KXt0Ll8ueD10LnordC5w YXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gcyh0KXt0LngqPWUs dC55PXQuZGVwdGgqcn1yZXR1cm4gYS5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUp e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6dH0sYS5zaXplPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSExLGU9K3Rb MF0scj0rdFsxXSxhKTpuP251bGw6W2Uscl19LGEubm9kZVNpemU9ZnVuY3Rp b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ITAsZT0rdFswXSxy PSt0WzFdLGEpOm4/W2Uscl06bnVsbH0sYX0sdC50cmVlbWFwPWZ1bmN0aW9u KCl7dmFyIHQ9VyxlPSExLHI9MSxuPTEsYT1bMF0saT1NLG89TSxzPU0sbD1N LGM9TTtmdW5jdGlvbiB1KHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPXIs dC55MT1uLHQuZWFjaEJlZm9yZShoKSxhPVswXSxlJiZ0LmVhY2hCZWZvcmUo UCksdH1mdW5jdGlvbiBoKGUpe3ZhciByPWFbZS5kZXB0aF0sbj1lLngwK3Is dT1lLnkwK3IsaD1lLngxLXIsZj1lLnkxLXI7aDxuJiYobj1oPShuK2gpLzIp LGY8dSYmKHU9Zj0odStmKS8yKSxlLngwPW4sZS55MD11LGUueDE9aCxlLnkx PWYsZS5jaGlsZHJlbiYmKHI9YVtlLmRlcHRoKzFdPWkoZSkvMixuKz1jKGUp LXIsdSs9byhlKS1yLChoLT1zKGUpLXIpPG4mJihuPWg9KG4raCkvMiksKGYt PWwoZSktcik8dSYmKHU9Zj0odStmKS8yKSx0KGUsbix1LGgsZikpfXJldHVy biB1LnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro PyhlPSEhdCx1KTplfSx1LnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KHI9K3RbMF0sbj0rdFsxXSx1KTpbcixuXX0sdS50aWxl PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PVQoZSks dSk6dH0sdS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoP3UucGFkZGluZ0lubmVyKHQpLnBhZGRpbmdPdXRlcih0KTp1LnBh ZGRpbmdJbm5lcigpfSx1LnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90 OkEoK3QpLHUpOml9LHUucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ1RvcCh0KS5wYWRkaW5nUmln aHQodCkucGFkZGluZ0JvdHRvbSh0KS5wYWRkaW5nTGVmdCh0KTp1LnBhZGRp bmdUb3AoKX0sdS5wYWRkaW5nVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QSgrdCks dSk6b30sdS5wYWRkaW5nUmlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBKCt0KSx1 KTpzfSx1LnBhZGRpbmdCb3R0b209ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBKCt0KSx1 KTpsfSx1LnBhZGRpbmdMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QSgrdCksdSk6 Y30sdX0sdC50cmVlbWFwQmluYXJ5PWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFy IGksbyxzPXQuY2hpbGRyZW4sbD1zLmxlbmd0aCxjPW5ldyBBcnJheShsKzEp O2ZvcihjWzBdPW89aT0wO2k8bDsrK2kpY1tpKzFdPW8rPXNbaV0udmFsdWU7 IWZ1bmN0aW9uIHQoZSxyLG4sYSxpLG8sbCl7aWYoZT49ci0xKXt2YXIgdT1z W2VdO3JldHVybiB1LngwPWEsdS55MD1pLHUueDE9byx2b2lkKHUueTE9bCl9 Zm9yKHZhciBoPWNbZV0sZj1uLzIraCxwPWUrMSxkPXItMTtwPGQ7KXt2YXIg Zz1wK2Q+Pj4xO2NbZ108Zj9wPWcrMTpkPWd9Zi1jW3AtMV08Y1twXS1mJiZl KzE8cCYmLS1wO3ZhciB2PWNbcF0taCxtPW4tdjtpZihvLWE+bC1pKXt2YXIg eT0oYSptK28qdikvbjt0KGUscCx2LGEsaSx5LGwpLHQocCxyLG0seSxpLG8s bCl9ZWxzZXt2YXIgeD0oaSptK2wqdikvbjt0KGUscCx2LGEsaSxvLHgpLHQo cCxyLG0sYSx4LG8sbCl9fSgwLGwsdC52YWx1ZSxlLHIsbixhKX0sdC50cmVl bWFwRGljZT1PLHQudHJlZW1hcFJlc3F1YXJpZnk9WCx0LnRyZWVtYXBTbGlj ZT1ILHQudHJlZW1hcFNsaWNlRGljZT1mdW5jdGlvbih0LGUscixuLGEpeygx JnQuZGVwdGg/SDpPKSh0LGUscixuLGEpfSx0LnRyZWVtYXBTcXVhcmlmeT1X LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6 ITB9KX0oIm9iamVjdCI9PXR5cGVvZiByJiYidW5kZWZpbmVkIiE9dHlwZW9m IGU/cjoobj1ufHxzZWxmKS5kMz1uLmQzfHx7fSl9LHt9XSwxNjA6W2Z1bmN0 aW9uKHQsZSxyKXt2YXIgbixhO249dGhpcyxhPWZ1bmN0aW9uKHQsZSl7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIHIodCxlLHIsbixhKXt2YXIgaT10KnQsbz1p KnQ7cmV0dXJuKCgxLTMqdCszKmktbykqZSsoNC02KmkrMypvKSpyKygxKzMq dCszKmktMypvKSpuK28qYSkvNn1mdW5jdGlvbiBuKHQpe3ZhciBlPXQubGVu Z3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBhPW48PTA/bj0wOm4+PTE/ KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxpPXRbYV0sbz10W2ErMV0scz1h PjA/dFthLTFdOjIqaS1vLGw9YTxlLTE/dFthKzJdOjIqby1pO3JldHVybiBy KChuLWEvZSkqZSxzLGksbyxsKX19ZnVuY3Rpb24gYSh0KXt2YXIgZT10Lmxl bmd0aDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGE9TWF0aC5mbG9vcigoKG4l PTEpPDA/KytuOm4pKmUpLGk9dFsoYStlLTEpJWVdLG89dFthJWVdLHM9dFso YSsxKSVlXSxsPXRbKGErMiklZV07cmV0dXJuIHIoKG4tYS9lKSplLGksbyxz LGwpfX1mdW5jdGlvbiBpKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0 fX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0 K3IqZX19ZnVuY3Rpb24gcyh0LGUpe3ZhciByPWUtdDtyZXR1cm4gcj9vKHQs cj4xODB8fHI8LTE4MD9yLTM2MCpNYXRoLnJvdW5kKHIvMzYwKTpyKTppKGlz TmFOKHQpP2U6dCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gMT09KHQ9K3QpP2M6 ZnVuY3Rpb24oZSxyKXtyZXR1cm4gci1lP2Z1bmN0aW9uKHQsZSxyKXtyZXR1 cm4gdD1NYXRoLnBvdyh0LHIpLGU9TWF0aC5wb3coZSxyKS10LHI9MS9yLGZ1 bmN0aW9uKG4pe3JldHVybiBNYXRoLnBvdyh0K24qZSxyKX19KGUscix0KTpp KGlzTmFOKGUpP3I6ZSl9fWZ1bmN0aW9uIGModCxlKXt2YXIgcj1lLXQ7cmV0 dXJuIHI/byh0LHIpOmkoaXNOYU4odCk/ZTp0KX12YXIgdT1mdW5jdGlvbiB0 KHIpe3ZhciBuPWwocik7ZnVuY3Rpb24gYSh0LHIpe3ZhciBhPW4oKHQ9ZS5y Z2IodCkpLnIsKHI9ZS5yZ2IocikpLnIpLGk9bih0Lmcsci5nKSxvPW4odC5i LHIuYikscz1jKHQub3BhY2l0eSxyLm9wYWNpdHkpO3JldHVybiBmdW5jdGlv bihlKXtyZXR1cm4gdC5yPWEoZSksdC5nPWkoZSksdC5iPW8oZSksdC5vcGFj aXR5PXMoZSksdCsiIn19cmV0dXJuIGEuZ2FtbWE9dCxhfSgxKTtmdW5jdGlv biBoKHQpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbixhLGk9ci5sZW5ndGgs bz1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSksbD1uZXcgQXJyYXkoaSk7 Zm9yKG49MDtuPGk7KytuKWE9ZS5yZ2IocltuXSksb1tuXT1hLnJ8fDAsc1tu XT1hLmd8fDAsbFtuXT1hLmJ8fDA7cmV0dXJuIG89dChvKSxzPXQocyksbD10 KGwpLGEub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiBhLnI9byh0KSxh Lmc9cyh0KSxhLmI9bCh0KSxhKyIifX19dmFyIGY9aChuKSxwPWgoYSk7ZnVu Y3Rpb24gZCh0LGUpe2V8fChlPVtdKTt2YXIgcixuPXQ/TWF0aC5taW4oZS5s ZW5ndGgsdC5sZW5ndGgpOjAsYT1lLnNsaWNlKCk7cmV0dXJuIGZ1bmN0aW9u KGkpe2ZvcihyPTA7cjxuOysrcilhW3JdPXRbcl0qKDEtaSkrZVtyXSppO3Jl dHVybiBhfX1mdW5jdGlvbiBnKHQpe3JldHVybiBBcnJheUJ1ZmZlci5pc1Zp ZXcodCkmJiEodCBpbnN0YW5jZW9mIERhdGFWaWV3KX1mdW5jdGlvbiB2KHQs ZSl7dmFyIHIsbj1lP2UubGVuZ3RoOjAsYT10P01hdGgubWluKG4sdC5sZW5n dGgpOjAsaT1uZXcgQXJyYXkoYSksbz1uZXcgQXJyYXkobik7Zm9yKHI9MDty PGE7KytyKWlbcl09ayh0W3JdLGVbcl0pO2Zvcig7cjxuOysrcilvW3JdPWVb cl07cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihyPTA7cjxhOysrcilvW3JdPWlb cl0odCk7cmV0dXJuIG99fWZ1bmN0aW9uIG0odCxlKXt2YXIgcj1uZXcgRGF0 ZTtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiByLnNldFRp bWUodCooMS1uKStlKm4pLHJ9fWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdD0r dCxlPStlLGZ1bmN0aW9uKHIpe3JldHVybiB0KigxLXIpK2Uqcn19ZnVuY3Rp b24geCh0LGUpe3ZhciByLG49e30sYT17fTtmb3IociBpbiBudWxsIT09dCYm Im9iamVjdCI9PXR5cGVvZiB0fHwodD17fSksbnVsbCE9PWUmJiJvYmplY3Qi PT10eXBlb2YgZXx8KGU9e30pLGUpciBpbiB0P25bcl09ayh0W3JdLGVbcl0p OmFbcl09ZVtyXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHIgaW4gbilhW3Jd PW5bcl0odCk7cmV0dXJuIGF9fXZhciBiPS9bLStdPyg/OlxkK1wuP1xkKnxc Lj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxfPW5ldyBSZWdFeHAoYi5zb3Vy Y2UsImciKTtmdW5jdGlvbiB3KHQsZSl7dmFyIHIsbixhLGk9Yi5sYXN0SW5k ZXg9Xy5sYXN0SW5kZXg9MCxvPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9 IiI7KHI9Yi5leGVjKHQpKSYmKG49Xy5leGVjKGUpKTspKGE9bi5pbmRleCk+ aSYmKGE9ZS5zbGljZShpLGEpLHNbb10/c1tvXSs9YTpzWysrb109YSksKHI9 clswXSk9PT0obj1uWzBdKT9zW29dP3Nbb10rPW46c1srK29dPW46KHNbKytv XT1udWxsLGwucHVzaCh7aTpvLHg6eShyLG4pfSkpLGk9Xy5sYXN0SW5kZXg7 cmV0dXJuIGk8ZS5sZW5ndGgmJihhPWUuc2xpY2UoaSksc1tvXT9zW29dKz1h OnNbKytvXT1hKSxzLmxlbmd0aDwyP2xbMF0/ZnVuY3Rpb24odCl7cmV0dXJu IGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0obFswXS54KTpmdW5jdGlv bih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KGUpOihlPWwubGVu Z3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcixuPTA7bjxlOysrbilzWyhyPWxb bl0pLmldPXIueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIGso dCxyKXt2YXIgbixhPXR5cGVvZiByO3JldHVybiBudWxsPT1yfHwiYm9vbGVh biI9PT1hP2kocik6KCJudW1iZXIiPT09YT95OiJzdHJpbmciPT09YT8obj1l LmNvbG9yKHIpKT8ocj1uLHUpOnc6ciBpbnN0YW5jZW9mIGUuY29sb3I/dTpy IGluc3RhbmNlb2YgRGF0ZT9tOmcocik/ZDpBcnJheS5pc0FycmF5KHIpP3Y6 ImZ1bmN0aW9uIiE9dHlwZW9mIHIudmFsdWVPZiYmImZ1bmN0aW9uIiE9dHlw ZW9mIHIudG9TdHJpbmd8fGlzTmFOKHIpP3g6eSkodCxyKX12YXIgVCxNLEEs UyxFPTE4MC9NYXRoLlBJLEw9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAs cm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24g Qyh0LGUscixuLGEsaSl7dmFyIG8scyxsO3JldHVybihvPU1hdGguc3FydCh0 KnQrZSplKSkmJih0Lz1vLGUvPW8pLChsPXQqcitlKm4pJiYoci09dCpsLG4t PWUqbCksKHM9TWF0aC5zcXJ0KHIqcituKm4pKSYmKHIvPXMsbi89cyxsLz1z KSx0Km48ZSpyJiYodD0tdCxlPS1lLGw9LWwsbz0tbykse3RyYW5zbGF0ZVg6 YSx0cmFuc2xhdGVZOmkscm90YXRlOk1hdGguYXRhbjIoZSx0KSpFLHNrZXdY Ok1hdGguYXRhbihsKSpFLHNjYWxlWDpvLHNjYWxlWTpzfX1mdW5jdGlvbiBQ KHQsZSxyLG4pe2Z1bmN0aW9uIGEodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9w KCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihpLG8pe3ZhciBzPVtdLGw9W107 cmV0dXJuIGk9dChpKSxvPXQobyksZnVuY3Rpb24odCxuLGEsaSxvLHMpe2lm KHQhPT1hfHxuIT09aSl7dmFyIGw9by5wdXNoKCJ0cmFuc2xhdGUoIixudWxs LGUsbnVsbCxyKTtzLnB1c2goe2k6bC00LHg6eSh0LGEpfSx7aTpsLTIseDp5 KG4saSl9KX1lbHNlKGF8fGkpJiZvLnB1c2goInRyYW5zbGF0ZSgiK2ErZStp K3IpfShpLnRyYW5zbGF0ZVgsaS50cmFuc2xhdGVZLG8udHJhbnNsYXRlWCxv LnRyYW5zbGF0ZVkscyxsKSxmdW5jdGlvbih0LGUscixpKXt0IT09ZT8odC1l PjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksaS5wdXNoKHtpOnIucHVz aChhKHIpKyJyb3RhdGUoIixudWxsLG4pLTIseDp5KHQsZSl9KSk6ZSYmci5w dXNoKGEocikrInJvdGF0ZSgiK2Urbil9KGkucm90YXRlLG8ucm90YXRlLHMs bCksZnVuY3Rpb24odCxlLHIsaSl7dCE9PWU/aS5wdXNoKHtpOnIucHVzaChh KHIpKyJza2V3WCgiLG51bGwsbiktMix4OnkodCxlKX0pOmUmJnIucHVzaChh KHIpKyJza2V3WCgiK2Urbil9KGkuc2tld1gsby5za2V3WCxzLGwpLGZ1bmN0 aW9uKHQsZSxyLG4saSxvKXtpZih0IT09cnx8ZSE9PW4pe3ZhciBzPWkucHVz aChhKGkpKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtvLnB1c2goe2k6 cy00LHg6eSh0LHIpfSx7aTpzLTIseDp5KGUsbil9KX1lbHNlIDE9PT1yJiYx PT09bnx8aS5wdXNoKGEoaSkrInNjYWxlKCIrcisiLCIrbisiKSIpfShpLnNj YWxlWCxpLnNjYWxlWSxvLnNjYWxlWCxvLnNjYWxlWSxzLGwpLGk9bz1udWxs LGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPS0xLG49bC5sZW5ndGg7KytyPG47 KXNbKGU9bFtyXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFy IE89UChmdW5jdGlvbih0KXtyZXR1cm4ibm9uZSI9PT10P0w6KFR8fChUPWRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLE09ZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LEE9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFQuc3R5bGUudHJh bnNmb3JtPXQsdD1BLmdldENvbXB1dGVkU3R5bGUoTS5hcHBlbmRDaGlsZChU KSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxNLnJlbW92 ZUNoaWxkKFQpLEMoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0s K3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0sInB4LCAiLCJweCki LCJkZWcpIiksej1QKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P0w6KFN8 fChTPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5v cmcvMjAwMC9zdmciLCJnIikpLFMuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0i LHQpLCh0PVMudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/Qygo dD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpMKX0sIiwgIiwi KSIsIikiKSxJPU1hdGguU1FSVDIsRD0yLFI9NCxGPTFlLTEyO2Z1bmN0aW9u IEIodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKSsxL3QpLzJ9ZnVuY3Rpb24g Tih0KXtyZXR1cm4gZnVuY3Rpb24ocixuKXt2YXIgYT10KChyPWUuaHNsKHIp KS5oLChuPWUuaHNsKG4pKS5oKSxpPWMoci5zLG4ucyksbz1jKHIubCxuLmwp LHM9YyhyLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7 cmV0dXJuIHIuaD1hKHQpLHIucz1pKHQpLHIubD1vKHQpLHIub3BhY2l0eT1z KHQpLHIrIiJ9fX12YXIgaj1OKHMpLFY9TihjKTtmdW5jdGlvbiBVKHQpe3Jl dHVybiBmdW5jdGlvbihyLG4pe3ZhciBhPXQoKHI9ZS5oY2wocikpLmgsKG49 ZS5oY2wobikpLmgpLGk9YyhyLmMsbi5jKSxvPWMoci5sLG4ubCkscz1jKHIu b3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4g ci5oPWEodCksci5jPWkodCksci5sPW8odCksci5vcGFjaXR5PXModCkscisi In19fXZhciBxPVUocyksSD1VKGMpO2Z1bmN0aW9uIEcodCl7cmV0dXJuIGZ1 bmN0aW9uIHIobil7ZnVuY3Rpb24gYShyLGEpe3ZhciBpPXQoKHI9ZS5jdWJl aGVsaXgocikpLmgsKGE9ZS5jdWJlaGVsaXgoYSkpLmgpLG89YyhyLnMsYS5z KSxzPWMoci5sLGEubCksbD1jKHIub3BhY2l0eSxhLm9wYWNpdHkpO3JldHVy biBmdW5jdGlvbih0KXtyZXR1cm4gci5oPWkodCksci5zPW8odCksci5sPXMo TWF0aC5wb3codCxuKSksci5vcGFjaXR5PWwodCkscisiIn19cmV0dXJuIG49 K24sYS5nYW1tYT1yLGF9KDEpfXZhciBZPUcocyksVz1HKGMpO3QuaW50ZXJw b2xhdGU9ayx0LmludGVycG9sYXRlQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1 cm4oZyhlKT9kOnYpKHQsZSl9LHQuaW50ZXJwb2xhdGVCYXNpcz1uLHQuaW50 ZXJwb2xhdGVCYXNpc0Nsb3NlZD1hLHQuaW50ZXJwb2xhdGVDdWJlaGVsaXg9 WSx0LmludGVycG9sYXRlQ3ViZWhlbGl4TG9uZz1XLHQuaW50ZXJwb2xhdGVE YXRlPW0sdC5pbnRlcnBvbGF0ZURpc2NyZXRlPWZ1bmN0aW9uKHQpe3ZhciBl PXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdFtNYXRoLm1h eCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKHIqZSkpKV19fSx0LmludGVy cG9sYXRlSGNsPXEsdC5pbnRlcnBvbGF0ZUhjbExvbmc9SCx0LmludGVycG9s YXRlSHNsPWosdC5pbnRlcnBvbGF0ZUhzbExvbmc9Vix0LmludGVycG9sYXRl SHVlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9cygrdCwrZSk7cmV0dXJuIGZ1bmN0 aW9uKHQpe3ZhciBlPXIodCk7cmV0dXJuIGUtMzYwKk1hdGguZmxvb3IoZS8z NjApfX0sdC5pbnRlcnBvbGF0ZUxhYj1mdW5jdGlvbih0LHIpe3ZhciBuPWMo KHQ9ZS5sYWIodCkpLmwsKHI9ZS5sYWIocikpLmwpLGE9Yyh0LmEsci5hKSxp PWModC5iLHIuYiksbz1jKHQub3BhY2l0eSxyLm9wYWNpdHkpO3JldHVybiBm dW5jdGlvbihlKXtyZXR1cm4gdC5sPW4oZSksdC5hPWEoZSksdC5iPWkoZSks dC5vcGFjaXR5PW8oZSksdCsiIn19LHQuaW50ZXJwb2xhdGVOdW1iZXI9eSx0 LmludGVycG9sYXRlTnVtYmVyQXJyYXk9ZCx0LmludGVycG9sYXRlT2JqZWN0 PXgsdC5pbnRlcnBvbGF0ZVJnYj11LHQuaW50ZXJwb2xhdGVSZ2JCYXNpcz1m LHQuaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZD1wLHQuaW50ZXJwb2xhdGVS b3VuZD1mdW5jdGlvbih0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24o cil7cmV0dXJuIE1hdGgucm91bmQodCooMS1yKStlKnIpfX0sdC5pbnRlcnBv bGF0ZVN0cmluZz13LHQuaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3M9Tyx0Lmlu dGVycG9sYXRlVHJhbnNmb3JtU3ZnPXosdC5pbnRlcnBvbGF0ZVpvb209ZnVu Y3Rpb24odCxlKXt2YXIgcixuLGE9dFswXSxpPXRbMV0sbz10WzJdLHM9ZVsw XSxsPWVbMV0sYz1lWzJdLHU9cy1hLGg9bC1pLGY9dSp1K2gqaDtpZihmPEYp bj1NYXRoLmxvZyhjL28pL0kscj1mdW5jdGlvbih0KXtyZXR1cm5bYSt0KnUs aSt0KmgsbypNYXRoLmV4cChJKnQqbildfTtlbHNle3ZhciBwPU1hdGguc3Fy dChmKSxkPShjKmMtbypvK1IqZikvKDIqbypEKnApLGc9KGMqYy1vKm8tUipm KS8oMipjKkQqcCksdj1NYXRoLmxvZyhNYXRoLnNxcnQoZCpkKzEpLWQpLG09 TWF0aC5sb2coTWF0aC5zcXJ0KGcqZysxKS1nKTtuPShtLXYpL0kscj1mdW5j dGlvbih0KXt2YXIgZSxyPXQqbixzPUIodiksbD1vLyhEKnApKihzKihlPUkq cit2LCgoZT1NYXRoLmV4cCgyKmUpKS0xKS8oZSsxKSktZnVuY3Rpb24odCl7 cmV0dXJuKCh0PU1hdGguZXhwKHQpKS0xL3QpLzJ9KHYpKTtyZXR1cm5bYSts KnUsaStsKmgsbypzL0IoSSpyK3YpXX19cmV0dXJuIHIuZHVyYXRpb249MWUz Km4scn0sdC5waWVjZXdpc2U9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxu PWUubGVuZ3RoLTEsYT1lWzBdLGk9bmV3IEFycmF5KG48MD8wOm4pO3I8bjsp aVtyXT10KGEsYT1lWysrcl0pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1N YXRoLm1heCgwLE1hdGgubWluKG4tMSxNYXRoLmZsb29yKHQqPW4pKSk7cmV0 dXJuIGlbZV0odC1lKX19LHQucXVhbnRpemU9ZnVuY3Rpb24odCxlKXtmb3Io dmFyIHI9bmV3IEFycmF5KGUpLG49MDtuPGU7KytuKXJbbl09dChuLyhlLTEp KTtyZXR1cm4gcn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1 bGUiLHt2YWx1ZTohMH0pfSwib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmlu ZWQiIT10eXBlb2YgZT9hKHIsdCgiZDMtY29sb3IiKSk6YSgobj1ufHxzZWxm KS5kMz1uLmQzfHx7fSxuLmQzKX0seyJkMy1jb2xvciI6MTU2fV0sMTYxOltm dW5jdGlvbih0LGUscil7dmFyIG47bj10aGlzLGZ1bmN0aW9uKHQpeyJ1c2Ug c3RyaWN0Ijt2YXIgZT1NYXRoLlBJLHI9MiplLG49ci0xZS02O2Z1bmN0aW9u IGEoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxs LHRoaXMuXz0iIn1mdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyBhfWEucHJvdG90 eXBlPWkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjphLG1vdmVUbzpmdW5jdGlv bih0LGUpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwi Kyh0aGlzLl95MD10aGlzLl95MT0rZSl9LGNsb3NlUGF0aDpmdW5jdGlvbigp e251bGwhPT10aGlzLl94MSYmKHRoaXMuX3gxPXRoaXMuX3gwLHRoaXMuX3kx PXRoaXMuX3kwLHRoaXMuXys9IloiKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7 dGhpcy5fKz0iTCIrKHRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kxPStlKX0s cXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbih0LGUscixuKXt0aGlzLl8rPSJR IisgK3QrIiwiKyArZSsiLCIrKHRoaXMuX3gxPStyKSsiLCIrKHRoaXMuX3kx PStuKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUscixuLGEsaSl7dGhp cy5fKz0iQyIrICt0KyIsIisgK2UrIiwiKyArcisiLCIrICtuKyIsIisodGhp cy5feDE9K2EpKyIsIisodGhpcy5feTE9K2kpfSxhcmNUbzpmdW5jdGlvbih0 LHIsbixhLGkpe3Q9K3Qscj0rcixuPStuLGE9K2EsaT0raTt2YXIgbz10aGlz Ll94MSxzPXRoaXMuX3kxLGw9bi10LGM9YS1yLHU9by10LGg9cy1yLGY9dSp1 K2gqaDtpZihpPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6 ICIraSk7aWYobnVsbD09PXRoaXMuX3gxKXRoaXMuXys9Ik0iKyh0aGlzLl94 MT10KSsiLCIrKHRoaXMuX3kxPXIpO2Vsc2UgaWYoZj4xZS02KWlmKE1hdGgu YWJzKGgqbC1jKnUpPjFlLTYmJmkpe3ZhciBwPW4tbyxkPWEtcyxnPWwqbCtj KmMsdj1wKnArZCpkLG09TWF0aC5zcXJ0KGcpLHk9TWF0aC5zcXJ0KGYpLHg9 aSpNYXRoLnRhbigoZS1NYXRoLmFjb3MoKGcrZi12KS8oMiptKnkpKSkvMiks Yj14L3ksXz14L207TWF0aC5hYnMoYi0xKT4xZS02JiYodGhpcy5fKz0iTCIr KHQrYip1KSsiLCIrKHIrYipoKSksdGhpcy5fKz0iQSIraSsiLCIraSsiLDAs MCwiKyArKGgqcD51KmQpKyIsIisodGhpcy5feDE9dCtfKmwpKyIsIisodGhp cy5feTE9citfKmMpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIs IisodGhpcy5feTE9cik7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LGEsaSxvLHMs bCl7dD0rdCxhPSthO3ZhciBjPShpPStpKSpNYXRoLmNvcyhvKSx1PWkqTWF0 aC5zaW4obyksaD10K2MsZj1hK3UscD0xXmwsZD1sP28tczpzLW87aWYoaTww KXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO251bGw9 PT10aGlzLl94MT90aGlzLl8rPSJNIitoKyIsIitmOihNYXRoLmFicyh0aGlz Ll94MS1oKT4xZS02fHxNYXRoLmFicyh0aGlzLl95MS1mKT4xZS02KSYmKHRo aXMuXys9IkwiK2grIiwiK2YpLGkmJihkPDAmJihkPWQlcityKSxkPm4/dGhp cy5fKz0iQSIraSsiLCIraSsiLDAsMSwiK3ArIiwiKyh0LWMpKyIsIisoYS11 KSsiQSIraSsiLCIraSsiLDAsMSwiK3ArIiwiKyh0aGlzLl94MT1oKSsiLCIr KHRoaXMuX3kxPWYpOmQ+MWUtNiYmKHRoaXMuXys9IkEiK2krIiwiK2krIiww LCIrICsoZD49ZSkrIiwiK3ArIiwiKyh0aGlzLl94MT10K2kqTWF0aC5jb3Mo cykpKyIsIisodGhpcy5feTE9YStpKk1hdGguc2luKHMpKSkpfSxyZWN0OmZ1 bmN0aW9uKHQsZSxyLG4pe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94 MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArcisidiIr ICtuKyJoIistcisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX319LHQucGF0aD1pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2Vz TW9kdWxlIix7dmFsdWU6ITB9KX0oIm9iamVjdCI9PXR5cGVvZiByJiYidW5k ZWZpbmVkIiE9dHlwZW9mIGU/cjpuLmQzPW4uZDN8fHt9KX0se31dLDE2Mjpb ZnVuY3Rpb24odCxlLHIpe3ZhciBuO249dGhpcyxmdW5jdGlvbih0KXsidXNl IHN0cmljdCI7ZnVuY3Rpb24gZSh0LGUscixuKXtpZihpc05hTihlKXx8aXNO YU4ocikpcmV0dXJuIHQ7dmFyIGEsaSxvLHMsbCxjLHUsaCxmLHA9dC5fcm9v dCxkPXtkYXRhOm59LGc9dC5feDAsdj10Ll95MCxtPXQuX3gxLHk9dC5feTE7 aWYoIXApcmV0dXJuIHQuX3Jvb3Q9ZCx0O2Zvcig7cC5sZW5ndGg7KWlmKChj PWU+PShpPShnK20pLzIpKT9nPWk6bT1pLCh1PXI+PShvPSh2K3kpLzIpKT92 PW86eT1vLGE9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiBhW2hdPWQsdDtp ZihzPSt0Ll94LmNhbGwobnVsbCxwLmRhdGEpLGw9K3QuX3kuY2FsbChudWxs LHAuZGF0YSksZT09PXMmJnI9PT1sKXJldHVybiBkLm5leHQ9cCxhP2FbaF09 ZDp0Ll9yb290PWQsdDtkb3thPWE/YVtoXT1uZXcgQXJyYXkoNCk6dC5fcm9v dD1uZXcgQXJyYXkoNCksKGM9ZT49KGk9KGcrbSkvMikpP2c9aTptPWksKHU9 cj49KG89KHYreSkvMikpP3Y9bzp5PW99d2hpbGUoKGg9dTw8MXxjKT09KGY9 KGw+PW8pPDwxfHM+PWkpKTtyZXR1cm4gYVtmXT1wLGFbaF09ZCx0fXZhciBy PWZ1bmN0aW9uKHQsZSxyLG4sYSl7dGhpcy5ub2RlPXQsdGhpcy54MD1lLHRo aXMueTA9cix0aGlzLngxPW4sdGhpcy55MT1hfTtmdW5jdGlvbiBuKHQpe3Jl dHVybiB0WzBdfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24g aSh0LGUscil7dmFyIGk9bmV3IG8obnVsbD09ZT9uOmUsbnVsbD09cj9hOnIs TmFOLE5hTixOYU4sTmFOKTtyZXR1cm4gbnVsbD09dD9pOmkuYWRkQWxsKHQp fWZ1bmN0aW9uIG8odCxlLHIsbixhLGkpe3RoaXMuX3g9dCx0aGlzLl95PWUs dGhpcy5feDA9cix0aGlzLl95MD1uLHRoaXMuX3gxPWEsdGhpcy5feTE9aSx0 aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiBzKHQpe2Zvcih2YXIgZT17ZGF0 YTp0LmRhdGF9LHI9ZTt0PXQubmV4dDspcj1yLm5leHQ9e2RhdGE6dC5kYXRh fTtyZXR1cm4gZX12YXIgbD1pLnByb3RvdHlwZT1vLnByb3RvdHlwZTtsLmNv cHk9ZnVuY3Rpb24oKXt2YXIgdCxlLHI9bmV3IG8odGhpcy5feCx0aGlzLl95 LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSxuPXRoaXMu X3Jvb3Q7aWYoIW4pcmV0dXJuIHI7aWYoIW4ubGVuZ3RoKXJldHVybiByLl9y b290PXMobikscjtmb3IodD1be3NvdXJjZTpuLHRhcmdldDpyLl9yb290PW5l dyBBcnJheSg0KX1dO249dC5wb3AoKTspZm9yKHZhciBhPTA7YTw0OysrYSko ZT1uLnNvdXJjZVthXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRh cmdldDpuLnRhcmdldFthXT1uZXcgQXJyYXkoNCl9KTpuLnRhcmdldFthXT1z KGUpKTtyZXR1cm4gcn0sbC5hZGQ9ZnVuY3Rpb24odCl7dmFyIHI9K3RoaXMu X3guY2FsbChudWxsLHQpLG49K3RoaXMuX3kuY2FsbChudWxsLHQpO3JldHVy biBlKHRoaXMuY292ZXIocixuKSxyLG4sdCl9LGwuYWRkQWxsPWZ1bmN0aW9u KHQpe3ZhciByLG4sYSxpLG89dC5sZW5ndGgscz1uZXcgQXJyYXkobyksbD1u ZXcgQXJyYXkobyksYz0xLzAsdT0xLzAsaD0tMS8wLGY9LTEvMDtmb3Iobj0w O248bzsrK24paXNOYU4oYT0rdGhpcy5feC5jYWxsKG51bGwscj10W25dKSl8 fGlzTmFOKGk9K3RoaXMuX3kuY2FsbChudWxsLHIpKXx8KHNbbl09YSxsW25d PWksYTxjJiYoYz1hKSxhPmgmJihoPWEpLGk8dSYmKHU9aSksaT5mJiYoZj1p KSk7Zm9yKGg8YyYmKGM9dGhpcy5feDAsaD10aGlzLl94MSksZjx1JiYodT10 aGlzLl95MCxmPXRoaXMuX3kxKSx0aGlzLmNvdmVyKGMsdSkuY292ZXIoaCxm KSxuPTA7bjxvOysrbillKHRoaXMsc1tuXSxsW25dLHRbbl0pO3JldHVybiB0 aGlzfSxsLmNvdmVyPWZ1bmN0aW9uKHQsZSl7aWYoaXNOYU4odD0rdCl8fGlz TmFOKGU9K2UpKXJldHVybiB0aGlzO3ZhciByPXRoaXMuX3gwLG49dGhpcy5f eTAsYT10aGlzLl94MSxpPXRoaXMuX3kxO2lmKGlzTmFOKHIpKWE9KHI9TWF0 aC5mbG9vcih0KSkrMSxpPShuPU1hdGguZmxvb3IoZSkpKzE7ZWxzZXtpZigh KHI+dHx8dD5hfHxuPmV8fGU+aSkpcmV0dXJuIHRoaXM7dmFyIG8scyxsPWEt cixjPXRoaXMuX3Jvb3Q7c3dpdGNoKHM9KGU8KG4raSkvMik8PDF8dDwocith KS8yKXtjYXNlIDA6ZG97KG89bmV3IEFycmF5KDQpKVtzXT1jLGM9b313aGls ZShpPW4rKGwqPTIpLHQ+KGE9citsKXx8ZT5pKTticmVhaztjYXNlIDE6ZG97 KG89bmV3IEFycmF5KDQpKVtzXT1jLGM9b313aGlsZShpPW4rKGwqPTIpLChy PWEtbCk+dHx8ZT5pKTticmVhaztjYXNlIDI6ZG97KG89bmV3IEFycmF5KDQp KVtzXT1jLGM9b313aGlsZShuPWktKGwqPTIpLHQ+KGE9citsKXx8bj5lKTti cmVhaztjYXNlIDM6ZG97KG89bmV3IEFycmF5KDQpKVtzXT1jLGM9b313aGls ZShuPWktKGwqPTIpLChyPWEtbCk+dHx8bj5lKX10aGlzLl9yb290JiZ0aGlz Ll9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9Yyl9cmV0dXJuIHRoaXMuX3gw PXIsdGhpcy5feTA9bix0aGlzLl94MT1hLHRoaXMuX3kxPWksdGhpc30sbC5k YXRhPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMudmlzaXQoZnVu Y3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxl KGU9ZS5uZXh0KX0pLHR9LGwuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoP3RoaXMuY292ZXIoK3RbMF1bMF0sK3RbMF1bMV0p LmNvdmVyKCt0WzFdWzBdLCt0WzFdWzFdKTppc05hTih0aGlzLl94MCk/dm9p ZCAwOltbdGhpcy5feDAsdGhpcy5feTBdLFt0aGlzLl94MSx0aGlzLl95MV1d fSxsLmZpbmQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBhLGksbyxzLGwsYyx1LGg9 dGhpcy5feDAsZj10aGlzLl95MCxwPXRoaXMuX3gxLGQ9dGhpcy5feTEsZz1b XSx2PXRoaXMuX3Jvb3Q7Zm9yKHYmJmcucHVzaChuZXcgcih2LGgsZixwLGQp KSxudWxsPT1uP249MS8wOihoPXQtbixmPWUtbixwPXQrbixkPWUrbixuKj1u KTtjPWcucG9wKCk7KWlmKCEoISh2PWMubm9kZSl8fChpPWMueDApPnB8fChv PWMueTApPmR8fChzPWMueDEpPGh8fChsPWMueTEpPGYpKWlmKHYubGVuZ3Ro KXt2YXIgbT0oaStzKS8yLHk9KG8rbCkvMjtnLnB1c2gobmV3IHIodlszXSxt LHkscyxsKSxuZXcgcih2WzJdLGkseSxtLGwpLG5ldyByKHZbMV0sbSxvLHMs eSksbmV3IHIodlswXSxpLG8sbSx5KSksKHU9KGU+PXkpPDwxfHQ+PW0pJiYo Yz1nW2cubGVuZ3RoLTFdLGdbZy5sZW5ndGgtMV09Z1tnLmxlbmd0aC0xLXVd LGdbZy5sZW5ndGgtMS11XT1jKX1lbHNle3ZhciB4PXQtK3RoaXMuX3guY2Fs bChudWxsLHYuZGF0YSksYj1lLSt0aGlzLl95LmNhbGwobnVsbCx2LmRhdGEp LF89eCp4K2IqYjtpZihfPG4pe3ZhciB3PU1hdGguc3FydChuPV8pO2g9dC13 LGY9ZS13LHA9dCt3LGQ9ZSt3LGE9di5kYXRhfX1yZXR1cm4gYX0sbC5yZW1v dmU9ZnVuY3Rpb24odCl7aWYoaXNOYU4oaT0rdGhpcy5feC5jYWxsKG51bGws dCkpfHxpc05hTihvPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRo aXM7dmFyIGUscixuLGEsaSxvLHMsbCxjLHUsaCxmLHA9dGhpcy5fcm9vdCxk PXRoaXMuX3gwLGc9dGhpcy5feTAsdj10aGlzLl94MSxtPXRoaXMuX3kxO2lm KCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9aT49 KHM9KGQrdikvMikpP2Q9czp2PXMsKHU9bz49KGw9KGcrbSkvMikpP2c9bDpt PWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVu Z3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKHI9 ZSxmPWgpfWZvcig7cC5kYXRhIT09dDspaWYobj1wLCEocD1wLm5leHQpKXJl dHVybiB0aGlzO3JldHVybihhPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsbj8o YT9uLm5leHQ9YTpkZWxldGUgbi5uZXh0LHRoaXMpOmU/KGE/ZVtoXT1hOmRl bGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVb M118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihyP3JbZl09cDp0 aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PWEsdGhpcyl9LGwucmVt b3ZlQWxsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dC5sZW5ndGg7ZTxy OysrZSl0aGlzLnJlbW92ZSh0W2VdKTtyZXR1cm4gdGhpc30sbC5yb290PWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jvb3R9LGwuc2l6ZT1mdW5jdGlvbigp e3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoZnVuY3Rpb24oZSl7aWYoIWUu bGVuZ3RoKWRveysrdH13aGlsZShlPWUubmV4dCl9KSx0fSxsLnZpc2l0PWZ1 bmN0aW9uKHQpe3ZhciBlLG4sYSxpLG8scyxsPVtdLGM9dGhpcy5fcm9vdDtm b3IoYyYmbC5wdXNoKG5ldyByKGMsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5f eDEsdGhpcy5feTEpKTtlPWwucG9wKCk7KWlmKCF0KGM9ZS5ub2RlLGE9ZS54 MCxpPWUueTAsbz1lLngxLHM9ZS55MSkmJmMubGVuZ3RoKXt2YXIgdT0oYStv KS8yLGg9KGkrcykvMjsobj1jWzNdKSYmbC5wdXNoKG5ldyByKG4sdSxoLG8s cykpLChuPWNbMl0pJiZsLnB1c2gobmV3IHIobixhLGgsdSxzKSksKG49Y1sx XSkmJmwucHVzaChuZXcgcihuLHUsaSxvLGgpKSwobj1jWzBdKSYmbC5wdXNo KG5ldyByKG4sYSxpLHUsaCkpfXJldHVybiB0aGlzfSxsLnZpc2l0QWZ0ZXI9 ZnVuY3Rpb24odCl7dmFyIGUsbj1bXSxhPVtdO2Zvcih0aGlzLl9yb290JiZu LnB1c2gobmV3IHIodGhpcy5fcm9vdCx0aGlzLl94MCx0aGlzLl95MCx0aGlz Ll94MSx0aGlzLl95MSkpO2U9bi5wb3AoKTspe3ZhciBpPWUubm9kZTtpZihp Lmxlbmd0aCl7dmFyIG8scz1lLngwLGw9ZS55MCxjPWUueDEsdT1lLnkxLGg9 KHMrYykvMixmPShsK3UpLzI7KG89aVswXSkmJm4ucHVzaChuZXcgcihvLHMs bCxoLGYpKSwobz1pWzFdKSYmbi5wdXNoKG5ldyByKG8saCxsLGMsZikpLChv PWlbMl0pJiZuLnB1c2gobmV3IHIobyxzLGYsaCx1KSksKG89aVszXSkmJm4u cHVzaChuZXcgcihvLGgsZixjLHUpKX1hLnB1c2goZSl9Zm9yKDtlPWEucG9w KCk7KXQoZS5ub2RlLGUueDAsZS55MCxlLngxLGUueTEpO3JldHVybiB0aGlz fSxsLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRo aXMuX3g9dCx0aGlzKTp0aGlzLl94fSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9dCx0aGlzKTp0aGlzLl95fSx0 LnF1YWR0cmVlPWksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1 bGUiLHt2YWx1ZTohMH0pfSgib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmlu ZWQiIT10eXBlb2YgZT9yOm4uZDM9bi5kM3x8e30pfSx7fV0sMTYzOltmdW5j dGlvbih0LGUscil7dmFyIG4sYTtuPXRoaXMsYT1mdW5jdGlvbih0LGUpeyJ1 c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiBmdW5jdGlvbigpe3Jl dHVybiB0fX12YXIgbj1NYXRoLmFicyxhPU1hdGguYXRhbjIsaT1NYXRoLmNv cyxvPU1hdGgubWF4LHM9TWF0aC5taW4sbD1NYXRoLnNpbixjPU1hdGguc3Fy dCx1PTFlLTEyLGg9TWF0aC5QSSxmPWgvMixwPTIqaDtmdW5jdGlvbiBkKHQp e3JldHVybiB0Pj0xP2Y6dDw9LTE/LWY6TWF0aC5hc2luKHQpfWZ1bmN0aW9u IGcodCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gdih0KXtyZXR1 cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBtKHQpe3JldHVybiB0LnN0YXJ0 QW5nbGV9ZnVuY3Rpb24geSh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlv biB4KHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIGIodCxlLHIs bixhLGkscyl7dmFyIGw9dC1yLHU9ZS1uLGg9KHM/aTotaSkvYyhsKmwrdSp1 KSxmPWgqdSxwPS1oKmwsZD10K2YsZz1lK3Asdj1yK2YsbT1uK3AseT0oZCt2 KS8yLHg9KGcrbSkvMixiPXYtZCxfPW0tZyx3PWIqYitfKl8saz1hLWksVD1k Km0tdipnLE09KF88MD8tMToxKSpjKG8oMCxrKmsqdy1UKlQpKSxBPShUKl8t YipNKS93LFM9KC1UKmItXypNKS93LEU9KFQqXytiKk0pL3csTD0oLVQqYitf Kk0pL3csQz1BLXksUD1TLXgsTz1FLXksej1MLXg7cmV0dXJuIEMqQytQKlA+ TypPK3oqeiYmKEE9RSxTPUwpLHtjeDpBLGN5OlMseDAxOi1mLHkwMTotcCx4 MTE6QSooYS9rLTEpLHkxMTpTKihhL2stMSl9fWZ1bmN0aW9uIF8odCl7dGhp cy5fY29udGV4dD10fWZ1bmN0aW9uIHcodCl7cmV0dXJuIG5ldyBfKHQpfWZ1 bmN0aW9uIGsodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gVCh0KXtyZXR1cm4g dFsxXX1mdW5jdGlvbiBNKCl7dmFyIHQ9ayxuPVQsYT1yKCEwKSxpPW51bGws bz13LHM9bnVsbDtmdW5jdGlvbiBsKHIpe3ZhciBsLGMsdSxoPXIubGVuZ3Ro LGY9ITE7Zm9yKG51bGw9PWkmJihzPW8odT1lLnBhdGgoKSkpLGw9MDtsPD1o OysrbCkhKGw8aCYmYShjPXJbbF0sbCxyKSk9PT1mJiYoKGY9IWYpP3MubGlu ZVN0YXJ0KCk6cy5saW5lRW5kKCkpLGYmJnMucG9pbnQoK3QoYyxsLHIpLCtu KGMsbCxyKSk7aWYodSlyZXR1cm4gcz1udWxsLHUrIiJ8fG51bGx9cmV0dXJu IGwueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0i ZnVuY3Rpb24iPT10eXBlb2YgZT9lOnIoK2UpLGwpOnR9LGwueT1mdW5jdGlv bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10 eXBlb2YgdD90OnIoK3QpLGwpOm59LGwuZGVmaW5lZD1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2Yg dD90OnIoISF0KSxsKTphfSxsLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhvPXQsbnVsbCE9aSYmKHM9byhpKSksbCk6b30s bC5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro PyhudWxsPT10P2k9cz1udWxsOnM9byhpPXQpLGwpOml9LGx9ZnVuY3Rpb24g QSgpe3ZhciB0PWssbj1udWxsLGE9cigwKSxpPVQsbz1yKCEwKSxzPW51bGws bD13LGM9bnVsbDtmdW5jdGlvbiB1KHIpe3ZhciB1LGgsZixwLGQsZz1yLmxl bmd0aCx2PSExLG09bmV3IEFycmF5KGcpLHk9bmV3IEFycmF5KGcpO2Zvcihu dWxsPT1zJiYoYz1sKGQ9ZS5wYXRoKCkpKSx1PTA7dTw9ZzsrK3Upe2lmKCEo dTxnJiZvKHA9clt1XSx1LHIpKT09PXYpaWYodj0hdiloPXUsYy5hcmVhU3Rh cnQoKSxjLmxpbmVTdGFydCgpO2Vsc2V7Zm9yKGMubGluZUVuZCgpLGMubGlu ZVN0YXJ0KCksZj11LTE7Zj49aDstLWYpYy5wb2ludChtW2ZdLHlbZl0pO2Mu bGluZUVuZCgpLGMuYXJlYUVuZCgpfXYmJihtW3VdPSt0KHAsdSxyKSx5W3Vd PSthKHAsdSxyKSxjLnBvaW50KG4/K24ocCx1LHIpOm1bdV0saT8raShwLHUs cik6eVt1XSkpfWlmKGQpcmV0dXJuIGM9bnVsbCxkKyIifHxudWxsfWZ1bmN0 aW9uIGgoKXtyZXR1cm4gTSgpLmRlZmluZWQobykuY3VydmUobCkuY29udGV4 dChzKX1yZXR1cm4gdS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6cigrZSksbj1udWxs LHUpOnR9LHUueDA9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpyKCtlKSx1KTp0fSx1Lngx PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9 PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLHUpOm59LHUu eT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVu Y3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLGk9bnVsbCx1KTphfSx1LnkwPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlv biI9PXR5cGVvZiB0P3Q6cigrdCksdSk6YX0sdS55MT1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6ImZ1bmN0 aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSx1KTppfSx1LmxpbmVYMD11LmxpbmVZ MD1mdW5jdGlvbigpe3JldHVybiBoKCkueCh0KS55KGEpfSx1LmxpbmVZMT1m dW5jdGlvbigpe3JldHVybiBoKCkueCh0KS55KGkpfSx1LmxpbmVYMT1mdW5j dGlvbigpe3JldHVybiBoKCkueChuKS55KGEpfSx1LmRlZmluZWQ9ZnVuY3Rp b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09 dHlwZW9mIHQ/dDpyKCEhdCksdSk6b30sdS5jdXJ2ZT1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LG51bGwhPXMmJihjPWwocykp LHUpOmx9LHUuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8obnVsbD09dD9zPWM9bnVsbDpjPWwocz10KSx1KTpzfSx1fWZ1 bmN0aW9uIFModCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59 ZnVuY3Rpb24gRSh0KXtyZXR1cm4gdH1fLnByb3RvdHlwZT17YXJlYVN0YXJ0 OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7 dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3Bv aW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRo aXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xv c2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0 aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAw OnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVU byh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAx OnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0 LGUpfX19O3ZhciBMPVAodyk7ZnVuY3Rpb24gQyh0KXt0aGlzLl9jdXJ2ZT10 fWZ1bmN0aW9uIFAodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gbmV3IEModChl KSl9cmV0dXJuIGUuX2N1cnZlPXQsZX1mdW5jdGlvbiBPKHQpe3ZhciBlPXQu Y3VydmU7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9 dC55LGRlbGV0ZSB0LnksdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD9lKFAodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24g eigpe3JldHVybiBPKE0oKS5jdXJ2ZShMKSl9ZnVuY3Rpb24gSSgpe3ZhciB0 PUEoKS5jdXJ2ZShMKSxlPXQuY3VydmUscj10LmxpbmVYMCxuPXQubGluZVgx LGE9dC5saW5lWTAsaT10LmxpbmVZMTtyZXR1cm4gdC5hbmdsZT10LngsZGVs ZXRlIHQueCx0LnN0YXJ0QW5nbGU9dC54MCxkZWxldGUgdC54MCx0LmVuZEFu Z2xlPXQueDEsZGVsZXRlIHQueDEsdC5yYWRpdXM9dC55LGRlbGV0ZSB0Lnks dC5pbm5lclJhZGl1cz10LnkwLGRlbGV0ZSB0LnkwLHQub3V0ZXJSYWRpdXM9 dC55MSxkZWxldGUgdC55MSx0LmxpbmVTdGFydEFuZ2xlPWZ1bmN0aW9uKCl7 cmV0dXJuIE8ocigpKX0sZGVsZXRlIHQubGluZVgwLHQubGluZUVuZEFuZ2xl PWZ1bmN0aW9uKCl7cmV0dXJuIE8obigpKX0sZGVsZXRlIHQubGluZVgxLHQu bGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIE8oYSgpKX0sZGVs ZXRlIHQubGluZVkwLHQubGluZU91dGVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0 dXJuIE8oaSgpKX0sZGVsZXRlIHQubGluZVkxLHQuY3VydmU9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShQKHQpKTplKCkuX2N1cnZl fSx0fWZ1bmN0aW9uIEQodCxlKXtyZXR1cm5bKGU9K2UpKk1hdGguY29zKHQt PU1hdGguUEkvMiksZSpNYXRoLnNpbih0KV19Qy5wcm90b3R5cGU9e2FyZWFT dGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVh RW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3Rh cnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVu ZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVu Y3Rpb24odCxlKXt0aGlzLl9jdXJ2ZS5wb2ludChlKk1hdGguc2luKHQpLGUq LU1hdGguY29zKHQpKX19O3ZhciBSPUFycmF5LnByb3RvdHlwZS5zbGljZTtm dW5jdGlvbiBGKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBCKHQpe3Jl dHVybiB0LnRhcmdldH1mdW5jdGlvbiBOKHQpe3ZhciBuPUYsYT1CLGk9ayxv PVQscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgcixsPVIuY2FsbChhcmd1bWVu dHMpLGM9bi5hcHBseSh0aGlzLGwpLHU9YS5hcHBseSh0aGlzLGwpO2lmKHN8 fChzPXI9ZS5wYXRoKCkpLHQocywraS5hcHBseSh0aGlzLChsWzBdPWMsbCkp LCtvLmFwcGx5KHRoaXMsbCksK2kuYXBwbHkodGhpcywobFswXT11LGwpKSwr by5hcHBseSh0aGlzLGwpKSxyKXJldHVybiBzPW51bGwscisiInx8bnVsbH1y ZXR1cm4gbC5zb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/KG49dCxsKTpufSxsLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8oYT10LGwpOmF9LGwueD1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2Yg dD90OnIoK3QpLGwpOml9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLGwp Om99LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfWZ1bmN0aW9uIGoodCxl LHIsbixhKXt0Lm1vdmVUbyhlLHIpLHQuYmV6aWVyQ3VydmVUbyhlPShlK24p LzIscixlLGEsbixhKX1mdW5jdGlvbiBWKHQsZSxyLG4sYSl7dC5tb3ZlVG8o ZSxyKSx0LmJlemllckN1cnZlVG8oZSxyPShyK2EpLzIsbixyLG4sYSl9ZnVu Y3Rpb24gVSh0LGUscixuLGEpe3ZhciBpPUQoZSxyKSxvPUQoZSxyPShyK2Ep LzIpLHM9RChuLHIpLGw9RChuLGEpO3QubW92ZVRvKGlbMF0saVsxXSksdC5i ZXppZXJDdXJ2ZVRvKG9bMF0sb1sxXSxzWzBdLHNbMV0sbFswXSxsWzFdKX12 YXIgcT17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciByPU1hdGguc3FydChlL2gp O3QubW92ZVRvKHIsMCksdC5hcmMoMCwwLHIsMCxwKX19LEg9e2RyYXc6ZnVu Y3Rpb24odCxlKXt2YXIgcj1NYXRoLnNxcnQoZS81KS8yO3QubW92ZVRvKC0z KnIsLXIpLHQubGluZVRvKC1yLC1yKSx0LmxpbmVUbygtciwtMypyKSx0Lmxp bmVUbyhyLC0zKnIpLHQubGluZVRvKHIsLXIpLHQubGluZVRvKDMqciwtciks dC5saW5lVG8oMypyLHIpLHQubGluZVRvKHIsciksdC5saW5lVG8ociwzKnIp LHQubGluZVRvKC1yLDMqciksdC5saW5lVG8oLXIsciksdC5saW5lVG8oLTMq cixyKSx0LmNsb3NlUGF0aCgpfX0sRz1NYXRoLnNxcnQoMS8zKSxZPTIqRyxX PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5zcXJ0KGUvWSksbj1y Kkc7dC5tb3ZlVG8oMCwtciksdC5saW5lVG8obiwwKSx0LmxpbmVUbygwLHIp LHQubGluZVRvKC1uLDApLHQuY2xvc2VQYXRoKCl9fSxYPU1hdGguc2luKGgv MTApL01hdGguc2luKDcqaC8xMCksWj1NYXRoLnNpbihwLzEwKSpYLEo9LU1h dGguY29zKHAvMTApKlgsSz17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciByPU1h dGguc3FydCguODkwODEzMDkxNTI5Mjg1MiplKSxuPVoqcixhPUoqcjt0Lm1v dmVUbygwLC1yKSx0LmxpbmVUbyhuLGEpO2Zvcih2YXIgaT0xO2k8NTsrK2kp e3ZhciBvPXAqaS81LHM9TWF0aC5jb3MobyksbD1NYXRoLnNpbihvKTt0Lmxp bmVUbyhsKnIsLXMqciksdC5saW5lVG8ocypuLWwqYSxsKm4rcyphKX10LmNs b3NlUGF0aCgpfX0sUT17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciByPU1hdGgu c3FydChlKSxuPS1yLzI7dC5yZWN0KG4sbixyLHIpfX0sJD1NYXRoLnNxcnQo MyksdHQ9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgcj0tTWF0aC5zcXJ0KGUv KDMqJCkpO3QubW92ZVRvKDAsMipyKSx0LmxpbmVUbygtJCpyLC1yKSx0Lmxp bmVUbygkKnIsLXIpLHQuY2xvc2VQYXRoKCl9fSxldD0tLjUscnQ9TWF0aC5z cXJ0KDMpLzIsbnQ9MS9NYXRoLnNxcnQoMTIpLGF0PTMqKG50LzIrMSksaXQ9 e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRoLnNxcnQoZS9hdCksbj1y LzIsYT1yKm50LGk9bixvPXIqbnQrcixzPS1pLGw9bzt0Lm1vdmVUbyhuLGEp LHQubGluZVRvKGksbyksdC5saW5lVG8ocyxsKSx0LmxpbmVUbyhldCpuLXJ0 KmEscnQqbitldCphKSx0LmxpbmVUbyhldCppLXJ0Km8scnQqaStldCpvKSx0 LmxpbmVUbyhldCpzLXJ0KmwscnQqcytldCpsKSx0LmxpbmVUbyhldCpuK3J0 KmEsZXQqYS1ydCpuKSx0LmxpbmVUbyhldCppK3J0Km8sZXQqby1ydCppKSx0 LmxpbmVUbyhldCpzK3J0KmwsZXQqbC1ydCpzKSx0LmNsb3NlUGF0aCgpfX0s b3Q9W3EsSCxXLFEsSyx0dCxpdF07ZnVuY3Rpb24gc3QoKXt9ZnVuY3Rpb24g bHQodCxlLHIpe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbygoMip0Ll94MCt0 Ll94MSkvMywoMip0Ll95MCt0Ll95MSkvMywodC5feDArMip0Ll94MSkvMywo dC5feTArMip0Ll95MSkvMywodC5feDArNCp0Ll94MStlKS82LCh0Ll95MCs0 KnQuX3kxK3IpLzYpfWZ1bmN0aW9uIGN0KHQpe3RoaXMuX2NvbnRleHQ9dH1m dW5jdGlvbiB1dCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gaHQodCl7 dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIGZ0KHQsZSl7dGhpcy5fYmFzaXM9 bmV3IGN0KHQpLHRoaXMuX2JldGE9ZX1jdC5wcm90b3R5cGU9e2FyZWFTdGFy dDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigp e3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94 MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9 MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2Fz ZSAzOmx0KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpO2Nhc2UgMjp0aGlzLl9j b250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8 fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250 ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2lu dDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQp e2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4 dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFr O2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2lu dD0zLHRoaXMuX2NvbnRleHQubGluZVRvKCg1KnRoaXMuX3gwK3RoaXMuX3gx KS82LCg1KnRoaXMuX3kwK3RoaXMuX3kxKS82KTtkZWZhdWx0Omx0KHRoaXMs dCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRo aXMuX3kxLHRoaXMuX3kxPWV9fSx1dC5wcm90b3R5cGU9e2FyZWFTdGFydDpz dCxhcmVhRW5kOnN0LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRo aXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3kwPXRo aXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PU5hTix0aGlzLl9w b2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50 KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5f eTIpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRo aXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0 aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygo dGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95Mikv MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhp cy5wb2ludCh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5wb2ludCh0aGlzLl94 Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCl9fSxw b2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9p bnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gyPXQsdGhpcy5feTI9 ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94Mz10LHRoaXMu X3kzPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDQ9dCx0 aGlzLl95ND1lLHRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MCs0KnRo aXMuX3gxK3QpLzYsKHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNik7YnJlYWs7 ZGVmYXVsdDpsdCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5f eDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0saHQucHJvdG90 eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFF bmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0 aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFO LHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGlu ZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2Nv bnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBv aW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2lu dCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3Bv aW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7dmFyIHI9KHRoaXMu X3gwKzQqdGhpcy5feDErdCkvNixuPSh0aGlzLl95MCs0KnRoaXMuX3kxK2Up LzY7dGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhyLG4pOnRoaXMu X2NvbnRleHQubW92ZVRvKHIsbik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50 PTQ7ZGVmYXVsdDpsdCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhp cy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sZnQucHJv dG90eXBlPXtsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMu X3k9W10sdGhpcy5fYmFzaXMubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rp b24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxyPXQubGVuZ3RoLTE7aWYo cj4wKWZvcih2YXIgbixhPXRbMF0saT1lWzBdLG89dFtyXS1hLHM9ZVtyXS1p LGw9LTE7KytsPD1yOyluPWwvcix0aGlzLl9iYXNpcy5wb2ludCh0aGlzLl9i ZXRhKnRbbF0rKDEtdGhpcy5fYmV0YSkqKGErbipvKSx0aGlzLl9iZXRhKmVb bF0rKDEtdGhpcy5fYmV0YSkqKGkrbipzKSk7dGhpcy5feD10aGlzLl95PW51 bGwsdGhpcy5fYmFzaXMubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUp e3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19O3ZhciBwdD1m dW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIDE9PT1lP25ldyBj dCh0KTpuZXcgZnQodCxlKX1yZXR1cm4gci5iZXRhPWZ1bmN0aW9uKGUpe3Jl dHVybiB0KCtlKX0scn0oLjg1KTtmdW5jdGlvbiBkdCh0LGUscil7dC5fY29u dGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0 Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSks dC5feTIrdC5fayoodC5feTEtciksdC5feDIsdC5feTIpfWZ1bmN0aW9uIGd0 KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1ndC5wcm90 b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJl YUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVu Y3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10 aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpm dW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2Nv bnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6 ZHQodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10 aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNs b3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5j dGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2Ug MDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5l VG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2Ug MTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9ZTticmVhaztj YXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OmR0KHRoaXMsdCxlKX10aGlz Ll94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRo aXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9 fTt2YXIgdnQ9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKHQpe3JldHVybiBu ZXcgZ3QodCxlKX1yZXR1cm4gci50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVy biB0KCtlKX0scn0oMCk7ZnVuY3Rpb24gbXQodCxlKXt0aGlzLl9jb250ZXh0 PXQsdGhpcy5faz0oMS1lKS82fW10LnByb3RvdHlwZT17YXJlYVN0YXJ0OnN0 LGFyZWFFbmQ6c3QsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhp cy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhp cy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhp cy5feTU9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtz d2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVU byh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgo KTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMs dGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2Fz ZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQo dGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5f eTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRo aXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRo aXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29u dGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztjYXNl IDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7 ZGVmYXVsdDpkdCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5f eDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlz Ll95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHl0PWZ1bmN0aW9uIHQo ZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbmV3IG10KHQsZSl9cmV0dXJuIHIu dGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LHJ9KDApO2Z1bmN0 aW9uIHh0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn14 dC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9 MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3Rh cnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlz Ll95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGlu ZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYm Mz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0 aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtz d2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9p bnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6 dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRv KHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlz Ll94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVm YXVsdDpkdCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9 dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95 MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGJ0PWZ1bmN0aW9uIHQoZSl7 ZnVuY3Rpb24gcih0KXtyZXR1cm4gbmV3IHh0KHQsZSl9cmV0dXJuIHIudGVu c2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LHJ9KDApO2Z1bmN0aW9u IF90KHQsZSxyKXt2YXIgbj10Ll94MSxhPXQuX3kxLGk9dC5feDIsbz10Ll95 MjtpZih0Ll9sMDFfYT51KXt2YXIgcz0yKnQuX2wwMV8yYSszKnQuX2wwMV9h KnQuX2wxMl9hK3QuX2wxMl8yYSxsPTMqdC5fbDAxX2EqKHQuX2wwMV9hK3Qu X2wxMl9hKTtuPShuKnMtdC5feDAqdC5fbDEyXzJhK3QuX3gyKnQuX2wwMV8y YSkvbCxhPShhKnMtdC5feTAqdC5fbDEyXzJhK3QuX3kyKnQuX2wwMV8yYSkv bH1pZih0Ll9sMjNfYT51KXt2YXIgYz0yKnQuX2wyM18yYSszKnQuX2wyM19h KnQuX2wxMl9hK3QuX2wxMl8yYSxoPTMqdC5fbDIzX2EqKHQuX2wyM19hK3Qu X2wxMl9hKTtpPShpKmMrdC5feDEqdC5fbDIzXzJhLWUqdC5fbDEyXzJhKS9o LG89KG8qYyt0Ll95MSp0Ll9sMjNfMmEtcip0Ll9sMTJfMmEpL2h9dC5fY29u dGV4dC5iZXppZXJDdXJ2ZVRvKG4sYSxpLG8sdC5feDIsdC5feTIpfWZ1bmN0 aW9uIHd0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9d3Qu cHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9 LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0 OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5f eTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wx Ml9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhp cy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtz d2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVU byh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQo dGhpcy5feDIsdGhpcy5feTIpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGlu ZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgo KSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxl KXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciByPXRoaXMuX3gyLXQs bj10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNf MmE9TWF0aC5wb3cocipyK24qbix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlz Ll9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlz Ll9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQs ZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRo aXMuX3BvaW50PTM7ZGVmYXVsdDpfdCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9 dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAx XzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRo aXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQs dGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9 ZX19O3ZhciBrdD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJu IGU/bmV3IHd0KHQsZSk6bmV3IGd0KHQsMCl9cmV0dXJuIHIuYWxwaGE9ZnVu Y3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxyfSguNSk7ZnVuY3Rpb24gVHQodCxl KXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1UdC5wcm90b3R5cGU9 e2FyZWFTdGFydDpzdCxhcmVhRW5kOnN0LGxpbmVTdGFydDpmdW5jdGlvbigp e3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0 PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kz PXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJf YT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMu X2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dp dGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8o dGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7 YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRo aXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2Ug Mzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRo aXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1 KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3Bv aW50KXt2YXIgcj10aGlzLl94Mi10LG49dGhpcy5feTItZTt0aGlzLl9sMjNf YT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KHIqcituKm4sdGhp cy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9w b2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhp cy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRo aXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1 PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0Ol90KHRoaXMsdCxlKX10aGlz Ll9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0 aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9s MjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhp cy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0 aGlzLl95Mj1lfX07dmFyIE10PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcih0 KXtyZXR1cm4gZT9uZXcgVHQodCxlKTpuZXcgbXQodCwwKX1yZXR1cm4gci5h bHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LHJ9KC41KTtmdW5jdGlv biBBdCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfUF0LnBy b3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxh cmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpm dW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kw PXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJf YT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMu X2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRo aXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0 aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9s aW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9w b2ludCl7dmFyIHI9dGhpcy5feDItdCxuPXRoaXMuX3kyLWU7dGhpcy5fbDIz X2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRo aXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5f cG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNl IDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGlu ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0 aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7 ZGVmYXVsdDpfdCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2Es dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wx Ml8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMu X3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhp cy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBTdD1m dW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIGU/bmV3IEF0KHQs ZSk6bmV3IHh0KHQsMCl9cmV0dXJuIHIuYWxwaGE9ZnVuY3Rpb24oZSl7cmV0 dXJuIHQoK2UpfSxyfSguNSk7ZnVuY3Rpb24gRXQodCl7dGhpcy5fY29udGV4 dD10fWZ1bmN0aW9uIEx0KHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBD dCh0LGUscil7dmFyIG49dC5feDEtdC5feDAsYT1lLXQuX3gxLGk9KHQuX3kx LXQuX3kwKS8obnx8YTwwJiYtMCksbz0oci10Ll95MSkvKGF8fG48MCYmLTAp LHM9KGkqYStvKm4pLyhuK2EpO3JldHVybihMdChpKStMdChvKSkqTWF0aC5t aW4oTWF0aC5hYnMoaSksTWF0aC5hYnMobyksLjUqTWF0aC5hYnMocykpfHww fWZ1bmN0aW9uIFB0KHQsZSl7dmFyIHI9dC5feDEtdC5feDA7cmV0dXJuIHI/ KDMqKHQuX3kxLXQuX3kwKS9yLWUpLzI6ZX1mdW5jdGlvbiBPdCh0LGUscil7 dmFyIG49dC5feDAsYT10Ll95MCxpPXQuX3gxLG89dC5feTEscz0oaS1uKS8z O3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhuK3MsYStzKmUsaS1zLG8tcypy LGksbyl9ZnVuY3Rpb24genQodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9u IEl0KHQpe3RoaXMuX2NvbnRleHQ9bmV3IER0KHQpfWZ1bmN0aW9uIER0KHQp e3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBSdCh0KXt0aGlzLl9jb250ZXh0 PXR9ZnVuY3Rpb24gRnQodCl7dmFyIGUscixuPXQubGVuZ3RoLTEsYT1uZXcg QXJyYXkobiksaT1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkobik7Zm9yKGFb MF09MCxpWzBdPTIsb1swXT10WzBdKzIqdFsxXSxlPTE7ZTxuLTE7KytlKWFb ZV09MSxpW2VdPTQsb1tlXT00KnRbZV0rMip0W2UrMV07Zm9yKGFbbi0xXT0y LGlbbi0xXT03LG9bbi0xXT04KnRbbi0xXSt0W25dLGU9MTtlPG47KytlKXI9 YVtlXS9pW2UtMV0saVtlXS09cixvW2VdLT1yKm9bZS0xXTtmb3IoYVtuLTFd PW9bbi0xXS9pW24tMV0sZT1uLTI7ZT49MDstLWUpYVtlXT0ob1tlXS1hW2Ur MV0pL2lbZV07Zm9yKGlbbi0xXT0odFtuXSthW24tMV0pLzIsZT0wO2U8bi0x OysrZSlpW2VdPTIqdFtlKzFdLWFbZSsxXTtyZXR1cm5bYSxpXX1mdW5jdGlv biBCdCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PWV9ZnVuY3Rpb24g TnQodCxlKXtpZigoYT10Lmxlbmd0aCk+MSlmb3IodmFyIHIsbixhLGk9MSxv PXRbZVswXV0scz1vLmxlbmd0aDtpPGE7KytpKWZvcihuPW8sbz10W2VbaV1d LHI9MDtyPHM7KytyKW9bcl1bMV0rPW9bcl1bMF09aXNOYU4obltyXVsxXSk/ bltyXVswXTpuW3JdWzFdfWZ1bmN0aW9uIGp0KHQpe2Zvcih2YXIgZT10Lmxl bmd0aCxyPW5ldyBBcnJheShlKTstLWU+PTA7KXJbZV09ZTtyZXR1cm4gcn1m dW5jdGlvbiBWdCh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIFV0KHQpe3Zh ciBlPXQubWFwKHF0KTtyZXR1cm4ganQodCkuc29ydChmdW5jdGlvbih0LHIp e3JldHVybiBlW3RdLWVbcl19KX1mdW5jdGlvbiBxdCh0KXtmb3IodmFyIGUs cj0tMSxuPTAsYT10Lmxlbmd0aCxpPS0xLzA7KytyPGE7KShlPSt0W3JdWzFd KT5pJiYoaT1lLG49cik7cmV0dXJuIG59ZnVuY3Rpb24gSHQodCl7dmFyIGU9 dC5tYXAoR3QpO3JldHVybiBqdCh0KS5zb3J0KGZ1bmN0aW9uKHQscil7cmV0 dXJuIGVbdF0tZVtyXX0pfWZ1bmN0aW9uIEd0KHQpe2Zvcih2YXIgZSxyPTAs bj0tMSxhPXQubGVuZ3RoOysrbjxhOykoZT0rdFtuXVsxXSkmJihyKz1lKTty ZXR1cm4gcn1FdC5wcm90b3R5cGU9e2FyZWFTdGFydDpzdCxhcmVhRW5kOnN0 LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6 ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBh dGgoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0PSt0LGU9K2UsdGhpcy5fcG9p bnQ/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKToodGhpcy5fcG9pbnQ9MSx0 aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpKX19LHp0LnByb3RvdHlwZT17YXJl YVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0 aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3Ro aXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5h Tix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRo aXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5f eDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpPdCh0aGlzLHRoaXMuX3QwLFB0 KHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUm JjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCks dGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7 dmFyIHI9TmFOO2lmKGU9K2UsKHQ9K3QpIT09dGhpcy5feDF8fGUhPT10aGlz Ll95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9 MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5f Y29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9 MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxPdCh0aGlzLFB0KHRoaXMs cj1DdCh0aGlzLHQsZSkpLHIpO2JyZWFrO2RlZmF1bHQ6T3QodGhpcyx0aGlz Ll90MCxyPUN0KHRoaXMsdCxlKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5f eDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPXJ9 fX0sKEl0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHp0LnByb3RvdHlwZSkp LnBvaW50PWZ1bmN0aW9uKHQsZSl7enQucHJvdG90eXBlLnBvaW50LmNhbGwo dGhpcyxlLHQpfSxEdC5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LGUp e3RoaXMuX2NvbnRleHQubW92ZVRvKGUsdCl9LGNsb3NlUGF0aDpmdW5jdGlv bigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlv bih0LGUpe3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9LGJlemllckN1cnZl VG86ZnVuY3Rpb24odCxlLHIsbixhLGkpe3RoaXMuX2NvbnRleHQuYmV6aWVy Q3VydmVUbyhlLHQsbixyLGksYSl9fSxSdC5wcm90b3R5cGU9e2FyZWFTdGFy dDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigp e3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94 PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlz Ll94LGU9dGhpcy5feSxyPXQubGVuZ3RoO2lmKHIpaWYodGhpcy5fbGluZT90 aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQu bW92ZVRvKHRbMF0sZVswXSksMj09PXIpdGhpcy5fY29udGV4dC5saW5lVG8o dFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgbj1GdCh0KSxhPUZ0KGUpLGk9MCxv PTE7bzxyOysraSwrK28pdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG5b MF1baV0sYVswXVtpXSxuWzFdW2ldLGFbMV1baV0sdFtvXSxlW29dKTsodGhp cy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1yKSYmdGhpcy5fY29udGV4 dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94 PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1 c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fSxCdC5wcm90b3R5cGU9e2FyZWFT dGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlv bigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlz Ll94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rp b24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0 aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9s aW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5f Y29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0x LXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5j dGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2Ug MDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5l VG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2Ug MTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9j b250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRv KHQsZSk7ZWxzZXt2YXIgcj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5f dDt0aGlzLl9jb250ZXh0LmxpbmVUbyhyLHRoaXMuX3kpLHRoaXMuX2NvbnRl eHQubGluZVRvKHIsZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fSx0LmFyYz1m dW5jdGlvbigpe3ZhciB0PWcsbz12LF89cigwKSx3PW51bGwsaz1tLFQ9eSxN PXgsQT1udWxsO2Z1bmN0aW9uIFMoKXt2YXIgcixnLHYsbT0rdC5hcHBseSh0 aGlzLGFyZ3VtZW50cykseT0rby5hcHBseSh0aGlzLGFyZ3VtZW50cykseD1r LmFwcGx5KHRoaXMsYXJndW1lbnRzKS1mLFM9VC5hcHBseSh0aGlzLGFyZ3Vt ZW50cyktZixFPW4oUy14KSxMPVM+eDtpZihBfHwoQT1yPWUucGF0aCgpKSx5 PG0mJihnPXkseT1tLG09ZykseT51KWlmKEU+cC11KUEubW92ZVRvKHkqaSh4 KSx5KmwoeCkpLEEuYXJjKDAsMCx5LHgsUywhTCksbT51JiYoQS5tb3ZlVG8o bSppKFMpLG0qbChTKSksQS5hcmMoMCwwLG0sUyx4LEwpKTtlbHNle3ZhciBD LFAsTz14LHo9UyxJPXgsRD1TLFI9RSxGPUUsQj1NLmFwcGx5KHRoaXMsYXJn dW1lbnRzKS8yLE49Qj51JiYodz8rdy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6 YyhtKm0reSp5KSksaj1zKG4oeS1tKS8yLCtfLmFwcGx5KHRoaXMsYXJndW1l bnRzKSksVj1qLFU9ajtpZihOPnUpe3ZhciBxPWQoTi9tKmwoQikpLEg9ZChO L3kqbChCKSk7KFItPTIqcSk+dT8oSSs9cSo9TD8xOi0xLEQtPXEpOihSPTAs ST1EPSh4K1MpLzIpLChGLT0yKkgpPnU/KE8rPUgqPUw/MTotMSx6LT1IKToo Rj0wLE89ej0oeCtTKS8yKX12YXIgRz15KmkoTyksWT15KmwoTyksVz1tKmko RCksWD1tKmwoRCk7aWYoaj51KXt2YXIgWixKPXkqaSh6KSxLPXkqbCh6KSxR PW0qaShJKSwkPW0qbChJKTtpZihFPGgmJihaPWZ1bmN0aW9uKHQsZSxyLG4s YSxpLG8scyl7dmFyIGw9ci10LGM9bi1lLGg9by1hLGY9cy1pLHA9ZipsLWgq YztpZighKHAqcDx1KSlyZXR1cm5bdCsocD0oaCooZS1pKS1mKih0LWEpKS9w KSpsLGUrcCpjXX0oRyxZLFEsJCxKLEssVyxYKSkpe3ZhciB0dD1HLVpbMF0s ZXQ9WS1aWzFdLHJ0PUotWlswXSxudD1LLVpbMV0sYXQ9MS9sKCgodj0odHQq cnQrZXQqbnQpLyhjKHR0KnR0K2V0KmV0KSpjKHJ0KnJ0K250Km50KSkpPjE/ MDp2PC0xP2g6TWF0aC5hY29zKHYpKS8yKSxpdD1jKFpbMF0qWlswXStaWzFd KlpbMV0pO1Y9cyhqLChtLWl0KS8oYXQtMSkpLFU9cyhqLCh5LWl0KS8oYXQr MSkpfX1GPnU/VT51PyhDPWIoUSwkLEcsWSx5LFUsTCksUD1iKEosSyxXLFgs eSxVLEwpLEEubW92ZVRvKEMuY3grQy54MDEsQy5jeStDLnkwMSksVTxqP0Eu YXJjKEMuY3gsQy5jeSxVLGEoQy55MDEsQy54MDEpLGEoUC55MDEsUC54MDEp LCFMKTooQS5hcmMoQy5jeCxDLmN5LFUsYShDLnkwMSxDLngwMSksYShDLnkx MSxDLngxMSksIUwpLEEuYXJjKDAsMCx5LGEoQy5jeStDLnkxMSxDLmN4K0Mu eDExKSxhKFAuY3krUC55MTEsUC5jeCtQLngxMSksIUwpLEEuYXJjKFAuY3gs UC5jeSxVLGEoUC55MTEsUC54MTEpLGEoUC55MDEsUC54MDEpLCFMKSkpOihB Lm1vdmVUbyhHLFkpLEEuYXJjKDAsMCx5LE8seiwhTCkpOkEubW92ZVRvKEcs WSksbT51JiZSPnU/Vj51PyhDPWIoVyxYLEosSyxtLC1WLEwpLFA9YihHLFks USwkLG0sLVYsTCksQS5saW5lVG8oQy5jeCtDLngwMSxDLmN5K0MueTAxKSxW PGo/QS5hcmMoQy5jeCxDLmN5LFYsYShDLnkwMSxDLngwMSksYShQLnkwMSxQ LngwMSksIUwpOihBLmFyYyhDLmN4LEMuY3ksVixhKEMueTAxLEMueDAxKSxh KEMueTExLEMueDExKSwhTCksQS5hcmMoMCwwLG0sYShDLmN5K0MueTExLEMu Y3grQy54MTEpLGEoUC5jeStQLnkxMSxQLmN4K1AueDExKSxMKSxBLmFyYyhQ LmN4LFAuY3ksVixhKFAueTExLFAueDExKSxhKFAueTAxLFAueDAxKSwhTCkp KTpBLmFyYygwLDAsbSxELEksTCk6QS5saW5lVG8oVyxYKX1lbHNlIEEubW92 ZVRvKDAsMCk7aWYoQS5jbG9zZVBhdGgoKSxyKXJldHVybiBBPW51bGwscisi Inx8bnVsbH1yZXR1cm4gUy5jZW50cm9pZD1mdW5jdGlvbigpe3ZhciBlPSgr dC5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtvLmFwcGx5KHRoaXMsYXJndW1l bnRzKSkvMixyPSgray5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtULmFwcGx5 KHRoaXMsYXJndW1lbnRzKSkvMi1oLzI7cmV0dXJuW2kocikqZSxsKHIpKmVd fSxTLmlubmVyUmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6cigrZSksUyk6dH0s Uy5vdXRlclJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLFMpOm99LFMu Y29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhfPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksUyk6X30sUy5w YWRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KHc9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCks Uyk6d30sUy5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhrPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksUyk6 a30sUy5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8oVD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLFMpOlR9LFMu cGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KE09ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxTKTpNfSxTLmNvbnRl eHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEE9bnVs bD09dD9udWxsOnQsUyk6QX0sU30sdC5hcmVhPUEsdC5saW5lPU0sdC5waWU9 ZnVuY3Rpb24oKXt2YXIgdD1FLGU9UyxuPW51bGwsYT1yKDApLGk9cihwKSxv PXIoMCk7ZnVuY3Rpb24gcyhyKXt2YXIgcyxsLGMsdSxoLGY9ci5sZW5ndGgs ZD0wLGc9bmV3IEFycmF5KGYpLHY9bmV3IEFycmF5KGYpLG09K2EuYXBwbHko dGhpcyxhcmd1bWVudHMpLHk9TWF0aC5taW4ocCxNYXRoLm1heCgtcCxpLmFw cGx5KHRoaXMsYXJndW1lbnRzKS1tKSkseD1NYXRoLm1pbihNYXRoLmFicyh5 KS9mLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxiPXgqKHk8MD8tMToxKTtm b3Iocz0wO3M8ZjsrK3MpKGg9dltnW3NdPXNdPSt0KHJbc10scyxyKSk+MCYm KGQrPWgpO2ZvcihudWxsIT1lP2cuc29ydChmdW5jdGlvbih0LHIpe3JldHVy biBlKHZbdF0sdltyXSl9KTpudWxsIT1uJiZnLnNvcnQoZnVuY3Rpb24odCxl KXtyZXR1cm4gbihyW3RdLHJbZV0pfSkscz0wLGM9ZD8oeS1mKmIpL2Q6MDtz PGY7KytzLG09dSlsPWdbc10sdT1tKygoaD12W2xdKT4wP2gqYzowKStiLHZb bF09e2RhdGE6cltsXSxpbmRleDpzLHZhbHVlOmgsc3RhcnRBbmdsZTptLGVu ZEFuZ2xlOnUscGFkQW5nbGU6eH07cmV0dXJuIHZ9cmV0dXJuIHMudmFsdWU9 ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0 aW9uIj09dHlwZW9mIGU/ZTpyKCtlKSxzKTp0fSxzLnNvcnRWYWx1ZXM9ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuPW51bGws cyk6ZX0scy5zb3J0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhuPXQsZT1udWxsLHMpOm59LHMuc3RhcnRBbmdsZT1mdW5jdGlvbih0 KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBl b2YgdD90OnIoK3QpLHMpOmF9LHMuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ dDpyKCt0KSxzKTppfSxzLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cigr dCkscyk6b30sc30sdC5hcmVhUmFkaWFsPUksdC5yYWRpYWxBcmVhPUksdC5s aW5lUmFkaWFsPXosdC5yYWRpYWxMaW5lPXosdC5wb2ludFJhZGlhbD1ELHQu bGlua0hvcml6b250YWw9ZnVuY3Rpb24oKXtyZXR1cm4gTihqKX0sdC5saW5r VmVydGljYWw9ZnVuY3Rpb24oKXtyZXR1cm4gTihWKX0sdC5saW5rUmFkaWFs PWZ1bmN0aW9uKCl7dmFyIHQ9TihVKTtyZXR1cm4gdC5hbmdsZT10LngsZGVs ZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0fSx0LnN5bWJvbD1m dW5jdGlvbigpe3ZhciB0PXIocSksbj1yKDY0KSxhPW51bGw7ZnVuY3Rpb24g aSgpe3ZhciByO2lmKGF8fChhPXI9ZS5wYXRoKCkpLHQuYXBwbHkodGhpcyxh cmd1bWVudHMpLmRyYXcoYSwrbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHIp cmV0dXJuIGE9bnVsbCxyKyIifHxudWxsfXJldHVybiBpLnR5cGU9ZnVuY3Rp b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09 dHlwZW9mIGU/ZTpyKGUpLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90 OnIoK3QpLGkpOm59LGkuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8oYT1udWxsPT10P251bGw6dCxpKTphfSxpfSx0LnN5 bWJvbHM9b3QsdC5zeW1ib2xDaXJjbGU9cSx0LnN5bWJvbENyb3NzPUgsdC5z eW1ib2xEaWFtb25kPVcsdC5zeW1ib2xTcXVhcmU9USx0LnN5bWJvbFN0YXI9 Syx0LnN5bWJvbFRyaWFuZ2xlPXR0LHQuc3ltYm9sV3llPWl0LHQuY3VydmVC YXNpc0Nsb3NlZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHV0KHQpfSx0LmN1 cnZlQmFzaXNPcGVuPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaHQodCl9LHQu Y3VydmVCYXNpcz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGN0KHQpfSx0LmN1 cnZlQnVuZGxlPXB0LHQuY3VydmVDYXJkaW5hbENsb3NlZD15dCx0LmN1cnZl Q2FyZGluYWxPcGVuPWJ0LHQuY3VydmVDYXJkaW5hbD12dCx0LmN1cnZlQ2F0 bXVsbFJvbUNsb3NlZD1NdCx0LmN1cnZlQ2F0bXVsbFJvbU9wZW49U3QsdC5j dXJ2ZUNhdG11bGxSb209a3QsdC5jdXJ2ZUxpbmVhckNsb3NlZD1mdW5jdGlv bih0KXtyZXR1cm4gbmV3IEV0KHQpfSx0LmN1cnZlTGluZWFyPXcsdC5jdXJ2 ZU1vbm90b25lWD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHp0KHQpfSx0LmN1 cnZlTW9ub3RvbmVZPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgSXQodCl9LHQu Y3VydmVOYXR1cmFsPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUnQodCl9LHQu Y3VydmVTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQnQodCwuNSl9LHQu Y3VydmVTdGVwQWZ0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCdCh0LDEp fSx0LmN1cnZlU3RlcEJlZm9yZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEJ0 KHQsMCl9LHQuc3RhY2s9ZnVuY3Rpb24oKXt2YXIgdD1yKFtdKSxlPWp0LG49 TnQsYT1WdDtmdW5jdGlvbiBpKHIpe3ZhciBpLG8scz10LmFwcGx5KHRoaXMs YXJndW1lbnRzKSxsPXIubGVuZ3RoLGM9cy5sZW5ndGgsdT1uZXcgQXJyYXko Yyk7Zm9yKGk9MDtpPGM7KytpKXtmb3IodmFyIGgsZj1zW2ldLHA9dVtpXT1u ZXcgQXJyYXkobCksZD0wO2Q8bDsrK2QpcFtkXT1oPVswLCthKHJbZF0sZixk LHIpXSxoLmRhdGE9cltkXTtwLmtleT1mfWZvcihpPTAsbz1lKHUpO2k8Yzsr K2kpdVtvW2ldXS5pbmRleD1pO3JldHVybiBuKHUsbyksdX1yZXR1cm4gaS5r ZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJm dW5jdGlvbiI9PXR5cGVvZiBlP2U6cihSLmNhbGwoZSkpLGkpOnR9LGkudmFs dWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1 bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxpKTphfSxpLm9yZGVyPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/anQ6 ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKFIuY2FsbCh0KSksaSk6ZX0saS5v ZmZzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49 bnVsbD09dD9OdDp0LGkpOm59LGl9LHQuc3RhY2tPZmZzZXRFeHBhbmQ9ZnVu Y3Rpb24odCxlKXtpZigobj10Lmxlbmd0aCk+MCl7Zm9yKHZhciByLG4sYSxp PTAsbz10WzBdLmxlbmd0aDtpPG87KytpKXtmb3IoYT1yPTA7cjxuOysrcilh Kz10W3JdW2ldWzFdfHwwO2lmKGEpZm9yKHI9MDtyPG47KytyKXRbcl1baV1b MV0vPWF9TnQodCxlKX19LHQuc3RhY2tPZmZzZXREaXZlcmdpbmc9ZnVuY3Rp b24odCxlKXtpZigocz10Lmxlbmd0aCk+MSlmb3IodmFyIHIsbixhLGksbyxz LGw9MCxjPXRbZVswXV0ubGVuZ3RoO2w8YzsrK2wpZm9yKGk9bz0wLHI9MDty PHM7KytyKShhPShuPXRbZVtyXV1bbF0pWzFdLW5bMF0pPj0wPyhuWzBdPWks blsxXT1pKz1hKTphPDA/KG5bMV09byxuWzBdPW8rPWEpOm5bMF09aX0sdC5z dGFja09mZnNldE5vbmU9TnQsdC5zdGFja09mZnNldFNpbGhvdWV0dGU9ZnVu Y3Rpb24odCxlKXtpZigocj10Lmxlbmd0aCk+MCl7Zm9yKHZhciByLG49MCxh PXRbZVswXV0saT1hLmxlbmd0aDtuPGk7KytuKXtmb3IodmFyIG89MCxzPTA7 bzxyOysrbylzKz10W29dW25dWzFdfHwwO2Fbbl1bMV0rPWFbbl1bMF09LXMv Mn1OdCh0LGUpfX0sdC5zdGFja09mZnNldFdpZ2dsZT1mdW5jdGlvbih0LGUp e2lmKChhPXQubGVuZ3RoKT4wJiYobj0ocj10W2VbMF1dKS5sZW5ndGgpPjAp e2Zvcih2YXIgcixuLGEsaT0wLG89MTtvPG47KytvKXtmb3IodmFyIHM9MCxs PTAsYz0wO3M8YTsrK3Mpe2Zvcih2YXIgdT10W2Vbc11dLGg9dVtvXVsxXXx8 MCxmPShoLSh1W28tMV1bMV18fDApKS8yLHA9MDtwPHM7KytwKXt2YXIgZD10 W2VbcF1dO2YrPShkW29dWzFdfHwwKS0oZFtvLTFdWzFdfHwwKX1sKz1oLGMr PWYqaH1yW28tMV1bMV0rPXJbby0xXVswXT1pLGwmJihpLT1jL2wpfXJbby0x XVsxXSs9cltvLTFdWzBdPWksTnQodCxlKX19LHQuc3RhY2tPcmRlckFwcGVh cmFuY2U9VXQsdC5zdGFja09yZGVyQXNjZW5kaW5nPUh0LHQuc3RhY2tPcmRl ckRlc2NlbmRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIEh0KHQpLnJldmVyc2Uo KX0sdC5zdGFja09yZGVySW5zaWRlT3V0PWZ1bmN0aW9uKHQpe3ZhciBlLHIs bj10Lmxlbmd0aCxhPXQubWFwKEd0KSxpPVV0KHQpLG89MCxzPTAsbD1bXSxj PVtdO2ZvcihlPTA7ZTxuOysrZSlyPWlbZV0sbzxzPyhvKz1hW3JdLGwucHVz aChyKSk6KHMrPWFbcl0sYy5wdXNoKHIpKTtyZXR1cm4gYy5yZXZlcnNlKCku Y29uY2F0KGwpfSx0LnN0YWNrT3JkZXJOb25lPWp0LHQuc3RhY2tPcmRlclJl dmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGp0KHQpLnJldmVyc2UoKX0sT2Jq ZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p fSwib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQiIT10eXBlb2YgZT9h KHIsdCgiZDMtcGF0aCIpKTphKG4uZDM9bi5kM3x8e30sbi5kMyl9LHsiZDMt cGF0aCI6MTYxfV0sMTY0OltmdW5jdGlvbih0LGUscil7dmFyIG47bj10aGlz LGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZSxyLG49MCxhPTAsaT0w LG89MWUzLHM9MCxsPTAsYz0wLHU9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3Jt YW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsaD0ib2Jq ZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25G cmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93 KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBmKCl7 cmV0dXJuIGx8fChoKHApLGw9dS5ub3coKStjKX1mdW5jdGlvbiBwKCl7bD0w fWZ1bmN0aW9uIGQoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4 dD1udWxsfWZ1bmN0aW9uIGcodCxlLHIpe3ZhciBuPW5ldyBkO3JldHVybiBu LnJlc3RhcnQodCxlLHIpLG59ZnVuY3Rpb24gdigpe2YoKSwrK247Zm9yKHZh ciB0LHI9ZTtyOykodD1sLXIuX3RpbWUpPj0wJiZyLl9jYWxsLmNhbGwobnVs bCx0KSxyPXIuX25leHQ7LS1ufWZ1bmN0aW9uIG0oKXtsPShzPXUubm93KCkp K2Msbj1hPTA7dHJ5e3YoKX1maW5hbGx5e249MCxmdW5jdGlvbigpe3ZhciB0 LG4sYT1lLGk9MS8wO2Zvcig7YTspYS5fY2FsbD8oaT5hLl90aW1lJiYoaT1h Ll90aW1lKSx0PWEsYT1hLl9uZXh0KToobj1hLl9uZXh0LGEuX25leHQ9bnVs bCxhPXQ/dC5fbmV4dD1uOmU9bik7cj10LHgoaSl9KCksbD0wfX1mdW5jdGlv biB5KCl7dmFyIHQ9dS5ub3coKSxlPXQtcztlPm8mJihjLT1lLHM9dCl9ZnVu Y3Rpb24geCh0KXtufHwoYSYmKGE9Y2xlYXJUaW1lb3V0KGEpKSx0LWw+MjQ/ KHQ8MS8wJiYoYT1zZXRUaW1lb3V0KG0sdC11Lm5vdygpLWMpKSxpJiYoaT1j bGVhckludGVydmFsKGkpKSk6KGl8fChzPXUubm93KCksaT1zZXRJbnRlcnZh bCh5LG8pKSxuPTEsaChtKSkpfWQucHJvdG90eXBlPWcucHJvdG90eXBlPXtj b25zdHJ1Y3RvcjpkLHJlc3RhcnQ6ZnVuY3Rpb24odCxuLGEpe2lmKCJmdW5j dGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNr IGlzIG5vdCBhIGZ1bmN0aW9uIik7YT0obnVsbD09YT9mKCk6K2EpKyhudWxs PT1uPzA6K24pLHRoaXMuX25leHR8fHI9PT10aGlzfHwocj9yLl9uZXh0PXRo aXM6ZT10aGlzLHI9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9YSx4 KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1u dWxsLHRoaXMuX3RpbWU9MS8wLHgoKSl9fSx0Lm5vdz1mLHQudGltZXI9Zyx0 LnRpbWVyRmx1c2g9dix0LnRpbWVvdXQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBu PW5ldyBkO3JldHVybiBlPW51bGw9PWU/MDorZSxuLnJlc3RhcnQoZnVuY3Rp b24ocil7bi5zdG9wKCksdChyK2UpfSxlLHIpLG59LHQuaW50ZXJ2YWw9ZnVu Y3Rpb24odCxlLHIpe3ZhciBuPW5ldyBkLGE9ZTtyZXR1cm4gbnVsbD09ZT8o bi5yZXN0YXJ0KHQsZSxyKSxuKTooZT0rZSxyPW51bGw9PXI/ZigpOityLG4u cmVzdGFydChmdW5jdGlvbiBpKG8pe28rPWEsbi5yZXN0YXJ0KGksYSs9ZSxy KSx0KG8pfSxlLHIpLG4pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19l c01vZHVsZSIse3ZhbHVlOiEwfSl9KCJvYmplY3QiPT10eXBlb2YgciYmInVu ZGVmaW5lZCIhPXR5cGVvZiBlP3I6bi5kMz1uLmQzfHx7fSl9LHt9XSwxNjU6 W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24oKXt2YXIgdD17dmVyc2lvbjoi My41LjE3In0scj1bXS5zbGljZSxuPWZ1bmN0aW9uKHQpe3JldHVybiByLmNh bGwodCl9LGE9dGhpcy5kb2N1bWVudDtmdW5jdGlvbiBpKHQpe3JldHVybiB0 JiYodC5vd25lckRvY3VtZW50fHx0LmRvY3VtZW50fHx0KS5kb2N1bWVudEVs ZW1lbnR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmKHQub3duZXJEb2N1bWVu dCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0 fHx0LmRlZmF1bHRWaWV3KX1pZihhKXRyeXtuKGEuZG9jdW1lbnRFbGVtZW50 LmNoaWxkTm9kZXMpWzBdLm5vZGVUeXBlfWNhdGNoKHQpe249ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9bmV3IEFycmF5KGUpO2UtLTspcltl XT10W2VdO3JldHVybiByfX1pZihEYXRlLm5vd3x8KERhdGUubm93PWZ1bmN0 aW9uKCl7cmV0dXJuK25ldyBEYXRlfSksYSl0cnl7YS5jcmVhdGVFbGVtZW50 KCJESVYiKS5zdHlsZS5zZXRQcm9wZXJ0eSgib3BhY2l0eSIsMCwiIil9Y2F0 Y2godCl7dmFyIHM9dGhpcy5FbGVtZW50LnByb3RvdHlwZSxsPXMuc2V0QXR0 cmlidXRlLGM9cy5zZXRBdHRyaWJ1dGVOUyx1PXRoaXMuQ1NTU3R5bGVEZWNs YXJhdGlvbi5wcm90b3R5cGUsaD11LnNldFByb3BlcnR5O3Muc2V0QXR0cmli dXRlPWZ1bmN0aW9uKHQsZSl7bC5jYWxsKHRoaXMsdCxlKyIiKX0scy5zZXRB dHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUscil7Yy5jYWxsKHRoaXMsdCxlLHIr IiIpfSx1LnNldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxyKXtoLmNhbGwodGhp cyx0LGUrIiIscil9fWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbD09PXQ/ TmFOOit0fWZ1bmN0aW9uIGQodCl7cmV0dXJuIWlzTmFOKHQpfWZ1bmN0aW9u IGcodCl7cmV0dXJue2xlZnQ6ZnVuY3Rpb24oZSxyLG4sYSl7Zm9yKGFyZ3Vt ZW50cy5sZW5ndGg8MyYmKG49MCksYXJndW1lbnRzLmxlbmd0aDw0JiYoYT1l Lmxlbmd0aCk7bjxhOyl7dmFyIGk9bithPj4+MTt0KGVbaV0scik8MD9uPWkr MTphPWl9cmV0dXJuIG59LHJpZ2h0OmZ1bmN0aW9uKGUscixuLGEpe2Zvcihh cmd1bWVudHMubGVuZ3RoPDMmJihuPTApLGFyZ3VtZW50cy5sZW5ndGg8NCYm KGE9ZS5sZW5ndGgpO248YTspe3ZhciBpPW4rYT4+PjE7dChlW2ldLHIpPjA/ YT1pOm49aSsxfXJldHVybiBufX19dC5hc2NlbmRpbmc9Zix0LmRlc2NlbmRp bmc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpO YU59LHQubWluPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPS0xLGk9dC5sZW5n dGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7KythPGk7KWlmKG51 bGwhPShuPXRbYV0pJiZuPj1uKXtyPW47YnJlYWt9Zm9yKDsrK2E8aTspbnVs bCE9KG49dFthXSkmJnI+biYmKHI9bil9ZWxzZXtmb3IoOysrYTxpOylpZihu dWxsIT0obj1lLmNhbGwodCx0W2FdLGEpKSYmbj49bil7cj1uO2JyZWFrfWZv cig7KythPGk7KW51bGwhPShuPWUuY2FsbCh0LHRbYV0sYSkpJiZyPm4mJihy PW4pfXJldHVybiByfSx0Lm1heD1mdW5jdGlvbih0LGUpe3ZhciByLG4sYT0t MSxpPXQubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoOysr YTxpOylpZihudWxsIT0obj10W2FdKSYmbj49bil7cj1uO2JyZWFrfWZvcig7 KythPGk7KW51bGwhPShuPXRbYV0pJiZuPnImJihyPW4pfWVsc2V7Zm9yKDsr K2E8aTspaWYobnVsbCE9KG49ZS5jYWxsKHQsdFthXSxhKSkmJm4+PW4pe3I9 bjticmVha31mb3IoOysrYTxpOyludWxsIT0obj1lLmNhbGwodCx0W2FdLGEp KSYmbj5yJiYocj1uKX1yZXR1cm4gcn0sdC5leHRlbnQ9ZnVuY3Rpb24odCxl KXt2YXIgcixuLGEsaT0tMSxvPXQubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMu bGVuZ3RoKXtmb3IoOysraTxvOylpZihudWxsIT0obj10W2ldKSYmbj49bil7 cj1hPW47YnJlYWt9Zm9yKDsrK2k8bzspbnVsbCE9KG49dFtpXSkmJihyPm4m JihyPW4pLGE8biYmKGE9bikpfWVsc2V7Zm9yKDsrK2k8bzspaWYobnVsbCE9 KG49ZS5jYWxsKHQsdFtpXSxpKSkmJm4+PW4pe3I9YT1uO2JyZWFrfWZvcig7 KytpPG87KW51bGwhPShuPWUuY2FsbCh0LHRbaV0saSkpJiYocj5uJiYocj1u KSxhPG4mJihhPW4pKX1yZXR1cm5bcixhXX0sdC5zdW09ZnVuY3Rpb24odCxl KXt2YXIgcixuPTAsYT10Lmxlbmd0aCxpPS0xO2lmKDE9PT1hcmd1bWVudHMu bGVuZ3RoKWZvcig7KytpPGE7KWQocj0rdFtpXSkmJihuKz1yKTtlbHNlIGZv cig7KytpPGE7KWQocj0rZS5jYWxsKHQsdFtpXSxpKSkmJihuKz1yKTtyZXR1 cm4gbn0sdC5tZWFuPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj0wLGE9dC5sZW5n dGgsaT0tMSxvPWE7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2k8 YTspZChyPXAodFtpXSkpP24rPXI6LS1vO2Vsc2UgZm9yKDsrK2k8YTspZChy PXAoZS5jYWxsKHQsdFtpXSxpKSkpP24rPXI6LS1vO2lmKG8pcmV0dXJuIG4v b30sdC5xdWFudGlsZT1mdW5jdGlvbih0LGUpe3ZhciByPSh0Lmxlbmd0aC0x KSplKzEsbj1NYXRoLmZsb29yKHIpLGE9K3Rbbi0xXSxpPXItbjtyZXR1cm4g aT9hK2kqKHRbbl0tYSk6YX0sdC5tZWRpYW49ZnVuY3Rpb24oZSxyKXt2YXIg bixhPVtdLGk9ZS5sZW5ndGgsbz0tMTtpZigxPT09YXJndW1lbnRzLmxlbmd0 aClmb3IoOysrbzxpOylkKG49cChlW29dKSkmJmEucHVzaChuKTtlbHNlIGZv cig7KytvPGk7KWQobj1wKHIuY2FsbChlLGVbb10sbykpKSYmYS5wdXNoKG4p O2lmKGEubGVuZ3RoKXJldHVybiB0LnF1YW50aWxlKGEuc29ydChmKSwuNSl9 LHQudmFyaWFuY2U9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9dC5sZW5ndGgs aT0wLG89MCxzPS0xLGw9MDtpZigxPT09YXJndW1lbnRzLmxlbmd0aClmb3Io OysrczxhOylkKHI9cCh0W3NdKSkmJihvKz0obj1yLWkpKihyLShpKz1uLysr bCkpKTtlbHNlIGZvcig7KytzPGE7KWQocj1wKGUuY2FsbCh0LHRbc10scykp KSYmKG8rPShuPXItaSkqKHItKGkrPW4vKytsKSkpO2lmKGw+MSlyZXR1cm4g by8obC0xKX0sdC5kZXZpYXRpb249ZnVuY3Rpb24oKXt2YXIgZT10LnZhcmlh bmNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZT9NYXRoLnNxcnQo ZSk6ZX07dmFyIHY9ZyhmKTtmdW5jdGlvbiBtKHQpe3JldHVybiB0Lmxlbmd0 aH10LmJpc2VjdExlZnQ9di5sZWZ0LHQuYmlzZWN0PXQuYmlzZWN0UmlnaHQ9 di5yaWdodCx0LmJpc2VjdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBnKDE9PT10 Lmxlbmd0aD9mdW5jdGlvbihlLHIpe3JldHVybiBmKHQoZSkscil9OnQpfSx0 LnNodWZmbGU9ZnVuY3Rpb24odCxlLHIpeyhpPWFyZ3VtZW50cy5sZW5ndGgp PDMmJihyPXQubGVuZ3RoLGk8MiYmKGU9MCkpO2Zvcih2YXIgbixhLGk9ci1l O2k7KWE9TWF0aC5yYW5kb20oKSppLS18MCxuPXRbaStlXSx0W2krZV09dFth K2VdLHRbYStlXT1uO3JldHVybiB0fSx0LnBlcm11dGU9ZnVuY3Rpb24odCxl KXtmb3IodmFyIHI9ZS5sZW5ndGgsbj1uZXcgQXJyYXkocik7ci0tOyluW3Jd PXRbZVtyXV07cmV0dXJuIG59LHQucGFpcnM9ZnVuY3Rpb24odCl7Zm9yKHZh ciBlPTAscj10Lmxlbmd0aC0xLG49dFswXSxhPW5ldyBBcnJheShyPDA/MDpy KTtlPHI7KWFbZV09W24sbj10WysrZV1dO3JldHVybiBhfSx0LnRyYW5zcG9z ZT1mdW5jdGlvbihlKXtpZighKGk9ZS5sZW5ndGgpKXJldHVybltdO2Zvcih2 YXIgcj0tMSxuPXQubWluKGUsbSksYT1uZXcgQXJyYXkobik7KytyPG47KWZv cih2YXIgaSxvPS0xLHM9YVtyXT1uZXcgQXJyYXkoaSk7KytvPGk7KXNbb109 ZVtvXVtyXTtyZXR1cm4gYX0sdC56aXA9ZnVuY3Rpb24oKXtyZXR1cm4gdC50 cmFuc3Bvc2UoYXJndW1lbnRzKX0sdC5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBl PVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaChyKTtyZXR1cm4gZX0sdC52YWx1 ZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNo KHRbcl0pO3JldHVybiBlfSx0LmVudHJpZXM9ZnVuY3Rpb24odCl7dmFyIGU9 W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHtrZXk6cix2YWx1ZTp0W3JdfSk7 cmV0dXJuIGV9LHQubWVyZ2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixh PXQubGVuZ3RoLGk9LTEsbz0wOysraTxhOylvKz10W2ldLmxlbmd0aDtmb3Io cj1uZXcgQXJyYXkobyk7LS1hPj0wOylmb3IoZT0obj10W2FdKS5sZW5ndGg7 LS1lPj0wOylyWy0tb109bltlXTtyZXR1cm4gcn07dmFyIHk9TWF0aC5hYnM7 ZnVuY3Rpb24geCh0LGUpe2Zvcih2YXIgciBpbiBlKU9iamVjdC5kZWZpbmVQ cm9wZXJ0eSh0LnByb3RvdHlwZSxyLHt2YWx1ZTplW3JdLGVudW1lcmFibGU6 ITF9KX1mdW5jdGlvbiBiKCl7dGhpcy5fPU9iamVjdC5jcmVhdGUobnVsbCl9 dC5yYW5nZT1mdW5jdGlvbih0LGUscil7aWYoYXJndW1lbnRzLmxlbmd0aDwz JiYocj0xLGFyZ3VtZW50cy5sZW5ndGg8MiYmKGU9dCx0PTApKSwoZS10KS9y PT0xLzApdGhyb3cgbmV3IEVycm9yKCJpbmZpbml0ZSByYW5nZSIpO3ZhciBu LGE9W10saT1mdW5jdGlvbih0KXt2YXIgZT0xO2Zvcig7dCplJTE7KWUqPTEw O3JldHVybiBlfSh5KHIpKSxvPS0xO2lmKHQqPWksZSo9aSwocio9aSk8MClm b3IoOyhuPXQrciorK28pPmU7KWEucHVzaChuL2kpO2Vsc2UgZm9yKDsobj10 K3IqKytvKTxlOylhLnB1c2gobi9pKTtyZXR1cm4gYX0sdC5tYXA9ZnVuY3Rp b24odCxlKXt2YXIgcj1uZXcgYjtpZih0IGluc3RhbmNlb2YgYil0LmZvckVh Y2goZnVuY3Rpb24odCxlKXtyLnNldCh0LGUpfSk7ZWxzZSBpZihBcnJheS5p c0FycmF5KHQpKXt2YXIgbixhPS0xLGk9dC5sZW5ndGg7aWYoMT09PWFyZ3Vt ZW50cy5sZW5ndGgpZm9yKDsrK2E8aTspci5zZXQoYSx0W2FdKTtlbHNlIGZv cig7KythPGk7KXIuc2V0KGUuY2FsbCh0LG49dFthXSxhKSxuKX1lbHNlIGZv cih2YXIgbyBpbiB0KXIuc2V0KG8sdFtvXSk7cmV0dXJuIHJ9O3ZhciBfPSJf X3Byb3RvX18iLHc9IlwwIjtmdW5jdGlvbiBrKHQpe3JldHVybih0Kz0iIik9 PT1ffHx0WzBdPT09dz93K3Q6dH1mdW5jdGlvbiBUKHQpe3JldHVybih0Kz0i IilbMF09PT13P3Quc2xpY2UoMSk6dH1mdW5jdGlvbiBNKHQpe3JldHVybiBr KHQpaW4gdGhpcy5ffWZ1bmN0aW9uIEEodCl7cmV0dXJuKHQ9ayh0KSlpbiB0 aGlzLl8mJmRlbGV0ZSB0aGlzLl9bdF19ZnVuY3Rpb24gUygpe3ZhciB0PVtd O2Zvcih2YXIgZSBpbiB0aGlzLl8pdC5wdXNoKFQoZSkpO3JldHVybiB0fWZ1 bmN0aW9uIEUoKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzLl8pKyt0O3Jl dHVybiB0fWZ1bmN0aW9uIEwoKXtmb3IodmFyIHQgaW4gdGhpcy5fKXJldHVy biExO3JldHVybiEwfWZ1bmN0aW9uIEMoKXt0aGlzLl89T2JqZWN0LmNyZWF0 ZShudWxsKX1mdW5jdGlvbiBQKHQpe3JldHVybiB0fWZ1bmN0aW9uIE8odCxl LHIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXIuYXBwbHkoZSxhcmd1bWVu dHMpO3JldHVybiBuPT09ZT90Om59fWZ1bmN0aW9uIHoodCxlKXtpZihlIGlu IHQpcmV0dXJuIGU7ZT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xp Y2UoMSk7Zm9yKHZhciByPTAsbj1JLmxlbmd0aDtyPG47KytyKXt2YXIgYT1J W3JdK2U7aWYoYSBpbiB0KXJldHVybiBhfX14KGIse2hhczpNLGdldDpmdW5j dGlvbih0KXtyZXR1cm4gdGhpcy5fW2sodCldfSxzZXQ6ZnVuY3Rpb24odCxl KXtyZXR1cm4gdGhpcy5fW2sodCldPWV9LHJlbW92ZTpBLGtleXM6Uyx2YWx1 ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcy5fKXQu cHVzaCh0aGlzLl9bZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7 dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuXyl0LnB1c2goe2tleTpUKGUp LHZhbHVlOnRoaXMuX1tlXX0pO3JldHVybiB0fSxzaXplOkUsZW1wdHk6TCxm b3JFYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLl8pdC5jYWxs KHRoaXMsVChlKSx0aGlzLl9bZV0pfX0pLHQubmVzdD1mdW5jdGlvbigpe3Zh ciBlLHIsbj17fSxhPVtdLGk9W107ZnVuY3Rpb24gbyh0LGkscyl7aWYocz49 YS5sZW5ndGgpcmV0dXJuIHI/ci5jYWxsKG4saSk6ZT9pLnNvcnQoZSk6aTtm b3IodmFyIGwsYyx1LGgsZj0tMSxwPWkubGVuZ3RoLGQ9YVtzKytdLGc9bmV3 IGI7KytmPHA7KShoPWcuZ2V0KGw9ZChjPWlbZl0pKSk/aC5wdXNoKGMpOmcu c2V0KGwsW2NdKTtyZXR1cm4gdD8oYz10KCksdT1mdW5jdGlvbihlLHIpe2Mu c2V0KGUsbyh0LHIscykpfSk6KGM9e30sdT1mdW5jdGlvbihlLHIpe2NbZV09 byh0LHIscyl9KSxnLmZvckVhY2godSksY31yZXR1cm4gbi5tYXA9ZnVuY3Rp b24odCxlKXtyZXR1cm4gbyhlLHQsMCl9LG4uZW50cmllcz1mdW5jdGlvbihl KXtyZXR1cm4gZnVuY3Rpb24gdChlLHIpe2lmKHI+PWEubGVuZ3RoKXJldHVy biBlO3ZhciBuPVtdLG89aVtyKytdO3JldHVybiBlLmZvckVhY2goZnVuY3Rp b24oZSxhKXtuLnB1c2goe2tleTplLHZhbHVlczp0KGEscil9KX0pLG8/bi5z b3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8odC5rZXksZS5rZXkpfSk6bn0o byh0Lm1hcCxlLDApLDApfSxuLmtleT1mdW5jdGlvbih0KXtyZXR1cm4gYS5w dXNoKHQpLG59LG4uc29ydEtleXM9ZnVuY3Rpb24odCl7cmV0dXJuIGlbYS5s ZW5ndGgtMV09dCxufSxuLnNvcnRWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJu IGU9dCxufSxuLnJvbGx1cD1mdW5jdGlvbih0KXtyZXR1cm4gcj10LG59LG59 LHQuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBDO2lmKHQpZm9yKHZhciBy PTAsbj10Lmxlbmd0aDtyPG47KytyKWUuYWRkKHRbcl0pO3JldHVybiBlfSx4 KEMse2hhczpNLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fW2sodCs9 IiIpXT0hMCx0fSxyZW1vdmU6QSx2YWx1ZXM6UyxzaXplOkUsZW1wdHk6TCxm b3JFYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLl8pdC5jYWxs KHRoaXMsVChlKSl9fSksdC5iZWhhdmlvcj17fSx0LnJlYmluZD1mdW5jdGlv bih0LGUpe2Zvcih2YXIgcixuPTEsYT1hcmd1bWVudHMubGVuZ3RoOysrbjxh Oyl0W3I9YXJndW1lbnRzW25dXT1PKHQsZSxlW3JdKTtyZXR1cm4gdH07dmFy IEk9WyJ3ZWJraXQiLCJtcyIsIm1veiIsIk1veiIsIm8iLCJPIl07ZnVuY3Rp b24gRCgpe31mdW5jdGlvbiBSKCl7fWZ1bmN0aW9uIEYodCl7dmFyIGU9W10s cj1uZXcgYjtmdW5jdGlvbiBuKCl7Zm9yKHZhciByLG49ZSxhPS0xLGk9bi5s ZW5ndGg7KythPGk7KShyPW5bYV0ub24pJiZyLmFwcGx5KHRoaXMsYXJndW1l bnRzKTtyZXR1cm4gdH1yZXR1cm4gbi5vbj1mdW5jdGlvbihuLGEpe3ZhciBp LG89ci5nZXQobik7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vJiZvLm9u OihvJiYoby5vbj1udWxsLGU9ZS5zbGljZSgwLGk9ZS5pbmRleE9mKG8pKS5j b25jYXQoZS5zbGljZShpKzEpKSxyLnJlbW92ZShuKSksYSYmZS5wdXNoKHIu c2V0KG4se29uOmF9KSksdCl9LG59ZnVuY3Rpb24gQigpe3QuZXZlbnQucHJl dmVudERlZmF1bHQoKX1mdW5jdGlvbiBOKCl7Zm9yKHZhciBlLHI9dC5ldmVu dDtlPXIuc291cmNlRXZlbnQ7KXI9ZTtyZXR1cm4gcn1mdW5jdGlvbiBqKGUp e2Zvcih2YXIgcj1uZXcgUixuPTAsYT1hcmd1bWVudHMubGVuZ3RoOysrbjxh OylyW2FyZ3VtZW50c1tuXV09RihyKTtyZXR1cm4gci5vZj1mdW5jdGlvbihu LGEpe3JldHVybiBmdW5jdGlvbihpKXt0cnl7dmFyIG89aS5zb3VyY2VFdmVu dD10LmV2ZW50O2kudGFyZ2V0PWUsdC5ldmVudD1pLHJbaS50eXBlXS5hcHBs eShuLGEpfWZpbmFsbHl7dC5ldmVudD1vfX19LHJ9dC5kaXNwYXRjaD1mdW5j dGlvbigpe2Zvcih2YXIgdD1uZXcgUixlPS0xLHI9YXJndW1lbnRzLmxlbmd0 aDsrK2U8cjspdFthcmd1bWVudHNbZV1dPUYodCk7cmV0dXJuIHR9LFIucHJv dG90eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5pbmRleE9mKCIuIiks bj0iIjtpZihyPj0wJiYobj10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikp LHQpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj90aGlzW3RdLm9uKG4pOnRo aXNbdF0ub24obixlKTtpZigyPT09YXJndW1lbnRzLmxlbmd0aCl7aWYobnVs bD09ZSlmb3IodCBpbiB0aGlzKXRoaXMuaGFzT3duUHJvcGVydHkodCkmJnRo aXNbdF0ub24obixudWxsKTtyZXR1cm4gdGhpc319LHQuZXZlbnQ9bnVsbCx0 LnJlcXVvdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShWLCJcXCQm Iil9O3ZhciBWPS9bXFxcXlwkXCpcK1w/XHxcW1xdXChcKVwuXHtcfV0vZyxV PXt9Ll9fcHJvdG9fXz9mdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9OmZ1 bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdfTtmdW5jdGlv biBxKHQpe3JldHVybiBVKHQsVyksdH12YXIgSD1mdW5jdGlvbih0LGUpe3Jl dHVybiBlLnF1ZXJ5U2VsZWN0b3IodCl9LEc9ZnVuY3Rpb24odCxlKXtyZXR1 cm4gZS5xdWVyeVNlbGVjdG9yQWxsKHQpfSxZPWZ1bmN0aW9uKHQsZSl7dmFy IHI9dC5tYXRjaGVzfHx0W3oodCwibWF0Y2hlc1NlbGVjdG9yIildO3JldHVy bihZPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuY2FsbCh0LGUpfSkodCxlKX07 ImZ1bmN0aW9uIj09dHlwZW9mIFNpenpsZSYmKEg9ZnVuY3Rpb24odCxlKXty ZXR1cm4gU2l6emxlKHQsZSlbMF18fG51bGx9LEc9U2l6emxlLFk9U2l6emxl Lm1hdGNoZXNTZWxlY3RvciksdC5zZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1 cm4gdC5zZWxlY3QoYS5kb2N1bWVudEVsZW1lbnQpfTt2YXIgVz10LnNlbGVj dGlvbi5wcm90b3R5cGU9W107ZnVuY3Rpb24gWCh0KXtyZXR1cm4iZnVuY3Rp b24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIEgodCx0aGlzKX19 ZnVuY3Rpb24gWih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1 bmN0aW9uKCl7cmV0dXJuIEcodCx0aGlzKX19Vy5zZWxlY3Q9ZnVuY3Rpb24o dCl7dmFyIGUscixuLGEsaT1bXTt0PVgodCk7Zm9yKHZhciBvPS0xLHM9dGhp cy5sZW5ndGg7KytvPHM7KXtpLnB1c2goZT1bXSksZS5wYXJlbnROb2RlPShu PXRoaXNbb10pLnBhcmVudE5vZGU7Zm9yKHZhciBsPS0xLGM9bi5sZW5ndGg7 KytsPGM7KShhPW5bbF0pPyhlLnB1c2gocj10LmNhbGwoYSxhLl9fZGF0YV9f LGwsbykpLHImJiJfX2RhdGFfXyJpbiBhJiYoci5fX2RhdGFfXz1hLl9fZGF0 YV9fKSk6ZS5wdXNoKG51bGwpfXJldHVybiBxKGkpfSxXLnNlbGVjdEFsbD1m dW5jdGlvbih0KXt2YXIgZSxyLGE9W107dD1aKHQpO2Zvcih2YXIgaT0tMSxv PXRoaXMubGVuZ3RoOysraTxvOylmb3IodmFyIHM9dGhpc1tpXSxsPS0xLGM9 cy5sZW5ndGg7KytsPGM7KShyPXNbbF0pJiYoYS5wdXNoKGU9bih0LmNhbGwo cixyLl9fZGF0YV9fLGwsaSkpKSxlLnBhcmVudE5vZGU9cik7cmV0dXJuIHEo YSl9O3ZhciBKPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixLPXtz dmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpKLHhsaW5r OiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93 d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93 d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gUShlLHIpe3JldHVy biBlPXQubnMucXVhbGlmeShlKSxudWxsPT1yP2UubG9jYWw/ZnVuY3Rpb24o KXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCl9OmZ1 bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSl9OiJmdW5jdGlvbiI9 PXR5cGVvZiByP2UubG9jYWw/ZnVuY3Rpb24oKXt2YXIgdD1yLmFwcGx5KHRo aXMsYXJndW1lbnRzKTtudWxsPT10P3RoaXMucmVtb3ZlQXR0cmlidXRlTlMo ZS5zcGFjZSxlLmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKGUuc3BhY2Us ZS5sb2NhbCx0KX06ZnVuY3Rpb24oKXt2YXIgdD1yLmFwcGx5KHRoaXMsYXJn dW1lbnRzKTtudWxsPT10P3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpOnRoaXMu c2V0QXR0cmlidXRlKGUsdCl9OmUubG9jYWw/ZnVuY3Rpb24oKXt0aGlzLnNl dEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCxyKX06ZnVuY3Rpb24oKXt0 aGlzLnNldEF0dHJpYnV0ZShlLHIpfX1mdW5jdGlvbiAkKHQpe3JldHVybiB0 LnRyaW0oKS5yZXBsYWNlKC9ccysvZywiICIpfWZ1bmN0aW9uIHR0KGUpe3Jl dHVybiBuZXcgUmVnRXhwKCIoPzpefFxccyspIit0LnJlcXVvdGUoZSkrIig/ Olxccyt8JCkiLCJnIil9ZnVuY3Rpb24gZXQodCl7cmV0dXJuKHQrIiIpLnRy aW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBydCh0LGUpe3ZhciByPSh0 PWV0KHQpLm1hcChudCkpLmxlbmd0aDtyZXR1cm4iZnVuY3Rpb24iPT10eXBl b2YgZT9mdW5jdGlvbigpe2Zvcih2YXIgbj0tMSxhPWUuYXBwbHkodGhpcyxh cmd1bWVudHMpOysrbjxyOyl0W25dKHRoaXMsYSl9OmZ1bmN0aW9uKCl7Zm9y KHZhciBuPS0xOysrbjxyOyl0W25dKHRoaXMsZSl9fWZ1bmN0aW9uIG50KHQp e3ZhciBlPXR0KHQpO3JldHVybiBmdW5jdGlvbihyLG4pe2lmKGE9ci5jbGFz c0xpc3QpcmV0dXJuIG4/YS5hZGQodCk6YS5yZW1vdmUodCk7dmFyIGE9ci5n ZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO24/KGUubGFzdEluZGV4PTAsZS50 ZXN0KGEpfHxyLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCQoYSsiICIrdCkpKTpy LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCQoYS5yZXBsYWNlKGUsIiAiKSkpfX1m dW5jdGlvbiBhdCh0LGUscil7cmV0dXJuIG51bGw9PWU/ZnVuY3Rpb24oKXt0 aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfToiZnVuY3Rpb24iPT10eXBl b2YgZT9mdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMp O251bGw9PW4/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0 eWxlLnNldFByb3BlcnR5KHQsbixyKX06ZnVuY3Rpb24oKXt0aGlzLnN0eWxl LnNldFByb3BlcnR5KHQsZSxyKX19ZnVuY3Rpb24gaXQodCxlKXtyZXR1cm4g bnVsbD09ZT9mdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfToiZnVuY3Rpb24i PT10eXBlb2YgZT9mdW5jdGlvbigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1 bWVudHMpO251bGw9PXI/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1yfTpmdW5j dGlvbigpe3RoaXNbdF09ZX19ZnVuY3Rpb24gb3QoZSl7cmV0dXJuImZ1bmN0 aW9uIj09dHlwZW9mIGU/ZTooZT10Lm5zLnF1YWxpZnkoZSkpLmxvY2FsP2Z1 bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVt ZW50TlMoZS5zcGFjZSxlLmxvY2FsKX06ZnVuY3Rpb24oKXt2YXIgdD10aGlz Lm93bmVyRG9jdW1lbnQscj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gcj09 PUomJnQuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PUo/dC5jcmVh dGVFbGVtZW50KGUpOnQuY3JlYXRlRWxlbWVudE5TKHIsZSl9fWZ1bmN0aW9u IHN0KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQo dGhpcyl9ZnVuY3Rpb24gbHQodCl7cmV0dXJue19fZGF0YV9fOnR9fWZ1bmN0 aW9uIGN0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsdCl9 fWZ1bmN0aW9uIHV0KHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47 cisrKWZvcih2YXIgYSxpPXRbcl0sbz0wLHM9aS5sZW5ndGg7bzxzO28rKyko YT1pW29dKSYmZShhLG8scik7cmV0dXJuIHR9ZnVuY3Rpb24gaHQodCl7cmV0 dXJuIFUodCxmdCksdH10Lm5zPXtwcmVmaXg6SyxxdWFsaWZ5OmZ1bmN0aW9u KHQpe3ZhciBlPXQuaW5kZXhPZigiOiIpLHI9dDtyZXR1cm4gZT49MCYmInht bG5zIiE9PShyPXQuc2xpY2UoMCxlKSkmJih0PXQuc2xpY2UoZSsxKSksSy5o YXNPd25Qcm9wZXJ0eShyKT97c3BhY2U6S1tyXSxsb2NhbDp0fTp0fX0sVy5h dHRyPWZ1bmN0aW9uKGUscil7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigi c3RyaW5nIj09dHlwZW9mIGUpe3ZhciBuPXRoaXMubm9kZSgpO3JldHVybihl PXQubnMucXVhbGlmeShlKSkubG9jYWw/bi5nZXRBdHRyaWJ1dGVOUyhlLnNw YWNlLGUubG9jYWwpOm4uZ2V0QXR0cmlidXRlKGUpfWZvcihyIGluIGUpdGhp cy5lYWNoKFEocixlW3JdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFj aChRKGUscikpfSxXLmNsYXNzZWQ9ZnVuY3Rpb24odCxlKXtpZihhcmd1bWVu dHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIHI9dGhp cy5ub2RlKCksbj0odD1ldCh0KSkubGVuZ3RoLGE9LTE7aWYoZT1yLmNsYXNz TGlzdCl7Zm9yKDsrK2E8bjspaWYoIWUuY29udGFpbnModFthXSkpcmV0dXJu ITF9ZWxzZSBmb3IoZT1yLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsrK2E8bjsp aWYoIXR0KHRbYV0pLnRlc3QoZSkpcmV0dXJuITE7cmV0dXJuITB9Zm9yKGUg aW4gdCl0aGlzLmVhY2gocnQoZSx0W2VdKSk7cmV0dXJuIHRoaXN9cmV0dXJu IHRoaXMuZWFjaChydCh0LGUpKX0sVy5zdHlsZT1mdW5jdGlvbih0LGUscil7 dmFyIG49YXJndW1lbnRzLmxlbmd0aDtpZihuPDMpe2lmKCJzdHJpbmciIT10 eXBlb2YgdCl7Zm9yKHIgaW4gbjwyJiYoZT0iIiksdCl0aGlzLmVhY2goYXQo cix0W3JdLGUpKTtyZXR1cm4gdGhpc31pZihuPDIpe3ZhciBhPXRoaXMubm9k ZSgpO3JldHVybiBvKGEpLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKS5nZXRQ cm9wZXJ0eVZhbHVlKHQpfXI9IiJ9cmV0dXJuIHRoaXMuZWFjaChhdCh0LGUs cikpfSxXLnByb3BlcnR5PWZ1bmN0aW9uKHQsZSl7aWYoYXJndW1lbnRzLmxl bmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHRoaXMubm9k ZSgpW3RdO2ZvcihlIGluIHQpdGhpcy5lYWNoKGl0KGUsdFtlXSkpO3JldHVy biB0aGlzfXJldHVybiB0aGlzLmVhY2goaXQodCxlKSl9LFcudGV4dD1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goImZ1 bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRo aXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX06 bnVsbD09dD9mdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9IiJ9OmZ1bmN0 aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fSk6dGhpcy5ub2RlKCkudGV4dENv bnRlbnR9LFcuaHRtbD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD90aGlzLmVhY2goImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24o KXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRN TD1udWxsPT1lPyIiOmV9Om51bGw9PXQ/ZnVuY3Rpb24oKXt0aGlzLmlubmVy SFRNTD0iIn06ZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fSk6dGhpcy5u b2RlKCkuaW5uZXJIVE1MfSxXLmFwcGVuZD1mdW5jdGlvbih0KXtyZXR1cm4g dD1vdCh0KSx0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFw cGVuZENoaWxkKHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfSxXLmluc2Vy dD1mdW5jdGlvbih0LGUpe3JldHVybiB0PW90KHQpLGU9WChlKSx0aGlzLnNl bGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZSh0LmFw cGx5KHRoaXMsYXJndW1lbnRzKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8 bnVsbCl9KX0sVy5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNo KHN0KX0sVy5kYXRhPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPS0xLGk9dGhp cy5sZW5ndGg7aWYoIWFyZ3VtZW50cy5sZW5ndGgpe2Zvcih0PW5ldyBBcnJh eShpPShyPXRoaXNbMF0pLmxlbmd0aCk7KythPGk7KShuPXJbYV0pJiYodFth XT1uLl9fZGF0YV9fKTtyZXR1cm4gdH1mdW5jdGlvbiBvKHQscil7dmFyIG4s YSxpLG89dC5sZW5ndGgsdT1yLmxlbmd0aCxoPU1hdGgubWluKG8sdSksZj1u ZXcgQXJyYXkodSkscD1uZXcgQXJyYXkodSksZD1uZXcgQXJyYXkobyk7aWYo ZSl7dmFyIGcsdj1uZXcgYixtPW5ldyBBcnJheShvKTtmb3Iobj0tMTsrK248 bzspKGE9dFtuXSkmJih2LmhhcyhnPWUuY2FsbChhLGEuX19kYXRhX18sbikp P2Rbbl09YTp2LnNldChnLGEpLG1bbl09Zyk7Zm9yKG49LTE7KytuPHU7KShh PXYuZ2V0KGc9ZS5jYWxsKHIsaT1yW25dLG4pKSk/ITAhPT1hJiYoZltuXT1h LGEuX19kYXRhX189aSk6cFtuXT1sdChpKSx2LnNldChnLCEwKTtmb3Iobj0t MTsrK248bzspbiBpbiBtJiYhMCE9PXYuZ2V0KG1bbl0pJiYoZFtuXT10W25d KX1lbHNle2ZvcihuPS0xOysrbjxoOylhPXRbbl0saT1yW25dLGE/KGEuX19k YXRhX189aSxmW25dPWEpOnBbbl09bHQoaSk7Zm9yKDtuPHU7KytuKXBbbl09 bHQocltuXSk7Zm9yKDtuPG87KytuKWRbbl09dFtuXX1wLnVwZGF0ZT1mLHAu cGFyZW50Tm9kZT1mLnBhcmVudE5vZGU9ZC5wYXJlbnROb2RlPXQucGFyZW50 Tm9kZSxzLnB1c2gocCksbC5wdXNoKGYpLGMucHVzaChkKX12YXIgcz1odChb XSksbD1xKFtdKSxjPXEoW10pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KWZv cig7KythPGk7KW8ocj10aGlzW2FdLHQuY2FsbChyLHIucGFyZW50Tm9kZS5f X2RhdGFfXyxhKSk7ZWxzZSBmb3IoOysrYTxpOylvKHI9dGhpc1thXSx0KTty ZXR1cm4gbC5lbnRlcj1mdW5jdGlvbigpe3JldHVybiBzfSxsLmV4aXQ9ZnVu Y3Rpb24oKXtyZXR1cm4gY30sbH0sVy5kYXR1bT1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIs dCk6dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iKX0sVy5maWx0ZXI9ZnVuY3Rp b24odCl7dmFyIGUscixuLGE9W107ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0 PWN0KHQpKTtmb3IodmFyIGk9MCxvPXRoaXMubGVuZ3RoO2k8bztpKyspe2Eu cHVzaChlPVtdKSxlLnBhcmVudE5vZGU9KHI9dGhpc1tpXSkucGFyZW50Tm9k ZTtmb3IodmFyIHM9MCxsPXIubGVuZ3RoO3M8bDtzKyspKG49cltzXSkmJnQu Y2FsbChuLG4uX19kYXRhX18scyxpKSYmZS5wdXNoKG4pfXJldHVybiBxKGEp fSxXLm9yZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PS0xLGU9dGhpcy5sZW5n dGg7Kyt0PGU7KWZvcih2YXIgcixuPXRoaXNbdF0sYT1uLmxlbmd0aC0xLGk9 blthXTstLWE+PTA7KShyPW5bYV0pJiYoaSYmaSE9PXIubmV4dFNpYmxpbmcm JmkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixpKSxpPXIpO3JldHVybiB0 aGlzfSxXLnNvcnQ9ZnVuY3Rpb24odCl7dD1mdW5jdGlvbih0KXthcmd1bWVu dHMubGVuZ3RofHwodD1mKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4g ZSYmcj90KGUuX19kYXRhX18sci5fX2RhdGFfXyk6IWUtIXJ9fS5hcHBseSh0 aGlzLGFyZ3VtZW50cyk7Zm9yKHZhciBlPS0xLHI9dGhpcy5sZW5ndGg7Kytl PHI7KXRoaXNbZV0uc29ydCh0KTtyZXR1cm4gdGhpcy5vcmRlcigpfSxXLmVh Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIHV0KHRoaXMsZnVuY3Rpb24oZSxyLG4p e3QuY2FsbChlLGUuX19kYXRhX18scixuKX0pfSxXLmNhbGw9ZnVuY3Rpb24o dCl7dmFyIGU9bihhcmd1bWVudHMpO3JldHVybiB0LmFwcGx5KGVbMF09dGhp cyxlKSx0aGlzfSxXLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9k ZSgpfSxXLm5vZGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPXRoaXMubGVu Z3RoO3Q8ZTt0KyspZm9yKHZhciByPXRoaXNbdF0sbj0wLGE9ci5sZW5ndGg7 bjxhO24rKyl7dmFyIGk9cltuXTtpZihpKXJldHVybiBpfXJldHVybiBudWxs fSxXLnNpemU9ZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybiB1dCh0aGlzLGZ1 bmN0aW9uKCl7Kyt0fSksdH07dmFyIGZ0PVtdO2Z1bmN0aW9uIHB0KGUscixh KXt2YXIgaT0iX19vbiIrZSxvPWUuaW5kZXhPZigiLiIpLHM9Z3Q7bz4wJiYo ZT1lLnNsaWNlKDAsbykpO3ZhciBsPWR0LmdldChlKTtmdW5jdGlvbiBjKCl7 dmFyIHQ9dGhpc1tpXTt0JiYodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGUs dCx0LiQpLGRlbGV0ZSB0aGlzW2ldKX1yZXR1cm4gbCYmKGU9bCxzPXZ0KSxv P3I/ZnVuY3Rpb24oKXt2YXIgdD1zKHIsbihhcmd1bWVudHMpKTtjLmNhbGwo dGhpcyksdGhpcy5hZGRFdmVudExpc3RlbmVyKGUsdGhpc1tpXT10LHQuJD1h KSx0Ll89cn06YzpyP0Q6ZnVuY3Rpb24oKXt2YXIgcixuPW5ldyBSZWdFeHAo Il5fX29uKFteLl0rKSIrdC5yZXF1b3RlKGUpKyIkIik7Zm9yKHZhciBhIGlu IHRoaXMpaWYocj1hLm1hdGNoKG4pKXt2YXIgaT10aGlzW2FdO3RoaXMucmVt b3ZlRXZlbnRMaXN0ZW5lcihyWzFdLGksaS4kKSxkZWxldGUgdGhpc1thXX19 fXQuc2VsZWN0aW9uLmVudGVyPWh0LHQuc2VsZWN0aW9uLmVudGVyLnByb3Rv dHlwZT1mdCxmdC5hcHBlbmQ9Vy5hcHBlbmQsZnQuZW1wdHk9Vy5lbXB0eSxm dC5ub2RlPVcubm9kZSxmdC5jYWxsPVcuY2FsbCxmdC5zaXplPVcuc2l6ZSxm dC5zZWxlY3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixhLGksbz1bXSxz PS0xLGw9dGhpcy5sZW5ndGg7KytzPGw7KXtuPShhPXRoaXNbc10pLnVwZGF0 ZSxvLnB1c2goZT1bXSksZS5wYXJlbnROb2RlPWEucGFyZW50Tm9kZTtmb3Io dmFyIGM9LTEsdT1hLmxlbmd0aDsrK2M8dTspKGk9YVtjXSk/KGUucHVzaChu W2NdPXI9dC5jYWxsKGEucGFyZW50Tm9kZSxpLl9fZGF0YV9fLGMscykpLHIu X19kYXRhX189aS5fX2RhdGFfXyk6ZS5wdXNoKG51bGwpfXJldHVybiBxKG8p fSxmdC5pbnNlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg8MiYmKHI9dGhpcyxlPWZ1bmN0aW9uKHQsZSxpKXt2 YXIgbyxzPXJbaV0udXBkYXRlLGw9cy5sZW5ndGg7Zm9yKGkhPWEmJihhPWks bj0wKSxlPj1uJiYobj1lKzEpOyEobz1zW25dKSYmKytuPGw7KTtyZXR1cm4g b30pLFcuaW5zZXJ0LmNhbGwodGhpcyx0LGUpfSx0LnNlbGVjdD1mdW5jdGlv bih0KXt2YXIgZTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/KGU9W0godCxh KV0pLnBhcmVudE5vZGU9YS5kb2N1bWVudEVsZW1lbnQ6KGU9W3RdKS5wYXJl bnROb2RlPWkodCkscShbZV0pfSx0LnNlbGVjdEFsbD1mdW5jdGlvbih0KXt2 YXIgZTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/KGU9bihHKHQsYSkpKS5w YXJlbnROb2RlPWEuZG9jdW1lbnRFbGVtZW50OihlPW4odCkpLnBhcmVudE5v ZGU9bnVsbCxxKFtlXSl9LFcub249ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWFy Z3VtZW50cy5sZW5ndGg7aWYobjwzKXtpZigic3RyaW5nIiE9dHlwZW9mIHQp e2ZvcihyIGluIG48MiYmKGU9ITEpLHQpdGhpcy5lYWNoKHB0KHIsdFtyXSxl KSk7cmV0dXJuIHRoaXN9aWYobjwyKXJldHVybihuPXRoaXMubm9kZSgpWyJf X29uIit0XSkmJm4uXztyPSExfXJldHVybiB0aGlzLmVhY2gocHQodCxlLHIp KX07dmFyIGR0PXQubWFwKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNl bGVhdmU6Im1vdXNlb3V0In0pO2Z1bmN0aW9uIGd0KGUscil7cmV0dXJuIGZ1 bmN0aW9uKG4pe3ZhciBhPXQuZXZlbnQ7dC5ldmVudD1uLHJbMF09dGhpcy5f X2RhdGFfXzt0cnl7ZS5hcHBseSh0aGlzLHIpfWZpbmFsbHl7dC5ldmVudD1h fX19ZnVuY3Rpb24gdnQodCxlKXt2YXIgcj1ndCh0LGUpO3JldHVybiBmdW5j dGlvbih0KXt2YXIgZT10LnJlbGF0ZWRUYXJnZXQ7ZSYmKGU9PT10aGlzfHw4 JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHxyLmNhbGwodGhp cyx0KX19YSYmZHQuZm9yRWFjaChmdW5jdGlvbih0KXsib24iK3QgaW4gYSYm ZHQucmVtb3ZlKHQpfSk7dmFyIG10LHl0PTA7ZnVuY3Rpb24geHQoZSl7dmFy IHI9Ii5kcmFnc3VwcHJlc3MtIisgKyt5dCxuPSJjbGljayIrcixhPXQuc2Vs ZWN0KG8oZSkpLm9uKCJ0b3VjaG1vdmUiK3IsQikub24oImRyYWdzdGFydCIr cixCKS5vbigic2VsZWN0c3RhcnQiK3IsQik7aWYobnVsbD09bXQmJihtdD0h KCJvbnNlbGVjdHN0YXJ0ImluIGUpJiZ6KGUuc3R5bGUsInVzZXJTZWxlY3Qi KSksbXQpe3ZhciBzPWkoZSkuc3R5bGUsbD1zW210XTtzW210XT0ibm9uZSJ9 cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKGEub24ocixudWxsKSxtdCYmKHNbbXRd PWwpLHQpe3ZhciBlPWZ1bmN0aW9uKCl7YS5vbihuLG51bGwpfTthLm9uKG4s ZnVuY3Rpb24oKXtCKCksZSgpfSwhMCksc2V0VGltZW91dChlLDApfX19dC5t b3VzZT1mdW5jdGlvbih0KXtyZXR1cm4gX3QodCxOKCkpfTt2YXIgYnQ9dGhp cy5uYXZpZ2F0b3ImJi9XZWJLaXQvLnRlc3QodGhpcy5uYXZpZ2F0b3IudXNl ckFnZW50KT8tMTowO2Z1bmN0aW9uIF90KGUscil7ci5jaGFuZ2VkVG91Y2hl cyYmKHI9ci5jaGFuZ2VkVG91Y2hlc1swXSk7dmFyIG49ZS5vd25lclNWR0Vs ZW1lbnR8fGU7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGE9bi5jcmVhdGVT VkdQb2ludCgpO2lmKGJ0PDApe3ZhciBpPW8oZSk7aWYoaS5zY3JvbGxYfHxp LnNjcm9sbFkpe3ZhciBzPShuPXQuc2VsZWN0KCJib2R5IikuYXBwZW5kKCJz dmciKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAs bWFyZ2luOjAscGFkZGluZzowLGJvcmRlcjoibm9uZSJ9LCJpbXBvcnRhbnQi KSlbMF1bMF0uZ2V0U2NyZWVuQ1RNKCk7YnQ9IShzLmZ8fHMuZSksbi5yZW1v dmUoKX19cmV0dXJuIGJ0PyhhLng9ci5wYWdlWCxhLnk9ci5wYWdlWSk6KGEu eD1yLmNsaWVudFgsYS55PXIuY2xpZW50WSksWyhhPWEubWF0cml4VHJhbnNm b3JtKGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxhLnldfXZhciBs PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW3IuY2xpZW50WC1s LmxlZnQtZS5jbGllbnRMZWZ0LHIuY2xpZW50WS1sLnRvcC1lLmNsaWVudFRv cF19ZnVuY3Rpb24gd3QoKXtyZXR1cm4gdC5ldmVudC5jaGFuZ2VkVG91Y2hl c1swXS5pZGVudGlmaWVyfXQudG91Y2g9ZnVuY3Rpb24odCxlLHIpe2lmKGFy Z3VtZW50cy5sZW5ndGg8MyYmKHI9ZSxlPU4oKS5jaGFuZ2VkVG91Y2hlcyks ZSlmb3IodmFyIG4sYT0wLGk9ZS5sZW5ndGg7YTxpOysrYSlpZigobj1lW2Fd KS5pZGVudGlmaWVyPT09cilyZXR1cm4gX3QodCxuKX0sdC5iZWhhdmlvci5k cmFnPWZ1bmN0aW9uKCl7dmFyIGU9aihpLCJkcmFnIiwiZHJhZ3N0YXJ0Iiwi ZHJhZ2VuZCIpLHI9bnVsbCxuPXMoRCx0Lm1vdXNlLG8sIm1vdXNlbW92ZSIs Im1vdXNldXAiKSxhPXMod3QsdC50b3VjaCxQLCJ0b3VjaG1vdmUiLCJ0b3Vj aGVuZCIpO2Z1bmN0aW9uIGkoKXt0aGlzLm9uKCJtb3VzZWRvd24uZHJhZyIs bikub24oInRvdWNoc3RhcnQuZHJhZyIsYSl9ZnVuY3Rpb24gcyhuLGEsaSxv LHMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBsLGM9dC5ldmVudC50YXJnZXQu Y29ycmVzcG9uZGluZ0VsZW1lbnR8fHQuZXZlbnQudGFyZ2V0LHU9dGhpcy5w YXJlbnROb2RlLGg9ZS5vZih0aGlzLGFyZ3VtZW50cyksZj0wLHA9bigpLGQ9 Ii5kcmFnIisobnVsbD09cD8iIjoiLSIrcCksZz10LnNlbGVjdChpKGMpKS5v bihvK2QsZnVuY3Rpb24oKXt2YXIgdCxlLHI9YSh1LHApO2lmKCFyKXJldHVy bjt0PXJbMF0tbVswXSxlPXJbMV0tbVsxXSxmfD10fGUsbT1yLGgoe3R5cGU6 ImRyYWciLHg6clswXStsWzBdLHk6clsxXStsWzFdLGR4OnQsZHk6ZX0pfSku b24ocytkLGZ1bmN0aW9uKCl7aWYoIWEodSxwKSlyZXR1cm47Zy5vbihvK2Qs bnVsbCkub24ocytkLG51bGwpLHYoZiksaCh7dHlwZToiZHJhZ2VuZCJ9KX0p LHY9eHQoYyksbT1hKHUscCk7bD1yP1sobD1yLmFwcGx5KHRoaXMsYXJndW1l bnRzKSkueC1tWzBdLGwueS1tWzFdXTpbMCwwXSxoKHt0eXBlOiJkcmFnc3Rh cnQifSl9fXJldHVybiBpLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8ocj10LGkpOnJ9LHQucmViaW5kKGksZSwib24iKX0s dC50b3VjaGVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg8MiYmKGU9TigpLnRvdWNoZXMpLGU/bihlKS5tYXAoZnVuY3Rpb24oZSl7 dmFyIHI9X3QodCxlKTtyZXR1cm4gci5pZGVudGlmaWVyPWUuaWRlbnRpZmll cixyfSk6W119O3ZhciBrdD0xZS02LFR0PWt0Kmt0LE10PU1hdGguUEksQXQ9 MipNdCxTdD1BdC1rdCxFdD1NdC8yLEx0PU10LzE4MCxDdD0xODAvTXQ7ZnVu Y3Rpb24gUHQodCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfWZ1bmN0aW9uIE90 KHQsZSxyKXtyZXR1cm4oZVswXS10WzBdKSooclsxXS10WzFdKS0oZVsxXS10 WzFdKSooclswXS10WzBdKX1mdW5jdGlvbiB6dCh0KXtyZXR1cm4gdD4xPzA6 dDwtMT9NdDpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gSXQodCl7cmV0dXJuIHQ+ MT9FdDp0PC0xPy1FdDpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gRHQodCl7cmV0 dXJuKCh0PU1hdGguZXhwKHQpKSsxL3QpLzJ9ZnVuY3Rpb24gUnQodCl7cmV0 dXJuKHQ9TWF0aC5zaW4odC8yKSkqdH12YXIgRnQ9TWF0aC5TUVJUMjt0Lmlu dGVycG9sYXRlWm9vbT1mdW5jdGlvbih0LGUpe3ZhciByLG4sYT10WzBdLGk9 dFsxXSxvPXRbMl0scz1lWzBdLGw9ZVsxXSxjPWVbMl0sdT1zLWEsaD1sLWks Zj11KnUraCpoO2lmKGY8VHQpbj1NYXRoLmxvZyhjL28pL0Z0LHI9ZnVuY3Rp b24odCl7cmV0dXJuW2ErdCp1LGkrdCpoLG8qTWF0aC5leHAoRnQqdCpuKV19 O2Vsc2V7dmFyIHA9TWF0aC5zcXJ0KGYpLGQ9KGMqYy1vKm8rNCpmKS8oMipv KjIqcCksZz0oYypjLW8qby00KmYpLygyKmMqMipwKSx2PU1hdGgubG9nKE1h dGguc3FydChkKmQrMSktZCksbT1NYXRoLmxvZyhNYXRoLnNxcnQoZypnKzEp LWcpO249KG0tdikvRnQscj1mdW5jdGlvbih0KXt2YXIgZSxyPXQqbixzPUR0 KHYpLGw9by8oMipwKSoocyooZT1GdCpyK3YsKChlPU1hdGguZXhwKDIqZSkp LTEpLyhlKzEpKS1mdW5jdGlvbih0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkp LTEvdCkvMn0odikpO3JldHVyblthK2wqdSxpK2wqaCxvKnMvRHQoRnQqcit2 KV19fXJldHVybiByLmR1cmF0aW9uPTFlMypuLHJ9LHQuYmVoYXZpb3Iuem9v bT1mdW5jdGlvbigpe3ZhciBlLHIsbixpLHMsbCxjLHUsaCxmPXt4OjAseTow LGs6MX0scD1bOTYwLDUwMF0sZD1qdCxnPTI1MCx2PTAsbT0ibW91c2Vkb3du Lnpvb20iLHk9Im1vdXNlbW92ZS56b29tIix4PSJtb3VzZXVwLnpvb20iLGI9 InRvdWNoc3RhcnQuem9vbSIsXz1qKHcsInpvb21zdGFydCIsInpvb20iLCJ6 b29tZW5kIik7ZnVuY3Rpb24gdyh0KXt0Lm9uKG0sUCkub24oTnQrIi56b29t Iix6KS5vbigiZGJsY2xpY2suem9vbSIsSSkub24oYixPKX1mdW5jdGlvbiBr KHQpe3JldHVyblsodFswXS1mLngpL2YuaywodFsxXS1mLnkpL2Yua119ZnVu Y3Rpb24gVCh0KXtmLms9TWF0aC5tYXgoZFswXSxNYXRoLm1pbihkWzFdLHQp KX1mdW5jdGlvbiBNKHQsZSl7ZT1mdW5jdGlvbih0KXtyZXR1cm5bdFswXSpm LmsrZi54LHRbMV0qZi5rK2YueV19KGUpLGYueCs9dFswXS1lWzBdLGYueSs9 dFsxXS1lWzFdfWZ1bmN0aW9uIEEoZSxuLGEsaSl7ZS5fX2NoYXJ0X189e3g6 Zi54LHk6Zi55LGs6Zi5rfSxUKE1hdGgucG93KDIsaSkpLE0ocj1uLGEpLGU9 dC5zZWxlY3QoZSksZz4wJiYoZT1lLnRyYW5zaXRpb24oKS5kdXJhdGlvbihn KSksZS5jYWxsKHcuZXZlbnQpfWZ1bmN0aW9uIFMoKXtjJiZjLmRvbWFpbihs LnJhbmdlKCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybih0LWYueCkvZi5rfSku bWFwKGwuaW52ZXJ0KSksaCYmaC5kb21haW4odS5yYW5nZSgpLm1hcChmdW5j dGlvbih0KXtyZXR1cm4odC1mLnkpL2Yua30pLm1hcCh1LmludmVydCkpfWZ1 bmN0aW9uIEUodCl7disrfHx0KHt0eXBlOiJ6b29tc3RhcnQifSl9ZnVuY3Rp b24gTCh0KXtTKCksdCh7dHlwZToiem9vbSIsc2NhbGU6Zi5rLHRyYW5zbGF0 ZTpbZi54LGYueV19KX1mdW5jdGlvbiBDKHQpey0tdnx8KHQoe3R5cGU6Inpv b21lbmQifSkscj1udWxsKX1mdW5jdGlvbiBQKCl7dmFyIGU9dGhpcyxyPV8u b2YoZSxhcmd1bWVudHMpLG49MCxhPXQuc2VsZWN0KG8oZSkpLm9uKHksZnVu Y3Rpb24oKXtuPTEsTSh0Lm1vdXNlKGUpLGkpLEwocil9KS5vbih4LGZ1bmN0 aW9uKCl7YS5vbih5LG51bGwpLm9uKHgsbnVsbCkscyhuKSxDKHIpfSksaT1r KHQubW91c2UoZSkpLHM9eHQoZSk7cHMuY2FsbChlKSxFKHIpfWZ1bmN0aW9u IE8oKXt2YXIgZSxyPXRoaXMsbj1fLm9mKHIsYXJndW1lbnRzKSxhPXt9LGk9 MCxvPSIuem9vbS0iK3QuZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRp ZmllcixsPSJ0b3VjaG1vdmUiK28sYz0idG91Y2hlbmQiK28sdT1bXSxoPXQu c2VsZWN0KHIpLHA9eHQocik7ZnVuY3Rpb24gZCgpe3ZhciBuPXQudG91Y2hl cyhyKTtyZXR1cm4gZT1mLmssbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuaWRl bnRpZmllciBpbiBhJiYoYVt0LmlkZW50aWZpZXJdPWsodCkpfSksbn1mdW5j dGlvbiBnKCl7dmFyIGU9dC5ldmVudC50YXJnZXQ7dC5zZWxlY3QoZSkub24o bCx2KS5vbihjLHkpLHUucHVzaChlKTtmb3IodmFyIG49dC5ldmVudC5jaGFu Z2VkVG91Y2hlcyxvPTAsaD1uLmxlbmd0aDtvPGg7KytvKWFbbltvXS5pZGVu dGlmaWVyXT1udWxsO3ZhciBwPWQoKSxnPURhdGUubm93KCk7aWYoMT09PXAu bGVuZ3RoKXtpZihnLXM8NTAwKXt2YXIgbT1wWzBdO0EocixtLGFbbS5pZGVu dGlmaWVyXSxNYXRoLmZsb29yKE1hdGgubG9nKGYuaykvTWF0aC5MTjIpKzEp LEIoKX1zPWd9ZWxzZSBpZihwLmxlbmd0aD4xKXttPXBbMF07dmFyIHg9cFsx XSxiPW1bMF0teFswXSxfPW1bMV0teFsxXTtpPWIqYitfKl99fWZ1bmN0aW9u IHYoKXt2YXIgbyxsLGMsdSxoPXQudG91Y2hlcyhyKTtwcy5jYWxsKHIpO2Zv cih2YXIgZj0wLHA9aC5sZW5ndGg7ZjxwOysrZix1PW51bGwpaWYoYz1oW2Zd LHU9YVtjLmlkZW50aWZpZXJdKXtpZihsKWJyZWFrO289YyxsPXV9aWYodSl7 dmFyIGQ9KGQ9Y1swXS1vWzBdKSpkKyhkPWNbMV0tb1sxXSkqZCxnPWkmJk1h dGguc3FydChkL2kpO289WyhvWzBdK2NbMF0pLzIsKG9bMV0rY1sxXSkvMl0s bD1bKGxbMF0rdVswXSkvMiwobFsxXSt1WzFdKS8yXSxUKGcqZSl9cz1udWxs LE0obyxsKSxMKG4pfWZ1bmN0aW9uIHkoKXtpZih0LmV2ZW50LnRvdWNoZXMu bGVuZ3RoKXtmb3IodmFyIGU9dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyxyPTAs aT1lLmxlbmd0aDtyPGk7KytyKWRlbGV0ZSBhW2Vbcl0uaWRlbnRpZmllcl07 Zm9yKHZhciBzIGluIGEpcmV0dXJuIHZvaWQgZCgpfXQuc2VsZWN0QWxsKHUp Lm9uKG8sbnVsbCksaC5vbihtLFApLm9uKGIsTykscCgpLEMobil9ZygpLEUo biksaC5vbihtLG51bGwpLm9uKGIsZyl9ZnVuY3Rpb24geigpe3ZhciBhPV8u b2YodGhpcyxhcmd1bWVudHMpO2k/Y2xlYXJUaW1lb3V0KGkpOihwcy5jYWxs KHRoaXMpLGU9ayhyPW58fHQubW91c2UodGhpcykpLEUoYSkpLGk9c2V0VGlt ZW91dChmdW5jdGlvbigpe2k9bnVsbCxDKGEpfSw1MCksQigpLFQoTWF0aC5w b3coMiwuMDAyKkJ0KCkpKmYuayksTShyLGUpLEwoYSl9ZnVuY3Rpb24gSSgp e3ZhciBlPXQubW91c2UodGhpcykscj1NYXRoLmxvZyhmLmspL01hdGguTE4y O0EodGhpcyxlLGsoZSksdC5ldmVudC5zaGlmdEtleT9NYXRoLmNlaWwocikt MTpNYXRoLmZsb29yKHIpKzEpfXJldHVybiBOdHx8KE50PSJvbndoZWVsImlu IGE/KEJ0PWZ1bmN0aW9uKCl7cmV0dXJuLXQuZXZlbnQuZGVsdGFZKih0LmV2 ZW50LmRlbHRhTW9kZT8xMjA6MSl9LCJ3aGVlbCIpOiJvbm1vdXNld2hlZWwi aW4gYT8oQnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5ldmVudC53aGVlbERlbHRh fSwibW91c2V3aGVlbCIpOihCdD1mdW5jdGlvbigpe3JldHVybi10LmV2ZW50 LmRldGFpbH0sIk1vek1vdXNlUGl4ZWxTY3JvbGwiKSksdy5ldmVudD1mdW5j dGlvbihlKXtlLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1fLm9mKHRoaXMsYXJn dW1lbnRzKSxuPWY7dnM/dC5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmVh Y2goInN0YXJ0Lnpvb20iLGZ1bmN0aW9uKCl7Zj10aGlzLl9fY2hhcnRfX3x8 e3g6MCx5OjAsazoxfSxFKGUpfSkudHdlZW4oInpvb206em9vbSIsZnVuY3Rp b24oKXt2YXIgYT1wWzBdLGk9cFsxXSxvPXI/clswXTphLzIscz1yP3JbMV06 aS8yLGw9dC5pbnRlcnBvbGF0ZVpvb20oWyhvLWYueCkvZi5rLChzLWYueSkv Zi5rLGEvZi5rXSxbKG8tbi54KS9uLmssKHMtbi55KS9uLmssYS9uLmtdKTty ZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9bCh0KSxuPWEvclsyXTt0aGlzLl9f Y2hhcnRfXz1mPXt4Om8tclswXSpuLHk6cy1yWzFdKm4sazpufSxMKGUpfX0p LmVhY2goImludGVycnVwdC56b29tIixmdW5jdGlvbigpe0MoZSl9KS5lYWNo KCJlbmQuem9vbSIsZnVuY3Rpb24oKXtDKGUpfSk6KHRoaXMuX19jaGFydF9f PWYsRShlKSxMKGUpLEMoZSkpfSl9LHcudHJhbnNsYXRlPWZ1bmN0aW9uKHQp e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPXt4Oit0WzBdLHk6K3RbMV0s azpmLmt9LFMoKSx3KTpbZi54LGYueV19LHcuc2NhbGU9ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9e3g6Zi54LHk6Zi55LGs6bnVs bH0sVCgrdCksUygpLHcpOmYua30sdy5zY2FsZUV4dGVudD1mdW5jdGlvbih0 KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1udWxsPT10P2p0OlsrdFsw XSwrdFsxXV0sdyk6ZH0sdy5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KG49dCYmWyt0WzBdLCt0WzFdXSx3KTpufSx3LnNp emU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9dCYm Wyt0WzBdLCt0WzFdXSx3KTpwfSx3LmR1cmF0aW9uPWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPSt0LHcpOmd9LHcueD1mdW5jdGlv bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LGw9dC5jb3B5KCks Zj17eDowLHk6MCxrOjF9LHcpOmN9LHcueT1mdW5jdGlvbih0KXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8oaD10LHU9dC5jb3B5KCksZj17eDowLHk6MCxr OjF9LHcpOmh9LHQucmViaW5kKHcsXywib24iKX07dmFyIEJ0LE50LGp0PVsw LDEvMF07ZnVuY3Rpb24gVnQoKXt9ZnVuY3Rpb24gVXQodCxlLHIpe3JldHVy biB0aGlzIGluc3RhbmNlb2YgVXQ/KHRoaXMuaD0rdCx0aGlzLnM9K2Usdm9p ZCh0aGlzLmw9K3IpKTphcmd1bWVudHMubGVuZ3RoPDI/dCBpbnN0YW5jZW9m IFV0P25ldyBVdCh0LmgsdC5zLHQubCk6dWUoIiIrdCxoZSxVdCk6bmV3IFV0 KHQsZSxyKX10LmNvbG9yPVZ0LFZ0LnByb3RvdHlwZS50b1N0cmluZz1mdW5j dGlvbigpe3JldHVybiB0aGlzLnJnYigpKyIifSx0LmhzbD1VdDt2YXIgcXQ9 VXQucHJvdG90eXBlPW5ldyBWdDtmdW5jdGlvbiBIdCh0LGUscil7dmFyIG4s YTtmdW5jdGlvbiBpKHQpe3JldHVybiBNYXRoLnJvdW5kKDI1NSpmdW5jdGlv bih0KXtyZXR1cm4gdD4zNjA/dC09MzYwOnQ8MCYmKHQrPTM2MCksdDw2MD9u KyhhLW4pKnQvNjA6dDwxODA/YTp0PDI0MD9uKyhhLW4pKigyNDAtdCkvNjA6 bn0odCkpfXJldHVybiB0PWlzTmFOKHQpPzA6KHQlPTM2MCk8MD90KzM2MDp0 LGU9aXNOYU4oZSk/MDplPDA/MDplPjE/MTplLG49Mioocj1yPDA/MDpyPjE/ MTpyKS0oYT1yPD0uNT9yKigxK2UpOnIrZS1yKmUpLG5ldyBpZShpKHQrMTIw KSxpKHQpLGkodC0xMjApKX1mdW5jdGlvbiBHdChlLHIsbil7cmV0dXJuIHRo aXMgaW5zdGFuY2VvZiBHdD8odGhpcy5oPStlLHRoaXMuYz0rcix2b2lkKHRo aXMubD0rbikpOmFyZ3VtZW50cy5sZW5ndGg8Mj9lIGluc3RhbmNlb2YgR3Q/ bmV3IEd0KGUuaCxlLmMsZS5sKTplZShlIGluc3RhbmNlb2YgWHQ/ZS5sOihl PWZlKChlPXQucmdiKGUpKS5yLGUuZyxlLmIpKS5sLGUuYSxlLmIpOm5ldyBH dChlLHIsbil9cXQuYnJpZ2h0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0 aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD90OjEpLG5ldyBVdCh0aGlzLmgs dGhpcy5zLHRoaXMubC90KX0scXQuZGFya2VyPWZ1bmN0aW9uKHQpe3JldHVy biB0PU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/dDoxKSxuZXcgVXQo dGhpcy5oLHRoaXMucyx0KnRoaXMubCl9LHF0LnJnYj1mdW5jdGlvbigpe3Jl dHVybiBIdCh0aGlzLmgsdGhpcy5zLHRoaXMubCl9LHQuaGNsPUd0O3ZhciBZ dD1HdC5wcm90b3R5cGU9bmV3IFZ0O2Z1bmN0aW9uIFd0KHQsZSxyKXtyZXR1 cm4gaXNOYU4odCkmJih0PTApLGlzTmFOKGUpJiYoZT0wKSxuZXcgWHQocixN YXRoLmNvcyh0Kj1MdCkqZSxNYXRoLnNpbih0KSplKX1mdW5jdGlvbiBYdCh0 LGUscil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBYdD8odGhpcy5sPSt0LHRo aXMuYT0rZSx2b2lkKHRoaXMuYj0rcikpOmFyZ3VtZW50cy5sZW5ndGg8Mj90 IGluc3RhbmNlb2YgWHQ/bmV3IFh0KHQubCx0LmEsdC5iKTp0IGluc3RhbmNl b2YgR3Q/V3QodC5oLHQuYyx0LmwpOmZlKCh0PWllKHQpKS5yLHQuZyx0LmIp Om5ldyBYdCh0LGUscil9WXQuYnJpZ2h0ZXI9ZnVuY3Rpb24odCl7cmV0dXJu IG5ldyBHdCh0aGlzLmgsdGhpcy5jLE1hdGgubWluKDEwMCx0aGlzLmwrWnQq KGFyZ3VtZW50cy5sZW5ndGg/dDoxKSkpfSxZdC5kYXJrZXI9ZnVuY3Rpb24o dCl7cmV0dXJuIG5ldyBHdCh0aGlzLmgsdGhpcy5jLE1hdGgubWF4KDAsdGhp cy5sLVp0Kihhcmd1bWVudHMubGVuZ3RoP3Q6MSkpKX0sWXQucmdiPWZ1bmN0 aW9uKCl7cmV0dXJuIFd0KHRoaXMuaCx0aGlzLmMsdGhpcy5sKS5yZ2IoKX0s dC5sYWI9WHQ7dmFyIFp0PTE4LEp0PS45NTA0NyxLdD0xLFF0PTEuMDg4ODMs JHQ9WHQucHJvdG90eXBlPW5ldyBWdDtmdW5jdGlvbiB0ZSh0LGUscil7dmFy IG49KHQrMTYpLzExNixhPW4rZS81MDAsaT1uLXIvMjAwO3JldHVybiBuZXcg aWUoYWUoMy4yNDA0NTQyKihhPXJlKGEpKkp0KS0xLjUzNzEzODUqKG49cmUo bikqS3QpLS40OTg1MzE0KihpPXJlKGkpKlF0KSksYWUoLS45NjkyNjYqYSsx Ljg3NjAxMDgqbisuMDQxNTU2KmkpLGFlKC4wNTU2NDM0KmEtLjIwNDAyNTkq bisxLjA1NzIyNTIqaSkpfWZ1bmN0aW9uIGVlKHQsZSxyKXtyZXR1cm4gdD4w P25ldyBHdChNYXRoLmF0YW4yKHIsZSkqQ3QsTWF0aC5zcXJ0KGUqZStyKnIp LHQpOm5ldyBHdChOYU4sTmFOLHQpfWZ1bmN0aW9uIHJlKHQpe3JldHVybiB0 Pi4yMDY4OTMwMzQ/dCp0KnQ6KHQtNC8yOSkvNy43ODcwMzd9ZnVuY3Rpb24g bmUodCl7cmV0dXJuIHQ+LjAwODg1Nj9NYXRoLnBvdyh0LDEvMyk6Ny43ODcw MzcqdCs0LzI5fWZ1bmN0aW9uIGFlKHQpe3JldHVybiBNYXRoLnJvdW5kKDI1 NSoodDw9LjAwMzA0PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCkt LjA1NSkpfWZ1bmN0aW9uIGllKHQsZSxyKXtyZXR1cm4gdGhpcyBpbnN0YW5j ZW9mIGllPyh0aGlzLnI9fn50LHRoaXMuZz1+fmUsdm9pZCh0aGlzLmI9fn5y KSk6YXJndW1lbnRzLmxlbmd0aDwyP3QgaW5zdGFuY2VvZiBpZT9uZXcgaWUo dC5yLHQuZyx0LmIpOnVlKCIiK3QsaWUsSHQpOm5ldyBpZSh0LGUscil9ZnVu Y3Rpb24gb2UodCl7cmV0dXJuIG5ldyBpZSh0Pj4xNix0Pj44JjI1NSwyNTUm dCl9ZnVuY3Rpb24gc2UodCl7cmV0dXJuIG9lKHQpKyIifSR0LmJyaWdodGVy PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWHQoTWF0aC5taW4oMTAwLHRoaXMu bCtadCooYXJndW1lbnRzLmxlbmd0aD90OjEpKSx0aGlzLmEsdGhpcy5iKX0s JHQuZGFya2VyPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWHQoTWF0aC5tYXgo MCx0aGlzLmwtWnQqKGFyZ3VtZW50cy5sZW5ndGg/dDoxKSksdGhpcy5hLHRo aXMuYil9LCR0LnJnYj1mdW5jdGlvbigpe3JldHVybiB0ZSh0aGlzLmwsdGhp cy5hLHRoaXMuYil9LHQucmdiPWllO3ZhciBsZT1pZS5wcm90b3R5cGU9bmV3 IFZ0O2Z1bmN0aW9uIGNlKHQpe3JldHVybiB0PDE2PyIwIitNYXRoLm1heCgw LHQpLnRvU3RyaW5nKDE2KTpNYXRoLm1pbigyNTUsdCkudG9TdHJpbmcoMTYp fWZ1bmN0aW9uIHVlKHQsZSxyKXt2YXIgbixhLGksbz0wLHM9MCxsPTA7aWYo bj0vKFthLXpdKylcKCguKilcKS8uZXhlYyh0PXQudG9Mb3dlckNhc2UoKSkp c3dpdGNoKGE9blsyXS5zcGxpdCgiLCIpLG5bMV0pe2Nhc2UiaHNsIjpyZXR1 cm4gcihwYXJzZUZsb2F0KGFbMF0pLHBhcnNlRmxvYXQoYVsxXSkvMTAwLHBh cnNlRmxvYXQoYVsyXSkvMTAwKTtjYXNlInJnYiI6cmV0dXJuIGUoZGUoYVsw XSksZGUoYVsxXSksZGUoYVsyXSkpfXJldHVybihpPWdlLmdldCh0KSk/ZShp LnIsaS5nLGkuYik6KG51bGw9PXR8fCIjIiE9PXQuY2hhckF0KDApfHxpc05h TihpPXBhcnNlSW50KHQuc2xpY2UoMSksMTYpKXx8KDQ9PT10Lmxlbmd0aD8o bz0oMzg0MCZpKT4+NCxvfD1vPj40LHM9MjQwJmksc3w9cz4+NCxsPTE1Jmks bHw9bDw8NCk6Nz09PXQubGVuZ3RoJiYobz0oMTY3MTE2ODAmaSk+PjE2LHM9 KDY1MjgwJmkpPj44LGw9MjU1JmkpKSxlKG8scyxsKSl9ZnVuY3Rpb24gaGUo dCxlLHIpe3ZhciBuLGEsaT1NYXRoLm1pbih0Lz0yNTUsZS89MjU1LHIvPTI1 NSksbz1NYXRoLm1heCh0LGUscikscz1vLWksbD0obytpKS8yO3JldHVybiBz PyhhPWw8LjU/cy8obytpKTpzLygyLW8taSksbj10PT1vPyhlLXIpL3MrKGU8 cj82OjApOmU9PW8/KHItdCkvcysyOih0LWUpL3MrNCxuKj02MCk6KG49TmFO LGE9bD4wJiZsPDE/MDpuKSxuZXcgVXQobixhLGwpfWZ1bmN0aW9uIGZlKHQs ZSxyKXt2YXIgbj1uZSgoLjQxMjQ1NjQqKHQ9cGUodCkpKy4zNTc1NzYxKihl PXBlKGUpKSsuMTgwNDM3NSoocj1wZShyKSkpL0p0KSxhPW5lKCguMjEyNjcy OSp0Ky43MTUxNTIyKmUrLjA3MjE3NSpyKS9LdCk7cmV0dXJuIFh0KDExNiph LTE2LDUwMCoobi1hKSwyMDAqKGEtbmUoKC4wMTkzMzM5KnQrLjExOTE5Mipl Ky45NTAzMDQxKnIpL1F0KSkpfWZ1bmN0aW9uIHBlKHQpe3JldHVybih0Lz0y NTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwy LjQpfWZ1bmN0aW9uIGRlKHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJu IiUiPT09dC5jaGFyQXQodC5sZW5ndGgtMSk/TWF0aC5yb3VuZCgyLjU1KmUp OmV9bGUuYnJpZ2h0ZXI9ZnVuY3Rpb24odCl7dD1NYXRoLnBvdyguNyxhcmd1 bWVudHMubGVuZ3RoP3Q6MSk7dmFyIGU9dGhpcy5yLHI9dGhpcy5nLG49dGhp cy5iLGE9MzA7cmV0dXJuIGV8fHJ8fG4/KGUmJmU8YSYmKGU9YSksciYmcjxh JiYocj1hKSxuJiZuPGEmJihuPWEpLG5ldyBpZShNYXRoLm1pbigyNTUsZS90 KSxNYXRoLm1pbigyNTUsci90KSxNYXRoLm1pbigyNTUsbi90KSkpOm5ldyBp ZShhLGEsYSl9LGxlLmRhcmtlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGll KCh0PU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/dDoxKSkqdGhpcy5y LHQqdGhpcy5nLHQqdGhpcy5iKX0sbGUuaHNsPWZ1bmN0aW9uKCl7cmV0dXJu IGhlKHRoaXMucix0aGlzLmcsdGhpcy5iKX0sbGUudG9TdHJpbmc9ZnVuY3Rp b24oKXtyZXR1cm4iIyIrY2UodGhpcy5yKStjZSh0aGlzLmcpK2NlKHRoaXMu Yil9O3ZhciBnZT10Lm1hcCh7YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3 aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxh enVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQs YmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVl dmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2 MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9j b2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6 NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5 YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xk ZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1 NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJr bWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29y YW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEw OTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5 LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUs ZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFy a3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVl OjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2Vy Ymx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZTox Njc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUs Z2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDox Njc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVu OjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25l eWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1 ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4 NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1 LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdo dGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46 MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRn cmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4 ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYy LGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0Nixs aWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMs bGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQs bGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxt YWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJp bmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2 NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5 NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2 NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6 MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIx ODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZh am93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9s aXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIw LG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRl bnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lz ZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6 MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGlu azoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAs cHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcx MTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2Fk ZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjox NjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNp ZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMx LHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3Jl eTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3Rl ZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3Rs ZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYs dmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1 LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dy ZWVuOjEwMTQ1MDc0fSk7ZnVuY3Rpb24gdmUodCl7cmV0dXJuImZ1bmN0aW9u Ij09dHlwZW9mIHQ/dDpmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBt ZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiAyPT09YXJndW1l bnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHImJihuPXIscj1udWxs KSx5ZShlLHIsdCxuKX19ZnVuY3Rpb24geWUoZSxyLGEsaSl7dmFyIG89e30s cz10LmRpc3BhdGNoKCJiZWZvcmVzZW5kIiwicHJvZ3Jlc3MiLCJsb2FkIiwi ZXJyb3IiKSxsPXt9LGM9bmV3IFhNTEh0dHBSZXF1ZXN0LHU9bnVsbDtmdW5j dGlvbiBoKCl7dmFyIHQsZT1jLnN0YXR1cztpZighZSYmZnVuY3Rpb24odCl7 dmFyIGU9dC5yZXNwb25zZVR5cGU7cmV0dXJuIGUmJiJ0ZXh0IiE9PWU/dC5y ZXNwb25zZTp0LnJlc3BvbnNlVGV4dH0oYyl8fGU+PTIwMCYmZTwzMDB8fDMw ND09PWUpe3RyeXt0PWEuY2FsbChvLGMpfWNhdGNoKHQpe3JldHVybiB2b2lk IHMuZXJyb3IuY2FsbChvLHQpfXMubG9hZC5jYWxsKG8sdCl9ZWxzZSBzLmVy cm9yLmNhbGwobyxjKX1yZXR1cm4hdGhpcy5YRG9tYWluUmVxdWVzdHx8Indp dGhDcmVkZW50aWFscyJpbiBjfHwhL14oaHR0cChzKT86KT9cL1wvLy50ZXN0 KGUpfHwoYz1uZXcgWERvbWFpblJlcXVlc3QpLCJvbmxvYWQiaW4gYz9jLm9u bG9hZD1jLm9uZXJyb3I9aDpjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlv bigpe2MucmVhZHlTdGF0ZT4zJiZoKCl9LGMub25wcm9ncmVzcz1mdW5jdGlv bihlKXt2YXIgcj10LmV2ZW50O3QuZXZlbnQ9ZTt0cnl7cy5wcm9ncmVzcy5j YWxsKG8sYyl9ZmluYWxseXt0LmV2ZW50PXJ9fSxvLmhlYWRlcj1mdW5jdGlv bih0LGUpe3JldHVybiB0PSh0KyIiKS50b0xvd2VyQ2FzZSgpLGFyZ3VtZW50 cy5sZW5ndGg8Mj9sW3RdOihudWxsPT1lP2RlbGV0ZSBsW3RdOmxbdF09ZSsi IixvKX0sby5taW1lVHlwZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8ocj1udWxsPT10P251bGw6dCsiIixvKTpyfSxvLnJlc3BvbnNl VHlwZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10 LG8pOnV9LG8ucmVzcG9uc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGE9dCxvfSxb ImdldCIsInBvc3QiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe29bdF09ZnVuY3Rp b24oKXtyZXR1cm4gby5zZW5kLmFwcGx5KG8sW3RdLmNvbmNhdChuKGFyZ3Vt ZW50cykpKX19KSxvLnNlbmQ9ZnVuY3Rpb24odCxuLGEpe2lmKDI9PT1hcmd1 bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKGE9bixuPW51 bGwpLGMub3Blbih0LGUsITApLG51bGw9PXJ8fCJhY2NlcHQiaW4gbHx8KGwu YWNjZXB0PXIrIiwqLyoiKSxjLnNldFJlcXVlc3RIZWFkZXIpZm9yKHZhciBp IGluIGwpYy5zZXRSZXF1ZXN0SGVhZGVyKGksbFtpXSk7cmV0dXJuIG51bGwh PXImJmMub3ZlcnJpZGVNaW1lVHlwZSYmYy5vdmVycmlkZU1pbWVUeXBlKHIp LG51bGwhPXUmJihjLnJlc3BvbnNlVHlwZT11KSxudWxsIT1hJiZvLm9uKCJl cnJvciIsYSkub24oImxvYWQiLGZ1bmN0aW9uKHQpe2EobnVsbCx0KX0pLHMu YmVmb3Jlc2VuZC5jYWxsKG8sYyksYy5zZW5kKG51bGw9PW4/bnVsbDpuKSxv fSxvLmFib3J0PWZ1bmN0aW9uKCl7cmV0dXJuIGMuYWJvcnQoKSxvfSx0LnJl YmluZChvLHMsIm9uIiksbnVsbD09aT9vOm8uZ2V0KGZ1bmN0aW9uKHQpe3Jl dHVybiAxPT09dC5sZW5ndGg/ZnVuY3Rpb24oZSxyKXt0KG51bGw9PWU/cjpu dWxsKX06dH0oaSkpfWdlLmZvckVhY2goZnVuY3Rpb24odCxlKXtnZS5zZXQo dCxvZShlKSl9KSx0LmZ1bmN0b3I9dmUsdC54aHI9bWUoUCksdC5kc3Y9ZnVu Y3Rpb24odCxlKXt2YXIgcj1uZXcgUmVnRXhwKCdbIicrdCsiXG5dIiksbj10 LmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gYSh0LHIsbil7YXJndW1lbnRzLmxl bmd0aDwzJiYobj1yLHI9bnVsbCk7dmFyIGE9eWUodCxlLG51bGw9PXI/aTpv KHIpLG4pO3JldHVybiBhLnJvdz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD9hLnJlc3BvbnNlKG51bGw9PShyPXQpP2k6byh0KSk6cn0s YX1mdW5jdGlvbiBpKHQpe3JldHVybiBhLnBhcnNlKHQucmVzcG9uc2VUZXh0 KX1mdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gYS5w YXJzZShlLnJlc3BvbnNlVGV4dCx0KX19ZnVuY3Rpb24gcyhlKXtyZXR1cm4g ZS5tYXAobCkuam9pbih0KX1mdW5jdGlvbiBsKHQpe3JldHVybiByLnRlc3Qo dCk/JyInK3QucmVwbGFjZSgvXCIvZywnIiInKSsnIic6dH1yZXR1cm4gYS5w YXJzZT1mdW5jdGlvbih0LGUpe3ZhciByO3JldHVybiBhLnBhcnNlUm93cyh0 LGZ1bmN0aW9uKHQsbil7aWYocilyZXR1cm4gcih0LG4tMSk7dmFyIGE9bmV3 IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK3QubWFwKGZ1bmN0aW9uKHQsZSl7 cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpKyI6IGRbIitlKyJdIn0pLmpvaW4o IiwiKSsifSIpO3I9ZT9mdW5jdGlvbih0LHIpe3JldHVybiBlKGEodCkscil9 OmF9KX0sYS5wYXJzZVJvd3M9ZnVuY3Rpb24odCxlKXt2YXIgcixhLGk9e30s bz17fSxzPVtdLGw9dC5sZW5ndGgsYz0wLHU9MDtmdW5jdGlvbiBoKCl7aWYo Yz49bClyZXR1cm4gbztpZihhKXJldHVybiBhPSExLGk7dmFyIGU9YztpZigz ND09PXQuY2hhckNvZGVBdChlKSl7Zm9yKHZhciByPWU7cisrPGw7KWlmKDM0 PT09dC5jaGFyQ29kZUF0KHIpKXtpZigzNCE9PXQuY2hhckNvZGVBdChyKzEp KWJyZWFrOysrcn1yZXR1cm4gYz1yKzIsMTM9PT0ocz10LmNoYXJDb2RlQXQo cisxKSk/KGE9ITAsMTA9PT10LmNoYXJDb2RlQXQocisyKSYmKytjKToxMD09 PXMmJihhPSEwKSx0LnNsaWNlKGUrMSxyKS5yZXBsYWNlKC8iIi9nLCciJyl9 Zm9yKDtjPGw7KXt2YXIgcyx1PTE7aWYoMTA9PT0ocz10LmNoYXJDb2RlQXQo YysrKSkpYT0hMDtlbHNlIGlmKDEzPT09cylhPSEwLDEwPT09dC5jaGFyQ29k ZUF0KGMpJiYoKytjLCsrdSk7ZWxzZSBpZihzIT09biljb250aW51ZTtyZXR1 cm4gdC5zbGljZShlLGMtdSl9cmV0dXJuIHQuc2xpY2UoZSl9Zm9yKDsocj1o KCkpIT09bzspe2Zvcih2YXIgZj1bXTtyIT09aSYmciE9PW87KWYucHVzaChy KSxyPWgoKTtlJiZudWxsPT0oZj1lKGYsdSsrKSl8fHMucHVzaChmKX1yZXR1 cm4gc30sYS5mb3JtYXQ9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShl WzBdKSlyZXR1cm4gYS5mb3JtYXRSb3dzKGUpO3ZhciByPW5ldyBDLG49W107 cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdCly LmhhcyhlKXx8bi5wdXNoKHIuYWRkKGUpKX0pLFtuLm1hcChsKS5qb2luKHQp XS5jb25jYXQoZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKGZ1bmN0 aW9uKHQpe3JldHVybiBsKGVbdF0pfSkuam9pbih0KX0pKS5qb2luKCJcbiIp fSxhLmZvcm1hdFJvd3M9ZnVuY3Rpb24odCl7cmV0dXJuIHQubWFwKHMpLmpv aW4oIlxuIil9LGF9LHQuY3N2PXQuZHN2KCIsIiwidGV4dC9jc3YiKSx0LnRz dj10LmRzdigiXHQiLCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzIik7dmFy IHhlLGJlLF9lLHdlLGtlPXRoaXNbeih0aGlzLCJyZXF1ZXN0QW5pbWF0aW9u RnJhbWUiKV18fGZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0 aW9uIFRlKHQsZSxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoO248MiYmKGU9 MCksbjwzJiYocj1EYXRlLm5vdygpKTt2YXIgYT17Yzp0LHQ6citlLG46bnVs bH07cmV0dXJuIGJlP2JlLm49YTp4ZT1hLGJlPWEsX2V8fCh3ZT1jbGVhclRp bWVvdXQod2UpLF9lPTEsa2UoTWUpKSxhfWZ1bmN0aW9uIE1lKCl7dmFyIHQ9 QWUoKSxlPVNlKCktdDtlPjI0Pyhpc0Zpbml0ZShlKSYmKGNsZWFyVGltZW91 dCh3ZSksd2U9c2V0VGltZW91dChNZSxlKSksX2U9MCk6KF9lPTEsa2UoTWUp KX1mdW5jdGlvbiBBZSgpe2Zvcih2YXIgdD1EYXRlLm5vdygpLGU9eGU7ZTsp dD49ZS50JiZlLmModC1lLnQpJiYoZS5jPW51bGwpLGU9ZS5uO3JldHVybiB0 fWZ1bmN0aW9uIFNlKCl7Zm9yKHZhciB0LGU9eGUscj0xLzA7ZTspZS5jPyhl LnQ8ciYmKHI9ZS50KSxlPSh0PWUpLm4pOmU9dD90Lm49ZS5uOnhlPWUubjty ZXR1cm4gYmU9dCxyfWZ1bmN0aW9uIEVlKHQsZSl7cmV0dXJuIGUtKHQ/TWF0 aC5jZWlsKE1hdGgubG9nKHQpL01hdGguTE4xMCk6MSl9dC50aW1lcj1mdW5j dGlvbigpe1RlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdC50aW1lci5mbHVz aD1mdW5jdGlvbigpe0FlKCksU2UoKX0sdC5yb3VuZD1mdW5jdGlvbih0LGUp e3JldHVybiBlP01hdGgucm91bmQodCooZT1NYXRoLnBvdygxMCxlKSkpL2U6 TWF0aC5yb3VuZCh0KX07dmFyIExlPVsieSIsInoiLCJhIiwiZiIsInAiLCJu IiwiXHhiNSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwi WSJdLm1hcChmdW5jdGlvbih0LGUpe3ZhciByPU1hdGgucG93KDEwLDMqeSg4 LWUpKTtyZXR1cm57c2NhbGU6ZT44P2Z1bmN0aW9uKHQpe3JldHVybiB0L3J9 OmZ1bmN0aW9uKHQpe3JldHVybiB0KnJ9LHN5bWJvbDp0fX0pO2Z1bmN0aW9u IENlKGUpe3ZhciByPWUuZGVjaW1hbCxuPWUudGhvdXNhbmRzLGE9ZS5ncm91 cGluZyxpPWUuY3VycmVuY3ksbz1hJiZuP2Z1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPXQubGVuZ3RoLGk9W10sbz0wLHM9YVswXSxsPTA7cj4wJiZzPjAmJihs K3MrMT5lJiYocz1NYXRoLm1heCgxLGUtbCkpLGkucHVzaCh0LnN1YnN0cmlu ZyhyLT1zLHIrcykpLCEoKGwrPXMrMSk+ZSkpOylzPWFbbz0obysxKSVhLmxl bmd0aF07cmV0dXJuIGkucmV2ZXJzZSgpLmpvaW4obil9OlA7cmV0dXJuIGZ1 bmN0aW9uKGUpe3ZhciBuPVBlLmV4ZWMoZSksYT1uWzFdfHwiICIscz1uWzJd fHwiPiIsbD1uWzNdfHwiLSIsYz1uWzRdfHwiIix1PW5bNV0saD0rbls2XSxm PW5bN10scD1uWzhdLGQ9bls5XSxnPTEsdj0iIixtPSIiLHk9ITEseD0hMDtz d2l0Y2gocCYmKHA9K3Auc3Vic3RyaW5nKDEpKSwodXx8IjAiPT09YSYmIj0i PT09cykmJih1PWE9IjAiLHM9Ij0iKSxkKXtjYXNlIm4iOmY9ITAsZD0iZyI7 YnJlYWs7Y2FzZSIlIjpnPTEwMCxtPSIlIixkPSJmIjticmVhaztjYXNlInAi Omc9MTAwLG09IiUiLGQ9InIiO2JyZWFrO2Nhc2UiYiI6Y2FzZSJvIjpjYXNl IngiOmNhc2UiWCI6IiMiPT09YyYmKHY9IjAiK2QudG9Mb3dlckNhc2UoKSk7 Y2FzZSJjIjp4PSExO2Nhc2UiZCI6eT0hMCxwPTA7YnJlYWs7Y2FzZSJzIjpn PS0xLGQ9InIifSIkIj09PWMmJih2PWlbMF0sbT1pWzFdKSwiciIhPWR8fHB8 fChkPSJnIiksbnVsbCE9cCYmKCJnIj09ZD9wPU1hdGgubWF4KDEsTWF0aC5t aW4oMjEscCkpOiJlIiE9ZCYmImYiIT1kfHwocD1NYXRoLm1heCgwLE1hdGgu bWluKDIwLHApKSkpLGQ9T2UuZ2V0KGQpfHx6ZTt2YXIgYj11JiZmO3JldHVy biBmdW5jdGlvbihlKXt2YXIgbj1tO2lmKHkmJmUlMSlyZXR1cm4iIjt2YXIg aT1lPDB8fDA9PT1lJiYxL2U8MD8oZT0tZSwiLSIpOiItIj09PWw/IiI6bDtp ZihnPDApe3ZhciBjPXQuZm9ybWF0UHJlZml4KGUscCk7ZT1jLnNjYWxlKGUp LG49Yy5zeW1ib2wrbX1lbHNlIGUqPWc7dmFyIF8sdyxrPShlPWQoZSxwKSku bGFzdEluZGV4T2YoIi4iKTtpZihrPDApe3ZhciBUPXg/ZS5sYXN0SW5kZXhP ZigiZSIpOi0xO1Q8MD8oXz1lLHc9IiIpOihfPWUuc3Vic3RyaW5nKDAsVCks dz1lLnN1YnN0cmluZyhUKSl9ZWxzZSBfPWUuc3Vic3RyaW5nKDAsayksdz1y K2Uuc3Vic3RyaW5nKGsrMSk7IXUmJmYmJihfPW8oXywxLzApKTt2YXIgTT12 Lmxlbmd0aCtfLmxlbmd0aCt3Lmxlbmd0aCsoYj8wOmkubGVuZ3RoKSxBPU08 aD9uZXcgQXJyYXkoTT1oLU0rMSkuam9pbihhKToiIjtyZXR1cm4gYiYmKF89 byhBK18sQS5sZW5ndGg/aC13Lmxlbmd0aDoxLzApKSxpKz12LGU9Xyt3LCgi PCI9PT1zP2krZStBOiI+Ij09PXM/QStpK2U6Il4iPT09cz9BLnN1YnN0cmlu ZygwLE0+Pj0xKStpK2UrQS5zdWJzdHJpbmcoTSk6aSsoYj9lOkErZSkpK259 fX10LmZvcm1hdFByZWZpeD1mdW5jdGlvbihlLHIpe3ZhciBuPTA7cmV0dXJu KGU9K2UpJiYoZTwwJiYoZSo9LTEpLHImJihlPXQucm91bmQoZSxFZShlLHIp KSksbj0xK01hdGguZmxvb3IoMWUtMTIrTWF0aC5sb2coZSkvTWF0aC5MTjEw KSxuPU1hdGgubWF4KC0yNCxNYXRoLm1pbigyNCwzKk1hdGguZmxvb3IoKG4t MSkvMykpKSksTGVbOCtuLzNdfTt2YXIgUGU9Lyg/OihbXntdKT8oWzw+PV5d KSk/KFsrXC0gXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuLT9cZCspPyhb YS16JV0pPy9pLE9lPXQubWFwKHtiOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRv U3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcuZnJvbUNo YXJDb2RlKHQpfSxvOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKDgp fSx4OmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKDE2KX0sWDpmdW5j dGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0s ZzpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvUHJlY2lzaW9uKGUpfSxlOmZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5j dGlvbih0LGUpe3JldHVybiB0LnRvRml4ZWQoZSl9LHI6ZnVuY3Rpb24oZSxy KXtyZXR1cm4oZT10LnJvdW5kKGUsRWUoZSxyKSkpLnRvRml4ZWQoTWF0aC5t YXgoMCxNYXRoLm1pbigyMCxFZShlKigxKzFlLTE1KSxyKSkpKX19KTtmdW5j dGlvbiB6ZSh0KXtyZXR1cm4gdCsiIn12YXIgSWU9dC50aW1lPXt9LERlPURh dGU7ZnVuY3Rpb24gUmUoKXt0aGlzLl89bmV3IERhdGUoYXJndW1lbnRzLmxl bmd0aD4xP0RhdGUuVVRDLmFwcGx5KHRoaXMsYXJndW1lbnRzKTphcmd1bWVu dHNbMF0pfVJlLnByb3RvdHlwZT17Z2V0RGF0ZTpmdW5jdGlvbigpe3JldHVy biB0aGlzLl8uZ2V0VVRDRGF0ZSgpfSxnZXREYXk6ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fLmdldFVUQ0RheSgpfSxnZXRGdWxsWWVhcjpmdW5jdGlvbigp e3JldHVybiB0aGlzLl8uZ2V0VVRDRnVsbFllYXIoKX0sZ2V0SG91cnM6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0hvdXJzKCl9LGdldE1pbGxp c2Vjb25kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTWlsbGlz ZWNvbmRzKCl9LGdldE1pbnV0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f LmdldFVUQ01pbnV0ZXMoKX0sZ2V0TW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fLmdldFVUQ01vbnRoKCl9LGdldFNlY29uZHM6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fLmdldFVUQ1NlY29uZHMoKX0sZ2V0VGltZTpmdW5jdGlv bigpe3JldHVybiB0aGlzLl8uZ2V0VGltZSgpfSxnZXRUaW1lem9uZU9mZnNl dDpmdW5jdGlvbigpe3JldHVybiAwfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuXy52YWx1ZU9mKCl9LHNldERhdGU6ZnVuY3Rpb24oKXtGZS5z ZXRVVENEYXRlLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXREYXk6ZnVu Y3Rpb24oKXtGZS5zZXRVVENEYXkuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9 LHNldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7RmUuc2V0VVRDRnVsbFllYXIuYXBw bHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldEhvdXJzOmZ1bmN0aW9uKCl7RmUu c2V0VVRDSG91cnMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1pbGxp c2Vjb25kczpmdW5jdGlvbigpe0ZlLnNldFVUQ01pbGxpc2Vjb25kcy5hcHBs eSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TWludXRlczpmdW5jdGlvbigpe0Zl LnNldFVUQ01pbnV0ZXMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1v bnRoOmZ1bmN0aW9uKCl7RmUuc2V0VVRDTW9udGguYXBwbHkodGhpcy5fLGFy Z3VtZW50cyl9LHNldFNlY29uZHM6ZnVuY3Rpb24oKXtGZS5zZXRVVENTZWNv bmRzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRUaW1lOmZ1bmN0aW9u KCl7RmUuc2V0VGltZS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX19O3ZhciBG ZT1EYXRlLnByb3RvdHlwZTtmdW5jdGlvbiBCZSh0LGUscil7ZnVuY3Rpb24g bihlKXt2YXIgcj10KGUpLG49aShyLDEpO3JldHVybiBlLXI8bi1lP3I6bn1m dW5jdGlvbiBhKHIpe3JldHVybiBlKHI9dChuZXcgRGUoci0xKSksMSkscn1m dW5jdGlvbiBpKHQscil7cmV0dXJuIGUodD1uZXcgRGUoK3QpLHIpLHR9ZnVu Y3Rpb24gbyh0LG4saSl7dmFyIG89YSh0KSxzPVtdO2lmKGk+MSlmb3IoO288 bjspcihvKSVpfHxzLnB1c2gobmV3IERhdGUoK28pKSxlKG8sMSk7ZWxzZSBm b3IoO288bjspcy5wdXNoKG5ldyBEYXRlKCtvKSksZShvLDEpO3JldHVybiBz fXQuZmxvb3I9dCx0LnJvdW5kPW4sdC5jZWlsPWEsdC5vZmZzZXQ9aSx0LnJh bmdlPW87dmFyIHM9dC51dGM9TmUodCk7cmV0dXJuIHMuZmxvb3I9cyxzLnJv dW5kPU5lKG4pLHMuY2VpbD1OZShhKSxzLm9mZnNldD1OZShpKSxzLnJhbmdl PWZ1bmN0aW9uKHQsZSxyKXt0cnl7RGU9UmU7dmFyIG49bmV3IFJlO3JldHVy biBuLl89dCxvKG4sZSxyKX1maW5hbGx5e0RlPURhdGV9fSx0fWZ1bmN0aW9u IE5lKHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3RyeXtEZT1SZTt2YXIgbj1u ZXcgUmU7cmV0dXJuIG4uXz1lLHQobixyKS5ffWZpbmFsbHl7RGU9RGF0ZX19 fWZ1bmN0aW9uIGplKGUpe3ZhciByPWUuZGF0ZVRpbWUsbj1lLmRhdGUsYT1l LnRpbWUsaT1lLnBlcmlvZHMsbz1lLmRheXMscz1lLnNob3J0RGF5cyxsPWUu bW9udGhzLGM9ZS5zaG9ydE1vbnRocztmdW5jdGlvbiB1KHQpe3ZhciBlPXQu bGVuZ3RoO2Z1bmN0aW9uIHIocil7Zm9yKHZhciBuLGEsaSxvPVtdLHM9LTEs bD0wOysrczxlOykzNz09PXQuY2hhckNvZGVBdChzKSYmKG8ucHVzaCh0LnNs aWNlKGwscykpLG51bGwhPShhPVZlW249dC5jaGFyQXQoKytzKV0pJiYobj10 LmNoYXJBdCgrK3MpKSwoaT1fW25dKSYmKG49aShyLG51bGw9PWE/ImUiPT09 bj8iICI6IjAiOmEpKSxvLnB1c2gobiksbD1zKzEpO3JldHVybiBvLnB1c2go dC5zbGljZShsLHMpKSxvLmpvaW4oIiIpfXJldHVybiByLnBhcnNlPWZ1bmN0 aW9uKGUpe3ZhciByPXt5OjE5MDAsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjAs WjpudWxsfTtpZihoKHIsdCxlLDApIT1lLmxlbmd0aClyZXR1cm4gbnVsbDsi cCJpbiByJiYoci5IPXIuSCUxMisxMipyLnApO3ZhciBuPW51bGwhPXIuWiYm RGUhPT1SZSxhPW5ldyhuP1JlOkRlKTtyZXR1cm4iaiJpbiByP2Euc2V0RnVs bFllYXIoci55LDAsci5qKToiVyJpbiByfHwiVSJpbiByPygidyJpbiByfHwo ci53PSJXImluIHI/MTowKSxhLnNldEZ1bGxZZWFyKHIueSwwLDEpLGEuc2V0 RnVsbFllYXIoci55LDAsIlciaW4gcj8oci53KzYpJTcrNypyLlctKGEuZ2V0 RGF5KCkrNSklNzpyLncrNypyLlUtKGEuZ2V0RGF5KCkrNiklNykpOmEuc2V0 RnVsbFllYXIoci55LHIubSxyLmQpLGEuc2V0SG91cnMoci5IKyhyLlovMTAw fDApLHIuTStyLlolMTAwLHIuUyxyLkwpLG4/YS5fOmF9LHIudG9TdHJpbmc9 ZnVuY3Rpb24oKXtyZXR1cm4gdH0scn1mdW5jdGlvbiBoKHQsZSxyLG4pe2Zv cih2YXIgYSxpLG8scz0wLGw9ZS5sZW5ndGgsYz1yLmxlbmd0aDtzPGw7KXtp ZihuPj1jKXJldHVybi0xO2lmKDM3PT09KGE9ZS5jaGFyQ29kZUF0KHMrKykp KXtpZihvPWUuY2hhckF0KHMrKyksIShpPXdbbyBpbiBWZT9lLmNoYXJBdChz KyspOm9dKXx8KG49aSh0LHIsbikpPDApcmV0dXJuLTF9ZWxzZSBpZihhIT1y LmNoYXJDb2RlQXQobisrKSlyZXR1cm4tMX1yZXR1cm4gbn11LnV0Yz1mdW5j dGlvbih0KXt2YXIgZT11KHQpO2Z1bmN0aW9uIHIodCl7dHJ5e3ZhciByPW5l dyhEZT1SZSk7cmV0dXJuIHIuXz10LGUocil9ZmluYWxseXtEZT1EYXRlfX1y ZXR1cm4gci5wYXJzZT1mdW5jdGlvbih0KXt0cnl7RGU9UmU7dmFyIHI9ZS5w YXJzZSh0KTtyZXR1cm4gciYmci5ffWZpbmFsbHl7RGU9RGF0ZX19LHIudG9T dHJpbmc9ZS50b1N0cmluZyxyfSx1Lm11bHRpPXUudXRjLm11bHRpPWxyO3Zh ciBmPXQubWFwKCkscD1HZShvKSxkPVllKG8pLGc9R2Uocyksdj1ZZShzKSxt PUdlKGwpLHk9WWUobCkseD1HZShjKSxiPVllKGMpO2kuZm9yRWFjaChmdW5j dGlvbih0LGUpe2Yuc2V0KHQudG9Mb3dlckNhc2UoKSxlKX0pO3ZhciBfPXth OmZ1bmN0aW9uKHQpe3JldHVybiBzW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9u KHQpe3JldHVybiBvW3QuZ2V0RGF5KCldfSxiOmZ1bmN0aW9uKHQpe3JldHVy biBjW3QuZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24odCl7cmV0dXJuIGxbdC5n ZXRNb250aCgpXX0sYzp1KHIpLGQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGUo dC5nZXREYXRlKCksZSwyKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiBIZSh0 LmdldERhdGUoKSxlLDIpfSxIOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKHQu Z2V0SG91cnMoKSxlLDIpfSxJOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKHQu Z2V0SG91cnMoKSUxMnx8MTIsZSwyKX0sajpmdW5jdGlvbih0LGUpe3JldHVy biBIZSgxK0llLmRheU9mWWVhcih0KSxlLDMpfSxMOmZ1bmN0aW9uKHQsZSl7 cmV0dXJuIEhlKHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX0sbTpmdW5jdGlv bih0LGUpe3JldHVybiBIZSh0LmdldE1vbnRoKCkrMSxlLDIpfSxNOmZ1bmN0 aW9uKHQsZSl7cmV0dXJuIEhlKHQuZ2V0TWludXRlcygpLGUsMil9LHA6ZnVu Y3Rpb24odCl7cmV0dXJuIGlbKyh0LmdldEhvdXJzKCk+PTEyKV19LFM6ZnVu Y3Rpb24odCxlKXtyZXR1cm4gSGUodC5nZXRTZWNvbmRzKCksZSwyKX0sVTpm dW5jdGlvbih0LGUpe3JldHVybiBIZShJZS5zdW5kYXlPZlllYXIodCksZSwy KX0sdzpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXkoKX0sVzpmdW5jdGlv bih0LGUpe3JldHVybiBIZShJZS5tb25kYXlPZlllYXIodCksZSwyKX0seDp1 KG4pLFg6dShhKSx5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhlKHQuZ2V0RnVs bFllYXIoKSUxMDAsZSwyKX0sWTpmdW5jdGlvbih0LGUpe3JldHVybiBIZSh0 LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9LFo6b3IsIiUiOmZ1bmN0aW9uKCl7 cmV0dXJuIiUifX0sdz17YTpmdW5jdGlvbih0LGUscil7Zy5sYXN0SW5kZXg9 MDt2YXIgbj1nLmV4ZWMoZS5zbGljZShyKSk7cmV0dXJuIG4/KHQudz12Lmdl dChuWzBdLnRvTG93ZXJDYXNlKCkpLHIrblswXS5sZW5ndGgpOi0xfSxBOmZ1 bmN0aW9uKHQsZSxyKXtwLmxhc3RJbmRleD0wO3ZhciBuPXAuZXhlYyhlLnNs aWNlKHIpKTtyZXR1cm4gbj8odC53PWQuZ2V0KG5bMF0udG9Mb3dlckNhc2Uo KSkscituWzBdLmxlbmd0aCk6LTF9LGI6ZnVuY3Rpb24odCxlLHIpe3gubGFz dEluZGV4PTA7dmFyIG49eC5leGVjKGUuc2xpY2UocikpO3JldHVybiBuPyh0 Lm09Yi5nZXQoblswXS50b0xvd2VyQ2FzZSgpKSxyK25bMF0ubGVuZ3RoKTot MX0sQjpmdW5jdGlvbih0LGUscil7bS5sYXN0SW5kZXg9MDt2YXIgbj1tLmV4 ZWMoZS5zbGljZShyKSk7cmV0dXJuIG4/KHQubT15LmdldChuWzBdLnRvTG93 ZXJDYXNlKCkpLHIrblswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gaCh0LF8uYy50b1N0cmluZygpLGUscil9LGQ6dHIsZTp0cixI OnJyLEk6cnIsajplcixMOmlyLG06JGUsTTpucixwOmZ1bmN0aW9uKHQsZSxy KXt2YXIgbj1mLmdldChlLnNsaWNlKHIscis9MikudG9Mb3dlckNhc2UoKSk7 cmV0dXJuIG51bGw9PW4/LTE6KHQucD1uLHIpfSxTOmFyLFU6WGUsdzpXZSxX OlplLHg6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBoKHQsXy54LnRvU3RyaW5n KCksZSxyKX0sWDpmdW5jdGlvbih0LGUscil7cmV0dXJuIGgodCxfLlgudG9T dHJpbmcoKSxlLHIpfSx5OktlLFk6SmUsWjpRZSwiJSI6c3J9O3JldHVybiB1 fUllLnllYXI9QmUoZnVuY3Rpb24odCl7cmV0dXJuKHQ9SWUuZGF5KHQpKS5z ZXRNb250aCgwLDEpLHR9LGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0 LmdldEZ1bGxZZWFyKCkrZSl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1 bGxZZWFyKCl9KSxJZS55ZWFycz1JZS55ZWFyLnJhbmdlLEllLnllYXJzLnV0 Yz1JZS55ZWFyLnV0Yy5yYW5nZSxJZS5kYXk9QmUoZnVuY3Rpb24odCl7dmFy IGU9bmV3IERlKDJlMywwKTtyZXR1cm4gZS5zZXRGdWxsWWVhcih0LmdldEZ1 bGxZZWFyKCksdC5nZXRNb250aCgpLHQuZ2V0RGF0ZSgpKSxlfSxmdW5jdGlv bih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0sZnVuY3Rpb24odCl7 cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSxJZS5kYXlzPUllLmRheS5yYW5nZSxJ ZS5kYXlzLnV0Yz1JZS5kYXkudXRjLnJhbmdlLEllLmRheU9mWWVhcj1mdW5j dGlvbih0KXt2YXIgZT1JZS55ZWFyKHQpO3JldHVybiBNYXRoLmZsb29yKCh0 LWUtNmU0Kih0LmdldFRpbWV6b25lT2Zmc2V0KCktZS5nZXRUaW1lem9uZU9m ZnNldCgpKSkvODY0ZTUpfSxbInN1bmRheSIsIm1vbmRheSIsInR1ZXNkYXki LCJ3ZWRuZXNkYXkiLCJ0aHVyc2RheSIsImZyaWRheSIsInNhdHVyZGF5Il0u Zm9yRWFjaChmdW5jdGlvbih0LGUpe2U9Ny1lO3ZhciByPUllW3RdPUJlKGZ1 bmN0aW9uKHQpe3JldHVybih0PUllLmRheSh0KSkuc2V0RGF0ZSh0LmdldERh dGUoKS0odC5nZXREYXkoKStlKSU3KSx0fSxmdW5jdGlvbih0LGUpe3Quc2V0 RGF0ZSh0LmdldERhdGUoKSs3Kk1hdGguZmxvb3IoZSkpfSxmdW5jdGlvbih0 KXt2YXIgcj1JZS55ZWFyKHQpLmdldERheSgpO3JldHVybiBNYXRoLmZsb29y KChJZS5kYXlPZlllYXIodCkrKHIrZSklNykvNyktKHIhPT1lKX0pO0llW3Qr InMiXT1yLnJhbmdlLEllW3QrInMiXS51dGM9ci51dGMucmFuZ2UsSWVbdCsi T2ZZZWFyIl09ZnVuY3Rpb24odCl7dmFyIHI9SWUueWVhcih0KS5nZXREYXko KTtyZXR1cm4gTWF0aC5mbG9vcigoSWUuZGF5T2ZZZWFyKHQpKyhyK2UpJTcp LzcpfX0pLEllLndlZWs9SWUuc3VuZGF5LEllLndlZWtzPUllLnN1bmRheS5y YW5nZSxJZS53ZWVrcy51dGM9SWUuc3VuZGF5LnV0Yy5yYW5nZSxJZS53ZWVr T2ZZZWFyPUllLnN1bmRheU9mWWVhcjt2YXIgVmU9eyItIjoiIixfOiIgIiww OiIwIn0sVWU9L15ccypcZCsvLHFlPS9eJS87ZnVuY3Rpb24gSGUodCxlLHIp e3ZhciBuPXQ8MD8iLSI6IiIsYT0obj8tdDp0KSsiIixpPWEubGVuZ3RoO3Jl dHVybiBuKyhpPHI/bmV3IEFycmF5KHItaSsxKS5qb2luKGUpK2E6YSl9ZnVu Y3Rpb24gR2UoZSl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK2UubWFwKHQu cmVxdW90ZSkuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIFllKHQpe2Zv cih2YXIgZT1uZXcgYixyPS0xLG49dC5sZW5ndGg7KytyPG47KWUuc2V0KHRb cl0udG9Mb3dlckNhc2UoKSxyKTtyZXR1cm4gZX1mdW5jdGlvbiBXZSh0LGUs cil7VWUubGFzdEluZGV4PTA7dmFyIG49VWUuZXhlYyhlLnNsaWNlKHIscisx KSk7cmV0dXJuIG4/KHQudz0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5j dGlvbiBYZSh0LGUscil7VWUubGFzdEluZGV4PTA7dmFyIG49VWUuZXhlYyhl LnNsaWNlKHIpKTtyZXR1cm4gbj8odC5VPStuWzBdLHIrblswXS5sZW5ndGgp Oi0xfWZ1bmN0aW9uIFplKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1V ZS5leGVjKGUuc2xpY2UocikpO3JldHVybiBuPyh0Llc9K25bMF0scituWzBd Lmxlbmd0aCk6LTF9ZnVuY3Rpb24gSmUodCxlLHIpe1VlLmxhc3RJbmRleD0w O3ZhciBuPVVlLmV4ZWMoZS5zbGljZShyLHIrNCkpO3JldHVybiBuPyh0Lnk9 K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gS2UodCxlLHIpe1Vl Lmxhc3RJbmRleD0wO3ZhciBuLGE9VWUuZXhlYyhlLnNsaWNlKHIscisyKSk7 cmV0dXJuIGE/KHQueT0obj0rYVswXSkrKG4+Njg/MTkwMDoyZTMpLHIrYVsw XS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFFlKHQsZSxyKXtyZXR1cm4vXlsrLV1c ZHs0fSQvLnRlc3QoZT1lLnNsaWNlKHIscis1KSk/KHQuWj0tZSxyKzUpOi0x fWZ1bmN0aW9uICRlKHQsZSxyKXtVZS5sYXN0SW5kZXg9MDt2YXIgbj1VZS5l eGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5tPW5bMF0tMSxyK25b MF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB0cih0LGUscil7VWUubGFzdEluZGV4 PTA7dmFyIG49VWUuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KHQu ZD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBlcih0LGUscil7 VWUubGFzdEluZGV4PTA7dmFyIG49VWUuZXhlYyhlLnNsaWNlKHIsciszKSk7 cmV0dXJuIG4/KHQuaj0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlv biBycih0LGUscil7VWUubGFzdEluZGV4PTA7dmFyIG49VWUuZXhlYyhlLnNs aWNlKHIscisyKSk7cmV0dXJuIG4/KHQuSD0rblswXSxyK25bMF0ubGVuZ3Ro KTotMX1mdW5jdGlvbiBucih0LGUscil7VWUubGFzdEluZGV4PTA7dmFyIG49 VWUuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KHQuTT0rblswXSxy K25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBhcih0LGUscil7VWUubGFzdElu ZGV4PTA7dmFyIG49VWUuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJuIG4/ KHQuUz0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBpcih0LGUs cil7VWUubGFzdEluZGV4PTA7dmFyIG49VWUuZXhlYyhlLnNsaWNlKHIscisz KSk7cmV0dXJuIG4/KHQuTD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5j dGlvbiBvcih0KXt2YXIgZT10LmdldFRpbWV6b25lT2Zmc2V0KCkscj1lPjA/ Ii0iOiIrIixuPXkoZSkvNjB8MCxhPXkoZSklNjA7cmV0dXJuIHIrSGUobiwi MCIsMikrSGUoYSwiMCIsMil9ZnVuY3Rpb24gc3IodCxlLHIpe3FlLmxhc3RJ bmRleD0wO3ZhciBuPXFlLmV4ZWMoZS5zbGljZShyLHIrMSkpO3JldHVybiBu P3IrblswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gbHIodCl7Zm9yKHZhciBlPXQu bGVuZ3RoLHI9LTE7KytyPGU7KXRbcl1bMF09dGhpcyh0W3JdWzBdKTtyZXR1 cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciByPTAsbj10W3JdOyFuWzFdKGUpOylu PXRbKytyXTtyZXR1cm4gblswXShlKX19dC5sb2NhbGU9ZnVuY3Rpb24odCl7 cmV0dXJue251bWJlckZvcm1hdDpDZSh0KSx0aW1lRm9ybWF0OmplKHQpfX07 dmFyIGNyPXQubG9jYWxlKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdy b3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxkYXRlVGltZToiJWEgJWIg JWUgJVggJVkiLGRhdGU6IiVtLyVkLyVZIix0aW1lOiIlSDolTTolUyIscGVy aW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVl c2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJk YXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUi LCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJN YXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJT ZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNo b3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVu IiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTtmdW5j dGlvbiB1cigpe310LmZvcm1hdD1jci5udW1iZXJGb3JtYXQsdC5nZW89e30s dXIucHJvdG90eXBlPXtzOjAsdDowLGFkZDpmdW5jdGlvbih0KXtmcih0LHRo aXMudCxociksZnIoaHIucyx0aGlzLnMsdGhpcyksdGhpcy5zP3RoaXMudCs9 aHIudDp0aGlzLnM9aHIudH0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhp cy50PTB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfX07dmFy IGhyPW5ldyB1cjtmdW5jdGlvbiBmcih0LGUscil7dmFyIG49ci5zPXQrZSxh PW4tdCxpPW4tYTtyLnQ9dC1pKyhlLWEpfWZ1bmN0aW9uIHByKHQsZSl7dCYm Z3IuaGFzT3duUHJvcGVydHkodC50eXBlKSYmZ3JbdC50eXBlXSh0LGUpfXQu Z2VvLnN0cmVhbT1mdW5jdGlvbih0LGUpe3QmJmRyLmhhc093blByb3BlcnR5 KHQudHlwZSk/ZHJbdC50eXBlXSh0LGUpOnByKHQsZSl9O3ZhciBkcj17RmVh dHVyZTpmdW5jdGlvbih0LGUpe3ByKHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVD b2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuZmVhdHVyZXMs bj0tMSxhPXIubGVuZ3RoOysrbjxhOylwcihyW25dLmdlb21ldHJ5LGUpfX0s Z3I9e1NwaGVyZTpmdW5jdGlvbih0LGUpe2Uuc3BoZXJlKCl9LFBvaW50OmZ1 bmN0aW9uKHQsZSl7dD10LmNvb3JkaW5hdGVzLGUucG9pbnQodFswXSx0WzFd LHRbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQu Y29vcmRpbmF0ZXMsbj0tMSxhPXIubGVuZ3RoOysrbjxhOyl0PXJbbl0sZS5w b2ludCh0WzBdLHRbMV0sdFsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxl KXt2cih0LmNvb3JkaW5hdGVzLGUsMCl9LE11bHRpTGluZVN0cmluZzpmdW5j dGlvbih0LGUpe2Zvcih2YXIgcj10LmNvb3JkaW5hdGVzLG49LTEsYT1yLmxl bmd0aDsrK248YTspdnIocltuXSxlLDApfSxQb2x5Z29uOmZ1bmN0aW9uKHQs ZSl7bXIodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByPXQuY29vcmRpbmF0ZXMsbj0tMSxhPXIubGVuZ3Ro OysrbjxhOyltcihyW25dLGUpfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rp b24odCxlKXtmb3IodmFyIHI9dC5nZW9tZXRyaWVzLG49LTEsYT1yLmxlbmd0 aDsrK248YTspcHIocltuXSxlKX19O2Z1bmN0aW9uIHZyKHQsZSxyKXt2YXIg bixhPS0xLGk9dC5sZW5ndGgtcjtmb3IoZS5saW5lU3RhcnQoKTsrK2E8aTsp bj10W2FdLGUucG9pbnQoblswXSxuWzFdLG5bMl0pO2UubGluZUVuZCgpfWZ1 bmN0aW9uIG1yKHQsZSl7dmFyIHI9LTEsbj10Lmxlbmd0aDtmb3IoZS5wb2x5 Z29uU3RhcnQoKTsrK3I8bjspdnIodFtyXSxlLDEpO2UucG9seWdvbkVuZCgp fXQuZ2VvLmFyZWE9ZnVuY3Rpb24oZSl7cmV0dXJuIHlyPTAsdC5nZW8uc3Ry ZWFtKGUsUHIpLHlyfTt2YXIgeXIseHIsYnIsX3Isd3Isa3IsVHIsTXIsQXIs U3IsRXIsTHIsQ3I9bmV3IHVyLFByPXtzcGhlcmU6ZnVuY3Rpb24oKXt5cis9 NCpNdH0scG9pbnQ6RCxsaW5lU3RhcnQ6RCxsaW5lRW5kOkQscG9seWdvblN0 YXJ0OmZ1bmN0aW9uKCl7Q3IucmVzZXQoKSxQci5saW5lU3RhcnQ9T3J9LHBv bHlnb25FbmQ6ZnVuY3Rpb24oKXt2YXIgdD0yKkNyO3lyKz10PDA/NCpNdCt0 OnQsUHIubGluZVN0YXJ0PVByLmxpbmVFbmQ9UHIucG9pbnQ9RH19O2Z1bmN0 aW9uIE9yKCl7dmFyIHQsZSxyLG4sYTtmdW5jdGlvbiBpKHQsZSl7ZT1lKkx0 LzIrTXQvNDt2YXIgaT0odCo9THQpLXIsbz1pPj0wPzE6LTEscz1vKmksbD1N YXRoLmNvcyhlKSxjPU1hdGguc2luKGUpLHU9YSpjLGg9bipsK3UqTWF0aC5j b3MocyksZj11Km8qTWF0aC5zaW4ocyk7Q3IuYWRkKE1hdGguYXRhbjIoZixo KSkscj10LG49bCxhPWN9UHIucG9pbnQ9ZnVuY3Rpb24obyxzKXtQci5wb2lu dD1pLHI9KHQ9bykqTHQsbj1NYXRoLmNvcyhzPShlPXMpKkx0LzIrTXQvNCks YT1NYXRoLnNpbihzKX0sUHIubGluZUVuZD1mdW5jdGlvbigpe2kodCxlKX19 ZnVuY3Rpb24genIodCl7dmFyIGU9dFswXSxyPXRbMV0sbj1NYXRoLmNvcyhy KTtyZXR1cm5bbipNYXRoLmNvcyhlKSxuKk1hdGguc2luKGUpLE1hdGguc2lu KHIpXX1mdW5jdGlvbiBJcih0LGUpe3JldHVybiB0WzBdKmVbMF0rdFsxXSpl WzFdK3RbMl0qZVsyXX1mdW5jdGlvbiBEcih0LGUpe3JldHVyblt0WzFdKmVb Ml0tdFsyXSplWzFdLHRbMl0qZVswXS10WzBdKmVbMl0sdFswXSplWzFdLXRb MV0qZVswXV19ZnVuY3Rpb24gUnIodCxlKXt0WzBdKz1lWzBdLHRbMV0rPWVb MV0sdFsyXSs9ZVsyXX1mdW5jdGlvbiBGcih0LGUpe3JldHVyblt0WzBdKmUs dFsxXSplLHRbMl0qZV19ZnVuY3Rpb24gQnIodCl7dmFyIGU9TWF0aC5zcXJ0 KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1lLHRbMV0v PWUsdFsyXS89ZX1mdW5jdGlvbiBOcih0KXtyZXR1cm5bTWF0aC5hdGFuMih0 WzFdLHRbMF0pLEl0KHRbMl0pXX1mdW5jdGlvbiBqcih0LGUpe3JldHVybiB5 KHRbMF0tZVswXSk8a3QmJnkodFsxXS1lWzFdKTxrdH10Lmdlby5ib3VuZHM9 ZnVuY3Rpb24oKXt2YXIgZSxyLG4sYSxpLG8scyxsLGMsdSxoLGY9e3BvaW50 OnAsbGluZVN0YXJ0OmcsbGluZUVuZDp2LHBvbHlnb25TdGFydDpmdW5jdGlv bigpe2YucG9pbnQ9bSxmLmxpbmVTdGFydD14LGYubGluZUVuZD1iLGM9MCxQ ci5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe1ByLnBv bHlnb25FbmQoKSxmLnBvaW50PXAsZi5saW5lU3RhcnQ9ZyxmLmxpbmVFbmQ9 dixDcjwwPyhlPS0obj0xODApLHI9LShhPTkwKSk6Yz5rdD9hPTkwOmM8LWt0 JiYocj0tOTApLGhbMF09ZSxoWzFdPW59fTtmdW5jdGlvbiBwKHQsaSl7dS5w dXNoKGg9W2U9dCxuPXRdKSxpPHImJihyPWkpLGk+YSYmKGE9aSl9ZnVuY3Rp b24gZCh0LG8pe3ZhciBzPXpyKFt0Kkx0LG8qTHRdKTtpZihsKXt2YXIgYz1E cihsLHMpLHU9RHIoW2NbMV0sLWNbMF0sMF0sYyk7QnIodSksdT1Ocih1KTt2 YXIgaD10LWksZj1oPjA/MTotMSxkPXVbMF0qQ3QqZixnPXkoaCk+MTgwO2lm KGdeKGYqaTxkJiZkPGYqdCkpKHY9dVsxXSpDdCk+YSYmKGE9dik7ZWxzZSBp ZihnXihmKmk8KGQ9KGQrMzYwKSUzNjAtMTgwKSYmZDxmKnQpKXt2YXIgdjso dj0tdVsxXSpDdCk8ciYmKHI9dil9ZWxzZSBvPHImJihyPW8pLG8+YSYmKGE9 byk7Zz90PGk/XyhlLHQpPl8oZSxuKSYmKG49dCk6Xyh0LG4pPl8oZSxuKSYm KGU9dCk6bj49ZT8odDxlJiYoZT10KSx0Pm4mJihuPXQpKTp0Pmk/XyhlLHQp Pl8oZSxuKSYmKG49dCk6Xyh0LG4pPl8oZSxuKSYmKGU9dCl9ZWxzZSBwKHQs byk7bD1zLGk9dH1mdW5jdGlvbiBnKCl7Zi5wb2ludD1kfWZ1bmN0aW9uIHYo KXtoWzBdPWUsaFsxXT1uLGYucG9pbnQ9cCxsPW51bGx9ZnVuY3Rpb24gbSh0 LGUpe2lmKGwpe3ZhciByPXQtaTtjKz15KHIpPjE4MD9yKyhyPjA/MzYwOi0z NjApOnJ9ZWxzZSBvPXQscz1lO1ByLnBvaW50KHQsZSksZCh0LGUpfWZ1bmN0 aW9uIHgoKXtQci5saW5lU3RhcnQoKX1mdW5jdGlvbiBiKCl7bShvLHMpLFBy LmxpbmVFbmQoKSx5KGMpPmt0JiYoZT0tKG49MTgwKSksaFswXT1lLGhbMV09 bixsPW51bGx9ZnVuY3Rpb24gXyh0LGUpe3JldHVybihlLT10KTwwP2UrMzYw OmV9ZnVuY3Rpb24gdyh0LGUpe3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24g ayh0LGUpe3JldHVybiBlWzBdPD1lWzFdP2VbMF08PXQmJnQ8PWVbMV06dDxl WzBdfHxlWzFdPHR9cmV0dXJuIGZ1bmN0aW9uKGkpe2lmKGE9bj0tKGU9cj0x LzApLHU9W10sdC5nZW8uc3RyZWFtKGksZiksYz11Lmxlbmd0aCl7dS5zb3J0 KHcpO2Zvcih2YXIgbz0xLHM9W2c9dVswXV07bzxjOysrbylrKChwPXVbb10p WzBdLGcpfHxrKHBbMV0sZyk/KF8oZ1swXSxwWzFdKT5fKGdbMF0sZ1sxXSkm JihnWzFdPXBbMV0pLF8ocFswXSxnWzFdKT5fKGdbMF0sZ1sxXSkmJihnWzBd PXBbMF0pKTpzLnB1c2goZz1wKTtmb3IodmFyIGwsYyxwLGQ9LTEvMCxnPShv PTAsc1tjPXMubGVuZ3RoLTFdKTtvPD1jO2c9cCwrK28pcD1zW29dLChsPV8o Z1sxXSxwWzBdKSk+ZCYmKGQ9bCxlPXBbMF0sbj1nWzFdKX1yZXR1cm4gdT1o PW51bGwsZT09PTEvMHx8cj09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06 W1tlLHJdLFtuLGFdXX19KCksdC5nZW8uY2VudHJvaWQ9ZnVuY3Rpb24oZSl7 eHI9YnI9X3I9d3I9a3I9VHI9TXI9QXI9U3I9RXI9THI9MCx0Lmdlby5zdHJl YW0oZSxWcik7dmFyIHI9U3Isbj1FcixhPUxyLGk9cipyK24qbithKmE7cmV0 dXJuIGk8VHQmJihyPVRyLG49TXIsYT1BcixicjxrdCYmKHI9X3Isbj13cixh PWtyKSwoaT1yKnIrbipuK2EqYSk8VHQpP1tOYU4sTmFOXTpbTWF0aC5hdGFu MihuLHIpKkN0LEl0KGEvTWF0aC5zcXJ0KGkpKSpDdF19O3ZhciBWcj17c3Bo ZXJlOkQscG9pbnQ6VXIsbGluZVN0YXJ0OkhyLGxpbmVFbmQ6R3IscG9seWdv blN0YXJ0OmZ1bmN0aW9uKCl7VnIubGluZVN0YXJ0PVlyfSxwb2x5Z29uRW5k OmZ1bmN0aW9uKCl7VnIubGluZVN0YXJ0PUhyfX07ZnVuY3Rpb24gVXIodCxl KXt0Kj1MdDt2YXIgcj1NYXRoLmNvcyhlKj1MdCk7cXIocipNYXRoLmNvcyh0 KSxyKk1hdGguc2luKHQpLE1hdGguc2luKGUpKX1mdW5jdGlvbiBxcih0LGUs cil7X3IrPSh0LV9yKS8rK3hyLHdyKz0oZS13cikveHIsa3IrPShyLWtyKS94 cn1mdW5jdGlvbiBIcigpe3ZhciB0LGUscjtmdW5jdGlvbiBuKG4sYSl7bio9 THQ7dmFyIGk9TWF0aC5jb3MoYSo9THQpLG89aSpNYXRoLmNvcyhuKSxzPWkq TWF0aC5zaW4obiksbD1NYXRoLnNpbihhKSxjPU1hdGguYXRhbjIoTWF0aC5z cXJ0KChjPWUqbC1yKnMpKmMrKGM9cipvLXQqbCkqYysoYz10KnMtZSpvKSpj KSx0Km8rZSpzK3IqbCk7YnIrPWMsVHIrPWMqKHQrKHQ9bykpLE1yKz1jKihl KyhlPXMpKSxBcis9Yyoocisocj1sKSkscXIodCxlLHIpfVZyLnBvaW50PWZ1 bmN0aW9uKGEsaSl7YSo9THQ7dmFyIG89TWF0aC5jb3MoaSo9THQpO3Q9bypN YXRoLmNvcyhhKSxlPW8qTWF0aC5zaW4oYSkscj1NYXRoLnNpbihpKSxWci5w b2ludD1uLHFyKHQsZSxyKX19ZnVuY3Rpb24gR3IoKXtWci5wb2ludD1Vcn1m dW5jdGlvbiBZcigpe3ZhciB0LGUscixuLGE7ZnVuY3Rpb24gaSh0LGUpe3Qq PUx0O3ZhciBpPU1hdGguY29zKGUqPUx0KSxvPWkqTWF0aC5jb3ModCkscz1p Kk1hdGguc2luKHQpLGw9TWF0aC5zaW4oZSksYz1uKmwtYSpzLHU9YSpvLXIq bCxoPXIqcy1uKm8sZj1NYXRoLnNxcnQoYypjK3UqdStoKmgpLHA9cipvK24q cythKmwsZD1mJiYtenQocCkvZixnPU1hdGguYXRhbjIoZixwKTtTcis9ZCpj LEVyKz1kKnUsTHIrPWQqaCxicis9ZyxUcis9Zyoocisocj1vKSksTXIrPWcq KG4rKG49cykpLEFyKz1nKihhKyhhPWwpKSxxcihyLG4sYSl9VnIucG9pbnQ9 ZnVuY3Rpb24obyxzKXt0PW8sZT1zLFZyLnBvaW50PWksbyo9THQ7dmFyIGw9 TWF0aC5jb3Mocyo9THQpO3I9bCpNYXRoLmNvcyhvKSxuPWwqTWF0aC5zaW4o byksYT1NYXRoLnNpbihzKSxxcihyLG4sYSl9LFZyLmxpbmVFbmQ9ZnVuY3Rp b24oKXtpKHQsZSksVnIubGluZUVuZD1HcixWci5wb2ludD1Vcn19ZnVuY3Rp b24gV3IodCxlKXtmdW5jdGlvbiByKHIsbil7cmV0dXJuIHI9dChyLG4pLGUo clswXSxyWzFdKX1yZXR1cm4gdC5pbnZlcnQmJmUuaW52ZXJ0JiYoci5pbnZl cnQ9ZnVuY3Rpb24ocixuKXtyZXR1cm4ocj1lLmludmVydChyLG4pKSYmdC5p bnZlcnQoclswXSxyWzFdKX0pLHJ9ZnVuY3Rpb24gWHIoKXtyZXR1cm4hMH1m dW5jdGlvbiBacih0LGUscixuLGEpe3ZhciBpPVtdLG89W107aWYodC5mb3JF YWNoKGZ1bmN0aW9uKHQpe2lmKCEoKGU9dC5sZW5ndGgtMSk8PTApKXt2YXIg ZSxyPXRbMF0sbj10W2VdO2lmKGpyKHIsbikpe2EubGluZVN0YXJ0KCk7Zm9y KHZhciBzPTA7czxlOysrcylhLnBvaW50KChyPXRbc10pWzBdLHJbMV0pO2Eu bGluZUVuZCgpfWVsc2V7dmFyIGw9bmV3IEtyKHIsdCxudWxsLCEwKSxjPW5l dyBLcihyLG51bGwsbCwhMSk7bC5vPWMsaS5wdXNoKGwpLG8ucHVzaChjKSxs PW5ldyBLcihuLHQsbnVsbCwhMSksYz1uZXcgS3IobixudWxsLGwsITApLGwu bz1jLGkucHVzaChsKSxvLnB1c2goYyl9fX0pLG8uc29ydChlKSxKcihpKSxK cihvKSxpLmxlbmd0aCl7Zm9yKHZhciBzPTAsbD1yLGM9by5sZW5ndGg7czxj OysrcylvW3NdLmU9bD0hbDtmb3IodmFyIHUsaCxmPWlbMF07Oyl7Zm9yKHZh ciBwPWYsZD0hMDtwLnY7KWlmKChwPXAubik9PT1mKXJldHVybjt1PXAueixh LmxpbmVTdGFydCgpO2Rve2lmKHAudj1wLm8udj0hMCxwLmUpe2lmKGQpZm9y KHM9MCxjPXUubGVuZ3RoO3M8YzsrK3MpYS5wb2ludCgoaD11W3NdKVswXSxo WzFdKTtlbHNlIG4ocC54LHAubi54LDEsYSk7cD1wLm59ZWxzZXtpZihkKWZv cihzPSh1PXAucC56KS5sZW5ndGgtMTtzPj0wOy0tcylhLnBvaW50KChoPXVb c10pWzBdLGhbMV0pO2Vsc2UgbihwLngscC5wLngsLTEsYSk7cD1wLnB9dT0o cD1wLm8pLnosZD0hZH13aGlsZSghcC52KTthLmxpbmVFbmQoKX19fWZ1bmN0 aW9uIEpyKHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxyLG49MCxhPXRb MF07KytuPGU7KWEubj1yPXRbbl0sci5wPWEsYT1yO2Eubj1yPXRbMF0sci5w PWF9fWZ1bmN0aW9uIEtyKHQsZSxyLG4pe3RoaXMueD10LHRoaXMuej1lLHRo aXMubz1yLHRoaXMuZT1uLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9 ZnVuY3Rpb24gUXIoZSxyLG4sYSl7cmV0dXJuIGZ1bmN0aW9uKGksbyl7dmFy IHMsbD1yKG8pLGM9aS5pbnZlcnQoYVswXSxhWzFdKSx1PXtwb2ludDpoLGxp bmVTdGFydDpwLGxpbmVFbmQ6ZCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt1 LnBvaW50PWIsdS5saW5lU3RhcnQ9Xyx1LmxpbmVFbmQ9dyxzPVtdLGc9W119 LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt1LnBvaW50PWgsdS5saW5lU3RhcnQ9 cCx1LmxpbmVFbmQ9ZCxzPXQubWVyZ2Uocyk7dmFyIGU9ZnVuY3Rpb24odCxl KXt2YXIgcj10WzBdLG49dFsxXSxhPVtNYXRoLnNpbihyKSwtTWF0aC5jb3Mo ciksMF0saT0wLG89MDtDci5yZXNldCgpO2Zvcih2YXIgcz0wLGw9ZS5sZW5n dGg7czxsOysrcyl7dmFyIGM9ZVtzXSx1PWMubGVuZ3RoO2lmKHUpZm9yKHZh ciBoPWNbMF0sZj1oWzBdLHA9aFsxXS8yK010LzQsZD1NYXRoLnNpbihwKSxn PU1hdGguY29zKHApLHY9MTs7KXt2PT09dSYmKHY9MCk7dmFyIG09KHQ9Y1t2 XSlbMF0seT10WzFdLzIrTXQvNCx4PU1hdGguc2luKHkpLGI9TWF0aC5jb3Mo eSksXz1tLWYsdz1fPj0wPzE6LTEsaz13Kl8sVD1rPk10LE09ZCp4O2lmKENy LmFkZChNYXRoLmF0YW4yKE0qdypNYXRoLnNpbihrKSxnKmIrTSpNYXRoLmNv cyhrKSkpLGkrPVQ/Xyt3KkF0Ol8sVF5mPj1yXm0+PXIpe3ZhciBBPURyKHpy KGgpLHpyKHQpKTtCcihBKTt2YXIgUz1EcihhLEEpO0JyKFMpO3ZhciBFPShU Xl8+PTA/LTE6MSkqSXQoU1syXSk7KG4+RXx8bj09PUUmJihBWzBdfHxBWzFd KSkmJihvKz1UXl8+PTA/MTotMSl9aWYoIXYrKylicmVhaztmPW0sZD14LGc9 YixoPXR9fXJldHVybihpPC1rdHx8aTxrdCYmQ3I8LWt0KV4xJm99KGMsZyk7 cy5sZW5ndGg/KHh8fChvLnBvbHlnb25TdGFydCgpLHg9ITApLFpyKHMsZW4s ZSxuLG8pKTplJiYoeHx8KG8ucG9seWdvblN0YXJ0KCkseD0hMCksby5saW5l U3RhcnQoKSxuKG51bGwsbnVsbCwxLG8pLG8ubGluZUVuZCgpKSx4JiYoby5w b2x5Z29uRW5kKCkseD0hMSkscz1nPW51bGx9LHNwaGVyZTpmdW5jdGlvbigp e28ucG9seWdvblN0YXJ0KCksby5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwx LG8pLG8ubGluZUVuZCgpLG8ucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gaCh0 LHIpe3ZhciBuPWkodCxyKTtlKHQ9blswXSxyPW5bMV0pJiZvLnBvaW50KHQs cil9ZnVuY3Rpb24gZih0LGUpe3ZhciByPWkodCxlKTtsLnBvaW50KHJbMF0s clsxXSl9ZnVuY3Rpb24gcCgpe3UucG9pbnQ9ZixsLmxpbmVTdGFydCgpfWZ1 bmN0aW9uIGQoKXt1LnBvaW50PWgsbC5saW5lRW5kKCl9dmFyIGcsdixtPXRu KCkseT1yKG0pLHg9ITE7ZnVuY3Rpb24gYih0LGUpe3YucHVzaChbdCxlXSk7 dmFyIHI9aSh0LGUpO3kucG9pbnQoclswXSxyWzFdKX1mdW5jdGlvbiBfKCl7 eS5saW5lU3RhcnQoKSx2PVtdfWZ1bmN0aW9uIHcoKXtiKHZbMF1bMF0sdlsw XVsxXSkseS5saW5lRW5kKCk7dmFyIHQsZT15LmNsZWFuKCkscj1tLmJ1ZmZl cigpLG49ci5sZW5ndGg7aWYodi5wb3AoKSxnLnB1c2godiksdj1udWxsLG4p aWYoMSZlKXt2YXIgYSxpPS0xO2lmKChuPSh0PXJbMF0pLmxlbmd0aC0xKT4w KXtmb3IoeHx8KG8ucG9seWdvblN0YXJ0KCkseD0hMCksby5saW5lU3RhcnQo KTsrK2k8bjspby5wb2ludCgoYT10W2ldKVswXSxhWzFdKTtvLmxpbmVFbmQo KX19ZWxzZSBuPjEmJjImZSYmci5wdXNoKHIucG9wKCkuY29uY2F0KHIuc2hp ZnQoKSkpLHMucHVzaChyLmZpbHRlcigkcikpfXJldHVybiB1fX1mdW5jdGlv biAkcih0KXtyZXR1cm4gdC5sZW5ndGg+MX1mdW5jdGlvbiB0bigpe3ZhciB0 LGU9W107cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtd KX0scG9pbnQ6ZnVuY3Rpb24oZSxyKXt0LnB1c2goW2Uscl0pfSxsaW5lRW5k OkQsYnVmZmVyOmZ1bmN0aW9uKCl7dmFyIHI9ZTtyZXR1cm4gZT1bXSx0PW51 bGwscn0scmVqb2luOmZ1bmN0aW9uKCl7ZS5sZW5ndGg+MSYmZS5wdXNoKGUu cG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpfX19ZnVuY3Rpb24gZW4odCxlKXty ZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tRXQta3Q6RXQtdFsxXSktKChlPWUu eClbMF08MD9lWzFdLUV0LWt0OkV0LWVbMV0pfXZhciBybj1RcihYcixmdW5j dGlvbih0KXt2YXIgZSxyPU5hTixuPU5hTixhPU5hTjtyZXR1cm57bGluZVN0 YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxlPTF9LHBvaW50OmZ1bmN0 aW9uKGksbyl7dmFyIHM9aT4wP010Oi1NdCxsPXkoaS1yKTt5KGwtTXQpPGt0 Pyh0LnBvaW50KHIsbj0obitvKS8yPjA/RXQ6LUV0KSx0LnBvaW50KGEsbiks dC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHMsbiksdC5wb2lu dChpLG4pLGU9MCk6YSE9PXMmJmw+PU10JiYoeShyLWEpPGt0JiYoci09YSpr dCkseShpLXMpPGt0JiYoaS09cyprdCksbj1mdW5jdGlvbih0LGUscixuKXt2 YXIgYSxpLG89TWF0aC5zaW4odC1yKTtyZXR1cm4geShvKT5rdD9NYXRoLmF0 YW4oKE1hdGguc2luKGUpKihpPU1hdGguY29zKG4pKSpNYXRoLnNpbihyKS1N YXRoLnNpbihuKSooYT1NYXRoLmNvcyhlKSkqTWF0aC5zaW4odCkpLyhhKmkq bykpOihlK24pLzJ9KHIsbixpLG8pLHQucG9pbnQoYSxuKSx0LmxpbmVFbmQo KSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxuKSxlPTApLHQucG9pbnQocj1p LG49byksYT1zfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCkscj1u PU5hTn0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi1lfX19LGZ1bmN0aW9u KHQsZSxyLG4pe3ZhciBhO2lmKG51bGw9PXQpYT1yKkV0LG4ucG9pbnQoLU10 LGEpLG4ucG9pbnQoMCxhKSxuLnBvaW50KE10LGEpLG4ucG9pbnQoTXQsMCks bi5wb2ludChNdCwtYSksbi5wb2ludCgwLC1hKSxuLnBvaW50KC1NdCwtYSks bi5wb2ludCgtTXQsMCksbi5wb2ludCgtTXQsYSk7ZWxzZSBpZih5KHRbMF0t ZVswXSk+a3Qpe3ZhciBpPXRbMF08ZVswXT9NdDotTXQ7YT1yKmkvMixuLnBv aW50KC1pLGEpLG4ucG9pbnQoMCxhKSxuLnBvaW50KGksYSl9ZWxzZSBuLnBv aW50KGVbMF0sZVsxXSl9LFstTXQsLU10LzJdKTtmdW5jdGlvbiBubih0LGUs cixuKXtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGksbz1hLmEscz1hLmIsbD1v LngsYz1vLnksdT0wLGg9MSxmPXMueC1sLHA9cy55LWM7aWYoaT10LWwsZnx8 IShpPjApKXtpZihpLz1mLGY8MCl7aWYoaTx1KXJldHVybjtpPGgmJihoPWkp fWVsc2UgaWYoZj4wKXtpZihpPmgpcmV0dXJuO2k+dSYmKHU9aSl9aWYoaT1y LWwsZnx8IShpPDApKXtpZihpLz1mLGY8MCl7aWYoaT5oKXJldHVybjtpPnUm Jih1PWkpfWVsc2UgaWYoZj4wKXtpZihpPHUpcmV0dXJuO2k8aCYmKGg9aSl9 aWYoaT1lLWMscHx8IShpPjApKXtpZihpLz1wLHA8MCl7aWYoaTx1KXJldHVy bjtpPGgmJihoPWkpfWVsc2UgaWYocD4wKXtpZihpPmgpcmV0dXJuO2k+dSYm KHU9aSl9aWYoaT1uLWMscHx8IShpPDApKXtpZihpLz1wLHA8MCl7aWYoaT5o KXJldHVybjtpPnUmJih1PWkpfWVsc2UgaWYocD4wKXtpZihpPHUpcmV0dXJu O2k8aCYmKGg9aSl9cmV0dXJuIHU+MCYmKGEuYT17eDpsK3UqZix5OmMrdSpw fSksaDwxJiYoYS5iPXt4OmwraCpmLHk6YytoKnB9KSxhfX19fX19dmFyIGFu PTFlOTtmdW5jdGlvbiBvbihlLHIsbixhKXtyZXR1cm4gZnVuY3Rpb24obCl7 dmFyIGMsdSxoLGYscCxkLGcsdixtLHkseCxiPWwsXz10bigpLHc9bm4oZSxy LG4sYSksaz17cG9pbnQ6QSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtrLnBvaW50 PVMsdSYmdS5wdXNoKGg9W10pO3k9ITAsbT0hMSxnPXY9TmFOfSxsaW5lRW5k OmZ1bmN0aW9uKCl7YyYmKFMoZixwKSxkJiZtJiZfLnJlam9pbigpLGMucHVz aChfLmJ1ZmZlcigpKSk7ay5wb2ludD1BLG0mJmwubGluZUVuZCgpfSxwb2x5 Z29uU3RhcnQ6ZnVuY3Rpb24oKXtsPV8sYz1bXSx1PVtdLHg9ITB9LHBvbHln b25FbmQ6ZnVuY3Rpb24oKXtsPWIsYz10Lm1lcmdlKGMpO3ZhciByPWZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT0wLHI9dS5sZW5ndGgsbj10WzFdLGE9MDthPHI7 KythKWZvcih2YXIgaSxvPTEscz11W2FdLGw9cy5sZW5ndGgsYz1zWzBdO288 bDsrK28paT1zW29dLGNbMV08PW4/aVsxXT5uJiZPdChjLGksdCk+MCYmKytl OmlbMV08PW4mJk90KGMsaSx0KTwwJiYtLWUsYz1pO3JldHVybiAwIT09ZX0o W2UsYV0pLG49eCYmcixpPWMubGVuZ3RoOyhufHxpKSYmKGwucG9seWdvblN0 YXJ0KCksbiYmKGwubGluZVN0YXJ0KCksVChudWxsLG51bGwsMSxsKSxsLmxp bmVFbmQoKSksaSYmWnIoYyxvLHIsVCxsKSxsLnBvbHlnb25FbmQoKSksYz11 PWg9bnVsbH19O2Z1bmN0aW9uIFQodCxvLGwsYyl7dmFyIHU9MCxoPTA7aWYo bnVsbD09dHx8KHU9aSh0LGwpKSE9PShoPWkobyxsKSl8fHModCxvKTwwXmw+ MClkb3tjLnBvaW50KDA9PT11fHwzPT09dT9lOm4sdT4xP2E6cil9d2hpbGUo KHU9KHUrbCs0KSU0KSE9PWgpO2Vsc2UgYy5wb2ludChvWzBdLG9bMV0pfWZ1 bmN0aW9uIE0odCxpKXtyZXR1cm4gZTw9dCYmdDw9biYmcjw9aSYmaTw9YX1m dW5jdGlvbiBBKHQsZSl7TSh0LGUpJiZsLnBvaW50KHQsZSl9ZnVuY3Rpb24g Uyh0LGUpe3ZhciByPU0odD1NYXRoLm1heCgtYW4sTWF0aC5taW4oYW4sdCkp LGU9TWF0aC5tYXgoLWFuLE1hdGgubWluKGFuLGUpKSk7aWYodSYmaC5wdXNo KFt0LGVdKSx5KWY9dCxwPWUsZD1yLHk9ITEsciYmKGwubGluZVN0YXJ0KCks bC5wb2ludCh0LGUpKTtlbHNlIGlmKHImJm0pbC5wb2ludCh0LGUpO2Vsc2V7 dmFyIG49e2E6e3g6Zyx5OnZ9LGI6e3g6dCx5OmV9fTt3KG4pPyhtfHwobC5s aW5lU3RhcnQoKSxsLnBvaW50KG4uYS54LG4uYS55KSksbC5wb2ludChuLmIu eCxuLmIueSkscnx8bC5saW5lRW5kKCkseD0hMSk6ciYmKGwubGluZVN0YXJ0 KCksbC5wb2ludCh0LGUpLHg9ITEpfWc9dCx2PWUsbT1yfXJldHVybiBrfTtm dW5jdGlvbiBpKHQsYSl7cmV0dXJuIHkodFswXS1lKTxrdD9hPjA/MDozOnko dFswXS1uKTxrdD9hPjA/MjoxOnkodFsxXS1yKTxrdD9hPjA/MTowOmE+MD8z OjJ9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBzKHQueCxlLngpfWZ1bmN0aW9u IHModCxlKXt2YXIgcj1pKHQsMSksbj1pKGUsMSk7cmV0dXJuIHIhPT1uP3It bjowPT09cj9lWzFdLXRbMV06MT09PXI/dFswXS1lWzBdOjI9PT1yP3RbMV0t ZVsxXTplWzBdLXRbMF19fWZ1bmN0aW9uIHNuKHQpe3ZhciBlPTAscj1NdC8z LG49UG4odCksYT1uKGUscik7cmV0dXJuIGEucGFyYWxsZWxzPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24oZT10WzBdKk10LzE4MCxy PXRbMV0qTXQvMTgwKTpbZS9NdCoxODAsci9NdCoxODBdfSxhfWZ1bmN0aW9u IGxuKHQsZSl7dmFyIHI9TWF0aC5zaW4odCksbj0ocitNYXRoLnNpbihlKSkv MixhPTErciooMipuLXIpLGk9TWF0aC5zcXJ0KGEpL247ZnVuY3Rpb24gbyh0 LGUpe3ZhciByPU1hdGguc3FydChhLTIqbipNYXRoLnNpbihlKSkvbjtyZXR1 cm5bcipNYXRoLnNpbih0Kj1uKSxpLXIqTWF0aC5jb3ModCldfXJldHVybiBv LmludmVydD1mdW5jdGlvbih0LGUpe3ZhciByPWktZTtyZXR1cm5bTWF0aC5h dGFuMih0LHIpL24sSXQoKGEtKHQqdCtyKnIpKm4qbikvKDIqbikpXX0sb310 Lmdlby5jbGlwRXh0ZW50PWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG4sYSxpLG89 e3N0cmVhbTpmdW5jdGlvbih0KXtyZXR1cm4gYSYmKGEudmFsaWQ9ITEpLChh PWkodCkpLnZhbGlkPSEwLGF9LGV4dGVudDpmdW5jdGlvbihzKXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8oaT1vbih0PStzWzBdWzBdLGU9K3NbMF1bMV0s cj0rc1sxXVswXSxuPStzWzFdWzFdKSxhJiYoYS52YWxpZD0hMSxhPW51bGwp LG8pOltbdCxlXSxbcixuXV19fTtyZXR1cm4gby5leHRlbnQoW1swLDBdLFs5 NjAsNTAwXV0pfSwodC5nZW8uY29uaWNFcXVhbEFyZWE9ZnVuY3Rpb24oKXty ZXR1cm4gc24obG4pfSkucmF3PWxuLHQuZ2VvLmFsYmVycz1mdW5jdGlvbigp e3JldHVybiB0Lmdlby5jb25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbOTYsMF0p LmNlbnRlcihbLS42LDM4LjddKS5wYXJhbGxlbHMoWzI5LjUsNDUuNV0pLnNj YWxlKDEwNzApfSx0Lmdlby5hbGJlcnNVc2E9ZnVuY3Rpb24oKXt2YXIgZSxy LG4sYSxpPXQuZ2VvLmFsYmVycygpLG89dC5nZW8uY29uaWNFcXVhbEFyZWEo KS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxz KFs1NSw2NV0pLHM9dC5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1 NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSksbD17 cG9pbnQ6ZnVuY3Rpb24odCxyKXtlPVt0LHJdfX07ZnVuY3Rpb24gYyh0KXt2 YXIgaT10WzBdLG89dFsxXTtyZXR1cm4gZT1udWxsLHIoaSxvKSxlfHwobihp LG8pLGUpfHxhKGksbyksZX1yZXR1cm4gYy5pbnZlcnQ9ZnVuY3Rpb24odCl7 dmFyIGU9aS5zY2FsZSgpLHI9aS50cmFuc2xhdGUoKSxuPSh0WzBdLXJbMF0p L2UsYT0odFsxXS1yWzFdKS9lO3JldHVybihhPj0uMTImJmE8LjIzNCYmbj49 LS40MjUmJm48LS4yMTQ/bzphPj0uMTY2JiZhPC4yMzQmJm4+PS0uMjE0JiZu PC0uMTE1P3M6aSkuaW52ZXJ0KHQpfSxjLnN0cmVhbT1mdW5jdGlvbih0KXt2 YXIgZT1pLnN0cmVhbSh0KSxyPW8uc3RyZWFtKHQpLG49cy5zdHJlYW0odCk7 cmV0dXJue3BvaW50OmZ1bmN0aW9uKHQsYSl7ZS5wb2ludCh0LGEpLHIucG9p bnQodCxhKSxuLnBvaW50KHQsYSl9LHNwaGVyZTpmdW5jdGlvbigpe2Uuc3Bo ZXJlKCksci5zcGhlcmUoKSxuLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rp b24oKXtlLmxpbmVTdGFydCgpLHIubGluZVN0YXJ0KCksbi5saW5lU3RhcnQo KX0sbGluZUVuZDpmdW5jdGlvbigpe2UubGluZUVuZCgpLHIubGluZUVuZCgp LG4ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlLnBvbHln b25TdGFydCgpLHIucG9seWdvblN0YXJ0KCksbi5wb2x5Z29uU3RhcnQoKX0s cG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLHIucG9seWdv bkVuZCgpLG4ucG9seWdvbkVuZCgpfX19LGMucHJlY2lzaW9uPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpLnByZWNpc2lvbih0KSxv LnByZWNpc2lvbih0KSxzLnByZWNpc2lvbih0KSxjKTppLnByZWNpc2lvbigp fSxjLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro PyhpLnNjYWxlKHQpLG8uc2NhbGUoLjM1KnQpLHMuc2NhbGUodCksYy50cmFu c2xhdGUoaS50cmFuc2xhdGUoKSkpOmkuc2NhbGUoKX0sYy50cmFuc2xhdGU9 ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGkudHJh bnNsYXRlKCk7dmFyIGU9aS5zY2FsZSgpLHU9K3RbMF0saD0rdFsxXTtyZXR1 cm4gcj1pLnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbdS0uNDU1KmUsaC0u MjM4KmVdLFt1Ky40NTUqZSxoKy4yMzgqZV1dKS5zdHJlYW0obCkucG9pbnQs bj1vLnRyYW5zbGF0ZShbdS0uMzA3KmUsaCsuMjAxKmVdKS5jbGlwRXh0ZW50 KFtbdS0uNDI1KmUra3QsaCsuMTIqZStrdF0sW3UtLjIxNCplLWt0LGgrLjIz NCplLWt0XV0pLnN0cmVhbShsKS5wb2ludCxhPXMudHJhbnNsYXRlKFt1LS4y MDUqZSxoKy4yMTIqZV0pLmNsaXBFeHRlbnQoW1t1LS4yMTQqZStrdCxoKy4x NjYqZStrdF0sW3UtLjExNSplLWt0LGgrLjIzNCplLWt0XV0pLnN0cmVhbShs KS5wb2ludCxjfSxjLnNjYWxlKDEwNzApfTt2YXIgY24sdW4saG4sZm4scG4s ZG4sZ249e3BvaW50OkQsbGluZVN0YXJ0OkQsbGluZUVuZDpELHBvbHlnb25T dGFydDpmdW5jdGlvbigpe3VuPTAsZ24ubGluZVN0YXJ0PXZufSxwb2x5Z29u RW5kOmZ1bmN0aW9uKCl7Z24ubGluZVN0YXJ0PWduLmxpbmVFbmQ9Z24ucG9p bnQ9RCxjbis9eSh1bi8yKX19O2Z1bmN0aW9uIHZuKCl7dmFyIHQsZSxyLG47 ZnVuY3Rpb24gYSh0LGUpe3VuKz1uKnQtciplLHI9dCxuPWV9Z24ucG9pbnQ9 ZnVuY3Rpb24oaSxvKXtnbi5wb2ludD1hLHQ9cj1pLGU9bj1vfSxnbi5saW5l RW5kPWZ1bmN0aW9uKCl7YSh0LGUpfX12YXIgbW49e3BvaW50OmZ1bmN0aW9u KHQsZSl7dDxobiYmKGhuPXQpO3Q+cG4mJihwbj10KTtlPGZuJiYoZm49ZSk7 ZT5kbiYmKGRuPWUpfSxsaW5lU3RhcnQ6RCxsaW5lRW5kOkQscG9seWdvblN0 YXJ0OkQscG9seWdvbkVuZDpEfTtmdW5jdGlvbiB5bigpe3ZhciB0PXhuKDQu NSksZT1bXSxyPXtwb2ludDpuLGxpbmVTdGFydDpmdW5jdGlvbigpe3IucG9p bnQ9YX0sbGluZUVuZDpvLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3IubGlu ZUVuZD1zfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7ci5saW5lRW5kPW8sci5w b2ludD1ufSxwb2ludFJhZGl1czpmdW5jdGlvbihlKXtyZXR1cm4gdD14bihl KSxyfSxyZXN1bHQ6ZnVuY3Rpb24oKXtpZihlLmxlbmd0aCl7dmFyIHQ9ZS5q b2luKCIiKTtyZXR1cm4gZT1bXSx0fX19O2Z1bmN0aW9uIG4ocixuKXtlLnB1 c2goIk0iLHIsIiwiLG4sdCl9ZnVuY3Rpb24gYSh0LG4pe2UucHVzaCgiTSIs dCwiLCIsbiksci5wb2ludD1pfWZ1bmN0aW9uIGkodCxyKXtlLnB1c2goIkwi LHQsIiwiLHIpfWZ1bmN0aW9uIG8oKXtyLnBvaW50PW59ZnVuY3Rpb24gcygp e2UucHVzaCgiWiIpfXJldHVybiByfWZ1bmN0aW9uIHhuKHQpe3JldHVybiJt MCwiK3QrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrLTIqdCsiYSIrdCsiLCIr dCsiIDAgMSwxIDAsIisyKnQrInoifXZhciBibixfbj17cG9pbnQ6d24sbGlu ZVN0YXJ0OmtuLGxpbmVFbmQ6VG4scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7 X24ubGluZVN0YXJ0PU1ufSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7X24ucG9p bnQ9d24sX24ubGluZVN0YXJ0PWtuLF9uLmxpbmVFbmQ9VG59fTtmdW5jdGlv biB3bih0LGUpe19yKz10LHdyKz1lLCsra3J9ZnVuY3Rpb24ga24oKXt2YXIg dCxlO2Z1bmN0aW9uIHIocixuKXt2YXIgYT1yLXQsaT1uLWUsbz1NYXRoLnNx cnQoYSphK2kqaSk7VHIrPW8qKHQrcikvMixNcis9byooZStuKS8yLEFyKz1v LHduKHQ9cixlPW4pfV9uLnBvaW50PWZ1bmN0aW9uKG4sYSl7X24ucG9pbnQ9 cix3bih0PW4sZT1hKX19ZnVuY3Rpb24gVG4oKXtfbi5wb2ludD13bn1mdW5j dGlvbiBNbigpe3ZhciB0LGUscixuO2Z1bmN0aW9uIGEodCxlKXt2YXIgYT10 LXIsaT1lLW4sbz1NYXRoLnNxcnQoYSphK2kqaSk7VHIrPW8qKHIrdCkvMixN cis9byoobitlKS8yLEFyKz1vLFNyKz0obz1uKnQtciplKSoocit0KSxFcis9 byoobitlKSxMcis9MypvLHduKHI9dCxuPWUpfV9uLnBvaW50PWZ1bmN0aW9u KGksbyl7X24ucG9pbnQ9YSx3bih0PXI9aSxlPW49byl9LF9uLmxpbmVFbmQ9 ZnVuY3Rpb24oKXthKHQsZSl9fWZ1bmN0aW9uIEFuKHQpe3ZhciBlPTQuNSxy PXtwb2ludDpuLGxpbmVTdGFydDpmdW5jdGlvbigpe3IucG9pbnQ9YX0sbGlu ZUVuZDpvLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3IubGluZUVuZD1zfSxw b2x5Z29uRW5kOmZ1bmN0aW9uKCl7ci5saW5lRW5kPW8sci5wb2ludD1ufSxw b2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gZT10LHJ9LHJlc3VsdDpE fTtmdW5jdGlvbiBuKHIsbil7dC5tb3ZlVG8ocitlLG4pLHQuYXJjKHIsbixl LDAsQXQpfWZ1bmN0aW9uIGEoZSxuKXt0Lm1vdmVUbyhlLG4pLHIucG9pbnQ9 aX1mdW5jdGlvbiBpKGUscil7dC5saW5lVG8oZSxyKX1mdW5jdGlvbiBvKCl7 ci5wb2ludD1ufWZ1bmN0aW9uIHMoKXt0LmNsb3NlUGF0aCgpfXJldHVybiBy fWZ1bmN0aW9uIFNuKHQpe3ZhciBlPS41LHI9TWF0aC5jb3MoMzAqTHQpLG49 MTY7ZnVuY3Rpb24gYShlKXtyZXR1cm4obj9mdW5jdGlvbihlKXt2YXIgcixh LG8scyxsLGMsdSxoLGYscCxkLGcsdj17cG9pbnQ6bSxsaW5lU3RhcnQ6eSxs aW5lRW5kOmIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7ZS5wb2x5Z29uU3Rh cnQoKSx2LmxpbmVTdGFydD1ffSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7ZS5w b2x5Z29uRW5kKCksdi5saW5lU3RhcnQ9eX19O2Z1bmN0aW9uIG0ocixuKXty PXQocixuKSxlLnBvaW50KHJbMF0sclsxXSl9ZnVuY3Rpb24geSgpe2g9TmFO LHYucG9pbnQ9eCxlLmxpbmVTdGFydCgpfWZ1bmN0aW9uIHgocixhKXt2YXIg bz16cihbcixhXSkscz10KHIsYSk7aShoLGYsdSxwLGQsZyxoPXNbMF0sZj1z WzFdLHU9cixwPW9bMF0sZD1vWzFdLGc9b1syXSxuLGUpLGUucG9pbnQoaCxm KX1mdW5jdGlvbiBiKCl7di5wb2ludD1tLGUubGluZUVuZCgpfWZ1bmN0aW9u IF8oKXt5KCksdi5wb2ludD13LHYubGluZUVuZD1rfWZ1bmN0aW9uIHcodCxl KXt4KHI9dCxlKSxhPWgsbz1mLHM9cCxsPWQsYz1nLHYucG9pbnQ9eH1mdW5j dGlvbiBrKCl7aShoLGYsdSxwLGQsZyxhLG8scixzLGwsYyxuLGUpLHYubGlu ZUVuZD1iLGIoKX1yZXR1cm4gdn06ZnVuY3Rpb24oZSl7cmV0dXJuIExuKGUs ZnVuY3Rpb24ocixuKXtyPXQocixuKSxlLnBvaW50KHJbMF0sclsxXSl9KX0p KGUpfWZ1bmN0aW9uIGkobixhLG8scyxsLGMsdSxoLGYscCxkLGcsdixtKXt2 YXIgeD11LW4sYj1oLWEsXz14KngrYipiO2lmKF8+NCplJiZ2LS0pe3ZhciB3 PXMrcCxrPWwrZCxUPWMrZyxNPU1hdGguc3FydCh3KncrayprK1QqVCksQT1N YXRoLmFzaW4oVC89TSksUz15KHkoVCktMSk8a3R8fHkoby1mKTxrdD8obytm KS8yOk1hdGguYXRhbjIoayx3KSxFPXQoUyxBKSxMPUVbMF0sQz1FWzFdLFA9 TC1uLE89Qy1hLHo9YipQLXgqTzsoeip6L18+ZXx8eSgoeCpQK2IqTykvXy0u NSk+LjN8fHMqcCtsKmQrYypnPHIpJiYoaShuLGEsbyxzLGwsYyxMLEMsUyx3 Lz1NLGsvPU0sVCx2LG0pLG0ucG9pbnQoTCxDKSxpKEwsQyxTLHcsayxULHUs aCxmLHAsZCxnLHYsbSkpfX1yZXR1cm4gYS5wcmVjaXNpb249ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49KGU9dCp0KT4wJiYxNixh KTpNYXRoLnNxcnQoZSl9LGF9ZnVuY3Rpb24gRW4odCl7dGhpcy5zdHJlYW09 dH1mdW5jdGlvbiBMbih0LGUpe3JldHVybntwb2ludDplLHNwaGVyZTpmdW5j dGlvbigpe3Quc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3QubGlu ZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKX0scG9s eWdvblN0YXJ0OmZ1bmN0aW9uKCl7dC5wb2x5Z29uU3RhcnQoKX0scG9seWdv bkVuZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgpfX19ZnVuY3Rpb24gQ24o dCl7cmV0dXJuIFBuKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSgpfWZ1bmN0aW9u IFBuKGUpe3ZhciByLG4sYSxpLG8scyxsPVNuKGZ1bmN0aW9uKHQsZSl7cmV0 dXJuWyh0PXIodCxlKSlbMF0qYytpLG8tdFsxXSpjXX0pLGM9MTUwLHU9NDgw LGg9MjUwLGY9MCxwPTAsZD0wLGc9MCx2PTAsbT1ybix4PVAsYj1udWxsLF89 bnVsbDtmdW5jdGlvbiB3KHQpe3JldHVyblsodD1hKHRbMF0qTHQsdFsxXSpM dCkpWzBdKmMraSxvLXRbMV0qY119ZnVuY3Rpb24gayh0KXtyZXR1cm4odD1h LmludmVydCgodFswXS1pKS9jLChvLXRbMV0pL2MpKSYmW3RbMF0qQ3QsdFsx XSpDdF19ZnVuY3Rpb24gVCgpe2E9V3Iobj1EbihkLGcsdikscik7dmFyIHQ9 cihmLHApO3JldHVybiBpPXUtdFswXSpjLG89aCt0WzFdKmMsTSgpfWZ1bmN0 aW9uIE0oKXtyZXR1cm4gcyYmKHMudmFsaWQ9ITEscz1udWxsKSx3fXJldHVy biB3LnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gcyYmKHMudmFsaWQ9ITEp LChzPU9uKG0obixsKHgodCkpKSkpLnZhbGlkPSEwLHN9LHcuY2xpcEFuZ2xl PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPW51bGw9 PXQ/KGI9dCxybik6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5jb3ModCkscj1l PjAsbj15KGUpPmt0O3JldHVybiBRcihhLGZ1bmN0aW9uKHQpe3ZhciBlLHMs bCxjLHU7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9bD0hMSx1PTF9 LHBvaW50OmZ1bmN0aW9uKGgsZil7dmFyIHAsZD1baCxmXSxnPWEoaCxmKSx2 PXI/Zz8wOm8oaCxmKTpnP28oaCsoaDwwP010Oi1NdCksZik6MDtpZighZSYm KGM9bD1nKSYmdC5saW5lU3RhcnQoKSxnIT09bCYmKHA9aShlLGQpLChqcihl LHApfHxqcihkLHApKSYmKGRbMF0rPWt0LGRbMV0rPWt0LGc9YShkWzBdLGRb MV0pKSksZyE9PWwpdT0wLGc/KHQubGluZVN0YXJ0KCkscD1pKGQsZSksdC5w b2ludChwWzBdLHBbMV0pKToocD1pKGUsZCksdC5wb2ludChwWzBdLHBbMV0p LHQubGluZUVuZCgpKSxlPXA7ZWxzZSBpZihuJiZlJiZyXmcpe3ZhciBtO3Ym c3x8IShtPWkoZCxlLCEwKSl8fCh1PTAscj8odC5saW5lU3RhcnQoKSx0LnBv aW50KG1bMF1bMF0sbVswXVsxXSksdC5wb2ludChtWzFdWzBdLG1bMV1bMV0p LHQubGluZUVuZCgpKToodC5wb2ludChtWzFdWzBdLG1bMV1bMV0pLHQubGlu ZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChtWzBdWzBdLG1bMF1bMV0p KSl9IWd8fGUmJmpyKGUsZCl8fHQucG9pbnQoZFswXSxkWzFdKSxlPWQsbD1n LHM9dn0sbGluZUVuZDpmdW5jdGlvbigpe2wmJnQubGluZUVuZCgpLGU9bnVs bH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gdXwoYyYmbCk8PDF9fX0sTm4o dCw2Kkx0KSxyP1swLC10XTpbLU10LHQtTXRdKTtmdW5jdGlvbiBhKHQscil7 cmV0dXJuIE1hdGguY29zKHQpKk1hdGguY29zKHIpPmV9ZnVuY3Rpb24gaSh0 LHIsbil7dmFyIGE9WzEsMCwwXSxpPURyKHpyKHQpLHpyKHIpKSxvPUlyKGks aSkscz1pWzBdLGw9by1zKnM7aWYoIWwpcmV0dXJuIW4mJnQ7dmFyIGM9ZSpv L2wsdT0tZSpzL2wsaD1EcihhLGkpLGY9RnIoYSxjKTtScihmLEZyKGksdSkp O3ZhciBwPWgsZD1JcihmLHApLGc9SXIocCxwKSx2PWQqZC1nKihJcihmLGYp LTEpO2lmKCEodjwwKSl7dmFyIG09TWF0aC5zcXJ0KHYpLHg9RnIocCwoLWQt bSkvZyk7aWYoUnIoeCxmKSx4PU5yKHgpLCFuKXJldHVybiB4O3ZhciBiLF89 dFswXSx3PXJbMF0saz10WzFdLFQ9clsxXTt3PF8mJihiPV8sXz13LHc9Yik7 dmFyIE09dy1fLEE9eShNLU10KTxrdDtpZighQSYmVDxrJiYoYj1rLGs9VCxU PWIpLEF8fE08a3Q/QT9rK1Q+MF54WzFdPCh5KHhbMF0tXyk8a3Q/azpUKTpr PD14WzFdJiZ4WzFdPD1UOk0+TXReKF88PXhbMF0mJnhbMF08PXcpKXt2YXIg Uz1GcihwLCgtZCttKS9nKTtyZXR1cm4gUnIoUyxmKSxbeCxOcihTKV19fX1m dW5jdGlvbiBvKGUsbil7dmFyIGE9cj90Ok10LXQsaT0wO3JldHVybiBlPC1h P2l8PTE6ZT5hJiYoaXw9MiksbjwtYT9pfD00Om4+YSYmKGl8PTgpLGl9fSgo Yj0rdCkqTHQpLE0oKSk6Yn0sdy5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPXQseD10P29uKHRbMF1bMF0sdFsw XVsxXSx0WzFdWzBdLHRbMV1bMV0pOlAsTSgpKTpffSx3LnNjYWxlPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSt0LFQoKSk6Y30s dy50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KHU9K3RbMF0saD0rdFsxXSxUKCkpOlt1LGhdfSx3LmNlbnRlcj1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj10WzBdJTM2MCpM dCxwPXRbMV0lMzYwKkx0LFQoKSk6W2YqQ3QscCpDdF19LHcucm90YXRlPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPXRbMF0lMzYw Kkx0LGc9dFsxXSUzNjAqTHQsdj10Lmxlbmd0aD4yP3RbMl0lMzYwKkx0OjAs VCgpKTpbZCpDdCxnKkN0LHYqQ3RdfSx0LnJlYmluZCh3LGwsInByZWNpc2lv biIpLGZ1bmN0aW9uKCl7cmV0dXJuIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50 cyksdy5pbnZlcnQ9ci5pbnZlcnQmJmssVCgpfX1mdW5jdGlvbiBPbih0KXty ZXR1cm4gTG4odCxmdW5jdGlvbihlLHIpe3QucG9pbnQoZSpMdCxyKkx0KX0p fWZ1bmN0aW9uIHpuKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gSW4odCxl KXtyZXR1cm5bdD5NdD90LUF0OnQ8LU10P3QrQXQ6dCxlXX1mdW5jdGlvbiBE bih0LGUscil7cmV0dXJuIHQ/ZXx8cj9XcihGbih0KSxCbihlLHIpKTpGbih0 KTplfHxyP0JuKGUscik6SW59ZnVuY3Rpb24gUm4odCl7cmV0dXJuIGZ1bmN0 aW9uKGUscil7cmV0dXJuWyhlKz10KT5NdD9lLUF0OmU8LU10P2UrQXQ6ZSxy XX19ZnVuY3Rpb24gRm4odCl7dmFyIGU9Um4odCk7cmV0dXJuIGUuaW52ZXJ0 PVJuKC10KSxlfWZ1bmN0aW9uIEJuKHQsZSl7dmFyIHI9TWF0aC5jb3ModCks bj1NYXRoLnNpbih0KSxhPU1hdGguY29zKGUpLGk9TWF0aC5zaW4oZSk7ZnVu Y3Rpb24gbyh0LGUpe3ZhciBvPU1hdGguY29zKGUpLHM9TWF0aC5jb3ModCkq byxsPU1hdGguc2luKHQpKm8sYz1NYXRoLnNpbihlKSx1PWMqcitzKm47cmV0 dXJuW01hdGguYXRhbjIobCphLXUqaSxzKnItYypuKSxJdCh1KmErbCppKV19 cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG89TWF0aC5jb3Mo ZSkscz1NYXRoLmNvcyh0KSpvLGw9TWF0aC5zaW4odCkqbyxjPU1hdGguc2lu KGUpLHU9YyphLWwqaTtyZXR1cm5bTWF0aC5hdGFuMihsKmErYyppLHMqcit1 Km4pLEl0KHUqci1zKm4pXX0sb31mdW5jdGlvbiBObih0LGUpe3ZhciByPU1h dGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIGZ1bmN0aW9uKGEsaSxv LHMpe3ZhciBsPW8qZTtudWxsIT1hPyhhPWpuKHIsYSksaT1qbihyLGkpLChv PjA/YTxpOmE+aSkmJihhKz1vKkF0KSk6KGE9dCtvKkF0LGk9dC0uNSpsKTtm b3IodmFyIGMsdT1hO28+MD91Pmk6dTxpO3UtPWwpcy5wb2ludCgoYz1Ocihb ciwtbipNYXRoLmNvcyh1KSwtbipNYXRoLnNpbih1KV0pKVswXSxjWzFdKX19 ZnVuY3Rpb24gam4odCxlKXt2YXIgcj16cihlKTtyWzBdLT10LEJyKHIpO3Zh ciBuPXp0KC1yWzFdKTtyZXR1cm4oKC1yWzJdPDA/LW46bikrMipNYXRoLlBJ LWt0KSUoMipNYXRoLlBJKX1mdW5jdGlvbiBWbihlLHIsbil7dmFyIGE9dC5y YW5nZShlLHIta3QsbikuY29uY2F0KHIpO3JldHVybiBmdW5jdGlvbih0KXty ZXR1cm4gYS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuW3QsZV19KX19ZnVuY3Rp b24gVW4oZSxyLG4pe3ZhciBhPXQucmFuZ2UoZSxyLWt0LG4pLmNvbmNhdChy KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGUp e3JldHVybltlLHRdfSl9fWZ1bmN0aW9uIHFuKHQpe3JldHVybiB0LnNvdXJj ZX1mdW5jdGlvbiBIbih0KXtyZXR1cm4gdC50YXJnZXR9dC5nZW8ucGF0aD1m dW5jdGlvbigpe3ZhciBlLHIsbixhLGksbz00LjU7ZnVuY3Rpb24gcyhlKXty ZXR1cm4gZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBvJiZhLnBvaW50UmFkaXVz KCtvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksaSYmaS52YWxpZHx8KGk9bihh KSksdC5nZW8uc3RyZWFtKGUsaSkpLGEucmVzdWx0KCl9ZnVuY3Rpb24gbCgp e3JldHVybiBpPW51bGwsc31yZXR1cm4gcy5hcmVhPWZ1bmN0aW9uKGUpe3Jl dHVybiBjbj0wLHQuZ2VvLnN0cmVhbShlLG4oZ24pKSxjbn0scy5jZW50cm9p ZD1mdW5jdGlvbihlKXtyZXR1cm4gX3I9d3I9a3I9VHI9TXI9QXI9U3I9RXI9 THI9MCx0Lmdlby5zdHJlYW0oZSxuKF9uKSksTHI/W1NyL0xyLEVyL0xyXTpB cj9bVHIvQXIsTXIvQXJdOmtyP1tfci9rcix3ci9rcl06W05hTixOYU5dfSxz LmJvdW5kcz1mdW5jdGlvbihlKXtyZXR1cm4gcG49ZG49LShobj1mbj0xLzAp LHQuZ2VvLnN0cmVhbShlLG4obW4pKSxbW2huLGZuXSxbcG4sZG5dXX0scy5w cm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro PyhuPShlPXQpP3Quc3RyZWFtfHwocj10LGE9U24oZnVuY3Rpb24odCxlKXty ZXR1cm4gcihbdCpDdCxlKkN0XSl9KSxmdW5jdGlvbih0KXtyZXR1cm4gT24o YSh0KSl9KTpQLGwoKSk6ZTt2YXIgcixhfSxzLmNvbnRleHQ9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09KHI9dCk/bmV3 IHluOm5ldyBBbih0KSwiZnVuY3Rpb24iIT10eXBlb2YgbyYmYS5wb2ludFJh ZGl1cyhvKSxsKCkpOnJ9LHMucG9pbnRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ dDooYS5wb2ludFJhZGl1cygrdCksK3QpLHMpOm99LHMucHJvamVjdGlvbih0 Lmdlby5hbGJlcnNVc2EoKSkuY29udGV4dChudWxsKX0sdC5nZW8udHJhbnNm b3JtPWZ1bmN0aW9uKHQpe3JldHVybntzdHJlYW06ZnVuY3Rpb24oZSl7dmFy IHI9bmV3IEVuKGUpO2Zvcih2YXIgbiBpbiB0KXJbbl09dFtuXTtyZXR1cm4g cn19fSxFbi5wcm90b3R5cGU9e3BvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5z dHJlYW0ucG9pbnQodCxlKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJl YW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFt LmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0u bGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVh bS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMu c3RyZWFtLnBvbHlnb25FbmQoKX19LHQuZ2VvLnByb2plY3Rpb249Q24sdC5n ZW8ucHJvamVjdGlvbk11dGF0b3I9UG4sKHQuZ2VvLmVxdWlyZWN0YW5ndWxh cj1mdW5jdGlvbigpe3JldHVybiBDbih6bil9KS5yYXc9em4uaW52ZXJ0PXpu LHQuZ2VvLnJvdGF0aW9uPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0 dXJuKGU9dChlWzBdKkx0LGVbMV0qTHQpKVswXSo9Q3QsZVsxXSo9Q3QsZX1y ZXR1cm4gdD1Ebih0WzBdJTM2MCpMdCx0WzFdKkx0LHQubGVuZ3RoPjI/dFsy XSpMdDowKSxlLmludmVydD1mdW5jdGlvbihlKXtyZXR1cm4oZT10LmludmVy dChlWzBdKkx0LGVbMV0qTHQpKVswXSo9Q3QsZVsxXSo9Q3QsZX0sZX0sSW4u aW52ZXJ0PXpuLHQuZ2VvLmNpcmNsZT1mdW5jdGlvbigpe3ZhciB0LGUscj1b MCwwXSxuPTY7ZnVuY3Rpb24gYSgpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVv ZiByP3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnIsbj1EbigtdFswXSpMdCwt dFsxXSpMdCwwKS5pbnZlcnQsYT1bXTtyZXR1cm4gZShudWxsLG51bGwsMSx7 cG9pbnQ6ZnVuY3Rpb24odCxlKXthLnB1c2godD1uKHQsZSkpLHRbMF0qPUN0 LHRbMV0qPUN0fX0pLHt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbYV19 fXJldHVybiBhLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8ocj10LGEpOnJ9LGEuYW5nbGU9ZnVuY3Rpb24ocil7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KGU9Tm4oKHQ9K3IpKkx0LG4qTHQpLGEpOnR9 LGEucHJlY2lzaW9uPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhlPU5uKHQqTHQsKG49K3IpKkx0KSxhKTpufSxhLmFuZ2xlKDkwKX0s dC5nZW8uZGlzdGFuY2U9ZnVuY3Rpb24odCxlKXt2YXIgcixuPShlWzBdLXRb MF0pKkx0LGE9dFsxXSpMdCxpPWVbMV0qTHQsbz1NYXRoLnNpbihuKSxzPU1h dGguY29zKG4pLGw9TWF0aC5zaW4oYSksYz1NYXRoLmNvcyhhKSx1PU1hdGgu c2luKGkpLGg9TWF0aC5jb3MoaSk7cmV0dXJuIE1hdGguYXRhbjIoTWF0aC5z cXJ0KChyPWgqbykqcisocj1jKnUtbCpoKnMpKnIpLGwqdStjKmgqcyl9LHQu Z2VvLmdyYXRpY3VsZT1mdW5jdGlvbigpe3ZhciBlLHIsbixhLGksbyxzLGws Yyx1LGgsZixwPTEwLGQ9cCxnPTkwLHY9MzYwLG09Mi41O2Z1bmN0aW9uIHgo KXtyZXR1cm57dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczpi KCl9fWZ1bmN0aW9uIGIoKXtyZXR1cm4gdC5yYW5nZShNYXRoLmNlaWwoYS9n KSpnLG4sZykubWFwKGgpLmNvbmNhdCh0LnJhbmdlKE1hdGguY2VpbChsL3Yp KnYscyx2KS5tYXAoZikpLmNvbmNhdCh0LnJhbmdlKE1hdGguY2VpbChyL3Ap KnAsZSxwKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHkodCVnKT5rdH0p Lm1hcChjKSkuY29uY2F0KHQucmFuZ2UoTWF0aC5jZWlsKG8vZCkqZCxpLGQp LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4geSh0JXYpPmt0fSkubWFwKHUp KX1yZXR1cm4geC5saW5lcz1mdW5jdGlvbigpe3JldHVybiBiKCkubWFwKGZ1 bmN0aW9uKHQpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRl czp0fX0pfSx4Lm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9s eWdvbiIsY29vcmRpbmF0ZXM6W2goYSkuY29uY2F0KGYocykuc2xpY2UoMSks aChuKS5yZXZlcnNlKCkuc2xpY2UoMSksZihsKS5yZXZlcnNlKCkuc2xpY2Uo MSkpXX19LHguZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoP3gubWFqb3JFeHRlbnQodCkubWlub3JFeHRlbnQodCk6eC5taW5v ckV4dGVudCgpfSx4Lm1ham9yRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhhPSt0WzBdWzBdLG49K3RbMV1bMF0sbD0rdFsw XVsxXSxzPSt0WzFdWzFdLGE+biYmKHQ9YSxhPW4sbj10KSxsPnMmJih0PWws bD1zLHM9dCkseC5wcmVjaXNpb24obSkpOltbYSxsXSxbbixzXV19LHgubWlu b3JFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KHI9K3RbMF1bMF0sZT0rdFsxXVswXSxvPSt0WzBdWzFdLGk9K3RbMV1bMV0s cj5lJiYodD1yLHI9ZSxlPXQpLG8+aSYmKHQ9byxvPWksaT10KSx4LnByZWNp c2lvbihtKSk6W1tyLG9dLFtlLGldXX0seC5zdGVwPWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoP3gubWFqb3JTdGVwKHQpLm1pbm9yU3Rl cCh0KTp4Lm1pbm9yU3RlcCgpfSx4Lm1ham9yU3RlcD1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rdFswXSx2PSt0WzFdLHgpOltn LHZdfSx4Lm1pbm9yU3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8ocD0rdFswXSxkPSt0WzFdLHgpOltwLGRdfSx4LnByZWNpc2lv bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0rdCxj PVZuKG8saSw5MCksdT1VbihyLGUsbSksaD1WbihsLHMsOTApLGY9VW4oYSxu LG0pLHgpOm19LHgubWFqb3JFeHRlbnQoW1stMTgwLC05MCtrdF0sWzE4MCw5 MC1rdF1dKS5taW5vckV4dGVudChbWy0xODAsLTgwLWt0XSxbMTgwLDgwK2t0 XV0pfSx0Lmdlby5ncmVhdEFyYz1mdW5jdGlvbigpe3ZhciBlLHIsbj1xbixh PUhuO2Z1bmN0aW9uIGkoKXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29v cmRpbmF0ZXM6W2V8fG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHJ8fGEuYXBw bHkodGhpcyxhcmd1bWVudHMpXX19cmV0dXJuIGkuZGlzdGFuY2U9ZnVuY3Rp b24oKXtyZXR1cm4gdC5nZW8uZGlzdGFuY2UoZXx8bi5hcHBseSh0aGlzLGFy Z3VtZW50cykscnx8YS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxpLnNvdXJj ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGU9 ImZ1bmN0aW9uIj09dHlwZW9mIHQ/bnVsbDp0LGkpOm59LGkudGFyZ2V0PWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQscj0iZnVu Y3Rpb24iPT10eXBlb2YgdD9udWxsOnQsaSk6YX0saS5wcmVjaXNpb249ZnVu Y3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9pOjB9LGl9LHQuZ2Vv LmludGVycG9sYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHI9dFswXSpMdCxu PXRbMV0qTHQsYT1lWzBdKkx0LGk9ZVsxXSpMdCxvPU1hdGguY29zKG4pLHM9 TWF0aC5zaW4obiksbD1NYXRoLmNvcyhpKSxjPU1hdGguc2luKGkpLHU9bypN YXRoLmNvcyhyKSxoPW8qTWF0aC5zaW4ociksZj1sKk1hdGguY29zKGEpLHA9 bCpNYXRoLnNpbihhKSxkPTIqTWF0aC5hc2luKE1hdGguc3FydChSdChpLW4p K28qbCpSdChhLXIpKSksZz0xL01hdGguc2luKGQpLCh2PWQ/ZnVuY3Rpb24o dCl7dmFyIGU9TWF0aC5zaW4odCo9ZCkqZyxyPU1hdGguc2luKGQtdCkqZyxu PXIqdStlKmYsYT1yKmgrZSpwLGk9cipzK2UqYztyZXR1cm5bTWF0aC5hdGFu MihhLG4pKkN0LE1hdGguYXRhbjIoaSxNYXRoLnNxcnQobipuK2EqYSkpKkN0 XX06ZnVuY3Rpb24oKXtyZXR1cm5bcipDdCxuKkN0XX0pLmRpc3RhbmNlPWQs djt2YXIgcixuLGEsaSxvLHMsbCxjLHUsaCxmLHAsZCxnLHZ9LHQuZ2VvLmxl bmd0aD1mdW5jdGlvbihlKXtyZXR1cm4gYm49MCx0Lmdlby5zdHJlYW0oZSxH biksYm59O3ZhciBHbj17c3BoZXJlOkQscG9pbnQ6RCxsaW5lU3RhcnQ6ZnVu Y3Rpb24oKXt2YXIgdCxlLHI7ZnVuY3Rpb24gbihuLGEpe3ZhciBpPU1hdGgu c2luKGEqPUx0KSxvPU1hdGguY29zKGEpLHM9eSgobio9THQpLXQpLGw9TWF0 aC5jb3Mocyk7Ym4rPU1hdGguYXRhbjIoTWF0aC5zcXJ0KChzPW8qTWF0aC5z aW4ocykpKnMrKHM9cippLWUqbypsKSpzKSxlKmkrcipvKmwpLHQ9bixlPWks cj1vfUduLnBvaW50PWZ1bmN0aW9uKGEsaSl7dD1hKkx0LGU9TWF0aC5zaW4o aSo9THQpLHI9TWF0aC5jb3MoaSksR24ucG9pbnQ9bn0sR24ubGluZUVuZD1m dW5jdGlvbigpe0duLnBvaW50PUduLmxpbmVFbmQ9RH19LGxpbmVFbmQ6RCxw b2x5Z29uU3RhcnQ6RCxwb2x5Z29uRW5kOkR9O2Z1bmN0aW9uIFluKHQsZSl7 ZnVuY3Rpb24gcihlLHIpe3ZhciBuPU1hdGguY29zKGUpLGE9TWF0aC5jb3Mo ciksaT10KG4qYSk7cmV0dXJuW2kqYSpNYXRoLnNpbihlKSxpKk1hdGguc2lu KHIpXX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24odCxyKXt2YXIgbj1NYXRo LnNxcnQodCp0K3IqciksYT1lKG4pLGk9TWF0aC5zaW4oYSksbz1NYXRoLmNv cyhhKTtyZXR1cm5bTWF0aC5hdGFuMih0KmksbipvKSxNYXRoLmFzaW4obiYm cippL24pXX0scn12YXIgV249WW4oZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgu c3FydCgyLygxK3QpKX0sZnVuY3Rpb24odCl7cmV0dXJuIDIqTWF0aC5hc2lu KHQvMil9KTsodC5nZW8uYXppbXV0aGFsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7 cmV0dXJuIENuKFduKX0pLnJhdz1Xbjt2YXIgWG49WW4oZnVuY3Rpb24odCl7 dmFyIGU9TWF0aC5hY29zKHQpO3JldHVybiBlJiZlL01hdGguc2luKGUpfSxQ KTtmdW5jdGlvbiBabih0LGUpe3ZhciByPU1hdGguY29zKHQpLG49ZnVuY3Rp b24odCl7cmV0dXJuIE1hdGgudGFuKE10LzQrdC8yKX0sYT10PT09ZT9NYXRo LnNpbih0KTpNYXRoLmxvZyhyL01hdGguY29zKGUpKS9NYXRoLmxvZyhuKGUp L24odCkpLGk9cipNYXRoLnBvdyhuKHQpLGEpL2E7aWYoIWEpcmV0dXJuIFFu O2Z1bmN0aW9uIG8odCxlKXtpPjA/ZTwtRXQra3QmJihlPS1FdCtrdCk6ZT5F dC1rdCYmKGU9RXQta3QpO3ZhciByPWkvTWF0aC5wb3cobihlKSxhKTtyZXR1 cm5bcipNYXRoLnNpbihhKnQpLGktcipNYXRoLmNvcyhhKnQpXX1yZXR1cm4g by5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1pLWUsbj1QdChhKSpNYXRo LnNxcnQodCp0K3Iqcik7cmV0dXJuW01hdGguYXRhbjIodCxyKS9hLDIqTWF0 aC5hdGFuKE1hdGgucG93KGkvbiwxL2EpKS1FdF19LG99ZnVuY3Rpb24gSm4o dCxlKXt2YXIgcj1NYXRoLmNvcyh0KSxuPXQ9PT1lP01hdGguc2luKHQpOihy LU1hdGguY29zKGUpKS8oZS10KSxhPXIvbit0O2lmKHkobik8a3QpcmV0dXJu IHpuO2Z1bmN0aW9uIGkodCxlKXt2YXIgcj1hLWU7cmV0dXJuW3IqTWF0aC5z aW4obip0KSxhLXIqTWF0aC5jb3Mobip0KV19cmV0dXJuIGkuaW52ZXJ0PWZ1 bmN0aW9uKHQsZSl7dmFyIHI9YS1lO3JldHVybltNYXRoLmF0YW4yKHQscikv bixhLVB0KG4pKk1hdGguc3FydCh0KnQrcipyKV19LGl9KHQuZ2VvLmF6aW11 dGhhbEVxdWlkaXN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuIENuKFhuKX0pLnJh dz1YbiwodC5nZW8uY29uaWNDb25mb3JtYWw9ZnVuY3Rpb24oKXtyZXR1cm4g c24oWm4pfSkucmF3PVpuLCh0Lmdlby5jb25pY0VxdWlkaXN0YW50PWZ1bmN0 aW9uKCl7cmV0dXJuIHNuKEpuKX0pLnJhdz1Kbjt2YXIgS249WW4oZnVuY3Rp b24odCl7cmV0dXJuIDEvdH0sTWF0aC5hdGFuKTtmdW5jdGlvbiBRbih0LGUp e3JldHVyblt0LE1hdGgubG9nKE1hdGgudGFuKE10LzQrZS8yKSldfWZ1bmN0 aW9uICRuKHQpe3ZhciBlLHI9Q24odCksbj1yLnNjYWxlLGE9ci50cmFuc2xh dGUsaT1yLmNsaXBFeHRlbnQ7cmV0dXJuIHIuc2NhbGU9ZnVuY3Rpb24oKXt2 YXIgdD1uLmFwcGx5KHIsYXJndW1lbnRzKTtyZXR1cm4gdD09PXI/ZT9yLmNs aXBFeHRlbnQobnVsbCk6cjp0fSxyLnRyYW5zbGF0ZT1mdW5jdGlvbigpe3Zh ciB0PWEuYXBwbHkocixhcmd1bWVudHMpO3JldHVybiB0PT09cj9lP3IuY2xp cEV4dGVudChudWxsKTpyOnR9LHIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXt2 YXIgbz1pLmFwcGx5KHIsYXJndW1lbnRzKTtpZihvPT09cil7aWYoZT1udWxs PT10KXt2YXIgcz1NdCpuKCksbD1hKCk7aShbW2xbMF0tcyxsWzFdLXNdLFts WzBdK3MsbFsxXStzXV0pfX1lbHNlIGUmJihvPW51bGwpO3JldHVybiBvfSxy LmNsaXBFeHRlbnQobnVsbCl9KHQuZ2VvLmdub21vbmljPWZ1bmN0aW9uKCl7 cmV0dXJuIENuKEtuKX0pLnJhdz1LbixRbi5pbnZlcnQ9ZnVuY3Rpb24odCxl KXtyZXR1cm5bdCwyKk1hdGguYXRhbihNYXRoLmV4cChlKSktRXRdfSwodC5n ZW8ubWVyY2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gJG4oUW4pfSkucmF3PVFu O3ZhciB0YT1ZbihmdW5jdGlvbigpe3JldHVybiAxfSxNYXRoLmFzaW4pOyh0 Lmdlby5vcnRob2dyYXBoaWM9ZnVuY3Rpb24oKXtyZXR1cm4gQ24odGEpfSku cmF3PXRhO3ZhciBlYT1ZbihmdW5jdGlvbih0KXtyZXR1cm4gMS8oMSt0KX0s ZnVuY3Rpb24odCl7cmV0dXJuIDIqTWF0aC5hdGFuKHQpfSk7ZnVuY3Rpb24g cmEodCxlKXtyZXR1cm5bTWF0aC5sb2coTWF0aC50YW4oTXQvNCtlLzIpKSwt dF19ZnVuY3Rpb24gbmEodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gYWEodCl7 cmV0dXJuIHRbMV19ZnVuY3Rpb24gaWEodCl7Zm9yKHZhciBlPXQubGVuZ3Ro LHI9WzAsMV0sbj0yLGE9MjthPGU7YSsrKXtmb3IoO24+MSYmT3QodFtyW24t Ml1dLHRbcltuLTFdXSx0W2FdKTw9MDspLS1uO3JbbisrXT1hfXJldHVybiBy LnNsaWNlKDAsbil9ZnVuY3Rpb24gb2EodCxlKXtyZXR1cm4gdFswXS1lWzBd fHx0WzFdLWVbMV19KHQuZ2VvLnN0ZXJlb2dyYXBoaWM9ZnVuY3Rpb24oKXty ZXR1cm4gQ24oZWEpfSkucmF3PWVhLHJhLmludmVydD1mdW5jdGlvbih0LGUp e3JldHVyblstZSwyKk1hdGguYXRhbihNYXRoLmV4cCh0KSktRXRdfSwodC5n ZW8udHJhbnN2ZXJzZU1lcmNhdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9JG4ocmEp LGU9dC5jZW50ZXIscj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rp b24odCl7cmV0dXJuIHQ/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10 WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/cihbdFswXSx0 WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1yKCkpWzBdLHRbMV0s dFsyXS05MF19LHIoWzAsMCw5MF0pfSkucmF3PXJhLHQuZ2VvbT17fSx0Lmdl b20uaHVsbD1mdW5jdGlvbih0KXt2YXIgZT1uYSxyPWFhO2lmKGFyZ3VtZW50 cy5sZW5ndGgpcmV0dXJuIG4odCk7ZnVuY3Rpb24gbih0KXtpZih0Lmxlbmd0 aDwzKXJldHVybltdO3ZhciBuLGE9dmUoZSksaT12ZShyKSxvPXQubGVuZ3Ro LHM9W10sbD1bXTtmb3Iobj0wO248bztuKyspcy5wdXNoKFsrYS5jYWxsKHRo aXMsdFtuXSxuKSwraS5jYWxsKHRoaXMsdFtuXSxuKSxuXSk7Zm9yKHMuc29y dChvYSksbj0wO248bztuKyspbC5wdXNoKFtzW25dWzBdLC1zW25dWzFdXSk7 dmFyIGM9aWEocyksdT1pYShsKSxoPXVbMF09PT1jWzBdLGY9dVt1Lmxlbmd0 aC0xXT09PWNbYy5sZW5ndGgtMV0scD1bXTtmb3Iobj1jLmxlbmd0aC0xO24+ PTA7LS1uKXAucHVzaCh0W3NbY1tuXV1bMl1dKTtmb3Iobj0raDtuPHUubGVu Z3RoLWY7KytuKXAucHVzaCh0W3NbdVtuXV1bMl1dKTtyZXR1cm4gcH1yZXR1 cm4gbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhl PXQsbik6ZX0sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhyPXQsbik6cn0sbn0sdC5nZW9tLnBvbHlnb249ZnVuY3Rpb24odCl7 cmV0dXJuIFUodCxzYSksdH07dmFyIHNhPXQuZ2VvbS5wb2x5Z29uLnByb3Rv dHlwZT1bXTtmdW5jdGlvbiBsYSh0LGUscil7cmV0dXJuKHJbMF0tZVswXSkq KHRbMV0tZVsxXSk8KHJbMV0tZVsxXSkqKHRbMF0tZVswXSl9ZnVuY3Rpb24g Y2EodCxlLHIsbil7dmFyIGE9dFswXSxpPXJbMF0sbz1lWzBdLWEscz1uWzBd LWksbD10WzFdLGM9clsxXSx1PWVbMV0tbCxoPW5bMV0tYyxmPShzKihsLWMp LWgqKGEtaSkpLyhoKm8tcyp1KTtyZXR1cm5bYStmKm8sbCtmKnVdfWZ1bmN0 aW9uIHVhKHQpe3ZhciBlPXRbMF0scj10W3QubGVuZ3RoLTFdO3JldHVybiEo ZVswXS1yWzBdfHxlWzFdLXJbMV0pfXNhLmFyZWE9ZnVuY3Rpb24oKXtmb3Io dmFyIHQsZT0tMSxyPXRoaXMubGVuZ3RoLG49dGhpc1tyLTFdLGE9MDsrK2U8 cjspdD1uLG49dGhpc1tlXSxhKz10WzFdKm5bMF0tdFswXSpuWzFdO3JldHVy bi41KmF9LHNhLmNlbnRyb2lkPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbj0tMSxh PXRoaXMubGVuZ3RoLGk9MCxvPTAscz10aGlzW2EtMV07Zm9yKGFyZ3VtZW50 cy5sZW5ndGh8fCh0PS0xLyg2KnRoaXMuYXJlYSgpKSk7KytuPGE7KWU9cyxz PXRoaXNbbl0scj1lWzBdKnNbMV0tc1swXSplWzFdLGkrPShlWzBdK3NbMF0p KnIsbys9KGVbMV0rc1sxXSkqcjtyZXR1cm5baSp0LG8qdF19LHNhLmNsaXA9 ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixhLGksbyxzPXVhKHQpLGw9LTEs Yz10aGlzLmxlbmd0aC11YSh0aGlzKSx1PXRoaXNbYy0xXTsrK2w8Yzspe2Zv cihlPXQuc2xpY2UoKSx0Lmxlbmd0aD0wLGE9dGhpc1tsXSxpPWVbKG49ZS5s ZW5ndGgtcyktMV0scj0tMTsrK3I8bjspbGEobz1lW3JdLHUsYSk/KGxhKGks dSxhKXx8dC5wdXNoKGNhKGksbyx1LGEpKSx0LnB1c2gobykpOmxhKGksdSxh KSYmdC5wdXNoKGNhKGksbyx1LGEpKSxpPW87cyYmdC5wdXNoKHRbMF0pLHU9 YX1yZXR1cm4gdH07dmFyIGhhLGZhLHBhLGRhLGdhLHZhPVtdLG1hPVtdO2Z1 bmN0aW9uIHlhKCl7UmEodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlz LmNpcmNsZT1udWxsfWZ1bmN0aW9uIHhhKHQpe3ZhciBlPXZhLnBvcCgpfHxu ZXcgeWE7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gYmEodCl7TGEodCks cGEucmVtb3ZlKHQpLHZhLnB1c2godCksUmEodCl9ZnVuY3Rpb24gX2EodCl7 dmFyIGU9dC5jaXJjbGUscj1lLngsbj1lLmN5LGE9e3g6cix5Om59LGk9dC5Q LG89dC5OLHM9W3RdO2JhKHQpO2Zvcih2YXIgbD1pO2wuY2lyY2xlJiZ5KHIt bC5jaXJjbGUueCk8a3QmJnkobi1sLmNpcmNsZS5jeSk8a3Q7KWk9bC5QLHMu dW5zaGlmdChsKSxiYShsKSxsPWk7cy51bnNoaWZ0KGwpLExhKGwpO2Zvcih2 YXIgYz1vO2MuY2lyY2xlJiZ5KHItYy5jaXJjbGUueCk8a3QmJnkobi1jLmNp cmNsZS5jeSk8a3Q7KW89Yy5OLHMucHVzaChjKSxiYShjKSxjPW87cy5wdXNo KGMpLExhKGMpO3ZhciB1LGg9cy5sZW5ndGg7Zm9yKHU9MTt1PGg7Kyt1KWM9 c1t1XSxsPXNbdS0xXSx6YShjLmVkZ2UsbC5zaXRlLGMuc2l0ZSxhKTtsPXNb MF0sKGM9c1toLTFdKS5lZGdlPU9hKGwuc2l0ZSxjLnNpdGUsbnVsbCxhKSxF YShsKSxFYShjKX1mdW5jdGlvbiB3YSh0KXtmb3IodmFyIGUscixuLGEsaT10 Lngsbz10Lnkscz1wYS5fO3M7KWlmKChuPWthKHMsbyktaSk+a3Qpcz1zLkw7 ZWxzZXtpZighKChhPWktVGEocyxvKSk+a3QpKXtuPi1rdD8oZT1zLlAscj1z KTphPi1rdD8oZT1zLHI9cy5OKTplPXI9czticmVha31pZighcy5SKXtlPXM7 YnJlYWt9cz1zLlJ9dmFyIGw9eGEodCk7aWYocGEuaW5zZXJ0KGUsbCksZXx8 cil7aWYoZT09PXIpcmV0dXJuIExhKGUpLHI9eGEoZS5zaXRlKSxwYS5pbnNl cnQobCxyKSxsLmVkZ2U9ci5lZGdlPU9hKGUuc2l0ZSxsLnNpdGUpLEVhKGUp LHZvaWQgRWEocik7aWYocil7TGEoZSksTGEocik7dmFyIGM9ZS5zaXRlLHU9 Yy54LGg9Yy55LGY9dC54LXUscD10LnktaCxkPXIuc2l0ZSxnPWQueC11LHY9 ZC55LWgsbT0yKihmKnYtcCpnKSx5PWYqZitwKnAseD1nKmcrdip2LGI9e3g6 KHYqeS1wKngpL20rdSx5OihmKngtZyp5KS9tK2h9O3phKHIuZWRnZSxjLGQs YiksbC5lZGdlPU9hKGMsdCxudWxsLGIpLHIuZWRnZT1PYSh0LGQsbnVsbCxi KSxFYShlKSxFYShyKX1lbHNlIGwuZWRnZT1PYShlLnNpdGUsbC5zaXRlKX19 ZnVuY3Rpb24ga2EodCxlKXt2YXIgcj10LnNpdGUsbj1yLngsYT1yLnksaT1h LWU7aWYoIWkpcmV0dXJuIG47dmFyIG89dC5QO2lmKCFvKXJldHVybi0xLzA7 dmFyIHM9KHI9by5zaXRlKS54LGw9ci55LGM9bC1lO2lmKCFjKXJldHVybiBz O3ZhciB1PXMtbixoPTEvaS0xL2MsZj11L2M7cmV0dXJuIGg/KC1mK01hdGgu c3FydChmKmYtMipoKih1KnUvKC0yKmMpLWwrYy8yK2EtaS8yKSkpL2grbjoo bitzKS8yfWZ1bmN0aW9uIFRhKHQsZSl7dmFyIHI9dC5OO2lmKHIpcmV0dXJu IGthKHIsZSk7dmFyIG49dC5zaXRlO3JldHVybiBuLnk9PT1lP24ueDoxLzB9 ZnVuY3Rpb24gTWEodCl7dGhpcy5zaXRlPXQsdGhpcy5lZGdlcz1bXX1mdW5j dGlvbiBBYSh0LGUpe3JldHVybiBlLmFuZ2xlLXQuYW5nbGV9ZnVuY3Rpb24g U2EoKXtSYSh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0 ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gRWEodCl7dmFyIGU9dC5QLHI9dC5O O2lmKGUmJnIpe3ZhciBuPWUuc2l0ZSxhPXQuc2l0ZSxpPXIuc2l0ZTtpZihu IT09aSl7dmFyIG89YS54LHM9YS55LGw9bi54LW8sYz1uLnktcyx1PWkueC1v LGg9MioobCoodj1pLnktcyktYyp1KTtpZighKGg+PS1UdCkpe3ZhciBmPWwq bCtjKmMscD11KnUrdip2LGQ9KHYqZi1jKnApL2gsZz0obCpwLXUqZikvaCx2 PWcrcyxtPW1hLnBvcCgpfHxuZXcgU2E7bS5hcmM9dCxtLnNpdGU9YSxtLng9 ZCtvLG0ueT12K01hdGguc3FydChkKmQrZypnKSxtLmN5PXYsdC5jaXJjbGU9 bTtmb3IodmFyIHk9bnVsbCx4PWdhLl87eDspaWYobS55PHgueXx8bS55PT09 eC55JiZtLng8PXgueCl7aWYoIXguTCl7eT14LlA7YnJlYWt9eD14Lkx9ZWxz ZXtpZigheC5SKXt5PXg7YnJlYWt9eD14LlJ9Z2EuaW5zZXJ0KHksbSkseXx8 KGRhPW0pfX19fWZ1bmN0aW9uIExhKHQpe3ZhciBlPXQuY2lyY2xlO2UmJihl LlB8fChkYT1lLk4pLGdhLnJlbW92ZShlKSxtYS5wdXNoKGUpLFJhKGUpLHQu Y2lyY2xlPW51bGwpfWZ1bmN0aW9uIENhKHQsZSl7dmFyIHI9dC5iO2lmKHIp cmV0dXJuITA7dmFyIG4sYSxpPXQuYSxvPWVbMF1bMF0scz1lWzFdWzBdLGw9 ZVswXVsxXSxjPWVbMV1bMV0sdT10LmwsaD10LnIsZj11LngscD11LnksZD1o LngsZz1oLnksdj0oZitkKS8yLG09KHArZykvMjtpZihnPT09cCl7aWYodjxv fHx2Pj1zKXJldHVybjtpZihmPmQpe2lmKGkpe2lmKGkueT49YylyZXR1cm59 ZWxzZSBpPXt4OnYseTpsfTtyPXt4OnYseTpjfX1lbHNle2lmKGkpe2lmKGku eTxsKXJldHVybn1lbHNlIGk9e3g6dix5OmN9O3I9e3g6dix5Omx9fX1lbHNl IGlmKGE9bS0obj0oZi1kKS8oZy1wKSkqdixuPC0xfHxuPjEpaWYoZj5kKXtp ZihpKXtpZihpLnk+PWMpcmV0dXJufWVsc2UgaT17eDoobC1hKS9uLHk6bH07 cj17eDooYy1hKS9uLHk6Y319ZWxzZXtpZihpKXtpZihpLnk8bClyZXR1cm59 ZWxzZSBpPXt4OihjLWEpL24seTpjfTtyPXt4OihsLWEpL24seTpsfX1lbHNl IGlmKHA8Zyl7aWYoaSl7aWYoaS54Pj1zKXJldHVybn1lbHNlIGk9e3g6byx5 Om4qbythfTtyPXt4OnMseTpuKnMrYX19ZWxzZXtpZihpKXtpZihpLng8byly ZXR1cm59ZWxzZSBpPXt4OnMseTpuKnMrYX07cj17eDpvLHk6bipvK2F9fXJl dHVybiB0LmE9aSx0LmI9ciwhMH1mdW5jdGlvbiBQYSh0LGUpe3RoaXMubD10 LHRoaXMucj1lLHRoaXMuYT10aGlzLmI9bnVsbH1mdW5jdGlvbiBPYSh0LGUs cixuKXt2YXIgYT1uZXcgUGEodCxlKTtyZXR1cm4gaGEucHVzaChhKSxyJiZ6 YShhLHQsZSxyKSxuJiZ6YShhLGUsdCxuKSxmYVt0LmldLmVkZ2VzLnB1c2go bmV3IElhKGEsdCxlKSksZmFbZS5pXS5lZGdlcy5wdXNoKG5ldyBJYShhLGUs dCkpLGF9ZnVuY3Rpb24gemEodCxlLHIsbil7dC5hfHx0LmI/dC5sPT09cj90 LmI9bjp0LmE9bjoodC5hPW4sdC5sPWUsdC5yPXIpfWZ1bmN0aW9uIElhKHQs ZSxyKXt2YXIgbj10LmEsYT10LmI7dGhpcy5lZGdlPXQsdGhpcy5zaXRlPWUs dGhpcy5hbmdsZT1yP01hdGguYXRhbjIoci55LWUueSxyLngtZS54KTp0Lmw9 PT1lP01hdGguYXRhbjIoYS54LW4ueCxuLnktYS55KTpNYXRoLmF0YW4yKG4u eC1hLngsYS55LW4ueSl9ZnVuY3Rpb24gRGEoKXt0aGlzLl89bnVsbH1mdW5j dGlvbiBSYSh0KXt0LlU9dC5DPXQuTD10LlI9dC5QPXQuTj1udWxsfWZ1bmN0 aW9uIEZhKHQsZSl7dmFyIHI9ZSxuPWUuUixhPXIuVTthP2EuTD09PXI/YS5M PW46YS5SPW46dC5fPW4sbi5VPWEsci5VPW4sci5SPW4uTCxyLlImJihyLlIu VT1yKSxuLkw9cn1mdW5jdGlvbiBCYSh0LGUpe3ZhciByPWUsbj1lLkwsYT1y LlU7YT9hLkw9PT1yP2EuTD1uOmEuUj1uOnQuXz1uLG4uVT1hLHIuVT1uLHIu TD1uLlIsci5MJiYoci5MLlU9ciksbi5SPXJ9ZnVuY3Rpb24gTmEodCl7Zm9y KDt0Lkw7KXQ9dC5MO3JldHVybiB0fWZ1bmN0aW9uIGphKHQsZSl7dmFyIHIs bixhLGk9dC5zb3J0KFZhKS5wb3AoKTtmb3IoaGE9W10sZmE9bmV3IEFycmF5 KHQubGVuZ3RoKSxwYT1uZXcgRGEsZ2E9bmV3IERhOzspaWYoYT1kYSxpJiYo IWF8fGkueTxhLnl8fGkueT09PWEueSYmaS54PGEueCkpaS54PT09ciYmaS55 PT09bnx8KGZhW2kuaV09bmV3IE1hKGkpLHdhKGkpLHI9aS54LG49aS55KSxp PXQucG9wKCk7ZWxzZXtpZighYSlicmVhaztfYShhLmFyYyl9ZSYmKGZ1bmN0 aW9uKHQpe2Zvcih2YXIgZSxyPWhhLG49bm4odFswXVswXSx0WzBdWzFdLHRb MV1bMF0sdFsxXVsxXSksYT1yLmxlbmd0aDthLS07KSghQ2EoZT1yW2FdLHQp fHwhbihlKXx8eShlLmEueC1lLmIueCk8a3QmJnkoZS5hLnktZS5iLnkpPGt0 KSYmKGUuYT1lLmI9bnVsbCxyLnNwbGljZShhLDEpKX0oZSksZnVuY3Rpb24o dCl7Zm9yKHZhciBlLHIsbixhLGksbyxzLGwsYyx1LGg9dFswXVswXSxmPXRb MV1bMF0scD10WzBdWzFdLGQ9dFsxXVsxXSxnPWZhLHY9Zy5sZW5ndGg7di0t OylpZigoaT1nW3ZdKSYmaS5wcmVwYXJlKCkpZm9yKGw9KHM9aS5lZGdlcyku bGVuZ3RoLG89MDtvPGw7KW49KHU9c1tvXS5lbmQoKSkueCxhPXUueSxlPShj PXNbKytvJWxdLnN0YXJ0KCkpLngscj1jLnksKHkobi1lKT5rdHx8eShhLXIp Pmt0KSYmKHMuc3BsaWNlKG8sMCxuZXcgSWEoKG09aS5zaXRlLHg9dSxiPXko bi1oKTxrdCYmZC1hPmt0P3t4OmgseTp5KGUtaCk8a3Q/cjpkfTp5KGEtZCk8 a3QmJmYtbj5rdD97eDp5KHItZCk8a3Q/ZTpmLHk6ZH06eShuLWYpPGt0JiZh LXA+a3Q/e3g6Zix5OnkoZS1mKTxrdD9yOnB9OnkoYS1wKTxrdCYmbi1oPmt0 P3t4Onkoci1wKTxrdD9lOmgseTpwfTpudWxsLF89dm9pZCAwLF89bmV3IFBh KG0sbnVsbCksXy5hPXgsXy5iPWIsaGEucHVzaChfKSxfKSxpLnNpdGUsbnVs bCkpLCsrbCk7dmFyIG0seCxiLF99KGUpKTt2YXIgbz17Y2VsbHM6ZmEsZWRn ZXM6aGF9O3JldHVybiBwYT1nYT1oYT1mYT1udWxsLG99ZnVuY3Rpb24gVmEo dCxlKXtyZXR1cm4gZS55LXQueXx8ZS54LXQueH1NYS5wcm90b3R5cGUucHJl cGFyZT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMuZWRnZXMscj1lLmxl bmd0aDtyLS07KSh0PWVbcl0uZWRnZSkuYiYmdC5hfHxlLnNwbGljZShyLDEp O3JldHVybiBlLnNvcnQoQWEpLGUubGVuZ3RofSxJYS5wcm90b3R5cGU9e3N0 YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRl P3RoaXMuZWRnZS5hOnRoaXMuZWRnZS5ifSxlbmQ6ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5lZGdlLmw9PT10aGlzLnNpdGU/dGhpcy5lZGdlLmI6dGhpcy5l ZGdlLmF9fSxEYS5wcm90b3R5cGU9e2luc2VydDpmdW5jdGlvbih0LGUpe3Zh ciByLG4sYTtpZih0KXtpZihlLlA9dCxlLk49dC5OLHQuTiYmKHQuTi5QPWUp LHQuTj1lLHQuUil7Zm9yKHQ9dC5SO3QuTDspdD10Lkw7dC5MPWV9ZWxzZSB0 LlI9ZTtyPXR9ZWxzZSB0aGlzLl8/KHQ9TmEodGhpcy5fKSxlLlA9bnVsbCxl Lk49dCx0LlA9dC5MPWUscj10KTooZS5QPWUuTj1udWxsLHRoaXMuXz1lLHI9 bnVsbCk7Zm9yKGUuTD1lLlI9bnVsbCxlLlU9cixlLkM9ITAsdD1lO3ImJnIu Qzspcj09PShuPXIuVSkuTD8oYT1uLlIpJiZhLkM/KHIuQz1hLkM9ITEsbi5D PSEwLHQ9bik6KHQ9PT1yLlImJihGYSh0aGlzLHIpLHI9KHQ9cikuVSksci5D PSExLG4uQz0hMCxCYSh0aGlzLG4pKTooYT1uLkwpJiZhLkM/KHIuQz1hLkM9 ITEsbi5DPSEwLHQ9bik6KHQ9PT1yLkwmJihCYSh0aGlzLHIpLHI9KHQ9ciku VSksci5DPSExLG4uQz0hMCxGYSh0aGlzLG4pKSxyPXQuVTt0aGlzLl8uQz0h MX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYo dC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUscixuLGE9dC5VLGk9dC5M LG89dC5SO2lmKHI9aT9vP05hKG8pOmk6byxhP2EuTD09PXQ/YS5MPXI6YS5S PXI6dGhpcy5fPXIsaSYmbz8obj1yLkMsci5DPXQuQyxyLkw9aSxpLlU9cixy IT09bz8oYT1yLlUsci5VPXQuVSx0PXIuUixhLkw9dCxyLlI9byxvLlU9cik6 KHIuVT1hLGE9cix0PXIuUikpOihuPXQuQyx0PXIpLHQmJih0LlU9YSksIW4p aWYodCYmdC5DKXQuQz0hMTtlbHNle2Rve2lmKHQ9PT10aGlzLl8pYnJlYWs7 aWYodD09PWEuTCl7aWYoKGU9YS5SKS5DJiYoZS5DPSExLGEuQz0hMCxGYSh0 aGlzLGEpLGU9YS5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLlImJmUu Ui5DfHwoZS5MLkM9ITEsZS5DPSEwLEJhKHRoaXMsZSksZT1hLlIpLGUuQz1h LkMsYS5DPWUuUi5DPSExLEZhKHRoaXMsYSksdD10aGlzLl87YnJlYWt9fWVs c2UgaWYoKGU9YS5MKS5DJiYoZS5DPSExLGEuQz0hMCxCYSh0aGlzLGEpLGU9 YS5MKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLkwmJmUuTC5DfHwoZS5S LkM9ITEsZS5DPSEwLEZhKHRoaXMsZSksZT1hLkwpLGUuQz1hLkMsYS5DPWUu TC5DPSExLEJhKHRoaXMsYSksdD10aGlzLl87YnJlYWt9ZS5DPSEwLHQ9YSxh PWEuVX13aGlsZSghdC5DKTt0JiYodC5DPSExKX19fSx0Lmdlb20udm9yb25v aT1mdW5jdGlvbih0KXt2YXIgZT1uYSxyPWFhLG49ZSxhPXIsaT1VYTtpZih0 KXJldHVybiBvKHQpO2Z1bmN0aW9uIG8odCl7dmFyIGU9bmV3IEFycmF5KHQu bGVuZ3RoKSxyPWlbMF1bMF0sbj1pWzBdWzFdLGE9aVsxXVswXSxvPWlbMV1b MV07cmV0dXJuIGphKHModCksaSkuY2VsbHMuZm9yRWFjaChmdW5jdGlvbihp LHMpe3ZhciBsPWkuZWRnZXMsYz1pLnNpdGU7KGVbc109bC5sZW5ndGg/bC5t YXAoZnVuY3Rpb24odCl7dmFyIGU9dC5zdGFydCgpO3JldHVybltlLngsZS55 XX0pOmMueD49ciYmYy54PD1hJiZjLnk+PW4mJmMueTw9bz9bW3Isb10sW2Es b10sW2Esbl0sW3Isbl1dOltdKS5wb2ludD10W3NdfSksZX1mdW5jdGlvbiBz KHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybnt4Ok1hdGgu cm91bmQobih0LGUpL2t0KSprdCx5Ok1hdGgucm91bmQoYSh0LGUpL2t0KSpr dCxpOmV9fSl9cmV0dXJuIG8ubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIGph KHModCkpLmVkZ2VzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5sJiZ0 LnJ9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue3NvdXJjZTp0W2UubC5pXSx0 YXJnZXQ6dFtlLnIuaV19fSl9LG8udHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3Zh ciBlPVtdO3JldHVybiBqYShzKHQpKS5jZWxscy5mb3JFYWNoKGZ1bmN0aW9u KHIsbil7Zm9yKHZhciBhLGksbyxzLGw9ci5zaXRlLGM9ci5lZGdlcy5zb3J0 KEFhKSx1PS0xLGg9Yy5sZW5ndGgsZj1jW2gtMV0uZWRnZSxwPWYubD09PWw/ Zi5yOmYubDsrK3U8aDspZixhPXAscD0oZj1jW3VdLmVkZ2UpLmw9PT1sP2Yu cjpmLmwsbjxhLmkmJm48cC5pJiYobz1hLHM9cCwoKGk9bCkueC1zLngpKihv LnktaS55KS0oaS54LW8ueCkqKHMueS1pLnkpPDApJiZlLnB1c2goW3Rbbl0s dFthLmldLHRbcC5pXV0pfSksZX0sby54PWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhuPXZlKGU9dCksbyk6ZX0sby55PWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXZlKHI9dCksbyk6cn0s by5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhpPW51bGw9PXQ/VWE6dCxvKTppPT09VWE/bnVsbDppfSxvLnNpemU9 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/by5jbGlwRXh0 ZW50KHQmJltbMCwwXSx0XSk6aT09PVVhP251bGw6aSYmaVsxXX0sb307dmFy IFVhPVtbLTFlNiwtMWU2XSxbMWU2LDFlNl1dO2Z1bmN0aW9uIHFhKHQpe3Jl dHVybiB0Lnh9ZnVuY3Rpb24gSGEodCl7cmV0dXJuIHQueX1mdW5jdGlvbiBH YShlLHIpe2U9dC5yZ2IoZSkscj10LnJnYihyKTt2YXIgbj1lLnIsYT1lLmcs aT1lLmIsbz1yLnItbixzPXIuZy1hLGw9ci5iLWk7cmV0dXJuIGZ1bmN0aW9u KHQpe3JldHVybiIjIitjZShNYXRoLnJvdW5kKG4rbyp0KSkrY2UoTWF0aC5y b3VuZChhK3MqdCkpK2NlKE1hdGgucm91bmQoaStsKnQpKX19ZnVuY3Rpb24g WWEodCxlKXt2YXIgcixuPXt9LGE9e307Zm9yKHIgaW4gdClyIGluIGU/blty XT1LYSh0W3JdLGVbcl0pOmFbcl09dFtyXTtmb3IociBpbiBlKXIgaW4gdHx8 KGFbcl09ZVtyXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihyIGluIG4pYVty XT1uW3JdKHQpO3JldHVybiBhfX1mdW5jdGlvbiBXYSh0LGUpe3JldHVybiB0 PSt0LGU9K2UsZnVuY3Rpb24ocil7cmV0dXJuIHQqKDEtcikrZSpyfX1mdW5j dGlvbiBYYSh0LGUpe3ZhciByLG4sYSxpPVphLmxhc3RJbmRleD1KYS5sYXN0 SW5kZXg9MCxvPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9IiI7KHI9WmEu ZXhlYyh0KSkmJihuPUphLmV4ZWMoZSkpOykoYT1uLmluZGV4KT5pJiYoYT1l LnNsaWNlKGksYSksc1tvXT9zW29dKz1hOnNbKytvXT1hKSwocj1yWzBdKT09 PShuPW5bMF0pP3Nbb10/c1tvXSs9bjpzWysrb109bjooc1srK29dPW51bGws bC5wdXNoKHtpOm8seDpXYShyLG4pfSkpLGk9SmEubGFzdEluZGV4O3JldHVy biBpPGUubGVuZ3RoJiYoYT1lLnNsaWNlKGkpLHNbb10/c1tvXSs9YTpzWysr b109YSkscy5sZW5ndGg8Mj9sWzBdPyhlPWxbMF0ueCxmdW5jdGlvbih0KXty ZXR1cm4gZSh0KSsiIn0pOmZ1bmN0aW9uKCl7cmV0dXJuIGV9OihlPWwubGVu Z3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcixuPTA7bjxlOysrbilzWyhyPWxb bl0pLmldPXIueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfXQuZ2VvbS5kZWxh dW5heT1mdW5jdGlvbihlKXtyZXR1cm4gdC5nZW9tLnZvcm9ub2koKS50cmlh bmdsZXMoZSl9LHQuZ2VvbS5xdWFkdHJlZT1mdW5jdGlvbih0LGUscixuLGEp e3ZhciBpLG89bmEscz1hYTtpZihpPWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJu IG89cWEscz1IYSwzPT09aSYmKGE9cixuPWUscj1lPTApLGwodCk7ZnVuY3Rp b24gbCh0KXt2YXIgbCxjLHUsaCxmLHAsZCxnLHYsbT12ZShvKSx4PXZlKHMp O2lmKG51bGwhPWUpcD1lLGQ9cixnPW4sdj1hO2Vsc2UgaWYoZz12PS0ocD1k PTEvMCksYz1bXSx1PVtdLGY9dC5sZW5ndGgsaSlmb3IoaD0wO2g8ZjsrK2gp KGw9dFtoXSkueDxwJiYocD1sLngpLGwueTxkJiYoZD1sLnkpLGwueD5nJiYo Zz1sLngpLGwueT52JiYodj1sLnkpLGMucHVzaChsLngpLHUucHVzaChsLnkp O2Vsc2UgZm9yKGg9MDtoPGY7KytoKXt2YXIgYj0rbShsPXRbaF0saCksXz0r eChsLGgpO2I8cCYmKHA9YiksXzxkJiYoZD1fKSxiPmcmJihnPWIpLF8+diYm KHY9XyksYy5wdXNoKGIpLHUucHVzaChfKX12YXIgdz1nLXAsaz12LWQ7ZnVu Y3Rpb24gVCh0LGUscixuLGEsaSxvLHMpe2lmKCFpc05hTihyKSYmIWlzTmFO KG4pKWlmKHQubGVhZil7dmFyIGw9dC54LGM9dC55O2lmKG51bGwhPWwpaWYo eShsLXIpK3koYy1uKTwuMDEpTSh0LGUscixuLGEsaSxvLHMpO2Vsc2V7dmFy IHU9dC5wb2ludDt0Lng9dC55PXQucG9pbnQ9bnVsbCxNKHQsdSxsLGMsYSxp LG8scyksTSh0LGUscixuLGEsaSxvLHMpfWVsc2UgdC54PXIsdC55PW4sdC5w b2ludD1lfWVsc2UgTSh0LGUscixuLGEsaSxvLHMpfWZ1bmN0aW9uIE0odCxl LHIsbixhLGksbyxzKXt2YXIgbD0uNSooYStvKSxjPS41KihpK3MpLHU9cj49 bCxoPW4+PWMsZj1oPDwxfHU7dC5sZWFmPSExLHU/YT1sOm89bCxoP2k9Yzpz PWMsVCh0PXQubm9kZXNbZl18fCh0Lm5vZGVzW2ZdPXtsZWFmOiEwLG5vZGVz OltdLHBvaW50Om51bGwseDpudWxsLHk6bnVsbH0pLGUscixuLGEsaSxvLHMp fXc+az92PWQrdzpnPXArazt2YXIgQT17bGVhZjohMCxub2RlczpbXSxwb2lu dDpudWxsLHg6bnVsbCx5Om51bGwsYWRkOmZ1bmN0aW9uKHQpe1QoQSx0LCtt KHQsKytoKSwreCh0LGgpLHAsZCxnLHYpfX07aWYoQS52aXNpdD1mdW5jdGlv bih0KXshZnVuY3Rpb24gdChlLHIsbixhLGksbyl7aWYoIWUocixuLGEsaSxv KSl7dmFyIHM9LjUqKG4raSksbD0uNSooYStvKSxjPXIubm9kZXM7Y1swXSYm dChlLGNbMF0sbixhLHMsbCksY1sxXSYmdChlLGNbMV0scyxhLGksbCksY1sy XSYmdChlLGNbMl0sbixsLHMsbyksY1szXSYmdChlLGNbM10scyxsLGksbyl9 fSh0LEEscCxkLGcsdil9LEEuZmluZD1mdW5jdGlvbih0KXtyZXR1cm4gZnVu Y3Rpb24odCxlLHIsbixhLGksbyl7dmFyIHMsbD0xLzA7cmV0dXJuIGZ1bmN0 aW9uIHQoYyx1LGgsZixwKXtpZighKHU+aXx8aD5vfHxmPG58fHA8YSkpe2lm KGQ9Yy5wb2ludCl7dmFyIGQsZz1lLWMueCx2PXItYy55LG09ZypnK3Yqdjtp ZihtPGwpe3ZhciB5PU1hdGguc3FydChsPW0pO249ZS15LGE9ci15LGk9ZSt5 LG89cit5LHM9ZH19Zm9yKHZhciB4PWMubm9kZXMsYj0uNSoodStmKSxfPS41 KihoK3ApLHc9KHI+PV8pPDwxfGU+PWIsaz13KzQ7dzxrOysrdylpZihjPXhb MyZ3XSlzd2l0Y2goMyZ3KXtjYXNlIDA6dChjLHUsaCxiLF8pO2JyZWFrO2Nh c2UgMTp0KGMsYixoLGYsXyk7YnJlYWs7Y2FzZSAyOnQoYyx1LF8sYixwKTti cmVhaztjYXNlIDM6dChjLGIsXyxmLHApfX19KHQsbixhLGksbyksc30oQSx0 WzBdLHRbMV0scCxkLGcsdil9LGg9LTEsbnVsbD09ZSl7Zm9yKDsrK2g8Zjsp VChBLHRbaF0sY1toXSx1W2hdLHAsZCxnLHYpOy0taH1lbHNlIHQuZm9yRWFj aChBLmFkZCk7cmV0dXJuIGM9dT10PWw9bnVsbCxBfXJldHVybiBsLng9ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxsKTpvfSxs Lnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dCxs KTpzfSxsLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8obnVsbD09dD9lPXI9bj1hPW51bGw6KGU9K3RbMF1bMF0scj0rdFsw XVsxXSxuPSt0WzFdWzBdLGE9K3RbMV1bMV0pLGwpOm51bGw9PWU/bnVsbDpb W2Uscl0sW24sYV1dfSxsLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KG51bGw9PXQ/ZT1yPW49YT1udWxsOihlPXI9MCxuPSt0 WzBdLGE9K3RbMV0pLGwpOm51bGw9PWU/bnVsbDpbbi1lLGEtcl19LGx9LHQu aW50ZXJwb2xhdGVSZ2I9R2EsdC5pbnRlcnBvbGF0ZU9iamVjdD1ZYSx0Lmlu dGVycG9sYXRlTnVtYmVyPVdhLHQuaW50ZXJwb2xhdGVTdHJpbmc9WGE7dmFy IFphPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQr KT8vZyxKYT1uZXcgUmVnRXhwKFphLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIEth KGUscil7Zm9yKHZhciBuLGE9dC5pbnRlcnBvbGF0b3JzLmxlbmd0aDstLWE+ PTAmJiEobj10LmludGVycG9sYXRvcnNbYV0oZSxyKSk7KTtyZXR1cm4gbn1m dW5jdGlvbiBRYSh0LGUpe3ZhciByLG49W10sYT1bXSxpPXQubGVuZ3RoLG89 ZS5sZW5ndGgscz1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCk7Zm9yKHI9 MDtyPHM7KytyKW4ucHVzaChLYSh0W3JdLGVbcl0pKTtmb3IoO3I8aTsrK3Ip YVtyXT10W3JdO2Zvcig7cjxvOysrcilhW3JdPWVbcl07cmV0dXJuIGZ1bmN0 aW9uKHQpe2ZvcihyPTA7cjxzOysrcilhW3JdPW5bcl0odCk7cmV0dXJuIGF9 fXQuaW50ZXJwb2xhdGU9S2EsdC5pbnRlcnBvbGF0b3JzPVtmdW5jdGlvbih0 LGUpe3ZhciByPXR5cGVvZiBlO3JldHVybigic3RyaW5nIj09PXI/Z2UuaGFz KGUudG9Mb3dlckNhc2UoKSl8fC9eKCN8cmdiXCh8aHNsXCgpL2kudGVzdChl KT9HYTpYYTplIGluc3RhbmNlb2YgVnQ/R2E6QXJyYXkuaXNBcnJheShlKT9R YToib2JqZWN0Ij09PXImJmlzTmFOKGUpP1lhOldhKSh0LGUpfV0sdC5pbnRl cnBvbGF0ZUFycmF5PVFhO3ZhciAkYT1mdW5jdGlvbigpe3JldHVybiBQfSx0 aT10Lm1hcCh7bGluZWFyOiRhLHBvbHk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1 bmN0aW9uKGUpe3JldHVybiBNYXRoLnBvdyhlLHQpfX0scXVhZDpmdW5jdGlv bigpe3JldHVybiBhaX0sY3ViaWM6ZnVuY3Rpb24oKXtyZXR1cm4gaWl9LHNp bjpmdW5jdGlvbigpe3JldHVybiBzaX0sZXhwOmZ1bmN0aW9uKCl7cmV0dXJu IGxpfSxjaXJjbGU6ZnVuY3Rpb24oKXtyZXR1cm4gY2l9LGVsYXN0aWM6ZnVu Y3Rpb24odCxlKXt2YXIgcjthcmd1bWVudHMubGVuZ3RoPDImJihlPS40NSk7 YXJndW1lbnRzLmxlbmd0aD9yPWUvQXQqTWF0aC5hc2luKDEvdCk6KHQ9MSxy PWUvNCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiAxK3QqTWF0aC5wb3co MiwtMTAqbikqTWF0aC5zaW4oKG4tcikqQXQvZSl9fSxiYWNrOmZ1bmN0aW9u KHQpe3R8fCh0PTEuNzAxNTgpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4g ZSplKigodCsxKSplLXQpfX0sYm91bmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHVp fX0pLGVpPXQubWFwKHtpbjpQLG91dDpyaSwiaW4tb3V0IjpuaSwib3V0LWlu IjpmdW5jdGlvbih0KXtyZXR1cm4gbmkocmkodCkpfX0pO2Z1bmN0aW9uIHJp KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMS10KDEtZSl9fWZ1bmN0 aW9uIG5pKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4uNSooZTwuNT90 KDIqZSk6Mi10KDItMiplKSl9fWZ1bmN0aW9uIGFpKHQpe3JldHVybiB0KnR9 ZnVuY3Rpb24gaWkodCl7cmV0dXJuIHQqdCp0fWZ1bmN0aW9uIG9pKHQpe2lm KHQ8PTApcmV0dXJuIDA7aWYodD49MSlyZXR1cm4gMTt2YXIgZT10KnQscj1l KnQ7cmV0dXJuIDQqKHQ8LjU/cjozKih0LWUpK3ItLjc1KX1mdW5jdGlvbiBz aSh0KXtyZXR1cm4gMS1NYXRoLmNvcyh0KkV0KX1mdW5jdGlvbiBsaSh0KXty ZXR1cm4gTWF0aC5wb3coMiwxMCoodC0xKSl9ZnVuY3Rpb24gY2kodCl7cmV0 dXJuIDEtTWF0aC5zcXJ0KDEtdCp0KX1mdW5jdGlvbiB1aSh0KXtyZXR1cm4g dDwxLzIuNzU/Ny41NjI1KnQqdDp0PDIvMi43NT83LjU2MjUqKHQtPTEuNS8y Ljc1KSp0Ky43NTp0PDIuNS8yLjc1PzcuNTYyNSoodC09Mi4yNS8yLjc1KSp0 Ky45Mzc1OjcuNTYyNSoodC09Mi42MjUvMi43NSkqdCsuOTg0Mzc1fWZ1bmN0 aW9uIGhpKHQsZSl7cmV0dXJuIGUtPXQsZnVuY3Rpb24ocil7cmV0dXJuIE1h dGgucm91bmQodCtlKnIpfX1mdW5jdGlvbiBmaSh0KXt2YXIgZSxyLG4sYT1b dC5hLHQuYl0saT1bdC5jLHQuZF0sbz1kaShhKSxzPXBpKGEsaSksbD1kaSgo KGU9aSlbMF0rPShuPS1zKSoocj1hKVswXSxlWzFdKz1uKnJbMV0sZSkpfHww O2FbMF0qaVsxXTxpWzBdKmFbMV0mJihhWzBdKj0tMSxhWzFdKj0tMSxvKj0t MSxzKj0tMSksdGhpcy5yb3RhdGU9KG8/TWF0aC5hdGFuMihhWzFdLGFbMF0p Ok1hdGguYXRhbjIoLWlbMF0saVsxXSkpKkN0LHRoaXMudHJhbnNsYXRlPVt0 LmUsdC5mXSx0aGlzLnNjYWxlPVtvLGxdLHRoaXMuc2tldz1sP01hdGguYXRh bjIocyxsKSpDdDowfWZ1bmN0aW9uIHBpKHQsZSl7cmV0dXJuIHRbMF0qZVsw XSt0WzFdKmVbMV19ZnVuY3Rpb24gZGkodCl7dmFyIGU9TWF0aC5zcXJ0KHBp KHQsdCkpO3JldHVybiBlJiYodFswXS89ZSx0WzFdLz1lKSxlfXQuZWFzZT1m dW5jdGlvbih0KXt2YXIgZSxuPXQuaW5kZXhPZigiLSIpLGE9bj49MD90LnNs aWNlKDAsbik6dCxpPW4+PTA/dC5zbGljZShuKzEpOiJpbiI7cmV0dXJuIGE9 dGkuZ2V0KGEpfHwkYSxpPWVpLmdldChpKXx8UCxlPWkoYS5hcHBseShudWxs LHIuY2FsbChhcmd1bWVudHMsMSkpKSxmdW5jdGlvbih0KXtyZXR1cm4gdDw9 MD8wOnQ+PTE/MTplKHQpfX0sdC5pbnRlcnBvbGF0ZUhjbD1mdW5jdGlvbihl LHIpe2U9dC5oY2woZSkscj10LmhjbChyKTt2YXIgbj1lLmgsYT1lLmMsaT1l Lmwsbz1yLmgtbixzPXIuYy1hLGw9ci5sLWk7aXNOYU4ocykmJihzPTAsYT1p c05hTihhKT9yLmM6YSk7aXNOYU4obyk/KG89MCxuPWlzTmFOKG4pP3IuaDpu KTpvPjE4MD9vLT0zNjA6bzwtMTgwJiYobys9MzYwKTtyZXR1cm4gZnVuY3Rp b24odCl7cmV0dXJuIFd0KG4rbyp0LGErcyp0LGkrbCp0KSsiIn19LHQuaW50 ZXJwb2xhdGVIc2w9ZnVuY3Rpb24oZSxyKXtlPXQuaHNsKGUpLHI9dC5oc2wo cik7dmFyIG49ZS5oLGE9ZS5zLGk9ZS5sLG89ci5oLW4scz1yLnMtYSxsPXIu bC1pO2lzTmFOKHMpJiYocz0wLGE9aXNOYU4oYSk/ci5zOmEpO2lzTmFOKG8p PyhvPTAsbj1pc05hTihuKT9yLmg6bik6bz4xODA/by09MzYwOm88LTE4MCYm KG8rPTM2MCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBIdChuK28qdCxh K3MqdCxpK2wqdCkrIiJ9fSx0LmludGVycG9sYXRlTGFiPWZ1bmN0aW9uKGUs cil7ZT10LmxhYihlKSxyPXQubGFiKHIpO3ZhciBuPWUubCxhPWUuYSxpPWUu YixvPXIubC1uLHM9ci5hLWEsbD1yLmItaTtyZXR1cm4gZnVuY3Rpb24odCl7 cmV0dXJuIHRlKG4rbyp0LGErcyp0LGkrbCp0KSsiIn19LHQuaW50ZXJwb2xh dGVSb3VuZD1oaSx0LnRyYW5zZm9ybT1mdW5jdGlvbihlKXt2YXIgcj1hLmNy ZWF0ZUVsZW1lbnROUyh0Lm5zLnByZWZpeC5zdmcsImciKTtyZXR1cm4odC50 cmFuc2Zvcm09ZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7ci5zZXRBdHRyaWJ1 dGUoInRyYW5zZm9ybSIsdCk7dmFyIGU9ci50cmFuc2Zvcm0uYmFzZVZhbC5j b25zb2xpZGF0ZSgpfXJldHVybiBuZXcgZmkoZT9lLm1hdHJpeDpnaSl9KShl KX0sZmkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuInRy YW5zbGF0ZSgiK3RoaXMudHJhbnNsYXRlKyIpcm90YXRlKCIrdGhpcy5yb3Rh dGUrIilza2V3WCgiK3RoaXMuc2tldysiKXNjYWxlKCIrdGhpcy5zY2FsZSsi KSJ9O3ZhciBnaT17YToxLGI6MCxjOjAsZDoxLGU6MCxmOjB9O2Z1bmN0aW9u IHZpKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIsIjoiIn1mdW5jdGlv biBtaShlLHIpe3ZhciBuPVtdLGE9W107cmV0dXJuIGU9dC50cmFuc2Zvcm0o ZSkscj10LnRyYW5zZm9ybShyKSxmdW5jdGlvbih0LGUscixuKXtpZih0WzBd IT09ZVswXXx8dFsxXSE9PWVbMV0pe3ZhciBhPXIucHVzaCgidHJhbnNsYXRl KCIsbnVsbCwiLCIsbnVsbCwiKSIpO24ucHVzaCh7aTphLTQseDpXYSh0WzBd LGVbMF0pfSx7aTphLTIseDpXYSh0WzFdLGVbMV0pfSl9ZWxzZShlWzBdfHxl WzFdKSYmci5wdXNoKCJ0cmFuc2xhdGUoIitlKyIpIil9KGUudHJhbnNsYXRl LHIudHJhbnNsYXRlLG4sYSksZnVuY3Rpb24odCxlLHIsbil7dCE9PWU/KHQt ZT4xODA/ZSs9MzYwOmUtdD4xODAmJih0Kz0zNjApLG4ucHVzaCh7aTpyLnB1 c2godmkocikrInJvdGF0ZSgiLG51bGwsIikiKS0yLHg6V2EodCxlKX0pKTpl JiZyLnB1c2godmkocikrInJvdGF0ZSgiK2UrIikiKX0oZS5yb3RhdGUsci5y b3RhdGUsbixhKSxmdW5jdGlvbih0LGUscixuKXt0IT09ZT9uLnB1c2goe2k6 ci5wdXNoKHZpKHIpKyJza2V3WCgiLG51bGwsIikiKS0yLHg6V2EodCxlKX0p OmUmJnIucHVzaCh2aShyKSsic2tld1goIitlKyIpIil9KGUuc2tldyxyLnNr ZXcsbixhKSxmdW5jdGlvbih0LGUscixuKXtpZih0WzBdIT09ZVswXXx8dFsx XSE9PWVbMV0pe3ZhciBhPXIucHVzaCh2aShyKSsic2NhbGUoIixudWxsLCIs IixudWxsLCIpIik7bi5wdXNoKHtpOmEtNCx4OldhKHRbMF0sZVswXSl9LHtp OmEtMix4OldhKHRbMV0sZVsxXSl9KX1lbHNlIDE9PT1lWzBdJiYxPT09ZVsx XXx8ci5wdXNoKHZpKHIpKyJzY2FsZSgiK2UrIikiKX0oZS5zY2FsZSxyLnNj YWxlLG4sYSksZT1yPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9LTEs aT1hLmxlbmd0aDsrK3I8aTspblsoZT1hW3JdKS5pXT1lLngodCk7cmV0dXJu IG4uam9pbigiIil9fWZ1bmN0aW9uIHlpKHQsZSl7cmV0dXJuIGU9KGUtPXQ9 K3QpfHwxL2UsZnVuY3Rpb24ocil7cmV0dXJuKHItdCkvZX19ZnVuY3Rpb24g eGkodCxlKXtyZXR1cm4gZT0oZS09dD0rdCl8fDEvZSxmdW5jdGlvbihyKXty ZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxLChyLXQpL2UpKX19ZnVuY3Rp b24gYmkodCl7Zm9yKHZhciBlPXQuc291cmNlLHI9dC50YXJnZXQsbj1mdW5j dGlvbih0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciByPV9pKHQpLG49X2ko ZSksYT1yLnBvcCgpLGk9bi5wb3AoKSxvPW51bGw7Zm9yKDthPT09aTspbz1h LGE9ci5wb3AoKSxpPW4ucG9wKCk7cmV0dXJuIG99KGUsciksYT1bZV07ZSE9 PW47KWU9ZS5wYXJlbnQsYS5wdXNoKGUpO2Zvcih2YXIgaT1hLmxlbmd0aDty IT09bjspYS5zcGxpY2UoaSwwLHIpLHI9ci5wYXJlbnQ7cmV0dXJuIGF9ZnVu Y3Rpb24gX2kodCl7Zm9yKHZhciBlPVtdLHI9dC5wYXJlbnQ7bnVsbCE9cjsp ZS5wdXNoKHQpLHQ9cixyPXIucGFyZW50O3JldHVybiBlLnB1c2godCksZX1m dW5jdGlvbiB3aSh0KXt0LmZpeGVkfD0yfWZ1bmN0aW9uIGtpKHQpe3QuZml4 ZWQmPS03fWZ1bmN0aW9uIFRpKHQpe3QuZml4ZWR8PTQsdC5weD10LngsdC5w eT10Lnl9ZnVuY3Rpb24gTWkodCl7dC5maXhlZCY9LTV9dC5pbnRlcnBvbGF0 ZVRyYW5zZm9ybT1taSx0LmxheW91dD17fSx0LmxheW91dC5idW5kbGU9ZnVu Y3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9LTEs bj10Lmxlbmd0aDsrK3I8bjspZS5wdXNoKGJpKHRbcl0pKTtyZXR1cm4gZX19 LHQubGF5b3V0LmNob3JkPWZ1bmN0aW9uKCl7dmFyIGUscixuLGEsaSxvLHMs bD17fSxjPTA7ZnVuY3Rpb24gdSgpe3ZhciBsLHUsZixwLGQsZz17fSx2PVtd LG09dC5yYW5nZShhKSx5PVtdO2ZvcihlPVtdLHI9W10sbD0wLHA9LTE7Kytw PGE7KXtmb3IodT0wLGQ9LTE7KytkPGE7KXUrPW5bcF1bZF07di5wdXNoKHUp LHkucHVzaCh0LnJhbmdlKGEpKSxsKz11fWZvcihpJiZtLnNvcnQoZnVuY3Rp b24odCxlKXtyZXR1cm4gaSh2W3RdLHZbZV0pfSksbyYmeS5mb3JFYWNoKGZ1 bmN0aW9uKHQsZSl7dC5zb3J0KGZ1bmN0aW9uKHQscil7cmV0dXJuIG8obltl XVt0XSxuW2VdW3JdKX0pfSksbD0oQXQtYyphKS9sLHU9MCxwPS0xOysrcDxh Oyl7Zm9yKGY9dSxkPS0xOysrZDxhOyl7dmFyIHg9bVtwXSxiPXlbeF1bZF0s Xz1uW3hdW2JdLHc9dSxrPXUrPV8qbDtnW3grIi0iK2JdPXtpbmRleDp4LHN1 YmluZGV4OmIsc3RhcnRBbmdsZTp3LGVuZEFuZ2xlOmssdmFsdWU6X319clt4 XT17aW5kZXg6eCxzdGFydEFuZ2xlOmYsZW5kQW5nbGU6dSx2YWx1ZTp2W3hd fSx1Kz1jfWZvcihwPS0xOysrcDxhOylmb3IoZD1wLTE7KytkPGE7KXt2YXIg VD1nW3ArIi0iK2RdLE09Z1tkKyItIitwXTsoVC52YWx1ZXx8TS52YWx1ZSkm JmUucHVzaChULnZhbHVlPE0udmFsdWU/e3NvdXJjZTpNLHRhcmdldDpUfTp7 c291cmNlOlQsdGFyZ2V0Ok19KX1zJiZoKCl9ZnVuY3Rpb24gaCgpe2Uuc29y dChmdW5jdGlvbih0LGUpe3JldHVybiBzKCh0LnNvdXJjZS52YWx1ZSt0LnRh cmdldC52YWx1ZSkvMiwoZS5zb3VyY2UudmFsdWUrZS50YXJnZXQudmFsdWUp LzIpfSl9cmV0dXJuIGwubWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhhPShuPXQpJiZuLmxlbmd0aCxlPXI9bnVsbCxsKTpu fSxsLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KGM9dCxlPXI9bnVsbCxsKTpjfSxsLnNvcnRHcm91cHM9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxlPXI9bnVsbCxsKTpp fSxsLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KG89dCxlPW51bGwsbCk6b30sbC5zb3J0Q2hvcmRzPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsZSYmaCgpLGwp OnN9LGwuY2hvcmRzPWZ1bmN0aW9uKCl7cmV0dXJuIGV8fHUoKSxlfSxsLmdy b3Vwcz1mdW5jdGlvbigpe3JldHVybiByfHx1KCkscn0sbH0sdC5sYXlvdXQu Zm9yY2U9ZnVuY3Rpb24oKXt2YXIgZSxyLG4sYSxpLG8scz17fSxsPXQuZGlz cGF0Y2goInN0YXJ0IiwidGljayIsImVuZCIpLGM9WzEsMV0sdT0uOSxoPUFp LGY9U2kscD0tMzAsZD1FaSxnPS4xLHY9LjY0LG09W10seT1bXTtmdW5jdGlv biB4KHQpe3JldHVybiBmdW5jdGlvbihlLHIsbixhKXtpZihlLnBvaW50IT09 dCl7dmFyIGk9ZS5jeC10Lngsbz1lLmN5LXQueSxzPWEtcixsPWkqaStvKm87 aWYocypzL3Y8bCl7aWYobDxkKXt2YXIgYz1lLmNoYXJnZS9sO3QucHgtPWkq Yyx0LnB5LT1vKmN9cmV0dXJuITB9aWYoZS5wb2ludCYmbCYmbDxkKXtjPWUu cG9pbnRDaGFyZ2UvbDt0LnB4LT1pKmMsdC5weS09bypjfX1yZXR1cm4hZS5j aGFyZ2V9fWZ1bmN0aW9uIGIoZSl7ZS5weD10LmV2ZW50LngsZS5weT10LmV2 ZW50Lnkscy5yZXN1bWUoKX1yZXR1cm4gcy50aWNrPWZ1bmN0aW9uKCl7aWYo KG4qPS45OSk8LjAwNSlyZXR1cm4gZT1udWxsLGwuZW5kKHt0eXBlOiJlbmQi LGFscGhhOm49MH0pLCEwO3ZhciByLHMsaCxmLGQsdixiLF8sdyxrPW0ubGVu Z3RoLFQ9eS5sZW5ndGg7Zm9yKHM9MDtzPFQ7KytzKWY9KGg9eVtzXSkuc291 cmNlLCh2PShfPShkPWgudGFyZ2V0KS54LWYueCkqXysodz1kLnktZi55KSp3 KSYmKF8qPXY9bippW3NdKigodj1NYXRoLnNxcnQodikpLWFbc10pL3Ysdyo9 dixkLngtPV8qKGI9Zi53ZWlnaHQrZC53ZWlnaHQ/Zi53ZWlnaHQvKGYud2Vp Z2h0K2Qud2VpZ2h0KTouNSksZC55LT13KmIsZi54Kz1fKihiPTEtYiksZi55 Kz13KmIpO2lmKChiPW4qZykmJihfPWNbMF0vMix3PWNbMV0vMixzPS0xLGIp KWZvcig7KytzPGs7KShoPW1bc10pLngrPShfLWgueCkqYixoLnkrPSh3LWgu eSkqYjtpZihwKWZvcighZnVuY3Rpb24gdChlLHIsbil7dmFyIGE9MCxpPTA7 ZS5jaGFyZ2U9MDtpZighZS5sZWFmKWZvcih2YXIgbyxzPWUubm9kZXMsbD1z Lmxlbmd0aCxjPS0xOysrYzxsOyludWxsIT0obz1zW2NdKSYmKHQobyxyLG4p LGUuY2hhcmdlKz1vLmNoYXJnZSxhKz1vLmNoYXJnZSpvLmN4LGkrPW8uY2hh cmdlKm8uY3kpO2lmKGUucG9pbnQpe2UubGVhZnx8KGUucG9pbnQueCs9TWF0 aC5yYW5kb20oKS0uNSxlLnBvaW50LnkrPU1hdGgucmFuZG9tKCktLjUpO3Zh ciB1PXIqbltlLnBvaW50LmluZGV4XTtlLmNoYXJnZSs9ZS5wb2ludENoYXJn ZT11LGErPXUqZS5wb2ludC54LGkrPXUqZS5wb2ludC55fWUuY3g9YS9lLmNo YXJnZTtlLmN5PWkvZS5jaGFyZ2V9KHI9dC5nZW9tLnF1YWR0cmVlKG0pLG4s bykscz0tMTsrK3M8azspKGg9bVtzXSkuZml4ZWR8fHIudmlzaXQoeChoKSk7 Zm9yKHM9LTE7KytzPGs7KShoPW1bc10pLmZpeGVkPyhoLng9aC5weCxoLnk9 aC5weSk6KGgueC09KGgucHgtKGgucHg9aC54KSkqdSxoLnktPShoLnB5LSho LnB5PWgueSkpKnUpO2wudGljayh7dHlwZToidGljayIsYWxwaGE6bn0pfSxz Lm5vZGVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyht PXQscyk6bX0scy5saW5rcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8oeT10LHMpOnl9LHMuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8oYz10LHMpOmN9LHMubGlua0Rpc3RhbmNlPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSJmdW5jdGlv biI9PXR5cGVvZiB0P3Q6K3Qscyk6aH0scy5kaXN0YW5jZT1zLmxpbmtEaXN0 YW5jZSxzLmxpbmtTdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Oit0LHMpOmZ9 LHMuZnJpY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KHU9K3Qscyk6dX0scy5jaGFyZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KHA9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDordCxz KTpwfSxzLmNoYXJnZURpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhkPXQqdCxzKTpNYXRoLnNxcnQoZCl9LHMuZ3Jhdml0 eT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rdCxz KTpnfSxzLnRoZXRhPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyh2PXQqdCxzKTpNYXRoLnNxcnQodil9LHMuYWxwaGE9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K3Qsbj90PjA/bj10Oihl LmM9bnVsbCxlLnQ9TmFOLGU9bnVsbCxsLmVuZCh7dHlwZToiZW5kIixhbHBo YTpuPTB9KSk6dD4wJiYobC5zdGFydCh7dHlwZToic3RhcnQiLGFscGhhOm49 dH0pLGU9VGUocy50aWNrKSkscyk6bn0scy5zdGFydD1mdW5jdGlvbigpe3Zh ciB0LGUscixuPW0ubGVuZ3RoLGw9eS5sZW5ndGgsdT1jWzBdLGQ9Y1sxXTtm b3IodD0wO3Q8bjsrK3QpKHI9bVt0XSkuaW5kZXg9dCxyLndlaWdodD0wO2Zv cih0PTA7dDxsOysrdCkibnVtYmVyIj09dHlwZW9mKHI9eVt0XSkuc291cmNl JiYoci5zb3VyY2U9bVtyLnNvdXJjZV0pLCJudW1iZXIiPT10eXBlb2Ygci50 YXJnZXQmJihyLnRhcmdldD1tW3IudGFyZ2V0XSksKytyLnNvdXJjZS53ZWln aHQsKytyLnRhcmdldC53ZWlnaHQ7Zm9yKHQ9MDt0PG47Kyt0KXI9bVt0XSxp c05hTihyLngpJiYoci54PWcoIngiLHUpKSxpc05hTihyLnkpJiYoci55PWco InkiLGQpKSxpc05hTihyLnB4KSYmKHIucHg9ci54KSxpc05hTihyLnB5KSYm KHIucHk9ci55KTtpZihhPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBoKWZvcih0 PTA7dDxsOysrdClhW3RdPStoLmNhbGwodGhpcyx5W3RdLHQpO2Vsc2UgZm9y KHQ9MDt0PGw7Kyt0KWFbdF09aDtpZihpPVtdLCJmdW5jdGlvbiI9PXR5cGVv ZiBmKWZvcih0PTA7dDxsOysrdClpW3RdPStmLmNhbGwodGhpcyx5W3RdLHQp O2Vsc2UgZm9yKHQ9MDt0PGw7Kyt0KWlbdF09ZjtpZihvPVtdLCJmdW5jdGlv biI9PXR5cGVvZiBwKWZvcih0PTA7dDxuOysrdClvW3RdPStwLmNhbGwodGhp cyxtW3RdLHQpO2Vsc2UgZm9yKHQ9MDt0PG47Kyt0KW9bdF09cDtmdW5jdGlv biBnKHIsYSl7aWYoIWUpe2ZvcihlPW5ldyBBcnJheShuKSxjPTA7YzxuOysr YyllW2NdPVtdO2ZvcihjPTA7YzxsOysrYyl7dmFyIGk9eVtjXTtlW2kuc291 cmNlLmluZGV4XS5wdXNoKGkudGFyZ2V0KSxlW2kudGFyZ2V0LmluZGV4XS5w dXNoKGkuc291cmNlKX19Zm9yKHZhciBvLHM9ZVt0XSxjPS0xLHU9cy5sZW5n dGg7KytjPHU7KWlmKCFpc05hTihvPXNbY11bcl0pKXJldHVybiBvO3JldHVy biBNYXRoLnJhbmRvbSgpKmF9cmV0dXJuIHMucmVzdW1lKCl9LHMucmVzdW1l PWZ1bmN0aW9uKCl7cmV0dXJuIHMuYWxwaGEoLjEpfSxzLnN0b3A9ZnVuY3Rp b24oKXtyZXR1cm4gcy5hbHBoYSgwKX0scy5kcmFnPWZ1bmN0aW9uKCl7aWYo cnx8KHI9dC5iZWhhdmlvci5kcmFnKCkub3JpZ2luKFApLm9uKCJkcmFnc3Rh cnQuZm9yY2UiLHdpKS5vbigiZHJhZy5mb3JjZSIsYikub24oImRyYWdlbmQu Zm9yY2UiLGtpKSksIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHI7dGhpcy5v bigibW91c2VvdmVyLmZvcmNlIixUaSkub24oIm1vdXNlb3V0LmZvcmNlIixN aSkuY2FsbChyKX0sdC5yZWJpbmQocyxsLCJvbiIpfTt2YXIgQWk9MjAsU2k9 MSxFaT0xLzA7ZnVuY3Rpb24gTGkoZSxyKXtyZXR1cm4gdC5yZWJpbmQoZSxy LCJzb3J0IiwiY2hpbGRyZW4iLCJ2YWx1ZSIpLGUubm9kZXM9ZSxlLmxpbmtz PURpLGV9ZnVuY3Rpb24gQ2kodCxlKXtmb3IodmFyIHI9W3RdO251bGwhPSh0 PXIucG9wKCkpOylpZihlKHQpLChhPXQuY2hpbGRyZW4pJiYobj1hLmxlbmd0 aCkpZm9yKHZhciBuLGE7LS1uPj0wOylyLnB1c2goYVtuXSl9ZnVuY3Rpb24g UGkodCxlKXtmb3IodmFyIHI9W3RdLG49W107bnVsbCE9KHQ9ci5wb3AoKSk7 KWlmKG4ucHVzaCh0KSwoaT10LmNoaWxkcmVuKSYmKGE9aS5sZW5ndGgpKWZv cih2YXIgYSxpLG89LTE7KytvPGE7KXIucHVzaChpW29dKTtmb3IoO251bGwh PSh0PW4ucG9wKCkpOyllKHQpfWZ1bmN0aW9uIE9pKHQpe3JldHVybiB0LmNo aWxkcmVufWZ1bmN0aW9uIHppKHQpe3JldHVybiB0LnZhbHVlfWZ1bmN0aW9u IElpKHQsZSl7cmV0dXJuIGUudmFsdWUtdC52YWx1ZX1mdW5jdGlvbiBEaShl KXtyZXR1cm4gdC5tZXJnZShlLm1hcChmdW5jdGlvbih0KXtyZXR1cm4odC5j aGlsZHJlbnx8W10pLm1hcChmdW5jdGlvbihlKXtyZXR1cm57c291cmNlOnQs dGFyZ2V0OmV9fSl9KSl9dC5sYXlvdXQuaGllcmFyY2h5PWZ1bmN0aW9uKCl7 dmFyIHQ9SWksZT1PaSxyPXppO2Z1bmN0aW9uIG4oYSl7dmFyIGksbz1bYV0s cz1bXTtmb3IoYS5kZXB0aD0wO251bGwhPShpPW8ucG9wKCkpOylpZihzLnB1 c2goaSksKGM9ZS5jYWxsKG4saSxpLmRlcHRoKSkmJihsPWMubGVuZ3RoKSl7 Zm9yKHZhciBsLGMsdTstLWw+PTA7KW8ucHVzaCh1PWNbbF0pLHUucGFyZW50 PWksdS5kZXB0aD1pLmRlcHRoKzE7ciYmKGkudmFsdWU9MCksaS5jaGlsZHJl bj1jfWVsc2UgciYmKGkudmFsdWU9K3IuY2FsbChuLGksaS5kZXB0aCl8fDAp LGRlbGV0ZSBpLmNoaWxkcmVuO3JldHVybiBQaShhLGZ1bmN0aW9uKGUpe3Zh ciBuLGE7dCYmKG49ZS5jaGlsZHJlbikmJm4uc29ydCh0KSxyJiYoYT1lLnBh cmVudCkmJihhLnZhbHVlKz1lLnZhbHVlKX0pLHN9cmV0dXJuIG4uc29ydD1m dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9 LG4uY2hpbGRyZW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KGU9dCxuKTplfSxuLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sbi5yZXZhbHVlPWZ1bmN0aW9uKHQp e3JldHVybiByJiYoQ2kodCxmdW5jdGlvbih0KXt0LmNoaWxkcmVuJiYodC52 YWx1ZT0wKX0pLFBpKHQsZnVuY3Rpb24odCl7dmFyIGU7dC5jaGlsZHJlbnx8 KHQudmFsdWU9K3IuY2FsbChuLHQsdC5kZXB0aCl8fDApLChlPXQucGFyZW50 KSYmKGUudmFsdWUrPXQudmFsdWUpfSkpLHR9LG59LHQubGF5b3V0LnBhcnRp dGlvbj1mdW5jdGlvbigpe3ZhciBlPXQubGF5b3V0LmhpZXJhcmNoeSgpLHI9 WzEsMV07ZnVuY3Rpb24gbih0LG4pe3ZhciBhPWUuY2FsbCh0aGlzLHQsbik7 cmV0dXJuIGZ1bmN0aW9uIHQoZSxyLG4sYSl7dmFyIGk9ZS5jaGlsZHJlbjtp ZihlLng9cixlLnk9ZS5kZXB0aCphLGUuZHg9bixlLmR5PWEsaSYmKG89aS5s ZW5ndGgpKXt2YXIgbyxzLGwsYz0tMTtmb3Iobj1lLnZhbHVlP24vZS52YWx1 ZTowOysrYzxvOyl0KHM9aVtjXSxyLGw9cy52YWx1ZSpuLGEpLHIrPWx9fShh WzBdLDAsclswXSxyWzFdL2Z1bmN0aW9uIHQoZSl7dmFyIHI9ZS5jaGlsZHJl bixuPTA7aWYociYmKGE9ci5sZW5ndGgpKWZvcih2YXIgYSxpPS0xOysraTxh OyluPU1hdGgubWF4KG4sdChyW2ldKSk7cmV0dXJuIDErbn0oYVswXSkpLGF9 cmV0dXJuIG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8ocj10LG4pOnJ9LExpKG4sZSl9LHQubGF5b3V0LnBpZT1mdW5jdGlv bigpe3ZhciBlPU51bWJlcixyPVJpLG49MCxhPUF0LGk9MDtmdW5jdGlvbiBv KHMpe3ZhciBsLGM9cy5sZW5ndGgsdT1zLm1hcChmdW5jdGlvbih0LHIpe3Jl dHVybitlLmNhbGwobyx0LHIpfSksaD0rKCJmdW5jdGlvbiI9PXR5cGVvZiBu P24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4pLGY9KCJmdW5jdGlvbiI9PXR5 cGVvZiBhP2EuYXBwbHkodGhpcyxhcmd1bWVudHMpOmEpLWgscD1NYXRoLm1p bihNYXRoLmFicyhmKS9jLCsoImZ1bmN0aW9uIj09dHlwZW9mIGk/aS5hcHBs eSh0aGlzLGFyZ3VtZW50cyk6aSkpLGQ9cCooZjwwPy0xOjEpLGc9dC5zdW0o dSksdj1nPyhmLWMqZCkvZzowLG09dC5yYW5nZShjKSx5PVtdO3JldHVybiBu dWxsIT1yJiZtLnNvcnQocj09PVJpP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIHVb ZV0tdVt0XX06ZnVuY3Rpb24odCxlKXtyZXR1cm4gcihzW3RdLHNbZV0pfSks bS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3lbdF09e2RhdGE6c1t0XSx2YWx1ZTps PXVbdF0sc3RhcnRBbmdsZTpoLGVuZEFuZ2xlOmgrPWwqditkLHBhZEFuZ2xl OnB9fSkseX1yZXR1cm4gby52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8oZT10LG8pOmV9LG8uc29ydD1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG8pOnJ9LG8uc3RhcnRBbmds ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LG8p Om59LG8uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/KGE9dCxvKTphfSxvLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyhpPXQsbyk6aX0sb307dmFyIFJpPXt9O2Z1 bmN0aW9uIEZpKHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gQmkodCl7cmV0dXJu IHQueX1mdW5jdGlvbiBOaSh0LGUscil7dC55MD1lLHQueT1yfXQubGF5b3V0 LnN0YWNrPWZ1bmN0aW9uKCl7dmFyIGU9UCxyPVVpLG49cWksYT1OaSxpPUZp LG89Qmk7ZnVuY3Rpb24gcyhsLGMpe2lmKCEocD1sLmxlbmd0aCkpcmV0dXJu IGw7dmFyIHU9bC5tYXAoZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5jYWxsKHMs dCxyKX0pLGg9dS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubWFwKGZ1bmN0 aW9uKHQsZSl7cmV0dXJuW2kuY2FsbChzLHQsZSksby5jYWxsKHMsdCxlKV19 KX0pLGY9ci5jYWxsKHMsaCxjKTt1PXQucGVybXV0ZSh1LGYpLGg9dC5wZXJt dXRlKGgsZik7dmFyIHAsZCxnLHYsbT1uLmNhbGwocyxoLGMpLHk9dVswXS5s ZW5ndGg7Zm9yKGc9MDtnPHk7KytnKWZvcihhLmNhbGwocyx1WzBdW2ddLHY9 bVtnXSxoWzBdW2ddWzFdKSxkPTE7ZDxwOysrZClhLmNhbGwocyx1W2RdW2dd LHYrPWhbZC0xXVtnXVsxXSxoW2RdW2ddWzFdKTtyZXR1cm4gbH1yZXR1cm4g cy52YWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KGU9dCxzKTplfSxzLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6amkuZ2V0KHQp fHxVaSxzKTpyfSxzLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlZpLmdldCh0 KXx8cWkscyk6bn0scy54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhpPXQscyk6aX0scy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhvPXQscyk6b30scy5vdXQ9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxzKTphfSxzfTt2YXIgamk9dC5t YXAoeyJpbnNpZGUtb3V0IjpmdW5jdGlvbihlKXt2YXIgcixuLGE9ZS5sZW5n dGgsaT1lLm1hcChIaSksbz1lLm1hcChHaSkscz10LnJhbmdlKGEpLnNvcnQo ZnVuY3Rpb24odCxlKXtyZXR1cm4gaVt0XS1pW2VdfSksbD0wLGM9MCx1PVtd LGg9W107Zm9yKHI9MDtyPGE7KytyKW49c1tyXSxsPGM/KGwrPW9bbl0sdS5w dXNoKG4pKTooYys9b1tuXSxoLnB1c2gobikpO3JldHVybiBoLnJldmVyc2Uo KS5jb25jYXQodSl9LHJldmVyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHQucmFu Z2UoZS5sZW5ndGgpLnJldmVyc2UoKX0sZGVmYXVsdDpVaX0pLFZpPXQubWFw KHtzaWxob3VldHRlOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhPXQubGVuZ3Ro LGk9dFswXS5sZW5ndGgsbz1bXSxzPTAsbD1bXTtmb3Iocj0wO3I8aTsrK3Ip e2ZvcihlPTAsbj0wO2U8YTtlKyspbis9dFtlXVtyXVsxXTtuPnMmJihzPW4p LG8ucHVzaChuKX1mb3Iocj0wO3I8aTsrK3IpbFtyXT0ocy1vW3JdKS8yO3Jl dHVybiBsfSx3aWdnbGU6ZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaSxvLHMs bCxjLHU9dC5sZW5ndGgsaD10WzBdLGY9aC5sZW5ndGgscD1bXTtmb3IocFsw XT1sPWM9MCxyPTE7cjxmOysrcil7Zm9yKGU9MCxhPTA7ZTx1OysrZSlhKz10 W2VdW3JdWzFdO2ZvcihlPTAsaT0wLHM9aFtyXVswXS1oW3ItMV1bMF07ZTx1 OysrZSl7Zm9yKG49MCxvPSh0W2VdW3JdWzFdLXRbZV1bci0xXVsxXSkvKDIq cyk7bjxlOysrbilvKz0odFtuXVtyXVsxXS10W25dW3ItMV1bMV0pL3M7aSs9 byp0W2VdW3JdWzFdfXBbcl09bC09YT9pL2EqczowLGw8YyYmKGM9bCl9Zm9y KHI9MDtyPGY7KytyKXBbcl0tPWM7cmV0dXJuIHB9LGV4cGFuZDpmdW5jdGlv bih0KXt2YXIgZSxyLG4sYT10Lmxlbmd0aCxpPXRbMF0ubGVuZ3RoLG89MS9h LHM9W107Zm9yKHI9MDtyPGk7KytyKXtmb3IoZT0wLG49MDtlPGE7ZSsrKW4r PXRbZV1bcl1bMV07aWYobilmb3IoZT0wO2U8YTtlKyspdFtlXVtyXVsxXS89 bjtlbHNlIGZvcihlPTA7ZTxhO2UrKyl0W2VdW3JdWzFdPW99Zm9yKHI9MDty PGk7KytyKXNbcl09MDtyZXR1cm4gc30semVybzpxaX0pO2Z1bmN0aW9uIFVp KGUpe3JldHVybiB0LnJhbmdlKGUubGVuZ3RoKX1mdW5jdGlvbiBxaSh0KXtm b3IodmFyIGU9LTEscj10WzBdLmxlbmd0aCxuPVtdOysrZTxyOyluW2VdPTA7 cmV0dXJuIG59ZnVuY3Rpb24gSGkodCl7Zm9yKHZhciBlLHI9MSxuPTAsYT10 WzBdWzFdLGk9dC5sZW5ndGg7cjxpOysrcikoZT10W3JdWzFdKT5hJiYobj1y LGE9ZSk7cmV0dXJuIG59ZnVuY3Rpb24gR2kodCl7cmV0dXJuIHQucmVkdWNl KFlpLDApfWZ1bmN0aW9uIFlpKHQsZSl7cmV0dXJuIHQrZVsxXX1mdW5jdGlv biBXaSh0LGUpe3JldHVybiBYaSh0LE1hdGguY2VpbChNYXRoLmxvZyhlLmxl bmd0aCkvTWF0aC5MTjIrMSkpfWZ1bmN0aW9uIFhpKHQsZSl7Zm9yKHZhciBy PS0xLG49K3RbMF0sYT0odFsxXS1uKS9lLGk9W107KytyPD1lOylpW3JdPWEq cituO3JldHVybiBpfWZ1bmN0aW9uIFppKGUpe3JldHVyblt0Lm1pbihlKSx0 Lm1heChlKV19ZnVuY3Rpb24gSmkodCxlKXtyZXR1cm4gdC52YWx1ZS1lLnZh bHVlfWZ1bmN0aW9uIEtpKHQsZSl7dmFyIHI9dC5fcGFja19uZXh0O3QuX3Bh Y2tfbmV4dD1lLGUuX3BhY2tfcHJldj10LGUuX3BhY2tfbmV4dD1yLHIuX3Bh Y2tfcHJldj1lfWZ1bmN0aW9uIFFpKHQsZSl7dC5fcGFja19uZXh0PWUsZS5f cGFja19wcmV2PXR9ZnVuY3Rpb24gJGkodCxlKXt2YXIgcj1lLngtdC54LG49 ZS55LXQueSxhPXQucitlLnI7cmV0dXJuLjk5OSphKmE+cipyK24qbn1mdW5j dGlvbiB0byh0KXtpZigoZT10LmNoaWxkcmVuKSYmKGw9ZS5sZW5ndGgpKXt2 YXIgZSxyLG4sYSxpLG8scyxsLGM9MS8wLHU9LTEvMCxoPTEvMCxmPS0xLzA7 aWYoZS5mb3JFYWNoKGVvKSwocj1lWzBdKS54PS1yLnIsci55PTAseChyKSxs PjEmJigobj1lWzFdKS54PW4ucixuLnk9MCx4KG4pLGw+MikpZm9yKG5vKHIs bixhPWVbMl0pLHgoYSksS2kocixhKSxyLl9wYWNrX3ByZXY9YSxLaShhLG4p LG49ci5fcGFja19uZXh0LGk9MztpPGw7aSsrKXtubyhyLG4sYT1lW2ldKTt2 YXIgcD0wLGQ9MSxnPTE7Zm9yKG89bi5fcGFja19uZXh0O28hPT1uO289by5f cGFja19uZXh0LGQrKylpZigkaShvLGEpKXtwPTE7YnJlYWt9aWYoMT09cClm b3Iocz1yLl9wYWNrX3ByZXY7cyE9PW8uX3BhY2tfcHJldiYmISRpKHMsYSk7 cz1zLl9wYWNrX3ByZXYsZysrKTtwPyhkPGd8fGQ9PWcmJm4ucjxyLnI/UWko cixuPW8pOlFpKHI9cyxuKSxpLS0pOihLaShyLGEpLG49YSx4KGEpKX12YXIg dj0oYyt1KS8yLG09KGgrZikvMix5PTA7Zm9yKGk9MDtpPGw7aSsrKShhPWVb aV0pLngtPXYsYS55LT1tLHk9TWF0aC5tYXgoeSxhLnIrTWF0aC5zcXJ0KGEu eCphLngrYS55KmEueSkpO3Qucj15LGUuZm9yRWFjaChybyl9ZnVuY3Rpb24g eCh0KXtjPU1hdGgubWluKHQueC10LnIsYyksdT1NYXRoLm1heCh0LngrdC5y LHUpLGg9TWF0aC5taW4odC55LXQucixoKSxmPU1hdGgubWF4KHQueSt0LnIs Zil9fWZ1bmN0aW9uIGVvKHQpe3QuX3BhY2tfbmV4dD10Ll9wYWNrX3ByZXY9 dH1mdW5jdGlvbiBybyh0KXtkZWxldGUgdC5fcGFja19uZXh0LGRlbGV0ZSB0 Ll9wYWNrX3ByZXZ9ZnVuY3Rpb24gbm8odCxlLHIpe3ZhciBuPXQucityLnIs YT1lLngtdC54LGk9ZS55LXQueTtpZihuJiYoYXx8aSkpe3ZhciBvPWUucity LnIscz1hKmEraSppLGw9LjUrKChuKj1uKS0obyo9bykpLygyKnMpLGM9TWF0 aC5zcXJ0KE1hdGgubWF4KDAsMipvKihuK3MpLShuLT1zKSpuLW8qbykpLygy KnMpO3IueD10LngrbCphK2MqaSxyLnk9dC55K2wqaS1jKmF9ZWxzZSByLng9 dC54K24sci55PXQueX1mdW5jdGlvbiBhbyh0LGUpe3JldHVybiB0LnBhcmVu dD09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIGlvKHQpe3ZhciBlPXQuY2hpbGRy ZW47cmV0dXJuIGUubGVuZ3RoP2VbMF06dC50fWZ1bmN0aW9uIG9vKHQpe3Zh ciBlLHI9dC5jaGlsZHJlbjtyZXR1cm4oZT1yLmxlbmd0aCk/cltlLTFdOnQu dH1mdW5jdGlvbiBzbyh0LGUscil7dmFyIG49ci8oZS5pLXQuaSk7ZS5jLT1u LGUucys9cix0LmMrPW4sZS56Kz1yLGUubSs9cn1mdW5jdGlvbiBsbyh0LGUs cil7cmV0dXJuIHQuYS5wYXJlbnQ9PT1lLnBhcmVudD90LmE6cn1mdW5jdGlv biBjbyh0KXtyZXR1cm57eDp0LngseTp0LnksZHg6dC5keCxkeTp0LmR5fX1m dW5jdGlvbiB1byh0LGUpe3ZhciByPXQueCtlWzNdLG49dC55K2VbMF0sYT10 LmR4LWVbMV0tZVszXSxpPXQuZHktZVswXS1lWzJdO3JldHVybiBhPDAmJihy Kz1hLzIsYT0wKSxpPDAmJihuKz1pLzIsaT0wKSx7eDpyLHk6bixkeDphLGR5 Oml9fWZ1bmN0aW9uIGhvKHQpe3ZhciBlPXRbMF0scj10W3QubGVuZ3RoLTFd O3JldHVybiBlPHI/W2Uscl06W3IsZV19ZnVuY3Rpb24gZm8odCl7cmV0dXJu IHQucmFuZ2VFeHRlbnQ/dC5yYW5nZUV4dGVudCgpOmhvKHQucmFuZ2UoKSl9 ZnVuY3Rpb24gcG8odCxlLHIsbil7dmFyIGE9cih0WzBdLHRbMV0pLGk9bihl WzBdLGVbMV0pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShhKHQpKX19 ZnVuY3Rpb24gZ28odCxlKXt2YXIgcixuPTAsYT10Lmxlbmd0aC0xLGk9dFtu XSxvPXRbYV07cmV0dXJuIG88aSYmKHI9bixuPWEsYT1yLHI9aSxpPW8sbz1y KSx0W25dPWUuZmxvb3IoaSksdFthXT1lLmNlaWwobyksdH1mdW5jdGlvbiB2 byh0KXtyZXR1cm4gdD97Zmxvb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgu Zmxvb3IoZS90KSp0fSxjZWlsOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmNl aWwoZS90KSp0fX06bW99dC5sYXlvdXQuaGlzdG9ncmFtPWZ1bmN0aW9uKCl7 dmFyIGU9ITAscj1OdW1iZXIsbj1aaSxhPVdpO2Z1bmN0aW9uIGkoaSxvKXtm b3IodmFyIHMsbCxjPVtdLHU9aS5tYXAocix0aGlzKSxoPW4uY2FsbCh0aGlz LHUsbyksZj1hLmNhbGwodGhpcyxoLHUsbykscD0obz0tMSx1Lmxlbmd0aCks ZD1mLmxlbmd0aC0xLGc9ZT8xOjEvcDsrK288ZDspKHM9Y1tvXT1bXSkuZHg9 ZltvKzFdLShzLng9ZltvXSkscy55PTA7aWYoZD4wKWZvcihvPS0xOysrbzxw OykobD11W29dKT49aFswXSYmbDw9aFsxXSYmKChzPWNbdC5iaXNlY3QoZixs LDEsZCktMV0pLnkrPWcscy5wdXNoKGlbb10pKTtyZXR1cm4gY31yZXR1cm4g aS52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o cj10LGkpOnJ9LGkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KG49dmUodCksaSk6bn0saS5iaW5zPWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJudW1iZXIiPT10eXBlb2YgdD9m dW5jdGlvbihlKXtyZXR1cm4gWGkoZSx0KX06dmUodCksaSk6YX0saS5mcmVx dWVuY3k9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9 ISF0LGkpOmV9LGl9LHQubGF5b3V0LnBhY2s9ZnVuY3Rpb24oKXt2YXIgZSxy PXQubGF5b3V0LmhpZXJhcmNoeSgpLnNvcnQoSmkpLG49MCxhPVsxLDFdO2Z1 bmN0aW9uIGkodCxpKXt2YXIgbz1yLmNhbGwodGhpcyx0LGkpLHM9b1swXSxs PWFbMF0sYz1hWzFdLHU9bnVsbD09ZT9NYXRoLnNxcnQ6ImZ1bmN0aW9uIj09 dHlwZW9mIGU/ZTpmdW5jdGlvbigpe3JldHVybiBlfTtpZihzLng9cy55PTAs UGkocyxmdW5jdGlvbih0KXt0LnI9K3UodC52YWx1ZSl9KSxQaShzLHRvKSxu KXt2YXIgaD1uKihlPzE6TWF0aC5tYXgoMipzLnIvbCwyKnMuci9jKSkvMjtQ aShzLGZ1bmN0aW9uKHQpe3Qucis9aH0pLFBpKHMsdG8pLFBpKHMsZnVuY3Rp b24odCl7dC5yLT1ofSl9cmV0dXJuIGZ1bmN0aW9uIHQoZSxyLG4sYSl7dmFy IGk9ZS5jaGlsZHJlbjtlLng9cis9YSplLng7ZS55PW4rPWEqZS55O2Uucio9 YTtpZihpKWZvcih2YXIgbz0tMSxzPWkubGVuZ3RoOysrbzxzOyl0KGlbb10s cixuLGEpfShzLGwvMixjLzIsZT8xOjEvTWF0aC5tYXgoMipzLnIvbCwyKnMu ci9jKSksb31yZXR1cm4gaS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhhPXQsaSk6YX0saS5yYWRpdXM9ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dHx8ImZ1bmN0aW9u Ij09dHlwZW9mIHQ/dDordCxpKTplfSxpLnBhZGRpbmc9ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsaSk6bn0sTGkoaSxyKX0s dC5sYXlvdXQudHJlZT1mdW5jdGlvbigpe3ZhciBlPXQubGF5b3V0LmhpZXJh cmNoeSgpLnNvcnQobnVsbCkudmFsdWUobnVsbCkscj1hbyxuPVsxLDFdLGE9 bnVsbDtmdW5jdGlvbiBpKHQsaSl7dmFyIGM9ZS5jYWxsKHRoaXMsdCxpKSx1 PWNbMF0saD1mdW5jdGlvbih0KXt2YXIgZSxyPXtBOm51bGwsY2hpbGRyZW46 W3RdfSxuPVtyXTtmb3IoO251bGwhPShlPW4ucG9wKCkpOylmb3IodmFyIGEs aT1lLmNoaWxkcmVuLG89MCxzPWkubGVuZ3RoO288czsrK28pbi5wdXNoKChp W29dPWE9e186aVtvXSxwYXJlbnQ6ZSxjaGlsZHJlbjooYT1pW29dLmNoaWxk cmVuKSYmYS5zbGljZSgpfHxbXSxBOm51bGwsYTpudWxsLHo6MCxtOjAsYzow LHM6MCx0Om51bGwsaTpvfSkuYT1hKTtyZXR1cm4gci5jaGlsZHJlblswXX0o dSk7aWYoUGkoaCxvKSxoLnBhcmVudC5tPS1oLnosQ2koaCxzKSxhKUNpKHUs bCk7ZWxzZXt2YXIgZj11LHA9dSxkPXU7Q2kodSxmdW5jdGlvbih0KXt0Lng8 Zi54JiYoZj10KSx0Lng+cC54JiYocD10KSx0LmRlcHRoPmQuZGVwdGgmJihk PXQpfSk7dmFyIGc9cihmLHApLzItZi54LHY9blswXS8ocC54K3IocCxmKS8y K2cpLG09blsxXS8oZC5kZXB0aHx8MSk7Q2kodSxmdW5jdGlvbih0KXt0Lng9 KHQueCtnKSp2LHQueT10LmRlcHRoKm19KX1yZXR1cm4gY31mdW5jdGlvbiBv KHQpe3ZhciBlPXQuY2hpbGRyZW4sbj10LnBhcmVudC5jaGlsZHJlbixhPXQu aT9uW3QuaS0xXTpudWxsO2lmKGUubGVuZ3RoKXshZnVuY3Rpb24odCl7dmFy IGUscj0wLG49MCxhPXQuY2hpbGRyZW4saT1hLmxlbmd0aDtmb3IoOy0taT49 MDspKGU9YVtpXSkueis9cixlLm0rPXIscis9ZS5zKyhuKz1lLmMpfSh0KTt2 YXIgaT0oZVswXS56K2VbZS5sZW5ndGgtMV0ueikvMjthPyh0Lno9YS56K3Io dC5fLGEuXyksdC5tPXQuei1pKTp0Lno9aX1lbHNlIGEmJih0Lno9YS56K3Io dC5fLGEuXykpO3QucGFyZW50LkE9ZnVuY3Rpb24odCxlLG4pe2lmKGUpe2Zv cih2YXIgYSxpPXQsbz10LHM9ZSxsPWkucGFyZW50LmNoaWxkcmVuWzBdLGM9 aS5tLHU9by5tLGg9cy5tLGY9bC5tO3M9b28ocyksaT1pbyhpKSxzJiZpOyls PWlvKGwpLChvPW9vKG8pKS5hPXQsKGE9cy56K2gtaS56LWMrcihzLl8saS5f KSk+MCYmKHNvKGxvKHMsdCxuKSx0LGEpLGMrPWEsdSs9YSksaCs9cy5tLGMr PWkubSxmKz1sLm0sdSs9by5tO3MmJiFvbyhvKSYmKG8udD1zLG8ubSs9aC11 KSxpJiYhaW8obCkmJihsLnQ9aSxsLm0rPWMtZixuPXQpfXJldHVybiBufSh0 LGEsdC5wYXJlbnQuQXx8blswXSl9ZnVuY3Rpb24gcyh0KXt0Ll8ueD10Lnor dC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gbCh0KXt0Lngq PW5bMF0sdC55PXQuZGVwdGgqblsxXX1yZXR1cm4gaS5zZXBhcmF0aW9uPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaSk6cn0s aS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhh PW51bGw9PShuPXQpP2w6bnVsbCxpKTphP251bGw6bn0saS5ub2RlU2l6ZT1m dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1udWxsPT0o bj10KT9udWxsOmwsaSk6YT9uOm51bGx9LExpKGksZSl9LHQubGF5b3V0LmNs dXN0ZXI9ZnVuY3Rpb24oKXt2YXIgZT10LmxheW91dC5oaWVyYXJjaHkoKS5z b3J0KG51bGwpLnZhbHVlKG51bGwpLHI9YW8sbj1bMSwxXSxhPSExO2Z1bmN0 aW9uIGkoaSxvKXt2YXIgcyxsPWUuY2FsbCh0aGlzLGksbyksYz1sWzBdLHU9 MDtQaShjLGZ1bmN0aW9uKGUpe3ZhciBuPWUuY2hpbGRyZW47biYmbi5sZW5n dGg/KGUueD1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24o dCxlKXtyZXR1cm4gdCtlLnh9LDApL3QubGVuZ3RofShuKSxlLnk9ZnVuY3Rp b24oZSl7cmV0dXJuIDErdC5tYXgoZSxmdW5jdGlvbih0KXtyZXR1cm4gdC55 fSl9KG4pKTooZS54PXM/dSs9cihlLHMpOjAsZS55PTAscz1lKX0pO3ZhciBo PWZ1bmN0aW9uIHQoZSl7dmFyIHI9ZS5jaGlsZHJlbjtyZXR1cm4gciYmci5s ZW5ndGg/dChyWzBdKTplfShjKSxmPWZ1bmN0aW9uIHQoZSl7dmFyIHIsbj1l LmNoaWxkcmVuO3JldHVybiBuJiYocj1uLmxlbmd0aCk/dChuW3ItMV0pOmV9 KGMpLHA9aC54LXIoaCxmKS8yLGQ9Zi54K3IoZixoKS8yO3JldHVybiBQaShj LGE/ZnVuY3Rpb24odCl7dC54PSh0LngtYy54KSpuWzBdLHQueT0oYy55LXQu eSkqblsxXX06ZnVuY3Rpb24odCl7dC54PSh0LngtcCkvKGQtcCkqblswXSx0 Lnk9KDEtKGMueT90LnkvYy55OjEpKSpuWzFdfSksbH1yZXR1cm4gaS5zZXBh cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhy PXQsaSk6cn0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhhPW51bGw9PShuPXQpLGkpOmE/bnVsbDpufSxpLm5vZGVTaXpl PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW51bGwh PShuPXQpLGkpOmE/bjpudWxsfSxMaShpLGUpfSx0LmxheW91dC50cmVlbWFw PWZ1bmN0aW9uKCl7dmFyIGUscj10LmxheW91dC5oaWVyYXJjaHkoKSxuPU1h dGgucm91bmQsYT1bMSwxXSxpPW51bGwsbz1jbyxzPSExLGw9InNxdWFyaWZ5 IixjPS41KigxK01hdGguc3FydCg1KSk7ZnVuY3Rpb24gdSh0LGUpe2Zvcih2 YXIgcixuLGE9LTEsaT10Lmxlbmd0aDsrK2E8aTspbj0ocj10W2FdKS52YWx1 ZSooZTwwPzA6ZSksci5hcmVhPWlzTmFOKG4pfHxuPD0wPzA6bn1mdW5jdGlv biBoKHQpe3ZhciBlPXQuY2hpbGRyZW47aWYoZSYmZS5sZW5ndGgpe3ZhciBy LG4sYSxpPW8odCkscz1bXSxjPWUuc2xpY2UoKSxmPTEvMCxnPSJzbGljZSI9 PT1sP2kuZHg6ImRpY2UiPT09bD9pLmR5OiJzbGljZS1kaWNlIj09PWw/MSZ0 LmRlcHRoP2kuZHk6aS5keDpNYXRoLm1pbihpLmR4LGkuZHkpO2Zvcih1KGMs aS5keCppLmR5L3QudmFsdWUpLHMuYXJlYT0wOyhhPWMubGVuZ3RoKT4wOylz LnB1c2gocj1jW2EtMV0pLHMuYXJlYSs9ci5hcmVhLCJzcXVhcmlmeSIhPT1s fHwobj1wKHMsZykpPD1mPyhjLnBvcCgpLGY9bik6KHMuYXJlYS09cy5wb3Ao KS5hcmVhLGQocyxnLGksITEpLGc9TWF0aC5taW4oaS5keCxpLmR5KSxzLmxl bmd0aD1zLmFyZWE9MCxmPTEvMCk7cy5sZW5ndGgmJihkKHMsZyxpLCEwKSxz Lmxlbmd0aD1zLmFyZWE9MCksZS5mb3JFYWNoKGgpfX1mdW5jdGlvbiBmKHQp e3ZhciBlPXQuY2hpbGRyZW47aWYoZSYmZS5sZW5ndGgpe3ZhciByLG49byh0 KSxhPWUuc2xpY2UoKSxpPVtdO2Zvcih1KGEsbi5keCpuLmR5L3QudmFsdWUp LGkuYXJlYT0wO3I9YS5wb3AoKTspaS5wdXNoKHIpLGkuYXJlYSs9ci5hcmVh LG51bGwhPXIueiYmKGQoaSxyLno/bi5keDpuLmR5LG4sIWEubGVuZ3RoKSxp Lmxlbmd0aD1pLmFyZWE9MCk7ZS5mb3JFYWNoKGYpfX1mdW5jdGlvbiBwKHQs ZSl7Zm9yKHZhciByLG49dC5hcmVhLGE9MCxpPTEvMCxvPS0xLHM9dC5sZW5n dGg7KytvPHM7KShyPXRbb10uYXJlYSkmJihyPGkmJihpPXIpLHI+YSYmKGE9 cikpO3JldHVybiBlKj1lLChuKj1uKT9NYXRoLm1heChlKmEqYy9uLG4vKGUq aSpjKSk6MS8wfWZ1bmN0aW9uIGQodCxlLHIsYSl7dmFyIGksbz0tMSxzPXQu bGVuZ3RoLGw9ci54LGM9ci55LHU9ZT9uKHQuYXJlYS9lKTowO2lmKGU9PXIu ZHgpe2ZvcigoYXx8dT5yLmR5KSYmKHU9ci5keSk7KytvPHM7KShpPXRbb10p Lng9bCxpLnk9YyxpLmR5PXUsbCs9aS5keD1NYXRoLm1pbihyLngrci5keC1s LHU/bihpLmFyZWEvdSk6MCk7aS56PSEwLGkuZHgrPXIueCtyLmR4LWwsci55 Kz11LHIuZHktPXV9ZWxzZXtmb3IoKGF8fHU+ci5keCkmJih1PXIuZHgpOysr bzxzOykoaT10W29dKS54PWwsaS55PWMsaS5keD11LGMrPWkuZHk9TWF0aC5t aW4oci55K3IuZHktYyx1P24oaS5hcmVhL3UpOjApO2kuej0hMSxpLmR5Kz1y Lnkrci5keS1jLHIueCs9dSxyLmR4LT11fX1mdW5jdGlvbiBnKHQpe3ZhciBu PWV8fHIodCksaT1uWzBdO3JldHVybiBpLng9aS55PTAsaS52YWx1ZT8oaS5k eD1hWzBdLGkuZHk9YVsxXSk6aS5keD1pLmR5PTAsZSYmci5yZXZhbHVlKGkp LHUoW2ldLGkuZHgqaS5keS9pLnZhbHVlKSwoZT9mOmgpKGkpLHMmJihlPW4p LG59cmV0dXJuIGcuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8oYT10LGcpOmF9LGcucGFkZGluZz1mdW5jdGlvbih0KXtpZigh YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gaTtmdW5jdGlvbiBlKGUpe3JldHVy biB1byhlLHQpfXZhciByO3JldHVybiBvPW51bGw9PShpPXQpP2NvOiJmdW5j dGlvbiI9PShyPXR5cGVvZiB0KT9mdW5jdGlvbihlKXt2YXIgcj10LmNhbGwo ZyxlLGUuZGVwdGgpO3JldHVybiBudWxsPT1yP2NvKGUpOnVvKGUsIm51bWJl ciI9PXR5cGVvZiByP1tyLHIscixyXTpyKX06Im51bWJlciI9PT1yPyh0PVt0 LHQsdCx0XSxlKTplLGd9LGcucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KG49dD9NYXRoLnJvdW5kOk51bWJlcixnKTpuIT1O dW1iZXJ9LGcuc3RpY2t5PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhzPXQsZT1udWxsLGcpOnN9LGcucmF0aW89ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxnKTpjfSxnLm1vZGU9ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dCsiIixnKTps fSxMaShnLHIpfSx0LnJhbmRvbT17bm9ybWFsOmZ1bmN0aW9uKHQsZSl7dmFy IHI9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcjwyJiYoZT0xKSxyPDEmJih0 PTApLGZ1bmN0aW9uKCl7dmFyIHIsbixhO2Rve2E9KHI9MipNYXRoLnJhbmRv bSgpLTEpKnIrKG49MipNYXRoLnJhbmRvbSgpLTEpKm59d2hpbGUoIWF8fGE+ MSk7cmV0dXJuIHQrZSpyKk1hdGguc3FydCgtMipNYXRoLmxvZyhhKS9hKX19 LGxvZ05vcm1hbDpmdW5jdGlvbigpe3ZhciBlPXQucmFuZG9tLm5vcm1hbC5h cHBseSh0LGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1h dGguZXhwKGUoKSl9fSxiYXRlczpmdW5jdGlvbihlKXt2YXIgcj10LnJhbmRv bS5pcndpbkhhbGwoZSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIoKS9l fX0saXJ3aW5IYWxsOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2Zv cih2YXIgZT0wLHI9MDtyPHQ7cisrKWUrPU1hdGgucmFuZG9tKCk7cmV0dXJu IGV9fX0sdC5zY2FsZT17fTt2YXIgbW89e2Zsb29yOlAsY2VpbDpQfTtmdW5j dGlvbiB5byhlLHIsbixhKXt2YXIgaT1bXSxvPVtdLHM9MCxsPU1hdGgubWlu KGUubGVuZ3RoLHIubGVuZ3RoKS0xO2ZvcihlW2xdPGVbMF0mJihlPWUuc2xp Y2UoKS5yZXZlcnNlKCkscj1yLnNsaWNlKCkucmV2ZXJzZSgpKTsrK3M8PWw7 KWkucHVzaChuKGVbcy0xXSxlW3NdKSksby5wdXNoKGEocltzLTFdLHJbc10p KTtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49dC5iaXNlY3QoZSxyLDEsbCkt MTtyZXR1cm4gb1tuXShpW25dKHIpKX19ZnVuY3Rpb24geG8oZSxyKXtyZXR1 cm4gdC5yZWJpbmQoZSxyLCJyYW5nZSIsInJhbmdlUm91bmQiLCJpbnRlcnBv bGF0ZSIsImNsYW1wIil9ZnVuY3Rpb24gYm8odCxlKXtyZXR1cm4gZ28odCx2 byhfbyh0LGUpWzJdKSksZ28odCx2byhfbyh0LGUpWzJdKSksdH1mdW5jdGlv biBfbyh0LGUpe251bGw9PWUmJihlPTEwKTt2YXIgcj1obyh0KSxuPXJbMV0t clswXSxhPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cobi9lKS9N YXRoLkxOMTApKSxpPWUvbiphO3JldHVybiBpPD0uMTU/YSo9MTA6aTw9LjM1 P2EqPTU6aTw9Ljc1JiYoYSo9MiksclswXT1NYXRoLmNlaWwoclswXS9hKSph LHJbMV09TWF0aC5mbG9vcihyWzFdL2EpKmErLjUqYSxyWzJdPWEscn1mdW5j dGlvbiB3byhlLHIpe3JldHVybiB0LnJhbmdlLmFwcGx5KHQsX28oZSxyKSl9 ZnVuY3Rpb24ga28oZSxyLG4pe3ZhciBhPV9vKGUscik7aWYobil7dmFyIGk9 UGUuZXhlYyhuKTtpZihpLnNoaWZ0KCksInMiPT09aVs4XSl7dmFyIG89dC5m b3JtYXRQcmVmaXgoTWF0aC5tYXgoeShhWzBdKSx5KGFbMV0pKSk7cmV0dXJu IGlbN118fChpWzddPSIuIitNbyhvLnNjYWxlKGFbMl0pKSksaVs4XT0iZiIs bj10LmZvcm1hdChpLmpvaW4oIiIpKSxmdW5jdGlvbih0KXtyZXR1cm4gbihv LnNjYWxlKHQpKStvLnN5bWJvbH19aVs3XXx8KGlbN109Ii4iK2Z1bmN0aW9u KHQsZSl7dmFyIHI9TW8oZVsyXSk7cmV0dXJuIHQgaW4gVG8/TWF0aC5hYnMo ci1NbyhNYXRoLm1heCh5KGVbMF0pLHkoZVsxXSkpKSkrICsoImUiIT09dCk6 ci0yKigiJSI9PT10KX0oaVs4XSxhKSksbj1pLmpvaW4oIiIpfWVsc2Ugbj0i LC4iK01vKGFbMl0pKyJmIjtyZXR1cm4gdC5mb3JtYXQobil9dC5zY2FsZS5s aW5lYXI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbixhKXt2 YXIgaSxvO2Z1bmN0aW9uIHMoKXt2YXIgdD1NYXRoLm1pbihlLmxlbmd0aCxy Lmxlbmd0aCk+Mj95bzpwbyxzPWE/eGk6eWk7cmV0dXJuIGk9dChlLHIscyxu KSxvPXQocixlLHMsS2EpLGx9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gaSh0KX1s LmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gbyh0KX07bC5kb21haW49ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dC5tYXAoTnVt YmVyKSxzKCkpOmV9O2wucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KHI9dCxzKCkpOnJ9O2wucmFuZ2VSb3VuZD1mdW5jdGlv bih0KXtyZXR1cm4gbC5yYW5nZSh0KS5pbnRlcnBvbGF0ZShoaSl9O2wuY2xh bXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxz KCkpOmF9O2wuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KG49dCxzKCkpOm59O2wudGlja3M9ZnVuY3Rpb24odCl7 cmV0dXJuIHdvKGUsdCl9O2wudGlja0Zvcm1hdD1mdW5jdGlvbih0LHIpe3Jl dHVybiBrbyhlLHQscil9O2wubmljZT1mdW5jdGlvbih0KXtyZXR1cm4gYm8o ZSx0KSxzKCl9O2wuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUscixuLGEp fTtyZXR1cm4gcygpfShbMCwxXSxbMCwxXSxLYSwhMSl9O3ZhciBUbz17czox LGc6MSxwOjEscjoxLGU6MX07ZnVuY3Rpb24gTW8odCl7cmV0dXJuLU1hdGgu Zmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjEwKy4wMSl9dC5zY2FsZS5sb2c9 ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZShyLG4sYSxpKXtmdW5jdGlv biBvKHQpe3JldHVybihhP01hdGgubG9nKHQ8MD8wOnQpOi1NYXRoLmxvZyh0 PjA/MDotdCkpL01hdGgubG9nKG4pfWZ1bmN0aW9uIHModCl7cmV0dXJuIGE/ TWF0aC5wb3cobix0KTotTWF0aC5wb3cobiwtdCl9ZnVuY3Rpb24gbCh0KXty ZXR1cm4gcihvKHQpKX1sLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gcyhy LmludmVydCh0KSl9O2wuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhhPXRbMF0+PTAsci5kb21haW4oKGk9dC5tYXAoTnVt YmVyKSkubWFwKG8pKSxsKTppfTtsLmJhc2U9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qsci5kb21haW4oaS5tYXAobykpLGwp Om59O2wubmljZT1mdW5jdGlvbigpe3ZhciB0PWdvKGkubWFwKG8pLGE/TWF0 aDpTbyk7cmV0dXJuIHIuZG9tYWluKHQpLGk9dC5tYXAocyksbH07bC50aWNr cz1mdW5jdGlvbigpe3ZhciB0PWhvKGkpLGU9W10scj10WzBdLGw9dFsxXSxj PU1hdGguZmxvb3IobyhyKSksdT1NYXRoLmNlaWwobyhsKSksaD1uJTE/Mjpu O2lmKGlzRmluaXRlKHUtYykpe2lmKGEpe2Zvcig7Yzx1O2MrKylmb3IodmFy IGY9MTtmPGg7ZisrKWUucHVzaChzKGMpKmYpO2UucHVzaChzKGMpKX1lbHNl IGZvcihlLnB1c2gocyhjKSk7YysrPHU7KWZvcih2YXIgZj1oLTE7Zj4wO2Yt LSllLnB1c2gocyhjKSpmKTtmb3IoYz0wO2VbY108cjtjKyspO2Zvcih1PWUu bGVuZ3RoO2VbdS0xXT5sO3UtLSk7ZT1lLnNsaWNlKGMsdSl9cmV0dXJuIGV9 O2wudGlja0Zvcm1hdD1mdW5jdGlvbihlLHIpe2lmKCFhcmd1bWVudHMubGVu Z3RoKXJldHVybiBBbzthcmd1bWVudHMubGVuZ3RoPDI/cj1BbzoiZnVuY3Rp b24iIT10eXBlb2YgciYmKHI9dC5mb3JtYXQocikpO3ZhciBhPU1hdGgubWF4 KDEsbiplL2wudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2 YXIgZT10L3MoTWF0aC5yb3VuZChvKHQpKSk7cmV0dXJuIGUqbjxuLS41JiYo ZSo9biksZTw9YT9yKHQpOiIifX07bC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJu IGUoci5jb3B5KCksbixhLGkpfTtyZXR1cm4geG8obCxyKX0odC5zY2FsZS5s aW5lYXIoKS5kb21haW4oWzAsMV0pLDEwLCEwLFsxLDEwXSl9O3ZhciBBbz10 LmZvcm1hdCgiLjBlIiksU289e2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybi1N YXRoLmNlaWwoLXQpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybi1NYXRoLmZs b29yKC10KX19O2Z1bmN0aW9uIEVvKHQpe3JldHVybiBmdW5jdGlvbihlKXty ZXR1cm4gZTwwPy1NYXRoLnBvdygtZSx0KTpNYXRoLnBvdyhlLHQpfX10LnNj YWxlLnBvdz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB0KGUscixuKXt2 YXIgYT1FbyhyKSxpPUVvKDEvcik7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZShh KHQpKX1vLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gaShlLmludmVydCh0 KSl9O28uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhlLmRvbWFpbigobj10Lm1hcChOdW1iZXIpKS5tYXAoYSkpLG8pOm59 O28udGlja3M9ZnVuY3Rpb24odCl7cmV0dXJuIHdvKG4sdCl9O28udGlja0Zv cm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBrbyhuLHQsZSl9O28ubmljZT1m dW5jdGlvbih0KXtyZXR1cm4gby5kb21haW4oYm8obix0KSl9O28uZXhwb25l bnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9RW8o cj10KSxpPUVvKDEvciksZS5kb21haW4obi5tYXAoYSkpLG8pOnJ9O28uY29w eT1mdW5jdGlvbigpe3JldHVybiB0KGUuY29weSgpLHIsbil9O3JldHVybiB4 byhvLGUpfSh0LnNjYWxlLmxpbmVhcigpLDEsWzAsMV0pfSx0LnNjYWxlLnNx cnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5zY2FsZS5wb3coKS5leHBvbmVudCgu NSl9LHQuc2NhbGUub3JkaW5hbD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlv biBlKHIsbil7dmFyIGEsaSxvO2Z1bmN0aW9uIHModCl7cmV0dXJuIGlbKChh LmdldCh0KXx8KCJyYW5nZSI9PT1uLnQ/YS5zZXQodCxyLnB1c2godCkpOk5h TikpLTEpJWkubGVuZ3RoXX1mdW5jdGlvbiBsKGUsbil7cmV0dXJuIHQucmFu Z2Uoci5sZW5ndGgpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZStuKnR9KX1z LmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1 cm4gcjtyPVtdLGE9bmV3IGI7Zm9yKHZhciBlLGk9LTEsbz10Lmxlbmd0aDsr K2k8bzspYS5oYXMoZT10W2ldKXx8YS5zZXQoZSxyLnB1c2goZSkpO3JldHVy biBzW24udF0uYXBwbHkocyxuLmEpfTtzLnJhbmdlPWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsbz0wLG49e3Q6InJhbmdlIixh OmFyZ3VtZW50c30scyk6aX07cy5yYW5nZVBvaW50cz1mdW5jdGlvbih0LGUp e2FyZ3VtZW50cy5sZW5ndGg8MiYmKGU9MCk7dmFyIGE9dFswXSxjPXRbMV0s dT1yLmxlbmd0aDwyPyhhPShhK2MpLzIsMCk6KGMtYSkvKHIubGVuZ3RoLTEr ZSk7cmV0dXJuIGk9bChhK3UqZS8yLHUpLG89MCxuPXt0OiJyYW5nZVBvaW50 cyIsYTphcmd1bWVudHN9LHN9O3MucmFuZ2VSb3VuZFBvaW50cz1mdW5jdGlv bih0LGUpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKGU9MCk7dmFyIGE9dFswXSxj PXRbMV0sdT1yLmxlbmd0aDwyPyhhPWM9TWF0aC5yb3VuZCgoYStjKS8yKSww KTooYy1hKS8oci5sZW5ndGgtMStlKXwwO3JldHVybiBpPWwoYStNYXRoLnJv dW5kKHUqZS8yKyhjLWEtKHIubGVuZ3RoLTErZSkqdSkvMiksdSksbz0wLG49 e3Q6InJhbmdlUm91bmRQb2ludHMiLGE6YXJndW1lbnRzfSxzfTtzLnJhbmdl QmFuZHM9ZnVuY3Rpb24odCxlLGEpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKGU9 MCksYXJndW1lbnRzLmxlbmd0aDwzJiYoYT1lKTt2YXIgYz10WzFdPHRbMF0s dT10W2MtMF0saD10WzEtY10sZj0oaC11KS8oci5sZW5ndGgtZSsyKmEpO3Jl dHVybiBpPWwodStmKmEsZiksYyYmaS5yZXZlcnNlKCksbz1mKigxLWUpLG49 e3Q6InJhbmdlQmFuZHMiLGE6YXJndW1lbnRzfSxzfTtzLnJhbmdlUm91bmRC YW5kcz1mdW5jdGlvbih0LGUsYSl7YXJndW1lbnRzLmxlbmd0aDwyJiYoZT0w KSxhcmd1bWVudHMubGVuZ3RoPDMmJihhPWUpO3ZhciBjPXRbMV08dFswXSx1 PXRbYy0wXSxoPXRbMS1jXSxmPU1hdGguZmxvb3IoKGgtdSkvKHIubGVuZ3Ro LWUrMiphKSk7cmV0dXJuIGk9bCh1K01hdGgucm91bmQoKGgtdS0oci5sZW5n dGgtZSkqZikvMiksZiksYyYmaS5yZXZlcnNlKCksbz1NYXRoLnJvdW5kKGYq KDEtZSkpLG49e3Q6InJhbmdlUm91bmRCYW5kcyIsYTphcmd1bWVudHN9LHN9 O3MucmFuZ2VCYW5kPWZ1bmN0aW9uKCl7cmV0dXJuIG99O3MucmFuZ2VFeHRl bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gaG8obi5hWzBdKX07cy5jb3B5PWZ1bmN0 aW9uKCl7cmV0dXJuIGUocixuKX07cmV0dXJuIHMuZG9tYWluKHIpfShbXSx7 dDoicmFuZ2UiLGE6W1tdXX0pfSx0LnNjYWxlLmNhdGVnb3J5MTA9ZnVuY3Rp b24oKXtyZXR1cm4gdC5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoTG8pfSx0LnNj YWxlLmNhdGVnb3J5MjA9ZnVuY3Rpb24oKXtyZXR1cm4gdC5zY2FsZS5vcmRp bmFsKCkucmFuZ2UoQ28pfSx0LnNjYWxlLmNhdGVnb3J5MjBiPWZ1bmN0aW9u KCl7cmV0dXJuIHQuc2NhbGUub3JkaW5hbCgpLnJhbmdlKFBvKX0sdC5zY2Fs ZS5jYXRlZ29yeTIwYz1mdW5jdGlvbigpe3JldHVybiB0LnNjYWxlLm9yZGlu YWwoKS5yYW5nZShPbyl9O3ZhciBMbz1bMjA2MjI2MCwxNjc0NDIwNiwyOTI0 NTg4LDE0MDM0NzI4LDk3MjU4ODUsOTE5NzEzMSwxNDkwNzMzMCw4MzU1NzEx LDEyMzY5MTg2LDE1NTYxNzVdLm1hcChzZSksQ289WzIwNjIyNjAsMTE0NTQ0 NDAsMTY3NDQyMDYsMTY3NTk2NzIsMjkyNDU4OCwxMDAxODY5OCwxNDAzNDcy OCwxNjc1MDc0Miw5NzI1ODg1LDEyOTU1ODYxLDkxOTcxMzEsMTI4ODUxNDAs MTQ5MDczMzAsMTYyMzQxOTQsODM1NTcxMSwxMzA5MjgwNywxMjM2OTE4Niwx NDQwODU4OSwxNTU2MTc1LDEwNDEwNzI1XS5tYXAoc2UpLFBvPVszNzUwNzc3 LDUzOTU2MTksNzA0MDcxOSwxMDI2NDI4Niw2NTE5MDk3LDkyMTY1OTQsMTE5 MTUxMTUsMTM1NTY2MzYsOTIwMjk5MywxMjQyNjgwOSwxNTE4NjUxNCwxNTE5 MDkzMiw4NjY2MTY5LDExMzU2NDkwLDE0MDQ5NjQzLDE1MTc3MzcyLDgwNzc2 ODMsMTA4MzQzMjQsMTM1Mjg1MDksMTQ1ODk2NTRdLm1hcChzZSksT289WzMy NDQ3MzMsNzA1NzExMCwxMDQwNjYyNSwxMzAzMjQzMSwxNTA5NTA1MywxNjYx Njc2NCwxNjYyNTI1OSwxNjYzNDAxOCwzMjUzMDc2LDc2NTI0NzAsMTA2MDcw MDMsMTMxMDE1MDQsNzY5NTI4MSwxMDM5NDMxMiwxMjM2OTM3MiwxNDM0Mjg5 MSw2NTEzNTA3LDk4Njg5NTAsMTI0MzQ4NzcsMTQyNzcwODFdLm1hcChzZSk7 ZnVuY3Rpb24gem8oKXtyZXR1cm4gMH10LnNjYWxlLnF1YW50aWxlPWZ1bmN0 aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUocixuKXt2YXIgYTtmdW5jdGlvbiBp KCl7dmFyIGU9MCxpPW4ubGVuZ3RoO2ZvcihhPVtdOysrZTxpOylhW2UtMV09 dC5xdWFudGlsZShyLGUvaSk7cmV0dXJuIG99ZnVuY3Rpb24gbyhlKXtpZigh aXNOYU4oZT0rZSkpcmV0dXJuIG5bdC5iaXNlY3QoYSxlKV19by5kb21haW49 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dC5tYXAo cCkuZmlsdGVyKGQpLnNvcnQoZiksaSgpKTpyfTtvLnJhbmdlPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsaSgpKTpufTtvLnF1 YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiBhfTtvLmludmVydEV4dGVudD1m dW5jdGlvbih0KXtyZXR1cm4odD1uLmluZGV4T2YodCkpPDA/W05hTixOYU5d Olt0PjA/YVt0LTFdOnJbMF0sdDxhLmxlbmd0aD9hW3RdOnJbci5sZW5ndGgt MV1dfTtvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZShyLG4pfTtyZXR1cm4g aSgpfShbXSxbXSl9LHQuc2NhbGUucXVhbnRpemU9ZnVuY3Rpb24oKXtyZXR1 cm4gZnVuY3Rpb24gdChlLHIsbil7dmFyIGEsaTtmdW5jdGlvbiBvKHQpe3Jl dHVybiBuW01hdGgubWF4KDAsTWF0aC5taW4oaSxNYXRoLmZsb29yKGEqKHQt ZSkpKSldfWZ1bmN0aW9uIHMoKXtyZXR1cm4gYT1uLmxlbmd0aC8oci1lKSxp PW4ubGVuZ3RoLTEsb31vLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8oZT0rdFswXSxyPSt0W3QubGVuZ3RoLTFdLHMoKSk6 W2Uscl19O28ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/KG49dCxzKCkpOm59O28uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQp e3JldHVyblt0PSh0PW4uaW5kZXhPZih0KSk8MD9OYU46dC9hK2UsdCsxL2Fd fTtvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdChlLHIsbil9O3JldHVybiBz KCl9KDAsMSxbMCwxXSl9LHQuc2NhbGUudGhyZXNob2xkPWZ1bmN0aW9uKCl7 cmV0dXJuIGZ1bmN0aW9uIGUocixuKXtmdW5jdGlvbiBhKGUpe2lmKGU8PWUp cmV0dXJuIG5bdC5iaXNlY3QocixlKV19YS5kb21haW49ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxhKTpyfTthLnJhbmdlPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsYSk6bn07 YS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bi5pbmRleE9m KHQpLFtyW3QtMV0sclt0XV19O2EuY29weT1mdW5jdGlvbigpe3JldHVybiBl KHIsbil9O3JldHVybiBhfShbLjVdLFswLDFdKX0sdC5zY2FsZS5pZGVudGl0 eT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIo dCl7cmV0dXJuK3R9ci5pbnZlcnQ9cjtyLmRvbWFpbj1yLnJhbmdlPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQubWFwKHIpLHIp OmV9O3IudGlja3M9ZnVuY3Rpb24odCl7cmV0dXJuIHdvKGUsdCl9O3IudGlj a0Zvcm1hdD1mdW5jdGlvbih0LHIpe3JldHVybiBrbyhlLHQscil9O3IuY29w eT1mdW5jdGlvbigpe3JldHVybiB0KGUpfTtyZXR1cm4gcn0oWzAsMV0pfSx0 LnN2Zz17fSx0LnN2Zy5hcmM9ZnVuY3Rpb24oKXt2YXIgdD1EbyxlPVJvLHI9 em8sbj1JbyxhPUZvLGk9Qm8sbz1ObztmdW5jdGlvbiBzKCl7dmFyIHM9TWF0 aC5tYXgoMCwrdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGM9TWF0aC5tYXgo MCwrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHU9YS5hcHBseSh0aGlzLGFy Z3VtZW50cyktRXQsaD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1FdCxmPU1h dGguYWJzKGgtdSkscD11Pmg/MDoxO2lmKGM8cyYmKGQ9YyxjPXMscz1kKSxm Pj1TdClyZXR1cm4gbChjLHApKyhzP2wocywxLXApOiIiKSsiWiI7dmFyIGQs Zyx2LG0seSx4LGIsXyx3LGssVCxNLEE9MCxTPTAsRT1bXTtpZigobT0oK28u YXBwbHkodGhpcyxhcmd1bWVudHMpfHwwKS8yKSYmKHY9bj09PUlvP01hdGgu c3FydChzKnMrYypjKTorbi5hcHBseSh0aGlzLGFyZ3VtZW50cykscHx8KFMq PS0xKSxjJiYoUz1JdCh2L2MqTWF0aC5zaW4obSkpKSxzJiYoQT1JdCh2L3Mq TWF0aC5zaW4obSkpKSksYyl7eT1jKk1hdGguY29zKHUrUykseD1jKk1hdGgu c2luKHUrUyksYj1jKk1hdGguY29zKGgtUyksXz1jKk1hdGguc2luKGgtUyk7 dmFyIEw9TWF0aC5hYnMoaC11LTIqUyk8PU10PzA6MTtpZihTJiZqbyh5LHgs YixfKT09PXBeTCl7dmFyIEM9KHUraCkvMjt5PWMqTWF0aC5jb3MoQykseD1j Kk1hdGguc2luKEMpLGI9Xz1udWxsfX1lbHNlIHk9eD0wO2lmKHMpe3c9cypN YXRoLmNvcyhoLUEpLGs9cypNYXRoLnNpbihoLUEpLFQ9cypNYXRoLmNvcyh1 K0EpLE09cypNYXRoLnNpbih1K0EpO3ZhciBQPU1hdGguYWJzKHUtaCsyKkEp PD1NdD8wOjE7aWYoQSYmam8odyxrLFQsTSk9PT0xLXBeUCl7dmFyIE89KHUr aCkvMjt3PXMqTWF0aC5jb3MoTyksaz1zKk1hdGguc2luKE8pLFQ9TT1udWxs fX1lbHNlIHc9az0wO2lmKGY+a3QmJihkPU1hdGgubWluKE1hdGguYWJzKGMt cykvMiwrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpKT4uMDAxKXtnPXM8Y15w PzA6MTt2YXIgej1kLEk9ZDtpZihmPE10KXt2YXIgRD1udWxsPT1UP1t3LGtd Om51bGw9PWI/W3kseF06Y2EoW3kseF0sW1QsTV0sW2IsX10sW3csa10pLFI9 eS1EWzBdLEY9eC1EWzFdLEI9Yi1EWzBdLE49Xy1EWzFdLGo9MS9NYXRoLnNp bihNYXRoLmFjb3MoKFIqQitGKk4pLyhNYXRoLnNxcnQoUipSK0YqRikqTWF0 aC5zcXJ0KEIqQitOKk4pKSkvMiksVj1NYXRoLnNxcnQoRFswXSpEWzBdK0Rb MV0qRFsxXSk7ST1NYXRoLm1pbihkLChzLVYpLyhqLTEpKSx6PU1hdGgubWlu KGQsKGMtVikvKGorMSkpfWlmKG51bGwhPWIpe3ZhciBVPVZvKG51bGw9PVQ/ W3csa106W1QsTV0sW3kseF0sYyx6LHApLHE9Vm8oW2IsX10sW3csa10sYyx6 LHApO2Q9PT16P0UucHVzaCgiTSIsVVswXSwiQSIseiwiLCIseiwiIDAgMCwi LGcsIiAiLFVbMV0sIkEiLGMsIiwiLGMsIiAwICIsMS1wXmpvKFVbMV1bMF0s VVsxXVsxXSxxWzFdWzBdLHFbMV1bMV0pLCIsIixwLCIgIixxWzFdLCJBIix6 LCIsIix6LCIgMCAwLCIsZywiICIscVswXSk6RS5wdXNoKCJNIixVWzBdLCJB Iix6LCIsIix6LCIgMCAxLCIsZywiICIscVswXSl9ZWxzZSBFLnB1c2goIk0i LHksIiwiLHgpO2lmKG51bGwhPVQpe3ZhciBIPVZvKFt5LHhdLFtULE1dLHMs LUkscCksRz1WbyhbdyxrXSxudWxsPT1iP1t5LHhdOltiLF9dLHMsLUkscCk7 ZD09PUk/RS5wdXNoKCJMIixHWzBdLCJBIixJLCIsIixJLCIgMCAwLCIsZywi ICIsR1sxXSwiQSIscywiLCIscywiIDAgIixwXmpvKEdbMV1bMF0sR1sxXVsx XSxIWzFdWzBdLEhbMV1bMV0pLCIsIiwxLXAsIiAiLEhbMV0sIkEiLEksIiwi LEksIiAwIDAsIixnLCIgIixIWzBdKTpFLnB1c2goIkwiLEdbMF0sIkEiLEks IiwiLEksIiAwIDAsIixnLCIgIixIWzBdKX1lbHNlIEUucHVzaCgiTCIsdywi LCIsayl9ZWxzZSBFLnB1c2goIk0iLHksIiwiLHgpLG51bGwhPWImJkUucHVz aCgiQSIsYywiLCIsYywiIDAgIixMLCIsIixwLCIgIixiLCIsIixfKSxFLnB1 c2goIkwiLHcsIiwiLGspLG51bGwhPVQmJkUucHVzaCgiQSIscywiLCIscywi IDAgIixQLCIsIiwxLXAsIiAiLFQsIiwiLE0pO3JldHVybiBFLnB1c2goIloi KSxFLmpvaW4oIiIpfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4iTTAsIit0KyJB Iit0KyIsIit0KyIgMCAxLCIrZSsiIDAsIistdCsiQSIrdCsiLCIrdCsiIDAg MSwiK2UrIiAwLCIrdH1yZXR1cm4gcy5pbm5lclJhZGl1cz1mdW5jdGlvbihl KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD12ZShlKSxzKTp0fSxzLm91 dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro PyhlPXZlKHQpLHMpOmV9LHMuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXZlKHQpLHMpOnJ9LHMucGFkUmFk aXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQ9 PUlvP0lvOnZlKHQpLHMpOm59LHMuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT12ZSh0KSxzKTphfSxzLmVuZEFu Z2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXZl KHQpLHMpOml9LHMucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KG89dmUodCkscyk6b30scy5jZW50cm9pZD1mdW5jdGlv bigpe3ZhciByPSgrdC5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtlLmFwcGx5 KHRoaXMsYXJndW1lbnRzKSkvMixuPSgrYS5hcHBseSh0aGlzLGFyZ3VtZW50 cykrICtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMi1FdDtyZXR1cm5bTWF0 aC5jb3MobikqcixNYXRoLnNpbihuKSpyXX0sc307dmFyIElvPSJhdXRvIjtm dW5jdGlvbiBEbyh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBS byh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBGbyh0KXtyZXR1 cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIEJvKHQpe3JldHVybiB0LmVuZEFu Z2xlfWZ1bmN0aW9uIE5vKHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0 aW9uIGpvKHQsZSxyLG4pe3JldHVybih0LXIpKmUtKGUtbikqdD4wPzA6MX1m dW5jdGlvbiBWbyh0LGUscixuLGEpe3ZhciBpPXRbMF0tZVswXSxvPXRbMV0t ZVsxXSxzPShhP246LW4pL01hdGguc3FydChpKmkrbypvKSxsPXMqbyxjPS1z KmksdT10WzBdK2wsaD10WzFdK2MsZj1lWzBdK2wscD1lWzFdK2MsZD0odStm KS8yLGc9KGgrcCkvMix2PWYtdSxtPXAtaCx5PXYqdittKm0seD1yLW4sYj11 KnAtZipoLF89KG08MD8tMToxKSpNYXRoLnNxcnQoTWF0aC5tYXgoMCx4Kngq eS1iKmIpKSx3PShiKm0tdipfKS95LGs9KC1iKnYtbSpfKS95LFQ9KGIqbSt2 Kl8pL3ksTT0oLWIqdittKl8pL3ksQT13LWQsUz1rLWcsRT1ULWQsTD1NLWc7 cmV0dXJuIEEqQStTKlM+RSpFK0wqTCYmKHc9VCxrPU0pLFtbdy1sLGstY10s W3cqci94LGsqci94XV19ZnVuY3Rpb24gVW8odCl7dmFyIGU9bmEscj1hYSxu PVhyLGE9SG8saT1hLmtleSxvPS43O2Z1bmN0aW9uIHMoaSl7dmFyIHMsbD1b XSxjPVtdLHU9LTEsaD1pLmxlbmd0aCxmPXZlKGUpLHA9dmUocik7ZnVuY3Rp b24gZCgpe2wucHVzaCgiTSIsYSh0KGMpLG8pKX1mb3IoOysrdTxoOyluLmNh bGwodGhpcyxzPWlbdV0sdSk/Yy5wdXNoKFsrZi5jYWxsKHRoaXMscyx1KSwr cC5jYWxsKHRoaXMscyx1KV0pOmMubGVuZ3RoJiYoZCgpLGM9W10pO3JldHVy biBjLmxlbmd0aCYmZCgpLGwubGVuZ3RoP2wuam9pbigiIik6bnVsbH1yZXR1 cm4gcy54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhl PXQscyk6ZX0scy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhyPXQscyk6cn0scy5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhuPXQscyk6bn0scy5pbnRlcnBvbGF0ZT1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24i PT10eXBlb2YgdD9hPXQ6KGE9cW8uZ2V0KHQpfHxIbykua2V5LHMpOml9LHMu dGVuc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o bz10LHMpOm99LHN9dC5zdmcubGluZT1mdW5jdGlvbigpe3JldHVybiBVbyhQ KX07dmFyIHFvPXQubWFwKHtsaW5lYXI6SG8sImxpbmVhci1jbG9zZWQiOkdv LHN0ZXA6ZnVuY3Rpb24odCl7dmFyIGU9MCxyPXQubGVuZ3RoLG49dFswXSxh PVtuWzBdLCIsIixuWzFdXTtmb3IoOysrZTxyOylhLnB1c2goIkgiLChuWzBd KyhuPXRbZV0pWzBdKS8yLCJWIixuWzFdKTtyPjEmJmEucHVzaCgiSCIsblsw XSk7cmV0dXJuIGEuam9pbigiIil9LCJzdGVwLWJlZm9yZSI6WW8sInN0ZXAt YWZ0ZXIiOldvLGJhc2lzOkpvLCJiYXNpcy1vcGVuIjpmdW5jdGlvbih0KXtp Zih0Lmxlbmd0aDw0KXJldHVybiBIbyh0KTt2YXIgZSxyPVtdLG49LTEsYT10 Lmxlbmd0aCxpPVswXSxvPVswXTtmb3IoOysrbjwzOyllPXRbbl0saS5wdXNo KGVbMF0pLG8ucHVzaChlWzFdKTtyLnB1c2goS28odHMsaSkrIiwiK0tvKHRz LG8pKSwtLW47Zm9yKDsrK248YTspZT10W25dLGkuc2hpZnQoKSxpLnB1c2go ZVswXSksby5zaGlmdCgpLG8ucHVzaChlWzFdKSxlcyhyLGksbyk7cmV0dXJu IHIuam9pbigiIil9LCJiYXNpcy1jbG9zZWQiOmZ1bmN0aW9uKHQpe3ZhciBl LHIsbj0tMSxhPXQubGVuZ3RoLGk9YSs0LG89W10scz1bXTtmb3IoOysrbjw0 OylyPXRbbiVhXSxvLnB1c2goclswXSkscy5wdXNoKHJbMV0pO2U9W0tvKHRz LG8pLCIsIixLbyh0cyxzKV0sLS1uO2Zvcig7KytuPGk7KXI9dFtuJWFdLG8u c2hpZnQoKSxvLnB1c2goclswXSkscy5zaGlmdCgpLHMucHVzaChyWzFdKSxl cyhlLG8scyk7cmV0dXJuIGUuam9pbigiIil9LGJ1bmRsZTpmdW5jdGlvbih0 LGUpe3ZhciByPXQubGVuZ3RoLTE7aWYocilmb3IodmFyIG4sYSxpPXRbMF1b MF0sbz10WzBdWzFdLHM9dFtyXVswXS1pLGw9dFtyXVsxXS1vLGM9LTE7Kytj PD1yOyluPXRbY10sYT1jL3IsblswXT1lKm5bMF0rKDEtZSkqKGkrYSpzKSxu WzFdPWUqblsxXSsoMS1lKSoobythKmwpO3JldHVybiBKbyh0KX0sY2FyZGlu YWw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg8Mz9Ibyh0KTp0WzBd K1hvKHQsWm8odCxlKSl9LCJjYXJkaW5hbC1vcGVuIjpmdW5jdGlvbih0LGUp e3JldHVybiB0Lmxlbmd0aDw0P0hvKHQpOnRbMV0rWG8odC5zbGljZSgxLC0x KSxabyh0LGUpKX0sImNhcmRpbmFsLWNsb3NlZCI6ZnVuY3Rpb24odCxlKXty ZXR1cm4gdC5sZW5ndGg8Mz9Hbyh0KTp0WzBdK1hvKCh0LnB1c2godFswXSks dCksWm8oW3RbdC5sZW5ndGgtMl1dLmNvbmNhdCh0LFt0WzFdXSksZSkpfSxt b25vdG9uZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg8Mz9Ibyh0KTp0 WzBdK1hvKHQsZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaT1bXSxvPWZ1bmN0 aW9uKHQpe3ZhciBlPTAscj10Lmxlbmd0aC0xLG49W10sYT10WzBdLGk9dFsx XSxvPW5bMF09cnMoYSxpKTtmb3IoOysrZTxyOyluW2VdPShvKyhvPXJzKGE9 aSxpPXRbZSsxXSkpKS8yO3JldHVybiBuW2VdPW8sbn0odCkscz0tMSxsPXQu bGVuZ3RoLTE7Zm9yKDsrK3M8bDspZT1ycyh0W3NdLHRbcysxXSkseShlKTxr dD9vW3NdPW9bcysxXT0wOihyPW9bc10vZSxuPW9bcysxXS9lLChhPXIqcitu Km4pPjkmJihhPTMqZS9NYXRoLnNxcnQoYSksb1tzXT1hKnIsb1tzKzFdPWEq bikpO3M9LTE7Zm9yKDsrK3M8PWw7KWE9KHRbTWF0aC5taW4obCxzKzEpXVsw XS10W01hdGgubWF4KDAscy0xKV1bMF0pLyg2KigxK29bc10qb1tzXSkpLGku cHVzaChbYXx8MCxvW3NdKmF8fDBdKTtyZXR1cm4gaX0odCkpfX0pO2Z1bmN0 aW9uIEhvKHQpe3JldHVybiB0Lmxlbmd0aD4xP3Quam9pbigiTCIpOnQrIloi fWZ1bmN0aW9uIEdvKHQpe3JldHVybiB0LmpvaW4oIkwiKSsiWiJ9ZnVuY3Rp b24gWW8odCl7Zm9yKHZhciBlPTAscj10Lmxlbmd0aCxuPXRbMF0sYT1bblsw XSwiLCIsblsxXV07KytlPHI7KWEucHVzaCgiViIsKG49dFtlXSlbMV0sIkgi LG5bMF0pO3JldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIFdvKHQpe2Zvcih2 YXIgZT0wLHI9dC5sZW5ndGgsbj10WzBdLGE9W25bMF0sIiwiLG5bMV1dOysr ZTxyOylhLnB1c2goIkgiLChuPXRbZV0pWzBdLCJWIixuWzFdKTtyZXR1cm4g YS5qb2luKCIiKX1mdW5jdGlvbiBYbyh0LGUpe2lmKGUubGVuZ3RoPDF8fHQu bGVuZ3RoIT1lLmxlbmd0aCYmdC5sZW5ndGghPWUubGVuZ3RoKzIpcmV0dXJu IEhvKHQpO3ZhciByPXQubGVuZ3RoIT1lLmxlbmd0aCxuPSIiLGE9dFswXSxp PXRbMV0sbz1lWzBdLHM9byxsPTE7aWYociYmKG4rPSJRIisoaVswXS0yKm9b MF0vMykrIiwiKyhpWzFdLTIqb1sxXS8zKSsiLCIraVswXSsiLCIraVsxXSxh PXRbMV0sbD0yKSxlLmxlbmd0aD4xKXtzPWVbMV0saT10W2xdLGwrKyxuKz0i QyIrKGFbMF0rb1swXSkrIiwiKyhhWzFdK29bMV0pKyIsIisoaVswXS1zWzBd KSsiLCIrKGlbMV0tc1sxXSkrIiwiK2lbMF0rIiwiK2lbMV07Zm9yKHZhciBj PTI7YzxlLmxlbmd0aDtjKyssbCsrKWk9dFtsXSxzPWVbY10sbis9IlMiKyhp WzBdLXNbMF0pKyIsIisoaVsxXS1zWzFdKSsiLCIraVswXSsiLCIraVsxXX1p ZihyKXt2YXIgdT10W2xdO24rPSJRIisoaVswXSsyKnNbMF0vMykrIiwiKyhp WzFdKzIqc1sxXS8zKSsiLCIrdVswXSsiLCIrdVsxXX1yZXR1cm4gbn1mdW5j dGlvbiBabyh0LGUpe2Zvcih2YXIgcixuPVtdLGE9KDEtZSkvMixpPXRbMF0s bz10WzFdLHM9MSxsPXQubGVuZ3RoOysrczxsOylyPWksaT1vLG89dFtzXSxu LnB1c2goW2EqKG9bMF0tclswXSksYSoob1sxXS1yWzFdKV0pO3JldHVybiBu fWZ1bmN0aW9uIEpvKHQpe2lmKHQubGVuZ3RoPDMpcmV0dXJuIEhvKHQpO3Zh ciBlPTEscj10Lmxlbmd0aCxuPXRbMF0sYT1uWzBdLGk9blsxXSxvPVthLGEs YSwobj10WzFdKVswXV0scz1baSxpLGksblsxXV0sbD1bYSwiLCIsaSwiTCIs S28odHMsbyksIiwiLEtvKHRzLHMpXTtmb3IodC5wdXNoKHRbci0xXSk7Kytl PD1yOyluPXRbZV0sby5zaGlmdCgpLG8ucHVzaChuWzBdKSxzLnNoaWZ0KCks cy5wdXNoKG5bMV0pLGVzKGwsbyxzKTtyZXR1cm4gdC5wb3AoKSxsLnB1c2go IkwiLG4pLGwuam9pbigiIil9ZnVuY3Rpb24gS28odCxlKXtyZXR1cm4gdFsw XSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl0rdFszXSplWzNdfXFvLmZvckVh Y2goZnVuY3Rpb24odCxlKXtlLmtleT10LGUuY2xvc2VkPS8tY2xvc2VkJC8u dGVzdCh0KX0pO3ZhciBRbz1bMCwyLzMsMS8zLDBdLCRvPVswLDEvMywyLzMs MF0sdHM9WzAsMS82LDIvMywxLzZdO2Z1bmN0aW9uIGVzKHQsZSxyKXt0LnB1 c2goIkMiLEtvKFFvLGUpLCIsIixLbyhRbyxyKSwiLCIsS28oJG8sZSksIiwi LEtvKCRvLHIpLCIsIixLbyh0cyxlKSwiLCIsS28odHMscikpfWZ1bmN0aW9u IHJzKHQsZSl7cmV0dXJuKGVbMV0tdFsxXSkvKGVbMF0tdFswXSl9ZnVuY3Rp b24gbnModCl7Zm9yKHZhciBlLHIsbixhPS0xLGk9dC5sZW5ndGg7KythPGk7 KXI9KGU9dFthXSlbMF0sbj1lWzFdLUV0LGVbMF09cipNYXRoLmNvcyhuKSxl WzFdPXIqTWF0aC5zaW4obik7cmV0dXJuIHR9ZnVuY3Rpb24gYXModCl7dmFy IGU9bmEscj1uYSxuPTAsYT1hYSxpPVhyLG89SG8scz1vLmtleSxsPW8sYz0i TCIsdT0uNztmdW5jdGlvbiBoKHMpe3ZhciBoLGYscCxkPVtdLGc9W10sdj1b XSxtPS0xLHk9cy5sZW5ndGgseD12ZShlKSxiPXZlKG4pLF89ZT09PXI/ZnVu Y3Rpb24oKXtyZXR1cm4gZn06dmUociksdz1uPT09YT9mdW5jdGlvbigpe3Jl dHVybiBwfTp2ZShhKTtmdW5jdGlvbiBrKCl7ZC5wdXNoKCJNIixvKHQodiks dSksYyxsKHQoZy5yZXZlcnNlKCkpLHUpLCJaIil9Zm9yKDsrK208eTspaS5j YWxsKHRoaXMsaD1zW21dLG0pPyhnLnB1c2goW2Y9K3guY2FsbCh0aGlzLGgs bSkscD0rYi5jYWxsKHRoaXMsaCxtKV0pLHYucHVzaChbK18uY2FsbCh0aGlz LGgsbSksK3cuY2FsbCh0aGlzLGgsbSldKSk6Zy5sZW5ndGgmJihrKCksZz1b XSx2PVtdKTtyZXR1cm4gZy5sZW5ndGgmJmsoKSxkLmxlbmd0aD9kLmpvaW4o IiIpOm51bGx9cmV0dXJuIGgueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8oZT1yPXQsaCk6cn0saC54MD1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGgpOmV9LGgueDE9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxoKTpyfSxoLnk9ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YT10LGgpOmF9 LGgueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49 dCxoKTpufSxoLnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhhPXQsaCk6YX0saC5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhpPXQsaCk6aX0saC5pbnRlcnBvbGF0ZT1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24i PT10eXBlb2YgdD9vPXQ6KG89cW8uZ2V0KHQpfHxIbykua2V5LGw9by5yZXZl cnNlfHxvLGM9by5jbG9zZWQ/Ik0iOiJMIixoKTpzfSxoLnRlbnNpb249ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxoKTp1fSxo fWZ1bmN0aW9uIGlzKHQpe3JldHVybiB0LnJhZGl1c31mdW5jdGlvbiBvcyh0 KXtyZXR1cm5bdC54LHQueV19ZnVuY3Rpb24gc3MoKXtyZXR1cm4gNjR9ZnVu Y3Rpb24gbHMoKXtyZXR1cm4iY2lyY2xlIn1mdW5jdGlvbiBjcyh0KXt2YXIg ZT1NYXRoLnNxcnQodC9NdCk7cmV0dXJuIk0wLCIrZSsiQSIrZSsiLCIrZSsi IDAgMSwxIDAsIistZSsiQSIrZSsiLCIrZSsiIDAgMSwxIDAsIitlKyJaIn10 LnN2Zy5saW5lLnJhZGlhbD1mdW5jdGlvbigpe3ZhciB0PVVvKG5zKTtyZXR1 cm4gdC5yYWRpdXM9dC54LGRlbGV0ZSB0LngsdC5hbmdsZT10LnksZGVsZXRl IHQueSx0fSxZby5yZXZlcnNlPVdvLFdvLnJldmVyc2U9WW8sdC5zdmcuYXJl YT1mdW5jdGlvbigpe3JldHVybiBhcyhQKX0sdC5zdmcuYXJlYS5yYWRpYWw9 ZnVuY3Rpb24oKXt2YXIgdD1hcyhucyk7cmV0dXJuIHQucmFkaXVzPXQueCxk ZWxldGUgdC54LHQuaW5uZXJSYWRpdXM9dC54MCxkZWxldGUgdC54MCx0Lm91 dGVyUmFkaXVzPXQueDEsZGVsZXRlIHQueDEsdC5hbmdsZT10LnksZGVsZXRl IHQueSx0LnN0YXJ0QW5nbGU9dC55MCxkZWxldGUgdC55MCx0LmVuZEFuZ2xl PXQueTEsZGVsZXRlIHQueTEsdH0sdC5zdmcuY2hvcmQ9ZnVuY3Rpb24oKXt2 YXIgdD1xbixlPUhuLHI9aXMsbj1GbyxhPUJvO2Z1bmN0aW9uIGkocixuKXt2 YXIgYSxpLGM9byh0aGlzLHQscixuKSx1PW8odGhpcyxlLHIsbik7cmV0dXJu Ik0iK2MucDArcyhjLnIsYy5wMSxjLmExLWMuYTApKyhpPXUsKGE9YykuYTA9 PWkuYTAmJmEuYTE9PWkuYTE/bChjLnIsYy5wMSxjLnIsYy5wMCk6bChjLnIs Yy5wMSx1LnIsdS5wMCkrcyh1LnIsdS5wMSx1LmExLXUuYTApK2wodS5yLHUu cDEsYy5yLGMucDApKSsiWiJ9ZnVuY3Rpb24gbyh0LGUsaSxvKXt2YXIgcz1l LmNhbGwodCxpLG8pLGw9ci5jYWxsKHQscyxvKSxjPW4uY2FsbCh0LHMsbykt RXQsdT1hLmNhbGwodCxzLG8pLUV0O3JldHVybntyOmwsYTA6YyxhMTp1LHAw OltsKk1hdGguY29zKGMpLGwqTWF0aC5zaW4oYyldLHAxOltsKk1hdGguY29z KHUpLGwqTWF0aC5zaW4odSldfX1mdW5jdGlvbiBzKHQsZSxyKXtyZXR1cm4i QSIrdCsiLCIrdCsiIDAgIisgKyhyPk10KSsiLDEgIitlfWZ1bmN0aW9uIGwo dCxlLHIsbil7cmV0dXJuIlEgMCwwICIrbn1yZXR1cm4gaS5yYWRpdXM9ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dmUodCksaSk6 cn0saS5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KHQ9dmUoZSksaSk6dH0saS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KGU9dmUodCksaSk6ZX0saS5zdGFydEFuZ2xl PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXZlKHQp LGkpOm59LGkuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KGE9dmUodCksaSk6YX0saX0sdC5zdmcuZGlhZ29uYWw9ZnVu Y3Rpb24oKXt2YXIgdD1xbixlPUhuLHI9b3M7ZnVuY3Rpb24gbihuLGEpe3Zh ciBpPXQuY2FsbCh0aGlzLG4sYSksbz1lLmNhbGwodGhpcyxuLGEpLHM9KGku eStvLnkpLzIsbD1baSx7eDppLngseTpzfSx7eDpvLngseTpzfSxvXTtyZXR1 cm4iTSIrKGw9bC5tYXAocikpWzBdKyJDIitsWzFdKyIgIitsWzJdKyIgIits WzNdfXJldHVybiBuLnNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8odD12ZShlKSxuKTp0fSxuLnRhcmdldD1mdW5jdGlvbih0 KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT12ZSh0KSxuKTplfSxuLnBy b2plY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KHI9dCxuKTpyfSxufSx0LnN2Zy5kaWFnb25hbC5yYWRpYWw9ZnVuY3Rpb24o KXt2YXIgZT10LnN2Zy5kaWFnb25hbCgpLHI9b3Msbj1lLnByb2plY3Rpb247 cmV0dXJuIGUucHJvamVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD9uKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3Zh ciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9ZVswXSxuPWVbMV0tRXQ7 cmV0dXJuW3IqTWF0aC5jb3MobikscipNYXRoLnNpbihuKV19fShyPXQpKTpy fSxlfSx0LnN2Zy5zeW1ib2w9ZnVuY3Rpb24oKXt2YXIgdD1scyxlPXNzO2Z1 bmN0aW9uIHIocixuKXtyZXR1cm4odXMuZ2V0KHQuY2FsbCh0aGlzLHIsbikp fHxjcykoZS5jYWxsKHRoaXMscixuKSl9cmV0dXJuIHIudHlwZT1mdW5jdGlv bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD12ZShlKSxyKTp0fSxy LnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9 dmUodCkscik6ZX0scn07dmFyIHVzPXQubWFwKHtjaXJjbGU6Y3MsY3Jvc3M6 ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5zcXJ0KHQvNSkvMjtyZXR1cm4iTSIr LTMqZSsiLCIrLWUrIkgiKy1lKyJWIistMyplKyJIIitlKyJWIistZSsiSCIr MyplKyJWIitlKyJIIitlKyJWIiszKmUrIkgiKy1lKyJWIitlKyJIIistMypl KyJaIn0sZGlhbW9uZDpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnNxcnQodC8o MipmcykpLHI9ZSpmcztyZXR1cm4iTTAsIistZSsiTCIrcisiLDAgMCwiK2Ur IiAiKy1yKyIsMFoifSxzcXVhcmU6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5z cXJ0KHQpLzI7cmV0dXJuIk0iKy1lKyIsIistZSsiTCIrZSsiLCIrLWUrIiAi K2UrIiwiK2UrIiAiKy1lKyIsIitlKyJaIn0sInRyaWFuZ2xlLWRvd24iOmZ1 bmN0aW9uKHQpe3ZhciBlPU1hdGguc3FydCh0L2hzKSxyPWUqaHMvMjtyZXR1 cm4iTTAsIityKyJMIitlKyIsIistcisiICIrLWUrIiwiKy1yKyJaIn0sInRy aWFuZ2xlLXVwIjpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnNxcnQodC9ocyks cj1lKmhzLzI7cmV0dXJuIk0wLCIrLXIrIkwiK2UrIiwiK3IrIiAiKy1lKyIs IityKyJaIn19KTt0LnN2Zy5zeW1ib2xUeXBlcz11cy5rZXlzKCk7dmFyIGhz PU1hdGguc3FydCgzKSxmcz1NYXRoLnRhbigzMCpMdCk7Vy50cmFuc2l0aW9u PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyLG49dnN8fCsreHMsYT13cyh0KSxp PVtdLG89bXN8fHt0aW1lOkRhdGUubm93KCksZWFzZTpvaSxkZWxheTowLGR1 cmF0aW9uOjI1MH0scz0tMSxsPXRoaXMubGVuZ3RoOysrczxsOyl7aS5wdXNo KGU9W10pO2Zvcih2YXIgYz10aGlzW3NdLHU9LTEsaD1jLmxlbmd0aDsrK3U8 aDspKHI9Y1t1XSkmJmtzKHIsdSxhLG4sbyksZS5wdXNoKHIpfXJldHVybiBn cyhpLGEsbil9LFcuaW50ZXJydXB0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz LmVhY2gobnVsbD09dD9wczpkcyh3cyh0KSkpfTt2YXIgcHM9ZHMod3MoKSk7 ZnVuY3Rpb24gZHModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGUscixuOyhl PXRoaXNbdF0pJiYobj1lW3I9ZS5hY3RpdmVdKSYmKG4udGltZXIuYz1udWxs LG4udGltZXIudD1OYU4sLS1lLmNvdW50P2RlbGV0ZSBlW3JdOmRlbGV0ZSB0 aGlzW3RdLGUuYWN0aXZlKz0uNSxuLmV2ZW50JiZuLmV2ZW50LmludGVycnVw dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxuLmluZGV4KSl9fWZ1bmN0aW9u IGdzKHQsZSxyKXtyZXR1cm4gVSh0LHlzKSx0Lm5hbWVzcGFjZT1lLHQuaWQ9 cix0fXZhciB2cyxtcyx5cz1bXSx4cz0wO2Z1bmN0aW9uIGJzKHQsZSxyLG4p e3ZhciBhPXQuaWQsaT10Lm5hbWVzcGFjZTtyZXR1cm4gdXQodCwiZnVuY3Rp b24iPT10eXBlb2Ygcj9mdW5jdGlvbih0LG8scyl7dFtpXVthXS50d2Vlbi5z ZXQoZSxuKHIuY2FsbCh0LHQuX19kYXRhX18sbyxzKSkpfToocj1uKHIpLGZ1 bmN0aW9uKHQpe3RbaV1bYV0udHdlZW4uc2V0KGUscil9KSl9ZnVuY3Rpb24g X3ModCl7cmV0dXJuIG51bGw9PXQmJih0PSIiKSxmdW5jdGlvbigpe3RoaXMu dGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gd3ModCl7cmV0dXJuIG51bGw9PXQ/ Il9fdHJhbnNpdGlvbl9fIjoiX190cmFuc2l0aW9uXyIrdCsiX18ifWZ1bmN0 aW9uIGtzKHQsZSxyLG4sYSl7dmFyIGksbyxzLGwsYyx1PXRbcl18fCh0W3Jd PXthY3RpdmU6MCxjb3VudDowfSksaD11W25dO2Z1bmN0aW9uIGYocil7dmFy IGE9dS5hY3RpdmUsZj11W2FdO2Zvcih2YXIgZCBpbiBmJiYoZi50aW1lci5j PW51bGwsZi50aW1lci50PU5hTiwtLXUuY291bnQsZGVsZXRlIHVbYV0sZi5l dmVudCYmZi5ldmVudC5pbnRlcnJ1cHQuY2FsbCh0LHQuX19kYXRhX18sZi5p bmRleCkpLHUpaWYoK2Q8bil7dmFyIGc9dVtkXTtnLnRpbWVyLmM9bnVsbCxn LnRpbWVyLnQ9TmFOLC0tdS5jb3VudCxkZWxldGUgdVtkXX1vLmM9cCxUZShm dW5jdGlvbigpe3JldHVybiBvLmMmJnAocnx8MSkmJihvLmM9bnVsbCxvLnQ9 TmFOKSwxfSwwLGkpLHUuYWN0aXZlPW4saC5ldmVudCYmaC5ldmVudC5zdGFy dC5jYWxsKHQsdC5fX2RhdGFfXyxlKSxjPVtdLGgudHdlZW4uZm9yRWFjaChm dW5jdGlvbihyLG4peyhuPW4uY2FsbCh0LHQuX19kYXRhX18sZSkpJiZjLnB1 c2gobil9KSxsPWguZWFzZSxzPWguZHVyYXRpb259ZnVuY3Rpb24gcChhKXtm b3IodmFyIGk9YS9zLG89bChpKSxmPWMubGVuZ3RoO2Y+MDspY1stLWZdLmNh bGwodCxvKTtpZihpPj0xKXJldHVybiBoLmV2ZW50JiZoLmV2ZW50LmVuZC5j YWxsKHQsdC5fX2RhdGFfXyxlKSwtLXUuY291bnQ/ZGVsZXRlIHVbbl06ZGVs ZXRlIHRbcl0sMX1ofHwoaT1hLnRpbWUsbz1UZShmdW5jdGlvbih0KXt2YXIg ZT1oLmRlbGF5O2lmKG8udD1lK2ksZTw9dClyZXR1cm4gZih0LWUpO28uYz1m fSwwLGkpLGg9dVtuXT17dHdlZW46bmV3IGIsdGltZTppLHRpbWVyOm8sZGVs YXk6YS5kZWxheSxkdXJhdGlvbjphLmR1cmF0aW9uLGVhc2U6YS5lYXNlLGlu ZGV4OmV9LGE9bnVsbCwrK3UuY291bnQpfXlzLmNhbGw9Vy5jYWxsLHlzLmVt cHR5PVcuZW1wdHkseXMubm9kZT1XLm5vZGUseXMuc2l6ZT1XLnNpemUsdC50 cmFuc2l0aW9uPWZ1bmN0aW9uKGUscil7cmV0dXJuIGUmJmUudHJhbnNpdGlv bj92cz9lLnRyYW5zaXRpb24ocik6ZTp0LnNlbGVjdGlvbigpLnRyYW5zaXRp b24oZSl9LHQudHJhbnNpdGlvbi5wcm90b3R5cGU9eXMseXMuc2VsZWN0PWZ1 bmN0aW9uKHQpe3ZhciBlLHIsbixhPXRoaXMuaWQsaT10aGlzLm5hbWVzcGFj ZSxvPVtdO3Q9WCh0KTtmb3IodmFyIHM9LTEsbD10aGlzLmxlbmd0aDsrK3M8 bDspe28ucHVzaChlPVtdKTtmb3IodmFyIGM9dGhpc1tzXSx1PS0xLGg9Yy5s ZW5ndGg7Kyt1PGg7KShuPWNbdV0pJiYocj10LmNhbGwobixuLl9fZGF0YV9f LHUscykpPygiX19kYXRhX18iaW4gbiYmKHIuX19kYXRhX189bi5fX2RhdGFf Xyksa3Mocix1LGksYSxuW2ldW2FdKSxlLnB1c2gocikpOmUucHVzaChudWxs KX1yZXR1cm4gZ3MobyxpLGEpfSx5cy5zZWxlY3RBbGw9ZnVuY3Rpb24odCl7 dmFyIGUscixuLGEsaSxvPXRoaXMuaWQscz10aGlzLm5hbWVzcGFjZSxsPVtd O3Q9Wih0KTtmb3IodmFyIGM9LTEsdT10aGlzLmxlbmd0aDsrK2M8dTspZm9y KHZhciBoPXRoaXNbY10sZj0tMSxwPWgubGVuZ3RoOysrZjxwOylpZihuPWhb Zl0pe2k9bltzXVtvXSxyPXQuY2FsbChuLG4uX19kYXRhX18sZixjKSxsLnB1 c2goZT1bXSk7Zm9yKHZhciBkPS0xLGc9ci5sZW5ndGg7KytkPGc7KShhPXJb ZF0pJiZrcyhhLGQscyxvLGkpLGUucHVzaChhKX1yZXR1cm4gZ3MobCxzLG8p fSx5cy5maWx0ZXI9ZnVuY3Rpb24odCl7dmFyIGUscixuPVtdOyJmdW5jdGlv biIhPXR5cGVvZiB0JiYodD1jdCh0KSk7Zm9yKHZhciBhPTAsaT10aGlzLmxl bmd0aDthPGk7YSsrKXtuLnB1c2goZT1bXSk7Zm9yKHZhciBvLHM9MCxsPShv PXRoaXNbYV0pLmxlbmd0aDtzPGw7cysrKShyPW9bc10pJiZ0LmNhbGwocixy Ll9fZGF0YV9fLHMsYSkmJmUucHVzaChyKX1yZXR1cm4gZ3Mobix0aGlzLm5h bWVzcGFjZSx0aGlzLmlkKX0seXMudHdlZW49ZnVuY3Rpb24odCxlKXt2YXIg cj10aGlzLmlkLG49dGhpcy5uYW1lc3BhY2U7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg8Mj90aGlzLm5vZGUoKVtuXVtyXS50d2Vlbi5nZXQodCk6dXQodGhp cyxudWxsPT1lP2Z1bmN0aW9uKGUpe2Vbbl1bcl0udHdlZW4ucmVtb3ZlKHQp fTpmdW5jdGlvbihhKXthW25dW3JdLnR3ZWVuLnNldCh0LGUpfSl9LHlzLmF0 dHI9ZnVuY3Rpb24oZSxyKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcihy IGluIGUpdGhpcy5hdHRyKHIsZVtyXSk7cmV0dXJuIHRoaXN9dmFyIG49InRy YW5zZm9ybSI9PWU/bWk6S2EsYT10Lm5zLnF1YWxpZnkoZSk7ZnVuY3Rpb24g aSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGEpfWZ1bmN0aW9uIG8oKXt0aGlz LnJlbW92ZUF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCl9cmV0dXJuIGJz KHRoaXMsImF0dHIuIitlLHIsYS5sb2NhbD9mdW5jdGlvbih0KXtyZXR1cm4g bnVsbD09dD9vOih0Kz0iIixmdW5jdGlvbigpe3ZhciBlLHI9dGhpcy5nZXRB dHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwpO3JldHVybiByIT09dCYmKGU9 bihyLHQpLGZ1bmN0aW9uKHQpe3RoaXMuc2V0QXR0cmlidXRlTlMoYS5zcGFj ZSxhLmxvY2FsLGUodCkpfSl9KX06ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9 PXQ/aToodCs9IiIsZnVuY3Rpb24oKXt2YXIgZSxyPXRoaXMuZ2V0QXR0cmli dXRlKGEpO3JldHVybiByIT09dCYmKGU9bihyLHQpLGZ1bmN0aW9uKHQpe3Ro aXMuc2V0QXR0cmlidXRlKGEsZSh0KSl9KX0pfSl9LHlzLmF0dHJUd2Vlbj1m dW5jdGlvbihlLHIpe3ZhciBuPXQubnMucXVhbGlmeShlKTtyZXR1cm4gdGhp cy50d2VlbigiYXR0ci4iK2Usbi5sb2NhbD9mdW5jdGlvbih0LGUpe3ZhciBh PXIuY2FsbCh0aGlzLHQsZSx0aGlzLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Us bi5sb2NhbCkpO3JldHVybiBhJiZmdW5jdGlvbih0KXt0aGlzLnNldEF0dHJp YnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCxhKHQpKX19OmZ1bmN0aW9uKHQsZSl7 dmFyIGE9ci5jYWxsKHRoaXMsdCxlLHRoaXMuZ2V0QXR0cmlidXRlKG4pKTty ZXR1cm4gYSYmZnVuY3Rpb24odCl7dGhpcy5zZXRBdHRyaWJ1dGUobixhKHQp KX19KX0seXMuc3R5bGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWFyZ3VtZW50 cy5sZW5ndGg7aWYobjwzKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpe2Zvcihy IGluIG48MiYmKGU9IiIpLHQpdGhpcy5zdHlsZShyLHRbcl0sZSk7cmV0dXJu IHRoaXN9cj0iIn1mdW5jdGlvbiBhKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9w ZXJ0eSh0KX1yZXR1cm4gYnModGhpcywic3R5bGUuIit0LGUsZnVuY3Rpb24o ZSl7cmV0dXJuIG51bGw9PWU/YTooZSs9IiIsZnVuY3Rpb24oKXt2YXIgbixh PW8odGhpcykuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpLmdldFByb3Bl cnR5VmFsdWUodCk7cmV0dXJuIGEhPT1lJiYobj1LYShhLGUpLGZ1bmN0aW9u KGUpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxuKGUpLHIpfSl9KX0pfSx5 cy5zdHlsZVR3ZWVuPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aDwzJiYocj0iIiksdGhpcy50d2Vlbigic3R5bGUuIit0LGZ1bmN0 aW9uKG4sYSl7dmFyIGk9ZS5jYWxsKHRoaXMsbixhLG8odGhpcykuZ2V0Q29t cHV0ZWRTdHlsZSh0aGlzLG51bGwpLmdldFByb3BlcnR5VmFsdWUodCkpO3Jl dHVybiBpJiZmdW5jdGlvbihlKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQs aShlKSxyKX19KX0seXMudGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYnModGhp cywidGV4dCIsdCxfcyl9LHlzLnJlbW92ZT1mdW5jdGlvbigpe3ZhciB0PXRo aXMubmFtZXNwYWNlO3JldHVybiB0aGlzLmVhY2goImVuZC50cmFuc2l0aW9u IixmdW5jdGlvbigpe3ZhciBlO3RoaXNbdF0uY291bnQ8MiYmKGU9dGhpcy5w YXJlbnROb2RlKSYmZS5yZW1vdmVDaGlsZCh0aGlzKX0pfSx5cy5lYXNlPWZ1 bmN0aW9uKGUpe3ZhciByPXRoaXMuaWQsbj10aGlzLm5hbWVzcGFjZTtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpW25dW3JdLmVhc2U6 KCJmdW5jdGlvbiIhPXR5cGVvZiBlJiYoZT10LmVhc2UuYXBwbHkodCxhcmd1 bWVudHMpKSx1dCh0aGlzLGZ1bmN0aW9uKHQpe3Rbbl1bcl0uZWFzZT1lfSkp fSx5cy5kZWxheT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmlkLHI9dGhpcy5u YW1lc3BhY2U7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT90aGlzLm5vZGUo KVtyXVtlXS5kZWxheTp1dCh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1 bmN0aW9uKG4sYSxpKXtuW3JdW2VdLmRlbGF5PSt0LmNhbGwobixuLl9fZGF0 YV9fLGEsaSl9Oih0PSt0LGZ1bmN0aW9uKG4pe25bcl1bZV0uZGVsYXk9dH0p KX0seXMuZHVyYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pZCxyPXRo aXMubmFtZXNwYWNlO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5u b2RlKClbcl1bZV0uZHVyYXRpb246dXQodGhpcywiZnVuY3Rpb24iPT10eXBl b2YgdD9mdW5jdGlvbihuLGEsaSl7bltyXVtlXS5kdXJhdGlvbj1NYXRoLm1h eCgxLHQuY2FsbChuLG4uX19kYXRhX18sYSxpKSl9Oih0PU1hdGgubWF4KDEs dCksZnVuY3Rpb24obil7bltyXVtlXS5kdXJhdGlvbj10fSkpfSx5cy5lYWNo PWZ1bmN0aW9uKGUscil7dmFyIG49dGhpcy5pZCxhPXRoaXMubmFtZXNwYWNl O2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9bXMsbz12czt0cnl7dnM9 bix1dCh0aGlzLGZ1bmN0aW9uKHQscixpKXttcz10W2FdW25dLGUuY2FsbCh0 LHQuX19kYXRhX18scixpKX0pfWZpbmFsbHl7bXM9aSx2cz1vfX1lbHNlIHV0 KHRoaXMsZnVuY3Rpb24oaSl7dmFyIG89aVthXVtuXTsoby5ldmVudHx8KG8u ZXZlbnQ9dC5kaXNwYXRjaCgic3RhcnQiLCJlbmQiLCJpbnRlcnJ1cHQiKSkp Lm9uKGUscil9KTtyZXR1cm4gdGhpc30seXMudHJhbnNpdGlvbj1mdW5jdGlv bigpe2Zvcih2YXIgdCxlLHIsbj10aGlzLmlkLGE9Kyt4cyxpPXRoaXMubmFt ZXNwYWNlLG89W10scz0wLGw9dGhpcy5sZW5ndGg7czxsO3MrKyl7by5wdXNo KHQ9W10pO2Zvcih2YXIgYyx1PTAsaD0oYz10aGlzW3NdKS5sZW5ndGg7dTxo O3UrKykoZT1jW3VdKSYma3MoZSx1LGksYSx7dGltZToocj1lW2ldW25dKS50 aW1lLGVhc2U6ci5lYXNlLGRlbGF5OnIuZGVsYXkrci5kdXJhdGlvbixkdXJh dGlvbjpyLmR1cmF0aW9ufSksdC5wdXNoKGUpfXJldHVybiBncyhvLGksYSl9 LHQuc3ZnLmF4aXM9ZnVuY3Rpb24oKXt2YXIgZSxyPXQuc2NhbGUubGluZWFy KCksYT1UcyxpPTYsbz02LHM9MyxsPVsxMF0sYz1udWxsO2Z1bmN0aW9uIHUo bil7bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG4sdT10LnNlbGVjdCh0aGlzKSxo PXRoaXMuX19jaGFydF9ffHxyLGY9dGhpcy5fX2NoYXJ0X189ci5jb3B5KCks cD1udWxsPT1jP2YudGlja3M/Zi50aWNrcy5hcHBseShmLGwpOmYuZG9tYWlu KCk6YyxkPW51bGw9PWU/Zi50aWNrRm9ybWF0P2YudGlja0Zvcm1hdC5hcHBs eShmLGwpOlA6ZSxnPXUuc2VsZWN0QWxsKCIudGljayIpLmRhdGEocCxmKSx2 PWcuZW50ZXIoKS5pbnNlcnQoImciLCIuZG9tYWluIikuYXR0cigiY2xhc3Mi LCJ0aWNrIikuc3R5bGUoIm9wYWNpdHkiLGt0KSxtPXQudHJhbnNpdGlvbihn LmV4aXQoKSkuc3R5bGUoIm9wYWNpdHkiLGt0KS5yZW1vdmUoKSx5PXQudHJh bnNpdGlvbihnLm9yZGVyKCkpLnN0eWxlKCJvcGFjaXR5IiwxKSx4PU1hdGgu bWF4KGksMCkrcyxiPWZvKGYpLF89dS5zZWxlY3RBbGwoIi5kb21haW4iKS5k YXRhKFswXSksdz0oXy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNs YXNzIiwiZG9tYWluIiksdC50cmFuc2l0aW9uKF8pKTt2LmFwcGVuZCgibGlu ZSIpLHYuYXBwZW5kKCJ0ZXh0Iik7dmFyIGssVCxNLEEsUz12LnNlbGVjdCgi bGluZSIpLEU9eS5zZWxlY3QoImxpbmUiKSxMPWcuc2VsZWN0KCJ0ZXh0Iiku dGV4dChkKSxDPXYuc2VsZWN0KCJ0ZXh0IiksTz15LnNlbGVjdCgidGV4dCIp LHo9InRvcCI9PT1hfHwibGVmdCI9PT1hPy0xOjE7aWYoImJvdHRvbSI9PT1h fHwidG9wIj09PWE/KG49QXMsaz0ieCIsTT0ieSIsVD0ieDIiLEE9InkyIixM LmF0dHIoImR5Iix6PDA/IjBlbSI6Ii43MWVtIikuc3R5bGUoInRleHQtYW5j aG9yIiwibWlkZGxlIiksdy5hdHRyKCJkIiwiTSIrYlswXSsiLCIreipvKyJW MEgiK2JbMV0rIlYiK3oqbykpOihuPVNzLGs9InkiLE09IngiLFQ9InkyIixB PSJ4MiIsTC5hdHRyKCJkeSIsIi4zMmVtIikuc3R5bGUoInRleHQtYW5jaG9y Iix6PDA/ImVuZCI6InN0YXJ0Iiksdy5hdHRyKCJkIiwiTSIreipvKyIsIiti WzBdKyJIMFYiK2JbMV0rIkgiK3oqbykpLFMuYXR0cihBLHoqaSksQy5hdHRy KE0seip4KSxFLmF0dHIoVCwwKS5hdHRyKEEseippKSxPLmF0dHIoaywwKS5h dHRyKE0seip4KSxmLnJhbmdlQmFuZCl7dmFyIEk9ZixEPUkucmFuZ2VCYW5k KCkvMjtoPWY9ZnVuY3Rpb24odCl7cmV0dXJuIEkodCkrRH19ZWxzZSBoLnJh bmdlQmFuZD9oPWY6bS5jYWxsKG4sZixoKTt2LmNhbGwobixoLGYpLHkuY2Fs bChuLGYsZil9KX1yZXR1cm4gdS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8ocj10LHUpOnJ9LHUub3JpZW50PWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQgaW4gTXM/dCsiIjpU cyx1KTphfSx1LnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/KGw9bihhcmd1bWVudHMpLHUpOmx9LHUudGlja1ZhbHVlcz1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LHUpOmN9LHUu dGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0 aD8oZT10LHUpOmV9LHUudGlja1NpemU9ZnVuY3Rpb24odCl7dmFyIGU9YXJn dW1lbnRzLmxlbmd0aDtyZXR1cm4gZT8oaT0rdCxvPSthcmd1bWVudHNbZS0x XSx1KTppfSx1LmlubmVyVGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KGk9K3QsdSk6aX0sdS5vdXRlclRpY2tTaXplPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LHUpOm99 LHUudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/KHM9K3QsdSk6c30sdS50aWNrU3ViZGl2aWRlPWZ1bmN0aW9uKCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGgmJnV9LHV9O3ZhciBUcz0iYm90dG9t IixNcz17dG9wOjEscmlnaHQ6MSxib3R0b206MSxsZWZ0OjF9O2Z1bmN0aW9u IEFzKHQsZSxyKXt0LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7dmFy IG49ZSh0KTtyZXR1cm4idHJhbnNsYXRlKCIrKGlzRmluaXRlKG4pP246cih0 KSkrIiwwKSJ9KX1mdW5jdGlvbiBTcyh0LGUscil7dC5hdHRyKCJ0cmFuc2Zv cm0iLGZ1bmN0aW9uKHQpe3ZhciBuPWUodCk7cmV0dXJuInRyYW5zbGF0ZSgw LCIrKGlzRmluaXRlKG4pP246cih0KSkrIikifSl9dC5zdmcuYnJ1c2g9ZnVu Y3Rpb24oKXt2YXIgZSxyLG49aihmLCJicnVzaHN0YXJ0IiwiYnJ1c2giLCJi cnVzaGVuZCIpLGE9bnVsbCxpPW51bGwscz1bMCwwXSxsPVswLDBdLGM9ITAs dT0hMCxoPUxzWzBdO2Z1bmN0aW9uIGYoZSl7ZS5lYWNoKGZ1bmN0aW9uKCl7 dmFyIGU9dC5zZWxlY3QodGhpcykuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwi YWxsIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJn YmEoMCwwLDAsMCkiKS5vbigibW91c2Vkb3duLmJydXNoIix2KS5vbigidG91 Y2hzdGFydC5icnVzaCIsdikscj1lLnNlbGVjdEFsbCgiLmJhY2tncm91bmQi KS5kYXRhKFswXSk7ci5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNs YXNzIiwiYmFja2dyb3VuZCIpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVu Iikuc3R5bGUoImN1cnNvciIsImNyb3NzaGFpciIpLGUuc2VsZWN0QWxsKCIu ZXh0ZW50IikuZGF0YShbMF0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0 cigiY2xhc3MiLCJleHRlbnQiKS5zdHlsZSgiY3Vyc29yIiwibW92ZSIpO3Zh ciBuPWUuc2VsZWN0QWxsKCIucmVzaXplIikuZGF0YShoLFApO24uZXhpdCgp LnJlbW92ZSgpLG4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs ZnVuY3Rpb24odCl7cmV0dXJuInJlc2l6ZSAiK3R9KS5zdHlsZSgiY3Vyc29y IixmdW5jdGlvbih0KXtyZXR1cm4gRXNbdF19KS5hcHBlbmQoInJlY3QiKS5h dHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4vW2V3XSQvLnRlc3QodCk/LTM6 bnVsbH0pLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybi9eW25zXS8udGVz dCh0KT8tMzpudWxsfSkuYXR0cigid2lkdGgiLDYpLmF0dHIoImhlaWdodCIs Nikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKSxuLnN0eWxlKCJkaXNw bGF5IixmLmVtcHR5KCk/Im5vbmUiOm51bGwpO3ZhciBvLHM9dC50cmFuc2l0 aW9uKGUpLGw9dC50cmFuc2l0aW9uKHIpO2EmJihvPWZvKGEpLGwuYXR0cigi eCIsb1swXSkuYXR0cigid2lkdGgiLG9bMV0tb1swXSksZChzKSksaSYmKG89 Zm8oaSksbC5hdHRyKCJ5IixvWzBdKS5hdHRyKCJoZWlnaHQiLG9bMV0tb1sw XSksZyhzKSkscChzKX0pfWZ1bmN0aW9uIHAodCl7dC5zZWxlY3RBbGwoIi5y ZXNpemUiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0 cmFuc2xhdGUoIitzWysvZSQvLnRlc3QodCldKyIsIitsWysvXnMvLnRlc3Qo dCldKyIpIn0pfWZ1bmN0aW9uIGQodCl7dC5zZWxlY3QoIi5leHRlbnQiKS5h dHRyKCJ4IixzWzBdKSx0LnNlbGVjdEFsbCgiLmV4dGVudCwubj5yZWN0LC5z PnJlY3QiKS5hdHRyKCJ3aWR0aCIsc1sxXS1zWzBdKX1mdW5jdGlvbiBnKHQp e3Quc2VsZWN0KCIuZXh0ZW50IikuYXR0cigieSIsbFswXSksdC5zZWxlY3RB bGwoIi5leHRlbnQsLmU+cmVjdCwudz5yZWN0IikuYXR0cigiaGVpZ2h0Iixs WzFdLWxbMF0pfWZ1bmN0aW9uIHYoKXt2YXIgaCx2LG09dGhpcyx5PXQuc2Vs ZWN0KHQuZXZlbnQudGFyZ2V0KSx4PW4ub2YobSxhcmd1bWVudHMpLGI9dC5z ZWxlY3QobSksXz15LmRhdHVtKCksdz0hL14obnxzKSQvLnRlc3QoXykmJmEs az0hL14oZXx3KSQvLnRlc3QoXykmJmksVD15LmNsYXNzZWQoImV4dGVudCIp LE09eHQobSksQT10Lm1vdXNlKG0pLFM9dC5zZWxlY3QobyhtKSkub24oImtl eWRvd24uYnJ1c2giLGZ1bmN0aW9uKCl7MzI9PXQuZXZlbnQua2V5Q29kZSYm KFR8fChoPW51bGwsQVswXS09c1sxXSxBWzFdLT1sWzFdLFQ9MiksQigpKX0p Lm9uKCJrZXl1cC5icnVzaCIsZnVuY3Rpb24oKXszMj09dC5ldmVudC5rZXlD b2RlJiYyPT1UJiYoQVswXSs9c1sxXSxBWzFdKz1sWzFdLFQ9MCxCKCkpfSk7 aWYodC5ldmVudC5jaGFuZ2VkVG91Y2hlcz9TLm9uKCJ0b3VjaG1vdmUuYnJ1 c2giLEMpLm9uKCJ0b3VjaGVuZC5icnVzaCIsTyk6Uy5vbigibW91c2Vtb3Zl LmJydXNoIixDKS5vbigibW91c2V1cC5icnVzaCIsTyksYi5pbnRlcnJ1cHQo KS5zZWxlY3RBbGwoIioiKS5pbnRlcnJ1cHQoKSxUKUFbMF09c1swXS1BWzBd LEFbMV09bFswXS1BWzFdO2Vsc2UgaWYoXyl7dmFyIEU9Ky93JC8udGVzdChf KSxMPSsvXm4vLnRlc3QoXyk7dj1bc1sxLUVdLUFbMF0sbFsxLUxdLUFbMV1d LEFbMF09c1tFXSxBWzFdPWxbTF19ZWxzZSB0LmV2ZW50LmFsdEtleSYmKGg9 QS5zbGljZSgpKTtmdW5jdGlvbiBDKCl7dmFyIGU9dC5tb3VzZShtKSxyPSEx O3YmJihlWzBdKz12WzBdLGVbMV0rPXZbMV0pLFR8fCh0LmV2ZW50LmFsdEtl eT8oaHx8KGg9WyhzWzBdK3NbMV0pLzIsKGxbMF0rbFsxXSkvMl0pLEFbMF09 c1srKGVbMF08aFswXSldLEFbMV09bFsrKGVbMV08aFsxXSldKTpoPW51bGwp LHcmJlAoZSxhLDApJiYoZChiKSxyPSEwKSxrJiZQKGUsaSwxKSYmKGcoYiks cj0hMCksciYmKHAoYikseCh7dHlwZToiYnJ1c2giLG1vZGU6VD8ibW92ZSI6 InJlc2l6ZSJ9KSl9ZnVuY3Rpb24gUCh0LG4sYSl7dmFyIGksbyxmPWZvKG4p LHA9ZlswXSxkPWZbMV0sZz1BW2FdLHY9YT9sOnMsbT12WzFdLXZbMF07aWYo VCYmKHAtPWcsZC09bStnKSxpPShhP3U6Yyk/TWF0aC5tYXgocCxNYXRoLm1p bihkLHRbYV0pKTp0W2FdLFQ/bz0oaSs9ZykrbTooaCYmKGc9TWF0aC5tYXgo cCxNYXRoLm1pbihkLDIqaFthXS1pKSkpLGc8aT8obz1pLGk9Zyk6bz1nKSx2 WzBdIT1pfHx2WzFdIT1vKXJldHVybiBhP3I9bnVsbDplPW51bGwsdlswXT1p LHZbMV09bywhMH1mdW5jdGlvbiBPKCl7QygpLGIuc3R5bGUoInBvaW50ZXIt ZXZlbnRzIiwiYWxsIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRp c3BsYXkiLGYuZW1wdHkoKT8ibm9uZSI6bnVsbCksdC5zZWxlY3QoImJvZHki KS5zdHlsZSgiY3Vyc29yIixudWxsKSxTLm9uKCJtb3VzZW1vdmUuYnJ1c2gi LG51bGwpLm9uKCJtb3VzZXVwLmJydXNoIixudWxsKS5vbigidG91Y2htb3Zl LmJydXNoIixudWxsKS5vbigidG91Y2hlbmQuYnJ1c2giLG51bGwpLm9uKCJr ZXlkb3duLmJydXNoIixudWxsKS5vbigia2V5dXAuYnJ1c2giLG51bGwpLE0o KSx4KHt0eXBlOiJicnVzaGVuZCJ9KX1iLnN0eWxlKCJwb2ludGVyLWV2ZW50 cyIsIm5vbmUiKS5zZWxlY3RBbGwoIi5yZXNpemUiKS5zdHlsZSgiZGlzcGxh eSIsbnVsbCksdC5zZWxlY3QoImJvZHkiKS5zdHlsZSgiY3Vyc29yIix5LnN0 eWxlKCJjdXJzb3IiKSkseCh7dHlwZToiYnJ1c2hzdGFydCJ9KSxDKCl9cmV0 dXJuIGYuZXZlbnQ9ZnVuY3Rpb24oYSl7YS5lYWNoKGZ1bmN0aW9uKCl7dmFy IGE9bi5vZih0aGlzLGFyZ3VtZW50cyksaT17eDpzLHk6bCxpOmUsajpyfSxv PXRoaXMuX19jaGFydF9ffHxpO3RoaXMuX19jaGFydF9fPWksdnM/dC5zZWxl Y3QodGhpcykudHJhbnNpdGlvbigpLmVhY2goInN0YXJ0LmJydXNoIixmdW5j dGlvbigpe2U9by5pLHI9by5qLHM9by54LGw9by55LGEoe3R5cGU6ImJydXNo c3RhcnQifSl9KS50d2VlbigiYnJ1c2g6YnJ1c2giLGZ1bmN0aW9uKCl7dmFy IHQ9UWEocyxpLngpLG49UWEobCxpLnkpO3JldHVybiBlPXI9bnVsbCxmdW5j dGlvbihlKXtzPWkueD10KGUpLGw9aS55PW4oZSksYSh7dHlwZToiYnJ1c2gi LG1vZGU6InJlc2l6ZSJ9KX19KS5lYWNoKCJlbmQuYnJ1c2giLGZ1bmN0aW9u KCl7ZT1pLmkscj1pLmosYSh7dHlwZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9 KSxhKHt0eXBlOiJicnVzaGVuZCJ9KX0pOihhKHt0eXBlOiJicnVzaHN0YXJ0 In0pLGEoe3R5cGU6ImJydXNoIixtb2RlOiJyZXNpemUifSksYSh7dHlwZToi YnJ1c2hlbmQifSkpfSl9LGYueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8oaD1Mc1shKGE9dCk8PDF8IWldLGYpOmF9LGYueT1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1Mc1shYTw8MXwh KGk9dCldLGYpOml9LGYuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KGEmJmk/KGM9ISF0WzBdLHU9ISF0WzFdKTphP2M9ISF0 OmkmJih1PSEhdCksZik6YSYmaT9bYyx1XTphP2M6aT91Om51bGx9LGYuZXh0 ZW50PWZ1bmN0aW9uKHQpe3ZhciBuLG8sYyx1LGg7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KGEmJihuPXRbMF0sbz10WzFdLGkmJihuPW5bMF0sbz1vWzBd KSxlPVtuLG9dLGEuaW52ZXJ0JiYobj1hKG4pLG89YShvKSksbzxuJiYoaD1u LG49byxvPWgpLG49PXNbMF0mJm89PXNbMV18fChzPVtuLG9dKSksaSYmKGM9 dFswXSx1PXRbMV0sYSYmKGM9Y1sxXSx1PXVbMV0pLHI9W2MsdV0saS5pbnZl cnQmJihjPWkoYyksdT1pKHUpKSx1PGMmJihoPWMsYz11LHU9aCksYz09bFsw XSYmdT09bFsxXXx8KGw9W2MsdV0pKSxmKTooYSYmKGU/KG49ZVswXSxvPWVb MV0pOihuPXNbMF0sbz1zWzFdLGEuaW52ZXJ0JiYobj1hLmludmVydChuKSxv PWEuaW52ZXJ0KG8pKSxvPG4mJihoPW4sbj1vLG89aCkpKSxpJiYocj8oYz1y WzBdLHU9clsxXSk6KGM9bFswXSx1PWxbMV0saS5pbnZlcnQmJihjPWkuaW52 ZXJ0KGMpLHU9aS5pbnZlcnQodSkpLHU8YyYmKGg9YyxjPXUsdT1oKSkpLGEm Jmk/W1tuLGNdLFtvLHVdXTphP1tuLG9dOmkmJltjLHVdKX0sZi5jbGVhcj1m dW5jdGlvbigpe3JldHVybiBmLmVtcHR5KCl8fChzPVswLDBdLGw9WzAsMF0s ZT1yPW51bGwpLGZ9LGYuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hIWEmJnNb MF09PXNbMV18fCEhaSYmbFswXT09bFsxXX0sdC5yZWJpbmQoZixuLCJvbiIp fTt2YXIgRXM9e246Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1y ZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVz dy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0s THM9W1sibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0sWyJl IiwidyJdLFsibiIsInMiXSxbXV0sQ3M9SWUuZm9ybWF0PWNyLnRpbWVGb3Jt YXQsUHM9Q3MudXRjLE9zPVBzKCIlWS0lbS0lZFQlSDolTTolUy4lTFoiKTtm dW5jdGlvbiB6cyh0KXtyZXR1cm4gdC50b0lTT1N0cmluZygpfWZ1bmN0aW9u IElzKGUscixuKXtmdW5jdGlvbiBhKHQpe3JldHVybiBlKHQpfWZ1bmN0aW9u IGkoZSxuKXt2YXIgYT0oZVsxXS1lWzBdKS9uLGk9dC5iaXNlY3QoUnMsYSk7 cmV0dXJuIGk9PVJzLmxlbmd0aD9bci55ZWFyLF9vKGUubWFwKGZ1bmN0aW9u KHQpe3JldHVybiB0LzMxNTM2ZTZ9KSxuKVsyXV06aT9yW2EvUnNbaS0xXTxS c1tpXS9hP2ktMTppXTpbTnMsX28oZSxuKVsyXV19cmV0dXJuIGEuaW52ZXJ0 PWZ1bmN0aW9uKHQpe3JldHVybiBEcyhlLmludmVydCh0KSl9LGEuZG9tYWlu PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlLmRvbWFp bih0KSxhKTplLmRvbWFpbigpLm1hcChEcyl9LGEubmljZT1mdW5jdGlvbih0 LGUpe3ZhciByPWEuZG9tYWluKCksbj1obyhyKSxvPW51bGw9PXQ/aShuLDEw KToibnVtYmVyIj09dHlwZW9mIHQmJmkobix0KTtmdW5jdGlvbiBzKHIpe3Jl dHVybiFpc05hTihyKSYmIXQucmFuZ2UocixEcygrcisxKSxlKS5sZW5ndGh9 cmV0dXJuIG8mJih0PW9bMF0sZT1vWzFdKSxhLmRvbWFpbihnbyhyLGU+MT97 Zmxvb3I6ZnVuY3Rpb24oZSl7Zm9yKDtzKGU9dC5mbG9vcihlKSk7KWU9RHMo ZS0xKTtyZXR1cm4gZX0sY2VpbDpmdW5jdGlvbihlKXtmb3IoO3MoZT10LmNl aWwoZSkpOyllPURzKCtlKzEpO3JldHVybiBlfX06dCkpfSxhLnRpY2tzPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9aG8oYS5kb21haW4oKSksbj1udWxsPT10P2ko ciwxMCk6Im51bWJlciI9PXR5cGVvZiB0P2kocix0KTohdC5yYW5nZSYmW3ty YW5nZTp0fSxlXTtyZXR1cm4gbiYmKHQ9blswXSxlPW5bMV0pLHQucmFuZ2Uo clswXSxEcygrclsxXSsxKSxlPDE/MTplKX0sYS50aWNrRm9ybWF0PWZ1bmN0 aW9uKCl7cmV0dXJuIG59LGEuY29weT1mdW5jdGlvbigpe3JldHVybiBJcyhl LmNvcHkoKSxyLG4pfSx4byhhLGUpfWZ1bmN0aW9uIERzKHQpe3JldHVybiBu ZXcgRGF0ZSh0KX1Dcy5pc289RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcm JituZXcgRGF0ZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIik/enM6T3Ms enMucGFyc2U9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IERhdGUodCk7cmV0dXJu IGlzTmFOKGUpP251bGw6ZX0senMudG9TdHJpbmc9T3MudG9TdHJpbmcsSWUu c2Vjb25kPUJlKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGUoMWUzKk1hdGgu Zmxvb3IodC8xZTMpKX0sZnVuY3Rpb24odCxlKXt0LnNldFRpbWUodC5nZXRU aW1lKCkrMWUzKk1hdGguZmxvb3IoZSkpfSxmdW5jdGlvbih0KXtyZXR1cm4g dC5nZXRTZWNvbmRzKCl9KSxJZS5zZWNvbmRzPUllLnNlY29uZC5yYW5nZSxJ ZS5zZWNvbmRzLnV0Yz1JZS5zZWNvbmQudXRjLnJhbmdlLEllLm1pbnV0ZT1C ZShmdW5jdGlvbih0KXtyZXR1cm4gbmV3IERlKDZlNCpNYXRoLmZsb29yKHQv NmU0KSl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKHQuZ2V0VGltZSgpKzZl NCpNYXRoLmZsb29yKGUpKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWlu dXRlcygpfSksSWUubWludXRlcz1JZS5taW51dGUucmFuZ2UsSWUubWludXRl cy51dGM9SWUubWludXRlLnV0Yy5yYW5nZSxJZS5ob3VyPUJlKGZ1bmN0aW9u KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKS82MDtyZXR1cm4gbmV3 IERlKDM2ZTUqKE1hdGguZmxvb3IodC8zNmU1LWUpK2UpKX0sZnVuY3Rpb24o dCxlKXt0LnNldFRpbWUodC5nZXRUaW1lKCkrMzZlNSpNYXRoLmZsb29yKGUp KX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pLEllLmhvdXJz PUllLmhvdXIucmFuZ2UsSWUuaG91cnMudXRjPUllLmhvdXIudXRjLnJhbmdl LEllLm1vbnRoPUJlKGZ1bmN0aW9uKHQpe3JldHVybih0PUllLmRheSh0KSku c2V0RGF0ZSgxKSx0fSxmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRN b250aCgpK2UpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSks SWUubW9udGhzPUllLm1vbnRoLnJhbmdlLEllLm1vbnRocy51dGM9SWUubW9u dGgudXRjLnJhbmdlO3ZhciBScz1bMWUzLDVlMywxNWUzLDNlNCw2ZTQsM2U1 LDllNSwxOGU1LDM2ZTUsMTA4ZTUsMjE2ZTUsNDMyZTUsODY0ZTUsMTcyOGU1 LDYwNDhlNSwyNTkyZTYsNzc3NmU2LDMxNTM2ZTZdLEZzPVtbSWUuc2Vjb25k LDFdLFtJZS5zZWNvbmQsNV0sW0llLnNlY29uZCwxNV0sW0llLnNlY29uZCwz MF0sW0llLm1pbnV0ZSwxXSxbSWUubWludXRlLDVdLFtJZS5taW51dGUsMTVd LFtJZS5taW51dGUsMzBdLFtJZS5ob3VyLDFdLFtJZS5ob3VyLDNdLFtJZS5o b3VyLDZdLFtJZS5ob3VyLDEyXSxbSWUuZGF5LDFdLFtJZS5kYXksMl0sW0ll LndlZWssMV0sW0llLm1vbnRoLDFdLFtJZS5tb250aCwzXSxbSWUueWVhciwx XV0sQnM9Q3MubXVsdGkoW1siLiVMIixmdW5jdGlvbih0KXtyZXR1cm4gdC5n ZXRNaWxsaXNlY29uZHMoKX1dLFsiOiVTIixmdW5jdGlvbih0KXtyZXR1cm4g dC5nZXRTZWNvbmRzKCl9XSxbIiVJOiVNIixmdW5jdGlvbih0KXtyZXR1cm4g dC5nZXRNaW51dGVzKCl9XSxbIiVJICVwIixmdW5jdGlvbih0KXtyZXR1cm4g dC5nZXRIb3VycygpfV0sWyIlYSAlZCIsZnVuY3Rpb24odCl7cmV0dXJuIHQu Z2V0RGF5KCkmJjEhPXQuZ2V0RGF0ZSgpfV0sWyIlYiAlZCIsZnVuY3Rpb24o dCl7cmV0dXJuIDEhPXQuZ2V0RGF0ZSgpfV0sWyIlQiIsZnVuY3Rpb24odCl7 cmV0dXJuIHQuZ2V0TW9udGgoKX1dLFsiJVkiLFhyXV0pLE5zPXtyYW5nZTpm dW5jdGlvbihlLHIsbil7cmV0dXJuIHQucmFuZ2UoTWF0aC5jZWlsKGUvbikq biwrcixuKS5tYXAoRHMpfSxmbG9vcjpQLGNlaWw6UH07RnMueWVhcj1JZS55 ZWFyLEllLnNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIElzKHQuc2NhbGUubGlu ZWFyKCksRnMsQnMpfTt2YXIganM9RnMubWFwKGZ1bmN0aW9uKHQpe3JldHVy blt0WzBdLnV0Yyx0WzFdXX0pLFZzPVBzLm11bHRpKFtbIi4lTCIsZnVuY3Rp b24odCl7cmV0dXJuIHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCl9XSxbIjolUyIs ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDU2Vjb25kcygpfV0sWyIlSTol TSIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfV0sWyIl SSAlcCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX1dLFsi JWEgJWQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RheSgpJiYxIT10 LmdldFVUQ0RhdGUoKX1dLFsiJWIgJWQiLGZ1bmN0aW9uKHQpe3JldHVybiAx IT10LmdldFVUQ0RhdGUoKX1dLFsiJUIiLGZ1bmN0aW9uKHQpe3JldHVybiB0 LmdldFVUQ01vbnRoKCl9XSxbIiVZIixYcl1dKTtmdW5jdGlvbiBVcyh0KXty ZXR1cm4gSlNPTi5wYXJzZSh0LnJlc3BvbnNlVGV4dCl9ZnVuY3Rpb24gcXMo dCl7dmFyIGU9YS5jcmVhdGVSYW5nZSgpO3JldHVybiBlLnNlbGVjdE5vZGUo YS5ib2R5KSxlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0LnJlc3BvbnNl VGV4dCl9anMueWVhcj1JZS55ZWFyLnV0YyxJZS5zY2FsZS51dGM9ZnVuY3Rp b24oKXtyZXR1cm4gSXModC5zY2FsZS5saW5lYXIoKSxqcyxWcyl9LHQudGV4 dD1tZShmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXNwb25zZVRleHR9KSx0Lmpz b249ZnVuY3Rpb24odCxlKXtyZXR1cm4geWUodCwiYXBwbGljYXRpb24vanNv biIsVXMsZSl9LHQuaHRtbD1mdW5jdGlvbih0LGUpe3JldHVybiB5ZSh0LCJ0 ZXh0L2h0bWwiLHFzLGUpfSx0LnhtbD1tZShmdW5jdGlvbih0KXtyZXR1cm4g dC5yZXNwb25zZVhNTH0pLCJvYmplY3QiPT10eXBlb2YgZSYmZS5leHBvcnRz P2UuZXhwb3J0cz10OnRoaXMuZDM9dH0oKX0se31dLDE2NjpbZnVuY3Rpb24o dCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8YXJn dW1lbnRzLmxlbmd0aDt0KyspaWYodm9pZCAwIT09YXJndW1lbnRzW3RdKXJl dHVybiBhcmd1bWVudHNbdF19fSx7fV0sMTY3OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoImluY3JlbWVudGFsLWNvbnZleC1odWxs IiksYT10KCJ1bmlxIik7ZnVuY3Rpb24gaSh0LGUpe3RoaXMucG9pbnQ9dCx0 aGlzLmluZGV4PWV9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj10LnBvaW50 LG49ZS5wb2ludCxhPXIubGVuZ3RoLGk9MDtpPGE7KytpKXt2YXIgbz1uW2ld LXJbaV07aWYobylyZXR1cm4gb31yZXR1cm4gMH1lLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXt2YXIgcj10Lmxlbmd0aDtpZigwPT09cilyZXR1cm5bXTt2YXIg cz10WzBdLmxlbmd0aDtpZihzPDEpcmV0dXJuW107aWYoMT09PXMpcmV0dXJu IGZ1bmN0aW9uKHQsZSxyKXtpZigxPT09dClyZXR1cm4gcj9bWy0xLDBdXTpb XTt2YXIgbj1lLm1hcChmdW5jdGlvbih0LGUpe3JldHVyblt0WzBdLGVdfSk7 bi5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0tZVswXX0pO2Zvcih2 YXIgYT1uZXcgQXJyYXkodC0xKSxpPTE7aTx0OysraSl7dmFyIG89bltpLTFd LHM9bltpXTthW2ktMV09W29bMV0sc1sxXV19ciYmYS5wdXNoKFstMSxhWzBd WzFdXSxbYVt0LTFdWzFdLC0xXSk7cmV0dXJuIGF9KHIsdCxlKTtmb3IodmFy IGw9bmV3IEFycmF5KHIpLGM9MSx1PTA7dTxyOysrdSl7Zm9yKHZhciBoPXRb dV0sZj1uZXcgQXJyYXkocysxKSxwPTAsZD0wO2Q8czsrK2Qpe3ZhciBnPWhb ZF07ZltkXT1nLHArPWcqZ31mW3NdPXAsbFt1XT1uZXcgaShmLHUpLGM9TWF0 aC5tYXgocCxjKX1hKGwsbykscj1sLmxlbmd0aDtmb3IodmFyIHY9bmV3IEFy cmF5KHIrcysxKSxtPW5ldyBBcnJheShyK3MrMSkseT0ocysxKSoocysxKSpj LHg9bmV3IEFycmF5KHMrMSksdT0wO3U8PXM7Kyt1KXhbdV09MDt4W3NdPXks dlswXT14LnNsaWNlKCksbVswXT0tMTtmb3IodmFyIHU9MDt1PD1zOysrdSl7 dmFyIGY9eC5zbGljZSgpO2ZbdV09MSx2W3UrMV09ZixtW3UrMV09LTF9Zm9y KHZhciB1PTA7dTxyOysrdSl7dmFyIGI9bFt1XTt2W3UrcysxXT1iLnBvaW50 LG1bdStzKzFdPWIuaW5kZXh9dmFyIF89bih2LCExKTtfPWU/Xy5maWx0ZXIo ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj0wO3I8PXM7KytyKXt2YXIgbj1t W3Rbcl1dO2lmKG48MCYmKytlPj0yKXJldHVybiExO3Rbcl09bn1yZXR1cm4h MH0pOl8uZmlsdGVyKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8PXM7Kytl KXt2YXIgcj1tW3RbZV1dO2lmKHI8MClyZXR1cm4hMTt0W2VdPXJ9cmV0dXJu ITB9KTtpZigxJnMpZm9yKHZhciB1PTA7dTxfLmxlbmd0aDsrK3Upe3ZhciBi PV9bdV0sZj1iWzBdO2JbMF09YlsxXSxiWzFdPWZ9cmV0dXJuIF99fSx7Imlu Y3JlbWVudGFsLWNvbnZleC1odWxsIjo0MTUsdW5pcTo1NDZ9XSwxNjg6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWk7dmFyIG49 KGkuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpKS5n ZXRDb250ZXh0KCIyZCIpLGE9byhbMzIsMTI2XSk7ZnVuY3Rpb24gaSh0LGUp e0FycmF5LmlzQXJyYXkodCkmJih0PXQuam9pbigiLCAiKSk7dmFyIHIsaT17 fSxzPTE2LGw9LjA1O2UmJigyPT09ZS5sZW5ndGgmJiJudW1iZXIiPT10eXBl b2YgZVswXT9yPW8oZSk6QXJyYXkuaXNBcnJheShlKT9yPWU6KGUubz9yPW8o ZS5vKTplLnBhaXJzJiYocj1lLnBhaXJzKSxlLmZvbnRTaXplJiYocz1lLmZv bnRTaXplKSxudWxsIT1lLnRocmVzaG9sZCYmKGw9ZS50aHJlc2hvbGQpKSks cnx8KHI9YSksbi5mb250PXMrInB4ICIrdDtmb3IodmFyIGM9MDtjPHIubGVu Z3RoO2MrKyl7dmFyIHU9cltjXSxoPW4ubWVhc3VyZVRleHQodVswXSkud2lk dGgrbi5tZWFzdXJlVGV4dCh1WzFdKS53aWR0aCxmPW4ubWVhc3VyZVRleHQo dSkud2lkdGg7aWYoTWF0aC5hYnMoaC1mKT5zKmwpe3ZhciBwPShmLWgpL3M7 aVt1XT0xZTMqcH19cmV0dXJuIGl9ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9 W10scj10WzBdO3I8PXRbMV07cisrKWZvcih2YXIgbj1TdHJpbmcuZnJvbUNo YXJDb2RlKHIpLGE9dFswXTthPHRbMV07YSsrKXt2YXIgaT1uK1N0cmluZy5m cm9tQ2hhckNvZGUoYSk7ZS5wdXNoKGkpfXJldHVybiBlfWkuY3JlYXRlUGFp cnM9byxpLmFzY2lpPWF9LHt9XSwxNjk6W2Z1bmN0aW9uKHQsZSxyKXsoZnVu Y3Rpb24odCl7dmFyIHI9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBGbG9h dDY0QXJyYXkpe3ZhciBuPW5ldyBGbG9hdDY0QXJyYXkoMSksYT1uZXcgVWlu dDMyQXJyYXkobi5idWZmZXIpO2lmKG5bMF09MSxyPSEwLDEwNzI2OTMyNDg9 PT1hWzFdKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5bMF09dCxb YVswXSxhWzFdXX0sZS5leHBvcnRzLnBhY2s9ZnVuY3Rpb24odCxlKXtyZXR1 cm4gYVswXT10LGFbMV09ZSxuWzBdfSxlLmV4cG9ydHMubG89ZnVuY3Rpb24o dCl7cmV0dXJuIG5bMF09dCxhWzBdfSxlLmV4cG9ydHMuaGk9ZnVuY3Rpb24o dCl7cmV0dXJuIG5bMF09dCxhWzFdfX1lbHNlIGlmKDEwNzI2OTMyNDg9PT1h WzBdKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5bMF09dCxbYVsx XSxhWzBdXX0sZS5leHBvcnRzLnBhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4g YVsxXT10LGFbMF09ZSxuWzBdfSxlLmV4cG9ydHMubG89ZnVuY3Rpb24odCl7 cmV0dXJuIG5bMF09dCxhWzFdfSxlLmV4cG9ydHMuaGk9ZnVuY3Rpb24odCl7 cmV0dXJuIG5bMF09dCxhWzBdfX1lbHNlIHI9ITF9aWYoIXIpe3ZhciBpPW5l dyB0KDgpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaS53cml0ZURv dWJsZUxFKHQsMCwhMCksW2kucmVhZFVJbnQzMkxFKDAsITApLGkucmVhZFVJ bnQzMkxFKDQsITApXX0sZS5leHBvcnRzLnBhY2s9ZnVuY3Rpb24odCxlKXty ZXR1cm4gaS53cml0ZVVJbnQzMkxFKHQsMCwhMCksaS53cml0ZVVJbnQzMkxF KGUsNCwhMCksaS5yZWFkRG91YmxlTEUoMCwhMCl9LGUuZXhwb3J0cy5sbz1m dW5jdGlvbih0KXtyZXR1cm4gaS53cml0ZURvdWJsZUxFKHQsMCwhMCksaS5y ZWFkVUludDMyTEUoMCwhMCl9LGUuZXhwb3J0cy5oaT1mdW5jdGlvbih0KXty ZXR1cm4gaS53cml0ZURvdWJsZUxFKHQsMCwhMCksaS5yZWFkVUludDMyTEUo NCwhMCl9fWUuZXhwb3J0cy5zaWduPWZ1bmN0aW9uKHQpe3JldHVybiBlLmV4 cG9ydHMuaGkodCk+Pj4zMX0sZS5leHBvcnRzLmV4cG9uZW50PWZ1bmN0aW9u KHQpe3JldHVybihlLmV4cG9ydHMuaGkodCk8PDE+Pj4yMSktMTAyM30sZS5l eHBvcnRzLmZyYWN0aW9uPWZ1bmN0aW9uKHQpe3ZhciByPWUuZXhwb3J0cy5s byh0KSxuPWUuZXhwb3J0cy5oaSh0KSxhPTEwNDg1NzUmbjtyZXR1cm4gMjE0 NjQzNTA3MiZuJiYoYSs9MTw8MjApLFtyLGFdfSxlLmV4cG9ydHMuZGVub3Jt YWxpemVkPWZ1bmN0aW9uKHQpe3JldHVybiEoMjE0NjQzNTA3MiZlLmV4cG9y dHMuaGkodCkpfX0pLmNhbGwodGhpcyx0KCJidWZmZXIiKS5CdWZmZXIpfSx7 YnVmZmVyOjEwN31dLDE3MDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImFi cy1zdmctcGF0aCIpLGE9dCgibm9ybWFsaXplLXN2Zy1wYXRoIiksaT17TToi bW92ZVRvIixDOiJiZXppZXJDdXJ2ZVRvIn07ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7dC5iZWdpblBhdGgoKSxhKG4oZSkpLmZvckVhY2goZnVuY3Rpb24o ZSl7dmFyIHI9ZVswXSxuPWUuc2xpY2UoMSk7dFtpW3JdXS5hcHBseSh0LG4p fSksdC5jbG9zZVBhdGgoKX19LHsiYWJzLXN2Zy1wYXRoIjo2Mywibm9ybWFs aXplLXN2Zy1wYXRoIjo0NTR9XSwxNzE6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4 cG9ydHM9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UiaW50OCI6cmV0dXJu IEludDhBcnJheTtjYXNlImludDE2IjpyZXR1cm4gSW50MTZBcnJheTtjYXNl ImludDMyIjpyZXR1cm4gSW50MzJBcnJheTtjYXNlInVpbnQ4IjpyZXR1cm4g VWludDhBcnJheTtjYXNlInVpbnQxNiI6cmV0dXJuIFVpbnQxNkFycmF5O2Nh c2UidWludDMyIjpyZXR1cm4gVWludDMyQXJyYXk7Y2FzZSJmbG9hdDMyIjpy ZXR1cm4gRmxvYXQzMkFycmF5O2Nhc2UiZmxvYXQ2NCI6cmV0dXJuIEZsb2F0 NjRBcnJheTtjYXNlImFycmF5IjpyZXR1cm4gQXJyYXk7Y2FzZSJ1aW50OF9j bGFtcGVkIjpyZXR1cm4gVWludDhDbGFtcGVkQXJyYXl9fX0se31dLDE3Mjpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXtzd2l0Y2goInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT0wKSx0 eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmlmKHQ+MClyZXR1cm4gZnVuY3Rpb24o dCxlKXt2YXIgcixuO2ZvcihyPW5ldyBBcnJheSh0KSxuPTA7bjx0Oysrbily W25dPWU7cmV0dXJuIHJ9KDB8dCxlKTticmVhaztjYXNlIm9iamVjdCI6aWYo Im51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aClyZXR1cm4gZnVuY3Rpb24gdChl LHIsbil7dmFyIGE9MHxlW25dO2lmKGE8PTApcmV0dXJuW107dmFyIGksbz1u ZXcgQXJyYXkoYSk7aWYobj09PWUubGVuZ3RoLTEpZm9yKGk9MDtpPGE7Kytp KW9baV09cjtlbHNlIGZvcihpPTA7aTxhOysraSlvW2ldPXQoZSxyLG4rMSk7 cmV0dXJuIG99KHQsZSwwKX1yZXR1cm5bXX19LHt9XSwxNzM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7cj1yfHwy O3ZhciBuLHMsbCxjLHUscCxkLHY9ZSYmZS5sZW5ndGgsbT12P2VbMF0qcjp0 Lmxlbmd0aCx5PWEodCwwLG0sciwhMCkseD1bXTtpZigheXx8eS5uZXh0PT09 eS5wcmV2KXJldHVybiB4O2lmKHYmJih5PWZ1bmN0aW9uKHQsZSxyLG4pe3Zh ciBvLHMsbCxjLHUscD1bXTtmb3Iobz0wLHM9ZS5sZW5ndGg7bzxzO28rKyls PWVbb10qbixjPW88cy0xP2VbbysxXSpuOnQubGVuZ3RoLCh1PWEodCxsLGMs biwhMSkpPT09dS5uZXh0JiYodS5zdGVpbmVyPSEwKSxwLnB1c2goZyh1KSk7 Zm9yKHAuc29ydChoKSxvPTA7bzxwLmxlbmd0aDtvKyspZihwW29dLHIpLHI9 aShyLHIubmV4dCk7cmV0dXJuIHJ9KHQsZSx5LHIpKSx0Lmxlbmd0aD44MCpy KXtuPWw9dFswXSxzPWM9dFsxXTtmb3IodmFyIGI9cjtiPG07Yis9cikodT10 W2JdKTxuJiYobj11KSwocD10W2IrMV0pPHMmJihzPXApLHU+bCYmKGw9dSks cD5jJiYoYz1wKTtkPTAhPT0oZD1NYXRoLm1heChsLW4sYy1zKSk/MS9kOjB9 cmV0dXJuIG8oeSx4LHIsbixzLGQpLHh9ZnVuY3Rpb24gYSh0LGUscixuLGEp e3ZhciBpLG87aWYoYT09PUUodCxlLHIsbik+MClmb3IoaT1lO2k8cjtpKz1u KW89TShpLHRbaV0sdFtpKzFdLG8pO2Vsc2UgZm9yKGk9ci1uO2k+PWU7aS09 bilvPU0oaSx0W2ldLHRbaSsxXSxvKTtyZXR1cm4gbyYmeChvLG8ubmV4dCkm JihBKG8pLG89by5uZXh0KSxvfWZ1bmN0aW9uIGkodCxlKXtpZighdClyZXR1 cm4gdDtlfHwoZT10KTt2YXIgcixuPXQ7ZG97aWYocj0hMSxuLnN0ZWluZXJ8 fCF4KG4sbi5uZXh0KSYmMCE9PXkobi5wcmV2LG4sbi5uZXh0KSluPW4ubmV4 dDtlbHNle2lmKEEobiksKG49ZT1uLnByZXYpPT09bi5uZXh0KWJyZWFrO3I9 ITB9fXdoaWxlKHJ8fG4hPT1lKTtyZXR1cm4gZX1mdW5jdGlvbiBvKHQsZSxy LG4sYSxoLGYpe2lmKHQpeyFmJiZoJiZmdW5jdGlvbih0LGUscixuKXt2YXIg YT10O2Rve251bGw9PT1hLnomJihhLno9ZChhLngsYS55LGUscixuKSksYS5w cmV2Wj1hLnByZXYsYS5uZXh0Wj1hLm5leHQsYT1hLm5leHR9d2hpbGUoYSE9 PXQpO2EucHJldloubmV4dFo9bnVsbCxhLnByZXZaPW51bGwsZnVuY3Rpb24o dCl7dmFyIGUscixuLGEsaSxvLHMsbCxjPTE7ZG97Zm9yKHI9dCx0PW51bGws aT1udWxsLG89MDtyOyl7Zm9yKG8rKyxuPXIscz0wLGU9MDtlPGMmJihzKyss bj1uLm5leHRaKTtlKyspO2ZvcihsPWM7cz4wfHxsPjAmJm47KTAhPT1zJiYo MD09PWx8fCFufHxyLno8PW4ueik/KGE9cixyPXIubmV4dFoscy0tKTooYT1u LG49bi5uZXh0WixsLS0pLGk/aS5uZXh0Wj1hOnQ9YSxhLnByZXZaPWksaT1h O3I9bn1pLm5leHRaPW51bGwsYyo9Mn13aGlsZShvPjEpfShhKX0odCxuLGEs aCk7Zm9yKHZhciBwLGcsdj10O3QucHJldiE9PXQubmV4dDspaWYocD10LnBy ZXYsZz10Lm5leHQsaD9sKHQsbixhLGgpOnModCkpZS5wdXNoKHAuaS9yKSxl LnB1c2godC5pL3IpLGUucHVzaChnLmkvciksQSh0KSx0PWcubmV4dCx2PWcu bmV4dDtlbHNlIGlmKCh0PWcpPT09dil7Zj8xPT09Zj9vKHQ9YyhpKHQpLGUs ciksZSxyLG4sYSxoLDIpOjI9PT1mJiZ1KHQsZSxyLG4sYSxoKTpvKGkodCks ZSxyLG4sYSxoLDEpO2JyZWFrfX19ZnVuY3Rpb24gcyh0KXt2YXIgZT10LnBy ZXYscj10LG49dC5uZXh0O2lmKHkoZSxyLG4pPj0wKXJldHVybiExO2Zvcih2 YXIgYT10Lm5leHQubmV4dDthIT09dC5wcmV2Oyl7aWYodihlLngsZS55LHIu eCxyLnksbi54LG4ueSxhLngsYS55KSYmeShhLnByZXYsYSxhLm5leHQpPj0w KXJldHVybiExO2E9YS5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIGwodCxlLHIs bil7dmFyIGE9dC5wcmV2LGk9dCxvPXQubmV4dDtpZih5KGEsaSxvKT49MCly ZXR1cm4hMTtmb3IodmFyIHM9YS54PGkueD9hLng8by54P2EueDpvLng6aS54 PG8ueD9pLng6by54LGw9YS55PGkueT9hLnk8by55P2EueTpvLnk6aS55PG8u eT9pLnk6by55LGM9YS54PmkueD9hLng+by54P2EueDpvLng6aS54Pm8ueD9p Lng6by54LHU9YS55PmkueT9hLnk+by55P2EueTpvLnk6aS55Pm8ueT9pLnk6 by55LGg9ZChzLGwsZSxyLG4pLGY9ZChjLHUsZSxyLG4pLHA9dC5wcmV2Wixn PXQubmV4dFo7cCYmcC56Pj1oJiZnJiZnLno8PWY7KXtpZihwIT09dC5wcmV2 JiZwIT09dC5uZXh0JiZ2KGEueCxhLnksaS54LGkueSxvLngsby55LHAueCxw LnkpJiZ5KHAucHJldixwLHAubmV4dCk+PTApcmV0dXJuITE7aWYocD1wLnBy ZXZaLGchPT10LnByZXYmJmchPT10Lm5leHQmJnYoYS54LGEueSxpLngsaS55 LG8ueCxvLnksZy54LGcueSkmJnkoZy5wcmV2LGcsZy5uZXh0KT49MClyZXR1 cm4hMTtnPWcubmV4dFp9Zm9yKDtwJiZwLno+PWg7KXtpZihwIT09dC5wcmV2 JiZwIT09dC5uZXh0JiZ2KGEueCxhLnksaS54LGkueSxvLngsby55LHAueCxw LnkpJiZ5KHAucHJldixwLHAubmV4dCk+PTApcmV0dXJuITE7cD1wLnByZXZa fWZvcig7ZyYmZy56PD1mOyl7aWYoZyE9PXQucHJldiYmZyE9PXQubmV4dCYm dihhLngsYS55LGkueCxpLnksby54LG8ueSxnLngsZy55KSYmeShnLnByZXYs ZyxnLm5leHQpPj0wKXJldHVybiExO2c9Zy5uZXh0Wn1yZXR1cm4hMH1mdW5j dGlvbiBjKHQsZSxyKXt2YXIgbj10O2Rve3ZhciBhPW4ucHJldixvPW4ubmV4 dC5uZXh0OyF4KGEsbykmJmIoYSxuLG4ubmV4dCxvKSYmayhhLG8pJiZrKG8s YSkmJihlLnB1c2goYS5pL3IpLGUucHVzaChuLmkvciksZS5wdXNoKG8uaS9y KSxBKG4pLEEobi5uZXh0KSxuPXQ9byksbj1uLm5leHR9d2hpbGUobiE9PXQp O3JldHVybiBpKG4pfWZ1bmN0aW9uIHUodCxlLHIsbixhLHMpe3ZhciBsPXQ7 ZG97Zm9yKHZhciBjPWwubmV4dC5uZXh0O2MhPT1sLnByZXY7KXtpZihsLmkh PT1jLmkmJm0obCxjKSl7dmFyIHU9VChsLGMpO3JldHVybiBsPWkobCxsLm5l eHQpLHU9aSh1LHUubmV4dCksbyhsLGUscixuLGEscyksdm9pZCBvKHUsZSxy LG4sYSxzKX1jPWMubmV4dH1sPWwubmV4dH13aGlsZShsIT09dCl9ZnVuY3Rp b24gaCh0LGUpe3JldHVybiB0LngtZS54fWZ1bmN0aW9uIGYodCxlKXtpZihl PWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1lLGE9dC54LGk9dC55LG89LTEvMDtk b3tpZihpPD1uLnkmJmk+PW4ubmV4dC55JiZuLm5leHQueSE9PW4ueSl7dmFy IHM9bi54KyhpLW4ueSkqKG4ubmV4dC54LW4ueCkvKG4ubmV4dC55LW4ueSk7 aWYoczw9YSYmcz5vKXtpZihvPXMscz09PWEpe2lmKGk9PT1uLnkpcmV0dXJu IG47aWYoaT09PW4ubmV4dC55KXJldHVybiBuLm5leHR9cj1uLng8bi5uZXh0 Lng/bjpuLm5leHR9fW49bi5uZXh0fXdoaWxlKG4hPT1lKTtpZighcilyZXR1 cm4gbnVsbDtpZihhPT09bylyZXR1cm4gcjt2YXIgbCxjPXIsdT1yLngsaD1y LnksZj0xLzA7bj1yO2Rve2E+PW4ueCYmbi54Pj11JiZhIT09bi54JiZ2KGk8 aD9hOm8saSx1LGgsaTxoP286YSxpLG4ueCxuLnkpJiYobD1NYXRoLmFicyhp LW4ueSkvKGEtbi54KSxrKG4sdCkmJihsPGZ8fGw9PT1mJiYobi54PnIueHx8 bi54PT09ci54JiZwKHIsbikpKSYmKHI9bixmPWwpKSxuPW4ubmV4dH13aGls ZShuIT09Yyk7cmV0dXJuIHJ9KHQsZSkpe3ZhciByPVQoZSx0KTtpKHIsci5u ZXh0KX19ZnVuY3Rpb24gcCh0LGUpe3JldHVybiB5KHQucHJldix0LGUucHJl dik8MCYmeShlLm5leHQsdCx0Lm5leHQpPDB9ZnVuY3Rpb24gZCh0LGUscixu LGEpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9MjUy NjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9MzI3NjcqKHQtcikqYSl8dDw8OCkp fHQ8PDQpKXx0PDwyKSl8dDw8MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5 MzQ1OSYoKGU9MjUyNjQ1MTM1JigoZT0xNjcxMTkzNSYoKGU9MzI3NjcqKGUt bikqYSl8ZTw8OCkpfGU8PDQpKXxlPDwyKSl8ZTw8MSkpPDwxfWZ1bmN0aW9u IGcodCl7dmFyIGU9dCxyPXQ7ZG97KGUueDxyLnh8fGUueD09PXIueCYmZS55 PHIueSkmJihyPWUpLGU9ZS5uZXh0fXdoaWxlKGUhPT10KTtyZXR1cm4gcn1m dW5jdGlvbiB2KHQsZSxyLG4sYSxpLG8scyl7cmV0dXJuKGEtbykqKGUtcykt KHQtbykqKGktcyk+PTAmJih0LW8pKihuLXMpLShyLW8pKihlLXMpPj0wJiYo ci1vKSooaS1zKS0oYS1vKSoobi1zKT49MH1mdW5jdGlvbiBtKHQsZSl7cmV0 dXJuIHQubmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIWZ1bmN0aW9u KHQsZSl7dmFyIHI9dDtkb3tpZihyLmkhPT10LmkmJnIubmV4dC5pIT09dC5p JiZyLmkhPT1lLmkmJnIubmV4dC5pIT09ZS5pJiZiKHIsci5uZXh0LHQsZSkp cmV0dXJuITA7cj1yLm5leHR9d2hpbGUociE9PXQpO3JldHVybiExfSh0LGUp JiYoayh0LGUpJiZrKGUsdCkmJmZ1bmN0aW9uKHQsZSl7dmFyIHI9dCxuPSEx LGE9KHQueCtlLngpLzIsaT0odC55K2UueSkvMjtkb3tyLnk+aSE9ci5uZXh0 Lnk+aSYmci5uZXh0LnkhPT1yLnkmJmE8KHIubmV4dC54LXIueCkqKGktci55 KS8oci5uZXh0Lnktci55KStyLngmJihuPSFuKSxyPXIubmV4dH13aGlsZShy IT09dCk7cmV0dXJuIG59KHQsZSkmJih5KHQucHJldix0LGUucHJldil8fHko dCxlLnByZXYsZSkpfHx4KHQsZSkmJnkodC5wcmV2LHQsdC5uZXh0KT4wJiZ5 KGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24geSh0LGUscil7cmV0dXJu KGUueS10LnkpKihyLngtZS54KS0oZS54LXQueCkqKHIueS1lLnkpfWZ1bmN0 aW9uIHgodCxlKXtyZXR1cm4gdC54PT09ZS54JiZ0Lnk9PT1lLnl9ZnVuY3Rp b24gYih0LGUscixuKXt2YXIgYT13KHkodCxlLHIpKSxpPXcoeSh0LGUsbikp LG89dyh5KHIsbix0KSkscz13KHkocixuLGUpKTtyZXR1cm4gYSE9PWkmJm8h PT1zfHwoISgwIT09YXx8IV8odCxyLGUpKXx8KCEoMCE9PWl8fCFfKHQsbixl KSl8fCghKDAhPT1vfHwhXyhyLHQsbikpfHwhKDAhPT1zfHwhXyhyLGUsbikp KSkpfWZ1bmN0aW9uIF8odCxlLHIpe3JldHVybiBlLng8PU1hdGgubWF4KHQu eCxyLngpJiZlLng+PU1hdGgubWluKHQueCxyLngpJiZlLnk8PU1hdGgubWF4 KHQueSxyLnkpJiZlLnk+PU1hdGgubWluKHQueSxyLnkpfWZ1bmN0aW9uIHco dCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfWZ1bmN0aW9uIGsodCxlKXtyZXR1 cm4geSh0LnByZXYsdCx0Lm5leHQpPDA/eSh0LGUsdC5uZXh0KT49MCYmeSh0 LHQucHJldixlKT49MDp5KHQsZSx0LnByZXYpPDB8fHkodCx0Lm5leHQsZSk8 MH1mdW5jdGlvbiBUKHQsZSl7dmFyIHI9bmV3IFModC5pLHQueCx0LnkpLG49 bmV3IFMoZS5pLGUueCxlLnkpLGE9dC5uZXh0LGk9ZS5wcmV2O3JldHVybiB0 Lm5leHQ9ZSxlLnByZXY9dCxyLm5leHQ9YSxhLnByZXY9cixuLm5leHQ9cixy LnByZXY9bixpLm5leHQ9bixuLnByZXY9aSxufWZ1bmN0aW9uIE0odCxlLHIs bil7dmFyIGE9bmV3IFModCxlLHIpO3JldHVybiBuPyhhLm5leHQ9bi5uZXh0 LGEucHJldj1uLG4ubmV4dC5wcmV2PWEsbi5uZXh0PWEpOihhLnByZXY9YSxh Lm5leHQ9YSksYX1mdW5jdGlvbiBBKHQpe3QubmV4dC5wcmV2PXQucHJldix0 LnByZXYubmV4dD10Lm5leHQsdC5wcmV2WiYmKHQucHJldloubmV4dFo9dC5u ZXh0WiksdC5uZXh0WiYmKHQubmV4dFoucHJldlo9dC5wcmV2Wil9ZnVuY3Rp b24gUyh0LGUscil7dGhpcy5pPXQsdGhpcy54PWUsdGhpcy55PXIsdGhpcy5w cmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2 Wj1udWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9ZnVuY3Rp b24gRSh0LGUscixuKXtmb3IodmFyIGE9MCxpPWUsbz1yLW47aTxyO2krPW4p YSs9KHRbb10tdFtpXSkqKHRbaSsxXSt0W28rMV0pLG89aTtyZXR1cm4gYX1l LmV4cG9ydHM9bixlLmV4cG9ydHMuZGVmYXVsdD1uLG4uZGV2aWF0aW9uPWZ1 bmN0aW9uKHQsZSxyLG4pe3ZhciBhPWUmJmUubGVuZ3RoLGk9YT9lWzBdKnI6 dC5sZW5ndGgsbz1NYXRoLmFicyhFKHQsMCxpLHIpKTtpZihhKWZvcih2YXIg cz0wLGw9ZS5sZW5ndGg7czxsO3MrKyl7dmFyIGM9ZVtzXSpyLHU9czxsLTE/ ZVtzKzFdKnI6dC5sZW5ndGg7by09TWF0aC5hYnMoRSh0LGMsdSxyKSl9dmFy IGg9MDtmb3Iocz0wO3M8bi5sZW5ndGg7cys9Myl7dmFyIGY9bltzXSpyLHA9 bltzKzFdKnIsZD1uW3MrMl0qcjtoKz1NYXRoLmFicygodFtmXS10W2RdKSoo dFtwKzFdLXRbZisxXSktKHRbZl0tdFtwXSkqKHRbZCsxXS10W2YrMV0pKX1y ZXR1cm4gMD09PW8mJjA9PT1oPzA6TWF0aC5hYnMoKGgtbykvbyl9LG4uZmxh dHRlbj1mdW5jdGlvbih0KXtmb3IodmFyIGU9dFswXVswXS5sZW5ndGgscj17 dmVydGljZXM6W10saG9sZXM6W10sZGltZW5zaW9uczplfSxuPTAsYT0wO2E8 dC5sZW5ndGg7YSsrKXtmb3IodmFyIGk9MDtpPHRbYV0ubGVuZ3RoO2krKylm b3IodmFyIG89MDtvPGU7bysrKXIudmVydGljZXMucHVzaCh0W2FdW2ldW29d KTthPjAmJihuKz10W2EtMV0ubGVuZ3RoLHIuaG9sZXMucHVzaChuKSl9cmV0 dXJuIHJ9fSx7fV0sMTc0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQubGVuZ3RoO2lmKCJu dW1iZXIiIT10eXBlb2YgZSl7ZT0wO2Zvcih2YXIgYT0wO2E8cjsrK2Epe3Zh ciBpPXRbYV07ZT1NYXRoLm1heChlLGlbMF0saVsxXSl9ZT0xKygwfGUpfWV8 PTA7Zm9yKHZhciBvPW5ldyBBcnJheShlKSxhPTA7YTxlOysrYSlvW2FdPVtd O2Zvcih2YXIgYT0wO2E8cjsrK2Epe3ZhciBpPXRbYV07b1tpWzBdXS5wdXNo KGlbMV0pLG9baVsxXV0ucHVzaChpWzBdKX1mb3IodmFyIHM9MDtzPGU7Kytz KW4ob1tzXSxmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KTtyZXR1cm4gb307 dmFyIG49dCgidW5pcSIpfSx7dW5pcTo1NDZ9XSwxNzU6W2Z1bmN0aW9uKHQs ZSxyKXt2YXIgbj10KCJzdHJvbmdseS1jb25uZWN0ZWQtY29tcG9uZW50cyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyPVtdLGE9W10saT1bXSxv PXt9LHM9W107ZnVuY3Rpb24gbCh0KXt2YXIgcixuLHU9ITE7Zm9yKGEucHVz aCh0KSxpW3RdPSEwLHI9MDtyPHNbdF0ubGVuZ3RoO3IrKykobj1zW3RdW3Jd KT09PWU/KGMoZSxhKSx1PSEwKTppW25dfHwodT1sKG4pKTtpZih1KSFmdW5j dGlvbiB0KGUpe2lbZV09ITEsby5oYXNPd25Qcm9wZXJ0eShlKSYmT2JqZWN0 LmtleXMob1tlXSkuZm9yRWFjaChmdW5jdGlvbihyKXtkZWxldGUgb1tlXVty XSxpW3JdJiZ0KHIpfSl9KHQpO2Vsc2UgZm9yKHI9MDtyPHNbdF0ubGVuZ3Ro O3IrKyl7bj1zW3RdW3JdO3ZhciBoPW9bbl07aHx8KGg9e30sb1tuXT1oKSxo W25dPSEwfXJldHVybiBhLnBvcCgpLHV9ZnVuY3Rpb24gYyh0LGUpe3ZhciBu PVtdLmNvbmNhdChlKS5jb25jYXQodCk7ci5wdXNoKG4pfWZ1bmN0aW9uIHUo ZSl7IWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXI8 ZSYmKHRbcl09W10pLHRbcl09dFtyXS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0 dXJuIHQ+PWV9KX0oZSk7Zm9yKHZhciByLGE9bih0KS5jb21wb25lbnRzLmZp bHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MX0pLGk9MS8wLG89 MDtvPGEubGVuZ3RoO28rKylmb3IodmFyIHM9MDtzPGFbb10ubGVuZ3RoO3Mr KylhW29dW3NdPGkmJihpPWFbb11bc10scj1vKTt2YXIgbD1hW3JdO3JldHVy biEhbCYme2xlYXN0VmVydGV4OmksYWRqTGlzdDp0Lm1hcChmdW5jdGlvbih0 LGUpe3JldHVybi0xPT09bC5pbmRleE9mKGUpP1tdOnQuZmlsdGVyKGZ1bmN0 aW9uKHQpe3JldHVybi0xIT09bC5pbmRleE9mKHQpfSl9KX19ZT0wO2Zvcih2 YXIgaD10Lmxlbmd0aDtlPGg7KXt2YXIgZj11KGUpO2lmKGU9Zi5sZWFzdFZl cnRleCxzPWYuYWRqTGlzdCl7Zm9yKHZhciBwPTA7cDxzLmxlbmd0aDtwKysp Zm9yKHZhciBkPTA7ZDxzW3BdLmxlbmd0aDtkKyspe3ZhciBnPXNbcF1bZF07 aVsrZ109ITEsb1tnXT17fX1sKGUpLGUrPTF9ZWxzZSBlPWh9cmV0dXJuIHJ9 fSx7InN0cm9uZ2x5LWNvbm5lY3RlZC1jb21wb25lbnRzIjo1Mjl9XSwxNzY6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v b2JqZWN0L3ZhbGlkLXZhbHVlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0 dXJuIG4odGhpcykubGVuZ3RoPTAsdGhpc319LHsiLi4vLi4vb2JqZWN0L3Zh bGlkLXZhbHVlIjoyMDh9XSwxNzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPXQoIi4vaXMtaW1wbGVtZW50ZWQiKSgpP0FycmF5 LmZyb206dCgiLi9zaGltIil9LHsiLi9pcy1pbXBsZW1lbnRlZCI6MTc4LCIu L3NoaW0iOjE3OX1dLDE3ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdCxlLHI9QXJyYXkuZnJvbTty ZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgciYmKGU9cih0PVsicmF6IiwiZHdh Il0pLEJvb2xlYW4oZSYmZSE9PXQmJiJkd2EiPT09ZVsxXSkpfX0se31dLDE3 OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJlczYt c3ltYm9sIikuaXRlcmF0b3IsYT10KCIuLi8uLi9mdW5jdGlvbi9pcy1hcmd1 bWVudHMiKSxpPXQoIi4uLy4uL2Z1bmN0aW9uL2lzLWZ1bmN0aW9uIiksbz10 KCIuLi8uLi9udW1iZXIvdG8tcG9zLWludGVnZXIiKSxzPXQoIi4uLy4uL29i amVjdC92YWxpZC1jYWxsYWJsZSIpLGw9dCgiLi4vLi4vb2JqZWN0L3ZhbGlk LXZhbHVlIiksYz10KCIuLi8uLi9vYmplY3QvaXMtdmFsdWUiKSx1PXQoIi4u Ly4uL3N0cmluZy9pcy1zdHJpbmciKSxoPUFycmF5LmlzQXJyYXksZj1GdW5j dGlvbi5wcm90b3R5cGUuY2FsbCxwPXtjb25maWd1cmFibGU6ITAsZW51bWVy YWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpudWxsfSxkPU9iamVjdC5kZWZp bmVQcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscixnLHYs bSx5LHgsYixfLHcsaz1hcmd1bWVudHNbMV0sVD1hcmd1bWVudHNbMl07aWYo dD1PYmplY3QobCh0KSksYyhrKSYmcyhrKSx0aGlzJiZ0aGlzIT09QXJyYXkm JmkodGhpcykpZT10aGlzO2Vsc2V7aWYoIWspe2lmKGEodCkpcmV0dXJuIDEh PT0obT10Lmxlbmd0aCk/QXJyYXkuYXBwbHkobnVsbCx0KTooKHY9bmV3IEFy cmF5KDEpKVswXT10WzBdLHYpO2lmKGgodCkpe2Zvcih2PW5ldyBBcnJheSht PXQubGVuZ3RoKSxyPTA7cjxtOysrcil2W3JdPXRbcl07cmV0dXJuIHZ9fXY9 W119aWYoIWgodCkpaWYodm9pZCAwIT09KF89dFtuXSkpe2Zvcih4PXMoXyku Y2FsbCh0KSxlJiYodj1uZXcgZSksYj14Lm5leHQoKSxyPTA7IWIuZG9uZTsp dz1rP2YuY2FsbChrLFQsYi52YWx1ZSxyKTpiLnZhbHVlLGU/KHAudmFsdWU9 dyxkKHYscixwKSk6dltyXT13LGI9eC5uZXh0KCksKytyO209cn1lbHNlIGlm KHUodCkpe2ZvcihtPXQubGVuZ3RoLGUmJih2PW5ldyBlKSxyPTAsZz0wO3I8 bTsrK3Ipdz10W3JdLHIrMTxtJiYoeT13LmNoYXJDb2RlQXQoMCkpPj01NTI5 NiYmeTw9NTYzMTkmJih3Kz10Wysrcl0pLHc9az9mLmNhbGwoayxULHcsZyk6 dyxlPyhwLnZhbHVlPXcsZCh2LGcscCkpOnZbZ109dywrK2c7bT1nfWlmKHZv aWQgMD09PW0pZm9yKG09byh0Lmxlbmd0aCksZSYmKHY9bmV3IGUobSkpLHI9 MDtyPG07KytyKXc9az9mLmNhbGwoayxULHRbcl0scik6dFtyXSxlPyhwLnZh bHVlPXcsZCh2LHIscCkpOnZbcl09dztyZXR1cm4gZSYmKHAudmFsdWU9bnVs bCx2Lmxlbmd0aD1tKSx2fX0seyIuLi8uLi9mdW5jdGlvbi9pcy1hcmd1bWVu dHMiOjE4MCwiLi4vLi4vZnVuY3Rpb24vaXMtZnVuY3Rpb24iOjE4MSwiLi4v Li4vbnVtYmVyL3RvLXBvcy1pbnRlZ2VyIjoxODcsIi4uLy4uL29iamVjdC9p cy12YWx1ZSI6MTk3LCIuLi8uLi9vYmplY3QvdmFsaWQtY2FsbGFibGUiOjIw NiwiLi4vLi4vb2JqZWN0L3ZhbGlkLXZhbHVlIjoyMDgsIi4uLy4uL3N0cmlu Zy9pcy1zdHJpbmciOjIxMiwiZXM2LXN5bWJvbCI6MjIyfV0sMTgwOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPU9iamVjdC5wcm90b3R5 cGUudG9TdHJpbmcsYT1uLmNhbGwoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1l bnRzfSgpKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4uY2FsbCh0 KT09PWF9fSx7fV0sMTgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsYT1uLmNhbGwodCgi Li9ub29wIikpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rp b24iPT10eXBlb2YgdCYmbi5jYWxsKHQpPT09YX19LHsiLi9ub29wIjoxODJ9 XSwxODI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PWZ1bmN0aW9uKCl7fX0se31dLDE4MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9pcy1pbXBsZW1lbnRlZCIpKCk/TWF0 aC5zaWduOnQoIi4vc2hpbSIpfSx7Ii4vaXMtaW1wbGVtZW50ZWQiOjE4NCwi Li9zaGltIjoxODV9XSwxODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9TWF0aC5zaWduO3JldHVy biJmdW5jdGlvbiI9PXR5cGVvZiB0JiYoMT09PXQoMTApJiYtMT09PXQoLTIw KSl9fSx7fV0sMTg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD1OdW1iZXIodCksaXNOYU4o dCl8fDA9PT10P3Q6dD4wPzE6LTF9fSx7fV0sMTg2OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL21hdGgvc2lnbiIpLGE9TWF0 aC5hYnMsaT1NYXRoLmZsb29yO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1 cm4gaXNOYU4odCk/MDowIT09KHQ9TnVtYmVyKHQpKSYmaXNGaW5pdGUodCk/ bih0KSppKGEodCkpOnR9fSx7Ii4uL21hdGgvc2lnbiI6MTgzfV0sMTg3Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vdG8taW50 ZWdlciIpLGE9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVy biBhKDAsbih0KSl9fSx7Ii4vdG8taW50ZWdlciI6MTg2fV0sMTg4OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vdmFsaWQtY2Fs bGFibGUiKSxhPXQoIi4vdmFsaWQtdmFsdWUiKSxpPUZ1bmN0aW9uLnByb3Rv dHlwZS5iaW5kLG89RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwscz1PYmplY3Qu a2V5cyxsPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIsYyl7 dmFyIHUsaD1hcmd1bWVudHNbMl0sZj1hcmd1bWVudHNbM107cmV0dXJuIHI9 T2JqZWN0KGEocikpLG4oYyksdT1zKHIpLGYmJnUuc29ydCgiZnVuY3Rpb24i PT10eXBlb2YgZj9pLmNhbGwoZixyKTp2b2lkIDApLCJmdW5jdGlvbiIhPXR5 cGVvZiB0JiYodD11W3RdKSxvLmNhbGwodCx1LGZ1bmN0aW9uKHQsbil7cmV0 dXJuIGwuY2FsbChyLHQpP28uY2FsbChjLGgsclt0XSx0LHIsbik6ZX0pfX19 LHsiLi92YWxpZC1jYWxsYWJsZSI6MjA2LCIuL3ZhbGlkLXZhbHVlIjoyMDh9 XSwxODk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PXQoIi4vaXMtaW1wbGVtZW50ZWQiKSgpP09iamVjdC5hc3NpZ246dCgiLi9z aGltIil9LHsiLi9pcy1pbXBsZW1lbnRlZCI6MTkwLCIuL3NoaW0iOjE5MX1d LDE5MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 ZnVuY3Rpb24oKXt2YXIgdCxlPU9iamVjdC5hc3NpZ247cmV0dXJuImZ1bmN0 aW9uIj09dHlwZW9mIGUmJihlKHQ9e2ZvbzoicmF6In0se2JhcjoiZHdhIn0s e3Ryenk6InRyenkifSksdC5mb28rdC5iYXIrdC50cnp5PT09InJhemR3YXRy enkiKX19LHt9XSwxOTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4va2V5cyIpLGE9dCgiLi4vdmFsaWQtdmFsdWUiKSxpPU1h dGgubWF4O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG8scyxsPWko YXJndW1lbnRzLmxlbmd0aCwyKTtmb3IodD1PYmplY3QoYSh0KSkscz1mdW5j dGlvbihuKXt0cnl7dFtuXT1lW25dfWNhdGNoKHQpe3J8fChyPXQpfX0sbz0x O288bDsrK28pZT1hcmd1bWVudHNbb10sbihlKS5mb3JFYWNoKHMpO2lmKHZv aWQgMCE9PXIpdGhyb3cgcjtyZXR1cm4gdH19LHsiLi4va2V5cyI6MTk4LCIu Li92YWxpZC12YWx1ZSI6MjA4fV0sMTkyOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2FycmF5L2Zyb20iKSxhPXQoIi4vYXNz aWduIiksaT10KCIuL3ZhbGlkLXZhbHVlIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQpe3ZhciBlPU9iamVjdChpKHQpKSxyPWFyZ3VtZW50c1sxXSxvPU9iamVj dChhcmd1bWVudHNbMl0pO2lmKGUhPT10JiYhcilyZXR1cm4gZTt2YXIgcz17 fTtyZXR1cm4gcj9uKHIsZnVuY3Rpb24oZSl7KG8uZW5zdXJlfHxlIGluIHQp JiYoc1tlXT10W2VdKX0pOmEocyx0KSxzfX0seyIuLi9hcnJheS9mcm9tIjox NzcsIi4vYXNzaWduIjoxODksIi4vdmFsaWQtdmFsdWUiOjIwOH1dLDE5Mzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhLGksbyxzPU9i amVjdC5jcmVhdGU7dCgiLi9zZXQtcHJvdG90eXBlLW9mL2lzLWltcGxlbWVu dGVkIikoKXx8KG49dCgiLi9zZXQtcHJvdG90eXBlLW9mL3NoaW0iKSksZS5l eHBvcnRzPW4/MSE9PW4ubGV2ZWw/czooYT17fSxpPXt9LG89e2NvbmZpZ3Vy YWJsZTohMSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQg MH0sT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlw ZSkuZm9yRWFjaChmdW5jdGlvbih0KXtpW3RdPSJfX3Byb3RvX18iIT09dD9v Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2 YWx1ZTp2b2lkIDB9fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYSxpKSxP YmplY3QuZGVmaW5lUHJvcGVydHkobiwibnVsbFBvbHlmaWxsIix7Y29uZmln dXJhYmxlOiExLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITEsdmFsdWU6YX0p LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHMobnVsbD09PXQ/YTp0LGUpfSk6c30s eyIuL3NldC1wcm90b3R5cGUtb2YvaXMtaW1wbGVtZW50ZWQiOjIwNCwiLi9z ZXQtcHJvdG90eXBlLW9mL3NoaW0iOjIwNX1dLDE5NDpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9faXRlcmF0ZSIpKCJm b3JFYWNoIil9LHsiLi9faXRlcmF0ZSI6MTg4fV0sMTk1OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1 cm4iZnVuY3Rpb24iPT10eXBlb2YgdH19LHt9XSwxOTY6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9pcy12YWx1ZSIpLGE9e2Z1 bmN0aW9uOiEwLG9iamVjdDohMH07ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3Jl dHVybiBuKHQpJiZhW3R5cGVvZiB0XXx8ITF9fSx7Ii4vaXMtdmFsdWUiOjE5 N31dLDE5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi9mdW5jdGlvbi9ub29wIikoKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7 cmV0dXJuIHQhPT1uJiZudWxsIT09dH19LHsiLi4vZnVuY3Rpb24vbm9vcCI6 MTgyfV0sMTk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz10KCIuL2lzLWltcGxlbWVudGVkIikoKT9PYmplY3Qua2V5czp0KCIu L3NoaW0iKX0seyIuL2lzLWltcGxlbWVudGVkIjoxOTksIi4vc2hpbSI6MjAw fV0sMTk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbigpe3RyeXtyZXR1cm4gT2JqZWN0LmtleXMoInByaW1pdGl2 ZSIpLCEwfWNhdGNoKHQpe3JldHVybiExfX19LHt9XSwyMDA6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vaXMtdmFsdWUiKSxh PU9iamVjdC5rZXlzO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYShu KHQpP09iamVjdCh0KTp0KX19LHsiLi4vaXMtdmFsdWUiOjE5N31dLDIwMTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3ZhbGlk LWNhbGxhYmxlIiksYT10KCIuL2Zvci1lYWNoIiksaT1GdW5jdGlvbi5wcm90 b3R5cGUuY2FsbDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj17fSxv PWFyZ3VtZW50c1syXTtyZXR1cm4gbihlKSxhKHQsZnVuY3Rpb24odCxuLGEs cyl7cltuXT1pLmNhbGwoZSxvLHQsbixhLHMpfSkscn19LHsiLi9mb3ItZWFj aCI6MTk0LCIuL3ZhbGlkLWNhbGxhYmxlIjoyMDZ9XSwyMDI6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9pcy12YWx1ZSIpLGE9 QXJyYXkucHJvdG90eXBlLmZvckVhY2gsaT1PYmplY3QuY3JlYXRlO2UuZXhw b3J0cz1mdW5jdGlvbih0KXt2YXIgZT1pKG51bGwpO3JldHVybiBhLmNhbGwo YXJndW1lbnRzLGZ1bmN0aW9uKHQpe24odCkmJmZ1bmN0aW9uKHQsZSl7dmFy IHI7Zm9yKHIgaW4gdCllW3JdPXRbcl19KE9iamVjdCh0KSxlKX0pLGV9fSx7 Ii4vaXMtdmFsdWUiOjE5N31dLDIwMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9pcy1pbXBsZW1lbnRlZCIpKCk/T2Jq ZWN0LnNldFByb3RvdHlwZU9mOnQoIi4vc2hpbSIpfSx7Ii4vaXMtaW1wbGVt ZW50ZWQiOjIwNCwiLi9zaGltIjoyMDV9XSwyMDQ6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49T2JqZWN0LmNyZWF0ZSxhPU9iamVjdC5n ZXRQcm90b3R5cGVPZixpPXt9O2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0 PU9iamVjdC5zZXRQcm90b3R5cGVPZixlPWFyZ3VtZW50c1swXXx8bjtyZXR1 cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmYSh0KGUobnVsbCksaSkpPT09aX19 LHt9XSwyMDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4s YSxpLG8scz10KCIuLi9pcy1vYmplY3QiKSxsPXQoIi4uL3ZhbGlkLXZhbHVl IiksYz1PYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YsdT1PYmplY3Qu ZGVmaW5lUHJvcGVydHksaD17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6 ITEsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfTtuPWZ1bmN0aW9uKHQsZSl7 aWYobCh0KSxudWxsPT09ZXx8cyhlKSlyZXR1cm4gdDt0aHJvdyBuZXcgVHlw ZUVycm9yKCJQcm90b3R5cGUgbXVzdCBiZSBudWxsIG9yIGFuIG9iamVjdCIp fSxlLmV4cG9ydHM9KGE9ZnVuY3Rpb24oKXt2YXIgdCxlPU9iamVjdC5jcmVh dGUobnVsbCkscj17fSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0 b3IoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIik7aWYobil7dHJ5eyh0 PW4uc2V0KS5jYWxsKGUscil9Y2F0Y2godCl7fWlmKE9iamVjdC5nZXRQcm90 b3R5cGVPZihlKT09PXIpcmV0dXJue3NldDp0LGxldmVsOjJ9fXJldHVybiBl Ll9fcHJvdG9fXz1yLE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PXI/e2xl dmVsOjJ9OigoZT17fSkuX19wcm90b19fPXIsT2JqZWN0LmdldFByb3RvdHlw ZU9mKGUpPT09ciYme2xldmVsOjF9KX0oKSk/KDI9PT1hLmxldmVsP2Euc2V0 PyhvPWEuc2V0LGk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5jYWxsKG4odCxl KSxlKSx0fSk6aT1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQsZSkuX19wcm90 b19fPWUsdH06aT1mdW5jdGlvbiB0KGUscil7dmFyIGE7cmV0dXJuIG4oZSxy KSwoYT1jLmNhbGwodC5udWxsUG9seWZpbGwsZSkpJiZkZWxldGUgdC5udWxs UG9seWZpbGwuX19wcm90b19fLG51bGw9PT1yJiYocj10Lm51bGxQb2x5Zmls bCksZS5fX3Byb3RvX189cixhJiZ1KHQubnVsbFBvbHlmaWxsLCJfX3Byb3Rv X18iLGgpLGV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJsZXZlbCIse2Nv bmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExLHZhbHVl OmEubGV2ZWx9KSk6bnVsbCx0KCIuLi9jcmVhdGUiKX0seyIuLi9jcmVhdGUi OjE5MywiLi4vaXMtb2JqZWN0IjoxOTYsIi4uL3ZhbGlkLXZhbHVlIjoyMDh9 XSwyMDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5l dyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIHR9 fSx7fV0sMjA3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4vaXMtb2JqZWN0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFu KHQpKXRocm93IG5ldyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhbiBPYmplY3Qi KTtyZXR1cm4gdH19LHsiLi9pcy1vYmplY3QiOjE5Nn1dLDIwODpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2lzLXZhbHVlIik7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFuKHQpKXRocm93IG5ldyBUeXBl RXJyb3IoIkNhbm5vdCB1c2UgbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4g dH19LHsiLi9pcy12YWx1ZSI6MTk3fV0sMjA5OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuL2lzLWltcGxlbWVudGVkIiko KT9TdHJpbmcucHJvdG90eXBlLmNvbnRhaW5zOnQoIi4vc2hpbSIpfSx7Ii4v aXMtaW1wbGVtZW50ZWQiOjIxMCwiLi9zaGltIjoyMTF9XSwyMTA6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49InJhemR3YXRyenkiO2Uu ZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBu LmNvbnRhaW5zJiYoITA9PT1uLmNvbnRhaW5zKCJkd2EiKSYmITE9PT1uLmNv bnRhaW5zKCJmb28iKSl9fSx7fV0sMjExOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPVN0cmluZy5wcm90b3R5cGUuaW5kZXhPZjtlLmV4 cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4uY2FsbCh0aGlzLHQsYXJndW1l bnRzWzFdKT4tMX19LHt9XSwyMTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxhPW4uY2Fs bCgiIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10 eXBlb2YgdHx8dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYodCBpbnN0YW5jZW9m IFN0cmluZ3x8bi5jYWxsKHQpPT09YSl8fCExfX0se31dLDIxMzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QuY3JlYXRlKG51 bGwpLGE9TWF0aC5yYW5kb207ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ7 ZG97dD1hKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfXdoaWxlKG5bdF0pO3Jl dHVybiB0fX0se31dLDIxNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbixhPXQoImVzNS1leHQvb2JqZWN0L3NldC1wcm90b3R5cGUtb2Yi KSxpPXQoImVzNS1leHQvc3RyaW5nLyMvY29udGFpbnMiKSxvPXQoImQiKSxz PXQoImVzNi1zeW1ib2wiKSxsPXQoIi4vIiksYz1PYmplY3QuZGVmaW5lUHJv cGVydHk7bj1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighKHRoaXMgaW5z dGFuY2VvZiBuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDb25zdHJ1Y3RvciBy ZXF1aXJlcyAnbmV3JyIpO2wuY2FsbCh0aGlzLHQpLGU9ZT9pLmNhbGwoZSwi a2V5K3ZhbHVlIik/ImtleSt2YWx1ZSI6aS5jYWxsKGUsImtleSIpPyJrZXki OiJ2YWx1ZSI6InZhbHVlIixjKHRoaXMsIl9fa2luZF9fIixvKCIiLGUpKX0s YSYmYShuLGwpLGRlbGV0ZSBuLnByb3RvdHlwZS5jb25zdHJ1Y3RvcixuLnBy b3RvdHlwZT1PYmplY3QuY3JlYXRlKGwucHJvdG90eXBlLHtfcmVzb2x2ZTpv KGZ1bmN0aW9uKHQpe3JldHVybiJ2YWx1ZSI9PT10aGlzLl9fa2luZF9fP3Ro aXMuX19saXN0X19bdF06ImtleSt2YWx1ZSI9PT10aGlzLl9fa2luZF9fP1t0 LHRoaXMuX19saXN0X19bdF1dOnR9KX0pLGMobi5wcm90b3R5cGUscy50b1N0 cmluZ1RhZyxvKCJjIiwiQXJyYXkgSXRlcmF0b3IiKSl9LHsiLi8iOjIxNyxk OjE1MywiZXM1LWV4dC9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZiI6MjAzLCJl czUtZXh0L3N0cmluZy8jL2NvbnRhaW5zIjoyMDksImVzNi1zeW1ib2wiOjIy Mn1dLDIxNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJlczUtZXh0L2Z1bmN0aW9uL2lzLWFyZ3VtZW50cyIpLGE9dCgiZXM1LWV4 dC9vYmplY3QvdmFsaWQtY2FsbGFibGUiKSxpPXQoImVzNS1leHQvc3RyaW5n L2lzLXN0cmluZyIpLG89dCgiLi9nZXQiKSxzPUFycmF5LmlzQXJyYXksbD1G dW5jdGlvbi5wcm90b3R5cGUuY2FsbCxjPUFycmF5LnByb3RvdHlwZS5zb21l O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLHUsaCxmLHAsZCxnLHYs bT1hcmd1bWVudHNbMl07aWYocyh0KXx8bih0KT9yPSJhcnJheSI6aSh0KT9y PSJzdHJpbmciOnQ9byh0KSxhKGUpLGg9ZnVuY3Rpb24oKXtmPSEwfSwiYXJy YXkiIT09cilpZigic3RyaW5nIiE9PXIpZm9yKHU9dC5uZXh0KCk7IXUuZG9u ZTspe2lmKGwuY2FsbChlLG0sdS52YWx1ZSxoKSxmKXJldHVybjt1PXQubmV4 dCgpfWVsc2UgZm9yKGQ9dC5sZW5ndGgscD0wO3A8ZCYmKGc9dFtwXSxwKzE8 ZCYmKHY9Zy5jaGFyQ29kZUF0KDApKT49NTUyOTYmJnY8PTU2MzE5JiYoZys9 dFsrK3BdKSxsLmNhbGwoZSxtLGcsaCksIWYpOysrcCk7ZWxzZSBjLmNhbGwo dCxmdW5jdGlvbih0KXtyZXR1cm4gbC5jYWxsKGUsbSx0LGgpLGZ9KX19LHsi Li9nZXQiOjIxNiwiZXM1LWV4dC9mdW5jdGlvbi9pcy1hcmd1bWVudHMiOjE4 MCwiZXM1LWV4dC9vYmplY3QvdmFsaWQtY2FsbGFibGUiOjIwNiwiZXM1LWV4 dC9zdHJpbmcvaXMtc3RyaW5nIjoyMTJ9XSwyMTY6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiZXM1LWV4dC9mdW5jdGlvbi9pcy1h cmd1bWVudHMiKSxhPXQoImVzNS1leHQvc3RyaW5nL2lzLXN0cmluZyIpLGk9 dCgiLi9hcnJheSIpLG89dCgiLi9zdHJpbmciKSxzPXQoIi4vdmFsaWQtaXRl cmFibGUiKSxsPXQoImVzNi1zeW1ib2wiKS5pdGVyYXRvcjtlLmV4cG9ydHM9 ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHModClbbF0/ dFtsXSgpOm4odCk/bmV3IGkodCk6YSh0KT9uZXcgbyh0KTpuZXcgaSh0KX19 LHsiLi9hcnJheSI6MjE0LCIuL3N0cmluZyI6MjE5LCIuL3ZhbGlkLWl0ZXJh YmxlIjoyMjAsImVzNS1leHQvZnVuY3Rpb24vaXMtYXJndW1lbnRzIjoxODAs ImVzNS1leHQvc3RyaW5nL2lzLXN0cmluZyI6MjEyLCJlczYtc3ltYm9sIjoy MjJ9XSwyMTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4s YT10KCJlczUtZXh0L2FycmF5LyMvY2xlYXIiKSxpPXQoImVzNS1leHQvb2Jq ZWN0L2Fzc2lnbiIpLG89dCgiZXM1LWV4dC9vYmplY3QvdmFsaWQtY2FsbGFi bGUiKSxzPXQoImVzNS1leHQvb2JqZWN0L3ZhbGlkLXZhbHVlIiksbD10KCJk IiksYz10KCJkL2F1dG8tYmluZCIpLHU9dCgiZXM2LXN5bWJvbCIpLGg9T2Jq ZWN0LmRlZmluZVByb3BlcnR5LGY9T2JqZWN0LmRlZmluZVByb3BlcnRpZXM7 ZS5leHBvcnRzPW49ZnVuY3Rpb24odCxlKXtpZighKHRoaXMgaW5zdGFuY2Vv ZiBuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDb25zdHJ1Y3RvciByZXF1aXJl cyAnbmV3JyIpO2YodGhpcyx7X19saXN0X186bCgidyIscyh0KSksX19jb250 ZXh0X186bCgidyIsZSksX19uZXh0SW5kZXhfXzpsKCJ3IiwwKX0pLGUmJihv KGUub24pLGUub24oIl9hZGQiLHRoaXMuX29uQWRkKSxlLm9uKCJfZGVsZXRl Iix0aGlzLl9vbkRlbGV0ZSksZS5vbigiX2NsZWFyIix0aGlzLl9vbkNsZWFy KSl9LGRlbGV0ZSBuLnByb3RvdHlwZS5jb25zdHJ1Y3RvcixmKG4ucHJvdG90 eXBlLGkoe19uZXh0OmwoZnVuY3Rpb24oKXt2YXIgdDtpZih0aGlzLl9fbGlz dF9fKXJldHVybiB0aGlzLl9fcmVkb19fJiZ2b2lkIDAhPT0odD10aGlzLl9f cmVkb19fLnNoaWZ0KCkpP3Q6dGhpcy5fX25leHRJbmRleF9fPHRoaXMuX19s aXN0X18ubGVuZ3RoP3RoaXMuX19uZXh0SW5kZXhfXysrOnZvaWQgdGhpcy5f dW5CaW5kKCl9KSxuZXh0OmwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3Jl YXRlUmVzdWx0KHRoaXMuX25leHQoKSl9KSxfY3JlYXRlUmVzdWx0OmwoZnVu Y3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/e2RvbmU6ITAsdmFsdWU6dm9p ZCAwfTp7ZG9uZTohMSx2YWx1ZTp0aGlzLl9yZXNvbHZlKHQpfX0pLF9yZXNv bHZlOmwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19saXN0X19bdF19KSxf dW5CaW5kOmwoZnVuY3Rpb24oKXt0aGlzLl9fbGlzdF9fPW51bGwsZGVsZXRl IHRoaXMuX19yZWRvX18sdGhpcy5fX2NvbnRleHRfXyYmKHRoaXMuX19jb250 ZXh0X18ub2ZmKCJfYWRkIix0aGlzLl9vbkFkZCksdGhpcy5fX2NvbnRleHRf Xy5vZmYoIl9kZWxldGUiLHRoaXMuX29uRGVsZXRlKSx0aGlzLl9fY29udGV4 dF9fLm9mZigiX2NsZWFyIix0aGlzLl9vbkNsZWFyKSx0aGlzLl9fY29udGV4 dF9fPW51bGwpfSksdG9TdHJpbmc6bChmdW5jdGlvbigpe3JldHVybiJbb2Jq ZWN0ICIrKHRoaXNbdS50b1N0cmluZ1RhZ118fCJPYmplY3QiKSsiXSJ9KX0s Yyh7X29uQWRkOmwoZnVuY3Rpb24odCl7dD49dGhpcy5fX25leHRJbmRleF9f fHwoKyt0aGlzLl9fbmV4dEluZGV4X18sdGhpcy5fX3JlZG9fXz8odGhpcy5f X3JlZG9fXy5mb3JFYWNoKGZ1bmN0aW9uKGUscil7ZT49dCYmKHRoaXMuX19y ZWRvX19bcl09KytlKX0sdGhpcyksdGhpcy5fX3JlZG9fXy5wdXNoKHQpKTpo KHRoaXMsIl9fcmVkb19fIixsKCJjIixbdF0pKSl9KSxfb25EZWxldGU6bChm dW5jdGlvbih0KXt2YXIgZTt0Pj10aGlzLl9fbmV4dEluZGV4X198fCgtLXRo aXMuX19uZXh0SW5kZXhfXyx0aGlzLl9fcmVkb19fJiYoLTEhPT0oZT10aGlz Ll9fcmVkb19fLmluZGV4T2YodCkpJiZ0aGlzLl9fcmVkb19fLnNwbGljZShl LDEpLHRoaXMuX19yZWRvX18uZm9yRWFjaChmdW5jdGlvbihlLHIpe2U+dCYm KHRoaXMuX19yZWRvX19bcl09LS1lKX0sdGhpcykpKX0pLF9vbkNsZWFyOmwo ZnVuY3Rpb24oKXt0aGlzLl9fcmVkb19fJiZhLmNhbGwodGhpcy5fX3JlZG9f XyksdGhpcy5fX25leHRJbmRleF9fPTB9KX0pKSksaChuLnByb3RvdHlwZSx1 Lml0ZXJhdG9yLGwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKX0se2Q6MTUz LCJkL2F1dG8tYmluZCI6MTUyLCJlczUtZXh0L2FycmF5LyMvY2xlYXIiOjE3 NiwiZXM1LWV4dC9vYmplY3QvYXNzaWduIjoxODksImVzNS1leHQvb2JqZWN0 L3ZhbGlkLWNhbGxhYmxlIjoyMDYsImVzNS1leHQvb2JqZWN0L3ZhbGlkLXZh bHVlIjoyMDgsImVzNi1zeW1ib2wiOjIyMn1dLDIxODpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJlczUtZXh0L2Z1bmN0aW9uL2lz LWFyZ3VtZW50cyIpLGE9dCgiZXM1LWV4dC9vYmplY3QvaXMtdmFsdWUiKSxp PXQoImVzNS1leHQvc3RyaW5nL2lzLXN0cmluZyIpLG89dCgiZXM2LXN5bWJv bCIpLml0ZXJhdG9yLHM9QXJyYXkuaXNBcnJheTtlLmV4cG9ydHM9ZnVuY3Rp b24odCl7cmV0dXJuISFhKHQpJiYoISFzKHQpfHwoISFpKHQpfHwoISFuKHQp fHwiZnVuY3Rpb24iPT10eXBlb2YgdFtvXSkpKX19LHsiZXM1LWV4dC9mdW5j dGlvbi9pcy1hcmd1bWVudHMiOjE4MCwiZXM1LWV4dC9vYmplY3QvaXMtdmFs dWUiOjE5NywiZXM1LWV4dC9zdHJpbmcvaXMtc3RyaW5nIjoyMTIsImVzNi1z eW1ib2wiOjIyMn1dLDIxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbixhPXQoImVzNS1leHQvb2JqZWN0L3NldC1wcm90b3R5cGUtb2Yi KSxpPXQoImQiKSxvPXQoImVzNi1zeW1ib2wiKSxzPXQoIi4vIiksbD1PYmpl Y3QuZGVmaW5lUHJvcGVydHk7bj1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYo ISh0aGlzIGluc3RhbmNlb2YgbikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ29u c3RydWN0b3IgcmVxdWlyZXMgJ25ldyciKTt0PVN0cmluZyh0KSxzLmNhbGwo dGhpcyx0KSxsKHRoaXMsIl9fbGVuZ3RoX18iLGkoIiIsdC5sZW5ndGgpKX0s YSYmYShuLHMpLGRlbGV0ZSBuLnByb3RvdHlwZS5jb25zdHJ1Y3RvcixuLnBy b3RvdHlwZT1PYmplY3QuY3JlYXRlKHMucHJvdG90eXBlLHtfbmV4dDppKGZ1 bmN0aW9uKCl7aWYodGhpcy5fX2xpc3RfXylyZXR1cm4gdGhpcy5fX25leHRJ bmRleF9fPHRoaXMuX19sZW5ndGhfXz90aGlzLl9fbmV4dEluZGV4X18rKzp2 b2lkIHRoaXMuX3VuQmluZCgpfSksX3Jlc29sdmU6aShmdW5jdGlvbih0KXt2 YXIgZSxyPXRoaXMuX19saXN0X19bdF07cmV0dXJuIHRoaXMuX19uZXh0SW5k ZXhfXz09PXRoaXMuX19sZW5ndGhfXz9yOihlPXIuY2hhckNvZGVBdCgwKSk+ PTU1Mjk2JiZlPD01NjMxOT9yK3RoaXMuX19saXN0X19bdGhpcy5fX25leHRJ bmRleF9fKytdOnJ9KX0pLGwobi5wcm90b3R5cGUsby50b1N0cmluZ1RhZyxp KCJjIiwiU3RyaW5nIEl0ZXJhdG9yIikpfSx7Ii4vIjoyMTcsZDoxNTMsImVz NS1leHQvb2JqZWN0L3NldC1wcm90b3R5cGUtb2YiOjIwMywiZXM2LXN5bWJv bCI6MjIyfV0sMjIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4vaXMtaXRlcmFibGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7 aWYoIW4odCkpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGl0ZXJh YmxlIik7cmV0dXJuIHR9fSx7Ii4vaXMtaXRlcmFibGUiOjIxOH1dLDIyMTpb ZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihuLGEpeyFmdW5jdGlvbih0LG4p eyJvYmplY3QiPT10eXBlb2YgciYmInVuZGVmaW5lZCIhPXR5cGVvZiBlP2Uu ZXhwb3J0cz1uKCk6dC5FUzZQcm9taXNlPW4oKX0odGhpcyxmdW5jdGlvbigp eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKHQpe3JldHVybiJmdW5jdGlvbiI9 PXR5cGVvZiB0fXZhciByPUFycmF5LmlzQXJyYXk/QXJyYXkuaXNBcnJheTpm dW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnBy b3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSxpPTAsbz12b2lkIDAscz12b2lk IDAsbD1mdW5jdGlvbih0LGUpe2dbaV09dCxnW2krMV09ZSwyPT09KGkrPTIp JiYocz9zKHYpOl8oKSl9O3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2lu ZG93P3dpbmRvdzp2b2lkIDAsdT1jfHx7fSxoPXUuTXV0YXRpb25PYnNlcnZl cnx8dS5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLGY9InVuZGVmaW5lZCI9PXR5 cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIG4mJiJbb2JqZWN0IHBy b2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwobikscD0idW5kZWZpbmVkIiE9 dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9m IGltcG9ydFNjcmlwdHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgTWVzc2FnZUNo YW5uZWw7ZnVuY3Rpb24gZCgpe3ZhciB0PXNldFRpbWVvdXQ7cmV0dXJuIGZ1 bmN0aW9uKCl7cmV0dXJuIHQodiwxKX19dmFyIGc9bmV3IEFycmF5KDFlMyk7 ZnVuY3Rpb24gdigpe2Zvcih2YXIgdD0wO3Q8aTt0Kz0yKXsoMCxnW3RdKShn W3QrMV0pLGdbdF09dm9pZCAwLGdbdCsxXT12b2lkIDB9aT0wfXZhciBtLHks eCxiLF89dm9pZCAwO2Z1bmN0aW9uIHcodCxlKXt2YXIgcj1hcmd1bWVudHMs bj10aGlzLGE9bmV3IHRoaXMuY29uc3RydWN0b3IoTSk7dm9pZCAwPT09YVtU XSYmVShhKTt2YXIgaSxvPW4uX3N0YXRlO3JldHVybiBvPyhpPXJbby0xXSxs KGZ1bmN0aW9uKCl7cmV0dXJuIGoobyxhLGksbi5fcmVzdWx0KX0pKTpSKG4s YSx0LGUpLGF9ZnVuY3Rpb24gayh0KXtpZih0JiYib2JqZWN0Ij09dHlwZW9m IHQmJnQuY29uc3RydWN0b3I9PT10aGlzKXJldHVybiB0O3ZhciBlPW5ldyB0 aGlzKE0pO3JldHVybiBPKGUsdCksZX1mP189ZnVuY3Rpb24oKXtyZXR1cm4g bi5uZXh0VGljayh2KX06aD8oeT0wLHg9bmV3IGgodiksYj1kb2N1bWVudC5j cmVhdGVUZXh0Tm9kZSgiIikseC5vYnNlcnZlKGIse2NoYXJhY3RlckRhdGE6 ITB9KSxfPWZ1bmN0aW9uKCl7Yi5kYXRhPXk9Kyt5JTJ9KTpwPygobT1uZXcg TWVzc2FnZUNoYW5uZWwpLnBvcnQxLm9ubWVzc2FnZT12LF89ZnVuY3Rpb24o KXtyZXR1cm4gbS5wb3J0Mi5wb3N0TWVzc2FnZSgwKX0pOl89dm9pZCAwPT09 YyYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24oKXt0cnl7dmFyIGU9 dCgidmVydHgiKTtyZXR1cm4gbz1lLnJ1bk9uTG9vcHx8ZS5ydW5PbkNvbnRl eHQsZnVuY3Rpb24oKXtvKHYpfX1jYXRjaCh0KXtyZXR1cm4gZCgpfX0oKTpk KCk7dmFyIFQ9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5n KDE2KTtmdW5jdGlvbiBNKCl7fXZhciBBPXZvaWQgMCxTPTEsRT0yLEw9bmV3 IEI7ZnVuY3Rpb24gQyh0KXt0cnl7cmV0dXJuIHQudGhlbn1jYXRjaCh0KXty ZXR1cm4gTC5lcnJvcj10LEx9fWZ1bmN0aW9uIFAodCxyLG4pe3IuY29uc3Ry dWN0b3I9PT10LmNvbnN0cnVjdG9yJiZuPT09dyYmci5jb25zdHJ1Y3Rvci5y ZXNvbHZlPT09az9mdW5jdGlvbih0LGUpe2UuX3N0YXRlPT09Uz9JKHQsZS5f cmVzdWx0KTplLl9zdGF0ZT09PUU/RCh0LGUuX3Jlc3VsdCk6UihlLHZvaWQg MCxmdW5jdGlvbihlKXtyZXR1cm4gTyh0LGUpfSxmdW5jdGlvbihlKXtyZXR1 cm4gRCh0LGUpfSl9KHQscik6bj09PUw/RCh0LEwuZXJyb3IpOnZvaWQgMD09 PW4/SSh0LHIpOmUobik/ZnVuY3Rpb24odCxlLHIpe2woZnVuY3Rpb24odCl7 dmFyIG49ITEsYT1mdW5jdGlvbih0LGUscixuKXt0cnl7dC5jYWxsKGUscixu KX1jYXRjaCh0KXtyZXR1cm4gdH19KHIsZSxmdW5jdGlvbihyKXtufHwobj0h MCxlIT09cj9PKHQscik6SSh0LHIpKX0sZnVuY3Rpb24oZSl7bnx8KG49ITAs RCh0LGUpKX0sdC5fbGFiZWwpOyFuJiZhJiYobj0hMCxEKHQsYSkpfSx0KX0o dCxyLG4pOkkodCxyKX1mdW5jdGlvbiBPKHQsZSl7dmFyIHI7dD09PWU/RCh0 LG5ldyBUeXBlRXJyb3IoIllvdSBjYW5ub3QgcmVzb2x2ZSBhIHByb21pc2Ug d2l0aCBpdHNlbGYiKSk6ImZ1bmN0aW9uIj09dHlwZW9mKHI9ZSl8fCJvYmpl Y3QiPT10eXBlb2YgciYmbnVsbCE9PXI/UCh0LGUsQyhlKSk6SSh0LGUpfWZ1 bmN0aW9uIHoodCl7dC5fb25lcnJvciYmdC5fb25lcnJvcih0Ll9yZXN1bHQp LEYodCl9ZnVuY3Rpb24gSSh0LGUpe3QuX3N0YXRlPT09QSYmKHQuX3Jlc3Vs dD1lLHQuX3N0YXRlPVMsMCE9PXQuX3N1YnNjcmliZXJzLmxlbmd0aCYmbChG LHQpKX1mdW5jdGlvbiBEKHQsZSl7dC5fc3RhdGU9PT1BJiYodC5fc3RhdGU9 RSx0Ll9yZXN1bHQ9ZSxsKHosdCkpfWZ1bmN0aW9uIFIodCxlLHIsbil7dmFy IGE9dC5fc3Vic2NyaWJlcnMsaT1hLmxlbmd0aDt0Ll9vbmVycm9yPW51bGws YVtpXT1lLGFbaStTXT1yLGFbaStFXT1uLDA9PT1pJiZ0Ll9zdGF0ZSYmbChG LHQpfWZ1bmN0aW9uIEYodCl7dmFyIGU9dC5fc3Vic2NyaWJlcnMscj10Ll9z dGF0ZTtpZigwIT09ZS5sZW5ndGgpe2Zvcih2YXIgbj12b2lkIDAsYT12b2lk IDAsaT10Ll9yZXN1bHQsbz0wO288ZS5sZW5ndGg7bys9MyluPWVbb10sYT1l W28rcl0sbj9qKHIsbixhLGkpOmEoaSk7dC5fc3Vic2NyaWJlcnMubGVuZ3Ro PTB9fWZ1bmN0aW9uIEIoKXt0aGlzLmVycm9yPW51bGx9dmFyIE49bmV3IEI7 ZnVuY3Rpb24gaih0LHIsbixhKXt2YXIgaT1lKG4pLG89dm9pZCAwLHM9dm9p ZCAwLGw9dm9pZCAwLGM9dm9pZCAwO2lmKGkpe2lmKChvPWZ1bmN0aW9uKHQs ZSl7dHJ5e3JldHVybiB0KGUpfWNhdGNoKHQpe3JldHVybiBOLmVycm9yPXQs Tn19KG4sYSkpPT09Tj8oYz0hMCxzPW8uZXJyb3Isbz1udWxsKTpsPSEwLHI9 PT1vKXJldHVybiB2b2lkIEQocixuZXcgVHlwZUVycm9yKCJBIHByb21pc2Vz IGNhbGxiYWNrIGNhbm5vdCByZXR1cm4gdGhhdCBzYW1lIHByb21pc2UuIikp fWVsc2Ugbz1hLGw9ITA7ci5fc3RhdGUhPT1BfHwoaSYmbD9PKHIsbyk6Yz9E KHIscyk6dD09PVM/SShyLG8pOnQ9PT1FJiZEKHIsbykpfXZhciBWPTA7ZnVu Y3Rpb24gVSh0KXt0W1RdPVYrKyx0Ll9zdGF0ZT12b2lkIDAsdC5fcmVzdWx0 PXZvaWQgMCx0Ll9zdWJzY3JpYmVycz1bXX1mdW5jdGlvbiBxKHQsZSl7dGhp cy5faW5zdGFuY2VDb25zdHJ1Y3Rvcj10LHRoaXMucHJvbWlzZT1uZXcgdChN KSx0aGlzLnByb21pc2VbVF18fFUodGhpcy5wcm9taXNlKSxyKGUpPyh0aGlz Ll9pbnB1dD1lLHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuX3JlbWFpbmlu Zz1lLmxlbmd0aCx0aGlzLl9yZXN1bHQ9bmV3IEFycmF5KHRoaXMubGVuZ3Ro KSwwPT09dGhpcy5sZW5ndGg/SSh0aGlzLnByb21pc2UsdGhpcy5fcmVzdWx0 KToodGhpcy5sZW5ndGg9dGhpcy5sZW5ndGh8fDAsdGhpcy5fZW51bWVyYXRl KCksMD09PXRoaXMuX3JlbWFpbmluZyYmSSh0aGlzLnByb21pc2UsdGhpcy5f cmVzdWx0KSkpOkQodGhpcy5wcm9taXNlLG5ldyBFcnJvcigiQXJyYXkgTWV0 aG9kcyBtdXN0IGJlIHByb3ZpZGVkIGFuIEFycmF5IikpfWZ1bmN0aW9uIEgo dCl7dGhpc1tUXT1WKyssdGhpcy5fcmVzdWx0PXRoaXMuX3N0YXRlPXZvaWQg MCx0aGlzLl9zdWJzY3JpYmVycz1bXSxNIT09dCYmKCJmdW5jdGlvbiIhPXR5 cGVvZiB0JiZmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIllvdSBt dXN0IHBhc3MgYSByZXNvbHZlciBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJn dW1lbnQgdG8gdGhlIHByb21pc2UgY29uc3RydWN0b3IiKX0oKSx0aGlzIGlu c3RhbmNlb2YgSD9mdW5jdGlvbih0LGUpe3RyeXtlKGZ1bmN0aW9uKGUpe08o dCxlKX0sZnVuY3Rpb24oZSl7RCh0LGUpfSl9Y2F0Y2goZSl7RCh0LGUpfX0o dGhpcyx0KTpmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkZhaWxl ZCB0byBjb25zdHJ1Y3QgJ1Byb21pc2UnOiBQbGVhc2UgdXNlIHRoZSAnbmV3 JyBvcGVyYXRvciwgdGhpcyBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJl IGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpfSgpKX1mdW5jdGlvbiBHKCl7dmFy IHQ9dm9pZCAwO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYSl0PWE7ZWxzZSBp ZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYpdD1zZWxmO2Vsc2UgdHJ5e3Q9 RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaCh0KXt0aHJvdyBuZXcg RXJyb3IoInBvbHlmaWxsIGZhaWxlZCBiZWNhdXNlIGdsb2JhbCBvYmplY3Qg aXMgdW5hdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudCIpfXZhciBlPXQu UHJvbWlzZTtpZihlKXt2YXIgcj1udWxsO3RyeXtyPU9iamVjdC5wcm90b3R5 cGUudG9TdHJpbmcuY2FsbChlLnJlc29sdmUoKSl9Y2F0Y2godCl7fWlmKCJb b2JqZWN0IFByb21pc2VdIj09PXImJiFlLmNhc3QpcmV0dXJufXQuUHJvbWlz ZT1IfXJldHVybiBxLnByb3RvdHlwZS5fZW51bWVyYXRlPWZ1bmN0aW9uKCl7 Zm9yKHZhciB0PXRoaXMubGVuZ3RoLGU9dGhpcy5faW5wdXQscj0wO3RoaXMu X3N0YXRlPT09QSYmcjx0O3IrKyl0aGlzLl9lYWNoRW50cnkoZVtyXSxyKX0s cS5wcm90b3R5cGUuX2VhY2hFbnRyeT1mdW5jdGlvbih0LGUpe3ZhciByPXRo aXMuX2luc3RhbmNlQ29uc3RydWN0b3Isbj1yLnJlc29sdmU7aWYobj09PWsp e3ZhciBhPUModCk7aWYoYT09PXcmJnQuX3N0YXRlIT09QSl0aGlzLl9zZXR0 bGVkQXQodC5fc3RhdGUsZSx0Ll9yZXN1bHQpO2Vsc2UgaWYoImZ1bmN0aW9u IiE9dHlwZW9mIGEpdGhpcy5fcmVtYWluaW5nLS0sdGhpcy5fcmVzdWx0W2Vd PXQ7ZWxzZSBpZihyPT09SCl7dmFyIGk9bmV3IHIoTSk7UChpLHQsYSksdGhp cy5fd2lsbFNldHRsZUF0KGksZSl9ZWxzZSB0aGlzLl93aWxsU2V0dGxlQXQo bmV3IHIoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSxlKX1lbHNlIHRoaXMu X3dpbGxTZXR0bGVBdChuKHQpLGUpfSxxLnByb3RvdHlwZS5fc2V0dGxlZEF0 PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnByb21pc2U7bi5fc3RhdGU9 PT1BJiYodGhpcy5fcmVtYWluaW5nLS0sdD09PUU/RChuLHIpOnRoaXMuX3Jl c3VsdFtlXT1yKSwwPT09dGhpcy5fcmVtYWluaW5nJiZJKG4sdGhpcy5fcmVz dWx0KX0scS5wcm90b3R5cGUuX3dpbGxTZXR0bGVBdD1mdW5jdGlvbih0LGUp e3ZhciByPXRoaXM7Uih0LHZvaWQgMCxmdW5jdGlvbih0KXtyZXR1cm4gci5f c2V0dGxlZEF0KFMsZSx0KX0sZnVuY3Rpb24odCl7cmV0dXJuIHIuX3NldHRs ZWRBdChFLGUsdCl9KX0sSC5hbGw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBx KHRoaXMsdCkucHJvbWlzZX0sSC5yYWNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRo aXM7cmV0dXJuIHIodCk/bmV3IGUoZnVuY3Rpb24ocixuKXtmb3IodmFyIGE9 dC5sZW5ndGgsaT0wO2k8YTtpKyspZS5yZXNvbHZlKHRbaV0pLnRoZW4ocixu KX0pOm5ldyBlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUobmV3IFR5cGVFcnJv cigiWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byByYWNlLiIpKX0pfSxILnJl c29sdmU9ayxILnJlamVjdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdGhpcyhN KTtyZXR1cm4gRChlLHQpLGV9LEguX3NldFNjaGVkdWxlcj1mdW5jdGlvbih0 KXtzPXR9LEguX3NldEFzYXA9ZnVuY3Rpb24odCl7bD10fSxILl9hc2FwPWws SC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkgsdGhlbjp3LGNhdGNoOmZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLnRoZW4obnVsbCx0KX19LEcoKSxILnBvbHlm aWxsPUcsSC5Qcm9taXNlPUgsSH0pfSkuY2FsbCh0aGlzLHQoIl9wcm9jZXNz IiksInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmlu ZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2lu ZG93P3dpbmRvdzp7fSl9LHtfcHJvY2Vzczo0ODR9XSwyMjI6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4vaXMtaW1wbGVt ZW50ZWQiKSgpP1N5bWJvbDp0KCIuL3BvbHlmaWxsIil9LHsiLi9pcy1pbXBs ZW1lbnRlZCI6MjIzLCIuL3BvbHlmaWxsIjoyMjV9XSwyMjM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e29iamVjdDohMCxzeW1ib2w6 ITB9O2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0O2lmKCJmdW5jdGlvbiIh PXR5cGVvZiBTeW1ib2wpcmV0dXJuITE7dD1TeW1ib2woInRlc3Qgc3ltYm9s Iik7dHJ5e1N0cmluZyh0KX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hIW5b dHlwZW9mIFN5bWJvbC5pdGVyYXRvcl0mJighIW5bdHlwZW9mIFN5bWJvbC50 b1ByaW1pdGl2ZV0mJiEhblt0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnXSl9 fSx7fV0sMjI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hIXQmJigic3ltYm9sIj09dHlwZW9m IHR8fCEhdC5jb25zdHJ1Y3RvciYmKCJTeW1ib2wiPT09dC5jb25zdHJ1Y3Rv ci5uYW1lJiYiU3ltYm9sIj09PXRbdC5jb25zdHJ1Y3Rvci50b1N0cmluZ1Rh Z10pKX19LHt9XSwyMjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG4sYSxpLG8scz10KCJkIiksbD10KCIuL3ZhbGlkYXRlLXN5bWJvbCIp LGM9T2JqZWN0LmNyZWF0ZSx1PU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLGg9 T2JqZWN0LmRlZmluZVByb3BlcnR5LGY9T2JqZWN0LnByb3RvdHlwZSxwPWMo bnVsbCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCl7bj1TeW1ib2w7 dHJ5e1N0cmluZyhuKCkpLG89ITB9Y2F0Y2godCl7fX12YXIgZCxnPShkPWMo bnVsbCksZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbj0wO2RbdCsobnx8IiIp XTspKytuO3JldHVybiBkW3QrPW58fCIiXT0hMCxoKGYsZT0iQEAiK3Qscy5n cyhudWxsLGZ1bmN0aW9uKHQpe3J8fChyPSEwLGgodGhpcyxlLHModCkpLHI9 ITEpfSkpLGV9KTtpPWZ1bmN0aW9uKHQpe2lmKHRoaXMgaW5zdGFuY2VvZiBp KXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1 Y3RvciIpO3JldHVybiBhKHQpfSxlLmV4cG9ydHM9YT1mdW5jdGlvbiB0KGUp e3ZhciByO2lmKHRoaXMgaW5zdGFuY2VvZiB0KXRocm93IG5ldyBUeXBlRXJy b3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3JldHVybiBvP24o ZSk6KHI9YyhpLnByb3RvdHlwZSksZT12b2lkIDA9PT1lPyIiOlN0cmluZyhl KSx1KHIse19fZGVzY3JpcHRpb25fXzpzKCIiLGUpLF9fbmFtZV9fOnMoIiIs ZyhlKSl9KSl9LHUoYSx7Zm9yOnMoZnVuY3Rpb24odCl7cmV0dXJuIHBbdF0/ cFt0XTpwW3RdPWEoU3RyaW5nKHQpKX0pLGtleUZvcjpzKGZ1bmN0aW9uKHQp e3ZhciBlO2ZvcihlIGluIGwodCkscClpZihwW2VdPT09dClyZXR1cm4gZX0p LGhhc0luc3RhbmNlOnMoIiIsbiYmbi5oYXNJbnN0YW5jZXx8YSgiaGFzSW5z dGFuY2UiKSksaXNDb25jYXRTcHJlYWRhYmxlOnMoIiIsbiYmbi5pc0NvbmNh dFNwcmVhZGFibGV8fGEoImlzQ29uY2F0U3ByZWFkYWJsZSIpKSxpdGVyYXRv cjpzKCIiLG4mJm4uaXRlcmF0b3J8fGEoIml0ZXJhdG9yIikpLG1hdGNoOnMo IiIsbiYmbi5tYXRjaHx8YSgibWF0Y2giKSkscmVwbGFjZTpzKCIiLG4mJm4u cmVwbGFjZXx8YSgicmVwbGFjZSIpKSxzZWFyY2g6cygiIixuJiZuLnNlYXJj aHx8YSgic2VhcmNoIikpLHNwZWNpZXM6cygiIixuJiZuLnNwZWNpZXN8fGEo InNwZWNpZXMiKSksc3BsaXQ6cygiIixuJiZuLnNwbGl0fHxhKCJzcGxpdCIp KSx0b1ByaW1pdGl2ZTpzKCIiLG4mJm4udG9QcmltaXRpdmV8fGEoInRvUHJp bWl0aXZlIikpLHRvU3RyaW5nVGFnOnMoIiIsbiYmbi50b1N0cmluZ1RhZ3x8 YSgidG9TdHJpbmdUYWciKSksdW5zY29wYWJsZXM6cygiIixuJiZuLnVuc2Nv cGFibGVzfHxhKCJ1bnNjb3BhYmxlcyIpKX0pLHUoaS5wcm90b3R5cGUse2Nv bnN0cnVjdG9yOnMoYSksdG9TdHJpbmc6cygiIixmdW5jdGlvbigpe3JldHVy biB0aGlzLl9fbmFtZV9ffSl9KSx1KGEucHJvdG90eXBlLHt0b1N0cmluZzpz KGZ1bmN0aW9uKCl7cmV0dXJuIlN5bWJvbCAoIitsKHRoaXMpLl9fZGVzY3Jp cHRpb25fXysiKSJ9KSx2YWx1ZU9mOnMoZnVuY3Rpb24oKXtyZXR1cm4gbCh0 aGlzKX0pfSksaChhLnByb3RvdHlwZSxhLnRvUHJpbWl0aXZlLHMoIiIsZnVu Y3Rpb24oKXt2YXIgdD1sKHRoaXMpO3JldHVybiJzeW1ib2wiPT10eXBlb2Yg dD90OnQudG9TdHJpbmcoKX0pKSxoKGEucHJvdG90eXBlLGEudG9TdHJpbmdU YWcscygiYyIsIlN5bWJvbCIpKSxoKGkucHJvdG90eXBlLGEudG9TdHJpbmdU YWcscygiYyIsYS5wcm90b3R5cGVbYS50b1N0cmluZ1RhZ10pKSxoKGkucHJv dG90eXBlLGEudG9QcmltaXRpdmUscygiYyIsYS5wcm90b3R5cGVbYS50b1By aW1pdGl2ZV0pKX0seyIuL3ZhbGlkYXRlLXN5bWJvbCI6MjI2LGQ6MTUzfV0s MjI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4v aXMtc3ltYm9sIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFuKHQpKXRo cm93IG5ldyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIHN5bWJvbCIpO3JldHVy biB0fX0seyIuL2lzLXN5bWJvbCI6MjI0fV0sMjI3OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFy IG49ZXx8MCxhPXJ8fDE7cmV0dXJuW1t0WzEyXSt0WzBdLHRbMTNdK3RbMV0s dFsxNF0rdFsyXSx0WzE1XSt0WzNdXSxbdFsxMl0tdFswXSx0WzEzXS10WzFd LHRbMTRdLXRbMl0sdFsxNV0tdFszXV0sW3RbMTJdK3RbNF0sdFsxM10rdFs1 XSx0WzE0XSt0WzZdLHRbMTVdK3RbN11dLFt0WzEyXS10WzRdLHRbMTNdLXRb NV0sdFsxNF0tdFs2XSx0WzE1XS10WzddXSxbbip0WzEyXSt0WzhdLG4qdFsx M10rdFs5XSxuKnRbMTRdK3RbMTBdLG4qdFsxNV0rdFsxMV1dLFthKnRbMTJd LXRbOF0sYSp0WzEzXS10WzldLGEqdFsxNF0tdFsxMF0sYSp0WzE1XS10WzEx XV1dfX0se31dLDIyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJpcy1zdHJpbmctYmxhbmsiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7dmFyIGU9dHlwZW9mIHQ7aWYoInN0cmluZyI9PT1lKXt2YXIgcj10O2lm KDA9PT0odD0rdCkmJm4ocikpcmV0dXJuITF9ZWxzZSBpZigibnVtYmVyIiE9 PWUpcmV0dXJuITE7cmV0dXJuIHQtdDwxfX0seyJpcy1zdHJpbmctYmxhbmsi OjQyNX1dLDIyOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3N3aXRjaChhcmd1bWVudHMubGVuZ3Ro KXtjYXNlIDA6cmV0dXJuIG5ldyBvKFswXSxbMF0sMCk7Y2FzZSAxOmlmKCJu dW1iZXIiPT10eXBlb2YgdCl7dmFyIG49bCh0KTtyZXR1cm4gbmV3IG8obixu LDApfXJldHVybiBuZXcgbyh0LGwodC5sZW5ndGgpLDApO2Nhc2UgMjppZigi bnVtYmVyIj09dHlwZW9mIGUpe3ZhciBuPWwodC5sZW5ndGgpO3JldHVybiBu ZXcgbyh0LG4sK2UpfXI9MDtjYXNlIDM6aWYodC5sZW5ndGghPT1lLmxlbmd0 aCl0aHJvdyBuZXcgRXJyb3IoInN0YXRlIGFuZCB2ZWxvY2l0eSBsZW5ndGhz IG11c3QgbWF0Y2giKTtyZXR1cm4gbmV3IG8odCxlLHIpfX07dmFyIG49dCgi Y3ViaWMtaGVybWl0ZSIpLGE9dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKTtm dW5jdGlvbiBpKHQsZSxyKXtyZXR1cm4gTWF0aC5taW4oZSxNYXRoLm1heCh0 LHIpKX1mdW5jdGlvbiBvKHQsZSxyKXt0aGlzLmRpbWVuc2lvbj10Lmxlbmd0 aCx0aGlzLmJvdW5kcz1bbmV3IEFycmF5KHRoaXMuZGltZW5zaW9uKSxuZXcg QXJyYXkodGhpcy5kaW1lbnNpb24pXTtmb3IodmFyIG49MDtuPHRoaXMuZGlt ZW5zaW9uOysrbil0aGlzLmJvdW5kc1swXVtuXT0tMS8wLHRoaXMuYm91bmRz WzFdW25dPTEvMDt0aGlzLl9zdGF0ZT10LnNsaWNlKCkucmV2ZXJzZSgpLHRo aXMuX3ZlbG9jaXR5PWUuc2xpY2UoKS5yZXZlcnNlKCksdGhpcy5fdGltZT1b cl0sdGhpcy5fc2NyYXRjaD1bdC5zbGljZSgpLHQuc2xpY2UoKSx0LnNsaWNl KCksdC5zbGljZSgpLHQuc2xpY2UoKV19dmFyIHM9by5wcm90b3R5cGU7ZnVu Y3Rpb24gbCh0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7Kyty KWVbcl09MDtyZXR1cm4gZX1zLmZsdXNoPWZ1bmN0aW9uKHQpe3ZhciBlPWEu Z3QodGhpcy5fdGltZSx0KS0xO2U8PTB8fCh0aGlzLl90aW1lLnNwbGljZSgw LGUpLHRoaXMuX3N0YXRlLnNwbGljZSgwLGUqdGhpcy5kaW1lbnNpb24pLHRo aXMuX3ZlbG9jaXR5LnNwbGljZSgwLGUqdGhpcy5kaW1lbnNpb24pKX0scy5j dXJ2ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aW1lLHI9ZS5sZW5ndGgs bz1hLmxlKGUsdCkscz10aGlzLl9zY3JhdGNoWzBdLGw9dGhpcy5fc3RhdGUs Yz10aGlzLl92ZWxvY2l0eSx1PXRoaXMuZGltZW5zaW9uLGg9dGhpcy5ib3Vu ZHM7aWYobzwwKWZvcih2YXIgZj11LTEscD0wO3A8dTsrK3AsLS1mKXNbcF09 bFtmXTtlbHNlIGlmKG8+PXItMSl7Zj1sLmxlbmd0aC0xO3ZhciBkPXQtZVty LTFdO2ZvcihwPTA7cDx1OysrcCwtLWYpc1twXT1sW2ZdK2QqY1tmXX1lbHNl e2Y9dSoobysxKS0xO3ZhciBnPWVbb10sdj1lW28rMV0tZ3x8MSxtPXRoaXMu X3NjcmF0Y2hbMV0seT10aGlzLl9zY3JhdGNoWzJdLHg9dGhpcy5fc2NyYXRj aFszXSxiPXRoaXMuX3NjcmF0Y2hbNF0sXz0hMDtmb3IocD0wO3A8dTsrK3As LS1mKW1bcF09bFtmXSx4W3BdPWNbZl0qdix5W3BdPWxbZit1XSxiW3BdPWNb Zit1XSp2LF89XyYmbVtwXT09PXlbcF0mJnhbcF09PT1iW3BdJiYwPT09eFtw XTtpZihfKWZvcihwPTA7cDx1OysrcClzW3BdPW1bcF07ZWxzZSBuKG0seCx5 LGIsKHQtZykvdixzKX12YXIgdz1oWzBdLGs9aFsxXTtmb3IocD0wO3A8dTsr K3Apc1twXT1pKHdbcF0sa1twXSxzW3BdKTtyZXR1cm4gc30scy5kY3VydmU9 ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGltZSxyPWUubGVuZ3RoLGk9YS5s ZShlLHQpLG89dGhpcy5fc2NyYXRjaFswXSxzPXRoaXMuX3N0YXRlLGw9dGhp cy5fdmVsb2NpdHksYz10aGlzLmRpbWVuc2lvbjtpZihpPj1yLTEpZm9yKHZh ciB1PXMubGVuZ3RoLTEsaD0oZVtyLTFdLDApO2g8YzsrK2gsLS11KW9baF09 bFt1XTtlbHNle3U9YyooaSsxKS0xO3ZhciBmPWVbaV0scD1lW2krMV0tZnx8 MSxkPXRoaXMuX3NjcmF0Y2hbMV0sZz10aGlzLl9zY3JhdGNoWzJdLHY9dGhp cy5fc2NyYXRjaFszXSxtPXRoaXMuX3NjcmF0Y2hbNF0seT0hMDtmb3IoaD0w O2g8YzsrK2gsLS11KWRbaF09c1t1XSx2W2hdPWxbdV0qcCxnW2hdPXNbdStj XSxtW2hdPWxbdStjXSpwLHk9eSYmZFtoXT09PWdbaF0mJnZbaF09PT1tW2hd JiYwPT09dltoXTtpZih5KWZvcihoPTA7aDxjOysraClvW2hdPTA7ZWxzZXtu LmRlcml2YXRpdmUoZCx2LGcsbSwodC1mKS9wLG8pO2ZvcihoPTA7aDxjOysr aClvW2hdLz1wfX1yZXR1cm4gb30scy5sYXN0VD1mdW5jdGlvbigpe3ZhciB0 PXRoaXMuX3RpbWU7cmV0dXJuIHRbdC5sZW5ndGgtMV19LHMuc3RhYmxlPWZ1 bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3ZlbG9jaXR5LGU9dC5sZW5ndGgs cj10aGlzLmRpbWVuc2lvbi0xO3I+PTA7LS1yKWlmKHRbLS1lXSlyZXR1cm4h MTtyZXR1cm4hMH0scy5qdW1wPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFz dFQoKSxyPXRoaXMuZGltZW5zaW9uO2lmKCEodDxlfHxhcmd1bWVudHMubGVu Z3RoIT09cisxKSl7dmFyIG49dGhpcy5fc3RhdGUsYT10aGlzLl92ZWxvY2l0 eSxvPW4ubGVuZ3RoLXRoaXMuZGltZW5zaW9uLHM9dGhpcy5ib3VuZHMsbD1z WzBdLGM9c1sxXTt0aGlzLl90aW1lLnB1c2goZSx0KTtmb3IodmFyIHU9MDt1 PDI7Kyt1KWZvcih2YXIgaD0wO2g8cjsrK2gpbi5wdXNoKG5bbysrXSksYS5w dXNoKDApO3RoaXMuX3RpbWUucHVzaCh0KTtmb3IoaD1yO2g+MDstLWgpbi5w dXNoKGkobFtoLTFdLGNbaC0xXSxhcmd1bWVudHNbaF0pKSxhLnB1c2goMCl9 fSxzLnB1c2g9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0VCgpLHI9dGhp cy5kaW1lbnNpb247aWYoISh0PGV8fGFyZ3VtZW50cy5sZW5ndGghPT1yKzEp KXt2YXIgbj10aGlzLl9zdGF0ZSxhPXRoaXMuX3ZlbG9jaXR5LG89bi5sZW5n dGgtdGhpcy5kaW1lbnNpb24scz10LWUsbD10aGlzLmJvdW5kcyxjPWxbMF0s dT1sWzFdLGg9cz4xZS02PzEvczowO3RoaXMuX3RpbWUucHVzaCh0KTtmb3Io dmFyIGY9cjtmPjA7LS1mKXt2YXIgcD1pKGNbZi0xXSx1W2YtMV0sYXJndW1l bnRzW2ZdKTtuLnB1c2gocCksYS5wdXNoKChwLW5bbysrXSkqaCl9fX0scy5z ZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kaW1lbnNpb247aWYoISh0PHRo aXMubGFzdFQoKXx8YXJndW1lbnRzLmxlbmd0aCE9PWUrMSkpe3ZhciByPXRo aXMuX3N0YXRlLG49dGhpcy5fdmVsb2NpdHksYT10aGlzLmJvdW5kcyxvPWFb MF0scz1hWzFdO3RoaXMuX3RpbWUucHVzaCh0KTtmb3IodmFyIGw9ZTtsPjA7 LS1sKXIucHVzaChpKG9bbC0xXSxzW2wtMV0sYXJndW1lbnRzW2xdKSksbi5w dXNoKDApfX0scy5tb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFzdFQo KSxyPXRoaXMuZGltZW5zaW9uO2lmKCEodDw9ZXx8YXJndW1lbnRzLmxlbmd0 aCE9PXIrMSkpe3ZhciBuPXRoaXMuX3N0YXRlLGE9dGhpcy5fdmVsb2NpdHks bz1uLmxlbmd0aC10aGlzLmRpbWVuc2lvbixzPXRoaXMuYm91bmRzLGw9c1sw XSxjPXNbMV0sdT10LWUsaD11PjFlLTY/MS91OjA7dGhpcy5fdGltZS5wdXNo KHQpO2Zvcih2YXIgZj1yO2Y+MDstLWYpe3ZhciBwPWFyZ3VtZW50c1tmXTtu LnB1c2goaShsW2YtMV0sY1tmLTFdLG5bbysrXStwKSksYS5wdXNoKHAqaCl9 fX0scy5pZGxlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFzdFQoKTtpZigh KHQ8ZSkpe3ZhciByPXRoaXMuZGltZW5zaW9uLG49dGhpcy5fc3RhdGUsYT10 aGlzLl92ZWxvY2l0eSxvPW4ubGVuZ3RoLXIscz10aGlzLmJvdW5kcyxsPXNb MF0sYz1zWzFdLHU9dC1lO3RoaXMuX3RpbWUucHVzaCh0KTtmb3IodmFyIGg9 ci0xO2g+PTA7LS1oKW4ucHVzaChpKGxbaF0sY1toXSxuW29dK3UqYVtvXSkp LGEucHVzaCgwKSxvKz0xfX19LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjkz LCJjdWJpYy1oZXJtaXRlIjoxNDd9XSwyMzA6W2Z1bmN0aW9uKHQsZSxyKXt2 YXIgbj10KCJkdHlwZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aWYo IXQpdGhyb3cgbmV3IFR5cGVFcnJvcigibXVzdCBzcGVjaWZ5IGRhdGEgYXMg Zmlyc3QgcGFyYW1ldGVyIik7aWYocj0wfCsocnx8MCksQXJyYXkuaXNBcnJh eSh0KSYmdFswXSYmIm51bWJlciI9PXR5cGVvZiB0WzBdWzBdKXt2YXIgYSxp LG8scyxsPXRbMF0ubGVuZ3RoLGM9dC5sZW5ndGgqbDtlJiYic3RyaW5nIiE9 dHlwZW9mIGV8fChlPW5ldyhuKGV8fCJmbG9hdDMyIikpKGMrcikpO3ZhciB1 PWUubGVuZ3RoLXI7aWYoYyE9PXUpdGhyb3cgbmV3IEVycm9yKCJzb3VyY2Ug bGVuZ3RoICIrYysiICgiK2wrIngiK3QubGVuZ3RoKyIpIGRvZXMgbm90IG1h dGNoIGRlc3RpbmF0aW9uIGxlbmd0aCAiK3UpO2ZvcihhPTAsbz1yO2E8dC5s ZW5ndGg7YSsrKWZvcihpPTA7aTxsO2krKyllW28rK109bnVsbD09PXRbYV1b aV0/TmFOOnRbYV1baV19ZWxzZSBpZihlJiYic3RyaW5nIiE9dHlwZW9mIGUp ZS5zZXQodCxyKTtlbHNle3ZhciBoPW4oZXx8ImZsb2F0MzIiKTtpZihBcnJh eS5pc0FycmF5KHQpfHwiYXJyYXkiPT09ZSlmb3IoZT1uZXcgaCh0Lmxlbmd0 aCtyKSxhPTAsbz1yLHM9ZS5sZW5ndGg7bzxzO28rKyxhKyspZVtvXT1udWxs PT09dFthXT9OYU46dFthXTtlbHNlIDA9PT1yP2U9bmV3IGgodCk6KGU9bmV3 IGgodC5sZW5ndGgrcikpLnNldCh0LHIpfXJldHVybiBlfX0se2R0eXBlOjE3 MX1dLDIzMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJjc3MtZm9udC9zdHJpbmdpZnkiKSxhPVszMiwxMjZdO2UuZXhwb3J0cz1m dW5jdGlvbih0KXt2YXIgZT0odD10fHx7fSkuc2hhcGU/dC5zaGFwZTp0LmNh bnZhcz9bdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0XTpbNTEyLDUx Ml0scj10LmNhbnZhc3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFz IiksaT10LmZvbnQsbz0ibnVtYmVyIj09dHlwZW9mIHQuc3RlcD9bdC5zdGVw LHQuc3RlcF06dC5zdGVwfHxbMzIsMzJdLHM9dC5jaGFyc3x8YTtpJiYic3Ry aW5nIiE9dHlwZW9mIGkmJihpPW4oaSkpO2lmKEFycmF5LmlzQXJyYXkocykp e2lmKDI9PT1zLmxlbmd0aCYmIm51bWJlciI9PXR5cGVvZiBzWzBdJiYibnVt YmVyIj09dHlwZW9mIHNbMV0pe2Zvcih2YXIgbD1bXSxjPXNbMF0sdT0wO2M8 PXNbMV07YysrKWxbdSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpO3M9bH19 ZWxzZSBzPVN0cmluZyhzKS5zcGxpdCgiIik7ZT1lLnNsaWNlKCksci53aWR0 aD1lWzBdLHIuaGVpZ2h0PWVbMV07dmFyIGg9ci5nZXRDb250ZXh0KCIyZCIp O2guZmlsbFN0eWxlPSIjMDAwIixoLmZpbGxSZWN0KDAsMCxyLndpZHRoLHIu aGVpZ2h0KSxoLmZvbnQ9aSxoLnRleHRBbGlnbj0iY2VudGVyIixoLnRleHRC YXNlbGluZT0ibWlkZGxlIixoLmZpbGxTdHlsZT0iI2ZmZiI7Zm9yKHZhciBm PW9bMF0vMixwPW9bMV0vMixjPTA7YzxzLmxlbmd0aDtjKyspaC5maWxsVGV4 dChzW2NdLGYscCksKGYrPW9bMF0pPmVbMF0tb1swXS8yJiYoZj1vWzBdLzIs cCs9b1sxXSk7cmV0dXJuIHJ9fSx7ImNzcy1mb250L3N0cmluZ2lmeSI6MTQ0 fV0sMjMyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u IG4odCxlKXtlfHwoZT17fSksKCJzdHJpbmciPT10eXBlb2YgdHx8QXJyYXku aXNBcnJheSh0KSkmJihlLmZhbWlseT10KTt2YXIgcj1BcnJheS5pc0FycmF5 KGUuZmFtaWx5KT9lLmZhbWlseS5qb2luKCIsICIpOmUuZmFtaWx5O2lmKCFy KXRocm93IEVycm9yKCJgZmFtaWx5YCBtdXN0IGJlIGRlZmluZWQiKTt2YXIg cz1lLnNpemV8fGUuZm9udFNpemV8fGUuZW18fDQ4LGw9ZS53ZWlnaHR8fGUu Zm9udFdlaWdodHx8IiIsYz0odD1bZS5zdHlsZXx8ZS5mb250U3R5bGV8fCIi LGwsc10uam9pbigiICIpKyJweCAiK3IsZS5vcmlnaW58fCJ0b3AiKTtpZihu LmNhY2hlW3JdJiZzPD1uLmNhY2hlW3JdLmVtKXJldHVybiBhKG4uY2FjaGVb cl0sYyk7dmFyIHU9ZS5jYW52YXN8fG4uY2FudmFzLGg9dS5nZXRDb250ZXh0 KCIyZCIpLGY9e3VwcGVyOnZvaWQgMCE9PWUudXBwZXI/ZS51cHBlcjoiSCIs bG93ZXI6dm9pZCAwIT09ZS5sb3dlcj9lLmxvd2VyOiJ4IixkZXNjZW50OnZv aWQgMCE9PWUuZGVzY2VudD9lLmRlc2NlbnQ6InAiLGFzY2VudDp2b2lkIDAh PT1lLmFzY2VudD9lLmFzY2VudDoiaCIsdGl0dGxlOnZvaWQgMCE9PWUudGl0 dGxlP2UudGl0dGxlOiJpIixvdmVyc2hvb3Q6dm9pZCAwIT09ZS5vdmVyc2hv b3Q/ZS5vdmVyc2hvb3Q6Ik8ifSxwPU1hdGguY2VpbCgxLjUqcyk7dS5oZWln aHQ9cCx1LndpZHRoPS41KnAsaC5mb250PXQ7dmFyIGQ9e3RvcDowfTtoLmNs ZWFyUmVjdCgwLDAscCxwKSxoLnRleHRCYXNlbGluZT0idG9wIixoLmZpbGxT dHlsZT0iYmxhY2siLGguZmlsbFRleHQoIkgiLDAsMCk7dmFyIGc9aShoLmdl dEltYWdlRGF0YSgwLDAscCxwKSk7aC5jbGVhclJlY3QoMCwwLHAscCksaC50 ZXh0QmFzZWxpbmU9ImJvdHRvbSIsaC5maWxsVGV4dCgiSCIsMCxwKTt2YXIg dj1pKGguZ2V0SW1hZ2VEYXRhKDAsMCxwLHApKTtkLmxpbmVIZWlnaHQ9ZC5i b3R0b209cC12K2csaC5jbGVhclJlY3QoMCwwLHAscCksaC50ZXh0QmFzZWxp bmU9ImFscGhhYmV0aWMiLGguZmlsbFRleHQoIkgiLDAscCk7dmFyIG09cC1p KGguZ2V0SW1hZ2VEYXRhKDAsMCxwLHApKS0xK2c7ZC5iYXNlbGluZT1kLmFs cGhhYmV0aWM9bSxoLmNsZWFyUmVjdCgwLDAscCxwKSxoLnRleHRCYXNlbGlu ZT0ibWlkZGxlIixoLmZpbGxUZXh0KCJIIiwwLC41KnApO3ZhciB5PWkoaC5n ZXRJbWFnZURhdGEoMCwwLHAscCkpO2QubWVkaWFuPWQubWlkZGxlPXAteS0x K2ctLjUqcCxoLmNsZWFyUmVjdCgwLDAscCxwKSxoLnRleHRCYXNlbGluZT0i aGFuZ2luZyIsaC5maWxsVGV4dCgiSCIsMCwuNSpwKTt2YXIgeD1pKGguZ2V0 SW1hZ2VEYXRhKDAsMCxwLHApKTtkLmhhbmdpbmc9cC14LTErZy0uNSpwLGgu Y2xlYXJSZWN0KDAsMCxwLHApLGgudGV4dEJhc2VsaW5lPSJpZGVvZ3JhcGhp YyIsaC5maWxsVGV4dCgiSCIsMCxwKTt2YXIgYj1pKGguZ2V0SW1hZ2VEYXRh KDAsMCxwLHApKTtpZihkLmlkZW9ncmFwaGljPXAtYi0xK2csZi51cHBlciYm KGguY2xlYXJSZWN0KDAsMCxwLHApLGgudGV4dEJhc2VsaW5lPSJ0b3AiLGgu ZmlsbFRleHQoZi51cHBlciwwLDApLGQudXBwZXI9aShoLmdldEltYWdlRGF0 YSgwLDAscCxwKSksZC5jYXBIZWlnaHQ9ZC5iYXNlbGluZS1kLnVwcGVyKSxm Lmxvd2VyJiYoaC5jbGVhclJlY3QoMCwwLHAscCksaC50ZXh0QmFzZWxpbmU9 InRvcCIsaC5maWxsVGV4dChmLmxvd2VyLDAsMCksZC5sb3dlcj1pKGguZ2V0 SW1hZ2VEYXRhKDAsMCxwLHApKSxkLnhIZWlnaHQ9ZC5iYXNlbGluZS1kLmxv d2VyKSxmLnRpdHRsZSYmKGguY2xlYXJSZWN0KDAsMCxwLHApLGgudGV4dEJh c2VsaW5lPSJ0b3AiLGguZmlsbFRleHQoZi50aXR0bGUsMCwwKSxkLnRpdHRs ZT1pKGguZ2V0SW1hZ2VEYXRhKDAsMCxwLHApKSksZi5hc2NlbnQmJihoLmNs ZWFyUmVjdCgwLDAscCxwKSxoLnRleHRCYXNlbGluZT0idG9wIixoLmZpbGxU ZXh0KGYuYXNjZW50LDAsMCksZC5hc2NlbnQ9aShoLmdldEltYWdlRGF0YSgw LDAscCxwKSkpLGYuZGVzY2VudCYmKGguY2xlYXJSZWN0KDAsMCxwLHApLGgu dGV4dEJhc2VsaW5lPSJ0b3AiLGguZmlsbFRleHQoZi5kZXNjZW50LDAsMCks ZC5kZXNjZW50PW8oaC5nZXRJbWFnZURhdGEoMCwwLHAscCkpKSxmLm92ZXJz aG9vdCl7aC5jbGVhclJlY3QoMCwwLHAscCksaC50ZXh0QmFzZWxpbmU9InRv cCIsaC5maWxsVGV4dChmLm92ZXJzaG9vdCwwLDApO3ZhciBfPW8oaC5nZXRJ bWFnZURhdGEoMCwwLHAscCkpO2Qub3ZlcnNob290PV8tbX1mb3IodmFyIHcg aW4gZClkW3ddLz1zO3JldHVybiBkLmVtPXMsbi5jYWNoZVtyXT1kLGEoZCxj KX1mdW5jdGlvbiBhKHQsZSl7dmFyIHI9e307Zm9yKHZhciBuIGluInN0cmlu ZyI9PXR5cGVvZiBlJiYoZT10W2VdKSx0KSJlbSIhPT1uJiYocltuXT10W25d LWUpO3JldHVybiByfWZ1bmN0aW9uIGkodCl7Zm9yKHZhciBlPXQuaGVpZ2h0 LHI9dC5kYXRhLG49MztuPHIubGVuZ3RoO24rPTQpaWYoMCE9PXJbbl0pcmV0 dXJuIE1hdGguZmxvb3IoLjI1KihuLTMpL2UpfWZ1bmN0aW9uIG8odCl7Zm9y KHZhciBlPXQuaGVpZ2h0LHI9dC5kYXRhLG49ci5sZW5ndGgtMTtuPjA7bi09 NClpZigwIT09cltuXSlyZXR1cm4gTWF0aC5mbG9vciguMjUqKG4tMykvZSl9 ZS5leHBvcnRzPW4sbi5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi Y2FudmFzIiksbi5jYWNoZT17fX0se31dLDIzMzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5l dyBjKHR8fGQsbnVsbCl9O3ZhciBuPTAsYT0xO2Z1bmN0aW9uIGkodCxlLHIs bixhLGkpe3RoaXMuX2NvbG9yPXQsdGhpcy5rZXk9ZSx0aGlzLnZhbHVlPXIs dGhpcy5sZWZ0PW4sdGhpcy5yaWdodD1hLHRoaXMuX2NvdW50PWl9ZnVuY3Rp b24gbyh0KXtyZXR1cm4gbmV3IGkodC5fY29sb3IsdC5rZXksdC52YWx1ZSx0 LmxlZnQsdC5yaWdodCx0Ll9jb3VudCl9ZnVuY3Rpb24gcyh0LGUpe3JldHVy biBuZXcgaSh0LGUua2V5LGUudmFsdWUsZS5sZWZ0LGUucmlnaHQsZS5fY291 bnQpfWZ1bmN0aW9uIGwodCl7dC5fY291bnQ9MSsodC5sZWZ0P3QubGVmdC5f Y291bnQ6MCkrKHQucmlnaHQ/dC5yaWdodC5fY291bnQ6MCl9ZnVuY3Rpb24g Yyh0LGUpe3RoaXMuX2NvbXBhcmU9dCx0aGlzLnJvb3Q9ZX12YXIgdT1jLnBy b3RvdHlwZTtmdW5jdGlvbiBoKHQsZSl7dGhpcy50cmVlPXQsdGhpcy5fc3Rh Y2s9ZX1PYmplY3QuZGVmaW5lUHJvcGVydHkodSwia2V5cyIse2dldDpmdW5j dGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24o ZSxyKXt0LnB1c2goZSl9KSx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1 LCJ2YWx1ZXMiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhp cy5mb3JFYWNoKGZ1bmN0aW9uKGUscil7dC5wdXNoKHIpfSksdH19KSxPYmpl Y3QuZGVmaW5lUHJvcGVydHkodSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMucm9vdD90aGlzLnJvb3QuX2NvdW50OjB9fSksdS5pbnNl cnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5fY29tcGFyZSxvPXRo aXMucm9vdCx1PVtdLGg9W107bzspe3ZhciBmPXIodCxvLmtleSk7dS5wdXNo KG8pLGgucHVzaChmKSxvPWY8PTA/by5sZWZ0Om8ucmlnaHR9dS5wdXNoKG5l dyBpKG4sdCxlLG51bGwsbnVsbCwxKSk7Zm9yKHZhciBwPXUubGVuZ3RoLTI7 cD49MDstLXApe289dVtwXTtoW3BdPD0wP3VbcF09bmV3IGkoby5fY29sb3Is by5rZXksby52YWx1ZSx1W3ArMV0sby5yaWdodCxvLl9jb3VudCsxKTp1W3Bd PW5ldyBpKG8uX2NvbG9yLG8ua2V5LG8udmFsdWUsby5sZWZ0LHVbcCsxXSxv Ll9jb3VudCsxKX1mb3IocD11Lmxlbmd0aC0xO3A+MTstLXApe3ZhciBkPXVb cC0xXTtvPXVbcF07aWYoZC5fY29sb3I9PT1hfHxvLl9jb2xvcj09PWEpYnJl YWs7dmFyIGc9dVtwLTJdO2lmKGcubGVmdD09PWQpaWYoZC5sZWZ0PT09byl7 aWYoISh2PWcucmlnaHQpfHx2Ll9jb2xvciE9PW4pe2lmKGcuX2NvbG9yPW4s Zy5sZWZ0PWQucmlnaHQsZC5fY29sb3I9YSxkLnJpZ2h0PWcsdVtwLTJdPWQs dVtwLTFdPW8sbChnKSxsKGQpLHA+PTMpKG09dVtwLTNdKS5sZWZ0PT09Zz9t LmxlZnQ9ZDptLnJpZ2h0PWQ7YnJlYWt9ZC5fY29sb3I9YSxnLnJpZ2h0PXMo YSx2KSxnLl9jb2xvcj1uLHAtPTF9ZWxzZXtpZighKHY9Zy5yaWdodCl8fHYu X2NvbG9yIT09bil7aWYoZC5yaWdodD1vLmxlZnQsZy5fY29sb3I9bixnLmxl ZnQ9by5yaWdodCxvLl9jb2xvcj1hLG8ubGVmdD1kLG8ucmlnaHQ9Zyx1W3At Ml09byx1W3AtMV09ZCxsKGcpLGwoZCksbChvKSxwPj0zKShtPXVbcC0zXSku bGVmdD09PWc/bS5sZWZ0PW86bS5yaWdodD1vO2JyZWFrfWQuX2NvbG9yPWEs Zy5yaWdodD1zKGEsdiksZy5fY29sb3I9bixwLT0xfWVsc2UgaWYoZC5yaWdo dD09PW8pe2lmKCEodj1nLmxlZnQpfHx2Ll9jb2xvciE9PW4pe2lmKGcuX2Nv bG9yPW4sZy5yaWdodD1kLmxlZnQsZC5fY29sb3I9YSxkLmxlZnQ9Zyx1W3At Ml09ZCx1W3AtMV09byxsKGcpLGwoZCkscD49MykobT11W3AtM10pLnJpZ2h0 PT09Zz9tLnJpZ2h0PWQ6bS5sZWZ0PWQ7YnJlYWt9ZC5fY29sb3I9YSxnLmxl ZnQ9cyhhLHYpLGcuX2NvbG9yPW4scC09MX1lbHNle3ZhciB2O2lmKCEodj1n LmxlZnQpfHx2Ll9jb2xvciE9PW4pe3ZhciBtO2lmKGQubGVmdD1vLnJpZ2h0 LGcuX2NvbG9yPW4sZy5yaWdodD1vLmxlZnQsby5fY29sb3I9YSxvLnJpZ2h0 PWQsby5sZWZ0PWcsdVtwLTJdPW8sdVtwLTFdPWQsbChnKSxsKGQpLGwobyks cD49MykobT11W3AtM10pLnJpZ2h0PT09Zz9tLnJpZ2h0PW86bS5sZWZ0PW87 YnJlYWt9ZC5fY29sb3I9YSxnLmxlZnQ9cyhhLHYpLGcuX2NvbG9yPW4scC09 MX19cmV0dXJuIHVbMF0uX2NvbG9yPWEsbmV3IGMocix1WzBdKX0sdS5mb3JF YWNoPWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLnJvb3Qpc3dpdGNoKGFyZ3Vt ZW50cy5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24gdChlLHIpe3Zh ciBuO2lmKHIubGVmdCYmKG49dChlLHIubGVmdCkpKXJldHVybiBuO3JldHVy bihuPWUoci5rZXksci52YWx1ZSkpfHwoci5yaWdodD90KGUsci5yaWdodCk6 dm9pZCAwKX0odCx0aGlzLnJvb3QpO2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24g dChlLHIsbixhKXtpZihyKGUsYS5rZXkpPD0wKXt2YXIgaTtpZihhLmxlZnQm JihpPXQoZSxyLG4sYS5sZWZ0KSkpcmV0dXJuIGk7aWYoaT1uKGEua2V5LGEu dmFsdWUpKXJldHVybiBpfWlmKGEucmlnaHQpcmV0dXJuIHQoZSxyLG4sYS5y aWdodCl9KGUsdGhpcy5fY29tcGFyZSx0LHRoaXMucm9vdCk7Y2FzZSAzOmlm KHRoaXMuX2NvbXBhcmUoZSxyKT49MClyZXR1cm47cmV0dXJuIGZ1bmN0aW9u IHQoZSxyLG4sYSxpKXt2YXIgbyxzPW4oZSxpLmtleSksbD1uKHIsaS5rZXkp O2lmKHM8PTApe2lmKGkubGVmdCYmKG89dChlLHIsbixhLGkubGVmdCkpKXJl dHVybiBvO2lmKGw+MCYmKG89YShpLmtleSxpLnZhbHVlKSkpcmV0dXJuIG99 aWYobD4wJiZpLnJpZ2h0KXJldHVybiB0KGUscixuLGEsaS5yaWdodCl9KGUs cix0aGlzLl9jb21wYXJlLHQsdGhpcy5yb290KX19LE9iamVjdC5kZWZpbmVQ cm9wZXJ0eSh1LCJiZWdpbiIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1b XSxlPXRoaXMucm9vdDtlOyl0LnB1c2goZSksZT1lLmxlZnQ7cmV0dXJuIG5l dyBoKHRoaXMsdCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHUsImVuZCIs e2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPXRoaXMucm9vdDtlOyl0 LnB1c2goZSksZT1lLnJpZ2h0O3JldHVybiBuZXcgaCh0aGlzLHQpfX0pLHUu YXQ9ZnVuY3Rpb24odCl7aWYodDwwKXJldHVybiBuZXcgaCh0aGlzLFtdKTtm b3IodmFyIGU9dGhpcy5yb290LHI9W107Oyl7aWYoci5wdXNoKGUpLGUubGVm dCl7aWYodDxlLmxlZnQuX2NvdW50KXtlPWUubGVmdDtjb250aW51ZX10LT1l LmxlZnQuX2NvdW50fWlmKCF0KXJldHVybiBuZXcgaCh0aGlzLHIpO2lmKHQt PTEsIWUucmlnaHQpYnJlYWs7aWYodD49ZS5yaWdodC5fY291bnQpYnJlYWs7 ZT1lLnJpZ2h0fXJldHVybiBuZXcgaCh0aGlzLFtdKX0sdS5nZT1mdW5jdGlv bih0KXtmb3IodmFyIGU9dGhpcy5fY29tcGFyZSxyPXRoaXMucm9vdCxuPVtd LGE9MDtyOyl7dmFyIGk9ZSh0LHIua2V5KTtuLnB1c2gociksaTw9MCYmKGE9 bi5sZW5ndGgpLHI9aTw9MD9yLmxlZnQ6ci5yaWdodH1yZXR1cm4gbi5sZW5n dGg9YSxuZXcgaCh0aGlzLG4pfSx1Lmd0PWZ1bmN0aW9uKHQpe2Zvcih2YXIg ZT10aGlzLl9jb21wYXJlLHI9dGhpcy5yb290LG49W10sYT0wO3I7KXt2YXIg aT1lKHQsci5rZXkpO24ucHVzaChyKSxpPDAmJihhPW4ubGVuZ3RoKSxyPWk8 MD9yLmxlZnQ6ci5yaWdodH1yZXR1cm4gbi5sZW5ndGg9YSxuZXcgaCh0aGlz LG4pfSx1Lmx0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jb21wYXJl LHI9dGhpcy5yb290LG49W10sYT0wO3I7KXt2YXIgaT1lKHQsci5rZXkpO24u cHVzaChyKSxpPjAmJihhPW4ubGVuZ3RoKSxyPWk8PTA/ci5sZWZ0OnIucmln aHR9cmV0dXJuIG4ubGVuZ3RoPWEsbmV3IGgodGhpcyxuKX0sdS5sZT1mdW5j dGlvbih0KXtmb3IodmFyIGU9dGhpcy5fY29tcGFyZSxyPXRoaXMucm9vdCxu PVtdLGE9MDtyOyl7dmFyIGk9ZSh0LHIua2V5KTtuLnB1c2gociksaT49MCYm KGE9bi5sZW5ndGgpLHI9aTwwP3IubGVmdDpyLnJpZ2h0fXJldHVybiBuLmxl bmd0aD1hLG5ldyBoKHRoaXMsbil9LHUuZmluZD1mdW5jdGlvbih0KXtmb3Io dmFyIGU9dGhpcy5fY29tcGFyZSxyPXRoaXMucm9vdCxuPVtdO3I7KXt2YXIg YT1lKHQsci5rZXkpO2lmKG4ucHVzaChyKSwwPT09YSlyZXR1cm4gbmV3IGgo dGhpcyxuKTtyPWE8PTA/ci5sZWZ0OnIucmlnaHR9cmV0dXJuIG5ldyBoKHRo aXMsW10pfSx1LnJlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZpbmQo dCk7cmV0dXJuIGU/ZS5yZW1vdmUoKTp0aGlzfSx1LmdldD1mdW5jdGlvbih0 KXtmb3IodmFyIGU9dGhpcy5fY29tcGFyZSxyPXRoaXMucm9vdDtyOyl7dmFy IG49ZSh0LHIua2V5KTtpZigwPT09bilyZXR1cm4gci52YWx1ZTtyPW48PTA/ ci5sZWZ0OnIucmlnaHR9fTt2YXIgZj1oLnByb3RvdHlwZTtmdW5jdGlvbiBw KHQsZSl7dC5rZXk9ZS5rZXksdC52YWx1ZT1lLnZhbHVlLHQubGVmdD1lLmxl ZnQsdC5yaWdodD1lLnJpZ2h0LHQuX2NvbG9yPWUuX2NvbG9yLHQuX2NvdW50 PWUuX2NvdW50fWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8x OjB9T2JqZWN0LmRlZmluZVByb3BlcnR5KGYsInZhbGlkIix7Z2V0OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3N0YWNrLmxlbmd0aD4wfX0pLE9iamVjdC5k ZWZpbmVQcm9wZXJ0eShmLCJub2RlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX3N0YWNrLmxlbmd0aD4wP3RoaXMuX3N0YWNrW3RoaXMuX3N0YWNr Lmxlbmd0aC0xXTpudWxsfSxlbnVtZXJhYmxlOiEwfSksZi5jbG9uZT1mdW5j dGlvbigpe3JldHVybiBuZXcgaCh0aGlzLnRyZWUsdGhpcy5fc3RhY2suc2xp Y2UoKSl9LGYucmVtb3ZlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3RhY2s7 aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLnRyZWU7dmFyIGU9bmV3IEFy cmF5KHQubGVuZ3RoKSxyPXRbdC5sZW5ndGgtMV07ZVtlLmxlbmd0aC0xXT1u ZXcgaShyLl9jb2xvcixyLmtleSxyLnZhbHVlLHIubGVmdCxyLnJpZ2h0LHIu X2NvdW50KTtmb3IodmFyIHU9dC5sZW5ndGgtMjt1Pj0wOy0tdSl7KHI9dFt1 XSkubGVmdD09PXRbdSsxXT9lW3VdPW5ldyBpKHIuX2NvbG9yLHIua2V5LHIu dmFsdWUsZVt1KzFdLHIucmlnaHQsci5fY291bnQpOmVbdV09bmV3IGkoci5f Y29sb3Isci5rZXksci52YWx1ZSxyLmxlZnQsZVt1KzFdLHIuX2NvdW50KX1p Zigocj1lW2UubGVuZ3RoLTFdKS5sZWZ0JiZyLnJpZ2h0KXt2YXIgaD1lLmxl bmd0aDtmb3Iocj1yLmxlZnQ7ci5yaWdodDspZS5wdXNoKHIpLHI9ci5yaWdo dDt2YXIgZj1lW2gtMV07ZS5wdXNoKG5ldyBpKHIuX2NvbG9yLGYua2V5LGYu dmFsdWUsci5sZWZ0LHIucmlnaHQsci5fY291bnQpKSxlW2gtMV0ua2V5PXIu a2V5LGVbaC0xXS52YWx1ZT1yLnZhbHVlO2Zvcih1PWUubGVuZ3RoLTI7dT49 aDstLXUpcj1lW3VdLGVbdV09bmV3IGkoci5fY29sb3Isci5rZXksci52YWx1 ZSxyLmxlZnQsZVt1KzFdLHIuX2NvdW50KTtlW2gtMV0ubGVmdD1lW2hdfWlm KChyPWVbZS5sZW5ndGgtMV0pLl9jb2xvcj09PW4pe3ZhciBkPWVbZS5sZW5n dGgtMl07ZC5sZWZ0PT09cj9kLmxlZnQ9bnVsbDpkLnJpZ2h0PT09ciYmKGQu cmlnaHQ9bnVsbCksZS5wb3AoKTtmb3IodT0wO3U8ZS5sZW5ndGg7Kyt1KWVb dV0uX2NvdW50LS07cmV0dXJuIG5ldyBjKHRoaXMudHJlZS5fY29tcGFyZSxl WzBdKX1pZihyLmxlZnR8fHIucmlnaHQpe3IubGVmdD9wKHIsci5sZWZ0KTpy LnJpZ2h0JiZwKHIsci5yaWdodCksci5fY29sb3I9YTtmb3IodT0wO3U8ZS5s ZW5ndGgtMTsrK3UpZVt1XS5fY291bnQtLTtyZXR1cm4gbmV3IGModGhpcy50 cmVlLl9jb21wYXJlLGVbMF0pfWlmKDE9PT1lLmxlbmd0aClyZXR1cm4gbmV3 IGModGhpcy50cmVlLl9jb21wYXJlLG51bGwpO2Zvcih1PTA7dTxlLmxlbmd0 aDsrK3UpZVt1XS5fY291bnQtLTt2YXIgZz1lW2UubGVuZ3RoLTJdO3JldHVy biBmdW5jdGlvbih0KXtmb3IodmFyIGUscixpLGMsdT10Lmxlbmd0aC0xO3U+ PTA7LS11KXtpZihlPXRbdV0sMD09PXUpcmV0dXJuIHZvaWQoZS5fY29sb3I9 YSk7aWYoKHI9dFt1LTFdKS5sZWZ0PT09ZSl7aWYoKGk9ci5yaWdodCkucmln aHQmJmkucmlnaHQuX2NvbG9yPT09bilyZXR1cm4gYz0oaT1yLnJpZ2h0PW8o aSkpLnJpZ2h0PW8oaS5yaWdodCksci5yaWdodD1pLmxlZnQsaS5sZWZ0PXIs aS5yaWdodD1jLGkuX2NvbG9yPXIuX2NvbG9yLGUuX2NvbG9yPWEsci5fY29s b3I9YSxjLl9jb2xvcj1hLGwociksbChpKSx1PjEmJigoaD10W3UtMl0pLmxl ZnQ9PT1yP2gubGVmdD1pOmgucmlnaHQ9aSksdm9pZCh0W3UtMV09aSk7aWYo aS5sZWZ0JiZpLmxlZnQuX2NvbG9yPT09bilyZXR1cm4gYz0oaT1yLnJpZ2h0 PW8oaSkpLmxlZnQ9byhpLmxlZnQpLHIucmlnaHQ9Yy5sZWZ0LGkubGVmdD1j LnJpZ2h0LGMubGVmdD1yLGMucmlnaHQ9aSxjLl9jb2xvcj1yLl9jb2xvcixy Ll9jb2xvcj1hLGkuX2NvbG9yPWEsZS5fY29sb3I9YSxsKHIpLGwoaSksbChj KSx1PjEmJigoaD10W3UtMl0pLmxlZnQ9PT1yP2gubGVmdD1jOmgucmlnaHQ9 Yyksdm9pZCh0W3UtMV09Yyk7aWYoaS5fY29sb3I9PT1hKXtpZihyLl9jb2xv cj09PW4pcmV0dXJuIHIuX2NvbG9yPWEsdm9pZChyLnJpZ2h0PXMobixpKSk7 ci5yaWdodD1zKG4saSk7Y29udGludWV9aT1vKGkpLHIucmlnaHQ9aS5sZWZ0 LGkubGVmdD1yLGkuX2NvbG9yPXIuX2NvbG9yLHIuX2NvbG9yPW4sbChyKSxs KGkpLHU+MSYmKChoPXRbdS0yXSkubGVmdD09PXI/aC5sZWZ0PWk6aC5yaWdo dD1pKSx0W3UtMV09aSx0W3VdPXIsdSsxPHQubGVuZ3RoP3RbdSsxXT1lOnQu cHVzaChlKSx1Kz0yfWVsc2V7aWYoKGk9ci5sZWZ0KS5sZWZ0JiZpLmxlZnQu X2NvbG9yPT09bilyZXR1cm4gYz0oaT1yLmxlZnQ9byhpKSkubGVmdD1vKGku bGVmdCksci5sZWZ0PWkucmlnaHQsaS5yaWdodD1yLGkubGVmdD1jLGkuX2Nv bG9yPXIuX2NvbG9yLGUuX2NvbG9yPWEsci5fY29sb3I9YSxjLl9jb2xvcj1h LGwociksbChpKSx1PjEmJigoaD10W3UtMl0pLnJpZ2h0PT09cj9oLnJpZ2h0 PWk6aC5sZWZ0PWkpLHZvaWQodFt1LTFdPWkpO2lmKGkucmlnaHQmJmkucmln aHQuX2NvbG9yPT09bilyZXR1cm4gYz0oaT1yLmxlZnQ9byhpKSkucmlnaHQ9 byhpLnJpZ2h0KSxyLmxlZnQ9Yy5yaWdodCxpLnJpZ2h0PWMubGVmdCxjLnJp Z2h0PXIsYy5sZWZ0PWksYy5fY29sb3I9ci5fY29sb3Isci5fY29sb3I9YSxp Ll9jb2xvcj1hLGUuX2NvbG9yPWEsbChyKSxsKGkpLGwoYyksdT4xJiYoKGg9 dFt1LTJdKS5yaWdodD09PXI/aC5yaWdodD1jOmgubGVmdD1jKSx2b2lkKHRb dS0xXT1jKTtpZihpLl9jb2xvcj09PWEpe2lmKHIuX2NvbG9yPT09bilyZXR1 cm4gci5fY29sb3I9YSx2b2lkKHIubGVmdD1zKG4saSkpO3IubGVmdD1zKG4s aSk7Y29udGludWV9dmFyIGg7aT1vKGkpLHIubGVmdD1pLnJpZ2h0LGkucmln aHQ9cixpLl9jb2xvcj1yLl9jb2xvcixyLl9jb2xvcj1uLGwociksbChpKSx1 PjEmJigoaD10W3UtMl0pLnJpZ2h0PT09cj9oLnJpZ2h0PWk6aC5sZWZ0PWkp LHRbdS0xXT1pLHRbdV09cix1KzE8dC5sZW5ndGg/dFt1KzFdPWU6dC5wdXNo KGUpLHUrPTJ9fX0oZSksZy5sZWZ0PT09cj9nLmxlZnQ9bnVsbDpnLnJpZ2h0 PW51bGwsbmV3IGModGhpcy50cmVlLl9jb21wYXJlLGVbMF0pfSxPYmplY3Qu ZGVmaW5lUHJvcGVydHkoZiwia2V5Iix7Z2V0OmZ1bmN0aW9uKCl7aWYodGhp cy5fc3RhY2subGVuZ3RoPjApcmV0dXJuIHRoaXMuX3N0YWNrW3RoaXMuX3N0 YWNrLmxlbmd0aC0xXS5rZXl9LGVudW1lcmFibGU6ITB9KSxPYmplY3QuZGVm aW5lUHJvcGVydHkoZiwidmFsdWUiLHtnZXQ6ZnVuY3Rpb24oKXtpZih0aGlz Ll9zdGFjay5sZW5ndGg+MClyZXR1cm4gdGhpcy5fc3RhY2tbdGhpcy5fc3Rh Y2subGVuZ3RoLTFdLnZhbHVlfSxlbnVtZXJhYmxlOiEwfSksT2JqZWN0LmRl ZmluZVByb3BlcnR5KGYsImluZGV4Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9 MCxlPXRoaXMuX3N0YWNrO2lmKDA9PT1lLmxlbmd0aCl7dmFyIHI9dGhpcy50 cmVlLnJvb3Q7cmV0dXJuIHI/ci5fY291bnQ6MH1lW2UubGVuZ3RoLTFdLmxl ZnQmJih0PWVbZS5sZW5ndGgtMV0ubGVmdC5fY291bnQpO2Zvcih2YXIgbj1l Lmxlbmd0aC0yO24+PTA7LS1uKWVbbisxXT09PWVbbl0ucmlnaHQmJigrK3Qs ZVtuXS5sZWZ0JiYodCs9ZVtuXS5sZWZ0Ll9jb3VudCkpO3JldHVybiB0fSxl bnVtZXJhYmxlOiEwfSksZi5uZXh0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5f c3RhY2s7aWYoMCE9PXQubGVuZ3RoKXt2YXIgZT10W3QubGVuZ3RoLTFdO2lm KGUucmlnaHQpZm9yKGU9ZS5yaWdodDtlOyl0LnB1c2goZSksZT1lLmxlZnQ7 ZWxzZSBmb3IodC5wb3AoKTt0Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdLnJp Z2h0PT09ZTspZT10W3QubGVuZ3RoLTFdLHQucG9wKCl9fSxPYmplY3QuZGVm aW5lUHJvcGVydHkoZiwiaGFzTmV4dCIse2dldDpmdW5jdGlvbigpe3ZhciB0 PXRoaXMuX3N0YWNrO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMTtpZih0W3Qu bGVuZ3RoLTFdLnJpZ2h0KXJldHVybiEwO2Zvcih2YXIgZT10Lmxlbmd0aC0x O2U+MDstLWUpaWYodFtlLTFdLmxlZnQ9PT10W2VdKXJldHVybiEwO3JldHVy biExfX0pLGYudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N0YWNr O2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbid0IHVwZGF0 ZSBlbXB0eSBub2RlISIpO3ZhciByPW5ldyBBcnJheShlLmxlbmd0aCksbj1l W2UubGVuZ3RoLTFdO3Jbci5sZW5ndGgtMV09bmV3IGkobi5fY29sb3Isbi5r ZXksdCxuLmxlZnQsbi5yaWdodCxuLl9jb3VudCk7Zm9yKHZhciBhPWUubGVu Z3RoLTI7YT49MDstLWEpKG49ZVthXSkubGVmdD09PWVbYSsxXT9yW2FdPW5l dyBpKG4uX2NvbG9yLG4ua2V5LG4udmFsdWUsclthKzFdLG4ucmlnaHQsbi5f Y291bnQpOnJbYV09bmV3IGkobi5fY29sb3Isbi5rZXksbi52YWx1ZSxuLmxl ZnQsclthKzFdLG4uX2NvdW50KTtyZXR1cm4gbmV3IGModGhpcy50cmVlLl9j b21wYXJlLHJbMF0pfSxmLnByZXY9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9z dGFjaztpZigwIT09dC5sZW5ndGgpe3ZhciBlPXRbdC5sZW5ndGgtMV07aWYo ZS5sZWZ0KWZvcihlPWUubGVmdDtlOyl0LnB1c2goZSksZT1lLnJpZ2h0O2Vs c2UgZm9yKHQucG9wKCk7dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXS5sZWZ0 PT09ZTspZT10W3QubGVuZ3RoLTFdLHQucG9wKCl9fSxPYmplY3QuZGVmaW5l UHJvcGVydHkoZiwiaGFzUHJldiIse2dldDpmdW5jdGlvbigpe3ZhciB0PXRo aXMuX3N0YWNrO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMTtpZih0W3QubGVu Z3RoLTFdLmxlZnQpcmV0dXJuITA7Zm9yKHZhciBlPXQubGVuZ3RoLTE7ZT4w Oy0tZSlpZih0W2UtMV0ucmlnaHQ9PT10W2VdKXJldHVybiEwO3JldHVybiEx fX0pfSx7fV0sMjM0OltmdW5jdGlvbih0LGUscil7dmFyIG49Wy45OTk5OTk5 OTk5OTk4MDk5LDY3Ni41MjAzNjgxMjE4ODUxLC0xMjU5LjEzOTIxNjcyMjQw MjgsNzcxLjMyMzQyODc3NzY1MzEsLTE3Ni42MTUwMjkxNjIxNDA2LDEyLjUw NzM0MzI3ODY4NjkwNSwtLjEzODU3MTA5NTI2NTcyMDEyLDk5ODQzNjk1Nzgw MTk1NzJlLTIxLDEuNTA1NjMyNzM1MTQ5MzExNmUtN10sYT02MDcvMTI4LGk9 Wy45OTk5OTk5OTk5OTk5OTcxLDU3LjE1NjIzNTY2NTg2MjkyLC01OS41OTc5 NjAzNTU0NzU0OSwxNC4xMzYwOTc5NzQ3NDE3NDYsLS40OTE5MTM4MTYwOTc2 MjAyLDMzOTk0NjQ5OTg0ODExODllLTIwLDQ2NTIzNjI4OTI3MDQ4NThlLTIw LC05ODM3NDQ3NTMwNDg3OTU2ZS0yMCwuMDAwMTU4MDg4NzAzMjI0OTEyNSwt LjAwMDIxMDI2NDQ0MTcyNDEwNDg4LC4wMDAyMTc0Mzk2MTgxMTUyMTI2NSwt LjAwMDE2NDMxODEwNjUzNjc2MzksODQ0MTgyMjM5ODM4NTI3NWUtMjAsLTI2 MTkwODM4NDAxNTgxNDA4ZS0yMSwzNjg5OTE4MjY1OTUzMTYyNWUtMjJdO2Z1 bmN0aW9uIG8odCl7aWYodDwwKXJldHVybiBOdW1iZXIoIjAvMCIpO2Zvcih2 YXIgZT1pWzBdLHI9aS5sZW5ndGgtMTtyPjA7LS1yKWUrPWlbcl0vKHQrcik7 dmFyIG49dCthKy41O3JldHVybi41Kk1hdGgubG9nKDIqTWF0aC5QSSkrKHQr LjUpKk1hdGgubG9nKG4pLW4rTWF0aC5sb2coZSktTWF0aC5sb2codCl9ZS5l eHBvcnRzPWZ1bmN0aW9uIHQoZSl7aWYoZTwuNSlyZXR1cm4gTWF0aC5QSS8o TWF0aC5zaW4oTWF0aC5QSSplKSp0KDEtZSkpO2lmKGU+MTAwKXJldHVybiBN YXRoLmV4cChvKGUpKTtlLT0xO2Zvcih2YXIgcj1uWzBdLGE9MTthPDk7YSsr KXIrPW5bYV0vKGUrYSk7dmFyIGk9ZSs3Ky41O3JldHVybiBNYXRoLnNxcnQo MipNYXRoLlBJKSpNYXRoLnBvdyhpLGUrLjUpKk1hdGguZXhwKC1pKSpyfSxl LmV4cG9ydHMubG9nPW99LHt9XSwyMzU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhy b3cgbmV3IFR5cGVFcnJvcigibXVzdCBzcGVjaWZ5IHR5cGUgc3RyaW5nIik7 aWYoZT1lfHx7fSwidW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50JiYhZS5j YW52YXMpcmV0dXJuIG51bGw7dmFyIHI9ZS5jYW52YXN8fGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImNhbnZhcyIpOyJudW1iZXIiPT10eXBlb2YgZS53aWR0 aCYmKHIud2lkdGg9ZS53aWR0aCk7Im51bWJlciI9PXR5cGVvZiBlLmhlaWdo dCYmKHIuaGVpZ2h0PWUuaGVpZ2h0KTt2YXIgbixhPWU7dHJ5e3ZhciBpPVt0 XTswPT09dC5pbmRleE9mKCJ3ZWJnbCIpJiZpLnB1c2goImV4cGVyaW1lbnRh bC0iK3QpO2Zvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKWlmKG49ci5nZXRD b250ZXh0KGlbb10sYSkpcmV0dXJuIG59Y2F0Y2godCl7bj1udWxsfXJldHVy biBufHxudWxsfX0se31dLDIzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgdSh0KTty ZXR1cm4gci51cGRhdGUoZSkscn07dmFyIG49dCgiLi9saWIvdGV4dC5qcyIp LGE9dCgiLi9saWIvbGluZXMuanMiKSxpPXQoIi4vbGliL2JhY2tncm91bmQu anMiKSxvPXQoIi4vbGliL2N1YmUuanMiKSxzPXQoIi4vbGliL3RpY2tzLmpz IiksbD1uZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDAsMSwwLDAsMCwwLDEs MCwwLDAsMCwxXSk7ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB0WzBdPWVbMF0s dFsxXT1lWzFdLHRbMl09ZVsyXSx0fWZ1bmN0aW9uIHUodCl7dGhpcy5nbD10 LHRoaXMucGl4ZWxSYXRpbz0xLHRoaXMuYm91bmRzPVtbLTEwLC0xMCwtMTBd LFsxMCwxMCwxMF1dLHRoaXMudGlja3M9W1tdLFtdLFtdXSx0aGlzLmF1dG9U aWNrcz0hMCx0aGlzLnRpY2tTcGFjaW5nPVsxLDEsMV0sdGhpcy50aWNrRW5h YmxlPVshMCwhMCwhMF0sdGhpcy50aWNrRm9udD1bInNhbnMtc2VyaWYiLCJz YW5zLXNlcmlmIiwic2Fucy1zZXJpZiJdLHRoaXMudGlja1NpemU9WzEyLDEy LDEyXSx0aGlzLnRpY2tBbmdsZT1bMCwwLDBdLHRoaXMudGlja0FsaWduPVsi YXV0byIsImF1dG8iLCJhdXRvIl0sdGhpcy50aWNrQ29sb3I9W1swLDAsMCwx XSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnRpY2tQYWQ9WzEwLDEwLDEw XSx0aGlzLmxhc3RDdWJlUHJvcHM9e2N1YmVFZGdlczpbMCwwLDBdLGF4aXM6 WzAsMCwwXX0sdGhpcy5sYWJlbHM9WyJ4IiwieSIsInoiXSx0aGlzLmxhYmVs RW5hYmxlPVshMCwhMCwhMF0sdGhpcy5sYWJlbEZvbnQ9InNhbnMtc2VyaWYi LHRoaXMubGFiZWxTaXplPVsyMCwyMCwyMF0sdGhpcy5sYWJlbEFuZ2xlPVsw LDAsMF0sdGhpcy5sYWJlbEFsaWduPVsiYXV0byIsImF1dG8iLCJhdXRvIl0s dGhpcy5sYWJlbENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwx XV0sdGhpcy5sYWJlbFBhZD1bMTAsMTAsMTBdLHRoaXMubGluZUVuYWJsZT1b ITAsITAsITBdLHRoaXMubGluZU1pcnJvcj1bITEsITEsITFdLHRoaXMubGlu ZVdpZHRoPVsxLDEsMV0sdGhpcy5saW5lQ29sb3I9W1swLDAsMCwxXSxbMCww LDAsMV0sWzAsMCwwLDFdXSx0aGlzLmxpbmVUaWNrRW5hYmxlPVshMCwhMCwh MF0sdGhpcy5saW5lVGlja01pcnJvcj1bITEsITEsITFdLHRoaXMubGluZVRp Y2tMZW5ndGg9WzAsMCwwXSx0aGlzLmxpbmVUaWNrV2lkdGg9WzEsMSwxXSx0 aGlzLmxpbmVUaWNrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCww LDFdXSx0aGlzLmdyaWRFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmdyaWRXaWR0 aD1bMSwxLDFdLHRoaXMuZ3JpZENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFd LFswLDAsMCwxXV0sdGhpcy56ZXJvRW5hYmxlPVshMCwhMCwhMF0sdGhpcy56 ZXJvTGluZUNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0s dGhpcy56ZXJvTGluZVdpZHRoPVsyLDIsMl0sdGhpcy5iYWNrZ3JvdW5kRW5h YmxlPVshMSwhMSwhMV0sdGhpcy5iYWNrZ3JvdW5kQ29sb3I9W1suOCwuOCwu OCwuNV0sWy44LC44LC44LC41XSxbLjgsLjgsLjgsLjVdXSx0aGlzLl9maXJz dEluaXQ9ITAsdGhpcy5fdGV4dD1udWxsLHRoaXMuX2xpbmVzPW51bGwsdGhp cy5fYmFja2dyb3VuZD1pKHQpfXZhciBoPXUucHJvdG90eXBlO2Z1bmN0aW9u IGYoKXt0aGlzLnByaW1hbE9mZnNldD1bMCwwLDBdLHRoaXMucHJpbWFsTWlu b3I9WzAsMCwwXSx0aGlzLm1pcnJvck9mZnNldD1bMCwwLDBdLHRoaXMubWly cm9yTWlub3I9WzAsMCwwXX1oLnVwZGF0ZT1mdW5jdGlvbih0KXtmdW5jdGlv biBlKGUscixuKXtpZihuIGluIHQpe3ZhciBhLGk9dFtuXSxvPXRoaXNbbl07 KGU/QXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheShpWzBdKTpBcnJh eS5pc0FycmF5KGkpKT90aGlzW25dPWE9W3IoaVswXSkscihpWzFdKSxyKGlb Ml0pXTp0aGlzW25dPWE9W3IoaSkscihpKSxyKGkpXTtmb3IodmFyIHM9MDtz PDM7KytzKWlmKGFbc10hPT1vW3NdKXJldHVybiEwfXJldHVybiExfXQ9dHx8 e307dmFyIHIsaT1lLmJpbmQodGhpcywhMSxOdW1iZXIpLG89ZS5iaW5kKHRo aXMsITEsQm9vbGVhbiksbD1lLmJpbmQodGhpcywhMSxTdHJpbmcpLGM9ZS5i aW5kKHRoaXMsITAsZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7 aWYoMz09PXQubGVuZ3RoKXJldHVyblsrdFswXSwrdFsxXSwrdFsyXSwxXTtp Zig0PT09dC5sZW5ndGgpcmV0dXJuWyt0WzBdLCt0WzFdLCt0WzJdLCt0WzNd XX1yZXR1cm5bMCwwLDAsMV19KSx1PSExLGg9ITE7aWYoImJvdW5kcyJpbiB0 KWZvcih2YXIgZj10LmJvdW5kcyxwPTA7cDwyOysrcClmb3IodmFyIGQ9MDtk PDM7KytkKWZbcF1bZF0hPT10aGlzLmJvdW5kc1twXVtkXSYmKGg9ITApLHRo aXMuYm91bmRzW3BdW2RdPWZbcF1bZF07aWYoInRpY2tzImluIHQpe3I9dC50 aWNrcyx1PSEwLHRoaXMuYXV0b1RpY2tzPSExO2ZvcihwPTA7cDwzOysrcCl0 aGlzLnRpY2tTcGFjaW5nW3BdPTB9ZWxzZSBpKCJ0aWNrU3BhY2luZyIpJiYo dGhpcy5hdXRvVGlja3M9ITAsaD0hMCk7aWYodGhpcy5fZmlyc3RJbml0JiYo InRpY2tzImluIHR8fCJ0aWNrU3BhY2luZyJpbiB0fHwodGhpcy5hdXRvVGlj a3M9ITApLGg9ITAsdT0hMCx0aGlzLl9maXJzdEluaXQ9ITEpLGgmJnRoaXMu YXV0b1RpY2tzJiYocj1zLmNyZWF0ZSh0aGlzLmJvdW5kcyx0aGlzLnRpY2tT cGFjaW5nKSx1PSEwKSx1KXtmb3IocD0wO3A8MzsrK3ApcltwXS5zb3J0KGZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHQueC1lLnh9KTtzLmVxdWFsKHIsdGhpcy50 aWNrcyk/dT0hMTp0aGlzLnRpY2tzPXJ9bygidGlja0VuYWJsZSIpLGwoInRp Y2tGb250IikmJih1PSEwKSxpKCJ0aWNrU2l6ZSIpLGkoInRpY2tBbmdsZSIp LGkoInRpY2tQYWQiKSxjKCJ0aWNrQ29sb3IiKTt2YXIgZz1sKCJsYWJlbHMi KTtsKCJsYWJlbEZvbnQiKSYmKGc9ITApLG8oImxhYmVsRW5hYmxlIiksaSgi bGFiZWxTaXplIiksaSgibGFiZWxQYWQiKSxjKCJsYWJlbENvbG9yIiksbygi bGluZUVuYWJsZSIpLG8oImxpbmVNaXJyb3IiKSxpKCJsaW5lV2lkdGgiKSxj KCJsaW5lQ29sb3IiKSxvKCJsaW5lVGlja0VuYWJsZSIpLG8oImxpbmVUaWNr TWlycm9yIiksaSgibGluZVRpY2tMZW5ndGgiKSxpKCJsaW5lVGlja1dpZHRo IiksYygibGluZVRpY2tDb2xvciIpLG8oImdyaWRFbmFibGUiKSxpKCJncmlk V2lkdGgiKSxjKCJncmlkQ29sb3IiKSxvKCJ6ZXJvRW5hYmxlIiksYygiemVy b0xpbmVDb2xvciIpLGkoInplcm9MaW5lV2lkdGgiKSxvKCJiYWNrZ3JvdW5k RW5hYmxlIiksYygiYmFja2dyb3VuZENvbG9yIiksdGhpcy5fdGV4dD90aGlz Ll90ZXh0JiYoZ3x8dSkmJnRoaXMuX3RleHQudXBkYXRlKHRoaXMuYm91bmRz LHRoaXMubGFiZWxzLHRoaXMubGFiZWxGb250LHRoaXMudGlja3MsdGhpcy50 aWNrRm9udCk6dGhpcy5fdGV4dD1uKHRoaXMuZ2wsdGhpcy5ib3VuZHMsdGhp cy5sYWJlbHMsdGhpcy5sYWJlbEZvbnQsdGhpcy50aWNrcyx0aGlzLnRpY2tG b250KSx0aGlzLl9saW5lcyYmdSYmKHRoaXMuX2xpbmVzLmRpc3Bvc2UoKSx0 aGlzLl9saW5lcz1udWxsKSx0aGlzLl9saW5lc3x8KHRoaXMuX2xpbmVzPWEo dGhpcy5nbCx0aGlzLmJvdW5kcyx0aGlzLnRpY2tzKSl9O3ZhciBwPVtuZXcg ZixuZXcgZixuZXcgZl07ZnVuY3Rpb24gZCh0LGUscixuLGEpe2Zvcih2YXIg aT10LnByaW1hbE9mZnNldCxvPXQucHJpbWFsTWlub3Iscz10Lm1pcnJvck9m ZnNldCxsPXQubWlycm9yTWlub3IsYz1uW2VdLHU9MDt1PDM7Kyt1KWlmKGUh PT11KXt2YXIgaD1pLGY9cyxwPW8sZD1sO2MmMTw8dSYmKGg9cyxmPWkscD1s LGQ9byksaFt1XT1yWzBdW3VdLGZbdV09clsxXVt1XSxhW3VdPjA/KHBbdV09 LTEsZFt1XT0wKToocFt1XT0wLGRbdV09MSl9fXZhciBnPVswLDAsMF0sdj17 bW9kZWw6bCx2aWV3OmwscHJvamVjdGlvbjpsLF9vcnRobzohMX07aC5pc09w YXF1ZT1mdW5jdGlvbigpe3JldHVybiEwfSxoLmlzVHJhbnNwYXJlbnQ9ZnVu Y3Rpb24oKXtyZXR1cm4hMX0saC5kcmF3VHJhbnNwYXJlbnQ9ZnVuY3Rpb24o dCl7fTt2YXIgbT1bMCwwLDBdLHk9WzAsMCwwXSx4PVswLDAsMF07aC5kcmF3 PWZ1bmN0aW9uKHQpe3Q9dHx8djtmb3IodmFyIGU9dGhpcy5nbCxyPXQubW9k ZWx8fGwsbj10LnZpZXd8fGwsYT10LnByb2plY3Rpb258fGwsaT10aGlzLmJv dW5kcyxzPXQuX29ydGhvfHwhMSx1PW8ocixuLGEsaSxzKSxoPXUuY3ViZUVk Z2VzLGY9dS5heGlzLGI9blsxMl0sXz1uWzEzXSx3PW5bMTRdLGs9blsxNV0s VD0ocz8yOjEpKnRoaXMucGl4ZWxSYXRpbyooYVszXSpiK2FbN10qXythWzEx XSp3K2FbMTVdKmspL2UuZHJhd2luZ0J1ZmZlckhlaWdodCxNPTA7TTwzOysr TSl0aGlzLmxhc3RDdWJlUHJvcHMuY3ViZUVkZ2VzW01dPWhbTV0sdGhpcy5s YXN0Q3ViZVByb3BzLmF4aXNbTV09ZltNXTt2YXIgQT1wO2ZvcihNPTA7TTwz OysrTSlkKHBbTV0sTSx0aGlzLmJvdW5kcyxoLGYpO2U9dGhpcy5nbDt2YXIg UyxFPWc7Zm9yKE09MDtNPDM7KytNKXRoaXMuYmFja2dyb3VuZEVuYWJsZVtN XT9FW01dPWZbTV06RVtNXT0wO3RoaXMuX2JhY2tncm91bmQuZHJhdyhyLG4s YSxpLEUsdGhpcy5iYWNrZ3JvdW5kQ29sb3IpLHRoaXMuX2xpbmVzLmJpbmQo cixuLGEsdGhpcyk7Zm9yKE09MDtNPDM7KytNKXt2YXIgTD1bMCwwLDBdO2Zb TV0+MD9MW01dPWlbMV1bTV06TFtNXT1pWzBdW01dO2Zvcih2YXIgQz0wO0M8 MjsrK0Mpe3ZhciBQPShNKzErQyklMyxPPShNKzErKDFeQykpJTM7dGhpcy5n cmlkRW5hYmxlW1BdJiZ0aGlzLl9saW5lcy5kcmF3R3JpZChQLE8sdGhpcy5i b3VuZHMsTCx0aGlzLmdyaWRDb2xvcltQXSx0aGlzLmdyaWRXaWR0aFtQXSp0 aGlzLnBpeGVsUmF0aW8pfWZvcihDPTA7QzwyOysrQyl7UD0oTSsxK0MpJTMs Tz0oTSsxKygxXkMpKSUzO3RoaXMuemVyb0VuYWJsZVtPXSYmTWF0aC5taW4o aVswXVtPXSxpWzFdW09dKTw9MCYmTWF0aC5tYXgoaVswXVtPXSxpWzFdW09d KT49MCYmdGhpcy5fbGluZXMuZHJhd1plcm8oUCxPLHRoaXMuYm91bmRzLEws dGhpcy56ZXJvTGluZUNvbG9yW09dLHRoaXMuemVyb0xpbmVXaWR0aFtPXSp0 aGlzLnBpeGVsUmF0aW8pfX1mb3IoTT0wO008MzsrK00pe3RoaXMubGluZUVu YWJsZVtNXSYmdGhpcy5fbGluZXMuZHJhd0F4aXNMaW5lKE0sdGhpcy5ib3Vu ZHMsQVtNXS5wcmltYWxPZmZzZXQsdGhpcy5saW5lQ29sb3JbTV0sdGhpcy5s aW5lV2lkdGhbTV0qdGhpcy5waXhlbFJhdGlvKSx0aGlzLmxpbmVNaXJyb3Jb TV0mJnRoaXMuX2xpbmVzLmRyYXdBeGlzTGluZShNLHRoaXMuYm91bmRzLEFb TV0ubWlycm9yT2Zmc2V0LHRoaXMubGluZUNvbG9yW01dLHRoaXMubGluZVdp ZHRoW01dKnRoaXMucGl4ZWxSYXRpbyk7dmFyIHo9YyhtLEFbTV0ucHJpbWFs TWlub3IpLEk9Yyh5LEFbTV0ubWlycm9yTWlub3IpLEQ9dGhpcy5saW5lVGlj a0xlbmd0aDtmb3IoQz0wO0M8MzsrK0Mpe3ZhciBSPVQvcls1KkNdO3pbQ10q PURbQ10qUixJW0NdKj1EW0NdKlJ9dGhpcy5saW5lVGlja0VuYWJsZVtNXSYm dGhpcy5fbGluZXMuZHJhd0F4aXNUaWNrcyhNLEFbTV0ucHJpbWFsT2Zmc2V0 LHosdGhpcy5saW5lVGlja0NvbG9yW01dLHRoaXMubGluZVRpY2tXaWR0aFtN XSp0aGlzLnBpeGVsUmF0aW8pLHRoaXMubGluZVRpY2tNaXJyb3JbTV0mJnRo aXMuX2xpbmVzLmRyYXdBeGlzVGlja3MoTSxBW01dLm1pcnJvck9mZnNldCxJ LHRoaXMubGluZVRpY2tDb2xvcltNXSx0aGlzLmxpbmVUaWNrV2lkdGhbTV0q dGhpcy5waXhlbFJhdGlvKX10aGlzLl9saW5lcy51bmJpbmQoKSx0aGlzLl90 ZXh0LmJpbmQocixuLGEsdGhpcy5waXhlbFJhdGlvKTt2YXIgRixCO2Z1bmN0 aW9uIE4odCl7KEI9WzAsMCwwXSlbdF09MX1mdW5jdGlvbiBqKHQsZSxyKXt2 YXIgbj0odCsxKSUzLGE9KHQrMiklMyxpPWVbbl0sbz1lW2FdLHM9cltuXSxs PXJbYV07aT4wJiZsPjA/TihuKTppPjAmJmw8MD9OKG4pOmk8MCYmbD4wP04o bik6aTwwJiZsPDA/TihuKTpvPjAmJnM+MD9OKGEpOm8+MCYmczwwP04oYSk6 bzwwJiZzPjA/TihhKTpvPDAmJnM8MCYmTihhKX1mb3IoTT0wO008MzsrK00p e3ZhciBWPUFbTV0ucHJpbWFsTWlub3IsVT1BW01dLm1pcnJvck1pbm9yLHE9 Yyh4LEFbTV0ucHJpbWFsT2Zmc2V0KTtmb3IoQz0wO0M8MzsrK0MpdGhpcy5s aW5lVGlja0VuYWJsZVtNXSYmKHFbQ10rPVQqVltDXSpNYXRoLm1heCh0aGlz LmxpbmVUaWNrTGVuZ3RoW0NdLDApL3JbNSpDXSk7dmFyIEg9WzAsMCwwXTtp ZihIW01dPTEsdGhpcy50aWNrRW5hYmxlW01dKXstMzYwMD09PXRoaXMudGlj a0FuZ2xlW01dPyh0aGlzLnRpY2tBbmdsZVtNXT0wLHRoaXMudGlja0FsaWdu W01dPSJhdXRvIik6dGhpcy50aWNrQWxpZ25bTV09LTEsRj0xLCJhdXRvIj09 PShTPVt0aGlzLnRpY2tBbGlnbltNXSwuNSxGXSlbMF0/U1swXT0wOlNbMF09 cGFyc2VJbnQoIiIrU1swXSksQj1bMCwwLDBdLGooTSxWLFUpO2ZvcihDPTA7 QzwzOysrQylxW0NdKz1UKlZbQ10qdGhpcy50aWNrUGFkW0NdL3JbNSpDXTt0 aGlzLl90ZXh0LmRyYXdUaWNrcyhNLHRoaXMudGlja1NpemVbTV0sdGhpcy50 aWNrQW5nbGVbTV0scSx0aGlzLnRpY2tDb2xvcltNXSxILEIsUyl9aWYodGhp cy5sYWJlbEVuYWJsZVtNXSl7Rj0wLEI9WzAsMCwwXSx0aGlzLmxhYmVsc1tN XS5sZW5ndGg+NCYmKE4oTSksRj0xKSwiYXV0byI9PT0oUz1bdGhpcy5sYWJl bEFsaWduW01dLC41LEZdKVswXT9TWzBdPTA6U1swXT1wYXJzZUludCgiIitT WzBdKTtmb3IoQz0wO0M8MzsrK0MpcVtDXSs9VCpWW0NdKnRoaXMubGFiZWxQ YWRbQ10vcls1KkNdO3FbTV0rPS41KihpWzBdW01dK2lbMV1bTV0pLHRoaXMu X3RleHQuZHJhd0xhYmVsKE0sdGhpcy5sYWJlbFNpemVbTV0sdGhpcy5sYWJl bEFuZ2xlW01dLHEsdGhpcy5sYWJlbENvbG9yW01dLFswLDAsMF0sQixTKX19 dGhpcy5fdGV4dC51bmJpbmQoKX0saC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhp cy5fdGV4dC5kaXNwb3NlKCksdGhpcy5fbGluZXMuZGlzcG9zZSgpLHRoaXMu X2JhY2tncm91bmQuZGlzcG9zZSgpLHRoaXMuX2xpbmVzPW51bGwsdGhpcy5f dGV4dD1udWxsLHRoaXMuX2JhY2tncm91bmQ9bnVsbCx0aGlzLmdsPW51bGx9 fSx7Ii4vbGliL2JhY2tncm91bmQuanMiOjIzNywiLi9saWIvY3ViZS5qcyI6 MjM4LCIuL2xpYi9saW5lcy5qcyI6MjM5LCIuL2xpYi90ZXh0LmpzIjoyNDEs Ii4vbGliL3RpY2tzLmpzIjoyNDJ9XSwyMzc6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1b XSxyPVtdLHM9MCxsPTA7bDwzOysrbClmb3IodmFyIGM9KGwrMSklMyx1PShs KzIpJTMsaD1bMCwwLDBdLGY9WzAsMCwwXSxwPS0xO3A8PTE7cCs9Mil7ci5w dXNoKHMscysyLHMrMSxzKzEscysyLHMrMyksaFtsXT1wLGZbbF09cDtmb3Io dmFyIGQ9LTE7ZDw9MTtkKz0yKXtoW2NdPWQ7Zm9yKHZhciBnPS0xO2c8PTE7 Zys9MiloW3VdPWcsZS5wdXNoKGhbMF0saFsxXSxoWzJdLGZbMF0sZlsxXSxm WzJdKSxzKz0xfXZhciB2PWM7Yz11LHU9dn12YXIgbT1uKHQsbmV3IEZsb2F0 MzJBcnJheShlKSkseT1uKHQsbmV3IFVpbnQxNkFycmF5KHIpLHQuRUxFTUVO VF9BUlJBWV9CVUZGRVIpLHg9YSh0LFt7YnVmZmVyOm0sdHlwZTp0LkZMT0FU LHNpemU6MyxvZmZzZXQ6MCxzdHJpZGU6MjR9LHtidWZmZXI6bSx0eXBlOnQu RkxPQVQsc2l6ZTozLG9mZnNldDoxMixzdHJpZGU6MjR9XSx5KSxiPWkodCk7 cmV0dXJuIGIuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLGIuYXR0 cmlidXRlcy5ub3JtYWwubG9jYXRpb249MSxuZXcgbyh0LG0seCxiKX07dmFy IG49dCgiZ2wtYnVmZmVyIiksYT10KCJnbC12YW8iKSxpPXQoIi4vc2hhZGVy cyIpLmJnO2Z1bmN0aW9uIG8odCxlLHIsbil7dGhpcy5nbD10LHRoaXMuYnVm ZmVyPWUsdGhpcy52YW89cix0aGlzLnNoYWRlcj1ufXZhciBzPW8ucHJvdG90 eXBlO3MuZHJhdz1mdW5jdGlvbih0LGUscixuLGEsaSl7Zm9yKHZhciBvPSEx LHM9MDtzPDM7KytzKW89b3x8YVtzXTtpZihvKXt2YXIgbD10aGlzLmdsO2wu ZW5hYmxlKGwuUE9MWUdPTl9PRkZTRVRfRklMTCksbC5wb2x5Z29uT2Zmc2V0 KDEsMiksdGhpcy5zaGFkZXIuYmluZCgpLHRoaXMuc2hhZGVyLnVuaWZvcm1z PXttb2RlbDp0LHZpZXc6ZSxwcm9qZWN0aW9uOnIsYm91bmRzOm4sZW5hYmxl OmEsY29sb3JzOml9LHRoaXMudmFvLmJpbmQoKSx0aGlzLnZhby5kcmF3KHRo aXMuZ2wuVFJJQU5HTEVTLDM2KSx0aGlzLnZhby51bmJpbmQoKSxsLmRpc2Fi bGUobC5QT0xZR09OX09GRlNFVF9GSUxMKX19LHMuZGlzcG9zZT1mdW5jdGlv bigpe3RoaXMudmFvLmRpc3Bvc2UoKSx0aGlzLmJ1ZmZlci5kaXNwb3NlKCks dGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjI0MCwiZ2wt YnVmZmVyIjoyNDQsImdsLXZhbyI6MzI5fV0sMjM4OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpLHAp e2EocyxlLHQpLGEocyxyLHMpO2Zvcih2YXIgeT0wLHg9MDt4PDI7Kyt4KXt1 WzJdPWlbeF1bMl07Zm9yKHZhciBiPTA7YjwyOysrYil7dVsxXT1pW2JdWzFd O2Zvcih2YXIgXz0wO188MjsrK18pdVswXT1pW19dWzBdLGYobFt5XSx1LHMp LHkrPTF9fWZvcih2YXIgdz0tMSx4PTA7eDw4OysreCl7Zm9yKHZhciBrPWxb eF1bM10sVD0wO1Q8MzsrK1QpY1t4XVtUXT1sW3hdW1RdL2s7cCYmKGNbeF1b Ml0qPS0xKSxrPDAmJih3PDA/dz14OmNbeF1bMl08Y1t3XVsyXSYmKHc9eCkp fWlmKHc8MCl7dz0wO2Zvcih2YXIgTT0wO008MzsrK00pe2Zvcih2YXIgQT0o TSsyKSUzLFM9KE0rMSklMyxFPS0xLEw9LTEsQz0wO0M8MjsrK0Mpe3ZhciBQ PUM8PE0sTz1QKyhDPDxBKSsoMS1DPDxTKSx6PVArKDEtQzw8QSkrKEM8PFMp O28oY1tQXSxjW09dLGNbel0saCk8MHx8KEM/RT0xOkw9MSl9aWYoRTwwfHxM PDApTD5FJiYod3w9MTw8TSk7ZWxzZXtmb3IodmFyIEM9MDtDPDI7KytDKXt2 YXIgUD1DPDxNLE89UCsoQzw8QSkrKDEtQzw8Uyksej1QKygxLUM8PEEpKyhD PDxTKSxJPWQoW2xbUF0sbFtPXSxsW3pdLGxbUCsoMTw8QSkrKDE8PFMpXV0p O0M/RT1JOkw9SX1MPkUmJih3fD0xPDxNKX19fWZvcih2YXIgRD03XncsUj0t MSx4PTA7eDw4OysreCl4IT09dyYmeCE9PUQmJihSPDA/Uj14OmNbUl1bMV0+ Y1t4XVsxXSYmKFI9eCkpO2Zvcih2YXIgRj0tMSx4PTA7eDwzOysreCl7dmFy IEI9Ul4xPDx4O2lmKEIhPT13JiZCIT09RCl7RjwwJiYoRj1CKTt2YXIgUz1j W0JdO1NbMF08Y1tGXVswXSYmKEY9Qil9fWZvcih2YXIgTj0tMSx4PTA7eDwz OysreCl7dmFyIEI9Ul4xPDx4O2lmKEIhPT13JiZCIT09RCYmQiE9PUYpe048 MCYmKE49Qik7dmFyIFM9Y1tCXTtTWzBdPmNbTl1bMF0mJihOPUIpfX12YXIg aj1nO2pbMF09alsxXT1qWzJdPTAsaltuLmxvZzIoRl5SKV09UiZGLGpbbi5s b2cyKFJeTildPVImTjt2YXIgVj03Xk47Vj09PXd8fFY9PT1EPyhWPTdeRixq W24ubG9nMihOXlYpXT1WJk4pOmpbbi5sb2cyKEZeVildPVYmRjtmb3IodmFy IFU9dixxPXcsTT0wO008MzsrK00pVVtNXT1xJjE8PE0/LTE6MTtyZXR1cm4g bX07dmFyIG49dCgiYml0LXR3aWRkbGUiKSxhPXQoImdsLW1hdDQvbXVsdGlw bHkiKSxpPXQoInNwbGl0LXBvbHlnb24iKSxvPXQoInJvYnVzdC1vcmllbnRh dGlvbiIpLHM9bmV3IEFycmF5KDE2KSxsPW5ldyBBcnJheSg4KSxjPW5ldyBB cnJheSg4KSx1PW5ldyBBcnJheSgzKSxoPVswLDAsMF07ZnVuY3Rpb24gZih0 LGUscil7Zm9yKHZhciBuPTA7bjw0Oysrbil7dFtuXT1yWzEyK25dO2Zvcih2 YXIgYT0wO2E8MzsrK2EpdFtuXSs9ZVthXSpyWzQqYStuXX19IWZ1bmN0aW9u KCl7Zm9yKHZhciB0PTA7dDw4OysrdClsW3RdPVsxLDEsMSwxXSxjW3RdPVsx LDEsMV19KCk7dmFyIHA9W1swLDAsMSwwLDBdLFswLDAsLTEsMSwwXSxbMCwt MSwwLDEsMF0sWzAsMSwwLDEsMF0sWy0xLDAsMCwxLDBdLFsxLDAsMCwxLDBd XTtmdW5jdGlvbiBkKHQpe2Zvcih2YXIgZT0wO2U8cC5sZW5ndGg7KytlKWlm KCh0PWkucG9zaXRpdmUodCxwW2VdKSkubGVuZ3RoPDMpcmV0dXJuIDA7dmFy IHI9dFswXSxuPXJbMF0vclszXSxhPXJbMV0vclszXSxvPTA7Zm9yKGU9MTtl KzE8dC5sZW5ndGg7KytlKXt2YXIgcz10W2VdLGw9dFtlKzFdLGM9c1swXS9z WzNdLW4sdT1zWzFdL3NbM10tYSxoPWxbMF0vbFszXS1uLGY9bFsxXS9sWzNd LWE7bys9TWF0aC5hYnMoYypmLXUqaCl9cmV0dXJuIG99dmFyIGc9WzEsMSwx XSx2PVswLDAsMF0sbT17Y3ViZUVkZ2VzOmcsYXhpczp2fX0seyJiaXQtdHdp ZGRsZSI6OTQsImdsLW1hdDQvbXVsdGlwbHkiOjI3MCwicm9idXN0LW9yaWVu dGF0aW9uIjo1MDksInNwbGl0LXBvbHlnb24iOjUyNn1dLDIzOTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIpe3ZhciBvPVtdLHM9WzAsMCwwXSxsPVswLDAsMF0sYz1bMCwwLDBdLHU9 WzAsMCwwXTtvLnB1c2goMCwwLDEsMCwxLDEsMCwwLC0xLDAsMCwtMSwwLDEs MSwwLDEsLTEpO2Zvcih2YXIgaD0wO2g8MzsrK2gpe2Zvcih2YXIgZj1vLmxl bmd0aC8zfDAsZD0wO2Q8cltoXS5sZW5ndGg7KytkKXt2YXIgZz0rcltoXVtk XS54O28ucHVzaChnLDAsMSxnLDEsMSxnLDAsLTEsZywwLC0xLGcsMSwxLGcs MSwtMSl9dmFyIHY9by5sZW5ndGgvM3wwO3NbaF09ZixsW2hdPXYtZjtmb3Io dmFyIGY9by5sZW5ndGgvM3wwLG09MDttPHJbaF0ubGVuZ3RoOysrbSl7dmFy IGc9K3JbaF1bbV0ueDtvLnB1c2goZywwLDEsZywxLDEsZywwLC0xLGcsMCwt MSxnLDEsMSxnLDEsLTEpfXZhciB2PW8ubGVuZ3RoLzN8MDtjW2hdPWYsdVto XT12LWZ9dmFyIHk9bih0LG5ldyBGbG9hdDMyQXJyYXkobykpLHg9YSh0LFt7 YnVmZmVyOnksdHlwZTp0LkZMT0FULHNpemU6MyxzdHJpZGU6MCxvZmZzZXQ6 MH1dKSxiPWkodCk7cmV0dXJuIGIuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2Nh dGlvbj0wLG5ldyBwKHQseSx4LGIsbCxzLHUsYyl9O3ZhciBuPXQoImdsLWJ1 ZmZlciIpLGE9dCgiZ2wtdmFvIiksaT10KCIuL3NoYWRlcnMiKS5saW5lLG89 WzAsMCwwXSxzPVswLDAsMF0sbD1bMCwwLDBdLGM9WzAsMCwwXSx1PVsxLDFd O2Z1bmN0aW9uIGgodCl7cmV0dXJuIHRbMF09dFsxXT10WzJdPTAsdH1mdW5j dGlvbiBmKHQsZSl7cmV0dXJuIHRbMF09ZVswXSx0WzFdPWVbMV0sdFsyXT1l WzJdLHR9ZnVuY3Rpb24gcCh0LGUscixuLGEsaSxvLHMpe3RoaXMuZ2w9dCx0 aGlzLnZlcnRCdWZmZXI9ZSx0aGlzLnZhbz1yLHRoaXMuc2hhZGVyPW4sdGhp cy50aWNrQ291bnQ9YSx0aGlzLnRpY2tPZmZzZXQ9aSx0aGlzLmdyaWRDb3Vu dD1vLHRoaXMuZ3JpZE9mZnNldD1zfXZhciBkPXAucHJvdG90eXBlO2QuYmlu ZD1mdW5jdGlvbih0LGUscil7dGhpcy5zaGFkZXIuYmluZCgpLHRoaXMuc2hh ZGVyLnVuaWZvcm1zLm1vZGVsPXQsdGhpcy5zaGFkZXIudW5pZm9ybXMudmll dz1lLHRoaXMuc2hhZGVyLnVuaWZvcm1zLnByb2plY3Rpb249cix1WzBdPXRo aXMuZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLHVbMV09dGhpcy5nbC5kcmF3aW5n QnVmZmVySGVpZ2h0LHRoaXMuc2hhZGVyLnVuaWZvcm1zLnNjcmVlblNoYXBl PXUsdGhpcy52YW8uYmluZCgpfSxkLnVuYmluZD1mdW5jdGlvbigpe3RoaXMu dmFvLnVuYmluZCgpfSxkLmRyYXdBeGlzTGluZT1mdW5jdGlvbih0LGUscixu LGEpe3ZhciBpPWgocyk7dGhpcy5zaGFkZXIudW5pZm9ybXMubWFqb3JBeGlz PXMsaVt0XT1lWzFdW3RdLWVbMF1bdF0sdGhpcy5zaGFkZXIudW5pZm9ybXMu bWlub3JBeGlzPWk7dmFyIG8sdT1mKGMscik7dVt0XSs9ZVswXVt0XSx0aGlz LnNoYWRlci51bmlmb3Jtcy5vZmZzZXQ9dSx0aGlzLnNoYWRlci51bmlmb3Jt cy5saW5lV2lkdGg9YSx0aGlzLnNoYWRlci51bmlmb3Jtcy5jb2xvcj1uLChv PWgobCkpWyh0KzIpJTNdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NyZWVu QXhpcz1vLHRoaXMudmFvLmRyYXcodGhpcy5nbC5UUklBTkdMRVMsNiksKG89 aChsKSlbKHQrMSklM109MSx0aGlzLnNoYWRlci51bmlmb3Jtcy5zY3JlZW5B eGlzPW8sdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyw2KX0sZC5k cmF3QXhpc1RpY2tzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7aWYodGhpcy50aWNr Q291bnRbdF0pe3ZhciBpPWgobyk7aVt0XT0xLHRoaXMuc2hhZGVyLnVuaWZv cm1zLm1ham9yQXhpcz1pLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm9mZnNldD1l LHRoaXMuc2hhZGVyLnVuaWZvcm1zLm1pbm9yQXhpcz1yLHRoaXMuc2hhZGVy LnVuaWZvcm1zLmNvbG9yPW4sdGhpcy5zaGFkZXIudW5pZm9ybXMubGluZVdp ZHRoPWE7dmFyIHM9aChsKTtzW3RdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMu c2NyZWVuQXhpcz1zLHRoaXMudmFvLmRyYXcodGhpcy5nbC5UUklBTkdMRVMs dGhpcy50aWNrQ291bnRbdF0sdGhpcy50aWNrT2Zmc2V0W3RdKX19LGQuZHJh d0dyaWQ9ZnVuY3Rpb24odCxlLHIsbixhLGkpe2lmKHRoaXMuZ3JpZENvdW50 W3RdKXt2YXIgdT1oKHMpO3VbZV09clsxXVtlXS1yWzBdW2VdLHRoaXMuc2hh ZGVyLnVuaWZvcm1zLm1pbm9yQXhpcz11O3ZhciBwPWYoYyxuKTtwW2VdKz1y WzBdW2VdLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm9mZnNldD1wO3ZhciBkPWgo byk7ZFt0XT0xLHRoaXMuc2hhZGVyLnVuaWZvcm1zLm1ham9yQXhpcz1kO3Zh ciBnPWgobCk7Z1t0XT0xLHRoaXMuc2hhZGVyLnVuaWZvcm1zLnNjcmVlbkF4 aXM9Zyx0aGlzLnNoYWRlci51bmlmb3Jtcy5saW5lV2lkdGg9aSx0aGlzLnNo YWRlci51bmlmb3Jtcy5jb2xvcj1hLHRoaXMudmFvLmRyYXcodGhpcy5nbC5U UklBTkdMRVMsdGhpcy5ncmlkQ291bnRbdF0sdGhpcy5ncmlkT2Zmc2V0W3Rd KX19LGQuZHJhd1plcm89ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBvPWgo cyk7dGhpcy5zaGFkZXIudW5pZm9ybXMubWFqb3JBeGlzPW8sb1t0XT1yWzFd W3RdLXJbMF1bdF0sdGhpcy5zaGFkZXIudW5pZm9ybXMubWlub3JBeGlzPW87 dmFyIHU9ZihjLG4pO3VbdF0rPXJbMF1bdF0sdGhpcy5zaGFkZXIudW5pZm9y bXMub2Zmc2V0PXU7dmFyIHA9aChsKTtwW2VdPTEsdGhpcy5zaGFkZXIudW5p Zm9ybXMuc2NyZWVuQXhpcz1wLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmxpbmVX aWR0aD1pLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmNvbG9yPWEsdGhpcy52YW8u ZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyw2KX0sZC5kaXNwb3NlPWZ1bmN0aW9u KCl7dGhpcy52YW8uZGlzcG9zZSgpLHRoaXMudmVydEJ1ZmZlci5kaXNwb3Nl KCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjI0MCwi Z2wtYnVmZmVyIjoyNDQsImdsLXZhbyI6MzI5fV0sMjQwOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsc2xpZnkiKSxhPXQoImds LXNoYWRlciIpLGk9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZp bmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXG51 bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3Jt IHZlYzMgb2Zmc2V0LCBtYWpvckF4aXMsIG1pbm9yQXhpcywgc2NyZWVuQXhp cztcbnVuaWZvcm0gZmxvYXQgbGluZVdpZHRoO1xudW5pZm9ybSB2ZWMyIHNj cmVlblNoYXBlO1xuXG52ZWMzIHByb2plY3QodmVjMyBwKSB7XG4gIHZlYzQg cHAgPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwLCAxLjAp O1xuICByZXR1cm4gcHAueHl6IC8gbWF4KHBwLncsIDAuMDAwMSk7XG59XG5c bnZvaWQgbWFpbigpIHtcbiAgdmVjMyBtYWpvciA9IHBvc2l0aW9uLnggKiBt YWpvckF4aXM7XG4gIHZlYzMgbWlub3IgPSBwb3NpdGlvbi55ICogbWlub3JB eGlzO1xuXG4gIHZlYzMgdlBvc2l0aW9uID0gbWFqb3IgKyBtaW5vciArIG9m ZnNldDtcbiAgdmVjMyBwUG9zaXRpb24gPSBwcm9qZWN0KHZQb3NpdGlvbik7 XG4gIHZlYzMgb2Zmc2V0ID0gcHJvamVjdCh2UG9zaXRpb24gKyBzY3JlZW5B eGlzICogcG9zaXRpb24ueik7XG5cbiAgdmVjMiBzY3JlZW4gPSBub3JtYWxp emUoKG9mZnNldCAtIHBQb3NpdGlvbikueHkgKiBzY3JlZW5TaGFwZSkgLyBz Y3JlZW5TaGFwZTtcblxuICBnbF9Qb3NpdGlvbiA9IHZlYzQocFBvc2l0aW9u ICsgdmVjMygwLjUgKiBzY3JlZW4gKiBsaW5lV2lkdGgsIDApLCAxLjApO1xu fVxuIl0pLG89bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUg R0xTTElGWSAxXG5cbnVuaWZvcm0gdmVjNCBjb2xvcjtcbnZvaWQgbWFpbigp IHtcbiAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG59Il0pO3IubGluZT1mdW5j dGlvbih0KXtyZXR1cm4gYSh0LGksbyxudWxsLFt7bmFtZToicG9zaXRpb24i LHR5cGU6InZlYzMifV0pfTt2YXIgcz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZs b2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9z aXRpb247XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlv bjtcbnVuaWZvcm0gdmVjMyBvZmZzZXQsIGF4aXMsIGFsaWduRGlyLCBhbGln bk9wdDtcbnVuaWZvcm0gZmxvYXQgc2NhbGUsIGFuZ2xlLCBwaXhlbFNjYWxl O1xudW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG5cbnZlYzMgcHJvamVjdCh2 ZWMzIHApIHtcbiAgdmVjNCBwcCA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9k ZWwgKiB2ZWM0KHAsIDEuMCk7XG4gIHJldHVybiBwcC54eXogLyBtYXgocHAu dywgMC4wMDAxKTtcbn1cblxuZmxvYXQgY29tcHV0ZVZpZXdBbmdsZSh2ZWMz IGEsIHZlYzMgYikge1xuICB2ZWMzIEEgPSBwcm9qZWN0KGEpO1xuICB2ZWMz IEIgPSBwcm9qZWN0KGIpO1xuXG4gIHJldHVybiBhdGFuKFxuICAgIChCLnkg LSBBLnkpICogcmVzb2x1dGlvbi55LFxuICAgIChCLnggLSBBLngpICogcmVz b2x1dGlvbi54XG4gICk7XG59XG5cbmNvbnN0IGZsb2F0IFBJID0gMy4xNDE1 OTI7XG5jb25zdCBmbG9hdCBUV09fUEkgPSAyLjAgKiBQSTtcbmNvbnN0IGZs b2F0IEhBTEZfUEkgPSAwLjUgKiBQSTtcbmNvbnN0IGZsb2F0IE9ORV9BTkRf SEFMRl9QSSA9IDEuNSAqIFBJO1xuXG5pbnQgb3B0aW9uID0gaW50KGZsb29y KGFsaWduT3B0LnggKyAwLjAwMSkpO1xuZmxvYXQgaHZfcmF0aW8gPSAgICAg ICBhbGlnbk9wdC55O1xuYm9vbCBlbmFibGVBbGlnbiA9ICAgIChhbGlnbk9w dC56ICE9IDAuMCk7XG5cbmZsb2F0IG1vZF9hbmdsZShmbG9hdCBhKSB7XG4g IHJldHVybiBtb2QoYSwgUEkpO1xufVxuXG5mbG9hdCBwb3NpdGl2ZV9hbmds ZShmbG9hdCBhKSB7XG4gIHJldHVybiBtb2RfYW5nbGUoKGEgPCAwLjApID9c biAgICBhICsgVFdPX1BJIDpcbiAgICBhXG4gICk7XG59XG5cbmZsb2F0IGxv b2tfdXB3YXJkcyhmbG9hdCBhKSB7XG4gIGZsb2F0IGIgPSBwb3NpdGl2ZV9h bmdsZShhKTtcbiAgcmV0dXJuICgoYiA+IEhBTEZfUEkpICYmIChiIDw9IE9O RV9BTkRfSEFMRl9QSSkpID9cbiAgICBiIC0gUEkgOlxuICAgIGI7XG59XG5c bmZsb2F0IGxvb2tfaG9yaXpvbnRhbF9vcl92ZXJ0aWNhbChmbG9hdCBhLCBm bG9hdCByYXRpbykge1xuICAvLyByYXRpbyBjb250cm9scyB0aGUgcmF0aW8g YmV0d2VlbiBiZWluZyBob3Jpem9udGFsIHRvICh2ZXJ0aWNhbCArIGhvcml6 b250YWwpXG4gIC8vIGlmIHJhdGlvIGlzIHNldCB0byAwLjUgdGhlbiBpdCBp cyA1MCUsIDUwJS5cbiAgLy8gd2hlbiB1c2luZyBhIGhpZ2hlciByYXRpbyBl LmcuIDAuNzUgdGhlIHJlc3VsdCB3b3VsZFxuICAvLyBsaWtlbHkgYmUgbW9y ZSBob3Jpem9udGFsIHRoYW4gdmVydGljYWwuXG5cbiAgZmxvYXQgYiA9IHBv c2l0aXZlX2FuZ2xlKGEpO1xuXG4gIHJldHVyblxuICAgIChiIDwgKCAgICAg IHJhdGlvKSAqIEhBTEZfUEkpID8gMC4wIDpcbiAgICAoYiA8ICgyLjAgLSBy YXRpbykgKiBIQUxGX1BJKSA/IC1IQUxGX1BJIDpcbiAgICAoYiA8ICgyLjAg KyByYXRpbykgKiBIQUxGX1BJKSA/IDAuMCA6XG4gICAgKGIgPCAoNC4wIC0g cmF0aW8pICogSEFMRl9QSSkgPyBIQUxGX1BJIDpcbiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDAuMDtcbn1cblxuZmxvYXQgcm91bmRU byhmbG9hdCBhLCBmbG9hdCBiKSB7XG4gIHJldHVybiBmbG9hdChiICogZmxv b3IoKGEgKyAwLjUgKiBiKSAvIGIpKTtcbn1cblxuZmxvYXQgbG9va19yb3Vu ZF9uX2RpcmVjdGlvbnMoZmxvYXQgYSwgaW50IG4pIHtcbiAgZmxvYXQgYiA9 IHBvc2l0aXZlX2FuZ2xlKGEpO1xuICBmbG9hdCBkaXYgPSBUV09fUEkgLyBm bG9hdChuKTtcbiAgZmxvYXQgYyA9IHJvdW5kVG8oYiwgZGl2KTtcbiAgcmV0 dXJuIGxvb2tfdXB3YXJkcyhjKTtcbn1cblxuZmxvYXQgYXBwbHlBbGlnbk9w dGlvbihmbG9hdCByYXdBbmdsZSwgZmxvYXQgZGVsdGEpIHtcbiAgcmV0dXJu XG4gICAgKG9wdGlvbiA+ICAyKSA/IGxvb2tfcm91bmRfbl9kaXJlY3Rpb25z KHJhd0FuZ2xlICsgZGVsdGEsIG9wdGlvbikgOiAgICAgICAvLyBvcHRpb24g My1uOiByb3VuZCB0byBuIGRpcmVjdGlvbnNcbiAgICAob3B0aW9uID09IDIp ID8gbG9va19ob3Jpem9udGFsX29yX3ZlcnRpY2FsKHJhd0FuZ2xlICsgZGVs dGEsIGh2X3JhdGlvKSA6IC8vIGhvcml6b250YWwgb3IgdmVydGljYWxcbiAg ICAob3B0aW9uID09IDEpID8gcmF3QW5nbGUgKyBkZWx0YSA6ICAgICAgIC8v IHVzZSBmcmVlIGFuZ2xlLCBhbmQgZmxpcCB0byBhbGlnbiB3aXRoIG9uZSBk aXJlY3Rpb24gb2YgdGhlIGF4aXNcbiAgICAob3B0aW9uID09IDApID8gbG9v a191cHdhcmRzKHJhd0FuZ2xlKSA6IC8vIHVzZSBmcmVlIGFuZ2xlLCBhbmQg c3RheSB1cHdhcmRzXG4gICAgKG9wdGlvbiA9PS0xKSA/IDAuMCA6ICAgICAg ICAgICAgICAgICAgICAvLyB1c2VmdWwgZm9yIGJhY2t3YXJkIGNvbXBhdGli aWxpdHksIGFsbCB0ZXh0cyByZW1haW5zIGhvcml6b250YWxcbiAgICAgICAg ICAgICAgICAgICAgcmF3QW5nbGU7ICAgICAgICAgICAgICAgIC8vIG90aGVy d2lzZSByZXR1cm4gYmFjayByYXcgaW5wdXQgYW5nbGVcbn1cblxuYm9vbCBp c0F4aXNUaXRsZSA9IChheGlzLnggPT0gMC4wKSAmJlxuICAgICAgICAgICAg ICAgICAgIChheGlzLnkgPT0gMC4wKSAmJlxuICAgICAgICAgICAgICAgICAg IChheGlzLnogPT0gMC4wKTtcblxudm9pZCBtYWluKCkge1xuICAvL0NvbXB1 dGUgd29ybGQgb2Zmc2V0XG4gIGZsb2F0IGF4aXNEaXN0YW5jZSA9IHBvc2l0 aW9uLno7XG4gIHZlYzMgZGF0YVBvc2l0aW9uID0gYXhpc0Rpc3RhbmNlICog YXhpcyArIG9mZnNldDtcblxuICBmbG9hdCBiZXRhID0gYW5nbGU7IC8vIGku ZS4gdXNlciBkZWZpbmVkIGF0dHJpYnV0ZXMgZm9yIGVhY2ggdGlja1xuXG4g IGZsb2F0IGF4aXNBbmdsZTtcbiAgZmxvYXQgY2xpcEFuZ2xlO1xuICBmbG9h dCBmbGlwO1xuXG4gIGlmIChlbmFibGVBbGlnbikge1xuICAgIGF4aXNBbmds ZSA9IChpc0F4aXNUaXRsZSkgPyBIQUxGX1BJIDpcbiAgICAgICAgICAgICAg ICAgICAgICBjb21wdXRlVmlld0FuZ2xlKGRhdGFQb3NpdGlvbiwgZGF0YVBv c2l0aW9uICsgYXhpcyk7XG4gICAgY2xpcEFuZ2xlID0gY29tcHV0ZVZpZXdB bmdsZShkYXRhUG9zaXRpb24sIGRhdGFQb3NpdGlvbiArIGFsaWduRGlyKTtc blxuICAgIGF4aXNBbmdsZSArPSAoc2luKGF4aXNBbmdsZSkgPCAwLjApID8g UEkgOiAwLjA7XG4gICAgY2xpcEFuZ2xlICs9IChzaW4oY2xpcEFuZ2xlKSA8 IDAuMCkgPyBQSSA6IDAuMDtcblxuICAgIGZsaXAgPSAoZG90KHZlYzIoY29z KGF4aXNBbmdsZSksIHNpbihheGlzQW5nbGUpKSxcbiAgICAgICAgICAgICAg ICB2ZWMyKHNpbihjbGlwQW5nbGUpLC1jb3MoY2xpcEFuZ2xlKSkpID4gMC4w KSA/IDEuMCA6IDAuMDtcblxuICAgIGJldGEgKz0gYXBwbHlBbGlnbk9wdGlv bihjbGlwQW5nbGUsIGZsaXAgKiBQSSk7XG4gIH1cblxuICAvL0NvbXB1dGUg cGxhbmUgb2Zmc2V0XG4gIHZlYzIgcGxhbmVDb29yZCA9IHBvc2l0aW9uLnh5 ICogcGl4ZWxTY2FsZTtcblxuICBtYXQyIHBsYW5lWGZvcm0gPSBzY2FsZSAq IG1hdDIoXG4gICAgIGNvcyhiZXRhKSwgc2luKGJldGEpLFxuICAgIC1zaW4o YmV0YSksIGNvcyhiZXRhKVxuICApO1xuXG4gIHZlYzIgdmlld09mZnNldCA9 IDIuMCAqIHBsYW5lWGZvcm0gKiBwbGFuZUNvb3JkIC8gcmVzb2x1dGlvbjtc blxuICAvL0NvbXB1dGUgY2xpcCBwb3NpdGlvblxuICB2ZWMzIGNsaXBQb3Np dGlvbiA9IHByb2plY3QoZGF0YVBvc2l0aW9uKTtcblxuICAvL0FwcGx5IHRl eHQgb2Zmc2V0IGluIGNsaXAgY29vcmRpbmF0ZXNcbiAgY2xpcFBvc2l0aW9u ICs9IHZlYzModmlld09mZnNldCwgMC4wKTtcblxuICAvL0RvbmVcbiAgZ2xf UG9zaXRpb24gPSB2ZWM0KGNsaXBQb3NpdGlvbiwgMS4wKTtcbn0iXSksbD1u KFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFc blxudW5pZm9ybSB2ZWM0IGNvbG9yO1xudm9pZCBtYWluKCkge1xuICBnbF9G cmFnQ29sb3IgPSBjb2xvcjtcbn0iXSk7ci50ZXh0PWZ1bmN0aW9uKHQpe3Jl dHVybiBhKHQscyxsLG51bGwsW3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVj MyJ9XSl9O3ZhciBjPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVm aW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0 dHJpYnV0ZSB2ZWMzIG5vcm1hbDtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2 aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMzIGVuYWJsZTtcbnVuaWZv cm0gdmVjMyBib3VuZHNbMl07XG5cbnZhcnlpbmcgdmVjMyBjb2xvckNoYW5u ZWw7XG5cbnZvaWQgbWFpbigpIHtcblxuICB2ZWMzIHNpZ25BeGlzID0gc2ln bihib3VuZHNbMV0gLSBib3VuZHNbMF0pO1xuXG4gIHZlYzMgcmVhbE5vcm1h bCA9IHNpZ25BeGlzICogbm9ybWFsO1xuXG4gIGlmKGRvdChyZWFsTm9ybWFs LCBlbmFibGUpID4gMC4wKSB7XG4gICAgdmVjMyBtaW5SYW5nZSA9IG1pbihi b3VuZHNbMF0sIGJvdW5kc1sxXSk7XG4gICAgdmVjMyBtYXhSYW5nZSA9IG1h eChib3VuZHNbMF0sIGJvdW5kc1sxXSk7XG4gICAgdmVjMyBuUG9zaXRpb24g PSBtaXgobWluUmFuZ2UsIG1heFJhbmdlLCAwLjUgKiAocG9zaXRpb24gKyAx LjApKTtcbiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICog bW9kZWwgKiB2ZWM0KG5Qb3NpdGlvbiwgMS4wKTtcbiAgfSBlbHNlIHtcbiAg ICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAsMCk7XG4gIH1cblxuICBjb2xv ckNoYW5uZWwgPSBhYnMocmVhbE5vcm1hbCk7XG59Il0pLHU9bihbInByZWNp c2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZv cm0gdmVjNCBjb2xvcnNbM107XG5cbnZhcnlpbmcgdmVjMyBjb2xvckNoYW5u ZWw7XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xfRnJhZ0NvbG9yID0gY29sb3JD aGFubmVsLnggKiBjb2xvcnNbMF0gK1xuICAgICAgICAgICAgICAgICBjb2xv ckNoYW5uZWwueSAqIGNvbG9yc1sxXSArXG4gICAgICAgICAgICAgICAgIGNv bG9yQ2hhbm5lbC56ICogY29sb3JzWzJdO1xufSJdKTtyLmJnPWZ1bmN0aW9u KHQpe3JldHVybiBhKHQsYyx1LG51bGwsW3tuYW1lOiJwb3NpdGlvbiIsdHlw ZToidmVjMyJ9LHtuYW1lOiJub3JtYWwiLHR5cGU6InZlYzMifV0pfX0seyJn bC1zaGFkZXIiOjMwNCxnbHNsaWZ5OjQxMX1dLDI0MTpbZnVuY3Rpb24odCxl LHIpeyhmdW5jdGlvbihyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyLGkscyxsKXt2YXIgdT1uKHQpLGg9YSh0LFt7YnVmZmVyOnUs c2l6ZTozfV0pLGY9byh0KTtmLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRp b249MDt2YXIgcD1uZXcgYyh0LGYsdSxoKTtyZXR1cm4gcC51cGRhdGUoZSxy LGkscyxsKSxwfTt2YXIgbj10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIp LGk9dCgidmVjdG9yaXplLXRleHQiKSxvPXQoIi4vc2hhZGVycyIpLnRleHQs cz13aW5kb3d8fHIuZ2xvYmFsfHx7fSxsPXMuX19URVhUX0NBQ0hFfHx7fTtz Ll9fVEVYVF9DQUNIRT17fTtmdW5jdGlvbiBjKHQsZSxyLG4pe3RoaXMuZ2w9 dCx0aGlzLnNoYWRlcj1lLHRoaXMuYnVmZmVyPXIsdGhpcy52YW89bix0aGlz LnRpY2tPZmZzZXQ9dGhpcy50aWNrQ291bnQ9dGhpcy5sYWJlbE9mZnNldD10 aGlzLmxhYmVsQ291bnQ9bnVsbH12YXIgdT1jLnByb3RvdHlwZSxoPVswLDBd O3UuYmluZD1mdW5jdGlvbih0LGUscixuKXt0aGlzLnZhby5iaW5kKCksdGhp cy5zaGFkZXIuYmluZCgpO3ZhciBhPXRoaXMuc2hhZGVyLnVuaWZvcm1zO2Eu bW9kZWw9dCxhLnZpZXc9ZSxhLnByb2plY3Rpb249cixhLnBpeGVsU2NhbGU9 bixoWzBdPXRoaXMuZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLGhbMV09dGhpcy5n bC5kcmF3aW5nQnVmZmVySGVpZ2h0LHRoaXMuc2hhZGVyLnVuaWZvcm1zLnJl c29sdXRpb249aH0sdS51bmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLnZhby51bmJp bmQoKX0sdS51cGRhdGU9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgbz1bXTtm dW5jdGlvbiBzKHQsZSxyLG4sYSxzKXt2YXIgYz1sW3JdO2N8fChjPWxbcl09 e30pO3ZhciB1PWNbZV07dXx8KHU9Y1tlXT1mdW5jdGlvbih0LGUpe3RyeXty ZXR1cm4gaSh0LGUpfWNhdGNoKGUpe3JldHVybiBjb25zb2xlLndhcm4oJ2Vy cm9yIHZlY3Rvcml6aW5nIHRleHQ6IicrdCsnIiBlcnJvcjonLGUpLHtjZWxs czpbXSxwb3NpdGlvbnM6W119fX0oZSx7dHJpYW5nbGVzOiEwLGZvbnQ6cix0 ZXh0QWxpZ246ImNlbnRlciIsdGV4dEJhc2VsaW5lOiJtaWRkbGUiLGxpbmVT cGFjaW5nOmEsc3R5bGV0YWdzOnN9KSk7Zm9yKHZhciBoPShufHwxMikvMTIs Zj11LnBvc2l0aW9ucyxwPXUuY2VsbHMsZD0wLGc9cC5sZW5ndGg7ZDxnOysr ZClmb3IodmFyIHY9cFtkXSxtPTI7bT49MDstLW0pe3ZhciB5PWZbdlttXV07 by5wdXNoKGgqeVswXSwtaCp5WzFdLHQpfX1mb3IodmFyIGM9WzAsMCwwXSx1 PVswLDAsMF0saD1bMCwwLDBdLGY9WzAsMCwwXSxwPXticmVha2xpbmVzOiEw LGJvbGRzOiEwLGl0YWxpY3M6ITAsc3Vic2NyaXB0czohMCxzdXBlcnNjcmlw dHM6ITB9LGQ9MDtkPDM7KytkKXtoW2RdPW8ubGVuZ3RoLzN8MCxzKC41Kih0 WzBdW2RdK3RbMV1bZF0pLGVbZF0scltkXSwxMiwxLjI1LHApLGZbZF09KG8u bGVuZ3RoLzN8MCktaFtkXSxjW2RdPW8ubGVuZ3RoLzN8MDtmb3IodmFyIGc9 MDtnPG5bZF0ubGVuZ3RoOysrZyluW2RdW2ddLnRleHQmJnMobltkXVtnXS54 LG5bZF1bZ10udGV4dCxuW2RdW2ddLmZvbnR8fGEsbltkXVtnXS5mb250U2l6 ZXx8MTIsMS4yNSxwKTt1W2RdPShvLmxlbmd0aC8zfDApLWNbZF19dGhpcy5i dWZmZXIudXBkYXRlKG8pLHRoaXMudGlja09mZnNldD1jLHRoaXMudGlja0Nv dW50PXUsdGhpcy5sYWJlbE9mZnNldD1oLHRoaXMubGFiZWxDb3VudD1mfSx1 LmRyYXdUaWNrcz1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMpe3RoaXMudGlj a0NvdW50W3RdJiYodGhpcy5zaGFkZXIudW5pZm9ybXMuYXhpcz1pLHRoaXMu c2hhZGVyLnVuaWZvcm1zLmNvbG9yPWEsdGhpcy5zaGFkZXIudW5pZm9ybXMu YW5nbGU9cix0aGlzLnNoYWRlci51bmlmb3Jtcy5zY2FsZT1lLHRoaXMuc2hh ZGVyLnVuaWZvcm1zLm9mZnNldD1uLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmFs aWduRGlyPW8sdGhpcy5zaGFkZXIudW5pZm9ybXMuYWxpZ25PcHQ9cyx0aGlz LnZhby5kcmF3KHRoaXMuZ2wuVFJJQU5HTEVTLHRoaXMudGlja0NvdW50W3Rd LHRoaXMudGlja09mZnNldFt0XSkpfSx1LmRyYXdMYWJlbD1mdW5jdGlvbih0 LGUscixuLGEsaSxvLHMpe3RoaXMubGFiZWxDb3VudFt0XSYmKHRoaXMuc2hh ZGVyLnVuaWZvcm1zLmF4aXM9aSx0aGlzLnNoYWRlci51bmlmb3Jtcy5jb2xv cj1hLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmFuZ2xlPXIsdGhpcy5zaGFkZXIu dW5pZm9ybXMuc2NhbGU9ZSx0aGlzLnNoYWRlci51bmlmb3Jtcy5vZmZzZXQ9 bix0aGlzLnNoYWRlci51bmlmb3Jtcy5hbGlnbkRpcj1vLHRoaXMuc2hhZGVy LnVuaWZvcm1zLmFsaWduT3B0PXMsdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRS SUFOR0xFUyx0aGlzLmxhYmVsQ291bnRbdF0sdGhpcy5sYWJlbE9mZnNldFt0 XSkpfSx1LmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNoYWRlci5kaXNwb3Nl KCksdGhpcy52YW8uZGlzcG9zZSgpLHRoaXMuYnVmZmVyLmRpc3Bvc2UoKX19 KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSl9LHsiLi9zaGFkZXJzIjoyNDAs X3Byb2Nlc3M6NDg0LCJnbC1idWZmZXIiOjI0NCwiZ2wtdmFvIjozMjksInZl Y3Rvcml6ZS10ZXh0Ijo1NDl9XSwyNDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPXQrIiIsbj1yLmluZGV4 T2YoIi4iKSxhPTA7bj49MCYmKGE9ci5sZW5ndGgtbi0xKTt2YXIgaT1NYXRo LnBvdygxMCxhKSxvPU1hdGgucm91bmQodCplKmkpLHM9bysiIjtpZihzLmlu ZGV4T2YoImUiKT49MClyZXR1cm4gczt2YXIgbD1vL2ksYz1vJWk7bzwwPyhs PTB8LU1hdGguY2VpbChsKSxjPTB8LWMpOihsPTB8TWF0aC5mbG9vcihsKSxj fD0wKTt2YXIgdT0iIitsO2lmKG88MCYmKHU9Ii0iK3UpLGEpe2Zvcih2YXIg aD0iIitjO2gubGVuZ3RoPGE7KWg9IjAiK2g7cmV0dXJuIHUrIi4iK2h9cmV0 dXJuIHV9ci5jcmVhdGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10sYT0w O2E8MzsrK2Epe2Zvcih2YXIgaT1bXSxvPSh0WzBdW2FdLHRbMV1bYV0sMCk7 byplW2FdPD10WzFdW2FdOysrbylpLnB1c2goe3g6byplW2FdLHRleHQ6bihl W2FdLG8pfSk7Zm9yKHZhciBvPS0xO28qZVthXT49dFswXVthXTstLW8paS5w dXNoKHt4Om8qZVthXSx0ZXh0Om4oZVthXSxvKX0pO3IucHVzaChpKX1yZXR1 cm4gcn0sci5lcXVhbD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8Mzsr K3Ipe2lmKHRbcl0ubGVuZ3RoIT09ZVtyXS5sZW5ndGgpcmV0dXJuITE7Zm9y KHZhciBuPTA7bjx0W3JdLmxlbmd0aDsrK24pe3ZhciBhPXRbcl1bbl0saT1l W3JdW25dO2lmKGEueCE9PWkueHx8YS50ZXh0IT09aS50ZXh0fHxhLmZvbnQh PT1pLmZvbnR8fGEuZm9udENvbG9yIT09aS5mb250Q29sb3J8fGEuZm9udFNp emUhPT1pLmZvbnRTaXplfHxhLmR4IT09aS5keHx8YS5keSE9PWkuZHkpcmV0 dXJuITF9fXJldHVybiEwfX0se31dLDI0MzpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCxoKXt2YXIg Zj1lLm1vZGVsfHxjLHA9ZS52aWV3fHxjLG09ZS5wcm9qZWN0aW9ufHxjLHk9 ZS5fb3J0aG98fCExLHg9dC5ib3VuZHMsYj0oaD1ofHxpKGYscCxtLHgseSkp LmF4aXM7byh1LHAsZiksbyh1LG0sdSk7Zm9yKHZhciBfPWcsdz0wO3c8Mzsr K3cpX1t3XS5sbz0xLzAsX1t3XS5oaT0tMS8wLF9bd10ucGl4ZWxzUGVyRGF0 YVVuaXQ9MS8wO3ZhciBrPW4ocyh1LHUpKTtzKHUsdSk7Zm9yKHZhciBUPTA7 VDwzOysrVCl7dmFyIE09KFQrMSklMyxBPShUKzIpJTMsUz12O3Q6Zm9yKHZh ciB3PTA7dzwyOysrdyl7dmFyIEU9W107aWYoYltUXTwwIT0hIXcpe1NbVF09 eFt3XVtUXTtmb3IodmFyIEw9MDtMPDI7KytMKXtTW01dPXhbTF53XVtNXTtm b3IodmFyIEM9MDtDPDI7KytDKVNbQV09eFtDXkxed11bQV0sRS5wdXNoKFMu c2xpY2UoKSl9Zm9yKHZhciBQPXk/NTo0LEw9UDtMPT09UDsrK0wpe2lmKDA9 PT1FLmxlbmd0aCljb250aW51ZSB0O0U9YS5wb3NpdGl2ZShFLGtbTF0pfWZv cih2YXIgTD0wO0w8RS5sZW5ndGg7KytMKWZvcih2YXIgQT1FW0xdLE89ZCh2 LHUsQSxyLGwpLEM9MDtDPDM7KytDKV9bQ10ubG89TWF0aC5taW4oX1tDXS5s byxBW0NdKSxfW0NdLmhpPU1hdGgubWF4KF9bQ10uaGksQVtDXSksQyE9PVQm JihfW0NdLnBpeGVsc1BlckRhdGFVbml0PU1hdGgubWluKF9bQ10ucGl4ZWxz UGVyRGF0YVVuaXQsTWF0aC5hYnMoT1tDXSkpKX19fXJldHVybiBffTt2YXIg bj10KCJleHRyYWN0LWZydXN0dW0tcGxhbmVzIiksYT10KCJzcGxpdC1wb2x5 Z29uIiksaT10KCIuL2xpYi9jdWJlLmpzIiksbz10KCJnbC1tYXQ0L211bHRp cGx5Iikscz10KCJnbC1tYXQ0L3RyYW5zcG9zZSIpLGw9dCgiZ2wtdmVjNC90 cmFuc2Zvcm1NYXQ0IiksYz1uZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDAs MSwwLDAsMCwwLDEsMCwwLDAsMCwxXSksdT1uZXcgRmxvYXQzMkFycmF5KDE2 KTtmdW5jdGlvbiBoKHQsZSxyKXt0aGlzLmxvPXQsdGhpcy5oaT1lLHRoaXMu cGl4ZWxzUGVyRGF0YVVuaXQ9cn12YXIgZj1bMCwwLDAsMV0scD1bMCwwLDAs MV07ZnVuY3Rpb24gZCh0LGUscixuLGEpe2Zvcih2YXIgaT0wO2k8MzsrK2kp e2Zvcih2YXIgbz1mLHM9cCxjPTA7YzwzOysrYylzW2NdPW9bY109cltjXTtz WzNdPW9bM109MSxzW2ldKz0xLGwocyxzLGUpLHNbM108MCYmKHRbaV09MS8w KSxvW2ldLT0xLGwobyxvLGUpLG9bM108MCYmKHRbaV09MS8wKTt2YXIgdT0o b1swXS9vWzNdLXNbMF0vc1szXSkqbixoPShvWzFdL29bM10tc1sxXS9zWzNd KSphO3RbaV09LjI1Kk1hdGguc3FydCh1KnUraCpoKX1yZXR1cm4gdH12YXIg Zz1bbmV3IGgoMS8wLC0xLzAsMS8wKSxuZXcgaCgxLzAsLTEvMCwxLzApLG5l dyBoKDEvMCwtMS8wLDEvMCldLHY9WzAsMCwwXX0seyIuL2xpYi9jdWJlLmpz IjoyMzgsImV4dHJhY3QtZnJ1c3R1bS1wbGFuZXMiOjIyNywiZ2wtbWF0NC9t dWx0aXBseSI6MjcwLCJnbC1tYXQ0L3RyYW5zcG9zZSI6Mjc5LCJnbC12ZWM0 L3RyYW5zZm9ybU1hdDQiOjQwMCwic3BsaXQtcG9seWdvbiI6NTI2fV0sMjQ0 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInR5cGVk YXJyYXktcG9vbCIpLGE9dCgibmRhcnJheS1vcHMiKSxpPXQoIm5kYXJyYXki KSxvPVsidWludDgiLCJ1aW50OF9jbGFtcGVkIiwidWludDE2IiwidWludDMy IiwiaW50OCIsImludDE2IiwiaW50MzIiLCJmbG9hdDMyIl07ZnVuY3Rpb24g cyh0LGUscixuLGEpe3RoaXMuZ2w9dCx0aGlzLnR5cGU9ZSx0aGlzLmhhbmRs ZT1yLHRoaXMubGVuZ3RoPW4sdGhpcy51c2FnZT1hfXZhciBsPXMucHJvdG90 eXBlO2Z1bmN0aW9uIGModCxlLHIsbixhLGkpe3ZhciBvPWEubGVuZ3RoKmEu QllURVNfUEVSX0VMRU1FTlQ7aWYoaTwwKXJldHVybiB0LmJ1ZmZlckRhdGEo ZSxhLG4pLG87aWYobytpPnIpdGhyb3cgbmV3IEVycm9yKCJnbC1idWZmZXI6 IElmIHJlc2l6aW5nIGJ1ZmZlciwgbXVzdCBub3Qgc3BlY2lmeSBvZmZzZXQi KTtyZXR1cm4gdC5idWZmZXJTdWJEYXRhKGUsaSxhKSxyfWZ1bmN0aW9uIHUo dCxlKXtmb3IodmFyIHI9bi5tYWxsb2ModC5sZW5ndGgsZSksYT10Lmxlbmd0 aCxpPTA7aTxhOysraSlyW2ldPXRbaV07cmV0dXJuIHJ9bC5iaW5kPWZ1bmN0 aW9uKCl7dGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMudHlwZSx0aGlzLmhhbmRs ZSl9LGwudW5iaW5kPWZ1bmN0aW9uKCl7dGhpcy5nbC5iaW5kQnVmZmVyKHRo aXMudHlwZSxudWxsKX0sbC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5nbC5k ZWxldGVCdWZmZXIodGhpcy5oYW5kbGUpfSxsLnVwZGF0ZT1mdW5jdGlvbih0 LGUpe2lmKCJudW1iZXIiIT10eXBlb2YgZSYmKGU9LTEpLHRoaXMuYmluZCgp LCJvYmplY3QiPT10eXBlb2YgdCYmInVuZGVmaW5lZCIhPXR5cGVvZiB0LnNo YXBlKXt2YXIgcj10LmR0eXBlO2lmKG8uaW5kZXhPZihyKTwwJiYocj0iZmxv YXQzMiIpLHRoaXMudHlwZT09PXRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZG RVIpcj1nbC5nZXRFeHRlbnNpb24oIk9FU19lbGVtZW50X2luZGV4X3VpbnQi KSYmInVpbnQxNiIhPT1yPyJ1aW50MzIiOiJ1aW50MTYiO2lmKHI9PT10LmR0 eXBlJiZmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0xLG49ZS5sZW5ndGgtMTtu Pj0wOy0tbil7aWYoZVtuXSE9PXIpcmV0dXJuITE7cio9dFtuXX1yZXR1cm4h MH0odC5zaGFwZSx0LnN0cmlkZSkpMD09PXQub2Zmc2V0JiZ0LmRhdGEubGVu Z3RoPT09dC5zaGFwZVswXT90aGlzLmxlbmd0aD1jKHRoaXMuZ2wsdGhpcy50 eXBlLHRoaXMubGVuZ3RoLHRoaXMudXNhZ2UsdC5kYXRhLGUpOnRoaXMubGVu Z3RoPWModGhpcy5nbCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhpcy51c2Fn ZSx0LmRhdGEuc3ViYXJyYXkodC5vZmZzZXQsdC5zaGFwZVswXSksZSk7ZWxz ZXt2YXIgcz1uLm1hbGxvYyh0LnNpemUsciksbD1pKHMsdC5zaGFwZSk7YS5h c3NpZ24obCx0KSx0aGlzLmxlbmd0aD1jKHRoaXMuZ2wsdGhpcy50eXBlLHRo aXMubGVuZ3RoLHRoaXMudXNhZ2UsZTwwP3M6cy5zdWJhcnJheSgwLHQuc2l6 ZSksZSksbi5mcmVlKHMpfX1lbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3Zh ciBoO2g9dGhpcy50eXBlPT09dGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZF Uj91KHQsInVpbnQxNiIpOnUodCwiZmxvYXQzMiIpLHRoaXMubGVuZ3RoPWMo dGhpcy5nbCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhpcy51c2FnZSxlPDA/ aDpoLnN1YmFycmF5KDAsdC5sZW5ndGgpLGUpLG4uZnJlZShoKX1lbHNlIGlm KCJvYmplY3QiPT10eXBlb2YgdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0 aCl0aGlzLmxlbmd0aD1jKHRoaXMuZ2wsdGhpcy50eXBlLHRoaXMubGVuZ3Ro LHRoaXMudXNhZ2UsdCxlKTtlbHNle2lmKCJudW1iZXIiIT10eXBlb2YgdCYm dm9pZCAwIT09dCl0aHJvdyBuZXcgRXJyb3IoImdsLWJ1ZmZlcjogSW52YWxp ZCBkYXRhIHR5cGUiKTtpZihlPj0wKXRocm93IG5ldyBFcnJvcigiZ2wtYnVm ZmVyOiBDYW5ub3Qgc3BlY2lmeSBvZmZzZXQgd2hlbiByZXNpemluZyBidWZm ZXIiKTsodHw9MCk8PTAmJih0PTEpLHRoaXMuZ2wuYnVmZmVyRGF0YSh0aGlz LnR5cGUsMHx0LHRoaXMudXNhZ2UpLHRoaXMubGVuZ3RoPXR9fSxlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIsbil7aWYocj1yfHx0LkFSUkFZX0JVRkZFUixu PW58fHQuRFlOQU1JQ19EUkFXLHIhPT10LkFSUkFZX0JVRkZFUiYmciE9PXQu RUxFTUVOVF9BUlJBWV9CVUZGRVIpdGhyb3cgbmV3IEVycm9yKCJnbC1idWZm ZXI6IEludmFsaWQgdHlwZSBmb3Igd2ViZ2wgYnVmZmVyLCBtdXN0IGJlIGVp dGhlciBnbC5BUlJBWV9CVUZGRVIgb3IgZ2wuRUxFTUVOVF9BUlJBWV9CVUZG RVIiKTtpZihuIT09dC5EWU5BTUlDX0RSQVcmJm4hPT10LlNUQVRJQ19EUkFX JiZuIT09dC5TVFJFQU1fRFJBVyl0aHJvdyBuZXcgRXJyb3IoImdsLWJ1ZmZl cjogSW52YWxpZCB1c2FnZSBmb3IgYnVmZmVyLCBtdXN0IGJlIGVpdGhlciBn bC5EWU5BTUlDX0RSQVcsIGdsLlNUQVRJQ19EUkFXIG9yIGdsLlNUUkVBTV9E UkFXIik7dmFyIGE9dC5jcmVhdGVCdWZmZXIoKSxpPW5ldyBzKHQscixhLDAs bik7cmV0dXJuIGkudXBkYXRlKGUpLGl9fSx7bmRhcnJheTo0NTIsIm5kYXJy YXktb3BzIjo0NDYsInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sMjQ1OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsLXZlYzMiKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnBvc2l0aW9ucyxhPXQu dmVjdG9ycyxpPXtwb3NpdGlvbnM6W10sdmVydGV4SW50ZW5zaXR5OltdLHZl cnRleEludGVuc2l0eUJvdW5kczp0LnZlcnRleEludGVuc2l0eUJvdW5kcyx2 ZWN0b3JzOltdLGNlbGxzOltdLGNvbmVPZmZzZXQ6dC5jb25lT2Zmc2V0LGNv bG9ybWFwOnQuY29sb3JtYXB9O2lmKDA9PT10LnBvc2l0aW9ucy5sZW5ndGgp cmV0dXJuIGUmJihlWzBdPVswLDAsMF0sZVsxXT1bMCwwLDBdKSxpO2Zvcih2 YXIgbz0wLHM9MS8wLGw9LTEvMCxjPTEvMCx1PS0xLzAsaD0xLzAsZj0tMS8w LHA9bnVsbCxkPW51bGwsZz1bXSx2PTEvMCxtPSExLHk9MDt5PHIubGVuZ3Ro O3krKyl7dmFyIHg9clt5XTtzPU1hdGgubWluKHhbMF0scyksbD1NYXRoLm1h eCh4WzBdLGwpLGM9TWF0aC5taW4oeFsxXSxjKSx1PU1hdGgubWF4KHhbMV0s dSksaD1NYXRoLm1pbih4WzJdLGgpLGY9TWF0aC5tYXgoeFsyXSxmKTt2YXIg Yj1hW3ldO2lmKG4ubGVuZ3RoKGIpPm8mJihvPW4ubGVuZ3RoKGIpKSx5KXt2 YXIgXz0yKm4uZGlzdGFuY2UocCx4KS8obi5sZW5ndGgoZCkrbi5sZW5ndGgo YikpO18/KHY9TWF0aC5taW4odixfKSxtPSExKTptPSEwfW18fChwPXgsZD1i KSxnLnB1c2goYil9dmFyIHc9W3MsYyxoXSxrPVtsLHUsZl07ZSYmKGVbMF09 dyxlWzFdPWspLDA9PT1vJiYobz0xKTt2YXIgVD0xL287aXNGaW5pdGUodil8 fCh2PTEpLGkudmVjdG9yU2NhbGU9djt2YXIgTT10LmNvbmVTaXplfHwuNTt0 LmFic29sdXRlQ29uZVNpemUmJihNPXQuYWJzb2x1dGVDb25lU2l6ZSpUKSxp LmNvbmVTY2FsZT1NO3k9MDtmb3IodmFyIEE9MDt5PHIubGVuZ3RoO3krKylm b3IodmFyIFM9KHg9clt5XSlbMF0sRT14WzFdLEw9eFsyXSxDPWdbeV0sUD1u Lmxlbmd0aChDKSpULE89MDtPPDg7TysrKXtpLnBvc2l0aW9ucy5wdXNoKFtT LEUsTCxBKytdKSxpLnBvc2l0aW9ucy5wdXNoKFtTLEUsTCxBKytdKSxpLnBv c2l0aW9ucy5wdXNoKFtTLEUsTCxBKytdKSxpLnBvc2l0aW9ucy5wdXNoKFtT LEUsTCxBKytdKSxpLnBvc2l0aW9ucy5wdXNoKFtTLEUsTCxBKytdKSxpLnBv c2l0aW9ucy5wdXNoKFtTLEUsTCxBKytdKSxpLnZlY3RvcnMucHVzaChDKSxp LnZlY3RvcnMucHVzaChDKSxpLnZlY3RvcnMucHVzaChDKSxpLnZlY3RvcnMu cHVzaChDKSxpLnZlY3RvcnMucHVzaChDKSxpLnZlY3RvcnMucHVzaChDKSxp LnZlcnRleEludGVuc2l0eS5wdXNoKFAsUCxQKSxpLnZlcnRleEludGVuc2l0 eS5wdXNoKFAsUCxQKTt2YXIgej1pLnBvc2l0aW9ucy5sZW5ndGg7aS5jZWxs cy5wdXNoKFt6LTYsei01LHotNF0sW3otMyx6LTIsei0xXSl9cmV0dXJuIGl9 O3ZhciBhPXQoIi4vbGliL3NoYWRlcnMiKTtlLmV4cG9ydHMuY3JlYXRlTWVz aD10KCIuL2NyZWF0ZV9tZXNoIiksZS5leHBvcnRzLmNyZWF0ZUNvbmVNZXNo PWZ1bmN0aW9uKHQscil7cmV0dXJuIGUuZXhwb3J0cy5jcmVhdGVNZXNoKHQs cix7c2hhZGVyczphLHRyYWNlVHlwZToiY29uZSJ9KX19LHsiLi9jcmVhdGVf bWVzaCI6MjQ2LCIuL2xpYi9zaGFkZXJzIjoyNDcsImdsLXZlYzMiOjM0OH1d LDI0NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJn bC1zaGFkZXIiKSxhPXQoImdsLWJ1ZmZlciIpLGk9dCgiZ2wtdmFvIiksbz10 KCJnbC10ZXh0dXJlMmQiKSxzPXQoImdsLW1hdDQvbXVsdGlwbHkiKSxsPXQo ImdsLW1hdDQvaW52ZXJ0IiksYz10KCJuZGFycmF5IiksdT10KCJjb2xvcm1h cCIpLGg9WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdO2Z1bmN0 aW9uIGYodCxlLHIsbixhLGksbyxzLGwsYyx1KXt0aGlzLmdsPXQsdGhpcy5w aXhlbFJhdGlvPTEsdGhpcy5jZWxscz1bXSx0aGlzLnBvc2l0aW9ucz1bXSx0 aGlzLmludGVuc2l0eT1bXSx0aGlzLnRleHR1cmU9ZSx0aGlzLmRpcnR5PSEw LHRoaXMudHJpU2hhZGVyPXIsdGhpcy5waWNrU2hhZGVyPW4sdGhpcy50cmlh bmdsZVBvc2l0aW9ucz1hLHRoaXMudHJpYW5nbGVWZWN0b3JzPWksdGhpcy50 cmlhbmdsZUNvbG9ycz1zLHRoaXMudHJpYW5nbGVVVnM9bCx0aGlzLnRyaWFu Z2xlSWRzPW8sdGhpcy50cmlhbmdsZVZBTz1jLHRoaXMudHJpYW5nbGVDb3Vu dD0wLHRoaXMucGlja0lkPTEsdGhpcy5ib3VuZHM9W1sxLzAsMS8wLDEvMF0s Wy0xLzAsLTEvMCwtMS8wXV0sdGhpcy5jbGlwQm91bmRzPVtbLTEvMCwtMS8w LC0xLzBdLFsxLzAsMS8wLDEvMF1dLHRoaXMubGlnaHRQb3NpdGlvbj1bMWU1 LDFlNSwwXSx0aGlzLmFtYmllbnRMaWdodD0uOCx0aGlzLmRpZmZ1c2VMaWdo dD0uOCx0aGlzLnNwZWN1bGFyTGlnaHQ9Mix0aGlzLnJvdWdobmVzcz0uNSx0 aGlzLmZyZXNuZWw9MS41LHRoaXMub3BhY2l0eT0xLHRoaXMudHJhY2VUeXBl PXUsdGhpcy50dWJlU2NhbGU9MSx0aGlzLmNvbmVTY2FsZT0yLHRoaXMudmVj dG9yU2NhbGU9MSx0aGlzLmNvbmVPZmZzZXQ9LjI1LHRoaXMuX21vZGVsPWgs dGhpcy5fdmlldz1oLHRoaXMuX3Byb2plY3Rpb249aCx0aGlzLl9yZXNvbHV0 aW9uPVsxLDFdfXZhciBwPWYucHJvdG90eXBlO3AuaXNPcGFxdWU9ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5vcGFjaXR5Pj0xfSxwLmlzVHJhbnNwYXJlbnQ9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcGFjaXR5PDF9LHAucGlja1Nsb3Rz PTEscC5zZXRQaWNrQmFzZT1mdW5jdGlvbih0KXt0aGlzLnBpY2tJZD10fSxw LnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9O3ZhciBlPXRoaXMuZ2w7dGhp cy5kaXJ0eT0hMCwibGlnaHRQb3NpdGlvbiJpbiB0JiYodGhpcy5saWdodFBv c2l0aW9uPXQubGlnaHRQb3NpdGlvbiksIm9wYWNpdHkiaW4gdCYmKHRoaXMu b3BhY2l0eT10Lm9wYWNpdHkpLCJhbWJpZW50ImluIHQmJih0aGlzLmFtYmll bnRMaWdodD10LmFtYmllbnQpLCJkaWZmdXNlImluIHQmJih0aGlzLmRpZmZ1 c2VMaWdodD10LmRpZmZ1c2UpLCJzcGVjdWxhciJpbiB0JiYodGhpcy5zcGVj dWxhckxpZ2h0PXQuc3BlY3VsYXIpLCJyb3VnaG5lc3MiaW4gdCYmKHRoaXMu cm91Z2huZXNzPXQucm91Z2huZXNzKSwiZnJlc25lbCJpbiB0JiYodGhpcy5m cmVzbmVsPXQuZnJlc25lbCksdm9pZCAwIT09dC50dWJlU2NhbGUmJih0aGlz LnR1YmVTY2FsZT10LnR1YmVTY2FsZSksdm9pZCAwIT09dC52ZWN0b3JTY2Fs ZSYmKHRoaXMudmVjdG9yU2NhbGU9dC52ZWN0b3JTY2FsZSksdm9pZCAwIT09 dC5jb25lU2NhbGUmJih0aGlzLmNvbmVTY2FsZT10LmNvbmVTY2FsZSksdm9p ZCAwIT09dC5jb25lT2Zmc2V0JiYodGhpcy5jb25lT2Zmc2V0PXQuY29uZU9m ZnNldCksdC5jb2xvcm1hcCYmKHRoaXMudGV4dHVyZS5zaGFwZT1bMjU2LDI1 Nl0sdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj1lLkxJTkVBUl9NSVBNQVBfTElO RUFSLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ZS5MSU5FQVIsdGhpcy50ZXh0 dXJlLnNldFBpeGVscyhmdW5jdGlvbih0KXtmb3IodmFyIGU9dSh7Y29sb3Jt YXA6dCxuc2hhZGVzOjI1Nixmb3JtYXQ6InJnYmEifSkscj1uZXcgVWludDhB cnJheSgxMDI0KSxuPTA7bjwyNTY7KytuKXtmb3IodmFyIGE9ZVtuXSxpPTA7 aTwzOysraSlyWzQqbitpXT1hW2ldO3JbNCpuKzNdPTI1NSphWzNdfXJldHVy biBjKHIsWzI1NiwyNTYsNF0sWzQsMCwxXSl9KHQuY29sb3JtYXApKSx0aGlz LnRleHR1cmUuZ2VuZXJhdGVNaXBtYXAoKSk7dmFyIHI9dC5jZWxscyxuPXQu cG9zaXRpb25zLGE9dC52ZWN0b3JzO2lmKG4mJnImJmEpe3ZhciBpPVtdLG89 W10scz1bXSxsPVtdLGg9W107dGhpcy5jZWxscz1yLHRoaXMucG9zaXRpb25z PW4sdGhpcy52ZWN0b3JzPWE7dmFyIGY9dC5tZXNoQ29sb3J8fFsxLDEsMSwx XSxwPXQudmVydGV4SW50ZW5zaXR5LGQ9MS8wLGc9LTEvMDtpZihwKWlmKHQu dmVydGV4SW50ZW5zaXR5Qm91bmRzKWQ9K3QudmVydGV4SW50ZW5zaXR5Qm91 bmRzWzBdLGc9K3QudmVydGV4SW50ZW5zaXR5Qm91bmRzWzFdO2Vsc2UgZm9y KHZhciB2PTA7djxwLmxlbmd0aDsrK3Ype3ZhciBtPXBbdl07ZD1NYXRoLm1p bihkLG0pLGc9TWF0aC5tYXgoZyxtKX1lbHNlIGZvcih2PTA7djxuLmxlbmd0 aDsrK3Ype209blt2XVsyXTtkPU1hdGgubWluKGQsbSksZz1NYXRoLm1heChn LG0pfXRoaXMuaW50ZW5zaXR5PXB8fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10 Lmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlOysrbilyW25dPXRbbl1b Ml07cmV0dXJuIHJ9KG4pLHRoaXMuYm91bmRzPVtbMS8wLDEvMCwxLzBdLFst MS8wLC0xLzAsLTEvMF1dO2Zvcih2PTA7djxuLmxlbmd0aDsrK3YpZm9yKHZh ciB5PW5bdl0seD0wO3g8MzsrK3gpIWlzTmFOKHlbeF0pJiZpc0Zpbml0ZSh5 W3hdKSYmKHRoaXMuYm91bmRzWzBdW3hdPU1hdGgubWluKHRoaXMuYm91bmRz WzBdW3hdLHlbeF0pLHRoaXMuYm91bmRzWzFdW3hdPU1hdGgubWF4KHRoaXMu Ym91bmRzWzFdW3hdLHlbeF0pKTt2YXIgYj0wO3Q6Zm9yKHY9MDt2PHIubGVu Z3RoOysrdil7dmFyIF89clt2XTtzd2l0Y2goXy5sZW5ndGgpe2Nhc2UgMzpm b3IoeD0wO3g8MzsrK3gpe3k9bltrPV9beF1dO2Zvcih2YXIgdz0wO3c8Mzsr K3cpaWYoaXNOYU4oeVt3XSl8fCFpc0Zpbml0ZSh5W3ddKSljb250aW51ZSB0 fWZvcih4PTA7eDwzOysreCl7dmFyIGs7eT1uW2s9X1syLXhdXTtpLnB1c2go eVswXSx5WzFdLHlbMl0seVszXSk7dmFyIFQ9YVtrXTtvLnB1c2goVFswXSxU WzFdLFRbMl0sVFszXXx8MCk7dmFyIE0sQT1mOzM9PT1BLmxlbmd0aD9zLnB1 c2goQVswXSxBWzFdLEFbMl0sMSk6cy5wdXNoKEFbMF0sQVsxXSxBWzJdLEFb M10pLE09cD9bKHBba10tZCkvKGctZCksMF06Wyh5WzJdLWQpLyhnLWQpLDBd LGwucHVzaChNWzBdLE1bMV0pLGgucHVzaCh2KX1iKz0xfX10aGlzLnRyaWFu Z2xlQ291bnQ9Yix0aGlzLnRyaWFuZ2xlUG9zaXRpb25zLnVwZGF0ZShpKSx0 aGlzLnRyaWFuZ2xlVmVjdG9ycy51cGRhdGUobyksdGhpcy50cmlhbmdsZUNv bG9ycy51cGRhdGUocyksdGhpcy50cmlhbmdsZVVWcy51cGRhdGUobCksdGhp cy50cmlhbmdsZUlkcy51cGRhdGUobmV3IFVpbnQzMkFycmF5KGgpKX19LHAu ZHJhd1RyYW5zcGFyZW50PXAuZHJhdz1mdW5jdGlvbih0KXt0PXR8fHt9O2Zv cih2YXIgZT10aGlzLmdsLHI9dC5tb2RlbHx8aCxuPXQudmlld3x8aCxhPXQu cHJvamVjdGlvbnx8aCxpPVtbLTFlNiwtMWU2LC0xZTZdLFsxZTYsMWU2LDFl Nl1dLG89MDtvPDM7KytvKWlbMF1bb109TWF0aC5tYXgoaVswXVtvXSx0aGlz LmNsaXBCb3VuZHNbMF1bb10pLGlbMV1bb109TWF0aC5taW4oaVsxXVtvXSx0 aGlzLmNsaXBCb3VuZHNbMV1bb10pO3ZhciBjPXttb2RlbDpyLHZpZXc6bixw cm9qZWN0aW9uOmEsaW52ZXJzZU1vZGVsOmguc2xpY2UoKSxjbGlwQm91bmRz Omksa2FtYmllbnQ6dGhpcy5hbWJpZW50TGlnaHQsa2RpZmZ1c2U6dGhpcy5k aWZmdXNlTGlnaHQsa3NwZWN1bGFyOnRoaXMuc3BlY3VsYXJMaWdodCxyb3Vn aG5lc3M6dGhpcy5yb3VnaG5lc3MsZnJlc25lbDp0aGlzLmZyZXNuZWwsZXll UG9zaXRpb246WzAsMCwwXSxsaWdodFBvc2l0aW9uOlswLDAsMF0sb3BhY2l0 eTp0aGlzLm9wYWNpdHksdHViZVNjYWxlOnRoaXMudHViZVNjYWxlLHZlY3Rv clNjYWxlOnRoaXMudmVjdG9yU2NhbGUsY29uZVNjYWxlOnRoaXMuY29uZVNj YWxlLGNvbmVPZmZzZXQ6dGhpcy5jb25lT2Zmc2V0LHRleHR1cmU6MH07Yy5p bnZlcnNlTW9kZWw9bChjLmludmVyc2VNb2RlbCxjLm1vZGVsKSxlLmRpc2Fi bGUoZS5DVUxMX0ZBQ0UpLHRoaXMudGV4dHVyZS5iaW5kKDApO3ZhciB1PW5l dyBBcnJheSgxNik7cyh1LGMudmlldyxjLm1vZGVsKSxzKHUsYy5wcm9qZWN0 aW9uLHUpLGwodSx1KTtmb3Iobz0wO288MzsrK28pYy5leWVQb3NpdGlvbltv XT11WzEyK29dL3VbMTVdO3ZhciBmPXVbMTVdO2ZvcihvPTA7bzwzOysrbylm Kz10aGlzLmxpZ2h0UG9zaXRpb25bb10qdVs0Km8rM107Zm9yKG89MDtvPDM7 KytvKXtmb3IodmFyIHA9dVsxMitvXSxkPTA7ZDwzOysrZClwKz11WzQqZCtv XSp0aGlzLmxpZ2h0UG9zaXRpb25bZF07Yy5saWdodFBvc2l0aW9uW29dPXAv Zn1pZih0aGlzLnRyaWFuZ2xlQ291bnQ+MCl7dmFyIGc9dGhpcy50cmlTaGFk ZXI7Zy5iaW5kKCksZy51bmlmb3Jtcz1jLHRoaXMudHJpYW5nbGVWQU8uYmlu ZCgpLGUuZHJhd0FycmF5cyhlLlRSSUFOR0xFUywwLDMqdGhpcy50cmlhbmds ZUNvdW50KSx0aGlzLnRyaWFuZ2xlVkFPLnVuYmluZCgpfX0scC5kcmF3UGlj az1mdW5jdGlvbih0KXt0PXR8fHt9O2Zvcih2YXIgZT10aGlzLmdsLHI9dC5t b2RlbHx8aCxuPXQudmlld3x8aCxhPXQucHJvamVjdGlvbnx8aCxpPVtbLTFl NiwtMWU2LC0xZTZdLFsxZTYsMWU2LDFlNl1dLG89MDtvPDM7KytvKWlbMF1b b109TWF0aC5tYXgoaVswXVtvXSx0aGlzLmNsaXBCb3VuZHNbMF1bb10pLGlb MV1bb109TWF0aC5taW4oaVsxXVtvXSx0aGlzLmNsaXBCb3VuZHNbMV1bb10p O3RoaXMuX21vZGVsPVtdLnNsaWNlLmNhbGwociksdGhpcy5fdmlldz1bXS5z bGljZS5jYWxsKG4pLHRoaXMuX3Byb2plY3Rpb249W10uc2xpY2UuY2FsbChh KSx0aGlzLl9yZXNvbHV0aW9uPVtlLmRyYXdpbmdCdWZmZXJXaWR0aCxlLmRy YXdpbmdCdWZmZXJIZWlnaHRdO3ZhciBzPXttb2RlbDpyLHZpZXc6bixwcm9q ZWN0aW9uOmEsY2xpcEJvdW5kczppLHR1YmVTY2FsZTp0aGlzLnR1YmVTY2Fs ZSx2ZWN0b3JTY2FsZTp0aGlzLnZlY3RvclNjYWxlLGNvbmVTY2FsZTp0aGlz LmNvbmVTY2FsZSxjb25lT2Zmc2V0OnRoaXMuY29uZU9mZnNldCxwaWNrSWQ6 dGhpcy5waWNrSWQvMjU1fSxsPXRoaXMucGlja1NoYWRlcjtsLmJpbmQoKSxs LnVuaWZvcm1zPXMsdGhpcy50cmlhbmdsZUNvdW50PjAmJih0aGlzLnRyaWFu Z2xlVkFPLmJpbmQoKSxlLmRyYXdBcnJheXMoZS5UUklBTkdMRVMsMCwzKnRo aXMudHJpYW5nbGVDb3VudCksdGhpcy50cmlhbmdsZVZBTy51bmJpbmQoKSl9 LHAucGljaz1mdW5jdGlvbih0KXtpZighdClyZXR1cm4gbnVsbDtpZih0Lmlk IT09dGhpcy5waWNrSWQpcmV0dXJuIG51bGw7dmFyIGU9dC52YWx1ZVswXSsy NTYqdC52YWx1ZVsxXSs2NTUzNip0LnZhbHVlWzJdLHI9dGhpcy5jZWxsc1tl XSxuPXRoaXMucG9zaXRpb25zW3JbMV1dLnNsaWNlKDAsMyksYT17cG9zaXRp b246bixkYXRhQ29vcmRpbmF0ZTpuLGluZGV4Ok1hdGguZmxvb3IoclsxXS80 OCl9O3JldHVybiJjb25lIj09PXRoaXMudHJhY2VUeXBlP2EuaW5kZXg9TWF0 aC5mbG9vcihyWzFdLzQ4KToic3RyZWFtdHViZSI9PT10aGlzLnRyYWNlVHlw ZSYmKGEuaW50ZW5zaXR5PXRoaXMuaW50ZW5zaXR5W3JbMV1dLGEudmVsb2Np dHk9dGhpcy52ZWN0b3JzW3JbMV1dLnNsaWNlKDAsMyksYS5kaXZlcmdlbmNl PXRoaXMudmVjdG9yc1tyWzFdXVszXSxhLmluZGV4PWUpLGF9LHAuZGlzcG9z ZT1mdW5jdGlvbigpe3RoaXMudGV4dHVyZS5kaXNwb3NlKCksdGhpcy50cmlT aGFkZXIuZGlzcG9zZSgpLHRoaXMucGlja1NoYWRlci5kaXNwb3NlKCksdGhp cy50cmlhbmdsZVZBTy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZVBvc2l0aW9u cy5kaXNwb3NlKCksdGhpcy50cmlhbmdsZVZlY3RvcnMuZGlzcG9zZSgpLHRo aXMudHJpYW5nbGVDb2xvcnMuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVVVnMu ZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVJZHMuZGlzcG9zZSgpfSxlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBzPXIuc2hhZGVyczsxPT09YXJndW1l bnRzLmxlbmd0aCYmKHQ9KGU9dCkuZ2wpO3ZhciBsPWZ1bmN0aW9uKHQsZSl7 dmFyIHI9bih0LGUubWVzaFNoYWRlci52ZXJ0ZXgsZS5tZXNoU2hhZGVyLmZy YWdtZW50LG51bGwsZS5tZXNoU2hhZGVyLmF0dHJpYnV0ZXMpO3JldHVybiBy LmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxyLmF0dHJpYnV0ZXMu Y29sb3IubG9jYXRpb249MixyLmF0dHJpYnV0ZXMudXYubG9jYXRpb249Myxy LmF0dHJpYnV0ZXMudmVjdG9yLmxvY2F0aW9uPTQscn0odCxzKSx1PWZ1bmN0 aW9uKHQsZSl7dmFyIHI9bih0LGUucGlja1NoYWRlci52ZXJ0ZXgsZS5waWNr U2hhZGVyLmZyYWdtZW50LG51bGwsZS5waWNrU2hhZGVyLmF0dHJpYnV0ZXMp O3JldHVybiByLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxyLmF0 dHJpYnV0ZXMuaWQubG9jYXRpb249MSxyLmF0dHJpYnV0ZXMudmVjdG9yLmxv Y2F0aW9uPTQscn0odCxzKSxoPW8odCxjKG5ldyBVaW50OEFycmF5KFsyNTUs MjU1LDI1NSwyNTVdKSxbMSwxLDRdKSk7aC5nZW5lcmF0ZU1pcG1hcCgpLGgu bWluRmlsdGVyPXQuTElORUFSX01JUE1BUF9MSU5FQVIsaC5tYWdGaWx0ZXI9 dC5MSU5FQVI7dmFyIHA9YSh0KSxkPWEodCksZz1hKHQpLHY9YSh0KSxtPWEo dCkseT1uZXcgZih0LGgsbCx1LHAsZCxtLGcsdixpKHQsW3tidWZmZXI6cCx0 eXBlOnQuRkxPQVQsc2l6ZTo0fSx7YnVmZmVyOm0sdHlwZTp0LlVOU0lHTkVE X0JZVEUsc2l6ZTo0LG5vcm1hbGl6ZWQ6ITB9LHtidWZmZXI6Zyx0eXBlOnQu RkxPQVQsc2l6ZTo0fSx7YnVmZmVyOnYsdHlwZTp0LkZMT0FULHNpemU6Mn0s e2J1ZmZlcjpkLHR5cGU6dC5GTE9BVCxzaXplOjR9XSksci50cmFjZVR5cGV8 fCJjb25lIik7cmV0dXJuIHkudXBkYXRlKGUpLHl9fSx7Y29sb3JtYXA6MTI4 LCJnbC1idWZmZXIiOjI0NCwiZ2wtbWF0NC9pbnZlcnQiOjI2OCwiZ2wtbWF0 NC9tdWx0aXBseSI6MjcwLCJnbC1zaGFkZXIiOjMwNCwiZ2wtdGV4dHVyZTJk IjozMjQsImdsLXZhbyI6MzI5LG5kYXJyYXk6NDUyfV0sMjQ3OltmdW5jdGlv bih0LGUscil7dmFyIG49dCgiZ2xzbGlmeSIpLGE9bihbInByZWNpc2lvbiBo aWdocCBmbG9hdDtcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmlu ZSBHTFNMSUZZIDFcblxudmVjMyBnZXRPcnRob2dvbmFsVmVjdG9yKHZlYzMg dikge1xuICAvLyBSZXR1cm4gdXAtdmVjdG9yIGZvciBvbmx5LXogdmVjdG9y LlxuICAvLyBSZXR1cm4gYXggKyBieSArIGN6ID0gMCwgYSBwb2ludCB0aGF0 IGxpZXMgb24gdGhlIHBsYW5lIHRoYXQgaGFzIHYgYXMgYSBub3JtYWwgYW5k IHRoYXQgaXNuJ3QgKDAsMCwwKS5cbiAgLy8gRnJvbSB0aGUgYWJvdmUgaWYt c3RhdGVtZW50IHdlIGhhdmUgfHxhfHwgPiAwICBVICB8fGJ8fCA+IDAuXG4g IC8vIEFzc2lnbiB6ID0gMCwgeCA9IC1iLCB5ID0gYTpcbiAgLy8gYSotYiAr IGIqYSArIGMqMCA9IC1iYSArIGJhICsgMCA9IDBcbiAgaWYgKHYueCp2Lngg PiB2Lnoqdi56IHx8IHYueSp2LnkgPiB2Lnoqdi56KSB7XG4gICAgcmV0dXJu IG5vcm1hbGl6ZSh2ZWMzKC12LnksIHYueCwgMC4wKSk7XG4gIH0gZWxzZSB7 XG4gICAgcmV0dXJuIG5vcm1hbGl6ZSh2ZWMzKDAuMCwgdi56LCAtdi55KSk7 XG4gIH1cbn1cblxuLy8gQ2FsY3VsYXRlIHRoZSBjb25lIHZlcnRleCBhbmQg bm9ybWFsIGF0IHRoZSBnaXZlbiBpbmRleC5cbi8vXG4vLyBUaGUgcmV0dXJu ZWQgdmVydGV4IGlzIGZvciBhIGNvbmUgd2l0aCBpdHMgdG9wIGF0IG9yaWdp biBhbmQgaGVpZ2h0IG9mIDEuMCxcbi8vIHBvaW50aW5nIGluIHRoZSBkaXJl Y3Rpb24gb2YgdGhlIHZlY3RvciBhdHRyaWJ1dGUuXG4vL1xuLy8gRWFjaCBj b25lIGlzIG1hZGUgdXAgb2YgYSB0b3AgdmVydGV4LCBhIGNlbnRlciBiYXNl IHZlcnRleCBhbmQgYmFzZSBwZXJpbWV0ZXIgdmVydGljZXMuXG4vLyBUaGVz ZSB2ZXJ0aWNlcyBhcmUgdXNlZCB0byBtYWtlIHVwIHRoZSB0cmlhbmdsZXMg b2YgdGhlIGNvbmUgYnkgdGhlIGZvbGxvd2luZzpcbi8vICAgc2VnbWVudCAr IDAgdG9wIHZlcnRleFxuLy8gICBzZWdtZW50ICsgMSBwZXJpbWV0ZXIgdmVy dGV4IGErMVxuLy8gICBzZWdtZW50ICsgMiBwZXJpbWV0ZXIgdmVydGV4IGFc bi8vICAgc2VnbWVudCArIDMgY2VudGVyIGJhc2UgdmVydGV4XG4vLyAgIHNl Z21lbnQgKyA0IHBlcmltZXRlciB2ZXJ0ZXggYVxuLy8gICBzZWdtZW50ICsg NSBwZXJpbWV0ZXIgdmVydGV4IGErMVxuLy8gV2hlcmUgc2VnbWVudCBpcyB0 aGUgbnVtYmVyIG9mIHRoZSByYWRpYWwgc2VnbWVudCAqIDYgYW5kIGEgaXMg dGhlIGFuZ2xlIGF0IHRoYXQgcmFkaWFsIHNlZ21lbnQuXG4vLyBUbyBnbyBm cm9tIGluZGV4IHRvIHNlZ21lbnQsIGZsb29yKGluZGV4IC8gNilcbi8vIFRv IGdvIGZyb20gc2VnbWVudCB0byBhbmdsZSwgMipwaSAqIChzZWdtZW50L3Nl Z21lbnRDb3VudClcbi8vIFRvIGdvIGZyb20gaW5kZXggdG8gc2VnbWVudCBp bmRleCwgaW5kZXggLSAoc2VnbWVudCo2KVxuLy9cbnZlYzMgZ2V0Q29uZVBv c2l0aW9uKHZlYzMgZCwgZmxvYXQgcmF3SW5kZXgsIGZsb2F0IGNvbmVPZmZz ZXQsIG91dCB2ZWMzIG5vcm1hbCkge1xuXG4gIGNvbnN0IGZsb2F0IHNlZ21l bnRDb3VudCA9IDguMDtcblxuICBmbG9hdCBpbmRleCA9IHJhd0luZGV4IC0g Zmxvb3IocmF3SW5kZXggL1xuICAgIChzZWdtZW50Q291bnQgKiA2LjApKSAq XG4gICAgKHNlZ21lbnRDb3VudCAqIDYuMCk7XG5cbiAgZmxvYXQgc2VnbWVu dCA9IGZsb29yKDAuMDAxICsgaW5kZXgvNi4wKTtcbiAgZmxvYXQgc2VnbWVu dEluZGV4ID0gaW5kZXggLSAoc2VnbWVudCo2LjApO1xuXG4gIG5vcm1hbCA9 IC1ub3JtYWxpemUoZCk7XG5cbiAgaWYgKHNlZ21lbnRJbmRleCA+IDIuOTkg JiYgc2VnbWVudEluZGV4IDwgMy4wMSkge1xuICAgIHJldHVybiBtaXgodmVj MygwLjApLCAtZCwgY29uZU9mZnNldCk7XG4gIH1cblxuICBmbG9hdCBuZXh0 QW5nbGUgPSAoXG4gICAgKHNlZ21lbnRJbmRleCA+IDAuOTkgJiYgIHNlZ21l bnRJbmRleCA8IDEuMDEpIHx8XG4gICAgKHNlZ21lbnRJbmRleCA+IDQuOTkg JiYgIHNlZ21lbnRJbmRleCA8IDUuMDEpXG4gICkgPyAxLjAgOiAwLjA7XG4g IGZsb2F0IGFuZ2xlID0gMi4wICogMy4xNDE1OSAqICgoc2VnbWVudCArIG5l eHRBbmdsZSkgLyBzZWdtZW50Q291bnQpO1xuXG4gIHZlYzMgdjEgPSBtaXgo ZCwgdmVjMygwLjApLCBjb25lT2Zmc2V0KTtcbiAgdmVjMyB2MiA9IHYxIC0g ZDtcblxuICB2ZWMzIHUgPSBnZXRPcnRob2dvbmFsVmVjdG9yKGQpO1xuICB2 ZWMzIHYgPSBub3JtYWxpemUoY3Jvc3ModSwgZCkpO1xuXG4gIHZlYzMgeCA9 IHUgKiBjb3MoYW5nbGUpICogbGVuZ3RoKGQpKjAuMjU7XG4gIHZlYzMgeSA9 IHYgKiBzaW4oYW5nbGUpICogbGVuZ3RoKGQpKjAuMjU7XG4gIHZlYzMgdjMg PSB2MiArIHggKyB5O1xuICBpZiAoc2VnbWVudEluZGV4IDwgMy4wKSB7XG4g ICAgdmVjMyB0eCA9IHUgKiBzaW4oYW5nbGUpO1xuICAgIHZlYzMgdHkgPSB2 ICogLWNvcyhhbmdsZSk7XG4gICAgdmVjMyB0YW5nZW50ID0gdHggKyB0eTtc biAgICBub3JtYWwgPSBub3JtYWxpemUoY3Jvc3ModjMgLSB2MSwgdGFuZ2Vu dCkpO1xuICB9XG5cbiAgaWYgKHNlZ21lbnRJbmRleCA9PSAwLjApIHtcbiAg ICByZXR1cm4gbWl4KGQsIHZlYzMoMC4wKSwgY29uZU9mZnNldCk7XG4gIH1c biAgcmV0dXJuIHYzO1xufVxuXG5hdHRyaWJ1dGUgdmVjMyB2ZWN0b3I7XG5h dHRyaWJ1dGUgdmVjNCBjb2xvciwgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVj MiB1djtcblxudW5pZm9ybSBmbG9hdCB2ZWN0b3JTY2FsZSwgY29uZVNjYWxl LCBjb25lT2Zmc2V0O1xudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9q ZWN0aW9uLCBpbnZlcnNlTW9kZWw7XG51bmlmb3JtIHZlYzMgZXllUG9zaXRp b24sIGxpZ2h0UG9zaXRpb247XG5cbnZhcnlpbmcgdmVjMyBmX25vcm1hbCwg Zl9saWdodERpcmVjdGlvbiwgZl9leWVEaXJlY3Rpb24sIGZfZGF0YSwgZl9w b3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMy IGZfdXY7XG5cbnZvaWQgbWFpbigpIHtcbiAgLy8gU2NhbGUgdGhlIHZlY3Rv ciBtYWduaXR1ZGUgdG8gc3RheSBjb25zdGFudCB3aXRoXG4gIC8vIG1vZGVs ICYgdmlldyBjaGFuZ2VzLlxuICB2ZWMzIG5vcm1hbDtcbiAgdmVjMyBYWVog PSBnZXRDb25lUG9zaXRpb24obWF0Myhtb2RlbCkgKiAoKHZlY3RvclNjYWxl ICogY29uZVNjYWxlKSAqIHZlY3RvciksIHBvc2l0aW9uLncsIGNvbmVPZmZz ZXQsIG5vcm1hbCk7XG4gIHZlYzQgY29uZVBvc2l0aW9uID0gbW9kZWwgKiB2 ZWM0KHBvc2l0aW9uLnh5eiwgMS4wKSArIHZlYzQoWFlaLCAwLjApO1xuXG4g IC8vTGlnaHRpbmcgZ2VvbWV0cnkgcGFyYW1ldGVyc1xuICB2ZWM0IGNhbWVy YUNvb3JkaW5hdGUgPSB2aWV3ICogY29uZVBvc2l0aW9uO1xuICBjYW1lcmFD b29yZGluYXRlLnh5eiAvPSBjYW1lcmFDb29yZGluYXRlLnc7XG4gIGZfbGln aHREaXJlY3Rpb24gPSBsaWdodFBvc2l0aW9uIC0gY2FtZXJhQ29vcmRpbmF0 ZS54eXo7XG4gIGZfZXllRGlyZWN0aW9uICAgPSBleWVQb3NpdGlvbiAtIGNh bWVyYUNvb3JkaW5hdGUueHl6O1xuICBmX25vcm1hbCA9IG5vcm1hbGl6ZSgo dmVjNChub3JtYWwsIDAuMCkgKiBpbnZlcnNlTW9kZWwpLnh5eik7XG5cbiAg Ly8gdmVjNCBtX3Bvc2l0aW9uICA9IG1vZGVsICogdmVjNChjb25lUG9zaXRp b24sIDEuMCk7XG4gIHZlYzQgdF9wb3NpdGlvbiAgPSB2aWV3ICogY29uZVBv c2l0aW9uO1xuICBnbF9Qb3NpdGlvbiAgICAgID0gcHJvamVjdGlvbiAqIHRf cG9zaXRpb247XG5cbiAgZl9jb2xvciAgICAgICAgICA9IGNvbG9yO1xuICBm X2RhdGEgICAgICAgICAgID0gY29uZVBvc2l0aW9uLnh5ejtcbiAgZl9wb3Np dGlvbiAgICAgICA9IHBvc2l0aW9uLnh5ejtcbiAgZl91diAgICAgICAgICAg ICA9IHV2O1xufVxuIl0pLGk9bihbIiNleHRlbnNpb24gR0xfT0VTX3N0YW5k YXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlXG5cbnByZWNpc2lvbiBoaWdocCBm bG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmZsb2F0IGJlY2ttYW5uRGlz dHJpYnV0aW9uKGZsb2F0IHgsIGZsb2F0IHJvdWdobmVzcykge1xuICBmbG9h dCBOZG90SCA9IG1heCh4LCAwLjAwMDEpO1xuICBmbG9hdCBjb3MyQWxwaGEg PSBOZG90SCAqIE5kb3RIO1xuICBmbG9hdCB0YW4yQWxwaGEgPSAoY29zMkFs cGhhIC0gMS4wKSAvIGNvczJBbHBoYTtcbiAgZmxvYXQgcm91Z2huZXNzMiA9 IHJvdWdobmVzcyAqIHJvdWdobmVzcztcbiAgZmxvYXQgZGVub20gPSAzLjE0 MTU5MjY1MzU4OTc5MyAqIHJvdWdobmVzczIgKiBjb3MyQWxwaGEgKiBjb3My QWxwaGE7XG4gIHJldHVybiBleHAodGFuMkFscGhhIC8gcm91Z2huZXNzMikg LyBkZW5vbTtcbn1cblxuZmxvYXQgY29va1RvcnJhbmNlU3BlY3VsYXIoXG4g IHZlYzMgbGlnaHREaXJlY3Rpb24sXG4gIHZlYzMgdmlld0RpcmVjdGlvbixc biAgdmVjMyBzdXJmYWNlTm9ybWFsLFxuICBmbG9hdCByb3VnaG5lc3MsXG4g IGZsb2F0IGZyZXNuZWwpIHtcblxuICBmbG9hdCBWZG90TiA9IG1heChkb3Qo dmlld0RpcmVjdGlvbiwgc3VyZmFjZU5vcm1hbCksIDAuMCk7XG4gIGZsb2F0 IExkb3ROID0gbWF4KGRvdChsaWdodERpcmVjdGlvbiwgc3VyZmFjZU5vcm1h bCksIDAuMCk7XG5cbiAgLy9IYWxmIGFuZ2xlIHZlY3RvclxuICB2ZWMzIEgg PSBub3JtYWxpemUobGlnaHREaXJlY3Rpb24gKyB2aWV3RGlyZWN0aW9uKTtc blxuICAvL0dlb21ldHJpYyB0ZXJtXG4gIGZsb2F0IE5kb3RIID0gbWF4KGRv dChzdXJmYWNlTm9ybWFsLCBIKSwgMC4wKTtcbiAgZmxvYXQgVmRvdEggPSBt YXgoZG90KHZpZXdEaXJlY3Rpb24sIEgpLCAwLjAwMDAwMSk7XG4gIGZsb2F0 IExkb3RIID0gbWF4KGRvdChsaWdodERpcmVjdGlvbiwgSCksIDAuMDAwMDAx KTtcbiAgZmxvYXQgRzEgPSAoMi4wICogTmRvdEggKiBWZG90TikgLyBWZG90 SDtcbiAgZmxvYXQgRzIgPSAoMi4wICogTmRvdEggKiBMZG90TikgLyBMZG90 SDtcbiAgZmxvYXQgRyA9IG1pbigxLjAsIG1pbihHMSwgRzIpKTtcbiAgXG4g IC8vRGlzdHJpYnV0aW9uIHRlcm1cbiAgZmxvYXQgRCA9IGJlY2ttYW5uRGlz dHJpYnV0aW9uKE5kb3RILCByb3VnaG5lc3MpO1xuXG4gIC8vRnJlc25lbCB0 ZXJtXG4gIGZsb2F0IEYgPSBwb3coMS4wIC0gVmRvdE4sIGZyZXNuZWwpO1xu XG4gIC8vTXVsdGlwbHkgdGVybXMgYW5kIGRvbmVcbiAgcmV0dXJuICBHICog RiAqIEQgLyBtYXgoMy4xNDE1OTI2NSAqIFZkb3ROLCAwLjAwMDAwMSk7XG59 XG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBw KSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAg IChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMy IGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShh LngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBi LnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMz IGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngs IHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkp IHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59 XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7 XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xu fVxuXG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxv YXQgcm91Z2huZXNzLCBmcmVzbmVsLCBrYW1iaWVudCwga2RpZmZ1c2UsIGtz cGVjdWxhciwgb3BhY2l0eTtcbnVuaWZvcm0gc2FtcGxlcjJEIHRleHR1cmU7 XG5cbnZhcnlpbmcgdmVjMyBmX25vcm1hbCwgZl9saWdodERpcmVjdGlvbiwg Zl9leWVEaXJlY3Rpb24sIGZfZGF0YSwgZl9wb3NpdGlvbjtcbnZhcnlpbmcg dmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMyIGZfdXY7XG5cbnZvaWQgbWFp bigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJv dW5kc1sxXSwgZl9wb3NpdGlvbikpIGRpc2NhcmQ7XG4gIHZlYzMgTiA9IG5v cm1hbGl6ZShmX25vcm1hbCk7XG4gIHZlYzMgTCA9IG5vcm1hbGl6ZShmX2xp Z2h0RGlyZWN0aW9uKTtcbiAgdmVjMyBWID0gbm9ybWFsaXplKGZfZXllRGly ZWN0aW9uKTtcblxuICBpZihnbF9Gcm9udEZhY2luZykge1xuICAgIE4gPSAt TjtcbiAgfVxuXG4gIGZsb2F0IHNwZWN1bGFyID0gbWluKDEuMCwgbWF4KDAu MCwgY29va1RvcnJhbmNlU3BlY3VsYXIoTCwgViwgTiwgcm91Z2huZXNzLCBm cmVzbmVsKSkpO1xuICBmbG9hdCBkaWZmdXNlICA9IG1pbihrYW1iaWVudCAr IGtkaWZmdXNlICogbWF4KGRvdChOLCBMKSwgMC4wKSwgMS4wKTtcblxuICB2 ZWM0IHN1cmZhY2VDb2xvciA9IGZfY29sb3IgKiB0ZXh0dXJlMkQodGV4dHVy ZSwgZl91dik7XG4gIHZlYzQgbGl0Q29sb3IgPSBzdXJmYWNlQ29sb3IuYSAq IHZlYzQoZGlmZnVzZSAqIHN1cmZhY2VDb2xvci5yZ2IgKyBrc3BlY3VsYXIg KiB2ZWMzKDEsMSwxKSAqIHNwZWN1bGFyLCAgMS4wKTtcblxuICBnbF9GcmFn Q29sb3IgPSBsaXRDb2xvciAqIG9wYWNpdHk7XG59XG4iXSksbz1uKFsicHJl Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7 XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52ZWMzIGdldE9ydGhvZ29uYWxWZWN0 b3IodmVjMyB2KSB7XG4gIC8vIFJldHVybiB1cC12ZWN0b3IgZm9yIG9ubHkt eiB2ZWN0b3IuXG4gIC8vIFJldHVybiBheCArIGJ5ICsgY3ogPSAwLCBhIHBv aW50IHRoYXQgbGllcyBvbiB0aGUgcGxhbmUgdGhhdCBoYXMgdiBhcyBhIG5v cm1hbCBhbmQgdGhhdCBpc24ndCAoMCwwLDApLlxuICAvLyBGcm9tIHRoZSBh Ym92ZSBpZi1zdGF0ZW1lbnQgd2UgaGF2ZSB8fGF8fCA+IDAgIFUgIHx8Ynx8 ID4gMC5cbiAgLy8gQXNzaWduIHogPSAwLCB4ID0gLWIsIHkgPSBhOlxuICAv LyBhKi1iICsgYiphICsgYyowID0gLWJhICsgYmEgKyAwID0gMFxuICBpZiAo di54KnYueCA+IHYueip2LnogfHwgdi55KnYueSA+IHYueip2LnopIHtcbiAg ICByZXR1cm4gbm9ybWFsaXplKHZlYzMoLXYueSwgdi54LCAwLjApKTtcbiAg fSBlbHNlIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKHZlYzMoMC4wLCB2Lnos IC12LnkpKTtcbiAgfVxufVxuXG4vLyBDYWxjdWxhdGUgdGhlIGNvbmUgdmVy dGV4IGFuZCBub3JtYWwgYXQgdGhlIGdpdmVuIGluZGV4LlxuLy9cbi8vIFRo ZSByZXR1cm5lZCB2ZXJ0ZXggaXMgZm9yIGEgY29uZSB3aXRoIGl0cyB0b3Ag YXQgb3JpZ2luIGFuZCBoZWlnaHQgb2YgMS4wLFxuLy8gcG9pbnRpbmcgaW4g dGhlIGRpcmVjdGlvbiBvZiB0aGUgdmVjdG9yIGF0dHJpYnV0ZS5cbi8vXG4v LyBFYWNoIGNvbmUgaXMgbWFkZSB1cCBvZiBhIHRvcCB2ZXJ0ZXgsIGEgY2Vu dGVyIGJhc2UgdmVydGV4IGFuZCBiYXNlIHBlcmltZXRlciB2ZXJ0aWNlcy5c bi8vIFRoZXNlIHZlcnRpY2VzIGFyZSB1c2VkIHRvIG1ha2UgdXAgdGhlIHRy aWFuZ2xlcyBvZiB0aGUgY29uZSBieSB0aGUgZm9sbG93aW5nOlxuLy8gICBz ZWdtZW50ICsgMCB0b3AgdmVydGV4XG4vLyAgIHNlZ21lbnQgKyAxIHBlcmlt ZXRlciB2ZXJ0ZXggYSsxXG4vLyAgIHNlZ21lbnQgKyAyIHBlcmltZXRlciB2 ZXJ0ZXggYVxuLy8gICBzZWdtZW50ICsgMyBjZW50ZXIgYmFzZSB2ZXJ0ZXhc bi8vICAgc2VnbWVudCArIDQgcGVyaW1ldGVyIHZlcnRleCBhXG4vLyAgIHNl Z21lbnQgKyA1IHBlcmltZXRlciB2ZXJ0ZXggYSsxXG4vLyBXaGVyZSBzZWdt ZW50IGlzIHRoZSBudW1iZXIgb2YgdGhlIHJhZGlhbCBzZWdtZW50ICogNiBh bmQgYSBpcyB0aGUgYW5nbGUgYXQgdGhhdCByYWRpYWwgc2VnbWVudC5cbi8v IFRvIGdvIGZyb20gaW5kZXggdG8gc2VnbWVudCwgZmxvb3IoaW5kZXggLyA2 KVxuLy8gVG8gZ28gZnJvbSBzZWdtZW50IHRvIGFuZ2xlLCAyKnBpICogKHNl Z21lbnQvc2VnbWVudENvdW50KVxuLy8gVG8gZ28gZnJvbSBpbmRleCB0byBz ZWdtZW50IGluZGV4LCBpbmRleCAtIChzZWdtZW50KjYpXG4vL1xudmVjMyBn ZXRDb25lUG9zaXRpb24odmVjMyBkLCBmbG9hdCByYXdJbmRleCwgZmxvYXQg Y29uZU9mZnNldCwgb3V0IHZlYzMgbm9ybWFsKSB7XG5cbiAgY29uc3QgZmxv YXQgc2VnbWVudENvdW50ID0gOC4wO1xuXG4gIGZsb2F0IGluZGV4ID0gcmF3 SW5kZXggLSBmbG9vcihyYXdJbmRleCAvXG4gICAgKHNlZ21lbnRDb3VudCAq IDYuMCkpICpcbiAgICAoc2VnbWVudENvdW50ICogNi4wKTtcblxuICBmbG9h dCBzZWdtZW50ID0gZmxvb3IoMC4wMDEgKyBpbmRleC82LjApO1xuICBmbG9h dCBzZWdtZW50SW5kZXggPSBpbmRleCAtIChzZWdtZW50KjYuMCk7XG5cbiAg bm9ybWFsID0gLW5vcm1hbGl6ZShkKTtcblxuICBpZiAoc2VnbWVudEluZGV4 ID4gMi45OSAmJiBzZWdtZW50SW5kZXggPCAzLjAxKSB7XG4gICAgcmV0dXJu IG1peCh2ZWMzKDAuMCksIC1kLCBjb25lT2Zmc2V0KTtcbiAgfVxuXG4gIGZs b2F0IG5leHRBbmdsZSA9IChcbiAgICAoc2VnbWVudEluZGV4ID4gMC45OSAm JiAgc2VnbWVudEluZGV4IDwgMS4wMSkgfHxcbiAgICAoc2VnbWVudEluZGV4 ID4gNC45OSAmJiAgc2VnbWVudEluZGV4IDwgNS4wMSlcbiAgKSA/IDEuMCA6 IDAuMDtcbiAgZmxvYXQgYW5nbGUgPSAyLjAgKiAzLjE0MTU5ICogKChzZWdt ZW50ICsgbmV4dEFuZ2xlKSAvIHNlZ21lbnRDb3VudCk7XG5cbiAgdmVjMyB2 MSA9IG1peChkLCB2ZWMzKDAuMCksIGNvbmVPZmZzZXQpO1xuICB2ZWMzIHYy ID0gdjEgLSBkO1xuXG4gIHZlYzMgdSA9IGdldE9ydGhvZ29uYWxWZWN0b3Io ZCk7XG4gIHZlYzMgdiA9IG5vcm1hbGl6ZShjcm9zcyh1LCBkKSk7XG5cbiAg dmVjMyB4ID0gdSAqIGNvcyhhbmdsZSkgKiBsZW5ndGgoZCkqMC4yNTtcbiAg dmVjMyB5ID0gdiAqIHNpbihhbmdsZSkgKiBsZW5ndGgoZCkqMC4yNTtcbiAg dmVjMyB2MyA9IHYyICsgeCArIHk7XG4gIGlmIChzZWdtZW50SW5kZXggPCAz LjApIHtcbiAgICB2ZWMzIHR4ID0gdSAqIHNpbihhbmdsZSk7XG4gICAgdmVj MyB0eSA9IHYgKiAtY29zKGFuZ2xlKTtcbiAgICB2ZWMzIHRhbmdlbnQgPSB0 eCArIHR5O1xuICAgIG5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyh2MyAtIHYx LCB0YW5nZW50KSk7XG4gIH1cblxuICBpZiAoc2VnbWVudEluZGV4ID09IDAu MCkge1xuICAgIHJldHVybiBtaXgoZCwgdmVjMygwLjApLCBjb25lT2Zmc2V0 KTtcbiAgfVxuICByZXR1cm4gdjM7XG59XG5cbmF0dHJpYnV0ZSB2ZWM0IHZl Y3RvcjtcbmF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xuYXR0cmlidXRlIHZl YzQgaWQ7XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlv bjtcbnVuaWZvcm0gZmxvYXQgdmVjdG9yU2NhbGUsIGNvbmVTY2FsZSwgY29u ZU9mZnNldDtcblxudmFyeWluZyB2ZWMzIGZfcG9zaXRpb247XG52YXJ5aW5n IHZlYzQgZl9pZDtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIG5vcm1hbDtc biAgdmVjMyBYWVogPSBnZXRDb25lUG9zaXRpb24obWF0Myhtb2RlbCkgKiAo KHZlY3RvclNjYWxlICogY29uZVNjYWxlKSAqIHZlY3Rvci54eXopLCBwb3Np dGlvbi53LCBjb25lT2Zmc2V0LCBub3JtYWwpO1xuICB2ZWM0IGNvbmVQb3Np dGlvbiA9IG1vZGVsICogdmVjNChwb3NpdGlvbi54eXosIDEuMCkgKyB2ZWM0 KFhZWiwgMC4wKTtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmll dyAqIGNvbmVQb3NpdGlvbjtcbiAgZl9pZCAgICAgICAgPSBpZDtcbiAgZl9w b3NpdGlvbiAgPSBwb3NpdGlvbi54eXo7XG59XG4iXSkscz1uKFsicHJlY2lz aW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYm9vbCBv dXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0 dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4o YSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBi LCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBw LngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7 XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBw KSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxu ICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAg ICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBv dXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJu IG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbnVuaWZv cm0gdmVjMyAgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQgcGlja0lk O1xuXG52YXJ5aW5nIHZlYzMgZl9wb3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBm X2lkO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmIChvdXRPZlJhbmdlKGNsaXBC b3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0sIGZfcG9zaXRpb24pKSBkaXNjYXJk O1xuXG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQocGlja0lkLCBmX2lkLnh5eik7 XG59Il0pO3IubWVzaFNoYWRlcj17dmVydGV4OmEsZnJhZ21lbnQ6aSxhdHRy aWJ1dGVzOlt7bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzQifSx7bmFtZToi Y29sb3IiLHR5cGU6InZlYzQifSx7bmFtZToidXYiLHR5cGU6InZlYzIifSx7 bmFtZToidmVjdG9yIix0eXBlOiJ2ZWMzIn1dfSxyLnBpY2tTaGFkZXI9e3Zl cnRleDpvLGZyYWdtZW50OnMsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9u Iix0eXBlOiJ2ZWM0In0se25hbWU6ImlkIix0eXBlOiJ2ZWM0In0se25hbWU6 InZlY3RvciIsdHlwZToidmVjMyJ9XX19LHtnbHNsaWZ5OjQxMX1dLDI0ODpb ZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz17MDoiTk9ORSIsMToiT05FIiwy OiJMSU5FX0xPT1AiLDM6IkxJTkVfU1RSSVAiLDQ6IlRSSUFOR0xFUyIsNToi VFJJQU5HTEVfU1RSSVAiLDY6IlRSSUFOR0xFX0ZBTiIsMjU2OiJERVBUSF9C VUZGRVJfQklUIiw1MTI6Ik5FVkVSIiw1MTM6IkxFU1MiLDUxNDoiRVFVQUwi LDUxNToiTEVRVUFMIiw1MTY6IkdSRUFURVIiLDUxNzoiTk9URVFVQUwiLDUx ODoiR0VRVUFMIiw1MTk6IkFMV0FZUyIsNzY4OiJTUkNfQ09MT1IiLDc2OToi T05FX01JTlVTX1NSQ19DT0xPUiIsNzcwOiJTUkNfQUxQSEEiLDc3MToiT05F X01JTlVTX1NSQ19BTFBIQSIsNzcyOiJEU1RfQUxQSEEiLDc3MzoiT05FX01J TlVTX0RTVF9BTFBIQSIsNzc0OiJEU1RfQ09MT1IiLDc3NToiT05FX01JTlVT X0RTVF9DT0xPUiIsNzc2OiJTUkNfQUxQSEFfU0FUVVJBVEUiLDEwMjQ6IlNU RU5DSUxfQlVGRkVSX0JJVCIsMTAyODoiRlJPTlQiLDEwMjk6IkJBQ0siLDEw MzI6IkZST05UX0FORF9CQUNLIiwxMjgwOiJJTlZBTElEX0VOVU0iLDEyODE6 IklOVkFMSURfVkFMVUUiLDEyODI6IklOVkFMSURfT1BFUkFUSU9OIiwxMjg1 OiJPVVRfT0ZfTUVNT1JZIiwxMjg2OiJJTlZBTElEX0ZSQU1FQlVGRkVSX09Q RVJBVElPTiIsMjMwNDoiQ1ciLDIzMDU6IkNDVyIsMjg0OToiTElORV9XSURU SCIsMjg4NDoiQ1VMTF9GQUNFIiwyODg1OiJDVUxMX0ZBQ0VfTU9ERSIsMjg4 NjoiRlJPTlRfRkFDRSIsMjkyODoiREVQVEhfUkFOR0UiLDI5Mjk6IkRFUFRI X1RFU1QiLDI5MzA6IkRFUFRIX1dSSVRFTUFTSyIsMjkzMToiREVQVEhfQ0xF QVJfVkFMVUUiLDI5MzI6IkRFUFRIX0ZVTkMiLDI5NjA6IlNURU5DSUxfVEVT VCIsMjk2MToiU1RFTkNJTF9DTEVBUl9WQUxVRSIsMjk2MjoiU1RFTkNJTF9G VU5DIiwyOTYzOiJTVEVOQ0lMX1ZBTFVFX01BU0siLDI5NjQ6IlNURU5DSUxf RkFJTCIsMjk2NToiU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwiLDI5NjY6IlNU RU5DSUxfUEFTU19ERVBUSF9QQVNTIiwyOTY3OiJTVEVOQ0lMX1JFRiIsMjk2 ODoiU1RFTkNJTF9XUklURU1BU0siLDI5Nzg6IlZJRVdQT1JUIiwzMDI0OiJE SVRIRVIiLDMwNDI6IkJMRU5EIiwzMDg4OiJTQ0lTU09SX0JPWCIsMzA4OToi U0NJU1NPUl9URVNUIiwzMTA2OiJDT0xPUl9DTEVBUl9WQUxVRSIsMzEwNzoi Q09MT1JfV1JJVEVNQVNLIiwzMzE3OiJVTlBBQ0tfQUxJR05NRU5UIiwzMzMz OiJQQUNLX0FMSUdOTUVOVCIsMzM3OToiTUFYX1RFWFRVUkVfU0laRSIsMzM4 NjoiTUFYX1ZJRVdQT1JUX0RJTVMiLDM0MDg6IlNVQlBJWEVMX0JJVFMiLDM0 MTA6IlJFRF9CSVRTIiwzNDExOiJHUkVFTl9CSVRTIiwzNDEyOiJCTFVFX0JJ VFMiLDM0MTM6IkFMUEhBX0JJVFMiLDM0MTQ6IkRFUFRIX0JJVFMiLDM0MTU6 IlNURU5DSUxfQklUUyIsMzU1MzoiVEVYVFVSRV8yRCIsNDM1MjoiRE9OVF9D QVJFIiw0MzUzOiJGQVNURVNUIiw0MzU0OiJOSUNFU1QiLDUxMjA6IkJZVEUi LDUxMjE6IlVOU0lHTkVEX0JZVEUiLDUxMjI6IlNIT1JUIiw1MTIzOiJVTlNJ R05FRF9TSE9SVCIsNTEyNDoiSU5UIiw1MTI1OiJVTlNJR05FRF9JTlQiLDUx MjY6IkZMT0FUIiw1Mzg2OiJJTlZFUlQiLDU4OTA6IlRFWFRVUkUiLDY0MDE6 IlNURU5DSUxfSU5ERVgiLDY0MDI6IkRFUFRIX0NPTVBPTkVOVCIsNjQwNjoi QUxQSEEiLDY0MDc6IlJHQiIsNjQwODoiUkdCQSIsNjQwOToiTFVNSU5BTkNF Iiw2NDEwOiJMVU1JTkFOQ0VfQUxQSEEiLDc2ODA6IktFRVAiLDc2ODE6IlJF UExBQ0UiLDc2ODI6IklOQ1IiLDc2ODM6IkRFQ1IiLDc5MzY6IlZFTkRPUiIs NzkzNzoiUkVOREVSRVIiLDc5Mzg6IlZFUlNJT04iLDk3Mjg6Ik5FQVJFU1Qi LDk3Mjk6IkxJTkVBUiIsOTk4NDoiTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCIs OTk4NToiTElORUFSX01JUE1BUF9ORUFSRVNUIiw5OTg2OiJORUFSRVNUX01J UE1BUF9MSU5FQVIiLDk5ODc6IkxJTkVBUl9NSVBNQVBfTElORUFSIiwxMDI0 MDoiVEVYVFVSRV9NQUdfRklMVEVSIiwxMDI0MToiVEVYVFVSRV9NSU5fRklM VEVSIiwxMDI0MjoiVEVYVFVSRV9XUkFQX1MiLDEwMjQzOiJURVhUVVJFX1dS QVBfVCIsMTA0OTc6IlJFUEVBVCIsMTA3NTI6IlBPTFlHT05fT0ZGU0VUX1VO SVRTIiwxNjM4NDoiQ09MT1JfQlVGRkVSX0JJVCIsMzI3Njk6IkNPTlNUQU5U X0NPTE9SIiwzMjc3MDoiT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIiwzMjc3 MToiQ09OU1RBTlRfQUxQSEEiLDMyNzcyOiJPTkVfTUlOVVNfQ09OU1RBTlRf QUxQSEEiLDMyNzczOiJCTEVORF9DT0xPUiIsMzI3NzQ6IkZVTkNfQUREIiwz Mjc3NzoiQkxFTkRfRVFVQVRJT05fUkdCIiwzMjc3ODoiRlVOQ19TVUJUUkFD VCIsMzI3Nzk6IkZVTkNfUkVWRVJTRV9TVUJUUkFDVCIsMzI4MTk6IlVOU0lH TkVEX1NIT1JUXzRfNF80XzQiLDMyODIwOiJVTlNJR05FRF9TSE9SVF81XzVf NV8xIiwzMjgyMzoiUE9MWUdPTl9PRkZTRVRfRklMTCIsMzI4MjQ6IlBPTFlH T05fT0ZGU0VUX0ZBQ1RPUiIsMzI4NTQ6IlJHQkE0IiwzMjg1NToiUkdCNV9B MSIsMzI4NzM6IlRFWFRVUkVfQklORElOR18yRCIsMzI5MjY6IlNBTVBMRV9B TFBIQV9UT19DT1ZFUkFHRSIsMzI5Mjg6IlNBTVBMRV9DT1ZFUkFHRSIsMzI5 MzY6IlNBTVBMRV9CVUZGRVJTIiwzMjkzNzoiU0FNUExFUyIsMzI5Mzg6IlNB TVBMRV9DT1ZFUkFHRV9WQUxVRSIsMzI5Mzk6IlNBTVBMRV9DT1ZFUkFHRV9J TlZFUlQiLDMyOTY4OiJCTEVORF9EU1RfUkdCIiwzMjk2OToiQkxFTkRfU1JD X1JHQiIsMzI5NzA6IkJMRU5EX0RTVF9BTFBIQSIsMzI5NzE6IkJMRU5EX1NS Q19BTFBIQSIsMzMwNzE6IkNMQU1QX1RPX0VER0UiLDMzMTcwOiJHRU5FUkFU RV9NSVBNQVBfSElOVCIsMzMxODk6IkRFUFRIX0NPTVBPTkVOVDE2IiwzMzMw NjoiREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIiwzMzYzNToiVU5TSUdORURf U0hPUlRfNV82XzUiLDMzNjQ4OiJNSVJST1JFRF9SRVBFQVQiLDMzOTAxOiJB TElBU0VEX1BPSU5UX1NJWkVfUkFOR0UiLDMzOTAyOiJBTElBU0VEX0xJTkVf V0lEVEhfUkFOR0UiLDMzOTg0OiJURVhUVVJFMCIsMzM5ODU6IlRFWFRVUkUx IiwzMzk4NjoiVEVYVFVSRTIiLDMzOTg3OiJURVhUVVJFMyIsMzM5ODg6IlRF WFRVUkU0IiwzMzk4OToiVEVYVFVSRTUiLDMzOTkwOiJURVhUVVJFNiIsMzM5 OTE6IlRFWFRVUkU3IiwzMzk5MjoiVEVYVFVSRTgiLDMzOTkzOiJURVhUVVJF OSIsMzM5OTQ6IlRFWFRVUkUxMCIsMzM5OTU6IlRFWFRVUkUxMSIsMzM5OTY6 IlRFWFRVUkUxMiIsMzM5OTc6IlRFWFRVUkUxMyIsMzM5OTg6IlRFWFRVUkUx NCIsMzM5OTk6IlRFWFRVUkUxNSIsMzQwMDA6IlRFWFRVUkUxNiIsMzQwMDE6 IlRFWFRVUkUxNyIsMzQwMDI6IlRFWFRVUkUxOCIsMzQwMDM6IlRFWFRVUkUx OSIsMzQwMDQ6IlRFWFRVUkUyMCIsMzQwMDU6IlRFWFRVUkUyMSIsMzQwMDY6 IlRFWFRVUkUyMiIsMzQwMDc6IlRFWFRVUkUyMyIsMzQwMDg6IlRFWFRVUkUy NCIsMzQwMDk6IlRFWFRVUkUyNSIsMzQwMTA6IlRFWFRVUkUyNiIsMzQwMTE6 IlRFWFRVUkUyNyIsMzQwMTI6IlRFWFRVUkUyOCIsMzQwMTM6IlRFWFRVUkUy OSIsMzQwMTQ6IlRFWFRVUkUzMCIsMzQwMTU6IlRFWFRVUkUzMSIsMzQwMTY6 IkFDVElWRV9URVhUVVJFIiwzNDAyNDoiTUFYX1JFTkRFUkJVRkZFUl9TSVpF IiwzNDA0MToiREVQVEhfU1RFTkNJTCIsMzQwNTU6IklOQ1JfV1JBUCIsMzQw NTY6IkRFQ1JfV1JBUCIsMzQwNjc6IlRFWFRVUkVfQ1VCRV9NQVAiLDM0MDY4 OiJURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAiLDM0MDY5OiJURVhUVVJFX0NV QkVfTUFQX1BPU0lUSVZFX1giLDM0MDcwOiJURVhUVVJFX0NVQkVfTUFQX05F R0FUSVZFX1giLDM0MDcxOiJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ki LDM0MDcyOiJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kiLDM0MDczOiJU RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oiLDM0MDc0OiJURVhUVVJFX0NV QkVfTUFQX05FR0FUSVZFX1oiLDM0MDc2OiJNQVhfQ1VCRV9NQVBfVEVYVFVS RV9TSVpFIiwzNDMzODoiVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEIiwz NDMzOToiVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFIiwzNDM0MDoiVkVSVEVY X0FUVFJJQl9BUlJBWV9TVFJJREUiLDM0MzQxOiJWRVJURVhfQVRUUklCX0FS UkFZX1RZUEUiLDM0MzQyOiJDVVJSRU5UX1ZFUlRFWF9BVFRSSUIiLDM0Mzcz OiJWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIiLDM0NDY2OiJOVU1fQ09N UFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMiLDM0NDY3OiJDT01QUkVTU0VEX1RF WFRVUkVfRk9STUFUUyIsMzQ2NjA6IkJVRkZFUl9TSVpFIiwzNDY2MToiQlVG RkVSX1VTQUdFIiwzNDgxNjoiU1RFTkNJTF9CQUNLX0ZVTkMiLDM0ODE3OiJT VEVOQ0lMX0JBQ0tfRkFJTCIsMzQ4MTg6IlNURU5DSUxfQkFDS19QQVNTX0RF UFRIX0ZBSUwiLDM0ODE5OiJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNT IiwzNDg3NzoiQkxFTkRfRVFVQVRJT05fQUxQSEEiLDM0OTIxOiJNQVhfVkVS VEVYX0FUVFJJQlMiLDM0OTIyOiJWRVJURVhfQVRUUklCX0FSUkFZX05PUk1B TElaRUQiLDM0OTMwOiJNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyIsMzQ5NjI6 IkFSUkFZX0JVRkZFUiIsMzQ5NjM6IkVMRU1FTlRfQVJSQVlfQlVGRkVSIiwz NDk2NDoiQVJSQVlfQlVGRkVSX0JJTkRJTkciLDM0OTY1OiJFTEVNRU5UX0FS UkFZX0JVRkZFUl9CSU5ESU5HIiwzNDk3NToiVkVSVEVYX0FUVFJJQl9BUlJB WV9CVUZGRVJfQklORElORyIsMzUwNDA6IlNUUkVBTV9EUkFXIiwzNTA0NDoi U1RBVElDX0RSQVciLDM1MDQ4OiJEWU5BTUlDX0RSQVciLDM1NjMyOiJGUkFH TUVOVF9TSEFERVIiLDM1NjMzOiJWRVJURVhfU0hBREVSIiwzNTY2MDoiTUFY X1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTIiwzNTY2MToiTUFYX0NPTUJJ TkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMiLDM1NjYzOiJTSEFERVJfVFlQRSIs MzU2NjQ6IkZMT0FUX1ZFQzIiLDM1NjY1OiJGTE9BVF9WRUMzIiwzNTY2Njoi RkxPQVRfVkVDNCIsMzU2Njc6IklOVF9WRUMyIiwzNTY2ODoiSU5UX1ZFQzMi LDM1NjY5OiJJTlRfVkVDNCIsMzU2NzA6IkJPT0wiLDM1NjcxOiJCT09MX1ZF QzIiLDM1NjcyOiJCT09MX1ZFQzMiLDM1NjczOiJCT09MX1ZFQzQiLDM1Njc0 OiJGTE9BVF9NQVQyIiwzNTY3NToiRkxPQVRfTUFUMyIsMzU2NzY6IkZMT0FU X01BVDQiLDM1Njc4OiJTQU1QTEVSXzJEIiwzNTY4MDoiU0FNUExFUl9DVUJF IiwzNTcxMjoiREVMRVRFX1NUQVRVUyIsMzU3MTM6IkNPTVBJTEVfU1RBVFVT IiwzNTcxNDoiTElOS19TVEFUVVMiLDM1NzE1OiJWQUxJREFURV9TVEFUVVMi LDM1NzE2OiJJTkZPX0xPR19MRU5HVEgiLDM1NzE3OiJBVFRBQ0hFRF9TSEFE RVJTIiwzNTcxODoiQUNUSVZFX1VOSUZPUk1TIiwzNTcxOToiQUNUSVZFX1VO SUZPUk1fTUFYX0xFTkdUSCIsMzU3MjA6IlNIQURFUl9TT1VSQ0VfTEVOR1RI IiwzNTcyMToiQUNUSVZFX0FUVFJJQlVURVMiLDM1NzIyOiJBQ1RJVkVfQVRU UklCVVRFX01BWF9MRU5HVEgiLDM1NzI0OiJTSEFESU5HX0xBTkdVQUdFX1ZF UlNJT04iLDM1NzI1OiJDVVJSRU5UX1BST0dSQU0iLDM2MDAzOiJTVEVOQ0lM X0JBQ0tfUkVGIiwzNjAwNDoiU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0siLDM2 MDA1OiJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLIiwzNjAwNjoiRlJBTUVCVUZG RVJfQklORElORyIsMzYwMDc6IlJFTkRFUkJVRkZFUl9CSU5ESU5HIiwzNjA0 ODoiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSIsMzYwNDk6 IkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUiLDM2MDUwOiJG UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwiLDM2MDUxOiJG UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSIs MzYwNTM6IkZSQU1FQlVGRkVSX0NPTVBMRVRFIiwzNjA1NDoiRlJBTUVCVUZG RVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIiwzNjA1NToiRlJBTUVCVUZGRVJf SU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQiLDM2MDU3OiJGUkFNRUJV RkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMiLDM2MDYxOiJGUkFNRUJVRkZF Ul9VTlNVUFBPUlRFRCIsMzYwNjQ6IkNPTE9SX0FUVEFDSE1FTlQwIiwzNjA5 NjoiREVQVEhfQVRUQUNITUVOVCIsMzYxMjg6IlNURU5DSUxfQVRUQUNITUVO VCIsMzYxNjA6IkZSQU1FQlVGRkVSIiwzNjE2MToiUkVOREVSQlVGRkVSIiwz NjE2MjoiUkVOREVSQlVGRkVSX1dJRFRIIiwzNjE2MzoiUkVOREVSQlVGRkVS X0hFSUdIVCIsMzYxNjQ6IlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQi LDM2MTY4OiJTVEVOQ0lMX0lOREVYOCIsMzYxNzY6IlJFTkRFUkJVRkZFUl9S RURfU0laRSIsMzYxNzc6IlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFIiwzNjE3 ODoiUkVOREVSQlVGRkVSX0JMVUVfU0laRSIsMzYxNzk6IlJFTkRFUkJVRkZF Ul9BTFBIQV9TSVpFIiwzNjE4MDoiUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUi LDM2MTgxOiJSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFIiwzNjE5NDoiUkdC NTY1IiwzNjMzNjoiTE9XX0ZMT0FUIiwzNjMzNzoiTUVESVVNX0ZMT0FUIiwz NjMzODoiSElHSF9GTE9BVCIsMzYzMzk6IkxPV19JTlQiLDM2MzQwOiJNRURJ VU1fSU5UIiwzNjM0MToiSElHSF9JTlQiLDM2MzQ2OiJTSEFERVJfQ09NUElM RVIiLDM2MzQ3OiJNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyIsMzYzNDg6 Ik1BWF9WQVJZSU5HX1ZFQ1RPUlMiLDM2MzQ5OiJNQVhfRlJBR01FTlRfVU5J Rk9STV9WRUNUT1JTIiwzNzQ0MDoiVU5QQUNLX0ZMSVBfWV9XRUJHTCIsMzc0 NDE6IlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCIsMzc0NDI6IkNP TlRFWFRfTE9TVF9XRUJHTCIsMzc0NDM6IlVOUEFDS19DT0xPUlNQQUNFX0NP TlZFUlNJT05fV0VCR0wiLDM3NDQ0OiJCUk9XU0VSX0RFRkFVTFRfV0VCR0wi fX0se31dLDI0OTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4vMS4wL251 bWJlcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5bdF19fSx7 Ii4vMS4wL251bWJlcnMiOjI0OH1dLDI1MDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5nbCxy PW4oZSksbz1hKGUsW3tidWZmZXI6cix0eXBlOmUuRkxPQVQsc2l6ZTozLG9m ZnNldDowLHN0cmlkZTo0MH0se2J1ZmZlcjpyLHR5cGU6ZS5GTE9BVCxzaXpl OjQsb2Zmc2V0OjEyLHN0cmlkZTo0MH0se2J1ZmZlcjpyLHR5cGU6ZS5GTE9B VCxzaXplOjMsb2Zmc2V0OjI4LHN0cmlkZTo0MH1dKSxsPWkoZSk7bC5hdHRy aWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsbC5hdHRyaWJ1dGVzLmNvbG9y LmxvY2F0aW9uPTEsbC5hdHRyaWJ1dGVzLm9mZnNldC5sb2NhdGlvbj0yO3Zh ciBjPW5ldyBzKGUscixvLGwpO3JldHVybiBjLnVwZGF0ZSh0KSxjfTt2YXIg bj10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIpLGk9dCgiLi9zaGFkZXJz L2luZGV4Iiksbz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07 ZnVuY3Rpb24gcyh0LGUscixuKXt0aGlzLmdsPXQsdGhpcy5zaGFkZXI9bix0 aGlzLmJ1ZmZlcj1lLHRoaXMudmFvPXIsdGhpcy5waXhlbFJhdGlvPTEsdGhp cy5ib3VuZHM9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV0sdGhp cy5jbGlwQm91bmRzPVtbLTEvMCwtMS8wLC0xLzBdLFsxLzAsMS8wLDEvMF1d LHRoaXMubGluZVdpZHRoPVsxLDEsMV0sdGhpcy5jYXBTaXplPVsxMCwxMCwx MF0sdGhpcy5saW5lQ291bnQ9WzAsMCwwXSx0aGlzLmxpbmVPZmZzZXQ9WzAs MCwwXSx0aGlzLm9wYWNpdHk9MSx0aGlzLmhhc0FscGhhPSExfXZhciBsPXMu cHJvdG90eXBlO2Z1bmN0aW9uIGModCxlKXtmb3IodmFyIHI9MDtyPDM7Kyty KXRbMF1bcl09TWF0aC5taW4odFswXVtyXSxlW3JdKSx0WzFdW3JdPU1hdGgu bWF4KHRbMV1bcl0sZVtyXSl9bC5pc09wYXF1ZT1mdW5jdGlvbigpe3JldHVy biF0aGlzLmhhc0FscGhhfSxsLmlzVHJhbnNwYXJlbnQ9ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5oYXNBbHBoYX0sbC5kcmF3VHJhbnNwYXJlbnQ9bC5kcmF3 PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2wscj10aGlzLnNoYWRlci51bmlm b3Jtczt0aGlzLnNoYWRlci5iaW5kKCk7dmFyIG49ci52aWV3PXQudmlld3x8 byxhPXIucHJvamVjdGlvbj10LnByb2plY3Rpb258fG87ci5tb2RlbD10Lm1v ZGVsfHxvLHIuY2xpcEJvdW5kcz10aGlzLmNsaXBCb3VuZHMsci5vcGFjaXR5 PXRoaXMub3BhY2l0eTt2YXIgaT1uWzEyXSxzPW5bMTNdLGw9blsxNF0sYz1u WzE1XSx1PSh0Ll9vcnRob3x8ITE/MjoxKSp0aGlzLnBpeGVsUmF0aW8qKGFb M10qaSthWzddKnMrYVsxMV0qbCthWzE1XSpjKS9lLmRyYXdpbmdCdWZmZXJI ZWlnaHQ7dGhpcy52YW8uYmluZCgpO2Zvcih2YXIgaD0wO2g8MzsrK2gpZS5s aW5lV2lkdGgodGhpcy5saW5lV2lkdGhbaF0qdGhpcy5waXhlbFJhdGlvKSxy LmNhcFNpemU9dGhpcy5jYXBTaXplW2hdKnUsdGhpcy5saW5lQ291bnRbaF0m JmUuZHJhd0FycmF5cyhlLkxJTkVTLHRoaXMubGluZU9mZnNldFtoXSx0aGlz LmxpbmVDb3VudFtoXSk7dGhpcy52YW8udW5iaW5kKCl9O3ZhciB1PWZ1bmN0 aW9uKCl7Zm9yKHZhciB0PW5ldyBBcnJheSgzKSxlPTA7ZTwzOysrZSl7Zm9y KHZhciByPVtdLG49MTtuPD0yOysrbilmb3IodmFyIGE9LTE7YTw9MTthKz0y KXt2YXIgaT1bMCwwLDBdO2lbKG4rZSklM109YSxyLnB1c2goaSl9dFtlXT1y fXJldHVybiB0fSgpO2Z1bmN0aW9uIGgodCxlLHIsbil7Zm9yKHZhciBhPXVb bl0saT0wO2k8YS5sZW5ndGg7KytpKXt2YXIgbz1hW2ldO3QucHVzaChlWzBd LGVbMV0sZVsyXSxyWzBdLHJbMV0sclsyXSxyWzNdLG9bMF0sb1sxXSxvWzJd KX1yZXR1cm4gYS5sZW5ndGh9bC51cGRhdGU9ZnVuY3Rpb24odCl7ImxpbmVX aWR0aCJpbih0PXR8fHt9KSYmKHRoaXMubGluZVdpZHRoPXQubGluZVdpZHRo LEFycmF5LmlzQXJyYXkodGhpcy5saW5lV2lkdGgpfHwodGhpcy5saW5lV2lk dGg9W3RoaXMubGluZVdpZHRoLHRoaXMubGluZVdpZHRoLHRoaXMubGluZVdp ZHRoXSkpLCJjYXBTaXplImluIHQmJih0aGlzLmNhcFNpemU9dC5jYXBTaXpl LEFycmF5LmlzQXJyYXkodGhpcy5jYXBTaXplKXx8KHRoaXMuY2FwU2l6ZT1b dGhpcy5jYXBTaXplLHRoaXMuY2FwU2l6ZSx0aGlzLmNhcFNpemVdKSksdGhp cy5oYXNBbHBoYT0hMSwib3BhY2l0eSJpbiB0JiYodGhpcy5vcGFjaXR5PSt0 Lm9wYWNpdHksdGhpcy5vcGFjaXR5PDEmJih0aGlzLmhhc0FscGhhPSEwKSk7 dmFyIGU9dC5jb2xvcnx8W1swLDAsMF0sWzAsMCwwXSxbMCwwLDBdXSxyPXQu cG9zaXRpb24sbj10LmVycm9yO2lmKEFycmF5LmlzQXJyYXkoZVswXSl8fChl PVtlLGUsZV0pLHImJm4pe3ZhciBhPVtdLGk9ci5sZW5ndGgsbz0wO3RoaXMu Ym91bmRzPVtbMS8wLDEvMCwxLzBdLFstMS8wLC0xLzAsLTEvMF1dLHRoaXMu bGluZUNvdW50PVswLDAsMF07Zm9yKHZhciBzPTA7czwzOysrcyl7dGhpcy5s aW5lT2Zmc2V0W3NdPW87dDpmb3IodmFyIGw9MDtsPGk7KytsKXtmb3IodmFy IHU9cltsXSxmPTA7ZjwzOysrZilpZihpc05hTih1W2ZdKXx8IWlzRmluaXRl KHVbZl0pKWNvbnRpbnVlIHQ7dmFyIHA9bltsXSxkPWVbc107aWYoQXJyYXku aXNBcnJheShkWzBdKSYmKGQ9ZVtsXSksMz09PWQubGVuZ3RoP2Q9W2RbMF0s ZFsxXSxkWzJdLDFdOjQ9PT1kLmxlbmd0aCYmKGQ9W2RbMF0sZFsxXSxkWzJd LGRbM11dLCF0aGlzLmhhc0FscGhhJiZkWzNdPDEmJih0aGlzLmhhc0FscGhh PSEwKSksIWlzTmFOKHBbMF1bc10pJiYhaXNOYU4ocFsxXVtzXSkpe3ZhciBn O2lmKHBbMF1bc108MCkoZz11LnNsaWNlKCkpW3NdKz1wWzBdW3NdLGEucHVz aCh1WzBdLHVbMV0sdVsyXSxkWzBdLGRbMV0sZFsyXSxkWzNdLDAsMCwwLGdb MF0sZ1sxXSxnWzJdLGRbMF0sZFsxXSxkWzJdLGRbM10sMCwwLDApLGModGhp cy5ib3VuZHMsZyksbys9MitoKGEsZyxkLHMpO2lmKHBbMV1bc10+MCkoZz11 LnNsaWNlKCkpW3NdKz1wWzFdW3NdLGEucHVzaCh1WzBdLHVbMV0sdVsyXSxk WzBdLGRbMV0sZFsyXSxkWzNdLDAsMCwwLGdbMF0sZ1sxXSxnWzJdLGRbMF0s ZFsxXSxkWzJdLGRbM10sMCwwLDApLGModGhpcy5ib3VuZHMsZyksbys9Mito KGEsZyxkLHMpfX10aGlzLmxpbmVDb3VudFtzXT1vLXRoaXMubGluZU9mZnNl dFtzXX10aGlzLmJ1ZmZlci51cGRhdGUoYSl9fSxsLmRpc3Bvc2U9ZnVuY3Rp b24oKXt0aGlzLnNoYWRlci5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9z ZSgpLHRoaXMudmFvLmRpc3Bvc2UoKX19LHsiLi9zaGFkZXJzL2luZGV4Ijoy NTEsImdsLWJ1ZmZlciI6MjQ0LCJnbC12YW8iOjMyOX1dLDI1MTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbHNsaWZ5IiksYT10 KCJnbC1zaGFkZXIiKSxpPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4j ZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbiwg b2Zmc2V0O1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG51bmlmb3JtIG1hdDQg bW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIGZsb2F0IGNhcFNp emU7XG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xudmFyeWluZyB2ZWMzIGZy YWdQb3NpdGlvbjtcblxudm9pZCBtYWluKCkge1xuICB2ZWM0IHdvcmxkUG9z aXRpb24gID0gbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICB3b3Js ZFBvc2l0aW9uICAgICAgID0gKHdvcmxkUG9zaXRpb24gLyB3b3JsZFBvc2l0 aW9uLncpICsgdmVjNChjYXBTaXplICogb2Zmc2V0LCAwLjApO1xuICBnbF9Q b3NpdGlvbiAgICAgICAgID0gcHJvamVjdGlvbiAqIHZpZXcgKiB3b3JsZFBv c2l0aW9uO1xuICBmcmFnQ29sb3IgICAgICAgICAgID0gY29sb3I7XG4gIGZy YWdQb3NpdGlvbiAgICAgICAgPSBwb3NpdGlvbjtcbn0iXSksbz1uKFsicHJl Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYm9v bCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAg cmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBt aW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVj MiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54 LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55 KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVj MyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8 fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAg ICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9v bCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0 dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbnVu aWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBvcGFj aXR5O1xudmFyeWluZyB2ZWMzIGZyYWdQb3NpdGlvbjtcbnZhcnlpbmcgdmVj NCBmcmFnQ29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKFxuICAgIG91 dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgZnJhZ1Bv c2l0aW9uKSB8fFxuICAgIGZyYWdDb2xvci5hICogb3BhY2l0eSA9PSAwLlxu ICApIGRpc2NhcmQ7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gb3BhY2l0eSAqIGZy YWdDb2xvcjtcbn0iXSk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBh KHQsaSxvLG51bGwsW3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtu YW1lOiJjb2xvciIsdHlwZToidmVjNCJ9LHtuYW1lOiJvZmZzZXQiLHR5cGU6 InZlYzMifV0pfX0seyJnbC1zaGFkZXIiOjMwNCxnbHNsaWZ5OjQxMX1dLDI1 MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbC10 ZXh0dXJlMmQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7YXx8KGE9 dC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCxpPXQuRlJBTUVCVUZGRVJfSU5D T01QTEVURV9BVFRBQ0hNRU5ULG89dC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRF X0RJTUVOU0lPTlMscz10LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lO R19BVFRBQ0hNRU5UKTt2YXIgYz10LmdldEV4dGVuc2lvbigiV0VCR0xfZHJh d19idWZmZXJzIik7IWwmJmMmJmZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5nZXRQ YXJhbWV0ZXIoZS5NQVhfQ09MT1JfQVRUQUNITUVOVFNfV0VCR0wpO2w9bmV3 IEFycmF5KHIrMSk7Zm9yKHZhciBuPTA7bjw9cjsrK24pe2Zvcih2YXIgYT1u ZXcgQXJyYXkociksaT0wO2k8bjsrK2kpYVtpXT10LkNPTE9SX0FUVEFDSE1F TlQwK2k7Zm9yKHZhciBpPW47aTxyOysraSlhW2ldPXQuTk9ORTtsW25dPWF9 fSh0LGMpO0FycmF5LmlzQXJyYXkoZSkmJihuPXIscj0wfGVbMV0sZT0wfGVb MF0pO2lmKCJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImds LWZibzogTWlzc2luZyBzaGFwZSBwYXJhbWV0ZXIiKTt2YXIgdT10LmdldFBh cmFtZXRlcih0Lk1BWF9SRU5ERVJCVUZGRVJfU0laRSk7aWYoZTwwfHxlPnV8 fHI8MHx8cj51KXRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBQYXJhbWV0ZXJz IGFyZSB0b28gbGFyZ2UgZm9yIEZCTyIpO3ZhciBoPTE7aWYoImNvbG9yImlu KG49bnx8e30pKXtpZigoaD1NYXRoLm1heCgwfG4uY29sb3IsMCkpPDApdGhy b3cgbmV3IEVycm9yKCJnbC1mYm86IE11c3Qgc3BlY2lmeSBhIG5vbm5lZ2F0 aXZlIG51bWJlciBvZiBjb2xvcnMiKTtpZihoPjEpe2lmKCFjKXRocm93IG5l dyBFcnJvcigiZ2wtZmJvOiBNdWx0aXBsZSBkcmF3IGJ1ZmZlciBleHRlbnNp b24gbm90IHN1cHBvcnRlZCIpO2lmKGg+dC5nZXRQYXJhbWV0ZXIoYy5NQVhf Q09MT1JfQVRUQUNITUVOVFNfV0VCR0wpKXRocm93IG5ldyBFcnJvcigiZ2wt ZmJvOiBDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgIitoKyIgZHJhdyBidWZm ZXJzIil9fXZhciBmPXQuVU5TSUdORURfQllURSxwPXQuZ2V0RXh0ZW5zaW9u KCJPRVNfdGV4dHVyZV9mbG9hdCIpO2lmKG4uZmxvYXQmJmg+MCl7aWYoIXAp dGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IENvbnRleHQgZG9lcyBub3Qgc3Vw cG9ydCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcyIpO2Y9dC5GTE9BVH1lbHNl IG4ucHJlZmVyRmxvYXQmJmg+MCYmcCYmKGY9dC5GTE9BVCk7dmFyIGc9ITA7 ImRlcHRoImluIG4mJihnPSEhbi5kZXB0aCk7dmFyIHY9ITE7InN0ZW5jaWwi aW4gbiYmKHY9ISFuLnN0ZW5jaWwpO3JldHVybiBuZXcgZCh0LGUscixmLGgs Zyx2LGMpfTt2YXIgYSxpLG8scyxsPW51bGw7ZnVuY3Rpb24gYyh0KXtyZXR1 cm5bdC5nZXRQYXJhbWV0ZXIodC5GUkFNRUJVRkZFUl9CSU5ESU5HKSx0Lmdl dFBhcmFtZXRlcih0LlJFTkRFUkJVRkZFUl9CSU5ESU5HKSx0LmdldFBhcmFt ZXRlcih0LlRFWFRVUkVfQklORElOR18yRCldfWZ1bmN0aW9uIHUodCxlKXt0 LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLGVbMF0pLHQuYmluZFJl bmRlcmJ1ZmZlcih0LlJFTkRFUkJVRkZFUixlWzFdKSx0LmJpbmRUZXh0dXJl KHQuVEVYVFVSRV8yRCxlWzJdKX1mdW5jdGlvbiBoKHQpe3N3aXRjaCh0KXtj YXNlIGE6dGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IEZyYW1lYnVmZmVyIHVu c3VwcG9ydGVkIik7Y2FzZSBpOnRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBG cmFtZWJ1ZmZlciBpbmNvbXBsZXRlIGF0dGFjaG1lbnQiKTtjYXNlIG86dGhy b3cgbmV3IEVycm9yKCJnbC1mYm86IEZyYW1lYnVmZmVyIGluY29tcGxldGUg ZGltZW5zaW9ucyIpO2Nhc2Ugczp0aHJvdyBuZXcgRXJyb3IoImdsLWZibzog RnJhbWVidWZmZXIgaW5jb21wbGV0ZSBtaXNzaW5nIGF0dGFjaG1lbnQiKTtk ZWZhdWx0OnRocm93IG5ldyBFcnJvcigiZ2wtZmJvOiBGcmFtZWJ1ZmZlciBm YWlsZWQgZm9yIHVuc3BlY2lmaWVkIHJlYXNvbiIpfX1mdW5jdGlvbiBmKHQs ZSxyLGEsaSxvKXtpZighYSlyZXR1cm4gbnVsbDt2YXIgcz1uKHQsZSxyLGks YSk7cmV0dXJuIHMubWFnRmlsdGVyPXQuTkVBUkVTVCxzLm1pbkZpbHRlcj10 Lk5FQVJFU1Qscy5taXBTYW1wbGVzPTEscy5iaW5kKCksdC5mcmFtZWJ1ZmZl clRleHR1cmUyRCh0LkZSQU1FQlVGRkVSLG8sdC5URVhUVVJFXzJELHMuaGFu ZGxlLDApLHN9ZnVuY3Rpb24gcCh0LGUscixuLGEpe3ZhciBpPXQuY3JlYXRl UmVuZGVyYnVmZmVyKCk7cmV0dXJuIHQuYmluZFJlbmRlcmJ1ZmZlcih0LlJF TkRFUkJVRkZFUixpKSx0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UodC5SRU5ERVJC VUZGRVIsbixlLHIpLHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodC5GUkFN RUJVRkZFUixhLHQuUkVOREVSQlVGRkVSLGkpLGl9ZnVuY3Rpb24gZCh0LGUs cixuLGEsaSxvLHMpe3RoaXMuZ2w9dCx0aGlzLl9zaGFwZT1bMHxlLDB8cl0s dGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2V4dD1zLHRoaXMuY29sb3I9bmV3 IEFycmF5KGEpO2Zvcih2YXIgZD0wO2Q8YTsrK2QpdGhpcy5jb2xvcltkXT1u dWxsO3RoaXMuX2NvbG9yX3JiPW51bGwsdGhpcy5kZXB0aD1udWxsLHRoaXMu X2RlcHRoX3JiPW51bGwsdGhpcy5fY29sb3JUeXBlPW4sdGhpcy5fdXNlRGVw dGg9aSx0aGlzLl91c2VTdGVuY2lsPW87dmFyIGc9dGhpcyx2PVswfGUsMHxy XTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh2LHswOntnZXQ6ZnVuY3Rpb24o KXtyZXR1cm4gZy5fc2hhcGVbMF19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4g Zy53aWR0aD10fX0sMTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGcuX3NoYXBl WzFdfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGcuaGVpZ2h0PXR9fX0pLHRo aXMuX3NoYXBlVmVjdG9yPXYsZnVuY3Rpb24odCl7dmFyIGU9Yyh0LmdsKSxy PXQuZ2wsbj10LmhhbmRsZT1yLmNyZWF0ZUZyYW1lYnVmZmVyKCksYT10Ll9z aGFwZVswXSxpPXQuX3NoYXBlWzFdLG89dC5jb2xvci5sZW5ndGgscz10Ll9l eHQsZD10Ll91c2VTdGVuY2lsLGc9dC5fdXNlRGVwdGgsdj10Ll9jb2xvclR5 cGU7ci5iaW5kRnJhbWVidWZmZXIoci5GUkFNRUJVRkZFUixuKTtmb3IodmFy IG09MDttPG87KyttKXQuY29sb3JbbV09ZihyLGEsaSx2LHIuUkdCQSxyLkNP TE9SX0FUVEFDSE1FTlQwK20pOzA9PT1vPyh0Ll9jb2xvcl9yYj1wKHIsYSxp LHIuUkdCQTQsci5DT0xPUl9BVFRBQ0hNRU5UMCkscyYmcy5kcmF3QnVmZmVy c1dFQkdMKGxbMF0pKTpvPjEmJnMuZHJhd0J1ZmZlcnNXRUJHTChsW29dKTt2 YXIgeT1yLmdldEV4dGVuc2lvbigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpO3k/ ZD90LmRlcHRoPWYocixhLGkseS5VTlNJR05FRF9JTlRfMjRfOF9XRUJHTCxy LkRFUFRIX1NURU5DSUwsci5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpOmcm Jih0LmRlcHRoPWYocixhLGksci5VTlNJR05FRF9TSE9SVCxyLkRFUFRIX0NP TVBPTkVOVCxyLkRFUFRIX0FUVEFDSE1FTlQpKTpnJiZkP3QuX2RlcHRoX3Ji PXAocixhLGksci5ERVBUSF9TVEVOQ0lMLHIuREVQVEhfU1RFTkNJTF9BVFRB Q0hNRU5UKTpnP3QuX2RlcHRoX3JiPXAocixhLGksci5ERVBUSF9DT01QT05F TlQxNixyLkRFUFRIX0FUVEFDSE1FTlQpOmQmJih0Ll9kZXB0aF9yYj1wKHIs YSxpLHIuU1RFTkNJTF9JTkRFWCxyLlNURU5DSUxfQVRUQUNITUVOVCkpO3Zh ciB4PXIuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhyLkZSQU1FQlVGRkVSKTtp Zih4IT09ci5GUkFNRUJVRkZFUl9DT01QTEVURSl7Zm9yKHQuX2Rlc3Ryb3ll ZD0hMCxyLmJpbmRGcmFtZWJ1ZmZlcihyLkZSQU1FQlVGRkVSLG51bGwpLHIu ZGVsZXRlRnJhbWVidWZmZXIodC5oYW5kbGUpLHQuaGFuZGxlPW51bGwsdC5k ZXB0aCYmKHQuZGVwdGguZGlzcG9zZSgpLHQuZGVwdGg9bnVsbCksdC5fZGVw dGhfcmImJihyLmRlbGV0ZVJlbmRlcmJ1ZmZlcih0Ll9kZXB0aF9yYiksdC5f ZGVwdGhfcmI9bnVsbCksbT0wO208dC5jb2xvci5sZW5ndGg7KyttKXQuY29s b3JbbV0uZGlzcG9zZSgpLHQuY29sb3JbbV09bnVsbDt0Ll9jb2xvcl9yYiYm KHIuZGVsZXRlUmVuZGVyYnVmZmVyKHQuX2NvbG9yX3JiKSx0Ll9jb2xvcl9y Yj1udWxsKSx1KHIsZSksaCh4KX11KHIsZSl9KHRoaXMpfXZhciBnPWQucHJv dG90eXBlO2Z1bmN0aW9uIHYodCxlLHIpe2lmKHQuX2Rlc3Ryb3llZCl0aHJv dyBuZXcgRXJyb3IoImdsLWZibzogQ2FuJ3QgcmVzaXplIGRlc3Ryb3llZCBG Qk8iKTtpZih0Ll9zaGFwZVswXSE9PWV8fHQuX3NoYXBlWzFdIT09cil7dmFy IG49dC5nbCxhPW4uZ2V0UGFyYW1ldGVyKG4uTUFYX1JFTkRFUkJVRkZFUl9T SVpFKTtpZihlPDB8fGU+YXx8cjwwfHxyPmEpdGhyb3cgbmV3IEVycm9yKCJn bC1mYm86IENhbid0IHJlc2l6ZSBGQk8sIGludmFsaWQgZGltZW5zaW9ucyIp O3QuX3NoYXBlWzBdPWUsdC5fc2hhcGVbMV09cjtmb3IodmFyIGk9YyhuKSxv PTA7bzx0LmNvbG9yLmxlbmd0aDsrK28pdC5jb2xvcltvXS5zaGFwZT10Ll9z aGFwZTt0Ll9jb2xvcl9yYiYmKG4uYmluZFJlbmRlcmJ1ZmZlcihuLlJFTkRF UkJVRkZFUix0Ll9jb2xvcl9yYiksbi5yZW5kZXJidWZmZXJTdG9yYWdlKG4u UkVOREVSQlVGRkVSLG4uUkdCQTQsdC5fc2hhcGVbMF0sdC5fc2hhcGVbMV0p KSx0LmRlcHRoJiYodC5kZXB0aC5zaGFwZT10Ll9zaGFwZSksdC5fZGVwdGhf cmImJihuLmJpbmRSZW5kZXJidWZmZXIobi5SRU5ERVJCVUZGRVIsdC5fZGVw dGhfcmIpLHQuX3VzZURlcHRoJiZ0Ll91c2VTdGVuY2lsP24ucmVuZGVyYnVm ZmVyU3RvcmFnZShuLlJFTkRFUkJVRkZFUixuLkRFUFRIX1NURU5DSUwsdC5f c2hhcGVbMF0sdC5fc2hhcGVbMV0pOnQuX3VzZURlcHRoP24ucmVuZGVyYnVm ZmVyU3RvcmFnZShuLlJFTkRFUkJVRkZFUixuLkRFUFRIX0NPTVBPTkVOVDE2 LHQuX3NoYXBlWzBdLHQuX3NoYXBlWzFdKTp0Ll91c2VTdGVuY2lsJiZuLnJl bmRlcmJ1ZmZlclN0b3JhZ2Uobi5SRU5ERVJCVUZGRVIsbi5TVEVOQ0lMX0lO REVYLHQuX3NoYXBlWzBdLHQuX3NoYXBlWzFdKSksbi5iaW5kRnJhbWVidWZm ZXIobi5GUkFNRUJVRkZFUix0LmhhbmRsZSk7dmFyIHM9bi5jaGVja0ZyYW1l YnVmZmVyU3RhdHVzKG4uRlJBTUVCVUZGRVIpO3MhPT1uLkZSQU1FQlVGRkVS X0NPTVBMRVRFJiYodC5kaXNwb3NlKCksdShuLGkpLGgocykpLHUobixpKX19 T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZyx7c2hhcGU6e2dldDpmdW5jdGlv bigpe3JldHVybiB0aGlzLl9kZXN0cm95ZWQ/WzAsMF06dGhpcy5fc2hhcGVW ZWN0b3J9LHNldDpmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpfHwo dD1bMHx0LDB8dF0pLDIhPT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImds LWZibzogU2hhcGUgdmVjdG9yIG11c3QgYmUgbGVuZ3RoIDIiKTt2YXIgZT0w fHRbMF0scj0wfHRbMV07cmV0dXJuIHYodGhpcyxlLHIpLFtlLHJdfSxlbnVt ZXJhYmxlOiExfSx3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu X2Rlc3Ryb3llZD8wOnRoaXMuX3NoYXBlWzBdfSxzZXQ6ZnVuY3Rpb24odCl7 cmV0dXJuIHYodGhpcyx0fD0wLHRoaXMuX3NoYXBlWzFdKSx0fSxlbnVtZXJh YmxlOiExfSxoZWlnaHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9k ZXN0cm95ZWQ/MDp0aGlzLl9zaGFwZVsxXX0sc2V0OmZ1bmN0aW9uKHQpe3Jl dHVybiB0fD0wLHYodGhpcyx0aGlzLl9zaGFwZVswXSx0KSx0fSxlbnVtZXJh YmxlOiExfX0pLGcuYmluZD1mdW5jdGlvbigpe2lmKCF0aGlzLl9kZXN0cm95 ZWQpe3ZhciB0PXRoaXMuZ2w7dC5iaW5kRnJhbWVidWZmZXIodC5GUkFNRUJV RkZFUix0aGlzLmhhbmRsZSksdC52aWV3cG9ydCgwLDAsdGhpcy5fc2hhcGVb MF0sdGhpcy5fc2hhcGVbMV0pfX0sZy5kaXNwb3NlPWZ1bmN0aW9uKCl7aWYo IXRoaXMuX2Rlc3Ryb3llZCl7dGhpcy5fZGVzdHJveWVkPSEwO3ZhciB0PXRo aXMuZ2w7dC5kZWxldGVGcmFtZWJ1ZmZlcih0aGlzLmhhbmRsZSksdGhpcy5o YW5kbGU9bnVsbCx0aGlzLmRlcHRoJiYodGhpcy5kZXB0aC5kaXNwb3NlKCks dGhpcy5kZXB0aD1udWxsKSx0aGlzLl9kZXB0aF9yYiYmKHQuZGVsZXRlUmVu ZGVyYnVmZmVyKHRoaXMuX2RlcHRoX3JiKSx0aGlzLl9kZXB0aF9yYj1udWxs KTtmb3IodmFyIGU9MDtlPHRoaXMuY29sb3IubGVuZ3RoOysrZSl0aGlzLmNv bG9yW2VdLmRpc3Bvc2UoKSx0aGlzLmNvbG9yW2VdPW51bGw7dGhpcy5fY29s b3JfcmImJih0LmRlbGV0ZVJlbmRlcmJ1ZmZlcih0aGlzLl9jb2xvcl9yYiks dGhpcy5fY29sb3JfcmI9bnVsbCl9fX0seyJnbC10ZXh0dXJlMmQiOjMyNH1d LDI1MzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoInNwcmludGYtanMiKS5z cHJpbnRmLGE9dCgiZ2wtY29uc3RhbnRzL2xvb2t1cCIpLGk9dCgiZ2xzbC1z aGFkZXItbmFtZSIpLG89dCgiYWRkLWxpbmUtbnVtYmVycyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBzPWkoZSl8fCJv ZiB1bmtub3duIG5hbWUgKHNlZSBucG0gZ2xzbC1zaGFkZXItbmFtZSkiLGw9 InVua25vd24gdHlwZSI7dm9pZCAwIT09ciYmKGw9cj09PWEuRlJBR01FTlRf U0hBREVSPyJmcmFnbWVudCI6InZlcnRleCIpO2Zvcih2YXIgYz1uKCJFcnJv ciBjb21waWxpbmcgJXMgc2hhZGVyICVzOlxuIixsLHMpLHU9bigiJXMlcyIs Yyx0KSxoPXQuc3BsaXQoIlxuIiksZj17fSxwPTA7cDxoLmxlbmd0aDtwKysp e3ZhciBkPWhbcF07aWYoIiIhPT1kJiYiXDAiIT09ZCl7dmFyIGc9cGFyc2VJ bnQoZC5zcGxpdCgiOiIpWzJdKTtpZihpc05hTihnKSl0aHJvdyBuZXcgRXJy b3IobigiQ291bGQgbm90IHBhcnNlIGVycm9yOiAlcyIsZCkpO2ZbZ109ZH19 Zm9yKHZhciB2PW8oZSkuc3BsaXQoIlxuIikscD0wO3A8di5sZW5ndGg7cCsr KWlmKGZbcCszXXx8ZltwKzJdfHxmW3ArMV0pe3ZhciBtPXZbcF07aWYoYys9 bSsiXG4iLGZbcCsxXSl7dmFyIHk9ZltwKzFdO3k9eS5zdWJzdHIoeS5zcGxp dCgiOiIsMykuam9pbigiOiIpLmxlbmd0aCsxKS50cmltKCksYys9bigiXl5e ICVzXG5cbiIseSl9fXJldHVybntsb25nOmMudHJpbSgpLHNob3J0OnUudHJp bSgpfX19LHsiYWRkLWxpbmUtbnVtYmVycyI6NjQsImdsLWNvbnN0YW50cy9s b29rdXAiOjI0OSwiZ2xzbC1zaGFkZXItbmFtZSI6NDAzLCJzcHJpbnRmLWpz Ijo1Mjd9XSwyNTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5nbCxuPW8ocixsLnZlcnRl eCxsLmZyYWdtZW50KSxhPW8ocixsLnBpY2tWZXJ0ZXgsbC5waWNrRnJhZ21l bnQpLGk9cyhyKSx1PXMociksaD1zKHIpLGY9cyhyKSxwPW5ldyBjKHQsbixh LGksdSxoLGYpO3JldHVybiBwLnVwZGF0ZShlKSx0LmFkZE9iamVjdChwKSxw fTt2YXIgbj10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGE9dCgiaW90YS1h cnJheSIpLGk9dCgidHlwZWRhcnJheS1wb29sIiksbz10KCJnbC1zaGFkZXIi KSxzPXQoImdsLWJ1ZmZlciIpLGw9dCgiLi9saWIvc2hhZGVycyIpO2Z1bmN0 aW9uIGModCxlLHIsbixhLGksbyl7dGhpcy5wbG90PXQsdGhpcy5zaGFkZXI9 ZSx0aGlzLnBpY2tTaGFkZXI9cix0aGlzLnBvc2l0aW9uQnVmZmVyPW4sdGhp cy53ZWlnaHRCdWZmZXI9YSx0aGlzLmNvbG9yQnVmZmVyPWksdGhpcy5pZEJ1 ZmZlcj1vLHRoaXMueERhdGE9W10sdGhpcy55RGF0YT1bXSx0aGlzLnNoYXBl PVswLDBdLHRoaXMuYm91bmRzPVsxLzAsMS8wLC0xLzAsLTEvMF0sdGhpcy5w aWNrT2Zmc2V0PTB9dmFyIHUsaD1jLnByb3RvdHlwZSxmPVswLDAsMSwwLDAs MSwxLDAsMSwxLDAsMV07aC5kcmF3PSh1PVsxLDAsMCwwLDEsMCwwLDAsMV0s ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBsb3QsZT10aGlzLnNoYWRlcixyPXRo aXMuYm91bmRzLG49dGhpcy5udW1WZXJ0aWNlcztpZighKG48PTApKXt2YXIg YT10LmdsLGk9dC5kYXRhQm94LG89clsyXS1yWzBdLHM9clszXS1yWzFdLGw9 aVsyXS1pWzBdLGM9aVszXS1pWzFdO3VbMF09MipvL2wsdVs0XT0yKnMvYyx1 WzZdPTIqKHJbMF0taVswXSkvbC0xLHVbN109MiooclsxXS1pWzFdKS9jLTEs ZS5iaW5kKCk7dmFyIGg9ZS51bmlmb3JtcztoLnZpZXdUcmFuc2Zvcm09dSxo LnNoYXBlPXRoaXMuc2hhcGU7dmFyIGY9ZS5hdHRyaWJ1dGVzO3RoaXMucG9z aXRpb25CdWZmZXIuYmluZCgpLGYucG9zaXRpb24ucG9pbnRlcigpLHRoaXMu d2VpZ2h0QnVmZmVyLmJpbmQoKSxmLndlaWdodC5wb2ludGVyKGEuVU5TSUdO RURfQllURSwhMSksdGhpcy5jb2xvckJ1ZmZlci5iaW5kKCksZi5jb2xvci5w b2ludGVyKGEuVU5TSUdORURfQllURSwhMCksYS5kcmF3QXJyYXlzKGEuVFJJ QU5HTEVTLDAsbil9fSksaC5kcmF3UGljaz1mdW5jdGlvbigpe3ZhciB0PVsx LDAsMCwwLDEsMCwwLDAsMV0sZT1bMCwwLDAsMF07cmV0dXJuIGZ1bmN0aW9u KHIpe3ZhciBuPXRoaXMucGxvdCxhPXRoaXMucGlja1NoYWRlcixpPXRoaXMu Ym91bmRzLG89dGhpcy5udW1WZXJ0aWNlcztpZighKG88PTApKXt2YXIgcz1u LmdsLGw9bi5kYXRhQm94LGM9aVsyXS1pWzBdLHU9aVszXS1pWzFdLGg9bFsy XS1sWzBdLGY9bFszXS1sWzFdO3RbMF09MipjL2gsdFs0XT0yKnUvZix0WzZd PTIqKGlbMF0tbFswXSkvaC0xLHRbN109MiooaVsxXS1sWzFdKS9mLTE7Zm9y KHZhciBwPTA7cDw0OysrcCllW3BdPXI+PjgqcCYyNTU7dGhpcy5waWNrT2Zm c2V0PXIsYS5iaW5kKCk7dmFyIGQ9YS51bmlmb3JtcztkLnZpZXdUcmFuc2Zv cm09dCxkLnBpY2tPZmZzZXQ9ZSxkLnNoYXBlPXRoaXMuc2hhcGU7dmFyIGc9 YS5hdHRyaWJ1dGVzO3JldHVybiB0aGlzLnBvc2l0aW9uQnVmZmVyLmJpbmQo KSxnLnBvc2l0aW9uLnBvaW50ZXIoKSx0aGlzLndlaWdodEJ1ZmZlci5iaW5k KCksZy53ZWlnaHQucG9pbnRlcihzLlVOU0lHTkVEX0JZVEUsITEpLHRoaXMu aWRCdWZmZXIuYmluZCgpLGcucGlja0lkLnBvaW50ZXIocy5VTlNJR05FRF9C WVRFLCExKSxzLmRyYXdBcnJheXMocy5UUklBTkdMRVMsMCxvKSxyK3RoaXMu c2hhcGVbMF0qdGhpcy5zaGFwZVsxXX19fSgpLGgucGljaz1mdW5jdGlvbih0 LGUscil7dmFyIG49dGhpcy5waWNrT2Zmc2V0LGE9dGhpcy5zaGFwZVswXSp0 aGlzLnNoYXBlWzFdO2lmKHI8bnx8cj49bithKXJldHVybiBudWxsO3ZhciBp PXItbixvPXRoaXMueERhdGEscz10aGlzLnlEYXRhO3JldHVybntvYmplY3Q6 dGhpcyxwb2ludElkOmksZGF0YUNvb3JkOltvW2kldGhpcy5zaGFwZVswXV0s c1tpL3RoaXMuc2hhcGVbMF18MF1dfX0saC51cGRhdGU9ZnVuY3Rpb24odCl7 dmFyIGU9KHQ9dHx8e30pLnNoYXBlfHxbMCwwXSxyPXQueHx8YShlWzBdKSxv PXQueXx8YShlWzFdKSxzPXQuenx8bmV3IEZsb2F0MzJBcnJheShlWzBdKmVb MV0pO3RoaXMueERhdGE9cix0aGlzLnlEYXRhPW87dmFyIGw9dC5jb2xvckxl dmVsc3x8WzBdLGM9dC5jb2xvclZhbHVlc3x8WzAsMCwwLDFdLHU9bC5sZW5n dGgsaD10aGlzLmJvdW5kcyxwPWhbMF09clswXSxkPWhbMV09b1swXSxnPTEv KChoWzJdPXJbci5sZW5ndGgtMV0pLXApLHY9MS8oKGhbM109b1tvLmxlbmd0 aC0xXSktZCksbT1lWzBdLHk9ZVsxXTt0aGlzLnNoYXBlPVttLHldO3ZhciB4 PShtLTEpKih5LTEpKihmLmxlbmd0aD4+PjEpO3RoaXMubnVtVmVydGljZXM9 eDtmb3IodmFyIGI9aS5tYWxsb2NVaW50OCg0KngpLF89aS5tYWxsb2NGbG9h dDMyKDIqeCksdz1pLm1hbGxvY1VpbnQ4KDIqeCksaz1pLm1hbGxvY1VpbnQz Mih4KSxUPTAsTT0wO008eS0xOysrTSlmb3IodmFyIEE9dioob1tNXS1kKSxT PXYqKG9bTSsxXS1kKSxFPTA7RTxtLTE7KytFKWZvcih2YXIgTD1nKihyW0Vd LXApLEM9ZyoocltFKzFdLXApLFA9MDtQPGYubGVuZ3RoO1ArPTIpe3ZhciBP LHosSSxELFI9ZltQXSxGPWZbUCsxXSxCPXNbKE0rRikqbSsoRStSKV0sTj1u LmxlKGwsQik7aWYoTjwwKU89Y1swXSx6PWNbMV0sST1jWzJdLEQ9Y1szXTtl bHNlIGlmKE49PT11LTEpTz1jWzQqdS00XSx6PWNbNCp1LTNdLEk9Y1s0KnUt Ml0sRD1jWzQqdS0xXTtlbHNle3ZhciBqPShCLWxbTl0pLyhsW04rMV0tbFtO XSksVj0xLWosVT00Kk4scT00KihOKzEpO089VipjW1VdK2oqY1txXSx6PVYq Y1tVKzFdK2oqY1txKzFdLEk9VipjW1UrMl0raipjW3ErMl0sRD1WKmNbVSsz XStqKmNbcSszXX1iWzQqVF09MjU1Kk8sYls0KlQrMV09MjU1KnosYls0KlQr Ml09MjU1KkksYls0KlQrM109MjU1KkQsX1syKlRdPS41KkwrLjUqQyxfWzIq VCsxXT0uNSpBKy41KlMsd1syKlRdPVIsd1syKlQrMV09RixrW1RdPU0qbStF LFQrPTF9dGhpcy5wb3NpdGlvbkJ1ZmZlci51cGRhdGUoXyksdGhpcy53ZWln aHRCdWZmZXIudXBkYXRlKHcpLHRoaXMuY29sb3JCdWZmZXIudXBkYXRlKGIp LHRoaXMuaWRCdWZmZXIudXBkYXRlKGspLGkuZnJlZShfKSxpLmZyZWUoYiks aS5mcmVlKHcpLGkuZnJlZShrKX0saC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhp cy5zaGFkZXIuZGlzcG9zZSgpLHRoaXMucGlja1NoYWRlci5kaXNwb3NlKCks dGhpcy5wb3NpdGlvbkJ1ZmZlci5kaXNwb3NlKCksdGhpcy53ZWlnaHRCdWZm ZXIuZGlzcG9zZSgpLHRoaXMuY29sb3JCdWZmZXIuZGlzcG9zZSgpLHRoaXMu aWRCdWZmZXIuZGlzcG9zZSgpLHRoaXMucGxvdC5yZW1vdmVPYmplY3QodGhp cyl9fSx7Ii4vbGliL3NoYWRlcnMiOjI1NSwiYmluYXJ5LXNlYXJjaC1ib3Vu ZHMiOjI1NiwiZ2wtYnVmZmVyIjoyNDQsImdsLXNoYWRlciI6MzA0LCJpb3Rh LWFycmF5Ijo0MTgsInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sMjU1OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsc2xpZnkiKTtl LmV4cG9ydHM9e2ZyYWdtZW50Om4oWyJwcmVjaXNpb24gbG93cCBmbG9hdDtc biNkZWZpbmUgR0xTTElGWSAxXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xu dm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZyYWdDb2xv ci5yZ2IgKiBmcmFnQ29sb3IuYSwgZnJhZ0NvbG9yLmEpO1xufVxuIl0pLHZl cnRleDpuKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdM U0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbmF0dHJpYnV0 ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgd2VpZ2h0O1xuXG51bmlm b3JtIHZlYzIgc2hhcGU7XG51bmlmb3JtIG1hdDMgdmlld1RyYW5zZm9ybTtc blxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xu ICB2ZWMzIHZQb3NpdGlvbiA9IHZpZXdUcmFuc2Zvcm0gKiB2ZWMzKCBwb3Np dGlvbiArICh3ZWlnaHQtLjUpLyhzaGFwZS0xLikgLCAxLjApO1xuICBmcmFn Q29sb3IgPSBjb2xvcjtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZQb3NpdGlv bi54eSwgMCwgdlBvc2l0aW9uLnopO1xufVxuIl0pLHBpY2tGcmFnbWVudDpu KFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkg MVxuXG52YXJ5aW5nIHZlYzQgZnJhZ0lkO1xudmFyeWluZyB2ZWMyIHZXZWln aHQ7XG5cbnVuaWZvcm0gdmVjMiBzaGFwZTtcbnVuaWZvcm0gdmVjNCBwaWNr T2Zmc2V0O1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzIgZCA9IHN0ZXAoLjUs IHZXZWlnaHQpO1xuICB2ZWM0IGlkID0gZnJhZ0lkICsgcGlja09mZnNldDtc biAgaWQueCArPSBkLnggKyBkLnkqc2hhcGUueDtcblxuICBpZC55ICs9IGZs b29yKGlkLnggLyAyNTYuMCk7XG4gIGlkLnggLT0gZmxvb3IoaWQueCAvIDI1 Ni4wKSAqIDI1Ni4wO1xuXG4gIGlkLnogKz0gZmxvb3IoaWQueSAvIDI1Ni4w KTtcbiAgaWQueSAtPSBmbG9vcihpZC55IC8gMjU2LjApICogMjU2LjA7XG5c biAgaWQudyArPSBmbG9vcihpZC56IC8gMjU2LjApO1xuICBpZC56IC09IGZs b29yKGlkLnogLyAyNTYuMCkgKiAyNTYuMDtcblxuICBnbF9GcmFnQ29sb3Ig PSBpZC8yNTUuO1xufVxuIl0pLHBpY2tWZXJ0ZXg6bihbInByZWNpc2lvbiBt ZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRl IHZlYzIgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjNCBwaWNrSWQ7XG5hdHRy aWJ1dGUgdmVjMiB3ZWlnaHQ7XG5cbnVuaWZvcm0gdmVjMiBzaGFwZTtcbnVu aWZvcm0gbWF0MyB2aWV3VHJhbnNmb3JtO1xuXG52YXJ5aW5nIHZlYzQgZnJh Z0lkO1xudmFyeWluZyB2ZWMyIHZXZWlnaHQ7XG5cbnZvaWQgbWFpbigpIHtc biAgdldlaWdodCA9IHdlaWdodDtcblxuICBmcmFnSWQgPSBwaWNrSWQ7XG5c biAgdmVjMyB2UG9zaXRpb24gPSB2aWV3VHJhbnNmb3JtICogdmVjMyggcG9z aXRpb24gKyAod2VpZ2h0LS41KS8oc2hhcGUtMS4pICwgMS4wKTtcbiAgZ2xf UG9zaXRpb24gPSB2ZWM0KHZQb3NpdGlvbi54eSwgMCwgdlBvc2l0aW9uLnop O1xufVxuIl0pfX0se2dsc2xpZnk6NDExfV0sMjU2OltmdW5jdGlvbih0LGUs cil7YXJndW1lbnRzWzRdWzExM11bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7 ZHVwOjExM31dLDI1NzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImdsc2xp ZnkiKSxhPXQoImdsLXNoYWRlciIpLGk9bihbInByZWNpc2lvbiBoaWdocCBm bG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBv c2l0aW9uLCBuZXh0UG9zaXRpb247XG5hdHRyaWJ1dGUgZmxvYXQgYXJjTGVu Z3RoLCBsaW5lV2lkdGg7XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcblxudW5p Zm9ybSB2ZWMyIHNjcmVlblNoYXBlO1xudW5pZm9ybSBmbG9hdCBwaXhlbFJh dGlvO1xudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xu XG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xudmFyeWluZyB2ZWMzIHdvcmxk UG9zaXRpb247XG52YXJ5aW5nIGZsb2F0IHBpeGVsQXJjTGVuZ3RoO1xuXG52 ZWM0IHByb2plY3QodmVjMyBwKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uICog dmlldyAqIG1vZGVsICogdmVjNChwLCAxLjApO1xufVxuXG52b2lkIG1haW4o KSB7XG4gIHZlYzQgc3RhcnRQb2ludCA9IHByb2plY3QocG9zaXRpb24pO1xu ICB2ZWM0IGVuZFBvaW50ICAgPSBwcm9qZWN0KG5leHRQb3NpdGlvbik7XG5c biAgdmVjMiBBID0gc3RhcnRQb2ludC54eSAvIHN0YXJ0UG9pbnQudztcbiAg dmVjMiBCID0gICBlbmRQb2ludC54eSAvICAgZW5kUG9pbnQudztcblxuICBm bG9hdCBjbGlwQW5nbGUgPSBhdGFuKFxuICAgIChCLnkgLSBBLnkpICogc2Ny ZWVuU2hhcGUueSxcbiAgICAoQi54IC0gQS54KSAqIHNjcmVlblNoYXBlLnhc biAgKTtcblxuICB2ZWMyIG9mZnNldCA9IDAuNSAqIHBpeGVsUmF0aW8gKiBs aW5lV2lkdGggKiB2ZWMyKFxuICAgIHNpbihjbGlwQW5nbGUpLFxuICAgIC1j b3MoY2xpcEFuZ2xlKVxuICApIC8gc2NyZWVuU2hhcGU7XG5cbiAgZ2xfUG9z aXRpb24gPSB2ZWM0KHN0YXJ0UG9pbnQueHkgKyBzdGFydFBvaW50LncgKiBv ZmZzZXQsIHN0YXJ0UG9pbnQuencpO1xuXG4gIHdvcmxkUG9zaXRpb24gPSBw b3NpdGlvbjtcbiAgcGl4ZWxBcmNMZW5ndGggPSBhcmNMZW5ndGg7XG4gIGZy YWdDb2xvciA9IGNvbG9yO1xufVxuIl0pLG89bihbInByZWNpc2lvbiBoaWdo cCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5n ZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAg PiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7 XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBw KSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxu ICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5i b29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICBy ZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAg ICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5n ZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJh bmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMg ICAgICBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBzYW1wbGVyMkQgZGFzaFRl eHR1cmU7XG51bmlmb3JtIGZsb2F0ICAgICBkYXNoU2NhbGU7XG51bmlmb3Jt IGZsb2F0ICAgICBvcGFjaXR5O1xuXG52YXJ5aW5nIHZlYzMgICAgd29ybGRQ b3NpdGlvbjtcbnZhcnlpbmcgZmxvYXQgICBwaXhlbEFyY0xlbmd0aDtcbnZh cnlpbmcgdmVjNCAgICBmcmFnQ29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAg aWYgKFxuICAgIG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5k c1sxXSwgd29ybGRQb3NpdGlvbikgfHxcbiAgICBmcmFnQ29sb3IuYSAqIG9w YWNpdHkgPT0gMC5cbiAgKSBkaXNjYXJkO1xuXG4gIGZsb2F0IGRhc2hXZWln aHQgPSB0ZXh0dXJlMkQoZGFzaFRleHR1cmUsIHZlYzIoZGFzaFNjYWxlICog cGl4ZWxBcmNMZW5ndGgsIDApKS5yO1xuICBpZihkYXNoV2VpZ2h0IDwgMC41 KSB7XG4gICAgZGlzY2FyZDtcbiAgfVxuICBnbF9GcmFnQ29sb3IgPSBmcmFn Q29sb3IgKiBvcGFjaXR5O1xufVxuIl0pLHM9bihbInByZWNpc2lvbiBoaWdo cCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbiNkZWZpbmUgRkxPQVRf TUFYICAxLjcwMTQxMTg0ZTM4XG4jZGVmaW5lIEZMT0FUX01JTiAgMS4xNzU0 OTQzNWUtMzhcblxubG93cCB2ZWM0IGVuY29kZV9mbG9hdF8xNTQwMjU5MTMw KGhpZ2hwIGZsb2F0IHYpIHtcbiAgaGlnaHAgZmxvYXQgYXYgPSBhYnModik7 XG5cbiAgLy9IYW5kbGUgc3BlY2lhbCBjYXNlc1xuICBpZihhdiA8IEZMT0FU X01JTikge1xuICAgIHJldHVybiB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7 XG4gIH0gZWxzZSBpZih2ID4gRkxPQVRfTUFYKSB7XG4gICAgcmV0dXJuIHZl YzQoMTI3LjAsIDEyOC4wLCAwLjAsIDAuMCkgLyAyNTUuMDtcbiAgfSBlbHNl IGlmKHYgPCAtRkxPQVRfTUFYKSB7XG4gICAgcmV0dXJuIHZlYzQoMjU1LjAs IDEyOC4wLCAwLjAsIDAuMCkgLyAyNTUuMDtcbiAgfVxuXG4gIGhpZ2hwIHZl YzQgYyA9IHZlYzQoMCwwLDAsMCk7XG5cbiAgLy9Db21wdXRlIGV4cG9uZW50 IGFuZCBtYW50aXNzYVxuICBoaWdocCBmbG9hdCBlID0gZmxvb3IobG9nMihh dikpO1xuICBoaWdocCBmbG9hdCBtID0gYXYgKiBwb3coMi4wLCAtZSkgLSAx LjA7XG4gIFxuICAvL1VucGFjayBtYW50aXNzYVxuICBjWzFdID0gZmxvb3Io MTI4LjAgKiBtKTtcbiAgbSAtPSBjWzFdIC8gMTI4LjA7XG4gIGNbMl0gPSBm bG9vcigzMjc2OC4wICogbSk7XG4gIG0gLT0gY1syXSAvIDMyNzY4LjA7XG4g IGNbM10gPSBmbG9vcig4Mzg4NjA4LjAgKiBtKTtcbiAgXG4gIC8vVW5wYWNr IGV4cG9uZW50XG4gIGhpZ2hwIGZsb2F0IGViaWFzID0gZSArIDEyNy4wO1xu ICBjWzBdID0gZmxvb3IoZWJpYXMgLyAyLjApO1xuICBlYmlhcyAtPSBjWzBd ICogMi4wO1xuICBjWzFdICs9IGZsb29yKGViaWFzKSAqIDEyOC4wOyBcblxu ICAvL1VucGFjayBzaWduIGJpdFxuICBjWzBdICs9IDEyOC4wICogc3RlcCgw LjAsIC12KTtcblxuICAvL1NjYWxlIGJhY2sgdG8gcmFuZ2VcbiAgcmV0dXJu IGMgLyAyNTUuMDtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZs b2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkg fHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBv dXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJu IChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5n ZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZS YW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2Uo YS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueiwg Yi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVj NCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIu eHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gZmxvYXQgcGlja0lkO1xudW5p Zm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG5cbnZhcnlpbmcgdmVjMyB3b3Js ZFBvc2l0aW9uO1xudmFyeWluZyBmbG9hdCBwaXhlbEFyY0xlbmd0aDtcbnZh cnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYg KG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgd29y bGRQb3NpdGlvbikpIGRpc2NhcmQ7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gdmVj NChwaWNrSWQvMjU1LjAsIGVuY29kZV9mbG9hdF8xNTQwMjU5MTMwKHBpeGVs QXJjTGVuZ3RoKS54eXopO1xufSJdKSxsPVt7bmFtZToicG9zaXRpb24iLHR5 cGU6InZlYzMifSx7bmFtZToibmV4dFBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0s e25hbWU6ImFyY0xlbmd0aCIsdHlwZToiZmxvYXQifSx7bmFtZToibGluZVdp ZHRoIix0eXBlOiJmbG9hdCJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjNCJ9 XTtyLmNyZWF0ZVNoYWRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYSh0LGksbyxu dWxsLGwpfSxyLmNyZWF0ZVBpY2tTaGFkZXI9ZnVuY3Rpb24odCl7cmV0dXJu IGEodCxpLHMsbnVsbCxsKX19LHsiZ2wtc2hhZGVyIjozMDQsZ2xzbGlmeTo0 MTF9XSwyNTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBv cnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2x8fHQuc2NlbmUmJnQuc2NlbmUu Z2wscj11KGUpO3IuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLHIu YXR0cmlidXRlcy5uZXh0UG9zaXRpb24ubG9jYXRpb249MSxyLmF0dHJpYnV0 ZXMuYXJjTGVuZ3RoLmxvY2F0aW9uPTIsci5hdHRyaWJ1dGVzLmxpbmVXaWR0 aC5sb2NhdGlvbj0zLHIuYXR0cmlidXRlcy5jb2xvci5sb2NhdGlvbj00O3Zh ciBvPWgoZSk7by5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsby5h dHRyaWJ1dGVzLm5leHRQb3NpdGlvbi5sb2NhdGlvbj0xLG8uYXR0cmlidXRl cy5hcmNMZW5ndGgubG9jYXRpb249MixvLmF0dHJpYnV0ZXMubGluZVdpZHRo LmxvY2F0aW9uPTMsby5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTQ7Zm9y KHZhciBzPW4oZSksYz1hKGUsW3tidWZmZXI6cyxzaXplOjMsb2Zmc2V0OjAs c3RyaWRlOjQ4fSx7YnVmZmVyOnMsc2l6ZTozLG9mZnNldDoxMixzdHJpZGU6 NDh9LHtidWZmZXI6cyxzaXplOjEsb2Zmc2V0OjI0LHN0cmlkZTo0OH0se2J1 ZmZlcjpzLHNpemU6MSxvZmZzZXQ6Mjgsc3RyaWRlOjQ4fSx7YnVmZmVyOnMs c2l6ZTo0LG9mZnNldDozMixzdHJpZGU6NDh9XSksZj1sKG5ldyBBcnJheSgx MDI0KSxbMjU2LDEsNF0pLHA9MDtwPDEwMjQ7KytwKWYuZGF0YVtwXT0yNTU7 dmFyIGQ9aShlLGYpO2Qud3JhcD1lLlJFUEVBVDt2YXIgZz1uZXcgdihlLHIs byxzLGMsZCk7cmV0dXJuIGcudXBkYXRlKHQpLGd9O3ZhciBuPXQoImdsLWJ1 ZmZlciIpLGE9dCgiZ2wtdmFvIiksaT10KCJnbC10ZXh0dXJlMmQiKSxvPXQo Imdsc2wtcmVhZC1mbG9hdCIpLHM9dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMi KSxsPXQoIm5kYXJyYXkiKSxjPXQoIi4vbGliL3NoYWRlcnMiKSx1PWMuY3Jl YXRlU2hhZGVyLGg9Yy5jcmVhdGVQaWNrU2hhZGVyLGY9WzEsMCwwLDAsMCwx LDAsMCwwLDAsMSwwLDAsMCwwLDFdO2Z1bmN0aW9uIHAodCxlKXtmb3IodmFy IHI9MCxuPTA7bjwzOysrbil7dmFyIGE9dFtuXS1lW25dO3IrPWEqYX1yZXR1 cm4gTWF0aC5zcXJ0KHIpfWZ1bmN0aW9uIGQodCl7Zm9yKHZhciBlPVtbLTFl NiwtMWU2LC0xZTZdLFsxZTYsMWU2LDFlNl1dLHI9MDtyPDM7KytyKWVbMF1b cl09TWF0aC5tYXgodFswXVtyXSxlWzBdW3JdKSxlWzFdW3JdPU1hdGgubWlu KHRbMV1bcl0sZVsxXVtyXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZyh0LGUscixu KXt0aGlzLmFyY0xlbmd0aD10LHRoaXMucG9zaXRpb249ZSx0aGlzLmluZGV4 PXIsdGhpcy5kYXRhQ29vcmRpbmF0ZT1ufWZ1bmN0aW9uIHYodCxlLHIsbixh LGkpe3RoaXMuZ2w9dCx0aGlzLnNoYWRlcj1lLHRoaXMucGlja1NoYWRlcj1y LHRoaXMuYnVmZmVyPW4sdGhpcy52YW89YSx0aGlzLmNsaXBCb3VuZHM9W1st MS8wLC0xLzAsLTEvMF0sWzEvMCwxLzAsMS8wXV0sdGhpcy5wb2ludHM9W10s dGhpcy5hcmNMZW5ndGg9W10sdGhpcy52ZXJ0ZXhDb3VudD0wLHRoaXMuYm91 bmRzPVtbMCwwLDBdLFswLDAsMF1dLHRoaXMucGlja0lkPTAsdGhpcy5saW5l V2lkdGg9MSx0aGlzLnRleHR1cmU9aSx0aGlzLmRhc2hTY2FsZT0xLHRoaXMu b3BhY2l0eT0xLHRoaXMuaGFzQWxwaGE9ITEsdGhpcy5kaXJ0eT0hMCx0aGlz LnBpeGVsUmF0aW89MX12YXIgbT12LnByb3RvdHlwZTttLmlzVHJhbnNwYXJl bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNBbHBoYX0sbS5pc09wYXF1 ZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLmhhc0FscGhhfSxtLnBpY2tTbG90 cz0xLG0uc2V0UGlja0Jhc2U9ZnVuY3Rpb24odCl7dGhpcy5waWNrSWQ9dH0s bS5kcmF3VHJhbnNwYXJlbnQ9bS5kcmF3PWZ1bmN0aW9uKHQpe2lmKHRoaXMu dmVydGV4Q291bnQpe3ZhciBlPXRoaXMuZ2wscj10aGlzLnNoYWRlcixuPXRo aXMudmFvO3IuYmluZCgpLHIudW5pZm9ybXM9e21vZGVsOnQubW9kZWx8fGYs dmlldzp0LnZpZXd8fGYscHJvamVjdGlvbjp0LnByb2plY3Rpb258fGYsY2xp cEJvdW5kczpkKHRoaXMuY2xpcEJvdW5kcyksZGFzaFRleHR1cmU6dGhpcy50 ZXh0dXJlLmJpbmQoKSxkYXNoU2NhbGU6dGhpcy5kYXNoU2NhbGUvdGhpcy5h cmNMZW5ndGhbdGhpcy5hcmNMZW5ndGgubGVuZ3RoLTFdLG9wYWNpdHk6dGhp cy5vcGFjaXR5LHNjcmVlblNoYXBlOltlLmRyYXdpbmdCdWZmZXJXaWR0aCxl LmRyYXdpbmdCdWZmZXJIZWlnaHRdLHBpeGVsUmF0aW86dGhpcy5waXhlbFJh dGlvfSxuLmJpbmQoKSxuLmRyYXcoZS5UUklBTkdMRV9TVFJJUCx0aGlzLnZl cnRleENvdW50KSxuLnVuYmluZCgpfX0sbS5kcmF3UGljaz1mdW5jdGlvbih0 KXtpZih0aGlzLnZlcnRleENvdW50KXt2YXIgZT10aGlzLmdsLHI9dGhpcy5w aWNrU2hhZGVyLG49dGhpcy52YW87ci5iaW5kKCksci51bmlmb3Jtcz17bW9k ZWw6dC5tb2RlbHx8Zix2aWV3OnQudmlld3x8Zixwcm9qZWN0aW9uOnQucHJv amVjdGlvbnx8ZixwaWNrSWQ6dGhpcy5waWNrSWQsY2xpcEJvdW5kczpkKHRo aXMuY2xpcEJvdW5kcyksc2NyZWVuU2hhcGU6W2UuZHJhd2luZ0J1ZmZlcldp ZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF0scGl4ZWxSYXRpbzp0aGlzLnBp eGVsUmF0aW99LG4uYmluZCgpLG4uZHJhdyhlLlRSSUFOR0xFX1NUUklQLHRo aXMudmVydGV4Q291bnQpLG4udW5iaW5kKCl9fSxtLnVwZGF0ZT1mdW5jdGlv bih0KXt2YXIgZSxyO3RoaXMuZGlydHk9ITA7dmFyIG49ISF0LmNvbm5lY3RH YXBzOyJkYXNoU2NhbGUiaW4gdCYmKHRoaXMuZGFzaFNjYWxlPXQuZGFzaFNj YWxlKSx0aGlzLmhhc0FscGhhPSExLCJvcGFjaXR5ImluIHQmJih0aGlzLm9w YWNpdHk9K3Qub3BhY2l0eSx0aGlzLm9wYWNpdHk8MSYmKHRoaXMuaGFzQWxw aGE9ITApKTt2YXIgYT1bXSxpPVtdLG89W10sYz0wLHU9MCxoPVtbMS8wLDEv MCwxLzBdLFstMS8wLC0xLzAsLTEvMF1dLGY9dC5wb3NpdGlvbnx8dC5wb3Np dGlvbnM7aWYoZil7dmFyIGQ9dC5jb2xvcnx8dC5jb2xvcnN8fFswLDAsMCwx XSxnPXQubGluZVdpZHRofHwxLHY9ITE7dDpmb3IoZT0xO2U8Zi5sZW5ndGg7 KytlKXt2YXIgbSx5LHgsYj1mW2UtMV0sXz1mW2VdO2ZvcihpLnB1c2goYyks by5wdXNoKGIuc2xpY2UoKSkscj0wO3I8MzsrK3Ipe2lmKGlzTmFOKGJbcl0p fHxpc05hTihfW3JdKXx8IWlzRmluaXRlKGJbcl0pfHwhaXNGaW5pdGUoX1ty XSkpe2lmKCFuJiZhLmxlbmd0aD4wKXtmb3IodmFyIHc9MDt3PDI0Oysrdylh LnB1c2goYVthLmxlbmd0aC0xMl0pO3UrPTIsdj0hMH1jb250aW51ZSB0fWhb MF1bcl09TWF0aC5taW4oaFswXVtyXSxiW3JdLF9bcl0pLGhbMV1bcl09TWF0 aC5tYXgoaFsxXVtyXSxiW3JdLF9bcl0pfUFycmF5LmlzQXJyYXkoZFswXSk/ KG09ZC5sZW5ndGg+ZS0xP2RbZS0xXTpkLmxlbmd0aD4wP2RbZC5sZW5ndGgt MV06WzAsMCwwLDFdLHk9ZC5sZW5ndGg+ZT9kW2VdOmQubGVuZ3RoPjA/ZFtk Lmxlbmd0aC0xXTpbMCwwLDAsMV0pOm09eT1kLDM9PT1tLmxlbmd0aCYmKG09 W21bMF0sbVsxXSxtWzJdLDFdKSwzPT09eS5sZW5ndGgmJih5PVt5WzBdLHlb MV0seVsyXSwxXSksIXRoaXMuaGFzQWxwaGEmJm1bM108MSYmKHRoaXMuaGFz QWxwaGE9ITApLHg9QXJyYXkuaXNBcnJheShnKT9nLmxlbmd0aD5lLTE/Z1tl LTFdOmcubGVuZ3RoPjA/Z1tnLmxlbmd0aC0xXTpbMCwwLDAsMV06Zzt2YXIg az1jO2lmKGMrPXAoYixfKSx2KXtmb3Iocj0wO3I8MjsrK3IpYS5wdXNoKGJb MF0sYlsxXSxiWzJdLF9bMF0sX1sxXSxfWzJdLGsseCxtWzBdLG1bMV0sbVsy XSxtWzNdKTt1Kz0yLHY9ITF9YS5wdXNoKGJbMF0sYlsxXSxiWzJdLF9bMF0s X1sxXSxfWzJdLGsseCxtWzBdLG1bMV0sbVsyXSxtWzNdLGJbMF0sYlsxXSxi WzJdLF9bMF0sX1sxXSxfWzJdLGssLXgsbVswXSxtWzFdLG1bMl0sbVszXSxf WzBdLF9bMV0sX1syXSxiWzBdLGJbMV0sYlsyXSxjLC14LHlbMF0seVsxXSx5 WzJdLHlbM10sX1swXSxfWzFdLF9bMl0sYlswXSxiWzFdLGJbMl0sYyx4LHlb MF0seVsxXSx5WzJdLHlbM10pLHUrPTR9fWlmKHRoaXMuYnVmZmVyLnVwZGF0 ZShhKSxpLnB1c2goYyksby5wdXNoKGZbZi5sZW5ndGgtMV0uc2xpY2UoKSks dGhpcy5ib3VuZHM9aCx0aGlzLnZlcnRleENvdW50PXUsdGhpcy5wb2ludHM9 byx0aGlzLmFyY0xlbmd0aD1pLCJkYXNoZXMiaW4gdCl7dmFyIFQ9dC5kYXNo ZXMuc2xpY2UoKTtmb3IoVC51bnNoaWZ0KDApLGU9MTtlPFQubGVuZ3RoOysr ZSlUW2VdPVRbZS0xXStUW2VdO3ZhciBNPWwobmV3IEFycmF5KDEwMjQpLFsy NTYsMSw0XSk7Zm9yKGU9MDtlPDI1NjsrK2Upe2ZvcihyPTA7cjw0OysrcilN LnNldChlLDAsciwwKTsxJnMubGUoVCxUW1QubGVuZ3RoLTFdKmUvMjU1KT9N LnNldChlLDAsMCwwKTpNLnNldChlLDAsMCwyNTUpfXRoaXMudGV4dHVyZS5z ZXRQaXhlbHMoTSl9fSxtLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNoYWRl ci5kaXNwb3NlKCksdGhpcy52YW8uZGlzcG9zZSgpLHRoaXMuYnVmZmVyLmRp c3Bvc2UoKX0sbS5waWNrPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxs O2lmKHQuaWQhPT10aGlzLnBpY2tJZClyZXR1cm4gbnVsbDt2YXIgZT1vKHQu dmFsdWVbMF0sdC52YWx1ZVsxXSx0LnZhbHVlWzJdLDApLHI9cy5sZSh0aGlz LmFyY0xlbmd0aCxlKTtpZihyPDApcmV0dXJuIG51bGw7aWYocj09PXRoaXMu YXJjTGVuZ3RoLmxlbmd0aC0xKXJldHVybiBuZXcgZyh0aGlzLmFyY0xlbmd0 aFt0aGlzLmFyY0xlbmd0aC5sZW5ndGgtMV0sdGhpcy5wb2ludHNbdGhpcy5w b2ludHMubGVuZ3RoLTFdLnNsaWNlKCkscik7Zm9yKHZhciBuPXRoaXMucG9p bnRzW3JdLGE9dGhpcy5wb2ludHNbTWF0aC5taW4ocisxLHRoaXMucG9pbnRz Lmxlbmd0aC0xKV0saT0oZS10aGlzLmFyY0xlbmd0aFtyXSkvKHRoaXMuYXJj TGVuZ3RoW3IrMV0tdGhpcy5hcmNMZW5ndGhbcl0pLGw9MS1pLGM9WzAsMCww XSx1PTA7dTwzOysrdSljW3VdPWwqblt1XStpKmFbdV07dmFyIGg9TWF0aC5t aW4oaTwuNT9yOnIrMSx0aGlzLnBvaW50cy5sZW5ndGgtMSk7cmV0dXJuIG5l dyBnKGUsYyxoLHRoaXMucG9pbnRzW2hdKX19LHsiLi9saWIvc2hhZGVycyI6 MjU3LCJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MjU5LCJnbC1idWZmZXIiOjI0 NCwiZ2wtdGV4dHVyZTJkIjozMjQsImdsLXZhbyI6MzI5LCJnbHNsLXJlYWQt ZmxvYXQiOjQwMixuZGFycmF5OjQ1Mn1dLDI1OTpbZnVuY3Rpb24odCxlLHIp e2FyZ3VtZW50c1s0XVsxMTNdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0se2R1 cDoxMTN9XSwyNjA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxhPWVbMl0saT1lWzNdLG89cipp LWEqbjtyZXR1cm4gbz8obz0xL28sdFswXT1pKm8sdFsxXT0tbipvLHRbMl09 LWEqbyx0WzNdPXIqbyx0KTpudWxsfX0se31dLDI2MTpbZnVuY3Rpb24odCxl LHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFd LGE9ZVsyXSxpPWVbM10sbz1lWzRdLHM9ZVs1XSxsPWVbNl0sYz1lWzddLHU9 ZVs4XSxoPXUqby1zKmMsZj0tdSppK3MqbCxwPWMqaS1vKmwsZD1yKmgrbipm K2EqcDtyZXR1cm4gZD8oZD0xL2QsdFswXT1oKmQsdFsxXT0oLXUqbithKmMp KmQsdFsyXT0ocypuLWEqbykqZCx0WzNdPWYqZCx0WzRdPSh1KnItYSpsKSpk LHRbNV09KC1zKnIrYSppKSpkLHRbNl09cCpkLHRbN109KC1jKnIrbipsKSpk LHRbOF09KG8qci1uKmkpKmQsdCk6bnVsbH19LHt9XSwyNjI6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEZsb2F0 MzJBcnJheSgxNik7cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10 WzJdLGVbM109dFszXSxlWzRdPXRbNF0sZVs1XT10WzVdLGVbNl09dFs2XSxl WzddPXRbN10sZVs4XT10WzhdLGVbOV09dFs5XSxlWzEwXT10WzEwXSxlWzEx XT10WzExXSxlWzEyXT10WzEyXSxlWzEzXT10WzEzXSxlWzE0XT10WzE0XSxl WzE1XT10WzE1XSxlfX0se31dLDI2MzpbZnVuY3Rpb24odCxlLHIpe2UuZXhw b3J0cz1mdW5jdGlvbigpe3ZhciB0PW5ldyBGbG9hdDMyQXJyYXkoMTYpO3Jl dHVybiB0WzBdPTEsdFsxXT0wLHRbMl09MCx0WzNdPTAsdFs0XT0wLHRbNV09 MSx0WzZdPTAsdFs3XT0wLHRbOF09MCx0WzldPTAsdFsxMF09MSx0WzExXT0w LHRbMTJdPTAsdFsxM109MCx0WzE0XT0wLHRbMTVdPTEsdH19LHt9XSwyNjQ6 W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9 dFswXSxyPXRbMV0sbj10WzJdLGE9dFszXSxpPXRbNF0sbz10WzVdLHM9dFs2 XSxsPXRbN10sYz10WzhdLHU9dFs5XSxoPXRbMTBdLGY9dFsxMV0scD10WzEy XSxkPXRbMTNdLGc9dFsxNF0sdj10WzE1XTtyZXR1cm4oZSpvLXIqaSkqKGgq di1mKmcpLShlKnMtbippKSoodSp2LWYqZCkrKGUqbC1hKmkpKih1KmctaCpk KSsocipzLW4qbykqKGMqdi1mKnApLShyKmwtYSpvKSooYypnLWgqcCkrKG4q bC1hKnMpKihjKmQtdSpwKX19LHt9XSwyNjU6W2Z1bmN0aW9uKHQsZSxyKXtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxhPWVb Ml0saT1lWzNdLG89cityLHM9bituLGw9YSthLGM9cipvLHU9bipvLGg9bipz LGY9YSpvLHA9YSpzLGQ9YSpsLGc9aSpvLHY9aSpzLG09aSpsO3JldHVybiB0 WzBdPTEtaC1kLHRbMV09dSttLHRbMl09Zi12LHRbM109MCx0WzRdPXUtbSx0 WzVdPTEtYy1kLHRbNl09cCtnLHRbN109MCx0WzhdPWYrdix0WzldPXAtZyx0 WzEwXT0xLWMtaCx0WzExXT0wLHRbMTJdPTAsdFsxM109MCx0WzE0XT0wLHRb MTVdPTEsdH19LHt9XSwyNjY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0sYT1lWzFdLGk9ZVsyXSxvPWVb M10scz1uK24sbD1hK2EsYz1pK2ksdT1uKnMsaD1uKmwsZj1uKmMscD1hKmws ZD1hKmMsZz1pKmMsdj1vKnMsbT1vKmwseT1vKmM7cmV0dXJuIHRbMF09MS0o cCtnKSx0WzFdPWgreSx0WzJdPWYtbSx0WzNdPTAsdFs0XT1oLXksdFs1XT0x LSh1K2cpLHRbNl09ZCt2LHRbN109MCx0WzhdPWYrbSx0WzldPWQtdix0WzEw XT0xLSh1K3ApLHRbMTFdPTAsdFsxMl09clswXSx0WzEzXT1yWzFdLHRbMTRd PXJbMl0sdFsxNV09MSx0fX0se31dLDI2NzpbZnVuY3Rpb24odCxlLHIpe2Uu ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT0xLHRbMV09MCx0WzJd PTAsdFszXT0wLHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0WzhdPTAs dFs5XT0wLHRbMTBdPTEsdFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09 MCx0WzE1XT0xLHR9fSx7fV0sMjY4OltmdW5jdGlvbih0LGUscil7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0sYT1lWzJdLGk9 ZVszXSxvPWVbNF0scz1lWzVdLGw9ZVs2XSxjPWVbN10sdT1lWzhdLGg9ZVs5 XSxmPWVbMTBdLHA9ZVsxMV0sZD1lWzEyXSxnPWVbMTNdLHY9ZVsxNF0sbT1l WzE1XSx5PXIqcy1uKm8seD1yKmwtYSpvLGI9cipjLWkqbyxfPW4qbC1hKnMs dz1uKmMtaSpzLGs9YSpjLWkqbCxUPXUqZy1oKmQsTT11KnYtZipkLEE9dSpt LXAqZCxTPWgqdi1mKmcsRT1oKm0tcCpnLEw9ZiptLXAqdixDPXkqTC14KkUr YipTK18qQS13Kk0raypUO2lmKCFDKXJldHVybiBudWxsO3JldHVybiBDPTEv Qyx0WzBdPShzKkwtbCpFK2MqUykqQyx0WzFdPShhKkUtbipMLWkqUykqQyx0 WzJdPShnKmstdip3K20qXykqQyx0WzNdPShmKnctaCprLXAqXykqQyx0WzRd PShsKkEtbypMLWMqTSkqQyx0WzVdPShyKkwtYSpBK2kqTSkqQyx0WzZdPSh2 KmItZCprLW0qeCkqQyx0WzddPSh1KmstZipiK3AqeCkqQyx0WzhdPShvKkUt cypBK2MqVCkqQyx0WzldPShuKkEtcipFLWkqVCkqQyx0WzEwXT0oZCp3LWcq YittKnkpKkMsdFsxMV09KGgqYi11KnctcCp5KSpDLHRbMTJdPShzKk0tbypT LWwqVCkqQyx0WzEzXT0ocipTLW4qTSthKlQpKkMsdFsxNF09KGcqeC1kKl8t dip5KSpDLHRbMTVdPSh1Kl8taCp4K2YqeSkqQyx0fX0se31dLDI2OTpbZnVu Y3Rpb24odCxlLHIpe3ZhciBuPXQoIi4vaWRlbnRpdHkiKTtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGksbyxzLGwsYyx1LGgsZixwLGQsZz1l WzBdLHY9ZVsxXSxtPWVbMl0seT1hWzBdLHg9YVsxXSxiPWFbMl0sXz1yWzBd LHc9clsxXSxrPXJbMl07aWYoTWF0aC5hYnMoZy1fKTwxZS02JiZNYXRoLmFi cyh2LXcpPDFlLTYmJk1hdGguYWJzKG0tayk8MWUtNilyZXR1cm4gbih0KTto PWctXyxmPXYtdyxwPW0tayxkPTEvTWF0aC5zcXJ0KGgqaCtmKmYrcCpwKSxp PXgqKHAqPWQpLWIqKGYqPWQpLG89YiooaCo9ZCkteSpwLHM9eSpmLXgqaCwo ZD1NYXRoLnNxcnQoaSppK28qbytzKnMpKT8oaSo9ZD0xL2Qsbyo9ZCxzKj1k KTooaT0wLG89MCxzPTApO2w9ZipzLXAqbyxjPXAqaS1oKnMsdT1oKm8tZipp LChkPU1hdGguc3FydChsKmwrYypjK3UqdSkpPyhsKj1kPTEvZCxjKj1kLHUq PWQpOihsPTAsYz0wLHU9MCk7cmV0dXJuIHRbMF09aSx0WzFdPWwsdFsyXT1o LHRbM109MCx0WzRdPW8sdFs1XT1jLHRbNl09Zix0WzddPTAsdFs4XT1zLHRb OV09dSx0WzEwXT1wLHRbMTFdPTAsdFsxMl09LShpKmcrbyp2K3MqbSksdFsx M109LShsKmcrYyp2K3UqbSksdFsxNF09LShoKmcrZip2K3AqbSksdFsxNV09 MSx0fX0seyIuL2lkZW50aXR5IjoyNjd9XSwyNzA6W2Z1bmN0aW9uKHQsZSxy KXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0sYT1lWzFd LGk9ZVsyXSxvPWVbM10scz1lWzRdLGw9ZVs1XSxjPWVbNl0sdT1lWzddLGg9 ZVs4XSxmPWVbOV0scD1lWzEwXSxkPWVbMTFdLGc9ZVsxMl0sdj1lWzEzXSxt PWVbMTRdLHk9ZVsxNV0seD1yWzBdLGI9clsxXSxfPXJbMl0sdz1yWzNdO3Jl dHVybiB0WzBdPXgqbitiKnMrXypoK3cqZyx0WzFdPXgqYStiKmwrXypmK3cq dix0WzJdPXgqaStiKmMrXypwK3cqbSx0WzNdPXgqbytiKnUrXypkK3cqeSx4 PXJbNF0sYj1yWzVdLF89cls2XSx3PXJbN10sdFs0XT14Km4rYipzK18qaCt3 KmcsdFs1XT14KmErYipsK18qZit3KnYsdFs2XT14KmkrYipjK18qcCt3Km0s dFs3XT14Km8rYip1K18qZCt3KnkseD1yWzhdLGI9cls5XSxfPXJbMTBdLHc9 clsxMV0sdFs4XT14Km4rYipzK18qaCt3KmcsdFs5XT14KmErYipsK18qZit3 KnYsdFsxMF09eCppK2IqYytfKnArdyptLHRbMTFdPXgqbytiKnUrXypkK3cq eSx4PXJbMTJdLGI9clsxM10sXz1yWzE0XSx3PXJbMTVdLHRbMTJdPXgqbiti KnMrXypoK3cqZyx0WzEzXT14KmErYipsK18qZit3KnYsdFsxNF09eCppK2Iq YytfKnArdyptLHRbMTVdPXgqbytiKnUrXypkK3cqeSx0fX0se31dLDI3MTpb ZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGEs aSxvKXt2YXIgcz0xLyhlLXIpLGw9MS8obi1hKSxjPTEvKGktbyk7cmV0dXJu IHRbMF09LTIqcyx0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT0t MipsLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0yKmMsdFsx MV09MCx0WzEyXT0oZStyKSpzLHRbMTNdPShhK24pKmwsdFsxNF09KG8raSkq Yyx0WzE1XT0xLHR9fSx7fV0sMjcyOltmdW5jdGlvbih0LGUscil7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9MS9NYXRoLnRhbihlLzIp LG89MS8obi1hKTtyZXR1cm4gdFswXT1pL3IsdFsxXT0wLHRbMl09MCx0WzNd PTAsdFs0XT0wLHRbNV09aSx0WzZdPTAsdFs3XT0wLHRbOF09MCx0WzldPTAs dFsxMF09KGErbikqbyx0WzExXT0tMSx0WzEyXT0wLHRbMTNdPTAsdFsxNF09 MiphKm4qbyx0WzE1XT0wLHR9fSx7fV0sMjczOltmdW5jdGlvbih0LGUscil7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGksbyxzLGwsYyx1 LGgsZixwLGQsZyx2LG0seSx4LGIsXyx3LGssVCxNLEEsUyxFPW5bMF0sTD1u WzFdLEM9blsyXSxQPU1hdGguc3FydChFKkUrTCpMK0MqQyk7aWYoTWF0aC5h YnMoUCk8MWUtNilyZXR1cm4gbnVsbDtFKj1QPTEvUCxMKj1QLEMqPVAsYT1N YXRoLnNpbihyKSxpPU1hdGguY29zKHIpLG89MS1pLHM9ZVswXSxsPWVbMV0s Yz1lWzJdLHU9ZVszXSxoPWVbNF0sZj1lWzVdLHA9ZVs2XSxkPWVbN10sZz1l WzhdLHY9ZVs5XSxtPWVbMTBdLHk9ZVsxMV0seD1FKkUqbytpLGI9TCpFKm8r QyphLF89QypFKm8tTCphLHc9RSpMKm8tQyphLGs9TCpMKm8raSxUPUMqTCpv K0UqYSxNPUUqQypvK0wqYSxBPUwqQypvLUUqYSxTPUMqQypvK2ksdFswXT1z KngraCpiK2cqXyx0WzFdPWwqeCtmKmIrdipfLHRbMl09Yyp4K3AqYittKl8s dFszXT11KngrZCpiK3kqXyx0WzRdPXMqdytoKmsrZypULHRbNV09bCp3K2Yq ayt2KlQsdFs2XT1jKncrcCprK20qVCx0WzddPXUqdytkKmsreSpULHRbOF09 cypNK2gqQStnKlMsdFs5XT1sKk0rZipBK3YqUyx0WzEwXT1jKk0rcCpBK20q Uyx0WzExXT11Kk0rZCpBK3kqUyxlIT09dCYmKHRbMTJdPWVbMTJdLHRbMTNd PWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdKTtyZXR1cm4gdH19LHt9 XSwyNzQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIpe3ZhciBuPU1hdGguc2luKHIpLGE9TWF0aC5jb3MociksaT1lWzRdLG89 ZVs1XSxzPWVbNl0sbD1lWzddLGM9ZVs4XSx1PWVbOV0saD1lWzEwXSxmPWVb MTFdO2UhPT10JiYodFswXT1lWzBdLHRbMV09ZVsxXSx0WzJdPWVbMl0sdFsz XT1lWzNdLHRbMTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRb MTVdPWVbMTVdKTtyZXR1cm4gdFs0XT1pKmErYypuLHRbNV09byphK3Uqbix0 WzZdPXMqYStoKm4sdFs3XT1sKmErZipuLHRbOF09YyphLWkqbix0WzldPXUq YS1vKm4sdFsxMF09aCphLXMqbix0WzExXT1mKmEtbCpuLHR9fSx7fV0sMjc1 OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj1NYXRoLnNpbihyKSxhPU1hdGguY29zKHIpLGk9ZVswXSxvPWVbMV0s cz1lWzJdLGw9ZVszXSxjPWVbOF0sdT1lWzldLGg9ZVsxMF0sZj1lWzExXTtl IT09dCYmKHRbNF09ZVs0XSx0WzVdPWVbNV0sdFs2XT1lWzZdLHRbN109ZVs3 XSx0WzEyXT1lWzEyXSx0WzEzXT1lWzEzXSx0WzE0XT1lWzE0XSx0WzE1XT1l WzE1XSk7cmV0dXJuIHRbMF09aSphLWMqbix0WzFdPW8qYS11Km4sdFsyXT1z KmEtaCpuLHRbM109bCphLWYqbix0WzhdPWkqbitjKmEsdFs5XT1vKm4rdSph LHRbMTBdPXMqbitoKmEsdFsxMV09bCpuK2YqYSx0fX0se31dLDI3NjpbZnVu Y3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49 TWF0aC5zaW4ociksYT1NYXRoLmNvcyhyKSxpPWVbMF0sbz1lWzFdLHM9ZVsy XSxsPWVbM10sYz1lWzRdLHU9ZVs1XSxoPWVbNl0sZj1lWzddO2UhPT10JiYo dFs4XT1lWzhdLHRbOV09ZVs5XSx0WzEwXT1lWzEwXSx0WzExXT1lWzExXSx0 WzEyXT1lWzEyXSx0WzEzXT1lWzEzXSx0WzE0XT1lWzE0XSx0WzE1XT1lWzE1 XSk7cmV0dXJuIHRbMF09aSphK2Mqbix0WzFdPW8qYSt1Km4sdFsyXT1zKmEr aCpuLHRbM109bCphK2Yqbix0WzRdPWMqYS1pKm4sdFs1XT11KmEtbypuLHRb Nl09aCphLXMqbix0WzddPWYqYS1sKm4sdH19LHt9XSwyNzc6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXJbMF0s YT1yWzFdLGk9clsyXTtyZXR1cm4gdFswXT1lWzBdKm4sdFsxXT1lWzFdKm4s dFsyXT1lWzJdKm4sdFszXT1lWzNdKm4sdFs0XT1lWzRdKmEsdFs1XT1lWzVd KmEsdFs2XT1lWzZdKmEsdFs3XT1lWzddKmEsdFs4XT1lWzhdKmksdFs5XT1l WzldKmksdFsxMF09ZVsxMF0qaSx0WzExXT1lWzExXSppLHRbMTJdPWVbMTJd LHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdLHR9fSx7fV0s Mjc4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy KXt2YXIgbixhLGksbyxzLGwsYyx1LGgsZixwLGQsZz1yWzBdLHY9clsxXSxt PXJbMl07ZT09PXQ/KHRbMTJdPWVbMF0qZytlWzRdKnYrZVs4XSptK2VbMTJd LHRbMTNdPWVbMV0qZytlWzVdKnYrZVs5XSptK2VbMTNdLHRbMTRdPWVbMl0q ZytlWzZdKnYrZVsxMF0qbStlWzE0XSx0WzE1XT1lWzNdKmcrZVs3XSp2K2Vb MTFdKm0rZVsxNV0pOihuPWVbMF0sYT1lWzFdLGk9ZVsyXSxvPWVbM10scz1l WzRdLGw9ZVs1XSxjPWVbNl0sdT1lWzddLGg9ZVs4XSxmPWVbOV0scD1lWzEw XSxkPWVbMTFdLHRbMF09bix0WzFdPWEsdFsyXT1pLHRbM109byx0WzRdPXMs dFs1XT1sLHRbNl09Yyx0WzddPXUsdFs4XT1oLHRbOV09Zix0WzEwXT1wLHRb MTFdPWQsdFsxMl09bipnK3MqditoKm0rZVsxMl0sdFsxM109YSpnK2wqditm Km0rZVsxM10sdFsxNF09aSpnK2MqditwKm0rZVsxNF0sdFsxNV09bypnK3Uq ditkKm0rZVsxNV0pO3JldHVybiB0fX0se31dLDI3OTpbZnVuY3Rpb24odCxl LHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHQ9PT1lKXt2YXIgcj1l WzFdLG49ZVsyXSxhPWVbM10saT1lWzZdLG89ZVs3XSxzPWVbMTFdO3RbMV09 ZVs0XSx0WzJdPWVbOF0sdFszXT1lWzEyXSx0WzRdPXIsdFs2XT1lWzldLHRb N109ZVsxM10sdFs4XT1uLHRbOV09aSx0WzExXT1lWzE0XSx0WzEyXT1hLHRb MTNdPW8sdFsxNF09c31lbHNlIHRbMF09ZVswXSx0WzFdPWVbNF0sdFsyXT1l WzhdLHRbM109ZVsxMl0sdFs0XT1lWzFdLHRbNV09ZVs1XSx0WzZdPWVbOV0s dFs3XT1lWzEzXSx0WzhdPWVbMl0sdFs5XT1lWzZdLHRbMTBdPWVbMTBdLHRb MTFdPWVbMTRdLHRbMTJdPWVbM10sdFsxM109ZVs3XSx0WzE0XT1lWzExXSx0 WzE1XT1lWzE1XTtyZXR1cm4gdH19LHt9XSwyODA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7c3dpdGNo KGUubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRbMF09MS9lWzBdO2Jy ZWFrO2Nhc2UgNDpuKHQsZSk7YnJlYWs7Y2FzZSA5OmEodCxlKTticmVhaztj YXNlIDE2OmkodCxlKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigi Y3VycmVudGx5IHN1cHBvcnRzIG1hdHJpY2VzIHVwIHRvIDR4NCIpfXJldHVy biB0fTt2YXIgbj10KCJnbC1tYXQyL2ludmVydCIpLGE9dCgiZ2wtbWF0My9p bnZlcnQiKSxpPXQoImdsLW1hdDQvaW52ZXJ0Iil9LHsiZ2wtbWF0Mi9pbnZl cnQiOjI2MCwiZ2wtbWF0My9pbnZlcnQiOjI2MSwiZ2wtbWF0NC9pbnZlcnQi OjI2OH1dLDI4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJiYXJ5Y2VudHJpYyIpLGE9dCgicG9seXRvcGUtY2xvc2VzdC1wb2lu dC9saWIvY2xvc2VzdF9wb2ludF8yZC5qcyIpO2Z1bmN0aW9uIGkodCxlKXtm b3IodmFyIHI9WzAsMCwwLDBdLG49MDtuPDQ7KytuKWZvcih2YXIgYT0wO2E8 NDsrK2EpclthXSs9dFs0Km4rYV0qZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBv KHQsZSxyLG4sYSl7Zm9yKHZhciBvPWkobixpKHIsaShlLFt0WzBdLHRbMV0s dFsyXSwxXSkpKSxzPTA7czwzOysrcylvW3NdLz1vWzNdO3JldHVyblsuNSph WzBdKigxK29bMF0pLC41KmFbMV0qKDEtb1sxXSldfWZ1bmN0aW9uIHModCxl KXtmb3IodmFyIHI9WzAsMCwwXSxuPTA7bjx0Lmxlbmd0aDsrK24pZm9yKHZh ciBhPXRbbl0saT1lW25dLG89MDtvPDM7KytvKXJbb10rPWkqYVtvXTtyZXR1 cm4gcn1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxsLGMpe2lmKDE9PT10 Lmxlbmd0aClyZXR1cm5bMCx0WzBdLnNsaWNlKCldO2Zvcih2YXIgdT1uZXcg QXJyYXkodC5sZW5ndGgpLGg9MDtoPHQubGVuZ3RoOysraCl1W2hdPW8odFto XSxyLGksbCxjKTtmb3IodmFyIGY9MCxwPTEvMCxoPTA7aDx1Lmxlbmd0aDsr K2gpe2Zvcih2YXIgZD0wLGc9MDtnPDI7KytnKWQrPU1hdGgucG93KHVbaF1b Z10tZVtnXSwyKTtkPHAmJihwPWQsZj1oKX1mb3IodmFyIHY9ZnVuY3Rpb24o dCxlKXtpZigyPT09dC5sZW5ndGgpe2Zvcih2YXIgcj0wLGk9MCxvPTA7bzwy OysrbylyKz1NYXRoLnBvdyhlW29dLXRbMF1bb10sMiksaSs9TWF0aC5wb3co ZVtvXS10WzFdW29dLDIpO3JldHVybiByPU1hdGguc3FydChyKSxpPU1hdGgu c3FydChpKSxyK2k8MWUtNj9bMSwwXTpbaS8ocitpKSxyLyhpK3IpXX1pZigz PT09dC5sZW5ndGgpe3ZhciBzPVswLDBdO3JldHVybiBhKHRbMF0sdFsxXSx0 WzJdLGUscyksbih0LHMpfXJldHVybltdfSh1LGUpLG09MCxoPTA7aDwzOysr aCl7aWYodltoXTwtLjAwMXx8dltoXT4xLjAwMDEpcmV0dXJuIG51bGw7bSs9 dltoXX1pZihNYXRoLmFicyhtLTEpPi4wMDEpcmV0dXJuIG51bGw7cmV0dXJu W2Yscyh0LHYpLHZdfX0se2JhcnljZW50cmljOjc1LCJwb2x5dG9wZS1jbG9z ZXN0LXBvaW50L2xpYi9jbG9zZXN0X3BvaW50XzJkLmpzIjo0ODN9XSwyODI6 W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnbHNsaWZ5IiksYT1uKFsicHJl Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0 cmlidXRlIHZlYzMgcG9zaXRpb24sIG5vcm1hbDtcbmF0dHJpYnV0ZSB2ZWM0 IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgdXY7XG5cbnVuaWZvcm0gbWF0NCBt b2RlbFxuICAgICAgICAgICAsIHZpZXdcbiAgICAgICAgICAgLCBwcm9qZWN0 aW9uXG4gICAgICAgICAgICwgaW52ZXJzZU1vZGVsO1xudW5pZm9ybSB2ZWMz IGV5ZVBvc2l0aW9uXG4gICAgICAgICAgICwgbGlnaHRQb3NpdGlvbjtcblxu dmFyeWluZyB2ZWMzIGZfbm9ybWFsXG4gICAgICAgICAgICwgZl9saWdodERp cmVjdGlvblxuICAgICAgICAgICAsIGZfZXllRGlyZWN0aW9uXG4gICAgICAg ICAgICwgZl9kYXRhO1xudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5n IHZlYzIgZl91djtcblxudmVjNCBwcm9qZWN0KHZlYzMgcCkge1xuICByZXR1 cm4gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocCwgMS4wKTtc bn1cblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiAgICAgID0gcHJv amVjdChwb3NpdGlvbik7XG5cbiAgLy9MaWdodGluZyBnZW9tZXRyeSBwYXJh bWV0ZXJzXG4gIHZlYzQgY2FtZXJhQ29vcmRpbmF0ZSA9IHZpZXcgKiB2ZWM0 KHBvc2l0aW9uICwgMS4wKTtcbiAgY2FtZXJhQ29vcmRpbmF0ZS54eXogLz0g Y2FtZXJhQ29vcmRpbmF0ZS53O1xuICBmX2xpZ2h0RGlyZWN0aW9uID0gbGln aHRQb3NpdGlvbiAtIGNhbWVyYUNvb3JkaW5hdGUueHl6O1xuICBmX2V5ZURp cmVjdGlvbiAgID0gZXllUG9zaXRpb24gLSBjYW1lcmFDb29yZGluYXRlLnh5 ejtcbiAgZl9ub3JtYWwgID0gbm9ybWFsaXplKCh2ZWM0KG5vcm1hbCwgMC4w KSAqIGludmVyc2VNb2RlbCkueHl6KTtcblxuICBmX2NvbG9yICAgICAgICAg ID0gY29sb3I7XG4gIGZfZGF0YSAgICAgICAgICAgPSBwb3NpdGlvbjtcbiAg Zl91diAgICAgICAgICAgICA9IHV2O1xufVxuIl0pLGk9bihbIiNleHRlbnNp b24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlXG5cbnBy ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmZs b2F0IGJlY2ttYW5uRGlzdHJpYnV0aW9uKGZsb2F0IHgsIGZsb2F0IHJvdWdo bmVzcykge1xuICBmbG9hdCBOZG90SCA9IG1heCh4LCAwLjAwMDEpO1xuICBm bG9hdCBjb3MyQWxwaGEgPSBOZG90SCAqIE5kb3RIO1xuICBmbG9hdCB0YW4y QWxwaGEgPSAoY29zMkFscGhhIC0gMS4wKSAvIGNvczJBbHBoYTtcbiAgZmxv YXQgcm91Z2huZXNzMiA9IHJvdWdobmVzcyAqIHJvdWdobmVzcztcbiAgZmxv YXQgZGVub20gPSAzLjE0MTU5MjY1MzU4OTc5MyAqIHJvdWdobmVzczIgKiBj b3MyQWxwaGEgKiBjb3MyQWxwaGE7XG4gIHJldHVybiBleHAodGFuMkFscGhh IC8gcm91Z2huZXNzMikgLyBkZW5vbTtcbn1cblxuZmxvYXQgY29va1RvcnJh bmNlU3BlY3VsYXIoXG4gIHZlYzMgbGlnaHREaXJlY3Rpb24sXG4gIHZlYzMg dmlld0RpcmVjdGlvbixcbiAgdmVjMyBzdXJmYWNlTm9ybWFsLFxuICBmbG9h dCByb3VnaG5lc3MsXG4gIGZsb2F0IGZyZXNuZWwpIHtcblxuICBmbG9hdCBW ZG90TiA9IG1heChkb3Qodmlld0RpcmVjdGlvbiwgc3VyZmFjZU5vcm1hbCks IDAuMCk7XG4gIGZsb2F0IExkb3ROID0gbWF4KGRvdChsaWdodERpcmVjdGlv biwgc3VyZmFjZU5vcm1hbCksIDAuMCk7XG5cbiAgLy9IYWxmIGFuZ2xlIHZl Y3RvclxuICB2ZWMzIEggPSBub3JtYWxpemUobGlnaHREaXJlY3Rpb24gKyB2 aWV3RGlyZWN0aW9uKTtcblxuICAvL0dlb21ldHJpYyB0ZXJtXG4gIGZsb2F0 IE5kb3RIID0gbWF4KGRvdChzdXJmYWNlTm9ybWFsLCBIKSwgMC4wKTtcbiAg ZmxvYXQgVmRvdEggPSBtYXgoZG90KHZpZXdEaXJlY3Rpb24sIEgpLCAwLjAw MDAwMSk7XG4gIGZsb2F0IExkb3RIID0gbWF4KGRvdChsaWdodERpcmVjdGlv biwgSCksIDAuMDAwMDAxKTtcbiAgZmxvYXQgRzEgPSAoMi4wICogTmRvdEgg KiBWZG90TikgLyBWZG90SDtcbiAgZmxvYXQgRzIgPSAoMi4wICogTmRvdEgg KiBMZG90TikgLyBMZG90SDtcbiAgZmxvYXQgRyA9IG1pbigxLjAsIG1pbihH MSwgRzIpKTtcbiAgXG4gIC8vRGlzdHJpYnV0aW9uIHRlcm1cbiAgZmxvYXQg RCA9IGJlY2ttYW5uRGlzdHJpYnV0aW9uKE5kb3RILCByb3VnaG5lc3MpO1xu XG4gIC8vRnJlc25lbCB0ZXJtXG4gIGZsb2F0IEYgPSBwb3coMS4wIC0gVmRv dE4sIGZyZXNuZWwpO1xuXG4gIC8vTXVsdGlwbHkgdGVybXMgYW5kIGRvbmVc biAgcmV0dXJuICBHICogRiAqIEQgLyBtYXgoMy4xNDE1OTI2NSAqIFZkb3RO LCAwLjAwMDAwMSk7XG59XG5cbi8vI3ByYWdtYSBnbHNsaWZ5OiBiZWNrbWFu biA9IHJlcXVpcmUoZ2xzbC1zcGVjdWxhci1iZWNrbWFubikgLy8gdXNlZCBp biBnbC1zdXJmYWNlM2RcblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZs b2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkg fHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBv dXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJu IChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5n ZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZS YW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2Uo YS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueiwg Yi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVj NCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIu eHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJd O1xudW5pZm9ybSBmbG9hdCByb3VnaG5lc3NcbiAgICAgICAgICAgICwgZnJl c25lbFxuICAgICAgICAgICAgLCBrYW1iaWVudFxuICAgICAgICAgICAgLCBr ZGlmZnVzZVxuICAgICAgICAgICAgLCBrc3BlY3VsYXI7XG51bmlmb3JtIHNh bXBsZXIyRCB0ZXh0dXJlO1xuXG52YXJ5aW5nIHZlYzMgZl9ub3JtYWxcbiAg ICAgICAgICAgLCBmX2xpZ2h0RGlyZWN0aW9uXG4gICAgICAgICAgICwgZl9l eWVEaXJlY3Rpb25cbiAgICAgICAgICAgLCBmX2RhdGE7XG52YXJ5aW5nIHZl YzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52b2lkIG1haW4o KSB7XG4gIGlmIChmX2NvbG9yLmEgPT0gMC4wIHx8XG4gICAgb3V0T2ZSYW5n ZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmX2RhdGEpXG4gICkg ZGlzY2FyZDtcblxuICB2ZWMzIE4gPSBub3JtYWxpemUoZl9ub3JtYWwpO1xu ICB2ZWMzIEwgPSBub3JtYWxpemUoZl9saWdodERpcmVjdGlvbik7XG4gIHZl YzMgViA9IG5vcm1hbGl6ZShmX2V5ZURpcmVjdGlvbik7XG5cbiAgaWYoZ2xf RnJvbnRGYWNpbmcpIHtcbiAgICBOID0gLU47XG4gIH1cblxuICBmbG9hdCBz cGVjdWxhciA9IG1pbigxLjAsIG1heCgwLjAsIGNvb2tUb3JyYW5jZVNwZWN1 bGFyKEwsIFYsIE4sIHJvdWdobmVzcywgZnJlc25lbCkpKTtcbiAgLy9mbG9h dCBzcGVjdWxhciA9IG1heCgwLjAsIGJlY2ttYW5uKEwsIFYsIE4sIHJvdWdo bmVzcykpOyAvLyB1c2VkIGluIGdsLXN1cmZhY2UzZFxuXG4gIGZsb2F0IGRp ZmZ1c2UgID0gbWluKGthbWJpZW50ICsga2RpZmZ1c2UgKiBtYXgoZG90KE4s IEwpLCAwLjApLCAxLjApO1xuXG4gIHZlYzQgc3VyZmFjZUNvbG9yID0gdmVj NChmX2NvbG9yLnJnYiwgMS4wKSAqIHRleHR1cmUyRCh0ZXh0dXJlLCBmX3V2 KTtcbiAgdmVjNCBsaXRDb2xvciA9IHN1cmZhY2VDb2xvci5hICogdmVjNChk aWZmdXNlICogc3VyZmFjZUNvbG9yLnJnYiArIGtzcGVjdWxhciAqIHZlYzMo MSwxLDEpICogc3BlY3VsYXIsICAxLjApO1xuXG4gIGdsX0ZyYWdDb2xvciA9 IGxpdENvbG9yICogZl9jb2xvci5hO1xufVxuIl0pLG89bihbInByZWNpc2lv biBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0 ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5hdHRy aWJ1dGUgdmVjMiB1djtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBw cm9qZWN0aW9uO1xuXG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcg dmVjMyBmX2RhdGE7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWlu KCkge1xuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9k ZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICBmX2NvbG9yID0gY29sb3I7 XG4gIGZfZGF0YSAgPSBwb3NpdGlvbjtcbiAgZl91diAgICA9IHV2O1xufSJd KSxzPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJ RlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxv YXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAg ICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2Uo dmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFu Z2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEu eSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwg dmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwg Yi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwg cC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikp O1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQg cCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6 KTtcbn1cblxudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG51bmlmb3Jt IHNhbXBsZXIyRCB0ZXh0dXJlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xu XG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVjMyBmX2RhdGE7 XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICBpZiAo b3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmX2Rh dGEpKSBkaXNjYXJkO1xuXG4gIGdsX0ZyYWdDb2xvciA9IGZfY29sb3IgKiB0 ZXh0dXJlMkQodGV4dHVyZSwgZl91dikgKiBvcGFjaXR5O1xufSJdKSxsPW4o WyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxu XG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkg e1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAo cCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBh LCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54 LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55 LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBi LCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBw LngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8 fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxu XG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xu ICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1c blxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjNCBj b2xvcjtcbmF0dHJpYnV0ZSB2ZWMyIHV2O1xuYXR0cmlidXRlIGZsb2F0IHBv aW50U2l6ZTtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0 aW9uO1xudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG5cbnZhcnlpbmcg dmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMyIGZfdXY7XG5cbnZvaWQgbWFp bigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJv dW5kc1sxXSwgcG9zaXRpb24pKSB7XG5cbiAgICBnbF9Qb3NpdGlvbiA9IHZl YzQoMC4wLCAwLjAgLDAuMCAsMC4wKTtcbiAgfSBlbHNlIHtcbiAgICBnbF9Q b3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHBv c2l0aW9uLCAxLjApO1xuICB9XG4gIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6 ZTtcbiAgZl9jb2xvciA9IGNvbG9yO1xuICBmX3V2ID0gdXY7XG59Il0pLGM9 bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAx XG5cbnVuaWZvcm0gc2FtcGxlcjJEIHRleHR1cmU7XG51bmlmb3JtIGZsb2F0 IG9wYWNpdHk7XG5cbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWluZyB2 ZWMyIGZfdXY7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMiBwb2ludFIgPSBn bF9Qb2ludENvb3JkLnh5IC0gdmVjMigwLjUsIDAuNSk7XG4gIGlmKGRvdChw b2ludFIsIHBvaW50UikgPiAwLjI1KSB7XG4gICAgZGlzY2FyZDtcbiAgfVxu ICBnbF9GcmFnQ29sb3IgPSBmX2NvbG9yICogdGV4dHVyZTJEKHRleHR1cmUs IGZfdXYpICogb3BhY2l0eTtcbn0iXSksdT1uKFsicHJlY2lzaW9uIGhpZ2hw IGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMg cG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjNCBpZDtcblxudW5pZm9ybSBtYXQ0 IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xuXG52YXJ5aW5nIHZlYzMgZl9w b3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBmX2lkO1xuXG52b2lkIG1haW4oKSB7 XG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAq IHZlYzQocG9zaXRpb24sIDEuMCk7XG4gIGZfaWQgICAgICAgID0gaWQ7XG4g IGZfcG9zaXRpb24gID0gcG9zaXRpb247XG59Il0pLGg9bihbInByZWNpc2lv biBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0 T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVy biAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEs IGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwg dmVjMiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54 KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xu fVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkg e1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAg ICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAg ICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0 T2ZSYW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBv dXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG51bmlmb3Jt IHZlYzMgIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHBpY2tJZDtc blxudmFyeWluZyB2ZWMzIGZfcG9zaXRpb247XG52YXJ5aW5nIHZlYzQgZl9p ZDtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91 bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmX3Bvc2l0aW9uKSkgZGlzY2FyZDtc blxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBpY2tJZCwgZl9pZC54eXopO1xu fSJdKSxmPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdM U0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwg ZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAg ICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFu Z2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9m UmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdl KGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMg YSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEu eCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIu eSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAu eikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZl YzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAu eHl6KTtcbn1cblxuYXR0cmlidXRlIHZlYzMgIHBvc2l0aW9uO1xuYXR0cmli dXRlIGZsb2F0IHBvaW50U2l6ZTtcbmF0dHJpYnV0ZSB2ZWM0ICBpZDtcblxu dW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9y bSB2ZWMzIGNsaXBCb3VuZHNbMl07XG5cbnZhcnlpbmcgdmVjMyBmX3Bvc2l0 aW9uO1xudmFyeWluZyB2ZWM0IGZfaWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAg aWYgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwg cG9zaXRpb24pKSB7XG5cbiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMC4wLCAw LjAsIDAuMCwgMC4wKTtcbiAgfSBlbHNlIHtcbiAgICBnbF9Qb3NpdGlvbiAg PSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwb3NpdGlvbiwg MS4wKTtcbiAgICBnbF9Qb2ludFNpemUgPSBwb2ludFNpemU7XG4gIH1cbiAg Zl9pZCAgICAgICAgID0gaWQ7XG4gIGZfcG9zaXRpb24gICA9IHBvc2l0aW9u O1xufSJdKSxwPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5l IEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcblxudW5p Zm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xuXG52b2lkIG1h aW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBt b2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG59Il0pLGQ9bihbInByZWNp c2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZv cm0gdmVjMyBjb250b3VyQ29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xf RnJhZ0NvbG9yID0gdmVjNChjb250b3VyQ29sb3IsIDEuMCk7XG59XG4iXSk7 ci5tZXNoU2hhZGVyPXt2ZXJ0ZXg6YSxmcmFnbWVudDppLGF0dHJpYnV0ZXM6 W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJub3JtYWwi LHR5cGU6InZlYzMifSx7bmFtZToiY29sb3IiLHR5cGU6InZlYzQifSx7bmFt ZToidXYiLHR5cGU6InZlYzIifV19LHIud2lyZVNoYWRlcj17dmVydGV4Om8s ZnJhZ21lbnQ6cyxhdHRyaWJ1dGVzOlt7bmFtZToicG9zaXRpb24iLHR5cGU6 InZlYzMifSx7bmFtZToiY29sb3IiLHR5cGU6InZlYzQifSx7bmFtZToidXYi LHR5cGU6InZlYzIifV19LHIucG9pbnRTaGFkZXI9e3ZlcnRleDpsLGZyYWdt ZW50OmMsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMz In0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In0se25hbWU6InV2Iix0eXBl OiJ2ZWMyIn0se25hbWU6InBvaW50U2l6ZSIsdHlwZToiZmxvYXQifV19LHIu cGlja1NoYWRlcj17dmVydGV4OnUsZnJhZ21lbnQ6aCxhdHRyaWJ1dGVzOlt7 bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToiaWQiLHR5cGU6 InZlYzQifV19LHIucG9pbnRQaWNrU2hhZGVyPXt2ZXJ0ZXg6ZixmcmFnbWVu dDpoLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9 LHtuYW1lOiJwb2ludFNpemUiLHR5cGU6ImZsb2F0In0se25hbWU6ImlkIix0 eXBlOiJ2ZWM0In1dfSxyLmNvbnRvdXJTaGFkZXI9e3ZlcnRleDpwLGZyYWdt ZW50OmQsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMz In1dfX0se2dsc2xpZnk6NDExfV0sMjgzOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoImdsLXNoYWRlciIpLGE9dCgiZ2wtYnVmZmVy IiksaT10KCJnbC12YW8iKSxvPXQoImdsLXRleHR1cmUyZCIpLHM9dCgibm9y bWFscyIpLGw9dCgiZ2wtbWF0NC9tdWx0aXBseSIpLGM9dCgiZ2wtbWF0NC9p bnZlcnQiKSx1PXQoIm5kYXJyYXkiKSxoPXQoImNvbG9ybWFwIiksZj10KCJz aW1wbGljaWFsLWNvbXBsZXgtY29udG91ciIpLHA9dCgidHlwZWRhcnJheS1w b29sIiksZD10KCIuL2xpYi9zaGFkZXJzIiksZz10KCIuL2xpYi9jbG9zZXN0 LXBvaW50Iiksdj1kLm1lc2hTaGFkZXIsbT1kLndpcmVTaGFkZXIseT1kLnBv aW50U2hhZGVyLHg9ZC5waWNrU2hhZGVyLGI9ZC5wb2ludFBpY2tTaGFkZXIs Xz1kLmNvbnRvdXJTaGFkZXIsdz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAs MCwwLDAsMV07ZnVuY3Rpb24gayh0LGUscixuLGEsaSxvLHMsbCxjLHUsaCxm LHAsZCxnLHYsbSx5LHgsYixfLGssVCxNLEEsUyl7dGhpcy5nbD10LHRoaXMu cGl4ZWxSYXRpbz0xLHRoaXMuY2VsbHM9W10sdGhpcy5wb3NpdGlvbnM9W10s dGhpcy5pbnRlbnNpdHk9W10sdGhpcy50ZXh0dXJlPWUsdGhpcy5kaXJ0eT0h MCx0aGlzLnRyaVNoYWRlcj1yLHRoaXMubGluZVNoYWRlcj1uLHRoaXMucG9p bnRTaGFkZXI9YSx0aGlzLnBpY2tTaGFkZXI9aSx0aGlzLnBvaW50UGlja1No YWRlcj1vLHRoaXMuY29udG91clNoYWRlcj1zLHRoaXMudHJpYW5nbGVQb3Np dGlvbnM9bCx0aGlzLnRyaWFuZ2xlQ29sb3JzPXUsdGhpcy50cmlhbmdsZU5v cm1hbHM9Zix0aGlzLnRyaWFuZ2xlVVZzPWgsdGhpcy50cmlhbmdsZUlkcz1j LHRoaXMudHJpYW5nbGVWQU89cCx0aGlzLnRyaWFuZ2xlQ291bnQ9MCx0aGlz LmxpbmVXaWR0aD0xLHRoaXMuZWRnZVBvc2l0aW9ucz1kLHRoaXMuZWRnZUNv bG9ycz12LHRoaXMuZWRnZVVWcz1tLHRoaXMuZWRnZUlkcz1nLHRoaXMuZWRn ZVZBTz15LHRoaXMuZWRnZUNvdW50PTAsdGhpcy5wb2ludFBvc2l0aW9ucz14 LHRoaXMucG9pbnRDb2xvcnM9Xyx0aGlzLnBvaW50VVZzPWssdGhpcy5wb2lu dFNpemVzPVQsdGhpcy5wb2ludElkcz1iLHRoaXMucG9pbnRWQU89TSx0aGlz LnBvaW50Q291bnQ9MCx0aGlzLmNvbnRvdXJMaW5lV2lkdGg9MSx0aGlzLmNv bnRvdXJQb3NpdGlvbnM9QSx0aGlzLmNvbnRvdXJWQU89Uyx0aGlzLmNvbnRv dXJDb3VudD0wLHRoaXMuY29udG91ckNvbG9yPVswLDAsMF0sdGhpcy5jb250 b3VyRW5hYmxlPSEwLHRoaXMucGlja1ZlcnRleD0hMCx0aGlzLnBpY2tJZD0x LHRoaXMuYm91bmRzPVtbMS8wLDEvMCwxLzBdLFstMS8wLC0xLzAsLTEvMF1d LHRoaXMuY2xpcEJvdW5kcz1bWy0xLzAsLTEvMCwtMS8wXSxbMS8wLDEvMCwx LzBdXSx0aGlzLmxpZ2h0UG9zaXRpb249WzFlNSwxZTUsMF0sdGhpcy5hbWJp ZW50TGlnaHQ9LjgsdGhpcy5kaWZmdXNlTGlnaHQ9LjgsdGhpcy5zcGVjdWxh ckxpZ2h0PTIsdGhpcy5yb3VnaG5lc3M9LjUsdGhpcy5mcmVzbmVsPTEuNSx0 aGlzLm9wYWNpdHk9MSx0aGlzLmhhc0FscGhhPSExLHRoaXMub3BhY2l0eXNj YWxlPSExLHRoaXMuX21vZGVsPXcsdGhpcy5fdmlldz13LHRoaXMuX3Byb2pl Y3Rpb249dyx0aGlzLl9yZXNvbHV0aW9uPVsxLDFdfXZhciBUPWsucHJvdG90 eXBlO2Z1bmN0aW9uIE0odCxlKXtpZighZSlyZXR1cm4gMTtpZighZS5sZW5n dGgpcmV0dXJuIDE7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDsrK3Ipe2lmKGUu bGVuZ3RoPDIpcmV0dXJuIDE7aWYoZVtyXVswXT09PXQpcmV0dXJuIGVbcl1b MV07aWYoZVtyXVswXT50JiZyPjApe3ZhciBuPShlW3JdWzBdLXQpLyhlW3Jd WzBdLWVbci0xXVswXSk7cmV0dXJuIGVbcl1bMV0qKDEtbikrbiplW3ItMV1b MV19fXJldHVybiAxfWZ1bmN0aW9uIEEodCl7dmFyIGU9bih0LHkudmVydGV4 LHkuZnJhZ21lbnQpO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9j YXRpb249MCxlLmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249MixlLmF0dHJp YnV0ZXMudXYubG9jYXRpb249MyxlLmF0dHJpYnV0ZXMucG9pbnRTaXplLmxv Y2F0aW9uPTQsZX1mdW5jdGlvbiBTKHQpe3ZhciBlPW4odCx4LnZlcnRleCx4 LmZyYWdtZW50KTtyZXR1cm4gZS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0 aW9uPTAsZS5hdHRyaWJ1dGVzLmlkLmxvY2F0aW9uPTEsZX1mdW5jdGlvbiBF KHQpe3ZhciBlPW4odCxiLnZlcnRleCxiLmZyYWdtZW50KTtyZXR1cm4gZS5h dHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsZS5hdHRyaWJ1dGVzLmlk LmxvY2F0aW9uPTEsZS5hdHRyaWJ1dGVzLnBvaW50U2l6ZS5sb2NhdGlvbj00 LGV9ZnVuY3Rpb24gTCh0KXt2YXIgZT1uKHQsXy52ZXJ0ZXgsXy5mcmFnbWVu dCk7cmV0dXJuIGUuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLGV9 VC5pc09wYXF1ZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLmhhc0FscGhhfSxU LmlzVHJhbnNwYXJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNBbHBo YX0sVC5waWNrU2xvdHM9MSxULnNldFBpY2tCYXNlPWZ1bmN0aW9uKHQpe3Ro aXMucGlja0lkPXR9LFQuaGlnaGxpZ2h0PWZ1bmN0aW9uKHQpe2lmKHQmJnRo aXMuY29udG91ckVuYWJsZSl7Zm9yKHZhciBlPWYodGhpcy5jZWxscyx0aGlz LmludGVuc2l0eSx0LmludGVuc2l0eSkscj1lLmNlbGxzLG49ZS52ZXJ0ZXhJ ZHMsYT1lLnZlcnRleFdlaWdodHMsaT1yLmxlbmd0aCxvPXAubWFsbG9jRmxv YXQzMig2KmkpLHM9MCxsPTA7bDxpOysrbClmb3IodmFyIGM9cltsXSx1PTA7 dTwyOysrdSl7dmFyIGg9Y1swXTsyPT09Yy5sZW5ndGgmJihoPWNbdV0pO2Zv cih2YXIgZD1uW2hdWzBdLGc9bltoXVsxXSx2PWFbaF0sbT0xLXYseT10aGlz LnBvc2l0aW9uc1tkXSx4PXRoaXMucG9zaXRpb25zW2ddLGI9MDtiPDM7Kyti KW9bcysrXT12KnlbYl0rbSp4W2JdfXRoaXMuY29udG91ckNvdW50PXMvM3ww LHRoaXMuY29udG91clBvc2l0aW9ucy51cGRhdGUoby5zdWJhcnJheSgwLHMp KSxwLmZyZWUobyl9ZWxzZSB0aGlzLmNvbnRvdXJDb3VudD0wfSxULnVwZGF0 ZT1mdW5jdGlvbih0KXt0PXR8fHt9O3ZhciBlPXRoaXMuZ2w7dGhpcy5kaXJ0 eT0hMCwiY29udG91ckVuYWJsZSJpbiB0JiYodGhpcy5jb250b3VyRW5hYmxl PXQuY29udG91ckVuYWJsZSksImNvbnRvdXJDb2xvciJpbiB0JiYodGhpcy5j b250b3VyQ29sb3I9dC5jb250b3VyQ29sb3IpLCJsaW5lV2lkdGgiaW4gdCYm KHRoaXMubGluZVdpZHRoPXQubGluZVdpZHRoKSwibGlnaHRQb3NpdGlvbiJp biB0JiYodGhpcy5saWdodFBvc2l0aW9uPXQubGlnaHRQb3NpdGlvbiksdGhp cy5oYXNBbHBoYT0hMSwib3BhY2l0eSJpbiB0JiYodGhpcy5vcGFjaXR5PXQu b3BhY2l0eSx0aGlzLm9wYWNpdHk8MSYmKHRoaXMuaGFzQWxwaGE9ITApKSwi b3BhY2l0eXNjYWxlImluIHQmJih0aGlzLm9wYWNpdHlzY2FsZT10Lm9wYWNp dHlzY2FsZSx0aGlzLmhhc0FscGhhPSEwKSwiYW1iaWVudCJpbiB0JiYodGhp cy5hbWJpZW50TGlnaHQ9dC5hbWJpZW50KSwiZGlmZnVzZSJpbiB0JiYodGhp cy5kaWZmdXNlTGlnaHQ9dC5kaWZmdXNlKSwic3BlY3VsYXIiaW4gdCYmKHRo aXMuc3BlY3VsYXJMaWdodD10LnNwZWN1bGFyKSwicm91Z2huZXNzImluIHQm Jih0aGlzLnJvdWdobmVzcz10LnJvdWdobmVzcyksImZyZXNuZWwiaW4gdCYm KHRoaXMuZnJlc25lbD10LmZyZXNuZWwpLHQudGV4dHVyZT8odGhpcy50ZXh0 dXJlLmRpc3Bvc2UoKSx0aGlzLnRleHR1cmU9byhlLHQudGV4dHVyZSkpOnQu Y29sb3JtYXAmJih0aGlzLnRleHR1cmUuc2hhcGU9WzI1NiwyNTZdLHRoaXMu dGV4dHVyZS5taW5GaWx0ZXI9ZS5MSU5FQVJfTUlQTUFQX0xJTkVBUix0aGlz LnRleHR1cmUubWFnRmlsdGVyPWUuTElORUFSLHRoaXMudGV4dHVyZS5zZXRQ aXhlbHMoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9aCh7Y29sb3JtYXA6dCxu c2hhZGVzOjI1Nixmb3JtYXQ6InJnYmEifSksbj1uZXcgVWludDhBcnJheSgx MDI0KSxhPTA7YTwyNTY7KythKXtmb3IodmFyIGk9clthXSxvPTA7bzwzOysr byluWzQqYStvXT1pW29dO25bNCphKzNdPWU/MjU1Kk0oYS8yNTUsZSk6MjU1 KmlbM119cmV0dXJuIHUobixbMjU2LDI1Niw0XSxbNCwwLDFdKX0odC5jb2xv cm1hcCx0aGlzLm9wYWNpdHlzY2FsZSkpLHRoaXMudGV4dHVyZS5nZW5lcmF0 ZU1pcG1hcCgpKTt2YXIgcj10LmNlbGxzLG49dC5wb3NpdGlvbnM7aWYobiYm cil7dmFyIGE9W10saT1bXSxsPVtdLGM9W10sZj1bXSxwPVtdLGQ9W10sZz1b XSx2PVtdLG09W10seT1bXSx4PVtdLGI9W10sXz1bXTt0aGlzLmNlbGxzPXIs dGhpcy5wb3NpdGlvbnM9bjt2YXIgdz10LnZlcnRleE5vcm1hbHMsaz10LmNl bGxOb3JtYWxzLFQ9dm9pZCAwPT09dC52ZXJ0ZXhOb3JtYWxzRXBzaWxvbj8x ZS02OnQudmVydGV4Tm9ybWFsc0Vwc2lsb24sQT12b2lkIDA9PT10LmZhY2VO b3JtYWxzRXBzaWxvbj8xZS02OnQuZmFjZU5vcm1hbHNFcHNpbG9uO3QudXNl RmFjZXROb3JtYWxzJiYhayYmKGs9cy5mYWNlTm9ybWFscyhyLG4sQSkpLGt8 fHd8fCh3PXMudmVydGV4Tm9ybWFscyhyLG4sVCkpO3ZhciBTPXQudmVydGV4 Q29sb3JzLEU9dC5jZWxsQ29sb3JzLEw9dC5tZXNoQ29sb3J8fFsxLDEsMSwx XSxDPXQudmVydGV4VVZzLFA9dC52ZXJ0ZXhJbnRlbnNpdHksTz10LmNlbGxV VnMsej10LmNlbGxJbnRlbnNpdHksST0xLzAsRD0tMS8wO2lmKCFDJiYhTylp ZihQKWlmKHQudmVydGV4SW50ZW5zaXR5Qm91bmRzKUk9K3QudmVydGV4SW50 ZW5zaXR5Qm91bmRzWzBdLEQ9K3QudmVydGV4SW50ZW5zaXR5Qm91bmRzWzFd O2Vsc2UgZm9yKHZhciBSPTA7UjxQLmxlbmd0aDsrK1Ipe3ZhciBGPVBbUl07 ST1NYXRoLm1pbihJLEYpLEQ9TWF0aC5tYXgoRCxGKX1lbHNlIGlmKHopaWYo dC5jZWxsSW50ZW5zaXR5Qm91bmRzKUk9K3QuY2VsbEludGVuc2l0eUJvdW5k c1swXSxEPSt0LmNlbGxJbnRlbnNpdHlCb3VuZHNbMV07ZWxzZSBmb3IoUj0w O1I8ei5sZW5ndGg7KytSKXtGPXpbUl07ST1NYXRoLm1pbihJLEYpLEQ9TWF0 aC5tYXgoRCxGKX1lbHNlIGZvcihSPTA7UjxuLmxlbmd0aDsrK1Ipe0Y9bltS XVsyXTtJPU1hdGgubWluKEksRiksRD1NYXRoLm1heChELEYpfXRoaXMuaW50 ZW5zaXR5PVB8fCh6fHxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgs cj1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24pcltuXT10W25dWzJdO3JldHVy biByfShuKSksdGhpcy5waWNrVmVydGV4PSEoenx8RSk7dmFyIEI9dC5wb2lu dFNpemVzLE49dC5wb2ludFNpemV8fDE7dGhpcy5ib3VuZHM9W1sxLzAsMS8w LDEvMF0sWy0xLzAsLTEvMCwtMS8wXV07Zm9yKFI9MDtSPG4ubGVuZ3RoOysr Uilmb3IodmFyIGo9bltSXSxWPTA7VjwzOysrVikhaXNOYU4oaltWXSkmJmlz RmluaXRlKGpbVl0pJiYodGhpcy5ib3VuZHNbMF1bVl09TWF0aC5taW4odGhp cy5ib3VuZHNbMF1bVl0saltWXSksdGhpcy5ib3VuZHNbMV1bVl09TWF0aC5t YXgodGhpcy5ib3VuZHNbMV1bVl0saltWXSkpO3ZhciBVPTAscT0wLEg9MDt0 OmZvcihSPTA7UjxyLmxlbmd0aDsrK1Ipe3ZhciBHPXJbUl07c3dpdGNoKEcu bGVuZ3RoKXtjYXNlIDE6Zm9yKGo9bltXPUdbMF1dLFY9MDtWPDM7KytWKWlm KGlzTmFOKGpbVl0pfHwhaXNGaW5pdGUoaltWXSkpY29udGludWUgdDttLnB1 c2goalswXSxqWzFdLGpbMl0pLFg9Uz9TW1ddOkU/RVtSXTpMLHRoaXMub3Bh Y2l0eXNjYWxlJiZQP2kucHVzaChYWzBdLFhbMV0sWFsyXSx0aGlzLm9wYWNp dHkqTSgoUFtXXS1JKS8oRC1JKSx0aGlzLm9wYWNpdHlzY2FsZSkpOjM9PT1Y Lmxlbmd0aD95LnB1c2goWFswXSxYWzFdLFhbMl0sdGhpcy5vcGFjaXR5KToo eS5wdXNoKFhbMF0sWFsxXSxYWzJdLFhbM10qdGhpcy5vcGFjaXR5KSxYWzNd PDEmJih0aGlzLmhhc0FscGhhPSEwKSksWj1DP0NbV106UD9bKFBbV10tSSkv KEQtSSksMF06Tz9PW1JdOno/Wyh6W1JdLUkpLyhELUkpLDBdOlsoalsyXS1J KS8oRC1JKSwwXSx4LnB1c2goWlswXSxaWzFdKSxCP2IucHVzaChCW1ddKTpi LnB1c2goTiksXy5wdXNoKFIpLEgrPTE7YnJlYWs7Y2FzZSAyOmZvcihWPTA7 VjwyOysrVil7aj1uW1c9R1tWXV07Zm9yKHZhciBZPTA7WTwzOysrWSlpZihp c05hTihqW1ldKXx8IWlzRmluaXRlKGpbWV0pKWNvbnRpbnVlIHR9Zm9yKFY9 MDtWPDI7KytWKXtqPW5bVz1HW1ZdXTtwLnB1c2goalswXSxqWzFdLGpbMl0p LFg9Uz9TW1ddOkU/RVtSXTpMLHRoaXMub3BhY2l0eXNjYWxlJiZQP2kucHVz aChYWzBdLFhbMV0sWFsyXSx0aGlzLm9wYWNpdHkqTSgoUFtXXS1JKS8oRC1J KSx0aGlzLm9wYWNpdHlzY2FsZSkpOjM9PT1YLmxlbmd0aD9kLnB1c2goWFsw XSxYWzFdLFhbMl0sdGhpcy5vcGFjaXR5KTooZC5wdXNoKFhbMF0sWFsxXSxY WzJdLFhbM10qdGhpcy5vcGFjaXR5KSxYWzNdPDEmJih0aGlzLmhhc0FscGhh PSEwKSksWj1DP0NbV106UD9bKFBbV10tSSkvKEQtSSksMF06Tz9PW1JdOno/ Wyh6W1JdLUkpLyhELUkpLDBdOlsoalsyXS1JKS8oRC1JKSwwXSxnLnB1c2go WlswXSxaWzFdKSx2LnB1c2goUil9cSs9MTticmVhaztjYXNlIDM6Zm9yKFY9 MDtWPDM7KytWKWZvcihqPW5bVz1HW1ZdXSxZPTA7WTwzOysrWSlpZihpc05h TihqW1ldKXx8IWlzRmluaXRlKGpbWV0pKWNvbnRpbnVlIHQ7Zm9yKFY9MDtW PDM7KytWKXt2YXIgVyxYLFosSjtqPW5bVz1HWzItVl1dO2EucHVzaChqWzBd LGpbMV0salsyXSksKFg9Uz9TW1ddOkU/RVtSXTpMKT90aGlzLm9wYWNpdHlz Y2FsZSYmUD9pLnB1c2goWFswXSxYWzFdLFhbMl0sdGhpcy5vcGFjaXR5Kk0o KFBbV10tSSkvKEQtSSksdGhpcy5vcGFjaXR5c2NhbGUpKTozPT09WC5sZW5n dGg/aS5wdXNoKFhbMF0sWFsxXSxYWzJdLHRoaXMub3BhY2l0eSk6KGkucHVz aChYWzBdLFhbMV0sWFsyXSxYWzNdKnRoaXMub3BhY2l0eSksWFszXTwxJiYo dGhpcy5oYXNBbHBoYT0hMCkpOmkucHVzaCguNSwuNSwuNSwxKSxaPUM/Q1tX XTpQP1soUFtXXS1JKS8oRC1JKSwwXTpPP09bUl06ej9bKHpbUl0tSSkvKEQt SSksMF06WyhqWzJdLUkpLyhELUkpLDBdLGMucHVzaChaWzBdLFpbMV0pLEo9 dz93W1ddOmtbUl0sbC5wdXNoKEpbMF0sSlsxXSxKWzJdKSxmLnB1c2goUil9 VSs9MX19dGhpcy5wb2ludENvdW50PUgsdGhpcy5lZGdlQ291bnQ9cSx0aGlz LnRyaWFuZ2xlQ291bnQ9VSx0aGlzLnBvaW50UG9zaXRpb25zLnVwZGF0ZSht KSx0aGlzLnBvaW50Q29sb3JzLnVwZGF0ZSh5KSx0aGlzLnBvaW50VVZzLnVw ZGF0ZSh4KSx0aGlzLnBvaW50U2l6ZXMudXBkYXRlKGIpLHRoaXMucG9pbnRJ ZHMudXBkYXRlKG5ldyBVaW50MzJBcnJheShfKSksdGhpcy5lZGdlUG9zaXRp b25zLnVwZGF0ZShwKSx0aGlzLmVkZ2VDb2xvcnMudXBkYXRlKGQpLHRoaXMu ZWRnZVVWcy51cGRhdGUoZyksdGhpcy5lZGdlSWRzLnVwZGF0ZShuZXcgVWlu dDMyQXJyYXkodikpLHRoaXMudHJpYW5nbGVQb3NpdGlvbnMudXBkYXRlKGEp LHRoaXMudHJpYW5nbGVDb2xvcnMudXBkYXRlKGkpLHRoaXMudHJpYW5nbGVV VnMudXBkYXRlKGMpLHRoaXMudHJpYW5nbGVOb3JtYWxzLnVwZGF0ZShsKSx0 aGlzLnRyaWFuZ2xlSWRzLnVwZGF0ZShuZXcgVWludDMyQXJyYXkoZikpfX0s VC5kcmF3VHJhbnNwYXJlbnQ9VC5kcmF3PWZ1bmN0aW9uKHQpe3Q9dHx8e307 Zm9yKHZhciBlPXRoaXMuZ2wscj10Lm1vZGVsfHx3LG49dC52aWV3fHx3LGE9 dC5wcm9qZWN0aW9ufHx3LGk9W1stMWU2LC0xZTYsLTFlNl0sWzFlNiwxZTYs MWU2XV0sbz0wO288MzsrK28paVswXVtvXT1NYXRoLm1heChpWzBdW29dLHRo aXMuY2xpcEJvdW5kc1swXVtvXSksaVsxXVtvXT1NYXRoLm1pbihpWzFdW29d LHRoaXMuY2xpcEJvdW5kc1sxXVtvXSk7dmFyIHM9e21vZGVsOnIsdmlldzpu LHByb2plY3Rpb246YSxpbnZlcnNlTW9kZWw6dy5zbGljZSgpLGNsaXBCb3Vu ZHM6aSxrYW1iaWVudDp0aGlzLmFtYmllbnRMaWdodCxrZGlmZnVzZTp0aGlz LmRpZmZ1c2VMaWdodCxrc3BlY3VsYXI6dGhpcy5zcGVjdWxhckxpZ2h0LHJv dWdobmVzczp0aGlzLnJvdWdobmVzcyxmcmVzbmVsOnRoaXMuZnJlc25lbCxl eWVQb3NpdGlvbjpbMCwwLDBdLGxpZ2h0UG9zaXRpb246WzAsMCwwXSxjb250 b3VyQ29sb3I6dGhpcy5jb250b3VyQ29sb3IsdGV4dHVyZTowfTtzLmludmVy c2VNb2RlbD1jKHMuaW52ZXJzZU1vZGVsLHMubW9kZWwpLGUuZGlzYWJsZShl LkNVTExfRkFDRSksdGhpcy50ZXh0dXJlLmJpbmQoMCk7dmFyIHU9bmV3IEFy cmF5KDE2KTtsKHUscy52aWV3LHMubW9kZWwpLGwodSxzLnByb2plY3Rpb24s dSksYyh1LHUpO2ZvcihvPTA7bzwzOysrbylzLmV5ZVBvc2l0aW9uW29dPXVb MTIrb10vdVsxNV07dmFyIGgsZj11WzE1XTtmb3Iobz0wO288MzsrK28pZis9 dGhpcy5saWdodFBvc2l0aW9uW29dKnVbNCpvKzNdO2ZvcihvPTA7bzwzOysr byl7Zm9yKHZhciBwPXVbMTIrb10sZD0wO2Q8MzsrK2QpcCs9dVs0KmQrb10q dGhpcy5saWdodFBvc2l0aW9uW2RdO3MubGlnaHRQb3NpdGlvbltvXT1wL2Z9 dGhpcy50cmlhbmdsZUNvdW50PjAmJigoaD10aGlzLnRyaVNoYWRlcikuYmlu ZCgpLGgudW5pZm9ybXM9cyx0aGlzLnRyaWFuZ2xlVkFPLmJpbmQoKSxlLmRy YXdBcnJheXMoZS5UUklBTkdMRVMsMCwzKnRoaXMudHJpYW5nbGVDb3VudCks dGhpcy50cmlhbmdsZVZBTy51bmJpbmQoKSk7dGhpcy5lZGdlQ291bnQ+MCYm dGhpcy5saW5lV2lkdGg+MCYmKChoPXRoaXMubGluZVNoYWRlcikuYmluZCgp LGgudW5pZm9ybXM9cyx0aGlzLmVkZ2VWQU8uYmluZCgpLGUubGluZVdpZHRo KHRoaXMubGluZVdpZHRoKnRoaXMucGl4ZWxSYXRpbyksZS5kcmF3QXJyYXlz KGUuTElORVMsMCwyKnRoaXMuZWRnZUNvdW50KSx0aGlzLmVkZ2VWQU8udW5i aW5kKCkpO3RoaXMucG9pbnRDb3VudD4wJiYoKGg9dGhpcy5wb2ludFNoYWRl cikuYmluZCgpLGgudW5pZm9ybXM9cyx0aGlzLnBvaW50VkFPLmJpbmQoKSxl LmRyYXdBcnJheXMoZS5QT0lOVFMsMCx0aGlzLnBvaW50Q291bnQpLHRoaXMu cG9pbnRWQU8udW5iaW5kKCkpO3RoaXMuY29udG91ckVuYWJsZSYmdGhpcy5j b250b3VyQ291bnQ+MCYmdGhpcy5jb250b3VyTGluZVdpZHRoPjAmJigoaD10 aGlzLmNvbnRvdXJTaGFkZXIpLmJpbmQoKSxoLnVuaWZvcm1zPXMsdGhpcy5j b250b3VyVkFPLmJpbmQoKSxlLmRyYXdBcnJheXMoZS5MSU5FUywwLHRoaXMu Y29udG91ckNvdW50KSx0aGlzLmNvbnRvdXJWQU8udW5iaW5kKCkpfSxULmRy YXdQaWNrPWZ1bmN0aW9uKHQpe3Q9dHx8e307Zm9yKHZhciBlPXRoaXMuZ2ws cj10Lm1vZGVsfHx3LG49dC52aWV3fHx3LGE9dC5wcm9qZWN0aW9ufHx3LGk9 W1stMWU2LC0xZTYsLTFlNl0sWzFlNiwxZTYsMWU2XV0sbz0wO288MzsrK28p aVswXVtvXT1NYXRoLm1heChpWzBdW29dLHRoaXMuY2xpcEJvdW5kc1swXVtv XSksaVsxXVtvXT1NYXRoLm1pbihpWzFdW29dLHRoaXMuY2xpcEJvdW5kc1sx XVtvXSk7dGhpcy5fbW9kZWw9W10uc2xpY2UuY2FsbChyKSx0aGlzLl92aWV3 PVtdLnNsaWNlLmNhbGwobiksdGhpcy5fcHJvamVjdGlvbj1bXS5zbGljZS5j YWxsKGEpLHRoaXMuX3Jlc29sdXRpb249W2UuZHJhd2luZ0J1ZmZlcldpZHRo LGUuZHJhd2luZ0J1ZmZlckhlaWdodF07dmFyIHMsbD17bW9kZWw6cix2aWV3 Om4scHJvamVjdGlvbjphLGNsaXBCb3VuZHM6aSxwaWNrSWQ6dGhpcy5waWNr SWQvMjU1fTsoKHM9dGhpcy5waWNrU2hhZGVyKS5iaW5kKCkscy51bmlmb3Jt cz1sLHRoaXMudHJpYW5nbGVDb3VudD4wJiYodGhpcy50cmlhbmdsZVZBTy5i aW5kKCksZS5kcmF3QXJyYXlzKGUuVFJJQU5HTEVTLDAsMyp0aGlzLnRyaWFu Z2xlQ291bnQpLHRoaXMudHJpYW5nbGVWQU8udW5iaW5kKCkpLHRoaXMuZWRn ZUNvdW50PjAmJih0aGlzLmVkZ2VWQU8uYmluZCgpLGUubGluZVdpZHRoKHRo aXMubGluZVdpZHRoKnRoaXMucGl4ZWxSYXRpbyksZS5kcmF3QXJyYXlzKGUu TElORVMsMCwyKnRoaXMuZWRnZUNvdW50KSx0aGlzLmVkZ2VWQU8udW5iaW5k KCkpLHRoaXMucG9pbnRDb3VudD4wKSYmKChzPXRoaXMucG9pbnRQaWNrU2hh ZGVyKS5iaW5kKCkscy51bmlmb3Jtcz1sLHRoaXMucG9pbnRWQU8uYmluZCgp LGUuZHJhd0FycmF5cyhlLlBPSU5UUywwLHRoaXMucG9pbnRDb3VudCksdGhp cy5wb2ludFZBTy51bmJpbmQoKSl9LFQucGljaz1mdW5jdGlvbih0KXtpZigh dClyZXR1cm4gbnVsbDtpZih0LmlkIT09dGhpcy5waWNrSWQpcmV0dXJuIG51 bGw7Zm9yKHZhciBlPXQudmFsdWVbMF0rMjU2KnQudmFsdWVbMV0rNjU1MzYq dC52YWx1ZVsyXSxyPXRoaXMuY2VsbHNbZV0sbj10aGlzLnBvc2l0aW9ucyxh PW5ldyBBcnJheShyLmxlbmd0aCksaT0wO2k8ci5sZW5ndGg7KytpKWFbaV09 bltyW2ldXTt2YXIgbz10LmNvb3JkWzBdLHM9dC5jb29yZFsxXTtpZighdGhp cy5waWNrVmVydGV4KXt2YXIgbD10aGlzLnBvc2l0aW9uc1tyWzBdXSxjPXRo aXMucG9zaXRpb25zW3JbMV1dLHU9dGhpcy5wb3NpdGlvbnNbclsyXV0saD1b KGxbMF0rY1swXSt1WzBdKS8zLChsWzFdK2NbMV0rdVsxXSkvMywobFsyXStj WzJdK3VbMl0pLzNdO3JldHVybntfY2VsbENlbnRlcjohMCxwb3NpdGlvbjpb byxzXSxpbmRleDplLGNlbGw6cixjZWxsSWQ6ZSxpbnRlbnNpdHk6dGhpcy5p bnRlbnNpdHlbZV0sZGF0YUNvb3JkaW5hdGU6aH19dmFyIGY9ZyhhLFtvKnRo aXMucGl4ZWxSYXRpbyx0aGlzLl9yZXNvbHV0aW9uWzFdLXMqdGhpcy5waXhl bFJhdGlvXSx0aGlzLl9tb2RlbCx0aGlzLl92aWV3LHRoaXMuX3Byb2plY3Rp b24sdGhpcy5fcmVzb2x1dGlvbik7aWYoIWYpcmV0dXJuIG51bGw7dmFyIHA9 ZlsyXSxkPTA7Zm9yKGk9MDtpPHIubGVuZ3RoOysraSlkKz1wW2ldKnRoaXMu aW50ZW5zaXR5W3JbaV1dO3JldHVybntwb3NpdGlvbjpmWzFdLGluZGV4OnJb ZlswXV0sY2VsbDpyLGNlbGxJZDplLGludGVuc2l0eTpkLGRhdGFDb29yZGlu YXRlOnRoaXMucG9zaXRpb25zW3JbZlswXV1dfX0sVC5kaXNwb3NlPWZ1bmN0 aW9uKCl7dGhpcy50ZXh0dXJlLmRpc3Bvc2UoKSx0aGlzLnRyaVNoYWRlci5k aXNwb3NlKCksdGhpcy5saW5lU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBvaW50 U2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBpY2tTaGFkZXIuZGlzcG9zZSgpLHRo aXMucG9pbnRQaWNrU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlVkFP LmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlUG9zaXRpb25zLmRpc3Bvc2UoKSx0 aGlzLnRyaWFuZ2xlQ29sb3JzLmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlVVZz LmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlTm9ybWFscy5kaXNwb3NlKCksdGhp cy50cmlhbmdsZUlkcy5kaXNwb3NlKCksdGhpcy5lZGdlVkFPLmRpc3Bvc2Uo KSx0aGlzLmVkZ2VQb3NpdGlvbnMuZGlzcG9zZSgpLHRoaXMuZWRnZUNvbG9y cy5kaXNwb3NlKCksdGhpcy5lZGdlVVZzLmRpc3Bvc2UoKSx0aGlzLmVkZ2VJ ZHMuZGlzcG9zZSgpLHRoaXMucG9pbnRWQU8uZGlzcG9zZSgpLHRoaXMucG9p bnRQb3NpdGlvbnMuZGlzcG9zZSgpLHRoaXMucG9pbnRDb2xvcnMuZGlzcG9z ZSgpLHRoaXMucG9pbnRVVnMuZGlzcG9zZSgpLHRoaXMucG9pbnRTaXplcy5k aXNwb3NlKCksdGhpcy5wb2ludElkcy5kaXNwb3NlKCksdGhpcy5jb250b3Vy VkFPLmRpc3Bvc2UoKSx0aGlzLmNvbnRvdXJQb3NpdGlvbnMuZGlzcG9zZSgp LHRoaXMuY29udG91clNoYWRlci5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5j dGlvbih0LGUpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoJiYodD0oZT10KS5n bCksISh0LmdldEV4dGVuc2lvbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz Iil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfT0VTX3N0YW5kYXJkX2Rlcml2YXRp dmVzIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfT0VTX3N0YW5kYXJkX2Rl cml2YXRpdmVzIikpKXRocm93IG5ldyBFcnJvcigiZGVyaXZhdGl2ZXMgbm90 IHN1cHBvcnRlZCIpO3ZhciByPWZ1bmN0aW9uKHQpe3ZhciBlPW4odCx2LnZl cnRleCx2LmZyYWdtZW50KTtyZXR1cm4gZS5hdHRyaWJ1dGVzLnBvc2l0aW9u LmxvY2F0aW9uPTAsZS5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTIsZS5h dHRyaWJ1dGVzLnV2LmxvY2F0aW9uPTMsZS5hdHRyaWJ1dGVzLm5vcm1hbC5s b2NhdGlvbj00LGV9KHQpLHM9ZnVuY3Rpb24odCl7dmFyIGU9bih0LG0udmVy dGV4LG0uZnJhZ21lbnQpO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24u bG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuY29sb3IubG9jYXRpb249MixlLmF0 dHJpYnV0ZXMudXYubG9jYXRpb249MyxlfSh0KSxsPUEodCksYz1TKHQpLGg9 RSh0KSxmPUwodCkscD1vKHQsdShuZXcgVWludDhBcnJheShbMjU1LDI1NSwy NTUsMjU1XSksWzEsMSw0XSkpO3AuZ2VuZXJhdGVNaXBtYXAoKSxwLm1pbkZp bHRlcj10LkxJTkVBUl9NSVBNQVBfTElORUFSLHAubWFnRmlsdGVyPXQuTElO RUFSO3ZhciBkPWEodCksZz1hKHQpLHk9YSh0KSx4PWEodCksYj1hKHQpLF89 aSh0LFt7YnVmZmVyOmQsdHlwZTp0LkZMT0FULHNpemU6M30se2J1ZmZlcjpi LHR5cGU6dC5VTlNJR05FRF9CWVRFLHNpemU6NCxub3JtYWxpemVkOiEwfSx7 YnVmZmVyOmcsdHlwZTp0LkZMT0FULHNpemU6NH0se2J1ZmZlcjp5LHR5cGU6 dC5GTE9BVCxzaXplOjJ9LHtidWZmZXI6eCx0eXBlOnQuRkxPQVQsc2l6ZToz fV0pLHc9YSh0KSxUPWEodCksTT1hKHQpLEM9YSh0KSxQPWkodCxbe2J1ZmZl cjp3LHR5cGU6dC5GTE9BVCxzaXplOjN9LHtidWZmZXI6Qyx0eXBlOnQuVU5T SUdORURfQllURSxzaXplOjQsbm9ybWFsaXplZDohMH0se2J1ZmZlcjpULHR5 cGU6dC5GTE9BVCxzaXplOjR9LHtidWZmZXI6TSx0eXBlOnQuRkxPQVQsc2l6 ZToyfV0pLE89YSh0KSx6PWEodCksST1hKHQpLEQ9YSh0KSxSPWEodCksRj1p KHQsW3tidWZmZXI6Tyx0eXBlOnQuRkxPQVQsc2l6ZTozfSx7YnVmZmVyOlIs dHlwZTp0LlVOU0lHTkVEX0JZVEUsc2l6ZTo0LG5vcm1hbGl6ZWQ6ITB9LHti dWZmZXI6eix0eXBlOnQuRkxPQVQsc2l6ZTo0fSx7YnVmZmVyOkksdHlwZTp0 LkZMT0FULHNpemU6Mn0se2J1ZmZlcjpELHR5cGU6dC5GTE9BVCxzaXplOjF9 XSksQj1hKHQpLE49bmV3IGsodCxwLHIscyxsLGMsaCxmLGQsYixnLHkseCxf LHcsQyxULE0sUCxPLFIseixJLEQsRixCLGkodCxbe2J1ZmZlcjpCLHR5cGU6 dC5GTE9BVCxzaXplOjN9XSkpO3JldHVybiBOLnVwZGF0ZShlKSxOfX0seyIu L2xpYi9jbG9zZXN0LXBvaW50IjoyODEsIi4vbGliL3NoYWRlcnMiOjI4Mixj b2xvcm1hcDoxMjgsImdsLWJ1ZmZlciI6MjQ0LCJnbC1tYXQ0L2ludmVydCI6 MjY4LCJnbC1tYXQ0L211bHRpcGx5IjoyNzAsImdsLXNoYWRlciI6MzA0LCJn bC10ZXh0dXJlMmQiOjMyNCwiZ2wtdmFvIjozMjksbmRhcnJheTo0NTIsbm9y bWFsczo0NTUsInNpbXBsaWNpYWwtY29tcGxleC1jb250b3VyIjo1MTcsInR5 cGVkYXJyYXktcG9vbCI6NTQ0fV0sMjg0OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmdsLHI9 bihlLFswLDAsMCwxLDEsMCwxLDFdKSxzPWEoZSxpLmJveFZlcnQsaS5saW5l RnJhZyk7cmV0dXJuIG5ldyBvKHQscixzKX07dmFyIG49dCgiZ2wtYnVmZmVy IiksYT10KCJnbC1zaGFkZXIiKSxpPXQoIi4vc2hhZGVycyIpO2Z1bmN0aW9u IG8odCxlLHIpe3RoaXMucGxvdD10LHRoaXMudmJvPWUsdGhpcy5zaGFkZXI9 cn12YXIgcyxsLGM9by5wcm90b3R5cGU7Yy5iaW5kPWZ1bmN0aW9uKCl7dmFy IHQ9dGhpcy5zaGFkZXI7dGhpcy52Ym8uYmluZCgpLHRoaXMuc2hhZGVyLmJp bmQoKSx0LmF0dHJpYnV0ZXMuY29vcmQucG9pbnRlcigpLHQudW5pZm9ybXMu c2NyZWVuQm94PXRoaXMucGxvdC5zY3JlZW5Cb3h9LGMuZHJhd0JveD0ocz1b MCwwXSxsPVswLDBdLGZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9dGhpcy5w bG90LG89dGhpcy5zaGFkZXIsYz1pLmdsO3NbMF09dCxzWzFdPWUsbFswXT1y LGxbMV09bixvLnVuaWZvcm1zLmxvPXMsby51bmlmb3Jtcy5oaT1sLG8udW5p Zm9ybXMuY29sb3I9YSxjLmRyYXdBcnJheXMoYy5UUklBTkdMRV9TVFJJUCww LDQpfSksYy5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy52Ym8uZGlzcG9zZSgp LHRoaXMuc2hhZGVyLmRpc3Bvc2UoKX19LHsiLi9zaGFkZXJzIjoyODcsImds LWJ1ZmZlciI6MjQ0LCJnbC1zaGFkZXIiOjMwNH1dLDI4NTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFy IGU9dC5nbCxyPW4oZSksaT1hKGUsby5ncmlkVmVydCxvLmdyaWRGcmFnKSxs PWEoZSxvLnRpY2tWZXJ0LG8uZ3JpZEZyYWcpO3JldHVybiBuZXcgcyh0LHIs aSxsKX07dmFyIG49dCgiZ2wtYnVmZmVyIiksYT10KCJnbC1zaGFkZXIiKSxp PXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksbz10KCIuL3NoYWRlcnMiKTtm dW5jdGlvbiBzKHQsZSxyLG4pe3RoaXMucGxvdD10LHRoaXMudmJvPWUsdGhp cy5zaGFkZXI9cix0aGlzLnRpY2tTaGFkZXI9bix0aGlzLnRpY2tzPVtbXSxb XV19ZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0LWV9dmFyIGMsdSxoLGYscCxk PXMucHJvdG90eXBlO2QuZHJhdz0oYz1bMCwwXSx1PVswLDBdLGg9WzAsMF0s ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5wbG90LGU9dGhpcy52Ym8scj10 aGlzLnNoYWRlcixuPXRoaXMudGlja3MsYT10LmdsLGk9dC5fdGlja0JvdW5k cyxvPXQuZGF0YUJveCxzPXQudmlld0JveCxsPXQuZ3JpZExpbmVXaWR0aCxm PXQuZ3JpZExpbmVDb2xvcixwPXQuZ3JpZExpbmVFbmFibGUsZD10LnBpeGVs UmF0aW8sZz0wO2c8MjsrK2cpe3ZhciB2PWlbZ10sbT1pW2crMl0tdix5PS41 KihvW2crMl0rb1tnXSkseD1vW2crMl0tb1tnXTt1W2ddPTIqbS94LGNbZ109 Mioodi15KS94fXIuYmluZCgpLGUuYmluZCgpLHIuYXR0cmlidXRlcy5kYXRh Q29vcmQucG9pbnRlcigpLHIudW5pZm9ybXMuZGF0YVNoaWZ0PWMsci51bmlm b3Jtcy5kYXRhU2NhbGU9dTt2YXIgYj0wO2ZvcihnPTA7ZzwyOysrZyl7aFsw XT1oWzFdPTAsaFtnXT0xLHIudW5pZm9ybXMuZGF0YUF4aXM9aCxyLnVuaWZv cm1zLmxpbmVXaWR0aD1sW2ddLyhzW2crMl0tc1tnXSkqZCxyLnVuaWZvcm1z LmNvbG9yPWZbZ107dmFyIF89NipuW2ddLmxlbmd0aDtwW2ddJiZfJiZhLmRy YXdBcnJheXMoYS5UUklBTkdMRVMsYixfKSxiKz1ffX0pLGQuZHJhd1RpY2tN YXJrcz1mdW5jdGlvbigpe3ZhciB0PVswLDBdLGU9WzAsMF0scj1bMSwwXSxu PVswLDFdLGE9WzAsMF0sbz1bMCwwXTtyZXR1cm4gZnVuY3Rpb24oKXtmb3Io dmFyIHM9dGhpcy5wbG90LGM9dGhpcy52Ym8sdT10aGlzLnRpY2tTaGFkZXIs aD10aGlzLnRpY2tzLGY9cy5nbCxwPXMuX3RpY2tCb3VuZHMsZD1zLmRhdGFC b3gsZz1zLnZpZXdCb3gsdj1zLnBpeGVsUmF0aW8sbT1zLnNjcmVlbkJveCx5 PW1bMl0tbVswXSx4PW1bM10tbVsxXSxiPWdbMl0tZ1swXSxfPWdbM10tZ1sx XSx3PTA7dzwyOysrdyl7dmFyIGs9cFt3XSxUPXBbdysyXS1rLE09LjUqKGRb dysyXStkW3ddKSxBPWRbdysyXS1kW3ddO2Vbd109MipUL0EsdFt3XT0yKihr LU0pL0F9ZVswXSo9Yi95LHRbMF0qPWIveSxlWzFdKj1fL3gsdFsxXSo9Xy94 LHUuYmluZCgpLGMuYmluZCgpLHUuYXR0cmlidXRlcy5kYXRhQ29vcmQucG9p bnRlcigpO3ZhciBTPXUudW5pZm9ybXM7Uy5kYXRhU2hpZnQ9dCxTLmRhdGFT Y2FsZT1lO3ZhciBFPXMudGlja01hcmtMZW5ndGgsTD1zLnRpY2tNYXJrV2lk dGgsQz1zLnRpY2tNYXJrQ29sb3IsUD02KmhbMF0ubGVuZ3RoLE89TWF0aC5t aW4oaS5nZShoWzBdLChkWzBdLXBbMF0pLyhwWzJdLXBbMF0pLGwpLGhbMF0u bGVuZ3RoKSx6PU1hdGgubWluKGkuZ3QoaFswXSwoZFsyXS1wWzBdKS8ocFsy XS1wWzBdKSxsKSxoWzBdLmxlbmd0aCksST0wKzYqTyxEPTYqTWF0aC5tYXgo MCx6LU8pLFI9TWF0aC5taW4oaS5nZShoWzFdLChkWzFdLXBbMV0pLyhwWzNd LXBbMV0pLGwpLGhbMV0ubGVuZ3RoKSxGPU1hdGgubWluKGkuZ3QoaFsxXSwo ZFszXS1wWzFdKS8ocFszXS1wWzFdKSxsKSxoWzFdLmxlbmd0aCksQj1QKzYq UixOPTYqTWF0aC5tYXgoMCxGLVIpO2FbMF09MiooZ1swXS1FWzFdKS95LTEs YVsxXT0oZ1szXStnWzFdKS94LTEsb1swXT1FWzFdKnYveSxvWzFdPUxbMV0q di94LE4mJihTLmNvbG9yPUNbMV0sUy50aWNrU2NhbGU9byxTLmRhdGFBeGlz PW4sUy5zY3JlZW5PZmZzZXQ9YSxmLmRyYXdBcnJheXMoZi5UUklBTkdMRVMs QixOKSksYVswXT0oZ1syXStnWzBdKS95LTEsYVsxXT0yKihnWzFdLUVbMF0p L3gtMSxvWzBdPUxbMF0qdi95LG9bMV09RVswXSp2L3gsRCYmKFMuY29sb3I9 Q1swXSxTLnRpY2tTY2FsZT1vLFMuZGF0YUF4aXM9cixTLnNjcmVlbk9mZnNl dD1hLGYuZHJhd0FycmF5cyhmLlRSSUFOR0xFUyxJLEQpKSxhWzBdPTIqKGdb Ml0rRVszXSkveS0xLGFbMV09KGdbM10rZ1sxXSkveC0xLG9bMF09RVszXSp2 L3ksb1sxXT1MWzNdKnYveCxOJiYoUy5jb2xvcj1DWzNdLFMudGlja1NjYWxl PW8sUy5kYXRhQXhpcz1uLFMuc2NyZWVuT2Zmc2V0PWEsZi5kcmF3QXJyYXlz KGYuVFJJQU5HTEVTLEIsTikpLGFbMF09KGdbMl0rZ1swXSkveS0xLGFbMV09 MiooZ1szXStFWzJdKS94LTEsb1swXT1MWzJdKnYveSxvWzFdPUVbMl0qdi94 LEQmJihTLmNvbG9yPUNbMl0sUy50aWNrU2NhbGU9byxTLmRhdGFBeGlzPXIs Uy5zY3JlZW5PZmZzZXQ9YSxmLmRyYXdBcnJheXMoZi5UUklBTkdMRVMsSSxE KSl9fSgpLGQudXBkYXRlPShmPVsxLDEsLTEsLTEsMSwtMV0scD1bMSwtMSwx LDEsLTEsLTFdLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnRpY2tzLHI9dC5i b3VuZHMsbj1uZXcgRmxvYXQzMkFycmF5KDE4KihlWzBdLmxlbmd0aCtlWzFd Lmxlbmd0aCkpLGE9KHRoaXMucGxvdC56ZXJvTGluZUVuYWJsZSwwKSxpPVtb XSxbXV0sbz0wO288MjsrK28pZm9yKHZhciBzPWlbb10sbD1lW29dLGM9cltv XSx1PXJbbysyXSxoPTA7aDxsLmxlbmd0aDsrK2gpe3ZhciBkPShsW2hdLngt YykvKHUtYyk7cy5wdXNoKGQpO2Zvcih2YXIgZz0wO2c8NjsrK2cpblthKytd PWQsblthKytdPWZbZ10sblthKytdPXBbZ119dGhpcy50aWNrcz1pLHRoaXMu dmJvLnVwZGF0ZShuKX0pLGQuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMudmJv LmRpc3Bvc2UoKSx0aGlzLnNoYWRlci5kaXNwb3NlKCksdGhpcy50aWNrU2hh ZGVyLmRpc3Bvc2UoKX19LHsiLi9zaGFkZXJzIjoyODcsImJpbmFyeS1zZWFy Y2gtYm91bmRzIjoyODksImdsLWJ1ZmZlciI6MjQ0LCJnbC1zaGFkZXIiOjMw NH1dLDI4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5nbCxyPW4oZSxbLTEsLTEsLTEsMSwx LC0xLDEsMV0pLHM9YShlLGkubGluZVZlcnQsaS5saW5lRnJhZyk7cmV0dXJu IG5ldyBvKHQscixzKX07dmFyIG49dCgiZ2wtYnVmZmVyIiksYT10KCJnbC1z aGFkZXIiKSxpPXQoIi4vc2hhZGVycyIpO2Z1bmN0aW9uIG8odCxlLHIpe3Ro aXMucGxvdD10LHRoaXMudmJvPWUsdGhpcy5zaGFkZXI9cn12YXIgcyxsLGM9 by5wcm90b3R5cGU7Yy5iaW5kPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zaGFk ZXI7dGhpcy52Ym8uYmluZCgpLHRoaXMuc2hhZGVyLmJpbmQoKSx0LmF0dHJp YnV0ZXMuY29vcmQucG9pbnRlcigpLHQudW5pZm9ybXMuc2NyZWVuQm94PXRo aXMucGxvdC5zY3JlZW5Cb3h9LGMuZHJhd0xpbmU9KHM9WzAsMF0sbD1bMCww XSxmdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG89dGhpcy5wbG90LGM9dGhp cy5zaGFkZXIsdT1vLmdsO3NbMF09dCxzWzFdPWUsbFswXT1yLGxbMV09bixj LnVuaWZvcm1zLnN0YXJ0PXMsYy51bmlmb3Jtcy5lbmQ9bCxjLnVuaWZvcm1z LndpZHRoPWEqby5waXhlbFJhdGlvLGMudW5pZm9ybXMuY29sb3I9aSx1LmRy YXdBcnJheXModS5UUklBTkdMRV9TVFJJUCwwLDQpfSksYy5kaXNwb3NlPWZ1 bmN0aW9uKCl7dGhpcy52Ym8uZGlzcG9zZSgpLHRoaXMuc2hhZGVyLmRpc3Bv c2UoKX19LHsiLi9zaGFkZXJzIjoyODcsImdsLWJ1ZmZlciI6MjQ0LCJnbC1z aGFkZXIiOjMwNH1dLDI4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJnbHNsaWZ5IiksYT1uKFsicHJlY2lzaW9uIGxvd3AgZmxv YXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxudW5pZm9ybSB2ZWM0IGNvbG9yO1xu dm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLnh5 eiAqIGNvbG9yLncsIGNvbG9yLncpO1xufVxuIl0pO2UuZXhwb3J0cz17bGlu ZVZlcnQ6bihbInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBH TFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgY29vcmQ7XG5cbnVuaWZvcm0g dmVjNCBzY3JlZW5Cb3g7XG51bmlmb3JtIHZlYzIgc3RhcnQsIGVuZDtcbnVu aWZvcm0gZmxvYXQgd2lkdGg7XG5cbnZlYzIgcGVycCh2ZWMyIHYpIHtcbiAg cmV0dXJuIHZlYzIodi55LCAtdi54KTtcbn1cblxudmVjMiBzY3JlZW4odmVj MiB2KSB7XG4gIHJldHVybiAyLjAgKiAodiAtIHNjcmVlbkJveC54eSkgLyAo c2NyZWVuQm94Lnp3IC0gc2NyZWVuQm94Lnh5KSAtIDEuMDtcbn1cblxudm9p ZCBtYWluKCkge1xuICB2ZWMyIGRlbHRhID0gbm9ybWFsaXplKHBlcnAoc3Rh cnQgLSBlbmQpKTtcbiAgdmVjMiBvZmZzZXQgPSBtaXgoc3RhcnQsIGVuZCwg MC41ICogKGNvb3JkLnkrMS4wKSk7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChz Y3JlZW4ob2Zmc2V0ICsgMC41ICogd2lkdGggKiBkZWx0YSAqIGNvb3JkLngp LCAwLCAxKTtcbn1cbiJdKSxsaW5lRnJhZzphLHRleHRWZXJ0Om4oWyIjZGVm aW5lIEdMU0xJRlkgMVxuYXR0cmlidXRlIHZlYzMgdGV4dENvb3JkaW5hdGU7 XG5cbnVuaWZvcm0gdmVjMiBkYXRhU2NhbGUsIGRhdGFTaGlmdCwgZGF0YUF4 aXMsIHNjcmVlbk9mZnNldCwgdGV4dFNjYWxlO1xudW5pZm9ybSBmbG9hdCBh bmdsZTtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkYXRhT2Zmc2V0ICA9 IHRleHRDb29yZGluYXRlLno7XG4gIHZlYzIgZ2x5cGhPZmZzZXQgID0gdGV4 dENvb3JkaW5hdGUueHk7XG4gIG1hdDIgZ2x5cGhNYXRyaXggPSBtYXQyKGNv cyhhbmdsZSksIHNpbihhbmdsZSksIC1zaW4oYW5nbGUpLCBjb3MoYW5nbGUp KTtcbiAgdmVjMiBzY3JlZW5Db29yZGluYXRlID0gZGF0YUF4aXMgKiAoZGF0 YVNjYWxlICogZGF0YU9mZnNldCArIGRhdGFTaGlmdCkgK1xuICAgIGdseXBo TWF0cml4ICogZ2x5cGhPZmZzZXQgKiB0ZXh0U2NhbGUgKyBzY3JlZW5PZmZz ZXQ7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChzY3JlZW5Db29yZGluYXRlLCAw LCAxKTtcbn1cbiJdKSx0ZXh0RnJhZzphLGdyaWRWZXJ0Om4oWyJwcmVjaXNp b24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJp YnV0ZSB2ZWMzIGRhdGFDb29yZDtcblxudW5pZm9ybSB2ZWMyIGRhdGFBeGlz LCBkYXRhU2hpZnQsIGRhdGFTY2FsZTtcbnVuaWZvcm0gZmxvYXQgbGluZVdp ZHRoO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzIgcG9zID0gZGF0YUF4aXMg KiAoZGF0YVNjYWxlICogZGF0YUNvb3JkLnggKyBkYXRhU2hpZnQpO1xuICBw b3MgKz0gMTAuMCAqIGRhdGFDb29yZC55ICogdmVjMihkYXRhQXhpcy55LCAt ZGF0YUF4aXMueCkgKyBkYXRhQ29vcmQueiAqIGxpbmVXaWR0aDtcbiAgZ2xf UG9zaXRpb24gPSB2ZWM0KHBvcywgMCwgMSk7XG59XG4iXSksZ3JpZEZyYWc6 YSxib3hWZXJ0Om4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZp bmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIGNvb3JkO1xuXG51bmlm b3JtIHZlYzQgc2NyZWVuQm94O1xudW5pZm9ybSB2ZWMyIGxvLCBoaTtcblxu dmVjMiBzY3JlZW4odmVjMiB2KSB7XG4gIHJldHVybiAyLjAgKiAodiAtIHNj cmVlbkJveC54eSkgLyAoc2NyZWVuQm94Lnp3IC0gc2NyZWVuQm94Lnh5KSAt IDEuMDtcbn1cblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHZl YzQoc2NyZWVuKG1peChsbywgaGksIGNvb3JkKSksIDAsIDEpO1xufVxuIl0p LHRpY2tWZXJ0Om4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZp bmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIGRhdGFDb29yZDtcblxu dW5pZm9ybSB2ZWMyIGRhdGFBeGlzLCBkYXRhU2hpZnQsIGRhdGFTY2FsZSwg c2NyZWVuT2Zmc2V0LCB0aWNrU2NhbGU7XG5cbnZvaWQgbWFpbigpIHtcbiAg dmVjMiBwb3MgPSBkYXRhQXhpcyAqIChkYXRhU2NhbGUgKiBkYXRhQ29vcmQu eCArIGRhdGFTaGlmdCk7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MgKyB0 aWNrU2NhbGUqZGF0YUNvb3JkLnl6ICsgc2NyZWVuT2Zmc2V0LCAwLCAxKTtc bn1cbiJdKX19LHtnbHNsaWZ5OjQxMX1dLDI4ODpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5n bCxyPW4oZSksaT1hKGUscy50ZXh0VmVydCxzLnRleHRGcmFnKTtyZXR1cm4g bmV3IGwodCxyLGkpfTt2YXIgbj10KCJnbC1idWZmZXIiKSxhPXQoImdsLXNo YWRlciIpLGk9dCgidGV4dC1jYWNoZSIpLG89dCgiYmluYXJ5LXNlYXJjaC1i b3VuZHMiKSxzPXQoIi4vc2hhZGVycyIpO2Z1bmN0aW9uIGwodCxlLHIpe3Ro aXMucGxvdD10LHRoaXMudmJvPWUsdGhpcy5zaGFkZXI9cix0aGlzLnRpY2tP ZmZzZXQ9W1tdLFtdXSx0aGlzLnRpY2tYPVtbXSxbXV0sdGhpcy5sYWJlbE9m ZnNldD1bMCwwXSx0aGlzLmxhYmVsQ291bnQ9WzAsMF19dmFyIGMsdSxoLGYs cCxkLGc9bC5wcm90b3R5cGU7Zy5kcmF3VGlja3M9KGM9WzAsMF0sdT1bMCww XSxoPVswLDBdLGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGxvdCxyPXRoaXMu c2hhZGVyLG49dGhpcy50aWNrWFt0XSxhPXRoaXMudGlja09mZnNldFt0XSxp PWUuZ2wscz1lLnZpZXdCb3gsbD1lLmRhdGFCb3gsZj1lLnNjcmVlbkJveCxw PWUucGl4ZWxSYXRpbyxkPWUudGlja0VuYWJsZSxnPWUudGlja1BhZCx2PWUu dGlja0NvbG9yLG09ZS50aWNrQW5nbGUseT1lLmxhYmVsRW5hYmxlLHg9ZS5s YWJlbFBhZCxiPWUubGFiZWxDb2xvcixfPWUubGFiZWxBbmdsZSx3PXRoaXMu bGFiZWxPZmZzZXRbdF0saz10aGlzLmxhYmVsQ291bnRbdF0sVD1vLmx0KG4s bFt0XSksTT1vLmxlKG4sbFt0KzJdKTtjWzBdPWNbMV09MCxjW3RdPTEsdVt0 XT0oc1syK3RdK3NbdF0pLyhmWzIrdF0tZlt0XSktMTt2YXIgQT0yL2ZbMiso MV50KV0tZlsxXnRdO3VbMV50XT1BKnNbMV50XS0xLGRbdF0mJih1WzFedF0t PUEqcCpnW3RdLFQ8TSYmYVtNXT5hW1RdJiYoci51bmlmb3Jtcy5kYXRhQXhp cz1jLHIudW5pZm9ybXMuc2NyZWVuT2Zmc2V0PXUsci51bmlmb3Jtcy5jb2xv cj12W3RdLHIudW5pZm9ybXMuYW5nbGU9bVt0XSxpLmRyYXdBcnJheXMoaS5U UklBTkdMRVMsYVtUXSxhW01dLWFbVF0pKSkseVt0XSYmayYmKHVbMV50XS09 QSpwKnhbdF0sci51bmlmb3Jtcy5kYXRhQXhpcz1oLHIudW5pZm9ybXMuc2Ny ZWVuT2Zmc2V0PXUsci51bmlmb3Jtcy5jb2xvcj1iW3RdLHIudW5pZm9ybXMu YW5nbGU9X1t0XSxpLmRyYXdBcnJheXMoaS5UUklBTkdMRVMsdyxrKSksdVsx XnRdPUEqc1syKygxXnQpXS0xLGRbdCsyXSYmKHVbMV50XSs9QSpwKmdbdCsy XSxUPE0mJmFbTV0+YVtUXSYmKHIudW5pZm9ybXMuZGF0YUF4aXM9YyxyLnVu aWZvcm1zLnNjcmVlbk9mZnNldD11LHIudW5pZm9ybXMuY29sb3I9dlt0KzJd LHIudW5pZm9ybXMuYW5nbGU9bVt0KzJdLGkuZHJhd0FycmF5cyhpLlRSSUFO R0xFUyxhW1RdLGFbTV0tYVtUXSkpKSx5W3QrMl0mJmsmJih1WzFedF0rPUEq cCp4W3QrMl0sci51bmlmb3Jtcy5kYXRhQXhpcz1oLHIudW5pZm9ybXMuc2Ny ZWVuT2Zmc2V0PXUsci51bmlmb3Jtcy5jb2xvcj1iW3QrMl0sci51bmlmb3Jt cy5hbmdsZT1fW3QrMl0saS5kcmF3QXJyYXlzKGkuVFJJQU5HTEVTLHcsaykp fSksZy5kcmF3VGl0bGU9ZnVuY3Rpb24oKXt2YXIgdD1bMCwwXSxlPVswLDBd O3JldHVybiBmdW5jdGlvbigpe3ZhciByPXRoaXMucGxvdCxuPXRoaXMuc2hh ZGVyLGE9ci5nbCxpPXIuc2NyZWVuQm94LG89ci50aXRsZUNlbnRlcixzPXIu dGl0bGVBbmdsZSxsPXIudGl0bGVDb2xvcixjPXIucGl4ZWxSYXRpbztpZih0 aGlzLnRpdGxlQ291bnQpe2Zvcih2YXIgdT0wO3U8MjsrK3UpZVt1XT0yKihv W3VdKmMtaVt1XSkvKGlbMit1XS1pW3VdKS0xO24uYmluZCgpLG4udW5pZm9y bXMuZGF0YUF4aXM9dCxuLnVuaWZvcm1zLnNjcmVlbk9mZnNldD1lLG4udW5p Zm9ybXMuYW5nbGU9cyxuLnVuaWZvcm1zLmNvbG9yPWwsYS5kcmF3QXJyYXlz KGEuVFJJQU5HTEVTLHRoaXMudGl0bGVPZmZzZXQsdGhpcy50aXRsZUNvdW50 KX19fSgpLGcuYmluZD0oZj1bMCwwXSxwPVswLDBdLGQ9WzAsMF0sZnVuY3Rp b24oKXt2YXIgdD10aGlzLnBsb3QsZT10aGlzLnNoYWRlcixyPXQuX3RpY2tC b3VuZHMsbj10LmRhdGFCb3gsYT10LnNjcmVlbkJveCxpPXQudmlld0JveDtl LmJpbmQoKTtmb3IodmFyIG89MDtvPDI7KytvKXt2YXIgcz1yW29dLGw9cltv KzJdLXMsYz0uNSoobltvKzJdK25bb10pLHU9bltvKzJdLW5bb10saD1pW29d LGc9aVtvKzJdLWgsdj1hW29dLG09YVtvKzJdLXY7cFtvXT0yKmwvdSpnL20s ZltvXT0yKihzLWMpL3UqZy9tfWRbMV09Mip0LnBpeGVsUmF0aW8vKGFbM10t YVsxXSksZFswXT1kWzFdKihhWzNdLWFbMV0pLyhhWzJdLWFbMF0pLGUudW5p Zm9ybXMuZGF0YVNjYWxlPXAsZS51bmlmb3Jtcy5kYXRhU2hpZnQ9ZixlLnVu aWZvcm1zLnRleHRTY2FsZT1kLHRoaXMudmJvLmJpbmQoKSxlLmF0dHJpYnV0 ZXMudGV4dENvb3JkaW5hdGUucG9pbnRlcigpfSksZy51cGRhdGU9ZnVuY3Rp b24odCl7dmFyIGUscixuLGEsbyxzPVtdLGw9dC50aWNrcyxjPXQuYm91bmRz O2ZvcihvPTA7bzwyOysrbyl7dmFyIHU9W01hdGguZmxvb3Iocy5sZW5ndGgv MyldLGg9Wy0xLzBdLGY9bFtvXTtmb3IoZT0wO2U8Zi5sZW5ndGg7KytlKXt2 YXIgcD1mW2VdLGQ9cC54LGc9cC50ZXh0LHY9cC5mb250fHwic2Fucy1zZXJp ZiI7YT1wLmZvbnRTaXplfHwxMjtmb3IodmFyIG09MS8oY1tvKzJdLWNbb10p LHk9Y1tvXSx4PWcuc3BsaXQoIlxuIiksYj0wO2I8eC5sZW5ndGg7YisrKWZv cihuPWkodix4W2JdKS5kYXRhLHI9MDtyPG4ubGVuZ3RoO3IrPTIpcy5wdXNo KG5bcl0qYSwtbltyKzFdKmEtYiphKjEuMiwoZC15KSptKTt1LnB1c2goTWF0 aC5mbG9vcihzLmxlbmd0aC8zKSksaC5wdXNoKGQpfXRoaXMudGlja09mZnNl dFtvXT11LHRoaXMudGlja1hbb109aH1mb3Iobz0wO288MjsrK28pe2Zvcih0 aGlzLmxhYmVsT2Zmc2V0W29dPU1hdGguZmxvb3Iocy5sZW5ndGgvMyksbj1p KHQubGFiZWxGb250W29dLHQubGFiZWxzW29dLHt0ZXh0QWxpZ246ImNlbnRl ciJ9KS5kYXRhLGE9dC5sYWJlbFNpemVbb10sZT0wO2U8bi5sZW5ndGg7ZSs9 MilzLnB1c2gobltlXSphLC1uW2UrMV0qYSwwKTt0aGlzLmxhYmVsQ291bnRb b109TWF0aC5mbG9vcihzLmxlbmd0aC8zKS10aGlzLmxhYmVsT2Zmc2V0W29d fWZvcih0aGlzLnRpdGxlT2Zmc2V0PU1hdGguZmxvb3Iocy5sZW5ndGgvMyks bj1pKHQudGl0bGVGb250LHQudGl0bGUpLmRhdGEsYT10LnRpdGxlU2l6ZSxl PTA7ZTxuLmxlbmd0aDtlKz0yKXMucHVzaChuW2VdKmEsLW5bZSsxXSphLDAp O3RoaXMudGl0bGVDb3VudD1NYXRoLmZsb29yKHMubGVuZ3RoLzMpLXRoaXMu dGl0bGVPZmZzZXQsdGhpcy52Ym8udXBkYXRlKHMpfSxnLmRpc3Bvc2U9ZnVu Y3Rpb24oKXt0aGlzLnZiby5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9z ZSgpfX0seyIuL3NoYWRlcnMiOjI4NywiYmluYXJ5LXNlYXJjaC1ib3VuZHMi OjI4OSwiZ2wtYnVmZmVyIjoyNDQsImdsLXNoYWRlciI6MzA0LCJ0ZXh0LWNh Y2hlIjo1MzV9XSwyODk6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1b MTEzXVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHtkdXA6MTEzfV0sMjkwOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlv bih0KXt2YXIgZT10LmdsLHI9bihlLFtlLmRyYXdpbmdCdWZmZXJXaWR0aCxl LmRyYXdpbmdCdWZmZXJIZWlnaHRdKSxjPW5ldyBsKGUscik7cmV0dXJuIGMu Z3JpZD1hKGMpLGMudGV4dD1pKGMpLGMubGluZT1vKGMpLGMuYm94PXMoYyks Yy51cGRhdGUodCksY307dmFyIG49dCgiZ2wtc2VsZWN0LXN0YXRpYyIpLGE9 dCgiLi9saWIvZ3JpZCIpLGk9dCgiLi9saWIvdGV4dCIpLG89dCgiLi9saWIv bGluZSIpLHM9dCgiLi9saWIvYm94Iik7ZnVuY3Rpb24gbCh0LGUpe3RoaXMu Z2w9dCx0aGlzLnBpY2tCdWZmZXI9ZSx0aGlzLnNjcmVlbkJveD1bMCwwLHQu ZHJhd2luZ0J1ZmZlcldpZHRoLHQuZHJhd2luZ0J1ZmZlckhlaWdodF0sdGhp cy52aWV3Qm94PVswLDAsMCwwXSx0aGlzLmRhdGFCb3g9Wy0xMCwtMTAsMTAs MTBdLHRoaXMuZ3JpZExpbmVFbmFibGU9WyEwLCEwXSx0aGlzLmdyaWRMaW5l V2lkdGg9WzEsMV0sdGhpcy5ncmlkTGluZUNvbG9yPVtbMCwwLDAsMV0sWzAs MCwwLDFdXSx0aGlzLnBpeGVsUmF0aW89MSx0aGlzLnRpY2tNYXJrTGVuZ3Ro PVswLDAsMCwwXSx0aGlzLnRpY2tNYXJrV2lkdGg9WzAsMCwwLDBdLHRoaXMu dGlja01hcmtDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0s WzAsMCwwLDFdXSx0aGlzLnRpY2tQYWQ9WzE1LDE1LDE1LDE1XSx0aGlzLnRp Y2tBbmdsZT1bMCwwLDAsMF0sdGhpcy50aWNrRW5hYmxlPVshMCwhMCwhMCwh MF0sdGhpcy50aWNrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCww LDFdLFswLDAsMCwxXV0sdGhpcy5sYWJlbFBhZD1bMTUsMTUsMTUsMTVdLHRo aXMubGFiZWxBbmdsZT1bMCxNYXRoLlBJLzIsMCwzKk1hdGguUEkvMl0sdGhp cy5sYWJlbEVuYWJsZT1bITAsITAsITAsITBdLHRoaXMubGFiZWxDb2xvcj1b WzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlz LnRpdGxlQ2VudGVyPVswLDBdLHRoaXMudGl0bGVFbmFibGU9ITAsdGhpcy50 aXRsZUFuZ2xlPTAsdGhpcy50aXRsZUNvbG9yPVswLDAsMCwxXSx0aGlzLmJv cmRlckNvbG9yPVswLDAsMCwwXSx0aGlzLmJhY2tncm91bmRDb2xvcj1bMCww LDAsMF0sdGhpcy56ZXJvTGluZUVuYWJsZT1bITAsITBdLHRoaXMuemVyb0xp bmVXaWR0aD1bNCw0XSx0aGlzLnplcm9MaW5lQ29sb3I9W1swLDAsMCwxXSxb MCwwLDAsMV1dLHRoaXMuYm9yZGVyTGluZUVuYWJsZT1bITAsITAsITAsITBd LHRoaXMuYm9yZGVyTGluZVdpZHRoPVsyLDIsMiwyXSx0aGlzLmJvcmRlckxp bmVDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCww LDFdXSx0aGlzLmdyaWQ9bnVsbCx0aGlzLnRleHQ9bnVsbCx0aGlzLmxpbmU9 bnVsbCx0aGlzLmJveD1udWxsLHRoaXMub2JqZWN0cz1bXSx0aGlzLm92ZXJs YXlzPVtdLHRoaXMuX3RpY2tCb3VuZHM9WzEvMCwxLzAsLTEvMCwtMS8wXSx0 aGlzLnN0YXRpYz0hMSx0aGlzLmRpcnR5PSExLHRoaXMucGlja0RpcnR5PSEx LHRoaXMucGlja0RlbGF5PTEyMCx0aGlzLnBpY2tSYWRpdXM9MTAsdGhpcy5f cGlja1RpbWVvdXQ9bnVsbCx0aGlzLl9kcmF3UGljaz10aGlzLmRyYXdQaWNr LmJpbmQodGhpcyksdGhpcy5fZGVwdGhDb3VudGVyPTB9dmFyIGM9bC5wcm90 b3R5cGU7ZnVuY3Rpb24gdSh0KXtmb3IodmFyIGU9dC5zbGljZSgpLHI9MDty PGUubGVuZ3RoOysrcillW3JdPWVbcl0uc2xpY2UoKTtyZXR1cm4gZX1mdW5j dGlvbiBoKHQsZSl7cmV0dXJuIHQueC1lLnh9Yy5zZXREaXJ0eT1mdW5jdGlv bigpe3RoaXMuZGlydHk9dGhpcy5waWNrRGlydHk9ITB9LGMuc2V0T3Zlcmxh eURpcnR5PWZ1bmN0aW9uKCl7dGhpcy5kaXJ0eT0hMH0sYy5uZXh0RGVwdGhW YWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXB0aENvdW50ZXIrKy82 NTUzNn0sYy5kcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nbCxlPXRoaXMu c2NyZWVuQm94LHI9dGhpcy52aWV3Qm94LG49dGhpcy5kYXRhQm94LGE9dGhp cy5waXhlbFJhdGlvLGk9dGhpcy5ncmlkLG89dGhpcy5saW5lLHM9dGhpcy50 ZXh0LGw9dGhpcy5vYmplY3RzO2lmKHRoaXMuX2RlcHRoQ291bnRlcj0wLHRo aXMucGlja0RpcnR5JiYodGhpcy5fcGlja1RpbWVvdXQmJmNsZWFyVGltZW91 dCh0aGlzLl9waWNrVGltZW91dCksdGhpcy5waWNrRGlydHk9ITEsdGhpcy5f cGlja1RpbWVvdXQ9c2V0VGltZW91dCh0aGlzLl9kcmF3UGljayx0aGlzLnBp Y2tEZWxheSkpLHRoaXMuZGlydHkpe2lmKHRoaXMuZGlydHk9ITEsdC5iaW5k RnJhbWVidWZmZXIodC5GUkFNRUJVRkZFUixudWxsKSx0LmVuYWJsZSh0LlND SVNTT1JfVEVTVCksdC5kaXNhYmxlKHQuREVQVEhfVEVTVCksdC5kZXB0aEZ1 bmModC5MRVNTKSx0LmRlcHRoTWFzayghMSksdC5lbmFibGUodC5CTEVORCks dC5ibGVuZEVxdWF0aW9uKHQuRlVOQ19BREQsdC5GVU5DX0FERCksdC5ibGVu ZEZ1bmModC5PTkUsdC5PTkVfTUlOVVNfU1JDX0FMUEhBKSx0aGlzLmJvcmRl ckNvbG9yKXt0LnNjaXNzb3IoZVswXSxlWzFdLGVbMl0tZVswXSxlWzNdLWVb MV0pO3ZhciBjPXRoaXMuYm9yZGVyQ29sb3I7dC5jbGVhckNvbG9yKGNbMF0q Y1szXSxjWzFdKmNbM10sY1syXSpjWzNdLGNbM10pLHQuY2xlYXIodC5DT0xP Ul9CVUZGRVJfQklUfHQuREVQVEhfQlVGRkVSX0JJVCl9dC5zY2lzc29yKHJb MF0sclsxXSxyWzJdLXJbMF0sclszXS1yWzFdKSx0LnZpZXdwb3J0KHJbMF0s clsxXSxyWzJdLXJbMF0sclszXS1yWzFdKTt2YXIgdT10aGlzLmJhY2tncm91 bmRDb2xvcjt0LmNsZWFyQ29sb3IodVswXSp1WzNdLHVbMV0qdVszXSx1WzJd KnVbM10sdVszXSksdC5jbGVhcih0LkNPTE9SX0JVRkZFUl9CSVQpLGkuZHJh dygpO3ZhciBoPXRoaXMuemVyb0xpbmVFbmFibGUsZj10aGlzLnplcm9MaW5l Q29sb3IscD10aGlzLnplcm9MaW5lV2lkdGg7aWYoaFswXXx8aFsxXSl7by5i aW5kKCk7Zm9yKHZhciBkPTA7ZDwyOysrZClpZihoW2RdJiZuW2RdPD0wJiZu W2QrMl0+PTApe3ZhciBnPWVbZF0tbltkXSooZVtkKzJdLWVbZF0pLyhuW2Qr Ml0tbltkXSk7MD09PWQ/by5kcmF3TGluZShnLGVbMV0sZyxlWzNdLHBbZF0s ZltkXSk6by5kcmF3TGluZShlWzBdLGcsZVsyXSxnLHBbZF0sZltkXSl9fWZv cihkPTA7ZDxsLmxlbmd0aDsrK2QpbFtkXS5kcmF3KCk7dC52aWV3cG9ydChl WzBdLGVbMV0sZVsyXS1lWzBdLGVbM10tZVsxXSksdC5zY2lzc29yKGVbMF0s ZVsxXSxlWzJdLWVbMF0sZVszXS1lWzFdKSx0aGlzLmdyaWQuZHJhd1RpY2tN YXJrcygpLG8uYmluZCgpO3ZhciB2PXRoaXMuYm9yZGVyTGluZUVuYWJsZSxt PXRoaXMuYm9yZGVyTGluZVdpZHRoLHk9dGhpcy5ib3JkZXJMaW5lQ29sb3I7 Zm9yKHZbMV0mJm8uZHJhd0xpbmUoclswXSxyWzFdLS41Km1bMV0qYSxyWzBd LHJbM10rLjUqbVszXSphLG1bMV0seVsxXSksdlswXSYmby5kcmF3TGluZShy WzBdLS41Km1bMF0qYSxyWzFdLHJbMl0rLjUqbVsyXSphLHJbMV0sbVswXSx5 WzBdKSx2WzNdJiZvLmRyYXdMaW5lKHJbMl0sclsxXS0uNSptWzFdKmEsclsy XSxyWzNdKy41Km1bM10qYSxtWzNdLHlbM10pLHZbMl0mJm8uZHJhd0xpbmUo clswXS0uNSptWzBdKmEsclszXSxyWzJdKy41Km1bMl0qYSxyWzNdLG1bMl0s eVsyXSkscy5iaW5kKCksZD0wO2Q8MjsrK2Qpcy5kcmF3VGlja3MoZCk7dGhp cy50aXRsZUVuYWJsZSYmcy5kcmF3VGl0bGUoKTt2YXIgeD10aGlzLm92ZXJs YXlzO2ZvcihkPTA7ZDx4Lmxlbmd0aDsrK2QpeFtkXS5kcmF3KCk7dC5kaXNh YmxlKHQuU0NJU1NPUl9URVNUKSx0LmRpc2FibGUodC5CTEVORCksdC5kZXB0 aE1hc2soITApfX0sYy5kcmF3UGljaz1mdW5jdGlvbigpe2lmKCF0aGlzLnN0 YXRpYyl7dmFyIHQ9dGhpcy5waWNrQnVmZmVyO3RoaXMuZ2wsdGhpcy5fcGlj a1RpbWVvdXQ9bnVsbCx0LmJlZ2luKCk7Zm9yKHZhciBlPTEscj10aGlzLm9i amVjdHMsbj0wO248ci5sZW5ndGg7KytuKWU9cltuXS5kcmF3UGljayhlKTt0 LmVuZCgpfX0sYy5waWNrPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuc3RhdGlj KXt2YXIgcj10aGlzLnBpeGVsUmF0aW8sbj10aGlzLnBpY2tQaXhlbFJhdGlv LGE9dGhpcy52aWV3Qm94LGk9MHxNYXRoLnJvdW5kKCh0LWFbMF0vcikqbiks bz0wfE1hdGgucm91bmQoKGUtYVsxXS9yKSpuKSxzPXRoaXMucGlja0J1ZmZl ci5xdWVyeShpLG8sdGhpcy5waWNrUmFkaXVzKTtpZighcylyZXR1cm4gbnVs bDtmb3IodmFyIGw9cy5pZCsocy52YWx1ZVswXTw8OCkrKHMudmFsdWVbMV08 PDE2KSsocy52YWx1ZVsyXTw8MjQpLGM9dGhpcy5vYmplY3RzLHU9MDt1PGMu bGVuZ3RoOysrdSl7dmFyIGg9Y1t1XS5waWNrKGksbyxsKTtpZihoKXJldHVy biBofXJldHVybiBudWxsfX0sYy5zZXRTY3JlZW5Cb3g9ZnVuY3Rpb24odCl7 dmFyIGU9dGhpcy5zY3JlZW5Cb3gscj10aGlzLnBpeGVsUmF0aW87ZVswXT0w fE1hdGgucm91bmQodFswXSpyKSxlWzFdPTB8TWF0aC5yb3VuZCh0WzFdKnIp LGVbMl09MHxNYXRoLnJvdW5kKHRbMl0qciksZVszXT0wfE1hdGgucm91bmQo dFszXSpyKSx0aGlzLnNldERpcnR5KCl9LGMuc2V0RGF0YUJveD1mdW5jdGlv bih0KXt2YXIgZT10aGlzLmRhdGFCb3g7KGVbMF0hPT10WzBdfHxlWzFdIT09 dFsxXXx8ZVsyXSE9PXRbMl18fGVbM10hPT10WzNdKSYmKGVbMF09dFswXSxl WzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSx0aGlzLnNldERpcnR5KCkp fSxjLnNldFZpZXdCb3g9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5waXhlbFJh dGlvLHI9dGhpcy52aWV3Qm94O3JbMF09MHxNYXRoLnJvdW5kKHRbMF0qZSks clsxXT0wfE1hdGgucm91bmQodFsxXSplKSxyWzJdPTB8TWF0aC5yb3VuZCh0 WzJdKmUpLHJbM109MHxNYXRoLnJvdW5kKHRbM10qZSk7dmFyIG49dGhpcy5w aWNrUGl4ZWxSYXRpbzt0aGlzLnBpY2tCdWZmZXIuc2hhcGU9WzB8TWF0aC5y b3VuZCgodFsyXS10WzBdKSpuKSwwfE1hdGgucm91bmQoKHRbM10tdFsxXSkq bildLHRoaXMuc2V0RGlydHkoKX0sYy51cGRhdGU9ZnVuY3Rpb24odCl7dD10 fHx7fTt2YXIgZT10aGlzLmdsO3RoaXMucGl4ZWxSYXRpbz10LnBpeGVsUmF0 aW98fDE7dmFyIHI9dGhpcy5waXhlbFJhdGlvO3RoaXMucGlja1BpeGVsUmF0 aW89TWF0aC5tYXgociwxKSx0aGlzLnNldFNjcmVlbkJveCh0LnNjcmVlbkJv eHx8WzAsMCxlLmRyYXdpbmdCdWZmZXJXaWR0aC9yLGUuZHJhd2luZ0J1ZmZl ckhlaWdodC9yXSk7dGhpcy5zY3JlZW5Cb3g7dGhpcy5zZXRWaWV3Qm94KHQu dmlld0JveHx8Wy4xMjUqKHRoaXMuc2NyZWVuQm94WzJdLXRoaXMuc2NyZWVu Qm94WzBdKS9yLC4xMjUqKHRoaXMuc2NyZWVuQm94WzNdLXRoaXMuc2NyZWVu Qm94WzFdKS9yLC44NzUqKHRoaXMuc2NyZWVuQm94WzJdLXRoaXMuc2NyZWVu Qm94WzBdKS9yLC44NzUqKHRoaXMuc2NyZWVuQm94WzNdLXRoaXMuc2NyZWVu Qm94WzFdKS9yXSk7dmFyIG49dGhpcy52aWV3Qm94LGE9KG5bMl0tblswXSkv KG5bM10tblsxXSk7dGhpcy5zZXREYXRhQm94KHQuZGF0YUJveHx8Wy0xMCwt MTAvYSwxMCwxMC9hXSksdGhpcy5ib3JkZXJDb2xvcj0hMSE9PXQuYm9yZGVy Q29sb3ImJih0LmJvcmRlckNvbG9yfHxbMCwwLDAsMF0pLnNsaWNlKCksdGhp cy5iYWNrZ3JvdW5kQ29sb3I9KHQuYmFja2dyb3VuZENvbG9yfHxbMCwwLDAs MF0pLnNsaWNlKCksdGhpcy5ncmlkTGluZUVuYWJsZT0odC5ncmlkTGluZUVu YWJsZXx8WyEwLCEwXSkuc2xpY2UoKSx0aGlzLmdyaWRMaW5lV2lkdGg9KHQu Z3JpZExpbmVXaWR0aHx8WzEsMV0pLnNsaWNlKCksdGhpcy5ncmlkTGluZUNv bG9yPXUodC5ncmlkTGluZUNvbG9yfHxbWy41LC41LC41LDFdLFsuNSwuNSwu NSwxXV0pLHRoaXMuemVyb0xpbmVFbmFibGU9KHQuemVyb0xpbmVFbmFibGV8 fFshMCwhMF0pLnNsaWNlKCksdGhpcy56ZXJvTGluZVdpZHRoPSh0Lnplcm9M aW5lV2lkdGh8fFs0LDRdKS5zbGljZSgpLHRoaXMuemVyb0xpbmVDb2xvcj11 KHQuemVyb0xpbmVDb2xvcnx8W1swLDAsMCwxXSxbMCwwLDAsMV1dKSx0aGlz LnRpY2tNYXJrTGVuZ3RoPSh0LnRpY2tNYXJrTGVuZ3RofHxbMCwwLDAsMF0p LnNsaWNlKCksdGhpcy50aWNrTWFya1dpZHRoPSh0LnRpY2tNYXJrV2lkdGh8 fFswLDAsMCwwXSkuc2xpY2UoKSx0aGlzLnRpY2tNYXJrQ29sb3I9dSh0LnRp Y2tNYXJrQ29sb3J8fFtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxb MCwwLDAsMV1dKSx0aGlzLnRpdGxlQ2VudGVyPSh0LnRpdGxlQ2VudGVyfHxb LjUqKG5bMF0rblsyXSkvciwoblszXSsxMjApL3JdKS5zbGljZSgpLHRoaXMu dGl0bGVFbmFibGU9ISgidGl0bGVFbmFibGUiaW4gdCYmIXQudGl0bGVFbmFi bGUpLHRoaXMudGl0bGVBbmdsZT10LnRpdGxlQW5nbGV8fDAsdGhpcy50aXRs ZUNvbG9yPSh0LnRpdGxlQ29sb3J8fFswLDAsMCwxXSkuc2xpY2UoKSx0aGlz LmxhYmVsUGFkPSh0LmxhYmVsUGFkfHxbMTUsMTUsMTUsMTVdKS5zbGljZSgp LHRoaXMubGFiZWxBbmdsZT0odC5sYWJlbEFuZ2xlfHxbMCxNYXRoLlBJLzIs MCwzKk1hdGguUEkvMl0pLnNsaWNlKCksdGhpcy5sYWJlbEVuYWJsZT0odC5s YWJlbEVuYWJsZXx8WyEwLCEwLCEwLCEwXSkuc2xpY2UoKSx0aGlzLmxhYmVs Q29sb3I9dSh0LmxhYmVsQ29sb3J8fFtbMCwwLDAsMV0sWzAsMCwwLDFdLFsw LDAsMCwxXSxbMCwwLDAsMV1dKSx0aGlzLnRpY2tQYWQ9KHQudGlja1BhZHx8 WzE1LDE1LDE1LDE1XSkuc2xpY2UoKSx0aGlzLnRpY2tBbmdsZT0odC50aWNr QW5nbGV8fFswLDAsMCwwXSkuc2xpY2UoKSx0aGlzLnRpY2tFbmFibGU9KHQu dGlja0VuYWJsZXx8WyEwLCEwLCEwLCEwXSkuc2xpY2UoKSx0aGlzLnRpY2tD b2xvcj11KHQudGlja0NvbG9yfHxbWzAsMCwwLDFdLFswLDAsMCwxXSxbMCww LDAsMV0sWzAsMCwwLDFdXSksdGhpcy5ib3JkZXJMaW5lRW5hYmxlPSh0LmJv cmRlckxpbmVFbmFibGV8fFshMCwhMCwhMCwhMF0pLnNsaWNlKCksdGhpcy5i b3JkZXJMaW5lV2lkdGg9KHQuYm9yZGVyTGluZVdpZHRofHxbMiwyLDIsMl0p LnNsaWNlKCksdGhpcy5ib3JkZXJMaW5lQ29sb3I9dSh0LmJvcmRlckxpbmVD b2xvcnx8W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwx XV0pO3ZhciBpPXQudGlja3N8fFtbXSxbXV0sbz10aGlzLl90aWNrQm91bmRz O29bMF09b1sxXT0xLzAsb1syXT1vWzNdPS0xLzA7Zm9yKHZhciBzPTA7czwy Oysrcyl7dmFyIGw9aVtzXS5zbGljZSgwKTswIT09bC5sZW5ndGgmJihsLnNv cnQoaCksb1tzXT1NYXRoLm1pbihvW3NdLGxbMF0ueCksb1tzKzJdPU1hdGgu bWF4KG9bcysyXSxsW2wubGVuZ3RoLTFdLngpKX10aGlzLmdyaWQudXBkYXRl KHtib3VuZHM6byx0aWNrczppfSksdGhpcy50ZXh0LnVwZGF0ZSh7Ym91bmRz Om8sdGlja3M6aSxsYWJlbHM6dC5sYWJlbHN8fFsieCIsInkiXSxsYWJlbFNp emU6dC5sYWJlbFNpemV8fFsxMiwxMl0sbGFiZWxGb250OnQubGFiZWxGb250 fHxbInNhbnMtc2VyaWYiLCJzYW5zLXNlcmlmIl0sdGl0bGU6dC50aXRsZXx8 IiIsdGl0bGVTaXplOnQudGl0bGVTaXplfHwxOCx0aXRsZUZvbnQ6dC50aXRs ZUZvbnR8fCJzYW5zLXNlcmlmIn0pLHRoaXMuc3RhdGljPSEhdC5zdGF0aWMs dGhpcy5zZXREaXJ0eSgpfSxjLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmJv eC5kaXNwb3NlKCksdGhpcy5ncmlkLmRpc3Bvc2UoKSx0aGlzLnRleHQuZGlz cG9zZSgpLHRoaXMubGluZS5kaXNwb3NlKCk7Zm9yKHZhciB0PXRoaXMub2Jq ZWN0cy5sZW5ndGgtMTt0Pj0wOy0tdCl0aGlzLm9iamVjdHNbdF0uZGlzcG9z ZSgpO3RoaXMub2JqZWN0cy5sZW5ndGg9MDtmb3IodD10aGlzLm92ZXJsYXlz Lmxlbmd0aC0xO3Q+PTA7LS10KXRoaXMub3ZlcmxheXNbdF0uZGlzcG9zZSgp O3RoaXMub3ZlcmxheXMubGVuZ3RoPTAsdGhpcy5nbD1udWxsfSxjLmFkZE9i amVjdD1mdW5jdGlvbih0KXt0aGlzLm9iamVjdHMuaW5kZXhPZih0KTwwJiYo dGhpcy5vYmplY3RzLnB1c2godCksdGhpcy5zZXREaXJ0eSgpKX0sYy5yZW1v dmVPYmplY3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMub2JqZWN0cyxy PTA7cjxlLmxlbmd0aDsrK3IpaWYoZVtyXT09PXQpe2Uuc3BsaWNlKHIsMSks dGhpcy5zZXREaXJ0eSgpO2JyZWFrfX0sYy5hZGRPdmVybGF5PWZ1bmN0aW9u KHQpe3RoaXMub3ZlcmxheXMuaW5kZXhPZih0KTwwJiYodGhpcy5vdmVybGF5 cy5wdXNoKHQpLHRoaXMuc2V0T3ZlcmxheURpcnR5KCkpfSxjLnJlbW92ZU92 ZXJsYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMub3ZlcmxheXMscj0w O3I8ZS5sZW5ndGg7KytyKWlmKGVbcl09PT10KXtlLnNwbGljZShyLDEpLHRo aXMuc2V0T3ZlcmxheURpcnR5KCk7YnJlYWt9fX0seyIuL2xpYi9ib3giOjI4 NCwiLi9saWIvZ3JpZCI6Mjg1LCIuL2xpYi9saW5lIjoyODYsIi4vbGliL3Rl eHQiOjI4OCwiZ2wtc2VsZWN0LXN0YXRpYyI6MzAzfV0sMjkxOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e3Q9dHx8ZG9jdW1lbnQuYm9keSxlPWV8fHt9O3ZhciByPVsuMDEsMS8wXTsi ZGlzdGFuY2VMaW1pdHMiaW4gZSYmKHJbMF09ZS5kaXN0YW5jZUxpbWl0c1sw XSxyWzFdPWUuZGlzdGFuY2VMaW1pdHNbMV0pOyJ6b29tTWluImluIGUmJihy WzBdPWUuem9vbU1pbik7Inpvb21NYXgiaW4gZSYmKHJbMV09ZS56b29tTWF4 KTt2YXIgYz1hKHtjZW50ZXI6ZS5jZW50ZXJ8fFswLDAsMF0sdXA6ZS51cHx8 WzAsMSwwXSxleWU6ZS5leWV8fFswLDAsMTBdLG1vZGU6ZS5tb2RlfHwib3Ji aXQiLGRpc3RhbmNlTGltaXRzOnJ9KSx1PVswLDAsMCwwLDAsMCwwLDAsMCww LDAsMCwwLDAsMCwwXSxoPTAsZj10LmNsaWVudFdpZHRoLHA9dC5jbGllbnRI ZWlnaHQsZD17a2V5QmluZGluZ01vZGU6InJvdGF0ZSIsZW5hYmxlV2hlZWw6 ITAsdmlldzpjLGVsZW1lbnQ6dCxkZWxheTplLmRlbGF5fHwxNixyb3RhdGVT cGVlZDplLnJvdGF0ZVNwZWVkfHwxLHpvb21TcGVlZDplLnpvb21TcGVlZHx8 MSx0cmFuc2xhdGVTcGVlZDplLnRyYW5zbGF0ZVNwZWVkfHwxLGZsaXBYOiEh ZS5mbGlwWCxmbGlwWTohIWUuZmxpcFksbW9kZXM6Yy5tb2Rlcyxfb3J0aG86 ZS5fb3J0aG98fGUucHJvamVjdGlvbiYmIm9ydGhvZ3JhcGhpYyI9PT1lLnBy b2plY3Rpb24udHlwZXx8ITEsdGljazpmdW5jdGlvbigpe3ZhciBlPW4oKSxy PXRoaXMuZGVsYXksYT1lLTIqcjtjLmlkbGUoZS1yKSxjLnJlY2FsY01hdHJp eChhKSxjLmZsdXNoKGUtKDEwMCsyKnIpKTtmb3IodmFyIGk9ITAsbz1jLmNv bXB1dGVkTWF0cml4LHM9MDtzPDE2OysrcylpPWkmJnVbc109PT1vW3NdLHVb c109b1tzXTt2YXIgbD10LmNsaWVudFdpZHRoPT09ZiYmdC5jbGllbnRIZWln aHQ9PT1wO3JldHVybiBmPXQuY2xpZW50V2lkdGgscD10LmNsaWVudEhlaWdo dCxpPyFsOihoPU1hdGguZXhwKGMuY29tcHV0ZWRSYWRpdXNbMF0pLCEwKX0s bG9va0F0OmZ1bmN0aW9uKHQsZSxyKXtjLmxvb2tBdChjLmxhc3RUKCksdCxl LHIpfSxyb3RhdGU6ZnVuY3Rpb24odCxlLHIpe2Mucm90YXRlKGMubGFzdFQo KSx0LGUscil9LHBhbjpmdW5jdGlvbih0LGUscil7Yy5wYW4oYy5sYXN0VCgp LHQsZSxyKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSxyKXtjLnRyYW5zbGF0 ZShjLmxhc3RUKCksdCxlLHIpfX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9w ZXJ0aWVzKGQse21hdHJpeDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMuY29t cHV0ZWRNYXRyaXh9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gYy5zZXRNYXRy aXgoYy5sYXN0VCgpLHQpLGMuY29tcHV0ZWRNYXRyaXh9LGVudW1lcmFibGU6 ITB9LG1vZGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBjLmdldE1vZGUoKX0s c2V0OmZ1bmN0aW9uKHQpe3ZhciBlPWMuY29tcHV0ZWRVcC5zbGljZSgpLHI9 Yy5jb21wdXRlZEV5ZS5zbGljZSgpLGE9Yy5jb21wdXRlZENlbnRlci5zbGlj ZSgpO2lmKGMuc2V0TW9kZSh0KSwidHVybnRhYmxlIj09PXQpe3ZhciBpPW4o KTtjLl9hY3RpdmUubG9va0F0KGkscixhLGUpLGMuX2FjdGl2ZS5sb29rQXQo aSs1MDAscixhLFswLDAsMV0pLGMuX2FjdGl2ZS5mbHVzaChpKX1yZXR1cm4g Yy5nZXRNb2RlKCl9LGVudW1lcmFibGU6ITB9LGNlbnRlcjp7Z2V0OmZ1bmN0 aW9uKCl7cmV0dXJuIGMuY29tcHV0ZWRDZW50ZXJ9LHNldDpmdW5jdGlvbih0 KXtyZXR1cm4gYy5sb29rQXQoYy5sYXN0VCgpLG51bGwsdCksYy5jb21wdXRl ZENlbnRlcn0sZW51bWVyYWJsZTohMH0sZXllOntnZXQ6ZnVuY3Rpb24oKXty ZXR1cm4gYy5jb21wdXRlZEV5ZX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBj Lmxvb2tBdChjLmxhc3RUKCksdCksYy5jb21wdXRlZEV5ZX0sZW51bWVyYWJs ZTohMH0sdXA6e2dldDpmdW5jdGlvbigpe3JldHVybiBjLmNvbXB1dGVkVXB9 LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gYy5sb29rQXQoYy5sYXN0VCgpLG51 bGwsbnVsbCx0KSxjLmNvbXB1dGVkVXB9LGVudW1lcmFibGU6ITB9LGRpc3Rh bmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKHQp e3JldHVybiBjLnNldERpc3RhbmNlKGMubGFzdFQoKSx0KSx0fSxlbnVtZXJh YmxlOiEwfSxkaXN0YW5jZUxpbWl0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu IGMuZ2V0RGlzdGFuY2VMaW1pdHMocil9LHNldDpmdW5jdGlvbih0KXtyZXR1 cm4gYy5zZXREaXN0YW5jZUxpbWl0cyh0KSx0fSxlbnVtZXJhYmxlOiEwfX0p LHQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLGZ1bmN0aW9uKHQp e3JldHVybiB0LnByZXZlbnREZWZhdWx0KCksITF9KSxkLl9sYXN0WD0tMSxk Ll9sYXN0WT0tMSxkLl9sYXN0TW9kcz17c2hpZnQ6ITEsY29udHJvbDohMSxh bHQ6ITEsbWV0YTohMX0sZC5lbmFibGVNb3VzZUxpc3RlbmVycz1mdW5jdGlv bigpe2Z1bmN0aW9uIGUoZSxyLGEsaSl7dmFyIG89ZC5rZXlCaW5kaW5nTW9k ZTtpZighMSE9PW8pe3ZhciBzPSJyb3RhdGUiPT09byxsPSJwYW4iPT09byx1 PSJ6b29tIj09PW8sZj0hIWkuY29udHJvbCxwPSEhaS5hbHQsZz0hIWkuc2hp ZnQsdj0hISgxJmUpLG09ISEoMiZlKSx5PSEhKDQmZSkseD0xL3QuY2xpZW50 SGVpZ2h0LGI9eCooci1kLl9sYXN0WCksXz14KihhLWQuX2xhc3RZKSx3PWQu ZmxpcFg/MTotMSxrPWQuZmxpcFk/MTotMSxUPU1hdGguUEkqZC5yb3RhdGVT cGVlZCxNPW4oKTtpZigtMSE9PWQuX2xhc3RYJiYtMSE9PWQuX2xhc3RZJiYo KHMmJnYmJiFmJiYhcCYmIWd8fHYmJiFmJiYhcCYmZykmJmMucm90YXRlKE0s dypUKmIsLWsqVCpfLDApLChsJiZ2JiYhZiYmIXAmJiFnfHxtfHx2JiZmJiYh cCYmIWcpJiZjLnBhbihNLC1kLnRyYW5zbGF0ZVNwZWVkKmIqaCxkLnRyYW5z bGF0ZVNwZWVkKl8qaCwwKSx1JiZ2JiYhZiYmIXAmJiFnfHx5fHx2JiYhZiYm cCYmIWcpKXt2YXIgQT0tZC56b29tU3BlZWQqXy93aW5kb3cuaW5uZXJIZWln aHQqKE0tYy5sYXN0VCgpKSoxMDA7Yy5wYW4oTSwwLDAsaCooTWF0aC5leHAo QSktMSkpfXJldHVybiBkLl9sYXN0WD1yLGQuX2xhc3RZPWEsZC5fbGFzdE1v ZHM9aSwhMH19ZC5tb3VzZUxpc3RlbmVyPWkodCxlKSx0LmFkZEV2ZW50TGlz dGVuZXIoInRvdWNoc3RhcnQiLGZ1bmN0aW9uKHIpe3ZhciBuPXMoci5jaGFu Z2VkVG91Y2hlc1swXSx0KTtlKDAsblswXSxuWzFdLGQuX2xhc3RNb2RzKSxl KDEsblswXSxuWzFdLGQuX2xhc3RNb2RzKSxyLnByZXZlbnREZWZhdWx0KCl9 LCEhbCYme3Bhc3NpdmU6ITF9KSx0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNo bW92ZSIsZnVuY3Rpb24ocil7dmFyIG49cyhyLmNoYW5nZWRUb3VjaGVzWzBd LHQpO2UoMSxuWzBdLG5bMV0sZC5fbGFzdE1vZHMpLHIucHJldmVudERlZmF1 bHQoKX0sISFsJiZ7cGFzc2l2ZTohMX0pLHQuYWRkRXZlbnRMaXN0ZW5lcigi dG91Y2hlbmQiLGZ1bmN0aW9uKHQpe2UoMCxkLl9sYXN0WCxkLl9sYXN0WSxk Ll9sYXN0TW9kcyksdC5wcmV2ZW50RGVmYXVsdCgpfSwhIWwmJntwYXNzaXZl OiExfSksZC53aGVlbExpc3RlbmVyPW8odCxmdW5jdGlvbih0LGUpe2lmKCEx IT09ZC5rZXlCaW5kaW5nTW9kZSYmZC5lbmFibGVXaGVlbCl7dmFyIHI9ZC5m bGlwWD8xOi0xLGE9ZC5mbGlwWT8xOi0xLGk9bigpO2lmKE1hdGguYWJzKHQp Pk1hdGguYWJzKGUpKWMucm90YXRlKGksMCwwLC10KnIqTWF0aC5QSSpkLnJv dGF0ZVNwZWVkL3dpbmRvdy5pbm5lcldpZHRoKTtlbHNlIGlmKCFkLl9vcnRo byl7dmFyIG89LWQuem9vbVNwZWVkKmEqZS93aW5kb3cuaW5uZXJIZWlnaHQq KGktYy5sYXN0VCgpKS8yMDtjLnBhbihpLDAsMCxoKihNYXRoLmV4cChvKS0x KSl9fX0sITApfSxkLmVuYWJsZU1vdXNlTGlzdGVuZXJzKCksZH07dmFyIG49 dCgicmlnaHQtbm93IiksYT10KCIzZC12aWV3IiksaT10KCJtb3VzZS1jaGFu Z2UiKSxvPXQoIm1vdXNlLXdoZWVsIikscz10KCJtb3VzZS1ldmVudC1vZmZz ZXQiKSxsPXQoImhhcy1wYXNzaXZlLWV2ZW50cyIpfSx7IjNkLXZpZXciOjU0 LCJoYXMtcGFzc2l2ZS1ldmVudHMiOjQxMywibW91c2UtY2hhbmdlIjo0Mzcs Im1vdXNlLWV2ZW50LW9mZnNldCI6NDM4LCJtb3VzZS13aGVlbCI6NDQwLCJy aWdodC1ub3ciOjUwM31dLDI5MjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQo Imdsc2xpZnkiKSxhPXQoImdsLXNoYWRlciIpLGk9bihbInByZWNpc2lvbiBt ZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcbmF0dHJpYnV0ZSB2 ZWMyIHBvc2l0aW9uO1xudmFyeWluZyB2ZWMyIHV2O1xudm9pZCBtYWluKCkg e1xuICB1diA9IHBvc2l0aW9uO1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9z aXRpb24sIDAsIDEpO1xufSJdKSxvPW4oWyJwcmVjaXNpb24gbWVkaXVtcCBm bG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gc2FtcGxlcjJE IGFjY3VtQnVmZmVyO1xudmFyeWluZyB2ZWMyIHV2O1xuXG52b2lkIG1haW4o KSB7XG4gIHZlYzQgYWNjdW0gPSB0ZXh0dXJlMkQoYWNjdW1CdWZmZXIsIDAu NSAqICh1diArIDEuMCkpO1xuICBnbF9GcmFnQ29sb3IgPSBtaW4odmVjNCgx LDEsMSwxKSwgYWNjdW0pO1xufSJdKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7 cmV0dXJuIGEodCxpLG8sbnVsbCxbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2 ZWMyIn1dKX19LHsiZ2wtc2hhZGVyIjozMDQsZ2xzbGlmeTo0MTF9XSwyOTM6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jYW1l cmEuanMiKSxhPXQoImdsLWF4ZXMzZCIpLGk9dCgiZ2wtYXhlczNkL3Byb3Bl cnRpZXMiKSxvPXQoImdsLXNwaWtlczNkIikscz10KCJnbC1zZWxlY3Qtc3Rh dGljIiksbD10KCJnbC1mYm8iKSxjPXQoImEtYmlnLXRyaWFuZ2xlIiksdT10 KCJtb3VzZS1jaGFuZ2UiKSxoPXQoImdsLW1hdDQvcGVyc3BlY3RpdmUiKSxm PXQoImdsLW1hdDQvb3J0aG8iKSxwPXQoIi4vbGliL3NoYWRlciIpLGQ9dCgi aXMtbW9iaWxlIikoe3RhYmxldDohMH0pO2Z1bmN0aW9uIGcoKXt0aGlzLm1v dXNlPVstMSwtMV0sdGhpcy5zY3JlZW49bnVsbCx0aGlzLmRpc3RhbmNlPTEv MCx0aGlzLmluZGV4PW51bGwsdGhpcy5kYXRhQ29vcmRpbmF0ZT1udWxsLHRo aXMuZGF0YVBvc2l0aW9uPW51bGwsdGhpcy5vYmplY3Q9bnVsbCx0aGlzLmRh dGE9bnVsbH1mdW5jdGlvbiB2KHQpe3ZhciBlPU1hdGgucm91bmQoTWF0aC5s b2coTWF0aC5hYnModCkpL01hdGgubG9nKDEwKSk7aWYoZTwwKXt2YXIgcj1N YXRoLnJvdW5kKE1hdGgucG93KDEwLC1lKSk7cmV0dXJuIE1hdGguY2VpbCh0 KnIpL3J9aWYoZT4wKXtyPU1hdGgucm91bmQoTWF0aC5wb3coMTAsZSkpO3Jl dHVybiBNYXRoLmNlaWwodC9yKSpyfXJldHVybiBNYXRoLmNlaWwodCl9ZnVu Y3Rpb24gbSh0KXtyZXR1cm4iYm9vbGVhbiIhPXR5cGVvZiB0fHx0fWUuZXhw b3J0cz17Y3JlYXRlU2NlbmU6ZnVuY3Rpb24odCl7KHQ9dHx8e30pLmNhbWVy YT10LmNhbWVyYXx8e307dmFyIGU9dC5jYW52YXM7aWYoIWUpaWYoZT1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0LmNvbnRhaW5lcil7dmFy IHI9dC5jb250YWluZXI7ci5hcHBlbmRDaGlsZChlKX1lbHNlIGRvY3VtZW50 LmJvZHkuYXBwZW5kQ2hpbGQoZSk7dmFyIHk9dC5nbDt5fHwodC5nbE9wdGlv bnMmJihkPSEhdC5nbE9wdGlvbnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSx5 PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bnVsbDt0cnl7KHI9dC5nZXRDb250ZXh0 KCJ3ZWJnbCIsZSkpfHwocj10LmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13 ZWJnbCIsZSkpfWNhdGNoKHQpe3JldHVybiBudWxsfXJldHVybiByfShlLHQu Z2xPcHRpb25zfHx7cHJlbXVsdGlwbGllZEFscGhhOiEwLGFudGlhbGlhczoh MCxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ZH0pKTtpZigheSl0aHJvdyBuZXcg RXJyb3IoIndlYmdsIG5vdCBzdXBwb3J0ZWQiKTt2YXIgeD10LmJvdW5kc3x8 W1stMTAsLTEwLC0xMF0sWzEwLDEwLDEwXV0sYj1uZXcgZyxfPWwoeSx5LmRy YXdpbmdCdWZmZXJXaWR0aCx5LmRyYXdpbmdCdWZmZXJIZWlnaHQse3ByZWZl ckZsb2F0OiFkfSksdz1wKHkpLGs9dC5jYW1lcmFPYmplY3QmJiEwPT09dC5j YW1lcmFPYmplY3QuX29ydGhvfHx0LmNhbWVyYS5wcm9qZWN0aW9uJiYib3J0 aG9ncmFwaGljIj09PXQuY2FtZXJhLnByb2plY3Rpb24udHlwZXx8ITEsVD17 ZXllOnQuY2FtZXJhLmV5ZXx8WzIsMCwwXSxjZW50ZXI6dC5jYW1lcmEuY2Vu dGVyfHxbMCwwLDBdLHVwOnQuY2FtZXJhLnVwfHxbMCwxLDBdLHpvb21NaW46 dC5jYW1lcmEuem9vbU1heHx8LjEsem9vbU1heDp0LmNhbWVyYS56b29tTWlu fHwxMDAsbW9kZTp0LmNhbWVyYS5tb2RlfHwidHVybnRhYmxlIixfb3J0aG86 a30sTT10LmF4ZXN8fHt9LEE9YSh5LE0pO0EuZW5hYmxlPSFNLmRpc2FibGU7 dmFyIFM9dC5zcGlrZXN8fHt9LEU9byh5LFMpLEw9W10sQz1bXSxQPVtdLE89 W10sej0hMCxJPSEwLEQ9bmV3IEFycmF5KDE2KSxSPW5ldyBBcnJheSgxNiks Rj17dmlldzpudWxsLHByb2plY3Rpb246RCxtb2RlbDpSLF9vcnRobzohMX0s ST0hMCxCPVt5LmRyYXdpbmdCdWZmZXJXaWR0aCx5LmRyYXdpbmdCdWZmZXJI ZWlnaHRdLE49dC5jYW1lcmFPYmplY3R8fG4oZSxUKSxqPXtnbDp5LGNvbnRl eHRMb3N0OiExLHBpeGVsUmF0aW86dC5waXhlbFJhdGlvfHwxLGNhbnZhczpl LHNlbGVjdGlvbjpiLGNhbWVyYTpOLGF4ZXM6QSxheGVzUGl4ZWxzOm51bGws c3Bpa2VzOkUsYm91bmRzOngsb2JqZWN0czpMLHNoYXBlOkIsYXNwZWN0OnQu YXNwZWN0UmF0aW98fFsxLDEsMV0scGlja1JhZGl1czp0LnBpY2tSYWRpdXN8 fDEwLHpOZWFyOnQuek5lYXJ8fC4wMSx6RmFyOnQuekZhcnx8MWUzLGZvdnk6 dC5mb3Z5fHxNYXRoLlBJLzQsY2xlYXJDb2xvcjp0LmNsZWFyQ29sb3J8fFsw LDAsMCwwXSxhdXRvUmVzaXplOm0odC5hdXRvUmVzaXplKSxhdXRvQm91bmRz Om0odC5hdXRvQm91bmRzKSxhdXRvU2NhbGU6ISF0LmF1dG9TY2FsZSxhdXRv Q2VudGVyOm0odC5hdXRvQ2VudGVyKSxjbGlwVG9Cb3VuZHM6bSh0LmNsaXBU b0JvdW5kcyksc25hcFRvRGF0YTohIXQuc25hcFRvRGF0YSxvbnNlbGVjdDp0 Lm9uc2VsZWN0fHxudWxsLG9ucmVuZGVyOnQub25yZW5kZXJ8fG51bGwsb25j bGljazp0Lm9uY2xpY2t8fG51bGwsY2FtZXJhUGFyYW1zOkYsb25jb250ZXh0 bG9zczpudWxsLG1vdXNlTGlzdGVuZXI6bnVsbCxfc3RvcHBlZDohMSxnZXRB c3BlY3RyYXRpbzpmdW5jdGlvbigpe3JldHVybnt4OnRoaXMuYXNwZWN0WzBd LHk6dGhpcy5hc3BlY3RbMV0sejp0aGlzLmFzcGVjdFsyXX19LHNldEFzcGVj dHJhdGlvOmZ1bmN0aW9uKHQpe3RoaXMuYXNwZWN0WzBdPXQueCx0aGlzLmFz cGVjdFsxXT10LnksdGhpcy5hc3BlY3RbMl09dC56fSxzZXRCb3VuZHM6ZnVu Y3Rpb24odCxlKXt0aGlzLmJvdW5kc1swXVt0XT1lLm1pbix0aGlzLmJvdW5k c1sxXVt0XT1lLm1heH0sc2V0Q2xlYXJDb2xvcjpmdW5jdGlvbih0KXt0aGlz LmNsZWFyQ29sb3I9dH0sY2xlYXJSR0JBOmZ1bmN0aW9uKCl7dGhpcy5nbC5j bGVhckNvbG9yKHRoaXMuY2xlYXJDb2xvclswXSx0aGlzLmNsZWFyQ29sb3Jb MV0sdGhpcy5jbGVhckNvbG9yWzJdLHRoaXMuY2xlYXJDb2xvclszXSksdGhp cy5nbC5jbGVhcih0aGlzLmdsLkNPTE9SX0JVRkZFUl9CSVR8dGhpcy5nbC5E RVBUSF9CVUZGRVJfQklUKX19LFY9W3kuZHJhd2luZ0J1ZmZlcldpZHRoL2ou cGl4ZWxSYXRpb3wwLHkuZHJhd2luZ0J1ZmZlckhlaWdodC9qLnBpeGVsUmF0 aW98MF07ZnVuY3Rpb24gVSgpe2lmKCFqLl9zdG9wcGVkJiZqLmF1dG9SZXNp emUpe3ZhciB0PWUucGFyZW50Tm9kZSxyPTEsbj0xO3QmJnQhPT1kb2N1bWVu dC5ib2R5PyhyPXQuY2xpZW50V2lkdGgsbj10LmNsaWVudEhlaWdodCk6KHI9 d2luZG93LmlubmVyV2lkdGgsbj13aW5kb3cuaW5uZXJIZWlnaHQpO3ZhciBh PTB8TWF0aC5jZWlsKHIqai5waXhlbFJhdGlvKSxpPTB8TWF0aC5jZWlsKG4q ai5waXhlbFJhdGlvKTtpZihhIT09ZS53aWR0aHx8aSE9PWUuaGVpZ2h0KXtl LndpZHRoPWEsZS5oZWlnaHQ9aTt2YXIgbz1lLnN0eWxlO28ucG9zaXRpb249 by5wb3NpdGlvbnx8ImFic29sdXRlIixvLmxlZnQ9IjBweCIsby50b3A9IjBw eCIsby53aWR0aD1yKyJweCIsby5oZWlnaHQ9bisicHgiLHo9ITB9fX1qLmF1 dG9SZXNpemUmJlUoKTtmdW5jdGlvbiBxKCl7Zm9yKHZhciB0PUwubGVuZ3Ro LGU9Ty5sZW5ndGgscj0wO3I8ZTsrK3IpUFtyXT0wO3Q6Zm9yKHZhciByPTA7 cjx0Oysrcil7dmFyIG49TFtyXSxhPW4ucGlja1Nsb3RzO2lmKGEpe2Zvcih2 YXIgaT0wO2k8ZTsrK2kpaWYoUFtpXSthPDI1NSl7Q1tyXT1pLG4uc2V0UGlj a0Jhc2UoUFtpXSsxKSxQW2ldKz1hO2NvbnRpbnVlIHR9dmFyIG89cyh5LEIp O0Nbcl09ZSxPLnB1c2gobyksUC5wdXNoKGEpLG4uc2V0UGlja0Jhc2UoMSks ZSs9MX1lbHNlIENbcl09LTF9Zm9yKDtlPjAmJjA9PT1QW2UtMV07KVAucG9w KCksTy5wb3AoKS5kaXNwb3NlKCl9ZnVuY3Rpb24gSCgpe2lmKGouY29udGV4 dExvc3QpcmV0dXJuITA7eS5pc0NvbnRleHRMb3N0KCkmJihqLmNvbnRleHRM b3N0PSEwLGoubW91c2VMaXN0ZW5lci5lbmFibGVkPSExLGouc2VsZWN0aW9u Lm9iamVjdD1udWxsLGoub25jb250ZXh0bG9zcyYmai5vbmNvbnRleHRsb3Nz KCkpfXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLFUpLGoudXBk YXRlPWZ1bmN0aW9uKHQpe2ouX3N0b3BwZWR8fCh0PXR8fHt9LHo9ITAsST0h MCl9LGouYWRkPWZ1bmN0aW9uKHQpe2ouX3N0b3BwZWR8fCh0LmF4ZXM9QSxM LnB1c2godCksQy5wdXNoKC0xKSx6PSEwLEk9ITAscSgpKX0sai5yZW1vdmU9 ZnVuY3Rpb24odCl7aWYoIWouX3N0b3BwZWQpe3ZhciBlPUwuaW5kZXhPZih0 KTtlPDB8fChMLnNwbGljZShlLDEpLEMucG9wKCksej0hMCxJPSEwLHEoKSl9 fSxqLmRpc3Bvc2U9ZnVuY3Rpb24oKXtpZighai5fc3RvcHBlZCYmKGouX3N0 b3BwZWQ9ITAsd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIs VSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixI KSxqLm1vdXNlTGlzdGVuZXIuZW5hYmxlZD0hMSwhai5jb250ZXh0TG9zdCkp e0EuZGlzcG9zZSgpLEUuZGlzcG9zZSgpO2Zvcih2YXIgdD0wO3Q8TC5sZW5n dGg7Kyt0KUxbdF0uZGlzcG9zZSgpO18uZGlzcG9zZSgpO2Zvcih2YXIgdD0w O3Q8Ty5sZW5ndGg7Kyt0KU9bdF0uZGlzcG9zZSgpO3cuZGlzcG9zZSgpLHk9 bnVsbCxBPW51bGwsRT1udWxsLEw9W119fSxqLl9tb3VzZVJvdGF0aW5nPSEx LGouX3ByZXZCdXR0b25zPTAsai5lbmFibGVNb3VzZUxpc3RlbmVycz1mdW5j dGlvbigpe2oubW91c2VMaXN0ZW5lcj11KGUsZnVuY3Rpb24odCxlLHIpe2lm KCFqLl9zdG9wcGVkKXt2YXIgbj1PLmxlbmd0aCxhPUwubGVuZ3RoLGk9Yi5v YmplY3Q7Yi5kaXN0YW5jZT0xLzAsYi5tb3VzZVswXT1lLGIubW91c2VbMV09 cixiLm9iamVjdD1udWxsLGIuc2NyZWVuPW51bGwsYi5kYXRhQ29vcmRpbmF0 ZT1iLmRhdGFQb3NpdGlvbj1udWxsO3ZhciBvPSExO2lmKHQmJmouX3ByZXZC dXR0b25zKWouX21vdXNlUm90YXRpbmc9ITA7ZWxzZXtqLl9tb3VzZVJvdGF0 aW5nJiYoST0hMCksai5fbW91c2VSb3RhdGluZz0hMTtmb3IodmFyIHM9MDtz PG47KytzKXt2YXIgbD1PW3NdLnF1ZXJ5KGUsVlsxXS1yLTEsai5waWNrUmFk aXVzKTtpZihsKXtpZihsLmRpc3RhbmNlPmIuZGlzdGFuY2UpY29udGludWU7 Zm9yKHZhciBjPTA7YzxhOysrYyl7dmFyIHU9TFtjXTtpZihDW2NdPT09cyl7 dmFyIGg9dS5waWNrKGwpO2gmJihiLmJ1dHRvbnM9dCxiLnNjcmVlbj1sLmNv b3JkLGIuZGlzdGFuY2U9bC5kaXN0YW5jZSxiLm9iamVjdD11LGIuaW5kZXg9 aC5kaXN0YW5jZSxiLmRhdGFQb3NpdGlvbj1oLnBvc2l0aW9uLGIuZGF0YUNv b3JkaW5hdGU9aC5kYXRhQ29vcmRpbmF0ZSxiLmRhdGE9aCxvPSEwKX19fX19 aSYmaSE9PWIub2JqZWN0JiYoaS5oaWdobGlnaHQmJmkuaGlnaGxpZ2h0KG51 bGwpLHo9ITApLGIub2JqZWN0JiYoYi5vYmplY3QuaGlnaGxpZ2h0JiZiLm9i amVjdC5oaWdobGlnaHQoYi5kYXRhKSx6PSEwKSwobz1vfHxiLm9iamVjdCE9 PWkpJiZqLm9uc2VsZWN0JiZqLm9uc2VsZWN0KGIpLDEmdCYmISgxJmouX3By ZXZCdXR0b25zKSYmai5vbmNsaWNrJiZqLm9uY2xpY2soYiksai5fcHJldkJ1 dHRvbnM9dH19KX0sZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRs b3N0IixIKTt2YXIgRz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBd XSxZPVtHWzBdLnNsaWNlKCksR1sxXS5zbGljZSgpXTtmdW5jdGlvbiBXKCl7 aWYoIUgoKSl7VSgpO3ZhciB0PWouY2FtZXJhLnRpY2soKTtGLnZpZXc9ai5j YW1lcmEubWF0cml4LHo9enx8dCxJPUl8fHQsQS5waXhlbFJhdGlvPWoucGl4 ZWxSYXRpbyxFLnBpeGVsUmF0aW89ai5waXhlbFJhdGlvO3ZhciBlPUwubGVu Z3RoLHI9R1swXSxuPUdbMV07clswXT1yWzFdPXJbMl09MS8wLG5bMF09blsx XT1uWzJdPS0xLzA7Zm9yKHZhciBhPTA7YTxlOysrYSl7dmFyIG89TFthXTtv LnBpeGVsUmF0aW89ai5waXhlbFJhdGlvLG8uYXhlcz1qLmF4ZXMsej16fHwh IW8uZGlydHksST1JfHwhIW8uZGlydHk7dmFyIHM9by5ib3VuZHM7aWYocylm b3IodmFyIGw9c1swXSx1PXNbMV0scD0wO3A8MzsrK3ApcltwXT1NYXRoLm1p bihyW3BdLGxbcF0pLG5bcF09TWF0aC5tYXgobltwXSx1W3BdKX12YXIgZD1q LmJvdW5kcztpZihqLmF1dG9Cb3VuZHMpZm9yKHZhciBwPTA7cDwzOysrcCl7 aWYobltwXTxyW3BdKXJbcF09LTEsbltwXT0xO2Vsc2V7cltwXT09PW5bcF0m JihyW3BdLT0xLG5bcF0rPTEpO3ZhciBnPS4wNSoobltwXS1yW3BdKTtyW3Bd PXJbcF0tZyxuW3BdPW5bcF0rZ31kWzBdW3BdPXJbcF0sZFsxXVtwXT1uW3Bd fWZvcih2YXIgbT0hMSxwPTA7cDwzOysrcCltPW18fFlbMF1bcF0hPT1kWzBd W3BdfHxZWzFdW3BdIT09ZFsxXVtwXSxZWzBdW3BdPWRbMF1bcF0sWVsxXVtw XT1kWzFdW3BdO2lmKEk9SXx8bSx6PXp8fG0pe2lmKG0pe2Zvcih2YXIgeD1b MCwwLDBdLGE9MDthPDM7KythKXhbYV09digoZFsxXVthXS1kWzBdW2FdKS8x MCk7QS5hdXRvVGlja3M/QS51cGRhdGUoe2JvdW5kczpkLHRpY2tTcGFjaW5n Onh9KTpBLnVwZGF0ZSh7Ym91bmRzOmR9KX12YXIgVD15LmRyYXdpbmdCdWZm ZXJXaWR0aCxNPXkuZHJhd2luZ0J1ZmZlckhlaWdodDtCWzBdPVQsQlsxXT1N LFZbMF09MHxNYXRoLm1heChUL2oucGl4ZWxSYXRpbywxKSxWWzFdPTB8TWF0 aC5tYXgoTS9qLnBpeGVsUmF0aW8sMSksZnVuY3Rpb24odCxlKXt2YXIgcj10 LmJvdW5kcyxuPXQuY2FtZXJhUGFyYW1zLGE9bi5wcm9qZWN0aW9uLGk9bi5t b2RlbCxvPXQuZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLHM9dC5nbC5kcmF3aW5n QnVmZmVySGVpZ2h0LGw9dC56TmVhcixjPXQuekZhcix1PXQuZm92eSxwPW8v cztlPyhmKGEsLXAscCwtMSwxLGwsYyksbi5fb3J0aG89ITApOihoKGEsdSxw LGwsYyksbi5fb3J0aG89ITEpO2Zvcih2YXIgZD0wO2Q8MTY7KytkKWlbZF09 MDtpWzE1XT0xO2Zvcih2YXIgZz0wLGQ9MDtkPDM7KytkKWc9TWF0aC5tYXgo ZyxyWzFdW2RdLXJbMF1bZF0pO2Zvcih2YXIgZD0wO2Q8MzsrK2QpdC5hdXRv U2NhbGU/aVs1KmRdPXQuYXNwZWN0W2RdLyhyWzFdW2RdLXJbMF1bZF0pOmlb NSpkXT0xL2csdC5hdXRvQ2VudGVyJiYoaVsxMitkXT0uNSotaVs1KmRdKihy WzBdW2RdK3JbMV1bZF0pKX0oaixrKTtmb3IodmFyIGE9MDthPGU7KythKXt2 YXIgbz1MW2FdO28uYXhlc0JvdW5kcz1kLGouY2xpcFRvQm91bmRzJiYoby5j bGlwQm91bmRzPWQpfWIub2JqZWN0JiYoai5zbmFwVG9EYXRhP0UucG9zaXRp b249Yi5kYXRhQ29vcmRpbmF0ZTpFLnBvc2l0aW9uPWIuZGF0YVBvc2l0aW9u LEUuYm91bmRzPWQpLEkmJihJPSExLGZ1bmN0aW9uKCl7aWYoSCgpKXJldHVy bjt5LmNvbG9yTWFzayghMCwhMCwhMCwhMCkseS5kZXB0aE1hc2soITApLHku ZGlzYWJsZSh5LkJMRU5EKSx5LmVuYWJsZSh5LkRFUFRIX1RFU1QpLHkuZGVw dGhGdW5jKHkuTEVRVUFMKTtmb3IodmFyIHQ9TC5sZW5ndGgsZT1PLmxlbmd0 aCxyPTA7cjxlOysrcil7dmFyIG49T1tyXTtuLnNoYXBlPVYsbi5iZWdpbigp O2Zvcih2YXIgYT0wO2E8dDsrK2EpaWYoQ1thXT09PXIpe3ZhciBpPUxbYV07 aS5kcmF3UGljayYmKGkucGl4ZWxSYXRpbz0xLGkuZHJhd1BpY2soRikpfW4u ZW5kKCl9fSgpKSxqLmF4ZXNQaXhlbHM9aShqLmF4ZXMsRixULE0pLGoub25y ZW5kZXImJmoub25yZW5kZXIoKSx5LmJpbmRGcmFtZWJ1ZmZlcih5LkZSQU1F QlVGRkVSLG51bGwpLHkudmlld3BvcnQoMCwwLFQsTSksai5jbGVhclJHQkEo KSx5LmRlcHRoTWFzayghMCkseS5jb2xvck1hc2soITAsITAsITAsITApLHku ZW5hYmxlKHkuREVQVEhfVEVTVCkseS5kZXB0aEZ1bmMoeS5MRVFVQUwpLHku ZGlzYWJsZSh5LkJMRU5EKSx5LmRpc2FibGUoeS5DVUxMX0ZBQ0UpO3ZhciBT PSExO0EuZW5hYmxlJiYoUz1TfHxBLmlzVHJhbnNwYXJlbnQoKSxBLmRyYXco RikpLEUuYXhlcz1BLGIub2JqZWN0JiZFLmRyYXcoRikseS5kaXNhYmxlKHku Q1VMTF9GQUNFKTtmb3IodmFyIGE9MDthPGU7KythKXt2YXIgbz1MW2FdO28u YXhlcz1BLG8ucGl4ZWxSYXRpbz1qLnBpeGVsUmF0aW8sby5pc09wYXF1ZSYm by5pc09wYXF1ZSgpJiZvLmRyYXcoRiksby5pc1RyYW5zcGFyZW50JiZvLmlz VHJhbnNwYXJlbnQoKSYmKFM9ITApfWlmKFMpe18uc2hhcGU9QixfLmJpbmQo KSx5LmNsZWFyKHkuREVQVEhfQlVGRkVSX0JJVCkseS5jb2xvck1hc2soITEs ITEsITEsITEpLHkuZGVwdGhNYXNrKCEwKSx5LmRlcHRoRnVuYyh5LkxFU1Mp LEEuZW5hYmxlJiZBLmlzVHJhbnNwYXJlbnQoKSYmQS5kcmF3VHJhbnNwYXJl bnQoRik7Zm9yKHZhciBhPTA7YTxlOysrYSl7dmFyIG89TFthXTtvLmlzT3Bh cXVlJiZvLmlzT3BhcXVlKCkmJm8uZHJhdyhGKX15LmVuYWJsZSh5LkJMRU5E KSx5LmJsZW5kRXF1YXRpb24oeS5GVU5DX0FERCkseS5ibGVuZEZ1bmMoeS5P TkUseS5PTkVfTUlOVVNfU1JDX0FMUEhBKSx5LmNvbG9yTWFzayghMCwhMCwh MCwhMCkseS5kZXB0aE1hc2soITEpLHkuY2xlYXJDb2xvcigwLDAsMCwwKSx5 LmNsZWFyKHkuQ09MT1JfQlVGRkVSX0JJVCksQS5pc1RyYW5zcGFyZW50KCkm JkEuZHJhd1RyYW5zcGFyZW50KEYpO2Zvcih2YXIgYT0wO2E8ZTsrK2Epe3Zh ciBvPUxbYV07by5pc1RyYW5zcGFyZW50JiZvLmlzVHJhbnNwYXJlbnQoKSYm by5kcmF3VHJhbnNwYXJlbnQoRil9eS5iaW5kRnJhbWVidWZmZXIoeS5GUkFN RUJVRkZFUixudWxsKSx5LmJsZW5kRnVuYyh5Lk9ORSx5Lk9ORV9NSU5VU19T UkNfQUxQSEEpLHkuZGlzYWJsZSh5LkRFUFRIX1RFU1QpLHcuYmluZCgpLF8u Y29sb3JbMF0uYmluZCgwKSx3LnVuaWZvcm1zLmFjY3VtQnVmZmVyPTAsYyh5 KSx5LmRpc2FibGUoeS5CTEVORCl9ej0hMTtmb3IodmFyIGE9MDthPGU7Kyth KUxbYV0uZGlydHk9ITF9fX1yZXR1cm4gai5lbmFibGVNb3VzZUxpc3RlbmVy cygpLGZ1bmN0aW9uIHQoKXtqLl9zdG9wcGVkfHxqLmNvbnRleHRMb3N0fHwo VygpLHJlcXVlc3RBbmltYXRpb25GcmFtZSh0KSl9KCksai5yZWRyYXc9ZnVu Y3Rpb24oKXtqLl9zdG9wcGVkfHwoej0hMCxXKCkpfSxqfSxjcmVhdGVDYW1l cmE6bn19LHsiLi9jYW1lcmEuanMiOjI5MSwiLi9saWIvc2hhZGVyIjoyOTIs ImEtYmlnLXRyaWFuZ2xlIjo2MiwiZ2wtYXhlczNkIjoyMzYsImdsLWF4ZXMz ZC9wcm9wZXJ0aWVzIjoyNDMsImdsLWZibyI6MjUyLCJnbC1tYXQ0L29ydGhv IjoyNzEsImdsLW1hdDQvcGVyc3BlY3RpdmUiOjI3MiwiZ2wtc2VsZWN0LXN0 YXRpYyI6MzAzLCJnbC1zcGlrZXMzZCI6MzEzLCJpcy1tb2JpbGUiOjQyMiwi bW91c2UtY2hhbmdlIjo0Mzd9XSwyOTQ6W2Z1bmN0aW9uKHQsZSxyKXt2YXIg bj10KCJnbHNsaWZ5Iik7ci5wb2ludFZlcnRleD1uKFsicHJlY2lzaW9uIG1l ZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUg dmVjMiBwb3NpdGlvbjtcblxudW5pZm9ybSBtYXQzIG1hdHJpeDtcbnVuaWZv cm0gZmxvYXQgcG9pbnRTaXplO1xudW5pZm9ybSBmbG9hdCBwb2ludENsb3Vk O1xuXG5oaWdocCBmbG9hdCByYW5kKHZlYzIgY28pIHtcbiAgaGlnaHAgZmxv YXQgYSA9IDEyLjk4OTg7XG4gIGhpZ2hwIGZsb2F0IGIgPSA3OC4yMzM7XG4g IGhpZ2hwIGZsb2F0IGMgPSA0Mzc1OC41NDUzO1xuICBoaWdocCBmbG9hdCBk ID0gZG90KGNvLnh5LCB2ZWMyKGEsIGIpKTtcbiAgaGlnaHAgZmxvYXQgZSA9 IG1vZChkLCAzLjE0KTtcbiAgcmV0dXJuIGZyYWN0KHNpbihlKSAqIGMpO1xu fVxuXG52b2lkIG1haW4oKSB7XG4gIHZlYzMgaGdQb3NpdGlvbiA9IG1hdHJp eCAqIHZlYzMocG9zaXRpb24sIDEpO1xuICBnbF9Qb3NpdGlvbiAgPSB2ZWM0 KGhnUG9zaXRpb24ueHksIDAsIGhnUG9zaXRpb24ueik7XG4gICAgLy8gaWYg d2UgZG9uJ3Qgaml0dGVyIHRoZSBwb2ludCBzaXplIGEgYml0LCBvdmVyYWxs IHBvaW50IGNsb3VkXG4gICAgLy8gc2F0dXJhdGlvbiAnanVtcHMnIG9uIHpv b21pbmcsIHdoaWNoIGlzIGRpc3R1cmJpbmcgYW5kIGNvbmZ1c2luZ1xuICBn bF9Qb2ludFNpemUgPSBwb2ludFNpemUgKiAoKDE5LjUgKyByYW5kKHBvc2l0 aW9uKSkgLyAyMC4wKTtcbiAgaWYocG9pbnRDbG91ZCAhPSAwLjApIHsgLy8g cG9pbnRDbG91ZCBpcyB0cnV0aHlcbiAgICAvLyBnZXQgdGhlIHNhbWUgc3F1 YXJlIHN1cmZhY2UgYXMgY2lyY2xlIHdvdWxkIGJlXG4gICAgZ2xfUG9pbnRT aXplICo9IDAuODg2O1xuICB9XG59Il0pLHIucG9pbnRGcmFnbWVudD1uKFsi cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxu XG51bmlmb3JtIHZlYzQgY29sb3IsIGJvcmRlckNvbG9yO1xudW5pZm9ybSBm bG9hdCBjZW50ZXJGcmFjdGlvbjtcbnVuaWZvcm0gZmxvYXQgcG9pbnRDbG91 ZDtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCByYWRpdXM7XG4gIHZlYzQg YmFzZUNvbG9yO1xuICBpZihwb2ludENsb3VkICE9IDAuMCkgeyAvLyBwb2lu dENsb3VkIGlzIHRydXRoeVxuICAgIGlmKGNlbnRlckZyYWN0aW9uID09IDEu MCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4gICAgfSBlbHNl IHtcbiAgICAgIGdsX0ZyYWdDb2xvciA9IG1peChib3JkZXJDb2xvciwgY29s b3IsIGNlbnRlckZyYWN0aW9uKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAg cmFkaXVzID0gbGVuZ3RoKDIuMCAqIGdsX1BvaW50Q29vcmQueHkgLSAxLjAp O1xuICAgIGlmKHJhZGl1cyA+IDEuMCkge1xuICAgICAgZGlzY2FyZDtcbiAg ICB9XG4gICAgYmFzZUNvbG9yID0gbWl4KGJvcmRlckNvbG9yLCBjb2xvciwg c3RlcChyYWRpdXMsIGNlbnRlckZyYWN0aW9uKSk7XG4gICAgZ2xfRnJhZ0Nv bG9yID0gdmVjNChiYXNlQ29sb3IucmdiICogYmFzZUNvbG9yLmEsIGJhc2VD b2xvci5hKTtcbiAgfVxufVxuIl0pLHIucGlja1ZlcnRleD1uKFsicHJlY2lz aW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRy aWJ1dGUgdmVjMiBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IHBpY2tJZDtc blxudW5pZm9ybSBtYXQzIG1hdHJpeDtcbnVuaWZvcm0gZmxvYXQgcG9pbnRT aXplO1xudW5pZm9ybSB2ZWM0IHBpY2tPZmZzZXQ7XG5cbnZhcnlpbmcgdmVj NCBmcmFnSWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBoZ1Bvc2l0aW9u ID0gbWF0cml4ICogdmVjMyhwb3NpdGlvbiwgMSk7XG4gIGdsX1Bvc2l0aW9u ICA9IHZlYzQoaGdQb3NpdGlvbi54eSwgMCwgaGdQb3NpdGlvbi56KTtcbiAg Z2xfUG9pbnRTaXplID0gcG9pbnRTaXplO1xuXG4gIHZlYzQgaWQgPSBwaWNr SWQgKyBwaWNrT2Zmc2V0O1xuICBpZC55ICs9IGZsb29yKGlkLnggLyAyNTYu MCk7XG4gIGlkLnggLT0gZmxvb3IoaWQueCAvIDI1Ni4wKSAqIDI1Ni4wO1xu XG4gIGlkLnogKz0gZmxvb3IoaWQueSAvIDI1Ni4wKTtcbiAgaWQueSAtPSBm bG9vcihpZC55IC8gMjU2LjApICogMjU2LjA7XG5cbiAgaWQudyArPSBmbG9v cihpZC56IC8gMjU2LjApO1xuICBpZC56IC09IGZsb29yKGlkLnogLyAyNTYu MCkgKiAyNTYuMDtcblxuICBmcmFnSWQgPSBpZDtcbn1cbiJdKSxyLnBpY2tG cmFnbWVudD1uKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5l IEdMU0xJRlkgMVxuXG52YXJ5aW5nIHZlYzQgZnJhZ0lkO1xuXG52b2lkIG1h aW4oKSB7XG4gIGZsb2F0IHJhZGl1cyA9IGxlbmd0aCgyLjAgKiBnbF9Qb2lu dENvb3JkLnh5IC0gMS4wKTtcbiAgaWYocmFkaXVzID4gMS4wKSB7XG4gICAg ZGlzY2FyZDtcbiAgfVxuICBnbF9GcmFnQ29sb3IgPSBmcmFnSWQgLyAyNTUu MDtcbn1cbiJdKX0se2dsc2xpZnk6NDExfV0sMjk1OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsLXNoYWRlciIpLGE9dCgiZ2wt YnVmZmVyIiksaT10KCJ0eXBlZGFycmF5LXBvb2wiKSxvPXQoIi4vbGliL3No YWRlciIpO2Z1bmN0aW9uIHModCxlLHIsbixhKXt0aGlzLnBsb3Q9dCx0aGlz Lm9mZnNldEJ1ZmZlcj1lLHRoaXMucGlja0J1ZmZlcj1yLHRoaXMuc2hhZGVy PW4sdGhpcy5waWNrU2hhZGVyPWEsdGhpcy5zaXplTWluPS41LHRoaXMuc2l6 ZU1pbkNhcD0yLHRoaXMuc2l6ZU1heD0yMCx0aGlzLmFyZWFSYXRpbz0xLHRo aXMucG9pbnRDb3VudD0wLHRoaXMuY29sb3I9WzEsMCwwLDFdLHRoaXMuYm9y ZGVyQ29sb3I9WzAsMCwwLDFdLHRoaXMuYmxlbmQ9ITEsdGhpcy5waWNrT2Zm c2V0PTAsdGhpcy5wb2ludHM9bnVsbH1lLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXt2YXIgcj10LmdsLGk9YShyKSxsPWEociksYz1uKHIsby5wb2ludFZlcnRl eCxvLnBvaW50RnJhZ21lbnQpLHU9bihyLG8ucGlja1ZlcnRleCxvLnBpY2tG cmFnbWVudCksaD1uZXcgcyh0LGksbCxjLHUpO3JldHVybiBoLnVwZGF0ZShl KSx0LmFkZE9iamVjdChoKSxofTt2YXIgbCxjLHU9cy5wcm90b3R5cGU7dS5k aXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5zaGFkZXIuZGlzcG9zZSgpLHRoaXMu cGlja1NoYWRlci5kaXNwb3NlKCksdGhpcy5vZmZzZXRCdWZmZXIuZGlzcG9z ZSgpLHRoaXMucGlja0J1ZmZlci5kaXNwb3NlKCksdGhpcy5wbG90LnJlbW92 ZU9iamVjdCh0aGlzKX0sdS51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU7ZnVu Y3Rpb24gcihlLHIpe3JldHVybiBlIGluIHQ/dFtlXTpyfXQ9dHx8e30sdGhp cy5zaXplTWluPXIoInNpemVNaW4iLC41KSx0aGlzLnNpemVNYXg9cigic2l6 ZU1heCIsMjApLHRoaXMuY29sb3I9cigiY29sb3IiLFsxLDAsMCwxXSkuc2xp Y2UoKSx0aGlzLmFyZWFSYXRpbz1yKCJhcmVhUmF0aW8iLDEpLHRoaXMuYm9y ZGVyQ29sb3I9cigiYm9yZGVyQ29sb3IiLFswLDAsMCwxXSkuc2xpY2UoKSx0 aGlzLmJsZW5kPXIoImJsZW5kIiwhMSk7dmFyIG49dC5wb3NpdGlvbnMubGVu Z3RoPj4+MSxhPXQucG9zaXRpb25zIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5 LG89dC5pZFRvSW5kZXggaW5zdGFuY2VvZiBJbnQzMkFycmF5JiZ0LmlkVG9J bmRleC5sZW5ndGg+PW4scz10LnBvc2l0aW9ucyxsPWE/czppLm1hbGxvY0Zs b2F0MzIocy5sZW5ndGgpLGM9bz90LmlkVG9JbmRleDppLm1hbGxvY0ludDMy KG4pO2lmKGF8fGwuc2V0KHMpLCFvKWZvcihsLnNldChzKSxlPTA7ZTxuO2Ur KyljW2VdPWU7dGhpcy5wb2ludHM9cyx0aGlzLm9mZnNldEJ1ZmZlci51cGRh dGUobCksdGhpcy5waWNrQnVmZmVyLnVwZGF0ZShjKSxhfHxpLmZyZWUobCks b3x8aS5mcmVlKGMpLHRoaXMucG9pbnRDb3VudD1uLHRoaXMucGlja09mZnNl dD0wfSx1LnVuaWZpZWREcmF3PShsPVsxLDAsMCwwLDEsMCwwLDAsMV0sYz1b MCwwLDAsMF0sZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwIT09dCxyPWU/dGhp cy5waWNrU2hhZGVyOnRoaXMuc2hhZGVyLG49dGhpcy5wbG90LmdsLGE9dGhp cy5wbG90LmRhdGFCb3g7aWYoMD09PXRoaXMucG9pbnRDb3VudClyZXR1cm4g dDt2YXIgaT1hWzJdLWFbMF0sbz1hWzNdLWFbMV0scz1mdW5jdGlvbih0LGUp e3ZhciByLG49MCxhPXQubGVuZ3RoPj4+MTtmb3Iocj0wO3I8YTtyKyspe3Zh ciBpPXRbMipyXSxvPXRbMipyKzFdO2k+PWVbMF0mJmk8PWVbMl0mJm8+PWVb MV0mJm88PWVbM10mJm4rK31yZXR1cm4gbn0odGhpcy5wb2ludHMsYSksdT10 aGlzLnBsb3QucGlja1BpeGVsUmF0aW8qTWF0aC5tYXgoTWF0aC5taW4odGhp cy5zaXplTWluQ2FwLHRoaXMuc2l6ZU1pbiksTWF0aC5taW4odGhpcy5zaXpl TWF4LHRoaXMuc2l6ZU1heC9NYXRoLnBvdyhzLC4zMzMzMykpKTtsWzBdPTIv aSxsWzRdPTIvbyxsWzZdPS0yKmFbMF0vaS0xLGxbN109LTIqYVsxXS9vLTEs dGhpcy5vZmZzZXRCdWZmZXIuYmluZCgpLHIuYmluZCgpLHIuYXR0cmlidXRl cy5wb3NpdGlvbi5wb2ludGVyKCksci51bmlmb3Jtcy5tYXRyaXg9bCxyLnVu aWZvcm1zLmNvbG9yPXRoaXMuY29sb3Isci51bmlmb3Jtcy5ib3JkZXJDb2xv cj10aGlzLmJvcmRlckNvbG9yLHIudW5pZm9ybXMucG9pbnRDbG91ZD11PDUs ci51bmlmb3Jtcy5wb2ludFNpemU9dSxyLnVuaWZvcm1zLmNlbnRlckZyYWN0 aW9uPU1hdGgubWluKDEsTWF0aC5tYXgoMCxNYXRoLnNxcnQoMS10aGlzLmFy ZWFSYXRpbykpKSxlJiYoY1swXT0yNTUmdCxjWzFdPXQ+PjgmMjU1LGNbMl09 dD4+MTYmMjU1LGNbM109dD4+MjQmMjU1LHRoaXMucGlja0J1ZmZlci5iaW5k KCksci5hdHRyaWJ1dGVzLnBpY2tJZC5wb2ludGVyKG4uVU5TSUdORURfQllU RSksci51bmlmb3Jtcy5waWNrT2Zmc2V0PWMsdGhpcy5waWNrT2Zmc2V0PXQp O3ZhciBoPW4uZ2V0UGFyYW1ldGVyKG4uQkxFTkQpLGY9bi5nZXRQYXJhbWV0 ZXIobi5ESVRIRVIpO3JldHVybiBoJiYhdGhpcy5ibGVuZCYmbi5kaXNhYmxl KG4uQkxFTkQpLGYmJm4uZGlzYWJsZShuLkRJVEhFUiksbi5kcmF3QXJyYXlz KG4uUE9JTlRTLDAsdGhpcy5wb2ludENvdW50KSxoJiYhdGhpcy5ibGVuZCYm bi5lbmFibGUobi5CTEVORCksZiYmbi5lbmFibGUobi5ESVRIRVIpLHQrdGhp cy5wb2ludENvdW50fSksdS5kcmF3PXUudW5pZmllZERyYXcsdS5kcmF3UGlj az11LnVuaWZpZWREcmF3LHUucGljaz1mdW5jdGlvbih0LGUscil7dmFyIG49 dGhpcy5waWNrT2Zmc2V0LGE9dGhpcy5wb2ludENvdW50O2lmKHI8bnx8cj49 bithKXJldHVybiBudWxsO3ZhciBpPXItbixvPXRoaXMucG9pbnRzO3JldHVy bntvYmplY3Q6dGhpcyxwb2ludElkOmksZGF0YUNvb3JkOltvWzIqaV0sb1sy KmkrMV1dfX19LHsiLi9saWIvc2hhZGVyIjoyOTQsImdsLWJ1ZmZlciI6MjQ0 LCJnbC1zaGFkZXIiOjMwNCwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwyOTY6 W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7 dmFyIGEsaSxvLHMsbCxjPWVbMF0sdT1lWzFdLGg9ZVsyXSxmPWVbM10scD1y WzBdLGQ9clsxXSxnPXJbMl0sdj1yWzNdOyhpPWMqcCt1KmQraCpnK2Yqdik8 MCYmKGk9LWkscD0tcCxkPS1kLGc9LWcsdj0tdik7MS1pPjFlLTY/KGE9TWF0 aC5hY29zKGkpLG89TWF0aC5zaW4oYSkscz1NYXRoLnNpbigoMS1uKSphKS9v LGw9TWF0aC5zaW4obiphKS9vKToocz0xLW4sbD1uKTtyZXR1cm4gdFswXT1z KmMrbCpwLHRbMV09cyp1K2wqZCx0WzJdPXMqaCtsKmcsdFszXT1zKmYrbCp2 LHR9fSx7fV0sMjk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdHx8MD09PXQ/dC50b1N0cmlu ZygpOiIifX0se31dLDI5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJ2ZWN0b3JpemUtdGV4dCIpO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscil7dmFyIGk9YVtlXTtpfHwoaT1hW2VdPXt9KTtpZih0IGluIGkp cmV0dXJuIGlbdF07dmFyIG89e3RleHRBbGlnbjoiY2VudGVyIix0ZXh0QmFz ZWxpbmU6Im1pZGRsZSIsbGluZUhlaWdodDoxLGZvbnQ6ZSxsaW5lU3BhY2lu ZzoxLjI1LHN0eWxldGFnczp7YnJlYWtsaW5lczohMCxib2xkczohMCxpdGFs aWNzOiEwLHN1YnNjcmlwdHM6ITAsc3VwZXJzY3JpcHRzOiEwfSx0cmlhbmds ZXM6ITB9LHM9bih0LG8pO28udHJpYW5nbGVzPSExO3ZhciBsLGMsdT1uKHQs byk7aWYociYmMSE9PXIpe2ZvcihsPTA7bDxzLnBvc2l0aW9ucy5sZW5ndGg7 KytsKWZvcihjPTA7YzxzLnBvc2l0aW9uc1tsXS5sZW5ndGg7KytjKXMucG9z aXRpb25zW2xdW2NdLz1yO2ZvcihsPTA7bDx1LnBvc2l0aW9ucy5sZW5ndGg7 KytsKWZvcihjPTA7Yzx1LnBvc2l0aW9uc1tsXS5sZW5ndGg7KytjKXUucG9z aXRpb25zW2xdW2NdLz1yfXZhciBoPVtbMS8wLDEvMF0sWy0xLzAsLTEvMF1d LGY9dS5wb3NpdGlvbnMubGVuZ3RoO2ZvcihsPTA7bDxmOysrbCl7dmFyIHA9 dS5wb3NpdGlvbnNbbF07Zm9yKGM9MDtjPDI7KytjKWhbMF1bY109TWF0aC5t aW4oaFswXVtjXSxwW2NdKSxoWzFdW2NdPU1hdGgubWF4KGhbMV1bY10scFtj XSl9cmV0dXJuIGlbdF09W3MsdSxoXX07dmFyIGE9e319LHsidmVjdG9yaXpl LXRleHQiOjU0OX1dLDI5OTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImds LXNoYWRlciIpLGE9dCgiZ2xzbGlmeSIpLGk9YShbInByZWNpc2lvbiBoaWdo cCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5n ZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAg PiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7 XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBw KSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxu ICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5i b29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICBy ZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAg ICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5n ZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJh bmdlKGEueHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG5hdHRyaWJ1dGUgdmVj MyBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRl IHZlYzIgZ2x5cGg7XG5hdHRyaWJ1dGUgdmVjNCBpZDtcblxudW5pZm9ybSB2 ZWM0IGhpZ2hsaWdodElkO1xudW5pZm9ybSBmbG9hdCBoaWdobGlnaHRTY2Fs ZTtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVu aWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xuXG52YXJ5aW5nIHZlYzQgaW50 ZXJwQ29sb3I7XG52YXJ5aW5nIHZlYzQgcGlja0lkO1xudmFyeWluZyB2ZWMz IGRhdGFDb29yZGluYXRlO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmIChvdXRP ZlJhbmdlKGNsaXBCb3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0sIHBvc2l0aW9u KSkge1xuXG4gICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsMCwwLDApO1xuICB9 IGVsc2Uge1xuICAgIGZsb2F0IHNjYWxlID0gMS4wO1xuICAgIGlmKGRpc3Rh bmNlKGhpZ2hsaWdodElkLCBpZCkgPCAwLjAwMDEpIHtcbiAgICAgIHNjYWxl ID0gaGlnaGxpZ2h0U2NhbGU7XG4gICAgfVxuXG4gICAgdmVjNCB3b3JsZFBv c2l0aW9uID0gbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxKTtcbiAgICB2ZWM0 IHZpZXdQb3NpdGlvbiA9IHZpZXcgKiB3b3JsZFBvc2l0aW9uO1xuICAgIHZp ZXdQb3NpdGlvbiA9IHZpZXdQb3NpdGlvbiAvIHZpZXdQb3NpdGlvbi53O1xu ICAgIHZlYzQgY2xpcFBvc2l0aW9uID0gcHJvamVjdGlvbiAqICh2aWV3UG9z aXRpb24gKyBzY2FsZSAqIHZlYzQoZ2x5cGgueCwgLWdseXBoLnksIDAsIDAp KTtcblxuICAgIGdsX1Bvc2l0aW9uID0gY2xpcFBvc2l0aW9uO1xuICAgIGlu dGVycENvbG9yID0gY29sb3I7XG4gICAgcGlja0lkID0gaWQ7XG4gICAgZGF0 YUNvb3JkaW5hdGUgPSBwb3NpdGlvbjtcbiAgfVxufSJdKSxvPWEoWyJwcmVj aXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29s IG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICBy ZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1p bihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMy IGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngs IHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkp KTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMz IHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8 XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAg ICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29s IG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1 cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxuYXR0 cmlidXRlIHZlYzMgcG9zaXRpb247XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtc bmF0dHJpYnV0ZSB2ZWMyIGdseXBoO1xuYXR0cmlidXRlIHZlYzQgaWQ7XG5c bnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZv cm0gdmVjMiBzY3JlZW5TaXplO1xudW5pZm9ybSB2ZWMzIGNsaXBCb3VuZHNb Ml07XG51bmlmb3JtIGZsb2F0IGhpZ2hsaWdodFNjYWxlLCBwaXhlbFJhdGlv O1xudW5pZm9ybSB2ZWM0IGhpZ2hsaWdodElkO1xuXG52YXJ5aW5nIHZlYzQg aW50ZXJwQ29sb3I7XG52YXJ5aW5nIHZlYzQgcGlja0lkO1xudmFyeWluZyB2 ZWMzIGRhdGFDb29yZGluYXRlO1xuXG52b2lkIG1haW4oKSB7XG4gIGlmIChv dXRPZlJhbmdlKGNsaXBCb3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0sIHBvc2l0 aW9uKSkge1xuXG4gICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsMCwwLDApO1xu ICB9IGVsc2Uge1xuICAgIGZsb2F0IHNjYWxlID0gcGl4ZWxSYXRpbztcbiAg ICBpZihkaXN0YW5jZShoaWdobGlnaHRJZC5iZ3IsIGlkLmJncikgPCAwLjAw MSkge1xuICAgICAgc2NhbGUgKj0gaGlnaGxpZ2h0U2NhbGU7XG4gICAgfVxu XG4gICAgdmVjNCB3b3JsZFBvc2l0aW9uID0gbW9kZWwgKiB2ZWM0KHBvc2l0 aW9uLCAxLjApO1xuICAgIHZlYzQgdmlld1Bvc2l0aW9uID0gdmlldyAqIHdv cmxkUG9zaXRpb247XG4gICAgdmVjNCBjbGlwUG9zaXRpb24gPSBwcm9qZWN0 aW9uICogdmlld1Bvc2l0aW9uO1xuICAgIGNsaXBQb3NpdGlvbiAvPSBjbGlw UG9zaXRpb24udztcblxuICAgIGdsX1Bvc2l0aW9uID0gY2xpcFBvc2l0aW9u ICsgdmVjNChzY3JlZW5TaXplICogc2NhbGUgKiB2ZWMyKGdseXBoLngsIC1n bHlwaC55KSwgMC4wLCAwLjApO1xuICAgIGludGVycENvbG9yID0gY29sb3I7 XG4gICAgcGlja0lkID0gaWQ7XG4gICAgZGF0YUNvb3JkaW5hdGUgPSBwb3Np dGlvbjtcbiAgfVxufSJdKSxzPWEoWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7 XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQg YSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEs IGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5i b29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICBy ZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAg ICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRP ZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChv dXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZS YW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2Uo YS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBh LCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5 eiwgYi54eXosIHAueHl6KTtcbn1cblxuYXR0cmlidXRlIHZlYzMgcG9zaXRp b247XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcbmF0dHJpYnV0ZSB2ZWMyIGds eXBoO1xuYXR0cmlidXRlIHZlYzQgaWQ7XG5cbnVuaWZvcm0gZmxvYXQgaGln aGxpZ2h0U2NhbGU7XG51bmlmb3JtIHZlYzQgaGlnaGxpZ2h0SWQ7XG51bmlm b3JtIHZlYzMgYXhlc1syXTtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywg cHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMiBzY3JlZW5TaXplO1xudW5pZm9y bSB2ZWMzIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHNjYWxlLCBw aXhlbFJhdGlvO1xuXG52YXJ5aW5nIHZlYzQgaW50ZXJwQ29sb3I7XG52YXJ5 aW5nIHZlYzQgcGlja0lkO1xudmFyeWluZyB2ZWMzIGRhdGFDb29yZGluYXRl O1xuXG52b2lkIG1haW4oKSB7XG4gIGlmIChvdXRPZlJhbmdlKGNsaXBCb3Vu ZHNbMF0sIGNsaXBCb3VuZHNbMV0sIHBvc2l0aW9uKSkge1xuXG4gICAgZ2xf UG9zaXRpb24gPSB2ZWM0KDAsMCwwLDApO1xuICB9IGVsc2Uge1xuICAgIGZs b2F0IGxzY2FsZSA9IHBpeGVsUmF0aW8gKiBzY2FsZTtcbiAgICBpZihkaXN0 YW5jZShoaWdobGlnaHRJZCwgaWQpIDwgMC4wMDAxKSB7XG4gICAgICBsc2Nh bGUgKj0gaGlnaGxpZ2h0U2NhbGU7XG4gICAgfVxuXG4gICAgdmVjNCBjbGlw Q2VudGVyICAgPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChw b3NpdGlvbiwgMSk7XG4gICAgdmVjMyBkYXRhUG9zaXRpb24gPSBwb3NpdGlv biArIDAuNSpsc2NhbGUqKGF4ZXNbMF0gKiBnbHlwaC54ICsgYXhlc1sxXSAq IGdseXBoLnkpICogY2xpcENlbnRlci53ICogc2NyZWVuU2l6ZS55O1xuICAg IHZlYzQgY2xpcFBvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2Rl bCAqIHZlYzQoZGF0YVBvc2l0aW9uLCAxKTtcblxuICAgIGdsX1Bvc2l0aW9u ID0gY2xpcFBvc2l0aW9uO1xuICAgIGludGVycENvbG9yID0gY29sb3I7XG4g ICAgcGlja0lkID0gaWQ7XG4gICAgZGF0YUNvb3JkaW5hdGUgPSBkYXRhUG9z aXRpb247XG4gIH1cbn1cbiJdKSxsPWEoWyJwcmVjaXNpb24gaGlnaHAgZmxv YXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxv YXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4 KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxu XG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xu ICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAg ICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBv dXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJu IChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFu Z2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVj NCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5nZShh Lnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzIGZyYWdD bGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuXG52YXJ5 aW5nIHZlYzQgaW50ZXJwQ29sb3I7XG52YXJ5aW5nIHZlYzMgZGF0YUNvb3Jk aW5hdGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKFxuICAgIG91dE9mUmFu Z2UoZnJhZ0NsaXBCb3VuZHNbMF0sIGZyYWdDbGlwQm91bmRzWzFdLCBkYXRh Q29vcmRpbmF0ZSkgfHxcbiAgICBpbnRlcnBDb2xvci5hICogb3BhY2l0eSA9 PSAwLlxuICApIGRpc2NhcmQ7XG4gIGdsX0ZyYWdDb2xvciA9IGludGVycENv bG9yICogb3BhY2l0eTtcbn1cbiJdKSxjPWEoWyJwcmVjaXNpb24gaGlnaHAg ZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2Uo ZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4g bWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xu fVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkg e1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAg ICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9v bCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0 dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAg b3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9m UmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2Uo dmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5n ZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzIGZy YWdDbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBwaWNrR3JvdXA7XG5c bnZhcnlpbmcgdmVjNCBwaWNrSWQ7XG52YXJ5aW5nIHZlYzMgZGF0YUNvb3Jk aW5hdGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoZnJh Z0NsaXBCb3VuZHNbMF0sIGZyYWdDbGlwQm91bmRzWzFdLCBkYXRhQ29vcmRp bmF0ZSkpIGRpc2NhcmQ7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChwaWNr R3JvdXAsIHBpY2tJZC5iZ3IpO1xufSJdKSx1PVt7bmFtZToicG9zaXRpb24i LHR5cGU6InZlYzMifSx7bmFtZToiY29sb3IiLHR5cGU6InZlYzQifSx7bmFt ZToiZ2x5cGgiLHR5cGU6InZlYzIifSx7bmFtZToiaWQiLHR5cGU6InZlYzQi fV0saD17dmVydGV4OmksZnJhZ21lbnQ6bCxhdHRyaWJ1dGVzOnV9LGY9e3Zl cnRleDpvLGZyYWdtZW50OmwsYXR0cmlidXRlczp1fSxwPXt2ZXJ0ZXg6cyxm cmFnbWVudDpsLGF0dHJpYnV0ZXM6dX0sZD17dmVydGV4OmksZnJhZ21lbnQ6 YyxhdHRyaWJ1dGVzOnV9LGc9e3ZlcnRleDpvLGZyYWdtZW50OmMsYXR0cmli dXRlczp1fSx2PXt2ZXJ0ZXg6cyxmcmFnbWVudDpjLGF0dHJpYnV0ZXM6dX07 ZnVuY3Rpb24gbSh0LGUpe3ZhciByPW4odCxlKSxhPXIuYXR0cmlidXRlczty ZXR1cm4gYS5wb3NpdGlvbi5sb2NhdGlvbj0wLGEuY29sb3IubG9jYXRpb249 MSxhLmdseXBoLmxvY2F0aW9uPTIsYS5pZC5sb2NhdGlvbj0zLHJ9ci5jcmVh dGVQZXJzcGVjdGl2ZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0LGgpfSxyLmNy ZWF0ZU9ydGhvPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQsZil9LHIuY3JlYXRl UHJvamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gbSh0LHApfSxyLmNyZWF0ZVBp Y2tQZXJzcGVjdGl2ZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0LGQpfSxyLmNy ZWF0ZVBpY2tPcnRobz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0LGcpfSxyLmNy ZWF0ZVBpY2tQcm9qZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBtKHQsdil9fSx7 ImdsLXNoYWRlciI6MzA0LGdsc2xpZnk6NDExfV0sMzAwOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImlzLXN0cmluZy1ibGFuayIp LGE9dCgiZ2wtYnVmZmVyIiksaT10KCJnbC12YW8iKSxvPXQoInR5cGVkYXJy YXktcG9vbCIpLHM9dCgiZ2wtbWF0NC9tdWx0aXBseSIpLGw9dCgiLi9saWIv c2hhZGVycyIpLGM9dCgiLi9saWIvZ2x5cGhzIiksdT10KCIuL2xpYi9nZXQt c2ltcGxlLXN0cmluZyIpLGg9WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAs MCwwLDFdO2Z1bmN0aW9uIGYodCxlKXt2YXIgcj10WzBdLG49dFsxXSxhPXRb Ml0saT10WzNdO3JldHVybiB0WzBdPWVbMF0qcitlWzRdKm4rZVs4XSphK2Vb MTJdKmksdFsxXT1lWzFdKnIrZVs1XSpuK2VbOV0qYStlWzEzXSppLHRbMl09 ZVsyXSpyK2VbNl0qbitlWzEwXSphK2VbMTRdKmksdFszXT1lWzNdKnIrZVs3 XSpuK2VbMTFdKmErZVsxNV0qaSx0fWZ1bmN0aW9uIHAodCxlLHIsbil7cmV0 dXJuIGYobixuKSxmKG4sbiksZihuLG4pfWZ1bmN0aW9uIGQodCxlKXt0aGlz LmluZGV4PXQsdGhpcy5kYXRhQ29vcmRpbmF0ZT10aGlzLnBvc2l0aW9uPWV9 ZnVuY3Rpb24gZyh0KXtyZXR1cm4hMD09PXQ/MTp0PjE/MTp0fWZ1bmN0aW9u IHYodCxlLHIsbixhLGksbyxzLGwsYyx1LGgpe3RoaXMuZ2w9dCx0aGlzLnBp eGVsUmF0aW89MSx0aGlzLnNoYWRlcj1lLHRoaXMub3J0aG9TaGFkZXI9cix0 aGlzLnByb2plY3RTaGFkZXI9bix0aGlzLnBvaW50QnVmZmVyPWEsdGhpcy5j b2xvckJ1ZmZlcj1pLHRoaXMuZ2x5cGhCdWZmZXI9byx0aGlzLmlkQnVmZmVy PXMsdGhpcy52YW89bCx0aGlzLnZlcnRleENvdW50PTAsdGhpcy5saW5lVmVy dGV4Q291bnQ9MCx0aGlzLm9wYWNpdHk9MSx0aGlzLmhhc0FscGhhPSExLHRo aXMubGluZVdpZHRoPTAsdGhpcy5wcm9qZWN0U2NhbGU9WzIvMywyLzMsMi8z XSx0aGlzLnByb2plY3RPcGFjaXR5PVsxLDEsMV0sdGhpcy5wcm9qZWN0SGFz QWxwaGE9ITEsdGhpcy5waWNrSWQ9MCx0aGlzLnBpY2tQZXJzcGVjdGl2ZVNo YWRlcj1jLHRoaXMucGlja09ydGhvU2hhZGVyPXUsdGhpcy5waWNrUHJvamVj dFNoYWRlcj1oLHRoaXMucG9pbnRzPVtdLHRoaXMuX3NlbGVjdFJlc3VsdD1u ZXcgZCgwLFswLDAsMF0pLHRoaXMudXNlT3J0aG89ITAsdGhpcy5ib3VuZHM9 W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV0sdGhpcy5heGVzUHJv amVjdD1bITAsITAsITBdLHRoaXMuYXhlc0JvdW5kcz1bWy0xLzAsLTEvMCwt MS8wXSxbMS8wLDEvMCwxLzBdXSx0aGlzLmhpZ2hsaWdodElkPVsxLDEsMSwx XSx0aGlzLmhpZ2hsaWdodFNjYWxlPTIsdGhpcy5jbGlwQm91bmRzPVtbLTEv MCwtMS8wLC0xLzBdLFsxLzAsMS8wLDEvMF1dLHRoaXMuZGlydHk9ITB9ZS5l eHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2wscj1sLmNyZWF0ZVBlcnNw ZWN0aXZlKGUpLG49bC5jcmVhdGVPcnRobyhlKSxvPWwuY3JlYXRlUHJvamVj dChlKSxzPWwuY3JlYXRlUGlja1BlcnNwZWN0aXZlKGUpLGM9bC5jcmVhdGVQ aWNrT3J0aG8oZSksdT1sLmNyZWF0ZVBpY2tQcm9qZWN0KGUpLGg9YShlKSxm PWEoZSkscD1hKGUpLGQ9YShlKSxnPWkoZSxbe2J1ZmZlcjpoLHNpemU6Myx0 eXBlOmUuRkxPQVR9LHtidWZmZXI6ZixzaXplOjQsdHlwZTplLkZMT0FUfSx7 YnVmZmVyOnAsc2l6ZToyLHR5cGU6ZS5GTE9BVH0se2J1ZmZlcjpkLHNpemU6 NCx0eXBlOmUuVU5TSUdORURfQllURSxub3JtYWxpemVkOiEwfV0pLG09bmV3 IHYoZSxyLG4sbyxoLGYscCxkLGcscyxjLHUpO3JldHVybiBtLnVwZGF0ZSh0 KSxtfTt2YXIgbT12LnByb3RvdHlwZTttLnBpY2tTbG90cz0xLG0uc2V0UGlj a0Jhc2U9ZnVuY3Rpb24odCl7dGhpcy5waWNrSWQ9dH0sbS5pc1RyYW5zcGFy ZW50PWZ1bmN0aW9uKCl7aWYodGhpcy5oYXNBbHBoYSlyZXR1cm4hMDtmb3Io dmFyIHQ9MDt0PDM7Kyt0KWlmKHRoaXMuYXhlc1Byb2plY3RbdF0mJnRoaXMu cHJvamVjdEhhc0FscGhhKXJldHVybiEwO3JldHVybiExfSxtLmlzT3BhcXVl PWZ1bmN0aW9uKCl7aWYoIXRoaXMuaGFzQWxwaGEpcmV0dXJuITA7Zm9yKHZh ciB0PTA7dDwzOysrdClpZih0aGlzLmF4ZXNQcm9qZWN0W3RdJiYhdGhpcy5w cm9qZWN0SGFzQWxwaGEpcmV0dXJuITA7cmV0dXJuITF9O3ZhciB5PVswLDBd LHg9WzAsMCwwXSxiPVswLDAsMF0sXz1bMCwwLDAsMV0sdz1bMCwwLDAsMV0s az1oLnNsaWNlKCksVD1bMCwwLDBdLE09W1swLDAsMF0sWzAsMCwwXV07ZnVu Y3Rpb24gQSh0KXtyZXR1cm4gdFswXT10WzFdPXRbMl09MCx0fWZ1bmN0aW9u IFModCxlKXtyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVsxXSx0WzJdPWVbMl0s dFszXT0xLHR9ZnVuY3Rpb24gRSh0LGUscixuKXtyZXR1cm4gdFswXT1lWzBd LHRbMV09ZVsxXSx0WzJdPWVbMl0sdFtyXT1uLHR9ZnVuY3Rpb24gTCh0LGUs cixuKXt2YXIgYSxpPWUuYXhlc1Byb2plY3Qsbz1lLmdsLGw9dC51bmlmb3Jt cyxjPXIubW9kZWx8fGgsdT1yLnZpZXd8fGgsZj1yLnByb2plY3Rpb258fGgs ZD1lLmF4ZXNCb3VuZHMsZz1mdW5jdGlvbih0KXtmb3IodmFyIGU9TSxyPTA7 cjwyOysrcilmb3IodmFyIG49MDtuPDM7KytuKWVbcl1bbl09TWF0aC5tYXgo TWF0aC5taW4odFtyXVtuXSwxZTgpLC0xZTgpO3JldHVybiBlfShlLmNsaXBC b3VuZHMpO2E9ZS5heGVzJiZlLmF4ZXMubGFzdEN1YmVQcm9wcz9lLmF4ZXMu bGFzdEN1YmVQcm9wcy5heGlzOlsxLDEsMV0seVswXT0yL28uZHJhd2luZ0J1 ZmZlcldpZHRoLHlbMV09Mi9vLmRyYXdpbmdCdWZmZXJIZWlnaHQsdC5iaW5k KCksbC52aWV3PXUsbC5wcm9qZWN0aW9uPWYsbC5zY3JlZW5TaXplPXksbC5o aWdobGlnaHRJZD1lLmhpZ2hsaWdodElkLGwuaGlnaGxpZ2h0U2NhbGU9ZS5o aWdobGlnaHRTY2FsZSxsLmNsaXBCb3VuZHM9ZyxsLnBpY2tHcm91cD1lLnBp Y2tJZC8yNTUsbC5waXhlbFJhdGlvPW47Zm9yKHZhciB2PTA7djwzOysrdilp ZihpW3ZdKXtsLnNjYWxlPWUucHJvamVjdFNjYWxlW3ZdLGwub3BhY2l0eT1l LnByb2plY3RPcGFjaXR5W3ZdO2Zvcih2YXIgbT1rLEw9MDtMPDE2OysrTClt W0xdPTA7Zm9yKEw9MDtMPDQ7KytMKW1bNSpMXT0xO21bNSp2XT0wLGFbdl08 MD9tWzEyK3ZdPWRbMF1bdl06bVsxMit2XT1kWzFdW3ZdLHMobSxjLG0pLGwu bW9kZWw9bTt2YXIgQz0odisxKSUzLFA9KHYrMiklMyxPPUEoeCksej1BKGIp O09bQ109MSx6W1BdPTE7dmFyIEk9cCgwLDAsMCxTKF8sTykpLEQ9cCgwLDAs MCxTKHcseikpO2lmKE1hdGguYWJzKElbMV0pPk1hdGguYWJzKERbMV0pKXt2 YXIgUj1JO0k9RCxEPVIsUj1PLE89eix6PVI7dmFyIEY9QztDPVAsUD1GfUlb MF08MCYmKE9bQ109LTEpLERbMV0+MCYmKHpbUF09LTEpO3ZhciBCPTAsTj0w O2ZvcihMPTA7TDw0OysrTClCKz1NYXRoLnBvdyhjWzQqQytMXSwyKSxOKz1N YXRoLnBvdyhjWzQqUCtMXSwyKTtPW0NdLz1NYXRoLnNxcnQoQikseltQXS89 TWF0aC5zcXJ0KE4pLGwuYXhlc1swXT1PLGwuYXhlc1sxXT16LGwuZnJhZ0Ns aXBCb3VuZHNbMF09RShULGdbMF0sdiwtMWU4KSxsLmZyYWdDbGlwQm91bmRz WzFdPUUoVCxnWzFdLHYsMWU4KSxlLnZhby5iaW5kKCksZS52YW8uZHJhdyhv LlRSSUFOR0xFUyxlLnZlcnRleENvdW50KSxlLmxpbmVXaWR0aD4wJiYoby5s aW5lV2lkdGgoZS5saW5lV2lkdGgqbiksZS52YW8uZHJhdyhvLkxJTkVTLGUu bGluZVZlcnRleENvdW50LGUudmVydGV4Q291bnQpKSxlLnZhby51bmJpbmQo KX19dmFyIEM9W1stMWU4LC0xZTgsLTFlOF0sWzFlOCwxZTgsMWU4XV07ZnVu Y3Rpb24gUCh0LGUscixuLGEsaSxvKXt2YXIgcz1yLmdsO2lmKChpPT09ci5w cm9qZWN0SGFzQWxwaGF8fG8pJiZMKGUscixuLGEpLGk9PT1yLmhhc0FscGhh fHxvKXt0LmJpbmQoKTt2YXIgbD10LnVuaWZvcm1zO2wubW9kZWw9bi5tb2Rl bHx8aCxsLnZpZXc9bi52aWV3fHxoLGwucHJvamVjdGlvbj1uLnByb2plY3Rp b258fGgseVswXT0yL3MuZHJhd2luZ0J1ZmZlcldpZHRoLHlbMV09Mi9zLmRy YXdpbmdCdWZmZXJIZWlnaHQsbC5zY3JlZW5TaXplPXksbC5oaWdobGlnaHRJ ZD1yLmhpZ2hsaWdodElkLGwuaGlnaGxpZ2h0U2NhbGU9ci5oaWdobGlnaHRT Y2FsZSxsLmZyYWdDbGlwQm91bmRzPUMsbC5jbGlwQm91bmRzPXIuYXhlcy5i b3VuZHMsbC5vcGFjaXR5PXIub3BhY2l0eSxsLnBpY2tHcm91cD1yLnBpY2tJ ZC8yNTUsbC5waXhlbFJhdGlvPWEsci52YW8uYmluZCgpLHIudmFvLmRyYXco cy5UUklBTkdMRVMsci52ZXJ0ZXhDb3VudCksci5saW5lV2lkdGg+MCYmKHMu bGluZVdpZHRoKHIubGluZVdpZHRoKmEpLHIudmFvLmRyYXcocy5MSU5FUyxy LmxpbmVWZXJ0ZXhDb3VudCxyLnZlcnRleENvdW50KSksci52YW8udW5iaW5k KCl9fWZ1bmN0aW9uIE8odCxlLHIsYSl7dmFyIGk7aT1BcnJheS5pc0FycmF5 KHQpP2U8dC5sZW5ndGg/dFtlXTp2b2lkIDA6dCxpPXUoaSk7dmFyIG89ITA7 bihpKSYmKGk9Ilx1MjViYyIsbz0hMSk7dmFyIHM9YyhpLHIsYSk7cmV0dXJu e21lc2g6c1swXSxsaW5lczpzWzFdLGJvdW5kczpzWzJdLHZpc2libGU6b319 bS5kcmF3PWZ1bmN0aW9uKHQpe1AodGhpcy51c2VPcnRobz90aGlzLm9ydGhv U2hhZGVyOnRoaXMuc2hhZGVyLHRoaXMucHJvamVjdFNoYWRlcix0aGlzLHQs dGhpcy5waXhlbFJhdGlvLCExLCExKX0sbS5kcmF3VHJhbnNwYXJlbnQ9ZnVu Y3Rpb24odCl7UCh0aGlzLnVzZU9ydGhvP3RoaXMub3J0aG9TaGFkZXI6dGhp cy5zaGFkZXIsdGhpcy5wcm9qZWN0U2hhZGVyLHRoaXMsdCx0aGlzLnBpeGVs UmF0aW8sITAsITEpfSxtLmRyYXdQaWNrPWZ1bmN0aW9uKHQpe1AodGhpcy51 c2VPcnRobz90aGlzLnBpY2tPcnRob1NoYWRlcjp0aGlzLnBpY2tQZXJzcGVj dGl2ZVNoYWRlcix0aGlzLnBpY2tQcm9qZWN0U2hhZGVyLHRoaXMsdCwxLCEw LCEwKX0sbS5waWNrPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO2lm KHQuaWQhPT10aGlzLnBpY2tJZClyZXR1cm4gbnVsbDt2YXIgZT10LnZhbHVl WzJdKyh0LnZhbHVlWzFdPDw4KSsodC52YWx1ZVswXTw8MTYpO2lmKGU+PXRo aXMucG9pbnRDb3VudHx8ZTwwKXJldHVybiBudWxsO3ZhciByPXRoaXMucG9p bnRzW2VdLG49dGhpcy5fc2VsZWN0UmVzdWx0O24uaW5kZXg9ZTtmb3IodmFy IGE9MDthPDM7KythKW4ucG9zaXRpb25bYV09bi5kYXRhQ29vcmRpbmF0ZVth XT1yW2FdO3JldHVybiBufSxtLmhpZ2hsaWdodD1mdW5jdGlvbih0KXtpZih0 KXt2YXIgZT10LmluZGV4LHI9MjU1JmUsbj1lPj44JjI1NSxhPWU+PjE2JjI1 NTt0aGlzLmhpZ2hsaWdodElkPVtyLzI1NSxuLzI1NSxhLzI1NSwwXX1lbHNl IHRoaXMuaGlnaGxpZ2h0SWQ9WzEsMSwxLDFdfSxtLnVwZGF0ZT1mdW5jdGlv bih0KXtpZigicGVyc3BlY3RpdmUiaW4odD10fHx7fSkmJih0aGlzLnVzZU9y dGhvPSF0LnBlcnNwZWN0aXZlKSwib3J0aG9ncmFwaGljImluIHQmJih0aGlz LnVzZU9ydGhvPSEhdC5vcnRob2dyYXBoaWMpLCJsaW5lV2lkdGgiaW4gdCYm KHRoaXMubGluZVdpZHRoPXQubGluZVdpZHRoKSwicHJvamVjdCJpbiB0KWlm KEFycmF5LmlzQXJyYXkodC5wcm9qZWN0KSl0aGlzLmF4ZXNQcm9qZWN0PXQu cHJvamVjdDtlbHNle3ZhciBlPSEhdC5wcm9qZWN0O3RoaXMuYXhlc1Byb2pl Y3Q9W2UsZSxlXX1pZigicHJvamVjdFNjYWxlImluIHQpaWYoQXJyYXkuaXNB cnJheSh0LnByb2plY3RTY2FsZSkpdGhpcy5wcm9qZWN0U2NhbGU9dC5wcm9q ZWN0U2NhbGUuc2xpY2UoKTtlbHNle3ZhciByPSt0LnByb2plY3RTY2FsZTt0 aGlzLnByb2plY3RTY2FsZT1bcixyLHJdfWlmKHRoaXMucHJvamVjdEhhc0Fs cGhhPSExLCJwcm9qZWN0T3BhY2l0eSJpbiB0KXtpZihBcnJheS5pc0FycmF5 KHQucHJvamVjdE9wYWNpdHkpKXRoaXMucHJvamVjdE9wYWNpdHk9dC5wcm9q ZWN0T3BhY2l0eS5zbGljZSgpO2Vsc2V7cj0rdC5wcm9qZWN0T3BhY2l0eTt0 aGlzLnByb2plY3RPcGFjaXR5PVtyLHIscl19Zm9yKHZhciBuPTA7bjwzOysr bil0aGlzLnByb2plY3RPcGFjaXR5W25dPWcodGhpcy5wcm9qZWN0T3BhY2l0 eVtuXSksdGhpcy5wcm9qZWN0T3BhY2l0eVtuXTwxJiYodGhpcy5wcm9qZWN0 SGFzQWxwaGE9ITApfXRoaXMuaGFzQWxwaGE9ITEsIm9wYWNpdHkiaW4gdCYm KHRoaXMub3BhY2l0eT1nKHQub3BhY2l0eSksdGhpcy5vcGFjaXR5PDEmJih0 aGlzLmhhc0FscGhhPSEwKSksdGhpcy5kaXJ0eT0hMDt2YXIgYSxpLHM9dC5w b3NpdGlvbixsPXQuZm9udHx8Im5vcm1hbCIsYz10LmFsaWdubWVudHx8WzAs MF07aWYoMj09PWMubGVuZ3RoKWE9Y1swXSxpPWNbMV07ZWxzZXthPVtdLGk9 W107Zm9yKG49MDtuPGMubGVuZ3RoOysrbilhW25dPWNbbl1bMF0saVtuXT1j W25dWzFdfXZhciB1PVsxLzAsMS8wLDEvMF0saD1bLTEvMCwtMS8wLC0xLzBd LGY9dC5nbHlwaCxwPXQuY29sb3IsZD10LnNpemUsdj10LmFuZ2xlLG09dC5s aW5lQ29sb3IseT0tMSx4PTAsYj0wLF89MDtpZihzLmxlbmd0aCl7Xz1zLmxl bmd0aDt0OmZvcihuPTA7bjxfOysrbil7Zm9yKHZhciB3PXNbbl0saz0wO2s8 MzsrK2spaWYoaXNOYU4od1trXSl8fCFpc0Zpbml0ZSh3W2tdKSljb250aW51 ZSB0O3ZhciBUPShOPU8oZixuLGwsdGhpcy5waXhlbFJhdGlvKSkubWVzaCxN PU4ubGluZXMsQT1OLmJvdW5kczt4Kz0zKlQuY2VsbHMubGVuZ3RoLGIrPTIq TS5lZGdlcy5sZW5ndGh9fXZhciBTPXgrYixFPW8ubWFsbG9jRmxvYXQoMypT KSxMPW8ubWFsbG9jRmxvYXQoNCpTKSxDPW8ubWFsbG9jRmxvYXQoMipTKSxQ PW8ubWFsbG9jVWludDMyKFMpO2lmKFM+MCl7dmFyIHo9MCxJPXgsRD1bMCww LDAsMV0sUj1bMCwwLDAsMV0sRj1BcnJheS5pc0FycmF5KHApJiZBcnJheS5p c0FycmF5KHBbMF0pLEI9QXJyYXkuaXNBcnJheShtKSYmQXJyYXkuaXNBcnJh eShtWzBdKTt0OmZvcihuPTA7bjxfOysrbil7eSs9MTtmb3Iodz1zW25dLGs9 MDtrPDM7KytrKXtpZihpc05hTih3W2tdKXx8IWlzRmluaXRlKHdba10pKWNv bnRpbnVlIHQ7aFtrXT1NYXRoLm1heChoW2tdLHdba10pLHVba109TWF0aC5t aW4odVtrXSx3W2tdKX1UPShOPU8oZixuLGwsdGhpcy5waXhlbFJhdGlvKSku bWVzaCxNPU4ubGluZXMsQT1OLmJvdW5kczt2YXIgTixqPU4udmlzaWJsZTtp ZihqKWlmKEFycmF5LmlzQXJyYXkocCkpe2lmKDM9PT0oVj1GP248cC5sZW5n dGg/cFtuXTpbMCwwLDAsMF06cCkubGVuZ3RoKXtmb3Ioaz0wO2s8MzsrK2sp RFtrXT1WW2tdO0RbM109MX1lbHNlIGlmKDQ9PT1WLmxlbmd0aCl7Zm9yKGs9 MDtrPDQ7KytrKURba109VltrXTshdGhpcy5oYXNBbHBoYSYmVlszXTwxJiYo dGhpcy5oYXNBbHBoYT0hMCl9fWVsc2UgRFswXT1EWzFdPURbMl09MCxEWzNd PTE7ZWxzZSBEPVsxLDEsMSwwXTtpZihqKWlmKEFycmF5LmlzQXJyYXkobSkp e3ZhciBWO2lmKDM9PT0oVj1CP248bS5sZW5ndGg/bVtuXTpbMCwwLDAsMF06 bSkubGVuZ3RoKXtmb3Ioaz0wO2s8MzsrK2spUltrXT1WW2tdO1Jba109MX1l bHNlIGlmKDQ9PT1WLmxlbmd0aCl7Zm9yKGs9MDtrPDQ7KytrKVJba109Vltr XTshdGhpcy5oYXNBbHBoYSYmVlszXTwxJiYodGhpcy5oYXNBbHBoYT0hMCl9 fWVsc2UgUlswXT1SWzFdPVJbMl09MCxSWzNdPTE7ZWxzZSBSPVsxLDEsMSww XTt2YXIgVT0uNTtqP0FycmF5LmlzQXJyYXkoZCk/VT1uPGQubGVuZ3RoPytk W25dOjEyOmQ/VT0rZDp0aGlzLnVzZU9ydGhvJiYoVT0xMik6VT0wO3ZhciBx PTA7QXJyYXkuaXNBcnJheSh2KT9xPW48di5sZW5ndGg/K3Zbbl06MDp2JiYo cT0rdik7dmFyIEg9TWF0aC5jb3MocSksRz1NYXRoLnNpbihxKTtmb3Iodz1z W25dLGs9MDtrPDM7KytrKWhba109TWF0aC5tYXgoaFtrXSx3W2tdKSx1W2td PU1hdGgubWluKHVba10sd1trXSk7dmFyIFk9YSxXPWk7WT0wO0FycmF5Lmlz QXJyYXkoYSk/WT1uPGEubGVuZ3RoP2Fbbl06MDphJiYoWT1hKTtXPTA7QXJy YXkuaXNBcnJheShpKT9XPW48aS5sZW5ndGg/aVtuXTowOmkmJihXPWkpO3Zh ciBYPVtZKj1ZPjA/MS1BWzBdWzBdOlk8MD8xK0FbMV1bMF06MSxXKj1XPjA/ MS1BWzBdWzFdOlc8MD8xK0FbMV1bMV06MV0sWj1ULmNlbGxzfHxbXSxKPVQu cG9zaXRpb25zfHxbXTtmb3Ioaz0wO2s8Wi5sZW5ndGg7KytrKWZvcih2YXIg Sz1aW2tdLFE9MDtRPDM7KytRKXtmb3IodmFyICQ9MDskPDM7KyskKUVbMyp6 KyRdPXdbJF07Zm9yKCQ9MDskPDQ7KyskKUxbNCp6KyRdPURbJF07UFt6XT15 O3ZhciB0dD1KW0tbUV1dO0NbMip6XT1VKihIKnR0WzBdLUcqdHRbMV0rWFsw XSksQ1syKnorMV09VSooRyp0dFswXStIKnR0WzFdK1hbMV0pLHorPTF9Zm9y KFo9TS5lZGdlcyxKPU0ucG9zaXRpb25zLGs9MDtrPFoubGVuZ3RoOysraylm b3IoSz1aW2tdLFE9MDtRPDI7KytRKXtmb3IoJD0wOyQ8MzsrKyQpRVszKkkr JF09d1skXTtmb3IoJD0wOyQ8NDsrKyQpTFs0KkkrJF09UlskXTtQW0ldPXk7 dHQ9SltLW1FdXTtDWzIqSV09VSooSCp0dFswXS1HKnR0WzFdK1hbMF0pLENb MipJKzFdPVUqKEcqdHRbMF0rSCp0dFsxXStYWzFdKSxJKz0xfX19dGhpcy5i b3VuZHM9W3UsaF0sdGhpcy5wb2ludHM9cyx0aGlzLnBvaW50Q291bnQ9cy5s ZW5ndGgsdGhpcy52ZXJ0ZXhDb3VudD14LHRoaXMubGluZVZlcnRleENvdW50 PWIsdGhpcy5wb2ludEJ1ZmZlci51cGRhdGUoRSksdGhpcy5jb2xvckJ1ZmZl ci51cGRhdGUoTCksdGhpcy5nbHlwaEJ1ZmZlci51cGRhdGUoQyksdGhpcy5p ZEJ1ZmZlci51cGRhdGUoUCksby5mcmVlKEUpLG8uZnJlZShMKSxvLmZyZWUo Qyksby5mcmVlKFApfSxtLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNoYWRl ci5kaXNwb3NlKCksdGhpcy5vcnRob1NoYWRlci5kaXNwb3NlKCksdGhpcy5w aWNrUGVyc3BlY3RpdmVTaGFkZXIuZGlzcG9zZSgpLHRoaXMucGlja09ydGhv U2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5wb2lu dEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5jb2xvckJ1ZmZlci5kaXNwb3NlKCks dGhpcy5nbHlwaEJ1ZmZlci5kaXNwb3NlKCksdGhpcy5pZEJ1ZmZlci5kaXNw b3NlKCl9fSx7Ii4vbGliL2dldC1zaW1wbGUtc3RyaW5nIjoyOTcsIi4vbGli L2dseXBocyI6Mjk4LCIuL2xpYi9zaGFkZXJzIjoyOTksImdsLWJ1ZmZlciI6 MjQ0LCJnbC1tYXQ0L211bHRpcGx5IjoyNzAsImdsLXZhbyI6MzI5LCJpcy1z dHJpbmctYmxhbmsiOjQyNSwidHlwZWRhcnJheS1wb29sIjo1NDR9XSwzMDE6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2xzbGlm eSIpO3IuYm94VmVydGV4PW4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc biNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIHZlcnRleDtc blxudW5pZm9ybSB2ZWMyIGNvcm5lckEsIGNvcm5lckI7XG5cbnZvaWQgbWFp bigpIHtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KG1peChjb3JuZXJBLCBjb3Ju ZXJCLCB2ZXJ0ZXgpLCAwLCAxKTtcbn1cbiJdKSxyLmJveEZyYWdtZW50PW4o WyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAx XG5cbnVuaWZvcm0gdmVjNCBjb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBn bF9GcmFnQ29sb3IgPSBjb2xvcjtcbn1cbiJdKX0se2dsc2xpZnk6NDExfV0s MzAyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImds LXNoYWRlciIpLGE9dCgiZ2wtYnVmZmVyIiksaT10KCIuL2xpYi9zaGFkZXJz Iik7ZnVuY3Rpb24gbyh0LGUscil7dGhpcy5wbG90PXQsdGhpcy5ib3hCdWZm ZXI9ZSx0aGlzLmJveFNoYWRlcj1yLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnNl bGVjdEJveD1bMS8wLDEvMCwtMS8wLC0xLzBdLHRoaXMuYm9yZGVyQ29sb3I9 WzAsMCwwLDFdLHRoaXMuaW5uZXJGaWxsPSExLHRoaXMuaW5uZXJDb2xvcj1b MCwwLDAsLjI1XSx0aGlzLm91dGVyRmlsbD0hMCx0aGlzLm91dGVyQ29sb3I9 WzAsMCwwLC41XSx0aGlzLmJvcmRlcldpZHRoPTEwfWUuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3ZhciByPXQuZ2wscz1hKHIsWzAsMCwwLDEsMSwwLDEsMV0p LGw9bihyLGkuYm94VmVydGV4LGkuYm94RnJhZ21lbnQpLGM9bmV3IG8odCxz LGwpO3JldHVybiBjLnVwZGF0ZShlKSx0LmFkZE92ZXJsYXkoYyksY307dmFy IHM9by5wcm90b3R5cGU7cy5kcmF3PWZ1bmN0aW9uKCl7aWYodGhpcy5lbmFi bGVkKXt2YXIgdD10aGlzLnBsb3QsZT10aGlzLnNlbGVjdEJveCxyPXRoaXMu Ym9yZGVyV2lkdGgsbj0odGhpcy5pbm5lckZpbGwsdGhpcy5pbm5lckNvbG9y KSxhPSh0aGlzLm91dGVyRmlsbCx0aGlzLm91dGVyQ29sb3IpLGk9dGhpcy5i b3JkZXJDb2xvcixvPXQuYm94LHM9dC5zY3JlZW5Cb3gsbD10LmRhdGFCb3gs Yz10LnZpZXdCb3gsdT10LnBpeGVsUmF0aW8saD0oZVswXS1sWzBdKSooY1sy XS1jWzBdKS8obFsyXS1sWzBdKStjWzBdLGY9KGVbMV0tbFsxXSkqKGNbM10t Y1sxXSkvKGxbM10tbFsxXSkrY1sxXSxwPShlWzJdLWxbMF0pKihjWzJdLWNb MF0pLyhsWzJdLWxbMF0pK2NbMF0sZD0oZVszXS1sWzFdKSooY1szXS1jWzFd KS8obFszXS1sWzFdKStjWzFdO2lmKGg9TWF0aC5tYXgoaCxjWzBdKSxmPU1h dGgubWF4KGYsY1sxXSkscD1NYXRoLm1pbihwLGNbMl0pLGQ9TWF0aC5taW4o ZCxjWzNdKSwhKHA8aHx8ZDxmKSl7by5iaW5kKCk7dmFyIGc9c1syXS1zWzBd LHY9c1szXS1zWzFdO2lmKHRoaXMub3V0ZXJGaWxsJiYoby5kcmF3Qm94KDAs MCxnLGYsYSksby5kcmF3Qm94KDAsZixoLGQsYSksby5kcmF3Qm94KDAsZCxn LHYsYSksby5kcmF3Qm94KHAsZixnLGQsYSkpLHRoaXMuaW5uZXJGaWxsJiZv LmRyYXdCb3goaCxmLHAsZCxuKSxyPjApe3ZhciBtPXIqdTtvLmRyYXdCb3go aC1tLGYtbSxwK20sZittLGkpLG8uZHJhd0JveChoLW0sZC1tLHArbSxkK20s aSksby5kcmF3Qm94KGgtbSxmLW0saCttLGQrbSxpKSxvLmRyYXdCb3gocC1t LGYtbSxwK20sZCttLGkpfX19fSxzLnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8 fHt9LHRoaXMuaW5uZXJGaWxsPSEhdC5pbm5lckZpbGwsdGhpcy5vdXRlckZp bGw9ISF0Lm91dGVyRmlsbCx0aGlzLmlubmVyQ29sb3I9KHQuaW5uZXJDb2xv cnx8WzAsMCwwLC41XSkuc2xpY2UoKSx0aGlzLm91dGVyQ29sb3I9KHQub3V0 ZXJDb2xvcnx8WzAsMCwwLC41XSkuc2xpY2UoKSx0aGlzLmJvcmRlckNvbG9y PSh0LmJvcmRlckNvbG9yfHxbMCwwLDAsMV0pLnNsaWNlKCksdGhpcy5ib3Jk ZXJXaWR0aD10LmJvcmRlcldpZHRofHwwLHRoaXMuc2VsZWN0Qm94PSh0LnNl bGVjdEJveHx8dGhpcy5zZWxlY3RCb3gpLnNsaWNlKCl9LHMuZGlzcG9zZT1m dW5jdGlvbigpe3RoaXMuYm94QnVmZmVyLmRpc3Bvc2UoKSx0aGlzLmJveFNo YWRlci5kaXNwb3NlKCksdGhpcy5wbG90LnJlbW92ZU92ZXJsYXkodGhpcyl9 fSx7Ii4vbGliL3NoYWRlcnMiOjMwMSwiZ2wtYnVmZmVyIjoyNDQsImdsLXNo YWRlciI6MzA0fV0sMzAzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0saT1lWzFdLG89 bih0LHIsaSx7fSkscz1hLm1hbGxvY1VpbnQ4KHIqaSo0KTtyZXR1cm4gbmV3 IGModCxvLHMpfTt2YXIgbj10KCJnbC1mYm8iKSxhPXQoInR5cGVkYXJyYXkt cG9vbCIpLGk9dCgibmRhcnJheSIpLG89dCgiYml0LXR3aWRkbGUiKS5uZXh0 UG93MixzPXQoImN3aXNlL2xpYi93cmFwcGVyIikoe2FyZ3M6WyJhcnJheSIs e29mZnNldDpbMCwwLDFdLGFycmF5OjB9LHtvZmZzZXQ6WzAsMCwyXSxhcnJh eTowfSx7b2Zmc2V0OlswLDAsM10sYXJyYXk6MH0sInNjYWxhciIsInNjYWxh ciIsImluZGV4Il0scHJlOntib2R5OiJ7dGhpc19jbG9zZXN0RDI9MWU4LHRo aXNfY2xvc2VzdFg9LTEsdGhpc19jbG9zZXN0WT0tMX0iLGFyZ3M6W10sdGhp c1ZhcnM6WyJ0aGlzX2Nsb3Nlc3REMiIsInRoaXNfY2xvc2VzdFgiLCJ0aGlz X2Nsb3Nlc3RZIl0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7aWYoX2lu bGluZV8xNl9hcmcwXzwyNTV8fF9pbmxpbmVfMTZfYXJnMV88MjU1fHxfaW5s aW5lXzE2X2FyZzJfPDI1NXx8X2lubGluZV8xNl9hcmczXzwyNTUpe3ZhciBf aW5saW5lXzE2X2w9X2lubGluZV8xNl9hcmc0Xy1faW5saW5lXzE2X2FyZzZf WzBdLF9pbmxpbmVfMTZfYT1faW5saW5lXzE2X2FyZzVfLV9pbmxpbmVfMTZf YXJnNl9bMV0sX2lubGluZV8xNl9mPV9pbmxpbmVfMTZfbCpfaW5saW5lXzE2 X2wrX2lubGluZV8xNl9hKl9pbmxpbmVfMTZfYTtfaW5saW5lXzE2X2Y8dGhp c19jbG9zZXN0RDImJih0aGlzX2Nsb3Nlc3REMj1faW5saW5lXzE2X2YsdGhp c19jbG9zZXN0WD1faW5saW5lXzE2X2FyZzZfWzBdLHRoaXNfY2xvc2VzdFk9 X2lubGluZV8xNl9hcmc2X1sxXSl9fSIsYXJnczpbe25hbWU6Il9pbmxpbmVf MTZfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6 Il9pbmxpbmVfMTZfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6 MX0se25hbWU6Il9pbmxpbmVfMTZfYXJnMl8iLGx2YWx1ZTohMSxydmFsdWU6 ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTZfYXJnM18iLGx2YWx1ZToh MSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMTZfYXJnNF8i LGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVf MTZfYXJnNV8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6 Il9pbmxpbmVfMTZfYXJnNl8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6 NH1dLHRoaXNWYXJzOlsidGhpc19jbG9zZXN0RDIiLCJ0aGlzX2Nsb3Nlc3RY IiwidGhpc19jbG9zZXN0WSJdLGxvY2FsVmFyczpbIl9pbmxpbmVfMTZfYSIs Il9pbmxpbmVfMTZfZiIsIl9pbmxpbmVfMTZfbCJdfSxwb3N0Ontib2R5OiJ7 cmV0dXJuW3RoaXNfY2xvc2VzdFgsdGhpc19jbG9zZXN0WSx0aGlzX2Nsb3Nl c3REMl19IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19jbG9zZXN0RDIiLCJ0 aGlzX2Nsb3Nlc3RYIiwidGhpc19jbG9zZXN0WSJdLGxvY2FsVmFyczpbXX0s ZGVidWc6ITEsZnVuY05hbWU6ImN3aXNlIixibG9ja1NpemU6NjR9KTtmdW5j dGlvbiBsKHQsZSxyLG4sYSl7dGhpcy5jb29yZD1bdCxlXSx0aGlzLmlkPXIs dGhpcy52YWx1ZT1uLHRoaXMuZGlzdGFuY2U9YX1mdW5jdGlvbiBjKHQsZSxy KXt0aGlzLmdsPXQsdGhpcy5mYm89ZSx0aGlzLmJ1ZmZlcj1yLHRoaXMuX3Jl YWRUaW1lb3V0PW51bGw7dmFyIG49dGhpczt0aGlzLl9yZWFkQ2FsbGJhY2s9 ZnVuY3Rpb24oKXtuLmdsJiYoZS5iaW5kKCksdC5yZWFkUGl4ZWxzKDAsMCxl LnNoYXBlWzBdLGUuc2hhcGVbMV0sdC5SR0JBLHQuVU5TSUdORURfQllURSxu LmJ1ZmZlciksbi5fcmVhZFRpbWVvdXQ9bnVsbCl9fXZhciB1PWMucHJvdG90 eXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LCJzaGFwZSIse2dldDpmdW5j dGlvbigpe3JldHVybiB0aGlzLmdsP3RoaXMuZmJvLnNoYXBlLnNsaWNlKCk6 WzAsMF19LHNldDpmdW5jdGlvbih0KXtpZih0aGlzLmdsKXt0aGlzLmZiby5z aGFwZT10O3ZhciBlPXRoaXMuZmJvLnNoYXBlWzBdLHI9dGhpcy5mYm8uc2hh cGVbMV07aWYociplKjQ+dGhpcy5idWZmZXIubGVuZ3RoKXthLmZyZWUodGhp cy5idWZmZXIpO2Zvcih2YXIgbj10aGlzLmJ1ZmZlcj1hLm1hbGxvY1VpbnQ4 KG8ociplKjQpKSxpPTA7aTxyKmUqNDsrK2kpbltpXT0yNTV9cmV0dXJuIHR9 fX0pLHUuYmVnaW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdsO3RoaXMuc2hh cGU7dCYmKHRoaXMuZmJvLmJpbmQoKSx0LmNsZWFyQ29sb3IoMSwxLDEsMSks dC5jbGVhcih0LkNPTE9SX0JVRkZFUl9CSVR8dC5ERVBUSF9CVUZGRVJfQklU KSl9LHUuZW5kPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nbDt0JiYodC5iaW5k RnJhbWVidWZmZXIodC5GUkFNRUJVRkZFUixudWxsKSx0aGlzLl9yZWFkVGlt ZW91dHx8Y2xlYXJUaW1lb3V0KHRoaXMuX3JlYWRUaW1lb3V0KSx0aGlzLl9y ZWFkVGltZW91dD1zZXRUaW1lb3V0KHRoaXMuX3JlYWRDYWxsYmFjaywxKSl9 LHUucXVlcnk9ZnVuY3Rpb24odCxlLHIpe2lmKCF0aGlzLmdsKXJldHVybiBu dWxsO3ZhciBuPXRoaXMuZmJvLnNoYXBlLnNsaWNlKCk7dHw9MCxlfD0wLCJu dW1iZXIiIT10eXBlb2YgciYmKHI9MSk7dmFyIGE9MHxNYXRoLm1pbihNYXRo Lm1heCh0LXIsMCksblswXSksbz0wfE1hdGgubWluKE1hdGgubWF4KHQrciww KSxuWzBdKSxjPTB8TWF0aC5taW4oTWF0aC5tYXgoZS1yLDApLG5bMV0pLHU9 MHxNYXRoLm1pbihNYXRoLm1heChlK3IsMCksblsxXSk7aWYobzw9YXx8dTw9 YylyZXR1cm4gbnVsbDt2YXIgaD1bby1hLHUtY10sZj1pKHRoaXMuYnVmZmVy LFtoWzBdLGhbMV0sNF0sWzQsNCpuWzBdLDFdLDQqKGErblswXSpjKSkscD1z KGYuaGkoaFswXSxoWzFdLDEpLHIsciksZD1wWzBdLGc9cFsxXTtyZXR1cm4g ZDwwfHxNYXRoLnBvdyh0aGlzLnJhZGl1cywyKTxwWzJdP251bGw6bmV3IGwo ZCthfDAsZytjfDAsZi5nZXQoZCxnLDApLFtmLmdldChkLGcsMSksZi5nZXQo ZCxnLDIpLGYuZ2V0KGQsZywzKV0sTWF0aC5zcXJ0KHBbMl0pKX0sdS5kaXNw b3NlPWZ1bmN0aW9uKCl7dGhpcy5nbCYmKHRoaXMuZmJvLmRpc3Bvc2UoKSxh LmZyZWUodGhpcy5idWZmZXIpLHRoaXMuZ2w9bnVsbCx0aGlzLl9yZWFkVGlt ZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuX3JlYWRUaW1lb3V0KSl9fSx7ImJp dC10d2lkZGxlIjo5NCwiY3dpc2UvbGliL3dyYXBwZXIiOjE1MSwiZ2wtZmJv IjoyNTIsbmRhcnJheTo0NTIsInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sMzA0 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGli L2NyZWF0ZS11bmlmb3JtcyIpLGE9dCgiLi9saWIvY3JlYXRlLWF0dHJpYnV0 ZXMiKSxpPXQoIi4vbGliL3JlZmxlY3QiKSxvPXQoIi4vbGliL3NoYWRlci1j YWNoZSIpLHM9dCgiLi9saWIvcnVudGltZS1yZWZsZWN0IiksbD10KCIuL2xp Yi9HTEVycm9yIik7ZnVuY3Rpb24gYyh0KXt0aGlzLmdsPXQsdGhpcy5nbC5s YXN0QXR0cmliQ291bnQ9MCx0aGlzLl92cmVmPXRoaXMuX2ZyZWY9dGhpcy5f cmVsaW5rPXRoaXMudmVydFNoYWRlcj10aGlzLmZyYWdTaGFkZXI9dGhpcy5w cm9ncmFtPXRoaXMuYXR0cmlidXRlcz10aGlzLnVuaWZvcm1zPXRoaXMudHlw ZXM9bnVsbH12YXIgdT1jLnByb3RvdHlwZTtmdW5jdGlvbiBoKHQsZSl7cmV0 dXJuIHQubmFtZTxlLm5hbWU/LTE6MX11LmJpbmQ9ZnVuY3Rpb24oKXt2YXIg dDt0aGlzLnByb2dyYW18fHRoaXMuX3JlbGluaygpO3ZhciBlPXRoaXMuZ2wu Z2V0UHJvZ3JhbVBhcmFtZXRlcih0aGlzLnByb2dyYW0sdGhpcy5nbC5BQ1RJ VkVfQVRUUklCVVRFUykscj10aGlzLmdsLmxhc3RBdHRyaWJDb3VudDtpZihl PnIpZm9yKHQ9cjt0PGU7dCsrKXRoaXMuZ2wuZW5hYmxlVmVydGV4QXR0cmli QXJyYXkodCk7ZWxzZSBpZihyPmUpZm9yKHQ9ZTt0PHI7dCsrKXRoaXMuZ2wu ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHQpO3RoaXMuZ2wubGFzdEF0dHJp YkNvdW50PWUsdGhpcy5nbC51c2VQcm9ncmFtKHRoaXMucHJvZ3JhbSl9LHUu ZGlzcG9zZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmdsLmxhc3RBdHRy aWJDb3VudCxlPTA7ZTx0O2UrKyl0aGlzLmdsLmRpc2FibGVWZXJ0ZXhBdHRy aWJBcnJheShlKTt0aGlzLmdsLmxhc3RBdHRyaWJDb3VudD0wLHRoaXMuX2Zy ZWYmJnRoaXMuX2ZyZWYuZGlzcG9zZSgpLHRoaXMuX3ZyZWYmJnRoaXMuX3Zy ZWYuZGlzcG9zZSgpLHRoaXMuYXR0cmlidXRlcz10aGlzLnR5cGVzPXRoaXMu dmVydFNoYWRlcj10aGlzLmZyYWdTaGFkZXI9dGhpcy5wcm9ncmFtPXRoaXMu X3JlbGluaz10aGlzLl9mcmVmPXRoaXMuX3ZyZWY9bnVsbH0sdS51cGRhdGU9 ZnVuY3Rpb24odCxlLHIsYyl7aWYoIWV8fDE9PT1hcmd1bWVudHMubGVuZ3Ro KXt2YXIgdT10O3Q9dS52ZXJ0ZXgsZT11LmZyYWdtZW50LHI9dS51bmlmb3Jt cyxjPXUuYXR0cmlidXRlc312YXIgZj10aGlzLHA9Zi5nbCxkPWYuX3ZyZWY7 Zi5fdnJlZj1vLnNoYWRlcihwLHAuVkVSVEVYX1NIQURFUix0KSxkJiZkLmRp c3Bvc2UoKSxmLnZlcnRTaGFkZXI9Zi5fdnJlZi5zaGFkZXI7dmFyIGc9dGhp cy5fZnJlZjtpZihmLl9mcmVmPW8uc2hhZGVyKHAscC5GUkFHTUVOVF9TSEFE RVIsZSksZyYmZy5kaXNwb3NlKCksZi5mcmFnU2hhZGVyPWYuX2ZyZWYuc2hh ZGVyLCFyfHwhYyl7dmFyIHY9cC5jcmVhdGVQcm9ncmFtKCk7aWYocC5hdHRh Y2hTaGFkZXIodixmLmZyYWdTaGFkZXIpLHAuYXR0YWNoU2hhZGVyKHYsZi52 ZXJ0U2hhZGVyKSxwLmxpbmtQcm9ncmFtKHYpLCFwLmdldFByb2dyYW1QYXJh bWV0ZXIodixwLkxJTktfU1RBVFVTKSl7dmFyIG09cC5nZXRQcm9ncmFtSW5m b0xvZyh2KTt0aHJvdyBuZXcgbChtLCJFcnJvciBsaW5raW5nIHByb2dyYW06 IittKX1yPXJ8fHMudW5pZm9ybXMocCx2KSxjPWN8fHMuYXR0cmlidXRlcyhw LHYpLHAuZGVsZXRlUHJvZ3JhbSh2KX0oYz1jLnNsaWNlKCkpLnNvcnQoaCk7 dmFyIHkseD1bXSxiPVtdLF89W107Zm9yKHk9MDt5PGMubGVuZ3RoOysreSl7 dmFyIHc9Y1t5XTtpZih3LnR5cGUuaW5kZXhPZigibWF0Iik+PTApe2Zvcih2 YXIgaz0wfHcudHlwZS5jaGFyQXQody50eXBlLmxlbmd0aC0xKSxUPW5ldyBB cnJheShrKSxNPTA7TTxrOysrTSlUW01dPV8ubGVuZ3RoLGIucHVzaCh3Lm5h bWUrIlsiK00rIl0iKSwibnVtYmVyIj09dHlwZW9mIHcubG9jYXRpb24/Xy5w dXNoKHcubG9jYXRpb24rTSk6QXJyYXkuaXNBcnJheSh3LmxvY2F0aW9uKSYm dy5sb2NhdGlvbi5sZW5ndGg9PT1rJiYibnVtYmVyIj09dHlwZW9mIHcubG9j YXRpb25bTV0/Xy5wdXNoKDB8dy5sb2NhdGlvbltNXSk6Xy5wdXNoKC0xKTt4 LnB1c2goe25hbWU6dy5uYW1lLHR5cGU6dy50eXBlLGxvY2F0aW9uczpUfSl9 ZWxzZSB4LnB1c2goe25hbWU6dy5uYW1lLHR5cGU6dy50eXBlLGxvY2F0aW9u czpbXy5sZW5ndGhdfSksYi5wdXNoKHcubmFtZSksIm51bWJlciI9PXR5cGVv ZiB3LmxvY2F0aW9uP18ucHVzaCgwfHcubG9jYXRpb24pOl8ucHVzaCgtMSl9 dmFyIEE9MDtmb3IoeT0wO3k8Xy5sZW5ndGg7Kyt5KWlmKF9beV08MCl7Zm9y KDtfLmluZGV4T2YoQSk+PTA7KUErPTE7X1t5XT1BfXZhciBTPW5ldyBBcnJh eShyLmxlbmd0aCk7ZnVuY3Rpb24gRSgpe2YucHJvZ3JhbT1vLnByb2dyYW0o cCxmLl92cmVmLGYuX2ZyZWYsYixfKTtmb3IodmFyIHQ9MDt0PHIubGVuZ3Ro OysrdClTW3RdPXAuZ2V0VW5pZm9ybUxvY2F0aW9uKGYucHJvZ3JhbSxyW3Rd Lm5hbWUpfUUoKSxmLl9yZWxpbms9RSxmLnR5cGVzPXt1bmlmb3JtczppKHIp LGF0dHJpYnV0ZXM6aShjKX0sZi5hdHRyaWJ1dGVzPWEocCxmLHgsXyksT2Jq ZWN0LmRlZmluZVByb3BlcnR5KGYsInVuaWZvcm1zIixuKHAsZixyLFMpKX0s ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9bmV3IGModCk7 cmV0dXJuIGkudXBkYXRlKGUscixuLGEpLGl9fSx7Ii4vbGliL0dMRXJyb3Ii OjMwNSwiLi9saWIvY3JlYXRlLWF0dHJpYnV0ZXMiOjMwNiwiLi9saWIvY3Jl YXRlLXVuaWZvcm1zIjozMDcsIi4vbGliL3JlZmxlY3QiOjMwOCwiLi9saWIv cnVudGltZS1yZWZsZWN0IjozMDksIi4vbGliL3NoYWRlci1jYWNoZSI6MzEw fV0sMzA1OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscil7dGhp cy5zaG9ydE1lc3NhZ2U9ZXx8IiIsdGhpcy5sb25nTWVzc2FnZT1yfHwiIix0 aGlzLnJhd0Vycm9yPXR8fCIiLHRoaXMubWVzc2FnZT0iZ2wtc2hhZGVyOiAi KyhlfHx0fHwiIikrKHI/IlxuIityOiIiKSx0aGlzLnN0YWNrPShuZXcgRXJy b3IpLnN0YWNrfW4ucHJvdG90eXBlPW5ldyBFcnJvcixuLnByb3RvdHlwZS5u YW1lPSJHTEVycm9yIixuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1uLGUuZXhw b3J0cz1ufSx7fV0sMzA2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXtmb3IodmFyIGk9e30sbD0w LGM9ci5sZW5ndGg7bDxjOysrbCl7dmFyIHU9cltsXSxoPXUubmFtZSxmPXUu dHlwZSxwPXUubG9jYXRpb25zO3N3aXRjaChmKXtjYXNlImJvb2wiOmNhc2Ui aW50IjpjYXNlImZsb2F0IjpvKHQsZSxwWzBdLGEsMSxpLGgpO2JyZWFrO2Rl ZmF1bHQ6aWYoZi5pbmRleE9mKCJ2ZWMiKT49MCl7dmFyIGQ9Zi5jaGFyQ29k ZUF0KGYubGVuZ3RoLTEpLTQ4O2lmKGQ8Mnx8ZD40KXRocm93IG5ldyBuKCIi LCJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgYXR0cmlidXRlICIraCsiOiAiK2Yp O28odCxlLHBbMF0sYSxkLGksaCl9ZWxzZXtpZighKGYuaW5kZXhPZigibWF0 Iik+PTApKXRocm93IG5ldyBuKCIiLCJVbmtub3duIGRhdGEgdHlwZSBmb3Ig YXR0cmlidXRlICIraCsiOiAiK2YpO3ZhciBkPWYuY2hhckNvZGVBdChmLmxl bmd0aC0xKS00ODtpZihkPDJ8fGQ+NCl0aHJvdyBuZXcgbigiIiwiSW52YWxp ZCBkYXRhIHR5cGUgZm9yIGF0dHJpYnV0ZSAiK2grIjogIitmKTtzKHQsZSxw LGEsZCxpLGgpfX19cmV0dXJuIGl9O3ZhciBuPXQoIi4vR0xFcnJvciIpO2Z1 bmN0aW9uIGEodCxlLHIsbixhLGkpe3RoaXMuX2dsPXQsdGhpcy5fd3JhcHBl cj1lLHRoaXMuX2luZGV4PXIsdGhpcy5fbG9jYXRpb25zPW4sdGhpcy5fZGlt ZW5zaW9uPWEsdGhpcy5fY29uc3RGdW5jPWl9dmFyIGk9YS5wcm90b3R5cGU7 ZnVuY3Rpb24gbyh0LGUscixuLGksbyxzKXtmb3IodmFyIGw9WyJnbCIsInYi XSxjPVtdLHU9MDt1PGk7Kyt1KWwucHVzaCgieCIrdSksYy5wdXNoKCJ4Iit1 KTtsLnB1c2goImlmKHgwLmxlbmd0aD09PXZvaWQgMCl7cmV0dXJuIGdsLnZl cnRleEF0dHJpYiIraSsiZih2LCIrYy5qb2luKCkrIil9ZWxzZXtyZXR1cm4g Z2wudmVydGV4QXR0cmliIitpKyJmdih2LHgwKX0iKTt2YXIgaD1GdW5jdGlv bi5hcHBseShudWxsLGwpLGY9bmV3IGEodCxlLHIsbixpLGgpO09iamVjdC5k ZWZpbmVQcm9wZXJ0eShvLHMse3NldDpmdW5jdGlvbihlKXtyZXR1cm4gdC5k aXNhYmxlVmVydGV4QXR0cmliQXJyYXkobltyXSksaCh0LG5bcl0sZSksZX0s Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGVudW1lcmFibGU6ITB9KX1mdW5j dGlvbiBzKHQsZSxyLG4sYSxpLHMpe2Zvcih2YXIgbD1uZXcgQXJyYXkoYSks Yz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upbyh0LGUsclt1XSxuLGEsbCx1 KSxjW3VdPWxbdV07T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsImxvY2F0aW9u Iix7c2V0OmZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZh ciBlPTA7ZTxhOysrZSljW2VdLmxvY2F0aW9uPXRbZV07ZWxzZSBmb3IoZT0w O2U8YTsrK2UpY1tlXS5sb2NhdGlvbj10K2U7cmV0dXJuIHR9LGdldDpmdW5j dGlvbigpe2Zvcih2YXIgdD1uZXcgQXJyYXkoYSksZT0wO2U8YTsrK2UpdFtl XT1uW3JbZV1dO3JldHVybiB0fSxlbnVtZXJhYmxlOiEwfSksbC5wb2ludGVy PWZ1bmN0aW9uKGUsaSxvLHMpe2U9ZXx8dC5GTE9BVCxpPSEhaSxvPW98fGEq YSxzPXN8fDA7Zm9yKHZhciBsPTA7bDxhOysrbCl7dmFyIGM9bltyW2xdXTt0 LnZlcnRleEF0dHJpYlBvaW50ZXIoYyxhLGUsaSxvLHMrbCphKSx0LmVuYWJs ZVZlcnRleEF0dHJpYkFycmF5KGMpfX07dmFyIGg9bmV3IEFycmF5KGEpLGY9 dFsidmVydGV4QXR0cmliIithKyJmdiJdO09iamVjdC5kZWZpbmVQcm9wZXJ0 eShpLHMse3NldDpmdW5jdGlvbihlKXtmb3IodmFyIGk9MDtpPGE7KytpKXt2 YXIgbz1uW3JbaV1dO2lmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG8p LEFycmF5LmlzQXJyYXkoZVswXSkpZi5jYWxsKHQsbyxlW2ldKTtlbHNle2Zv cih2YXIgcz0wO3M8YTsrK3MpaFtzXT1lW2EqaStzXTtmLmNhbGwodCxvLGgp fX1yZXR1cm4gZX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGVudW1lcmFi bGU6ITB9KX1pLnBvaW50ZXI9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dGhp cy5fZ2wsaT10aGlzLl9sb2NhdGlvbnNbdGhpcy5faW5kZXhdO2EudmVydGV4 QXR0cmliUG9pbnRlcihpLHRoaXMuX2RpbWVuc2lvbix0fHxhLkZMT0FULCEh ZSxyfHwwLG58fDApLGEuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaSl9LGku c2V0PWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLl9jb25zdEZ1bmMo dGhpcy5fbG9jYXRpb25zW3RoaXMuX2luZGV4XSx0LGUscixuKX0sT2JqZWN0 LmRlZmluZVByb3BlcnR5KGksImxvY2F0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX2xvY2F0aW9uc1t0aGlzLl9pbmRleF19LHNldDpmdW5j dGlvbih0KXtyZXR1cm4gdCE9PXRoaXMuX2xvY2F0aW9uc1t0aGlzLl9pbmRl eF0mJih0aGlzLl9sb2NhdGlvbnNbdGhpcy5faW5kZXhdPTB8dCx0aGlzLl93 cmFwcGVyLnByb2dyYW09bnVsbCksMHx0fX0pfSx7Ii4vR0xFcnJvciI6MzA1 fV0sMzA3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4vcmVmbGVjdCIpLGE9dCgiLi9HTEVycm9yIik7ZnVuY3Rpb24gaSh0KXty ZXR1cm4gbmV3IEZ1bmN0aW9uKCJ5IiwicmV0dXJuIGZ1bmN0aW9uKCl7cmV0 dXJuIHl9IikodCl9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj1uZXcgQXJy YXkodCksbj0wO248dDsrK24pcltuXT1lO3JldHVybiByfWUuZXhwb3J0cz1m dW5jdGlvbih0LGUscixzKXtmdW5jdGlvbiBsKHQsZSxyKXtzd2l0Y2gocil7 Y2FzZSJib29sIjpjYXNlImludCI6Y2FzZSJzYW1wbGVyMkQiOmNhc2Uic2Ft cGxlckN1YmUiOnJldHVybiJnbC51bmlmb3JtMWkobG9jYXRpb25zWyIrZSsi XSxvYmoiK3QrIikiO2Nhc2UiZmxvYXQiOnJldHVybiJnbC51bmlmb3JtMWYo bG9jYXRpb25zWyIrZSsiXSxvYmoiK3QrIikiO2RlZmF1bHQ6dmFyIG49ci5p bmRleE9mKCJ2ZWMiKTtpZighKDA8PW4mJm48PTEmJnIubGVuZ3RoPT09NCtu KSl7aWYoMD09PXIuaW5kZXhPZigibWF0IikmJjQ9PT1yLmxlbmd0aCl7dmFy IGk9ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpLTQ4O2lmKGk8Mnx8aT40KXRo cm93IG5ldyBhKCIiLCJJbnZhbGlkIHVuaWZvcm0gZGltZW5zaW9uIHR5cGUg Zm9yIG1hdHJpeCAiK25hbWUrIjogIityKTtyZXR1cm4iZ2wudW5pZm9ybU1h dHJpeCIraSsiZnYobG9jYXRpb25zWyIrZSsiXSxmYWxzZSxvYmoiK3QrIiki fXRocm93IG5ldyBhKCIiLCJVbmtub3duIHVuaWZvcm0gZGF0YSB0eXBlIGZv ciAiK25hbWUrIjogIityKX12YXIgaT1yLmNoYXJDb2RlQXQoci5sZW5ndGgt MSktNDg7aWYoaTwyfHxpPjQpdGhyb3cgbmV3IGEoIiIsIkludmFsaWQgZGF0 YSB0eXBlIik7c3dpdGNoKHIuY2hhckF0KDApKXtjYXNlImIiOmNhc2UiaSI6 cmV0dXJuImdsLnVuaWZvcm0iK2krIml2KGxvY2F0aW9uc1siK2UrIl0sb2Jq Iit0KyIpIjtjYXNlInYiOnJldHVybiJnbC51bmlmb3JtIitpKyJmdihsb2Nh dGlvbnNbIitlKyJdLG9iaiIrdCsiKSI7ZGVmYXVsdDp0aHJvdyBuZXcgYSgi IiwiVW5yZWNvZ25pemVkIGRhdGEgdHlwZSBmb3IgdmVjdG9yICIrbmFtZSsi OiAiK3IpfX19ZnVuY3Rpb24gYyhlKXtmb3IodmFyIG49WyJyZXR1cm4gZnVu Y3Rpb24gdXBkYXRlUHJvcGVydHkob2JqKXsiXSxhPWZ1bmN0aW9uIHQoZSxy KXtpZigib2JqZWN0IiE9dHlwZW9mIHIpcmV0dXJuW1tlLHJdXTt2YXIgbj1b XTtmb3IodmFyIGEgaW4gcil7dmFyIGk9clthXSxvPWU7cGFyc2VJbnQoYSkr IiI9PT1hP28rPSJbIithKyJdIjpvKz0iLiIrYSwib2JqZWN0Ij09dHlwZW9m IGk/bi5wdXNoLmFwcGx5KG4sdChvLGkpKTpuLnB1c2goW28saV0pfXJldHVy biBufSgiIixlKSxpPTA7aTxhLmxlbmd0aDsrK2kpe3ZhciBvPWFbaV0sYz1v WzBdLHU9b1sxXTtzW3VdJiZuLnB1c2gobChjLHUsclt1XS50eXBlKSl9bi5w dXNoKCJyZXR1cm4gb2JqfSIpO3ZhciBoPW5ldyBGdW5jdGlvbigiZ2wiLCJs b2NhdGlvbnMiLG4uam9pbigiXG4iKSk7cmV0dXJuIGgodCxzKX1mdW5jdGlv biB1KG4sbCx1KXtpZigib2JqZWN0Ij09dHlwZW9mIHUpe3ZhciBmPWgodSk7 T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sbCx7Z2V0OmkoZiksc2V0OmModSks ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITF9KX1lbHNlIHNbdV0/T2Jq ZWN0LmRlZmluZVByb3BlcnR5KG4sbCx7Z2V0OihwPXUsZD1uZXcgRnVuY3Rp b24oImdsIiwid3JhcHBlciIsImxvY2F0aW9ucyIsInJldHVybiBmdW5jdGlv bigpe3JldHVybiBnbC5nZXRVbmlmb3JtKHdyYXBwZXIucHJvZ3JhbSxsb2Nh dGlvbnNbIitwKyJdKX0iKSxkKHQsZSxzKSksc2V0OmModSksZW51bWVyYWJs ZTohMCxjb25maWd1cmFibGU6ITF9KTpuW2xdPWZ1bmN0aW9uKHQpe3N3aXRj aCh0KXtjYXNlImJvb2wiOnJldHVybiExO2Nhc2UiaW50IjpjYXNlInNhbXBs ZXIyRCI6Y2FzZSJzYW1wbGVyQ3ViZSI6Y2FzZSJmbG9hdCI6cmV0dXJuIDA7 ZGVmYXVsdDp2YXIgZT10LmluZGV4T2YoInZlYyIpO2lmKDA8PWUmJmU8PTEm JnQubGVuZ3RoPT09NCtlKXt2YXIgcj10LmNoYXJDb2RlQXQodC5sZW5ndGgt MSktNDg7aWYocjwyfHxyPjQpdGhyb3cgbmV3IGEoIiIsIkludmFsaWQgZGF0 YSB0eXBlIik7cmV0dXJuImIiPT09dC5jaGFyQXQoMCk/byhyLCExKTpvKHIs MCl9aWYoMD09PXQuaW5kZXhPZigibWF0IikmJjQ9PT10Lmxlbmd0aCl7dmFy IHI9dC5jaGFyQ29kZUF0KHQubGVuZ3RoLTEpLTQ4O2lmKHI8Mnx8cj40KXRo cm93IG5ldyBhKCIiLCJJbnZhbGlkIHVuaWZvcm0gZGltZW5zaW9uIHR5cGUg Zm9yIG1hdHJpeCAiK25hbWUrIjogIit0KTtyZXR1cm4gbyhyKnIsMCl9dGhy b3cgbmV3IGEoIiIsIlVua25vd24gdW5pZm9ybSBkYXRhIHR5cGUgZm9yICIr bmFtZSsiOiAiK3QpfX0oclt1XS50eXBlKTt2YXIgcCxkfWZ1bmN0aW9uIGgo dCl7dmFyIGU7aWYoQXJyYXkuaXNBcnJheSh0KSl7ZT1uZXcgQXJyYXkodC5s ZW5ndGgpO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKXUoZSxyLHRbcl0p fWVsc2UgZm9yKHZhciBuIGluIGU9e30sdCl1KGUsbix0W25dKTtyZXR1cm4g ZX12YXIgZj1uKHIsITApO3JldHVybntnZXQ6aShoKGYpKSxzZXQ6YyhmKSxl bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19fSx7Ii4vR0xFcnJvciI6 MzA1LCIuL3JlZmxlY3QiOjMwOH1dLDMwODpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9 e30sbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgYT10W25dLm5hbWUsaT1h LnNwbGl0KCIuIiksbz1yLHM9MDtzPGkubGVuZ3RoOysrcyl7dmFyIGw9aVtz XS5zcGxpdCgiWyIpO2lmKGwubGVuZ3RoPjEpe2xbMF1pbiBvfHwob1tsWzBd XT1bXSksbz1vW2xbMF1dO2Zvcih2YXIgYz0xO2M8bC5sZW5ndGg7KytjKXt2 YXIgdT1wYXJzZUludChsW2NdKTtjPGwubGVuZ3RoLTF8fHM8aS5sZW5ndGgt MT8odSBpbiBvfHwoYzxsLmxlbmd0aC0xP29bdV09W106b1t1XT17fSksbz1v W3VdKTpvW3VdPWU/bjp0W25dLnR5cGV9fWVsc2UgczxpLmxlbmd0aC0xPyhs WzBdaW4gb3x8KG9bbFswXV09e30pLG89b1tsWzBdXSk6b1tsWzBdXT1lP246 dFtuXS50eXBlfXJldHVybiByfX0se31dLDMwOTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtyLnVuaWZvcm1zPWZ1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihlLHQuQUNUSVZFX1VOSUZPUk1T KSxuPVtdLGE9MDthPHI7KythKXt2YXIgbz10LmdldEFjdGl2ZVVuaWZvcm0o ZSxhKTtpZihvKXt2YXIgcz1pKHQsby50eXBlKTtpZihvLnNpemU+MSlmb3Io dmFyIGw9MDtsPG8uc2l6ZTsrK2wpbi5wdXNoKHtuYW1lOm8ubmFtZS5yZXBs YWNlKCJbMF0iLCJbIitsKyJdIiksdHlwZTpzfSk7ZWxzZSBuLnB1c2goe25h bWU6by5uYW1lLHR5cGU6c30pfX1yZXR1cm4gbn0sci5hdHRyaWJ1dGVzPWZ1 bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihl LHQuQUNUSVZFX0FUVFJJQlVURVMpLG49W10sYT0wO2E8cjsrK2Epe3ZhciBv PXQuZ2V0QWN0aXZlQXR0cmliKGUsYSk7byYmbi5wdXNoKHtuYW1lOm8ubmFt ZSx0eXBlOmkodCxvLnR5cGUpfSl9cmV0dXJuIG59O3ZhciBuPXtGTE9BVDoi ZmxvYXQiLEZMT0FUX1ZFQzI6InZlYzIiLEZMT0FUX1ZFQzM6InZlYzMiLEZM T0FUX1ZFQzQ6InZlYzQiLElOVDoiaW50IixJTlRfVkVDMjoiaXZlYzIiLElO VF9WRUMzOiJpdmVjMyIsSU5UX1ZFQzQ6Iml2ZWM0IixCT09MOiJib29sIixC T09MX1ZFQzI6ImJ2ZWMyIixCT09MX1ZFQzM6ImJ2ZWMzIixCT09MX1ZFQzQ6 ImJ2ZWM0IixGTE9BVF9NQVQyOiJtYXQyIixGTE9BVF9NQVQzOiJtYXQzIixG TE9BVF9NQVQ0OiJtYXQ0IixTQU1QTEVSXzJEOiJzYW1wbGVyMkQiLFNBTVBM RVJfQ1VCRToic2FtcGxlckN1YmUifSxhPW51bGw7ZnVuY3Rpb24gaSh0LGUp e2lmKCFhKXt2YXIgcj1PYmplY3Qua2V5cyhuKTthPXt9O2Zvcih2YXIgaT0w O2k8ci5sZW5ndGg7KytpKXt2YXIgbz1yW2ldO2FbdFtvXV09bltvXX19cmV0 dXJuIGFbZV19fSx7fV0sMzEwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3Iuc2hhZGVyPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdSh0KS5nZXRT aGFkZXJSZWZlcmVuY2UoZSxyKX0sci5wcm9ncmFtPWZ1bmN0aW9uKHQsZSxy LG4sYSl7cmV0dXJuIHUodCkuZ2V0UHJvZ3JhbShlLHIsbixhKX07dmFyIG49 dCgiLi9HTEVycm9yIiksYT10KCJnbC1mb3JtYXQtY29tcGlsZXItZXJyb3Ii KSxpPW5ldygidW5kZWZpbmVkIj09dHlwZW9mIFdlYWtNYXA/dCgid2Vha21h cC1zaGltIik6V2Vha01hcCksbz0wO2Z1bmN0aW9uIHModCxlLHIsbixhLGks byl7dGhpcy5pZD10LHRoaXMuc3JjPWUsdGhpcy50eXBlPXIsdGhpcy5zaGFk ZXI9bix0aGlzLmNvdW50PWksdGhpcy5wcm9ncmFtcz1bXSx0aGlzLmNhY2hl PW99ZnVuY3Rpb24gbCh0KXt0aGlzLmdsPXQsdGhpcy5zaGFkZXJzPVt7fSx7 fV0sdGhpcy5wcm9ncmFtcz17fX1zLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0 aW9uKCl7aWYoMD09LS10aGlzLmNvdW50KXtmb3IodmFyIHQ9dGhpcy5jYWNo ZSxlPXQuZ2wscj10aGlzLnByb2dyYW1zLG49MCxhPXIubGVuZ3RoO248YTsr K24pe3ZhciBpPXQucHJvZ3JhbXNbcltuXV07aSYmKGRlbGV0ZSB0LnByb2dy YW1zW25dLGUuZGVsZXRlUHJvZ3JhbShpKSl9ZS5kZWxldGVTaGFkZXIodGhp cy5zaGFkZXIpLGRlbGV0ZSB0LnNoYWRlcnNbdGhpcy50eXBlPT09ZS5GUkFH TUVOVF9TSEFERVJ8MF1bdGhpcy5zcmNdfX07dmFyIGM9bC5wcm90b3R5cGU7 ZnVuY3Rpb24gdSh0KXt2YXIgZT1pLmdldCh0KTtyZXR1cm4gZXx8KGU9bmV3 IGwodCksaS5zZXQodCxlKSksZX1jLmdldFNoYWRlclJlZmVyZW5jZT1mdW5j dGlvbih0LGUpe3ZhciByPXRoaXMuZ2wsaT10aGlzLnNoYWRlcnNbdD09PXIu RlJBR01FTlRfU0hBREVSfDBdLGw9aVtlXTtpZihsJiZyLmlzU2hhZGVyKGwu c2hhZGVyKSlsLmNvdW50Kz0xO2Vsc2V7dmFyIGM9ZnVuY3Rpb24odCxlLHIp e3ZhciBpPXQuY3JlYXRlU2hhZGVyKGUpO2lmKHQuc2hhZGVyU291cmNlKGks ciksdC5jb21waWxlU2hhZGVyKGkpLCF0LmdldFNoYWRlclBhcmFtZXRlcihp LHQuQ09NUElMRV9TVEFUVVMpKXt2YXIgbz10LmdldFNoYWRlckluZm9Mb2co aSk7dHJ5e3ZhciBzPWEobyxyLGUpfWNhdGNoKHQpe3Rocm93IGNvbnNvbGUu d2FybigiRmFpbGVkIHRvIGZvcm1hdCBjb21waWxlciBlcnJvcjogIit0KSxu ZXcgbihvLCJFcnJvciBjb21waWxpbmcgc2hhZGVyOlxuIitvKX10aHJvdyBu ZXcgbihvLHMuc2hvcnQscy5sb25nKX1yZXR1cm4gaX0ocix0LGUpO2w9aVtl XT1uZXcgcyhvKyssZSx0LGMsW10sMSx0aGlzKX1yZXR1cm4gbH0sYy5nZXRQ cm9ncmFtPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpPVt0LmlkLGUuaWQsci5q b2luKCI6IiksYS5qb2luKCI6IildLmpvaW4oIkAiKSxvPXRoaXMucHJvZ3Jh bXNbaV07cmV0dXJuIG8mJnRoaXMuZ2wuaXNQcm9ncmFtKG8pfHwodGhpcy5w cm9ncmFtc1tpXT1vPWZ1bmN0aW9uKHQsZSxyLGEsaSl7dmFyIG89dC5jcmVh dGVQcm9ncmFtKCk7dC5hdHRhY2hTaGFkZXIobyxlKSx0LmF0dGFjaFNoYWRl cihvLHIpO2Zvcih2YXIgcz0wO3M8YS5sZW5ndGg7KytzKXQuYmluZEF0dHJp YkxvY2F0aW9uKG8saVtzXSxhW3NdKTtpZih0LmxpbmtQcm9ncmFtKG8pLCF0 LmdldFByb2dyYW1QYXJhbWV0ZXIobyx0LkxJTktfU1RBVFVTKSl7dmFyIGw9 dC5nZXRQcm9ncmFtSW5mb0xvZyhvKTt0aHJvdyBuZXcgbihsLCJFcnJvciBs aW5raW5nIHByb2dyYW06ICIrbCl9cmV0dXJuIG99KHRoaXMuZ2wsdC5zaGFk ZXIsZS5zaGFkZXIscixhKSx0LnByb2dyYW1zLnB1c2goaSksZS5wcm9ncmFt cy5wdXNoKGkpKSxvfX0seyIuL0dMRXJyb3IiOjMwNSwiZ2wtZm9ybWF0LWNv bXBpbGVyLWVycm9yIjoyNTMsIndlYWttYXAtc2hpbSI6NTU0fV0sMzExOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dGhp cy5wbG90PXQsdGhpcy5lbmFibGU9WyEwLCEwLCExLCExXSx0aGlzLndpZHRo PVsxLDEsMSwxXSx0aGlzLmNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFsw LDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuY2VudGVyPVsxLzAsMS8wXX1lLmV4 cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgbih0KTtyZXR1cm4gci51 cGRhdGUoZSksdC5hZGRPdmVybGF5KHIpLHJ9O3ZhciBhPW4ucHJvdG90eXBl O2EudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e30sdGhpcy5lbmFibGU9KHQu ZW5hYmxlfHxbITAsITAsITEsITFdKS5zbGljZSgpLHRoaXMud2lkdGg9KHQu d2lkdGh8fFsxLDEsMSwxXSkuc2xpY2UoKSx0aGlzLmNvbG9yPSh0LmNvbG9y fHxbWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSku bWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKCl9KSx0aGlzLmNlbnRl cj0odC5jZW50ZXJ8fFsxLzAsMS8wXSkuc2xpY2UoKSx0aGlzLnBsb3Quc2V0 T3ZlcmxheURpcnR5KCl9LGEuZHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMu ZW5hYmxlLGU9dGhpcy53aWR0aCxyPXRoaXMuY29sb3Isbj10aGlzLmNlbnRl cixhPXRoaXMucGxvdCxpPWEubGluZSxvPWEuZGF0YUJveCxzPWEudmlld0Jv eDtpZihpLmJpbmQoKSxvWzBdPD1uWzBdJiZuWzBdPD1vWzJdJiZvWzFdPD1u WzFdJiZuWzFdPD1vWzNdKXt2YXIgbD1zWzBdKyhuWzBdLW9bMF0pLyhvWzJd LW9bMF0pKihzWzJdLXNbMF0pLGM9c1sxXSsoblsxXS1vWzFdKS8ob1szXS1v WzFdKSooc1szXS1zWzFdKTt0WzBdJiZpLmRyYXdMaW5lKGwsYyxzWzBdLGMs ZVswXSxyWzBdKSx0WzFdJiZpLmRyYXdMaW5lKGwsYyxsLHNbMV0sZVsxXSxy WzFdKSx0WzJdJiZpLmRyYXdMaW5lKGwsYyxzWzJdLGMsZVsyXSxyWzJdKSx0 WzNdJiZpLmRyYXdMaW5lKGwsYyxsLHNbM10sZVszXSxyWzNdKX19LGEuZGlz cG9zZT1mdW5jdGlvbigpe3RoaXMucGxvdC5yZW1vdmVPdmVybGF5KHRoaXMp fX0se31dLDMxMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJnbHNsaWZ5IiksYT10KCJnbC1zaGFkZXIiKSxpPW4oWyJwcmVjaXNp b24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJp YnV0ZSB2ZWMzIHBvc2l0aW9uLCBjb2xvcjtcbmF0dHJpYnV0ZSBmbG9hdCB3 ZWlnaHQ7XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlv bjtcbnVuaWZvcm0gdmVjMyBjb29yZGluYXRlc1szXTtcbnVuaWZvcm0gdmVj NCBjb2xvcnNbM107XG51bmlmb3JtIHZlYzIgc2NyZWVuU2hhcGU7XG51bmlm b3JtIGZsb2F0IGxpbmVXaWR0aDtcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xv cjtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIHZlcnRleFBvc2l0aW9uID0g bWl4KGNvb3JkaW5hdGVzWzBdLFxuICAgIG1peChjb29yZGluYXRlc1syXSwg Y29vcmRpbmF0ZXNbMV0sIDAuNSAqIChwb3NpdGlvbiArIDEuMCkpLCBhYnMo cG9zaXRpb24pKTtcblxuICB2ZWM0IGNsaXBQb3MgPSBwcm9qZWN0aW9uICog dmlldyAqIG1vZGVsICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTtcbiAg dmVjMiBjbGlwT2Zmc2V0ID0gKHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwg KiB2ZWM0KGNvbG9yLCAwLjApKS54eTtcbiAgdmVjMiBkZWx0YSA9IHdlaWdo dCAqIGNsaXBPZmZzZXQgKiBzY3JlZW5TaGFwZTtcbiAgdmVjMiBsaW5lT2Zm c2V0ID0gbm9ybWFsaXplKHZlYzIoZGVsdGEueSwgLWRlbHRhLngpKSAvIHNj cmVlblNoYXBlO1xuXG4gIGdsX1Bvc2l0aW9uICAgPSB2ZWM0KGNsaXBQb3Mu eHkgKyBjbGlwUG9zLncgKiAwLjUgKiBsaW5lV2lkdGggKiBsaW5lT2Zmc2V0 LCBjbGlwUG9zLnosIGNsaXBQb3Mudyk7XG4gIGZyYWdDb2xvciAgICAgPSBj b2xvci54ICogY29sb3JzWzBdICsgY29sb3IueSAqIGNvbG9yc1sxXSArIGNv bG9yLnogKiBjb2xvcnNbMl07XG59XG4iXSksbz1uKFsicHJlY2lzaW9uIG1l ZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52YXJ5aW5nIHZl YzQgZnJhZ0NvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xv ciA9IGZyYWdDb2xvcjtcbn0iXSk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3Jl dHVybiBhKHQsaSxvLG51bGwsW3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVj MyJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjMyJ9LHtuYW1lOiJ3ZWlnaHQi LHR5cGU6ImZsb2F0In1dKX19LHsiZ2wtc2hhZGVyIjozMDQsZ2xzbGlmeTo0 MTF9XSwzMTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiZ2wtYnVmZmVyIiksYT10KCJnbC12YW8iKSxpPXQoIi4vc2hhZGVycy9p bmRleCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPVtdO2Z1bmN0 aW9uIG8odCxlLG4sYSxpLG8pe3ZhciBzPVt0LGUsbiwwLDAsMCwxXTtzW2Er M109MSxzW2FdPWksci5wdXNoLmFwcGx5KHIscyksc1s2XT0tMSxyLnB1c2gu YXBwbHkocixzKSxzW2FdPW8sci5wdXNoLmFwcGx5KHIscyksci5wdXNoLmFw cGx5KHIscyksc1s2XT0xLHIucHVzaC5hcHBseShyLHMpLHNbYV09aSxyLnB1 c2guYXBwbHkocixzKX1vKDAsMCwwLDAsMCwxKSxvKDAsMCwwLDEsMCwxKSxv KDAsMCwwLDIsMCwxKSxvKDEsMCwwLDEsLTEsMSksbygxLDAsMCwyLC0xLDEp LG8oMCwxLDAsMCwtMSwxKSxvKDAsMSwwLDIsLTEsMSksbygwLDAsMSwwLC0x LDEpLG8oMCwwLDEsMSwtMSwxKTt2YXIgbD1uKHQsciksYz1hKHQsW3t0eXBl OnQuRkxPQVQsYnVmZmVyOmwsc2l6ZTozLG9mZnNldDowLHN0cmlkZToyOH0s e3R5cGU6dC5GTE9BVCxidWZmZXI6bCxzaXplOjMsb2Zmc2V0OjEyLHN0cmlk ZToyOH0se3R5cGU6dC5GTE9BVCxidWZmZXI6bCxzaXplOjEsb2Zmc2V0OjI0 LHN0cmlkZToyOH1dKSx1PWkodCk7dS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxv Y2F0aW9uPTAsdS5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTEsdS5hdHRy aWJ1dGVzLndlaWdodC5sb2NhdGlvbj0yO3ZhciBoPW5ldyBzKHQsbCxjLHUp O3JldHVybiBoLnVwZGF0ZShlKSxofTt2YXIgbz1bMSwwLDAsMCwwLDEsMCww LDAsMCwxLDAsMCwwLDAsMV07ZnVuY3Rpb24gcyh0LGUscixuKXt0aGlzLmds PXQsdGhpcy5idWZmZXI9ZSx0aGlzLnZhbz1yLHRoaXMuc2hhZGVyPW4sdGhp cy5waXhlbFJhdGlvPTEsdGhpcy5ib3VuZHM9W1stMWUzLC0xZTMsLTFlM10s WzFlMywxZTMsMWUzXV0sdGhpcy5wb3NpdGlvbj1bMCwwLDBdLHRoaXMubGlu ZVdpZHRoPVsyLDIsMl0sdGhpcy5jb2xvcnM9W1swLDAsMCwxXSxbMCwwLDAs MV0sWzAsMCwwLDFdXSx0aGlzLmVuYWJsZWQ9WyEwLCEwLCEwXSx0aGlzLmRy YXdTaWRlcz1bITAsITAsITBdLHRoaXMuYXhlcz1udWxsfXZhciBsPXMucHJv dG90eXBlLGM9WzAsMCwwXSx1PVswLDAsMF0saD1bMCwwXTtsLmlzVHJhbnNw YXJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sbC5kcmF3VHJhbnNwYXJlbnQ9 ZnVuY3Rpb24odCl7fSxsLmRyYXc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5n bCxyPXRoaXMudmFvLG49dGhpcy5zaGFkZXI7ci5iaW5kKCksbi5iaW5kKCk7 dmFyIGEsaT10Lm1vZGVsfHxvLHM9dC52aWV3fHxvLGw9dC5wcm9qZWN0aW9u fHxvO3RoaXMuYXhlcyYmKGE9dGhpcy5heGVzLmxhc3RDdWJlUHJvcHMuYXhp cyk7Zm9yKHZhciBmPWMscD11LGQ9MDtkPDM7KytkKWEmJmFbZF08MD8oZltk XT10aGlzLmJvdW5kc1swXVtkXSxwW2RdPXRoaXMuYm91bmRzWzFdW2RdKToo ZltkXT10aGlzLmJvdW5kc1sxXVtkXSxwW2RdPXRoaXMuYm91bmRzWzBdW2Rd KTtoWzBdPWUuZHJhd2luZ0J1ZmZlcldpZHRoLGhbMV09ZS5kcmF3aW5nQnVm ZmVySGVpZ2h0LG4udW5pZm9ybXMubW9kZWw9aSxuLnVuaWZvcm1zLnZpZXc9 cyxuLnVuaWZvcm1zLnByb2plY3Rpb249bCxuLnVuaWZvcm1zLmNvb3JkaW5h dGVzPVt0aGlzLnBvc2l0aW9uLGYscF0sbi51bmlmb3Jtcy5jb2xvcnM9dGhp cy5jb2xvcnMsbi51bmlmb3Jtcy5zY3JlZW5TaGFwZT1oO2ZvcihkPTA7ZDwz OysrZCluLnVuaWZvcm1zLmxpbmVXaWR0aD10aGlzLmxpbmVXaWR0aFtkXSp0 aGlzLnBpeGVsUmF0aW8sdGhpcy5lbmFibGVkW2RdJiYoci5kcmF3KGUuVFJJ QU5HTEVTLDYsNipkKSx0aGlzLmRyYXdTaWRlc1tkXSYmci5kcmF3KGUuVFJJ QU5HTEVTLDEyLDE4KzEyKmQpKTtyLnVuYmluZCgpfSxsLnVwZGF0ZT1mdW5j dGlvbih0KXt0JiYoImJvdW5kcyJpbiB0JiYodGhpcy5ib3VuZHM9dC5ib3Vu ZHMpLCJwb3NpdGlvbiJpbiB0JiYodGhpcy5wb3NpdGlvbj10LnBvc2l0aW9u KSwibGluZVdpZHRoImluIHQmJih0aGlzLmxpbmVXaWR0aD10LmxpbmVXaWR0 aCksImNvbG9ycyJpbiB0JiYodGhpcy5jb2xvcnM9dC5jb2xvcnMpLCJlbmFi bGVkImluIHQmJih0aGlzLmVuYWJsZWQ9dC5lbmFibGVkKSwiZHJhd1NpZGVz ImluIHQmJih0aGlzLmRyYXdTaWRlcz10LmRyYXdTaWRlcykpfSxsLmRpc3Bv c2U9ZnVuY3Rpb24oKXt0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5idWZmZXIu ZGlzcG9zZSgpLHRoaXMuc2hhZGVyLmRpc3Bvc2UoKX19LHsiLi9zaGFkZXJz L2luZGV4IjozMTIsImdsLWJ1ZmZlciI6MjQ0LCJnbC12YW8iOjMyOX1dLDMx NDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImdsc2xpZnkiKSxhPW4oWyJw cmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbnByZWNpc2lvbiBoaWdocCBmbG9h dDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZlYzMgZ2V0T3J0aG9nb25hbFZl Y3Rvcih2ZWMzIHYpIHtcbiAgLy8gUmV0dXJuIHVwLXZlY3RvciBmb3Igb25s eS16IHZlY3Rvci5cbiAgLy8gUmV0dXJuIGF4ICsgYnkgKyBjeiA9IDAsIGEg cG9pbnQgdGhhdCBsaWVzIG9uIHRoZSBwbGFuZSB0aGF0IGhhcyB2IGFzIGEg bm9ybWFsIGFuZCB0aGF0IGlzbid0ICgwLDAsMCkuXG4gIC8vIEZyb20gdGhl IGFib3ZlIGlmLXN0YXRlbWVudCB3ZSBoYXZlIHx8YXx8ID4gMCAgVSAgfHxi fHwgPiAwLlxuICAvLyBBc3NpZ24geiA9IDAsIHggPSAtYiwgeSA9IGE6XG4g IC8vIGEqLWIgKyBiKmEgKyBjKjAgPSAtYmEgKyBiYSArIDAgPSAwXG4gIGlm ICh2Lngqdi54ID4gdi56KnYueiB8fCB2Lnkqdi55ID4gdi56KnYueikge1xu ICAgIHJldHVybiBub3JtYWxpemUodmVjMygtdi55LCB2LngsIDAuMCkpO1xu ICB9IGVsc2Uge1xuICAgIHJldHVybiBub3JtYWxpemUodmVjMygwLjAsIHYu eiwgLXYueSkpO1xuICB9XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgdHViZSB2 ZXJ0ZXggYW5kIG5vcm1hbCBhdCB0aGUgZ2l2ZW4gaW5kZXguXG4vL1xuLy8g VGhlIHJldHVybmVkIHZlcnRleCBpcyBmb3IgYSB0dWJlIHJpbmcgd2l0aCBp dHMgY2VudGVyIGF0IG9yaWdpbiwgcmFkaXVzIG9mIGxlbmd0aChkKSwgcG9p bnRpbmcgaW4gdGhlIGRpcmVjdGlvbiBvZiBkLlxuLy9cbi8vIEVhY2ggdHVi ZSBzZWdtZW50IGlzIG1hZGUgdXAgb2YgYSByaW5nIG9mIHZlcnRpY2VzLlxu Ly8gVGhlc2UgdmVydGljZXMgYXJlIHVzZWQgdG8gbWFrZSB1cCB0aGUgdHJp YW5nbGVzIG9mIHRoZSB0dWJlIGJ5IGNvbm5lY3RpbmcgdGhlbSB0b2dldGhl ciBpbiB0aGUgdmVydGV4IGFycmF5LlxuLy8gVGhlIGluZGV4ZXMgb2YgdHVi ZSBzZWdtZW50cyBydW4gZnJvbSAwIHRvIDguXG4vL1xudmVjMyBnZXRUdWJl UG9zaXRpb24odmVjMyBkLCBmbG9hdCBpbmRleCwgb3V0IHZlYzMgbm9ybWFs KSB7XG4gIGZsb2F0IHNlZ21lbnRDb3VudCA9IDguMDtcblxuICBmbG9hdCBh bmdsZSA9IDIuMCAqIDMuMTQxNTkgKiAoaW5kZXggLyBzZWdtZW50Q291bnQp O1xuXG4gIHZlYzMgdSA9IGdldE9ydGhvZ29uYWxWZWN0b3IoZCk7XG4gIHZl YzMgdiA9IG5vcm1hbGl6ZShjcm9zcyh1LCBkKSk7XG5cbiAgdmVjMyB4ID0g dSAqIGNvcyhhbmdsZSkgKiBsZW5ndGgoZCk7XG4gIHZlYzMgeSA9IHYgKiBz aW4oYW5nbGUpICogbGVuZ3RoKGQpO1xuICB2ZWMzIHYzID0geCArIHk7XG5c biAgbm9ybWFsID0gbm9ybWFsaXplKHYzKTtcblxuICByZXR1cm4gdjM7XG59 XG5cbmF0dHJpYnV0ZSB2ZWM0IHZlY3RvcjtcbmF0dHJpYnV0ZSB2ZWM0IGNv bG9yLCBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWMyIHV2O1xuXG51bmlmb3Jt IGZsb2F0IHZlY3RvclNjYWxlLCB0dWJlU2NhbGU7XG51bmlmb3JtIG1hdDQg bW9kZWwsIHZpZXcsIHByb2plY3Rpb24sIGludmVyc2VNb2RlbDtcbnVuaWZv cm0gdmVjMyBleWVQb3NpdGlvbiwgbGlnaHRQb3NpdGlvbjtcblxudmFyeWlu ZyB2ZWMzIGZfbm9ybWFsLCBmX2xpZ2h0RGlyZWN0aW9uLCBmX2V5ZURpcmVj dGlvbiwgZl9kYXRhLCBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfY29s b3I7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICAv LyBTY2FsZSB0aGUgdmVjdG9yIG1hZ25pdHVkZSB0byBzdGF5IGNvbnN0YW50 IHdpdGhcbiAgLy8gbW9kZWwgJiB2aWV3IGNoYW5nZXMuXG4gIHZlYzMgbm9y bWFsO1xuICB2ZWMzIFhZWiA9IGdldFR1YmVQb3NpdGlvbihtYXQzKG1vZGVs KSAqICh0dWJlU2NhbGUgKiB2ZWN0b3IudyAqIG5vcm1hbGl6ZSh2ZWN0b3Iu eHl6KSksIHBvc2l0aW9uLncsIG5vcm1hbCk7XG4gIHZlYzQgdHViZVBvc2l0 aW9uID0gbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLnh5eiwgMS4wKSArIHZlYzQo WFlaLCAwLjApO1xuXG4gIC8vTGlnaHRpbmcgZ2VvbWV0cnkgcGFyYW1ldGVy c1xuICB2ZWM0IGNhbWVyYUNvb3JkaW5hdGUgPSB2aWV3ICogdHViZVBvc2l0 aW9uO1xuICBjYW1lcmFDb29yZGluYXRlLnh5eiAvPSBjYW1lcmFDb29yZGlu YXRlLnc7XG4gIGZfbGlnaHREaXJlY3Rpb24gPSBsaWdodFBvc2l0aW9uIC0g Y2FtZXJhQ29vcmRpbmF0ZS54eXo7XG4gIGZfZXllRGlyZWN0aW9uICAgPSBl eWVQb3NpdGlvbiAtIGNhbWVyYUNvb3JkaW5hdGUueHl6O1xuICBmX25vcm1h bCA9IG5vcm1hbGl6ZSgodmVjNChub3JtYWwsIDAuMCkgKiBpbnZlcnNlTW9k ZWwpLnh5eik7XG5cbiAgLy8gdmVjNCBtX3Bvc2l0aW9uICA9IG1vZGVsICog dmVjNCh0dWJlUG9zaXRpb24sIDEuMCk7XG4gIHZlYzQgdF9wb3NpdGlvbiAg PSB2aWV3ICogdHViZVBvc2l0aW9uO1xuICBnbF9Qb3NpdGlvbiAgICAgID0g cHJvamVjdGlvbiAqIHRfcG9zaXRpb247XG5cbiAgZl9jb2xvciAgICAgICAg ICA9IGNvbG9yO1xuICBmX2RhdGEgICAgICAgICAgID0gdHViZVBvc2l0aW9u Lnh5ejtcbiAgZl9wb3NpdGlvbiAgICAgICA9IHBvc2l0aW9uLnh5ejtcbiAg Zl91diAgICAgICAgICAgICA9IHV2O1xufVxuIl0pLGk9bihbIiNleHRlbnNp b24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlXG5cbnBy ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmZs b2F0IGJlY2ttYW5uRGlzdHJpYnV0aW9uKGZsb2F0IHgsIGZsb2F0IHJvdWdo bmVzcykge1xuICBmbG9hdCBOZG90SCA9IG1heCh4LCAwLjAwMDEpO1xuICBm bG9hdCBjb3MyQWxwaGEgPSBOZG90SCAqIE5kb3RIO1xuICBmbG9hdCB0YW4y QWxwaGEgPSAoY29zMkFscGhhIC0gMS4wKSAvIGNvczJBbHBoYTtcbiAgZmxv YXQgcm91Z2huZXNzMiA9IHJvdWdobmVzcyAqIHJvdWdobmVzcztcbiAgZmxv YXQgZGVub20gPSAzLjE0MTU5MjY1MzU4OTc5MyAqIHJvdWdobmVzczIgKiBj b3MyQWxwaGEgKiBjb3MyQWxwaGE7XG4gIHJldHVybiBleHAodGFuMkFscGhh IC8gcm91Z2huZXNzMikgLyBkZW5vbTtcbn1cblxuZmxvYXQgY29va1RvcnJh bmNlU3BlY3VsYXIoXG4gIHZlYzMgbGlnaHREaXJlY3Rpb24sXG4gIHZlYzMg dmlld0RpcmVjdGlvbixcbiAgdmVjMyBzdXJmYWNlTm9ybWFsLFxuICBmbG9h dCByb3VnaG5lc3MsXG4gIGZsb2F0IGZyZXNuZWwpIHtcblxuICBmbG9hdCBW ZG90TiA9IG1heChkb3Qodmlld0RpcmVjdGlvbiwgc3VyZmFjZU5vcm1hbCks IDAuMCk7XG4gIGZsb2F0IExkb3ROID0gbWF4KGRvdChsaWdodERpcmVjdGlv biwgc3VyZmFjZU5vcm1hbCksIDAuMCk7XG5cbiAgLy9IYWxmIGFuZ2xlIHZl Y3RvclxuICB2ZWMzIEggPSBub3JtYWxpemUobGlnaHREaXJlY3Rpb24gKyB2 aWV3RGlyZWN0aW9uKTtcblxuICAvL0dlb21ldHJpYyB0ZXJtXG4gIGZsb2F0 IE5kb3RIID0gbWF4KGRvdChzdXJmYWNlTm9ybWFsLCBIKSwgMC4wKTtcbiAg ZmxvYXQgVmRvdEggPSBtYXgoZG90KHZpZXdEaXJlY3Rpb24sIEgpLCAwLjAw MDAwMSk7XG4gIGZsb2F0IExkb3RIID0gbWF4KGRvdChsaWdodERpcmVjdGlv biwgSCksIDAuMDAwMDAxKTtcbiAgZmxvYXQgRzEgPSAoMi4wICogTmRvdEgg KiBWZG90TikgLyBWZG90SDtcbiAgZmxvYXQgRzIgPSAoMi4wICogTmRvdEgg KiBMZG90TikgLyBMZG90SDtcbiAgZmxvYXQgRyA9IG1pbigxLjAsIG1pbihH MSwgRzIpKTtcbiAgXG4gIC8vRGlzdHJpYnV0aW9uIHRlcm1cbiAgZmxvYXQg RCA9IGJlY2ttYW5uRGlzdHJpYnV0aW9uKE5kb3RILCByb3VnaG5lc3MpO1xu XG4gIC8vRnJlc25lbCB0ZXJtXG4gIGZsb2F0IEYgPSBwb3coMS4wIC0gVmRv dE4sIGZyZXNuZWwpO1xuXG4gIC8vTXVsdGlwbHkgdGVybXMgYW5kIGRvbmVc biAgcmV0dXJuICBHICogRiAqIEQgLyBtYXgoMy4xNDE1OTI2NSAqIFZkb3RO LCAwLjAwMDAwMSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBm bG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikp IHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59XG5cbmJvb2wg b3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVy biAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91 dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFu Z2UodmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9m UmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdl KGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnos IGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZl YzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBi Lnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1sy XTtcbnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzLCBmcmVzbmVsLCBrYW1iaWVu dCwga2RpZmZ1c2UsIGtzcGVjdWxhciwgb3BhY2l0eTtcbnVuaWZvcm0gc2Ft cGxlcjJEIHRleHR1cmU7XG5cbnZhcnlpbmcgdmVjMyBmX25vcm1hbCwgZl9s aWdodERpcmVjdGlvbiwgZl9leWVEaXJlY3Rpb24sIGZfZGF0YSwgZl9wb3Np dGlvbjtcbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWluZyB2ZWMyIGZf dXY7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJv dW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgZl9wb3NpdGlvbikpIGRpc2NhcmQ7 XG4gIHZlYzMgTiA9IG5vcm1hbGl6ZShmX25vcm1hbCk7XG4gIHZlYzMgTCA9 IG5vcm1hbGl6ZShmX2xpZ2h0RGlyZWN0aW9uKTtcbiAgdmVjMyBWID0gbm9y bWFsaXplKGZfZXllRGlyZWN0aW9uKTtcblxuICBpZihnbF9Gcm9udEZhY2lu Zykge1xuICAgIE4gPSAtTjtcbiAgfVxuXG4gIGZsb2F0IHNwZWN1bGFyID0g bWluKDEuMCwgbWF4KDAuMCwgY29va1RvcnJhbmNlU3BlY3VsYXIoTCwgViwg Tiwgcm91Z2huZXNzLCBmcmVzbmVsKSkpO1xuICBmbG9hdCBkaWZmdXNlICA9 IG1pbihrYW1iaWVudCArIGtkaWZmdXNlICogbWF4KGRvdChOLCBMKSwgMC4w KSwgMS4wKTtcblxuICB2ZWM0IHN1cmZhY2VDb2xvciA9IGZfY29sb3IgKiB0 ZXh0dXJlMkQodGV4dHVyZSwgZl91dik7XG4gIHZlYzQgbGl0Q29sb3IgPSBz dXJmYWNlQ29sb3IuYSAqIHZlYzQoZGlmZnVzZSAqIHN1cmZhY2VDb2xvci5y Z2IgKyBrc3BlY3VsYXIgKiB2ZWMzKDEsMSwxKSAqIHNwZWN1bGFyLCAgMS4w KTtcblxuICBnbF9GcmFnQ29sb3IgPSBsaXRDb2xvciAqIG9wYWNpdHk7XG59 XG4iXSksbz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG5wcmVjaXNp b24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52ZWMzIGdl dE9ydGhvZ29uYWxWZWN0b3IodmVjMyB2KSB7XG4gIC8vIFJldHVybiB1cC12 ZWN0b3IgZm9yIG9ubHkteiB2ZWN0b3IuXG4gIC8vIFJldHVybiBheCArIGJ5 ICsgY3ogPSAwLCBhIHBvaW50IHRoYXQgbGllcyBvbiB0aGUgcGxhbmUgdGhh dCBoYXMgdiBhcyBhIG5vcm1hbCBhbmQgdGhhdCBpc24ndCAoMCwwLDApLlxu ICAvLyBGcm9tIHRoZSBhYm92ZSBpZi1zdGF0ZW1lbnQgd2UgaGF2ZSB8fGF8 fCA+IDAgIFUgIHx8Ynx8ID4gMC5cbiAgLy8gQXNzaWduIHogPSAwLCB4ID0g LWIsIHkgPSBhOlxuICAvLyBhKi1iICsgYiphICsgYyowID0gLWJhICsgYmEg KyAwID0gMFxuICBpZiAodi54KnYueCA+IHYueip2LnogfHwgdi55KnYueSA+ IHYueip2LnopIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKHZlYzMoLXYueSwg di54LCAwLjApKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm9ybWFsaXpl KHZlYzMoMC4wLCB2LnosIC12LnkpKTtcbiAgfVxufVxuXG4vLyBDYWxjdWxh dGUgdGhlIHR1YmUgdmVydGV4IGFuZCBub3JtYWwgYXQgdGhlIGdpdmVuIGlu ZGV4LlxuLy9cbi8vIFRoZSByZXR1cm5lZCB2ZXJ0ZXggaXMgZm9yIGEgdHVi ZSByaW5nIHdpdGggaXRzIGNlbnRlciBhdCBvcmlnaW4sIHJhZGl1cyBvZiBs ZW5ndGgoZCksIHBvaW50aW5nIGluIHRoZSBkaXJlY3Rpb24gb2YgZC5cbi8v XG4vLyBFYWNoIHR1YmUgc2VnbWVudCBpcyBtYWRlIHVwIG9mIGEgcmluZyBv ZiB2ZXJ0aWNlcy5cbi8vIFRoZXNlIHZlcnRpY2VzIGFyZSB1c2VkIHRvIG1h a2UgdXAgdGhlIHRyaWFuZ2xlcyBvZiB0aGUgdHViZSBieSBjb25uZWN0aW5n IHRoZW0gdG9nZXRoZXIgaW4gdGhlIHZlcnRleCBhcnJheS5cbi8vIFRoZSBp bmRleGVzIG9mIHR1YmUgc2VnbWVudHMgcnVuIGZyb20gMCB0byA4LlxuLy9c bnZlYzMgZ2V0VHViZVBvc2l0aW9uKHZlYzMgZCwgZmxvYXQgaW5kZXgsIG91 dCB2ZWMzIG5vcm1hbCkge1xuICBmbG9hdCBzZWdtZW50Q291bnQgPSA4LjA7 XG5cbiAgZmxvYXQgYW5nbGUgPSAyLjAgKiAzLjE0MTU5ICogKGluZGV4IC8g c2VnbWVudENvdW50KTtcblxuICB2ZWMzIHUgPSBnZXRPcnRob2dvbmFsVmVj dG9yKGQpO1xuICB2ZWMzIHYgPSBub3JtYWxpemUoY3Jvc3ModSwgZCkpO1xu XG4gIHZlYzMgeCA9IHUgKiBjb3MoYW5nbGUpICogbGVuZ3RoKGQpO1xuICB2 ZWMzIHkgPSB2ICogc2luKGFuZ2xlKSAqIGxlbmd0aChkKTtcbiAgdmVjMyB2 MyA9IHggKyB5O1xuXG4gIG5vcm1hbCA9IG5vcm1hbGl6ZSh2Myk7XG5cbiAg cmV0dXJuIHYzO1xufVxuXG5hdHRyaWJ1dGUgdmVjNCB2ZWN0b3I7XG5hdHRy aWJ1dGUgdmVjNCBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0IGlkO1xuXG51 bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3Jt IGZsb2F0IHR1YmVTY2FsZTtcblxudmFyeWluZyB2ZWMzIGZfcG9zaXRpb247 XG52YXJ5aW5nIHZlYzQgZl9pZDtcblxudm9pZCBtYWluKCkge1xuICB2ZWMz IG5vcm1hbDtcbiAgdmVjMyBYWVogPSBnZXRUdWJlUG9zaXRpb24obWF0Myht b2RlbCkgKiAodHViZVNjYWxlICogdmVjdG9yLncgKiBub3JtYWxpemUodmVj dG9yLnh5eikpLCBwb3NpdGlvbi53LCBub3JtYWwpO1xuICB2ZWM0IHR1YmVQ b3NpdGlvbiA9IG1vZGVsICogdmVjNChwb3NpdGlvbi54eXosIDEuMCkgKyB2 ZWM0KFhZWiwgMC4wKTtcblxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb24g KiB2aWV3ICogdHViZVBvc2l0aW9uO1xuICBmX2lkICAgICAgICA9IGlkO1xu ICBmX3Bvc2l0aW9uICA9IHBvc2l0aW9uLnh5ejtcbn1cbiJdKSxzPW4oWyJw cmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5i b29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xu ICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAocCA8 IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2 ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBi LngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBw LnkpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2 ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngp IHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8fFxu ICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5i b29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICBy ZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxu dW5pZm9ybSB2ZWMzICBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBw aWNrSWQ7XG5cbnZhcnlpbmcgdmVjMyBmX3Bvc2l0aW9uO1xudmFyeWluZyB2 ZWM0IGZfaWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2Uo Y2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgZl9wb3NpdGlvbikpIGRp c2NhcmQ7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChwaWNrSWQsIGZfaWQu eHl6KTtcbn0iXSk7ci5tZXNoU2hhZGVyPXt2ZXJ0ZXg6YSxmcmFnbWVudDpp LGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjNCJ9LHtu YW1lOiJjb2xvciIsdHlwZToidmVjNCJ9LHtuYW1lOiJ1diIsdHlwZToidmVj MiJ9LHtuYW1lOiJ2ZWN0b3IiLHR5cGU6InZlYzQifV19LHIucGlja1NoYWRl cj17dmVydGV4Om8sZnJhZ21lbnQ6cyxhdHRyaWJ1dGVzOlt7bmFtZToicG9z aXRpb24iLHR5cGU6InZlYzQifSx7bmFtZToiaWQiLHR5cGU6InZlYzQifSx7 bmFtZToidmVjdG9yIix0eXBlOiJ2ZWM0In1dfX0se2dsc2xpZnk6NDExfV0s MzE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImds LXZlYzMiKSxhPXQoImdsLXZlYzQiKSxpPVsieHl6IiwieHp5IiwieXh6Iiwi eXp4Iiwienh5Iiwienl4Il0sbz1mdW5jdGlvbih0LGUscixpKXtmb3IodmFy IG89MCxzPTA7czx0Lmxlbmd0aDtzKyspZm9yKHZhciBsPXRbc10udmVsb2Np dGllcyxjPTA7YzxsLmxlbmd0aDtjKyspbz1NYXRoLm1heChvLG4ubGVuZ3Ro KGxbY10pKTt2YXIgdT10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rp b24odCxlLHIsaSl7Zm9yKHZhciBvPXQucG9pbnRzLHM9dC52ZWxvY2l0aWVz LGw9dC5kaXZlcmdlbmNlcyxjPVtdLHU9W10saD1bXSxmPVtdLHA9W10sZD1b XSxnPTAsdj0wLG09YS5jcmVhdGUoKSx5PWEuY3JlYXRlKCkseD0wO3g8by5s ZW5ndGg7eCsrKXt2YXIgYj1vW3hdLF89c1t4XSx3PWxbeF07MD09PWUmJih3 PS4wNSpyKSx2PW4ubGVuZ3RoKF8pL2ksbT1hLmNyZWF0ZSgpLG4uY29weSht LF8pLG1bM109dztmb3IodmFyIGs9MDtrPDg7aysrKXBba109W2JbMF0sYlsx XSxiWzJdLGtdO2lmKGYubGVuZ3RoPjApZm9yKGs9MDtrPDg7aysrKXt2YXIg VD0oaysxKSU4O2MucHVzaChmW2tdLHBba10scFtUXSxwW1RdLGZbVF0sZltr XSksaC5wdXNoKHksbSxtLG0seSx5KSxkLnB1c2goZyx2LHYsdixnLGcpO3Zh ciBNPWMubGVuZ3RoO3UucHVzaChbTS02LE0tNSxNLTRdLFtNLTMsTS0yLE0t MV0pfXZhciBBPWY7Zj1wLHA9QTt2YXIgUz15O3k9bSxtPVM7dmFyIEU9Zztn PXYsdj1FfXJldHVybntwb3NpdGlvbnM6YyxjZWxsczp1LHZlY3RvcnM6aCx2 ZXJ0ZXhJbnRlbnNpdHk6ZH19KHQscixpLG8pfSksaD1bXSxmPVtdLHA9W10s ZD1bXTtmb3Iocz0wO3M8dS5sZW5ndGg7cysrKXt2YXIgZz11W3NdLHY9aC5s ZW5ndGg7aD1oLmNvbmNhdChnLnBvc2l0aW9ucykscD1wLmNvbmNhdChnLnZl Y3RvcnMpLGQ9ZC5jb25jYXQoZy52ZXJ0ZXhJbnRlbnNpdHkpO2ZvcihjPTA7 YzxnLmNlbGxzLmxlbmd0aDtjKyspe3ZhciBtPWcuY2VsbHNbY10seT1bXTtm LnB1c2goeSk7Zm9yKHZhciB4PTA7eDxtLmxlbmd0aDt4KyspeS5wdXNoKG1b eF0rdil9fXJldHVybntwb3NpdGlvbnM6aCxjZWxsczpmLHZlY3RvcnM6cCx2 ZXJ0ZXhJbnRlbnNpdHk6ZCxjb2xvcm1hcDplfX0scz1mdW5jdGlvbih0LGUp e3ZhciByLG49dC5sZW5ndGg7Zm9yKHI9MDtyPG47cisrKXt2YXIgYT10W3Jd O2lmKGE9PT1lKXJldHVybiByO2lmKGE+ZSlyZXR1cm4gci0xfXJldHVybiBy fSxsPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdDxlP2U6dD5yP3I6dH0sYz1m dW5jdGlvbih0KXt2YXIgZT0xLzA7dC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHQtZX0pO2Zvcih2YXIgcj10Lmxlbmd0aCxuPTE7bjxyO24rKyl7dmFy IGE9TWF0aC5hYnModFtuXS10W24tMV0pO2E8ZSYmKGU9YSl9cmV0dXJuIGV9 O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuc3RhcnRpbmdQb3Np dGlvbnMsYT10Lm1heExlbmd0aHx8MWUzLHU9dC50dWJlU2l6ZXx8MSxoPXQu YWJzb2x1dGVUdWJlU2l6ZSxmPXQuZ3JpZEZpbGx8fCIreCt5K3oiLHA9e307 LTEhPT1mLmluZGV4T2YoIi14IikmJihwLnJldmVyc2VkWD0hMCksLTEhPT1m LmluZGV4T2YoIi15IikmJihwLnJldmVyc2VkWT0hMCksLTEhPT1mLmluZGV4 T2YoIi16IikmJihwLnJldmVyc2VkWj0hMCkscC5maWxsZWQ9aS5pbmRleE9m KGYucmVwbGFjZSgvLS9nLCIiKS5yZXBsYWNlKC9cKy9nLCIiKSk7dmFyIGQ9 dC5nZXRWZWxvY2l0eXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQs ZSxyKXt2YXIgYT1lLnZlY3RvcnMsaT1lLm1lc2hncmlkLG89dFswXSxjPXRb MV0sdT10WzJdLGg9aVswXS5sZW5ndGgsZj1pWzFdLmxlbmd0aCxwPWlbMl0u bGVuZ3RoLGQ9cyhpWzBdLG8pLGc9cyhpWzFdLGMpLHY9cyhpWzJdLHUpLG09 ZCsxLHk9ZysxLHg9disxO2lmKGQ9bChkLDAsaC0xKSxtPWwobSwwLGgtMSks Zz1sKGcsMCxmLTEpLHk9bCh5LDAsZi0xKSx2PWwodiwwLHAtMSkseD1sKHgs MCxwLTEpLGQ8MHx8ZzwwfHx2PDB8fG0+aC0xfHx5PmYtMXx8eD5wLTEpcmV0 dXJuIG4uY3JlYXRlKCk7dmFyIGIsXyx3LGssVCxNLEE9aVswXVtkXSxTPWlb MF1bbV0sRT1pWzFdW2ddLEw9aVsxXVt5XSxDPWlbMl1bdl0sUD0oby1BKS8o Uy1BKSxPPShjLUUpLyhMLUUpLHo9KHUtQykvKGlbMl1beF0tQyk7c3dpdGNo KGlzRmluaXRlKFApfHwoUD0uNSksaXNGaW5pdGUoTyl8fChPPS41KSxpc0Zp bml0ZSh6KXx8KHo9LjUpLHIucmV2ZXJzZWRYJiYoZD1oLTEtZCxtPWgtMS1t KSxyLnJldmVyc2VkWSYmKGc9Zi0xLWcseT1mLTEteSksci5yZXZlcnNlZFom Jih2PXAtMS12LHg9cC0xLXgpLHIuZmlsbGVkKXtjYXNlIDU6VD12LE09eCx3 PWcqcCxrPXkqcCxiPWQqcCpmLF89bSpwKmY7YnJlYWs7Y2FzZSA0OlQ9dixN PXgsYj1kKnAsXz1tKnAsdz1nKnAqaCxrPXkqcCpoO2JyZWFrO2Nhc2UgMzp3 PWcsaz15LFQ9dipmLE09eCpmLGI9ZCpmKnAsXz1tKmYqcDticmVhaztjYXNl IDI6dz1nLGs9eSxiPWQqZixfPW0qZixUPXYqZipoLE09eCpmKmg7YnJlYWs7 Y2FzZSAxOmI9ZCxfPW0sVD12KmgsTT14Kmgsdz1nKmgqcCxrPXkqaCpwO2Jy ZWFrO2RlZmF1bHQ6Yj1kLF89bSx3PWcqaCxrPXkqaCxUPXYqaCpmLE09eCpo KmZ9dmFyIEk9YVtiK3crVF0sRD1hW2IrdytNXSxSPWFbYitrK1RdLEY9YVti K2srTV0sQj1hW18rdytUXSxOPWFbXyt3K01dLGo9YVtfK2srVF0sVj1hW18r aytNXSxVPW4uY3JlYXRlKCkscT1uLmNyZWF0ZSgpLEg9bi5jcmVhdGUoKSxH PW4uY3JlYXRlKCk7bi5sZXJwKFUsSSxCLFApLG4ubGVycChxLEQsTixQKSxu LmxlcnAoSCxSLGosUCksbi5sZXJwKEcsRixWLFApO3ZhciBZPW4uY3JlYXRl KCksVz1uLmNyZWF0ZSgpO24ubGVycChZLFUsSCxPKSxuLmxlcnAoVyxxLEcs Tyk7dmFyIFg9bi5jcmVhdGUoKTtyZXR1cm4gbi5sZXJwKFgsWSxXLHopLFh9 KGUsdCxwKX0sZz10LmdldERpdmVyZ2VuY2V8fGZ1bmN0aW9uKHQsZSl7dmFy IHI9bi5jcmVhdGUoKSxhPTFlLTQ7bi5hZGQocix0LFthLDAsMF0pO3ZhciBp PWQocik7bi5zdWJ0cmFjdChpLGksZSksbi5zY2FsZShpLGksMWU0KSxuLmFk ZChyLHQsWzAsYSwwXSk7dmFyIG89ZChyKTtuLnN1YnRyYWN0KG8sbyxlKSxu LnNjYWxlKG8sbywxZTQpLG4uYWRkKHIsdCxbMCwwLGFdKTt2YXIgcz1kKHIp O3JldHVybiBuLnN1YnRyYWN0KHMscyxlKSxuLnNjYWxlKHMscywxZTQpLG4u YWRkKHIsaSxvKSxuLmFkZChyLHIscykscn0sdj1bXSxtPWVbMF1bMF0seT1l WzBdWzFdLHg9ZVswXVsyXSxiPWVbMV1bMF0sXz1lWzFdWzFdLHc9ZVsxXVsy XSxrPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj10WzFdLG49dFsyXTtyZXR1 cm4hKGU8bXx8ZT5ifHxyPHl8fHI+X3x8bjx4fHxuPncpfSxUPTEwKm4uZGlz dGFuY2UoZVswXSxlWzFdKS9hLE09VCpULEE9MSxTPTAsRT1yLmxlbmd0aDtF PjEmJihBPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPVtdLG49W10sYT17 fSxpPXt9LG89e30scz10Lmxlbmd0aCxsPTA7bDxzO2wrKyl7dmFyIHU9dFts XSxoPXVbMF0sZj11WzFdLHA9dVsyXTthW2hdfHwoZS5wdXNoKGgpLGFbaF09 ITApLGlbZl18fChyLnB1c2goZiksaVtmXT0hMCksb1twXXx8KG4ucHVzaChw KSxvW3BdPSEwKX12YXIgZD1jKGUpLGc9YyhyKSx2PWMobiksbT1NYXRoLm1p bihkLGcsdik7cmV0dXJuIGlzRmluaXRlKG0pP206MX0ocikpO2Zvcih2YXIg TD0wO0w8RTtMKyspe3ZhciBDPW4uY3JlYXRlKCk7bi5jb3B5KEMscltMXSk7 dmFyIFA9W0NdLE89W10sej1kKEMpLEk9QztPLnB1c2goeik7dmFyIEQ9W10s Uj1nKEMseiksRj1uLmxlbmd0aChSKTtpc0Zpbml0ZShGKSYmRj5TJiYoUz1G KSxELnB1c2goRiksdi5wdXNoKHtwb2ludHM6UCx2ZWxvY2l0aWVzOk8sZGl2 ZXJnZW5jZXM6RH0pO2Zvcih2YXIgQj0wO0I8MTAwKmEmJlAubGVuZ3RoPGEm JmsoQyk7KXtCKys7dmFyIE49bi5jbG9uZSh6KSxqPW4uc3F1YXJlZExlbmd0 aChOKTtpZigwPT09ailicmVhaztpZihqPk0mJm4uc2NhbGUoTixOLFQvTWF0 aC5zcXJ0KGopKSxuLmFkZChOLE4sQyksej1kKE4pLG4uc3F1YXJlZERpc3Rh bmNlKEksTiktTT4tMWUtNCpNKXtQLnB1c2goTiksST1OLE8ucHVzaCh6KTtS PWcoTix6KSxGPW4ubGVuZ3RoKFIpO2lzRmluaXRlKEYpJiZGPlMmJihTPUYp LEQucHVzaChGKX1DPU59fXZhciBWPW8odix0LmNvbG9ybWFwLFMsQSk7cmV0 dXJuIGg/Vi50dWJlU2NhbGU9aDooMD09PVMmJihTPTEpLFYudHViZVNjYWxl PS41KnUqQS9TKSxWfTt2YXIgdT10KCIuL2xpYi9zaGFkZXJzIiksaD10KCJn bC1jb25lM2QiKS5jcmVhdGVNZXNoO2UuZXhwb3J0cy5jcmVhdGVUdWJlTWVz aD1mdW5jdGlvbih0LGUpe3JldHVybiBoKHQsZSx7c2hhZGVyczp1LHRyYWNl VHlwZToic3RyZWFtdHViZSJ9KX19LHsiLi9saWIvc2hhZGVycyI6MzE0LCJn bC1jb25lM2QiOjI0NSwiZ2wtdmVjMyI6MzQ4LCJnbC12ZWM0IjozODR9XSwz MTY6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnbC1zaGFkZXIiKSxhPXQo Imdsc2xpZnkiKSxpPWEoWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVm aW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjNCB1djtcbmF0dHJpYnV0 ZSB2ZWMzIGY7XG5hdHRyaWJ1dGUgdmVjMyBub3JtYWw7XG5cbnVuaWZvcm0g dmVjMyBvYmplY3RPZmZzZXQ7XG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcs IHByb2plY3Rpb24sIGludmVyc2VNb2RlbDtcbnVuaWZvcm0gdmVjMyBsaWdo dFBvc2l0aW9uLCBleWVQb3NpdGlvbjtcbnVuaWZvcm0gc2FtcGxlcjJEIGNv bG9ybWFwO1xuXG52YXJ5aW5nIGZsb2F0IHZhbHVlLCBraWxsO1xudmFyeWlu ZyB2ZWMzIHdvcmxkQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMiBwbGFuZUNv b3JkaW5hdGU7XG52YXJ5aW5nIHZlYzMgbGlnaHREaXJlY3Rpb24sIGV5ZURp cmVjdGlvbiwgc3VyZmFjZU5vcm1hbDtcbnZhcnlpbmcgdmVjNCB2Q29sb3I7 XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBsb2NhbENvb3JkaW5hdGUgPSB2 ZWMzKHV2Lnp3LCBmLngpO1xuICB3b3JsZENvb3JkaW5hdGUgPSBvYmplY3RP ZmZzZXQgKyBsb2NhbENvb3JkaW5hdGU7XG4gIHZlYzQgd29ybGRQb3NpdGlv biA9IG1vZGVsICogdmVjNCh3b3JsZENvb3JkaW5hdGUsIDEuMCk7XG4gIHZl YzQgY2xpcFBvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiB3b3JsZFBv c2l0aW9uO1xuICBnbF9Qb3NpdGlvbiA9IGNsaXBQb3NpdGlvbjtcbiAga2ls bCA9IGYueTtcbiAgdmFsdWUgPSBmLno7XG4gIHBsYW5lQ29vcmRpbmF0ZSA9 IHV2Lnh5O1xuXG4gIHZDb2xvciA9IHRleHR1cmUyRChjb2xvcm1hcCwgdmVj Mih2YWx1ZSwgdmFsdWUpKTtcblxuICAvL0xpZ2h0aW5nIGdlb21ldHJ5IHBh cmFtZXRlcnNcbiAgdmVjNCBjYW1lcmFDb29yZGluYXRlID0gdmlldyAqIHdv cmxkUG9zaXRpb247XG4gIGNhbWVyYUNvb3JkaW5hdGUueHl6IC89IGNhbWVy YUNvb3JkaW5hdGUudztcbiAgbGlnaHREaXJlY3Rpb24gPSBsaWdodFBvc2l0 aW9uIC0gY2FtZXJhQ29vcmRpbmF0ZS54eXo7XG4gIGV5ZURpcmVjdGlvbiAg ID0gZXllUG9zaXRpb24gLSBjYW1lcmFDb29yZGluYXRlLnh5ejtcbiAgc3Vy ZmFjZU5vcm1hbCAgPSBub3JtYWxpemUoKHZlYzQobm9ybWFsLDApICogaW52 ZXJzZU1vZGVsKS54eXopO1xufVxuIl0pLG89YShbInByZWNpc2lvbiBoaWdo cCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmZsb2F0IGJlY2ttYW5u RGlzdHJpYnV0aW9uKGZsb2F0IHgsIGZsb2F0IHJvdWdobmVzcykge1xuICBm bG9hdCBOZG90SCA9IG1heCh4LCAwLjAwMDEpO1xuICBmbG9hdCBjb3MyQWxw aGEgPSBOZG90SCAqIE5kb3RIO1xuICBmbG9hdCB0YW4yQWxwaGEgPSAoY29z MkFscGhhIC0gMS4wKSAvIGNvczJBbHBoYTtcbiAgZmxvYXQgcm91Z2huZXNz MiA9IHJvdWdobmVzcyAqIHJvdWdobmVzcztcbiAgZmxvYXQgZGVub20gPSAz LjE0MTU5MjY1MzU4OTc5MyAqIHJvdWdobmVzczIgKiBjb3MyQWxwaGEgKiBj b3MyQWxwaGE7XG4gIHJldHVybiBleHAodGFuMkFscGhhIC8gcm91Z2huZXNz MikgLyBkZW5vbTtcbn1cblxuZmxvYXQgYmVja21hbm5TcGVjdWxhcihcbiAg dmVjMyBsaWdodERpcmVjdGlvbixcbiAgdmVjMyB2aWV3RGlyZWN0aW9uLFxu ICB2ZWMzIHN1cmZhY2VOb3JtYWwsXG4gIGZsb2F0IHJvdWdobmVzcykge1xu ICByZXR1cm4gYmVja21hbm5EaXN0cmlidXRpb24oZG90KHN1cmZhY2VOb3Jt YWwsIG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbiArIHZpZXdEaXJlY3Rpb24p KSwgcm91Z2huZXNzKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEs IGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBi KSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9v bCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0 dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAg b3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZS YW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0 T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFu Z2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEu eiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwg dmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXos IGIueHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gdmVjMyBsb3dlckJvdW5k LCB1cHBlckJvdW5kO1xudW5pZm9ybSBmbG9hdCBjb250b3VyVGludDtcbnVu aWZvcm0gdmVjNCBjb250b3VyQ29sb3I7XG51bmlmb3JtIHNhbXBsZXIyRCBj b2xvcm1hcDtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9y bSBmbG9hdCByb3VnaG5lc3MsIGZyZXNuZWwsIGthbWJpZW50LCBrZGlmZnVz ZSwga3NwZWN1bGFyLCBvcGFjaXR5O1xudW5pZm9ybSBmbG9hdCB2ZXJ0ZXhD b2xvcjtcblxudmFyeWluZyBmbG9hdCB2YWx1ZSwga2lsbDtcbnZhcnlpbmcg dmVjMyB3b3JsZENvb3JkaW5hdGU7XG52YXJ5aW5nIHZlYzMgbGlnaHREaXJl Y3Rpb24sIGV5ZURpcmVjdGlvbiwgc3VyZmFjZU5vcm1hbDtcbnZhcnlpbmcg dmVjNCB2Q29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKChraWxsID4g MC4wKSB8fFxuICAgICAgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xp cEJvdW5kc1sxXSwgd29ybGRDb29yZGluYXRlKSkpIGRpc2NhcmQ7XG5cbiAg dmVjMyBOID0gbm9ybWFsaXplKHN1cmZhY2VOb3JtYWwpO1xuICB2ZWMzIFYg PSBub3JtYWxpemUoZXllRGlyZWN0aW9uKTtcbiAgdmVjMyBMID0gbm9ybWFs aXplKGxpZ2h0RGlyZWN0aW9uKTtcblxuICBpZihnbF9Gcm9udEZhY2luZykg e1xuICAgIE4gPSAtTjtcbiAgfVxuXG4gIGZsb2F0IHNwZWN1bGFyID0gbWF4 KGJlY2ttYW5uU3BlY3VsYXIoTCwgViwgTiwgcm91Z2huZXNzKSwgMC4pO1xu ICBmbG9hdCBkaWZmdXNlICA9IG1pbihrYW1iaWVudCArIGtkaWZmdXNlICog bWF4KGRvdChOLCBMKSwgMC4wKSwgMS4wKTtcblxuICAvL2RlY2lkZSBob3cg dG8gaW50ZXJwb2xhdGUgY29sb3IgXHUyMDE0IGluIHZlcnRleCBvciBpbiBm cmFnbWVudFxuICB2ZWM0IHN1cmZhY2VDb2xvciA9XG4gICAgc3RlcCh2ZXJ0 ZXhDb2xvciwgLjUpICogdGV4dHVyZTJEKGNvbG9ybWFwLCB2ZWMyKHZhbHVl LCB2YWx1ZSkpICtcbiAgICBzdGVwKC41LCB2ZXJ0ZXhDb2xvcikgKiB2Q29s b3I7XG5cbiAgdmVjNCBsaXRDb2xvciA9IHN1cmZhY2VDb2xvci5hICogdmVj NChkaWZmdXNlICogc3VyZmFjZUNvbG9yLnJnYiArIGtzcGVjdWxhciAqIHZl YzMoMSwxLDEpICogc3BlY3VsYXIsICAxLjApO1xuXG4gIGdsX0ZyYWdDb2xv ciA9IG1peChsaXRDb2xvciwgY29udG91ckNvbG9yLCBjb250b3VyVGludCkg KiBvcGFjaXR5O1xufVxuIl0pLHM9YShbInByZWNpc2lvbiBoaWdocCBmbG9h dDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWM0IHV2O1xu YXR0cmlidXRlIGZsb2F0IGY7XG5cbnVuaWZvcm0gdmVjMyBvYmplY3RPZmZz ZXQ7XG51bmlmb3JtIG1hdDMgcGVybXV0YXRpb247XG51bmlmb3JtIG1hdDQg bW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3JtIGZsb2F0IGhlaWdo dCwgek9mZnNldDtcbnVuaWZvcm0gc2FtcGxlcjJEIGNvbG9ybWFwO1xuXG52 YXJ5aW5nIGZsb2F0IHZhbHVlLCBraWxsO1xudmFyeWluZyB2ZWMzIHdvcmxk Q29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMiBwbGFuZUNvb3JkaW5hdGU7XG52 YXJ5aW5nIHZlYzMgbGlnaHREaXJlY3Rpb24sIGV5ZURpcmVjdGlvbiwgc3Vy ZmFjZU5vcm1hbDtcbnZhcnlpbmcgdmVjNCB2Q29sb3I7XG5cbnZvaWQgbWFp bigpIHtcbiAgdmVjMyBkYXRhQ29vcmRpbmF0ZSA9IHBlcm11dGF0aW9uICog dmVjMyh1di54eSwgaGVpZ2h0KTtcbiAgd29ybGRDb29yZGluYXRlID0gb2Jq ZWN0T2Zmc2V0ICsgZGF0YUNvb3JkaW5hdGU7XG4gIHZlYzQgd29ybGRQb3Np dGlvbiA9IG1vZGVsICogdmVjNCh3b3JsZENvb3JkaW5hdGUsIDEuMCk7XG5c biAgdmVjNCBjbGlwUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIHdv cmxkUG9zaXRpb247XG4gIGNsaXBQb3NpdGlvbi56ICs9IHpPZmZzZXQ7XG5c biAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb247XG4gIHZhbHVlID0gZiAr IG9iamVjdE9mZnNldC56O1xuICBraWxsID0gLTEuMDtcbiAgcGxhbmVDb29y ZGluYXRlID0gdXYuenc7XG5cbiAgdkNvbG9yID0gdGV4dHVyZTJEKGNvbG9y bWFwLCB2ZWMyKHZhbHVlLCB2YWx1ZSkpO1xuXG4gIC8vRG9uJ3QgZG8gbGln aHRpbmcgZm9yIGNvbnRvdXJzXG4gIHN1cmZhY2VOb3JtYWwgICA9IHZlYzMo MSwwLDApO1xuICBleWVEaXJlY3Rpb24gICAgPSB2ZWMzKDAsMSwwKTtcbiAg bGlnaHREaXJlY3Rpb24gID0gdmVjMygwLDAsMSk7XG59XG4iXSksbD1hKFsi cHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxu Ym9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtc biAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAg PCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwg dmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwg Yi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwg cC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwg dmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54 KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxc biAgICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxu Ym9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAg cmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5c bnVuaWZvcm0gdmVjMiBzaGFwZTtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRz WzJdO1xudW5pZm9ybSBmbG9hdCBwaWNrSWQ7XG5cbnZhcnlpbmcgZmxvYXQg dmFsdWUsIGtpbGw7XG52YXJ5aW5nIHZlYzMgd29ybGRDb29yZGluYXRlO1xu dmFyeWluZyB2ZWMyIHBsYW5lQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBz dXJmYWNlTm9ybWFsO1xuXG52ZWMyIHNwbGl0RmxvYXQoZmxvYXQgdikge1xu ICBmbG9hdCB2aCA9IDI1NS4wICogdjtcbiAgZmxvYXQgdXBwZXIgPSBmbG9v cih2aCk7XG4gIGZsb2F0IGxvd2VyID0gZnJhY3QodmgpO1xuICByZXR1cm4g dmVjMih1cHBlciAvIDI1NS4wLCBmbG9vcihsb3dlciAqIDE2LjApIC8gMTYu MCk7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKChraWxsID4gMC4wKSB8 fFxuICAgICAgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5k c1sxXSwgd29ybGRDb29yZGluYXRlKSkpIGRpc2NhcmQ7XG5cbiAgdmVjMiB1 eCA9IHNwbGl0RmxvYXQocGxhbmVDb29yZGluYXRlLnggLyBzaGFwZS54KTtc biAgdmVjMiB1eSA9IHNwbGl0RmxvYXQocGxhbmVDb29yZGluYXRlLnkgLyBz aGFwZS55KTtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChwaWNrSWQsIHV4Lngs IHV5LngsIHV4LnkgKyAodXkueS8xNi4wKSk7XG59XG4iXSk7ci5jcmVhdGVT aGFkZXI9ZnVuY3Rpb24odCl7dmFyIGU9bih0LGksbyxudWxsLFt7bmFtZToi dXYiLHR5cGU6InZlYzQifSx7bmFtZToiZiIsdHlwZToidmVjMyJ9LHtuYW1l OiJub3JtYWwiLHR5cGU6InZlYzMifV0pO3JldHVybiBlLmF0dHJpYnV0ZXMu dXYubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuZi5sb2NhdGlvbj0xLGUuYXR0 cmlidXRlcy5ub3JtYWwubG9jYXRpb249MixlfSxyLmNyZWF0ZVBpY2tTaGFk ZXI9ZnVuY3Rpb24odCl7dmFyIGU9bih0LGksbCxudWxsLFt7bmFtZToidXYi LHR5cGU6InZlYzQifSx7bmFtZToiZiIsdHlwZToidmVjMyJ9LHtuYW1lOiJu b3JtYWwiLHR5cGU6InZlYzMifV0pO3JldHVybiBlLmF0dHJpYnV0ZXMudXYu bG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuZi5sb2NhdGlvbj0xLGUuYXR0cmli dXRlcy5ub3JtYWwubG9jYXRpb249MixlfSxyLmNyZWF0ZUNvbnRvdXJTaGFk ZXI9ZnVuY3Rpb24odCl7dmFyIGU9bih0LHMsbyxudWxsLFt7bmFtZToidXYi LHR5cGU6InZlYzQifSx7bmFtZToiZiIsdHlwZToiZmxvYXQifV0pO3JldHVy biBlLmF0dHJpYnV0ZXMudXYubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuZi5s b2NhdGlvbj0xLGV9LHIuY3JlYXRlUGlja0NvbnRvdXJTaGFkZXI9ZnVuY3Rp b24odCl7dmFyIGU9bih0LHMsbCxudWxsLFt7bmFtZToidXYiLHR5cGU6InZl YzQifSx7bmFtZToiZiIsdHlwZToiZmxvYXQifV0pO3JldHVybiBlLmF0dHJp YnV0ZXMudXYubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuZi5sb2NhdGlvbj0x LGV9fSx7ImdsLXNoYWRlciI6MzA0LGdsc2xpZnk6NDExfV0sMzE3OltmdW5j dGlvbih0LGUscil7YXJndW1lbnRzWzRdWzExM11bMF0uYXBwbHkocixhcmd1 bWVudHMpfSx7ZHVwOjExM31dLDMxODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5nbCxyPXko ZSksbj1iKGUpLHM9eChlKSxsPV8oZSksYz1hKGUpLHU9aShlLFt7YnVmZmVy OmMsc2l6ZTo0LHN0cmlkZTp3LG9mZnNldDowfSx7YnVmZmVyOmMsc2l6ZToz LHN0cmlkZTp3LG9mZnNldDoxNn0se2J1ZmZlcjpjLHNpemU6MyxzdHJpZGU6 dyxvZmZzZXQ6Mjh9XSksaD1hKGUpLGY9aShlLFt7YnVmZmVyOmgsc2l6ZTo0 LHN0cmlkZToyMCxvZmZzZXQ6MH0se2J1ZmZlcjpoLHNpemU6MSxzdHJpZGU6 MjAsb2Zmc2V0OjE2fV0pLHA9YShlKSxkPWkoZSxbe2J1ZmZlcjpwLHNpemU6 Mix0eXBlOmUuRkxPQVR9XSksZz1vKGUsMSxTLGUuUkdCQSxlLlVOU0lHTkVE X0JZVEUpO2cubWluRmlsdGVyPWUuTElORUFSLGcubWFnRmlsdGVyPWUuTElO RUFSO3ZhciB2PW5ldyBFKGUsWzAsMF0sW1swLDAsMF0sWzAsMCwwXV0scixu LGMsdSxnLHMsbCxoLGYscCxkLFswLDAsMF0pLG09e2xldmVsczpbW10sW10s W11dfTtmb3IodmFyIGsgaW4gdCltW2tdPXRba107cmV0dXJuIG0uY29sb3Jt YXA9bS5jb2xvcm1hcHx8ImpldCIsdi51cGRhdGUobSksdn07dmFyIG49dCgi Yml0LXR3aWRkbGUiKSxhPXQoImdsLWJ1ZmZlciIpLGk9dCgiZ2wtdmFvIiks bz10KCJnbC10ZXh0dXJlMmQiKSxzPXQoInR5cGVkYXJyYXktcG9vbCIpLGw9 dCgiY29sb3JtYXAiKSxjPXQoIm5kYXJyYXktb3BzIiksdT10KCJuZGFycmF5 LXBhY2siKSxoPXQoIm5kYXJyYXkiKSxmPXQoInN1cmZhY2UtbmV0cyIpLHA9 dCgiZ2wtbWF0NC9tdWx0aXBseSIpLGQ9dCgiZ2wtbWF0NC9pbnZlcnQiKSxn PXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksdj10KCJuZGFycmF5LWdyYWRp ZW50IiksbT10KCIuL2xpYi9zaGFkZXJzIikseT1tLmNyZWF0ZVNoYWRlcix4 PW0uY3JlYXRlQ29udG91clNoYWRlcixiPW0uY3JlYXRlUGlja1NoYWRlcixf PW0uY3JlYXRlUGlja0NvbnRvdXJTaGFkZXIsdz00MCxrPVsxLDAsMCwwLDAs MSwwLDAsMCwwLDEsMCwwLDAsMCwxXSxUPVtbMCwwXSxbMCwxXSxbMSwwXSxb MSwxXSxbMSwwXSxbMCwxXV0sTT1bWzAsMCwwLDAsMCwwLDAsMCwwXSxbMCww LDAsMCwwLDAsMCwwLDBdLFswLDAsMCwwLDAsMCwwLDAsMF1dO2Z1bmN0aW9u IEEodCxlLHIsbixhKXt0aGlzLnBvc2l0aW9uPXQsdGhpcy5pbmRleD1lLHRo aXMudXY9cix0aGlzLmxldmVsPW4sdGhpcy5kYXRhQ29vcmRpbmF0ZT1hfSFm dW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8MzsrK3Qpe3ZhciBlPU1bdF0scj0o dCsyKSUzO2VbKHQrMSklMyswXT0xLGVbciszXT0xLGVbdCs2XT0xfX0oKTt2 YXIgUz0yNTY7ZnVuY3Rpb24gRSh0LGUscixuLGEsaSxvLGwsYyx1LGYscCxk LGcsdil7dGhpcy5nbD10LHRoaXMuc2hhcGU9ZSx0aGlzLmJvdW5kcz1yLHRo aXMub2JqZWN0T2Zmc2V0PXYsdGhpcy5pbnRlbnNpdHlCb3VuZHM9W10sdGhp cy5fc2hhZGVyPW4sdGhpcy5fcGlja1NoYWRlcj1hLHRoaXMuX2Nvb3JkaW5h dGVCdWZmZXI9aSx0aGlzLl92YW89byx0aGlzLl9jb2xvck1hcD1sLHRoaXMu X2NvbnRvdXJTaGFkZXI9Yyx0aGlzLl9jb250b3VyUGlja1NoYWRlcj11LHRo aXMuX2NvbnRvdXJCdWZmZXI9Zix0aGlzLl9jb250b3VyVkFPPXAsdGhpcy5f Y29udG91ck9mZnNldHM9W1tdLFtdLFtdXSx0aGlzLl9jb250b3VyQ291bnRz PVtbXSxbXSxbXV0sdGhpcy5fdmVydGV4Q291bnQ9MCx0aGlzLl9waWNrUmVz dWx0PW5ldyBBKFswLDAsMF0sWzAsMF0sWzAsMF0sWzAsMCwwXSxbMCwwLDBd KSx0aGlzLl9keW5hbWljQnVmZmVyPWQsdGhpcy5fZHluYW1pY1ZBTz1nLHRo aXMuX2R5bmFtaWNPZmZzZXRzPVswLDAsMF0sdGhpcy5fZHluYW1pY0NvdW50 cz1bMCwwLDBdLHRoaXMuY29udG91cldpZHRoPVsxLDEsMV0sdGhpcy5jb250 b3VyTGV2ZWxzPVtbMV0sWzFdLFsxXV0sdGhpcy5jb250b3VyVGludD1bMCww LDBdLHRoaXMuY29udG91ckNvbG9yPVtbLjUsLjUsLjUsMV0sWy41LC41LC41 LDFdLFsuNSwuNSwuNSwxXV0sdGhpcy5zaG93Q29udG91cj0hMCx0aGlzLnNo b3dTdXJmYWNlPSEwLHRoaXMuZW5hYmxlSGlnaGxpZ2h0PVshMCwhMCwhMF0s dGhpcy5oaWdobGlnaHRDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCww LDAsMV1dLHRoaXMuaGlnaGxpZ2h0VGludD1bMSwxLDFdLHRoaXMuaGlnaGxp Z2h0TGV2ZWw9Wy0xLC0xLC0xXSx0aGlzLmVuYWJsZUR5bmFtaWM9WyEwLCEw LCEwXSx0aGlzLmR5bmFtaWNMZXZlbD1bTmFOLE5hTixOYU5dLHRoaXMuZHlu YW1pY0NvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhp cy5keW5hbWljVGludD1bMSwxLDFdLHRoaXMuZHluYW1pY1dpZHRoPVsxLDEs MV0sdGhpcy5heGVzQm91bmRzPVtbMS8wLDEvMCwxLzBdLFstMS8wLC0xLzAs LTEvMF1dLHRoaXMuc3VyZmFjZVByb2plY3Q9WyExLCExLCExXSx0aGlzLmNv bnRvdXJQcm9qZWN0PVtbITEsITEsITFdLFshMSwhMSwhMV0sWyExLCExLCEx XV0sdGhpcy5jb2xvckJvdW5kcz1bITEsITFdLHRoaXMuX2ZpZWxkPVtoKHMu bWFsbG9jRmxvYXQoMTAyNCksWzAsMF0pLGgocy5tYWxsb2NGbG9hdCgxMDI0 KSxbMCwwXSksaChzLm1hbGxvY0Zsb2F0KDEwMjQpLFswLDBdKV0sdGhpcy5w aWNrSWQ9MSx0aGlzLmNsaXBCb3VuZHM9W1stMS8wLC0xLzAsLTEvMF0sWzEv MCwxLzAsMS8wXV0sdGhpcy5zbmFwVG9EYXRhPSExLHRoaXMucGl4ZWxSYXRp bz0xLHRoaXMub3BhY2l0eT0xLHRoaXMubGlnaHRQb3NpdGlvbj1bMTAsMWU0 LDBdLHRoaXMuYW1iaWVudExpZ2h0PS44LHRoaXMuZGlmZnVzZUxpZ2h0PS44 LHRoaXMuc3BlY3VsYXJMaWdodD0yLHRoaXMucm91Z2huZXNzPS41LHRoaXMu ZnJlc25lbD0xLjUsdGhpcy52ZXJ0ZXhDb2xvcj0wLHRoaXMuZGlydHk9ITB9 dmFyIEw9RS5wcm90b3R5cGU7TC5pc1RyYW5zcGFyZW50PWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMub3BhY2l0eTwxfSxMLmlzT3BhcXVlPWZ1bmN0aW9uKCl7 aWYodGhpcy5vcGFjaXR5Pj0xKXJldHVybiEwO2Zvcih2YXIgdD0wO3Q8Mzsr K3QpaWYodGhpcy5fY29udG91ckNvdW50c1t0XS5sZW5ndGg+MHx8dGhpcy5f ZHluYW1pY0NvdW50c1t0XT4wKXJldHVybiEwO3JldHVybiExfSxMLnBpY2tT bG90cz0xLEwuc2V0UGlja0Jhc2U9ZnVuY3Rpb24odCl7dGhpcy5waWNrSWQ9 dH07dmFyIEM9WzAsMCwwXSxQPXtzaG93U3VyZmFjZTohMSxzaG93Q29udG91 cjohMSxwcm9qZWN0aW9uczpbay5zbGljZSgpLGsuc2xpY2UoKSxrLnNsaWNl KCldLGNsaXBCb3VuZHM6W1tbMCwwLDBdLFswLDAsMF1dLFtbMCwwLDBdLFsw LDAsMF1dLFtbMCwwLDBdLFswLDAsMF1dXX07ZnVuY3Rpb24gTyh0LGUpe3Zh ciByLG4sYSxpPWUuYXhlcyYmZS5heGVzLmxhc3RDdWJlUHJvcHMuYXhpc3x8 QyxvPWUuc2hvd1N1cmZhY2Uscz1lLnNob3dDb250b3VyO2ZvcihyPTA7cjwz Oysrcilmb3Iobz1vfHxlLnN1cmZhY2VQcm9qZWN0W3JdLG49MDtuPDM7Kytu KXM9c3x8ZS5jb250b3VyUHJvamVjdFtyXVtuXTtmb3Iocj0wO3I8MzsrK3Ip e3ZhciBsPVAucHJvamVjdGlvbnNbcl07Zm9yKG49MDtuPDE2OysrbilsW25d PTA7Zm9yKG49MDtuPDQ7KytuKWxbNSpuXT0xO2xbNSpyXT0wLGxbMTIrcl09 ZS5heGVzQm91bmRzWysoaVtyXT4wKV1bcl0scChsLHQubW9kZWwsbCk7dmFy IGM9UC5jbGlwQm91bmRzW3JdO2ZvcihhPTA7YTwyOysrYSlmb3Iobj0wO248 MzsrK24pY1thXVtuXT10LmNsaXBCb3VuZHNbYV1bbl07Y1swXVtyXT0tMWU4 LGNbMV1bcl09MWU4fXJldHVybiBQLnNob3dTdXJmYWNlPW8sUC5zaG93Q29u dG91cj1zLFB9dmFyIHo9e21vZGVsOmssdmlldzprLHByb2plY3Rpb246ayxp bnZlcnNlTW9kZWw6ay5zbGljZSgpLGxvd2VyQm91bmQ6WzAsMCwwXSx1cHBl ckJvdW5kOlswLDAsMF0sY29sb3JNYXA6MCxjbGlwQm91bmRzOltbMCwwLDBd LFswLDAsMF1dLGhlaWdodDowLGNvbnRvdXJUaW50OjAsY29udG91ckNvbG9y OlswLDAsMCwxXSxwZXJtdXRhdGlvbjpbMSwwLDAsMCwxLDAsMCwwLDFdLHpP ZmZzZXQ6LTFlLTQsb2JqZWN0T2Zmc2V0OlswLDAsMF0sa2FtYmllbnQ6MSxr ZGlmZnVzZToxLGtzcGVjdWxhcjoxLGxpZ2h0UG9zaXRpb246WzFlMywxZTMs MWUzXSxleWVQb3NpdGlvbjpbMCwwLDBdLHJvdWdobmVzczoxLGZyZXNuZWw6 MSxvcGFjaXR5OjEsdmVydGV4Q29sb3I6MH0sST1rLnNsaWNlKCksRD1bMSww LDAsMCwxLDAsMCwwLDFdO2Z1bmN0aW9uIFIodCxlKXt0PXR8fHt9O3ZhciBy PXRoaXMuZ2w7ci5kaXNhYmxlKHIuQ1VMTF9GQUNFKSx0aGlzLl9jb2xvck1h cC5iaW5kKDApO3ZhciBuPXo7bi5tb2RlbD10Lm1vZGVsfHxrLG4udmlldz10 LnZpZXd8fGssbi5wcm9qZWN0aW9uPXQucHJvamVjdGlvbnx8ayxuLmxvd2Vy Qm91bmQ9W3RoaXMuYm91bmRzWzBdWzBdLHRoaXMuYm91bmRzWzBdWzFdLHRo aXMuY29sb3JCb3VuZHNbMF18fHRoaXMuYm91bmRzWzBdWzJdXSxuLnVwcGVy Qm91bmQ9W3RoaXMuYm91bmRzWzFdWzBdLHRoaXMuYm91bmRzWzFdWzFdLHRo aXMuY29sb3JCb3VuZHNbMV18fHRoaXMuYm91bmRzWzFdWzJdXSxuLm9iamVj dE9mZnNldD10aGlzLm9iamVjdE9mZnNldCxuLmNvbnRvdXJDb2xvcj10aGlz LmNvbnRvdXJDb2xvclswXSxuLmludmVyc2VNb2RlbD1kKG4uaW52ZXJzZU1v ZGVsLG4ubW9kZWwpO2Zvcih2YXIgYT0wO2E8MjsrK2EpZm9yKHZhciBpPW4u Y2xpcEJvdW5kc1thXSxvPTA7bzwzOysrbylpW29dPU1hdGgubWluKE1hdGgu bWF4KHRoaXMuY2xpcEJvdW5kc1thXVtvXSwtMWU4KSwxZTgpO24ua2FtYmll bnQ9dGhpcy5hbWJpZW50TGlnaHQsbi5rZGlmZnVzZT10aGlzLmRpZmZ1c2VM aWdodCxuLmtzcGVjdWxhcj10aGlzLnNwZWN1bGFyTGlnaHQsbi5yb3VnaG5l c3M9dGhpcy5yb3VnaG5lc3Msbi5mcmVzbmVsPXRoaXMuZnJlc25lbCxuLm9w YWNpdHk9dGhpcy5vcGFjaXR5LG4uaGVpZ2h0PTAsbi5wZXJtdXRhdGlvbj1E LG4udmVydGV4Q29sb3I9dGhpcy52ZXJ0ZXhDb2xvcjt2YXIgcz1JO2Zvcihw KHMsbi52aWV3LG4ubW9kZWwpLHAocyxuLnByb2plY3Rpb24scyksZChzLHMp LGE9MDthPDM7KythKW4uZXllUG9zaXRpb25bYV09c1sxMithXS9zWzE1XTt2 YXIgbD1zWzE1XTtmb3IoYT0wO2E8MzsrK2EpbCs9dGhpcy5saWdodFBvc2l0 aW9uW2FdKnNbNCphKzNdO2ZvcihhPTA7YTwzOysrYSl7dmFyIGM9c1sxMith XTtmb3Iobz0wO288MzsrK28pYys9c1s0Km8rYV0qdGhpcy5saWdodFBvc2l0 aW9uW29dO24ubGlnaHRQb3NpdGlvblthXT1jL2x9dmFyIHU9TyhuLHRoaXMp O2lmKHUuc2hvd1N1cmZhY2UmJmU9PT10aGlzLm9wYWNpdHk8MSl7Zm9yKHRo aXMuX3NoYWRlci5iaW5kKCksdGhpcy5fc2hhZGVyLnVuaWZvcm1zPW4sdGhp cy5fdmFvLmJpbmQoKSx0aGlzLnNob3dTdXJmYWNlJiZ0aGlzLl92ZXJ0ZXhD b3VudCYmdGhpcy5fdmFvLmRyYXcoci5UUklBTkdMRVMsdGhpcy5fdmVydGV4 Q291bnQpLGE9MDthPDM7KythKXRoaXMuc3VyZmFjZVByb2plY3RbYV0mJnRo aXMudmVydGV4Q291bnQmJih0aGlzLl9zaGFkZXIudW5pZm9ybXMubW9kZWw9 dS5wcm9qZWN0aW9uc1thXSx0aGlzLl9zaGFkZXIudW5pZm9ybXMuY2xpcEJv dW5kcz11LmNsaXBCb3VuZHNbYV0sdGhpcy5fdmFvLmRyYXcoci5UUklBTkdM RVMsdGhpcy5fdmVydGV4Q291bnQpKTt0aGlzLl92YW8udW5iaW5kKCl9aWYo dS5zaG93Q29udG91ciYmIWUpe3ZhciBoPXRoaXMuX2NvbnRvdXJTaGFkZXI7 bi5rYW1iaWVudD0xLG4ua2RpZmZ1c2U9MCxuLmtzcGVjdWxhcj0wLG4ub3Bh Y2l0eT0xLGguYmluZCgpLGgudW5pZm9ybXM9bjt2YXIgZj10aGlzLl9jb250 b3VyVkFPO2ZvcihmLmJpbmQoKSxhPTA7YTwzOysrYSlmb3IoaC51bmlmb3Jt cy5wZXJtdXRhdGlvbj1NW2FdLHIubGluZVdpZHRoKHRoaXMuY29udG91cldp ZHRoW2FdKnRoaXMucGl4ZWxSYXRpbyksbz0wO288dGhpcy5jb250b3VyTGV2 ZWxzW2FdLmxlbmd0aDsrK28pbz09PXRoaXMuaGlnaGxpZ2h0TGV2ZWxbYV0/ KGgudW5pZm9ybXMuY29udG91ckNvbG9yPXRoaXMuaGlnaGxpZ2h0Q29sb3Jb YV0saC51bmlmb3Jtcy5jb250b3VyVGludD10aGlzLmhpZ2hsaWdodFRpbnRb YV0pOjAhPT1vJiZvLTEhPT10aGlzLmhpZ2hsaWdodExldmVsW2FdfHwoaC51 bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5jb250b3VyQ29sb3JbYV0saC51 bmlmb3Jtcy5jb250b3VyVGludD10aGlzLmNvbnRvdXJUaW50W2FdKSx0aGlz Ll9jb250b3VyQ291bnRzW2FdW29dJiYoaC51bmlmb3Jtcy5oZWlnaHQ9dGhp cy5jb250b3VyTGV2ZWxzW2FdW29dLGYuZHJhdyhyLkxJTkVTLHRoaXMuX2Nv bnRvdXJDb3VudHNbYV1bb10sdGhpcy5fY29udG91ck9mZnNldHNbYV1bb10p KTtmb3IoYT0wO2E8MzsrK2EpZm9yKGgudW5pZm9ybXMubW9kZWw9dS5wcm9q ZWN0aW9uc1thXSxoLnVuaWZvcm1zLmNsaXBCb3VuZHM9dS5jbGlwQm91bmRz W2FdLG89MDtvPDM7KytvKWlmKHRoaXMuY29udG91clByb2plY3RbYV1bb10p e2gudW5pZm9ybXMucGVybXV0YXRpb249TVtvXSxyLmxpbmVXaWR0aCh0aGlz LmNvbnRvdXJXaWR0aFtvXSp0aGlzLnBpeGVsUmF0aW8pO2Zvcih2YXIgZz0w O2c8dGhpcy5jb250b3VyTGV2ZWxzW29dLmxlbmd0aDsrK2cpZz09PXRoaXMu aGlnaGxpZ2h0TGV2ZWxbb10/KGgudW5pZm9ybXMuY29udG91ckNvbG9yPXRo aXMuaGlnaGxpZ2h0Q29sb3Jbb10saC51bmlmb3Jtcy5jb250b3VyVGludD10 aGlzLmhpZ2hsaWdodFRpbnRbb10pOjAhPT1nJiZnLTEhPT10aGlzLmhpZ2hs aWdodExldmVsW29dfHwoaC51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5j b250b3VyQ29sb3Jbb10saC51bmlmb3Jtcy5jb250b3VyVGludD10aGlzLmNv bnRvdXJUaW50W29dKSx0aGlzLl9jb250b3VyQ291bnRzW29dW2ddJiYoaC51 bmlmb3Jtcy5oZWlnaHQ9dGhpcy5jb250b3VyTGV2ZWxzW29dW2ddLGYuZHJh dyhyLkxJTkVTLHRoaXMuX2NvbnRvdXJDb3VudHNbb11bZ10sdGhpcy5fY29u dG91ck9mZnNldHNbb11bZ10pKX1mb3IoZi51bmJpbmQoKSwoZj10aGlzLl9k eW5hbWljVkFPKS5iaW5kKCksYT0wO2E8MzsrK2EpaWYoMCE9PXRoaXMuX2R5 bmFtaWNDb3VudHNbYV0pZm9yKGgudW5pZm9ybXMubW9kZWw9bi5tb2RlbCxo LnVuaWZvcm1zLmNsaXBCb3VuZHM9bi5jbGlwQm91bmRzLGgudW5pZm9ybXMu cGVybXV0YXRpb249TVthXSxyLmxpbmVXaWR0aCh0aGlzLmR5bmFtaWNXaWR0 aFthXSp0aGlzLnBpeGVsUmF0aW8pLGgudW5pZm9ybXMuY29udG91ckNvbG9y PXRoaXMuZHluYW1pY0NvbG9yW2FdLGgudW5pZm9ybXMuY29udG91clRpbnQ9 dGhpcy5keW5hbWljVGludFthXSxoLnVuaWZvcm1zLmhlaWdodD10aGlzLmR5 bmFtaWNMZXZlbFthXSxmLmRyYXcoci5MSU5FUyx0aGlzLl9keW5hbWljQ291 bnRzW2FdLHRoaXMuX2R5bmFtaWNPZmZzZXRzW2FdKSxvPTA7bzwzOysrbyl0 aGlzLmNvbnRvdXJQcm9qZWN0W29dW2FdJiYoaC51bmlmb3Jtcy5tb2RlbD11 LnByb2plY3Rpb25zW29dLGgudW5pZm9ybXMuY2xpcEJvdW5kcz11LmNsaXBC b3VuZHNbb10sZi5kcmF3KHIuTElORVMsdGhpcy5fZHluYW1pY0NvdW50c1th XSx0aGlzLl9keW5hbWljT2Zmc2V0c1thXSkpO2YudW5iaW5kKCl9fUwuZHJh dz1mdW5jdGlvbih0KXtyZXR1cm4gUi5jYWxsKHRoaXMsdCwhMSl9LEwuZHJh d1RyYW5zcGFyZW50PWZ1bmN0aW9uKHQpe3JldHVybiBSLmNhbGwodGhpcyx0 LCEwKX07dmFyIEY9e21vZGVsOmssdmlldzprLHByb2plY3Rpb246ayxpbnZl cnNlTW9kZWw6ayxjbGlwQm91bmRzOltbMCwwLDBdLFswLDAsMF1dLGhlaWdo dDowLHNoYXBlOlswLDBdLHBpY2tJZDowLGxvd2VyQm91bmQ6WzAsMCwwXSx1 cHBlckJvdW5kOlswLDAsMF0sek9mZnNldDowLG9iamVjdE9mZnNldDpbMCww LDBdLHBlcm11dGF0aW9uOlsxLDAsMCwwLDEsMCwwLDAsMV0sbGlnaHRQb3Np dGlvbjpbMCwwLDBdLGV5ZVBvc2l0aW9uOlswLDAsMF19O2Z1bmN0aW9uIEIo dCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9bZSh0WzBdKSxlKHRbMV0p LGUodFsyXSldOltlKHQpLGUodCksZSh0KV19ZnVuY3Rpb24gTih0KXtyZXR1 cm4gQXJyYXkuaXNBcnJheSh0KT8zPT09dC5sZW5ndGg/W3RbMF0sdFsxXSx0 WzJdLDFdOlt0WzBdLHRbMV0sdFsyXSx0WzNdXTpbMCwwLDAsMV19ZnVuY3Rp b24gaih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtpZihBcnJheS5pc0FycmF5 KHQpKXJldHVybltOKHRbMF0pLE4odFsxXSksTih0WzJdKV07dmFyIGU9Tih0 KTtyZXR1cm5bZS5zbGljZSgpLGUuc2xpY2UoKSxlLnNsaWNlKCldfX1MLmRy YXdQaWNrPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dGhpcy5nbDtlLmRp c2FibGUoZS5DVUxMX0ZBQ0UpO3ZhciByPUY7ci5tb2RlbD10Lm1vZGVsfHxr LHIudmlldz10LnZpZXd8fGssci5wcm9qZWN0aW9uPXQucHJvamVjdGlvbnx8 ayxyLnNoYXBlPXRoaXMuX2ZpZWxkWzJdLnNoYXBlLHIucGlja0lkPXRoaXMu cGlja0lkLzI1NSxyLmxvd2VyQm91bmQ9dGhpcy5ib3VuZHNbMF0sci51cHBl ckJvdW5kPXRoaXMuYm91bmRzWzFdLHIub2JqZWN0T2Zmc2V0PXRoaXMub2Jq ZWN0T2Zmc2V0LHIucGVybXV0YXRpb249RDtmb3IodmFyIG49MDtuPDI7Kytu KWZvcih2YXIgYT1yLmNsaXBCb3VuZHNbbl0saT0wO2k8MzsrK2kpYVtpXT1N YXRoLm1pbihNYXRoLm1heCh0aGlzLmNsaXBCb3VuZHNbbl1baV0sLTFlOCks MWU4KTt2YXIgbz1PKHIsdGhpcyk7aWYoby5zaG93U3VyZmFjZSl7Zm9yKHRo aXMuX3BpY2tTaGFkZXIuYmluZCgpLHRoaXMuX3BpY2tTaGFkZXIudW5pZm9y bXM9cix0aGlzLl92YW8uYmluZCgpLHRoaXMuX3Zhby5kcmF3KGUuVFJJQU5H TEVTLHRoaXMuX3ZlcnRleENvdW50KSxuPTA7bjwzOysrbil0aGlzLnN1cmZh Y2VQcm9qZWN0W25dJiYodGhpcy5fcGlja1NoYWRlci51bmlmb3Jtcy5tb2Rl bD1vLnByb2plY3Rpb25zW25dLHRoaXMuX3BpY2tTaGFkZXIudW5pZm9ybXMu Y2xpcEJvdW5kcz1vLmNsaXBCb3VuZHNbbl0sdGhpcy5fdmFvLmRyYXcoZS5U UklBTkdMRVMsdGhpcy5fdmVydGV4Q291bnQpKTt0aGlzLl92YW8udW5iaW5k KCl9aWYoby5zaG93Q29udG91cil7dmFyIHM9dGhpcy5fY29udG91clBpY2tT aGFkZXI7cy5iaW5kKCkscy51bmlmb3Jtcz1yO3ZhciBsPXRoaXMuX2NvbnRv dXJWQU87Zm9yKGwuYmluZCgpLGk9MDtpPDM7KytpKWZvcihlLmxpbmVXaWR0 aCh0aGlzLmNvbnRvdXJXaWR0aFtpXSp0aGlzLnBpeGVsUmF0aW8pLHMudW5p Zm9ybXMucGVybXV0YXRpb249TVtpXSxuPTA7bjx0aGlzLmNvbnRvdXJMZXZl bHNbaV0ubGVuZ3RoOysrbil0aGlzLl9jb250b3VyQ291bnRzW2ldW25dJiYo cy51bmlmb3Jtcy5oZWlnaHQ9dGhpcy5jb250b3VyTGV2ZWxzW2ldW25dLGwu ZHJhdyhlLkxJTkVTLHRoaXMuX2NvbnRvdXJDb3VudHNbaV1bbl0sdGhpcy5f Y29udG91ck9mZnNldHNbaV1bbl0pKTtmb3Iobj0wO248MzsrK24pZm9yKHMu dW5pZm9ybXMubW9kZWw9by5wcm9qZWN0aW9uc1tuXSxzLnVuaWZvcm1zLmNs aXBCb3VuZHM9by5jbGlwQm91bmRzW25dLGk9MDtpPDM7KytpKWlmKHRoaXMu Y29udG91clByb2plY3Rbbl1baV0pe3MudW5pZm9ybXMucGVybXV0YXRpb249 TVtpXSxlLmxpbmVXaWR0aCh0aGlzLmNvbnRvdXJXaWR0aFtpXSp0aGlzLnBp eGVsUmF0aW8pO2Zvcih2YXIgYz0wO2M8dGhpcy5jb250b3VyTGV2ZWxzW2ld Lmxlbmd0aDsrK2MpdGhpcy5fY29udG91ckNvdW50c1tpXVtjXSYmKHMudW5p Zm9ybXMuaGVpZ2h0PXRoaXMuY29udG91ckxldmVsc1tpXVtjXSxsLmRyYXco ZS5MSU5FUyx0aGlzLl9jb250b3VyQ291bnRzW2ldW2NdLHRoaXMuX2NvbnRv dXJPZmZzZXRzW2ldW2NdKSl9bC51bmJpbmQoKX19LEwucGljaz1mdW5jdGlv bih0KXtpZighdClyZXR1cm4gbnVsbDtpZih0LmlkIT09dGhpcy5waWNrSWQp cmV0dXJuIG51bGw7dmFyIGU9dGhpcy5fZmllbGRbMl0uc2hhcGUscj10aGlz Ll9waWNrUmVzdWx0LG49ZVswXSoodC52YWx1ZVswXSsodC52YWx1ZVsyXT4+ NCkvMTYpLzI1NSxhPU1hdGguZmxvb3IobiksaT1uLWEsbz1lWzFdKih0LnZh bHVlWzFdKygxNSZ0LnZhbHVlWzJdKS8xNikvMjU1LHM9TWF0aC5mbG9vcihv KSxsPW8tczthKz0xLHMrPTE7dmFyIGM9ci5wb3NpdGlvbjtjWzBdPWNbMV09 Y1syXT0wO2Zvcih2YXIgdT0wO3U8MjsrK3UpZm9yKHZhciBoPXU/aToxLWks Zj0wO2Y8MjsrK2YpZm9yKHZhciBwPWErdSxkPXMrZix2PWgqKGY/bDoxLWwp LG09MDttPDM7KyttKWNbbV0rPXRoaXMuX2ZpZWxkW21dLmdldChwLGQpKnY7 Zm9yKHZhciB5PXRoaXMuX3BpY2tSZXN1bHQubGV2ZWwseD0wO3g8MzsrK3gp aWYoeVt4XT1nLmxlKHRoaXMuY29udG91ckxldmVsc1t4XSxjW3hdKSx5W3hd PDApdGhpcy5jb250b3VyTGV2ZWxzW3hdLmxlbmd0aD4wJiYoeVt4XT0wKTtl bHNlIGlmKHlbeF08dGhpcy5jb250b3VyTGV2ZWxzW3hdLmxlbmd0aC0xKXt2 YXIgYj10aGlzLmNvbnRvdXJMZXZlbHNbeF1beVt4XV0sXz10aGlzLmNvbnRv dXJMZXZlbHNbeF1beVt4XSsxXTtNYXRoLmFicyhiLWNbeF0pPk1hdGguYWJz KF8tY1t4XSkmJih5W3hdKz0xKX1mb3Ioci5pbmRleFswXT1pPC41P2E6YSsx LHIuaW5kZXhbMV09bDwuNT9zOnMrMSxyLnV2WzBdPW4vZVswXSxyLnV2WzFd PW8vZVsxXSxtPTA7bTwzOysrbSlyLmRhdGFDb29yZGluYXRlW21dPXRoaXMu X2ZpZWxkW21dLmdldChyLmluZGV4WzBdLHIuaW5kZXhbMV0pO3JldHVybiBy fSxMLnBhZEZpZWxkPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5zaGFwZS5zbGlj ZSgpLG49dC5zaGFwZS5zbGljZSgpO2MuYXNzaWduKHQubG8oMSwxKS5oaShy WzBdLHJbMV0pLGUpLGMuYXNzaWduKHQubG8oMSkuaGkoclswXSwxKSxlLmhp KHJbMF0sMSkpLGMuYXNzaWduKHQubG8oMSxuWzFdLTEpLmhpKHJbMF0sMSks ZS5sbygwLHJbMV0tMSkuaGkoclswXSwxKSksYy5hc3NpZ24odC5sbygwLDEp LmhpKDEsclsxXSksZS5oaSgxKSksYy5hc3NpZ24odC5sbyhuWzBdLTEsMSku aGkoMSxyWzFdKSxlLmxvKHJbMF0tMSkpLHQuc2V0KDAsMCxlLmdldCgwLDAp KSx0LnNldCgwLG5bMV0tMSxlLmdldCgwLHJbMV0tMSkpLHQuc2V0KG5bMF0t MSwwLGUuZ2V0KHJbMF0tMSwwKSksdC5zZXQoblswXS0xLG5bMV0tMSxlLmdl dChyWzBdLTEsclsxXS0xKSl9LEwudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8 e30sdGhpcy5vYmplY3RPZmZzZXQ9dC5vYmplY3RPZmZzZXR8fHRoaXMub2Jq ZWN0T2Zmc2V0LHRoaXMuZGlydHk9ITAsImNvbnRvdXJXaWR0aCJpbiB0JiYo dGhpcy5jb250b3VyV2lkdGg9Qih0LmNvbnRvdXJXaWR0aCxOdW1iZXIpKSwi c2hvd0NvbnRvdXIiaW4gdCYmKHRoaXMuc2hvd0NvbnRvdXI9Qih0LnNob3dD b250b3VyLEJvb2xlYW4pKSwic2hvd1N1cmZhY2UiaW4gdCYmKHRoaXMuc2hv d1N1cmZhY2U9ISF0LnNob3dTdXJmYWNlKSwiY29udG91clRpbnQiaW4gdCYm KHRoaXMuY29udG91clRpbnQ9Qih0LmNvbnRvdXJUaW50LEJvb2xlYW4pKSwi Y29udG91ckNvbG9yImluIHQmJih0aGlzLmNvbnRvdXJDb2xvcj1qKHQuY29u dG91ckNvbG9yKSksImNvbnRvdXJQcm9qZWN0ImluIHQmJih0aGlzLmNvbnRv dXJQcm9qZWN0PUIodC5jb250b3VyUHJvamVjdCxmdW5jdGlvbih0KXtyZXR1 cm4gQih0LEJvb2xlYW4pfSkpLCJzdXJmYWNlUHJvamVjdCJpbiB0JiYodGhp cy5zdXJmYWNlUHJvamVjdD10LnN1cmZhY2VQcm9qZWN0KSwiZHluYW1pY0Nv bG9yImluIHQmJih0aGlzLmR5bmFtaWNDb2xvcj1qKHQuZHluYW1pY0NvbG9y KSksImR5bmFtaWNUaW50ImluIHQmJih0aGlzLmR5bmFtaWNUaW50PUIodC5k eW5hbWljVGludCxOdW1iZXIpKSwiZHluYW1pY1dpZHRoImluIHQmJih0aGlz LmR5bmFtaWNXaWR0aD1CKHQuZHluYW1pY1dpZHRoLE51bWJlcikpLCJvcGFj aXR5ImluIHQmJih0aGlzLm9wYWNpdHk9dC5vcGFjaXR5KSwiY29sb3JCb3Vu ZHMiaW4gdCYmKHRoaXMuY29sb3JCb3VuZHM9dC5jb2xvckJvdW5kcyksInZl cnRleENvbG9yImluIHQmJih0aGlzLnZlcnRleENvbG9yPXQudmVydGV4Q29s b3I/MTowKTt2YXIgZT10LmZpZWxkfHx0LmNvb3JkcyYmdC5jb29yZHNbMl18 fG51bGwscj0hMTtpZihlfHwoZT10aGlzLl9maWVsZFsyXS5zaGFwZVswXXx8 dGhpcy5fZmllbGRbMl0uc2hhcGVbMl0/dGhpcy5fZmllbGRbMl0ubG8oMSwx KS5oaSh0aGlzLl9maWVsZFsyXS5zaGFwZVswXS0yLHRoaXMuX2ZpZWxkWzJd LnNoYXBlWzFdLTIpOnRoaXMuX2ZpZWxkWzJdLmhpKDAsMCkpLCJmaWVsZCJp biB0fHwiY29vcmRzImluIHQpe3ZhciBhPShlLnNoYXBlWzBdKzIpKihlLnNo YXBlWzFdKzIpO2E+dGhpcy5fZmllbGRbMl0uZGF0YS5sZW5ndGgmJihzLmZy ZWVGbG9hdCh0aGlzLl9maWVsZFsyXS5kYXRhKSx0aGlzLl9maWVsZFsyXS5k YXRhPXMubWFsbG9jRmxvYXQobi5uZXh0UG93MihhKSkpLHRoaXMuX2ZpZWxk WzJdPWgodGhpcy5fZmllbGRbMl0uZGF0YSxbZS5zaGFwZVswXSsyLGUuc2hh cGVbMV0rMl0pLHRoaXMucGFkRmllbGQodGhpcy5fZmllbGRbMl0sZSksdGhp cy5zaGFwZT1lLnNoYXBlLnNsaWNlKCk7Zm9yKHZhciBpPXRoaXMuc2hhcGUs bz0wO288MjsrK28pdGhpcy5fZmllbGRbMl0uc2l6ZT50aGlzLl9maWVsZFtv XS5kYXRhLmxlbmd0aCYmKHMuZnJlZUZsb2F0KHRoaXMuX2ZpZWxkW29dLmRh dGEpLHRoaXMuX2ZpZWxkW29dLmRhdGE9cy5tYWxsb2NGbG9hdCh0aGlzLl9m aWVsZFsyXS5zaXplKSksdGhpcy5fZmllbGRbb109aCh0aGlzLl9maWVsZFtv XS5kYXRhLFtpWzBdKzIsaVsxXSsyXSk7aWYodC5jb29yZHMpe3ZhciBwPXQu Y29vcmRzO2lmKCFBcnJheS5pc0FycmF5KHApfHwzIT09cC5sZW5ndGgpdGhy b3cgbmV3IEVycm9yKCJnbC1zdXJmYWNlOiBpbnZhbGlkIGNvb3JkaW5hdGVz IGZvciB4L3kiKTtmb3Iobz0wO288MjsrK28pe3ZhciBkPXBbb107Zm9yKGI9 MDtiPDI7KytiKWlmKGQuc2hhcGVbYl0hPT1pW2JdKXRocm93IG5ldyBFcnJv cigiZ2wtc3VyZmFjZTogY29vcmRzIGhhdmUgaW5jb3JyZWN0IHNoYXBlIik7 dGhpcy5wYWRGaWVsZCh0aGlzLl9maWVsZFtvXSxkKX19ZWxzZSBpZih0LnRp Y2tzKXt2YXIgZz10LnRpY2tzO2lmKCFBcnJheS5pc0FycmF5KGcpfHwyIT09 Zy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC1zdXJmYWNlOiBpbnZhbGlk IHRpY2tzIik7Zm9yKG89MDtvPDI7KytvKXt2YXIgbT1nW29dO2lmKChBcnJh eS5pc0FycmF5KG0pfHxtLmxlbmd0aCkmJihtPWgobSkpLG0uc2hhcGVbMF0h PT1pW29dKXRocm93IG5ldyBFcnJvcigiZ2wtc3VyZmFjZTogaW52YWxpZCB0 aWNrIGxlbmd0aCIpO3ZhciB5PWgobS5kYXRhLGkpO3kuc3RyaWRlW29dPW0u c3RyaWRlWzBdLHkuc3RyaWRlWzFeb109MCx0aGlzLnBhZEZpZWxkKHRoaXMu X2ZpZWxkW29dLHkpfX1lbHNle2ZvcihvPTA7bzwyOysrbyl7dmFyIHg9WzAs MF07eFtvXT0xLHRoaXMuX2ZpZWxkW29dPWgodGhpcy5fZmllbGRbb10uZGF0 YSxbaVswXSsyLGlbMV0rMl0seCwwKX10aGlzLl9maWVsZFswXS5zZXQoMCww LDApO2Zvcih2YXIgYj0wO2I8aVswXTsrK2IpdGhpcy5fZmllbGRbMF0uc2V0 KGIrMSwwLGIpO2Zvcih0aGlzLl9maWVsZFswXS5zZXQoaVswXSsxLDAsaVsw XS0xKSx0aGlzLl9maWVsZFsxXS5zZXQoMCwwLDApLGI9MDtiPGlbMV07Kyti KXRoaXMuX2ZpZWxkWzFdLnNldCgwLGIrMSxiKTt0aGlzLl9maWVsZFsxXS5z ZXQoMCxpWzFdKzEsaVsxXS0xKX12YXIgXz10aGlzLl9maWVsZCx3PWgocy5t YWxsb2NGbG9hdCgzKl9bMl0uc2l6ZSoyKSxbMyxpWzBdKzIsaVsxXSsyLDJd KTtmb3Iobz0wO288MzsrK28pdih3LnBpY2sobyksX1tvXSwibWlycm9yIik7 dmFyIGs9aChzLm1hbGxvY0Zsb2F0KDMqX1syXS5zaXplKSxbaVswXSsyLGlb MV0rMiwzXSk7Zm9yKG89MDtvPGlbMF0rMjsrK28pZm9yKGI9MDtiPGlbMV0r MjsrK2Ipe3ZhciBNPXcuZ2V0KDAsbyxiLDApLEE9dy5nZXQoMCxvLGIsMSks RT13LmdldCgxLG8sYiwwKSxMPXcuZ2V0KDEsbyxiLDEpLEM9dy5nZXQoMixv LGIsMCksUD13LmdldCgyLG8sYiwxKSxPPUUqUC1MKkMsej1DKkEtUCpNLEk9 TSpMLUEqRSxEPU1hdGguc3FydChPKk8reip6K0kqSSk7RDwxZS04PyhEPU1h dGgubWF4KE1hdGguYWJzKE8pLE1hdGguYWJzKHopLE1hdGguYWJzKEkpKSk8 MWUtOD8oST0xLHo9Tz0wLEQ9MSk6RD0xL0Q6RD0xL01hdGguc3FydChEKSxr LnNldChvLGIsMCxPKkQpLGsuc2V0KG8sYiwxLHoqRCksay5zZXQobyxiLDIs SSpEKX1zLmZyZWUody5kYXRhKTt2YXIgUj1bMS8wLDEvMCwxLzBdLEY9Wy0x LzAsLTEvMCwtMS8wXSxOPTEvMCxWPS0xLzAsVT0oaVswXS0xKSooaVsxXS0x KSo2LHE9cy5tYWxsb2NGbG9hdChuLm5leHRQb3cyKDEwKlUpKSxIPTAsRz0w O2ZvcihvPTA7bzxpWzBdLTE7KytvKXQ6Zm9yKGI9MDtiPGlbMV0tMTsrK2Ip e2Zvcih2YXIgWT0wO1k8MjsrK1kpZm9yKHZhciBXPTA7VzwyOysrVylmb3Io dmFyIFg9MDtYPDM7KytYKXt2YXIgWj10aGlzLl9maWVsZFtYXS5nZXQoMStv K1ksMStiK1cpO2lmKGlzTmFOKFopfHwhaXNGaW5pdGUoWikpY29udGludWUg dH1mb3IoWD0wO1g8NjsrK1gpe3ZhciBKPW8rVFtYXVswXSxLPWIrVFtYXVsx XSxRPXRoaXMuX2ZpZWxkWzBdLmdldChKKzEsSysxKSwkPXRoaXMuX2ZpZWxk WzFdLmdldChKKzEsSysxKTtaPXRoaXMuX2ZpZWxkWzJdLmdldChKKzEsSysx KSxPPWsuZ2V0KEorMSxLKzEsMCksej1rLmdldChKKzEsSysxLDEpLEk9ay5n ZXQoSisxLEsrMSwyKSx0LmludGVuc2l0eSYmKHR0PXQuaW50ZW5zaXR5Lmdl dChKLEspKTt2YXIgdHQ9dC5pbnRlbnNpdHk/dC5pbnRlbnNpdHkuZ2V0KEos Syk6Wit0aGlzLm9iamVjdE9mZnNldFsyXTtxW0grK109SixxW0grK109Syxx W0grK109USxxW0grK109JCxxW0grK109WixxW0grK109MCxxW0grK109dHQs cVtIKytdPU8scVtIKytdPXoscVtIKytdPUksUlswXT1NYXRoLm1pbihSWzBd LFErdGhpcy5vYmplY3RPZmZzZXRbMF0pLFJbMV09TWF0aC5taW4oUlsxXSwk K3RoaXMub2JqZWN0T2Zmc2V0WzFdKSxSWzJdPU1hdGgubWluKFJbMl0sWit0 aGlzLm9iamVjdE9mZnNldFsyXSksTj1NYXRoLm1pbihOLHR0KSxGWzBdPU1h dGgubWF4KEZbMF0sUSt0aGlzLm9iamVjdE9mZnNldFswXSksRlsxXT1NYXRo Lm1heChGWzFdLCQrdGhpcy5vYmplY3RPZmZzZXRbMV0pLEZbMl09TWF0aC5t YXgoRlsyXSxaK3RoaXMub2JqZWN0T2Zmc2V0WzJdKSxWPU1hdGgubWF4KFYs dHQpLEcrPTF9fWZvcih0LmludGVuc2l0eUJvdW5kcyYmKE49K3QuaW50ZW5z aXR5Qm91bmRzWzBdLFY9K3QuaW50ZW5zaXR5Qm91bmRzWzFdKSxvPTY7bzxI O28rPTEwKXFbb109KHFbb10tTikvKFYtTik7dGhpcy5fdmVydGV4Q291bnQ9 Ryx0aGlzLl9jb29yZGluYXRlQnVmZmVyLnVwZGF0ZShxLnN1YmFycmF5KDAs SCkpLHMuZnJlZUZsb2F0KHEpLHMuZnJlZShrLmRhdGEpLHRoaXMuYm91bmRz PVtSLEZdLHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5fHx0aGlzLl9maWVs ZFsyXSx0aGlzLmludGVuc2l0eUJvdW5kc1swXT09PU4mJnRoaXMuaW50ZW5z aXR5Qm91bmRzWzFdPT09Vnx8KHI9ITApLHRoaXMuaW50ZW5zaXR5Qm91bmRz PVtOLFZdfWlmKCJsZXZlbHMiaW4gdCl7dmFyIGV0PXQubGV2ZWxzO2Zvcihl dD1BcnJheS5pc0FycmF5KGV0WzBdKT9ldC5zbGljZSgpOltbXSxbXSxldF0s bz0wO288MzsrK28pZXRbb109ZXRbb10uc2xpY2UoKSxldFtvXS5zb3J0KGZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pO2ZvcihvPTA7bzwzOysrbylmb3Io Yj0wO2I8ZXRbb10ubGVuZ3RoOysrYilldFtvXVtiXS09dGhpcy5vYmplY3RP ZmZzZXRbb107dDpmb3Iobz0wO288MzsrK28pe2lmKGV0W29dLmxlbmd0aCE9 PXRoaXMuY29udG91ckxldmVsc1tvXS5sZW5ndGgpe3I9ITA7YnJlYWt9Zm9y KGI9MDtiPGV0W29dLmxlbmd0aDsrK2IpaWYoZXRbb11bYl0hPT10aGlzLmNv bnRvdXJMZXZlbHNbb11bYl0pe3I9ITA7YnJlYWsgdH19dGhpcy5jb250b3Vy TGV2ZWxzPWV0fWlmKHIpe189dGhpcy5fZmllbGQsaT10aGlzLnNoYXBlO2Zv cih2YXIgcnQ9W10sbnQ9MDtudDwzOysrbnQpe3ZhciBhdD10aGlzLmNvbnRv dXJMZXZlbHNbbnRdLGl0PVtdLG90PVtdLHN0PVswLDAsMF07Zm9yKG89MDtv PGF0Lmxlbmd0aDsrK28pe3ZhciBsdD1mKHRoaXMuX2ZpZWxkW250XSxhdFtv XSk7aXQucHVzaChydC5sZW5ndGgvNXwwKSxHPTA7dDpmb3IoYj0wO2I8bHQu Y2VsbHMubGVuZ3RoOysrYil7dmFyIGN0PWx0LmNlbGxzW2JdO2ZvcihYPTA7 WDwyOysrWCl7dmFyIHV0PWx0LnBvc2l0aW9uc1tjdFtYXV0saHQ9dXRbMF0s ZnQ9MHxNYXRoLmZsb29yKGh0KSxwdD1odC1mdCxkdD11dFsxXSxndD0wfE1h dGguZmxvb3IoZHQpLHZ0PWR0LWd0LG10PSExO2U6Zm9yKHZhciB5dD0wO3l0 PDM7Kyt5dCl7c3RbeXRdPTA7dmFyIHh0PShudCt5dCsxKSUzO2ZvcihZPTA7 WTwyOysrWSl7dmFyIGJ0PVk/cHQ6MS1wdDtmb3IoSj0wfE1hdGgubWluKE1h dGgubWF4KGZ0K1ksMCksaVswXSksVz0wO1c8MjsrK1cpe3ZhciBfdD1XP3Z0 OjEtdnQ7aWYoSz0wfE1hdGgubWluKE1hdGgubWF4KGd0K1csMCksaVsxXSks Wj15dDwyP3RoaXMuX2ZpZWxkW3h0XS5nZXQoSixLKToodGhpcy5pbnRlbnNp dHkuZ2V0KEosSyktdGhpcy5pbnRlbnNpdHlCb3VuZHNbMF0pLyh0aGlzLmlu dGVuc2l0eUJvdW5kc1sxXS10aGlzLmludGVuc2l0eUJvdW5kc1swXSksIWlz RmluaXRlKFopfHxpc05hTihaKSl7bXQ9ITA7YnJlYWsgZX12YXIgd3Q9YnQq X3Q7c3RbeXRdKz13dCpafX19aWYobXQpe2lmKFg+MCl7Zm9yKHZhciBrdD0w O2t0PDU7KytrdClydC5wb3AoKTtHLT0xfWNvbnRpbnVlIHR9cnQucHVzaChz dFswXSxzdFsxXSx1dFswXSx1dFsxXSxzdFsyXSksRys9MX19b3QucHVzaChH KX10aGlzLl9jb250b3VyT2Zmc2V0c1tudF09aXQsdGhpcy5fY29udG91ckNv dW50c1tudF09b3R9dmFyIFR0PXMubWFsbG9jRmxvYXQocnQubGVuZ3RoKTtm b3Iobz0wO288cnQubGVuZ3RoOysrbylUdFtvXT1ydFtvXTt0aGlzLl9jb250 b3VyQnVmZmVyLnVwZGF0ZShUdCkscy5mcmVlRmxvYXQoVHQpfXQuY29sb3Jt YXAmJnRoaXMuX2NvbG9yTWFwLnNldFBpeGVscyhmdW5jdGlvbih0KXt2YXIg ZT11KFtsKHtjb2xvcm1hcDp0LG5zaGFkZXM6Uyxmb3JtYXQ6InJnYmEifSku bWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0WzBdLHRbMV0sdFsyXSwyNTUqdFsz XV19KV0pO3JldHVybiBjLmRpdnNlcShlLDI1NSksZX0odC5jb2xvcm1hcCkp fSxMLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9zaGFkZXIuZGlzcG9zZSgp LHRoaXMuX3Zhby5kaXNwb3NlKCksdGhpcy5fY29vcmRpbmF0ZUJ1ZmZlci5k aXNwb3NlKCksdGhpcy5fY29sb3JNYXAuZGlzcG9zZSgpLHRoaXMuX2NvbnRv dXJCdWZmZXIuZGlzcG9zZSgpLHRoaXMuX2NvbnRvdXJWQU8uZGlzcG9zZSgp LHRoaXMuX2NvbnRvdXJTaGFkZXIuZGlzcG9zZSgpLHRoaXMuX2NvbnRvdXJQ aWNrU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLl9keW5hbWljQnVmZmVyLmRpc3Bv c2UoKSx0aGlzLl9keW5hbWljVkFPLmRpc3Bvc2UoKTtmb3IodmFyIHQ9MDt0 PDM7Kyt0KXMuZnJlZUZsb2F0KHRoaXMuX2ZpZWxkW3RdLmRhdGEpfSxMLmhp Z2hsaWdodD1mdW5jdGlvbih0KXt2YXIgZSxyO2lmKCF0KXJldHVybiB0aGlz Ll9keW5hbWljQ291bnRzPVswLDAsMF0sdGhpcy5keWFuYW1pY0xldmVsPVtO YU4sTmFOLE5hTl0sdm9pZCh0aGlzLmhpZ2hsaWdodExldmVsPVstMSwtMSwt MV0pO2ZvcihlPTA7ZTwzOysrZSl0aGlzLmVuYWJsZUhpZ2hsaWdodFtlXT90 aGlzLmhpZ2hsaWdodExldmVsW2VdPXQubGV2ZWxbZV06dGhpcy5oaWdobGln aHRMZXZlbFtlXT0tMTtmb3Iocj10aGlzLnNuYXBUb0RhdGE/dC5kYXRhQ29v cmRpbmF0ZTp0LnBvc2l0aW9uLGU9MDtlPDM7KytlKXJbZV0tPXRoaXMub2Jq ZWN0T2Zmc2V0W2VdO2lmKHRoaXMuZW5hYmxlRHluYW1pY1swXSYmclswXSE9 PXRoaXMuZHluYW1pY0xldmVsWzBdfHx0aGlzLmVuYWJsZUR5bmFtaWNbMV0m JnJbMV0hPT10aGlzLmR5bmFtaWNMZXZlbFsxXXx8dGhpcy5lbmFibGVEeW5h bWljWzJdJiZyWzJdIT09dGhpcy5keW5hbWljTGV2ZWxbMl0pe2Zvcih2YXIg bj0wLGE9dGhpcy5zaGFwZSxpPXMubWFsbG9jRmxvYXQoMTIqYVswXSphWzFd KSxvPTA7bzwzOysrbylpZih0aGlzLmVuYWJsZUR5bmFtaWNbb10pe3RoaXMu ZHluYW1pY0xldmVsW29dPXJbb107dmFyIGw9KG8rMSklMyxjPShvKzIpJTMs dT10aGlzLl9maWVsZFtvXSxoPXRoaXMuX2ZpZWxkW2xdLHA9dGhpcy5fZmll bGRbY10sZD1mKHUscltvXSksZz1kLmNlbGxzLHY9ZC5wb3NpdGlvbnM7Zm9y KHRoaXMuX2R5bmFtaWNPZmZzZXRzW29dPW4sZT0wO2U8Zy5sZW5ndGg7Kytl KWZvcih2YXIgbT1nW2VdLHk9MDt5PDI7Kyt5KXt2YXIgeD12W21beV1dLGI9 K3hbMF0sXz0wfGIsdz0wfE1hdGgubWluKF8rMSxhWzBdKSxrPWItXyxUPTEt ayxNPSt4WzFdLEE9MHxNLFM9MHxNYXRoLm1pbihBKzEsYVsxXSksRT1NLUEs TD0xLUUsQz1UKkwsUD1UKkUsTz1rKkwsej1rKkUsST1DKmguZ2V0KF8sQSkr UCpoLmdldChfLFMpK08qaC5nZXQodyxBKSt6KmguZ2V0KHcsUyksRD1DKnAu Z2V0KF8sQSkrUCpwLmdldChfLFMpK08qcC5nZXQodyxBKSt6KnAuZ2V0KHcs Uyk7aWYoaXNOYU4oSSl8fGlzTmFOKEQpKXt5JiYobi09MSk7YnJlYWt9aVsy Km4rMF09SSxpWzIqbisxXT1ELG4rPTF9dGhpcy5fZHluYW1pY0NvdW50c1tv XT1uLXRoaXMuX2R5bmFtaWNPZmZzZXRzW29dfWVsc2UgdGhpcy5keW5hbWlj TGV2ZWxbb109TmFOLHRoaXMuX2R5bmFtaWNDb3VudHNbb109MDt0aGlzLl9k eW5hbWljQnVmZmVyLnVwZGF0ZShpLnN1YmFycmF5KDAsMipuKSkscy5mcmVl RmxvYXQoaSl9fX0seyIuL2xpYi9zaGFkZXJzIjozMTYsImJpbmFyeS1zZWFy Y2gtYm91bmRzIjozMTcsImJpdC10d2lkZGxlIjo5NCxjb2xvcm1hcDoxMjgs ImdsLWJ1ZmZlciI6MjQ0LCJnbC1tYXQ0L2ludmVydCI6MjY4LCJnbC1tYXQ0 L211bHRpcGx5IjoyNzAsImdsLXRleHR1cmUyZCI6MzI0LCJnbC12YW8iOjMy OSxuZGFycmF5OjQ1MiwibmRhcnJheS1ncmFkaWVudCI6NDQzLCJuZGFycmF5 LW9wcyI6NDQ2LCJuZGFycmF5LXBhY2siOjQ0Nywic3VyZmFjZS1uZXRzIjo1 MzAsInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sMzE5OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNzcy1mb250IiksYT10KCJwaWNr LWJ5LWFsaWFzIiksaT10KCJyZWdsIiksbz10KCJnbC11dGlsL2NvbnRleHQi KSxzPXQoImVzNi13ZWFrLW1hcCIpLGw9dCgiY29sb3Itbm9ybWFsaXplIiks Yz10KCJmb250LWF0bGFzIiksdT10KCJ0eXBlZGFycmF5LXBvb2wiKSxoPXQo InBhcnNlLXJlY3QiKSxmPXQoImlzLXBsYWluLW9iaiIpLHA9dCgicGFyc2Ut dW5pdCIpLGQ9dCgidG8tcHgiKSxnPXQoImRldGVjdC1rZXJuaW5nIiksdj10 KCJvYmplY3QtYXNzaWduIiksbT10KCJmb250LW1lYXN1cmUiKSx5PXQoImZs YXR0ZW4tdmVydGV4LWRhdGEiKSx4PXQoImJpdC10d2lkZGxlIikubmV4dFBv dzIsYj1uZXcgcyxfPSExO2lmKGRvY3VtZW50LmJvZHkpe3ZhciB3PWRvY3Vt ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi ZGl2IikpO3cuc3R5bGUuZm9udD0iaXRhbGljIHNtYWxsLWNhcHMgYm9sZCBj b25kZW5zZWQgMTZweC8yIGN1cnNpdmUiLGdldENvbXB1dGVkU3R5bGUodyku Zm9udFN0cmV0Y2gmJihfPSEwKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk KHcpfXZhciBrPWZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0KXtyZXR1cm4iZnVu Y3Rpb24iPT10eXBlb2YgdCYmdC5fZ2wmJnQucHJvcCYmdC50ZXh0dXJlJiZ0 LmJ1ZmZlcn0odCk/dGhpcy5nbD1vKHQpOih0PXtyZWdsOnR9LHRoaXMuZ2w9 dC5yZWdsLl9nbCksdGhpcy5zaGFkZXI9Yi5nZXQodGhpcy5nbCksdGhpcy5z aGFkZXI/dGhpcy5yZWdsPXRoaXMuc2hhZGVyLnJlZ2w6dGhpcy5yZWdsPXQu cmVnbHx8aSh7Z2w6dGhpcy5nbH0pLHRoaXMuY2hhckJ1ZmZlcj10aGlzLnJl Z2wuYnVmZmVyKHt0eXBlOiJ1aW50OCIsdXNhZ2U6InN0cmVhbSJ9KSx0aGlz LnNpemVCdWZmZXI9dGhpcy5yZWdsLmJ1ZmZlcih7dHlwZToiZmxvYXQiLHVz YWdlOiJzdHJlYW0ifSksdGhpcy5zaGFkZXJ8fCh0aGlzLnNoYWRlcj10aGlz LmNyZWF0ZVNoYWRlcigpLGIuc2V0KHRoaXMuZ2wsdGhpcy5zaGFkZXIpKSx0 aGlzLmJhdGNoPVtdLHRoaXMuZm9udFNpemU9W10sdGhpcy5mb250PVtdLHRo aXMuZm9udEF0bGFzPVtdLHRoaXMuZHJhdz10aGlzLnNoYWRlci5kcmF3LmJp bmQodGhpcyksdGhpcy5yZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLnJlZ2wuX3Jl ZnJlc2goKSx0aGlzLmRyYXcodGhpcy5iYXRjaCl9LHRoaXMuY2FudmFzPXRo aXMuZ2wuY2FudmFzLHRoaXMudXBkYXRlKGYodCk/dDp7fSl9O2sucHJvdG90 eXBlLmNyZWF0ZVNoYWRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMucmVnbCxl PXQoe2JsZW5kOntlbmFibGU6ITAsY29sb3I6WzAsMCwwLDFdLGZ1bmM6e3Ny Y1JHQjoic3JjIGFscGhhIixkc3RSR0I6Im9uZSBtaW51cyBzcmMgYWxwaGEi LHNyY0FscGhhOiJvbmUgbWludXMgZHN0IGFscGhhIixkc3RBbHBoYToib25l In19LHN0ZW5jaWw6e2VuYWJsZTohMX0sZGVwdGg6e2VuYWJsZTohMX0sY291 bnQ6dC5wcm9wKCJjb3VudCIpLG9mZnNldDp0LnByb3AoIm9mZnNldCIpLGF0 dHJpYnV0ZXM6e2NoYXJPZmZzZXQ6e29mZnNldDo0LHN0cmlkZTo4LGJ1ZmZl cjp0LnRoaXMoInNpemVCdWZmZXIiKX0sd2lkdGg6e29mZnNldDowLHN0cmlk ZTo4LGJ1ZmZlcjp0LnRoaXMoInNpemVCdWZmZXIiKX0sY2hhcjp0LnRoaXMo ImNoYXJCdWZmZXIiKSxwb3NpdGlvbjp0LnRoaXMoInBvc2l0aW9uIil9LHVu aWZvcm1zOnthdGxhc1NpemU6ZnVuY3Rpb24odCxlKXtyZXR1cm5bZS5hdGxh cy53aWR0aCxlLmF0bGFzLmhlaWdodF19LGF0bGFzRGltOmZ1bmN0aW9uKHQs ZSl7cmV0dXJuW2UuYXRsYXMuY29scyxlLmF0bGFzLnJvd3NdfSxhdGxhczpm dW5jdGlvbih0LGUpe3JldHVybiBlLmF0bGFzLnRleHR1cmV9LGNoYXJTdGVw OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuYXRsYXMuc3RlcH0sZW06ZnVuY3Rp b24odCxlKXtyZXR1cm4gZS5hdGxhcy5lbX0sY29sb3I6dC5wcm9wKCJjb2xv ciIpLG9wYWNpdHk6dC5wcm9wKCJvcGFjaXR5Iiksdmlld3BvcnQ6dC50aGlz KCJ2aWV3cG9ydEFycmF5Iiksc2NhbGU6dC50aGlzKCJzY2FsZSIpLGFsaWdu OnQucHJvcCgiYWxpZ24iKSxiYXNlbGluZTp0LnByb3AoImJhc2VsaW5lIiks dHJhbnNsYXRlOnQudGhpcygidHJhbnNsYXRlIikscG9zaXRpb25PZmZzZXQ6 dC5wcm9wKCJwb3NpdGlvbk9mZnNldCIpfSxwcmltaXRpdmU6InBvaW50cyIs dmlld3BvcnQ6dC50aGlzKCJ2aWV3cG9ydCIpLHZlcnQ6IlxuXHRcdFx0cHJl Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuXHRcdFx0YXR0cmlidXRlIGZsb2F0IHdp ZHRoLCBjaGFyT2Zmc2V0LCBjaGFyO1xuXHRcdFx0YXR0cmlidXRlIHZlYzIg cG9zaXRpb247XG5cdFx0XHR1bmlmb3JtIGZsb2F0IGZvbnRTaXplLCBjaGFy U3RlcCwgZW0sIGFsaWduLCBiYXNlbGluZTtcblx0XHRcdHVuaWZvcm0gdmVj NCB2aWV3cG9ydDtcblx0XHRcdHVuaWZvcm0gdmVjNCBjb2xvcjtcblx0XHRc dHVuaWZvcm0gdmVjMiBhdGxhc1NpemUsIGF0bGFzRGltLCBzY2FsZSwgdHJh bnNsYXRlLCBwb3NpdGlvbk9mZnNldDtcblx0XHRcdHZhcnlpbmcgdmVjMiBj aGFyQ29vcmQsIGNoYXJJZDtcblx0XHRcdHZhcnlpbmcgZmxvYXQgY2hhcldp ZHRoO1xuXHRcdFx0dmFyeWluZyB2ZWM0IGZvbnRDb2xvcjtcblx0XHRcdHZv aWQgbWFpbiAoKSB7XG5cdFx0XHRcdCIrKGsubm9ybWFsVmlld3BvcnQ/IiI6 InZlYzIgcG9zaXRpb25PZmZzZXQgPSB2ZWMyKHBvc2l0aW9uT2Zmc2V0Lngs LSBwb3NpdGlvbk9mZnNldC55KTsiKSsiXG5cblx0XHRcdFx0dmVjMiBvZmZz ZXQgPSBmbG9vcihlbSAqICh2ZWMyKGFsaWduICsgY2hhck9mZnNldCwgYmFz ZWxpbmUpXG5cdFx0XHRcdFx0KyBwb3NpdGlvbk9mZnNldCkpXG5cdFx0XHRc dFx0LyAodmlld3BvcnQuencgKiBzY2FsZS54eSk7XG5cblx0XHRcdFx0dmVj MiBwb3NpdGlvbiA9IChwb3NpdGlvbiArIHRyYW5zbGF0ZSkgKiBzY2FsZTtc blx0XHRcdFx0cG9zaXRpb24gKz0gb2Zmc2V0ICogc2NhbGU7XG5cblx0XHRc dFx0Iisoay5ub3JtYWxWaWV3cG9ydD8icG9zaXRpb24ueSA9IDEuIC0gcG9z aXRpb24ueTsiOiIiKSsiXG5cblx0XHRcdFx0Y2hhckNvb3JkID0gcG9zaXRp b24gKiB2aWV3cG9ydC56dyArIHZpZXdwb3J0Lnh5O1xuXG5cdFx0XHRcdGds X1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiAqIDIuIC0gMS4sIDAsIDEpO1xu XG5cdFx0XHRcdGdsX1BvaW50U2l6ZSA9IGNoYXJTdGVwO1xuXG5cdFx0XHRc dGNoYXJJZC54ID0gbW9kKGNoYXIsIGF0bGFzRGltLngpO1xuXHRcdFx0XHRj aGFySWQueSA9IGZsb29yKGNoYXIgLyBhdGxhc0RpbS54KTtcblxuXHRcdFx0 XHRjaGFyV2lkdGggPSB3aWR0aCAqIGVtO1xuXG5cdFx0XHRcdGZvbnRDb2xv ciA9IGNvbG9yIC8gMjU1Ljtcblx0XHRcdH0iLGZyYWc6IlxuXHRcdFx0cHJl Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuXHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQg YXRsYXM7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IGZvbnRTaXplLCBjaGFyU3Rl cCwgb3BhY2l0eTtcblx0XHRcdHVuaWZvcm0gdmVjMiBhdGxhc1NpemU7XG5c dFx0XHR1bmlmb3JtIHZlYzQgdmlld3BvcnQ7XG5cdFx0XHR2YXJ5aW5nIHZl YzQgZm9udENvbG9yO1xuXHRcdFx0dmFyeWluZyB2ZWMyIGNoYXJDb29yZCwg Y2hhcklkO1xuXHRcdFx0dmFyeWluZyBmbG9hdCBjaGFyV2lkdGg7XG5cblx0 XHRcdGZsb2F0IGxpZ2h0bmVzcyh2ZWM0IGNvbG9yKSB7XG5cdFx0XHRcdHJl dHVybiBjb2xvci5yICogMC4yOTkgKyBjb2xvci5nICogMC41ODcgKyBjb2xv ci5iICogMC4xMTQ7XG5cdFx0XHR9XG5cblx0XHRcdHZvaWQgbWFpbiAoKSB7 XG5cdFx0XHRcdHZlYzIgdXYgPSBnbF9GcmFnQ29vcmQueHkgLSBjaGFyQ29v cmQgKyBjaGFyU3RlcCAqIC41O1xuXHRcdFx0XHRmbG9hdCBoYWxmQ2hhclN0 ZXAgPSBmbG9vcihjaGFyU3RlcCAqIC41ICsgLjUpO1xuXG5cdFx0XHRcdC8v IGludmVydCB5IGFuZCBzaGlmdCBieSAxcHggKEZGIGV4cGVjaWFsbHkgbmVl ZHMgdGhhdClcblx0XHRcdFx0dXYueSA9IGNoYXJTdGVwIC0gdXYueTtcblxu XHRcdFx0XHQvLyBpZ25vcmUgcG9pbnRzIG91dHNpZGUgb2YgY2hhcmFjdGVy IGJvdW5kaW5nIGJveFxuXHRcdFx0XHRmbG9hdCBoYWxmQ2hhcldpZHRoID0g Y2VpbChjaGFyV2lkdGggKiAuNSk7XG5cdFx0XHRcdGlmIChmbG9vcih1di54 KSA+IGhhbGZDaGFyU3RlcCArIGhhbGZDaGFyV2lkdGggfHxcblx0XHRcdFx0 XHRmbG9vcih1di54KSA8IGhhbGZDaGFyU3RlcCAtIGhhbGZDaGFyV2lkdGgp IHJldHVybjtcblxuXHRcdFx0XHR1diArPSBjaGFySWQgKiBjaGFyU3RlcDtc blx0XHRcdFx0dXYgPSB1diAvIGF0bGFzU2l6ZTtcblxuXHRcdFx0XHR2ZWM0 IGNvbG9yID0gZm9udENvbG9yO1xuXHRcdFx0XHR2ZWM0IG1hc2sgPSB0ZXh0 dXJlMkQoYXRsYXMsIHV2KTtcblxuXHRcdFx0XHRmbG9hdCBtYXNrWSA9IGxp Z2h0bmVzcyhtYXNrKTtcblx0XHRcdFx0Ly8gZmxvYXQgY29sb3JZID0gbGln aHRuZXNzKGNvbG9yKTtcblx0XHRcdFx0Y29sb3IuYSAqPSBtYXNrWTtcblx0 XHRcdFx0Y29sb3IuYSAqPSBvcGFjaXR5O1xuXG5cdFx0XHRcdC8vIGNvbG9y LmEgKz0gLjE7XG5cblx0XHRcdFx0Ly8gYW50aWFsaWFzaW5nLCBzZWUgeWlx IGNvbG9yIHNwYWNlIHktY2hhbm5lbCBmb3JtdWxhXG5cdFx0XHRcdC8vIGNv bG9yLnJnYiArPSAoMS4gLSBjb2xvci5yZ2IpICogKDEuIC0gbWFzay5yZ2Ip O1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xuXHRcdFx0fSJ9 KTtyZXR1cm57cmVnbDp0LGRyYXc6ZSxhdGxhczp7fX19LGsucHJvdG90eXBl LnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKCJzdHJpbmciPT10 eXBlb2YgdCl0PXt0ZXh0OnR9O2Vsc2UgaWYoIXQpcmV0dXJuO251bGwhPSh0 PWEodCx7cG9zaXRpb246InBvc2l0aW9uIHBvc2l0aW9ucyBjb29yZCBjb29y ZHMgY29vcmRpbmF0ZXMiLGZvbnQ6ImZvbnQgZm9udEZhY2UgZm9udGZhY2Ug dHlwZWZhY2UgY3NzRm9udCBjc3MtZm9udCBmYW1pbHkgZm9udEZhbWlseSIs Zm9udFNpemU6ImZvbnRTaXplIGZvbnRzaXplIHNpemUgZm9udC1zaXplIix0 ZXh0OiJ0ZXh0IHRleHRzIGNoYXJzIGNoYXJhY3RlcnMgdmFsdWUgdmFsdWVz IHN5bWJvbHMiLGFsaWduOiJhbGlnbiBhbGlnbm1lbnQgdGV4dEFsaWduIHRl eHRiYXNlbGluZSIsYmFzZWxpbmU6ImJhc2VsaW5lIHRleHRCYXNlbGluZSB0 ZXh0YmFzZWxpbmUiLGRpcmVjdGlvbjoiZGlyIGRpcmVjdGlvbiB0ZXh0RGly ZWN0aW9uIixjb2xvcjoiY29sb3IgY29sb3VyIGZpbGwgZmlsbC1jb2xvciBm aWxsQ29sb3IgdGV4dENvbG9yIHRleHRjb2xvciIsa2VybmluZzoia2Vybmlu ZyBrZXJuIixyYW5nZToicmFuZ2UgZGF0YUJveCIsdmlld3BvcnQ6InZwIHZp ZXdwb3J0IHZpZXdCb3ggdmlld2JveCB2aWV3UG9ydCIsb3BhY2l0eToib3Bh Y2l0eSBhbHBoYSB0cmFuc3BhcmVuY3kgdmlzaWJsZSB2aXNpYmlsaXR5IG9w YXF1ZSIsb2Zmc2V0OiJvZmZzZXQgcG9zaXRpb25PZmZzZXQgcGFkZGluZyBz aGlmdCBpbmRlbnQgaW5kZW50YXRpb24ifSwhMCkpLm9wYWNpdHkmJihBcnJh eS5pc0FycmF5KHQub3BhY2l0eSk/dGhpcy5vcGFjaXR5PXQub3BhY2l0eS5t YXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KTp0aGlzLm9w YWNpdHk9cGFyc2VGbG9hdCh0Lm9wYWNpdHkpKSxudWxsIT10LnZpZXdwb3J0 JiYodGhpcy52aWV3cG9ydD1oKHQudmlld3BvcnQpLGsubm9ybWFsVmlld3Bv cnQmJih0aGlzLnZpZXdwb3J0Lnk9dGhpcy5jYW52YXMuaGVpZ2h0LXRoaXMu dmlld3BvcnQueS10aGlzLnZpZXdwb3J0LmhlaWdodCksdGhpcy52aWV3cG9y dEFycmF5PVt0aGlzLnZpZXdwb3J0LngsdGhpcy52aWV3cG9ydC55LHRoaXMu dmlld3BvcnQud2lkdGgsdGhpcy52aWV3cG9ydC5oZWlnaHRdKSxudWxsPT10 aGlzLnZpZXdwb3J0JiYodGhpcy52aWV3cG9ydD17eDowLHk6MCx3aWR0aDp0 aGlzLmdsLmRyYXdpbmdCdWZmZXJXaWR0aCxoZWlnaHQ6dGhpcy5nbC5kcmF3 aW5nQnVmZmVySGVpZ2h0fSx0aGlzLnZpZXdwb3J0QXJyYXk9W3RoaXMudmll d3BvcnQueCx0aGlzLnZpZXdwb3J0LnksdGhpcy52aWV3cG9ydC53aWR0aCx0 aGlzLnZpZXdwb3J0LmhlaWdodF0pLG51bGwhPXQua2VybmluZyYmKHRoaXMu a2VybmluZz10Lmtlcm5pbmcpLG51bGwhPXQub2Zmc2V0JiYoIm51bWJlciI9 PXR5cGVvZiB0Lm9mZnNldCYmKHQub2Zmc2V0PVt0Lm9mZnNldCwwXSksdGhp cy5wb3NpdGlvbk9mZnNldD15KHQub2Zmc2V0KSksdC5kaXJlY3Rpb24mJih0 aGlzLmRpcmVjdGlvbj10LmRpcmVjdGlvbiksdC5yYW5nZSYmKHRoaXMucmFu Z2U9dC5yYW5nZSx0aGlzLnNjYWxlPVsxLyh0LnJhbmdlWzJdLXQucmFuZ2Vb MF0pLDEvKHQucmFuZ2VbM10tdC5yYW5nZVsxXSldLHRoaXMudHJhbnNsYXRl PVstdC5yYW5nZVswXSwtdC5yYW5nZVsxXV0pLHQuc2NhbGUmJih0aGlzLnNj YWxlPXQuc2NhbGUpLHQudHJhbnNsYXRlJiYodGhpcy50cmFuc2xhdGU9dC50 cmFuc2xhdGUpLHRoaXMuc2NhbGV8fCh0aGlzLnNjYWxlPVsxL3RoaXMudmll d3BvcnQud2lkdGgsMS90aGlzLnZpZXdwb3J0LmhlaWdodF0pLHRoaXMudHJh bnNsYXRlfHwodGhpcy50cmFuc2xhdGU9WzAsMF0pLHRoaXMuZm9udC5sZW5n dGh8fHQuZm9udHx8KHQuZm9udD1rLmJhc2VGb250U2l6ZSsicHggc2Fucy1z ZXJpZiIpO3ZhciByLGk9ITEsbz0hMTtpZih0LmZvbnQmJihBcnJheS5pc0Fy cmF5KHQuZm9udCk/dC5mb250Olt0LmZvbnRdKS5mb3JFYWNoKGZ1bmN0aW9u KHQscil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRyeXt0PW4ucGFyc2UodCl9 Y2F0Y2goZSl7dD1uLnBhcnNlKGsuYmFzZUZvbnRTaXplKyJweCAiK3QpfWVs c2UgdD1uLnBhcnNlKG4uc3RyaW5naWZ5KHQpKTt2YXIgYT1uLnN0cmluZ2lm eSh7c2l6ZTprLmJhc2VGb250U2l6ZSxmYW1pbHk6dC5mYW1pbHksc3RyZXRj aDpfP3Quc3RyZXRjaDp2b2lkIDAsdmFyaWFudDp0LnZhcmlhbnQsd2VpZ2h0 OnQud2VpZ2h0LHN0eWxlOnQuc3R5bGV9KSxzPXAodC5zaXplKSxsPU1hdGgu cm91bmQoc1swXSpkKHNbMV0pKTtpZihsIT09ZS5mb250U2l6ZVtyXSYmKG89 ITAsZS5mb250U2l6ZVtyXT1sKSwhKGUuZm9udFtyXSYmYT09ZS5mb250W3Jd LmJhc2VTdHJpbmd8fChpPSEwLGUuZm9udFtyXT1rLmZvbnRzW2FdLGUuZm9u dFtyXSkpKXt2YXIgYz10LmZhbWlseS5qb2luKCIsICIpLHU9W3Quc3R5bGVd O3Quc3R5bGUhPXQudmFyaWFudCYmdS5wdXNoKHQudmFyaWFudCksdC52YXJp YW50IT10LndlaWdodCYmdS5wdXNoKHQud2VpZ2h0KSxfJiZ0LndlaWdodCE9 dC5zdHJldGNoJiZ1LnB1c2godC5zdHJldGNoKSxlLmZvbnRbcl09e2Jhc2VT dHJpbmc6YSxmYW1pbHk6Yyx3ZWlnaHQ6dC53ZWlnaHQsc3RyZXRjaDp0LnN0 cmV0Y2gsc3R5bGU6dC5zdHlsZSx2YXJpYW50OnQudmFyaWFudCx3aWR0aDp7 fSxrZXJuaW5nOnt9LG1ldHJpY3M6bShjLHtvcmlnaW46InRvcCIsZm9udFNp emU6ay5iYXNlRm9udFNpemUsZm9udFN0eWxlOnUuam9pbigiICIpfSl9LGsu Zm9udHNbYV09ZS5mb250W3JdfX0pLChpfHxvKSYmdGhpcy5mb250LmZvckVh Y2goZnVuY3Rpb24ocixhKXt2YXIgaT1uLnN0cmluZ2lmeSh7c2l6ZTplLmZv bnRTaXplW2FdLGZhbWlseTpyLmZhbWlseSxzdHJldGNoOl8/ci5zdHJldGNo OnZvaWQgMCx2YXJpYW50OnIudmFyaWFudCx3ZWlnaHQ6ci53ZWlnaHQsc3R5 bGU6ci5zdHlsZX0pO2lmKGUuZm9udEF0bGFzW2FdPWUuc2hhZGVyLmF0bGFz W2ldLCFlLmZvbnRBdGxhc1thXSl7dmFyIG89ci5tZXRyaWNzO2Uuc2hhZGVy LmF0bGFzW2ldPWUuZm9udEF0bGFzW2FdPXtmb250U3RyaW5nOmksc3RlcDoy Kk1hdGguY2VpbChlLmZvbnRTaXplW2FdKm8uYm90dG9tKi41KSxlbTplLmZv bnRTaXplW2FdLGNvbHM6MCxyb3dzOjAsaGVpZ2h0OjAsd2lkdGg6MCxjaGFy czpbXSxpZHM6e30sdGV4dHVyZTplLnJlZ2wudGV4dHVyZSgpfX1udWxsPT10 LnRleHQmJih0LnRleHQ9ZS50ZXh0KX0pLCJzdHJpbmciPT10eXBlb2YgdC50 ZXh0JiZ0LnBvc2l0aW9uJiZ0LnBvc2l0aW9uLmxlbmd0aD4yKXtmb3IodmFy IHM9QXJyYXkoLjUqdC5wb3NpdGlvbi5sZW5ndGgpLGY9MDtmPHMubGVuZ3Ro O2YrKylzW2ZdPXQudGV4dDt0LnRleHQ9c31pZihudWxsIT10LnRleHR8fGkp e2lmKHRoaXMudGV4dE9mZnNldHM9WzBdLEFycmF5LmlzQXJyYXkodC50ZXh0 KSl7dGhpcy5jb3VudD10LnRleHRbMF0ubGVuZ3RoLHRoaXMuY291bnRzPVt0 aGlzLmNvdW50XTtmb3IodmFyIGI9MTtiPHQudGV4dC5sZW5ndGg7YisrKXRo aXMudGV4dE9mZnNldHNbYl09dGhpcy50ZXh0T2Zmc2V0c1tiLTFdK3QudGV4 dFtiLTFdLmxlbmd0aCx0aGlzLmNvdW50Kz10LnRleHRbYl0ubGVuZ3RoLHRo aXMuY291bnRzLnB1c2godC50ZXh0W2JdLmxlbmd0aCk7dGhpcy50ZXh0PXQu dGV4dC5qb2luKCIiKX1lbHNlIHRoaXMudGV4dD10LnRleHQsdGhpcy5jb3Vu dD10aGlzLnRleHQubGVuZ3RoLHRoaXMuY291bnRzPVt0aGlzLmNvdW50XTty PVtdLHRoaXMuZm9udC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ay5hdGxhc0Nv bnRleHQuZm9udD10LmJhc2VTdHJpbmc7Zm9yKHZhciBhPWUuZm9udEF0bGFz W25dLGk9MDtpPGUudGV4dC5sZW5ndGg7aSsrKXt2YXIgbz1lLnRleHQuY2hh ckF0KGkpO2lmKG51bGw9PWEuaWRzW29dJiYoYS5pZHNbb109YS5jaGFycy5s ZW5ndGgsYS5jaGFycy5wdXNoKG8pLHIucHVzaChvKSksbnVsbD09dC53aWR0 aFtvXSYmKHQud2lkdGhbb109ay5hdGxhc0NvbnRleHQubWVhc3VyZVRleHQo bykud2lkdGgvay5iYXNlRm9udFNpemUsZS5rZXJuaW5nKSl7dmFyIHM9W107 Zm9yKHZhciBsIGluIHQud2lkdGgpcy5wdXNoKGwrbyxvK2wpO3YodC5rZXJu aW5nLGcodC5mYW1pbHkse3BhaXJzOnN9KSl9fX0pfWlmKHQucG9zaXRpb24p aWYodC5wb3NpdGlvbi5sZW5ndGg+Mil7Zm9yKHZhciB3PSF0LnBvc2l0aW9u WzBdLmxlbmd0aCxUPXUubWFsbG9jRmxvYXQoMip0aGlzLmNvdW50KSxNPTAs QT0wO008dGhpcy5jb3VudHMubGVuZ3RoO00rKyl7dmFyIFM9dGhpcy5jb3Vu dHNbTV07aWYodylmb3IodmFyIEU9MDtFPFM7RSsrKVRbQSsrXT10LnBvc2l0 aW9uWzIqTV0sVFtBKytdPXQucG9zaXRpb25bMipNKzFdO2Vsc2UgZm9yKHZh ciBMPTA7TDxTO0wrKylUW0ErK109dC5wb3NpdGlvbltNXVswXSxUW0ErK109 dC5wb3NpdGlvbltNXVsxXX10aGlzLnBvc2l0aW9uLmNhbGw/dGhpcy5wb3Np dGlvbih7dHlwZToiZmxvYXQiLGRhdGE6VH0pOnRoaXMucG9zaXRpb249dGhp cy5yZWdsLmJ1ZmZlcih7dHlwZToiZmxvYXQiLGRhdGE6VH0pLHUuZnJlZUZs b2F0KFQpfWVsc2UgdGhpcy5wb3NpdGlvbi5kZXN0cm95JiZ0aGlzLnBvc2l0 aW9uLmRlc3Ryb3koKSx0aGlzLnBvc2l0aW9uPXtjb25zdGFudDp0LnBvc2l0 aW9ufTtpZih0LnRleHR8fGkpe3ZhciBDPXUubWFsbG9jVWludDgodGhpcy5j b3VudCksUD11Lm1hbGxvY0Zsb2F0KDIqdGhpcy5jb3VudCk7dGhpcy50ZXh0 V2lkdGg9W107Zm9yKHZhciBPPTAsej0wO088dGhpcy5jb3VudHMubGVuZ3Ro O08rKyl7Zm9yKHZhciBJPXRoaXMuY291bnRzW09dLEQ9dGhpcy5mb250W09d fHx0aGlzLmZvbnRbMF0sUj10aGlzLmZvbnRBdGxhc1tPXXx8dGhpcy5mb250 QXRsYXNbMF0sRj0wO0Y8STtGKyspe3ZhciBCPXRoaXMudGV4dC5jaGFyQXQo eiksTj10aGlzLnRleHQuY2hhckF0KHotMSk7aWYoQ1t6XT1SLmlkc1tCXSxQ WzIqel09RC53aWR0aFtCXSxGKXt2YXIgaj1QWzIqei0yXSxWPVBbMip6XSxV PVBbMip6LTFdKy41KmorLjUqVjtpZih0aGlzLmtlcm5pbmcpe3ZhciBxPUQu a2VybmluZ1tOK0JdO3EmJihVKz0uMDAxKnEpfVBbMip6KzFdPVV9ZWxzZSBQ WzIqeisxXT0uNSpQWzIqel07eisrfXRoaXMudGV4dFdpZHRoLnB1c2goUC5s ZW5ndGg/LjUqUFsyKnotMl0rUFsyKnotMV06MCl9dC5hbGlnbnx8KHQuYWxp Z249dGhpcy5hbGlnbiksdGhpcy5jaGFyQnVmZmVyKHtkYXRhOkMsdHlwZToi dWludDgiLHVzYWdlOiJzdHJlYW0ifSksdGhpcy5zaXplQnVmZmVyKHtkYXRh OlAsdHlwZToiZmxvYXQiLHVzYWdlOiJzdHJlYW0ifSksdS5mcmVlVWludDgo QyksdS5mcmVlRmxvYXQoUCksci5sZW5ndGgmJnRoaXMuZm9udC5mb3JFYWNo KGZ1bmN0aW9uKHQscil7dmFyIG49ZS5mb250QXRsYXNbcl0sYT1uLnN0ZXAs aT1NYXRoLmZsb29yKGsubWF4QXRsYXNTaXplL2EpLG89TWF0aC5taW4oaSxu LmNoYXJzLmxlbmd0aCkscz1NYXRoLmNlaWwobi5jaGFycy5sZW5ndGgvbyks bD14KG8qYSksdT14KHMqYSk7bi53aWR0aD1sLG4uaGVpZ2h0PXUsbi5yb3dz PXMsbi5jb2xzPW8sbi5lbSYmbi50ZXh0dXJlKHtkYXRhOmMoe2NhbnZhczpr LmF0bGFzQ2FudmFzLGZvbnQ6bi5mb250U3RyaW5nLGNoYXJzOm4uY2hhcnMs c2hhcGU6W2wsdV0sc3RlcDpbYSxhXX0pfSl9KX1pZih0LmFsaWduJiYodGhp cy5hbGlnbj10LmFsaWduLHRoaXMuYWxpZ25PZmZzZXQ9dGhpcy50ZXh0V2lk dGgubWFwKGZ1bmN0aW9uKHQscil7dmFyIG49QXJyYXkuaXNBcnJheShlLmFs aWduKT9lLmFsaWduLmxlbmd0aD4xP2UuYWxpZ25bcl06ZS5hbGlnblswXTpl LmFsaWduO2lmKCJudW1iZXIiPT10eXBlb2YgbilyZXR1cm4gbjtzd2l0Y2go bil7Y2FzZSJyaWdodCI6Y2FzZSJlbmQiOnJldHVybi10O2Nhc2UiY2VudGVy IjpjYXNlImNlbnRyZSI6Y2FzZSJtaWRkbGUiOnJldHVybi41Ki10fXJldHVy biAwfSkpLG51bGw9PXRoaXMuYmFzZWxpbmUmJm51bGw9PXQuYmFzZWxpbmUm Jih0LmJhc2VsaW5lPTApLG51bGwhPXQuYmFzZWxpbmUmJih0aGlzLmJhc2Vs aW5lPXQuYmFzZWxpbmUsQXJyYXkuaXNBcnJheSh0aGlzLmJhc2VsaW5lKXx8 KHRoaXMuYmFzZWxpbmU9W3RoaXMuYmFzZWxpbmVdKSx0aGlzLmJhc2VsaW5l T2Zmc2V0PXRoaXMuYmFzZWxpbmUubWFwKGZ1bmN0aW9uKHQscil7dmFyIG49 KGUuZm9udFtyXXx8ZS5mb250WzBdKS5tZXRyaWNzLGE9MDtyZXR1cm4gYSs9 LjUqbi5ib3R0b20sYSs9Im51bWJlciI9PXR5cGVvZiB0P3Qtbi5iYXNlbGlu ZTotblt0XSxrLm5vcm1hbFZpZXdwb3J0fHwoYSo9LTEpLGF9KSksbnVsbCE9 dC5jb2xvcilpZih0LmNvbG9yfHwodC5jb2xvcj0idHJhbnNwYXJlbnQiKSwi c3RyaW5nIiE9dHlwZW9mIHQuY29sb3ImJmlzTmFOKHQuY29sb3IpKXt2YXIg SDtpZigibnVtYmVyIj09dHlwZW9mIHQuY29sb3JbMF0mJnQuY29sb3IubGVu Z3RoPnRoaXMuY291bnRzLmxlbmd0aCl7dmFyIEc9dC5jb2xvci5sZW5ndGg7 SD11Lm1hbGxvY1VpbnQ4KEcpO2Zvcih2YXIgWT0odC5jb2xvci5zdWJhcnJh eXx8dC5jb2xvci5zbGljZSkuYmluZCh0LmNvbG9yKSxXPTA7VzxHO1crPTQp SC5zZXQobChZKFcsVys0KSwidWludDgiKSxXKX1lbHNle3ZhciBYPXQuY29s b3IubGVuZ3RoO0g9dS5tYWxsb2NVaW50OCg0KlgpO2Zvcih2YXIgWj0wO1o8 WDtaKyspSC5zZXQobCh0LmNvbG9yW1pdfHwwLCJ1aW50OCIpLDQqWil9dGhp cy5jb2xvcj1IfWVsc2UgdGhpcy5jb2xvcj1sKHQuY29sb3IsInVpbnQ4Iik7 aWYodC5wb3NpdGlvbnx8dC50ZXh0fHx0LmNvbG9yfHx0LmJhc2VsaW5lfHx0 LmFsaWdufHx0LmZvbnR8fHQub2Zmc2V0fHx0Lm9wYWNpdHkpaWYodGhpcy5j b2xvci5sZW5ndGg+NHx8dGhpcy5iYXNlbGluZU9mZnNldC5sZW5ndGg+MXx8 dGhpcy5hbGlnbiYmdGhpcy5hbGlnbi5sZW5ndGg+MXx8dGhpcy5mb250QXRs YXMubGVuZ3RoPjF8fHRoaXMucG9zaXRpb25PZmZzZXQubGVuZ3RoPjIpe3Zh ciBKPU1hdGgubWF4KC41KnRoaXMucG9zaXRpb24ubGVuZ3RofHwwLC4yNSp0 aGlzLmNvbG9yLmxlbmd0aHx8MCx0aGlzLmJhc2VsaW5lT2Zmc2V0Lmxlbmd0 aHx8MCx0aGlzLmFsaWduT2Zmc2V0Lmxlbmd0aHx8MCx0aGlzLmZvbnQubGVu Z3RofHwwLHRoaXMub3BhY2l0eS5sZW5ndGh8fDAsLjUqdGhpcy5wb3NpdGlv bk9mZnNldC5sZW5ndGh8fDApO3RoaXMuYmF0Y2g9QXJyYXkoSik7Zm9yKHZh ciBLPTA7Szx0aGlzLmJhdGNoLmxlbmd0aDtLKyspdGhpcy5iYXRjaFtLXT17 Y291bnQ6dGhpcy5jb3VudHMubGVuZ3RoPjE/dGhpcy5jb3VudHNbS106dGhp cy5jb3VudHNbMF0sb2Zmc2V0OnRoaXMudGV4dE9mZnNldHMubGVuZ3RoPjE/ dGhpcy50ZXh0T2Zmc2V0c1tLXTp0aGlzLnRleHRPZmZzZXRzWzBdLGNvbG9y OnRoaXMuY29sb3I/dGhpcy5jb2xvci5sZW5ndGg8PTQ/dGhpcy5jb2xvcjp0 aGlzLmNvbG9yLnN1YmFycmF5KDQqSyw0KksrNCk6WzAsMCwwLDI1NV0sb3Bh Y2l0eTpBcnJheS5pc0FycmF5KHRoaXMub3BhY2l0eSk/dGhpcy5vcGFjaXR5 W0tdOnRoaXMub3BhY2l0eSxiYXNlbGluZTpudWxsIT10aGlzLmJhc2VsaW5l T2Zmc2V0W0tdP3RoaXMuYmFzZWxpbmVPZmZzZXRbS106dGhpcy5iYXNlbGlu ZU9mZnNldFswXSxhbGlnbjp0aGlzLmFsaWduP251bGwhPXRoaXMuYWxpZ25P ZmZzZXRbS10/dGhpcy5hbGlnbk9mZnNldFtLXTp0aGlzLmFsaWduT2Zmc2V0 WzBdOjAsYXRsYXM6dGhpcy5mb250QXRsYXNbS118fHRoaXMuZm9udEF0bGFz WzBdLHBvc2l0aW9uT2Zmc2V0OnRoaXMucG9zaXRpb25PZmZzZXQubGVuZ3Ro PjI/dGhpcy5wb3NpdGlvbk9mZnNldC5zdWJhcnJheSgyKkssMipLKzIpOnRo aXMucG9zaXRpb25PZmZzZXR9fWVsc2UgdGhpcy5jb3VudD90aGlzLmJhdGNo PVt7Y291bnQ6dGhpcy5jb3VudCxvZmZzZXQ6MCxjb2xvcjp0aGlzLmNvbG9y fHxbMCwwLDAsMjU1XSxvcGFjaXR5OkFycmF5LmlzQXJyYXkodGhpcy5vcGFj aXR5KT90aGlzLm9wYWNpdHlbMF06dGhpcy5vcGFjaXR5LGJhc2VsaW5lOnRo aXMuYmFzZWxpbmVPZmZzZXRbMF0sYWxpZ246dGhpcy5hbGlnbk9mZnNldD90 aGlzLmFsaWduT2Zmc2V0WzBdOjAsYXRsYXM6dGhpcy5mb250QXRsYXNbMF0s cG9zaXRpb25PZmZzZXQ6dGhpcy5wb3NpdGlvbk9mZnNldH1dOnRoaXMuYmF0 Y2g9W119LGsucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LGsucHJv dG90eXBlLmtlcm5pbmc9ITAsay5wcm90b3R5cGUucG9zaXRpb249e2NvbnN0 YW50Om5ldyBGbG9hdDMyQXJyYXkoMil9LGsucHJvdG90eXBlLnRyYW5zbGF0 ZT1udWxsLGsucHJvdG90eXBlLnNjYWxlPW51bGwsay5wcm90b3R5cGUuZm9u dD1udWxsLGsucHJvdG90eXBlLnRleHQ9IiIsay5wcm90b3R5cGUucG9zaXRp b25PZmZzZXQ9WzAsMF0say5wcm90b3R5cGUub3BhY2l0eT0xLGsucHJvdG90 eXBlLmNvbG9yPW5ldyBVaW50OEFycmF5KFswLDAsMCwyNTVdKSxrLnByb3Rv dHlwZS5hbGlnbk9mZnNldD1bMCwwXSxrLm5vcm1hbFZpZXdwb3J0PSExLGsu bWF4QXRsYXNTaXplPTEwMjQsay5hdGxhc0NhbnZhcz1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJjYW52YXMiKSxrLmF0bGFzQ29udGV4dD1rLmF0bGFzQ2Fu dmFzLmdldENvbnRleHQoIjJkIix7YWxwaGE6ITF9KSxrLmJhc2VGb250U2l6 ZT02NCxrLmZvbnRzPXt9LGUuZXhwb3J0cz1rfSx7ImJpdC10d2lkZGxlIjo5 NCwiY29sb3Itbm9ybWFsaXplIjoxMjIsImNzcy1mb250IjoxNDEsImRldGVj dC1rZXJuaW5nIjoxNjgsImVzNi13ZWFrLW1hcCI6MzIwLCJmbGF0dGVuLXZl cnRleC1kYXRhIjoyMzAsImZvbnQtYXRsYXMiOjIzMSwiZm9udC1tZWFzdXJl IjoyMzIsImdsLXV0aWwvY29udGV4dCI6MzI1LCJpcy1wbGFpbi1vYmoiOjQy NCwib2JqZWN0LWFzc2lnbiI6NDU2LCJwYXJzZS1yZWN0Ijo0NjEsInBhcnNl LXVuaXQiOjQ2MywicGljay1ieS1hbGlhcyI6NDY3LHJlZ2w6NTAxLCJ0by1w eCI6NTM4LCJ0eXBlZGFycmF5LXBvb2wiOjU0NH1dLDMyMDpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9pcy1pbXBsZW1l bnRlZCIpKCk/V2Vha01hcDp0KCIuL3BvbHlmaWxsIil9LHsiLi9pcy1pbXBs ZW1lbnRlZCI6MzIxLCIuL3BvbHlmaWxsIjozMjN9XSwzMjE6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFy IHQsZTtpZigiZnVuY3Rpb24iIT10eXBlb2YgV2Vha01hcClyZXR1cm4hMTt0 cnl7dD1uZXcgV2Vha01hcChbW2U9e30sIm9uZSJdLFt7fSwidHdvIl0sW3t9 LCJ0aHJlZSJdXSl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuIltvYmplY3Qg V2Vha01hcF0iPT09U3RyaW5nKHQpJiYoImZ1bmN0aW9uIj09dHlwZW9mIHQu c2V0JiYodC5zZXQoe30sMSk9PT10JiYoImZ1bmN0aW9uIj09dHlwZW9mIHQu ZGVsZXRlJiYoImZ1bmN0aW9uIj09dHlwZW9mIHQuaGFzJiYib25lIj09PXQu Z2V0KGUpKSkpKX19LHt9XSwzMjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBXZWFrTWFwJiYi W29iamVjdCBXZWFrTWFwXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5n LmNhbGwobmV3IFdlYWtNYXApfSx7fV0sMzIzOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuLGE9dCgiZXM1LWV4dC9vYmplY3QvaXMtdmFs dWUiKSxpPXQoImVzNS1leHQvb2JqZWN0L3NldC1wcm90b3R5cGUtb2YiKSxv PXQoImVzNS1leHQvb2JqZWN0L3ZhbGlkLW9iamVjdCIpLHM9dCgiZXM1LWV4 dC9vYmplY3QvdmFsaWQtdmFsdWUiKSxsPXQoImVzNS1leHQvc3RyaW5nL3Jh bmRvbS11bmlxIiksYz10KCJkIiksdT10KCJlczYtaXRlcmF0b3IvZ2V0Iiks aD10KCJlczYtaXRlcmF0b3IvZm9yLW9mIiksZj10KCJlczYtc3ltYm9sIiku dG9TdHJpbmdUYWcscD10KCIuL2lzLW5hdGl2ZS1pbXBsZW1lbnRlZCIpLGQ9 QXJyYXkuaXNBcnJheSxnPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSx2PU9iamVj dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbT1PYmplY3QuZ2V0UHJvdG90 eXBlT2Y7ZS5leHBvcnRzPW49ZnVuY3Rpb24oKXt2YXIgdCxlPWFyZ3VtZW50 c1swXTtpZighKHRoaXMgaW5zdGFuY2VvZiBuKSl0aHJvdyBuZXcgVHlwZUVy cm9yKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyIpO3JldHVybiB0PXAm JmkmJldlYWtNYXAhPT1uP2kobmV3IFdlYWtNYXAsbSh0aGlzKSk6dGhpcyxh KGUpJiYoZChlKXx8KGU9dShlKSkpLGcodCwiX193ZWFrTWFwRGF0YV9fIixj KCJjIiwiJHdlYWtNYXAkIitsKCkpKSxlPyhoKGUsZnVuY3Rpb24oZSl7cyhl KSx0LnNldChlWzBdLGVbMV0pfSksdCk6dH0scCYmKGkmJmkobixXZWFrTWFw KSxuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFdlYWtNYXAucHJvdG90eXBl LHtjb25zdHJ1Y3RvcjpjKG4pfSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVz KG4ucHJvdG90eXBlLHtkZWxldGU6YyhmdW5jdGlvbih0KXtyZXR1cm4hIXYu Y2FsbChvKHQpLHRoaXMuX193ZWFrTWFwRGF0YV9fKSYmKGRlbGV0ZSB0W3Ro aXMuX193ZWFrTWFwRGF0YV9fXSwhMCl9KSxnZXQ6YyhmdW5jdGlvbih0KXtp Zih2LmNhbGwobyh0KSx0aGlzLl9fd2Vha01hcERhdGFfXykpcmV0dXJuIHRb dGhpcy5fX3dlYWtNYXBEYXRhX19dfSksaGFzOmMoZnVuY3Rpb24odCl7cmV0 dXJuIHYuY2FsbChvKHQpLHRoaXMuX193ZWFrTWFwRGF0YV9fKX0pLHNldDpj KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGcobyh0KSx0aGlzLl9fd2Vha01hcERh dGFfXyxjKCJjIixlKSksdGhpc30pLHRvU3RyaW5nOmMoZnVuY3Rpb24oKXty ZXR1cm4iW29iamVjdCBXZWFrTWFwXSJ9KX0pLGcobi5wcm90b3R5cGUsZixj KCJjIiwiV2Vha01hcCIpKX0seyIuL2lzLW5hdGl2ZS1pbXBsZW1lbnRlZCI6 MzIyLGQ6MTUzLCJlczUtZXh0L29iamVjdC9pcy12YWx1ZSI6MTk3LCJlczUt ZXh0L29iamVjdC9zZXQtcHJvdG90eXBlLW9mIjoyMDMsImVzNS1leHQvb2Jq ZWN0L3ZhbGlkLW9iamVjdCI6MjA3LCJlczUtZXh0L29iamVjdC92YWxpZC12 YWx1ZSI6MjA4LCJlczUtZXh0L3N0cmluZy9yYW5kb20tdW5pcSI6MjEzLCJl czYtaXRlcmF0b3IvZm9yLW9mIjoyMTUsImVzNi1pdGVyYXRvci9nZXQiOjIx NiwiZXM2LXN5bWJvbCI6MjIyfV0sMzI0OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIm5kYXJyYXkiKSxhPXQoIm5kYXJyYXktb3Bz IiksaT10KCJ0eXBlZGFycmF5LXBvb2wiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7aWYoYXJndW1lbnRzLmxlbmd0aDw9MSl0aHJvdyBuZXcgRXJyb3IoImds LXRleHR1cmUyZDogTWlzc2luZyBhcmd1bWVudHMgZm9yIHRleHR1cmUyZCBj b25zdHJ1Y3RvciIpO298fGZ1bmN0aW9uKHQpe289W3QuTElORUFSLHQuTkVB UkVTVF9NSVBNQVBfTElORUFSLHQuTElORUFSX01JUE1BUF9ORUFSRVNULHQu TElORUFSX01JUE1BUF9ORUFSRVNUXSxzPVt0Lk5FQVJFU1QsdC5MSU5FQVIs dC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULHQuTkVBUkVTVF9NSVBNQVBfTElO RUFSLHQuTElORUFSX01JUE1BUF9ORUFSRVNULHQuTElORUFSX01JUE1BUF9M SU5FQVJdLGw9W3QuUkVQRUFULHQuQ0xBTVBfVE9fRURHRSx0Lk1JUlJPUkVE X1JFUEVBVF19KHQpO2lmKCJudW1iZXIiPT10eXBlb2YgYXJndW1lbnRzWzFd KXJldHVybiB2KHQsYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSxhcmd1bWVu dHNbM118fHQuUkdCQSxhcmd1bWVudHNbNF18fHQuVU5TSUdORURfQllURSk7 aWYoQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMV0pKXJldHVybiB2KHQsMHxh cmd1bWVudHNbMV1bMF0sMHxhcmd1bWVudHNbMV1bMV0sYXJndW1lbnRzWzJd fHx0LlJHQkEsYXJndW1lbnRzWzNdfHx0LlVOU0lHTkVEX0JZVEUpO2lmKCJv YmplY3QiPT10eXBlb2YgYXJndW1lbnRzWzFdKXt2YXIgZT1hcmd1bWVudHNb MV0scj1jKGUpP2U6ZS5yYXc7aWYocilyZXR1cm4gZnVuY3Rpb24odCxlLHIs bixhLGkpe3ZhciBvPWcodCk7cmV0dXJuIHQudGV4SW1hZ2UyRCh0LlRFWFRV UkVfMkQsMCxhLGEsaSxlKSxuZXcgZih0LG8scixuLGEsaSl9KHQsciwwfGUu d2lkdGgsMHxlLmhlaWdodCxhcmd1bWVudHNbMl18fHQuUkdCQSxhcmd1bWVu dHNbM118fHQuVU5TSUdORURfQllURSk7aWYoZS5zaGFwZSYmZS5kYXRhJiZl LnN0cmlkZSlyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj1lLmR0eXBlLG89 ZS5zaGFwZS5zbGljZSgpLHM9dC5nZXRQYXJhbWV0ZXIodC5NQVhfVEVYVFVS RV9TSVpFKTtpZihvWzBdPDB8fG9bMF0+c3x8b1sxXTwwfHxvWzFdPnMpdGhy b3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgdGV4dHVyZSBz aXplIik7dmFyIGw9ZChvLGUuc3RyaWRlLnNsaWNlKCkpLGM9MDsiZmxvYXQz MiI9PT1yP2M9dC5GTE9BVDoiZmxvYXQ2NCI9PT1yPyhjPXQuRkxPQVQsbD0h MSxyPSJmbG9hdDMyIik6InVpbnQ4Ij09PXI/Yz10LlVOU0lHTkVEX0JZVEU6 KGM9dC5VTlNJR05FRF9CWVRFLGw9ITEscj0idWludDgiKTt2YXIgaCxwLHY9 MDtpZigyPT09by5sZW5ndGgpdj10LkxVTUlOQU5DRSxvPVtvWzBdLG9bMV0s MV0sZT1uKGUuZGF0YSxvLFtlLnN0cmlkZVswXSxlLnN0cmlkZVsxXSwxXSxl Lm9mZnNldCk7ZWxzZXtpZigzIT09by5sZW5ndGgpdGhyb3cgbmV3IEVycm9y KCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgc2hhcGUgZm9yIHRleHR1cmUiKTtp ZigxPT09b1syXSl2PXQuQUxQSEE7ZWxzZSBpZigyPT09b1syXSl2PXQuTFVN SU5BTkNFX0FMUEhBO2Vsc2UgaWYoMz09PW9bMl0pdj10LlJHQjtlbHNle2lm KDQhPT1vWzJdKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZh bGlkIHNoYXBlIGZvciBwaXhlbCBjb29yZHMiKTt2PXQuUkdCQX19YyE9PXQu RkxPQVR8fHQuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdCIpfHwo Yz10LlVOU0lHTkVEX0JZVEUsbD0hMSk7dmFyIG09ZS5zaXplO2lmKGwpaD0w PT09ZS5vZmZzZXQmJmUuZGF0YS5sZW5ndGg9PT1tP2UuZGF0YTplLmRhdGEu c3ViYXJyYXkoZS5vZmZzZXQsZS5vZmZzZXQrbSk7ZWxzZXt2YXIgeT1bb1sy XSxvWzJdKm9bMF0sMV07cD1pLm1hbGxvYyhtLHIpO3ZhciB4PW4ocCxvLHks MCk7ImZsb2F0MzIiIT09ciYmImZsb2F0NjQiIT09cnx8YyE9PXQuVU5TSUdO RURfQllURT9hLmFzc2lnbih4LGUpOnUoeCxlKSxoPXAuc3ViYXJyYXkoMCxt KX12YXIgYj1nKHQpO3QudGV4SW1hZ2UyRCh0LlRFWFRVUkVfMkQsMCx2LG9b MF0sb1sxXSwwLHYsYyxoKSxsfHxpLmZyZWUocCk7cmV0dXJuIG5ldyBmKHQs YixvWzBdLG9bMV0sdixjKX0odCxlKX10aHJvdyBuZXcgRXJyb3IoImdsLXRl eHR1cmUyZDogSW52YWxpZCBhcmd1bWVudHMgZm9yIHRleHR1cmUyZCBjb25z dHJ1Y3RvciIpfTt2YXIgbz1udWxsLHM9bnVsbCxsPW51bGw7ZnVuY3Rpb24g Yyh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVt ZW50JiZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fCJ1bmRlZmlu ZWQiIT10eXBlb2YgSFRNTEltYWdlRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhU TUxJbWFnZUVsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTFZpZGVv RWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnR8fCJ1bmRl ZmluZWQiIT10eXBlb2YgSW1hZ2VEYXRhJiZ0IGluc3RhbmNlb2YgSW1hZ2VE YXRhfXZhciB1PWZ1bmN0aW9uKHQsZSl7YS5tdWxzKHQsZSwyNTUpfTtmdW5j dGlvbiBoKHQsZSxyKXt2YXIgbj10LmdsLGE9bi5nZXRQYXJhbWV0ZXIobi5N QVhfVEVYVFVSRV9TSVpFKTtpZihlPDB8fGU+YXx8cjwwfHxyPmEpdGhyb3cg bmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgdGV4dHVyZSBzaXpl Iik7cmV0dXJuIHQuX3NoYXBlPVtlLHJdLHQuYmluZCgpLG4udGV4SW1hZ2Uy RChuLlRFWFRVUkVfMkQsMCx0LmZvcm1hdCxlLHIsMCx0LmZvcm1hdCx0LnR5 cGUsbnVsbCksdC5fbWlwTGV2ZWxzPVswXSx0fWZ1bmN0aW9uIGYodCxlLHIs bixhLGkpe3RoaXMuZ2w9dCx0aGlzLmhhbmRsZT1lLHRoaXMuZm9ybWF0PWEs dGhpcy50eXBlPWksdGhpcy5fc2hhcGU9W3Isbl0sdGhpcy5fbWlwTGV2ZWxz PVswXSx0aGlzLl9tYWdGaWx0ZXI9dC5ORUFSRVNULHRoaXMuX21pbkZpbHRl cj10Lk5FQVJFU1QsdGhpcy5fd3JhcFM9dC5DTEFNUF9UT19FREdFLHRoaXMu X3dyYXBUPXQuQ0xBTVBfVE9fRURHRSx0aGlzLl9hbmlzb1NhbXBsZXM9MTt2 YXIgbz10aGlzLHM9W3RoaXMuX3dyYXBTLHRoaXMuX3dyYXBUXTtPYmplY3Qu ZGVmaW5lUHJvcGVydGllcyhzLFt7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8u X3dyYXBTfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG8ud3JhcFM9dH19LHtn ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5fd3JhcFR9LHNldDpmdW5jdGlvbih0 KXtyZXR1cm4gby53cmFwVD10fX1dKSx0aGlzLl93cmFwVmVjdG9yPXM7dmFy IGw9W3RoaXMuX3NoYXBlWzBdLHRoaXMuX3NoYXBlWzFdXTtPYmplY3QuZGVm aW5lUHJvcGVydGllcyhsLFt7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uX3No YXBlWzBdfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG8ud2lkdGg9dH19LHtn ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5fc2hhcGVbMV19LHNldDpmdW5jdGlv bih0KXtyZXR1cm4gby5oZWlnaHQ9dH19XSksdGhpcy5fc2hhcGVWZWN0b3I9 bH12YXIgcD1mLnByb3RvdHlwZTtmdW5jdGlvbiBkKHQsZSl7cmV0dXJuIDM9 PT10Lmxlbmd0aD8xPT09ZVsyXSYmZVsxXT09PXRbMF0qdFsyXSYmZVswXT09 PXRbMl06MT09PWVbMF0mJmVbMV09PT10WzBdfWZ1bmN0aW9uIGcodCl7dmFy IGU9dC5jcmVhdGVUZXh0dXJlKCk7cmV0dXJuIHQuYmluZFRleHR1cmUodC5U RVhUVVJFXzJELGUpLHQudGV4UGFyYW1ldGVyaSh0LlRFWFRVUkVfMkQsdC5U RVhUVVJFX01JTl9GSUxURVIsdC5ORUFSRVNUKSx0LnRleFBhcmFtZXRlcmko dC5URVhUVVJFXzJELHQuVEVYVFVSRV9NQUdfRklMVEVSLHQuTkVBUkVTVCks dC50ZXhQYXJhbWV0ZXJpKHQuVEVYVFVSRV8yRCx0LlRFWFRVUkVfV1JBUF9T LHQuQ0xBTVBfVE9fRURHRSksdC50ZXhQYXJhbWV0ZXJpKHQuVEVYVFVSRV8y RCx0LlRFWFRVUkVfV1JBUF9ULHQuQ0xBTVBfVE9fRURHRSksZX1mdW5jdGlv biB2KHQsZSxyLG4sYSl7dmFyIGk9dC5nZXRQYXJhbWV0ZXIodC5NQVhfVEVY VFVSRV9TSVpFKTtpZihlPDB8fGU+aXx8cjwwfHxyPmkpdGhyb3cgbmV3IEVy cm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgdGV4dHVyZSBzaGFwZSIpO2lm KGE9PT10LkZMT0FUJiYhdC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2Zs b2F0IikpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEZsb2F0aW5n IHBvaW50IHRleHR1cmVzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9y bSIpO3ZhciBvPWcodCk7cmV0dXJuIHQudGV4SW1hZ2UyRCh0LlRFWFRVUkVf MkQsMCxuLGUsciwwLG4sYSxudWxsKSxuZXcgZih0LG8sZSxyLG4sYSl9T2Jq ZWN0LmRlZmluZVByb3BlcnRpZXMocCx7bWluRmlsdGVyOntnZXQ6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fbWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7 dGhpcy5iaW5kKCk7dmFyIGU9dGhpcy5nbDtpZih0aGlzLnR5cGU9PT1lLkZM T0FUJiZvLmluZGV4T2YodCk+PTAmJihlLmdldEV4dGVuc2lvbigiT0VTX3Rl eHR1cmVfZmxvYXRfbGluZWFyIil8fCh0PWUuTkVBUkVTVCkpLHMuaW5kZXhP Zih0KTwwKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBVbmtub3du IGZpbHRlciBtb2RlICIrdCk7cmV0dXJuIGUudGV4UGFyYW1ldGVyaShlLlRF WFRVUkVfMkQsZS5URVhUVVJFX01JTl9GSUxURVIsdCksdGhpcy5fbWluRmls dGVyPXR9fSxtYWdGaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz Ll9tYWdGaWx0ZXJ9LHNldDpmdW5jdGlvbih0KXt0aGlzLmJpbmQoKTt2YXIg ZT10aGlzLmdsO2lmKHRoaXMudHlwZT09PWUuRkxPQVQmJm8uaW5kZXhPZih0 KT49MCYmKGUuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5l YXIiKXx8KHQ9ZS5ORUFSRVNUKSkscy5pbmRleE9mKHQpPDApdGhyb3cgbmV3 IEVycm9yKCJnbC10ZXh0dXJlMmQ6IFVua25vd24gZmlsdGVyIG1vZGUgIit0 KTtyZXR1cm4gZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRV UkVfTUFHX0ZJTFRFUix0KSx0aGlzLl9tYWdGaWx0ZXI9dH19LG1pcFNhbXBs ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbmlzb1NhbXBsZXN9 LHNldDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9hbmlzb1NhbXBsZXM7aWYo dGhpcy5fYW5pc29TYW1wbGVzPTB8TWF0aC5tYXgodCwxKSxlIT09dGhpcy5f YW5pc29TYW1wbGVzKXt2YXIgcj10aGlzLmdsLmdldEV4dGVuc2lvbigiRVhU X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7ciYmdGhpcy5nbC50ZXhQ YXJhbWV0ZXJmKHRoaXMuZ2wuVEVYVFVSRV8yRCxyLlRFWFRVUkVfTUFYX0FO SVNPVFJPUFlfRVhULHRoaXMuX2FuaXNvU2FtcGxlcyl9cmV0dXJuIHRoaXMu X2FuaXNvU2FtcGxlc319LHdyYXBTOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fd3JhcFN9LHNldDpmdW5jdGlvbih0KXtpZih0aGlzLmJpbmQoKSxs LmluZGV4T2YodCk8MCl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDog VW5rbm93biB3cmFwIG1vZGUgIit0KTtyZXR1cm4gdGhpcy5nbC50ZXhQYXJh bWV0ZXJpKHRoaXMuZ2wuVEVYVFVSRV8yRCx0aGlzLmdsLlRFWFRVUkVfV1JB UF9TLHQpLHRoaXMuX3dyYXBTPXR9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX3dyYXBUfSxzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5i aW5kKCksbC5pbmRleE9mKHQpPDApdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0 dXJlMmQ6IFVua25vd24gd3JhcCBtb2RlICIrdCk7cmV0dXJuIHRoaXMuZ2wu dGV4UGFyYW1ldGVyaSh0aGlzLmdsLlRFWFRVUkVfMkQsdGhpcy5nbC5URVhU VVJFX1dSQVBfVCx0KSx0aGlzLl93cmFwVD10fX0sd3JhcDp7Z2V0OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3dyYXBWZWN0b3J9LHNldDpmdW5jdGlvbih0 KXtpZihBcnJheS5pc0FycmF5KHQpfHwodD1bdCx0XSksMiE9PXQubGVuZ3Ro KXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBNdXN0IHNwZWNpZnkg d3JhcCBtb2RlIGZvciByb3dzIGFuZCBjb2x1bW5zIik7Zm9yKHZhciBlPTA7 ZTwyOysrZSlpZihsLmluZGV4T2YodFtlXSk8MCl0aHJvdyBuZXcgRXJyb3Io ImdsLXRleHR1cmUyZDogVW5rbm93biB3cmFwIG1vZGUgIit0KTt0aGlzLl93 cmFwUz10WzBdLHRoaXMuX3dyYXBUPXRbMV07dmFyIHI9dGhpcy5nbDtyZXR1 cm4gdGhpcy5iaW5kKCksci50ZXhQYXJhbWV0ZXJpKHIuVEVYVFVSRV8yRCxy LlRFWFRVUkVfV1JBUF9TLHRoaXMuX3dyYXBTKSxyLnRleFBhcmFtZXRlcmko ci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1QsdGhpcy5fd3JhcFQpLHR9 fSxzaGFwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NoYXBlVmVj dG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7aWYo MiE9PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJ bnZhbGlkIHRleHR1cmUgc2hhcGUiKX1lbHNlIHQ9WzB8dCwwfHRdO3JldHVy biBoKHRoaXMsMHx0WzBdLDB8dFsxXSksWzB8dFswXSwwfHRbMV1dfX0sd2lk dGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaGFwZVswXX0sc2V0 OmZ1bmN0aW9uKHQpe3JldHVybiBoKHRoaXMsdHw9MCx0aGlzLl9zaGFwZVsx XSksdH19LGhlaWdodDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3No YXBlWzFdfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR8PTAsaCh0aGlzLHRo aXMuX3NoYXBlWzBdLHQpLHR9fX0pLHAuYmluZD1mdW5jdGlvbih0KXt2YXIg ZT10aGlzLmdsO3JldHVybiB2b2lkIDAhPT10JiZlLmFjdGl2ZVRleHR1cmUo ZS5URVhUVVJFMCsoMHx0KSksZS5iaW5kVGV4dHVyZShlLlRFWFRVUkVfMkQs dGhpcy5oYW5kbGUpLHZvaWQgMCE9PXQ/MHx0OmUuZ2V0UGFyYW1ldGVyKGUu QUNUSVZFX1RFWFRVUkUpLWUuVEVYVFVSRTB9LHAuZGlzcG9zZT1mdW5jdGlv bigpe3RoaXMuZ2wuZGVsZXRlVGV4dHVyZSh0aGlzLmhhbmRsZSl9LHAuZ2Vu ZXJhdGVNaXBtYXA9ZnVuY3Rpb24oKXt0aGlzLmJpbmQoKSx0aGlzLmdsLmdl bmVyYXRlTWlwbWFwKHRoaXMuZ2wuVEVYVFVSRV8yRCk7Zm9yKHZhciB0PU1h dGgubWluKHRoaXMuX3NoYXBlWzBdLHRoaXMuX3NoYXBlWzFdKSxlPTA7dD4w OysrZSx0Pj4+PTEpdGhpcy5fbWlwTGV2ZWxzLmluZGV4T2YoZSk8MCYmdGhp cy5fbWlwTGV2ZWxzLnB1c2goZSl9LHAuc2V0UGl4ZWxzPWZ1bmN0aW9uKHQs ZSxyLG8pe3ZhciBzPXRoaXMuZ2w7dGhpcy5iaW5kKCksQXJyYXkuaXNBcnJh eShlKT8obz1yLHI9MHxlWzFdLGU9MHxlWzBdKTooZT1lfHwwLHI9cnx8MCks bz1vfHwwO3ZhciBsPWModCk/dDp0LnJhdztpZihsKXt0aGlzLl9taXBMZXZl bHMuaW5kZXhPZihvKTwwPyhzLnRleEltYWdlMkQocy5URVhUVVJFXzJELDAs dGhpcy5mb3JtYXQsdGhpcy5mb3JtYXQsdGhpcy50eXBlLGwpLHRoaXMuX21p cExldmVscy5wdXNoKG8pKTpzLnRleFN1YkltYWdlMkQocy5URVhUVVJFXzJE LG8sZSxyLHRoaXMuZm9ybWF0LHRoaXMudHlwZSxsKX1lbHNle2lmKCEodC5z aGFwZSYmdC5zdHJpZGUmJnQuZGF0YSkpdGhyb3cgbmV3IEVycm9yKCJnbC10 ZXh0dXJlMmQ6IFVuc3VwcG9ydGVkIGRhdGEgdHlwZSIpO2lmKHQuc2hhcGUu bGVuZ3RoPDJ8fGUrdC5zaGFwZVsxXT50aGlzLl9zaGFwZVsxXT4+Pm98fHIr dC5zaGFwZVswXT50aGlzLl9zaGFwZVswXT4+Pm98fGU8MHx8cjwwKXRocm93 IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBUZXh0dXJlIGRpbWVuc2lvbnMg YXJlIG91dCBvZiBib3VuZHMiKTshZnVuY3Rpb24odCxlLHIsbyxzLGwsYyxo KXt2YXIgZj1oLmR0eXBlLHA9aC5zaGFwZS5zbGljZSgpO2lmKHAubGVuZ3Ro PDJ8fHAubGVuZ3RoPjMpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6 IEludmFsaWQgbmRhcnJheSwgbXVzdCBiZSAyZCBvciAzZCIpO3ZhciBnPTAs dj0wLG09ZChwLGguc3RyaWRlLnNsaWNlKCkpOyJmbG9hdDMyIj09PWY/Zz10 LkZMT0FUOiJmbG9hdDY0Ij09PWY/KGc9dC5GTE9BVCxtPSExLGY9ImZsb2F0 MzIiKToidWludDgiPT09Zj9nPXQuVU5TSUdORURfQllURTooZz10LlVOU0lH TkVEX0JZVEUsbT0hMSxmPSJ1aW50OCIpO2lmKDI9PT1wLmxlbmd0aCl2PXQu TFVNSU5BTkNFLHA9W3BbMF0scFsxXSwxXSxoPW4oaC5kYXRhLHAsW2guc3Ry aWRlWzBdLGguc3RyaWRlWzFdLDFdLGgub2Zmc2V0KTtlbHNle2lmKDMhPT1w Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxp ZCBzaGFwZSBmb3IgdGV4dHVyZSIpO2lmKDE9PT1wWzJdKXY9dC5BTFBIQTtl bHNlIGlmKDI9PT1wWzJdKXY9dC5MVU1JTkFOQ0VfQUxQSEE7ZWxzZSBpZigz PT09cFsyXSl2PXQuUkdCO2Vsc2V7aWYoNCE9PXBbMl0pdGhyb3cgbmV3IEVy cm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgc2hhcGUgZm9yIHBpeGVsIGNv b3JkcyIpO3Y9dC5SR0JBfXBbMl19diE9PXQuTFVNSU5BTkNFJiZ2IT09dC5B TFBIQXx8cyE9PXQuTFVNSU5BTkNFJiZzIT09dC5BTFBIQXx8KHY9cyk7aWYo diE9PXMpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEluY29tcGF0 aWJsZSB0ZXh0dXJlIGZvcm1hdCBmb3Igc2V0UGl4ZWxzIik7dmFyIHk9aC5z aXplLHg9Yy5pbmRleE9mKG8pPDA7eCYmYy5wdXNoKG8pO2lmKGc9PT1sJiZt KTA9PT1oLm9mZnNldCYmaC5kYXRhLmxlbmd0aD09PXk/eD90LnRleEltYWdl MkQodC5URVhUVVJFXzJELG8scyxwWzBdLHBbMV0sMCxzLGwsaC5kYXRhKTp0 LnRleFN1YkltYWdlMkQodC5URVhUVVJFXzJELG8sZSxyLHBbMF0scFsxXSxz LGwsaC5kYXRhKTp4P3QudGV4SW1hZ2UyRCh0LlRFWFRVUkVfMkQsbyxzLHBb MF0scFsxXSwwLHMsbCxoLmRhdGEuc3ViYXJyYXkoaC5vZmZzZXQsaC5vZmZz ZXQreSkpOnQudGV4U3ViSW1hZ2UyRCh0LlRFWFRVUkVfMkQsbyxlLHIscFsw XSxwWzFdLHMsbCxoLmRhdGEuc3ViYXJyYXkoaC5vZmZzZXQsaC5vZmZzZXQr eSkpO2Vsc2V7dmFyIGI7Yj1sPT09dC5GTE9BVD9pLm1hbGxvY0Zsb2F0MzIo eSk6aS5tYWxsb2NVaW50OCh5KTt2YXIgXz1uKGIscCxbcFsyXSxwWzJdKnBb MF0sMV0pO2c9PT10LkZMT0FUJiZsPT09dC5VTlNJR05FRF9CWVRFP3UoXyxo KTphLmFzc2lnbihfLGgpLHg/dC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCxv LHMscFswXSxwWzFdLDAscyxsLGIuc3ViYXJyYXkoMCx5KSk6dC50ZXhTdWJJ bWFnZTJEKHQuVEVYVFVSRV8yRCxvLGUscixwWzBdLHBbMV0scyxsLGIuc3Vi YXJyYXkoMCx5KSksbD09PXQuRkxPQVQ/aS5mcmVlRmxvYXQzMihiKTppLmZy ZWVVaW50OChiKX19KHMsZSxyLG8sdGhpcy5mb3JtYXQsdGhpcy50eXBlLHRo aXMuX21pcExldmVscyx0KX19fSx7bmRhcnJheTo0NTIsIm5kYXJyYXktb3Bz Ijo0NDYsInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sMzI1OltmdW5jdGlvbih0 LGUscil7KGZ1bmN0aW9uKHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJwaWNr LWJ5LWFsaWFzIik7ZnVuY3Rpb24gYSh0KXtpZih0LmNvbnRhaW5lcilpZih0 LmNvbnRhaW5lcj09ZG9jdW1lbnQuYm9keSlkb2N1bWVudC5ib2R5LnN0eWxl LndpZHRofHwodC5jYW52YXMud2lkdGg9dC53aWR0aHx8dC5waXhlbFJhdGlv KnIuaW5uZXJXaWR0aCksZG9jdW1lbnQuYm9keS5zdHlsZS5oZWlnaHR8fCh0 LmNhbnZhcy5oZWlnaHQ9dC5oZWlnaHR8fHQucGl4ZWxSYXRpbypyLmlubmVy SGVpZ2h0KTtlbHNle3ZhciBlPXQuY29udGFpbmVyLmdldEJvdW5kaW5nQ2xp ZW50UmVjdCgpO3QuY2FudmFzLndpZHRoPXQud2lkdGh8fGUucmlnaHQtZS5s ZWZ0LHQuY2FudmFzLmhlaWdodD10LmhlaWdodHx8ZS5ib3R0b20tZS50b3B9 fWZ1bmN0aW9uIGkodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0 Q29udGV4dCYmIndpZHRoImluIHQmJiJoZWlnaHQiaW4gdH1mdW5jdGlvbiBv KCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0 dXJuIHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0LnN0eWxlLnRvcD0w LHQuc3R5bGUubGVmdD0wLHR9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBl O2lmKHQ/InN0cmluZyI9PXR5cGVvZiB0JiYodD17Y29udGFpbmVyOnR9KTp0 PXt9LGkodCk/dD17Y29udGFpbmVyOnR9OnQ9InN0cmluZyI9PXR5cGVvZihl PXQpLm5vZGVOYW1lJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5hcHBlbmRDaGls ZCYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0 P3tjb250YWluZXI6dH06ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09 dHlwZW9mIHQuZHJhd0FycmF5c3x8ImZ1bmN0aW9uIj09dHlwZW9mIHQuZHJh d0VsZW1lbnRzfSh0KT97Z2w6dH06bih0LHtjb250YWluZXI6ImNvbnRhaW5l ciB0YXJnZXQgZWxlbWVudCBlbCBjYW52YXMgaG9sZGVyIHBhcmVudCBwYXJl bnROb2RlIHdyYXBwZXIgdXNlIHJlZiByb290IG5vZGUiLGdsOiJnbCBjb250 ZXh0IHdlYmdsIGdsQ29udGV4dCIsYXR0cnM6ImF0dHJpYnV0ZXMgYXR0cnMg Y29udGV4dEF0dHJpYnV0ZXMiLHBpeGVsUmF0aW86InBpeGVsUmF0aW8gcHhS YXRpbyBweCByYXRpbyBweHJhdGlvIHBpeGVscmF0aW8iLHdpZHRoOiJ3IHdp ZHRoIixoZWlnaHQ6ImggaGVpZ2h0In0sITApLHQucGl4ZWxSYXRpb3x8KHQu cGl4ZWxSYXRpbz1yLnBpeGVsUmF0aW98fDEpLHQuZ2wpcmV0dXJuIHQuZ2w7 aWYodC5jYW52YXMmJih0LmNvbnRhaW5lcj10LmNhbnZhcy5wYXJlbnROb2Rl KSx0LmNvbnRhaW5lcil7aWYoInN0cmluZyI9PXR5cGVvZiB0LmNvbnRhaW5l cil7dmFyIHM9ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0LmNvbnRhaW5lcik7 aWYoIXMpdGhyb3cgRXJyb3IoIkVsZW1lbnQgIit0LmNvbnRhaW5lcisiIGlz IG5vdCBmb3VuZCIpO3QuY29udGFpbmVyPXN9aSh0LmNvbnRhaW5lcik/KHQu Y2FudmFzPXQuY29udGFpbmVyLHQuY29udGFpbmVyPXQuY2FudmFzLnBhcmVu dE5vZGUpOnQuY2FudmFzfHwodC5jYW52YXM9bygpLHQuY29udGFpbmVyLmFw cGVuZENoaWxkKHQuY2FudmFzKSxhKHQpKX1lbHNlIGlmKCF0LmNhbnZhcyl7 aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudCl0aHJvdyBFcnJvcigi Tm90IERPTSBlbnZpcm9ubWVudC4gVXNlIGhlYWRsZXNzLWdsLiIpO3QuY29u dGFpbmVyPWRvY3VtZW50LmJvZHl8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVu dCx0LmNhbnZhcz1vKCksdC5jb250YWluZXIuYXBwZW5kQ2hpbGQodC5jYW52 YXMpLGEodCl9aWYoIXQuZ2wpdHJ5e3QuZ2w9dC5jYW52YXMuZ2V0Q29udGV4 dCgid2ViZ2wiLHQuYXR0cnMpfWNhdGNoKGUpe3RyeXt0LmdsPXQuY2FudmFz LmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIsdC5hdHRycyl9Y2F0 Y2goZSl7dC5nbD10LmNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbC1leHBlcmlt ZW50YWwiLHQuYXR0cnMpfX1yZXR1cm4gdC5nbH19KS5jYWxsKHRoaXMsInVu ZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10 eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dp bmRvdzp7fSl9LHsicGljay1ieS1hbGlhcyI6NDY3fV0sMzI2OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cil7ZT9lLmJpbmQoKTp0LmJpbmRCdWZmZXIodC5FTEVNRU5UX0FSUkFZX0JV RkZFUixudWxsKTt2YXIgbj0wfHQuZ2V0UGFyYW1ldGVyKHQuTUFYX1ZFUlRF WF9BVFRSSUJTKTtpZihyKXtpZihyLmxlbmd0aD5uKXRocm93IG5ldyBFcnJv cigiZ2wtdmFvOiBUb28gbWFueSB2ZXJ0ZXggYXR0cmlidXRlcyIpO2Zvcih2 YXIgYT0wO2E8ci5sZW5ndGg7KythKXt2YXIgaT1yW2FdO2lmKGkuYnVmZmVy KXt2YXIgbz1pLmJ1ZmZlcixzPWkuc2l6ZXx8NCxsPWkudHlwZXx8dC5GTE9B VCxjPSEhaS5ub3JtYWxpemVkLHU9aS5zdHJpZGV8fDAsaD1pLm9mZnNldHx8 MDtvLmJpbmQoKSx0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGEpLHQudmVy dGV4QXR0cmliUG9pbnRlcihhLHMsbCxjLHUsaCl9ZWxzZXtpZigibnVtYmVy Ij09dHlwZW9mIGkpdC52ZXJ0ZXhBdHRyaWIxZihhLGkpO2Vsc2UgaWYoMT09 PWkubGVuZ3RoKXQudmVydGV4QXR0cmliMWYoYSxpWzBdKTtlbHNlIGlmKDI9 PT1pLmxlbmd0aCl0LnZlcnRleEF0dHJpYjJmKGEsaVswXSxpWzFdKTtlbHNl IGlmKDM9PT1pLmxlbmd0aCl0LnZlcnRleEF0dHJpYjNmKGEsaVswXSxpWzFd LGlbMl0pO2Vsc2V7aWYoNCE9PWkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigi Z2wtdmFvOiBJbnZhbGlkIHZlcnRleCBhdHRyaWJ1dGUiKTt0LnZlcnRleEF0 dHJpYjRmKGEsaVswXSxpWzFdLGlbMl0saVszXSl9dC5kaXNhYmxlVmVydGV4 QXR0cmliQXJyYXkoYSl9fWZvcig7YTxuOysrYSl0LmRpc2FibGVWZXJ0ZXhB dHRyaWJBcnJheShhKX1lbHNlIGZvcih0LmJpbmRCdWZmZXIodC5BUlJBWV9C VUZGRVIsbnVsbCksYT0wO2E8bjsrK2EpdC5kaXNhYmxlVmVydGV4QXR0cmli QXJyYXkoYSl9fSx7fV0sMzI3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4vZG8tYmluZC5qcyIpO2Z1bmN0aW9uIGEodCl7dGhp cy5nbD10LHRoaXMuX2VsZW1lbnRzPW51bGwsdGhpcy5fYXR0cmlidXRlcz1u dWxsLHRoaXMuX2VsZW1lbnRzVHlwZT10LlVOU0lHTkVEX1NIT1JUfWEucHJv dG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXtuKHRoaXMuZ2wsdGhpcy5fZWxlbWVu dHMsdGhpcy5fYXR0cmlidXRlcyl9LGEucHJvdG90eXBlLnVwZGF0ZT1mdW5j dGlvbih0LGUscil7dGhpcy5fZWxlbWVudHM9ZSx0aGlzLl9hdHRyaWJ1dGVz PXQsdGhpcy5fZWxlbWVudHNUeXBlPXJ8fHRoaXMuZ2wuVU5TSUdORURfU0hP UlR9LGEucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9LGEucHJvdG90 eXBlLnVuYmluZD1mdW5jdGlvbigpe30sYS5wcm90b3R5cGUuZHJhdz1mdW5j dGlvbih0LGUscil7cj1yfHwwO3ZhciBuPXRoaXMuZ2w7dGhpcy5fZWxlbWVu dHM/bi5kcmF3RWxlbWVudHModCxlLHRoaXMuX2VsZW1lbnRzVHlwZSxyKTpu LmRyYXdBcnJheXModCxyLGUpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0 dXJuIG5ldyBhKHQpfX0seyIuL2RvLWJpbmQuanMiOjMyNn1dLDMyODpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2RvLWJpbmQu anMiKTtmdW5jdGlvbiBhKHQsZSxyLG4sYSxpKXt0aGlzLmxvY2F0aW9uPXQs dGhpcy5kaW1lbnNpb249ZSx0aGlzLmE9cix0aGlzLmI9bix0aGlzLmM9YSx0 aGlzLmQ9aX1mdW5jdGlvbiBpKHQsZSxyKXt0aGlzLmdsPXQsdGhpcy5fZXh0 PWUsdGhpcy5oYW5kbGU9cix0aGlzLl9hdHRyaWJzPVtdLHRoaXMuX3VzZUVs ZW1lbnRzPSExLHRoaXMuX2VsZW1lbnRzVHlwZT10LlVOU0lHTkVEX1NIT1JU fWEucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuZGlt ZW5zaW9uKXtjYXNlIDE6dC52ZXJ0ZXhBdHRyaWIxZih0aGlzLmxvY2F0aW9u LHRoaXMuYSk7YnJlYWs7Y2FzZSAyOnQudmVydGV4QXR0cmliMmYodGhpcy5s b2NhdGlvbix0aGlzLmEsdGhpcy5iKTticmVhaztjYXNlIDM6dC52ZXJ0ZXhB dHRyaWIzZih0aGlzLmxvY2F0aW9uLHRoaXMuYSx0aGlzLmIsdGhpcy5jKTti cmVhaztjYXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0Zih0aGlzLmxvY2F0aW9uLHRo aXMuYSx0aGlzLmIsdGhpcy5jLHRoaXMuZCl9fSxpLnByb3RvdHlwZS5iaW5k PWZ1bmN0aW9uKCl7dGhpcy5fZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh0aGlz LmhhbmRsZSk7Zm9yKHZhciB0PTA7dDx0aGlzLl9hdHRyaWJzLmxlbmd0aDsr K3QpdGhpcy5fYXR0cmlic1t0XS5iaW5kKHRoaXMuZ2wpfSxpLnByb3RvdHlw ZS51bmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLl9leHQuYmluZFZlcnRleEFycmF5 T0VTKG51bGwpfSxpLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhp cy5fZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHRoaXMuaGFuZGxlKX0saS5w cm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLmJpbmQo KSxuKHRoaXMuZ2wsZSx0KSx0aGlzLnVuYmluZCgpLHRoaXMuX2F0dHJpYnMu bGVuZ3RoPTAsdClmb3IodmFyIGk9MDtpPHQubGVuZ3RoOysraSl7dmFyIG89 dFtpXTsibnVtYmVyIj09dHlwZW9mIG8/dGhpcy5fYXR0cmlicy5wdXNoKG5l dyBhKGksMSxvKSk6QXJyYXkuaXNBcnJheShvKSYmdGhpcy5fYXR0cmlicy5w dXNoKG5ldyBhKGksby5sZW5ndGgsb1swXSxvWzFdLG9bMl0sb1szXSkpfXRo aXMuX3VzZUVsZW1lbnRzPSEhZSx0aGlzLl9lbGVtZW50c1R5cGU9cnx8dGhp cy5nbC5VTlNJR05FRF9TSE9SVH0saS5wcm90b3R5cGUuZHJhdz1mdW5jdGlv bih0LGUscil7cj1yfHwwO3ZhciBuPXRoaXMuZ2w7dGhpcy5fdXNlRWxlbWVu dHM/bi5kcmF3RWxlbWVudHModCxlLHRoaXMuX2VsZW1lbnRzVHlwZSxyKTpu LmRyYXdBcnJheXModCxyLGUpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXty ZXR1cm4gbmV3IGkodCxlLGUuY3JlYXRlVmVydGV4QXJyYXlPRVMoKSl9fSx7 Ii4vZG8tYmluZC5qcyI6MzI2fV0sMzI5OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL3Zhby1uYXRpdmUuanMiKSxhPXQo Ii4vbGliL3Zhby1lbXVsYXRlZC5qcyIpO2Z1bmN0aW9uIGkodCl7dGhpcy5i aW5kVmVydGV4QXJyYXlPRVM9dC5iaW5kVmVydGV4QXJyYXkuYmluZCh0KSx0 aGlzLmNyZWF0ZVZlcnRleEFycmF5T0VTPXQuY3JlYXRlVmVydGV4QXJyYXku YmluZCh0KSx0aGlzLmRlbGV0ZVZlcnRleEFycmF5T0VTPXQuZGVsZXRlVmVy dGV4QXJyYXkuYmluZCh0KX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7 dmFyIHMsbD10LmNyZWF0ZVZlcnRleEFycmF5P25ldyBpKHQpOnQuZ2V0RXh0 ZW5zaW9uKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpO3JldHVybihzPWw/ bih0LGwpOmEodCkpLnVwZGF0ZShlLHIsbyksc319LHsiLi9saWIvdmFvLWVt dWxhdGVkLmpzIjozMjcsIi4vbGliL3Zhby1uYXRpdmUuanMiOjMyOH1dLDMz MDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7 cmV0dXJuIHRbMF09ZVswXStyWzBdLHRbMV09ZVsxXStyWzFdLHRbMl09ZVsy XStyWzJdLHR9fSx7fV0sMzMxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0WzBdLHRbMV0sdFsyXSksbz1uKGVb MF0sZVsxXSxlWzJdKTthKHIsciksYShvLG8pO3ZhciBzPWkocixvKTtyZXR1 cm4gcz4xPzA6TWF0aC5hY29zKHMpfTt2YXIgbj10KCIuL2Zyb21WYWx1ZXMi KSxhPXQoIi4vbm9ybWFsaXplIiksaT10KCIuL2RvdCIpfSx7Ii4vZG90Ijoz NDEsIi4vZnJvbVZhbHVlcyI6MzQ3LCIuL25vcm1hbGl6ZSI6MzU4fV0sMzMy OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHRbMF09TWF0aC5jZWlsKGVbMF0pLHRbMV09TWF0aC5jZWlsKGVbMV0p LHRbMl09TWF0aC5jZWlsKGVbMl0pLHR9fSx7fV0sMzMzOltmdW5jdGlvbih0 LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBGbG9hdDMy QXJyYXkoMyk7cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJd LGV9fSx7fV0sMzM0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHRbMF09ZVswXSx0WzFdPWVbMV0sdFsyXT1lWzJd LHR9fSx7fV0sMzM1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0 aW9uKCl7dmFyIHQ9bmV3IEZsb2F0MzJBcnJheSgzKTtyZXR1cm4gdFswXT0w LHRbMV09MCx0WzJdPTAsdH19LHt9XSwzMzY6W2Z1bmN0aW9uKHQsZSxyKXtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0sYT1lWzFdLGk9 ZVsyXSxvPXJbMF0scz1yWzFdLGw9clsyXTtyZXR1cm4gdFswXT1hKmwtaSpz LHRbMV09aSpvLW4qbCx0WzJdPW4qcy1hKm8sdH19LHt9XSwzMzc6W2Z1bmN0 aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi9kaXN0YW5jZSIpfSx7Ii4vZGlz dGFuY2UiOjMzOH1dLDMzODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe3ZhciByPWVbMF0tdFswXSxuPWVbMV0tdFsxXSxhPWVb Ml0tdFsyXTtyZXR1cm4gTWF0aC5zcXJ0KHIqcituKm4rYSphKX19LHt9XSwz Mzk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi9kaXZpZGUiKX0s eyIuL2RpdmlkZSI6MzQwfV0sMzQwOltmdW5jdGlvbih0LGUscil7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBdL3JbMF0sdFsx XT1lWzFdL3JbMV0sdFsyXT1lWzJdL3JbMl0sdH19LHt9XSwzNDE6W2Z1bmN0 aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFsw XSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19fSx7fV0sMzQyOltmdW5jdGlv bih0LGUscil7ZS5leHBvcnRzPTFlLTZ9LHt9XSwzNDM6W2Z1bmN0aW9uKHQs ZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10WzBdLGE9dFsx XSxpPXRbMl0sbz1lWzBdLHM9ZVsxXSxsPWVbMl07cmV0dXJuIE1hdGguYWJz KHItbyk8PW4qTWF0aC5tYXgoMSxNYXRoLmFicyhyKSxNYXRoLmFicyhvKSkm Jk1hdGguYWJzKGEtcyk8PW4qTWF0aC5tYXgoMSxNYXRoLmFicyhhKSxNYXRo LmFicyhzKSkmJk1hdGguYWJzKGktbCk8PW4qTWF0aC5tYXgoMSxNYXRoLmFi cyhpKSxNYXRoLmFicyhsKSl9O3ZhciBuPXQoIi4vZXBzaWxvbiIpfSx7Ii4v ZXBzaWxvbiI6MzQyfV0sMzQ0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF09PT1lWzBdJiZ0WzFdPT09ZVsx XSYmdFsyXT09PWVbMl19fSx7fV0sMzQ1OltmdW5jdGlvbih0LGUscil7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF09TWF0aC5mbG9vcihl WzBdKSx0WzFdPU1hdGguZmxvb3IoZVsxXSksdFsyXT1NYXRoLmZsb29yKGVb Ml0pLHR9fSx7fV0sMzQ2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyLGEsaSxvKXt2YXIgcyxsO2V8fChlPTMpO3J8fChyPTAp O2w9YT9NYXRoLm1pbihhKmUrcix0Lmxlbmd0aCk6dC5sZW5ndGg7Zm9yKHM9 cjtzPGw7cys9ZSluWzBdPXRbc10sblsxXT10W3MrMV0sblsyXT10W3MrMl0s aShuLG4sbyksdFtzXT1uWzBdLHRbcysxXT1uWzFdLHRbcysyXT1uWzJdO3Jl dHVybiB0fTt2YXIgbj10KCIuL2NyZWF0ZSIpKCl9LHsiLi9jcmVhdGUiOjMz NX1dLDM0NzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7dmFyIG49bmV3IEZsb2F0MzJBcnJheSgzKTtyZXR1cm4gblswXT10 LG5bMV09ZSxuWzJdPXIsbn19LHt9XSwzNDg6W2Z1bmN0aW9uKHQsZSxyKXtl LmV4cG9ydHM9e0VQU0lMT046dCgiLi9lcHNpbG9uIiksY3JlYXRlOnQoIi4v Y3JlYXRlIiksY2xvbmU6dCgiLi9jbG9uZSIpLGFuZ2xlOnQoIi4vYW5nbGUi KSxmcm9tVmFsdWVzOnQoIi4vZnJvbVZhbHVlcyIpLGNvcHk6dCgiLi9jb3B5 Iiksc2V0OnQoIi4vc2V0IiksZXF1YWxzOnQoIi4vZXF1YWxzIiksZXhhY3RF cXVhbHM6dCgiLi9leGFjdEVxdWFscyIpLGFkZDp0KCIuL2FkZCIpLHN1YnRy YWN0OnQoIi4vc3VidHJhY3QiKSxzdWI6dCgiLi9zdWIiKSxtdWx0aXBseTp0 KCIuL211bHRpcGx5IiksbXVsOnQoIi4vbXVsIiksZGl2aWRlOnQoIi4vZGl2 aWRlIiksZGl2OnQoIi4vZGl2IiksbWluOnQoIi4vbWluIiksbWF4OnQoIi4v bWF4IiksZmxvb3I6dCgiLi9mbG9vciIpLGNlaWw6dCgiLi9jZWlsIikscm91 bmQ6dCgiLi9yb3VuZCIpLHNjYWxlOnQoIi4vc2NhbGUiKSxzY2FsZUFuZEFk ZDp0KCIuL3NjYWxlQW5kQWRkIiksZGlzdGFuY2U6dCgiLi9kaXN0YW5jZSIp LGRpc3Q6dCgiLi9kaXN0Iiksc3F1YXJlZERpc3RhbmNlOnQoIi4vc3F1YXJl ZERpc3RhbmNlIiksc3FyRGlzdDp0KCIuL3NxckRpc3QiKSxsZW5ndGg6dCgi Li9sZW5ndGgiKSxsZW46dCgiLi9sZW4iKSxzcXVhcmVkTGVuZ3RoOnQoIi4v c3F1YXJlZExlbmd0aCIpLHNxckxlbjp0KCIuL3NxckxlbiIpLG5lZ2F0ZTp0 KCIuL25lZ2F0ZSIpLGludmVyc2U6dCgiLi9pbnZlcnNlIiksbm9ybWFsaXpl OnQoIi4vbm9ybWFsaXplIiksZG90OnQoIi4vZG90IiksY3Jvc3M6dCgiLi9j cm9zcyIpLGxlcnA6dCgiLi9sZXJwIikscmFuZG9tOnQoIi4vcmFuZG9tIiks dHJhbnNmb3JtTWF0NDp0KCIuL3RyYW5zZm9ybU1hdDQiKSx0cmFuc2Zvcm1N YXQzOnQoIi4vdHJhbnNmb3JtTWF0MyIpLHRyYW5zZm9ybVF1YXQ6dCgiLi90 cmFuc2Zvcm1RdWF0Iikscm90YXRlWDp0KCIuL3JvdGF0ZVgiKSxyb3RhdGVZ OnQoIi4vcm90YXRlWSIpLHJvdGF0ZVo6dCgiLi9yb3RhdGVaIiksZm9yRWFj aDp0KCIuL2ZvckVhY2giKX19LHsiLi9hZGQiOjMzMCwiLi9hbmdsZSI6MzMx LCIuL2NlaWwiOjMzMiwiLi9jbG9uZSI6MzMzLCIuL2NvcHkiOjMzNCwiLi9j cmVhdGUiOjMzNSwiLi9jcm9zcyI6MzM2LCIuL2Rpc3QiOjMzNywiLi9kaXN0 YW5jZSI6MzM4LCIuL2RpdiI6MzM5LCIuL2RpdmlkZSI6MzQwLCIuL2RvdCI6 MzQxLCIuL2Vwc2lsb24iOjM0MiwiLi9lcXVhbHMiOjM0MywiLi9leGFjdEVx dWFscyI6MzQ0LCIuL2Zsb29yIjozNDUsIi4vZm9yRWFjaCI6MzQ2LCIuL2Zy b21WYWx1ZXMiOjM0NywiLi9pbnZlcnNlIjozNDksIi4vbGVuIjozNTAsIi4v bGVuZ3RoIjozNTEsIi4vbGVycCI6MzUyLCIuL21heCI6MzUzLCIuL21pbiI6 MzU0LCIuL211bCI6MzU1LCIuL211bHRpcGx5IjozNTYsIi4vbmVnYXRlIjoz NTcsIi4vbm9ybWFsaXplIjozNTgsIi4vcmFuZG9tIjozNTksIi4vcm90YXRl WCI6MzYwLCIuL3JvdGF0ZVkiOjM2MSwiLi9yb3RhdGVaIjozNjIsIi4vcm91 bmQiOjM2MywiLi9zY2FsZSI6MzY0LCIuL3NjYWxlQW5kQWRkIjozNjUsIi4v c2V0IjozNjYsIi4vc3FyRGlzdCI6MzY3LCIuL3NxckxlbiI6MzY4LCIuL3Nx dWFyZWREaXN0YW5jZSI6MzY5LCIuL3NxdWFyZWRMZW5ndGgiOjM3MCwiLi9z dWIiOjM3MSwiLi9zdWJ0cmFjdCI6MzcyLCIuL3RyYW5zZm9ybU1hdDMiOjM3 MywiLi90cmFuc2Zvcm1NYXQ0IjozNzQsIi4vdHJhbnNmb3JtUXVhdCI6Mzc1 fV0sMzQ5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHRbMF09MS9lWzBdLHRbMV09MS9lWzFdLHRbMl09MS9lWzJd LHR9fSx7fV0sMzUwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4v bGVuZ3RoIil9LHsiLi9sZW5ndGgiOjM1MX1dLDM1MTpbZnVuY3Rpb24odCxl LHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXSxu PXRbMl07cmV0dXJuIE1hdGguc3FydChlKmUrcipyK24qbil9fSx7fV0sMzUy OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4p e3ZhciBhPWVbMF0saT1lWzFdLG89ZVsyXTtyZXR1cm4gdFswXT1hK24qKHJb MF0tYSksdFsxXT1pK24qKHJbMV0taSksdFsyXT1vK24qKHJbMl0tbyksdH19 LHt9XSwzNTM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIpe3JldHVybiB0WzBdPU1hdGgubWF4KGVbMF0sclswXSksdFsxXT1N YXRoLm1heChlWzFdLHJbMV0pLHRbMl09TWF0aC5tYXgoZVsyXSxyWzJdKSx0 fX0se31dLDM1NDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscil7cmV0dXJuIHRbMF09TWF0aC5taW4oZVswXSxyWzBdKSx0WzFd PU1hdGgubWluKGVbMV0sclsxXSksdFsyXT1NYXRoLm1pbihlWzJdLHJbMl0p LHR9fSx7fV0sMzU1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4v bXVsdGlwbHkiKX0seyIuL211bHRpcGx5IjozNTZ9XSwzNTY6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBd PWVbMF0qclswXSx0WzFdPWVbMV0qclsxXSx0WzJdPWVbMl0qclsyXSx0fX0s e31dLDM1NzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe3JldHVybiB0WzBdPS1lWzBdLHRbMV09LWVbMV0sdFsyXT0tZVsyXSx0 fX0se31dLDM1ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlv bih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGE9ZVsyXSxpPXIqcituKm4rYSph O2k+MCYmKGk9MS9NYXRoLnNxcnQoaSksdFswXT1lWzBdKmksdFsxXT1lWzFd KmksdFsyXT1lWzJdKmkpO3JldHVybiB0fX0se31dLDM1OTpbZnVuY3Rpb24o dCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2U9ZXx8MTt2YXIgcj0y Kk1hdGgucmFuZG9tKCkqTWF0aC5QSSxuPTIqTWF0aC5yYW5kb20oKS0xLGE9 TWF0aC5zcXJ0KDEtbipuKSplO3JldHVybiB0WzBdPU1hdGguY29zKHIpKmEs dFsxXT1NYXRoLnNpbihyKSphLHRbMl09biplLHR9fSx7fV0sMzYwOltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBh PXJbMV0saT1yWzJdLG89ZVsxXS1hLHM9ZVsyXS1pLGw9TWF0aC5zaW4obiks Yz1NYXRoLmNvcyhuKTtyZXR1cm4gdFswXT1lWzBdLHRbMV09YStvKmMtcyps LHRbMl09aStvKmwrcypjLHR9fSx7fV0sMzYxOltmdW5jdGlvbih0LGUscil7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXJbMF0saT1yWzJd LG89ZVswXS1hLHM9ZVsyXS1pLGw9TWF0aC5zaW4obiksYz1NYXRoLmNvcyhu KTtyZXR1cm4gdFswXT1hK3MqbCtvKmMsdFsxXT1lWzFdLHRbMl09aStzKmMt bypsLHR9fSx7fV0sMzYyOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXJbMF0saT1yWzFdLG89ZVswXS1hLHM9 ZVsxXS1pLGw9TWF0aC5zaW4obiksYz1NYXRoLmNvcyhuKTtyZXR1cm4gdFsw XT1hK28qYy1zKmwsdFsxXT1pK28qbCtzKmMsdFsyXT1lWzJdLHR9fSx7fV0s MzYzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 cmV0dXJuIHRbMF09TWF0aC5yb3VuZChlWzBdKSx0WzFdPU1hdGgucm91bmQo ZVsxXSksdFsyXT1NYXRoLnJvdW5kKGVbMl0pLHR9fSx7fV0sMzY0OltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g dFswXT1lWzBdKnIsdFsxXT1lWzFdKnIsdFsyXT1lWzJdKnIsdH19LHt9XSwz NjU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIs bil7cmV0dXJuIHRbMF09ZVswXStyWzBdKm4sdFsxXT1lWzFdK3JbMV0qbix0 WzJdPWVbMl0rclsyXSpuLHR9fSx7fV0sMzY2OltmdW5jdGlvbih0LGUscil7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0WzBdPWUsdFsx XT1yLHRbMl09bix0fX0se31dLDM2NzpbZnVuY3Rpb24odCxlLHIpe2UuZXhw b3J0cz10KCIuL3NxdWFyZWREaXN0YW5jZSIpfSx7Ii4vc3F1YXJlZERpc3Rh bmNlIjozNjl9XSwzNjg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgi Li9zcXVhcmVkTGVuZ3RoIil9LHsiLi9zcXVhcmVkTGVuZ3RoIjozNzB9XSwz Njk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcj1lWzBdLXRbMF0sbj1lWzFdLXRbMV0sYT1lWzJdLXRbMl07cmV0dXJu IHIqcituKm4rYSphfX0se31dLDM3MDpbZnVuY3Rpb24odCxlLHIpe2UuZXhw b3J0cz1mdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXSxuPXRbMl07cmV0 dXJuIGUqZStyKnIrbipufX0se31dLDM3MTpbZnVuY3Rpb24odCxlLHIpe2Uu ZXhwb3J0cz10KCIuL3N1YnRyYWN0Iil9LHsiLi9zdWJ0cmFjdCI6MzcyfV0s MzcyOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gdFswXT1lWzBdLXJbMF0sdFsxXT1lWzFdLXJbMV0sdFsyXT1l WzJdLXJbMl0sdH19LHt9XSwzNzM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0sYT1lWzFdLGk9ZVsyXTty ZXR1cm4gdFswXT1uKnJbMF0rYSpyWzNdK2kqcls2XSx0WzFdPW4qclsxXSth KnJbNF0raSpyWzddLHRbMl09bipyWzJdK2Eqcls1XStpKnJbOF0sdH19LHt9 XSwzNzQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIpe3ZhciBuPWVbMF0sYT1lWzFdLGk9ZVsyXSxvPXJbM10qbityWzddKmEr clsxMV0qaStyWzE1XTtyZXR1cm4gbz1vfHwxLHRbMF09KHJbMF0qbityWzRd KmErcls4XSppK3JbMTJdKS9vLHRbMV09KHJbMV0qbityWzVdKmErcls5XSpp K3JbMTNdKS9vLHRbMl09KHJbMl0qbityWzZdKmErclsxMF0qaStyWzE0XSkv byx0fX0se31dLDM3NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5j dGlvbih0LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdLG89clswXSxz PXJbMV0sbD1yWzJdLGM9clszXSx1PWMqbitzKmktbCphLGg9YyphK2wqbi1v KmksZj1jKmkrbyphLXMqbixwPS1vKm4tcyphLWwqaTtyZXR1cm4gdFswXT11 KmMrcCotbytoKi1sLWYqLXMsdFsxXT1oKmMrcCotcytmKi1vLXUqLWwsdFsy XT1mKmMrcCotbCt1Ki1zLWgqLW8sdH19LHt9XSwzNzY6W2Z1bmN0aW9uKHQs ZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVb MF0rclswXSx0WzFdPWVbMV0rclsxXSx0WzJdPWVbMl0rclsyXSx0WzNdPWVb M10rclszXSx0fX0se31dLDM3NzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0 cz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgRmxvYXQzMkFycmF5KDQpO3JldHVy biBlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sZX19 LHt9XSwzNzg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXtyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVsxXSx0WzJdPWVbMl0sdFsz XT1lWzNdLHR9fSx7fV0sMzc5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRz PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEZsb2F0MzJBcnJheSg0KTtyZXR1cm4g dFswXT0wLHRbMV09MCx0WzJdPTAsdFszXT0wLHR9fSx7fV0sMzgwOltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVsw XS10WzBdLG49ZVsxXS10WzFdLGE9ZVsyXS10WzJdLGk9ZVszXS10WzNdO3Jl dHVybiBNYXRoLnNxcnQocipyK24qbithKmEraSppKX19LHt9XSwzODE6W2Z1 bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVy biB0WzBdPWVbMF0vclswXSx0WzFdPWVbMV0vclsxXSx0WzJdPWVbMl0vclsy XSx0WzNdPWVbM10vclszXSx0fX0se31dLDM4MjpbZnVuY3Rpb24odCxlLHIp e2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdKmVbMF0rdFsx XSplWzFdK3RbMl0qZVsyXSt0WzNdKmVbM119fSx7fV0sMzgzOltmdW5jdGlv bih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW5l dyBGbG9hdDMyQXJyYXkoNCk7cmV0dXJuIGFbMF09dCxhWzFdPWUsYVsyXT1y LGFbM109bixhfX0se31dLDM4NDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0 cz17Y3JlYXRlOnQoIi4vY3JlYXRlIiksY2xvbmU6dCgiLi9jbG9uZSIpLGZy b21WYWx1ZXM6dCgiLi9mcm9tVmFsdWVzIiksY29weTp0KCIuL2NvcHkiKSxz ZXQ6dCgiLi9zZXQiKSxhZGQ6dCgiLi9hZGQiKSxzdWJ0cmFjdDp0KCIuL3N1 YnRyYWN0IiksbXVsdGlwbHk6dCgiLi9tdWx0aXBseSIpLGRpdmlkZTp0KCIu L2RpdmlkZSIpLG1pbjp0KCIuL21pbiIpLG1heDp0KCIuL21heCIpLHNjYWxl OnQoIi4vc2NhbGUiKSxzY2FsZUFuZEFkZDp0KCIuL3NjYWxlQW5kQWRkIiks ZGlzdGFuY2U6dCgiLi9kaXN0YW5jZSIpLHNxdWFyZWREaXN0YW5jZTp0KCIu L3NxdWFyZWREaXN0YW5jZSIpLGxlbmd0aDp0KCIuL2xlbmd0aCIpLHNxdWFy ZWRMZW5ndGg6dCgiLi9zcXVhcmVkTGVuZ3RoIiksbmVnYXRlOnQoIi4vbmVn YXRlIiksaW52ZXJzZTp0KCIuL2ludmVyc2UiKSxub3JtYWxpemU6dCgiLi9u b3JtYWxpemUiKSxkb3Q6dCgiLi9kb3QiKSxsZXJwOnQoIi4vbGVycCIpLHJh bmRvbTp0KCIuL3JhbmRvbSIpLHRyYW5zZm9ybU1hdDQ6dCgiLi90cmFuc2Zv cm1NYXQ0IiksdHJhbnNmb3JtUXVhdDp0KCIuL3RyYW5zZm9ybVF1YXQiKX19 LHsiLi9hZGQiOjM3NiwiLi9jbG9uZSI6Mzc3LCIuL2NvcHkiOjM3OCwiLi9j cmVhdGUiOjM3OSwiLi9kaXN0YW5jZSI6MzgwLCIuL2RpdmlkZSI6MzgxLCIu L2RvdCI6MzgyLCIuL2Zyb21WYWx1ZXMiOjM4MywiLi9pbnZlcnNlIjozODUs Ii4vbGVuZ3RoIjozODYsIi4vbGVycCI6Mzg3LCIuL21heCI6Mzg4LCIuL21p biI6Mzg5LCIuL211bHRpcGx5IjozOTAsIi4vbmVnYXRlIjozOTEsIi4vbm9y bWFsaXplIjozOTIsIi4vcmFuZG9tIjozOTMsIi4vc2NhbGUiOjM5NCwiLi9z Y2FsZUFuZEFkZCI6Mzk1LCIuL3NldCI6Mzk2LCIuL3NxdWFyZWREaXN0YW5j ZSI6Mzk3LCIuL3NxdWFyZWRMZW5ndGgiOjM5OCwiLi9zdWJ0cmFjdCI6Mzk5 LCIuL3RyYW5zZm9ybU1hdDQiOjQwMCwiLi90cmFuc2Zvcm1RdWF0Ijo0MDF9 XSwzODU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXtyZXR1cm4gdFswXT0xL2VbMF0sdFsxXT0xL2VbMV0sdFsyXT0xL2VbMl0s dFszXT0xL2VbM10sdH19LHt9XSwzODY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4 cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxyPXRbMV0sbj10WzJdLGE9 dFszXTtyZXR1cm4gTWF0aC5zcXJ0KGUqZStyKnIrbipuK2EqYSl9fSx7fV0s Mzg3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy LG4pe3ZhciBhPWVbMF0saT1lWzFdLG89ZVsyXSxzPWVbM107cmV0dXJuIHRb MF09YStuKihyWzBdLWEpLHRbMV09aStuKihyWzFdLWkpLHRbMl09bytuKihy WzJdLW8pLHRbM109cytuKihyWzNdLXMpLHR9fSx7fV0sMzg4OltmdW5jdGlv bih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFsw XT1NYXRoLm1heChlWzBdLHJbMF0pLHRbMV09TWF0aC5tYXgoZVsxXSxyWzFd KSx0WzJdPU1hdGgubWF4KGVbMl0sclsyXSksdFszXT1NYXRoLm1heChlWzNd LHJbM10pLHR9fSx7fV0sMzg5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1NYXRoLm1pbihlWzBdLHJb MF0pLHRbMV09TWF0aC5taW4oZVsxXSxyWzFdKSx0WzJdPU1hdGgubWluKGVb Ml0sclsyXSksdFszXT1NYXRoLm1pbihlWzNdLHJbM10pLHR9fSx7fV0sMzkw OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4gdFswXT1lWzBdKnJbMF0sdFsxXT1lWzFdKnJbMV0sdFsyXT1lWzJd KnJbMl0sdFszXT1lWzNdKnJbM10sdH19LHt9XSwzOTE6W2Z1bmN0aW9uKHQs ZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT0tZVsw XSx0WzFdPS1lWzFdLHRbMl09LWVbMl0sdFszXT0tZVszXSx0fX0se31dLDM5 MjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Zh ciByPWVbMF0sbj1lWzFdLGE9ZVsyXSxpPWVbM10sbz1yKnIrbipuK2EqYStp Kmk7bz4wJiYobz0xL01hdGguc3FydChvKSx0WzBdPXIqbyx0WzFdPW4qbyx0 WzJdPWEqbyx0WzNdPWkqbyk7cmV0dXJuIHR9fSx7fV0sMzkzOltmdW5jdGlv bih0LGUscil7dmFyIG49dCgiLi9ub3JtYWxpemUiKSxhPXQoIi4vc2NhbGUi KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lfHwxLHRbMF09 TWF0aC5yYW5kb20oKSx0WzFdPU1hdGgucmFuZG9tKCksdFsyXT1NYXRoLnJh bmRvbSgpLHRbM109TWF0aC5yYW5kb20oKSxuKHQsdCksYSh0LHQsZSksdH19 LHsiLi9ub3JtYWxpemUiOjM5MiwiLi9zY2FsZSI6Mzk0fV0sMzk0OltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g dFswXT1lWzBdKnIsdFsxXT1lWzFdKnIsdFsyXT1lWzJdKnIsdFszXT1lWzNd KnIsdH19LHt9XSwzOTU6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsbil7cmV0dXJuIHRbMF09ZVswXStyWzBdKm4sdFsxXT1l WzFdK3JbMV0qbix0WzJdPWVbMl0rclsyXSpuLHRbM109ZVszXStyWzNdKm4s dH19LHt9XSwzOTY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIsbixhKXtyZXR1cm4gdFswXT1lLHRbMV09cix0WzJdPW4sdFsz XT1hLHR9fSx7fV0sMzk3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9ZVswXS10WzBdLG49ZVsxXS10WzFdLGE9ZVsy XS10WzJdLGk9ZVszXS10WzNdO3JldHVybiByKnIrbipuK2EqYStpKml9fSx7 fV0sMzk4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQp e3ZhciBlPXRbMF0scj10WzFdLG49dFsyXSxhPXRbM107cmV0dXJuIGUqZSty KnIrbipuK2EqYX19LHt9XSwzOTk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0tclswXSx0WzFd PWVbMV0tclsxXSx0WzJdPWVbMl0tclsyXSx0WzNdPWVbM10tclszXSx0fX0s e31dLDQwMDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7dmFyIG49ZVswXSxhPWVbMV0saT1lWzJdLG89ZVszXTtyZXR1cm4g dFswXT1yWzBdKm4rcls0XSphK3JbOF0qaStyWzEyXSpvLHRbMV09clsxXSpu K3JbNV0qYStyWzldKmkrclsxM10qbyx0WzJdPXJbMl0qbityWzZdKmErclsx MF0qaStyWzE0XSpvLHRbM109clszXSpuK3JbN10qYStyWzExXSppK3JbMTVd Km8sdH19LHt9XSw0MDE6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIpe3ZhciBuPWVbMF0sYT1lWzFdLGk9ZVsyXSxvPXJbMF0s cz1yWzFdLGw9clsyXSxjPXJbM10sdT1jKm4rcyppLWwqYSxoPWMqYStsKm4t byppLGY9YyppK28qYS1zKm4scD0tbypuLXMqYS1sKmk7cmV0dXJuIHRbMF09 dSpjK3AqLW8raCotbC1mKi1zLHRbMV09aCpjK3AqLXMrZiotby11Ki1sLHRb Ml09ZipjK3AqLWwrdSotcy1oKi1vLHRbM109ZVszXSx0fX0se31dLDQwMjpb ZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXty ZXR1cm4gblswXT1pLG5bMV09cixuWzJdPWUsblszXT10LGFbMF19O3ZhciBu PW5ldyBVaW50OEFycmF5KDQpLGE9bmV3IEZsb2F0MzJBcnJheShuLmJ1ZmZl cil9LHt9XSw0MDM6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnbHNsLXRv a2VuaXplciIpLGE9dCgiYXRvYi1saXRlIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQpe2Zvcih2YXIgZT1BcnJheS5pc0FycmF5KHQpP3Q6bih0KSxyPTA7cjxl Lmxlbmd0aDtyKyspe3ZhciBpPWVbcl07aWYoInByZXByb2Nlc3NvciI9PT1p LnR5cGUpe3ZhciBvPWkuZGF0YS5tYXRjaCgvXCNkZWZpbmVccytTSEFERVJf TkFNRShfQjY0KT9ccysoLispJC8pO2lmKG8mJm9bMl0pe3ZhciBzPW9bMV0s bD1vWzJdO3JldHVybihzP2EobCk6bCkudHJpbSgpfX19fX0seyJhdG9iLWxp dGUiOjc0LCJnbHNsLXRva2VuaXplciI6NDEwfV0sNDA0OltmdW5jdGlvbih0 LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsayxUPTAsTT0w LEE9bCxTPVtdLEU9W10sTD0xLEM9MCxQPTAsTz0hMSx6PSExLEk9IiIsRD1p LFI9bjsiMzAwIGVzIj09PSh0PXR8fHt9KS52ZXJzaW9uJiYoRD1zLFI9byk7 cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBFPVtdLG51bGwhPT10P2Z1bmN0 aW9uKHQpe3ZhciByO1Q9MCxrPShJKz10KS5sZW5ndGg7Zm9yKDtlPUlbVF0s VDxrOyl7c3dpdGNoKHI9VCxBKXtjYXNlIHU6VD1WKCk7YnJlYWs7Y2FzZSBo OmNhc2UgZjpUPWooKTticmVhaztjYXNlIHA6VD1VKCk7YnJlYWs7Y2FzZSBk OlQ9RygpO2JyZWFrO2Nhc2UgXzpUPUgoKTticmVhaztjYXNlIGc6VD1ZKCk7 YnJlYWs7Y2FzZSBjOlQ9VygpO2JyZWFrO2Nhc2UgeDpUPU4oKTticmVhaztj YXNlIGw6VD1CKCl9aWYociE9PVQpc3dpdGNoKElbcl0pe2Nhc2UiXG4iOkM9 MCwrK0w7YnJlYWs7ZGVmYXVsdDorK0N9fXJldHVybiBNKz1ULEk9SS5zbGlj ZShUKSxFfSh0LnJlcGxhY2U/dC5yZXBsYWNlKC9cclxuL2csIlxuIik6dCk6 ZnVuY3Rpb24odCl7Uy5sZW5ndGgmJkYoUy5qb2luKCIiKSk7cmV0dXJuIEE9 YixGKCIoZW9mKSIpLEV9KCl9O2Z1bmN0aW9uIEYodCl7dC5sZW5ndGgmJkUu cHVzaCh7dHlwZTp3W0FdLGRhdGE6dCxwb3NpdGlvbjpQLGxpbmU6TCxjb2x1 bW46Q30pfWZ1bmN0aW9uIEIoKXtyZXR1cm4gUz1TLmxlbmd0aD9bXTpTLCIv Ij09PXImJiIqIj09PWU/KFA9TStULTEsQT11LHI9ZSxUKzEpOiIvIj09PXIm JiIvIj09PWU/KFA9TStULTEsQT1oLHI9ZSxUKzEpOiIjIj09PWU/KEE9ZixQ PU0rVCxUKTovXHMvLnRlc3QoZSk/KEE9eCxQPU0rVCxUKTooTz0vXGQvLnRl c3QoZSksej0vW15cd19dLy50ZXN0KGUpLFA9TStULEE9Tz9kOno/cDpjLFQp fWZ1bmN0aW9uIE4oKXtyZXR1cm4vW15cc10vZy50ZXN0KGUpPyhGKFMuam9p bigiIikpLEE9bCxUKTooUy5wdXNoKGUpLHI9ZSxUKzEpfWZ1bmN0aW9uIGoo KXtyZXR1cm4iXHIiIT09ZSYmIlxuIiE9PWV8fCJcXCI9PT1yPyhTLnB1c2go ZSkscj1lLFQrMSk6KEYoUy5qb2luKCIiKSksQT1sLFQpfWZ1bmN0aW9uIFYo KXtyZXR1cm4iLyI9PT1lJiYiKiI9PT1yPyhTLnB1c2goZSksRihTLmpvaW4o IiIpKSxBPWwsVCsxKTooUy5wdXNoKGUpLHI9ZSxUKzEpfWZ1bmN0aW9uIFUo KXtpZigiLiI9PT1yJiYvXGQvLnRlc3QoZSkpcmV0dXJuIEE9ZyxUO2lmKCIv Ij09PXImJiIqIj09PWUpcmV0dXJuIEE9dSxUO2lmKCIvIj09PXImJiIvIj09 PWUpcmV0dXJuIEE9aCxUO2lmKCIuIj09PWUmJlMubGVuZ3RoKXtmb3IoO3Eo Uyk7KTtyZXR1cm4gQT1nLFR9aWYoIjsiPT09ZXx8IikiPT09ZXx8IigiPT09 ZSl7aWYoUy5sZW5ndGgpZm9yKDtxKFMpOyk7cmV0dXJuIEYoZSksQT1sLFQr MX12YXIgdD0yPT09Uy5sZW5ndGgmJiI9IiE9PWU7aWYoL1tcd19cZFxzXS8u dGVzdChlKXx8dCl7Zm9yKDtxKFMpOyk7cmV0dXJuIEE9bCxUfXJldHVybiBT LnB1c2goZSkscj1lLFQrMX1mdW5jdGlvbiBxKHQpe2Zvcih2YXIgZSxyLG49 MDs7KXtpZihlPWEuaW5kZXhPZih0LnNsaWNlKDAsdC5sZW5ndGgrbikuam9p bigiIikpLHI9YVtlXSwtMT09PWUpe2lmKG4tLSt0Lmxlbmd0aD4wKWNvbnRp bnVlO3I9dC5zbGljZSgwLDEpLmpvaW4oIiIpfXJldHVybiBGKHIpLFArPXIu bGVuZ3RoLChTPVMuc2xpY2Uoci5sZW5ndGgpKS5sZW5ndGh9fWZ1bmN0aW9u IEgoKXtyZXR1cm4vW15hLWZBLUYwLTldLy50ZXN0KGUpPyhGKFMuam9pbigi IikpLEE9bCxUKTooUy5wdXNoKGUpLHI9ZSxUKzEpfWZ1bmN0aW9uIEcoKXty ZXR1cm4iLiI9PT1lPyhTLnB1c2goZSksQT1nLHI9ZSxUKzEpOi9bZUVdLy50 ZXN0KGUpPyhTLnB1c2goZSksQT1nLHI9ZSxUKzEpOiJ4Ij09PWUmJjE9PT1T Lmxlbmd0aCYmIjAiPT09U1swXT8oQT1fLFMucHVzaChlKSxyPWUsVCsxKTov W15cZF0vLnRlc3QoZSk/KEYoUy5qb2luKCIiKSksQT1sLFQpOihTLnB1c2go ZSkscj1lLFQrMSl9ZnVuY3Rpb24gWSgpe3JldHVybiJmIj09PWUmJihTLnB1 c2goZSkscj1lLFQrPTEpLC9bZUVdLy50ZXN0KGUpPyhTLnB1c2goZSkscj1l LFQrMSk6Ii0iPT09ZSYmL1tlRV0vLnRlc3Qocik/KFMucHVzaChlKSxyPWUs VCsxKTovW15cZF0vLnRlc3QoZSk/KEYoUy5qb2luKCIiKSksQT1sLFQpOihT LnB1c2goZSkscj1lLFQrMSl9ZnVuY3Rpb24gVygpe2lmKC9bXlxkXHdfXS8u dGVzdChlKSl7dmFyIHQ9Uy5qb2luKCIiKTtyZXR1cm4gQT1SLmluZGV4T2Yo dCk+LTE/eTpELmluZGV4T2YodCk+LTE/bTp2LEYoUy5qb2luKCIiKSksQT1s LFR9cmV0dXJuIFMucHVzaChlKSxyPWUsVCsxfX07dmFyIG49dCgiLi9saWIv bGl0ZXJhbHMiKSxhPXQoIi4vbGliL29wZXJhdG9ycyIpLGk9dCgiLi9saWIv YnVpbHRpbnMiKSxvPXQoIi4vbGliL2xpdGVyYWxzLTMwMGVzIikscz10KCIu L2xpYi9idWlsdGlucy0zMDBlcyIpLGw9OTk5LGM9OTk5OSx1PTAsaD0xLGY9 MixwPTMsZD00LGc9NSx2PTYsbT03LHk9OCx4PTksYj0xMCxfPTExLHc9WyJi bG9jay1jb21tZW50IiwibGluZS1jb21tZW50IiwicHJlcHJvY2Vzc29yIiwi b3BlcmF0b3IiLCJpbnRlZ2VyIiwiZmxvYXQiLCJpZGVudCIsImJ1aWx0aW4i LCJrZXl3b3JkIiwid2hpdGVzcGFjZSIsImVvZiIsImludGVnZXIiXX0seyIu L2xpYi9idWlsdGlucyI6NDA2LCIuL2xpYi9idWlsdGlucy0zMDBlcyI6NDA1 LCIuL2xpYi9saXRlcmFscyI6NDA4LCIuL2xpYi9saXRlcmFscy0zMDBlcyI6 NDA3LCIuL2xpYi9vcGVyYXRvcnMiOjQwOX1dLDQwNTpbZnVuY3Rpb24odCxl LHIpe3ZhciBuPXQoIi4vYnVpbHRpbnMiKTtuPW4uc2xpY2UoKS5maWx0ZXIo ZnVuY3Rpb24odCl7cmV0dXJuIS9eKGdsXF98dGV4dHVyZSkvLnRlc3QodCl9 KSxlLmV4cG9ydHM9bi5jb25jYXQoWyJnbF9WZXJ0ZXhJRCIsImdsX0luc3Rh bmNlSUQiLCJnbF9Qb3NpdGlvbiIsImdsX1BvaW50U2l6ZSIsImdsX0ZyYWdD b29yZCIsImdsX0Zyb250RmFjaW5nIiwiZ2xfRnJhZ0RlcHRoIiwiZ2xfUG9p bnRDb29yZCIsImdsX01heFZlcnRleEF0dHJpYnMiLCJnbF9NYXhWZXJ0ZXhV bmlmb3JtVmVjdG9ycyIsImdsX01heFZlcnRleE91dHB1dFZlY3RvcnMiLCJn bF9NYXhGcmFnbWVudElucHV0VmVjdG9ycyIsImdsX01heFZlcnRleFRleHR1 cmVJbWFnZVVuaXRzIiwiZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0 cyIsImdsX01heFRleHR1cmVJbWFnZVVuaXRzIiwiZ2xfTWF4RnJhZ21lbnRV bmlmb3JtVmVjdG9ycyIsImdsX01heERyYXdCdWZmZXJzIiwiZ2xfTWluUHJv Z3JhbVRleGVsT2Zmc2V0IiwiZ2xfTWF4UHJvZ3JhbVRleGVsT2Zmc2V0Iiwi Z2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMiLCJnbF9EZXB0aFJhbmdlIiwidHJ1 bmMiLCJyb3VuZCIsInJvdW5kRXZlbiIsImlzbmFuIiwiaXNpbmYiLCJmbG9h dEJpdHNUb0ludCIsImZsb2F0Qml0c1RvVWludCIsImludEJpdHNUb0Zsb2F0 IiwidWludEJpdHNUb0Zsb2F0IiwicGFja1Nub3JtMngxNiIsInVucGFja1Nu b3JtMngxNiIsInBhY2tVbm9ybTJ4MTYiLCJ1bnBhY2tVbm9ybTJ4MTYiLCJw YWNrSGFsZjJ4MTYiLCJ1bnBhY2tIYWxmMngxNiIsIm91dGVyUHJvZHVjdCIs InRyYW5zcG9zZSIsImRldGVybWluYW50IiwiaW52ZXJzZSIsInRleHR1cmUi LCJ0ZXh0dXJlU2l6ZSIsInRleHR1cmVQcm9qIiwidGV4dHVyZUxvZCIsInRl eHR1cmVPZmZzZXQiLCJ0ZXhlbEZldGNoIiwidGV4ZWxGZXRjaE9mZnNldCIs InRleHR1cmVQcm9qT2Zmc2V0IiwidGV4dHVyZUxvZE9mZnNldCIsInRleHR1 cmVQcm9qTG9kIiwidGV4dHVyZVByb2pMb2RPZmZzZXQiLCJ0ZXh0dXJlR3Jh ZCIsInRleHR1cmVHcmFkT2Zmc2V0IiwidGV4dHVyZVByb2pHcmFkIiwidGV4 dHVyZVByb2pHcmFkT2Zmc2V0Il0pfSx7Ii4vYnVpbHRpbnMiOjQwNn1dLDQw NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bImFicyIsImFjb3MiLCJh bGwiLCJhbnkiLCJhc2luIiwiYXRhbiIsImNlaWwiLCJjbGFtcCIsImNvcyIs ImNyb3NzIiwiZEZkeCIsImRGZHkiLCJkZWdyZWVzIiwiZGlzdGFuY2UiLCJk b3QiLCJlcXVhbCIsImV4cCIsImV4cDIiLCJmYWNlZm9yd2FyZCIsImZsb29y IiwiZnJhY3QiLCJnbF9CYWNrQ29sb3IiLCJnbF9CYWNrTGlnaHRNb2RlbFBy b2R1Y3QiLCJnbF9CYWNrTGlnaHRQcm9kdWN0IiwiZ2xfQmFja01hdGVyaWFs IiwiZ2xfQmFja1NlY29uZGFyeUNvbG9yIiwiZ2xfQ2xpcFBsYW5lIiwiZ2xf Q2xpcFZlcnRleCIsImdsX0NvbG9yIiwiZ2xfRGVwdGhSYW5nZSIsImdsX0Rl cHRoUmFuZ2VQYXJhbWV0ZXJzIiwiZ2xfRXllUGxhbmVRIiwiZ2xfRXllUGxh bmVSIiwiZ2xfRXllUGxhbmVTIiwiZ2xfRXllUGxhbmVUIiwiZ2xfRm9nIiwi Z2xfRm9nQ29vcmQiLCJnbF9Gb2dGcmFnQ29vcmQiLCJnbF9Gb2dQYXJhbWV0 ZXJzIiwiZ2xfRnJhZ0NvbG9yIiwiZ2xfRnJhZ0Nvb3JkIiwiZ2xfRnJhZ0Rh dGEiLCJnbF9GcmFnRGVwdGgiLCJnbF9GcmFnRGVwdGhFWFQiLCJnbF9Gcm9u dENvbG9yIiwiZ2xfRnJvbnRGYWNpbmciLCJnbF9Gcm9udExpZ2h0TW9kZWxQ cm9kdWN0IiwiZ2xfRnJvbnRMaWdodFByb2R1Y3QiLCJnbF9Gcm9udE1hdGVy aWFsIiwiZ2xfRnJvbnRTZWNvbmRhcnlDb2xvciIsImdsX0xpZ2h0TW9kZWwi LCJnbF9MaWdodE1vZGVsUGFyYW1ldGVycyIsImdsX0xpZ2h0TW9kZWxQcm9k dWN0cyIsImdsX0xpZ2h0UHJvZHVjdHMiLCJnbF9MaWdodFNvdXJjZSIsImds X0xpZ2h0U291cmNlUGFyYW1ldGVycyIsImdsX01hdGVyaWFsUGFyYW1ldGVy cyIsImdsX01heENsaXBQbGFuZXMiLCJnbF9NYXhDb21iaW5lZFRleHR1cmVJ bWFnZVVuaXRzIiwiZ2xfTWF4RHJhd0J1ZmZlcnMiLCJnbF9NYXhGcmFnbWVu dFVuaWZvcm1Db21wb25lbnRzIiwiZ2xfTWF4TGlnaHRzIiwiZ2xfTWF4VGV4 dHVyZUNvb3JkcyIsImdsX01heFRleHR1cmVJbWFnZVVuaXRzIiwiZ2xfTWF4 VGV4dHVyZVVuaXRzIiwiZ2xfTWF4VmFyeWluZ0Zsb2F0cyIsImdsX01heFZl cnRleEF0dHJpYnMiLCJnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyIs ImdsX01heFZlcnRleFVuaWZvcm1Db21wb25lbnRzIiwiZ2xfTW9kZWxWaWV3 TWF0cml4IiwiZ2xfTW9kZWxWaWV3TWF0cml4SW52ZXJzZSIsImdsX01vZGVs Vmlld01hdHJpeEludmVyc2VUcmFuc3Bvc2UiLCJnbF9Nb2RlbFZpZXdNYXRy aXhUcmFuc3Bvc2UiLCJnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4Iiwi Z2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeEludmVyc2UiLCJnbF9Nb2Rl bFZpZXdQcm9qZWN0aW9uTWF0cml4SW52ZXJzZVRyYW5zcG9zZSIsImdsX01v ZGVsVmlld1Byb2plY3Rpb25NYXRyaXhUcmFuc3Bvc2UiLCJnbF9NdWx0aVRl eENvb3JkMCIsImdsX011bHRpVGV4Q29vcmQxIiwiZ2xfTXVsdGlUZXhDb29y ZDIiLCJnbF9NdWx0aVRleENvb3JkMyIsImdsX011bHRpVGV4Q29vcmQ0Iiwi Z2xfTXVsdGlUZXhDb29yZDUiLCJnbF9NdWx0aVRleENvb3JkNiIsImdsX011 bHRpVGV4Q29vcmQ3IiwiZ2xfTm9ybWFsIiwiZ2xfTm9ybWFsTWF0cml4Iiwi Z2xfTm9ybWFsU2NhbGUiLCJnbF9PYmplY3RQbGFuZVEiLCJnbF9PYmplY3RQ bGFuZVIiLCJnbF9PYmplY3RQbGFuZVMiLCJnbF9PYmplY3RQbGFuZVQiLCJn bF9Qb2ludCIsImdsX1BvaW50Q29vcmQiLCJnbF9Qb2ludFBhcmFtZXRlcnMi LCJnbF9Qb2ludFNpemUiLCJnbF9Qb3NpdGlvbiIsImdsX1Byb2plY3Rpb25N YXRyaXgiLCJnbF9Qcm9qZWN0aW9uTWF0cml4SW52ZXJzZSIsImdsX1Byb2pl Y3Rpb25NYXRyaXhJbnZlcnNlVHJhbnNwb3NlIiwiZ2xfUHJvamVjdGlvbk1h dHJpeFRyYW5zcG9zZSIsImdsX1NlY29uZGFyeUNvbG9yIiwiZ2xfVGV4Q29v cmQiLCJnbF9UZXh0dXJlRW52Q29sb3IiLCJnbF9UZXh0dXJlTWF0cml4Iiwi Z2xfVGV4dHVyZU1hdHJpeEludmVyc2UiLCJnbF9UZXh0dXJlTWF0cml4SW52 ZXJzZVRyYW5zcG9zZSIsImdsX1RleHR1cmVNYXRyaXhUcmFuc3Bvc2UiLCJn bF9WZXJ0ZXgiLCJncmVhdGVyVGhhbiIsImdyZWF0ZXJUaGFuRXF1YWwiLCJp bnZlcnNlc3FydCIsImxlbmd0aCIsImxlc3NUaGFuIiwibGVzc1RoYW5FcXVh bCIsImxvZyIsImxvZzIiLCJtYXRyaXhDb21wTXVsdCIsIm1heCIsIm1pbiIs Im1peCIsIm1vZCIsIm5vcm1hbGl6ZSIsIm5vdCIsIm5vdEVxdWFsIiwicG93 IiwicmFkaWFucyIsInJlZmxlY3QiLCJyZWZyYWN0Iiwic2lnbiIsInNpbiIs InNtb290aHN0ZXAiLCJzcXJ0Iiwic3RlcCIsInRhbiIsInRleHR1cmUyRCIs InRleHR1cmUyRExvZCIsInRleHR1cmUyRFByb2oiLCJ0ZXh0dXJlMkRQcm9q TG9kIiwidGV4dHVyZUN1YmUiLCJ0ZXh0dXJlQ3ViZUxvZCIsInRleHR1cmUy RExvZEVYVCIsInRleHR1cmUyRFByb2pMb2RFWFQiLCJ0ZXh0dXJlQ3ViZUxv ZEVYVCIsInRleHR1cmUyREdyYWRFWFQiLCJ0ZXh0dXJlMkRQcm9qR3JhZEVY VCIsInRleHR1cmVDdWJlR3JhZEVYVCJdfSx7fV0sNDA3OltmdW5jdGlvbih0 LGUscil7dmFyIG49dCgiLi9saXRlcmFscyIpO2UuZXhwb3J0cz1uLnNsaWNl KCkuY29uY2F0KFsibGF5b3V0IiwiY2VudHJvaWQiLCJzbW9vdGgiLCJjYXNl IiwibWF0MngyIiwibWF0MngzIiwibWF0Mng0IiwibWF0M3gyIiwibWF0M3gz IiwibWF0M3g0IiwibWF0NHgyIiwibWF0NHgzIiwibWF0NHg0IiwidWludCIs InV2ZWMyIiwidXZlYzMiLCJ1dmVjNCIsInNhbXBsZXJDdWJlU2hhZG93Iiwi c2FtcGxlcjJEQXJyYXkiLCJzYW1wbGVyMkRBcnJheVNoYWRvdyIsImlzYW1w bGVyMkQiLCJpc2FtcGxlcjNEIiwiaXNhbXBsZXJDdWJlIiwiaXNhbXBsZXIy REFycmF5IiwidXNhbXBsZXIyRCIsInVzYW1wbGVyM0QiLCJ1c2FtcGxlckN1 YmUiLCJ1c2FtcGxlcjJEQXJyYXkiLCJjb2hlcmVudCIsInJlc3RyaWN0Iiwi cmVhZG9ubHkiLCJ3cml0ZW9ubHkiLCJyZXNvdXJjZSIsImF0b21pY191aW50 Iiwibm9wZXJzcGVjdGl2ZSIsInBhdGNoIiwic2FtcGxlIiwic3Vicm91dGlu ZSIsImNvbW1vbiIsInBhcnRpdGlvbiIsImFjdGl2ZSIsImZpbHRlciIsImlt YWdlMUQiLCJpbWFnZTJEIiwiaW1hZ2UzRCIsImltYWdlQ3ViZSIsImlpbWFn ZTFEIiwiaWltYWdlMkQiLCJpaW1hZ2UzRCIsImlpbWFnZUN1YmUiLCJ1aW1h Z2UxRCIsInVpbWFnZTJEIiwidWltYWdlM0QiLCJ1aW1hZ2VDdWJlIiwiaW1h Z2UxREFycmF5IiwiaW1hZ2UyREFycmF5IiwiaWltYWdlMURBcnJheSIsImlp bWFnZTJEQXJyYXkiLCJ1aW1hZ2UxREFycmF5IiwidWltYWdlMkRBcnJheSIs ImltYWdlMURTaGFkb3ciLCJpbWFnZTJEU2hhZG93IiwiaW1hZ2UxREFycmF5 U2hhZG93IiwiaW1hZ2UyREFycmF5U2hhZG93IiwiaW1hZ2VCdWZmZXIiLCJp aW1hZ2VCdWZmZXIiLCJ1aW1hZ2VCdWZmZXIiLCJzYW1wbGVyMURBcnJheSIs InNhbXBsZXIxREFycmF5U2hhZG93IiwiaXNhbXBsZXIxRCIsImlzYW1wbGVy MURBcnJheSIsInVzYW1wbGVyMUQiLCJ1c2FtcGxlcjFEQXJyYXkiLCJpc2Ft cGxlcjJEUmVjdCIsInVzYW1wbGVyMkRSZWN0Iiwic2FtcGxlckJ1ZmZlciIs ImlzYW1wbGVyQnVmZmVyIiwidXNhbXBsZXJCdWZmZXIiLCJzYW1wbGVyMkRN UyIsImlzYW1wbGVyMkRNUyIsInVzYW1wbGVyMkRNUyIsInNhbXBsZXIyRE1T QXJyYXkiLCJpc2FtcGxlcjJETVNBcnJheSIsInVzYW1wbGVyMkRNU0FycmF5 Il0pfSx7Ii4vbGl0ZXJhbHMiOjQwOH1dLDQwODpbZnVuY3Rpb24odCxlLHIp e2UuZXhwb3J0cz1bInByZWNpc2lvbiIsImhpZ2hwIiwibWVkaXVtcCIsImxv d3AiLCJhdHRyaWJ1dGUiLCJjb25zdCIsInVuaWZvcm0iLCJ2YXJ5aW5nIiwi YnJlYWsiLCJjb250aW51ZSIsImRvIiwiZm9yIiwid2hpbGUiLCJpZiIsImVs c2UiLCJpbiIsIm91dCIsImlub3V0IiwiZmxvYXQiLCJpbnQiLCJ2b2lkIiwi Ym9vbCIsInRydWUiLCJmYWxzZSIsImRpc2NhcmQiLCJyZXR1cm4iLCJtYXQy IiwibWF0MyIsIm1hdDQiLCJ2ZWMyIiwidmVjMyIsInZlYzQiLCJpdmVjMiIs Iml2ZWMzIiwiaXZlYzQiLCJidmVjMiIsImJ2ZWMzIiwiYnZlYzQiLCJzYW1w bGVyMUQiLCJzYW1wbGVyMkQiLCJzYW1wbGVyM0QiLCJzYW1wbGVyQ3ViZSIs InNhbXBsZXIxRFNoYWRvdyIsInNhbXBsZXIyRFNoYWRvdyIsInN0cnVjdCIs ImFzbSIsImNsYXNzIiwidW5pb24iLCJlbnVtIiwidHlwZWRlZiIsInRlbXBs YXRlIiwidGhpcyIsInBhY2tlZCIsImdvdG8iLCJzd2l0Y2giLCJkZWZhdWx0 IiwiaW5saW5lIiwibm9pbmxpbmUiLCJ2b2xhdGlsZSIsInB1YmxpYyIsInN0 YXRpYyIsImV4dGVybiIsImV4dGVybmFsIiwiaW50ZXJmYWNlIiwibG9uZyIs InNob3J0IiwiZG91YmxlIiwiaGFsZiIsImZpeGVkIiwidW5zaWduZWQiLCJp bnB1dCIsIm91dHB1dCIsImh2ZWMyIiwiaHZlYzMiLCJodmVjNCIsImR2ZWMy IiwiZHZlYzMiLCJkdmVjNCIsImZ2ZWMyIiwiZnZlYzMiLCJmdmVjNCIsInNh bXBsZXIyRFJlY3QiLCJzYW1wbGVyM0RSZWN0Iiwic2FtcGxlcjJEUmVjdFNo YWRvdyIsInNpemVvZiIsImNhc3QiLCJuYW1lc3BhY2UiLCJ1c2luZyJdfSx7 fV0sNDA5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPVsiPDw9IiwiPj49 IiwiKysiLCItLSIsIjw8IiwiPj4iLCI8PSIsIj49IiwiPT0iLCIhPSIsIiYm IiwifHwiLCIrPSIsIi09IiwiKj0iLCIvPSIsIiU9IiwiJj0iLCJeXiIsIl49 IiwifD0iLCIoIiwiKSIsIlsiLCJdIiwiLiIsIiEiLCJ+IiwiKiIsIi8iLCIl IiwiKyIsIi0iLCI8IiwiPiIsIiYiLCJeIiwifCIsIj8iLCI6IiwiPSIsIiwi LCI7IiwieyIsIn0iXX0se31dLDQxMDpbZnVuY3Rpb24odCxlLHIpe3ZhciBu PXQoIi4vaW5kZXgiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1u KGUpLGE9W107cmV0dXJuIGE9KGE9YS5jb25jYXQocih0KSkpLmNvbmNhdChy KG51bGwpKX19LHsiLi9pbmRleCI6NDA0fV0sNDExOltmdW5jdGlvbih0LGUs cil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYm KHQ9W3RdKTtmb3IodmFyIGU9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSks cj1bXSxuPTA7bjx0Lmxlbmd0aC0xO24rKylyLnB1c2godFtuXSxlW25dfHwi Iik7cmV0dXJuIHIucHVzaCh0W25dKSxyLmpvaW4oIiIpfX0se31dLDQxMjpb ZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihyKXsidXNlIHN0cmljdCI7dmFy IG4sYT10KCJpcy1icm93c2VyIik7bj0iZnVuY3Rpb24iPT10eXBlb2Ygci5t YXRjaE1lZGlhPyFyLm1hdGNoTWVkaWEoIihob3Zlcjogbm9uZSkiKS5tYXRj aGVzOmEsZS5leHBvcnRzPW59KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5 cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9z ZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsi aXMtYnJvd3NlciI6NDE5fV0sNDEzOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoImlzLWJyb3dzZXIiKTtlLmV4cG9ydHM9biYmZnVu Y3Rpb24oKXt2YXIgdD0hMTt0cnl7dmFyIGU9T2JqZWN0LmRlZmluZVByb3Bl cnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7dD0hMH19KTt3aW5k b3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCxlKSx3aW5kb3cucmVt b3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCxlKX1jYXRjaChlKXt0PSEx fXJldHVybiB0fSgpfSx7ImlzLWJyb3dzZXIiOjQxOX1dLDQxNDpbZnVuY3Rp b24odCxlLHIpe3IucmVhZD1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpLG8s cz04KmEtbi0xLGw9KDE8PHMpLTEsYz1sPj4xLHU9LTcsaD1yP2EtMTowLGY9 cj8tMToxLHA9dFtlK2hdO2ZvcihoKz1mLGk9cCYoMTw8LXUpLTEscD4+PS11 LHUrPXM7dT4wO2k9MjU2KmkrdFtlK2hdLGgrPWYsdS09OCk7Zm9yKG89aSYo MTw8LXUpLTEsaT4+PS11LHUrPW47dT4wO289MjU2Km8rdFtlK2hdLGgrPWYs dS09OCk7aWYoMD09PWkpaT0xLWM7ZWxzZXtpZihpPT09bClyZXR1cm4gbz9O YU46MS8wKihwPy0xOjEpO28rPU1hdGgucG93KDIsbiksaS09Y31yZXR1cm4o cD8tMToxKSpvKk1hdGgucG93KDIsaS1uKX0sci53cml0ZT1mdW5jdGlvbih0 LGUscixuLGEsaSl7dmFyIG8scyxsLGM9OCppLWEtMSx1PSgxPDxjKS0xLGg9 dT4+MSxmPTIzPT09YT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcp OjAscD1uPzA6aS0xLGQ9bj8xOi0xLGc9ZTwwfHwwPT09ZSYmMS9lPDA/MTow O2ZvcihlPU1hdGguYWJzKGUpLGlzTmFOKGUpfHxlPT09MS8wPyhzPWlzTmFO KGUpPzE6MCxvPXUpOihvPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5M TjIpLGUqKGw9TWF0aC5wb3coMiwtbykpPDEmJihvLS0sbCo9MiksKGUrPW8r aD49MT9mL2w6ZipNYXRoLnBvdygyLDEtaCkpKmw+PTImJihvKyssbC89Miks bytoPj11PyhzPTAsbz11KTpvK2g+PTE/KHM9KGUqbC0xKSpNYXRoLnBvdygy LGEpLG8rPWgpOihzPWUqTWF0aC5wb3coMixoLTEpKk1hdGgucG93KDIsYSks bz0wKSk7YT49ODt0W3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsYS09OCk7Zm9y KG89bzw8YXxzLGMrPWE7Yz4wO3RbcitwXT0yNTUmbyxwKz1kLG8vPTI1Nixj LT04KTt0W3IrcC1kXXw9MTI4Kmd9fSx7fV0sNDE1OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBy PXQubGVuZ3RoO2lmKDA9PT1yKXRocm93IG5ldyBFcnJvcigiTXVzdCBoYXZl IGF0IGxlYXN0IGQrMSBwb2ludHMiKTt2YXIgYT10WzBdLmxlbmd0aDtpZihy PD1hKXRocm93IG5ldyBFcnJvcigiTXVzdCBpbnB1dCBhdCBsZWFzdCBkKzEg cG9pbnRzIik7dmFyIG89dC5zbGljZSgwLGErMSkscz1uLmFwcGx5KHZvaWQg MCxvKTtpZigwPT09cyl0aHJvdyBuZXcgRXJyb3IoIklucHV0IG5vdCBpbiBn ZW5lcmFsIHBvc2l0aW9uIik7Zm9yKHZhciBsPW5ldyBBcnJheShhKzEpLHU9 MDt1PD1hOysrdSlsW3VdPXU7czwwJiYobFswXT0xLGxbMV09MCk7Zm9yKHZh ciBoPW5ldyBpKGwsbmV3IEFycmF5KGErMSksITEpLGY9aC5hZGphY2VudCxw PW5ldyBBcnJheShhKzIpLHU9MDt1PD1hOysrdSl7Zm9yKHZhciBkPWwuc2xp Y2UoKSxnPTA7Zzw9YTsrK2cpZz09PXUmJihkW2ddPS0xKTt2YXIgdj1kWzBd O2RbMF09ZFsxXSxkWzFdPXY7dmFyIG09bmV3IGkoZCxuZXcgQXJyYXkoYSsx KSwhMCk7Zlt1XT1tLHBbdV09bX1wW2ErMV09aDtmb3IodmFyIHU9MDt1PD1h OysrdSlmb3IodmFyIGQ9Zlt1XS52ZXJ0aWNlcyx5PWZbdV0uYWRqYWNlbnQs Zz0wO2c8PWE7KytnKXt2YXIgeD1kW2ddO2lmKHg8MCl5W2ddPWg7ZWxzZSBm b3IodmFyIGI9MDtiPD1hOysrYilmW2JdLnZlcnRpY2VzLmluZGV4T2YoeCk8 MCYmKHlbZ109ZltiXSl9Zm9yKHZhciBfPW5ldyBjKGEsbyxwKSx3PSEhZSx1 PWErMTt1PHI7Kyt1KV8uaW5zZXJ0KHRbdV0sdyk7cmV0dXJuIF8uYm91bmRh cnkoKX07dmFyIG49dCgicm9idXN0LW9yaWVudGF0aW9uIiksYT10KCJzaW1w bGljaWFsLWNvbXBsZXgiKS5jb21wYXJlQ2VsbHM7ZnVuY3Rpb24gaSh0LGUs cil7dGhpcy52ZXJ0aWNlcz10LHRoaXMuYWRqYWNlbnQ9ZSx0aGlzLmJvdW5k YXJ5PXIsdGhpcy5sYXN0VmlzaXRlZD0tMX1mdW5jdGlvbiBvKHQsZSxyKXt0 aGlzLnZlcnRpY2VzPXQsdGhpcy5jZWxsPWUsdGhpcy5pbmRleD1yfWZ1bmN0 aW9uIHModCxlKXtyZXR1cm4gYSh0LnZlcnRpY2VzLGUudmVydGljZXMpfWku cHJvdG90eXBlLmZsaXA9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnZlcnRpY2Vz WzBdO3RoaXMudmVydGljZXNbMF09dGhpcy52ZXJ0aWNlc1sxXSx0aGlzLnZl cnRpY2VzWzFdPXQ7dmFyIGU9dGhpcy5hZGphY2VudFswXTt0aGlzLmFkamFj ZW50WzBdPXRoaXMuYWRqYWNlbnRbMV0sdGhpcy5hZGphY2VudFsxXT1lfTt2 YXIgbD1bXTtmdW5jdGlvbiBjKHQsZSxyKXt0aGlzLmRpbWVuc2lvbj10LHRo aXMudmVydGljZXM9ZSx0aGlzLnNpbXBsaWNlcz1yLHRoaXMuaW50ZXJpb3I9 ci5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIXQuYm91bmRhcnl9KSx0aGlz LnR1cGxlPW5ldyBBcnJheSh0KzEpO2Zvcih2YXIgYT0wO2E8PXQ7KythKXRo aXMudHVwbGVbYV09dGhpcy52ZXJ0aWNlc1thXTt2YXIgaT1sW3RdO2l8fChp PWxbdF09ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVsiZnVuY3Rpb24gb3JpZW50 KCl7dmFyIHR1cGxlPXRoaXMudHVwbGU7cmV0dXJuIHRlc3QoIl0scj0wO3I8 PXQ7KytyKXI+MCYmZS5wdXNoKCIsIiksZS5wdXNoKCJ0dXBsZVsiLHIsIl0i KTtlLnB1c2goIil9cmV0dXJuIG9yaWVudCIpO3ZhciBhPW5ldyBGdW5jdGlv bigidGVzdCIsZS5qb2luKCIiKSksaT1uW3QrMV07cmV0dXJuIGl8fChpPW4p LGEoaSl9KHQpKSx0aGlzLm9yaWVudD1pfXZhciB1PWMucHJvdG90eXBlO3Uu aGFuZGxlQm91bmRhcnlEZWdlbmVyYWN5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9 dGhpcy5kaW1lbnNpb24sbj10aGlzLnZlcnRpY2VzLmxlbmd0aC0xLGE9dGhp cy50dXBsZSxpPXRoaXMudmVydGljZXMsbz1bdF07Zm9yKHQubGFzdFZpc2l0 ZWQ9LW47by5sZW5ndGg+MDspeyh0PW8ucG9wKCkpLnZlcnRpY2VzO2Zvcih2 YXIgcz10LmFkamFjZW50LGw9MDtsPD1yOysrbCl7dmFyIGM9c1tsXTtpZihj LmJvdW5kYXJ5JiYhKGMubGFzdFZpc2l0ZWQ8PS1uKSl7Zm9yKHZhciB1PWMu dmVydGljZXMsaD0wO2g8PXI7KytoKXt2YXIgZj11W2hdO2FbaF09ZjwwP2U6 aVtmXX12YXIgcD10aGlzLm9yaWVudCgpO2lmKHA+MClyZXR1cm4gYztjLmxh c3RWaXNpdGVkPS1uLDA9PT1wJiZvLnB1c2goYyl9fX1yZXR1cm4gbnVsbH0s dS53YWxrPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy52ZXJ0aWNlcy5sZW5n dGgtMSxuPXRoaXMuZGltZW5zaW9uLGE9dGhpcy52ZXJ0aWNlcyxpPXRoaXMu dHVwbGUsbz1lP3RoaXMuaW50ZXJpb3IubGVuZ3RoKk1hdGgucmFuZG9tKCl8 MDp0aGlzLmludGVyaW9yLmxlbmd0aC0xLHM9dGhpcy5pbnRlcmlvcltvXTt0 OmZvcig7IXMuYm91bmRhcnk7KXtmb3IodmFyIGw9cy52ZXJ0aWNlcyxjPXMu YWRqYWNlbnQsdT0wO3U8PW47Kyt1KWlbdV09YVtsW3VdXTtzLmxhc3RWaXNp dGVkPXI7Zm9yKHU9MDt1PD1uOysrdSl7dmFyIGg9Y1t1XTtpZighKGgubGFz dFZpc2l0ZWQ+PXIpKXt2YXIgZj1pW3VdO2lbdV09dDt2YXIgcD10aGlzLm9y aWVudCgpO2lmKGlbdV09ZixwPDApe3M9aDtjb250aW51ZSB0fWguYm91bmRh cnk/aC5sYXN0VmlzaXRlZD0tcjpoLmxhc3RWaXNpdGVkPXJ9fXJldHVybn1y ZXR1cm4gc30sdS5hZGRQZWFrcz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMu dmVydGljZXMubGVuZ3RoLTEsbj10aGlzLmRpbWVuc2lvbixhPXRoaXMudmVy dGljZXMsbD10aGlzLnR1cGxlLGM9dGhpcy5pbnRlcmlvcix1PXRoaXMuc2lt cGxpY2VzLGg9W2VdO2UubGFzdFZpc2l0ZWQ9cixlLnZlcnRpY2VzW2UudmVy dGljZXMuaW5kZXhPZigtMSldPXIsZS5ib3VuZGFyeT0hMSxjLnB1c2goZSk7 Zm9yKHZhciBmPVtdO2gubGVuZ3RoPjA7KXt2YXIgcD0oZT1oLnBvcCgpKS52 ZXJ0aWNlcyxkPWUuYWRqYWNlbnQsZz1wLmluZGV4T2Yocik7aWYoIShnPDAp KWZvcih2YXIgdj0wO3Y8PW47Kyt2KWlmKHYhPT1nKXt2YXIgbT1kW3ZdO2lm KG0uYm91bmRhcnkmJiEobS5sYXN0VmlzaXRlZD49cikpe3ZhciB5PW0udmVy dGljZXM7aWYobS5sYXN0VmlzaXRlZCE9PS1yKXtmb3IodmFyIHg9MCxiPTA7 Yjw9bjsrK2IpeVtiXTwwPyh4PWIsbFtiXT10KTpsW2JdPWFbeVtiXV07aWYo dGhpcy5vcmllbnQoKT4wKXt5W3hdPXIsbS5ib3VuZGFyeT0hMSxjLnB1c2go bSksaC5wdXNoKG0pLG0ubGFzdFZpc2l0ZWQ9cjtjb250aW51ZX1tLmxhc3RW aXNpdGVkPS1yfXZhciBfPW0uYWRqYWNlbnQsdz1wLnNsaWNlKCksaz1kLnNs aWNlKCksVD1uZXcgaSh3LGssITApO3UucHVzaChUKTt2YXIgTT1fLmluZGV4 T2YoZSk7aWYoIShNPDApKXtfW01dPVQsa1tnXT1tLHdbdl09LTEsa1t2XT1l LGRbdl09VCxULmZsaXAoKTtmb3IoYj0wO2I8PW47KytiKXt2YXIgQT13W2Jd O2lmKCEoQTwwfHxBPT09cikpe2Zvcih2YXIgUz1uZXcgQXJyYXkobi0xKSxF PTAsTD0wO0w8PW47KytMKXt2YXIgQz13W0xdO0M8MHx8TD09PWJ8fChTW0Ur K109Qyl9Zi5wdXNoKG5ldyBvKFMsVCxiKSl9fX19fX1mLnNvcnQocyk7Zm9y KHY9MDt2KzE8Zi5sZW5ndGg7dis9Mil7dmFyIFA9Zlt2XSxPPWZbdisxXSx6 PVAuaW5kZXgsST1PLmluZGV4O3o8MHx8STwwfHwoUC5jZWxsLmFkamFjZW50 W1AuaW5kZXhdPU8uY2VsbCxPLmNlbGwuYWRqYWNlbnRbTy5pbmRleF09UC5j ZWxsKX19LHUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy52ZXJ0 aWNlcztyLnB1c2godCk7dmFyIG49dGhpcy53YWxrKHQsZSk7aWYobil7Zm9y KHZhciBhPXRoaXMuZGltZW5zaW9uLGk9dGhpcy50dXBsZSxvPTA7bzw9YTsr K28pe3ZhciBzPW4udmVydGljZXNbb107aVtvXT1zPDA/dDpyW3NdfXZhciBs PXRoaXMub3JpZW50KGkpO2w8MHx8KDAhPT1sfHwobj10aGlzLmhhbmRsZUJv dW5kYXJ5RGVnZW5lcmFjeShuLHQpKSkmJnRoaXMuYWRkUGVha3ModCxuKX19 LHUuYm91bmRhcnk9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5kaW1lbnNp b24sZT1bXSxyPXRoaXMuc2ltcGxpY2VzLG49ci5sZW5ndGgsYT0wO2E8bjsr K2Epe3ZhciBpPXJbYV07aWYoaS5ib3VuZGFyeSl7Zm9yKHZhciBvPW5ldyBB cnJheSh0KSxzPWkudmVydGljZXMsbD0wLGM9MCx1PTA7dTw9dDsrK3Upc1t1 XT49MD9vW2wrK109c1t1XTpjPTEmdTtpZihjPT09KDEmdCkpe3ZhciBoPW9b MF07b1swXT1vWzFdLG9bMV09aH1lLnB1c2gobyl9fXJldHVybiBlfX0seyJy b2J1c3Qtb3JpZW50YXRpb24iOjUwOSwic2ltcGxpY2lhbC1jb21wbGV4Ijo1 MTl9XSw0MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiYmluYXJ5LXNlYXJjaC1ib3VuZHMiKSxhPTAsaT0xO2Z1bmN0aW9uIG8o dCxlLHIsbixhKXt0aGlzLm1pZD10LHRoaXMubGVmdD1lLHRoaXMucmlnaHQ9 cix0aGlzLmxlZnRQb2ludHM9bix0aGlzLnJpZ2h0UG9pbnRzPWEsdGhpcy5j b3VudD0oZT9lLmNvdW50OjApKyhyP3IuY291bnQ6MCkrbi5sZW5ndGh9ZS5l eHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCF0fHwwPT09dC5sZW5ndGgpcmV0dXJu IG5ldyB4KG51bGwpO3JldHVybiBuZXcgeCh5KHQpKX07dmFyIHM9by5wcm90 b3R5cGU7ZnVuY3Rpb24gbCh0LGUpe3QubWlkPWUubWlkLHQubGVmdD1lLmxl ZnQsdC5yaWdodD1lLnJpZ2h0LHQubGVmdFBvaW50cz1lLmxlZnRQb2ludHMs dC5yaWdodFBvaW50cz1lLnJpZ2h0UG9pbnRzLHQuY291bnQ9ZS5jb3VudH1m dW5jdGlvbiBjKHQsZSl7dmFyIHI9eShlKTt0Lm1pZD1yLm1pZCx0LmxlZnQ9 ci5sZWZ0LHQucmlnaHQ9ci5yaWdodCx0LmxlZnRQb2ludHM9ci5sZWZ0UG9p bnRzLHQucmlnaHRQb2ludHM9ci5yaWdodFBvaW50cyx0LmNvdW50PXIuY291 bnR9ZnVuY3Rpb24gdSh0LGUpe3ZhciByPXQuaW50ZXJ2YWxzKFtdKTtyLnB1 c2goZSksYyh0LHIpfWZ1bmN0aW9uIGgodCxlKXt2YXIgcj10LmludGVydmFs cyhbXSksbj1yLmluZGV4T2YoZSk7cmV0dXJuIG48MD9hOihyLnNwbGljZShu LDEpLGModCxyKSxpKX1mdW5jdGlvbiBmKHQsZSxyKXtmb3IodmFyIG49MDtu PHQubGVuZ3RoJiZ0W25dWzBdPD1lOysrbil7dmFyIGE9cih0W25dKTtpZihh KXJldHVybiBhfX1mdW5jdGlvbiBwKHQsZSxyKXtmb3IodmFyIG49dC5sZW5n dGgtMTtuPj0wJiZ0W25dWzFdPj1lOy0tbil7dmFyIGE9cih0W25dKTtpZihh KXJldHVybiBhfX1mdW5jdGlvbiBkKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxl bmd0aDsrK3Ipe3ZhciBuPWUodFtyXSk7aWYobilyZXR1cm4gbn19ZnVuY3Rp b24gZyh0LGUpe3JldHVybiB0LWV9ZnVuY3Rpb24gdih0LGUpe3ZhciByPXRb MF0tZVswXTtyZXR1cm4gcnx8dFsxXS1lWzFdfWZ1bmN0aW9uIG0odCxlKXt2 YXIgcj10WzFdLWVbMV07cmV0dXJuIHJ8fHRbMF0tZVswXX1mdW5jdGlvbiB5 KHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IodmFyIGU9W10s cj0wO3I8dC5sZW5ndGg7KytyKWUucHVzaCh0W3JdWzBdLHRbcl1bMV0pO2Uu c29ydChnKTt2YXIgbj1lW2UubGVuZ3RoPj4xXSxhPVtdLGk9W10scz1bXTtm b3Iocj0wO3I8dC5sZW5ndGg7KytyKXt2YXIgbD10W3JdO2xbMV08bj9hLnB1 c2gobCk6bjxsWzBdP2kucHVzaChsKTpzLnB1c2gobCl9dmFyIGM9cyx1PXMu c2xpY2UoKTtyZXR1cm4gYy5zb3J0KHYpLHUuc29ydChtKSxuZXcgbyhuLHko YSkseShpKSxjLHUpfWZ1bmN0aW9uIHgodCl7dGhpcy5yb290PXR9cy5pbnRl cnZhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQucHVzaC5hcHBseSh0LHRoaXMu bGVmdFBvaW50cyksdGhpcy5sZWZ0JiZ0aGlzLmxlZnQuaW50ZXJ2YWxzKHQp LHRoaXMucmlnaHQmJnRoaXMucmlnaHQuaW50ZXJ2YWxzKHQpLHR9LHMuaW5z ZXJ0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY291bnQtdGhpcy5sZWZ0UG9p bnRzLmxlbmd0aDtpZih0aGlzLmNvdW50Kz0xLHRbMV08dGhpcy5taWQpdGhp cy5sZWZ0PzQqKHRoaXMubGVmdC5jb3VudCsxKT4zKihlKzEpP3UodGhpcyx0 KTp0aGlzLmxlZnQuaW5zZXJ0KHQpOnRoaXMubGVmdD15KFt0XSk7ZWxzZSBp Zih0WzBdPnRoaXMubWlkKXRoaXMucmlnaHQ/NCoodGhpcy5yaWdodC5jb3Vu dCsxKT4zKihlKzEpP3UodGhpcyx0KTp0aGlzLnJpZ2h0Lmluc2VydCh0KTp0 aGlzLnJpZ2h0PXkoW3RdKTtlbHNle3ZhciByPW4uZ2UodGhpcy5sZWZ0UG9p bnRzLHQsdiksYT1uLmdlKHRoaXMucmlnaHRQb2ludHMsdCxtKTt0aGlzLmxl ZnRQb2ludHMuc3BsaWNlKHIsMCx0KSx0aGlzLnJpZ2h0UG9pbnRzLnNwbGlj ZShhLDAsdCl9fSxzLnJlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNv dW50LXRoaXMubGVmdFBvaW50cztpZih0WzFdPHRoaXMubWlkKXJldHVybiB0 aGlzLmxlZnQ/NCoodGhpcy5yaWdodD90aGlzLnJpZ2h0LmNvdW50OjApPjMq KGUtMSk/aCh0aGlzLHQpOjI9PT0oYz10aGlzLmxlZnQucmVtb3ZlKHQpKT8o dGhpcy5sZWZ0PW51bGwsdGhpcy5jb3VudC09MSxpKTooYz09PWkmJih0aGlz LmNvdW50LT0xKSxjKTphO2lmKHRbMF0+dGhpcy5taWQpcmV0dXJuIHRoaXMu cmlnaHQ/NCoodGhpcy5sZWZ0P3RoaXMubGVmdC5jb3VudDowKT4zKihlLTEp P2godGhpcyx0KToyPT09KGM9dGhpcy5yaWdodC5yZW1vdmUodCkpPyh0aGlz LnJpZ2h0PW51bGwsdGhpcy5jb3VudC09MSxpKTooYz09PWkmJih0aGlzLmNv dW50LT0xKSxjKTphO2lmKDE9PT10aGlzLmNvdW50KXJldHVybiB0aGlzLmxl ZnRQb2ludHNbMF09PT10PzI6YTtpZigxPT09dGhpcy5sZWZ0UG9pbnRzLmxl bmd0aCYmdGhpcy5sZWZ0UG9pbnRzWzBdPT09dCl7aWYodGhpcy5sZWZ0JiZ0 aGlzLnJpZ2h0KXtmb3IodmFyIHI9dGhpcyxvPXRoaXMubGVmdDtvLnJpZ2h0 OylyPW8sbz1vLnJpZ2h0O2lmKHI9PT10aGlzKW8ucmlnaHQ9dGhpcy5yaWdo dDtlbHNle3ZhciBzPXRoaXMubGVmdCxjPXRoaXMucmlnaHQ7ci5jb3VudC09 by5jb3VudCxyLnJpZ2h0PW8ubGVmdCxvLmxlZnQ9cyxvLnJpZ2h0PWN9bCh0 aGlzLG8pLHRoaXMuY291bnQ9KHRoaXMubGVmdD90aGlzLmxlZnQuY291bnQ6 MCkrKHRoaXMucmlnaHQ/dGhpcy5yaWdodC5jb3VudDowKSt0aGlzLmxlZnRQ b2ludHMubGVuZ3RofWVsc2UgdGhpcy5sZWZ0P2wodGhpcyx0aGlzLmxlZnQp OmwodGhpcyx0aGlzLnJpZ2h0KTtyZXR1cm4gaX1mb3Iocz1uLmdlKHRoaXMu bGVmdFBvaW50cyx0LHYpO3M8dGhpcy5sZWZ0UG9pbnRzLmxlbmd0aCYmdGhp cy5sZWZ0UG9pbnRzW3NdWzBdPT09dFswXTsrK3MpaWYodGhpcy5sZWZ0UG9p bnRzW3NdPT09dCl7dGhpcy5jb3VudC09MSx0aGlzLmxlZnRQb2ludHMuc3Bs aWNlKHMsMSk7Zm9yKGM9bi5nZSh0aGlzLnJpZ2h0UG9pbnRzLHQsbSk7Yzx0 aGlzLnJpZ2h0UG9pbnRzLmxlbmd0aCYmdGhpcy5yaWdodFBvaW50c1tjXVsx XT09PXRbMV07KytjKWlmKHRoaXMucmlnaHRQb2ludHNbY109PT10KXJldHVy biB0aGlzLnJpZ2h0UG9pbnRzLnNwbGljZShjLDEpLGl9cmV0dXJuIGF9LHMu cXVlcnlQb2ludD1mdW5jdGlvbih0LGUpe2lmKHQ8dGhpcy5taWQpe2lmKHRo aXMubGVmdClpZihyPXRoaXMubGVmdC5xdWVyeVBvaW50KHQsZSkpcmV0dXJu IHI7cmV0dXJuIGYodGhpcy5sZWZ0UG9pbnRzLHQsZSl9aWYodD50aGlzLm1p ZCl7dmFyIHI7aWYodGhpcy5yaWdodClpZihyPXRoaXMucmlnaHQucXVlcnlQ b2ludCh0LGUpKXJldHVybiByO3JldHVybiBwKHRoaXMucmlnaHRQb2ludHMs dCxlKX1yZXR1cm4gZCh0aGlzLmxlZnRQb2ludHMsZSl9LHMucXVlcnlJbnRl cnZhbD1mdW5jdGlvbih0LGUscil7dmFyIG47aWYodDx0aGlzLm1pZCYmdGhp cy5sZWZ0JiYobj10aGlzLmxlZnQucXVlcnlJbnRlcnZhbCh0LGUscikpKXJl dHVybiBuO2lmKGU+dGhpcy5taWQmJnRoaXMucmlnaHQmJihuPXRoaXMucmln aHQucXVlcnlJbnRlcnZhbCh0LGUscikpKXJldHVybiBuO3JldHVybiBlPHRo aXMubWlkP2YodGhpcy5sZWZ0UG9pbnRzLGUscik6dD50aGlzLm1pZD9wKHRo aXMucmlnaHRQb2ludHMsdCxyKTpkKHRoaXMubGVmdFBvaW50cyxyKX07dmFy IGI9eC5wcm90b3R5cGU7Yi5pbnNlcnQ9ZnVuY3Rpb24odCl7dGhpcy5yb290 P3RoaXMucm9vdC5pbnNlcnQodCk6dGhpcy5yb290PW5ldyBvKHRbMF0sbnVs bCxudWxsLFt0XSxbdF0pfSxiLnJlbW92ZT1mdW5jdGlvbih0KXtpZih0aGlz LnJvb3Qpe3ZhciBlPXRoaXMucm9vdC5yZW1vdmUodCk7cmV0dXJuIDI9PT1l JiYodGhpcy5yb290PW51bGwpLGUhPT1hfXJldHVybiExfSxiLnF1ZXJ5UG9p bnQ9ZnVuY3Rpb24odCxlKXtpZih0aGlzLnJvb3QpcmV0dXJuIHRoaXMucm9v dC5xdWVyeVBvaW50KHQsZSl9LGIucXVlcnlJbnRlcnZhbD1mdW5jdGlvbih0 LGUscil7aWYodDw9ZSYmdGhpcy5yb290KXJldHVybiB0aGlzLnJvb3QucXVl cnlJbnRlcnZhbCh0LGUscil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJj b3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3Q/dGhpcy5y b290LmNvdW50OjB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGIsImludGVy dmFscyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3Q/dGhpcy5y b290LmludGVydmFscyhbXSk6W119fSl9LHsiYmluYXJ5LXNlYXJjaC1ib3Vu ZHMiOjkzfV0sNDE3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe2U9ZXx8bmV3IEFycmF5KHQubGVuZ3Ro KTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcillW3Rbcl1dPXI7cmV0dXJu IGV9fSx7fV0sNDE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9 MDtyPHQ7KytyKWVbcl09cjtyZXR1cm4gZX19LHt9XSw0MTk6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ITB9LHt9XSw0MjA6W2Z1bmN0aW9uKHQsZSxy KXtmdW5jdGlvbiBuKHQpe3JldHVybiEhdC5jb25zdHJ1Y3RvciYmImZ1bmN0 aW9uIj09dHlwZW9mIHQuY29uc3RydWN0b3IuaXNCdWZmZXImJnQuY29uc3Ry dWN0b3IuaXNCdWZmZXIodCl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVy biBudWxsIT10JiYobih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9u Ij09dHlwZW9mIHQucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0 LnNsaWNlJiZuKHQuc2xpY2UoMCwwKSl9KHQpfHwhIXQuX2lzQnVmZmVyKX19 LHt9XSw0MjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBv cnRzPSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYoL01TSUUvLnRl c3QobmF2aWdhdG9yLnVzZXJBZ2VudCl8fC9UcmlkZW50XC8vLnRlc3QobmF2 aWdhdG9yLmFwcFZlcnNpb24pKX0se31dLDQyMjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9aSxlLmV4cG9ydHMuaXNNb2JpbGU9 aSxlLmV4cG9ydHMuZGVmYXVsdD1pO3ZhciBuPS8oYW5kcm9pZHxiYlxkK3xt ZWVnbykuK21vYmlsZXxhdmFudGdvfGJhZGFcL3xibGFja2JlcnJ5fGJsYXpl cnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9u ZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUu K2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98 cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllc1s0 Nl0wfHN5bWJpYW58dHJlb3x1cFwuKGJyb3dzZXJ8bGluayl8dm9kYWZvbmV8 d2FwfHdpbmRvd3MgKGNlfHBob25lKXx4ZGF8eGlpbm8vaSxhPS8oYW5kcm9p ZHxiYlxkK3xtZWVnbykuK21vYmlsZXxhdmFudGdvfGJhZGFcL3xibGFja2Jl cnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2Jp bGV8aXAoaG9uZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1t cHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBh bG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNw fHNlcmllc1s0Nl0wfHN5bWJpYW58dHJlb3x1cFwuKGJyb3dzZXJ8bGluayl8 dm9kYWZvbmV8d2FwfHdpbmRvd3MgKGNlfHBob25lKXx4ZGF8eGlpbm98YW5k cm9pZHxpcGFkfHBsYXlib29rfHNpbGsvaTtmdW5jdGlvbiBpKHQpe3R8fCh0 PXt9KTt2YXIgZT10LnVhO3JldHVybiBlfHwidW5kZWZpbmVkIj09dHlwZW9m IG5hdmlnYXRvcnx8KGU9bmF2aWdhdG9yLnVzZXJBZ2VudCksZSYmZS5oZWFk ZXJzJiYic3RyaW5nIj09dHlwZW9mIGUuaGVhZGVyc1sidXNlci1hZ2VudCJd JiYoZT1lLmhlYWRlcnNbInVzZXItYWdlbnQiXSksInN0cmluZyI9PXR5cGVv ZiBlJiYodC50YWJsZXQ/YS50ZXN0KGUpOm4udGVzdChlKSl9fSx7fV0sNDIz OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5j dGlvbih0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9PXQmJigib2Jq ZWN0Ij09PWV8fCJmdW5jdGlvbiI9PT1lKX19LHt9XSw0MjQ6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50 b1N0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIltv YmplY3QgT2JqZWN0XSI9PT1uLmNhbGwodCkmJihudWxsPT09KGU9T2JqZWN0 LmdldFByb3RvdHlwZU9mKHQpKXx8ZT09PU9iamVjdC5nZXRQcm90b3R5cGVP Zih7fSkpfX0se31dLDQyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9dC5sZW5ndGgs bj0wO248cjtuKyspaWYoKChlPXQuY2hhckNvZGVBdChuKSk8OXx8ZT4xMykm JjMyIT09ZSYmMTMzIT09ZSYmMTYwIT09ZSYmNTc2MCE9PWUmJjYxNTghPT1l JiYoZTw4MTkyfHxlPjgyMDUpJiY4MjMyIT09ZSYmODIzMyE9PWUmJjgyMzkh PT1lJiY4Mjg3IT09ZSYmODI4OCE9PWUmJjEyMjg4IT09ZSYmNjUyNzkhPT1l KXJldHVybiExO3JldHVybiEwfX0se31dLDQyNjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuInN0 cmluZyI9PXR5cGVvZiB0JiYodD10LnRyaW0oKSwhISgvXlttemxodmNzcXRh XVxzKlstKy4wLTldW15tbGh2emNzcXRhXSsvaS50ZXN0KHQpJiYvW1xkel0k L2kudGVzdCh0KSYmdC5sZW5ndGg+NCkpfX0se31dLDQyNzpbZnVuY3Rpb24o dCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQqKDEt cikrZSpyfX0se31dLDQyODpbZnVuY3Rpb24odCxlLHIpe3ZhciBuLGE7bj10 aGlzLGE9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQsZSxyO2Z1bmN0 aW9uIG4obixhKXtpZih0KWlmKGUpe3ZhciBpPSJ2YXIgc2hhcmVkQ2h1bmsg PSB7fTsgKCIrdCsiKShzaGFyZWRDaHVuayk7ICgiK2UrIikoc2hhcmVkQ2h1 bmspOyIsbz17fTt0KG8pLChyPWEobykpLndvcmtlclVybD13aW5kb3cuVVJM LmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbaV0se3R5cGU6InRleHQvamF2 YXNjcmlwdCJ9KSl9ZWxzZSBlPWE7ZWxzZSB0PWF9cmV0dXJuIG4oMCxmdW5j dGlvbih0KXtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIHQoZT17ZXhwb3J0czp7 fX0sZS5leHBvcnRzKSxlLmV4cG9ydHN9dmFyIHI9bjtmdW5jdGlvbiBuKHQs ZSxyLG4pe3RoaXMuY3g9Myp0LHRoaXMuYng9Myooci10KS10aGlzLmN4LHRo aXMuYXg9MS10aGlzLmN4LXRoaXMuYngsdGhpcy5jeT0zKmUsdGhpcy5ieT0z KihuLWUpLXRoaXMuY3ksdGhpcy5heT0xLXRoaXMuY3ktdGhpcy5ieSx0aGlz LnAxeD10LHRoaXMucDF5PW4sdGhpcy5wMng9cix0aGlzLnAyeT1ufW4ucHJv dG90eXBlLnNhbXBsZUN1cnZlWD1mdW5jdGlvbih0KXtyZXR1cm4oKHRoaXMu YXgqdCt0aGlzLmJ4KSp0K3RoaXMuY3gpKnR9LG4ucHJvdG90eXBlLnNhbXBs ZUN1cnZlWT1mdW5jdGlvbih0KXtyZXR1cm4oKHRoaXMuYXkqdCt0aGlzLmJ5 KSp0K3RoaXMuY3kpKnR9LG4ucHJvdG90eXBlLnNhbXBsZUN1cnZlRGVyaXZh dGl2ZVg9ZnVuY3Rpb24odCl7cmV0dXJuKDMqdGhpcy5heCp0KzIqdGhpcy5i eCkqdCt0aGlzLmN4fSxuLnByb3RvdHlwZS5zb2x2ZUN1cnZlWD1mdW5jdGlv bih0LGUpe3ZhciByLG4sYSxpLG87Zm9yKHZvaWQgMD09PWUmJihlPTFlLTYp LGE9dCxvPTA7bzw4O28rKyl7aWYoaT10aGlzLnNhbXBsZUN1cnZlWChhKS10 LE1hdGguYWJzKGkpPGUpcmV0dXJuIGE7dmFyIHM9dGhpcy5zYW1wbGVDdXJ2 ZURlcml2YXRpdmVYKGEpO2lmKE1hdGguYWJzKHMpPDFlLTYpYnJlYWs7YS09 aS9zfWlmKChhPXQpPChyPTApKXJldHVybiByO2lmKGE+KG49MSkpcmV0dXJu IG47Zm9yKDtyPG47KXtpZihpPXRoaXMuc2FtcGxlQ3VydmVYKGEpLE1hdGgu YWJzKGktdCk8ZSlyZXR1cm4gYTt0Pmk/cj1hOm49YSxhPS41KihuLXIpK3J9 cmV0dXJuIGF9LG4ucHJvdG90eXBlLnNvbHZlPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHRoaXMuc2FtcGxlQ3VydmVZKHRoaXMuc29sdmVDdXJ2ZVgodCxlKSl9 O3ZhciBhPWk7ZnVuY3Rpb24gaSh0LGUpe3RoaXMueD10LHRoaXMueT1lfWZ1 bmN0aW9uIG8odCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXtpZighQXJyYXku aXNBcnJheShlKXx8dC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3Io dmFyIHI9MDtyPHQubGVuZ3RoO3IrKylpZighbyh0W3JdLGVbcl0pKXJldHVy biExO3JldHVybiEwfWlmKCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXQm Jm51bGwhPT1lKXtpZigib2JqZWN0IiE9dHlwZW9mIGUpcmV0dXJuITE7aWYo T2JqZWN0LmtleXModCkubGVuZ3RoIT09T2JqZWN0LmtleXMoZSkubGVuZ3Ro KXJldHVybiExO2Zvcih2YXIgbiBpbiB0KWlmKCFvKHRbbl0sZVtuXSkpcmV0 dXJuITE7cmV0dXJuITB9cmV0dXJuIHQ9PT1lfWZ1bmN0aW9uIHModCxlLG4s YSl7dmFyIGk9bmV3IHIodCxlLG4sYSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3Jl dHVybiBpLnNvbHZlKHQpfX1pLnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24o KXtyZXR1cm4gbmV3IGkodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0 KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9hZGQodCl9LHN1YjpmdW5jdGlvbih0 KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9zdWIodCl9LG11bHRCeVBvaW50OmZ1 bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX211bHRCeVBvaW50KHQp fSxkaXZCeVBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCku X2RpdkJ5UG9pbnQodCl9LG11bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu Y2xvbmUoKS5fbXVsdCh0KX0sZGl2OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlz LmNsb25lKCkuX2Rpdih0KX0scm90YXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0 aGlzLmNsb25lKCkuX3JvdGF0ZSh0KX0scm90YXRlQXJvdW5kOmZ1bmN0aW9u KHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcm90YXRlQXJvdW5kKHQsZSl9 LG1hdE11bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fbWF0 TXVsdCh0KX0sdW5pdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCku X3VuaXQoKX0scGVycDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCku X3BlcnAoKX0scm91bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgp Ll9yb3VuZCgpfSxtYWc6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5zcXJ0KHRo aXMueCp0aGlzLngrdGhpcy55KnRoaXMueSl9LGVxdWFsczpmdW5jdGlvbih0 KXtyZXR1cm4gdGhpcy54PT09dC54JiZ0aGlzLnk9PT10Lnl9LGRpc3Q6ZnVu Y3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RTcXIodCkpfSxk aXN0U3FyOmZ1bmN0aW9uKHQpe3ZhciBlPXQueC10aGlzLngscj10LnktdGhp cy55O3JldHVybiBlKmUrcipyfSxhbmdsZTpmdW5jdGlvbigpe3JldHVybiBN YXRoLmF0YW4yKHRoaXMueSx0aGlzLngpfSxhbmdsZVRvOmZ1bmN0aW9uKHQp e3JldHVybiBNYXRoLmF0YW4yKHRoaXMueS10LnksdGhpcy54LXQueCl9LGFu Z2xlV2l0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hbmdsZVdpdGhTZXAo dC54LHQueSl9LGFuZ2xlV2l0aFNlcDpmdW5jdGlvbih0LGUpe3JldHVybiBN YXRoLmF0YW4yKHRoaXMueCplLXRoaXMueSp0LHRoaXMueCp0K3RoaXMueSpl KX0sX21hdE11bHQ6ZnVuY3Rpb24odCl7dmFyIGU9dFswXSp0aGlzLngrdFsx XSp0aGlzLnkscj10WzJdKnRoaXMueCt0WzNdKnRoaXMueTtyZXR1cm4gdGhp cy54PWUsdGhpcy55PXIsdGhpc30sX2FkZDpmdW5jdGlvbih0KXtyZXR1cm4g dGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpc30sX3N1YjpmdW5jdGlvbih0 KXtyZXR1cm4gdGhpcy54LT10LngsdGhpcy55LT10LnksdGhpc30sX211bHQ6 ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc30s X2RpdjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Lz10LHRoaXMueS89dCx0 aGlzfSxfbXVsdEJ5UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCo9 dC54LHRoaXMueSo9dC55LHRoaXN9LF9kaXZCeVBvaW50OmZ1bmN0aW9uKHQp e3JldHVybiB0aGlzLngvPXQueCx0aGlzLnkvPXQueSx0aGlzfSxfdW5pdDpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9kaXYodGhpcy5tYWcoKSksdGhpc30s X3BlcnA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnk7cmV0dXJuIHRoaXMueT10 aGlzLngsdGhpcy54PS10LHRoaXN9LF9yb3RhdGU6ZnVuY3Rpb24odCl7dmFy IGU9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KSxuPWUqdGhpcy54LXIqdGhp cy55LGE9cip0aGlzLngrZSp0aGlzLnk7cmV0dXJuIHRoaXMueD1uLHRoaXMu eT1hLHRoaXN9LF9yb3RhdGVBcm91bmQ6ZnVuY3Rpb24odCxlKXt2YXIgcj1N YXRoLmNvcyh0KSxuPU1hdGguc2luKHQpLGE9ZS54K3IqKHRoaXMueC1lLngp LW4qKHRoaXMueS1lLnkpLGk9ZS55K24qKHRoaXMueC1lLngpK3IqKHRoaXMu eS1lLnkpO3JldHVybiB0aGlzLng9YSx0aGlzLnk9aSx0aGlzfSxfcm91bmQ6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0 aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9fSxpLmNvbnZlcnQ9ZnVu Y3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBpP3Q6QXJyYXkuaXNBcnJh eSh0KT9uZXcgaSh0WzBdLHRbMV0pOnR9O3ZhciBsPXMoLjI1LC4xLC4yNSwx KTtmdW5jdGlvbiBjKHQsZSxyKXtyZXR1cm4gTWF0aC5taW4ocixNYXRoLm1h eChlLHQpKX1mdW5jdGlvbiB1KHQsZSxyKXt2YXIgbj1yLWUsYT0oKHQtZSkl bituKSVuK2U7cmV0dXJuIGE9PT1lP3I6YX1mdW5jdGlvbiBoKHQpe2Zvcih2 YXIgZT1bXSxyPWFyZ3VtZW50cy5sZW5ndGgtMTtyLS0gPjA7KWVbcl09YXJn dW1lbnRzW3IrMV07Zm9yKHZhciBuPTAsYT1lO248YS5sZW5ndGg7bis9MSl7 dmFyIGk9YVtuXTtmb3IodmFyIG8gaW4gaSl0W29dPWlbb119cmV0dXJuIHR9 dmFyIGY9MTtmdW5jdGlvbiBwKCl7cmV0dXJuIGYrK31mdW5jdGlvbiBkKCl7 cmV0dXJuIGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGU/KGVeMTYqTWF0aC5yYW5k b20oKT4+ZS80KS50b1N0cmluZygxNik6KFsxZTddKy1bMWUzXSstNGUzKy04 ZTMrLTFlMTEpLnJlcGxhY2UoL1swMThdL2csdCl9KCl9ZnVuY3Rpb24gZyh0 KXtyZXR1cm4hIXQmJi9eWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzRdWzAt OWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9JC9pLnRl c3QodCl9ZnVuY3Rpb24gdih0LGUpe3QuZm9yRWFjaChmdW5jdGlvbih0KXtl W3RdJiYoZVt0XT1lW3RdLmJpbmQoZSkpfSl9ZnVuY3Rpb24gbSh0LGUpe3Jl dHVybi0xIT09dC5pbmRleE9mKGUsdC5sZW5ndGgtZS5sZW5ndGgpfWZ1bmN0 aW9uIHkodCxlLHIpe3ZhciBuPXt9O2Zvcih2YXIgYSBpbiB0KW5bYV09ZS5j YWxsKHJ8fHRoaXMsdFthXSxhLHQpO3JldHVybiBufWZ1bmN0aW9uIHgodCxl LHIpe3ZhciBuPXt9O2Zvcih2YXIgYSBpbiB0KWUuY2FsbChyfHx0aGlzLHRb YV0sYSx0KSYmKG5bYV09dFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gYih0KXty ZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lm1hcChiKToib2JqZWN0Ij09dHlw ZW9mIHQmJnQ/eSh0LGIpOnR9dmFyIF89e307ZnVuY3Rpb24gdyh0KXtfW3Rd fHwoInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLndhcm4o dCksX1t0XT0hMCl9ZnVuY3Rpb24gayh0LGUscil7cmV0dXJuKHIueS10Lnkp KihlLngtdC54KT4oZS55LXQueSkqKHIueC10LngpfWZ1bmN0aW9uIFQodCl7 Zm9yKHZhciBlPTAscj0wLG49dC5sZW5ndGgsYT1uLTEsaT12b2lkIDAsbz12 b2lkIDA7cjxuO2E9cisrKWk9dFtyXSxlKz0oKG89dFthXSkueC1pLngpKihp Lnkrby55KTtyZXR1cm4gZX1mdW5jdGlvbiBNKHQpe3ZhciBlPXt9O2lmKHQu cmVwbGFjZSgvKD86XnwoPzpccypcLFxzKikpKFteXHgwMC1ceDIwXChcKTw+ QFwsO1w6XFwiXC9cW1xdXD9cPVx7XH1ceDdGXSspKD86XD0oPzooW15ceDAw LVx4MjBcKFwpPD5AXCw7XDpcXCJcL1xbXF1cP1w9XHtcfVx4N0ZdKyl8KD86 XCIoKD86W14iXFxdfFxcLikqKVwiKSkpPy9nLGZ1bmN0aW9uKHQscixuLGEp e3ZhciBpPW58fGE7cmV0dXJuIGVbcl09IWl8fGkudG9Mb3dlckNhc2UoKSwi In0pLGVbIm1heC1hZ2UiXSl7dmFyIHI9cGFyc2VJbnQoZVsibWF4LWFnZSJd LDEwKTtpc05hTihyKT9kZWxldGUgZVsibWF4LWFnZSJdOmVbIm1heC1hZ2Ui XT1yfXJldHVybiBlfWZ1bmN0aW9uIEEodCl7dHJ5e3ZhciBlPXNlbGZbdF07 cmV0dXJuIGUuc2V0SXRlbSgiX21hcGJveF90ZXN0XyIsMSksZS5yZW1vdmVJ dGVtKCJfbWFwYm94X3Rlc3RfIiksITB9Y2F0Y2godCl7cmV0dXJuITF9fXZh ciBTLEUsTCxDLFA9c2VsZi5wZXJmb3JtYW5jZSYmc2VsZi5wZXJmb3JtYW5j ZS5ub3c/c2VsZi5wZXJmb3JtYW5jZS5ub3cuYmluZChzZWxmLnBlcmZvcm1h bmNlKTpEYXRlLm5vdy5iaW5kKERhdGUpLE89c2VsZi5yZXF1ZXN0QW5pbWF0 aW9uRnJhbWV8fHNlbGYubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxzZWxm LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZXx8c2VsZi5tc1JlcXVlc3RB bmltYXRpb25GcmFtZSx6PXNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fHNl bGYubW96Q2FuY2VsQW5pbWF0aW9uRnJhbWV8fHNlbGYud2Via2l0Q2FuY2Vs QW5pbWF0aW9uRnJhbWV8fHNlbGYubXNDYW5jZWxBbmltYXRpb25GcmFtZSxJ PXtub3c6UCxmcmFtZTpmdW5jdGlvbih0KXt2YXIgZT1PKHQpO3JldHVybntj YW5jZWw6ZnVuY3Rpb24oKXtyZXR1cm4geihlKX19fSxnZXRJbWFnZURhdGE6 ZnVuY3Rpb24odCl7dmFyIGU9c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCJjYW52YXMiKSxyPWUuZ2V0Q29udGV4dCgiMmQiKTtpZighcil0aHJvdyBu ZXcgRXJyb3IoImZhaWxlZCB0byBjcmVhdGUgY2FudmFzIDJkIGNvbnRleHQi KTtyZXR1cm4gZS53aWR0aD10LndpZHRoLGUuaGVpZ2h0PXQuaGVpZ2h0LHIu ZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLHIuZ2V0SW1hZ2VE YXRhKDAsMCx0LndpZHRoLHQuaGVpZ2h0KX0scmVzb2x2ZVVSTDpmdW5jdGlv bih0KXtyZXR1cm4gU3x8KFM9c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCJhIikpLFMuaHJlZj10LFMuaHJlZn0saGFyZHdhcmVDb25jdXJyZW5jeTpz ZWxmLm5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5fHw0LGdldCBkZXZp Y2VQaXhlbFJhdGlvKCl7cmV0dXJuIHNlbGYuZGV2aWNlUGl4ZWxSYXRpb30s Z2V0IHByZWZlcnNSZWR1Y2VkTW90aW9uKCl7cmV0dXJuISFzZWxmLm1hdGNo TWVkaWEmJihudWxsPT1FJiYoRT1zZWxmLm1hdGNoTWVkaWEoIihwcmVmZXJz LXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIikpLEUubWF0Y2hlcyl9fSxEPXtB UElfVVJMOiJodHRwczovL2FwaS5tYXBib3guY29tIixnZXQgRVZFTlRTX1VS TCgpe3JldHVybiB0aGlzLkFQSV9VUkw/MD09PXRoaXMuQVBJX1VSTC5pbmRl eE9mKCJodHRwczovL2FwaS5tYXBib3guY24iKT8iaHR0cHM6Ly9ldmVudHMu bWFwYm94LmNuL2V2ZW50cy92MiI6MD09PXRoaXMuQVBJX1VSTC5pbmRleE9m KCJodHRwczovL2FwaS5tYXBib3guY29tIik/Imh0dHBzOi8vZXZlbnRzLm1h cGJveC5jb20vZXZlbnRzL3YyIjpudWxsOm51bGx9LEZFRURCQUNLX1VSTDoi aHR0cHM6Ly9hcHBzLm1hcGJveC5jb20vZmVlZGJhY2siLFJFUVVJUkVfQUND RVNTX1RPS0VOOiEwLEFDQ0VTU19UT0tFTjpudWxsLE1BWF9QQVJBTExFTF9J TUFHRV9SRVFVRVNUUzoxNn0sUj17c3VwcG9ydGVkOiExLHRlc3RTdXBwb3J0 OmZ1bmN0aW9uKHQpeyFGJiZDJiYoQj9OKHQpOkw9dCl9fSxGPSExLEI9ITE7 ZnVuY3Rpb24gTih0KXt2YXIgZT10LmNyZWF0ZVRleHR1cmUoKTt0LmJpbmRU ZXh0dXJlKHQuVEVYVFVSRV8yRCxlKTt0cnl7aWYodC50ZXhJbWFnZTJEKHQu VEVYVFVSRV8yRCwwLHQuUkdCQSx0LlJHQkEsdC5VTlNJR05FRF9CWVRFLEMp LHQuaXNDb250ZXh0TG9zdCgpKXJldHVybjtSLnN1cHBvcnRlZD0hMH1jYXRj aCh0KXt9dC5kZWxldGVUZXh0dXJlKGUpLEY9ITB9c2VsZi5kb2N1bWVudCYm KChDPXNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpLm9ubG9h ZD1mdW5jdGlvbigpe0wmJk4oTCksTD1udWxsLEI9ITB9LEMub25lcnJvcj1m dW5jdGlvbigpe0Y9ITAsTD1udWxsfSxDLnNyYz0iZGF0YTppbWFnZS93ZWJw O2Jhc2U2NCxVa2xHUmg0QUFBQlhSVUpRVmxBNFRCRUFBQUF2QVFBQUFBZlEv Lzczdi8rQmlPaC9BQUE9Iik7dmFyIGo9IjAxIixWPWZ1bmN0aW9uKHQsZSl7 dGhpcy5fdHJhbnNmb3JtUmVxdWVzdEZuPXQsdGhpcy5fY3VzdG9tQWNjZXNz VG9rZW49ZSx0aGlzLl9jcmVhdGVTa3VUb2tlbigpfTtmdW5jdGlvbiBVKHQp e3JldHVybiAwPT09dC5pbmRleE9mKCJtYXBib3g6Iil9Vi5wcm90b3R5cGUu X2NyZWF0ZVNrdVRva2VuPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXtm b3IodmFyIHQ9IiIsZT0wO2U8MTA7ZSsrKXQrPSIwMTIzNDU2Nzg5YWJjZGVm Z2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ WiJbTWF0aC5mbG9vcig2MipNYXRoLnJhbmRvbSgpKV07cmV0dXJue3Rva2Vu OlsiMSIsaix0XS5qb2luKCIiKSx0b2tlbkV4cGlyZXNBdDpEYXRlLm5vdygp KzQzMmU1fX0oKTt0aGlzLl9za3VUb2tlbj10LnRva2VuLHRoaXMuX3NrdVRv a2VuRXhwaXJlc0F0PXQudG9rZW5FeHBpcmVzQXR9LFYucHJvdG90eXBlLl9p c1NrdVRva2VuRXhwaXJlZD1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygp PnRoaXMuX3NrdVRva2VuRXhwaXJlc0F0fSxWLnByb3RvdHlwZS50cmFuc2Zv cm1SZXF1ZXN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9y bVJlcXVlc3RGbiYmdGhpcy5fdHJhbnNmb3JtUmVxdWVzdEZuKHQsZSl8fHt1 cmw6dH19LFYucHJvdG90eXBlLm5vcm1hbGl6ZVN0eWxlVVJMPWZ1bmN0aW9u KHQsZSl7aWYoIVUodCkpcmV0dXJuIHQ7dmFyIHI9WSh0KTtyZXR1cm4gci5w YXRoPSIvc3R5bGVzL3YxIityLnBhdGgsdGhpcy5fbWFrZUFQSVVSTChyLHRo aXMuX2N1c3RvbUFjY2Vzc1Rva2VufHxlKX0sVi5wcm90b3R5cGUubm9ybWFs aXplR2x5cGhzVVJMPWZ1bmN0aW9uKHQsZSl7aWYoIVUodCkpcmV0dXJuIHQ7 dmFyIHI9WSh0KTtyZXR1cm4gci5wYXRoPSIvZm9udHMvdjEiK3IucGF0aCx0 aGlzLl9tYWtlQVBJVVJMKHIsdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fGUp fSxWLnByb3RvdHlwZS5ub3JtYWxpemVTb3VyY2VVUkw9ZnVuY3Rpb24odCxl KXtpZighVSh0KSlyZXR1cm4gdDt2YXIgcj1ZKHQpO3JldHVybiByLnBhdGg9 Ii92NC8iK3IuYXV0aG9yaXR5KyIuanNvbiIsci5wYXJhbXMucHVzaCgic2Vj dXJlIiksdGhpcy5fbWFrZUFQSVVSTChyLHRoaXMuX2N1c3RvbUFjY2Vzc1Rv a2VufHxlKX0sVi5wcm90b3R5cGUubm9ybWFsaXplU3ByaXRlVVJMPWZ1bmN0 aW9uKHQsZSxyLG4pe3ZhciBhPVkodCk7cmV0dXJuIFUodCk/KGEucGF0aD0i L3N0eWxlcy92MSIrYS5wYXRoKyIvc3ByaXRlIitlK3IsdGhpcy5fbWFrZUFQ SVVSTChhLHRoaXMuX2N1c3RvbUFjY2Vzc1Rva2VufHxuKSk6KGEucGF0aCs9 IiIrZStyLFcoYSkpfSxWLnByb3RvdHlwZS5ub3JtYWxpemVUaWxlVVJMPWZ1 bmN0aW9uKHQsZSxyKXtpZih0aGlzLl9pc1NrdVRva2VuRXhwaXJlZCgpJiZ0 aGlzLl9jcmVhdGVTa3VUb2tlbigpLCFlfHwhVShlKSlyZXR1cm4gdDt2YXIg bj1ZKHQpLGE9SS5kZXZpY2VQaXhlbFJhdGlvPj0yfHw1MTI9PT1yPyJAMngi OiIiLGk9Ui5zdXBwb3J0ZWQ/Ii53ZWJwIjoiJDEiO3JldHVybiBuLnBhdGg9 bi5wYXRoLnJlcGxhY2UoLyhcLihwbmd8anBnKVxkKikoPz0kKS8sIiIrYStp KSxuLnBhdGg9bi5wYXRoLnJlcGxhY2UoL14uK1wvdjRcLy8sIi8iKSxuLnBh dGg9Ii92NCIrbi5wYXRoLEQuUkVRVUlSRV9BQ0NFU1NfVE9LRU4mJihELkFD Q0VTU19UT0tFTnx8dGhpcy5fY3VzdG9tQWNjZXNzVG9rZW4pJiZ0aGlzLl9z a3VUb2tlbiYmbi5wYXJhbXMucHVzaCgic2t1PSIrdGhpcy5fc2t1VG9rZW4p LHRoaXMuX21ha2VBUElVUkwobix0aGlzLl9jdXN0b21BY2Nlc3NUb2tlbil9 LFYucHJvdG90eXBlLmNhbm9uaWNhbGl6ZVRpbGVVUkw9ZnVuY3Rpb24odCl7 dmFyIGU9WSh0KTtpZighZS5wYXRoLm1hdGNoKC8oXlwvdjRcLykvKXx8IWUu cGF0aC5tYXRjaCgvXC5bXHddKyQvKSlyZXR1cm4gdDt2YXIgcj0ibWFwYm94 Oi8vdGlsZXMvIjtyKz1lLnBhdGgucmVwbGFjZSgiL3Y0LyIsIiIpO3ZhciBu PWUucGFyYW1zLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hdC5tYXRjaCgv XmFjY2Vzc190b2tlbj0vKX0pO3JldHVybiBuLmxlbmd0aCYmKHIrPSI/Iitu LmpvaW4oIiYiKSkscn0sVi5wcm90b3R5cGUuY2Fub25pY2FsaXplVGlsZXNl dD1mdW5jdGlvbih0LGUpe2lmKCFVKGUpKXJldHVybiB0LnRpbGVzfHxbXTtm b3IodmFyIHI9W10sbj0wLGE9dC50aWxlcztuPGEubGVuZ3RoO24rPTEpe3Zh ciBpPWFbbl0sbz10aGlzLmNhbm9uaWNhbGl6ZVRpbGVVUkwoaSk7ci5wdXNo KG8pfXJldHVybiByfSxWLnByb3RvdHlwZS5fbWFrZUFQSVVSTD1mdW5jdGlv bih0LGUpe3ZhciByPSJTZWUgaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hcGkt ZG9jdW1lbnRhdGlvbi8jYWNjZXNzLXRva2Vucy1hbmQtdG9rZW4tc2NvcGVz IixuPVkoRC5BUElfVVJMKTtpZih0LnByb3RvY29sPW4ucHJvdG9jb2wsdC5h dXRob3JpdHk9bi5hdXRob3JpdHksIi8iIT09bi5wYXRoJiYodC5wYXRoPSIi K24ucGF0aCt0LnBhdGgpLCFELlJFUVVJUkVfQUNDRVNTX1RPS0VOKXJldHVy biBXKHQpO2lmKCEoZT1lfHxELkFDQ0VTU19UT0tFTikpdGhyb3cgbmV3IEVy cm9yKCJBbiBBUEkgYWNjZXNzIHRva2VuIGlzIHJlcXVpcmVkIHRvIHVzZSBN YXBib3ggR0wuICIrcik7aWYoInMiPT09ZVswXSl0aHJvdyBuZXcgRXJyb3Io IlVzZSBhIHB1YmxpYyBhY2Nlc3MgdG9rZW4gKHBrLiopIHdpdGggTWFwYm94 IEdMLCBub3QgYSBzZWNyZXQgYWNjZXNzIHRva2VuIChzay4qKS4gIityKTty ZXR1cm4gdC5wYXJhbXM9dC5wYXJhbXMuZmlsdGVyKGZ1bmN0aW9uKHQpe3Jl dHVybi0xPT09dC5pbmRleE9mKCJhY2Nlc3NfdG9rZW4iKX0pLHQucGFyYW1z LnB1c2goImFjY2Vzc190b2tlbj0iK2UpLFcodCl9O3ZhciBxPS9eKChodHRw cz86KT9cL1wvKT8oW15cL10rXC4pP21hcGJveFwuYyhufG9tKShcL3xcP3wk KS9pO2Z1bmN0aW9uIEgodCl7cmV0dXJuIHEudGVzdCh0KX12YXIgRz0vXihc dyspOlwvXC8oW15cLz9dKikoXC9bXj9dKyk/XD8/KC4rKT8vO2Z1bmN0aW9u IFkodCl7dmFyIGU9dC5tYXRjaChHKTtpZighZSl0aHJvdyBuZXcgRXJyb3Io IlVuYWJsZSB0byBwYXJzZSBVUkwgb2JqZWN0Iik7cmV0dXJue3Byb3RvY29s OmVbMV0sYXV0aG9yaXR5OmVbMl0scGF0aDplWzNdfHwiLyIscGFyYW1zOmVb NF0/ZVs0XS5zcGxpdCgiJiIpOltdfX1mdW5jdGlvbiBXKHQpe3ZhciBlPXQu cGFyYW1zLmxlbmd0aD8iPyIrdC5wYXJhbXMuam9pbigiJiIpOiIiO3JldHVy biB0LnByb3RvY29sKyI6Ly8iK3QuYXV0aG9yaXR5K3QucGF0aCtlfWZ1bmN0 aW9uIFgodCl7aWYoIXQpcmV0dXJuIG51bGw7dmFyIGUscj10LnNwbGl0KCIu Iik7aWYoIXJ8fDMhPT1yLmxlbmd0aClyZXR1cm4gbnVsbDt0cnl7cmV0dXJu IEpTT04ucGFyc2UoKGU9clsxXSxkZWNvZGVVUklDb21wb25lbnQoc2VsZi5h dG9iKGUpLnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIiUiKygi MDAiK3QuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKX0p LmpvaW4oIiIpKSkpfWNhdGNoKHQpe3JldHVybiBudWxsfX12YXIgWj1mdW5j dGlvbih0KXt0aGlzLnR5cGU9dCx0aGlzLmFub25JZD1udWxsLHRoaXMuZXZl bnREYXRhPXt9LHRoaXMucXVldWU9W10sdGhpcy5wZW5kaW5nUmVxdWVzdD1u dWxsfTtaLnByb3RvdHlwZS5nZXRTdG9yYWdlS2V5PWZ1bmN0aW9uKHQpe3Zh ciBlLHI9WChELkFDQ0VTU19UT0tFTiksbj0iIjtyZXR1cm4gciYmci51Pyhl PXIudSxuPXNlbGYuYnRvYShlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFj ZSgvJShbMC05QS1GXXsyfSkvZyxmdW5jdGlvbih0LGUpe3JldHVybiBTdHJp bmcuZnJvbUNoYXJDb2RlKE51bWJlcigiMHgiK2UpKX0pKSk6bj1ELkFDQ0VT U19UT0tFTnx8IiIsdD8ibWFwYm94LmV2ZW50RGF0YS4iK3QrIjoiK246Im1h cGJveC5ldmVudERhdGE6IitufSxaLnByb3RvdHlwZS5mZXRjaEV2ZW50RGF0 YT1mdW5jdGlvbigpe3ZhciB0PUEoImxvY2FsU3RvcmFnZSIpLGU9dGhpcy5n ZXRTdG9yYWdlS2V5KCkscj10aGlzLmdldFN0b3JhZ2VLZXkoInV1aWQiKTtp Zih0KXRyeXt2YXIgbj1zZWxmLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGUpO24m Jih0aGlzLmV2ZW50RGF0YT1KU09OLnBhcnNlKG4pKTt2YXIgYT1zZWxmLmxv Y2FsU3RvcmFnZS5nZXRJdGVtKHIpO2EmJih0aGlzLmFub25JZD1hKX1jYXRj aCh0KXt3KCJVbmFibGUgdG8gcmVhZCBmcm9tIExvY2FsU3RvcmFnZSIpfX0s Wi5wcm90b3R5cGUuc2F2ZUV2ZW50RGF0YT1mdW5jdGlvbigpe3ZhciB0PUEo ImxvY2FsU3RvcmFnZSIpLGU9dGhpcy5nZXRTdG9yYWdlS2V5KCkscj10aGlz LmdldFN0b3JhZ2VLZXkoInV1aWQiKTtpZih0KXRyeXtzZWxmLmxvY2FsU3Rv cmFnZS5zZXRJdGVtKHIsdGhpcy5hbm9uSWQpLE9iamVjdC5rZXlzKHRoaXMu ZXZlbnREYXRhKS5sZW5ndGg+PTEmJnNlbGYubG9jYWxTdG9yYWdlLnNldEl0 ZW0oZSxKU09OLnN0cmluZ2lmeSh0aGlzLmV2ZW50RGF0YSkpfWNhdGNoKHQp e3coIlVuYWJsZSB0byB3cml0ZSB0byBMb2NhbFN0b3JhZ2UiKX19LFoucHJv dG90eXBlLnByb2Nlc3NSZXF1ZXN0cz1mdW5jdGlvbih0KXt9LFoucHJvdG90 eXBlLnBvc3RFdmVudD1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10aGlzO2lm KEQuRVZFTlRTX1VSTCl7dmFyIGk9WShELkVWRU5UU19VUkwpO2kucGFyYW1z LnB1c2goImFjY2Vzc190b2tlbj0iKyhufHxELkFDQ0VTU19UT0tFTnx8IiIp KTt2YXIgbz17ZXZlbnQ6dGhpcy50eXBlLGNyZWF0ZWQ6bmV3IERhdGUodCku dG9JU09TdHJpbmcoKSxzZGtJZGVudGlmaWVyOiJtYXBib3gtZ2wtanMiLHNk a1ZlcnNpb246IjEuMy4yIixza3VJZDpqLHVzZXJJZDp0aGlzLmFub25JZH0s cz1lP2gobyxlKTpvLGw9e3VybDpXKGkpLGhlYWRlcnM6eyJDb250ZW50LVR5 cGUiOiJ0ZXh0L3BsYWluIn0sYm9keTpKU09OLnN0cmluZ2lmeShbc10pfTt0 aGlzLnBlbmRpbmdSZXF1ZXN0PW10KGwsZnVuY3Rpb24odCl7YS5wZW5kaW5n UmVxdWVzdD1udWxsLHIodCksYS5zYXZlRXZlbnREYXRhKCksYS5wcm9jZXNz UmVxdWVzdHMobil9KX19LFoucHJvdG90eXBlLnF1ZXVlUmVxdWVzdD1mdW5j dGlvbih0LGUpe3RoaXMucXVldWUucHVzaCh0KSx0aGlzLnByb2Nlc3NSZXF1 ZXN0cyhlKX07dmFyIEosSz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5j YWxsKHRoaXMsIm1hcC5sb2FkIiksdGhpcy5zdWNjZXNzPXt9LHRoaXMuc2t1 VG9rZW49IiJ9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlw ZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5j b25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnBvc3RNYXBMb2FkRXZlbnQ9ZnVu Y3Rpb24odCxlLHIsbil7dGhpcy5za3VUb2tlbj1yLChELkVWRU5UU19VUkwm Jm58fEQuQUNDRVNTX1RPS0VOJiZBcnJheS5pc0FycmF5KHQpJiZ0LnNvbWUo ZnVuY3Rpb24odCl7cmV0dXJuIFUodCl8fEgodCl9KSkmJnRoaXMucXVldWVS ZXF1ZXN0KHtpZDplLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxuKX0sZS5wcm90 b3R5cGUucHJvY2Vzc1JlcXVlc3RzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7 aWYoIXRoaXMucGVuZGluZ1JlcXVlc3QmJjAhPT10aGlzLnF1ZXVlLmxlbmd0 aCl7dmFyIHI9dGhpcy5xdWV1ZS5zaGlmdCgpLG49ci5pZCxhPXIudGltZXN0 YW1wO24mJnRoaXMuc3VjY2Vzc1tuXXx8KHRoaXMuYW5vbklkfHx0aGlzLmZl dGNoRXZlbnREYXRhKCksZyh0aGlzLmFub25JZCl8fCh0aGlzLmFub25JZD1k KCkpLHRoaXMucG9zdEV2ZW50KGEse3NrdVRva2VuOnRoaXMuc2t1VG9rZW59 LGZ1bmN0aW9uKHQpe3R8fG4mJihlLnN1Y2Nlc3Nbbl09ITApfSx0KSl9fSxl fShaKSxRPW5ldyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0 aGlzLCJhcHBVc2VyVHVybnN0aWxlIiksdGhpcy5fY3VzdG9tQWNjZXNzVG9r ZW49ZX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9i amVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0 cnVjdG9yPWUsZS5wcm90b3R5cGUucG9zdFR1cm5zdGlsZUV2ZW50PWZ1bmN0 aW9uKHQsZSl7RC5FVkVOVFNfVVJMJiZELkFDQ0VTU19UT0tFTiYmQXJyYXku aXNBcnJheSh0KSYmdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBVKHQpfHxI KHQpfSkmJnRoaXMucXVldWVSZXF1ZXN0KERhdGUubm93KCksZSl9LGUucHJv dG90eXBlLnByb2Nlc3NSZXF1ZXN0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlz O2lmKCF0aGlzLnBlbmRpbmdSZXF1ZXN0JiYwIT09dGhpcy5xdWV1ZS5sZW5n dGgpe3RoaXMuYW5vbklkJiZ0aGlzLmV2ZW50RGF0YS5sYXN0U3VjY2VzcyYm dGhpcy5ldmVudERhdGEudG9rZW5VfHx0aGlzLmZldGNoRXZlbnREYXRhKCk7 dmFyIHI9WChELkFDQ0VTU19UT0tFTiksbj1yP3IudTpELkFDQ0VTU19UT0tF TixhPW4hPT10aGlzLmV2ZW50RGF0YS50b2tlblU7Zyh0aGlzLmFub25JZCl8 fCh0aGlzLmFub25JZD1kKCksYT0hMCk7dmFyIGk9dGhpcy5xdWV1ZS5zaGlm dCgpO2lmKHRoaXMuZXZlbnREYXRhLmxhc3RTdWNjZXNzKXt2YXIgbz1uZXcg RGF0ZSh0aGlzLmV2ZW50RGF0YS5sYXN0U3VjY2Vzcykscz1uZXcgRGF0ZShp KSxsPShpLXRoaXMuZXZlbnREYXRhLmxhc3RTdWNjZXNzKS84NjRlNTthPWF8 fGw+PTF8fGw8LTF8fG8uZ2V0RGF0ZSgpIT09cy5nZXREYXRlKCl9ZWxzZSBh PSEwO2lmKCFhKXJldHVybiB0aGlzLnByb2Nlc3NSZXF1ZXN0cygpO3RoaXMu cG9zdEV2ZW50KGkseyJlbmFibGVkLnRlbGVtZXRyeSI6ITF9LGZ1bmN0aW9u KHQpe3R8fChlLmV2ZW50RGF0YS5sYXN0U3VjY2Vzcz1pLGUuZXZlbnREYXRh LnRva2VuVT1uKX0sdCl9fSxlfShaKSksJD1RLnBvc3RUdXJuc3RpbGVFdmVu dC5iaW5kKFEpLHR0PW5ldyBLLGV0PXR0LnBvc3RNYXBMb2FkRXZlbnQuYmlu ZCh0dCkscnQ9Im1hcGJveC10aWxlcyIsbnQ9NTAwLGF0PTUwLGl0PTQyZTQ7 ZnVuY3Rpb24gb3QodCl7dmFyIGU9dC5pbmRleE9mKCI/Iik7cmV0dXJuIGU8 MD90OnQuc2xpY2UoMCxlKX12YXIgc3Q9MS8wLGx0PXtVbmtub3duOiJVbmtu b3duIixTdHlsZToiU3R5bGUiLFNvdXJjZToiU291cmNlIixUaWxlOiJUaWxl IixHbHlwaHM6IkdseXBocyIsU3ByaXRlSW1hZ2U6IlNwcml0ZUltYWdlIixT cHJpdGVKU09OOiJTcHJpdGVKU09OIixJbWFnZToiSW1hZ2UifTsiZnVuY3Rp b24iPT10eXBlb2YgT2JqZWN0LmZyZWV6ZSYmT2JqZWN0LmZyZWV6ZShsdCk7 dmFyIGN0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyLG4pezQwMT09PXIm JkgobikmJihlKz0iOiB5b3UgbWF5IGhhdmUgcHJvdmlkZWQgYW4gaW52YWxp ZCBNYXBib3ggYWNjZXNzIHRva2VuLiBTZWUgaHR0cHM6Ly93d3cubWFwYm94 LmNvbS9hcGktZG9jdW1lbnRhdGlvbi8jYWNjZXNzLXRva2Vucy1hbmQtdG9r ZW4tc2NvcGVzIiksdC5jYWxsKHRoaXMsZSksdGhpcy5zdGF0dXM9cix0aGlz LnVybD1uLHRoaXMubmFtZT10aGlzLmNvbnN0cnVjdG9yLm5hbWUsdGhpcy5t ZXNzYWdlPWV9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlw ZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5j b25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMubmFtZSsiOiAiK3RoaXMubWVzc2FnZSsiICgiK3RoaXMu c3RhdHVzKyIpOiAiK3RoaXMudXJsfSxlfShFcnJvcik7ZnVuY3Rpb24gdXQo KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3Bl JiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYgaW5zdGFuY2VvZiBX b3JrZXJHbG9iYWxTY29wZX12YXIgaHQ9dXQoKT9mdW5jdGlvbigpe3JldHVy biBzZWxmLndvcmtlciYmc2VsZi53b3JrZXIucmVmZXJyZXJ9OmZ1bmN0aW9u KCl7cmV0dXJuKCJibG9iOiI9PT1zZWxmLmxvY2F0aW9uLnByb3RvY29sP3Nl bGYucGFyZW50OnNlbGYpLmxvY2F0aW9uLmhyZWZ9O2Z1bmN0aW9uIGZ0KHQs ZSl7dmFyIHIsbj1uZXcgc2VsZi5BYm9ydENvbnRyb2xsZXIsYT1uZXcgc2Vs Zi5SZXF1ZXN0KHQudXJsLHttZXRob2Q6dC5tZXRob2R8fCJHRVQiLGJvZHk6 dC5ib2R5LGNyZWRlbnRpYWxzOnQuY3JlZGVudGlhbHMsaGVhZGVyczp0Lmhl YWRlcnMscmVmZXJyZXI6aHQoKSxzaWduYWw6bi5zaWduYWx9KSxpPSExLG89 ITEscz0ocj1hLnVybCkuaW5kZXhPZigic2t1PSIpPjAmJkgocik7Impzb24i PT09dC50eXBlJiZhLmhlYWRlcnMuc2V0KCJBY2NlcHQiLCJhcHBsaWNhdGlv bi9qc29uIik7dmFyIGw9ZnVuY3Rpb24ocixuLGkpe2lmKCFvKXtpZihyJiYi U2VjdXJpdHlFcnJvciIhPT1yLm1lc3NhZ2UmJncociksbiYmaSlyZXR1cm4g YyhuKTt2YXIgbD1EYXRlLm5vdygpO3NlbGYuZmV0Y2goYSkudGhlbihmdW5j dGlvbihyKXtpZihyLm9rKXt2YXIgbj1zP3IuY2xvbmUoKTpudWxsO3JldHVy biBjKHIsbixsKX1yZXR1cm4gZShuZXcgY3Qoci5zdGF0dXNUZXh0LHIuc3Rh dHVzLHQudXJsKSl9KS5jYXRjaChmdW5jdGlvbih0KXsyMCE9PXQuY29kZSYm ZShuZXcgRXJyb3IodC5tZXNzYWdlKSl9KX19LGM9ZnVuY3Rpb24ocixuLHMp eygiYXJyYXlCdWZmZXIiPT09dC50eXBlP3IuYXJyYXlCdWZmZXIoKToianNv biI9PT10LnR5cGU/ci5qc29uKCk6ci50ZXh0KCkpLnRoZW4oZnVuY3Rpb24o dCl7b3x8KG4mJnMmJmZ1bmN0aW9uKHQsZSxyKXtpZihzZWxmLmNhY2hlcyl7 dmFyIG49e3N0YXR1czplLnN0YXR1cyxzdGF0dXNUZXh0OmUuc3RhdHVzVGV4 dCxoZWFkZXJzOm5ldyBzZWxmLkhlYWRlcnN9O2UuaGVhZGVycy5mb3JFYWNo KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uaGVhZGVycy5zZXQoZSx0KX0pO3Zh ciBhPU0oZS5oZWFkZXJzLmdldCgiQ2FjaGUtQ29udHJvbCIpfHwiIik7YVsi bm8tc3RvcmUiXXx8KGFbIm1heC1hZ2UiXSYmbi5oZWFkZXJzLnNldCgiRXhw aXJlcyIsbmV3IERhdGUocisxZTMqYVsibWF4LWFnZSJdKS50b1VUQ1N0cmlu ZygpKSxuZXcgRGF0ZShuLmhlYWRlcnMuZ2V0KCJFeHBpcmVzIikpLmdldFRp bWUoKS1yPGl0fHxmdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PUopdHJ5e25l dyBSZXNwb25zZShuZXcgUmVhZGFibGVTdHJlYW0pLEo9ITB9Y2F0Y2godCl7 Sj0hMX1KP2UodC5ib2R5KTp0LmJsb2IoKS50aGVuKGUpfShlLGZ1bmN0aW9u KGUpe3ZhciByPW5ldyBzZWxmLlJlc3BvbnNlKGUsbik7c2VsZi5jYWNoZXMu b3BlbihydCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5wdXQob3QodC51 cmwpLHIpfSkuY2F0Y2goZnVuY3Rpb24odCl7cmV0dXJuIHcodC5tZXNzYWdl KX0pfSkpfX0oYSxuLHMpLGk9ITAsZShudWxsLHQsci5oZWFkZXJzLmdldCgi Q2FjaGUtQ29udHJvbCIpLHIuaGVhZGVycy5nZXQoIkV4cGlyZXMiKSkpfSku Y2F0Y2goZnVuY3Rpb24odCl7cmV0dXJuIGUobmV3IEVycm9yKHQubWVzc2Fn ZSkpfSl9O3JldHVybiBzP2Z1bmN0aW9uKHQsZSl7aWYoIXNlbGYuY2FjaGVz KXJldHVybiBlKG51bGwpO3ZhciByPW90KHQudXJsKTtzZWxmLmNhY2hlcy5v cGVuKHJ0KS50aGVuKGZ1bmN0aW9uKHQpe3QubWF0Y2gocikudGhlbihmdW5j dGlvbihuKXt2YXIgYT1mdW5jdGlvbih0KXtpZighdClyZXR1cm4hMTt2YXIg ZT1uZXcgRGF0ZSh0LmhlYWRlcnMuZ2V0KCJFeHBpcmVzIikpLHI9TSh0Lmhl YWRlcnMuZ2V0KCJDYWNoZS1Db250cm9sIil8fCIiKTtyZXR1cm4gZT5EYXRl Lm5vdygpJiYhclsibm8tY2FjaGUiXX0obik7dC5kZWxldGUociksYSYmdC5w dXQocixuLmNsb25lKCkpLGUobnVsbCxuLGEpfSkuY2F0Y2goZSl9KS5jYXRj aChlKX0oYSxsKTpsKG51bGwsbnVsbCkse2NhbmNlbDpmdW5jdGlvbigpe289 ITAsaXx8bi5hYm9ydCgpfX19dmFyIHB0LGR0LGd0PWZ1bmN0aW9uKHQsZSl7 aWYocj10LnVybCwhKC9eZmlsZTovLnRlc3Qocil8fC9eZmlsZTovLnRlc3Qo aHQoKSkmJiEvXlx3KzovLnRlc3QocikpKXtpZihzZWxmLmZldGNoJiZzZWxm LlJlcXVlc3QmJnNlbGYuQWJvcnRDb250cm9sbGVyJiZzZWxmLlJlcXVlc3Qu cHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzaWduYWwiKSlyZXR1cm4gZnQo dCxlKTtpZih1dCgpJiZzZWxmLndvcmtlciYmc2VsZi53b3JrZXIuYWN0b3Ip cmV0dXJuIHNlbGYud29ya2VyLmFjdG9yLnNlbmQoImdldFJlc291cmNlIix0 LGUpfXZhciByO3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPW5ldyBzZWxm LlhNTEh0dHBSZXF1ZXN0O2Zvcih2YXIgbiBpbiByLm9wZW4odC5tZXRob2R8 fCJHRVQiLHQudXJsLCEwKSwiYXJyYXlCdWZmZXIiPT09dC50eXBlJiYoci5y ZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIiksdC5oZWFkZXJzKXIuc2V0UmVx dWVzdEhlYWRlcihuLHQuaGVhZGVyc1tuXSk7cmV0dXJuImpzb24iPT09dC50 eXBlJiYoci5yZXNwb25zZVR5cGU9InRleHQiLHIuc2V0UmVxdWVzdEhlYWRl cigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpKSxyLndpdGhDcmVkZW50 aWFscz0iaW5jbHVkZSI9PT10LmNyZWRlbnRpYWxzLHIub25lcnJvcj1mdW5j dGlvbigpe2UobmV3IEVycm9yKHIuc3RhdHVzVGV4dCkpfSxyLm9ubG9hZD1m dW5jdGlvbigpe2lmKChyLnN0YXR1cz49MjAwJiZyLnN0YXR1czwzMDB8fDA9 PT1yLnN0YXR1cykmJm51bGwhPT1yLnJlc3BvbnNlKXt2YXIgbj1yLnJlc3Bv bnNlO2lmKCJqc29uIj09PXQudHlwZSl0cnl7bj1KU09OLnBhcnNlKHIucmVz cG9uc2UpfWNhdGNoKHQpe3JldHVybiBlKHQpfWUobnVsbCxuLHIuZ2V0UmVz cG9uc2VIZWFkZXIoIkNhY2hlLUNvbnRyb2wiKSxyLmdldFJlc3BvbnNlSGVh ZGVyKCJFeHBpcmVzIikpfWVsc2UgZShuZXcgY3Qoci5zdGF0dXNUZXh0LHIu c3RhdHVzLHQudXJsKSl9LHIuc2VuZCh0LmJvZHkpLHtjYW5jZWw6ZnVuY3Rp b24oKXtyZXR1cm4gci5hYm9ydCgpfX19KHQsZSl9LHZ0PWZ1bmN0aW9uKHQs ZSl7cmV0dXJuIGd0KGgodCx7dHlwZToiYXJyYXlCdWZmZXIifSksZSl9LG10 PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd0KGgodCx7bWV0aG9kOiJQT1NUIn0p LGUpfTtwdD1bXSxkdD0wO3ZhciB5dD1mdW5jdGlvbih0LGUpe2lmKGR0Pj1E Lk1BWF9QQVJBTExFTF9JTUFHRV9SRVFVRVNUUyl7dmFyIHI9e3JlcXVlc3RQ YXJhbWV0ZXJzOnQsY2FsbGJhY2s6ZSxjYW5jZWxsZWQ6ITEsY2FuY2VsOmZ1 bmN0aW9uKCl7dGhpcy5jYW5jZWxsZWQ9ITB9fTtyZXR1cm4gcHQucHVzaChy KSxyfWR0Kys7dmFyIG49ITEsYT1mdW5jdGlvbigpe2lmKCFuKWZvcihuPSEw LGR0LS07cHQubGVuZ3RoJiZkdDxELk1BWF9QQVJBTExFTF9JTUFHRV9SRVFV RVNUUzspe3ZhciB0PXB0LnNoaWZ0KCksZT10LnJlcXVlc3RQYXJhbWV0ZXJz LHI9dC5jYWxsYmFjazt0LmNhbmNlbGxlZHx8KHQuY2FuY2VsPXl0KGUsciku Y2FuY2VsKX19LGk9dnQodCxmdW5jdGlvbih0LHIsbixpKXtpZihhKCksdCll KHQpO2Vsc2UgaWYocil7dmFyIG89bmV3IHNlbGYuSW1hZ2Uscz1zZWxmLlVS THx8c2VsZi53ZWJraXRVUkw7by5vbmxvYWQ9ZnVuY3Rpb24oKXtlKG51bGws bykscy5yZXZva2VPYmplY3RVUkwoby5zcmMpfSxvLm9uZXJyb3I9ZnVuY3Rp b24oKXtyZXR1cm4gZShuZXcgRXJyb3IoIkNvdWxkIG5vdCBsb2FkIGltYWdl LiBQbGVhc2UgbWFrZSBzdXJlIHRvIHVzZSBhIHN1cHBvcnRlZCBpbWFnZSB0 eXBlIHN1Y2ggYXMgUE5HIG9yIEpQRUcuIE5vdGUgdGhhdCBTVkdzIGFyZSBu b3Qgc3VwcG9ydGVkLiIpKX07dmFyIGw9bmV3IHNlbGYuQmxvYihbbmV3IFVp bnQ4QXJyYXkocildLHt0eXBlOiJpbWFnZS9wbmcifSk7by5jYWNoZUNvbnRy b2w9bixvLmV4cGlyZXM9aSxvLnNyYz1yLmJ5dGVMZW5ndGg/cy5jcmVhdGVP YmplY3RVUkwobCk6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dn b0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFBQUFmRmNTSkFBQUFDMGxFUVZR WVYyTmdBQUlBQUFVQUFhclZ5RkVBQUFBQVNVVk9SSzVDWUlJPSJ9fSk7cmV0 dXJue2NhbmNlbDpmdW5jdGlvbigpe2kuY2FuY2VsKCksYSgpfX19O2Z1bmN0 aW9uIHh0KHQsZSxyKXtyW3RdJiYtMSE9PXJbdF0uaW5kZXhPZihlKXx8KHJb dF09clt0XXx8W10sclt0XS5wdXNoKGUpKX1mdW5jdGlvbiBidCh0LGUscil7 aWYociYmclt0XSl7dmFyIG49clt0XS5pbmRleE9mKGUpOy0xIT09biYmclt0 XS5zcGxpY2UobiwxKX19dmFyIF90PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09 ZSYmKGU9e30pLGgodGhpcyxlKSx0aGlzLnR5cGU9dH0sd3Q9ZnVuY3Rpb24o dCl7ZnVuY3Rpb24gZShlLHIpe3ZvaWQgMD09PXImJihyPXt9KSx0LmNhbGwo dGhpcywiZXJyb3IiLGgoe2Vycm9yOmV9LHIpKX1yZXR1cm4gdCYmKGUuX19w cm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90 b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZX0oX3QpLGt0PWZ1 bmN0aW9uKCl7fTtrdC5wcm90b3R5cGUub249ZnVuY3Rpb24odCxlKXtyZXR1 cm4gdGhpcy5fbGlzdGVuZXJzPXRoaXMuX2xpc3RlbmVyc3x8e30seHQodCxl LHRoaXMuX2xpc3RlbmVycyksdGhpc30sa3QucHJvdG90eXBlLm9mZj1mdW5j dGlvbih0LGUpe3JldHVybiBidCh0LGUsdGhpcy5fbGlzdGVuZXJzKSxidCh0 LGUsdGhpcy5fb25lVGltZUxpc3RlbmVycyksdGhpc30sa3QucHJvdG90eXBl Lm9uY2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fb25lVGltZUxpc3Rl bmVycz10aGlzLl9vbmVUaW1lTGlzdGVuZXJzfHx7fSx4dCh0LGUsdGhpcy5f b25lVGltZUxpc3RlbmVycyksdGhpc30sa3QucHJvdG90eXBlLmZpcmU9ZnVu Y3Rpb24odCxlKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PW5ldyBfdCh0LGV8 fHt9KSk7dmFyIHI9dC50eXBlO2lmKHRoaXMubGlzdGVucyhyKSl7dC50YXJn ZXQ9dGhpcztmb3IodmFyIG49MCxhPXRoaXMuX2xpc3RlbmVycyYmdGhpcy5f bGlzdGVuZXJzW3JdP3RoaXMuX2xpc3RlbmVyc1tyXS5zbGljZSgpOltdO248 YS5sZW5ndGg7bis9MSlhW25dLmNhbGwodGhpcyx0KTtmb3IodmFyIGk9MCxv PXRoaXMuX29uZVRpbWVMaXN0ZW5lcnMmJnRoaXMuX29uZVRpbWVMaXN0ZW5l cnNbcl0/dGhpcy5fb25lVGltZUxpc3RlbmVyc1tyXS5zbGljZSgpOltdO2k8 by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXTtidChyLHMsdGhpcy5fb25lVGlt ZUxpc3RlbmVycykscy5jYWxsKHRoaXMsdCl9dmFyIGw9dGhpcy5fZXZlbnRl ZFBhcmVudDtsJiYoaCh0LCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9ldmVu dGVkUGFyZW50RGF0YT90aGlzLl9ldmVudGVkUGFyZW50RGF0YSgpOnRoaXMu X2V2ZW50ZWRQYXJlbnREYXRhKSxsLmZpcmUodCkpfWVsc2UgdCBpbnN0YW5j ZW9mIHd0JiZjb25zb2xlLmVycm9yKHQuZXJyb3IpO3JldHVybiB0aGlzfSxr dC5wcm90b3R5cGUubGlzdGVucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5f bGlzdGVuZXJzJiZ0aGlzLl9saXN0ZW5lcnNbdF0mJnRoaXMuX2xpc3RlbmVy c1t0XS5sZW5ndGg+MHx8dGhpcy5fb25lVGltZUxpc3RlbmVycyYmdGhpcy5f b25lVGltZUxpc3RlbmVyc1t0XSYmdGhpcy5fb25lVGltZUxpc3RlbmVyc1t0 XS5sZW5ndGg+MHx8dGhpcy5fZXZlbnRlZFBhcmVudCYmdGhpcy5fZXZlbnRl ZFBhcmVudC5saXN0ZW5zKHQpfSxrdC5wcm90b3R5cGUuc2V0RXZlbnRlZFBh cmVudD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9ldmVudGVkUGFyZW50 PXQsdGhpcy5fZXZlbnRlZFBhcmVudERhdGE9ZSx0aGlzfTt2YXIgVHQ9eyR2 ZXJzaW9uOjgsJHJvb3Q6e3ZlcnNpb246e3JlcXVpcmVkOiEwLHR5cGU6ImVu dW0iLHZhbHVlczpbOF19LG5hbWU6e3R5cGU6InN0cmluZyJ9LG1ldGFkYXRh Ont0eXBlOiIqIn0sY2VudGVyOnt0eXBlOiJhcnJheSIsdmFsdWU6Im51bWJl ciJ9LHpvb206e3R5cGU6Im51bWJlciJ9LGJlYXJpbmc6e3R5cGU6Im51bWJl ciIsZGVmYXVsdDowLHBlcmlvZDozNjAsdW5pdHM6ImRlZ3JlZXMifSxwaXRj aDp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsdW5pdHM6ImRlZ3JlZXMifSxs aWdodDp7dHlwZToibGlnaHQifSxzb3VyY2VzOntyZXF1aXJlZDohMCx0eXBl OiJzb3VyY2VzIn0sc3ByaXRlOnt0eXBlOiJzdHJpbmcifSxnbHlwaHM6e3R5 cGU6InN0cmluZyJ9LHRyYW5zaXRpb246e3R5cGU6InRyYW5zaXRpb24ifSxs YXllcnM6e3JlcXVpcmVkOiEwLHR5cGU6ImFycmF5Iix2YWx1ZToibGF5ZXIi fX0sc291cmNlczp7IioiOnt0eXBlOiJzb3VyY2UifX0sc291cmNlOlsic291 cmNlX3ZlY3RvciIsInNvdXJjZV9yYXN0ZXIiLCJzb3VyY2VfcmFzdGVyX2Rl bSIsInNvdXJjZV9nZW9qc29uIiwic291cmNlX3ZpZGVvIiwic291cmNlX2lt YWdlIl0sc291cmNlX3ZlY3Rvcjp7dHlwZTp7cmVxdWlyZWQ6ITAsdHlwZToi ZW51bSIsdmFsdWVzOnt2ZWN0b3I6e319fSx1cmw6e3R5cGU6InN0cmluZyJ9 LHRpbGVzOnt0eXBlOiJhcnJheSIsdmFsdWU6InN0cmluZyJ9LGJvdW5kczp7 dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0aDo0LGRlZmF1bHQ6 Wy0xODAsLTg1LjA1MTEyOSwxODAsODUuMDUxMTI5XX0sc2NoZW1lOnt0eXBl OiJlbnVtIix2YWx1ZXM6e3h5ejp7fSx0bXM6e319LGRlZmF1bHQ6Inh5eiJ9 LG1pbnpvb206e3R5cGU6Im51bWJlciIsZGVmYXVsdDowfSxtYXh6b29tOnt0 eXBlOiJudW1iZXIiLGRlZmF1bHQ6MjJ9LGF0dHJpYnV0aW9uOnt0eXBlOiJz dHJpbmcifSwiKiI6e3R5cGU6IioifX0sc291cmNlX3Jhc3Rlcjp7dHlwZTp7 cmVxdWlyZWQ6ITAsdHlwZToiZW51bSIsdmFsdWVzOntyYXN0ZXI6e319fSx1 cmw6e3R5cGU6InN0cmluZyJ9LHRpbGVzOnt0eXBlOiJhcnJheSIsdmFsdWU6 InN0cmluZyJ9LGJvdW5kczp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIi LGxlbmd0aDo0LGRlZmF1bHQ6Wy0xODAsLTg1LjA1MTEyOSwxODAsODUuMDUx MTI5XX0sbWluem9vbTp7dHlwZToibnVtYmVyIixkZWZhdWx0OjB9LG1heHpv b206e3R5cGU6Im51bWJlciIsZGVmYXVsdDoyMn0sdGlsZVNpemU6e3R5cGU6 Im51bWJlciIsZGVmYXVsdDo1MTIsdW5pdHM6InBpeGVscyJ9LHNjaGVtZTp7 dHlwZToiZW51bSIsdmFsdWVzOnt4eXo6e30sdG1zOnt9fSxkZWZhdWx0OiJ4 eXoifSxhdHRyaWJ1dGlvbjp7dHlwZToic3RyaW5nIn0sIioiOnt0eXBlOiIq In19LHNvdXJjZV9yYXN0ZXJfZGVtOnt0eXBlOntyZXF1aXJlZDohMCx0eXBl OiJlbnVtIix2YWx1ZXM6eyJyYXN0ZXItZGVtIjp7fX19LHVybDp7dHlwZToi c3RyaW5nIn0sdGlsZXM6e3R5cGU6ImFycmF5Iix2YWx1ZToic3RyaW5nIn0s Ym91bmRzOnt0eXBlOiJhcnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjQs ZGVmYXVsdDpbLTE4MCwtODUuMDUxMTI5LDE4MCw4NS4wNTExMjldfSxtaW56 b29tOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MH0sbWF4em9vbTp7dHlwZToi bnVtYmVyIixkZWZhdWx0OjIyfSx0aWxlU2l6ZTp7dHlwZToibnVtYmVyIixk ZWZhdWx0OjUxMix1bml0czoicGl4ZWxzIn0sYXR0cmlidXRpb246e3R5cGU6 InN0cmluZyJ9LGVuY29kaW5nOnt0eXBlOiJlbnVtIix2YWx1ZXM6e3RlcnJh cml1bTp7fSxtYXBib3g6e319LGRlZmF1bHQ6Im1hcGJveCJ9LCIqIjp7dHlw ZToiKiJ9fSxzb3VyY2VfZ2VvanNvbjp7dHlwZTp7cmVxdWlyZWQ6ITAsdHlw ZToiZW51bSIsdmFsdWVzOntnZW9qc29uOnt9fX0sZGF0YTp7dHlwZToiKiJ9 LG1heHpvb206e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxOH0sYXR0cmlidXRp b246e3R5cGU6InN0cmluZyJ9LGJ1ZmZlcjp7dHlwZToibnVtYmVyIixkZWZh dWx0OjEyOCxtYXhpbXVtOjUxMixtaW5pbXVtOjB9LHRvbGVyYW5jZTp7dHlw ZToibnVtYmVyIixkZWZhdWx0Oi4zNzV9LGNsdXN0ZXI6e3R5cGU6ImJvb2xl YW4iLGRlZmF1bHQ6ITF9LGNsdXN0ZXJSYWRpdXM6e3R5cGU6Im51bWJlciIs ZGVmYXVsdDo1MCxtaW5pbXVtOjB9LGNsdXN0ZXJNYXhab29tOnt0eXBlOiJu dW1iZXIifSxjbHVzdGVyUHJvcGVydGllczp7dHlwZToiKiJ9LGxpbmVNZXRy aWNzOnt0eXBlOiJib29sZWFuIixkZWZhdWx0OiExfSxnZW5lcmF0ZUlkOnt0 eXBlOiJib29sZWFuIixkZWZhdWx0OiExfX0sc291cmNlX3ZpZGVvOnt0eXBl OntyZXF1aXJlZDohMCx0eXBlOiJlbnVtIix2YWx1ZXM6e3ZpZGVvOnt9fX0s dXJsczp7cmVxdWlyZWQ6ITAsdHlwZToiYXJyYXkiLHZhbHVlOiJzdHJpbmci fSxjb29yZGluYXRlczp7cmVxdWlyZWQ6ITAsdHlwZToiYXJyYXkiLGxlbmd0 aDo0LHZhbHVlOnt0eXBlOiJhcnJheSIsbGVuZ3RoOjIsdmFsdWU6Im51bWJl ciJ9fX0sc291cmNlX2ltYWdlOnt0eXBlOntyZXF1aXJlZDohMCx0eXBlOiJl bnVtIix2YWx1ZXM6e2ltYWdlOnt9fX0sdXJsOntyZXF1aXJlZDohMCx0eXBl OiJzdHJpbmcifSxjb29yZGluYXRlczp7cmVxdWlyZWQ6ITAsdHlwZToiYXJy YXkiLGxlbmd0aDo0LHZhbHVlOnt0eXBlOiJhcnJheSIsbGVuZ3RoOjIsdmFs dWU6Im51bWJlciJ9fX0sbGF5ZXI6e2lkOnt0eXBlOiJzdHJpbmciLHJlcXVp cmVkOiEwfSx0eXBlOnt0eXBlOiJlbnVtIix2YWx1ZXM6e2ZpbGw6e30sbGlu ZTp7fSxzeW1ib2w6e30sY2lyY2xlOnt9LGhlYXRtYXA6e30sImZpbGwtZXh0 cnVzaW9uIjp7fSxyYXN0ZXI6e30saGlsbHNoYWRlOnt9LGJhY2tncm91bmQ6 e319LHJlcXVpcmVkOiEwfSxtZXRhZGF0YTp7dHlwZToiKiJ9LHNvdXJjZTp7 dHlwZToic3RyaW5nIn0sInNvdXJjZS1sYXllciI6e3R5cGU6InN0cmluZyJ9 LG1pbnpvb206e3R5cGU6Im51bWJlciIsbWluaW11bTowLG1heGltdW06MjR9 LG1heHpvb206e3R5cGU6Im51bWJlciIsbWluaW11bTowLG1heGltdW06MjR9 LGZpbHRlcjp7dHlwZToiZmlsdGVyIn0sbGF5b3V0Ont0eXBlOiJsYXlvdXQi fSxwYWludDp7dHlwZToicGFpbnQifX0sbGF5b3V0OlsibGF5b3V0X2ZpbGwi LCJsYXlvdXRfbGluZSIsImxheW91dF9jaXJjbGUiLCJsYXlvdXRfaGVhdG1h cCIsImxheW91dF9maWxsLWV4dHJ1c2lvbiIsImxheW91dF9zeW1ib2wiLCJs YXlvdXRfcmFzdGVyIiwibGF5b3V0X2hpbGxzaGFkZSIsImxheW91dF9iYWNr Z3JvdW5kIl0sbGF5b3V0X2JhY2tncm91bmQ6e3Zpc2liaWxpdHk6e3R5cGU6 ImVudW0iLHZhbHVlczp7dmlzaWJsZTp7fSxub25lOnt9fSxkZWZhdWx0OiJ2 aXNpYmxlIiwicHJvcGVydHktdHlwZSI6ImNvbnN0YW50In19LGxheW91dF9m aWxsOnsiZmlsbC1zb3J0LWtleSI6e3R5cGU6Im51bWJlciIsZXhwcmVzc2lv bjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVy ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sdmlzaWJpbGl0 eTp7dHlwZToiZW51bSIsdmFsdWVzOnt2aXNpYmxlOnt9LG5vbmU6e319LGRl ZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0eS10eXBlIjoiY29uc3RhbnQifX0s bGF5b3V0X2NpcmNsZTp7ImNpcmNsZS1zb3J0LWtleSI6e3R5cGU6Im51bWJl ciIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6 b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVu In0sdmlzaWJpbGl0eTp7dHlwZToiZW51bSIsdmFsdWVzOnt2aXNpYmxlOnt9 LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0eS10eXBlIjoi Y29uc3RhbnQifX0sbGF5b3V0X2hlYXRtYXA6e3Zpc2liaWxpdHk6e3R5cGU6 ImVudW0iLHZhbHVlczp7dmlzaWJsZTp7fSxub25lOnt9fSxkZWZhdWx0OiJ2 aXNpYmxlIiwicHJvcGVydHktdHlwZSI6ImNvbnN0YW50In19LCJsYXlvdXRf ZmlsbC1leHRydXNpb24iOnt2aXNpYmlsaXR5Ont0eXBlOiJlbnVtIix2YWx1 ZXM6e3Zpc2libGU6e30sbm9uZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIsInBy b3BlcnR5LXR5cGUiOiJjb25zdGFudCJ9fSxsYXlvdXRfbGluZTp7ImxpbmUt Y2FwIjp7dHlwZToiZW51bSIsdmFsdWVzOntidXR0Ont9LHJvdW5kOnt9LHNx dWFyZTp7fX0sZGVmYXVsdDoiYnV0dCIsZXhwcmVzc2lvbjp7aW50ZXJwb2xh dGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoi ZGF0YS1jb25zdGFudCJ9LCJsaW5lLWpvaW4iOnt0eXBlOiJlbnVtIix2YWx1 ZXM6e2JldmVsOnt9LHJvdW5kOnt9LG1pdGVyOnt9fSxkZWZhdWx0OiJtaXRl ciIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6 b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVu In0sImxpbmUtbWl0ZXItbGltaXQiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6 MixyZXF1aXJlczpbeyJsaW5lLWpvaW4iOiJtaXRlciJ9XSxleHByZXNzaW9u OntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3Bl cnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImxpbmUtcm91bmQtbGltaXQi Ont0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MS4wNSxyZXF1aXJlczpbeyJsaW5l LWpvaW4iOiJyb3VuZCJ9XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAs cGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNv bnN0YW50In0sImxpbmUtc29ydC1rZXkiOnt0eXBlOiJudW1iZXIiLGV4cHJl c3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZl YXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LHZpc2li aWxpdHk6e3R5cGU6ImVudW0iLHZhbHVlczp7dmlzaWJsZTp7fSxub25lOnt9 fSxkZWZhdWx0OiJ2aXNpYmxlIiwicHJvcGVydHktdHlwZSI6ImNvbnN0YW50 In19LGxheW91dF9zeW1ib2w6eyJzeW1ib2wtcGxhY2VtZW50Ijp7dHlwZToi ZW51bSIsdmFsdWVzOntwb2ludDp7fSxsaW5lOnt9LCJsaW5lLWNlbnRlciI6 e319LGRlZmF1bHQ6InBvaW50IixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6 ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRh LWNvbnN0YW50In0sInN5bWJvbC1zcGFjaW5nIjp7dHlwZToibnVtYmVyIixk ZWZhdWx0OjI1MCxtaW5pbXVtOjEsdW5pdHM6InBpeGVscyIscmVxdWlyZXM6 W3sic3ltYm9sLXBsYWNlbWVudCI6ImxpbmUifV0sZXhwcmVzc2lvbjp7aW50 ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10 eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJzeW1ib2wtYXZvaWQtZWRnZXMiOnt0 eXBlOiJib29sZWFuIixkZWZhdWx0OiExLGV4cHJlc3Npb246e2ludGVycG9s YXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6 ImRhdGEtY29uc3RhbnQifSwic3ltYm9sLXNvcnQta2V5Ijp7dHlwZToibnVt YmVyIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpb Inpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2 ZW4ifSwic3ltYm9sLXotb3JkZXIiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e2F1 dG86e30sInZpZXdwb3J0LXkiOnt9LHNvdXJjZTp7fX0sZGVmYXVsdDoiYXV0 byIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6 b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJpY29u LWFsbG93LW92ZXJsYXAiOnt0eXBlOiJib29sZWFuIixkZWZhdWx0OiExLHJl cXVpcmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRl ZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRh dGEtY29uc3RhbnQifSwiaWNvbi1pZ25vcmUtcGxhY2VtZW50Ijp7dHlwZToi Ym9vbGVhbiIsZGVmYXVsdDohMSxyZXF1aXJlczpbImljb24taW1hZ2UiXSxl eHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20i XX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImljb24tb3B0 aW9uYWwiOnt0eXBlOiJib29sZWFuIixkZWZhdWx0OiExLHJlcXVpcmVzOlsi aWNvbi1pbWFnZSIsInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUi OiJkYXRhLWNvbnN0YW50In0sImljb24tcm90YXRpb24tYWxpZ25tZW50Ijp7 dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e30sYXV0bzp7 fX0sZGVmYXVsdDoiYXV0byIscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19 LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJpY29uLXNpemUi Ont0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsdW5pdHM6ImZh Y3RvciBvZiB0aGUgb3JpZ2luYWwgaWNvbiBzaXplIixyZXF1aXJlczpbImlj b24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1l dGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0 YS1kcml2ZW4ifSwiaWNvbi10ZXh0LWZpdCI6e3R5cGU6ImVudW0iLHZhbHVl czp7bm9uZTp7fSx3aWR0aDp7fSxoZWlnaHQ6e30sYm90aDp7fX0sZGVmYXVs dDoibm9uZSIscmVxdWlyZXM6WyJpY29uLWltYWdlIiwidGV4dC1maWVsZCJd LGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9v bSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaWNvbi10 ZXh0LWZpdC1wYWRkaW5nIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIi LGxlbmd0aDo0LGRlZmF1bHQ6WzAsMCwwLDBdLHVuaXRzOiJwaXhlbHMiLHJl cXVpcmVzOlsiaWNvbi1pbWFnZSIsInRleHQtZmllbGQiLHsiaWNvbi10ZXh0 LWZpdCI6WyJib3RoIiwid2lkdGgiLCJoZWlnaHQiXX1dLGV4cHJlc3Npb246 e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVy dHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaWNvbi1pbWFnZSI6e3R5cGU6 InN0cmluZyIsdG9rZW5zOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDoh MSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5 cGUiOiJkYXRhLWRyaXZlbiJ9LCJpY29uLXJvdGF0ZSI6e3R5cGU6Im51bWJl ciIsZGVmYXVsdDowLHBlcmlvZDozNjAsdW5pdHM6ImRlZ3JlZXMiLHJlcXVp cmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDoh MCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5 cGUiOiJkYXRhLWRyaXZlbiJ9LCJpY29uLXBhZGRpbmciOnt0eXBlOiJudW1i ZXIiLGRlZmF1bHQ6MixtaW5pbXVtOjAsdW5pdHM6InBpeGVscyIscmVxdWly ZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEw LHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1j b25zdGFudCJ9LCJpY29uLWtlZXAtdXByaWdodCI6e3R5cGU6ImJvb2xlYW4i LGRlZmF1bHQ6ITEscmVxdWlyZXM6WyJpY29uLWltYWdlIix7Imljb24tcm90 YXRpb24tYWxpZ25tZW50IjoibWFwIn0seyJzeW1ib2wtcGxhY2VtZW50Ijpb ImxpbmUiLCJsaW5lLWNlbnRlciJdfV0sZXhwcmVzc2lvbjp7aW50ZXJwb2xh dGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoi ZGF0YS1jb25zdGFudCJ9LCJpY29uLW9mZnNldCI6e3R5cGU6ImFycmF5Iix2 YWx1ZToibnVtYmVyIixsZW5ndGg6MixkZWZhdWx0OlswLDBdLHJlcXVpcmVz OlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxw YXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUi OiJkYXRhLWRyaXZlbiJ9LCJpY29uLWFuY2hvciI6e3R5cGU6ImVudW0iLHZh bHVlczp7Y2VudGVyOnt9LGxlZnQ6e30scmlnaHQ6e30sdG9wOnt9LGJvdHRv bTp7fSwidG9wLWxlZnQiOnt9LCJ0b3AtcmlnaHQiOnt9LCJib3R0b20tbGVm dCI6e30sImJvdHRvbS1yaWdodCI6e319LGRlZmF1bHQ6ImNlbnRlciIscmVx dWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVk OiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHkt dHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24tcGl0Y2gtYWxpZ25tZW50Ijp7 dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e30sYXV0bzp7 fX0sZGVmYXVsdDoiYXV0byIscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19 LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0ZXh0LXBpdGNo LWFsaWdubWVudCI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdw b3J0Ont9LGF1dG86e319LGRlZmF1bHQ6ImF1dG8iLHJlcXVpcmVzOlsidGV4 dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0 ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQi fSwidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiOnt0eXBlOiJlbnVtIix2YWx1 ZXM6e21hcDp7fSx2aWV3cG9ydDp7fSxhdXRvOnt9fSxkZWZhdWx0OiJhdXRv IixyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUi OiJkYXRhLWNvbnN0YW50In0sInRleHQtZmllbGQiOnt0eXBlOiJmb3JtYXR0 ZWQiLGRlZmF1bHQ6IiIsdG9rZW5zOiEwLGV4cHJlc3Npb246e2ludGVycG9s YXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3Bl cnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LWZvbnQiOnt0eXBlOiJh cnJheSIsdmFsdWU6InN0cmluZyIsZGVmYXVsdDpbIk9wZW4gU2FucyBSZWd1 bGFyIiwiQXJpYWwgVW5pY29kZSBNUyBSZWd1bGFyIl0scmVxdWlyZXM6WyJ0 ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFt ZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRh dGEtZHJpdmVuIn0sInRleHQtc2l6ZSI6e3R5cGU6Im51bWJlciIsZGVmYXVs dDoxNixtaW5pbXVtOjAsdW5pdHM6InBpeGVscyIscmVxdWlyZXM6WyJ0ZXh0 LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRl cnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEt ZHJpdmVuIn0sInRleHQtbWF4LXdpZHRoIjp7dHlwZToibnVtYmVyIixkZWZh dWx0OjEwLG1pbmltdW06MCx1bml0czoiZW1zIixyZXF1aXJlczpbInRleHQt ZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVy czpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1k cml2ZW4ifSwidGV4dC1saW5lLWhlaWdodCI6e3R5cGU6Im51bWJlciIsZGVm YXVsdDoxLjIsdW5pdHM6ImVtcyIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0s ZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29t Il19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0ZXh0LWxl dHRlci1zcGFjaW5nIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsdW5pdHM6 ImVtcyIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50 ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwi cHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQtanVzdGlmeSI6 e3R5cGU6ImVudW0iLHZhbHVlczp7YXV0bzp7fSxsZWZ0Ont9LGNlbnRlcjp7 fSxyaWdodDp7fX0sZGVmYXVsdDoiY2VudGVyIixyZXF1aXJlczpbInRleHQt ZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVy czpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1k cml2ZW4ifSwidGV4dC1yYWRpYWwtb2Zmc2V0Ijp7dHlwZToibnVtYmVyIix1 bml0czoiZW1zIixkZWZhdWx0OjAscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0s InByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiIsZXhwcmVzc2lvbjp7aW50 ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfX0s InRleHQtdmFyaWFibGUtYW5jaG9yIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJl bnVtIix2YWx1ZXM6e2NlbnRlcjp7fSxsZWZ0Ont9LHJpZ2h0Ont9LHRvcDp7 fSxib3R0b206e30sInRvcC1sZWZ0Ijp7fSwidG9wLXJpZ2h0Ijp7fSwiYm90 dG9tLWxlZnQiOnt9LCJib3R0b20tcmlnaHQiOnt9fSxyZXF1aXJlczpbInRl eHQtZmllbGQiLHsic3ltYm9sLXBsYWNlbWVudCI6WyJwb2ludCJdfV0sZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19 LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0ZXh0LWFuY2hv ciI6e3R5cGU6ImVudW0iLHZhbHVlczp7Y2VudGVyOnt9LGxlZnQ6e30scmln aHQ6e30sdG9wOnt9LGJvdHRvbTp7fSwidG9wLWxlZnQiOnt9LCJ0b3Atcmln aHQiOnt9LCJib3R0b20tbGVmdCI6e30sImJvdHRvbS1yaWdodCI6e319LGRl ZmF1bHQ6ImNlbnRlciIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIix7IiEiOiJ0 ZXh0LXZhcmlhYmxlLWFuY2hvciJ9XSxleHByZXNzaW9uOntpbnRlcnBvbGF0 ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0 eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwidGV4dC1tYXgtYW5nbGUiOnt0eXBl OiJudW1iZXIiLGRlZmF1bHQ6NDUsdW5pdHM6ImRlZ3JlZXMiLHJlcXVpcmVz OlsidGV4dC1maWVsZCIseyJzeW1ib2wtcGxhY2VtZW50IjpbImxpbmUiLCJs aW5lLWNlbnRlciJdfV0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBh cmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25z dGFudCJ9LCJ0ZXh0LXdyaXRpbmctbW9kZSI6e3R5cGU6ImFycmF5Iix2YWx1 ZToiZW51bSIsdmFsdWVzOntob3Jpem9udGFsOnt9LHZlcnRpY2FsOnt9fSxy ZXF1aXJlczpbInRleHQtZmllbGQiLHsic3ltYm9sLXBsYWNlbWVudCI6WyJw b2ludCJdfV0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRl cnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9 LCJ0ZXh0LXJvdGF0ZSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLHBlcmlv ZDozNjAsdW5pdHM6ImRlZ3JlZXMiLHJlcXVpcmVzOlsidGV4dC1maWVsZCJd LGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9v bSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9 LCJ0ZXh0LXBhZGRpbmciOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MixtaW5p bXVtOjAsdW5pdHM6InBpeGVscyIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0s ZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29t Il19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0ZXh0LWtl ZXAtdXByaWdodCI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITAscmVxdWly ZXM6WyJ0ZXh0LWZpZWxkIix7InRleHQtcm90YXRpb24tYWxpZ25tZW50Ijoi bWFwIn0seyJzeW1ib2wtcGxhY2VtZW50IjpbImxpbmUiLCJsaW5lLWNlbnRl ciJdfV0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6 WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0 ZXh0LXRyYW5zZm9ybSI6e3R5cGU6ImVudW0iLHZhbHVlczp7bm9uZTp7fSx1 cHBlcmNhc2U6e30sbG93ZXJjYXNlOnt9fSxkZWZhdWx0OiJub25lIixyZXF1 aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6 ITEscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10 eXBlIjoiZGF0YS1kcml2ZW4ifSwidGV4dC1vZmZzZXQiOnt0eXBlOiJhcnJh eSIsdmFsdWU6Im51bWJlciIsdW5pdHM6ImVtcyIsbGVuZ3RoOjIsZGVmYXVs dDpbMCwwXSxyZXF1aXJlczpbInRleHQtZmllbGQiLHsiISI6InRleHQtcmFk aWFsLW9mZnNldCJ9LHsiISI6InRleHQtdmFyaWFibGUtYW5jaG9yIn1dLGV4 cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIs ImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0 ZXh0LWFsbG93LW92ZXJsYXAiOnt0eXBlOiJib29sZWFuIixkZWZhdWx0OiEx LHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9s YXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6 ImRhdGEtY29uc3RhbnQifSwidGV4dC1pZ25vcmUtcGxhY2VtZW50Ijp7dHlw ZToiYm9vbGVhbiIsZGVmYXVsdDohMSxyZXF1aXJlczpbInRleHQtZmllbGQi XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpv b20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQt b3B0aW9uYWwiOnt0eXBlOiJib29sZWFuIixkZWZhdWx0OiExLHJlcXVpcmVz OlsidGV4dC1maWVsZCIsImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRl cnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5 cGUiOiJkYXRhLWNvbnN0YW50In0sdmlzaWJpbGl0eTp7dHlwZToiZW51bSIs dmFsdWVzOnt2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUi LCJwcm9wZXJ0eS10eXBlIjoiY29uc3RhbnQifX0sbGF5b3V0X3Jhc3Rlcjp7 dmlzaWJpbGl0eTp7dHlwZToiZW51bSIsdmFsdWVzOnt2aXNpYmxlOnt9LG5v bmU6e319LGRlZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0eS10eXBlIjoiY29u c3RhbnQifX0sbGF5b3V0X2hpbGxzaGFkZTp7dmlzaWJpbGl0eTp7dHlwZToi ZW51bSIsdmFsdWVzOnt2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZp c2libGUiLCJwcm9wZXJ0eS10eXBlIjoiY29uc3RhbnQifX0sZmlsdGVyOnt0 eXBlOiJhcnJheSIsdmFsdWU6IioifSxmaWx0ZXJfb3BlcmF0b3I6e3R5cGU6 ImVudW0iLHZhbHVlczp7Ij09Ijp7fSwiIT0iOnt9LCI+Ijp7fSwiPj0iOnt9 LCI8Ijp7fSwiPD0iOnt9LGluOnt9LCIhaW4iOnt9LGFsbDp7fSxhbnk6e30s bm9uZTp7fSxoYXM6e30sIiFoYXMiOnt9fX0sZ2VvbWV0cnlfdHlwZTp7dHlw ZToiZW51bSIsdmFsdWVzOntQb2ludDp7fSxMaW5lU3RyaW5nOnt9LFBvbHln b246e319fSxmdW5jdGlvbjp7ZXhwcmVzc2lvbjp7dHlwZToiZXhwcmVzc2lv biJ9LHN0b3BzOnt0eXBlOiJhcnJheSIsdmFsdWU6ImZ1bmN0aW9uX3N0b3Ai fSxiYXNlOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjB9LHBy b3BlcnR5Ont0eXBlOiJzdHJpbmciLGRlZmF1bHQ6IiR6b29tIn0sdHlwZTp7 dHlwZToiZW51bSIsdmFsdWVzOntpZGVudGl0eTp7fSxleHBvbmVudGlhbDp7 fSxpbnRlcnZhbDp7fSxjYXRlZ29yaWNhbDp7fX0sZGVmYXVsdDoiZXhwb25l bnRpYWwifSxjb2xvclNwYWNlOnt0eXBlOiJlbnVtIix2YWx1ZXM6e3JnYjp7 fSxsYWI6e30saGNsOnt9fSxkZWZhdWx0OiJyZ2IifSxkZWZhdWx0Ont0eXBl OiIqIixyZXF1aXJlZDohMX19LGZ1bmN0aW9uX3N0b3A6e3R5cGU6ImFycmF5 IixtaW5pbXVtOjAsbWF4aW11bToyMix2YWx1ZTpbIm51bWJlciIsImNvbG9y Il0sbGVuZ3RoOjJ9LGV4cHJlc3Npb246e3R5cGU6ImFycmF5Iix2YWx1ZToi KiIsbWluaW11bToxfSxleHByZXNzaW9uX25hbWU6e3R5cGU6ImVudW0iLHZh bHVlczp7bGV0Ontncm91cDoiVmFyaWFibGUgYmluZGluZyJ9LHZhcjp7Z3Jv dXA6IlZhcmlhYmxlIGJpbmRpbmcifSxsaXRlcmFsOntncm91cDoiVHlwZXMi fSxhcnJheTp7Z3JvdXA6IlR5cGVzIn0sYXQ6e2dyb3VwOiJMb29rdXAifSxj YXNlOntncm91cDoiRGVjaXNpb24ifSxtYXRjaDp7Z3JvdXA6IkRlY2lzaW9u In0sY29hbGVzY2U6e2dyb3VwOiJEZWNpc2lvbiJ9LHN0ZXA6e2dyb3VwOiJS YW1wcywgc2NhbGVzLCBjdXJ2ZXMifSxpbnRlcnBvbGF0ZTp7Z3JvdXA6IlJh bXBzLCBzY2FsZXMsIGN1cnZlcyJ9LCJpbnRlcnBvbGF0ZS1oY2wiOntncm91 cDoiUmFtcHMsIHNjYWxlcywgY3VydmVzIn0sImludGVycG9sYXRlLWxhYiI6 e2dyb3VwOiJSYW1wcywgc2NhbGVzLCBjdXJ2ZXMifSxsbjI6e2dyb3VwOiJN YXRoIn0scGk6e2dyb3VwOiJNYXRoIn0sZTp7Z3JvdXA6Ik1hdGgifSx0eXBl b2Y6e2dyb3VwOiJUeXBlcyJ9LHN0cmluZzp7Z3JvdXA6IlR5cGVzIn0sbnVt YmVyOntncm91cDoiVHlwZXMifSxib29sZWFuOntncm91cDoiVHlwZXMifSxv YmplY3Q6e2dyb3VwOiJUeXBlcyJ9LGNvbGxhdG9yOntncm91cDoiVHlwZXMi fSxmb3JtYXQ6e2dyb3VwOiJUeXBlcyJ9LCJudW1iZXItZm9ybWF0Ijp7Z3Jv dXA6IlR5cGVzIn0sInRvLXN0cmluZyI6e2dyb3VwOiJUeXBlcyJ9LCJ0by1u dW1iZXIiOntncm91cDoiVHlwZXMifSwidG8tYm9vbGVhbiI6e2dyb3VwOiJU eXBlcyJ9LCJ0by1yZ2JhIjp7Z3JvdXA6IkNvbG9yIn0sInRvLWNvbG9yIjp7 Z3JvdXA6IlR5cGVzIn0scmdiOntncm91cDoiQ29sb3IifSxyZ2JhOntncm91 cDoiQ29sb3IifSxnZXQ6e2dyb3VwOiJMb29rdXAifSxoYXM6e2dyb3VwOiJM b29rdXAifSxsZW5ndGg6e2dyb3VwOiJMb29rdXAifSxwcm9wZXJ0aWVzOntn cm91cDoiRmVhdHVyZSBkYXRhIn0sImZlYXR1cmUtc3RhdGUiOntncm91cDoi RmVhdHVyZSBkYXRhIn0sImdlb21ldHJ5LXR5cGUiOntncm91cDoiRmVhdHVy ZSBkYXRhIn0saWQ6e2dyb3VwOiJGZWF0dXJlIGRhdGEifSx6b29tOntncm91 cDoiWm9vbSJ9LCJoZWF0bWFwLWRlbnNpdHkiOntncm91cDoiSGVhdG1hcCJ9 LCJsaW5lLXByb2dyZXNzIjp7Z3JvdXA6IkZlYXR1cmUgZGF0YSJ9LGFjY3Vt dWxhdGVkOntncm91cDoiRmVhdHVyZSBkYXRhIn0sIisiOntncm91cDoiTWF0 aCJ9LCIqIjp7Z3JvdXA6Ik1hdGgifSwiLSI6e2dyb3VwOiJNYXRoIn0sIi8i Ontncm91cDoiTWF0aCJ9LCIlIjp7Z3JvdXA6Ik1hdGgifSwiXiI6e2dyb3Vw OiJNYXRoIn0sc3FydDp7Z3JvdXA6Ik1hdGgifSxsb2cxMDp7Z3JvdXA6Ik1h dGgifSxsbjp7Z3JvdXA6Ik1hdGgifSxsb2cyOntncm91cDoiTWF0aCJ9LHNp bjp7Z3JvdXA6Ik1hdGgifSxjb3M6e2dyb3VwOiJNYXRoIn0sdGFuOntncm91 cDoiTWF0aCJ9LGFzaW46e2dyb3VwOiJNYXRoIn0sYWNvczp7Z3JvdXA6Ik1h dGgifSxhdGFuOntncm91cDoiTWF0aCJ9LG1pbjp7Z3JvdXA6Ik1hdGgifSxt YXg6e2dyb3VwOiJNYXRoIn0scm91bmQ6e2dyb3VwOiJNYXRoIn0sYWJzOntn cm91cDoiTWF0aCJ9LGNlaWw6e2dyb3VwOiJNYXRoIn0sZmxvb3I6e2dyb3Vw OiJNYXRoIn0sIj09Ijp7Z3JvdXA6IkRlY2lzaW9uIn0sIiE9Ijp7Z3JvdXA6 IkRlY2lzaW9uIn0sIj4iOntncm91cDoiRGVjaXNpb24ifSwiPCI6e2dyb3Vw OiJEZWNpc2lvbiJ9LCI+PSI6e2dyb3VwOiJEZWNpc2lvbiJ9LCI8PSI6e2dy b3VwOiJEZWNpc2lvbiJ9LGFsbDp7Z3JvdXA6IkRlY2lzaW9uIn0sYW55Ontn cm91cDoiRGVjaXNpb24ifSwiISI6e2dyb3VwOiJEZWNpc2lvbiJ9LCJpcy1z dXBwb3J0ZWQtc2NyaXB0Ijp7Z3JvdXA6IlN0cmluZyJ9LHVwY2FzZTp7Z3Jv dXA6IlN0cmluZyJ9LGRvd25jYXNlOntncm91cDoiU3RyaW5nIn0sY29uY2F0 Ontncm91cDoiU3RyaW5nIn0sInJlc29sdmVkLWxvY2FsZSI6e2dyb3VwOiJT dHJpbmcifX19LGxpZ2h0OnthbmNob3I6e3R5cGU6ImVudW0iLGRlZmF1bHQ6 InZpZXdwb3J0Iix2YWx1ZXM6e21hcDp7fSx2aWV3cG9ydDp7fX0sInByb3Bl cnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50Iix0cmFuc2l0aW9uOiExLGV4cHJl c3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfX0s cG9zaXRpb246e3R5cGU6ImFycmF5IixkZWZhdWx0OlsxLjE1LDIxMCwzMF0s bGVuZ3RoOjMsdmFsdWU6Im51bWJlciIsInByb3BlcnR5LXR5cGUiOiJkYXRh LWNvbnN0YW50Iix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9s YXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfX0sY29sb3I6e3R5cGU6ImNv bG9yIiwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQiLGRlZmF1bHQ6 IiNmZmZmZmYiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0 ZXJzOlsiem9vbSJdfSx0cmFuc2l0aW9uOiEwfSxpbnRlbnNpdHk6e3R5cGU6 Im51bWJlciIsInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50IixkZWZh dWx0Oi41LG1pbmltdW06MCxtYXhpbXVtOjEsZXhwcmVzc2lvbjp7aW50ZXJw b2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LHRyYW5zaXRpb246ITB9 fSxwYWludDpbInBhaW50X2ZpbGwiLCJwYWludF9saW5lIiwicGFpbnRfY2ly Y2xlIiwicGFpbnRfaGVhdG1hcCIsInBhaW50X2ZpbGwtZXh0cnVzaW9uIiwi cGFpbnRfc3ltYm9sIiwicGFpbnRfcmFzdGVyIiwicGFpbnRfaGlsbHNoYWRl IiwicGFpbnRfYmFja2dyb3VuZCJdLHBhaW50X2ZpbGw6eyJmaWxsLWFudGlh bGlhcyI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITAsZXhwcmVzc2lvbjp7 aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0 eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJmaWxsLW9wYWNpdHkiOnt0eXBl OiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5z aXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRl cnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3Bl cnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJmaWxsLWNvbG9yIjp7dHlwZToi Y29sb3IiLGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAscmVxdWly ZXM6W3siISI6ImZpbGwtcGF0dGVybiJ9XSxleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVy ZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImZp bGwtb3V0bGluZS1jb2xvciI6e3R5cGU6ImNvbG9yIix0cmFuc2l0aW9uOiEw LHJlcXVpcmVzOlt7IiEiOiJmaWxsLXBhdHRlcm4ifSx7ImZpbGwtYW50aWFs aWFzIjohMH1dLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0 ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9w ZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiZmlsbC10cmFuc2xhdGUiOnt0 eXBlOiJhcnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjIsZGVmYXVsdDpb MCwwXSx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJlc3Npb246 e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVy dHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiZmlsbC10cmFuc2xhdGUtYW5j aG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e319 LGRlZmF1bHQ6Im1hcCIscmVxdWlyZXM6WyJmaWxsLXRyYW5zbGF0ZSJdLGV4 cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJd fSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiZmlsbC1wYXR0 ZXJuIjp7dHlwZToic3RyaW5nIix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246 e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUi XX0sInByb3BlcnR5LXR5cGUiOiJjcm9zcy1mYWRlZC1kYXRhLWRyaXZlbiJ9 fSwicGFpbnRfZmlsbC1leHRydXNpb24iOnsiZmlsbC1leHRydXNpb24tb3Bh Y2l0eSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxtYXhp bXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6 ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRh LWNvbnN0YW50In0sImZpbGwtZXh0cnVzaW9uLWNvbG9yIjp7dHlwZToiY29s b3IiLGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAscmVxdWlyZXM6 W3siISI6ImZpbGwtZXh0cnVzaW9uLXBhdHRlcm4ifV0sZXhwcmVzc2lvbjp7 aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIs ImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZl biJ9LCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUiOnt0eXBlOiJhcnJheSIs dmFsdWU6Im51bWJlciIsbGVuZ3RoOjIsZGVmYXVsdDpbMCwwXSx0cmFuc2l0 aW9uOiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJlc3Npb246e2ludGVycG9sYXRl ZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRh dGEtY29uc3RhbnQifSwiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlLWFuY2hv ciI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSxk ZWZhdWx0OiJtYXAiLHJlcXVpcmVzOlsiZmlsbC1leHRydXNpb24tdHJhbnNs YXRlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6 WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJm aWxsLWV4dHJ1c2lvbi1wYXR0ZXJuIjp7dHlwZToic3RyaW5nIix0cmFuc2l0 aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJz Olsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJjcm9zcy1m YWRlZC1kYXRhLWRyaXZlbiJ9LCJmaWxsLWV4dHJ1c2lvbi1oZWlnaHQiOnt0 eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCxtaW5pbXVtOjAsdW5pdHM6Im1ldGVy cyIsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAs cGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJd fSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImZpbGwtZXh0cnVz aW9uLWJhc2UiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCxtaW5pbXVtOjAs dW5pdHM6Im1ldGVycyIsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbImZpbGwt ZXh0cnVzaW9uLWhlaWdodCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDoh MCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRl Il19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiZmlsbC1leHRy dXNpb24tdmVydGljYWwtZ3JhZGllbnQiOnt0eXBlOiJib29sZWFuIixkZWZh dWx0OiEwLHRyYW5zaXRpb246ITEsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVk OiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0 YS1jb25zdGFudCJ9fSxwYWludF9saW5lOnsibGluZS1vcGFjaXR5Ijp7dHlw ZToibnVtYmVyIixkZWZhdWx0OjEsbWluaW11bTowLG1heGltdW06MSx0cmFu c2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0 ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9w ZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwibGluZS1jb2xvciI6e3R5cGU6 ImNvbG9yIixkZWZhdWx0OiIjMDAwMDAwIix0cmFuc2l0aW9uOiEwLHJlcXVp cmVzOlt7IiEiOiJsaW5lLXBhdHRlcm4ifV0sZXhwcmVzc2lvbjp7aW50ZXJw b2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1 cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJs aW5lLXRyYW5zbGF0ZSI6e3R5cGU6ImFycmF5Iix2YWx1ZToibnVtYmVyIixs ZW5ndGg6MixkZWZhdWx0OlswLDBdLHRyYW5zaXRpb246ITAsdW5pdHM6InBp eGVscyIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6 WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJs aW5lLXRyYW5zbGF0ZS1hbmNob3IiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e21h cDp7fSx2aWV3cG9ydDp7fX0sZGVmYXVsdDoibWFwIixyZXF1aXJlczpbImxp bmUtdHJhbnNsYXRlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBh cmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25z dGFudCJ9LCJsaW5lLXdpZHRoIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEs bWluaW11bTowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhwcmVz c2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVh dHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRh LWRyaXZlbiJ9LCJsaW5lLWdhcC13aWR0aCI6e3R5cGU6Im51bWJlciIsZGVm YXVsdDowLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMi LGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9v bSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBl IjoiZGF0YS1kcml2ZW4ifSwibGluZS1vZmZzZXQiOnt0eXBlOiJudW1iZXIi LGRlZmF1bHQ6MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJl c3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZl YXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0 YS1kcml2ZW4ifSwibGluZS1ibHVyIjp7dHlwZToibnVtYmVyIixkZWZhdWx0 OjAsbWluaW11bTowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwi ZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJk YXRhLWRyaXZlbiJ9LCJsaW5lLWRhc2hhcnJheSI6e3R5cGU6ImFycmF5Iix2 YWx1ZToibnVtYmVyIixtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCx1bml0czoi bGluZSB3aWR0aHMiLHJlcXVpcmVzOlt7IiEiOiJsaW5lLXBhdHRlcm4ifV0s ZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29t Il19LCJwcm9wZXJ0eS10eXBlIjoiY3Jvc3MtZmFkZWQifSwibGluZS1wYXR0 ZXJuIjp7dHlwZToic3RyaW5nIix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246 e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUi XX0sInByb3BlcnR5LXR5cGUiOiJjcm9zcy1mYWRlZC1kYXRhLWRyaXZlbiJ9 LCJsaW5lLWdyYWRpZW50Ijp7dHlwZToiY29sb3IiLHRyYW5zaXRpb246ITEs cmVxdWlyZXM6W3siISI6ImxpbmUtZGFzaGFycmF5In0seyIhIjoibGluZS1w YXR0ZXJuIn0se3NvdXJjZToiZ2VvanNvbiIsaGFzOntsaW5lTWV0cmljczoh MH19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpb ImxpbmUtcHJvZ3Jlc3MiXX0sInByb3BlcnR5LXR5cGUiOiJjb2xvci1yYW1w In19LHBhaW50X2NpcmNsZTp7ImNpcmNsZS1yYWRpdXMiOnt0eXBlOiJudW1i ZXIiLGRlZmF1bHQ6NSxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCx1bml0czoi cGl4ZWxzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVy czpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVy dHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImNpcmNsZS1jb2xvciI6e3R5cGU6 ImNvbG9yIixkZWZhdWx0OiIjMDAwMDAwIix0cmFuc2l0aW9uOiEwLGV4cHJl c3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZl YXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0 YS1kcml2ZW4ifSwiY2lyY2xlLWJsdXIiOnt0eXBlOiJudW1iZXIiLGRlZmF1 bHQ6MCx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDoh MCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRl Il19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiY2lyY2xlLW9w YWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4 aW11bToxLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVk OiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3Rh dGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJjaXJjbGUt dHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0 aDoyLGRlZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxz IixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpv b20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImNpcmNs ZS10cmFuc2xhdGUtYW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6 e30sdmlld3BvcnQ6e319LGRlZmF1bHQ6Im1hcCIscmVxdWlyZXM6WyJjaXJj bGUtdHJhbnNsYXRlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBh cmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25z dGFudCJ9LCJjaXJjbGUtcGl0Y2gtc2NhbGUiOnt0eXBlOiJlbnVtIix2YWx1 ZXM6e21hcDp7fSx2aWV3cG9ydDp7fX0sZGVmYXVsdDoibWFwIixleHByZXNz aW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInBy b3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImNpcmNsZS1waXRjaC1h bGlnbm1lbnQiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e21hcDp7fSx2aWV3cG9y dDp7fX0sZGVmYXVsdDoidmlld3BvcnQiLGV4cHJlc3Npb246e2ludGVycG9s YXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6 ImRhdGEtY29uc3RhbnQifSwiY2lyY2xlLXN0cm9rZS13aWR0aCI6e3R5cGU6 Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVu aXRzOiJwaXhlbHMiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJh bWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJw cm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiY2lyY2xlLXN0cm9rZS1j b2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiIjMDAwMDAwIix0cmFuc2l0 aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJz Olsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0 eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiY2lyY2xlLXN0cm9rZS1vcGFjaXR5 Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEsbWluaW11bTowLG1heGltdW06 MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxw YXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19 LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifX0scGFpbnRfaGVhdG1h cDp7ImhlYXRtYXAtcmFkaXVzIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjMw LG1pbmltdW06MSx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJl c3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZl YXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0 YS1kcml2ZW4ifSwiaGVhdG1hcC13ZWlnaHQiOnt0eXBlOiJudW1iZXIiLGRl ZmF1bHQ6MSxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMSxleHByZXNzaW9uOntp bnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwi ZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVu In0sImhlYXRtYXAtaW50ZW5zaXR5Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0 OjEsbWluaW11bTowLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJw b2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBl IjoiZGF0YS1jb25zdGFudCJ9LCJoZWF0bWFwLWNvbG9yIjp7dHlwZToiY29s b3IiLGRlZmF1bHQ6WyJpbnRlcnBvbGF0ZSIsWyJsaW5lYXIiXSxbImhlYXRt YXAtZGVuc2l0eSJdLDAsInJnYmEoMCwgMCwgMjU1LCAwKSIsLjEsInJveWFs Ymx1ZSIsLjMsImN5YW4iLC41LCJsaW1lIiwuNywieWVsbG93IiwxLCJyZWQi XSx0cmFuc2l0aW9uOiExLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxw YXJhbWV0ZXJzOlsiaGVhdG1hcC1kZW5zaXR5Il19LCJwcm9wZXJ0eS10eXBl IjoiY29sb3ItcmFtcCJ9LCJoZWF0bWFwLW9wYWNpdHkiOnt0eXBlOiJudW1i ZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5zaXRpb246 ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6 b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9fSxwYWlu dF9zeW1ib2w6eyJpY29uLW9wYWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1 bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5zaXRpb246ITAscmVxdWly ZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEw LHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUi XX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJpY29uLWNvbG9y Ijp7dHlwZToiY29sb3IiLGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246 ITAscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJw b2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1 cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJp Y29uLWhhbG8tY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoicmdiYSgw LCAwLCAwLCAwKSIsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbImljb24taW1h Z2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpb Inpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHkt dHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24taGFsby13aWR0aCI6e3R5cGU6 Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVu aXRzOiJwaXhlbHMiLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Np b246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1 cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1k cml2ZW4ifSwiaWNvbi1oYWxvLWJsdXIiOnt0eXBlOiJudW1iZXIiLGRlZmF1 bHQ6MCxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixy ZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0 ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1z dGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24t dHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0 aDoyLGRlZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxz IixyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUi OiJkYXRhLWNvbnN0YW50In0sImljb24tdHJhbnNsYXRlLWFuY2hvciI6e3R5 cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSxkZWZhdWx0 OiJtYXAiLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSIsImljb24tdHJhbnNsYXRl Il0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6 b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0ZXh0 LW9wYWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAs bWF4aW11bToxLHRyYW5zaXRpb246ITAscmVxdWlyZXM6WyJ0ZXh0LWZpZWxk Il0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6 b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5 cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LWNvbG9yIjp7dHlwZToiY29sb3Ii LGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAsb3ZlcnJpZGFibGU6 ITAscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJw b2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1 cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0 ZXh0LWhhbG8tY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoicmdiYSgw LCAwLCAwLCAwKSIsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbInRleHQtZmll bGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpb Inpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHkt dHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQtaGFsby13aWR0aCI6e3R5cGU6 Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVu aXRzOiJwaXhlbHMiLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4cHJlc3Np b246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1 cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1k cml2ZW4ifSwidGV4dC1oYWxvLWJsdXIiOnt0eXBlOiJudW1iZXIiLGRlZmF1 bHQ6MCxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixy ZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0 ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1z dGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQt dHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0 aDoyLGRlZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxz IixyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUi OiJkYXRhLWNvbnN0YW50In0sInRleHQtdHJhbnNsYXRlLWFuY2hvciI6e3R5 cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSxkZWZhdWx0 OiJtYXAiLHJlcXVpcmVzOlsidGV4dC1maWVsZCIsInRleHQtdHJhbnNsYXRl Il0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6 b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9fSxwYWlu dF9yYXN0ZXI6eyJyYXN0ZXItb3BhY2l0eSI6e3R5cGU6Im51bWJlciIsZGVm YXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHBy ZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0s InByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJhc3Rlci1odWUt cm90YXRlIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAscGVyaW9kOjM2MCx0 cmFuc2l0aW9uOiEwLHVuaXRzOiJkZWdyZWVzIixleHByZXNzaW9uOntpbnRl cnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5 cGUiOiJkYXRhLWNvbnN0YW50In0sInJhc3Rlci1icmlnaHRuZXNzLW1pbiI6 e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCxtYXhpbXVtOjEs dHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFy YW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0 YW50In0sInJhc3Rlci1icmlnaHRuZXNzLW1heCI6e3R5cGU6Im51bWJlciIs ZGVmYXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxl eHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20i XX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJhc3Rlci1z YXR1cmF0aW9uIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsbWluaW11bTot MSxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUi OiJkYXRhLWNvbnN0YW50In0sInJhc3Rlci1jb250cmFzdCI6e3R5cGU6Im51 bWJlciIsZGVmYXVsdDowLG1pbmltdW06LTEsbWF4aW11bToxLHRyYW5zaXRp b246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6 WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJy YXN0ZXItcmVzYW1wbGluZyI6e3R5cGU6ImVudW0iLHZhbHVlczp7bGluZWFy Ont9LG5lYXJlc3Q6e319LGRlZmF1bHQ6ImxpbmVhciIsZXhwcmVzc2lvbjp7 aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0 eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJyYXN0ZXItZmFkZS1kdXJhdGlv biI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDozMDAsbWluaW11bTowLHRyYW5z aXRpb246ITEsdW5pdHM6Im1pbGxpc2Vjb25kcyIsZXhwcmVzc2lvbjp7aW50 ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10 eXBlIjoiZGF0YS1jb25zdGFudCJ9fSxwYWludF9oaWxsc2hhZGU6eyJoaWxs c2hhZGUtaWxsdW1pbmF0aW9uLWRpcmVjdGlvbiI6e3R5cGU6Im51bWJlciIs ZGVmYXVsdDozMzUsbWluaW11bTowLG1heGltdW06MzU5LHRyYW5zaXRpb246 ITEsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6 b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJoaWxs c2hhZGUtaWxsdW1pbmF0aW9uLWFuY2hvciI6e3R5cGU6ImVudW0iLHZhbHVl czp7bWFwOnt9LHZpZXdwb3J0Ont9fSxkZWZhdWx0OiJ2aWV3cG9ydCIsZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19 LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJoaWxsc2hhZGUt ZXhhZ2dlcmF0aW9uIjp7dHlwZToibnVtYmVyIixkZWZhdWx0Oi41LG1pbmlt dW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRl cnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5 cGUiOiJkYXRhLWNvbnN0YW50In0sImhpbGxzaGFkZS1zaGFkb3ctY29sb3Ii Ont0eXBlOiJjb2xvciIsZGVmYXVsdDoiIzAwMDAwMCIsdHJhbnNpdGlvbjoh MCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpv b20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImhpbGxz aGFkZS1oaWdobGlnaHQtY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoi I0ZGRkZGRiIsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0 ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJk YXRhLWNvbnN0YW50In0sImhpbGxzaGFkZS1hY2NlbnQtY29sb3IiOnt0eXBl OiJjb2xvciIsZGVmYXVsdDoiIzAwMDAwMCIsdHJhbnNpdGlvbjohMCxleHBy ZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0s InByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In19LHBhaW50X2JhY2tn cm91bmQ6eyJiYWNrZ3JvdW5kLWNvbG9yIjp7dHlwZToiY29sb3IiLGRlZmF1 bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAscmVxdWlyZXM6W3siISI6ImJh Y2tncm91bmQtcGF0dGVybiJ9XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6 ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRh LWNvbnN0YW50In0sImJhY2tncm91bmQtcGF0dGVybiI6e3R5cGU6InN0cmlu ZyIsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEs cGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJjcm9zcy1m YWRlZCJ9LCJiYWNrZ3JvdW5kLW9wYWNpdHkiOnt0eXBlOiJudW1iZXIiLGRl ZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5zaXRpb246ITAsZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19 LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9fSx0cmFuc2l0aW9u OntkdXJhdGlvbjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjMwMCxtaW5pbXVt OjAsdW5pdHM6Im1pbGxpc2Vjb25kcyJ9LGRlbGF5Ont0eXBlOiJudW1iZXIi LGRlZmF1bHQ6MCxtaW5pbXVtOjAsdW5pdHM6Im1pbGxpc2Vjb25kcyJ9fSwi cHJvcGVydHktdHlwZSI6eyJkYXRhLWRyaXZlbiI6e3R5cGU6InByb3BlcnR5 LXR5cGUifSwiY3Jvc3MtZmFkZWQiOnt0eXBlOiJwcm9wZXJ0eS10eXBlIn0s ImNyb3NzLWZhZGVkLWRhdGEtZHJpdmVuIjp7dHlwZToicHJvcGVydHktdHlw ZSJ9LCJjb2xvci1yYW1wIjp7dHlwZToicHJvcGVydHktdHlwZSJ9LCJkYXRh LWNvbnN0YW50Ijp7dHlwZToicHJvcGVydHktdHlwZSJ9LGNvbnN0YW50Ont0 eXBlOiJwcm9wZXJ0eS10eXBlIn19fSxNdD1mdW5jdGlvbih0LGUscixuKXt0 aGlzLm1lc3NhZ2U9KHQ/dCsiOiAiOiIiKStyLG4mJih0aGlzLmlkZW50aWZp ZXI9biksbnVsbCE9ZSYmZS5fX2xpbmVfXyYmKHRoaXMubGluZT1lLl9fbGlu ZV9fKX07ZnVuY3Rpb24gQXQodCl7dmFyIGU9dC5rZXkscj10LnZhbHVlO3Jl dHVybiByP1tuZXcgTXQoZSxyLCJjb25zdGFudHMgaGF2ZSBiZWVuIGRlcHJl Y2F0ZWQgYXMgb2YgdjgiKV06W119ZnVuY3Rpb24gU3QodCl7Zm9yKHZhciBl PVtdLHI9YXJndW1lbnRzLmxlbmd0aC0xO3ItLSA+MDspZVtyXT1hcmd1bWVu dHNbcisxXTtmb3IodmFyIG49MCxhPWU7bjxhLmxlbmd0aDtuKz0xKXt2YXIg aT1hW25dO2Zvcih2YXIgbyBpbiBpKXRbb109aVtvXX1yZXR1cm4gdH1mdW5j dGlvbiBFdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE51bWJlcnx8dCBpbnN0 YW5jZW9mIFN0cmluZ3x8dCBpbnN0YW5jZW9mIEJvb2xlYW59ZnVuY3Rpb24g THQodCl7cmV0dXJuIEV0KHQpP3QudmFsdWVPZigpOnR9ZnVuY3Rpb24gQ3Qo dCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5tYXAoQ3QpO2lmKHQg aW5zdGFuY2VvZiBPYmplY3QmJiFFdCh0KSl7dmFyIGU9e307Zm9yKHZhciBy IGluIHQpZVtyXT1DdCh0W3JdKTtyZXR1cm4gZX1yZXR1cm4gTHQodCl9dmFy IFB0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyKXt0LmNhbGwodGhpcyxy KSx0aGlzLm1lc3NhZ2U9cix0aGlzLmtleT1lfXJldHVybiB0JiYoZS5fX3By b3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3Rv dHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlfShFcnJvciksT3Q9 ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT1bXSksdGhpcy5wYXJlbnQ9 dCx0aGlzLmJpbmRpbmdzPXt9O2Zvcih2YXIgcj0wLG49ZTtyPG4ubGVuZ3Ro O3IrPTEpe3ZhciBhPW5bcl0saT1hWzBdLG89YVsxXTt0aGlzLmJpbmRpbmdz W2ldPW99fTtPdC5wcm90b3R5cGUuY29uY2F0PWZ1bmN0aW9uKHQpe3JldHVy biBuZXcgT3QodGhpcyx0KX0sT3QucHJvdG90eXBlLmdldD1mdW5jdGlvbih0 KXtpZih0aGlzLmJpbmRpbmdzW3RdKXJldHVybiB0aGlzLmJpbmRpbmdzW3Rd O2lmKHRoaXMucGFyZW50KXJldHVybiB0aGlzLnBhcmVudC5nZXQodCk7dGhy b3cgbmV3IEVycm9yKHQrIiBub3QgZm91bmQgaW4gc2NvcGUuIil9LE90LnBy b3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLmJpbmRpbmdz W3RdfHwhIXRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5oYXModCl9O3ZhciB6 dD17a2luZDoibnVsbCJ9LEl0PXtraW5kOiJudW1iZXIifSxEdD17a2luZDoi c3RyaW5nIn0sUnQ9e2tpbmQ6ImJvb2xlYW4ifSxGdD17a2luZDoiY29sb3Ii fSxCdD17a2luZDoib2JqZWN0In0sTnQ9e2tpbmQ6InZhbHVlIn0sanQ9e2tp bmQ6ImNvbGxhdG9yIn0sVnQ9e2tpbmQ6ImZvcm1hdHRlZCJ9O2Z1bmN0aW9u IFV0KHQsZSl7cmV0dXJue2tpbmQ6ImFycmF5IixpdGVtVHlwZTp0LE46ZX19 ZnVuY3Rpb24gcXQodCl7aWYoImFycmF5Ij09PXQua2luZCl7dmFyIGU9cXQo dC5pdGVtVHlwZSk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0Lk4/ImFycmF5 PCIrZSsiLCAiK3QuTisiPiI6InZhbHVlIj09PXQuaXRlbVR5cGUua2luZD8i YXJyYXkiOiJhcnJheTwiK2UrIj4ifXJldHVybiB0LmtpbmR9dmFyIEh0PVt6 dCxJdCxEdCxSdCxGdCxWdCxCdCxVdChOdCldO2Z1bmN0aW9uIEd0KHQsZSl7 aWYoImVycm9yIj09PWUua2luZClyZXR1cm4gbnVsbDtpZigiYXJyYXkiPT09 dC5raW5kKXtpZigiYXJyYXkiPT09ZS5raW5kJiYoMD09PWUuTiYmInZhbHVl Ij09PWUuaXRlbVR5cGUua2luZHx8IUd0KHQuaXRlbVR5cGUsZS5pdGVtVHlw ZSkpJiYoIm51bWJlciIhPXR5cGVvZiB0Lk58fHQuTj09PWUuTikpcmV0dXJu IG51bGx9ZWxzZXtpZih0LmtpbmQ9PT1lLmtpbmQpcmV0dXJuIG51bGw7aWYo InZhbHVlIj09PXQua2luZClmb3IodmFyIHI9MCxuPUh0O3I8bi5sZW5ndGg7 cis9MSlpZighR3QobltyXSxlKSlyZXR1cm4gbnVsbH1yZXR1cm4iRXhwZWN0 ZWQgIitxdCh0KSsiIGJ1dCBmb3VuZCAiK3F0KGUpKyIgaW5zdGVhZC4ifXZh ciBZdD1lKGZ1bmN0aW9uKHQsZSl7dmFyIHI9e3RyYW5zcGFyZW50OlswLDAs MCwwXSxhbGljZWJsdWU6WzI0MCwyNDgsMjU1LDFdLGFudGlxdWV3aGl0ZTpb MjUwLDIzNSwyMTUsMV0sYXF1YTpbMCwyNTUsMjU1LDFdLGFxdWFtYXJpbmU6 WzEyNywyNTUsMjEyLDFdLGF6dXJlOlsyNDAsMjU1LDI1NSwxXSxiZWlnZTpb MjQ1LDI0NSwyMjAsMV0sYmlzcXVlOlsyNTUsMjI4LDE5NiwxXSxibGFjazpb MCwwLDAsMV0sYmxhbmNoZWRhbG1vbmQ6WzI1NSwyMzUsMjA1LDFdLGJsdWU6 WzAsMCwyNTUsMV0sYmx1ZXZpb2xldDpbMTM4LDQzLDIyNiwxXSxicm93bjpb MTY1LDQyLDQyLDFdLGJ1cmx5d29vZDpbMjIyLDE4NCwxMzUsMV0sY2FkZXRi bHVlOls5NSwxNTgsMTYwLDFdLGNoYXJ0cmV1c2U6WzEyNywyNTUsMCwxXSxj aG9jb2xhdGU6WzIxMCwxMDUsMzAsMV0sY29yYWw6WzI1NSwxMjcsODAsMV0s Y29ybmZsb3dlcmJsdWU6WzEwMCwxNDksMjM3LDFdLGNvcm5zaWxrOlsyNTUs MjQ4LDIyMCwxXSxjcmltc29uOlsyMjAsMjAsNjAsMV0sY3lhbjpbMCwyNTUs MjU1LDFdLGRhcmtibHVlOlswLDAsMTM5LDFdLGRhcmtjeWFuOlswLDEzOSwx MzksMV0sZGFya2dvbGRlbnJvZDpbMTg0LDEzNCwxMSwxXSxkYXJrZ3JheTpb MTY5LDE2OSwxNjksMV0sZGFya2dyZWVuOlswLDEwMCwwLDFdLGRhcmtncmV5 OlsxNjksMTY5LDE2OSwxXSxkYXJra2hha2k6WzE4OSwxODMsMTA3LDFdLGRh cmttYWdlbnRhOlsxMzksMCwxMzksMV0sZGFya29saXZlZ3JlZW46Wzg1LDEw Nyw0NywxXSxkYXJrb3JhbmdlOlsyNTUsMTQwLDAsMV0sZGFya29yY2hpZDpb MTUzLDUwLDIwNCwxXSxkYXJrcmVkOlsxMzksMCwwLDFdLGRhcmtzYWxtb246 WzIzMywxNTAsMTIyLDFdLGRhcmtzZWFncmVlbjpbMTQzLDE4OCwxNDMsMV0s ZGFya3NsYXRlYmx1ZTpbNzIsNjEsMTM5LDFdLGRhcmtzbGF0ZWdyYXk6WzQ3 LDc5LDc5LDFdLGRhcmtzbGF0ZWdyZXk6WzQ3LDc5LDc5LDFdLGRhcmt0dXJx dW9pc2U6WzAsMjA2LDIwOSwxXSxkYXJrdmlvbGV0OlsxNDgsMCwyMTEsMV0s ZGVlcHBpbms6WzI1NSwyMCwxNDcsMV0sZGVlcHNreWJsdWU6WzAsMTkxLDI1 NSwxXSxkaW1ncmF5OlsxMDUsMTA1LDEwNSwxXSxkaW1ncmV5OlsxMDUsMTA1 LDEwNSwxXSxkb2RnZXJibHVlOlszMCwxNDQsMjU1LDFdLGZpcmVicmljazpb MTc4LDM0LDM0LDFdLGZsb3JhbHdoaXRlOlsyNTUsMjUwLDI0MCwxXSxmb3Jl c3RncmVlbjpbMzQsMTM5LDM0LDFdLGZ1Y2hzaWE6WzI1NSwwLDI1NSwxXSxn YWluc2Jvcm86WzIyMCwyMjAsMjIwLDFdLGdob3N0d2hpdGU6WzI0OCwyNDgs MjU1LDFdLGdvbGQ6WzI1NSwyMTUsMCwxXSxnb2xkZW5yb2Q6WzIxOCwxNjUs MzIsMV0sZ3JheTpbMTI4LDEyOCwxMjgsMV0sZ3JlZW46WzAsMTI4LDAsMV0s Z3JlZW55ZWxsb3c6WzE3MywyNTUsNDcsMV0sZ3JleTpbMTI4LDEyOCwxMjgs MV0saG9uZXlkZXc6WzI0MCwyNTUsMjQwLDFdLGhvdHBpbms6WzI1NSwxMDUs MTgwLDFdLGluZGlhbnJlZDpbMjA1LDkyLDkyLDFdLGluZGlnbzpbNzUsMCwx MzAsMV0saXZvcnk6WzI1NSwyNTUsMjQwLDFdLGtoYWtpOlsyNDAsMjMwLDE0 MCwxXSxsYXZlbmRlcjpbMjMwLDIzMCwyNTAsMV0sbGF2ZW5kZXJibHVzaDpb MjU1LDI0MCwyNDUsMV0sbGF3bmdyZWVuOlsxMjQsMjUyLDAsMV0sbGVtb25j aGlmZm9uOlsyNTUsMjUwLDIwNSwxXSxsaWdodGJsdWU6WzE3MywyMTYsMjMw LDFdLGxpZ2h0Y29yYWw6WzI0MCwxMjgsMTI4LDFdLGxpZ2h0Y3lhbjpbMjI0 LDI1NSwyNTUsMV0sbGlnaHRnb2xkZW5yb2R5ZWxsb3c6WzI1MCwyNTAsMjEw LDFdLGxpZ2h0Z3JheTpbMjExLDIxMSwyMTEsMV0sbGlnaHRncmVlbjpbMTQ0 LDIzOCwxNDQsMV0sbGlnaHRncmV5OlsyMTEsMjExLDIxMSwxXSxsaWdodHBp bms6WzI1NSwxODIsMTkzLDFdLGxpZ2h0c2FsbW9uOlsyNTUsMTYwLDEyMiwx XSxsaWdodHNlYWdyZWVuOlszMiwxNzgsMTcwLDFdLGxpZ2h0c2t5Ymx1ZTpb MTM1LDIwNiwyNTAsMV0sbGlnaHRzbGF0ZWdyYXk6WzExOSwxMzYsMTUzLDFd LGxpZ2h0c2xhdGVncmV5OlsxMTksMTM2LDE1MywxXSxsaWdodHN0ZWVsYmx1 ZTpbMTc2LDE5NiwyMjIsMV0sbGlnaHR5ZWxsb3c6WzI1NSwyNTUsMjI0LDFd LGxpbWU6WzAsMjU1LDAsMV0sbGltZWdyZWVuOls1MCwyMDUsNTAsMV0sbGlu ZW46WzI1MCwyNDAsMjMwLDFdLG1hZ2VudGE6WzI1NSwwLDI1NSwxXSxtYXJv b246WzEyOCwwLDAsMV0sbWVkaXVtYXF1YW1hcmluZTpbMTAyLDIwNSwxNzAs MV0sbWVkaXVtYmx1ZTpbMCwwLDIwNSwxXSxtZWRpdW1vcmNoaWQ6WzE4Niw4 NSwyMTEsMV0sbWVkaXVtcHVycGxlOlsxNDcsMTEyLDIxOSwxXSxtZWRpdW1z ZWFncmVlbjpbNjAsMTc5LDExMywxXSxtZWRpdW1zbGF0ZWJsdWU6WzEyMywx MDQsMjM4LDFdLG1lZGl1bXNwcmluZ2dyZWVuOlswLDI1MCwxNTQsMV0sbWVk aXVtdHVycXVvaXNlOls3MiwyMDksMjA0LDFdLG1lZGl1bXZpb2xldHJlZDpb MTk5LDIxLDEzMywxXSxtaWRuaWdodGJsdWU6WzI1LDI1LDExMiwxXSxtaW50 Y3JlYW06WzI0NSwyNTUsMjUwLDFdLG1pc3R5cm9zZTpbMjU1LDIyOCwyMjUs MV0sbW9jY2FzaW46WzI1NSwyMjgsMTgxLDFdLG5hdmFqb3doaXRlOlsyNTUs MjIyLDE3MywxXSxuYXZ5OlswLDAsMTI4LDFdLG9sZGxhY2U6WzI1MywyNDUs MjMwLDFdLG9saXZlOlsxMjgsMTI4LDAsMV0sb2xpdmVkcmFiOlsxMDcsMTQy LDM1LDFdLG9yYW5nZTpbMjU1LDE2NSwwLDFdLG9yYW5nZXJlZDpbMjU1LDY5 LDAsMV0sb3JjaGlkOlsyMTgsMTEyLDIxNCwxXSxwYWxlZ29sZGVucm9kOlsy MzgsMjMyLDE3MCwxXSxwYWxlZ3JlZW46WzE1MiwyNTEsMTUyLDFdLHBhbGV0 dXJxdW9pc2U6WzE3NSwyMzgsMjM4LDFdLHBhbGV2aW9sZXRyZWQ6WzIxOSwx MTIsMTQ3LDFdLHBhcGF5YXdoaXA6WzI1NSwyMzksMjEzLDFdLHBlYWNocHVm ZjpbMjU1LDIxOCwxODUsMV0scGVydTpbMjA1LDEzMyw2MywxXSxwaW5rOlsy NTUsMTkyLDIwMywxXSxwbHVtOlsyMjEsMTYwLDIyMSwxXSxwb3dkZXJibHVl OlsxNzYsMjI0LDIzMCwxXSxwdXJwbGU6WzEyOCwwLDEyOCwxXSxyZWJlY2Nh cHVycGxlOlsxMDIsNTEsMTUzLDFdLHJlZDpbMjU1LDAsMCwxXSxyb3N5YnJv d246WzE4OCwxNDMsMTQzLDFdLHJveWFsYmx1ZTpbNjUsMTA1LDIyNSwxXSxz YWRkbGVicm93bjpbMTM5LDY5LDE5LDFdLHNhbG1vbjpbMjUwLDEyOCwxMTQs MV0sc2FuZHlicm93bjpbMjQ0LDE2NCw5NiwxXSxzZWFncmVlbjpbNDYsMTM5 LDg3LDFdLHNlYXNoZWxsOlsyNTUsMjQ1LDIzOCwxXSxzaWVubmE6WzE2MCw4 Miw0NSwxXSxzaWx2ZXI6WzE5MiwxOTIsMTkyLDFdLHNreWJsdWU6WzEzNSwy MDYsMjM1LDFdLHNsYXRlYmx1ZTpbMTA2LDkwLDIwNSwxXSxzbGF0ZWdyYXk6 WzExMiwxMjgsMTQ0LDFdLHNsYXRlZ3JleTpbMTEyLDEyOCwxNDQsMV0sc25v dzpbMjU1LDI1MCwyNTAsMV0sc3ByaW5nZ3JlZW46WzAsMjU1LDEyNywxXSxz dGVlbGJsdWU6WzcwLDEzMCwxODAsMV0sdGFuOlsyMTAsMTgwLDE0MCwxXSx0 ZWFsOlswLDEyOCwxMjgsMV0sdGhpc3RsZTpbMjE2LDE5MSwyMTYsMV0sdG9t YXRvOlsyNTUsOTksNzEsMV0sdHVycXVvaXNlOls2NCwyMjQsMjA4LDFdLHZp b2xldDpbMjM4LDEzMCwyMzgsMV0sd2hlYXQ6WzI0NSwyMjIsMTc5LDFdLHdo aXRlOlsyNTUsMjU1LDI1NSwxXSx3aGl0ZXNtb2tlOlsyNDUsMjQ1LDI0NSwx XSx5ZWxsb3c6WzI1NSwyNTUsMCwxXSx5ZWxsb3dncmVlbjpbMTU0LDIwNSw1 MCwxXX07ZnVuY3Rpb24gbih0KXtyZXR1cm4odD1NYXRoLnJvdW5kKHQpKTww PzA6dD4yNTU/MjU1OnR9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdDwwPzA6dD4x PzE6dH1mdW5jdGlvbiBpKHQpe3JldHVybiIlIj09PXRbdC5sZW5ndGgtMV0/ bihwYXJzZUZsb2F0KHQpLzEwMCoyNTUpOm4ocGFyc2VJbnQodCkpfWZ1bmN0 aW9uIG8odCl7cmV0dXJuIiUiPT09dFt0Lmxlbmd0aC0xXT9hKHBhcnNlRmxv YXQodCkvMTAwKTphKHBhcnNlRmxvYXQodCkpfWZ1bmN0aW9uIHModCxlLHIp e3JldHVybiByPDA/cis9MTpyPjEmJihyLT0xKSw2KnI8MT90KyhlLXQpKnIq NjoyKnI8MT9lOjMqcjwyP3QrKGUtdCkqKDIvMy1yKSo2OnR9dHJ5e2UucGFy c2VDU1NDb2xvcj1mdW5jdGlvbih0KXt2YXIgZSxhPXQucmVwbGFjZSgvIC9n LCIiKS50b0xvd2VyQ2FzZSgpO2lmKGEgaW4gcilyZXR1cm4gclthXS5zbGlj ZSgpO2lmKCIjIj09PWFbMF0pcmV0dXJuIDQ9PT1hLmxlbmd0aD8oZT1wYXJz ZUludChhLnN1YnN0cigxKSwxNikpPj0wJiZlPD00MDk1P1soMzg0MCZlKT4+ NHwoMzg0MCZlKT4+OCwyNDAmZXwoMjQwJmUpPj40LDE1JmV8KDE1JmUpPDw0 LDFdOm51bGw6Nz09PWEubGVuZ3RoJiYoZT1wYXJzZUludChhLnN1YnN0cigx KSwxNikpPj0wJiZlPD0xNjc3NzIxNT9bKDE2NzExNjgwJmUpPj4xNiwoNjUy ODAmZSk+PjgsMjU1JmUsMV06bnVsbDt2YXIgbD1hLmluZGV4T2YoIigiKSxj PWEuaW5kZXhPZigiKSIpO2lmKC0xIT09bCYmYysxPT09YS5sZW5ndGgpe3Zh ciB1PWEuc3Vic3RyKDAsbCksaD1hLnN1YnN0cihsKzEsYy0obCsxKSkuc3Bs aXQoIiwiKSxmPTE7c3dpdGNoKHUpe2Nhc2UicmdiYSI6aWYoNCE9PWgubGVu Z3RoKXJldHVybiBudWxsO2Y9byhoLnBvcCgpKTtjYXNlInJnYiI6cmV0dXJu IDMhPT1oLmxlbmd0aD9udWxsOltpKGhbMF0pLGkoaFsxXSksaShoWzJdKSxm XTtjYXNlImhzbGEiOmlmKDQhPT1oLmxlbmd0aClyZXR1cm4gbnVsbDtmPW8o aC5wb3AoKSk7Y2FzZSJoc2wiOmlmKDMhPT1oLmxlbmd0aClyZXR1cm4gbnVs bDt2YXIgcD0ocGFyc2VGbG9hdChoWzBdKSUzNjArMzYwKSUzNjAvMzYwLGQ9 byhoWzFdKSxnPW8oaFsyXSksdj1nPD0uNT9nKihkKzEpOmcrZC1nKmQsbT0y KmctdjtyZXR1cm5bbigyNTUqcyhtLHYscCsxLzMpKSxuKDI1NSpzKG0sdixw KSksbigyNTUqcyhtLHYscC0xLzMpKSxmXTtkZWZhdWx0OnJldHVybiBudWxs fX1yZXR1cm4gbnVsbH19Y2F0Y2godCl7fX0pLnBhcnNlQ1NTQ29sb3IsV3Q9 ZnVuY3Rpb24odCxlLHIsbil7dm9pZCAwPT09biYmKG49MSksdGhpcy5yPXQs dGhpcy5nPWUsdGhpcy5iPXIsdGhpcy5hPW59O1d0LnBhcnNlPWZ1bmN0aW9u KHQpe2lmKHQpe2lmKHQgaW5zdGFuY2VvZiBXdClyZXR1cm4gdDtpZigic3Ry aW5nIj09dHlwZW9mIHQpe3ZhciBlPVl0KHQpO2lmKGUpcmV0dXJuIG5ldyBX dChlWzBdLzI1NSplWzNdLGVbMV0vMjU1KmVbM10sZVsyXS8yNTUqZVszXSxl WzNdKX19fSxXdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIg dD10aGlzLnRvQXJyYXkoKSxlPXRbMF0scj10WzFdLG49dFsyXSxhPXRbM107 cmV0dXJuInJnYmEoIitNYXRoLnJvdW5kKGUpKyIsIitNYXRoLnJvdW5kKHIp KyIsIitNYXRoLnJvdW5kKG4pKyIsIithKyIpIn0sV3QucHJvdG90eXBlLnRv QXJyYXk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnIsZT10aGlzLmcscj10aGlz LmIsbj10aGlzLmE7cmV0dXJuIDA9PT1uP1swLDAsMCwwXTpbMjU1KnQvbiwy NTUqZS9uLDI1NSpyL24sbl19LFd0LmJsYWNrPW5ldyBXdCgwLDAsMCwxKSxX dC53aGl0ZT1uZXcgV3QoMSwxLDEsMSksV3QudHJhbnNwYXJlbnQ9bmV3IFd0 KDAsMCwwLDApLFd0LnJlZD1uZXcgV3QoMSwwLDAsMSk7dmFyIFh0PWZ1bmN0 aW9uKHQsZSxyKXt0aGlzLnNlbnNpdGl2aXR5PXQ/ZT8idmFyaWFudCI6ImNh c2UiOmU/ImFjY2VudCI6ImJhc2UiLHRoaXMubG9jYWxlPXIsdGhpcy5jb2xs YXRvcj1uZXcgSW50bC5Db2xsYXRvcih0aGlzLmxvY2FsZT90aGlzLmxvY2Fs ZTpbXSx7c2Vuc2l0aXZpdHk6dGhpcy5zZW5zaXRpdml0eSx1c2FnZToic2Vh cmNoIn0pfTtYdC5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbih0LGUpe3Jl dHVybiB0aGlzLmNvbGxhdG9yLmNvbXBhcmUodCxlKX0sWHQucHJvdG90eXBl LnJlc29sdmVkTG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBJbnRsLkNv bGxhdG9yKHRoaXMubG9jYWxlP3RoaXMubG9jYWxlOltdKS5yZXNvbHZlZE9w dGlvbnMoKS5sb2NhbGV9O3ZhciBadD1mdW5jdGlvbih0LGUscixuKXt0aGlz LnRleHQ9dCx0aGlzLnNjYWxlPWUsdGhpcy5mb250U3RhY2s9cix0aGlzLnRl eHRDb2xvcj1ufSxKdD1mdW5jdGlvbih0KXt0aGlzLnNlY3Rpb25zPXR9O2Z1 bmN0aW9uIEt0KHQsZSxyLG4pe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYm dD49MCYmdDw9MjU1JiYibnVtYmVyIj09dHlwZW9mIGUmJmU+PTAmJmU8PTI1 NSYmIm51bWJlciI9PXR5cGVvZiByJiZyPj0wJiZyPD0yNTU/dm9pZCAwPT09 bnx8Im51bWJlciI9PXR5cGVvZiBuJiZuPj0wJiZuPD0xP251bGw6IkludmFs aWQgcmdiYSB2YWx1ZSBbIitbdCxlLHIsbl0uam9pbigiLCAiKSsiXTogJ2En IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLiI6IkludmFsaWQgcmdiYSB2YWx1 ZSBbIisoIm51bWJlciI9PXR5cGVvZiBuP1t0LGUscixuXTpbdCxlLHJdKS5q b2luKCIsICIpKyJdOiAncicsICdnJywgYW5kICdiJyBtdXN0IGJlIGJldHdl ZW4gMCBhbmQgMjU1LiJ9ZnVuY3Rpb24gUXQodCl7aWYobnVsbD09PXQpcmV0 dXJuIHp0O2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gRHQ7aWYoImJv b2xlYW4iPT10eXBlb2YgdClyZXR1cm4gUnQ7aWYoIm51bWJlciI9PXR5cGVv ZiB0KXJldHVybiBJdDtpZih0IGluc3RhbmNlb2YgV3QpcmV0dXJuIEZ0O2lm KHQgaW5zdGFuY2VvZiBYdClyZXR1cm4ganQ7aWYodCBpbnN0YW5jZW9mIEp0 KXJldHVybiBWdDtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGUscj10 Lmxlbmd0aCxuPTAsYT10O248YS5sZW5ndGg7bis9MSl7dmFyIGk9UXQoYVtu XSk7aWYoZSl7aWYoZT09PWkpY29udGludWU7ZT1OdDticmVha31lPWl9cmV0 dXJuIFV0KGV8fE50LHIpfXJldHVybiBCdH1mdW5jdGlvbiAkdCh0KXt2YXIg ZT10eXBlb2YgdDtyZXR1cm4gbnVsbD09PXQ/IiI6InN0cmluZyI9PT1lfHwi bnVtYmVyIj09PWV8fCJib29sZWFuIj09PWU/U3RyaW5nKHQpOnQgaW5zdGFu Y2VvZiBXdHx8dCBpbnN0YW5jZW9mIEp0P3QudG9TdHJpbmcoKTpKU09OLnN0 cmluZ2lmeSh0KX1KdC5mcm9tU3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBu ZXcgSnQoW25ldyBadCh0LG51bGwsbnVsbCxudWxsKV0pfSxKdC5wcm90b3R5 cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWN0aW9ucy5t YXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudGV4dH0pLmpvaW4oIiIpfSxKdC5w cm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVsiZm9y bWF0Il0sZT0wLHI9dGhpcy5zZWN0aW9ucztlPHIubGVuZ3RoO2UrPTEpe3Zh ciBuPXJbZV07dC5wdXNoKG4udGV4dCk7dmFyIGE9e307bi5mb250U3RhY2sm JihhWyJ0ZXh0LWZvbnQiXT1bImxpdGVyYWwiLG4uZm9udFN0YWNrLnNwbGl0 KCIsIildKSxuLnNjYWxlJiYoYVsiZm9udC1zY2FsZSJdPW4uc2NhbGUpLG4u dGV4dENvbG9yJiYoYVsidGV4dC1jb2xvciJdPVsicmdiYSJdLmNvbmNhdChu LnRleHRDb2xvci50b0FycmF5KCkpKSx0LnB1c2goYSl9cmV0dXJuIHR9O3Zh ciB0ZT1mdW5jdGlvbih0LGUpe3RoaXMudHlwZT10LHRoaXMudmFsdWU9ZX07 dGUucGFyc2U9ZnVuY3Rpb24odCxlKXtpZigyIT09dC5sZW5ndGgpcmV0dXJu IGUuZXJyb3IoIidsaXRlcmFsJyBleHByZXNzaW9uIHJlcXVpcmVzIGV4YWN0 bHkgb25lIGFyZ3VtZW50LCBidXQgZm91bmQgIisodC5sZW5ndGgtMSkrIiBp bnN0ZWFkLiIpO2lmKCFmdW5jdGlvbiB0KGUpe2lmKG51bGw9PT1lKXJldHVy biEwO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4hMDtpZigiYm9vbGVh biI9PXR5cGVvZiBlKXJldHVybiEwO2lmKCJudW1iZXIiPT10eXBlb2YgZSly ZXR1cm4hMDtpZihlIGluc3RhbmNlb2YgV3QpcmV0dXJuITA7aWYoZSBpbnN0 YW5jZW9mIFh0KXJldHVybiEwO2lmKGUgaW5zdGFuY2VvZiBKdClyZXR1cm4h MDtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHI9MCxuPWU7cjxuLmxl bmd0aDtyKz0xKWlmKCF0KG5bcl0pKXJldHVybiExO3JldHVybiEwfWlmKCJv YmplY3QiPT10eXBlb2YgZSl7Zm9yKHZhciBhIGluIGUpaWYoIXQoZVthXSkp cmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9KHRbMV0pKXJldHVybiBlLmVy cm9yKCJpbnZhbGlkIHZhbHVlIik7dmFyIHI9dFsxXSxuPVF0KHIpLGE9ZS5l eHBlY3RlZFR5cGU7cmV0dXJuImFycmF5IiE9PW4ua2luZHx8MCE9PW4uTnx8 IWF8fCJhcnJheSIhPT1hLmtpbmR8fCJudW1iZXIiPT10eXBlb2YgYS5OJiYw IT09YS5OfHwobj1hKSxuZXcgdGUobixyKX0sdGUucHJvdG90eXBlLmV2YWx1 YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHRlLnByb3RvdHlw ZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24oKXt9LHRlLnByb3RvdHlwZS5wb3NzaWJs ZU91dHB1dHM9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy52YWx1ZV19LHRlLnBy b3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4iYXJyYXkiPT09 dGhpcy50eXBlLmtpbmR8fCJvYmplY3QiPT09dGhpcy50eXBlLmtpbmQ/WyJs aXRlcmFsIix0aGlzLnZhbHVlXTp0aGlzLnZhbHVlIGluc3RhbmNlb2YgV3Q/ WyJyZ2JhIl0uY29uY2F0KHRoaXMudmFsdWUudG9BcnJheSgpKTp0aGlzLnZh bHVlIGluc3RhbmNlb2YgSnQ/dGhpcy52YWx1ZS5zZXJpYWxpemUoKTp0aGlz LnZhbHVlfTt2YXIgZWU9ZnVuY3Rpb24odCl7dGhpcy5uYW1lPSJFeHByZXNz aW9uRXZhbHVhdGlvbkVycm9yIix0aGlzLm1lc3NhZ2U9dH07ZWUucHJvdG90 eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2V9O3Zh ciByZT17c3RyaW5nOkR0LG51bWJlcjpJdCxib29sZWFuOlJ0LG9iamVjdDpC dH0sbmU9ZnVuY3Rpb24odCxlKXt0aGlzLnR5cGU9dCx0aGlzLmFyZ3M9ZX07 bmUucGFyc2U9ZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aDwyKXJldHVybiBl LmVycm9yKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIik7dmFy IHIsbj0xLGE9dFswXTtpZigiYXJyYXkiPT09YSl7dmFyIGksbztpZih0Lmxl bmd0aD4yKXt2YXIgcz10WzFdO2lmKCJzdHJpbmciIT10eXBlb2Ygc3x8IShz IGluIHJlKXx8Im9iamVjdCI9PT1zKXJldHVybiBlLmVycm9yKCdUaGUgaXRl bSB0eXBlIGFyZ3VtZW50IG9mICJhcnJheSIgbXVzdCBiZSBvbmUgb2Ygc3Ry aW5nLCBudW1iZXIsIGJvb2xlYW4nLDEpO2k9cmVbc10sbisrfWVsc2UgaT1O dDtpZih0Lmxlbmd0aD4zKXtpZihudWxsIT09dFsyXSYmKCJudW1iZXIiIT10 eXBlb2YgdFsyXXx8dFsyXTwwfHx0WzJdIT09TWF0aC5mbG9vcih0WzJdKSkp cmV0dXJuIGUuZXJyb3IoJ1RoZSBsZW5ndGggYXJndW1lbnQgdG8gImFycmF5 IiBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBsaXRlcmFsJywyKTtvPXRb Ml0sbisrfXI9VXQoaSxvKX1lbHNlIHI9cmVbYV07Zm9yKHZhciBsPVtdO248 dC5sZW5ndGg7bisrKXt2YXIgYz1lLnBhcnNlKHRbbl0sbixOdCk7aWYoIWMp cmV0dXJuIG51bGw7bC5wdXNoKGMpfXJldHVybiBuZXcgbmUocixsKX0sbmUu cHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8 dGhpcy5hcmdzLmxlbmd0aDtlKyspe3ZhciByPXRoaXMuYXJnc1tlXS5ldmFs dWF0ZSh0KTtpZighR3QodGhpcy50eXBlLFF0KHIpKSlyZXR1cm4gcjtpZihl PT09dGhpcy5hcmdzLmxlbmd0aC0xKXRocm93IG5ldyBlZSgiRXhwZWN0ZWQg dmFsdWUgdG8gYmUgb2YgdHlwZSAiK3F0KHRoaXMudHlwZSkrIiwgYnV0IGZv dW5kICIrcXQoUXQocikpKyIgaW5zdGVhZC4iKX1yZXR1cm4gbnVsbH0sbmUu cHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0aGlzLmFyZ3MuZm9y RWFjaCh0KX0sbmUucHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlv bigpe3ZhciB0O3JldHVybih0PVtdKS5jb25jYXQuYXBwbHkodCx0aGlzLmFy Z3MubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBvc3NpYmxlT3V0cHV0cygp fSkpfSxuZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7dmFyIHQ9 dGhpcy50eXBlLGU9W3Qua2luZF07aWYoImFycmF5Ij09PXQua2luZCl7dmFy IHI9dC5pdGVtVHlwZTtpZigic3RyaW5nIj09PXIua2luZHx8Im51bWJlciI9 PT1yLmtpbmR8fCJib29sZWFuIj09PXIua2luZCl7ZS5wdXNoKHIua2luZCk7 dmFyIG49dC5OOygibnVtYmVyIj09dHlwZW9mIG58fHRoaXMuYXJncy5sZW5n dGg+MSkmJmUucHVzaChuKX19cmV0dXJuIGUuY29uY2F0KHRoaXMuYXJncy5t YXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2VyaWFsaXplKCl9KSl9O3ZhciBh ZT1mdW5jdGlvbih0KXt0aGlzLnR5cGU9VnQsdGhpcy5zZWN0aW9ucz10fTth ZS5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPDMpcmV0dXJuIGUu ZXJyb3IoIkV4cGVjdGVkIGF0IGxlYXN0IHR3byBhcmd1bWVudHMuIik7aWYo KHQubGVuZ3RoLTEpJTIhPTApcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGFu IGV2ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cy4iKTtmb3IodmFyIHI9W10sbj0x O248dC5sZW5ndGgtMTtuKz0yKXt2YXIgYT1lLnBhcnNlKHRbbl0sMSxOdCk7 aWYoIWEpcmV0dXJuIG51bGw7dmFyIGk9YS50eXBlLmtpbmQ7aWYoInN0cmlu ZyIhPT1pJiYidmFsdWUiIT09aSYmIm51bGwiIT09aSlyZXR1cm4gZS5lcnJv cigiRm9ybWF0dGVkIHRleHQgdHlwZSBtdXN0IGJlICdzdHJpbmcnLCAndmFs dWUnLCBvciAnbnVsbCcuIik7dmFyIG89dFtuKzFdO2lmKCJvYmplY3QiIT10 eXBlb2Ygb3x8QXJyYXkuaXNBcnJheShvKSlyZXR1cm4gZS5lcnJvcigiRm9y bWF0IG9wdGlvbnMgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuIik7dmFy IHM9bnVsbDtpZihvWyJmb250LXNjYWxlIl0mJiEocz1lLnBhcnNlKG9bImZv bnQtc2NhbGUiXSwxLEl0KSkpcmV0dXJuIG51bGw7dmFyIGw9bnVsbDtpZihv WyJ0ZXh0LWZvbnQiXSYmIShsPWUucGFyc2Uob1sidGV4dC1mb250Il0sMSxV dChEdCkpKSlyZXR1cm4gbnVsbDt2YXIgYz1udWxsO2lmKG9bInRleHQtY29s b3IiXSYmIShjPWUucGFyc2Uob1sidGV4dC1jb2xvciJdLDEsRnQpKSlyZXR1 cm4gbnVsbDtyLnB1c2goe3RleHQ6YSxzY2FsZTpzLGZvbnQ6bCx0ZXh0Q29s b3I6Y30pfXJldHVybiBuZXcgYWUocil9LGFlLnByb3RvdHlwZS5ldmFsdWF0 ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEp0KHRoaXMuc2VjdGlvbnMubWFw KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgWnQoJHQoZS50ZXh0LmV2YWx1YXRl KHQpKSxlLnNjYWxlP2Uuc2NhbGUuZXZhbHVhdGUodCk6bnVsbCxlLmZvbnQ/ ZS5mb250LmV2YWx1YXRlKHQpLmpvaW4oIiwiKTpudWxsLGUudGV4dENvbG9y P2UudGV4dENvbG9yLmV2YWx1YXRlKHQpOm51bGwpfSkpfSxhZS5wcm90b3R5 cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dGhpcy5z ZWN0aW9ucztlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV07dChuLnRleHQp LG4uc2NhbGUmJnQobi5zY2FsZSksbi5mb250JiZ0KG4uZm9udCksbi50ZXh0 Q29sb3ImJnQobi50ZXh0Q29sb3IpfX0sYWUucHJvdG90eXBlLnBvc3NpYmxl T3V0cHV0cz1mdW5jdGlvbigpe3JldHVyblt2b2lkIDBdfSxhZS5wcm90b3R5 cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVsiZm9ybWF0Il0s ZT0wLHI9dGhpcy5zZWN0aW9ucztlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJb ZV07dC5wdXNoKG4udGV4dC5zZXJpYWxpemUoKSk7dmFyIGE9e307bi5zY2Fs ZSYmKGFbImZvbnQtc2NhbGUiXT1uLnNjYWxlLnNlcmlhbGl6ZSgpKSxuLmZv bnQmJihhWyJ0ZXh0LWZvbnQiXT1uLmZvbnQuc2VyaWFsaXplKCkpLG4udGV4 dENvbG9yJiYoYVsidGV4dC1jb2xvciJdPW4udGV4dENvbG9yLnNlcmlhbGl6 ZSgpKSx0LnB1c2goYSl9cmV0dXJuIHR9O3ZhciBpZT17InRvLWJvb2xlYW4i OlJ0LCJ0by1jb2xvciI6RnQsInRvLW51bWJlciI6SXQsInRvLXN0cmluZyI6 RHR9LG9lPWZ1bmN0aW9uKHQsZSl7dGhpcy50eXBlPXQsdGhpcy5hcmdzPWV9 O29lLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8MilyZXR1cm4g ZS5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpO3Zh ciByPXRbMF07aWYoKCJ0by1ib29sZWFuIj09PXJ8fCJ0by1zdHJpbmciPT09 cikmJjIhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgb25l IGFyZ3VtZW50LiIpO2Zvcih2YXIgbj1pZVtyXSxhPVtdLGk9MTtpPHQubGVu Z3RoO2krKyl7dmFyIG89ZS5wYXJzZSh0W2ldLGksTnQpO2lmKCFvKXJldHVy biBudWxsO2EucHVzaChvKX1yZXR1cm4gbmV3IG9lKG4sYSl9LG9lLnByb3Rv dHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXtpZigiYm9vbGVhbiI9PT10aGlz LnR5cGUua2luZClyZXR1cm4gQm9vbGVhbih0aGlzLmFyZ3NbMF0uZXZhbHVh dGUodCkpO2lmKCJjb2xvciI9PT10aGlzLnR5cGUua2luZCl7Zm9yKHZhciBl LHIsbj0wLGE9dGhpcy5hcmdzO248YS5sZW5ndGg7bis9MSl7aWYocj1udWxs LChlPWFbbl0uZXZhbHVhdGUodCkpaW5zdGFuY2VvZiBXdClyZXR1cm4gZTtp Zigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBpPXQucGFyc2VDb2xvcihlKTtp ZihpKXJldHVybiBpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShlKSYmIShyPWUu bGVuZ3RoPDN8fGUubGVuZ3RoPjQ/IkludmFsaWQgcmJnYSB2YWx1ZSAiK0pT T04uc3RyaW5naWZ5KGUpKyI6IGV4cGVjdGVkIGFuIGFycmF5IGNvbnRhaW5p bmcgZWl0aGVyIHRocmVlIG9yIGZvdXIgbnVtZXJpYyB2YWx1ZXMuIjpLdChl WzBdLGVbMV0sZVsyXSxlWzNdKSkpcmV0dXJuIG5ldyBXdChlWzBdLzI1NSxl WzFdLzI1NSxlWzJdLzI1NSxlWzNdKX10aHJvdyBuZXcgZWUocnx8IkNvdWxk IG5vdCBwYXJzZSBjb2xvciBmcm9tIHZhbHVlICciKygic3RyaW5nIj09dHlw ZW9mIGU/ZTpTdHJpbmcoSlNPTi5zdHJpbmdpZnkoZSkpKSsiJyIpfWlmKCJu dW1iZXIiPT09dGhpcy50eXBlLmtpbmQpe2Zvcih2YXIgbz1udWxsLHM9MCxs PXRoaXMuYXJncztzPGwubGVuZ3RoO3MrPTEpe2lmKG51bGw9PT0obz1sW3Nd LmV2YWx1YXRlKHQpKSlyZXR1cm4gMDt2YXIgYz1OdW1iZXIobyk7aWYoIWlz TmFOKGMpKXJldHVybiBjfXRocm93IG5ldyBlZSgiQ291bGQgbm90IGNvbnZl cnQgIitKU09OLnN0cmluZ2lmeShvKSsiIHRvIG51bWJlci4iKX1yZXR1cm4i Zm9ybWF0dGVkIj09PXRoaXMudHlwZS5raW5kP0p0LmZyb21TdHJpbmcoJHQo dGhpcy5hcmdzWzBdLmV2YWx1YXRlKHQpKSk6JHQodGhpcy5hcmdzWzBdLmV2 YWx1YXRlKHQpKX0sb2UucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0 KXt0aGlzLmFyZ3MuZm9yRWFjaCh0KX0sb2UucHJvdG90eXBlLnBvc3NpYmxl T3V0cHV0cz1mdW5jdGlvbigpe3ZhciB0O3JldHVybih0PVtdKS5jb25jYXQu YXBwbHkodCx0aGlzLmFyZ3MubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBv c3NpYmxlT3V0cHV0cygpfSkpfSxvZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1 bmN0aW9uKCl7aWYoImZvcm1hdHRlZCI9PT10aGlzLnR5cGUua2luZClyZXR1 cm4gbmV3IGFlKFt7dGV4dDp0aGlzLmFyZ3NbMF0sc2NhbGU6bnVsbCxmb250 Om51bGwsdGV4dENvbG9yOm51bGx9XSkuc2VyaWFsaXplKCk7dmFyIHQ9WyJ0 by0iK3RoaXMudHlwZS5raW5kXTtyZXR1cm4gdGhpcy5lYWNoQ2hpbGQoZnVu Y3Rpb24oZSl7dC5wdXNoKGUuc2VyaWFsaXplKCkpfSksdH07dmFyIHNlPVsi VW5rbm93biIsIlBvaW50IiwiTGluZVN0cmluZyIsIlBvbHlnb24iXSxsZT1m dW5jdGlvbigpe3RoaXMuZ2xvYmFscz1udWxsLHRoaXMuZmVhdHVyZT1udWxs LHRoaXMuZmVhdHVyZVN0YXRlPW51bGwsdGhpcy5mb3JtYXR0ZWRTZWN0aW9u PW51bGwsdGhpcy5fcGFyc2VDb2xvckNhY2hlPXt9fTtsZS5wcm90b3R5cGUu aWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZWF0dXJlJiYiaWQiaW4gdGhp cy5mZWF0dXJlP3RoaXMuZmVhdHVyZS5pZDpudWxsfSxsZS5wcm90b3R5cGUu Z2VvbWV0cnlUeXBlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmVhdHVyZT8i bnVtYmVyIj09dHlwZW9mIHRoaXMuZmVhdHVyZS50eXBlP3NlW3RoaXMuZmVh dHVyZS50eXBlXTp0aGlzLmZlYXR1cmUudHlwZTpudWxsfSxsZS5wcm90b3R5 cGUucHJvcGVydGllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZlYXR1cmUm JnRoaXMuZmVhdHVyZS5wcm9wZXJ0aWVzfHx7fX0sbGUucHJvdG90eXBlLnBh cnNlQ29sb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyc2VDb2xvckNh Y2hlW3RdO3JldHVybiBlfHwoZT10aGlzLl9wYXJzZUNvbG9yQ2FjaGVbdF09 V3QucGFyc2UodCkpLGV9O3ZhciBjZT1mdW5jdGlvbih0LGUscixuKXt0aGlz Lm5hbWU9dCx0aGlzLnR5cGU9ZSx0aGlzLl9ldmFsdWF0ZT1yLHRoaXMuYXJn cz1ufTtjZS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMuX2V2YWx1YXRlKHQsdGhpcy5hcmdzKX0sY2UucHJvdG90eXBlLmVh Y2hDaGlsZD1mdW5jdGlvbih0KXt0aGlzLmFyZ3MuZm9yRWFjaCh0KX0sY2Uu cHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlvbigpe3JldHVyblt2 b2lkIDBdfSxjZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0 dXJuW3RoaXMubmFtZV0uY29uY2F0KHRoaXMuYXJncy5tYXAoZnVuY3Rpb24o dCl7cmV0dXJuIHQuc2VyaWFsaXplKCl9KSl9LGNlLnBhcnNlPWZ1bmN0aW9u KHQsZSl7dmFyIHIsbj10WzBdLGE9Y2UuZGVmaW5pdGlvbnNbbl07aWYoIWEp cmV0dXJuIGUuZXJyb3IoJ1Vua25vd24gZXhwcmVzc2lvbiAiJytuKyciLiBJ ZiB5b3Ugd2FudGVkIGEgbGl0ZXJhbCBhcnJheSwgdXNlIFsibGl0ZXJhbCIs IFsuLi5dXS4nLDApO2Zvcih2YXIgaT1BcnJheS5pc0FycmF5KGEpP2FbMF06 YS50eXBlLG89QXJyYXkuaXNBcnJheShhKT9bW2FbMV0sYVsyXV1dOmEub3Zl cmxvYWRzLHM9by5maWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHI9ZVswXTtyZXR1 cm4hQXJyYXkuaXNBcnJheShyKXx8ci5sZW5ndGg9PT10Lmxlbmd0aC0xfSks bD1udWxsLGM9MCx1PXM7Yzx1Lmxlbmd0aDtjKz0xKXt2YXIgaD11W2NdLGY9 aFswXSxwPWhbMV07bD1uZXcgZ2UoZS5yZWdpc3RyeSxlLnBhdGgsbnVsbCxl LnNjb3BlKTtmb3IodmFyIGQ9W10sZz0hMSx2PTE7djx0Lmxlbmd0aDt2Kysp e3ZhciBtPXRbdl0seT1BcnJheS5pc0FycmF5KGYpP2Zbdi0xXTpmLnR5cGUs eD1sLnBhcnNlKG0sMStkLmxlbmd0aCx5KTtpZigheCl7Zz0hMDticmVha31k LnB1c2goeCl9aWYoIWcpaWYoQXJyYXkuaXNBcnJheShmKSYmZi5sZW5ndGgh PT1kLmxlbmd0aClsLmVycm9yKCJFeHBlY3RlZCAiK2YubGVuZ3RoKyIgYXJn dW1lbnRzLCBidXQgZm91bmQgIitkLmxlbmd0aCsiIGluc3RlYWQuIik7ZWxz ZXtmb3IodmFyIGI9MDtiPGQubGVuZ3RoO2IrKyl7dmFyIF89QXJyYXkuaXNB cnJheShmKT9mW2JdOmYudHlwZSx3PWRbYl07bC5jb25jYXQoYisxKS5jaGVj a1N1YnR5cGUoXyx3LnR5cGUpfWlmKDA9PT1sLmVycm9ycy5sZW5ndGgpcmV0 dXJuIG5ldyBjZShuLGkscCxkKX19aWYoMT09PXMubGVuZ3RoKShyPWUuZXJy b3JzKS5wdXNoLmFwcGx5KHIsbC5lcnJvcnMpO2Vsc2V7Zm9yKHZhciBrPShz Lmxlbmd0aD9zOm8pLm1hcChmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZT10 WzBdLEFycmF5LmlzQXJyYXkoZSk/IigiK2UubWFwKHF0KS5qb2luKCIsICIp KyIpIjoiKCIrcXQoZS50eXBlKSsiLi4uKSJ9KS5qb2luKCIgfCAiKSxUPVtd LE09MTtNPHQubGVuZ3RoO00rKyl7dmFyIEE9ZS5wYXJzZSh0W01dLDErVC5s ZW5ndGgpO2lmKCFBKXJldHVybiBudWxsO1QucHVzaChxdChBLnR5cGUpKX1l LmVycm9yKCJFeHBlY3RlZCBhcmd1bWVudHMgb2YgdHlwZSAiK2srIiwgYnV0 IGZvdW5kICgiK1Quam9pbigiLCAiKSsiKSBpbnN0ZWFkLiIpfXJldHVybiBu dWxsfSxjZS5yZWdpc3Rlcj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgciBpbiBj ZS5kZWZpbml0aW9ucz1lLGUpdFtyXT1jZX07dmFyIHVlPWZ1bmN0aW9uKHQs ZSxyKXt0aGlzLnR5cGU9anQsdGhpcy5sb2NhbGU9cix0aGlzLmNhc2VTZW5z aXRpdmU9dCx0aGlzLmRpYWNyaXRpY1NlbnNpdGl2ZT1lfTtmdW5jdGlvbiBo ZSh0KXtpZih0IGluc3RhbmNlb2YgY2Upe2lmKCJnZXQiPT09dC5uYW1lJiYx PT09dC5hcmdzLmxlbmd0aClyZXR1cm4hMTtpZigiZmVhdHVyZS1zdGF0ZSI9 PT10Lm5hbWUpcmV0dXJuITE7aWYoImhhcyI9PT10Lm5hbWUmJjE9PT10LmFy Z3MubGVuZ3RoKXJldHVybiExO2lmKCJwcm9wZXJ0aWVzIj09PXQubmFtZXx8 Imdlb21ldHJ5LXR5cGUiPT09dC5uYW1lfHwiaWQiPT09dC5uYW1lKXJldHVy biExO2lmKC9eZmlsdGVyLS8udGVzdCh0Lm5hbWUpKXJldHVybiExfXZhciBl PSEwO3JldHVybiB0LmVhY2hDaGlsZChmdW5jdGlvbih0KXtlJiYhaGUodCkm JihlPSExKX0pLGV9ZnVuY3Rpb24gZmUodCl7aWYodCBpbnN0YW5jZW9mIGNl JiYiZmVhdHVyZS1zdGF0ZSI9PT10Lm5hbWUpcmV0dXJuITE7dmFyIGU9ITA7 cmV0dXJuIHQuZWFjaENoaWxkKGZ1bmN0aW9uKHQpe2UmJiFmZSh0KSYmKGU9 ITEpfSksZX1mdW5jdGlvbiBwZSh0LGUpe2lmKHQgaW5zdGFuY2VvZiBjZSYm ZS5pbmRleE9mKHQubmFtZSk+PTApcmV0dXJuITE7dmFyIHI9ITA7cmV0dXJu IHQuZWFjaENoaWxkKGZ1bmN0aW9uKHQpe3ImJiFwZSh0LGUpJiYocj0hMSl9 KSxyfXVlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYoMiE9PXQubGVuZ3RoKXJl dHVybiBlLmVycm9yKCJFeHBlY3RlZCBvbmUgYXJndW1lbnQuIik7dmFyIHI9 dFsxXTtpZigib2JqZWN0IiE9dHlwZW9mIHJ8fEFycmF5LmlzQXJyYXkocikp cmV0dXJuIGUuZXJyb3IoIkNvbGxhdG9yIG9wdGlvbnMgYXJndW1lbnQgbXVz dCBiZSBhbiBvYmplY3QuIik7dmFyIG49ZS5wYXJzZSh2b2lkIDAhPT1yWyJj YXNlLXNlbnNpdGl2ZSJdJiZyWyJjYXNlLXNlbnNpdGl2ZSJdLDEsUnQpO2lm KCFuKXJldHVybiBudWxsO3ZhciBhPWUucGFyc2Uodm9pZCAwIT09clsiZGlh Y3JpdGljLXNlbnNpdGl2ZSJdJiZyWyJkaWFjcml0aWMtc2Vuc2l0aXZlIl0s MSxSdCk7aWYoIWEpcmV0dXJuIG51bGw7dmFyIGk9bnVsbDtyZXR1cm4gci5s b2NhbGUmJiEoaT1lLnBhcnNlKHIubG9jYWxlLDEsRHQpKT9udWxsOm5ldyB1 ZShuLGEsaSl9LHVlLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXty ZXR1cm4gbmV3IFh0KHRoaXMuY2FzZVNlbnNpdGl2ZS5ldmFsdWF0ZSh0KSx0 aGlzLmRpYWNyaXRpY1NlbnNpdGl2ZS5ldmFsdWF0ZSh0KSx0aGlzLmxvY2Fs ZT90aGlzLmxvY2FsZS5ldmFsdWF0ZSh0KTpudWxsKX0sdWUucHJvdG90eXBl LmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0KHRoaXMuY2FzZVNlbnNpdGl2ZSks dCh0aGlzLmRpYWNyaXRpY1NlbnNpdGl2ZSksdGhpcy5sb2NhbGUmJnQodGhp cy5sb2NhbGUpfSx1ZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1bmN0 aW9uKCl7cmV0dXJuW3ZvaWQgMF19LHVlLnByb3RvdHlwZS5zZXJpYWxpemU9 ZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gdFsiY2FzZS1zZW5zaXRpdmUi XT10aGlzLmNhc2VTZW5zaXRpdmUuc2VyaWFsaXplKCksdFsiZGlhY3JpdGlj LXNlbnNpdGl2ZSJdPXRoaXMuZGlhY3JpdGljU2Vuc2l0aXZlLnNlcmlhbGl6 ZSgpLHRoaXMubG9jYWxlJiYodC5sb2NhbGU9dGhpcy5sb2NhbGUuc2VyaWFs aXplKCkpLFsiY29sbGF0b3IiLHRdfTt2YXIgZGU9ZnVuY3Rpb24odCxlKXt0 aGlzLnR5cGU9ZS50eXBlLHRoaXMubmFtZT10LHRoaXMuYm91bmRFeHByZXNz aW9uPWV9O2RlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYoMiE9PXQubGVuZ3Ro fHwic3RyaW5nIiE9dHlwZW9mIHRbMV0pcmV0dXJuIGUuZXJyb3IoIid2YXIn IGV4cHJlc3Npb24gcmVxdWlyZXMgZXhhY3RseSBvbmUgc3RyaW5nIGxpdGVy YWwgYXJndW1lbnQuIik7dmFyIHI9dFsxXTtyZXR1cm4gZS5zY29wZS5oYXMo cik/bmV3IGRlKHIsZS5zY29wZS5nZXQocikpOmUuZXJyb3IoJ1Vua25vd24g dmFyaWFibGUgIicrcisnIi4gTWFrZSBzdXJlICInK3IrJyIgaGFzIGJlZW4g Ym91bmQgaW4gYW4gZW5jbG9zaW5nICJsZXQiIGV4cHJlc3Npb24gYmVmb3Jl IHVzaW5nIGl0LicsMSl9LGRlLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlv bih0KXtyZXR1cm4gdGhpcy5ib3VuZEV4cHJlc3Npb24uZXZhbHVhdGUodCl9 LGRlLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24oKXt9LGRlLnByb3Rv dHlwZS5wb3NzaWJsZU91dHB1dHM9ZnVuY3Rpb24oKXtyZXR1cm5bdm9pZCAw XX0sZGUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVyblsi dmFyIix0aGlzLm5hbWVdfTt2YXIgZ2U9ZnVuY3Rpb24odCxlLHIsbixhKXt2 b2lkIDA9PT1lJiYoZT1bXSksdm9pZCAwPT09biYmKG49bmV3IE90KSx2b2lk IDA9PT1hJiYoYT1bXSksdGhpcy5yZWdpc3RyeT10LHRoaXMucGF0aD1lLHRo aXMua2V5PWUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJbIit0KyJdIn0pLmpv aW4oIiIpLHRoaXMuc2NvcGU9bix0aGlzLmVycm9ycz1hLHRoaXMuZXhwZWN0 ZWRUeXBlPXJ9O2Z1bmN0aW9uIHZlKHQsZSl7Zm9yKHZhciByLG4sYT10Lmxl bmd0aC0xLGk9MCxvPWEscz0wO2k8PW87KWlmKHI9dFtzPU1hdGguZmxvb3Io KGkrbykvMildLG49dFtzKzFdLHI8PWUpe2lmKHM9PT1hfHxlPG4pcmV0dXJu IHM7aT1zKzF9ZWxzZXtpZighKHI+ZSkpdGhyb3cgbmV3IGVlKCJJbnB1dCBp cyBub3QgYSBudW1iZXIuIik7bz1zLTF9cmV0dXJuIDB9Z2UucHJvdG90eXBl LnBhcnNlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7cmV0dXJuIHZvaWQgMD09PWEm JihhPXt9KSxlP3RoaXMuY29uY2F0KGUscixuKS5fcGFyc2UodCxhKTp0aGlz Ll9wYXJzZSh0LGEpfSxnZS5wcm90b3R5cGUuX3BhcnNlPWZ1bmN0aW9uKHQs ZSl7ZnVuY3Rpb24gcih0LGUscil7cmV0dXJuImFzc2VydCI9PT1yP25ldyBu ZShlLFt0XSk6ImNvZXJjZSI9PT1yP25ldyBvZShlLFt0XSk6dH1pZihudWxs IT09dCYmInN0cmluZyIhPXR5cGVvZiB0JiYiYm9vbGVhbiIhPXR5cGVvZiB0 JiYibnVtYmVyIiE9dHlwZW9mIHR8fCh0PVsibGl0ZXJhbCIsdF0pLEFycmF5 LmlzQXJyYXkodCkpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gdGhpcy5lcnJv cignRXhwZWN0ZWQgYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVu dC4gSWYgeW91IHdhbnRlZCBhIGxpdGVyYWwgYXJyYXksIHVzZSBbImxpdGVy YWwiLCBbXV0uJyk7dmFyIG49dFswXTtpZigic3RyaW5nIiE9dHlwZW9mIG4p cmV0dXJuIHRoaXMuZXJyb3IoIkV4cHJlc3Npb24gbmFtZSBtdXN0IGJlIGEg c3RyaW5nLCBidXQgZm91bmQgIit0eXBlb2YgbisnIGluc3RlYWQuIElmIHlv dSB3YW50ZWQgYSBsaXRlcmFsIGFycmF5LCB1c2UgWyJsaXRlcmFsIiwgWy4u Ll1dLicsMCksbnVsbDt2YXIgYT10aGlzLnJlZ2lzdHJ5W25dO2lmKGEpe3Zh ciBpPWEucGFyc2UodCx0aGlzKTtpZighaSlyZXR1cm4gbnVsbDtpZih0aGlz LmV4cGVjdGVkVHlwZSl7dmFyIG89dGhpcy5leHBlY3RlZFR5cGUscz1pLnR5 cGU7aWYoInN0cmluZyIhPT1vLmtpbmQmJiJudW1iZXIiIT09by5raW5kJiYi Ym9vbGVhbiIhPT1vLmtpbmQmJiJvYmplY3QiIT09by5raW5kJiYiYXJyYXki IT09by5raW5kfHwidmFsdWUiIT09cy5raW5kKWlmKCJjb2xvciIhPT1vLmtp bmQmJiJmb3JtYXR0ZWQiIT09by5raW5kfHwidmFsdWUiIT09cy5raW5kJiYi c3RyaW5nIiE9PXMua2luZCl7aWYodGhpcy5jaGVja1N1YnR5cGUobyxzKSly ZXR1cm4gbnVsbH1lbHNlIGk9cihpLG8sZS50eXBlQW5ub3RhdGlvbnx8ImNv ZXJjZSIpO2Vsc2UgaT1yKGksbyxlLnR5cGVBbm5vdGF0aW9ufHwiYXNzZXJ0 Iil9aWYoIShpIGluc3RhbmNlb2YgdGUpJiZmdW5jdGlvbiB0KGUpe2lmKGUg aW5zdGFuY2VvZiBkZSlyZXR1cm4gdChlLmJvdW5kRXhwcmVzc2lvbik7aWYo ZSBpbnN0YW5jZW9mIGNlJiYiZXJyb3IiPT09ZS5uYW1lKXJldHVybiExO2lm KGUgaW5zdGFuY2VvZiB1ZSlyZXR1cm4hMTt2YXIgcj1lIGluc3RhbmNlb2Yg b2V8fGUgaW5zdGFuY2VvZiBuZSxuPSEwO3JldHVybiBlLmVhY2hDaGlsZChm dW5jdGlvbihlKXtuPXI/biYmdChlKTpuJiZlIGluc3RhbmNlb2YgdGV9KSwh IW4mJihoZShlKSYmcGUoZSxbInpvb20iLCJoZWF0bWFwLWRlbnNpdHkiLCJs aW5lLXByb2dyZXNzIiwiYWNjdW11bGF0ZWQiLCJpcy1zdXBwb3J0ZWQtc2Ny aXB0Il0pKX0oaSkpe3ZhciBsPW5ldyBsZTt0cnl7aT1uZXcgdGUoaS50eXBl LGkuZXZhbHVhdGUobCkpfWNhdGNoKHQpe3JldHVybiB0aGlzLmVycm9yKHQu bWVzc2FnZSksbnVsbH19cmV0dXJuIGl9cmV0dXJuIHRoaXMuZXJyb3IoJ1Vu a25vd24gZXhwcmVzc2lvbiAiJytuKyciLiBJZiB5b3Ugd2FudGVkIGEgbGl0 ZXJhbCBhcnJheSwgdXNlIFsibGl0ZXJhbCIsIFsuLi5dXS4nLDApfXJldHVy biB2b2lkIDA9PT10P3RoaXMuZXJyb3IoIid1bmRlZmluZWQnIHZhbHVlIGlu dmFsaWQuIFVzZSBudWxsIGluc3RlYWQuIik6Im9iamVjdCI9PXR5cGVvZiB0 P3RoaXMuZXJyb3IoJ0JhcmUgb2JqZWN0cyBpbnZhbGlkLiBVc2UgWyJsaXRl cmFsIiwgey4uLn1dIGluc3RlYWQuJyk6dGhpcy5lcnJvcigiRXhwZWN0ZWQg YW4gYXJyYXksIGJ1dCBmb3VuZCAiK3R5cGVvZiB0KyIgaW5zdGVhZC4iKX0s Z2UucHJvdG90eXBlLmNvbmNhdD1mdW5jdGlvbih0LGUscil7dmFyIG49Im51 bWJlciI9PXR5cGVvZiB0P3RoaXMucGF0aC5jb25jYXQodCk6dGhpcy5wYXRo LGE9cj90aGlzLnNjb3BlLmNvbmNhdChyKTp0aGlzLnNjb3BlO3JldHVybiBu ZXcgZ2UodGhpcy5yZWdpc3RyeSxuLGV8fG51bGwsYSx0aGlzLmVycm9ycyl9 LGdlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10s cj1hcmd1bWVudHMubGVuZ3RoLTE7ci0tID4wOyllW3JdPWFyZ3VtZW50c1ty KzFdO3ZhciBuPSIiK3RoaXMua2V5K2UubWFwKGZ1bmN0aW9uKHQpe3JldHVy biJbIit0KyJdIn0pLmpvaW4oIiIpO3RoaXMuZXJyb3JzLnB1c2gobmV3IFB0 KG4sdCkpfSxnZS5wcm90b3R5cGUuY2hlY2tTdWJ0eXBlPWZ1bmN0aW9uKHQs ZSl7dmFyIHI9R3QodCxlKTtyZXR1cm4gciYmdGhpcy5lcnJvcihyKSxyfTt2 YXIgbWU9ZnVuY3Rpb24odCxlLHIpe3RoaXMudHlwZT10LHRoaXMuaW5wdXQ9 ZSx0aGlzLmxhYmVscz1bXSx0aGlzLm91dHB1dHM9W107Zm9yKHZhciBuPTAs YT1yO248YS5sZW5ndGg7bis9MSl7dmFyIGk9YVtuXSxvPWlbMF0scz1pWzFd O3RoaXMubGFiZWxzLnB1c2gobyksdGhpcy5vdXRwdXRzLnB1c2gocyl9fTtm dW5jdGlvbiB5ZSh0LGUscil7cmV0dXJuIHQqKDEtcikrZSpyfW1lLnBhcnNl PWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGgtMTw0KXJldHVybiBlLmVycm9y KCJFeHBlY3RlZCBhdCBsZWFzdCA0IGFyZ3VtZW50cywgYnV0IGZvdW5kIG9u bHkgIisodC5sZW5ndGgtMSkrIi4iKTtpZigodC5sZW5ndGgtMSklMiE9MCly ZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYW4gZXZlbiBudW1iZXIgb2YgYXJn dW1lbnRzLiIpO3ZhciByPWUucGFyc2UodFsxXSwxLEl0KTtpZighcilyZXR1 cm4gbnVsbDt2YXIgbj1bXSxhPW51bGw7ZS5leHBlY3RlZFR5cGUmJiJ2YWx1 ZSIhPT1lLmV4cGVjdGVkVHlwZS5raW5kJiYoYT1lLmV4cGVjdGVkVHlwZSk7 Zm9yKHZhciBpPTE7aTx0Lmxlbmd0aDtpKz0yKXt2YXIgbz0xPT09aT8tMS8w OnRbaV0scz10W2krMV0sbD1pLGM9aSsxO2lmKCJudW1iZXIiIT10eXBlb2Yg bylyZXR1cm4gZS5lcnJvcignSW5wdXQvb3V0cHV0IHBhaXJzIGZvciAic3Rl cCIgZXhwcmVzc2lvbnMgbXVzdCBiZSBkZWZpbmVkIHVzaW5nIGxpdGVyYWwg bnVtZXJpYyB2YWx1ZXMgKG5vdCBjb21wdXRlZCBleHByZXNzaW9ucykgZm9y IHRoZSBpbnB1dCB2YWx1ZXMuJyxsKTtpZihuLmxlbmd0aCYmbltuLmxlbmd0 aC0xXVswXT49bylyZXR1cm4gZS5lcnJvcignSW5wdXQvb3V0cHV0IHBhaXJz IGZvciAic3RlcCIgZXhwcmVzc2lvbnMgbXVzdCBiZSBhcnJhbmdlZCB3aXRo IGlucHV0IHZhbHVlcyBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuJyxs KTt2YXIgdT1lLnBhcnNlKHMsYyxhKTtpZighdSlyZXR1cm4gbnVsbDthPWF8 fHUudHlwZSxuLnB1c2goW28sdV0pfXJldHVybiBuZXcgbWUoYSxyLG4pfSxt ZS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5s YWJlbHMscj10aGlzLm91dHB1dHM7aWYoMT09PWUubGVuZ3RoKXJldHVybiBy WzBdLmV2YWx1YXRlKHQpO3ZhciBuPXRoaXMuaW5wdXQuZXZhbHVhdGUodCk7 aWYobjw9ZVswXSlyZXR1cm4gclswXS5ldmFsdWF0ZSh0KTt2YXIgYT1lLmxl bmd0aDtyZXR1cm4gbj49ZVthLTFdP3JbYS0xXS5ldmFsdWF0ZSh0KTpyW3Zl KGUsbildLmV2YWx1YXRlKHQpfSxtZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1 bmN0aW9uKHQpe3QodGhpcy5pbnB1dCk7Zm9yKHZhciBlPTAscj10aGlzLm91 dHB1dHM7ZTxyLmxlbmd0aDtlKz0xKXQocltlXSl9LG1lLnByb3RvdHlwZS5w b3NzaWJsZU91dHB1dHM9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD1bXSku Y29uY2F0LmFwcGx5KHQsdGhpcy5vdXRwdXRzLm1hcChmdW5jdGlvbih0KXty ZXR1cm4gdC5wb3NzaWJsZU91dHB1dHMoKX0pKX0sbWUucHJvdG90eXBlLnNl cmlhbGl6ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bInN0ZXAiLHRoaXMuaW5w dXQuc2VyaWFsaXplKCldLGU9MDtlPHRoaXMubGFiZWxzLmxlbmd0aDtlKysp ZT4wJiZ0LnB1c2godGhpcy5sYWJlbHNbZV0pLHQucHVzaCh0aGlzLm91dHB1 dHNbZV0uc2VyaWFsaXplKCkpO3JldHVybiB0fTt2YXIgeGU9T2JqZWN0LmZy ZWV6ZSh7bnVtYmVyOnllLGNvbG9yOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g bmV3IFd0KHllKHQucixlLnIscikseWUodC5nLGUuZyxyKSx5ZSh0LmIsZS5i LHIpLHllKHQuYSxlLmEscikpfSxhcnJheTpmdW5jdGlvbih0LGUscil7cmV0 dXJuIHQubWFwKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHllKHQsZVtuXSxyKX0p fX0pLGJlPS45NTA0NyxfZT0xLHdlPTEuMDg4ODMsa2U9NC8yOSxUZT02LzI5 LE1lPTMqVGUqVGUsQWU9VGUqVGUqVGUsU2U9TWF0aC5QSS8xODAsRWU9MTgw L01hdGguUEk7ZnVuY3Rpb24gTGUodCl7cmV0dXJuIHQ+QWU/TWF0aC5wb3co dCwxLzMpOnQvTWUra2V9ZnVuY3Rpb24gQ2UodCl7cmV0dXJuIHQ+VGU/dCp0 KnQ6TWUqKHQta2UpfWZ1bmN0aW9uIFBlKHQpe3JldHVybiAyNTUqKHQ8PS4w MDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9 ZnVuY3Rpb24gT2UodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjky Ok1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gemUodCl7 dmFyIGU9T2UodC5yKSxyPU9lKHQuZyksbj1PZSh0LmIpLGE9TGUoKC40MTI0 NTY0KmUrLjM1NzU3NjEqcisuMTgwNDM3NSpuKS9iZSksaT1MZSgoLjIxMjY3 MjkqZSsuNzE1MTUyMipyKy4wNzIxNzUqbikvX2UpO3JldHVybntsOjExNipp LTE2LGE6NTAwKihhLWkpLGI6MjAwKihpLUxlKCguMDE5MzMzOSplKy4xMTkx OTIqcisuOTUwMzA0MSpuKS93ZSkpLGFscGhhOnQuYX19ZnVuY3Rpb24gSWUo dCl7dmFyIGU9KHQubCsxNikvMTE2LHI9aXNOYU4odC5hKT9lOmUrdC5hLzUw MCxuPWlzTmFOKHQuYik/ZTplLXQuYi8yMDA7cmV0dXJuIGU9X2UqQ2UoZSks cj1iZSpDZShyKSxuPXdlKkNlKG4pLG5ldyBXdChQZSgzLjI0MDQ1NDIqci0x LjUzNzEzODUqZS0uNDk4NTMxNCpuKSxQZSgtLjk2OTI2NipyKzEuODc2MDEw OCplKy4wNDE1NTYqbiksUGUoLjA1NTY0MzQqci0uMjA0MDI1OSplKzEuMDU3 MjI1MipuKSx0LmFscGhhKX1mdW5jdGlvbiBEZSh0LGUscil7dmFyIG49ZS10 O3JldHVybiB0K3IqKG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChu LzM2MCk6bil9dmFyIFJlPXtmb3J3YXJkOnplLHJldmVyc2U6SWUsaW50ZXJw b2xhdGU6ZnVuY3Rpb24odCxlLHIpe3JldHVybntsOnllKHQubCxlLmwsciks YTp5ZSh0LmEsZS5hLHIpLGI6eWUodC5iLGUuYixyKSxhbHBoYTp5ZSh0LmFs cGhhLGUuYWxwaGEscil9fX0sRmU9e2ZvcndhcmQ6ZnVuY3Rpb24odCl7dmFy IGU9emUodCkscj1lLmwsbj1lLmEsYT1lLmIsaT1NYXRoLmF0YW4yKGEsbikq RWU7cmV0dXJue2g6aTwwP2krMzYwOmksYzpNYXRoLnNxcnQobipuK2EqYSks bDpyLGFscGhhOnQuYX19LHJldmVyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5o KlNlLHI9dC5jO3JldHVybiBJZSh7bDp0LmwsYTpNYXRoLmNvcyhlKSpyLGI6 TWF0aC5zaW4oZSkqcixhbHBoYTp0LmFscGhhfSl9LGludGVycG9sYXRlOmZ1 bmN0aW9uKHQsZSxyKXtyZXR1cm57aDpEZSh0LmgsZS5oLHIpLGM6eWUodC5j LGUuYyxyKSxsOnllKHQubCxlLmwsciksYWxwaGE6eWUodC5hbHBoYSxlLmFs cGhhLHIpfX19LEJlPU9iamVjdC5mcmVlemUoe2xhYjpSZSxoY2w6RmV9KSxO ZT1mdW5jdGlvbih0LGUscixuLGEpe3RoaXMudHlwZT10LHRoaXMub3BlcmF0 b3I9ZSx0aGlzLmludGVycG9sYXRpb249cix0aGlzLmlucHV0PW4sdGhpcy5s YWJlbHM9W10sdGhpcy5vdXRwdXRzPVtdO2Zvcih2YXIgaT0wLG89YTtpPG8u bGVuZ3RoO2krPTEpe3ZhciBzPW9baV0sbD1zWzBdLGM9c1sxXTt0aGlzLmxh YmVscy5wdXNoKGwpLHRoaXMub3V0cHV0cy5wdXNoKGMpfX07ZnVuY3Rpb24g amUodCxlLHIsbil7dmFyIGE9bi1yLGk9dC1yO3JldHVybiAwPT09YT8wOjE9 PT1lP2kvYTooTWF0aC5wb3coZSxpKS0xKS8oTWF0aC5wb3coZSxhKS0xKX1O ZS5pbnRlcnBvbGF0aW9uRmFjdG9yPWZ1bmN0aW9uKHQsZSxuLGEpe3ZhciBp PTA7aWYoImV4cG9uZW50aWFsIj09PXQubmFtZSlpPWplKGUsdC5iYXNlLG4s YSk7ZWxzZSBpZigibGluZWFyIj09PXQubmFtZSlpPWplKGUsMSxuLGEpO2Vs c2UgaWYoImN1YmljLWJlemllciI9PT10Lm5hbWUpe3ZhciBvPXQuY29udHJv bFBvaW50cztpPW5ldyByKG9bMF0sb1sxXSxvWzJdLG9bM10pLnNvbHZlKGpl KGUsMSxuLGEpKX1yZXR1cm4gaX0sTmUucGFyc2U9ZnVuY3Rpb24odCxlKXt2 YXIgcj10WzBdLG49dFsxXSxhPXRbMl0saT10LnNsaWNlKDMpO2lmKCFBcnJh eS5pc0FycmF5KG4pfHwwPT09bi5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoIkV4 cGVjdGVkIGFuIGludGVycG9sYXRpb24gdHlwZSBleHByZXNzaW9uLiIsMSk7 aWYoImxpbmVhciI9PT1uWzBdKW49e25hbWU6ImxpbmVhciJ9O2Vsc2UgaWYo ImV4cG9uZW50aWFsIj09PW5bMF0pe3ZhciBvPW5bMV07aWYoIm51bWJlciIh PXR5cGVvZiBvKXJldHVybiBlLmVycm9yKCJFeHBvbmVudGlhbCBpbnRlcnBv bGF0aW9uIHJlcXVpcmVzIGEgbnVtZXJpYyBiYXNlLiIsMSwxKTtuPXtuYW1l OiJleHBvbmVudGlhbCIsYmFzZTpvfX1lbHNle2lmKCJjdWJpYy1iZXppZXIi IT09blswXSlyZXR1cm4gZS5lcnJvcigiVW5rbm93biBpbnRlcnBvbGF0aW9u IHR5cGUgIitTdHJpbmcoblswXSksMSwwKTt2YXIgcz1uLnNsaWNlKDEpO2lm KDQhPT1zLmxlbmd0aHx8cy5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiJudW1i ZXIiIT10eXBlb2YgdHx8dDwwfHx0PjF9KSlyZXR1cm4gZS5lcnJvcigiQ3Vi aWMgYmV6aWVyIGludGVycG9sYXRpb24gcmVxdWlyZXMgZm91ciBudW1lcmlj IGFyZ3VtZW50cyB3aXRoIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEuIiwxKTtu PXtuYW1lOiJjdWJpYy1iZXppZXIiLGNvbnRyb2xQb2ludHM6c319aWYodC5s ZW5ndGgtMTw0KXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBhdCBsZWFzdCA0 IGFyZ3VtZW50cywgYnV0IGZvdW5kIG9ubHkgIisodC5sZW5ndGgtMSkrIi4i KTtpZigodC5sZW5ndGgtMSklMiE9MClyZXR1cm4gZS5lcnJvcigiRXhwZWN0 ZWQgYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpO2lmKCEoYT1lLnBh cnNlKGEsMixJdCkpKXJldHVybiBudWxsO3ZhciBsPVtdLGM9bnVsbDsiaW50 ZXJwb2xhdGUtaGNsIj09PXJ8fCJpbnRlcnBvbGF0ZS1sYWIiPT09cj9jPUZ0 OmUuZXhwZWN0ZWRUeXBlJiYidmFsdWUiIT09ZS5leHBlY3RlZFR5cGUua2lu ZCYmKGM9ZS5leHBlY3RlZFR5cGUpO2Zvcih2YXIgdT0wO3U8aS5sZW5ndGg7 dSs9Mil7dmFyIGg9aVt1XSxmPWlbdSsxXSxwPXUrMyxkPXUrNDtpZigibnVt YmVyIiE9dHlwZW9mIGgpcmV0dXJuIGUuZXJyb3IoJ0lucHV0L291dHB1dCBw YWlycyBmb3IgImludGVycG9sYXRlIiBleHByZXNzaW9ucyBtdXN0IGJlIGRl ZmluZWQgdXNpbmcgbGl0ZXJhbCBudW1lcmljIHZhbHVlcyAobm90IGNvbXB1 dGVkIGV4cHJlc3Npb25zKSBmb3IgdGhlIGlucHV0IHZhbHVlcy4nLHApO2lm KGwubGVuZ3RoJiZsW2wubGVuZ3RoLTFdWzBdPj1oKXJldHVybiBlLmVycm9y KCdJbnB1dC9vdXRwdXQgcGFpcnMgZm9yICJpbnRlcnBvbGF0ZSIgZXhwcmVz c2lvbnMgbXVzdCBiZSBhcnJhbmdlZCB3aXRoIGlucHV0IHZhbHVlcyBpbiBz dHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuJyxwKTt2YXIgZz1lLnBhcnNlKGYs ZCxjKTtpZighZylyZXR1cm4gbnVsbDtjPWN8fGcudHlwZSxsLnB1c2goW2gs Z10pfXJldHVybiJudW1iZXIiPT09Yy5raW5kfHwiY29sb3IiPT09Yy5raW5k fHwiYXJyYXkiPT09Yy5raW5kJiYibnVtYmVyIj09PWMuaXRlbVR5cGUua2lu ZCYmIm51bWJlciI9PXR5cGVvZiBjLk4/bmV3IE5lKGMscixuLGEsbCk6ZS5l cnJvcigiVHlwZSAiK3F0KGMpKyIgaXMgbm90IGludGVycG9sYXRhYmxlLiIp fSxOZS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhp cy5sYWJlbHMscj10aGlzLm91dHB1dHM7aWYoMT09PWUubGVuZ3RoKXJldHVy biByWzBdLmV2YWx1YXRlKHQpO3ZhciBuPXRoaXMuaW5wdXQuZXZhbHVhdGUo dCk7aWYobjw9ZVswXSlyZXR1cm4gclswXS5ldmFsdWF0ZSh0KTt2YXIgYT1l Lmxlbmd0aDtpZihuPj1lW2EtMV0pcmV0dXJuIHJbYS0xXS5ldmFsdWF0ZSh0 KTt2YXIgaT12ZShlLG4pLG89ZVtpXSxzPWVbaSsxXSxsPU5lLmludGVycG9s YXRpb25GYWN0b3IodGhpcy5pbnRlcnBvbGF0aW9uLG4sbyxzKSxjPXJbaV0u ZXZhbHVhdGUodCksdT1yW2krMV0uZXZhbHVhdGUodCk7cmV0dXJuImludGVy cG9sYXRlIj09PXRoaXMub3BlcmF0b3I/eGVbdGhpcy50eXBlLmtpbmQudG9M b3dlckNhc2UoKV0oYyx1LGwpOiJpbnRlcnBvbGF0ZS1oY2wiPT09dGhpcy5v cGVyYXRvcj9GZS5yZXZlcnNlKEZlLmludGVycG9sYXRlKEZlLmZvcndhcmQo YyksRmUuZm9yd2FyZCh1KSxsKSk6UmUucmV2ZXJzZShSZS5pbnRlcnBvbGF0 ZShSZS5mb3J3YXJkKGMpLFJlLmZvcndhcmQodSksbCkpfSxOZS5wcm90b3R5 cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3QodGhpcy5pbnB1dCk7Zm9yKHZh ciBlPTAscj10aGlzLm91dHB1dHM7ZTxyLmxlbmd0aDtlKz0xKXQocltlXSl9 LE5lLnByb3RvdHlwZS5wb3NzaWJsZU91dHB1dHM9ZnVuY3Rpb24oKXt2YXIg dDtyZXR1cm4odD1bXSkuY29uY2F0LmFwcGx5KHQsdGhpcy5vdXRwdXRzLm1h cChmdW5jdGlvbih0KXtyZXR1cm4gdC5wb3NzaWJsZU91dHB1dHMoKX0pKX0s TmUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3ZhciB0O3Q9Imxp bmVhciI9PT10aGlzLmludGVycG9sYXRpb24ubmFtZT9bImxpbmVhciJdOiJl eHBvbmVudGlhbCI9PT10aGlzLmludGVycG9sYXRpb24ubmFtZT8xPT09dGhp cy5pbnRlcnBvbGF0aW9uLmJhc2U/WyJsaW5lYXIiXTpbImV4cG9uZW50aWFs Iix0aGlzLmludGVycG9sYXRpb24uYmFzZV06WyJjdWJpYy1iZXppZXIiXS5j b25jYXQodGhpcy5pbnRlcnBvbGF0aW9uLmNvbnRyb2xQb2ludHMpO2Zvcih2 YXIgZT1bdGhpcy5vcGVyYXRvcix0LHRoaXMuaW5wdXQuc2VyaWFsaXplKCld LHI9MDtyPHRoaXMubGFiZWxzLmxlbmd0aDtyKyspZS5wdXNoKHRoaXMubGFi ZWxzW3JdLHRoaXMub3V0cHV0c1tyXS5zZXJpYWxpemUoKSk7cmV0dXJuIGV9 O3ZhciBWZT1mdW5jdGlvbih0LGUpe3RoaXMudHlwZT10LHRoaXMuYXJncz1l fTtWZS5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPDIpcmV0dXJu IGUuZXJyb3IoIkV4cGVjdGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4i KTt2YXIgcj1udWxsLG49ZS5leHBlY3RlZFR5cGU7biYmInZhbHVlIiE9PW4u a2luZCYmKHI9bik7Zm9yKHZhciBhPVtdLGk9MCxvPXQuc2xpY2UoMSk7aTxv Lmxlbmd0aDtpKz0xKXt2YXIgcz1vW2ldLGw9ZS5wYXJzZShzLDErYS5sZW5n dGgscix2b2lkIDAse3R5cGVBbm5vdGF0aW9uOiJvbWl0In0pO2lmKCFsKXJl dHVybiBudWxsO3I9cnx8bC50eXBlLGEucHVzaChsKX12YXIgYz1uJiZhLnNv bWUoZnVuY3Rpb24odCl7cmV0dXJuIEd0KG4sdC50eXBlKX0pO3JldHVybiBu ZXcgVmUoYz9OdDpyLGEpfSxWZS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rp b24odCl7Zm9yKHZhciBlPW51bGwscj0wLG49dGhpcy5hcmdzO3I8bi5sZW5n dGgmJm51bGw9PT0oZT1uW3JdLmV2YWx1YXRlKHQpKTtyKz0xKTtyZXR1cm4g ZX0sVmUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0aGlzLmFy Z3MuZm9yRWFjaCh0KX0sVmUucHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1m dW5jdGlvbigpe3ZhciB0O3JldHVybih0PVtdKS5jb25jYXQuYXBwbHkodCx0 aGlzLmFyZ3MubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBvc3NpYmxlT3V0 cHV0cygpfSkpfSxWZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7 dmFyIHQ9WyJjb2FsZXNjZSJdO3JldHVybiB0aGlzLmVhY2hDaGlsZChmdW5j dGlvbihlKXt0LnB1c2goZS5zZXJpYWxpemUoKSl9KSx0fTt2YXIgVWU9ZnVu Y3Rpb24odCxlKXt0aGlzLnR5cGU9ZS50eXBlLHRoaXMuYmluZGluZ3M9W10u Y29uY2F0KHQpLHRoaXMucmVzdWx0PWV9O1VlLnByb3RvdHlwZS5ldmFsdWF0 ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXN1bHQuZXZhbHVhdGUodCl9 LFVlLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBl PTAscj10aGlzLmJpbmRpbmdzO2U8ci5sZW5ndGg7ZSs9MSl0KHJbZV1bMV0p O3QodGhpcy5yZXN1bHQpfSxVZS5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKHQu bGVuZ3RoPDQpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGF0IGxlYXN0IDMg YXJndW1lbnRzLCBidXQgZm91bmQgIisodC5sZW5ndGgtMSkrIiBpbnN0ZWFk LiIpO2Zvcih2YXIgcj1bXSxuPTE7bjx0Lmxlbmd0aC0xO24rPTIpe3ZhciBh PXRbbl07aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBlLmVycm9yKCJF eHBlY3RlZCBzdHJpbmcsIGJ1dCBmb3VuZCAiK3R5cGVvZiBhKyIgaW5zdGVh ZC4iLG4pO2lmKC9bXmEtekEtWjAtOV9dLy50ZXN0KGEpKXJldHVybiBlLmVy cm9yKCJWYXJpYWJsZSBuYW1lcyBtdXN0IGNvbnRhaW4gb25seSBhbHBoYW51 bWVyaWMgY2hhcmFjdGVycyBvciAnXycuIixuKTt2YXIgaT1lLnBhcnNlKHRb bisxXSxuKzEpO2lmKCFpKXJldHVybiBudWxsO3IucHVzaChbYSxpXSl9dmFy IG89ZS5wYXJzZSh0W3QubGVuZ3RoLTFdLHQubGVuZ3RoLTEsZS5leHBlY3Rl ZFR5cGUscik7cmV0dXJuIG8/bmV3IFVlKHIsbyk6bnVsbH0sVWUucHJvdG90 eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJl c3VsdC5wb3NzaWJsZU91dHB1dHMoKX0sVWUucHJvdG90eXBlLnNlcmlhbGl6 ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bImxldCJdLGU9MCxyPXRoaXMuYmlu ZGluZ3M7ZTxyLmxlbmd0aDtlKz0xKXt2YXIgbj1yW2VdLGE9blswXSxpPW5b MV07dC5wdXNoKGEsaS5zZXJpYWxpemUoKSl9cmV0dXJuIHQucHVzaCh0aGlz LnJlc3VsdC5zZXJpYWxpemUoKSksdH07dmFyIHFlPWZ1bmN0aW9uKHQsZSxy KXt0aGlzLnR5cGU9dCx0aGlzLmluZGV4PWUsdGhpcy5pbnB1dD1yfTtxZS5w YXJzZT1mdW5jdGlvbih0LGUpe2lmKDMhPT10Lmxlbmd0aClyZXR1cm4gZS5l cnJvcigiRXhwZWN0ZWQgMiBhcmd1bWVudHMsIGJ1dCBmb3VuZCAiKyh0Lmxl bmd0aC0xKSsiIGluc3RlYWQuIik7dmFyIHI9ZS5wYXJzZSh0WzFdLDEsSXQp LG49ZS5wYXJzZSh0WzJdLDIsVXQoZS5leHBlY3RlZFR5cGV8fE50KSk7aWYo IXJ8fCFuKXJldHVybiBudWxsO3ZhciBhPW4udHlwZTtyZXR1cm4gbmV3IHFl KGEuaXRlbVR5cGUscixuKX0scWUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0 aW9uKHQpe3ZhciBlPXRoaXMuaW5kZXguZXZhbHVhdGUodCkscj10aGlzLmlu cHV0LmV2YWx1YXRlKHQpO2lmKGU8MCl0aHJvdyBuZXcgZWUoIkFycmF5IGlu ZGV4IG91dCBvZiBib3VuZHM6ICIrZSsiIDwgMC4iKTtpZihlPj1yLmxlbmd0 aCl0aHJvdyBuZXcgZWUoIkFycmF5IGluZGV4IG91dCBvZiBib3VuZHM6ICIr ZSsiID4gIisoci5sZW5ndGgtMSkrIi4iKTtpZihlIT09TWF0aC5mbG9vcihl KSl0aHJvdyBuZXcgZWUoIkFycmF5IGluZGV4IG11c3QgYmUgYW4gaW50ZWdl ciwgYnV0IGZvdW5kICIrZSsiIGluc3RlYWQuIik7cmV0dXJuIHJbZV19LHFl LnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dCh0aGlzLmluZGV4 KSx0KHRoaXMuaW5wdXQpfSxxZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRz PWZ1bmN0aW9uKCl7cmV0dXJuW3ZvaWQgMF19LHFlLnByb3RvdHlwZS5zZXJp YWxpemU9ZnVuY3Rpb24oKXtyZXR1cm5bImF0Iix0aGlzLmluZGV4LnNlcmlh bGl6ZSgpLHRoaXMuaW5wdXQuc2VyaWFsaXplKCldfTt2YXIgSGU9ZnVuY3Rp b24odCxlLHIsbixhLGkpe3RoaXMuaW5wdXRUeXBlPXQsdGhpcy50eXBlPWUs dGhpcy5pbnB1dD1yLHRoaXMuY2FzZXM9bix0aGlzLm91dHB1dHM9YSx0aGlz Lm90aGVyd2lzZT1pfTtIZS5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKHQubGVu Z3RoPDUpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGF0IGxlYXN0IDQgYXJn dW1lbnRzLCBidXQgZm91bmQgb25seSAiKyh0Lmxlbmd0aC0xKSsiLiIpO2lm KHQubGVuZ3RoJTIhPTEpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGFuIGV2 ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cy4iKTt2YXIgcixuO2UuZXhwZWN0ZWRU eXBlJiYidmFsdWUiIT09ZS5leHBlY3RlZFR5cGUua2luZCYmKG49ZS5leHBl Y3RlZFR5cGUpO2Zvcih2YXIgYT17fSxpPVtdLG89MjtvPHQubGVuZ3RoLTE7 bys9Mil7dmFyIHM9dFtvXSxsPXRbbysxXTtBcnJheS5pc0FycmF5KHMpfHwo cz1bc10pO3ZhciBjPWUuY29uY2F0KG8pO2lmKDA9PT1zLmxlbmd0aClyZXR1 cm4gYy5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGJyYW5jaCBsYWJl bC4iKTtmb3IodmFyIHU9MCxoPXM7dTxoLmxlbmd0aDt1Kz0xKXt2YXIgZj1o W3VdO2lmKCJudW1iZXIiIT10eXBlb2YgZiYmInN0cmluZyIhPXR5cGVvZiBm KXJldHVybiBjLmVycm9yKCJCcmFuY2ggbGFiZWxzIG11c3QgYmUgbnVtYmVy cyBvciBzdHJpbmdzLiIpO2lmKCJudW1iZXIiPT10eXBlb2YgZiYmTWF0aC5h YnMoZik+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpcmV0dXJuIGMuZXJyb3Io IkJyYW5jaCBsYWJlbHMgbXVzdCBiZSBpbnRlZ2VycyBubyBsYXJnZXIgdGhh biAiK051bWJlci5NQVhfU0FGRV9JTlRFR0VSKyIuIik7aWYoIm51bWJlciI9 PXR5cGVvZiBmJiZNYXRoLmZsb29yKGYpIT09ZilyZXR1cm4gYy5lcnJvcigi TnVtZXJpYyBicmFuY2ggbGFiZWxzIG11c3QgYmUgaW50ZWdlciB2YWx1ZXMu Iik7aWYocil7aWYoYy5jaGVja1N1YnR5cGUocixRdChmKSkpcmV0dXJuIG51 bGx9ZWxzZSByPVF0KGYpO2lmKHZvaWQgMCE9PWFbU3RyaW5nKGYpXSlyZXR1 cm4gYy5lcnJvcigiQnJhbmNoIGxhYmVscyBtdXN0IGJlIHVuaXF1ZS4iKTth W1N0cmluZyhmKV09aS5sZW5ndGh9dmFyIHA9ZS5wYXJzZShsLG8sbik7aWYo IXApcmV0dXJuIG51bGw7bj1ufHxwLnR5cGUsaS5wdXNoKHApfXZhciBkPWUu cGFyc2UodFsxXSwxLE50KTtpZighZClyZXR1cm4gbnVsbDt2YXIgZz1lLnBh cnNlKHRbdC5sZW5ndGgtMV0sdC5sZW5ndGgtMSxuKTtyZXR1cm4gZz8idmFs dWUiIT09ZC50eXBlLmtpbmQmJmUuY29uY2F0KDEpLmNoZWNrU3VidHlwZShy LGQudHlwZSk/bnVsbDpuZXcgSGUocixuLGQsYSxpLGcpOm51bGx9LEhlLnBy b3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmlucHV0 LmV2YWx1YXRlKHQpO3JldHVybihRdChlKT09PXRoaXMuaW5wdXRUeXBlJiZ0 aGlzLm91dHB1dHNbdGhpcy5jYXNlc1tlXV18fHRoaXMub3RoZXJ3aXNlKS5l dmFsdWF0ZSh0KX0sSGUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0 KXt0KHRoaXMuaW5wdXQpLHRoaXMub3V0cHV0cy5mb3JFYWNoKHQpLHQodGhp cy5vdGhlcndpc2UpfSxIZS5wcm90b3R5cGUucG9zc2libGVPdXRwdXRzPWZ1 bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9W10pLmNvbmNhdC5hcHBseSh0LHRo aXMub3V0cHV0cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zc2libGVP dXRwdXRzKCl9KSkuY29uY2F0KHRoaXMub3RoZXJ3aXNlLnBvc3NpYmxlT3V0 cHV0cygpKX0sSGUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe2Zv cih2YXIgdD10aGlzLGU9WyJtYXRjaCIsdGhpcy5pbnB1dC5zZXJpYWxpemUo KV0scj1bXSxuPXt9LGE9MCxpPU9iamVjdC5rZXlzKHRoaXMuY2FzZXMpLnNv cnQoKTthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlbYV07dm9pZCAwPT09KGg9 blt0aGlzLmNhc2VzW29dXSk/KG5bdGhpcy5jYXNlc1tvXV09ci5sZW5ndGgs ci5wdXNoKFt0aGlzLmNhc2VzW29dLFtvXV0pKTpyW2hdWzFdLnB1c2gobyl9 Zm9yKHZhciBzPWZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT09dC5pbnB1 dFR5cGUua2luZD9OdW1iZXIoZSk6ZX0sbD0wLGM9cjtsPGMubGVuZ3RoO2wr PTEpe3ZhciB1PWNbbF0saD11WzBdLGY9dVsxXTsxPT09Zi5sZW5ndGg/ZS5w dXNoKHMoZlswXSkpOmUucHVzaChmLm1hcChzKSksZS5wdXNoKHRoaXMub3V0 cHV0c1tvdXRwdXRJbmRleCQxXS5zZXJpYWxpemUoKSl9cmV0dXJuIGUucHVz aCh0aGlzLm90aGVyd2lzZS5zZXJpYWxpemUoKSksZX07dmFyIEdlPWZ1bmN0 aW9uKHQsZSxyKXt0aGlzLnR5cGU9dCx0aGlzLmJyYW5jaGVzPWUsdGhpcy5v dGhlcndpc2U9cn07ZnVuY3Rpb24gWWUodCxlKXtyZXR1cm4iPT0iPT09dHx8 IiE9Ij09PXQ/ImJvb2xlYW4iPT09ZS5raW5kfHwic3RyaW5nIj09PWUua2lu ZHx8Im51bWJlciI9PT1lLmtpbmR8fCJudWxsIj09PWUua2luZHx8InZhbHVl Ij09PWUua2luZDoic3RyaW5nIj09PWUua2luZHx8Im51bWJlciI9PT1lLmtp bmR8fCJ2YWx1ZSI9PT1lLmtpbmR9ZnVuY3Rpb24gV2UodCxlLHIsbil7cmV0 dXJuIDA9PT1uLmNvbXBhcmUoZSxyKX1mdW5jdGlvbiBYZSh0LGUscil7dmFy IG49Ij09IiE9PXQmJiIhPSIhPT10O3JldHVybiBmdW5jdGlvbigpe2Z1bmN0 aW9uIGEodCxlLHIpe3RoaXMudHlwZT1SdCx0aGlzLmxocz10LHRoaXMucmhz PWUsdGhpcy5jb2xsYXRvcj1yLHRoaXMuaGFzVW50eXBlZEFyZ3VtZW50PSJ2 YWx1ZSI9PT10LnR5cGUua2luZHx8InZhbHVlIj09PWUudHlwZS5raW5kfXJl dHVybiBhLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYoMyE9PXQubGVuZ3RoJiY0 IT09dC5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIHR3byBvciB0 aHJlZSBhcmd1bWVudHMuIik7dmFyIHI9dFswXSxpPWUucGFyc2UodFsxXSwx LE50KTtpZighaSlyZXR1cm4gbnVsbDtpZighWWUocixpLnR5cGUpKXJldHVy biBlLmNvbmNhdCgxKS5lcnJvcignIicrcisiXCIgY29tcGFyaXNvbnMgYXJl IG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGUgJyIrcXQoaS50eXBlKSsiJy4iKTt2 YXIgbz1lLnBhcnNlKHRbMl0sMixOdCk7aWYoIW8pcmV0dXJuIG51bGw7aWYo IVllKHIsby50eXBlKSlyZXR1cm4gZS5jb25jYXQoMikuZXJyb3IoJyInK3Ir IlwiIGNvbXBhcmlzb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciB0eXBlICci K3F0KG8udHlwZSkrIicuIik7aWYoaS50eXBlLmtpbmQhPT1vLnR5cGUua2lu ZCYmInZhbHVlIiE9PWkudHlwZS5raW5kJiYidmFsdWUiIT09by50eXBlLmtp bmQpcmV0dXJuIGUuZXJyb3IoIkNhbm5vdCBjb21wYXJlIHR5cGVzICciK3F0 KGkudHlwZSkrIicgYW5kICciK3F0KG8udHlwZSkrIicuIik7biYmKCJ2YWx1 ZSI9PT1pLnR5cGUua2luZCYmInZhbHVlIiE9PW8udHlwZS5raW5kP2k9bmV3 IG5lKG8udHlwZSxbaV0pOiJ2YWx1ZSIhPT1pLnR5cGUua2luZCYmInZhbHVl Ij09PW8udHlwZS5raW5kJiYobz1uZXcgbmUoaS50eXBlLFtvXSkpKTt2YXIg cz1udWxsO2lmKDQ9PT10Lmxlbmd0aCl7aWYoInN0cmluZyIhPT1pLnR5cGUu a2luZCYmInN0cmluZyIhPT1vLnR5cGUua2luZCYmInZhbHVlIiE9PWkudHlw ZS5raW5kJiYidmFsdWUiIT09by50eXBlLmtpbmQpcmV0dXJuIGUuZXJyb3Io IkNhbm5vdCB1c2UgY29sbGF0b3IgdG8gY29tcGFyZSBub24tc3RyaW5nIHR5 cGVzLiIpO2lmKCEocz1lLnBhcnNlKHRbM10sMyxqdCkpKXJldHVybiBudWxs fXJldHVybiBuZXcgYShpLG8scyl9LGEucHJvdG90eXBlLmV2YWx1YXRlPWZ1 bmN0aW9uKGEpe3ZhciBpPXRoaXMubGhzLmV2YWx1YXRlKGEpLG89dGhpcy5y aHMuZXZhbHVhdGUoYSk7aWYobiYmdGhpcy5oYXNVbnR5cGVkQXJndW1lbnQp e3ZhciBzPVF0KGkpLGw9UXQobyk7aWYocy5raW5kIT09bC5raW5kfHwic3Ry aW5nIiE9PXMua2luZCYmIm51bWJlciIhPT1zLmtpbmQpdGhyb3cgbmV3IGVl KCdFeHBlY3RlZCBhcmd1bWVudHMgZm9yICInK3QrJyIgdG8gYmUgKHN0cmlu Zywgc3RyaW5nKSBvciAobnVtYmVyLCBudW1iZXIpLCBidXQgZm91bmQgKCcr cy5raW5kKyIsICIrbC5raW5kKyIpIGluc3RlYWQuIil9aWYodGhpcy5jb2xs YXRvciYmIW4mJnRoaXMuaGFzVW50eXBlZEFyZ3VtZW50KXt2YXIgYz1RdChp KSx1PVF0KG8pO2lmKCJzdHJpbmciIT09Yy5raW5kfHwic3RyaW5nIiE9PXUu a2luZClyZXR1cm4gZShhLGksbyl9cmV0dXJuIHRoaXMuY29sbGF0b3I/cihh LGksbyx0aGlzLmNvbGxhdG9yLmV2YWx1YXRlKGEpKTplKGEsaSxvKX0sYS5w cm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3QodGhpcy5saHMpLHQo dGhpcy5yaHMpLHRoaXMuY29sbGF0b3ImJnQodGhpcy5jb2xsYXRvcil9LGEu cHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlvbigpe3JldHVyblsh MCwhMV19LGEucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3ZhciBl PVt0XTtyZXR1cm4gdGhpcy5lYWNoQ2hpbGQoZnVuY3Rpb24odCl7ZS5wdXNo KHQuc2VyaWFsaXplKCkpfSksZX0sYX0oKX1HZS5wYXJzZT1mdW5jdGlvbih0 LGUpe2lmKHQubGVuZ3RoPDQpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGF0 IGxlYXN0IDMgYXJndW1lbnRzLCBidXQgZm91bmQgb25seSAiKyh0Lmxlbmd0 aC0xKSsiLiIpO2lmKHQubGVuZ3RoJTIhPTApcmV0dXJuIGUuZXJyb3IoIkV4 cGVjdGVkIGFuIG9kZCBudW1iZXIgb2YgYXJndW1lbnRzLiIpO3ZhciByO2Uu ZXhwZWN0ZWRUeXBlJiYidmFsdWUiIT09ZS5leHBlY3RlZFR5cGUua2luZCYm KHI9ZS5leHBlY3RlZFR5cGUpO2Zvcih2YXIgbj1bXSxhPTE7YTx0Lmxlbmd0 aC0xO2ErPTIpe3ZhciBpPWUucGFyc2UodFthXSxhLFJ0KTtpZighaSlyZXR1 cm4gbnVsbDt2YXIgbz1lLnBhcnNlKHRbYSsxXSxhKzEscik7aWYoIW8pcmV0 dXJuIG51bGw7bi5wdXNoKFtpLG9dKSxyPXJ8fG8udHlwZX12YXIgcz1lLnBh cnNlKHRbdC5sZW5ndGgtMV0sdC5sZW5ndGgtMSxyKTtyZXR1cm4gcz9uZXcg R2UocixuLHMpOm51bGx9LEdlLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlv bih0KXtmb3IodmFyIGU9MCxyPXRoaXMuYnJhbmNoZXM7ZTxyLmxlbmd0aDtl Kz0xKXt2YXIgbj1yW2VdLGE9blswXSxpPW5bMV07aWYoYS5ldmFsdWF0ZSh0 KSlyZXR1cm4gaS5ldmFsdWF0ZSh0KX1yZXR1cm4gdGhpcy5vdGhlcndpc2Uu ZXZhbHVhdGUodCl9LEdlLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPTAscj10aGlzLmJyYW5jaGVzO2U8ci5sZW5ndGg7ZSs9 MSl7dmFyIG49cltlXSxhPW5bMF0saT1uWzFdO3QoYSksdChpKX10KHRoaXMu b3RoZXJ3aXNlKX0sR2UucHJvdG90eXBlLnBvc3NpYmxlT3V0cHV0cz1mdW5j dGlvbigpe3ZhciB0O3JldHVybih0PVtdKS5jb25jYXQuYXBwbHkodCx0aGlz LmJyYW5jaGVzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFswXSx0WzFdLnBv c3NpYmxlT3V0cHV0cygpfSkpLmNvbmNhdCh0aGlzLm90aGVyd2lzZS5wb3Nz aWJsZU91dHB1dHMoKSl9LEdlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rp b24oKXt2YXIgdD1bImNhc2UiXTtyZXR1cm4gdGhpcy5lYWNoQ2hpbGQoZnVu Y3Rpb24oZSl7dC5wdXNoKGUuc2VyaWFsaXplKCkpfSksdH07dmFyIFplPVhl KCI9PSIsZnVuY3Rpb24odCxlLHIpe3JldHVybiBlPT09cn0sV2UpLEplPVhl KCIhPSIsZnVuY3Rpb24odCxlLHIpe3JldHVybiBlIT09cn0sZnVuY3Rpb24o dCxlLHIsbil7cmV0dXJuIVdlKDAsZSxyLG4pfSksS2U9WGUoIjwiLGZ1bmN0 aW9uKHQsZSxyKXtyZXR1cm4gZTxyfSxmdW5jdGlvbih0LGUscixuKXtyZXR1 cm4gbi5jb21wYXJlKGUscik8MH0pLFFlPVhlKCI+IixmdW5jdGlvbih0LGUs cil7cmV0dXJuIGU+cn0sZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG4uY29t cGFyZShlLHIpPjB9KSwkZT1YZSgiPD0iLGZ1bmN0aW9uKHQsZSxyKXtyZXR1 cm4gZTw9cn0sZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG4uY29tcGFyZShl LHIpPD0wfSksdHI9WGUoIj49IixmdW5jdGlvbih0LGUscil7cmV0dXJuIGU+ PXJ9LGZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBuLmNvbXBhcmUoZSxyKT49 MH0pLGVyPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dGhpcy50eXBlPUR0LHRoaXMu bnVtYmVyPXQsdGhpcy5sb2NhbGU9ZSx0aGlzLmN1cnJlbmN5PXIsdGhpcy5t aW5GcmFjdGlvbkRpZ2l0cz1uLHRoaXMubWF4RnJhY3Rpb25EaWdpdHM9YX07 ZXIucGFyc2U9ZnVuY3Rpb24odCxlKXtpZigzIT09dC5sZW5ndGgpcmV0dXJu IGUuZXJyb3IoIkV4cGVjdGVkIHR3byBhcmd1bWVudHMuIik7dmFyIHI9ZS5w YXJzZSh0WzFdLDEsSXQpO2lmKCFyKXJldHVybiBudWxsO3ZhciBuPXRbMl07 aWYoIm9iamVjdCIhPXR5cGVvZiBufHxBcnJheS5pc0FycmF5KG4pKXJldHVy biBlLmVycm9yKCJOdW1iZXJGb3JtYXQgb3B0aW9ucyBhcmd1bWVudCBtdXN0 IGJlIGFuIG9iamVjdC4iKTt2YXIgYT1udWxsO2lmKG4ubG9jYWxlJiYhKGE9 ZS5wYXJzZShuLmxvY2FsZSwxLER0KSkpcmV0dXJuIG51bGw7dmFyIGk9bnVs bDtpZihuLmN1cnJlbmN5JiYhKGk9ZS5wYXJzZShuLmN1cnJlbmN5LDEsRHQp KSlyZXR1cm4gbnVsbDt2YXIgbz1udWxsO2lmKG5bIm1pbi1mcmFjdGlvbi1k aWdpdHMiXSYmIShvPWUucGFyc2UoblsibWluLWZyYWN0aW9uLWRpZ2l0cyJd LDEsSXQpKSlyZXR1cm4gbnVsbDt2YXIgcz1udWxsO3JldHVybiBuWyJtYXgt ZnJhY3Rpb24tZGlnaXRzIl0mJiEocz1lLnBhcnNlKG5bIm1heC1mcmFjdGlv bi1kaWdpdHMiXSwxLEl0KSk/bnVsbDpuZXcgZXIocixhLGksbyxzKX0sZXIu cHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgSW50 bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGU/dGhpcy5sb2NhbGUuZXZhbHVh dGUodCk6W10se3N0eWxlOnRoaXMuY3VycmVuY3k/ImN1cnJlbmN5IjoiZGVj aW1hbCIsY3VycmVuY3k6dGhpcy5jdXJyZW5jeT90aGlzLmN1cnJlbmN5LmV2 YWx1YXRlKHQpOnZvaWQgMCxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6dGhpcy5t aW5GcmFjdGlvbkRpZ2l0cz90aGlzLm1pbkZyYWN0aW9uRGlnaXRzLmV2YWx1 YXRlKHQpOnZvaWQgMCxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6dGhpcy5tYXhG cmFjdGlvbkRpZ2l0cz90aGlzLm1heEZyYWN0aW9uRGlnaXRzLmV2YWx1YXRl KHQpOnZvaWQgMH0pLmZvcm1hdCh0aGlzLm51bWJlci5ldmFsdWF0ZSh0KSl9 LGVyLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dCh0aGlzLm51 bWJlciksdGhpcy5sb2NhbGUmJnQodGhpcy5sb2NhbGUpLHRoaXMuY3VycmVu Y3kmJnQodGhpcy5jdXJyZW5jeSksdGhpcy5taW5GcmFjdGlvbkRpZ2l0cyYm dCh0aGlzLm1pbkZyYWN0aW9uRGlnaXRzKSx0aGlzLm1heEZyYWN0aW9uRGln aXRzJiZ0KHRoaXMubWF4RnJhY3Rpb25EaWdpdHMpfSxlci5wcm90b3R5cGUu cG9zc2libGVPdXRwdXRzPWZ1bmN0aW9uKCl7cmV0dXJuW3ZvaWQgMF19LGVy LnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1 cm4gdGhpcy5sb2NhbGUmJih0LmxvY2FsZT10aGlzLmxvY2FsZS5zZXJpYWxp emUoKSksdGhpcy5jdXJyZW5jeSYmKHQuY3VycmVuY3k9dGhpcy5jdXJyZW5j eS5zZXJpYWxpemUoKSksdGhpcy5taW5GcmFjdGlvbkRpZ2l0cyYmKHRbIm1p bi1mcmFjdGlvbi1kaWdpdHMiXT10aGlzLm1pbkZyYWN0aW9uRGlnaXRzLnNl cmlhbGl6ZSgpKSx0aGlzLm1heEZyYWN0aW9uRGlnaXRzJiYodFsibWF4LWZy YWN0aW9uLWRpZ2l0cyJdPXRoaXMubWF4RnJhY3Rpb25EaWdpdHMuc2VyaWFs aXplKCkpLFsibnVtYmVyLWZvcm1hdCIsdGhpcy5udW1iZXIuc2VyaWFsaXpl KCksdF19O3ZhciBycj1mdW5jdGlvbih0KXt0aGlzLnR5cGU9SXQsdGhpcy5p bnB1dD10fTtyci5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKDIhPT10Lmxlbmd0 aClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgMSBhcmd1bWVudCwgYnV0IGZv dW5kICIrKHQubGVuZ3RoLTEpKyIgaW5zdGVhZC4iKTt2YXIgcj1lLnBhcnNl KHRbMV0sMSk7cmV0dXJuIHI/ImFycmF5IiE9PXIudHlwZS5raW5kJiYic3Ry aW5nIiE9PXIudHlwZS5raW5kJiYidmFsdWUiIT09ci50eXBlLmtpbmQ/ZS5l cnJvcigiRXhwZWN0ZWQgYXJndW1lbnQgb2YgdHlwZSBzdHJpbmcgb3IgYXJy YXksIGJ1dCBmb3VuZCAiK3F0KHIudHlwZSkrIiBpbnN0ZWFkLiIpOm5ldyBy cihyKTpudWxsfSxyci5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7 dmFyIGU9dGhpcy5pbnB1dC5ldmFsdWF0ZSh0KTtpZigic3RyaW5nIj09dHlw ZW9mIGUpcmV0dXJuIGUubGVuZ3RoO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0 dXJuIGUubGVuZ3RoO3Rocm93IG5ldyBlZSgiRXhwZWN0ZWQgdmFsdWUgdG8g YmUgb2YgdHlwZSBzdHJpbmcgb3IgYXJyYXksIGJ1dCBmb3VuZCAiK3F0KFF0 KGUpKSsiIGluc3RlYWQuIil9LHJyLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVu Y3Rpb24odCl7dCh0aGlzLmlucHV0KX0scnIucHJvdG90eXBlLnBvc3NpYmxl T3V0cHV0cz1mdW5jdGlvbigpe3JldHVyblt2b2lkIDBdfSxyci5wcm90b3R5 cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7dmFyIHQ9WyJsZW5ndGgiXTtyZXR1 cm4gdGhpcy5lYWNoQ2hpbGQoZnVuY3Rpb24oZSl7dC5wdXNoKGUuc2VyaWFs aXplKCkpfSksdH07dmFyIG5yPXsiPT0iOlplLCIhPSI6SmUsIj4iOlFlLCI8 IjpLZSwiPj0iOnRyLCI8PSI6JGUsYXJyYXk6bmUsYXQ6cWUsYm9vbGVhbjpu ZSxjYXNlOkdlLGNvYWxlc2NlOlZlLGNvbGxhdG9yOnVlLGZvcm1hdDphZSxp bnRlcnBvbGF0ZTpOZSwiaW50ZXJwb2xhdGUtaGNsIjpOZSwiaW50ZXJwb2xh dGUtbGFiIjpOZSxsZW5ndGg6cnIsbGV0OlVlLGxpdGVyYWw6dGUsbWF0Y2g6 SGUsbnVtYmVyOm5lLCJudW1iZXItZm9ybWF0IjplcixvYmplY3Q6bmUsc3Rl cDptZSxzdHJpbmc6bmUsInRvLWJvb2xlYW4iOm9lLCJ0by1jb2xvciI6b2Us InRvLW51bWJlciI6b2UsInRvLXN0cmluZyI6b2UsdmFyOmRlfTtmdW5jdGlv biBhcih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGE9ZVsyXSxpPWVbM107cj1y LmV2YWx1YXRlKHQpLG49bi5ldmFsdWF0ZSh0KSxhPWEuZXZhbHVhdGUodCk7 dmFyIG89aT9pLmV2YWx1YXRlKHQpOjEscz1LdChyLG4sYSxvKTtpZihzKXRo cm93IG5ldyBlZShzKTtyZXR1cm4gbmV3IFd0KHIvMjU1Km8sbi8yNTUqbyxh LzI1NSpvLG8pfWZ1bmN0aW9uIGlyKHQsZSl7cmV0dXJuIHQgaW4gZX1mdW5j dGlvbiBvcih0LGUpe3ZhciByPWVbdF07cmV0dXJuIHZvaWQgMD09PXI/bnVs bDpyfWZ1bmN0aW9uIHNyKHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIGxy KHQpe3JldHVybntyZXN1bHQ6InN1Y2Nlc3MiLHZhbHVlOnR9fWZ1bmN0aW9u IGNyKHQpe3JldHVybntyZXN1bHQ6ImVycm9yIix2YWx1ZTp0fX1mdW5jdGlv biB1cih0KXtyZXR1cm4iZGF0YS1kcml2ZW4iPT09dFsicHJvcGVydHktdHlw ZSJdfHwiY3Jvc3MtZmFkZWQtZGF0YS1kcml2ZW4iPT09dFsicHJvcGVydHkt dHlwZSJdfWZ1bmN0aW9uIGhyKHQpe3JldHVybiEhdC5leHByZXNzaW9uJiZ0 LmV4cHJlc3Npb24ucGFyYW1ldGVycy5pbmRleE9mKCJ6b29tIik+LTF9ZnVu Y3Rpb24gZnIodCl7cmV0dXJuISF0LmV4cHJlc3Npb24mJnQuZXhwcmVzc2lv bi5pbnRlcnBvbGF0ZWR9ZnVuY3Rpb24gcHIodCl7cmV0dXJuIHQgaW5zdGFu Y2VvZiBOdW1iZXI/Im51bWJlciI6dCBpbnN0YW5jZW9mIFN0cmluZz8ic3Ry aW5nIjp0IGluc3RhbmNlb2YgQm9vbGVhbj8iYm9vbGVhbiI6QXJyYXkuaXNB cnJheSh0KT8iYXJyYXkiOm51bGw9PT10PyJudWxsIjp0eXBlb2YgdH1mdW5j dGlvbiBkcih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10 JiYhQXJyYXkuaXNBcnJheSh0KX1mdW5jdGlvbiBncih0KXtyZXR1cm4gdH1m dW5jdGlvbiB2cih0LGUscil7cmV0dXJuIHZvaWQgMCE9PXQ/dDp2b2lkIDAh PT1lP2U6dm9pZCAwIT09cj9yOnZvaWQgMH1mdW5jdGlvbiBtcih0LGUscixu LGEpe3JldHVybiB2cih0eXBlb2Ygcj09PWE/bltyXTp2b2lkIDAsdC5kZWZh dWx0LGUuZGVmYXVsdCl9ZnVuY3Rpb24geXIodCxlLHIpe2lmKCJudW1iZXIi IT09cHIocikpcmV0dXJuIHZyKHQuZGVmYXVsdCxlLmRlZmF1bHQpO3ZhciBu PXQuc3RvcHMubGVuZ3RoO2lmKDE9PT1uKXJldHVybiB0LnN0b3BzWzBdWzFd O2lmKHI8PXQuc3RvcHNbMF1bMF0pcmV0dXJuIHQuc3RvcHNbMF1bMV07aWYo cj49dC5zdG9wc1tuLTFdWzBdKXJldHVybiB0LnN0b3BzW24tMV1bMV07dmFy IGE9dmUodC5zdG9wcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF19KSxy KTtyZXR1cm4gdC5zdG9wc1thXVsxXX1mdW5jdGlvbiB4cih0LGUscil7dmFy IG49dm9pZCAwIT09dC5iYXNlP3QuYmFzZToxO2lmKCJudW1iZXIiIT09cHIo cikpcmV0dXJuIHZyKHQuZGVmYXVsdCxlLmRlZmF1bHQpO3ZhciBhPXQuc3Rv cHMubGVuZ3RoO2lmKDE9PT1hKXJldHVybiB0LnN0b3BzWzBdWzFdO2lmKHI8 PXQuc3RvcHNbMF1bMF0pcmV0dXJuIHQuc3RvcHNbMF1bMV07aWYocj49dC5z dG9wc1thLTFdWzBdKXJldHVybiB0LnN0b3BzW2EtMV1bMV07dmFyIGk9dmUo dC5zdG9wcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF19KSxyKSxvPWZ1 bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW4tcixpPXQtcjtyZXR1cm4gMD09PWE/ MDoxPT09ZT9pL2E6KE1hdGgucG93KGUsaSktMSkvKE1hdGgucG93KGUsYSkt MSl9KHIsbix0LnN0b3BzW2ldWzBdLHQuc3RvcHNbaSsxXVswXSkscz10LnN0 b3BzW2ldWzFdLGw9dC5zdG9wc1tpKzFdWzFdLGM9eGVbZS50eXBlXXx8Z3I7 aWYodC5jb2xvclNwYWNlJiYicmdiIiE9PXQuY29sb3JTcGFjZSl7dmFyIHU9 QmVbdC5jb2xvclNwYWNlXTtjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHUucmV2 ZXJzZSh1LmludGVycG9sYXRlKHUuZm9yd2FyZCh0KSx1LmZvcndhcmQoZSks bykpfX1yZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcy5ldmFsdWF0ZT97ZXZh bHVhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT1hcmd1bWVudHMubGVu Z3RoO2UtLTspdFtlXT1hcmd1bWVudHNbZV07dmFyIHI9cy5ldmFsdWF0ZS5h cHBseSh2b2lkIDAsdCksbj1sLmV2YWx1YXRlLmFwcGx5KHZvaWQgMCx0KTtp Zih2b2lkIDAhPT1yJiZ2b2lkIDAhPT1uKXJldHVybiBjKHIsbixvKX19OmMo cyxsLG8pfWZ1bmN0aW9uIGJyKHQsZSxyKXtyZXR1cm4iY29sb3IiPT09ZS50 eXBlP3I9V3QucGFyc2Uocik6ImZvcm1hdHRlZCI9PT1lLnR5cGU/cj1KdC5m cm9tU3RyaW5nKHIudG9TdHJpbmcoKSk6cHIocik9PT1lLnR5cGV8fCJlbnVt Ij09PWUudHlwZSYmZS52YWx1ZXNbcl18fChyPXZvaWQgMCksdnIocix0LmRl ZmF1bHQsZS5kZWZhdWx0KX1jZS5yZWdpc3Rlcihucix7ZXJyb3I6W3traW5k OiJlcnJvciJ9LFtEdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3Rocm93 IG5ldyBlZShyLmV2YWx1YXRlKHQpKX1dLHR5cGVvZjpbRHQsW050XSxmdW5j dGlvbih0LGUpe3JldHVybiBxdChRdChlWzBdLmV2YWx1YXRlKHQpKSl9XSwi dG8tcmdiYSI6W1V0KEl0LDQpLFtGdF0sZnVuY3Rpb24odCxlKXtyZXR1cm4g ZVswXS5ldmFsdWF0ZSh0KS50b0FycmF5KCl9XSxyZ2I6W0Z0LFtJdCxJdCxJ dF0sYXJdLHJnYmE6W0Z0LFtJdCxJdCxJdCxJdF0sYXJdLGhhczp7dHlwZTpS dCxvdmVybG9hZHM6W1tbRHRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGlyKGVb MF0uZXZhbHVhdGUodCksdC5wcm9wZXJ0aWVzKCkpfV0sW1tEdCxCdF0sZnVu Y3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXTtyZXR1cm4gaXIoci5ldmFs dWF0ZSh0KSxuLmV2YWx1YXRlKHQpKX1dXX0sZ2V0Ont0eXBlOk50LG92ZXJs b2FkczpbW1tEdF0sZnVuY3Rpb24odCxlKXtyZXR1cm4gb3IoZVswXS5ldmFs dWF0ZSh0KSx0LnByb3BlcnRpZXMoKSl9XSxbW0R0LEJ0XSxmdW5jdGlvbih0 LGUpe3ZhciByPWVbMF0sbj1lWzFdO3JldHVybiBvcihyLmV2YWx1YXRlKHQp LG4uZXZhbHVhdGUodCkpfV1dfSwiZmVhdHVyZS1zdGF0ZSI6W050LFtEdF0s ZnVuY3Rpb24odCxlKXtyZXR1cm4gb3IoZVswXS5ldmFsdWF0ZSh0KSx0LmZl YXR1cmVTdGF0ZXx8e30pfV0scHJvcGVydGllczpbQnQsW10sZnVuY3Rpb24o dCl7cmV0dXJuIHQucHJvcGVydGllcygpfV0sImdlb21ldHJ5LXR5cGUiOltE dCxbXSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZW9tZXRyeVR5cGUoKX1dLGlk OltOdCxbXSxmdW5jdGlvbih0KXtyZXR1cm4gdC5pZCgpfV0sem9vbTpbSXQs W10sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy56b29tfV0sImhlYXRt YXAtZGVuc2l0eSI6W0l0LFtdLGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdsb2Jh bHMuaGVhdG1hcERlbnNpdHl8fDB9XSwibGluZS1wcm9ncmVzcyI6W0l0LFtd LGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdsb2JhbHMubGluZVByb2dyZXNzfHww fV0sYWNjdW11bGF0ZWQ6W050LFtdLGZ1bmN0aW9uKHQpe3JldHVybiB2b2lk IDA9PT10Lmdsb2JhbHMuYWNjdW11bGF0ZWQ/bnVsbDp0Lmdsb2JhbHMuYWNj dW11bGF0ZWR9XSwiKyI6W0l0LHNyKEl0KSxmdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj0wLG49MCxhPWU7bjxhLmxlbmd0aDtuKz0xKXIrPWFbbl0uZXZhbHVh dGUodCk7cmV0dXJuIHJ9XSwiKiI6W0l0LHNyKEl0KSxmdW5jdGlvbih0LGUp e2Zvcih2YXIgcj0xLG49MCxhPWU7bjxhLmxlbmd0aDtuKz0xKXIqPWFbbl0u ZXZhbHVhdGUodCk7cmV0dXJuIHJ9XSwiLSI6e3R5cGU6SXQsb3ZlcmxvYWRz OltbW0l0LEl0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdO3Jl dHVybiByLmV2YWx1YXRlKHQpLW4uZXZhbHVhdGUodCl9XSxbW0l0XSxmdW5j dGlvbih0LGUpe3JldHVybi1lWzBdLmV2YWx1YXRlKHQpfV1dfSwiLyI6W0l0 LFtJdCxJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXTtyZXR1 cm4gci5ldmFsdWF0ZSh0KS9uLmV2YWx1YXRlKHQpfV0sIiUiOltJdCxbSXQs SXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0dXJuIHIu ZXZhbHVhdGUodCklbi5ldmFsdWF0ZSh0KX1dLGxuMjpbSXQsW10sZnVuY3Rp b24oKXtyZXR1cm4gTWF0aC5MTjJ9XSxwaTpbSXQsW10sZnVuY3Rpb24oKXty ZXR1cm4gTWF0aC5QSX1dLGU6W0l0LFtdLGZ1bmN0aW9uKCl7cmV0dXJuIE1h dGguRX1dLCJeIjpbSXQsW0l0LEl0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVb MF0sbj1lWzFdO3JldHVybiBNYXRoLnBvdyhyLmV2YWx1YXRlKHQpLG4uZXZh bHVhdGUodCkpfV0sc3FydDpbSXQsW0l0XSxmdW5jdGlvbih0LGUpe3ZhciBy PWVbMF07cmV0dXJuIE1hdGguc3FydChyLmV2YWx1YXRlKHQpKX1dLGxvZzEw OltJdCxbSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4gTWF0 aC5sb2coci5ldmFsdWF0ZSh0KSkvTWF0aC5MTjEwfV0sbG46W0l0LFtJdF0s ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmxvZyhyLmV2 YWx1YXRlKHQpKX1dLGxvZzI6W0l0LFtJdF0sZnVuY3Rpb24odCxlKXt2YXIg cj1lWzBdO3JldHVybiBNYXRoLmxvZyhyLmV2YWx1YXRlKHQpKS9NYXRoLkxO Mn1dLHNpbjpbSXQsW0l0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0 dXJuIE1hdGguc2luKHIuZXZhbHVhdGUodCkpfV0sY29zOltJdCxbSXRdLGZ1 bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4gTWF0aC5jb3Moci5ldmFs dWF0ZSh0KSl9XSx0YW46W0l0LFtJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1l WzBdO3JldHVybiBNYXRoLnRhbihyLmV2YWx1YXRlKHQpKX1dLGFzaW46W0l0 LFtJdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmFz aW4oci5ldmFsdWF0ZSh0KSl9XSxhY29zOltJdCxbSXRdLGZ1bmN0aW9uKHQs ZSl7dmFyIHI9ZVswXTtyZXR1cm4gTWF0aC5hY29zKHIuZXZhbHVhdGUodCkp fV0sYXRhbjpbSXQsW0l0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0 dXJuIE1hdGguYXRhbihyLmV2YWx1YXRlKHQpKX1dLG1pbjpbSXQsc3IoSXQp LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWluLmFwcGx5KE1hdGgsZS5t YXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXZhbHVhdGUodCl9KSl9XSxtYXg6 W0l0LHNyKEl0KSxmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heC5hcHBs eShNYXRoLGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV2YWx1YXRlKHQp fSkpfV0sYWJzOltJdCxbSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTty ZXR1cm4gTWF0aC5hYnMoci5ldmFsdWF0ZSh0KSl9XSxyb3VuZDpbSXQsW0l0 XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0uZXZhbHVhdGUodCk7cmV0dXJu IHI8MD8tTWF0aC5yb3VuZCgtcik6TWF0aC5yb3VuZChyKX1dLGZsb29yOltJ dCxbSXRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4gTWF0aC5m bG9vcihyLmV2YWx1YXRlKHQpKX1dLGNlaWw6W0l0LFtJdF0sZnVuY3Rpb24o dCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmNlaWwoci5ldmFsdWF0ZSh0 KSl9XSwiZmlsdGVyLT09IjpbUnQsW0R0LE50XSxmdW5jdGlvbih0LGUpe3Zh ciByPWVbMF0sbj1lWzFdO3JldHVybiB0LnByb3BlcnRpZXMoKVtyLnZhbHVl XT09PW4udmFsdWV9XSwiZmlsdGVyLWlkLT09IjpbUnQsW050XSxmdW5jdGlv bih0LGUpe3ZhciByPWVbMF07cmV0dXJuIHQuaWQoKT09PXIudmFsdWV9XSwi ZmlsdGVyLXR5cGUtPT0iOltSdCxbRHRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9 ZVswXTtyZXR1cm4gdC5nZW9tZXRyeVR5cGUoKT09PXIudmFsdWV9XSwiZmls dGVyLTwiOltSdCxbRHQsTnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxu PWVbMV0sYT10LnByb3BlcnRpZXMoKVtyLnZhbHVlXSxpPW4udmFsdWU7cmV0 dXJuIHR5cGVvZiBhPT10eXBlb2YgaSYmYTxpfV0sImZpbHRlci1pZC08Ijpb UnQsW050XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj10LmlkKCksYT1y LnZhbHVlO3JldHVybiB0eXBlb2Ygbj09dHlwZW9mIGEmJm48YX1dLCJmaWx0 ZXItPiI6W1J0LFtEdCxOdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49 ZVsxXSxhPXQucHJvcGVydGllcygpW3IudmFsdWVdLGk9bi52YWx1ZTtyZXR1 cm4gdHlwZW9mIGE9PXR5cGVvZiBpJiZhPml9XSwiZmlsdGVyLWlkLT4iOltS dCxbTnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPXQuaWQoKSxhPXIu dmFsdWU7cmV0dXJuIHR5cGVvZiBuPT10eXBlb2YgYSYmbj5hfV0sImZpbHRl ci08PSI6W1J0LFtEdCxOdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49 ZVsxXSxhPXQucHJvcGVydGllcygpW3IudmFsdWVdLGk9bi52YWx1ZTtyZXR1 cm4gdHlwZW9mIGE9PXR5cGVvZiBpJiZhPD1pfV0sImZpbHRlci1pZC08PSI6 W1J0LFtOdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49dC5pZCgpLGE9 ci52YWx1ZTtyZXR1cm4gdHlwZW9mIG49PXR5cGVvZiBhJiZuPD1hfV0sImZp bHRlci0+PSI6W1J0LFtEdCxOdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBd LG49ZVsxXSxhPXQucHJvcGVydGllcygpW3IudmFsdWVdLGk9bi52YWx1ZTty ZXR1cm4gdHlwZW9mIGE9PXR5cGVvZiBpJiZhPj1pfV0sImZpbHRlci1pZC0+ PSI6W1J0LFtOdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49dC5pZCgp LGE9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIG49PXR5cGVvZiBhJiZuPj1hfV0s ImZpbHRlci1oYXMiOltSdCxbTnRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVb MF0udmFsdWUgaW4gdC5wcm9wZXJ0aWVzKCl9XSwiZmlsdGVyLWhhcy1pZCI6 W1J0LFtdLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dC5pZCgpfV0sImZp bHRlci10eXBlLWluIjpbUnQsW1V0KER0KV0sZnVuY3Rpb24odCxlKXtyZXR1 cm4gZVswXS52YWx1ZS5pbmRleE9mKHQuZ2VvbWV0cnlUeXBlKCkpPj0wfV0s ImZpbHRlci1pZC1pbiI6W1J0LFtVdChOdCldLGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGVbMF0udmFsdWUuaW5kZXhPZih0LmlkKCkpPj0wfV0sImZpbHRlci1p bi1zbWFsbCI6W1J0LFtEdCxVdChOdCldLGZ1bmN0aW9uKHQsZSl7dmFyIHI9 ZVswXTtyZXR1cm4gZVsxXS52YWx1ZS5pbmRleE9mKHQucHJvcGVydGllcygp W3IudmFsdWVdKT49MH1dLCJmaWx0ZXItaW4tbGFyZ2UiOltSdCxbRHQsVXQo TnQpXSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdO3JldHVybiBm dW5jdGlvbih0LGUscixuKXtmb3IoO3I8PW47KXt2YXIgYT1yK24+PjE7aWYo ZVthXT09PXQpcmV0dXJuITA7ZVthXT50P249YS0xOnI9YSsxfXJldHVybiEx fSh0LnByb3BlcnRpZXMoKVtyLnZhbHVlXSxuLnZhbHVlLDAsbi52YWx1ZS5s ZW5ndGgtMSl9XSxhbGw6e3R5cGU6UnQsb3ZlcmxvYWRzOltbW1J0LFJ0XSxm dW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdO3JldHVybiByLmV2YWx1 YXRlKHQpJiZuLmV2YWx1YXRlKHQpfV0sW3NyKFJ0KSxmdW5jdGlvbih0LGUp e2Zvcih2YXIgcj0wLG49ZTtyPG4ubGVuZ3RoO3IrPTEpaWYoIW5bcl0uZXZh bHVhdGUodCkpcmV0dXJuITE7cmV0dXJuITB9XV19LGFueTp7dHlwZTpSdCxv dmVybG9hZHM6W1tbUnQsUnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxu PWVbMV07cmV0dXJuIHIuZXZhbHVhdGUodCl8fG4uZXZhbHVhdGUodCl9XSxb c3IoUnQpLGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj1lO3I8bi5sZW5n dGg7cis9MSlpZihuW3JdLmV2YWx1YXRlKHQpKXJldHVybiEwO3JldHVybiEx fV1dfSwiISI6W1J0LFtSdF0sZnVuY3Rpb24odCxlKXtyZXR1cm4hZVswXS5l dmFsdWF0ZSh0KX1dLCJpcy1zdXBwb3J0ZWQtc2NyaXB0IjpbUnQsW0R0XSxm dW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj10Lmdsb2JhbHMmJnQuZ2xvYmFs cy5pc1N1cHBvcnRlZFNjcmlwdDtyZXR1cm4hbnx8bihyLmV2YWx1YXRlKHQp KX1dLHVwY2FzZTpbRHQsW0R0XSxmdW5jdGlvbih0LGUpe3JldHVybiBlWzBd LmV2YWx1YXRlKHQpLnRvVXBwZXJDYXNlKCl9XSxkb3duY2FzZTpbRHQsW0R0 XSxmdW5jdGlvbih0LGUpe3JldHVybiBlWzBdLmV2YWx1YXRlKHQpLnRvTG93 ZXJDYXNlKCl9XSxjb25jYXQ6W0R0LHNyKE50KSxmdW5jdGlvbih0LGUpe3Jl dHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gJHQoZS5ldmFsdWF0ZSh0 KSl9KS5qb2luKCIiKX1dLCJyZXNvbHZlZC1sb2NhbGUiOltEdCxbanRdLGZ1 bmN0aW9uKHQsZSl7cmV0dXJuIGVbMF0uZXZhbHVhdGUodCkucmVzb2x2ZWRM b2NhbGUoKX1dfSk7dmFyIF9yPWZ1bmN0aW9uKHQsZSl7dGhpcy5leHByZXNz aW9uPXQsdGhpcy5fd2FybmluZ0hpc3Rvcnk9e30sdGhpcy5fZXZhbHVhdG9y PW5ldyBsZSx0aGlzLl9kZWZhdWx0VmFsdWU9ZT9mdW5jdGlvbih0KXtyZXR1 cm4iY29sb3IiPT09dC50eXBlJiZkcih0LmRlZmF1bHQpP25ldyBXdCgwLDAs MCwwKToiY29sb3IiPT09dC50eXBlP1d0LnBhcnNlKHQuZGVmYXVsdCl8fG51 bGw6dm9pZCAwPT09dC5kZWZhdWx0P251bGw6dC5kZWZhdWx0fShlKTpudWxs LHRoaXMuX2VudW1WYWx1ZXM9ZSYmImVudW0iPT09ZS50eXBlP2UudmFsdWVz Om51bGx9O2Z1bmN0aW9uIHdyKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQp JiZ0Lmxlbmd0aD4wJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJnRbMF1pbiBu cn1mdW5jdGlvbiBrcih0LGUpe3ZhciByPW5ldyBnZShucixbXSxlP2Z1bmN0 aW9uKHQpe3ZhciBlPXtjb2xvcjpGdCxzdHJpbmc6RHQsbnVtYmVyOkl0LGVu dW06RHQsYm9vbGVhbjpSdCxmb3JtYXR0ZWQ6VnR9O3JldHVybiJhcnJheSI9 PT10LnR5cGU/VXQoZVt0LnZhbHVlXXx8TnQsdC5sZW5ndGgpOmVbdC50eXBl XX0oZSk6dm9pZCAwKSxuPXIucGFyc2UodCx2b2lkIDAsdm9pZCAwLHZvaWQg MCxlJiYic3RyaW5nIj09PWUudHlwZT97dHlwZUFubm90YXRpb246ImNvZXJj ZSJ9OnZvaWQgMCk7cmV0dXJuIG4/bHIobmV3IF9yKG4sZSkpOmNyKHIuZXJy b3JzKX1fci5wcm90b3R5cGUuZXZhbHVhdGVXaXRob3V0RXJyb3JIYW5kbGlu Zz1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdGhpcy5fZXZhbHVhdG9yLmds b2JhbHM9dCx0aGlzLl9ldmFsdWF0b3IuZmVhdHVyZT1lLHRoaXMuX2V2YWx1 YXRvci5mZWF0dXJlU3RhdGU9cix0aGlzLl9ldmFsdWF0b3IuZm9ybWF0dGVk U2VjdGlvbj1uLHRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZSh0aGlzLl9ldmFs dWF0b3IpfSxfci5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCxlLHIs bil7dGhpcy5fZXZhbHVhdG9yLmdsb2JhbHM9dCx0aGlzLl9ldmFsdWF0b3Iu ZmVhdHVyZT1lfHxudWxsLHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlU3RhdGU9 cnx8bnVsbCx0aGlzLl9ldmFsdWF0b3IuZm9ybWF0dGVkU2VjdGlvbj1ufHxu dWxsO3RyeXt2YXIgYT10aGlzLmV4cHJlc3Npb24uZXZhbHVhdGUodGhpcy5f ZXZhbHVhdG9yKTtpZihudWxsPT1hKXJldHVybiB0aGlzLl9kZWZhdWx0VmFs dWU7aWYodGhpcy5fZW51bVZhbHVlcyYmIShhIGluIHRoaXMuX2VudW1WYWx1 ZXMpKXRocm93IG5ldyBlZSgiRXhwZWN0ZWQgdmFsdWUgdG8gYmUgb25lIG9m ICIrT2JqZWN0LmtleXModGhpcy5fZW51bVZhbHVlcykubWFwKGZ1bmN0aW9u KHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX0pLmpvaW4oIiwgIikrIiwg YnV0IGZvdW5kICIrSlNPTi5zdHJpbmdpZnkoYSkrIiBpbnN0ZWFkLiIpO3Jl dHVybiBhfWNhdGNoKHQpe3JldHVybiB0aGlzLl93YXJuaW5nSGlzdG9yeVt0 Lm1lc3NhZ2VdfHwodGhpcy5fd2FybmluZ0hpc3RvcnlbdC5tZXNzYWdlXT0h MCwidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2Fybih0 Lm1lc3NhZ2UpKSx0aGlzLl9kZWZhdWx0VmFsdWV9fTt2YXIgVHI9ZnVuY3Rp b24odCxlKXt0aGlzLmtpbmQ9dCx0aGlzLl9zdHlsZUV4cHJlc3Npb249ZSx0 aGlzLmlzU3RhdGVEZXBlbmRlbnQ9ImNvbnN0YW50IiE9PXQmJiFmZShlLmV4 cHJlc3Npb24pfTtUci5wcm90b3R5cGUuZXZhbHVhdGVXaXRob3V0RXJyb3JI YW5kbGluZz1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdGhpcy5fc3R5bGVF eHByZXNzaW9uLmV2YWx1YXRlV2l0aG91dEVycm9ySGFuZGxpbmcodCxlLHIs bil9LFRyLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0LGUscixuKXty ZXR1cm4gdGhpcy5fc3R5bGVFeHByZXNzaW9uLmV2YWx1YXRlKHQsZSxyLG4p fTt2YXIgTXI9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5raW5kPXQsdGhpcy56 b29tU3RvcHM9cix0aGlzLl9zdHlsZUV4cHJlc3Npb249ZSx0aGlzLmlzU3Rh dGVEZXBlbmRlbnQ9ImNhbWVyYSIhPT10JiYhZmUoZS5leHByZXNzaW9uKSx0 aGlzLmludGVycG9sYXRpb25UeXBlPW59O2Z1bmN0aW9uIEFyKHQsZSl7aWYo ImVycm9yIj09PSh0PWtyKHQsZSkpLnJlc3VsdClyZXR1cm4gdDt2YXIgcj10 LnZhbHVlLmV4cHJlc3Npb24sbj1oZShyKTtpZighbiYmIXVyKGUpKXJldHVy biBjcihbbmV3IFB0KCIiLCJkYXRhIGV4cHJlc3Npb25zIG5vdCBzdXBwb3J0 ZWQiKV0pO3ZhciBhPXBlKHIsWyJ6b29tIl0pO2lmKCFhJiYhaHIoZSkpcmV0 dXJuIGNyKFtuZXcgUHQoIiIsInpvb20gZXhwcmVzc2lvbnMgbm90IHN1cHBv cnRlZCIpXSk7dmFyIGk9ZnVuY3Rpb24gdChlKXt2YXIgcj1udWxsO2lmKGUg aW5zdGFuY2VvZiBVZSlyPXQoZS5yZXN1bHQpO2Vsc2UgaWYoZSBpbnN0YW5j ZW9mIFZlKWZvcih2YXIgbj0wLGE9ZS5hcmdzO248YS5sZW5ndGg7bis9MSl7 dmFyIGk9YVtuXTtpZihyPXQoaSkpYnJlYWt9ZWxzZShlIGluc3RhbmNlb2Yg bWV8fGUgaW5zdGFuY2VvZiBOZSkmJmUuaW5wdXQgaW5zdGFuY2VvZiBjZSYm Inpvb20iPT09ZS5pbnB1dC5uYW1lJiYocj1lKTtyZXR1cm4gciBpbnN0YW5j ZW9mIFB0P3I6KGUuZWFjaENoaWxkKGZ1bmN0aW9uKGUpe3ZhciBuPXQoZSk7 biBpbnN0YW5jZW9mIFB0P3I9bjohciYmbj9yPW5ldyBQdCgiIiwnInpvb20i IGV4cHJlc3Npb24gbWF5IG9ubHkgYmUgdXNlZCBhcyBpbnB1dCB0byBhIHRv cC1sZXZlbCAic3RlcCIgb3IgImludGVycG9sYXRlIiBleHByZXNzaW9uLicp OnImJm4mJnIhPT1uJiYocj1uZXcgUHQoIiIsJ09ubHkgb25lIHpvb20tYmFz ZWQgInN0ZXAiIG9yICJpbnRlcnBvbGF0ZSIgc3ViZXhwcmVzc2lvbiBtYXkg YmUgdXNlZCBpbiBhbiBleHByZXNzaW9uLicpKX0pLHIpfShyKTtpZighaSYm IWEpcmV0dXJuIGNyKFtuZXcgUHQoIiIsJyJ6b29tIiBleHByZXNzaW9uIG1h eSBvbmx5IGJlIHVzZWQgYXMgaW5wdXQgdG8gYSB0b3AtbGV2ZWwgInN0ZXAi IG9yICJpbnRlcnBvbGF0ZSIgZXhwcmVzc2lvbi4nKV0pO2lmKGkgaW5zdGFu Y2VvZiBQdClyZXR1cm4gY3IoW2ldKTtpZihpIGluc3RhbmNlb2YgTmUmJiFm cihlKSlyZXR1cm4gY3IoW25ldyBQdCgiIiwnImludGVycG9sYXRlIiBleHBy ZXNzaW9ucyBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoaXMgcHJvcGVydHknKV0p O2lmKCFpKXJldHVybiBscihuZXcgVHIobj8iY29uc3RhbnQiOiJzb3VyY2Ui LHQudmFsdWUpKTt2YXIgbz1pIGluc3RhbmNlb2YgTmU/aS5pbnRlcnBvbGF0 aW9uOnZvaWQgMDtyZXR1cm4gbHIobmV3IE1yKG4/ImNhbWVyYSI6ImNvbXBv c2l0ZSIsdC52YWx1ZSxpLmxhYmVscyxvKSl9TXIucHJvdG90eXBlLmV2YWx1 YXRlV2l0aG91dEVycm9ySGFuZGxpbmc9ZnVuY3Rpb24odCxlLHIsbil7cmV0 dXJuIHRoaXMuX3N0eWxlRXhwcmVzc2lvbi5ldmFsdWF0ZVdpdGhvdXRFcnJv ckhhbmRsaW5nKHQsZSxyLG4pfSxNci5wcm90b3R5cGUuZXZhbHVhdGU9ZnVu Y3Rpb24odCxlLHIsbil7cmV0dXJuIHRoaXMuX3N0eWxlRXhwcmVzc2lvbi5l dmFsdWF0ZSh0LGUscixuKX0sTXIucHJvdG90eXBlLmludGVycG9sYXRpb25G YWN0b3I9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLmludGVycG9sYXRp b25UeXBlP05lLmludGVycG9sYXRpb25GYWN0b3IodGhpcy5pbnRlcnBvbGF0 aW9uVHlwZSx0LGUscik6MH07dmFyIFNyPWZ1bmN0aW9uKHQsZSl7dGhpcy5f cGFyYW1ldGVycz10LHRoaXMuX3NwZWNpZmljYXRpb249ZSxTdCh0aGlzLGZ1 bmN0aW9uIHQoZSxyKXt2YXIgbixhLGksbz0iY29sb3IiPT09ci50eXBlLHM9 ZS5zdG9wcyYmIm9iamVjdCI9PXR5cGVvZiBlLnN0b3BzWzBdWzBdLGw9c3x8 dm9pZCAwIT09ZS5wcm9wZXJ0eSxjPXN8fCFsLHU9ZS50eXBlfHwoZnIocik/ ImV4cG9uZW50aWFsIjoiaW50ZXJ2YWwiKTtpZihvJiYoKGU9U3Qoe30sZSkp LnN0b3BzJiYoZS5zdG9wcz1lLnN0b3BzLm1hcChmdW5jdGlvbih0KXtyZXR1 cm5bdFswXSxXdC5wYXJzZSh0WzFdKV19KSksZS5kZWZhdWx0P2UuZGVmYXVs dD1XdC5wYXJzZShlLmRlZmF1bHQpOmUuZGVmYXVsdD1XdC5wYXJzZShyLmRl ZmF1bHQpKSxlLmNvbG9yU3BhY2UmJiJyZ2IiIT09ZS5jb2xvclNwYWNlJiYh QmVbZS5jb2xvclNwYWNlXSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY29s b3Igc3BhY2U6ICIrZS5jb2xvclNwYWNlKTtpZigiZXhwb25lbnRpYWwiPT09 dSluPXhyO2Vsc2UgaWYoImludGVydmFsIj09PXUpbj15cjtlbHNlIGlmKCJj YXRlZ29yaWNhbCI9PT11KXtuPW1yLGE9T2JqZWN0LmNyZWF0ZShudWxsKTtm b3IodmFyIGg9MCxmPWUuc3RvcHM7aDxmLmxlbmd0aDtoKz0xKXt2YXIgcD1m W2hdO2FbcFswXV09cFsxXX1pPXR5cGVvZiBlLnN0b3BzWzBdWzBdfWVsc2V7 aWYoImlkZW50aXR5IiE9PXUpdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGZ1 bmN0aW9uIHR5cGUgIicrdSsnIicpO249YnJ9aWYocyl7Zm9yKHZhciBkPXt9 LGc9W10sdj0wO3Y8ZS5zdG9wcy5sZW5ndGg7disrKXt2YXIgbT1lLnN0b3Bz W3ZdLHk9bVswXS56b29tO3ZvaWQgMD09PWRbeV0mJihkW3ldPXt6b29tOnks dHlwZTplLnR5cGUscHJvcGVydHk6ZS5wcm9wZXJ0eSxkZWZhdWx0OmUuZGVm YXVsdCxzdG9wczpbXX0sZy5wdXNoKHkpKSxkW3ldLnN0b3BzLnB1c2goW21b MF0udmFsdWUsbVsxXV0pfWZvcih2YXIgeD1bXSxiPTAsXz1nO2I8Xy5sZW5n dGg7Yis9MSl7dmFyIHc9X1tiXTt4LnB1c2goW2Rbd10uem9vbSx0KGRbd10s cildKX12YXIgaz17bmFtZToibGluZWFyIn07cmV0dXJue2tpbmQ6ImNvbXBv c2l0ZSIsaW50ZXJwb2xhdGlvblR5cGU6ayxpbnRlcnBvbGF0aW9uRmFjdG9y Ok5lLmludGVycG9sYXRpb25GYWN0b3IuYmluZCh2b2lkIDAsayksem9vbVN0 b3BzOngubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdfSksZXZhbHVhdGU6 ZnVuY3Rpb24odCxuKXt2YXIgYT10Lnpvb207cmV0dXJuIHhyKHtzdG9wczp4 LGJhc2U6ZS5iYXNlfSxyLGEpLmV2YWx1YXRlKGEsbil9fX1pZihjKXt2YXIg VD0iZXhwb25lbnRpYWwiPT09dT97bmFtZToiZXhwb25lbnRpYWwiLGJhc2U6 dm9pZCAwIT09ZS5iYXNlP2UuYmFzZToxfTpudWxsO3JldHVybntraW5kOiJj YW1lcmEiLGludGVycG9sYXRpb25UeXBlOlQsaW50ZXJwb2xhdGlvbkZhY3Rv cjpOZS5pbnRlcnBvbGF0aW9uRmFjdG9yLmJpbmQodm9pZCAwLFQpLHpvb21T dG9wczplLnN0b3BzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFswXX0pLGV2 YWx1YXRlOmZ1bmN0aW9uKHQpe3ZhciBvPXQuem9vbTtyZXR1cm4gbihlLHIs byxhLGkpfX19cmV0dXJue2tpbmQ6InNvdXJjZSIsZXZhbHVhdGU6ZnVuY3Rp b24odCxvKXt2YXIgcz1vJiZvLnByb3BlcnRpZXM/by5wcm9wZXJ0aWVzW2Uu cHJvcGVydHldOnZvaWQgMDtyZXR1cm4gdm9pZCAwPT09cz92cihlLmRlZmF1 bHQsci5kZWZhdWx0KTpuKGUscixzLGEsaSl9fX0odGhpcy5fcGFyYW1ldGVy cyx0aGlzLl9zcGVjaWZpY2F0aW9uKSl9O2Z1bmN0aW9uIEVyKHQpe3ZhciBl PXQua2V5LHI9dC52YWx1ZSxuPXQudmFsdWVTcGVjfHx7fSxhPXQub2JqZWN0 RWxlbWVudFZhbGlkYXRvcnN8fHt9LGk9dC5zdHlsZSxvPXQuc3R5bGVTcGVj LHM9W10sbD1wcihyKTtpZigib2JqZWN0IiE9PWwpcmV0dXJuW25ldyBNdChl LHIsIm9iamVjdCBleHBlY3RlZCwgIitsKyIgZm91bmQiKV07Zm9yKHZhciBj IGluIHIpe3ZhciB1PWMuc3BsaXQoIi4iKVswXSxoPW5bdV18fG5bIioiXSxm PXZvaWQgMDtpZihhW3VdKWY9YVt1XTtlbHNlIGlmKG5bdV0pZj1RcjtlbHNl IGlmKGFbIioiXSlmPWFbIioiXTtlbHNle2lmKCFuWyIqIl0pe3MucHVzaChu ZXcgTXQoZSxyW2NdLCd1bmtub3duIHByb3BlcnR5ICInK2MrJyInKSk7Y29u dGludWV9Zj1Rcn1zPXMuY29uY2F0KGYoe2tleTooZT9lKyIuIjplKStjLHZh bHVlOnJbY10sdmFsdWVTcGVjOmgsc3R5bGU6aSxzdHlsZVNwZWM6byxvYmpl Y3Q6cixvYmplY3RLZXk6Y30scikpfWZvcih2YXIgcCBpbiBuKWFbcF18fG5b cF0ucmVxdWlyZWQmJnZvaWQgMD09PW5bcF0uZGVmYXVsdCYmdm9pZCAwPT09 cltwXSYmcy5wdXNoKG5ldyBNdChlLHIsJ21pc3NpbmcgcmVxdWlyZWQgcHJv cGVydHkgIicrcCsnIicpKTtyZXR1cm4gc31mdW5jdGlvbiBMcih0KXt2YXIg ZT10LnZhbHVlLHI9dC52YWx1ZVNwZWMsbj10LnN0eWxlLGE9dC5zdHlsZVNw ZWMsaT10LmtleSxvPXQuYXJyYXlFbGVtZW50VmFsaWRhdG9yfHxRcjtpZigi YXJyYXkiIT09cHIoZSkpcmV0dXJuW25ldyBNdChpLGUsImFycmF5IGV4cGVj dGVkLCAiK3ByKGUpKyIgZm91bmQiKV07aWYoci5sZW5ndGgmJmUubGVuZ3Ro IT09ci5sZW5ndGgpcmV0dXJuW25ldyBNdChpLGUsImFycmF5IGxlbmd0aCAi K3IubGVuZ3RoKyIgZXhwZWN0ZWQsIGxlbmd0aCAiK2UubGVuZ3RoKyIgZm91 bmQiKV07aWYoclsibWluLWxlbmd0aCJdJiZlLmxlbmd0aDxyWyJtaW4tbGVu Z3RoIl0pcmV0dXJuW25ldyBNdChpLGUsImFycmF5IGxlbmd0aCBhdCBsZWFz dCAiK3JbIm1pbi1sZW5ndGgiXSsiIGV4cGVjdGVkLCBsZW5ndGggIitlLmxl bmd0aCsiIGZvdW5kIildO3ZhciBzPXt0eXBlOnIudmFsdWUsdmFsdWVzOnIu dmFsdWVzfTthLiR2ZXJzaW9uPDcmJihzLmZ1bmN0aW9uPXIuZnVuY3Rpb24p LCJvYmplY3QiPT09cHIoci52YWx1ZSkmJihzPXIudmFsdWUpO2Zvcih2YXIg bD1bXSxjPTA7YzxlLmxlbmd0aDtjKyspbD1sLmNvbmNhdChvKHthcnJheTpl LGFycmF5SW5kZXg6Yyx2YWx1ZTplW2NdLHZhbHVlU3BlYzpzLHN0eWxlOm4s c3R5bGVTcGVjOmEsa2V5OmkrIlsiK2MrIl0ifSkpO3JldHVybiBsfWZ1bmN0 aW9uIENyKHQpe3ZhciBlPXQua2V5LHI9dC52YWx1ZSxuPXQudmFsdWVTcGVj LGE9cHIocik7cmV0dXJuIm51bWJlciIhPT1hP1tuZXcgTXQoZSxyLCJudW1i ZXIgZXhwZWN0ZWQsICIrYSsiIGZvdW5kIildOiJtaW5pbXVtImluIG4mJnI8 bi5taW5pbXVtP1tuZXcgTXQoZSxyLHIrIiBpcyBsZXNzIHRoYW4gdGhlIG1p bmltdW0gdmFsdWUgIituLm1pbmltdW0pXToibWF4aW11bSJpbiBuJiZyPm4u bWF4aW11bT9bbmV3IE10KGUscixyKyIgaXMgZ3JlYXRlciB0aGFuIHRoZSBt YXhpbXVtIHZhbHVlICIrbi5tYXhpbXVtKV06W119ZnVuY3Rpb24gUHIodCl7 dmFyIGUscixuLGE9dC52YWx1ZVNwZWMsaT1MdCh0LnZhbHVlLnR5cGUpLG89 e30scz0iY2F0ZWdvcmljYWwiIT09aSYmdm9pZCAwPT09dC52YWx1ZS5wcm9w ZXJ0eSxsPSFzLGM9ImFycmF5Ij09PXByKHQudmFsdWUuc3RvcHMpJiYiYXJy YXkiPT09cHIodC52YWx1ZS5zdG9wc1swXSkmJiJvYmplY3QiPT09cHIodC52 YWx1ZS5zdG9wc1swXVswXSksdT1Fcih7a2V5OnQua2V5LHZhbHVlOnQudmFs dWUsdmFsdWVTcGVjOnQuc3R5bGVTcGVjLmZ1bmN0aW9uLHN0eWxlOnQuc3R5 bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjLG9iamVjdEVsZW1lbnRWYWxpZGF0 b3JzOntzdG9wczpmdW5jdGlvbih0KXtpZigiaWRlbnRpdHkiPT09aSlyZXR1 cm5bbmV3IE10KHQua2V5LHQudmFsdWUsJ2lkZW50aXR5IGZ1bmN0aW9uIG1h eSBub3QgaGF2ZSBhICJzdG9wcyIgcHJvcGVydHknKV07dmFyIGU9W10scj10 LnZhbHVlO3JldHVybiBlPWUuY29uY2F0KExyKHtrZXk6dC5rZXksdmFsdWU6 cix2YWx1ZVNwZWM6dC52YWx1ZVNwZWMsc3R5bGU6dC5zdHlsZSxzdHlsZVNw ZWM6dC5zdHlsZVNwZWMsYXJyYXlFbGVtZW50VmFsaWRhdG9yOmh9KSksImFy cmF5Ij09PXByKHIpJiYwPT09ci5sZW5ndGgmJmUucHVzaChuZXcgTXQodC5r ZXksciwiYXJyYXkgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBzdG9wIikpLGV9 LGRlZmF1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIFFyKHtrZXk6dC5rZXksdmFs dWU6dC52YWx1ZSx2YWx1ZVNwZWM6YSxzdHlsZTp0LnN0eWxlLHN0eWxlU3Bl Yzp0LnN0eWxlU3BlY30pfX19KTtyZXR1cm4iaWRlbnRpdHkiPT09aSYmcyYm dS5wdXNoKG5ldyBNdCh0LmtleSx0LnZhbHVlLCdtaXNzaW5nIHJlcXVpcmVk IHByb3BlcnR5ICJwcm9wZXJ0eSInKSksImlkZW50aXR5Ij09PWl8fHQudmFs dWUuc3RvcHN8fHUucHVzaChuZXcgTXQodC5rZXksdC52YWx1ZSwnbWlzc2lu ZyByZXF1aXJlZCBwcm9wZXJ0eSAic3RvcHMiJykpLCJleHBvbmVudGlhbCI9 PT1pJiZ0LnZhbHVlU3BlYy5leHByZXNzaW9uJiYhZnIodC52YWx1ZVNwZWMp JiZ1LnB1c2gobmV3IE10KHQua2V5LHQudmFsdWUsImV4cG9uZW50aWFsIGZ1 bmN0aW9ucyBub3Qgc3VwcG9ydGVkIikpLHQuc3R5bGVTcGVjLiR2ZXJzaW9u Pj04JiYobCYmIXVyKHQudmFsdWVTcGVjKT91LnB1c2gobmV3IE10KHQua2V5 LHQudmFsdWUsInByb3BlcnR5IGZ1bmN0aW9ucyBub3Qgc3VwcG9ydGVkIikp OnMmJiFocih0LnZhbHVlU3BlYykmJnUucHVzaChuZXcgTXQodC5rZXksdC52 YWx1ZSwiem9vbSBmdW5jdGlvbnMgbm90IHN1cHBvcnRlZCIpKSksImNhdGVn b3JpY2FsIiE9PWkmJiFjfHx2b2lkIDAhPT10LnZhbHVlLnByb3BlcnR5fHx1 LnB1c2gobmV3IE10KHQua2V5LHQudmFsdWUsJyJwcm9wZXJ0eSIgcHJvcGVy dHkgaXMgcmVxdWlyZWQnKSksdTtmdW5jdGlvbiBoKHQpe3ZhciBlPVtdLGk9 dC52YWx1ZSxzPXQua2V5O2lmKCJhcnJheSIhPT1wcihpKSlyZXR1cm5bbmV3 IE10KHMsaSwiYXJyYXkgZXhwZWN0ZWQsICIrcHIoaSkrIiBmb3VuZCIpXTtp ZigyIT09aS5sZW5ndGgpcmV0dXJuW25ldyBNdChzLGksImFycmF5IGxlbmd0 aCAyIGV4cGVjdGVkLCBsZW5ndGggIitpLmxlbmd0aCsiIGZvdW5kIildO2lm KGMpe2lmKCJvYmplY3QiIT09cHIoaVswXSkpcmV0dXJuW25ldyBNdChzLGks Im9iamVjdCBleHBlY3RlZCwgIitwcihpWzBdKSsiIGZvdW5kIildO2lmKHZv aWQgMD09PWlbMF0uem9vbSlyZXR1cm5bbmV3IE10KHMsaSwib2JqZWN0IHN0 b3Aga2V5IG11c3QgaGF2ZSB6b29tIildO2lmKHZvaWQgMD09PWlbMF0udmFs dWUpcmV0dXJuW25ldyBNdChzLGksIm9iamVjdCBzdG9wIGtleSBtdXN0IGhh dmUgdmFsdWUiKV07aWYobiYmbj5MdChpWzBdLnpvb20pKXJldHVybltuZXcg TXQocyxpWzBdLnpvb20sInN0b3Agem9vbSB2YWx1ZXMgbXVzdCBhcHBlYXIg aW4gYXNjZW5kaW5nIG9yZGVyIildO0x0KGlbMF0uem9vbSkhPT1uJiYobj1M dChpWzBdLnpvb20pLHI9dm9pZCAwLG89e30pLGU9ZS5jb25jYXQoRXIoe2tl eTpzKyJbMF0iLHZhbHVlOmlbMF0sdmFsdWVTcGVjOnt6b29tOnt9fSxzdHls ZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlYyxvYmplY3RFbGVtZW50 VmFsaWRhdG9yczp7em9vbTpDcix2YWx1ZTpmfX0pKX1lbHNlIGU9ZS5jb25j YXQoZih7a2V5OnMrIlswXSIsdmFsdWU6aVswXSx2YWx1ZVNwZWM6e30sc3R5 bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWN9LGkpKTtyZXR1cm4g d3IoQ3QoaVsxXSkpP2UuY29uY2F0KFtuZXcgTXQocysiWzFdIixpWzFdLCJl eHByZXNzaW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gZnVuY3Rpb24gc3RvcHMu IildKTplLmNvbmNhdChRcih7a2V5OnMrIlsxXSIsdmFsdWU6aVsxXSx2YWx1 ZVNwZWM6YSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlY30p KX1mdW5jdGlvbiBmKHQsbil7dmFyIHM9cHIodC52YWx1ZSksbD1MdCh0LnZh bHVlKSxjPW51bGwhPT10LnZhbHVlP3QudmFsdWU6bjtpZihlKXtpZihzIT09 ZSlyZXR1cm5bbmV3IE10KHQua2V5LGMscysiIHN0b3AgZG9tYWluIHR5cGUg bXVzdCBtYXRjaCBwcmV2aW91cyBzdG9wIGRvbWFpbiB0eXBlICIrZSldfWVs c2UgZT1zO2lmKCJudW1iZXIiIT09cyYmInN0cmluZyIhPT1zJiYiYm9vbGVh biIhPT1zKXJldHVybltuZXcgTXQodC5rZXksYywic3RvcCBkb21haW4gdmFs dWUgbXVzdCBiZSBhIG51bWJlciwgc3RyaW5nLCBvciBib29sZWFuIildO2lm KCJudW1iZXIiIT09cyYmImNhdGVnb3JpY2FsIiE9PWkpe3ZhciB1PSJudW1i ZXIgZXhwZWN0ZWQsICIrcysiIGZvdW5kIjtyZXR1cm4gdXIoYSkmJnZvaWQg MD09PWkmJih1Kz0nXG5JZiB5b3UgaW50ZW5kZWQgdG8gdXNlIGEgY2F0ZWdv cmljYWwgZnVuY3Rpb24sIHNwZWNpZnkgYCJ0eXBlIjogImNhdGVnb3JpY2Fs ImAuJyksW25ldyBNdCh0LmtleSxjLHUpXX1yZXR1cm4iY2F0ZWdvcmljYWwi IT09aXx8Im51bWJlciIhPT1zfHxpc0Zpbml0ZShsKSYmTWF0aC5mbG9vcihs KT09PWw/ImNhdGVnb3JpY2FsIiE9PWkmJiJudW1iZXIiPT09cyYmdm9pZCAw IT09ciYmbDxyP1tuZXcgTXQodC5rZXksYywic3RvcCBkb21haW4gdmFsdWVz IG11c3QgYXBwZWFyIGluIGFzY2VuZGluZyBvcmRlciIpXToocj1sLCJjYXRl Z29yaWNhbCI9PT1pJiZsIGluIG8/W25ldyBNdCh0LmtleSxjLCJzdG9wIGRv bWFpbiB2YWx1ZXMgbXVzdCBiZSB1bmlxdWUiKV06KG9bbF09ITAsW10pKTpb bmV3IE10KHQua2V5LGMsImludGVnZXIgZXhwZWN0ZWQsIGZvdW5kICIrbCld fX1mdW5jdGlvbiBPcih0KXt2YXIgZT0oInByb3BlcnR5Ij09PXQuZXhwcmVz c2lvbkNvbnRleHQ/QXI6a3IpKEN0KHQudmFsdWUpLHQudmFsdWVTcGVjKTtp ZigiZXJyb3IiPT09ZS5yZXN1bHQpcmV0dXJuIGUudmFsdWUubWFwKGZ1bmN0 aW9uKGUpe3JldHVybiBuZXcgTXQoIiIrdC5rZXkrZS5rZXksdC52YWx1ZSxl Lm1lc3NhZ2UpfSk7dmFyIHI9ZS52YWx1ZS5leHByZXNzaW9ufHxlLnZhbHVl Ll9zdHlsZUV4cHJlc3Npb24uZXhwcmVzc2lvbjtpZigicHJvcGVydHkiPT09 dC5leHByZXNzaW9uQ29udGV4dCYmInRleHQtZm9udCI9PT10LnByb3BlcnR5 S2V5JiYtMSE9PXIucG9zc2libGVPdXRwdXRzKCkuaW5kZXhPZih2b2lkIDAp KXJldHVybltuZXcgTXQodC5rZXksdC52YWx1ZSwnSW52YWxpZCBkYXRhIGV4 cHJlc3Npb24gZm9yICInK3QucHJvcGVydHlLZXkrJyIuIE91dHB1dCB2YWx1 ZXMgbXVzdCBiZSBjb250YWluZWQgYXMgbGl0ZXJhbHMgd2l0aGluIHRoZSBl eHByZXNzaW9uLicpXTtpZigicHJvcGVydHkiPT09dC5leHByZXNzaW9uQ29u dGV4dCYmImxheW91dCI9PT10LnByb3BlcnR5VHlwZSYmIWZlKHIpKXJldHVy bltuZXcgTXQodC5rZXksdC52YWx1ZSwnImZlYXR1cmUtc3RhdGUiIGRhdGEg ZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCBsYXlvdXQgcHJv cGVydGllcy4nKV07aWYoImZpbHRlciI9PT10LmV4cHJlc3Npb25Db250ZXh0 JiYhZmUocikpcmV0dXJuW25ldyBNdCh0LmtleSx0LnZhbHVlLCciZmVhdHVy ZS1zdGF0ZSIgZGF0YSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB3 aXRoIGZpbHRlcnMuJyldO2lmKHQuZXhwcmVzc2lvbkNvbnRleHQmJjA9PT10 LmV4cHJlc3Npb25Db250ZXh0LmluZGV4T2YoImNsdXN0ZXIiKSl7aWYoIXBl KHIsWyJ6b29tIiwiZmVhdHVyZS1zdGF0ZSJdKSlyZXR1cm5bbmV3IE10KHQu a2V5LHQudmFsdWUsJyJ6b29tIiBhbmQgImZlYXR1cmUtc3RhdGUiIGV4cHJl c3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggY2x1c3RlciBwcm9wZXJ0 aWVzLicpXTtpZigiY2x1c3Rlci1pbml0aWFsIj09PXQuZXhwcmVzc2lvbkNv bnRleHQmJiFoZShyKSlyZXR1cm5bbmV3IE10KHQua2V5LHQudmFsdWUsIkZl YXR1cmUgZGF0YSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB3aXRo IGluaXRpYWwgZXhwcmVzc2lvbiBwYXJ0IG9mIGNsdXN0ZXIgcHJvcGVydGll cy4iKV19cmV0dXJuW119ZnVuY3Rpb24genIodCl7dmFyIGU9dC5rZXkscj10 LnZhbHVlLG49dC52YWx1ZVNwZWMsYT1bXTtyZXR1cm4gQXJyYXkuaXNBcnJh eShuLnZhbHVlcyk/LTE9PT1uLnZhbHVlcy5pbmRleE9mKEx0KHIpKSYmYS5w dXNoKG5ldyBNdChlLHIsImV4cGVjdGVkIG9uZSBvZiBbIituLnZhbHVlcy5q b2luKCIsICIpKyJdLCAiK0pTT04uc3RyaW5naWZ5KHIpKyIgZm91bmQiKSk6 LTE9PT1PYmplY3Qua2V5cyhuLnZhbHVlcykuaW5kZXhPZihMdChyKSkmJmEu cHVzaChuZXcgTXQoZSxyLCJleHBlY3RlZCBvbmUgb2YgWyIrT2JqZWN0Lmtl eXMobi52YWx1ZXMpLmpvaW4oIiwgIikrIl0sICIrSlNPTi5zdHJpbmdpZnko cikrIiBmb3VuZCIpKSxhfWZ1bmN0aW9uIElyKHQpe2lmKCEwPT09dHx8ITE9 PT10KXJldHVybiEwO2lmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5n dGgpcmV0dXJuITE7c3dpdGNoKHRbMF0pe2Nhc2UiaGFzIjpyZXR1cm4gdC5s ZW5ndGg+PTImJiIkaWQiIT09dFsxXSYmIiR0eXBlIiE9PXRbMV07Y2FzZSJp biI6Y2FzZSIhaW4iOmNhc2UiIWhhcyI6Y2FzZSJub25lIjpyZXR1cm4hMTtj YXNlIj09IjpjYXNlIiE9IjpjYXNlIj4iOmNhc2UiPj0iOmNhc2UiPCI6Y2Fz ZSI8PSI6cmV0dXJuIDMhPT10Lmxlbmd0aHx8QXJyYXkuaXNBcnJheSh0WzFd KXx8QXJyYXkuaXNBcnJheSh0WzJdKTtjYXNlImFueSI6Y2FzZSJhbGwiOmZv cih2YXIgZT0wLHI9dC5zbGljZSgxKTtlPHIubGVuZ3RoO2UrPTEpe3ZhciBu PXJbZV07aWYoIUlyKG4pJiYiYm9vbGVhbiIhPXR5cGVvZiBuKXJldHVybiEx fXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITB9fVNyLmRlc2VyaWFsaXplPWZ1 bmN0aW9uKHQpe3JldHVybiBuZXcgU3IodC5fcGFyYW1ldGVycyx0Ll9zcGVj aWZpY2F0aW9uKX0sU3Iuc2VyaWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybntf cGFyYW1ldGVyczp0Ll9wYXJhbWV0ZXJzLF9zcGVjaWZpY2F0aW9uOnQuX3Nw ZWNpZmljYXRpb259fTt2YXIgRHI9e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6 ITEsdHJhbnNpdGlvbjohMSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVu IixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpv b20iLCJmZWF0dXJlIl19fTtmdW5jdGlvbiBScih0KXtpZihudWxsPT10KXJl dHVybiBmdW5jdGlvbigpe3JldHVybiEwfTtJcih0KXx8KHQ9QnIodCkpO3Zh ciBlPWtyKHQsRHIpO2lmKCJlcnJvciI9PT1lLnJlc3VsdCl0aHJvdyBuZXcg RXJyb3IoZS52YWx1ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5KyI6 ICIrdC5tZXNzYWdlfSkuam9pbigiLCAiKSk7cmV0dXJuIGZ1bmN0aW9uKHQs cil7cmV0dXJuIGUudmFsdWUuZXZhbHVhdGUodCxyKX19ZnVuY3Rpb24gRnIo dCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOjB9ZnVuY3Rpb24gQnIodCl7aWYo IXQpcmV0dXJuITA7dmFyIGUscj10WzBdO3JldHVybiB0Lmxlbmd0aDw9MT8i YW55IiE9PXI6Ij09Ij09PXI/TnIodFsxXSx0WzJdLCI9PSIpOiIhPSI9PT1y P1VyKE5yKHRbMV0sdFsyXSwiPT0iKSk6IjwiPT09cnx8Ij4iPT09cnx8Ijw9 Ij09PXJ8fCI+PSI9PT1yP05yKHRbMV0sdFsyXSxyKToiYW55Ij09PXI/KGU9 dC5zbGljZSgxKSxbImFueSJdLmNvbmNhdChlLm1hcChCcikpKToiYWxsIj09 PXI/WyJhbGwiXS5jb25jYXQodC5zbGljZSgxKS5tYXAoQnIpKToibm9uZSI9 PT1yP1siYWxsIl0uY29uY2F0KHQuc2xpY2UoMSkubWFwKEJyKS5tYXAoVXIp KToiaW4iPT09cj9qcih0WzFdLHQuc2xpY2UoMikpOiIhaW4iPT09cj9Vcihq cih0WzFdLHQuc2xpY2UoMikpKToiaGFzIj09PXI/VnIodFsxXSk6IiFoYXMi IT09cnx8VXIoVnIodFsxXSkpfWZ1bmN0aW9uIE5yKHQsZSxyKXtzd2l0Y2go dCl7Y2FzZSIkdHlwZSI6cmV0dXJuWyJmaWx0ZXItdHlwZS0iK3IsZV07Y2Fz ZSIkaWQiOnJldHVyblsiZmlsdGVyLWlkLSIrcixlXTtkZWZhdWx0OnJldHVy blsiZmlsdGVyLSIrcix0LGVdfX1mdW5jdGlvbiBqcih0LGUpe2lmKDA9PT1l Lmxlbmd0aClyZXR1cm4hMTtzd2l0Y2godCl7Y2FzZSIkdHlwZSI6cmV0dXJu WyJmaWx0ZXItdHlwZS1pbiIsWyJsaXRlcmFsIixlXV07Y2FzZSIkaWQiOnJl dHVyblsiZmlsdGVyLWlkLWluIixbImxpdGVyYWwiLGVdXTtkZWZhdWx0OnJl dHVybiBlLmxlbmd0aD4yMDAmJiFlLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJu IHR5cGVvZiB0IT10eXBlb2YgZVswXX0pP1siZmlsdGVyLWluLWxhcmdlIix0 LFsibGl0ZXJhbCIsZS5zb3J0KEZyKV1dOlsiZmlsdGVyLWluLXNtYWxsIix0 LFsibGl0ZXJhbCIsZV1dfX1mdW5jdGlvbiBWcih0KXtzd2l0Y2godCl7Y2Fz ZSIkdHlwZSI6cmV0dXJuITA7Y2FzZSIkaWQiOnJldHVyblsiZmlsdGVyLWhh cy1pZCJdO2RlZmF1bHQ6cmV0dXJuWyJmaWx0ZXItaGFzIix0XX19ZnVuY3Rp b24gVXIodCl7cmV0dXJuWyIhIix0XX1mdW5jdGlvbiBxcih0KXtyZXR1cm4g SXIoQ3QodC52YWx1ZSkpP09yKFN0KHt9LHQse2V4cHJlc3Npb25Db250ZXh0 OiJmaWx0ZXIiLHZhbHVlU3BlYzp7dmFsdWU6ImJvb2xlYW4ifX0pKTpmdW5j dGlvbiB0KGUpe3ZhciByPWUudmFsdWUsbj1lLmtleTtpZigiYXJyYXkiIT09 cHIocikpcmV0dXJuW25ldyBNdChuLHIsImFycmF5IGV4cGVjdGVkLCAiK3By KHIpKyIgZm91bmQiKV07dmFyIGEsaT1lLnN0eWxlU3BlYyxvPVtdO2lmKHIu bGVuZ3RoPDEpcmV0dXJuW25ldyBNdChuLHIsImZpbHRlciBhcnJheSBtdXN0 IGhhdmUgYXQgbGVhc3QgMSBlbGVtZW50IildO3N3aXRjaChvPW8uY29uY2F0 KHpyKHtrZXk6bisiWzBdIix2YWx1ZTpyWzBdLHZhbHVlU3BlYzppLmZpbHRl cl9vcGVyYXRvcixzdHlsZTplLnN0eWxlLHN0eWxlU3BlYzplLnN0eWxlU3Bl Y30pKSxMdChyWzBdKSl7Y2FzZSI8IjpjYXNlIjw9IjpjYXNlIj4iOmNhc2Ui Pj0iOnIubGVuZ3RoPj0yJiYiJHR5cGUiPT09THQoclsxXSkmJm8ucHVzaChu ZXcgTXQobixyLCciJHR5cGUiIGNhbm5vdCBiZSB1c2Ugd2l0aCBvcGVyYXRv ciAiJytyWzBdKyciJykpO2Nhc2UiPT0iOmNhc2UiIT0iOjMhPT1yLmxlbmd0 aCYmby5wdXNoKG5ldyBNdChuLHIsJ2ZpbHRlciBhcnJheSBmb3Igb3BlcmF0 b3IgIicrclswXSsnIiBtdXN0IGhhdmUgMyBlbGVtZW50cycpKTtjYXNlImlu IjpjYXNlIiFpbiI6ci5sZW5ndGg+PTImJiJzdHJpbmciIT09KGE9cHIoclsx XSkpJiZvLnB1c2gobmV3IE10KG4rIlsxXSIsclsxXSwic3RyaW5nIGV4cGVj dGVkLCAiK2ErIiBmb3VuZCIpKTtmb3IodmFyIHM9MjtzPHIubGVuZ3RoO3Mr KylhPXByKHJbc10pLCIkdHlwZSI9PT1MdChyWzFdKT9vPW8uY29uY2F0KHpy KHtrZXk6bisiWyIrcysiXSIsdmFsdWU6cltzXSx2YWx1ZVNwZWM6aS5nZW9t ZXRyeV90eXBlLHN0eWxlOmUuc3R5bGUsc3R5bGVTcGVjOmUuc3R5bGVTcGVj fSkpOiJzdHJpbmciIT09YSYmIm51bWJlciIhPT1hJiYiYm9vbGVhbiIhPT1h JiZvLnB1c2gobmV3IE10KG4rIlsiK3MrIl0iLHJbc10sInN0cmluZywgbnVt YmVyLCBvciBib29sZWFuIGV4cGVjdGVkLCAiK2ErIiBmb3VuZCIpKTticmVh aztjYXNlImFueSI6Y2FzZSJhbGwiOmNhc2Uibm9uZSI6Zm9yKHZhciBsPTE7 bDxyLmxlbmd0aDtsKyspbz1vLmNvbmNhdCh0KHtrZXk6bisiWyIrbCsiXSIs dmFsdWU6cltsXSxzdHlsZTplLnN0eWxlLHN0eWxlU3BlYzplLnN0eWxlU3Bl Y30pKTticmVhaztjYXNlImhhcyI6Y2FzZSIhaGFzIjphPXByKHJbMV0pLDIh PT1yLmxlbmd0aD9vLnB1c2gobmV3IE10KG4sciwnZmlsdGVyIGFycmF5IGZv ciAiJytyWzBdKyciIG9wZXJhdG9yIG11c3QgaGF2ZSAyIGVsZW1lbnRzJykp OiJzdHJpbmciIT09YSYmby5wdXNoKG5ldyBNdChuKyJbMV0iLHJbMV0sInN0 cmluZyBleHBlY3RlZCwgIithKyIgZm91bmQiKSl9cmV0dXJuIG99KHQpfWZ1 bmN0aW9uIEhyKHQsZSl7dmFyIHI9dC5rZXksbj10LnN0eWxlLGE9dC5zdHls ZVNwZWMsaT10LnZhbHVlLG89dC5vYmplY3RLZXkscz1hW2UrIl8iK3QubGF5 ZXJUeXBlXTtpZighcylyZXR1cm5bXTt2YXIgbD1vLm1hdGNoKC9eKC4qKS10 cmFuc2l0aW9uJC8pO2lmKCJwYWludCI9PT1lJiZsJiZzW2xbMV1dJiZzW2xb MV1dLnRyYW5zaXRpb24pcmV0dXJuIFFyKHtrZXk6cix2YWx1ZTppLHZhbHVl U3BlYzphLnRyYW5zaXRpb24sc3R5bGU6bixzdHlsZVNwZWM6YX0pO3ZhciBj LHU9dC52YWx1ZVNwZWN8fHNbb107aWYoIXUpcmV0dXJuW25ldyBNdChyLGks J3Vua25vd24gcHJvcGVydHkgIicrbysnIicpXTtpZigic3RyaW5nIj09PXBy KGkpJiZ1cih1KSYmIXUudG9rZW5zJiYoYz0vXnsoW159XSspfSQvLmV4ZWMo aSkpKXJldHVybltuZXcgTXQocixpLCciJytvKyciIGRvZXMgbm90IHN1cHBv cnQgaW50ZXJwb2xhdGlvbiBzeW50YXhcblVzZSBhbiBpZGVudGl0eSBwcm9w ZXJ0eSBmdW5jdGlvbiBpbnN0ZWFkOiBgeyAidHlwZSI6ICJpZGVudGl0eSIs ICJwcm9wZXJ0eSI6ICcrSlNPTi5zdHJpbmdpZnkoY1sxXSkrIiB9YC4iKV07 dmFyIGg9W107cmV0dXJuInN5bWJvbCI9PT10LmxheWVyVHlwZSYmKCJ0ZXh0 LWZpZWxkIj09PW8mJm4mJiFuLmdseXBocyYmaC5wdXNoKG5ldyBNdChyLGks J3VzZSBvZiAidGV4dC1maWVsZCIgcmVxdWlyZXMgYSBzdHlsZSAiZ2x5cGhz IiBwcm9wZXJ0eScpKSwidGV4dC1mb250Ij09PW8mJmRyKEN0KGkpKSYmImlk ZW50aXR5Ij09PUx0KGkudHlwZSkmJmgucHVzaChuZXcgTXQocixpLCcidGV4 dC1mb250IiBkb2VzIG5vdCBzdXBwb3J0IGlkZW50aXR5IGZ1bmN0aW9ucycp KSksaC5jb25jYXQoUXIoe2tleTp0LmtleSx2YWx1ZTppLHZhbHVlU3BlYzp1 LHN0eWxlOm4sc3R5bGVTcGVjOmEsZXhwcmVzc2lvbkNvbnRleHQ6InByb3Bl cnR5Iixwcm9wZXJ0eVR5cGU6ZSxwcm9wZXJ0eUtleTpvfSkpfWZ1bmN0aW9u IEdyKHQpe3JldHVybiBIcih0LCJwYWludCIpfWZ1bmN0aW9uIFlyKHQpe3Jl dHVybiBIcih0LCJsYXlvdXQiKX1mdW5jdGlvbiBXcih0KXt2YXIgZT1bXSxy PXQudmFsdWUsbj10LmtleSxhPXQuc3R5bGUsaT10LnN0eWxlU3BlYztyLnR5 cGV8fHIucmVmfHxlLnB1c2gobmV3IE10KG4sciwnZWl0aGVyICJ0eXBlIiBv ciAicmVmIiBpcyByZXF1aXJlZCcpKTt2YXIgbyxzPUx0KHIudHlwZSksbD1M dChyLnJlZik7aWYoci5pZClmb3IodmFyIGM9THQoci5pZCksdT0wO3U8dC5h cnJheUluZGV4O3UrKyl7dmFyIGg9YS5sYXllcnNbdV07THQoaC5pZCk9PT1j JiZlLnB1c2gobmV3IE10KG4sci5pZCwnZHVwbGljYXRlIGxheWVyIGlkICIn K3IuaWQrJyIsIHByZXZpb3VzbHkgdXNlZCBhdCBsaW5lICcraC5pZC5fX2xp bmVfXykpfWlmKCJyZWYiaW4gcilbInR5cGUiLCJzb3VyY2UiLCJzb3VyY2Ut bGF5ZXIiLCJmaWx0ZXIiLCJsYXlvdXQiXS5mb3JFYWNoKGZ1bmN0aW9uKHQp e3QgaW4gciYmZS5wdXNoKG5ldyBNdChuLHJbdF0sJyInK3QrJyIgaXMgcHJv aGliaXRlZCBmb3IgcmVmIGxheWVycycpKX0pLGEubGF5ZXJzLmZvckVhY2go ZnVuY3Rpb24odCl7THQodC5pZCk9PT1sJiYobz10KX0pLG8/by5yZWY/ZS5w dXNoKG5ldyBNdChuLHIucmVmLCJyZWYgY2Fubm90IHJlZmVyZW5jZSBhbm90 aGVyIHJlZiBsYXllciIpKTpzPUx0KG8udHlwZSk6ZS5wdXNoKG5ldyBNdChu LHIucmVmLCdyZWYgbGF5ZXIgIicrbCsnIiBub3QgZm91bmQnKSk7ZWxzZSBp ZigiYmFja2dyb3VuZCIhPT1zKWlmKHIuc291cmNlKXt2YXIgZj1hLnNvdXJj ZXMmJmEuc291cmNlc1tyLnNvdXJjZV0scD1mJiZMdChmLnR5cGUpO2Y/InZl Y3RvciI9PT1wJiYicmFzdGVyIj09PXM/ZS5wdXNoKG5ldyBNdChuLHIuc291 cmNlLCdsYXllciAiJytyLmlkKyciIHJlcXVpcmVzIGEgcmFzdGVyIHNvdXJj ZScpKToicmFzdGVyIj09PXAmJiJyYXN0ZXIiIT09cz9lLnB1c2gobmV3IE10 KG4sci5zb3VyY2UsJ2xheWVyICInK3IuaWQrJyIgcmVxdWlyZXMgYSB2ZWN0 b3Igc291cmNlJykpOiJ2ZWN0b3IiIT09cHx8clsic291cmNlLWxheWVyIl0/ InJhc3Rlci1kZW0iPT09cCYmImhpbGxzaGFkZSIhPT1zP2UucHVzaChuZXcg TXQobixyLnNvdXJjZSwicmFzdGVyLWRlbSBzb3VyY2UgY2FuIG9ubHkgYmUg dXNlZCB3aXRoIGxheWVyIHR5cGUgJ2hpbGxzaGFkZScuIikpOiJsaW5lIiE9 PXN8fCFyLnBhaW50fHwhci5wYWludFsibGluZS1ncmFkaWVudCJdfHwiZ2Vv anNvbiI9PT1wJiZmLmxpbmVNZXRyaWNzfHxlLnB1c2gobmV3IE10KG4sciwn bGF5ZXIgIicrci5pZCsnIiBzcGVjaWZpZXMgYSBsaW5lLWdyYWRpZW50LCB3 aGljaCByZXF1aXJlcyBhIEdlb0pTT04gc291cmNlIHdpdGggYGxpbmVNZXRy aWNzYCBlbmFibGVkLicpKTplLnB1c2gobmV3IE10KG4sciwnbGF5ZXIgIicr ci5pZCsnIiBtdXN0IHNwZWNpZnkgYSAic291cmNlLWxheWVyIicpKTplLnB1 c2gobmV3IE10KG4sci5zb3VyY2UsJ3NvdXJjZSAiJytyLnNvdXJjZSsnIiBu b3QgZm91bmQnKSl9ZWxzZSBlLnB1c2gobmV3IE10KG4sciwnbWlzc2luZyBy ZXF1aXJlZCBwcm9wZXJ0eSAic291cmNlIicpKTtyZXR1cm4gZT1lLmNvbmNh dChFcih7a2V5Om4sdmFsdWU6cix2YWx1ZVNwZWM6aS5sYXllcixzdHlsZTp0 LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlYyxvYmplY3RFbGVtZW50VmFs aWRhdG9yczp7IioiOmZ1bmN0aW9uKCl7cmV0dXJuW119LHR5cGU6ZnVuY3Rp b24oKXtyZXR1cm4gUXIoe2tleTpuKyIudHlwZSIsdmFsdWU6ci50eXBlLHZh bHVlU3BlYzppLmxheWVyLnR5cGUsc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6 dC5zdHlsZVNwZWMsb2JqZWN0OnIsb2JqZWN0S2V5OiJ0eXBlIn0pfSxmaWx0 ZXI6cXIsbGF5b3V0OmZ1bmN0aW9uKHQpe3JldHVybiBFcih7bGF5ZXI6cixr ZXk6dC5rZXksdmFsdWU6dC52YWx1ZSxzdHlsZTp0LnN0eWxlLHN0eWxlU3Bl Yzp0LnN0eWxlU3BlYyxvYmplY3RFbGVtZW50VmFsaWRhdG9yczp7IioiOmZ1 bmN0aW9uKHQpe3JldHVybiBZcihTdCh7bGF5ZXJUeXBlOnN9LHQpKX19fSl9 LHBhaW50OmZ1bmN0aW9uKHQpe3JldHVybiBFcih7bGF5ZXI6cixrZXk6dC5r ZXksdmFsdWU6dC52YWx1ZSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0 eWxlU3BlYyxvYmplY3RFbGVtZW50VmFsaWRhdG9yczp7IioiOmZ1bmN0aW9u KHQpe3JldHVybiBHcihTdCh7bGF5ZXJUeXBlOnN9LHQpKX19fSl9fX0pKX1m dW5jdGlvbiBYcih0KXt2YXIgZT10LnZhbHVlLHI9dC5rZXksbj10LnN0eWxl U3BlYyxhPXQuc3R5bGU7aWYoIWUudHlwZSlyZXR1cm5bbmV3IE10KHIsZSwn InR5cGUiIGlzIHJlcXVpcmVkJyldO3ZhciBpLG89THQoZS50eXBlKTtzd2l0 Y2gobyl7Y2FzZSJ2ZWN0b3IiOmNhc2UicmFzdGVyIjpjYXNlInJhc3Rlci1k ZW0iOnJldHVybiBFcih7a2V5OnIsdmFsdWU6ZSx2YWx1ZVNwZWM6blsic291 cmNlXyIrby5yZXBsYWNlKCItIiwiXyIpXSxzdHlsZTp0LnN0eWxlLHN0eWxl U3BlYzpufSk7Y2FzZSJnZW9qc29uIjppZihpPUVyKHtrZXk6cix2YWx1ZTpl LHZhbHVlU3BlYzpuLnNvdXJjZV9nZW9qc29uLHN0eWxlOmEsc3R5bGVTcGVj Om59KSxlLmNsdXN0ZXIpZm9yKHZhciBzIGluIGUuY2x1c3RlclByb3BlcnRp ZXMpe3ZhciBsPWUuY2x1c3RlclByb3BlcnRpZXNbc10sYz1sWzBdLHU9bFsx XSxoPSJzdHJpbmciPT10eXBlb2YgYz9bYyxbImFjY3VtdWxhdGVkIl0sWyJn ZXQiLHNdXTpjO2kucHVzaC5hcHBseShpLE9yKHtrZXk6cisiLiIrcysiLm1h cCIsdmFsdWU6dSxleHByZXNzaW9uQ29udGV4dDoiY2x1c3Rlci1tYXAifSkp LGkucHVzaC5hcHBseShpLE9yKHtrZXk6cisiLiIrcysiLnJlZHVjZSIsdmFs dWU6aCxleHByZXNzaW9uQ29udGV4dDoiY2x1c3Rlci1yZWR1Y2UifSkpfXJl dHVybiBpO2Nhc2UidmlkZW8iOnJldHVybiBFcih7a2V5OnIsdmFsdWU6ZSx2 YWx1ZVNwZWM6bi5zb3VyY2VfdmlkZW8sc3R5bGU6YSxzdHlsZVNwZWM6bn0p O2Nhc2UiaW1hZ2UiOnJldHVybiBFcih7a2V5OnIsdmFsdWU6ZSx2YWx1ZVNw ZWM6bi5zb3VyY2VfaW1hZ2Usc3R5bGU6YSxzdHlsZVNwZWM6bn0pO2Nhc2Ui Y2FudmFzIjpyZXR1cm5bbmV3IE10KHIsbnVsbCwiUGxlYXNlIHVzZSBydW50 aW1lIEFQSXMgdG8gYWRkIGNhbnZhcyBzb3VyY2VzLCByYXRoZXIgdGhhbiBp bmNsdWRpbmcgdGhlbSBpbiBzdHlsZXNoZWV0cy4iLCJzb3VyY2UuY2FudmFz IildO2RlZmF1bHQ6cmV0dXJuIHpyKHtrZXk6cisiLnR5cGUiLHZhbHVlOmUu dHlwZSx2YWx1ZVNwZWM6e3ZhbHVlczpbInZlY3RvciIsInJhc3RlciIsInJh c3Rlci1kZW0iLCJnZW9qc29uIiwidmlkZW8iLCJpbWFnZSJdfSxzdHlsZTph LHN0eWxlU3BlYzpufSl9fWZ1bmN0aW9uIFpyKHQpe3ZhciBlPXQudmFsdWUs cj10LnN0eWxlU3BlYyxuPXIubGlnaHQsYT10LnN0eWxlLGk9W10sbz1wcihl KTtpZih2b2lkIDA9PT1lKXJldHVybiBpO2lmKCJvYmplY3QiIT09bylyZXR1 cm4gaS5jb25jYXQoW25ldyBNdCgibGlnaHQiLGUsIm9iamVjdCBleHBlY3Rl ZCwgIitvKyIgZm91bmQiKV0pO2Zvcih2YXIgcyBpbiBlKXt2YXIgbD1zLm1h dGNoKC9eKC4qKS10cmFuc2l0aW9uJC8pO2k9bCYmbltsWzFdXSYmbltsWzFd XS50cmFuc2l0aW9uP2kuY29uY2F0KFFyKHtrZXk6cyx2YWx1ZTplW3NdLHZh bHVlU3BlYzpyLnRyYW5zaXRpb24sc3R5bGU6YSxzdHlsZVNwZWM6cn0pKTpu W3NdP2kuY29uY2F0KFFyKHtrZXk6cyx2YWx1ZTplW3NdLHZhbHVlU3BlYzpu W3NdLHN0eWxlOmEsc3R5bGVTcGVjOnJ9KSk6aS5jb25jYXQoW25ldyBNdChz LGVbc10sJ3Vua25vd24gcHJvcGVydHkgIicrcysnIicpXSl9cmV0dXJuIGl9 ZnVuY3Rpb24gSnIodCl7dmFyIGU9dC52YWx1ZSxyPXQua2V5LG49cHIoZSk7 cmV0dXJuInN0cmluZyIhPT1uP1tuZXcgTXQocixlLCJzdHJpbmcgZXhwZWN0 ZWQsICIrbisiIGZvdW5kIildOltdfXZhciBLcj17IioiOmZ1bmN0aW9uKCl7 cmV0dXJuW119LGFycmF5OkxyLGJvb2xlYW46ZnVuY3Rpb24odCl7dmFyIGU9 dC52YWx1ZSxyPXQua2V5LG49cHIoZSk7cmV0dXJuImJvb2xlYW4iIT09bj9b bmV3IE10KHIsZSwiYm9vbGVhbiBleHBlY3RlZCwgIituKyIgZm91bmQiKV06 W119LG51bWJlcjpDcixjb2xvcjpmdW5jdGlvbih0KXt2YXIgZT10LmtleSxy PXQudmFsdWUsbj1wcihyKTtyZXR1cm4ic3RyaW5nIiE9PW4/W25ldyBNdChl LHIsImNvbG9yIGV4cGVjdGVkLCAiK24rIiBmb3VuZCIpXTpudWxsPT09WXQo cik/W25ldyBNdChlLHIsJ2NvbG9yIGV4cGVjdGVkLCAiJytyKyciIGZvdW5k JyldOltdfSxjb25zdGFudHM6QXQsZW51bTp6cixmaWx0ZXI6cXIsZnVuY3Rp b246UHIsbGF5ZXI6V3Isb2JqZWN0OkVyLHNvdXJjZTpYcixsaWdodDpacixz dHJpbmc6SnIsZm9ybWF0dGVkOmZ1bmN0aW9uKHQpe3JldHVybiAwPT09SnIo dCkubGVuZ3RoP1tdOk9yKHQpfX07ZnVuY3Rpb24gUXIodCl7dmFyIGU9dC52 YWx1ZSxyPXQudmFsdWVTcGVjLG49dC5zdHlsZVNwZWM7cmV0dXJuIHIuZXhw cmVzc2lvbiYmZHIoTHQoZSkpP1ByKHQpOnIuZXhwcmVzc2lvbiYmd3IoQ3Qo ZSkpP09yKHQpOnIudHlwZSYmS3Jbci50eXBlXT9LcltyLnR5cGVdKHQpOkVy KFN0KHt9LHQse3ZhbHVlU3BlYzpyLnR5cGU/bltyLnR5cGVdOnJ9KSl9ZnVu Y3Rpb24gJHIodCl7dmFyIGU9dC52YWx1ZSxyPXQua2V5LG49SnIodCk7cmV0 dXJuIG4ubGVuZ3RoP246KC0xPT09ZS5pbmRleE9mKCJ7Zm9udHN0YWNrfSIp JiZuLnB1c2gobmV3IE10KHIsZSwnImdseXBocyIgdXJsIG11c3QgaW5jbHVk ZSBhICJ7Zm9udHN0YWNrfSIgdG9rZW4nKSksLTE9PT1lLmluZGV4T2YoInty YW5nZX0iKSYmbi5wdXNoKG5ldyBNdChyLGUsJyJnbHlwaHMiIHVybCBtdXN0 IGluY2x1ZGUgYSAie3JhbmdlfSIgdG9rZW4nKSksbil9ZnVuY3Rpb24gdG4o dCxlKXtlPWV8fFR0O3ZhciByPVtdO3JldHVybiByPXIuY29uY2F0KFFyKHtr ZXk6IiIsdmFsdWU6dCx2YWx1ZVNwZWM6ZS4kcm9vdCxzdHlsZVNwZWM6ZSxz dHlsZTp0LG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOntnbHlwaHM6JHIsIioi OmZ1bmN0aW9uKCl7cmV0dXJuW119fX0pKSx0LmNvbnN0YW50cyYmKHI9ci5j b25jYXQoQXQoe2tleToiY29uc3RhbnRzIix2YWx1ZTp0LmNvbnN0YW50cyxz dHlsZTp0LHN0eWxlU3BlYzplfSkpKSxlbihyKX1mdW5jdGlvbiBlbih0KXty ZXR1cm5bXS5jb25jYXQodCkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0 LmxpbmUtZS5saW5lfSl9ZnVuY3Rpb24gcm4odCl7cmV0dXJuIGZ1bmN0aW9u KCl7Zm9yKHZhciBlPVtdLHI9YXJndW1lbnRzLmxlbmd0aDtyLS07KWVbcl09 YXJndW1lbnRzW3JdO3JldHVybiBlbih0LmFwcGx5KHRoaXMsZSkpfX10bi5z b3VyY2U9cm4oWHIpLHRuLmxpZ2h0PXJuKFpyKSx0bi5sYXllcj1ybihXciks dG4uZmlsdGVyPXJuKHFyKSx0bi5wYWludFByb3BlcnR5PXJuKEdyKSx0bi5s YXlvdXRQcm9wZXJ0eT1ybihZcik7dmFyIG5uPXRuLGFuPW5uLmxpZ2h0LG9u PW5uLnBhaW50UHJvcGVydHksc249bm4ubGF5b3V0UHJvcGVydHk7ZnVuY3Rp b24gbG4odCxlKXt2YXIgcj0hMTtpZihlJiZlLmxlbmd0aClmb3IodmFyIG49 MCxhPWU7bjxhLmxlbmd0aDtuKz0xKXt2YXIgaT1hW25dO3QuZmlyZShuZXcg d3QobmV3IEVycm9yKGkubWVzc2FnZSkpKSxyPSEwfXJldHVybiByfXZhciBj bj1obix1bj0zO2Z1bmN0aW9uIGhuKHQsZSxyKXt2YXIgbj10aGlzLmNlbGxz PVtdO2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil7dGhpcy5hcnJheUJ1 ZmZlcj10O3ZhciBhPW5ldyBJbnQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIp O3Q9YVswXSxlPWFbMV0scj1hWzJdLHRoaXMuZD1lKzIqcjtmb3IodmFyIGk9 MDtpPHRoaXMuZCp0aGlzLmQ7aSsrKXt2YXIgbz1hW3VuK2ldLHM9YVt1bitp KzFdO24ucHVzaChvPT09cz9udWxsOmEuc3ViYXJyYXkobyxzKSl9dmFyIGw9 YVt1bituLmxlbmd0aF0sYz1hW3VuK24ubGVuZ3RoKzFdO3RoaXMua2V5cz1h LnN1YmFycmF5KGwsYyksdGhpcy5iYm94ZXM9YS5zdWJhcnJheShjKSx0aGlz Lmluc2VydD10aGlzLl9pbnNlcnRSZWFkb25seX1lbHNle3RoaXMuZD1lKzIq cjtmb3IodmFyIHU9MDt1PHRoaXMuZCp0aGlzLmQ7dSsrKW4ucHVzaChbXSk7 dGhpcy5rZXlzPVtdLHRoaXMuYmJveGVzPVtdfXRoaXMubj1lLHRoaXMuZXh0 ZW50PXQsdGhpcy5wYWRkaW5nPXIsdGhpcy5zY2FsZT1lL3QsdGhpcy51aWQ9 MDt2YXIgaD1yL2UqdDt0aGlzLm1pbj0taCx0aGlzLm1heD10K2h9aG4ucHJv dG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUscixuLGEpe3RoaXMuX2ZvckVh Y2hDZWxsKGUscixuLGEsdGhpcy5faW5zZXJ0Q2VsbCx0aGlzLnVpZCsrKSx0 aGlzLmtleXMucHVzaCh0KSx0aGlzLmJib3hlcy5wdXNoKGUpLHRoaXMuYmJv eGVzLnB1c2gociksdGhpcy5iYm94ZXMucHVzaChuKSx0aGlzLmJib3hlcy5w dXNoKGEpfSxobi5wcm90b3R5cGUuX2luc2VydFJlYWRvbmx5PWZ1bmN0aW9u KCl7dGhyb3ciQ2Fubm90IGluc2VydCBpbnRvIGEgR3JpZEluZGV4IGNyZWF0 ZWQgZnJvbSBhbiBBcnJheUJ1ZmZlci4ifSxobi5wcm90b3R5cGUuX2luc2Vy dENlbGw9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3RoaXMuY2VsbHNbYV0ucHVz aChpKX0saG4ucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKHQsZSxyLG4sYSl7 dmFyIGk9dGhpcy5taW4sbz10aGlzLm1heDtpZih0PD1pJiZlPD1pJiZvPD1y JiZvPD1uJiYhYSlyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo dGhpcy5rZXlzKTt2YXIgcz1bXTtyZXR1cm4gdGhpcy5fZm9yRWFjaENlbGwo dCxlLHIsbix0aGlzLl9xdWVyeUNlbGwscyx7fSxhKSxzfSxobi5wcm90b3R5 cGUuX3F1ZXJ5Q2VsbD1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMpe3ZhciBs PXRoaXMuY2VsbHNbYV07aWYobnVsbCE9PWwpZm9yKHZhciBjPXRoaXMua2V5 cyx1PXRoaXMuYmJveGVzLGg9MDtoPGwubGVuZ3RoO2grKyl7dmFyIGY9bFto XTtpZih2b2lkIDA9PT1vW2ZdKXt2YXIgcD00KmY7KHM/cyh1W3ArMF0sdVtw KzFdLHVbcCsyXSx1W3ArM10pOnQ8PXVbcCsyXSYmZTw9dVtwKzNdJiZyPj11 W3ArMF0mJm4+PXVbcCsxXSk/KG9bZl09ITAsaS5wdXNoKGNbZl0pKTpvW2Zd PSExfX19LGhuLnByb3RvdHlwZS5fZm9yRWFjaENlbGw9ZnVuY3Rpb24odCxl LHIsbixhLGksbyxzKXtmb3IodmFyIGw9dGhpcy5fY29udmVydFRvQ2VsbENv b3JkKHQpLGM9dGhpcy5fY29udmVydFRvQ2VsbENvb3JkKGUpLHU9dGhpcy5f Y29udmVydFRvQ2VsbENvb3JkKHIpLGg9dGhpcy5fY29udmVydFRvQ2VsbENv b3JkKG4pLGY9bDtmPD11O2YrKylmb3IodmFyIHA9YztwPD1oO3ArKyl7dmFy IGQ9dGhpcy5kKnArZjtpZigoIXN8fHModGhpcy5fY29udmVydEZyb21DZWxs Q29vcmQoZiksdGhpcy5fY29udmVydEZyb21DZWxsQ29vcmQocCksdGhpcy5f Y29udmVydEZyb21DZWxsQ29vcmQoZisxKSx0aGlzLl9jb252ZXJ0RnJvbUNl bGxDb29yZChwKzEpKSkmJmEuY2FsbCh0aGlzLHQsZSxyLG4sZCxpLG8scykp cmV0dXJufX0saG4ucHJvdG90eXBlLl9jb252ZXJ0RnJvbUNlbGxDb29yZD1m dW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnBhZGRpbmcpL3RoaXMuc2NhbGV9 LGhuLnByb3RvdHlwZS5fY29udmVydFRvQ2VsbENvb3JkPWZ1bmN0aW9uKHQp e3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKHRoaXMuZC0xLE1hdGguZmxv b3IodCp0aGlzLnNjYWxlKSt0aGlzLnBhZGRpbmcpKX0saG4ucHJvdG90eXBl LnRvQXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtpZih0aGlzLmFycmF5QnVmZmVy KXJldHVybiB0aGlzLmFycmF5QnVmZmVyO2Zvcih2YXIgdD10aGlzLmNlbGxz LGU9dW4rdGhpcy5jZWxscy5sZW5ndGgrMSsxLHI9MCxuPTA7bjx0aGlzLmNl bGxzLmxlbmd0aDtuKyspcis9dGhpcy5jZWxsc1tuXS5sZW5ndGg7dmFyIGE9 bmV3IEludDMyQXJyYXkoZStyK3RoaXMua2V5cy5sZW5ndGgrdGhpcy5iYm94 ZXMubGVuZ3RoKTthWzBdPXRoaXMuZXh0ZW50LGFbMV09dGhpcy5uLGFbMl09 dGhpcy5wYWRkaW5nO2Zvcih2YXIgaT1lLG89MDtvPHQubGVuZ3RoO28rKyl7 dmFyIHM9dFtvXTthW3VuK29dPWksYS5zZXQocyxpKSxpKz1zLmxlbmd0aH1y ZXR1cm4gYVt1bit0Lmxlbmd0aF09aSxhLnNldCh0aGlzLmtleXMsaSksaSs9 dGhpcy5rZXlzLmxlbmd0aCxhW3VuK3QubGVuZ3RoKzFdPWksYS5zZXQodGhp cy5iYm94ZXMsaSksaSs9dGhpcy5iYm94ZXMubGVuZ3RoLGEuYnVmZmVyfTt2 YXIgZm49c2VsZi5JbWFnZURhdGEscG49e307ZnVuY3Rpb24gZG4odCxlLHIp e3ZvaWQgMD09PXImJihyPXt9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwi X2NsYXNzUmVnaXN0cnlLZXkiLHt2YWx1ZTp0LHdyaXRlYWJsZTohMX0pLHBu W3RdPXtrbGFzczplLG9taXQ6ci5vbWl0fHxbXSxzaGFsbG93OnIuc2hhbGxv d3x8W119fWZvcih2YXIgZ24gaW4gZG4oIk9iamVjdCIsT2JqZWN0KSxjbi5z ZXJpYWxpemU9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnRvQXJyYXlCdWZmZXIo KTtyZXR1cm4gZSYmZS5wdXNoKHIpLHtidWZmZXI6cn19LGNuLmRlc2VyaWFs aXplPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgY24odC5idWZmZXIpfSxkbigi R3JpZCIsY24pLGRuKCJDb2xvciIsV3QpLGRuKCJFcnJvciIsRXJyb3IpLGRu KCJTdHlsZVByb3BlcnR5RnVuY3Rpb24iLFNyKSxkbigiU3R5bGVFeHByZXNz aW9uIixfcix7b21pdDpbIl9ldmFsdWF0b3IiXX0pLGRuKCJab29tRGVwZW5k ZW50RXhwcmVzc2lvbiIsTXIpLGRuKCJab29tQ29uc3RhbnRFeHByZXNzaW9u IixUciksZG4oIkNvbXBvdW5kRXhwcmVzc2lvbiIsY2Use29taXQ6WyJfZXZh bHVhdGUiXX0pLG5yKW5yW2duXS5fY2xhc3NSZWdpc3RyeUtleXx8ZG4oIkV4 cHJlc3Npb25fIitnbixucltnbl0pO2Z1bmN0aW9uIHZuKHQsZSl7aWYobnVs bD09dHx8ImJvb2xlYW4iPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0 fHwic3RyaW5nIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBCb29sZWFufHx0 IGluc3RhbmNlb2YgTnVtYmVyfHx0IGluc3RhbmNlb2YgU3RyaW5nfHx0IGlu c3RhbmNlb2YgRGF0ZXx8dCBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gdDtp Zih0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIGUmJmUucHVzaCh0 KSx0O2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KSl7dmFyIHI9dDtyZXR1cm4g ZSYmZS5wdXNoKHIuYnVmZmVyKSxyfWlmKHQgaW5zdGFuY2VvZiBmbilyZXR1 cm4gZSYmZS5wdXNoKHQuZGF0YS5idWZmZXIpLHQ7aWYoQXJyYXkuaXNBcnJh eSh0KSl7Zm9yKHZhciBuPVtdLGE9MCxpPXQ7YTxpLmxlbmd0aDthKz0xKXt2 YXIgbz1pW2FdO24ucHVzaCh2bihvLGUpKX1yZXR1cm4gbn1pZigib2JqZWN0 Ij09dHlwZW9mIHQpe3ZhciBzPXQuY29uc3RydWN0b3IsbD1zLl9jbGFzc1Jl Z2lzdHJ5S2V5O2lmKCFsKXRocm93IG5ldyBFcnJvcigiY2FuJ3Qgc2VyaWFs aXplIG9iamVjdCBvZiB1bnJlZ2lzdGVyZWQgY2xhc3MiKTt2YXIgYz1zLnNl cmlhbGl6ZT9zLnNlcmlhbGl6ZSh0LGUpOnt9O2lmKCFzLnNlcmlhbGl6ZSl7 Zm9yKHZhciB1IGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eSh1KSYmIShwblts XS5vbWl0LmluZGV4T2YodSk+PTApKXt2YXIgaD10W3VdO2NbdV09cG5bbF0u c2hhbGxvdy5pbmRleE9mKHUpPj0wP2g6dm4oaCxlKX10IGluc3RhbmNlb2Yg RXJyb3ImJihjLm1lc3NhZ2U9dC5tZXNzYWdlKX1pZihjLiRuYW1lKXRocm93 IG5ldyBFcnJvcigiJG5hbWUgcHJvcGVydHkgaXMgcmVzZXJ2ZWQgZm9yIHdv cmtlciBzZXJpYWxpemF0aW9uIGxvZ2ljLiIpO3JldHVybiJPYmplY3QiIT09 bCYmKGMuJG5hbWU9bCksY310aHJvdyBuZXcgRXJyb3IoImNhbid0IHNlcmlh bGl6ZSBvYmplY3Qgb2YgdHlwZSAiK3R5cGVvZiB0KX1mdW5jdGlvbiBtbih0 KXtpZihudWxsPT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwibnVtYmVyIj09 dHlwZW9mIHR8fCJzdHJpbmciPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIEJv b2xlYW58fHQgaW5zdGFuY2VvZiBOdW1iZXJ8fHQgaW5zdGFuY2VvZiBTdHJp bmd8fHQgaW5zdGFuY2VvZiBEYXRlfHx0IGluc3RhbmNlb2YgUmVnRXhwfHx0 IGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fEFycmF5QnVmZmVyLmlzVmlldyh0 KXx8dCBpbnN0YW5jZW9mIGZuKXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXko dCkpcmV0dXJuIHQubWFwKG1uKTtpZigib2JqZWN0Ij09dHlwZW9mIHQpe3Zh ciBlPXQuJG5hbWV8fCJPYmplY3QiLHI9cG5bZV0ua2xhc3M7aWYoIXIpdGhy b3cgbmV3IEVycm9yKCJjYW4ndCBkZXNlcmlhbGl6ZSB1bnJlZ2lzdGVyZWQg Y2xhc3MgIitlKTtpZihyLmRlc2VyaWFsaXplKXJldHVybiByLmRlc2VyaWFs aXplKHQpO2Zvcih2YXIgbj1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSxh PTAsaT1PYmplY3Qua2V5cyh0KTthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlb YV07aWYoIiRuYW1lIiE9PW8pe3ZhciBzPXRbb107bltvXT1wbltlXS5zaGFs bG93LmluZGV4T2Yobyk+PTA/czptbihzKX19cmV0dXJuIG59dGhyb3cgbmV3 IEVycm9yKCJjYW4ndCBkZXNlcmlhbGl6ZSBvYmplY3Qgb2YgdHlwZSAiK3R5 cGVvZiB0KX12YXIgeW49ZnVuY3Rpb24oKXt0aGlzLmZpcnN0PSEwfTt5bi5w cm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5mbG9v cih0KTtyZXR1cm4gdGhpcy5maXJzdD8odGhpcy5maXJzdD0hMSx0aGlzLmxh c3RJbnRlZ2VyWm9vbT1yLHRoaXMubGFzdEludGVnZXJab29tVGltZT0wLHRo aXMubGFzdFpvb209dCx0aGlzLmxhc3RGbG9vclpvb209ciwhMCk6KHRoaXMu bGFzdEZsb29yWm9vbT5yPyh0aGlzLmxhc3RJbnRlZ2VyWm9vbT1yKzEsdGhp cy5sYXN0SW50ZWdlclpvb21UaW1lPWUpOnRoaXMubGFzdEZsb29yWm9vbTxy JiYodGhpcy5sYXN0SW50ZWdlclpvb209cix0aGlzLmxhc3RJbnRlZ2VyWm9v bVRpbWU9ZSksdCE9PXRoaXMubGFzdFpvb20mJih0aGlzLmxhc3Rab29tPXQs dGhpcy5sYXN0Rmxvb3Jab29tPXIsITApKX07dmFyIHhuPXsiTGF0aW4tMSBT dXBwbGVtZW50IjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTI4JiZ0PD0yNTV9 LEFyYWJpYzpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTUzNiYmdDw9MTc5MX0s IkFyYWJpYyBTdXBwbGVtZW50IjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTg3 MiYmdDw9MTkxOX0sIkFyYWJpYyBFeHRlbmRlZC1BIjpmdW5jdGlvbih0KXty ZXR1cm4gdD49MjIwOCYmdDw9MjMwM30sIkhhbmd1bCBKYW1vIjpmdW5jdGlv bih0KXtyZXR1cm4gdD49NDM1MiYmdDw9NDYwN30sIlVuaWZpZWQgQ2FuYWRp YW4gQWJvcmlnaW5hbCBTeWxsYWJpY3MiOmZ1bmN0aW9uKHQpe3JldHVybiB0 Pj01MTIwJiZ0PD01NzU5fSxLaG1lcjpmdW5jdGlvbih0KXtyZXR1cm4gdD49 NjAxNiYmdDw9NjE0M30sIlVuaWZpZWQgQ2FuYWRpYW4gQWJvcmlnaW5hbCBT eWxsYWJpY3MgRXh0ZW5kZWQiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj02MzIw JiZ0PD02Mzk5fSwiR2VuZXJhbCBQdW5jdHVhdGlvbiI6ZnVuY3Rpb24odCl7 cmV0dXJuIHQ+PTgxOTImJnQ8PTgzMDN9LCJMZXR0ZXJsaWtlIFN5bWJvbHMi OmZ1bmN0aW9uKHQpe3JldHVybiB0Pj04NDQ4JiZ0PD04NTI3fSwiTnVtYmVy IEZvcm1zIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49ODUyOCYmdDw9ODU5MX0s Ik1pc2NlbGxhbmVvdXMgVGVjaG5pY2FsIjpmdW5jdGlvbih0KXtyZXR1cm4g dD49ODk2MCYmdDw9OTIxNX0sIkNvbnRyb2wgUGljdHVyZXMiOmZ1bmN0aW9u KHQpe3JldHVybiB0Pj05MjE2JiZ0PD05Mjc5fSwiT3B0aWNhbCBDaGFyYWN0 ZXIgUmVjb2duaXRpb24iOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj05MjgwJiZ0 PD05MzExfSwiRW5jbG9zZWQgQWxwaGFudW1lcmljcyI6ZnVuY3Rpb24odCl7 cmV0dXJuIHQ+PTkzMTImJnQ8PTk0NzF9LCJHZW9tZXRyaWMgU2hhcGVzIjpm dW5jdGlvbih0KXtyZXR1cm4gdD49OTYzMiYmdDw9OTcyN30sIk1pc2NlbGxh bmVvdXMgU3ltYm9scyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTk3MjgmJnQ8 PTk5ODN9LCJNaXNjZWxsYW5lb3VzIFN5bWJvbHMgYW5kIEFycm93cyI6ZnVu Y3Rpb24odCl7cmV0dXJuIHQ+PTExMDA4JiZ0PD0xMTI2M30sIkNKSyBSYWRp Y2FscyBTdXBwbGVtZW50IjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTE5MDQm JnQ8PTEyMDMxfSwiS2FuZ3hpIFJhZGljYWxzIjpmdW5jdGlvbih0KXtyZXR1 cm4gdD49MTIwMzImJnQ8PTEyMjU1fSwiSWRlb2dyYXBoaWMgRGVzY3JpcHRp b24gQ2hhcmFjdGVycyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEyMjcyJiZ0 PD0xMjI4N30sIkNKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbiI6ZnVuY3Rp b24odCl7cmV0dXJuIHQ+PTEyMjg4JiZ0PD0xMjM1MX0sSGlyYWdhbmE6ZnVu Y3Rpb24odCl7cmV0dXJuIHQ+PTEyMzUyJiZ0PD0xMjQ0N30sS2F0YWthbmE6 ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEyNDQ4JiZ0PD0xMjU0M30sQm9wb21v Zm86ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEyNTQ0JiZ0PD0xMjU5MX0sIkhh bmd1bCBDb21wYXRpYmlsaXR5IEphbW8iOmZ1bmN0aW9uKHQpe3JldHVybiB0 Pj0xMjU5MiYmdDw9MTI2ODd9LEthbmJ1bjpmdW5jdGlvbih0KXtyZXR1cm4g dD49MTI2ODgmJnQ8PTEyNzAzfSwiQm9wb21vZm8gRXh0ZW5kZWQiOmZ1bmN0 aW9uKHQpe3JldHVybiB0Pj0xMjcwNCYmdDw9MTI3MzV9LCJDSksgU3Ryb2tl cyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEyNzM2JiZ0PD0xMjc4M30sIkth dGFrYW5hIFBob25ldGljIEV4dGVuc2lvbnMiOmZ1bmN0aW9uKHQpe3JldHVy biB0Pj0xMjc4NCYmdDw9MTI3OTl9LCJFbmNsb3NlZCBDSksgTGV0dGVycyBh bmQgTW9udGhzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTI4MDAmJnQ8PTEz MDU1fSwiQ0pLIENvbXBhdGliaWxpdHkiOmZ1bmN0aW9uKHQpe3JldHVybiB0 Pj0xMzA1NiYmdDw9MTMzMTF9LCJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4 dGVuc2lvbiBBIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTMzMTImJnQ8PTE5 OTAzfSwiWWlqaW5nIEhleGFncmFtIFN5bWJvbHMiOmZ1bmN0aW9uKHQpe3Jl dHVybiB0Pj0xOTkwNCYmdDw9MTk5Njd9LCJDSksgVW5pZmllZCBJZGVvZ3Jh cGhzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTk5NjgmJnQ8PTQwOTU5fSwi WWkgU3lsbGFibGVzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49NDA5NjAmJnQ8 PTQyMTI3fSwiWWkgUmFkaWNhbHMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj00 MjEyOCYmdDw9NDIxOTF9LCJIYW5ndWwgSmFtbyBFeHRlbmRlZC1BIjpmdW5j dGlvbih0KXtyZXR1cm4gdD49NDMzNjAmJnQ8PTQzMzkxfSwiSGFuZ3VsIFN5 bGxhYmxlcyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTQ0MDMyJiZ0PD01NTIx NX0sIkhhbmd1bCBKYW1vIEV4dGVuZGVkLUIiOmZ1bmN0aW9uKHQpe3JldHVy biB0Pj01NTIxNiYmdDw9NTUyOTV9LCJQcml2YXRlIFVzZSBBcmVhIjpmdW5j dGlvbih0KXtyZXR1cm4gdD49NTczNDQmJnQ8PTYzNzQzfSwiQ0pLIENvbXBh dGliaWxpdHkgSWRlb2dyYXBocyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTYz NzQ0JiZ0PD02NDI1NX0sIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQSI6 ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTY0MzM2JiZ0PD02NTAyM30sIlZlcnRp Y2FsIEZvcm1zIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49NjUwNDAmJnQ8PTY1 MDU1fSwiQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMiOmZ1bmN0aW9uKHQpe3Jl dHVybiB0Pj02NTA3MiYmdDw9NjUxMDN9LCJTbWFsbCBGb3JtIFZhcmlhbnRz IjpmdW5jdGlvbih0KXtyZXR1cm4gdD49NjUxMDQmJnQ8PTY1MTM1fSwiQXJh YmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CIjpmdW5jdGlvbih0KXtyZXR1cm4g dD49NjUxMzYmJnQ8PTY1Mjc5fSwiSGFsZndpZHRoIGFuZCBGdWxsd2lkdGgg Rm9ybXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj02NTI4MCYmdDw9NjU1MTl9 fTtmdW5jdGlvbiBibih0KXtmb3IodmFyIGU9MCxyPXQ7ZTxyLmxlbmd0aDtl Kz0xKWlmKHduKHJbZV0uY2hhckNvZGVBdCgwKSkpcmV0dXJuITA7cmV0dXJu ITF9ZnVuY3Rpb24gX24odCl7cmV0dXJuISh4bi5BcmFiaWModCl8fHhuWyJB cmFiaWMgU3VwcGxlbWVudCJdKHQpfHx4blsiQXJhYmljIEV4dGVuZGVkLUEi XSh0KXx8eG5bIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQSJdKHQpfHx4 blsiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CIl0odCkpfWZ1bmN0aW9u IHduKHQpe3JldHVybiEhKDc0Nj09PXR8fDc0Nz09PXR8fCEodDw0MzUyKSYm KHhuWyJCb3BvbW9mbyBFeHRlbmRlZCJdKHQpfHx4bi5Cb3BvbW9mbyh0KXx8 eG5bIkNKSyBDb21wYXRpYmlsaXR5IEZvcm1zIl0odCkmJiEodD49NjUwOTcm JnQ8PTY1MTAzKXx8eG5bIkNKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMi XSh0KXx8eG5bIkNKSyBDb21wYXRpYmlsaXR5Il0odCl8fHhuWyJDSksgUmFk aWNhbHMgU3VwcGxlbWVudCJdKHQpfHx4blsiQ0pLIFN0cm9rZXMiXSh0KXx8 ISgheG5bIkNKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbiJdKHQpfHx0Pj0x MjI5NiYmdDw9MTIzMDV8fHQ+PTEyMzA4JiZ0PD0xMjMxOXx8MTIzMzY9PT10 KXx8eG5bIkNKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEEiXSh0 KXx8eG5bIkNKSyBVbmlmaWVkIElkZW9ncmFwaHMiXSh0KXx8eG5bIkVuY2xv c2VkIENKSyBMZXR0ZXJzIGFuZCBNb250aHMiXSh0KXx8eG5bIkhhbmd1bCBD b21wYXRpYmlsaXR5IEphbW8iXSh0KXx8eG5bIkhhbmd1bCBKYW1vIEV4dGVu ZGVkLUEiXSh0KXx8eG5bIkhhbmd1bCBKYW1vIEV4dGVuZGVkLUIiXSh0KXx8 eG5bIkhhbmd1bCBKYW1vIl0odCl8fHhuWyJIYW5ndWwgU3lsbGFibGVzIl0o dCl8fHhuLkhpcmFnYW5hKHQpfHx4blsiSWRlb2dyYXBoaWMgRGVzY3JpcHRp b24gQ2hhcmFjdGVycyJdKHQpfHx4bi5LYW5idW4odCl8fHhuWyJLYW5neGkg UmFkaWNhbHMiXSh0KXx8eG5bIkthdGFrYW5hIFBob25ldGljIEV4dGVuc2lv bnMiXSh0KXx8eG4uS2F0YWthbmEodCkmJjEyNTQwIT09dHx8ISgheG5bIkhh bGZ3aWR0aCBhbmQgRnVsbHdpZHRoIEZvcm1zIl0odCl8fDY1Mjg4PT09dHx8 NjUyODk9PT10fHw2NTI5Mz09PXR8fHQ+PTY1MzA2JiZ0PD02NTMxMHx8NjUz Mzk9PT10fHw2NTM0MT09PXR8fDY1MzQzPT09dHx8dD49NjUzNzEmJnQ8PTY1 NTAzfHw2NTUwNz09PXR8fHQ+PTY1NTEyJiZ0PD02NTUxOSl8fCEoIXhuWyJT bWFsbCBGb3JtIFZhcmlhbnRzIl0odCl8fHQ+PTY1MTEyJiZ0PD02NTExOHx8 dD49NjUxMjMmJnQ8PTY1MTI2KXx8eG5bIlVuaWZpZWQgQ2FuYWRpYW4gQWJv cmlnaW5hbCBTeWxsYWJpY3MiXSh0KXx8eG5bIlVuaWZpZWQgQ2FuYWRpYW4g QWJvcmlnaW5hbCBTeWxsYWJpY3MgRXh0ZW5kZWQiXSh0KXx8eG5bIlZlcnRp Y2FsIEZvcm1zIl0odCl8fHhuWyJZaWppbmcgSGV4YWdyYW0gU3ltYm9scyJd KHQpfHx4blsiWWkgU3lsbGFibGVzIl0odCl8fHhuWyJZaSBSYWRpY2FscyJd KHQpKSl9ZnVuY3Rpb24ga24odCl7cmV0dXJuISh3bih0KXx8ZnVuY3Rpb24o dCl7cmV0dXJuISEoeG5bIkxhdGluLTEgU3VwcGxlbWVudCJdKHQpJiYoMTY3 PT09dHx8MTY5PT09dHx8MTc0PT09dHx8MTc3PT09dHx8MTg4PT09dHx8MTg5 PT09dHx8MTkwPT09dHx8MjE1PT09dHx8MjQ3PT09dCl8fHhuWyJHZW5lcmFs IFB1bmN0dWF0aW9uIl0odCkmJig4MjE0PT09dHx8ODIyND09PXR8fDgyMjU9 PT10fHw4MjQwPT09dHx8ODI0MT09PXR8fDgyNTE9PT10fHw4MjUyPT09dHx8 ODI1OD09PXR8fDgyNjM9PT10fHw4MjY0PT09dHx8ODI2NT09PXR8fDgyNzM9 PT10KXx8eG5bIkxldHRlcmxpa2UgU3ltYm9scyJdKHQpfHx4blsiTnVtYmVy IEZvcm1zIl0odCl8fHhuWyJNaXNjZWxsYW5lb3VzIFRlY2huaWNhbCJdKHQp JiYodD49ODk2MCYmdDw9ODk2N3x8dD49ODk3MiYmdDw9ODk5MXx8dD49ODk5 NiYmdDw9OWUzfHw5MDAzPT09dHx8dD49OTA4NSYmdDw9OTExNHx8dD49OTE1 MCYmdDw9OTE2NXx8OTE2Nz09PXR8fHQ+PTkxNjkmJnQ8PTkxNzl8fHQ+PTkx ODYmJnQ8PTkyMTUpfHx4blsiQ29udHJvbCBQaWN0dXJlcyJdKHQpJiY5MjUx IT09dHx8eG5bIk9wdGljYWwgQ2hhcmFjdGVyIFJlY29nbml0aW9uIl0odCl8 fHhuWyJFbmNsb3NlZCBBbHBoYW51bWVyaWNzIl0odCl8fHhuWyJHZW9tZXRy aWMgU2hhcGVzIl0odCl8fHhuWyJNaXNjZWxsYW5lb3VzIFN5bWJvbHMiXSh0 KSYmISh0Pj05NzU0JiZ0PD05NzU5KXx8eG5bIk1pc2NlbGxhbmVvdXMgU3lt Ym9scyBhbmQgQXJyb3dzIl0odCkmJih0Pj0xMTAyNiYmdDw9MTEwNTV8fHQ+ PTExMDg4JiZ0PD0xMTA5N3x8dD49MTExOTImJnQ8PTExMjQzKXx8eG5bIkNK SyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbiJdKHQpfHx4bi5LYXRha2FuYSh0 KXx8eG5bIlByaXZhdGUgVXNlIEFyZWEiXSh0KXx8eG5bIkNKSyBDb21wYXRp YmlsaXR5IEZvcm1zIl0odCl8fHhuWyJTbWFsbCBGb3JtIFZhcmlhbnRzIl0o dCl8fHhuWyJIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3JtcyJdKHQpfHw4 NzM0PT09dHx8ODc1Nj09PXR8fDg3NTc9PT10fHx0Pj05OTg0JiZ0PD0xMDA4 N3x8dD49MTAxMDImJnQ8PTEwMTMxfHw2NTUzMj09PXR8fDY1NTMzPT09dCl9 KHQpKX1mdW5jdGlvbiBUbih0LGUpe3JldHVybiEoIWUmJih0Pj0xNDI0JiZ0 PD0yMzAzfHx4blsiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BIl0odCl8 fHhuWyJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUIiXSh0KSl8fHQ+PTIz MDQmJnQ8PTM1ODN8fHQ+PTM4NDAmJnQ8PTQyNTV8fHhuLktobWVyKHQpKX12 YXIgTW4sQW49ITEsU249bnVsbCxFbj0hMSxMbj1uZXcga3QsQ249e2FwcGx5 QXJhYmljU2hhcGluZzpudWxsLHByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dDpu dWxsLHByb2Nlc3NTdHlsZWRCaWRpcmVjdGlvbmFsVGV4dDpudWxsLGlzTG9h ZGVkOmZ1bmN0aW9uKCl7cmV0dXJuIEVufHxudWxsIT1Dbi5hcHBseUFyYWJp Y1NoYXBpbmd9fSxQbj1mdW5jdGlvbih0LGUpe3RoaXMuem9vbT10LGU/KHRo aXMubm93PWUubm93LHRoaXMuZmFkZUR1cmF0aW9uPWUuZmFkZUR1cmF0aW9u LHRoaXMuem9vbUhpc3Rvcnk9ZS56b29tSGlzdG9yeSx0aGlzLnRyYW5zaXRp b249ZS50cmFuc2l0aW9uKToodGhpcy5ub3c9MCx0aGlzLmZhZGVEdXJhdGlv bj0wLHRoaXMuem9vbUhpc3Rvcnk9bmV3IHluLHRoaXMudHJhbnNpdGlvbj17 fSl9O1BuLnByb3RvdHlwZS5pc1N1cHBvcnRlZFNjcmlwdD1mdW5jdGlvbih0 KXtyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPXQ7cjxuLmxl bmd0aDtyKz0xKWlmKCFUbihuW3JdLmNoYXJDb2RlQXQoMCksZSkpcmV0dXJu ITE7cmV0dXJuITB9KHQsQ24uaXNMb2FkZWQoKSl9LFBuLnByb3RvdHlwZS5j cm9zc0ZhZGluZ0ZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5m YWRlRHVyYXRpb24/MTpNYXRoLm1pbigodGhpcy5ub3ctdGhpcy56b29tSGlz dG9yeS5sYXN0SW50ZWdlclpvb21UaW1lKS90aGlzLmZhZGVEdXJhdGlvbiwx KX0sUG4ucHJvdG90eXBlLmdldENyb3NzZmFkZVBhcmFtZXRlcnM9ZnVuY3Rp b24oKXt2YXIgdD10aGlzLnpvb20sZT10LU1hdGguZmxvb3IodCkscj10aGlz LmNyb3NzRmFkaW5nRmFjdG9yKCk7cmV0dXJuIHQ+dGhpcy56b29tSGlzdG9y eS5sYXN0SW50ZWdlclpvb20/e2Zyb21TY2FsZToyLHRvU2NhbGU6MSx0OmUr KDEtZSkqcn06e2Zyb21TY2FsZTouNSx0b1NjYWxlOjEsdDoxLSgxLXIpKmV9 fTt2YXIgT249ZnVuY3Rpb24odCxlKXt0aGlzLnByb3BlcnR5PXQsdGhpcy52 YWx1ZT1lLHRoaXMuZXhwcmVzc2lvbj1mdW5jdGlvbih0LGUpe2lmKGRyKHQp KXJldHVybiBuZXcgU3IodCxlKTtpZih3cih0KSl7dmFyIHI9QXIodCxlKTtp ZigiZXJyb3IiPT09ci5yZXN1bHQpdGhyb3cgbmV3IEVycm9yKHIudmFsdWUu bWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleSsiOiAiK3QubWVzc2FnZX0p LmpvaW4oIiwgIikpO3JldHVybiByLnZhbHVlfXZhciBuPXQ7cmV0dXJuInN0 cmluZyI9PXR5cGVvZiB0JiYiY29sb3IiPT09ZS50eXBlJiYobj1XdC5wYXJz ZSh0KSkse2tpbmQ6ImNvbnN0YW50IixldmFsdWF0ZTpmdW5jdGlvbigpe3Jl dHVybiBufX19KHZvaWQgMD09PWU/dC5zcGVjaWZpY2F0aW9uLmRlZmF1bHQ6 ZSx0LnNwZWNpZmljYXRpb24pfTtPbi5wcm90b3R5cGUuaXNEYXRhRHJpdmVu PWZ1bmN0aW9uKCl7cmV0dXJuInNvdXJjZSI9PT10aGlzLmV4cHJlc3Npb24u a2luZHx8ImNvbXBvc2l0ZSI9PT10aGlzLmV4cHJlc3Npb24ua2luZH0sT24u cHJvdG90eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMucHJvcGVydHkucG9zc2libHlFdmFsdWF0ZSh0aGlzLHQpfTt2YXIg em49ZnVuY3Rpb24odCl7dGhpcy5wcm9wZXJ0eT10LHRoaXMudmFsdWU9bmV3 IE9uKHQsdm9pZCAwKX07em4ucHJvdG90eXBlLnRyYW5zaXRpb25lZD1mdW5j dGlvbih0LGUpe3JldHVybiBuZXcgRG4odGhpcy5wcm9wZXJ0eSx0aGlzLnZh bHVlLGUsaCh7fSx0LnRyYW5zaXRpb24sdGhpcy50cmFuc2l0aW9uKSx0Lm5v dyl9LHpuLnByb3RvdHlwZS51bnRyYW5zaXRpb25lZD1mdW5jdGlvbigpe3Jl dHVybiBuZXcgRG4odGhpcy5wcm9wZXJ0eSx0aGlzLnZhbHVlLG51bGwse30s MCl9O3ZhciBJbj1mdW5jdGlvbih0KXt0aGlzLl9wcm9wZXJ0aWVzPXQsdGhp cy5fdmFsdWVzPU9iamVjdC5jcmVhdGUodC5kZWZhdWx0VHJhbnNpdGlvbmFi bGVQcm9wZXJ0eVZhbHVlcyl9O0luLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5j dGlvbih0KXtyZXR1cm4gYih0aGlzLl92YWx1ZXNbdF0udmFsdWUudmFsdWUp fSxJbi5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt0aGlzLl92 YWx1ZXMuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLl92YWx1ZXNbdF09bmV3 IHpuKHRoaXMuX3ZhbHVlc1t0XS5wcm9wZXJ0eSkpLHRoaXMuX3ZhbHVlc1t0 XS52YWx1ZT1uZXcgT24odGhpcy5fdmFsdWVzW3RdLnByb3BlcnR5LG51bGw9 PT1lP3ZvaWQgMDpiKGUpKX0sSW4ucHJvdG90eXBlLmdldFRyYW5zaXRpb249 ZnVuY3Rpb24odCl7cmV0dXJuIGIodGhpcy5fdmFsdWVzW3RdLnRyYW5zaXRp b24pfSxJbi5wcm90b3R5cGUuc2V0VHJhbnNpdGlvbj1mdW5jdGlvbih0LGUp e3RoaXMuX3ZhbHVlcy5oYXNPd25Qcm9wZXJ0eSh0KXx8KHRoaXMuX3ZhbHVl c1t0XT1uZXcgem4odGhpcy5fdmFsdWVzW3RdLnByb3BlcnR5KSksdGhpcy5f dmFsdWVzW3RdLnRyYW5zaXRpb249YihlKXx8dm9pZCAwfSxJbi5wcm90b3R5 cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXt9LGU9MCxyPU9i amVjdC5rZXlzKHRoaXMuX3ZhbHVlcyk7ZTxyLmxlbmd0aDtlKz0xKXt2YXIg bj1yW2VdLGE9dGhpcy5nZXRWYWx1ZShuKTt2b2lkIDAhPT1hJiYodFtuXT1h KTt2YXIgaT10aGlzLmdldFRyYW5zaXRpb24obik7dm9pZCAwIT09aSYmKHRb bisiLXRyYW5zaXRpb24iXT1pKX1yZXR1cm4gdH0sSW4ucHJvdG90eXBlLnRy YW5zaXRpb25lZD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uZXcgUm4odGhp cy5fcHJvcGVydGllcyksbj0wLGE9T2JqZWN0LmtleXModGhpcy5fdmFsdWVz KTtuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl07ci5fdmFsdWVzW2ldPXRo aXMuX3ZhbHVlc1tpXS50cmFuc2l0aW9uZWQodCxlLl92YWx1ZXNbaV0pfXJl dHVybiByfSxJbi5wcm90b3R5cGUudW50cmFuc2l0aW9uZWQ9ZnVuY3Rpb24o KXtmb3IodmFyIHQ9bmV3IFJuKHRoaXMuX3Byb3BlcnRpZXMpLGU9MCxyPU9i amVjdC5rZXlzKHRoaXMuX3ZhbHVlcyk7ZTxyLmxlbmd0aDtlKz0xKXt2YXIg bj1yW2VdO3QuX3ZhbHVlc1tuXT10aGlzLl92YWx1ZXNbbl0udW50cmFuc2l0 aW9uZWQoKX1yZXR1cm4gdH07dmFyIERuPWZ1bmN0aW9uKHQsZSxyLG4sYSl7 dGhpcy5wcm9wZXJ0eT10LHRoaXMudmFsdWU9ZSx0aGlzLmJlZ2luPWErbi5k ZWxheXx8MCx0aGlzLmVuZD10aGlzLmJlZ2luK24uZHVyYXRpb258fDAsdC5z cGVjaWZpY2F0aW9uLnRyYW5zaXRpb24mJihuLmRlbGF5fHxuLmR1cmF0aW9u KSYmKHRoaXMucHJpb3I9cil9O0RuLnByb3RvdHlwZS5wb3NzaWJseUV2YWx1 YXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXQubm93fHwwLHI9dGhpcy52YWx1ZS5w b3NzaWJseUV2YWx1YXRlKHQpLG49dGhpcy5wcmlvcjtpZihuKXtpZihlPnRo aXMuZW5kKXJldHVybiB0aGlzLnByaW9yPW51bGwscjtpZih0aGlzLnZhbHVl LmlzRGF0YURyaXZlbigpKXJldHVybiB0aGlzLnByaW9yPW51bGwscjtpZihl PHRoaXMuYmVnaW4pcmV0dXJuIG4ucG9zc2libHlFdmFsdWF0ZSh0KTt2YXIg YT0oZS10aGlzLmJlZ2luKS8odGhpcy5lbmQtdGhpcy5iZWdpbik7cmV0dXJu IHRoaXMucHJvcGVydHkuaW50ZXJwb2xhdGUobi5wb3NzaWJseUV2YWx1YXRl KHQpLHIsZnVuY3Rpb24odCl7aWYoYTw9MClyZXR1cm4gMDtpZihhPj0xKXJl dHVybiAxO3ZhciBlPWEqYSxyPWUqYTtyZXR1cm4gNCooYTwuNT9yOjMqKGEt ZSkrci0uNzUpfSgpKX1yZXR1cm4gcn07dmFyIFJuPWZ1bmN0aW9uKHQpe3Ro aXMuX3Byb3BlcnRpZXM9dCx0aGlzLl92YWx1ZXM9T2JqZWN0LmNyZWF0ZSh0 LmRlZmF1bHRUcmFuc2l0aW9uaW5nUHJvcGVydHlWYWx1ZXMpfTtSbi5wcm90 b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9 bmV3IE5uKHRoaXMuX3Byb3BlcnRpZXMpLHI9MCxuPU9iamVjdC5rZXlzKHRo aXMuX3ZhbHVlcyk7cjxuLmxlbmd0aDtyKz0xKXt2YXIgYT1uW3JdO2UuX3Zh bHVlc1thXT10aGlzLl92YWx1ZXNbYV0ucG9zc2libHlFdmFsdWF0ZSh0KX1y ZXR1cm4gZX0sUm4ucHJvdG90eXBlLmhhc1RyYW5zaXRpb249ZnVuY3Rpb24o KXtmb3IodmFyIHQ9MCxlPU9iamVjdC5rZXlzKHRoaXMuX3ZhbHVlcyk7dDxl Lmxlbmd0aDt0Kz0xKXt2YXIgcj1lW3RdO2lmKHRoaXMuX3ZhbHVlc1tyXS5w cmlvcilyZXR1cm4hMH1yZXR1cm4hMX07dmFyIEZuPWZ1bmN0aW9uKHQpe3Ro aXMuX3Byb3BlcnRpZXM9dCx0aGlzLl92YWx1ZXM9T2JqZWN0LmNyZWF0ZSh0 LmRlZmF1bHRQcm9wZXJ0eVZhbHVlcyl9O0ZuLnByb3RvdHlwZS5nZXRWYWx1 ZT1mdW5jdGlvbih0KXtyZXR1cm4gYih0aGlzLl92YWx1ZXNbdF0udmFsdWUp fSxGbi5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt0aGlzLl92 YWx1ZXNbdF09bmV3IE9uKHRoaXMuX3ZhbHVlc1t0XS5wcm9wZXJ0eSxudWxs PT09ZT92b2lkIDA6YihlKSl9LEZuLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVu Y3Rpb24oKXtmb3IodmFyIHQ9e30sZT0wLHI9T2JqZWN0LmtleXModGhpcy5f dmFsdWVzKTtlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV0sYT10aGlzLmdl dFZhbHVlKG4pO3ZvaWQgMCE9PWEmJih0W25dPWEpfXJldHVybiB0fSxGbi5w cm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlvbih0KXtmb3IodmFy IGU9bmV3IE5uKHRoaXMuX3Byb3BlcnRpZXMpLHI9MCxuPU9iamVjdC5rZXlz KHRoaXMuX3ZhbHVlcyk7cjxuLmxlbmd0aDtyKz0xKXt2YXIgYT1uW3JdO2Uu X3ZhbHVlc1thXT10aGlzLl92YWx1ZXNbYV0ucG9zc2libHlFdmFsdWF0ZSh0 KX1yZXR1cm4gZX07dmFyIEJuPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnByb3Bl cnR5PXQsdGhpcy52YWx1ZT1lLHRoaXMucGFyYW1ldGVycz1yfTtCbi5wcm90 b3R5cGUuaXNDb25zdGFudD1mdW5jdGlvbigpe3JldHVybiJjb25zdGFudCI9 PT10aGlzLnZhbHVlLmtpbmR9LEJuLnByb3RvdHlwZS5jb25zdGFudE9yPWZ1 bmN0aW9uKHQpe3JldHVybiJjb25zdGFudCI9PT10aGlzLnZhbHVlLmtpbmQ/ dGhpcy52YWx1ZS52YWx1ZTp0fSxCbi5wcm90b3R5cGUuZXZhbHVhdGU9ZnVu Y3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wcm9wZXJ0eS5ldmFsdWF0ZSh0aGlz LnZhbHVlLHRoaXMucGFyYW1ldGVycyx0LGUpfTt2YXIgTm49ZnVuY3Rpb24o dCl7dGhpcy5fcHJvcGVydGllcz10LHRoaXMuX3ZhbHVlcz1PYmplY3QuY3Jl YXRlKHQuZGVmYXVsdFBvc3NpYmx5RXZhbHVhdGVkVmFsdWVzKX07Tm4ucHJv dG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsdWVzW3Rd fTt2YXIgam49ZnVuY3Rpb24odCl7dGhpcy5zcGVjaWZpY2F0aW9uPXR9O2pu LnByb3RvdHlwZS5wb3NzaWJseUV2YWx1YXRlPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHQuZXhwcmVzc2lvbi5ldmFsdWF0ZShlKX0sam4ucHJvdG90eXBlLmlu dGVycG9sYXRlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj14ZVt0aGlzLnNwZWNp ZmljYXRpb24udHlwZV07cmV0dXJuIG4/bih0LGUscik6dH07dmFyIFZuPWZ1 bmN0aW9uKHQsZSl7dGhpcy5zcGVjaWZpY2F0aW9uPXQsdGhpcy5vdmVycmlk ZXM9ZX07Vm4ucHJvdG90eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24o dCxlKXtyZXR1cm4iY29uc3RhbnQiPT09dC5leHByZXNzaW9uLmtpbmR8fCJj YW1lcmEiPT09dC5leHByZXNzaW9uLmtpbmQ/bmV3IEJuKHRoaXMse2tpbmQ6 ImNvbnN0YW50Iix2YWx1ZTp0LmV4cHJlc3Npb24uZXZhbHVhdGUoZSl9LGUp Om5ldyBCbih0aGlzLHQuZXhwcmVzc2lvbixlKX0sVm4ucHJvdG90eXBlLmlu dGVycG9sYXRlPWZ1bmN0aW9uKHQsZSxyKXtpZigiY29uc3RhbnQiIT09dC52 YWx1ZS5raW5kfHwiY29uc3RhbnQiIT09ZS52YWx1ZS5raW5kKXJldHVybiB0 O2lmKHZvaWQgMD09PXQudmFsdWUudmFsdWV8fHZvaWQgMD09PWUudmFsdWUu dmFsdWUpcmV0dXJuIG5ldyBCbih0aGlzLHtraW5kOiJjb25zdGFudCIsdmFs dWU6dm9pZCAwfSx0LnBhcmFtZXRlcnMpO3ZhciBuPXhlW3RoaXMuc3BlY2lm aWNhdGlvbi50eXBlXTtyZXR1cm4gbj9uZXcgQm4odGhpcyx7a2luZDoiY29u c3RhbnQiLHZhbHVlOm4odC52YWx1ZS52YWx1ZSxlLnZhbHVlLnZhbHVlLHIp fSx0LnBhcmFtZXRlcnMpOnR9LFZuLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5j dGlvbih0LGUscixuKXtyZXR1cm4iY29uc3RhbnQiPT09dC5raW5kP3QudmFs dWU6dC5ldmFsdWF0ZShlLHIsbil9O3ZhciBVbj1mdW5jdGlvbih0KXtmdW5j dGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihl Ll9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu cHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90 eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9 PT10LnZhbHVlKXJldHVybiBuZXcgQm4odGhpcyx7a2luZDoiY29uc3RhbnQi LHZhbHVlOnZvaWQgMH0sZSk7aWYoImNvbnN0YW50Ij09PXQuZXhwcmVzc2lv bi5raW5kKXt2YXIgcj10LmV4cHJlc3Npb24uZXZhbHVhdGUoZSksbj10aGlz Ll9jYWxjdWxhdGUocixyLHIsZSk7cmV0dXJuIG5ldyBCbih0aGlzLHtraW5k OiJjb25zdGFudCIsdmFsdWU6bn0sZSl9aWYoImNhbWVyYSI9PT10LmV4cHJl c3Npb24ua2luZCl7dmFyIGE9dGhpcy5fY2FsY3VsYXRlKHQuZXhwcmVzc2lv bi5ldmFsdWF0ZSh7em9vbTplLnpvb20tMX0pLHQuZXhwcmVzc2lvbi5ldmFs dWF0ZSh7em9vbTplLnpvb219KSx0LmV4cHJlc3Npb24uZXZhbHVhdGUoe3pv b206ZS56b29tKzF9KSxlKTtyZXR1cm4gbmV3IEJuKHRoaXMse2tpbmQ6ImNv bnN0YW50Iix2YWx1ZTphfSxlKX1yZXR1cm4gbmV3IEJuKHRoaXMsdC5leHBy ZXNzaW9uLGUpfSxlLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0LGUs cixuKXtpZigic291cmNlIj09PXQua2luZCl7dmFyIGE9dC5ldmFsdWF0ZShl LHIsbik7cmV0dXJuIHRoaXMuX2NhbGN1bGF0ZShhLGEsYSxlKX1yZXR1cm4i Y29tcG9zaXRlIj09PXQua2luZD90aGlzLl9jYWxjdWxhdGUodC5ldmFsdWF0 ZSh7em9vbTpNYXRoLmZsb29yKGUuem9vbSktMX0scixuKSx0LmV2YWx1YXRl KHt6b29tOk1hdGguZmxvb3IoZS56b29tKX0scixuKSx0LmV2YWx1YXRlKHt6 b29tOk1hdGguZmxvb3IoZS56b29tKSsxfSxyLG4pLGUpOnQudmFsdWV9LGUu cHJvdG90eXBlLl9jYWxjdWxhdGU9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJu IG4uem9vbT5uLnpvb21IaXN0b3J5Lmxhc3RJbnRlZ2VyWm9vbT97ZnJvbTp0 LHRvOmV9Ontmcm9tOnIsdG86ZX19LGUucHJvdG90eXBlLmludGVycG9sYXRl PWZ1bmN0aW9uKHQpe3JldHVybiB0fSxlfShWbikscW49ZnVuY3Rpb24odCl7 dGhpcy5zcGVjaWZpY2F0aW9uPXR9O3FuLnByb3RvdHlwZS5wb3NzaWJseUV2 YWx1YXRlPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwIT09dC52YWx1ZSl7aWYo ImNvbnN0YW50Ij09PXQuZXhwcmVzc2lvbi5raW5kKXt2YXIgcj10LmV4cHJl c3Npb24uZXZhbHVhdGUoZSk7cmV0dXJuIHRoaXMuX2NhbGN1bGF0ZShyLHIs cixlKX1yZXR1cm4gdGhpcy5fY2FsY3VsYXRlKHQuZXhwcmVzc2lvbi5ldmFs dWF0ZShuZXcgUG4oTWF0aC5mbG9vcihlLnpvb20tMSksZSkpLHQuZXhwcmVz c2lvbi5ldmFsdWF0ZShuZXcgUG4oTWF0aC5mbG9vcihlLnpvb20pLGUpKSx0 LmV4cHJlc3Npb24uZXZhbHVhdGUobmV3IFBuKE1hdGguZmxvb3IoZS56b29t KzEpLGUpKSxlKX19LHFuLnByb3RvdHlwZS5fY2FsY3VsYXRlPWZ1bmN0aW9u KHQsZSxyLG4pe3JldHVybiBuLnpvb20+bi56b29tSGlzdG9yeS5sYXN0SW50 ZWdlclpvb20/e2Zyb206dCx0bzplfTp7ZnJvbTpyLHRvOmV9fSxxbi5wcm90 b3R5cGUuaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9O3ZhciBI bj1mdW5jdGlvbih0KXt0aGlzLnNwZWNpZmljYXRpb249dH07SG4ucHJvdG90 eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXQu ZXhwcmVzc2lvbi5ldmFsdWF0ZShlKX0sSG4ucHJvdG90eXBlLmludGVycG9s YXRlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciBHbj1mdW5jdGlvbih0KXtm b3IodmFyIGUgaW4gdGhpcy5wcm9wZXJ0aWVzPXQsdGhpcy5kZWZhdWx0UHJv cGVydHlWYWx1ZXM9e30sdGhpcy5kZWZhdWx0VHJhbnNpdGlvbmFibGVQcm9w ZXJ0eVZhbHVlcz17fSx0aGlzLmRlZmF1bHRUcmFuc2l0aW9uaW5nUHJvcGVy dHlWYWx1ZXM9e30sdGhpcy5kZWZhdWx0UG9zc2libHlFdmFsdWF0ZWRWYWx1 ZXM9e30sdGhpcy5vdmVycmlkYWJsZVByb3BlcnRpZXM9W10sdCl7dmFyIHI9 dFtlXTtyLnNwZWNpZmljYXRpb24ub3ZlcnJpZGFibGUmJnRoaXMub3ZlcnJp ZGFibGVQcm9wZXJ0aWVzLnB1c2goZSk7dmFyIG49dGhpcy5kZWZhdWx0UHJv cGVydHlWYWx1ZXNbZV09bmV3IE9uKHIsdm9pZCAwKSxhPXRoaXMuZGVmYXVs dFRyYW5zaXRpb25hYmxlUHJvcGVydHlWYWx1ZXNbZV09bmV3IHpuKHIpO3Ro aXMuZGVmYXVsdFRyYW5zaXRpb25pbmdQcm9wZXJ0eVZhbHVlc1tlXT1hLnVu dHJhbnNpdGlvbmVkKCksdGhpcy5kZWZhdWx0UG9zc2libHlFdmFsdWF0ZWRW YWx1ZXNbZV09bi5wb3NzaWJseUV2YWx1YXRlKHt9KX19O2RuKCJEYXRhRHJp dmVuUHJvcGVydHkiLFZuKSxkbigiRGF0YUNvbnN0YW50UHJvcGVydHkiLGpu KSxkbigiQ3Jvc3NGYWRlZERhdGFEcml2ZW5Qcm9wZXJ0eSIsVW4pLGRuKCJD cm9zc0ZhZGVkUHJvcGVydHkiLHFuKSxkbigiQ29sb3JSYW1wUHJvcGVydHki LEhuKTt2YXIgWW49ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIpe2lmKHQu Y2FsbCh0aGlzKSx0aGlzLmlkPWUuaWQsdGhpcy50eXBlPWUudHlwZSx0aGlz Ll9mZWF0dXJlRmlsdGVyPWZ1bmN0aW9uKCl7cmV0dXJuITB9LCJjdXN0b20i IT09ZS50eXBlJiYoZT1lLHRoaXMubWV0YWRhdGE9ZS5tZXRhZGF0YSx0aGlz Lm1pbnpvb209ZS5taW56b29tLHRoaXMubWF4em9vbT1lLm1heHpvb20sImJh Y2tncm91bmQiIT09ZS50eXBlJiYodGhpcy5zb3VyY2U9ZS5zb3VyY2UsdGhp cy5zb3VyY2VMYXllcj1lWyJzb3VyY2UtbGF5ZXIiXSx0aGlzLmZpbHRlcj1l LmZpbHRlciksci5sYXlvdXQmJih0aGlzLl91bmV2YWx1YXRlZExheW91dD1u ZXcgRm4oci5sYXlvdXQpKSxyLnBhaW50KSl7Zm9yKHZhciBuIGluIHRoaXMu X3RyYW5zaXRpb25hYmxlUGFpbnQ9bmV3IEluKHIucGFpbnQpLGUucGFpbnQp dGhpcy5zZXRQYWludFByb3BlcnR5KG4sZS5wYWludFtuXSx7dmFsaWRhdGU6 ITF9KTtmb3IodmFyIGEgaW4gZS5sYXlvdXQpdGhpcy5zZXRMYXlvdXRQcm9w ZXJ0eShhLGUubGF5b3V0W2FdLHt2YWxpZGF0ZTohMX0pO3RoaXMuX3RyYW5z aXRpb25pbmdQYWludD10aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50LnVudHJh bnNpdGlvbmVkKCl9fXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90 b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5 cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXRDcm9zc2ZhZGVQYXJh bWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nyb3NzZmFkZVBhcmFt ZXRlcnN9LGUucHJvdG90eXBlLmdldExheW91dFByb3BlcnR5PWZ1bmN0aW9u KHQpe3JldHVybiJ2aXNpYmlsaXR5Ij09PXQ/dGhpcy52aXNpYmlsaXR5OnRo aXMuX3VuZXZhbHVhdGVkTGF5b3V0LmdldFZhbHVlKHQpfSxlLnByb3RvdHlw ZS5zZXRMYXlvdXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUscil7aWYodm9pZCAw PT09ciYmKHI9e30pLG51bGwhPWUpe3ZhciBuPSJsYXllcnMuIit0aGlzLmlk KyIubGF5b3V0LiIrdDtpZih0aGlzLl92YWxpZGF0ZShzbixuLHQsZSxyKSly ZXR1cm59InZpc2liaWxpdHkiIT09dD90aGlzLl91bmV2YWx1YXRlZExheW91 dC5zZXRWYWx1ZSh0LGUpOnRoaXMudmlzaWJpbGl0eT1lfSxlLnByb3RvdHlw ZS5nZXRQYWludFByb3BlcnR5PWZ1bmN0aW9uKHQpe3JldHVybiBtKHQsIi10 cmFuc2l0aW9uIik/dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5nZXRUcmFu c2l0aW9uKHQuc2xpY2UoMCwtIi10cmFuc2l0aW9uIi5sZW5ndGgpKTp0aGlz Ll90cmFuc2l0aW9uYWJsZVBhaW50LmdldFZhbHVlKHQpfSxlLnByb3RvdHlw ZS5zZXRQYWludFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxyKXtpZih2b2lkIDA9 PT1yJiYocj17fSksbnVsbCE9ZSl7dmFyIG49ImxheWVycy4iK3RoaXMuaWQr Ii5wYWludC4iK3Q7aWYodGhpcy5fdmFsaWRhdGUob24sbix0LGUscikpcmV0 dXJuITF9aWYobSh0LCItdHJhbnNpdGlvbiIpKXJldHVybiB0aGlzLl90cmFu c2l0aW9uYWJsZVBhaW50LnNldFRyYW5zaXRpb24odC5zbGljZSgwLC0iLXRy YW5zaXRpb24iLmxlbmd0aCksZXx8dm9pZCAwKSwhMTt2YXIgYT10aGlzLl90 cmFuc2l0aW9uYWJsZVBhaW50Ll92YWx1ZXNbdF0saT0iY3Jvc3MtZmFkZWQt ZGF0YS1kcml2ZW4iPT09YS5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9uWyJwcm9w ZXJ0eS10eXBlIl0sbz1hLnZhbHVlLmlzRGF0YURyaXZlbigpLHM9YS52YWx1 ZTt0aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50LnNldFZhbHVlKHQsZSksdGhp cy5faGFuZGxlU3BlY2lhbFBhaW50UHJvcGVydHlVcGRhdGUodCk7dmFyIGw9 dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5fdmFsdWVzW3RdLnZhbHVlO3Jl dHVybiBsLmlzRGF0YURyaXZlbigpfHxvfHxpfHx0aGlzLl9oYW5kbGVPdmVy cmlkYWJsZVBhaW50UHJvcGVydHlVcGRhdGUodCxzLGwpfSxlLnByb3RvdHlw ZS5faGFuZGxlU3BlY2lhbFBhaW50UHJvcGVydHlVcGRhdGU9ZnVuY3Rpb24o dCl7fSxlLnByb3RvdHlwZS5faGFuZGxlT3ZlcnJpZGFibGVQYWludFByb3Bl cnR5VXBkYXRlPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4hMX0sZS5wcm90b3R5 cGUuaXNIaWRkZW49ZnVuY3Rpb24odCl7cmV0dXJuISEodGhpcy5taW56b29t JiZ0PHRoaXMubWluem9vbSl8fCEhKHRoaXMubWF4em9vbSYmdD49dGhpcy5t YXh6b29tKXx8Im5vbmUiPT09dGhpcy52aXNpYmlsaXR5fSxlLnByb3RvdHlw ZS51cGRhdGVUcmFuc2l0aW9ucz1mdW5jdGlvbih0KXt0aGlzLl90cmFuc2l0 aW9uaW5nUGFpbnQ9dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC50cmFuc2l0 aW9uZWQodCx0aGlzLl90cmFuc2l0aW9uaW5nUGFpbnQpfSxlLnByb3RvdHlw ZS5oYXNUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5z aXRpb25pbmdQYWludC5oYXNUcmFuc2l0aW9uKCl9LGUucHJvdG90eXBlLnJl Y2FsY3VsYXRlPWZ1bmN0aW9uKHQpe3QuZ2V0Q3Jvc3NmYWRlUGFyYW1ldGVy cyYmKHRoaXMuX2Nyb3NzZmFkZVBhcmFtZXRlcnM9dC5nZXRDcm9zc2ZhZGVQ YXJhbWV0ZXJzKCkpLHRoaXMuX3VuZXZhbHVhdGVkTGF5b3V0JiYodGhpcy5s YXlvdXQ9dGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQucG9zc2libHlFdmFsdWF0 ZSh0KSksdGhpcy5wYWludD10aGlzLl90cmFuc2l0aW9uaW5nUGFpbnQucG9z c2libHlFdmFsdWF0ZSh0KX0sZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0 aW9uKCl7dmFyIHQ9e2lkOnRoaXMuaWQsdHlwZTp0aGlzLnR5cGUsc291cmNl OnRoaXMuc291cmNlLCJzb3VyY2UtbGF5ZXIiOnRoaXMuc291cmNlTGF5ZXIs bWV0YWRhdGE6dGhpcy5tZXRhZGF0YSxtaW56b29tOnRoaXMubWluem9vbSxt YXh6b29tOnRoaXMubWF4em9vbSxmaWx0ZXI6dGhpcy5maWx0ZXIsbGF5b3V0 OnRoaXMuX3VuZXZhbHVhdGVkTGF5b3V0JiZ0aGlzLl91bmV2YWx1YXRlZExh eW91dC5zZXJpYWxpemUoKSxwYWludDp0aGlzLl90cmFuc2l0aW9uYWJsZVBh aW50JiZ0aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50LnNlcmlhbGl6ZSgpfTty ZXR1cm4gdGhpcy52aXNpYmlsaXR5JiYodC5sYXlvdXQ9dC5sYXlvdXR8fHt9 LHQubGF5b3V0LnZpc2liaWxpdHk9dGhpcy52aXNpYmlsaXR5KSx4KHQsZnVu Y3Rpb24odCxlKXtyZXR1cm4hKHZvaWQgMD09PXR8fCJsYXlvdXQiPT09ZSYm IU9iamVjdC5rZXlzKHQpLmxlbmd0aHx8InBhaW50Ij09PWUmJiFPYmplY3Qu a2V5cyh0KS5sZW5ndGgpfSl9LGUucHJvdG90eXBlLl92YWxpZGF0ZT1mdW5j dGlvbih0LGUscixuLGEpe3JldHVybiB2b2lkIDA9PT1hJiYoYT17fSksKCFh fHwhMSE9PWEudmFsaWRhdGUpJiZsbih0aGlzLHQuY2FsbChubix7a2V5OmUs bGF5ZXJUeXBlOnRoaXMudHlwZSxvYmplY3RLZXk6cix2YWx1ZTpuLHN0eWxl U3BlYzpUdCxzdHlsZTp7Z2x5cGhzOiEwLHNwcml0ZTohMH19KSl9LGUucHJv dG90eXBlLmlzM0Q9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUu aXNUaWxlQ2xpcHBlZD1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlw ZS5oYXNPZmZzY3JlZW5QYXNzPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJv dG90eXBlLnJlc2l6ZT1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUuaXNTdGF0 ZURlcGVuZGVudD1mdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLnBhaW50 Ll92YWx1ZXMpe3ZhciBlPXRoaXMucGFpbnQuZ2V0KHQpO2lmKGUgaW5zdGFu Y2VvZiBCbiYmdXIoZS5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9uKSYmKCJzb3Vy Y2UiPT09ZS52YWx1ZS5raW5kfHwiY29tcG9zaXRlIj09PWUudmFsdWUua2lu ZCkmJmUudmFsdWUuaXNTdGF0ZURlcGVuZGVudClyZXR1cm4hMH1yZXR1cm4h MX0sZX0oa3QpLFduPXtJbnQ4OkludDhBcnJheSxVaW50ODpVaW50OEFycmF5 LEludDE2OkludDE2QXJyYXksVWludDE2OlVpbnQxNkFycmF5LEludDMyOklu dDMyQXJyYXksVWludDMyOlVpbnQzMkFycmF5LEZsb2F0MzI6RmxvYXQzMkFy cmF5fSxYbj1mdW5jdGlvbih0LGUpe3RoaXMuX3N0cnVjdEFycmF5PXQsdGhp cy5fcG9zMT1lKnRoaXMuc2l6ZSx0aGlzLl9wb3MyPXRoaXMuX3BvczEvMix0 aGlzLl9wb3M0PXRoaXMuX3BvczEvNCx0aGlzLl9wb3M4PXRoaXMuX3BvczEv OH0sWm49ZnVuY3Rpb24oKXt0aGlzLmlzVHJhbnNmZXJyZWQ9ITEsdGhpcy5j YXBhY2l0eT0tMSx0aGlzLnJlc2l6ZSgwKX07ZnVuY3Rpb24gSm4odCxlKXt2 b2lkIDA9PT1lJiYoZT0xKTt2YXIgcj0wLG49MDtyZXR1cm57bWVtYmVyczp0 Lm1hcChmdW5jdGlvbih0KXt2YXIgYSxpPShhPXQudHlwZSxXblthXS5CWVRF U19QRVJfRUxFTUVOVCksbz1yPUtuKHIsTWF0aC5tYXgoZSxpKSkscz10LmNv bXBvbmVudHN8fDE7cmV0dXJuIG49TWF0aC5tYXgobixpKSxyKz1pKnMse25h bWU6dC5uYW1lLHR5cGU6dC50eXBlLGNvbXBvbmVudHM6cyxvZmZzZXQ6b319 KSxzaXplOktuKHIsTWF0aC5tYXgobixlKSksYWxpZ25tZW50OmV9fWZ1bmN0 aW9uIEtuKHQsZSl7cmV0dXJuIE1hdGguY2VpbCh0L2UpKmV9Wm4uc2VyaWFs aXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX3RyaW0oKSxlJiYodC5pc1Ry YW5zZmVycmVkPSEwLGUucHVzaCh0LmFycmF5QnVmZmVyKSkse2xlbmd0aDp0 Lmxlbmd0aCxhcnJheUJ1ZmZlcjp0LmFycmF5QnVmZmVyfX0sWm4uZGVzZXJp YWxpemU9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0LmNyZWF0ZSh0aGlzLnBy b3RvdHlwZSk7cmV0dXJuIGUuYXJyYXlCdWZmZXI9dC5hcnJheUJ1ZmZlcixl Lmxlbmd0aD10Lmxlbmd0aCxlLmNhcGFjaXR5PXQuYXJyYXlCdWZmZXIuYnl0 ZUxlbmd0aC9lLmJ5dGVzUGVyRWxlbWVudCxlLl9yZWZyZXNoVmlld3MoKSxl fSxabi5wcm90b3R5cGUuX3RyaW09ZnVuY3Rpb24oKXt0aGlzLmxlbmd0aCE9 PXRoaXMuY2FwYWNpdHkmJih0aGlzLmNhcGFjaXR5PXRoaXMubGVuZ3RoLHRo aXMuYXJyYXlCdWZmZXI9dGhpcy5hcnJheUJ1ZmZlci5zbGljZSgwLHRoaXMu bGVuZ3RoKnRoaXMuYnl0ZXNQZXJFbGVtZW50KSx0aGlzLl9yZWZyZXNoVmll d3MoKSl9LFpuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMubGVu Z3RoPTB9LFpuLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24odCl7dGhpcy5y ZXNlcnZlKHQpLHRoaXMubGVuZ3RoPXR9LFpuLnByb3RvdHlwZS5yZXNlcnZl PWZ1bmN0aW9uKHQpe2lmKHQ+dGhpcy5jYXBhY2l0eSl7dGhpcy5jYXBhY2l0 eT1NYXRoLm1heCh0LE1hdGguZmxvb3IoNSp0aGlzLmNhcGFjaXR5KSwxMjgp LHRoaXMuYXJyYXlCdWZmZXI9bmV3IEFycmF5QnVmZmVyKHRoaXMuY2FwYWNp dHkqdGhpcy5ieXRlc1BlckVsZW1lbnQpO3ZhciBlPXRoaXMudWludDg7dGhp cy5fcmVmcmVzaFZpZXdzKCksZSYmdGhpcy51aW50OC5zZXQoZSl9fSxabi5w cm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3Rocm93IG5ldyBF cnJvcigiX3JlZnJlc2hWaWV3cygpIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkg ZWFjaCBjb25jcmV0ZSBTdHJ1Y3RBcnJheSBsYXlvdXQiKX07dmFyIFFuPWZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRz KX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVj dC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVj dG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3Ro aXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhp cy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5w cm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlz Lmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUocisxKSx0aGlzLmVtcGxhY2Uo cix0LGUpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj0yKnQ7cmV0dXJuIHRoaXMuaW50MTZbbiswXT1lLHRoaXMuaW50MTZb bisxXT1yLHR9LGV9KFpuKTtRbi5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50 PTQsZG4oIlN0cnVjdEFycmF5TGF5b3V0Mmk0IixRbik7dmFyICRuPWZ1bmN0 aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1y ZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5j cmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9y PWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMu dWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5p bnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90 b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dGhp cy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGErMSksdGhpcy5lbXBsYWNl KGEsdCxlLHIsbil9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxl LHIsbixhKXt2YXIgaT00KnQ7cmV0dXJuIHRoaXMuaW50MTZbaSswXT1lLHRo aXMuaW50MTZbaSsxXT1yLHRoaXMuaW50MTZbaSsyXT1uLHRoaXMuaW50MTZb aSszXT1hLHR9LGV9KFpuKTskbi5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50 PTgsZG4oIlN0cnVjdEFycmF5TGF5b3V0NGk4Iiwkbik7dmFyIHRhPWZ1bmN0 aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1y ZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5j cmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9y PWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMu dWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5p bnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90 b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBv PXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShvKzEpLHRoaXMuZW1w bGFjZShvLHQsZSxyLG4sYSxpKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5j dGlvbih0LGUscixuLGEsaSxvKXt2YXIgcz02KnQ7cmV0dXJuIHRoaXMuaW50 MTZbcyswXT1lLHRoaXMuaW50MTZbcysxXT1yLHRoaXMuaW50MTZbcysyXT1u LHRoaXMuaW50MTZbcyszXT1hLHRoaXMuaW50MTZbcys0XT1pLHRoaXMuaW50 MTZbcys1XT1vLHR9LGV9KFpuKTt0YS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVt ZW50PTEyLGRuKCJTdHJ1Y3RBcnJheUxheW91dDJpNGkxMiIsdGEpO3ZhciBl YT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3Vt ZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1P YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25z dHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmlld3M9ZnVuY3Rpb24o KXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIp LHRoaXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9 LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQsZSxyLG4sYSxp KXt2YXIgbz10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUobysxKSx0 aGlzLmVtcGxhY2Uobyx0LGUscixuLGEsaSl9LGUucHJvdG90eXBlLmVtcGxh Y2U9ZnVuY3Rpb24odCxlLHIsbixhLGksbyl7dmFyIHM9NCp0LGw9OCp0O3Jl dHVybiB0aGlzLmludDE2W3MrMF09ZSx0aGlzLmludDE2W3MrMV09cix0aGlz LnVpbnQ4W2wrNF09bix0aGlzLnVpbnQ4W2wrNV09YSx0aGlzLnVpbnQ4W2wr Nl09aSx0aGlzLnVpbnQ4W2wrN109byx0fSxlfShabik7ZWEucHJvdG90eXBl LmJ5dGVzUGVyRWxlbWVudD04LGRuKCJTdHJ1Y3RBcnJheUxheW91dDJpNHVi OCIsZWEpO3ZhciByYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBs eSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxl LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnBy b3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmll d3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMu YXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlz LmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rp b24odCxlLHIsbixhLGksbyxzKXt2YXIgbD10aGlzLmxlbmd0aDtyZXR1cm4g dGhpcy5yZXNpemUobCsxKSx0aGlzLmVtcGxhY2UobCx0LGUscixuLGEsaSxv LHMpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4sYSxp LG8scyxsKXt2YXIgYz04KnQ7cmV0dXJuIHRoaXMudWludDE2W2MrMF09ZSx0 aGlzLnVpbnQxNltjKzFdPXIsdGhpcy51aW50MTZbYysyXT1uLHRoaXMudWlu dDE2W2MrM109YSx0aGlzLnVpbnQxNltjKzRdPWksdGhpcy51aW50MTZbYys1 XT1vLHRoaXMudWludDE2W2MrNl09cyx0aGlzLnVpbnQxNltjKzddPWwsdH0s ZX0oWm4pO3JhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTYsZG4oIlN0 cnVjdEFycmF5TGF5b3V0OHVpMTYiLHJhKTt2YXIgbmE9ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0 JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0 JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnBy b3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1u ZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5l dyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5l dyBVaW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUu ZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzKXt2YXIgbD10 aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUobCsxKSx0aGlzLmVtcGxh Y2UobCx0LGUscixuLGEsaSxvLHMpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1 bmN0aW9uKHQsZSxyLG4sYSxpLG8scyxsKXt2YXIgYz04KnQ7cmV0dXJuIHRo aXMuaW50MTZbYyswXT1lLHRoaXMuaW50MTZbYysxXT1yLHRoaXMuaW50MTZb YysyXT1uLHRoaXMuaW50MTZbYyszXT1hLHRoaXMudWludDE2W2MrNF09aSx0 aGlzLnVpbnQxNltjKzVdPW8sdGhpcy51aW50MTZbYys2XT1zLHRoaXMudWlu dDE2W2MrN109bCx0fSxlfShabik7bmEucHJvdG90eXBlLmJ5dGVzUGVyRWxl bWVudD0xNixkbigiU3RydWN0QXJyYXlMYXlvdXQ0aTR1aTE2IixuYSk7dmFy IGFhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJn dW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBl PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNv bnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlv bigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZl ciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1 ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQsZSxy KXt2YXIgbj10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUobisxKSx0 aGlzLmVtcGxhY2Uobix0LGUscil9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVu Y3Rpb24odCxlLHIsbil7dmFyIGE9Myp0O3JldHVybiB0aGlzLmZsb2F0MzJb YSswXT1lLHRoaXMuZmxvYXQzMlthKzFdPXIsdGhpcy5mbG9hdDMyW2ErMl09 bix0fSxlfShabik7YWEucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD0xMixk bigiU3RydWN0QXJyYXlMYXlvdXQzZjEyIixhYSk7dmFyIGlhPWZ1bmN0aW9u KHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1 cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVh dGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUs ZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWlu dDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50 MzI9bmV3IFVpbnQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3Rv dHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxlbmd0 aDtyZXR1cm4gdGhpcy5yZXNpemUoZSsxKSx0aGlzLmVtcGxhY2UoZSx0KX0s ZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUpe3ZhciByPTEqdDty ZXR1cm4gdGhpcy51aW50MzJbciswXT1lLHR9LGV9KFpuKTtpYS5wcm90b3R5 cGUuYnl0ZXNQZXJFbGVtZW50PTQsZG4oIlN0cnVjdEFycmF5TGF5b3V0MXVs NCIsaWEpO3ZhciBvYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBs eSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxl LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnBy b3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmll d3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMu YXJyYXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5h cnJheUJ1ZmZlciksdGhpcy51aW50MzI9bmV3IFVpbnQzMkFycmF5KHRoaXMu YXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlz LmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rp b24odCxlLHIsbixhLGksbyxzLGwsYyx1KXt2YXIgaD10aGlzLmxlbmd0aDty ZXR1cm4gdGhpcy5yZXNpemUoaCsxKSx0aGlzLmVtcGxhY2UoaCx0LGUscixu LGEsaSxvLHMsbCxjLHUpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9u KHQsZSxyLG4sYSxpLG8scyxsLGMsdSxoKXt2YXIgZj0xMip0LHA9Nip0O3Jl dHVybiB0aGlzLmludDE2W2YrMF09ZSx0aGlzLmludDE2W2YrMV09cix0aGlz LmludDE2W2YrMl09bix0aGlzLmludDE2W2YrM109YSx0aGlzLmludDE2W2Yr NF09aSx0aGlzLmludDE2W2YrNV09byx0aGlzLnVpbnQzMltwKzNdPXMsdGhp cy51aW50MTZbZis4XT1sLHRoaXMudWludDE2W2YrOV09Yyx0aGlzLmludDE2 W2YrMTBdPXUsdGhpcy5pbnQxNltmKzExXT1oLHR9LGV9KFpuKTtvYS5wcm90 b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTI0LGRuKCJTdHJ1Y3RBcnJheUxheW91 dDZpMXVsMnVpMmkyNCIsb2EpO3ZhciBzYT1mdW5jdGlvbih0KXtmdW5jdGlv biBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9f cHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJv dG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBl Ll9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50 OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IEludDE2 QXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VC YWNrPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbz10aGlzLmxlbmd0aDty ZXR1cm4gdGhpcy5yZXNpemUobysxKSx0aGlzLmVtcGxhY2Uobyx0LGUscixu LGEsaSl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIsbixh LGksbyl7dmFyIHM9Nip0O3JldHVybiB0aGlzLmludDE2W3MrMF09ZSx0aGlz LmludDE2W3MrMV09cix0aGlzLmludDE2W3MrMl09bix0aGlzLmludDE2W3Mr M109YSx0aGlzLmludDE2W3MrNF09aSx0aGlzLmludDE2W3MrNV09byx0fSxl fShabik7c2EucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD0xMixkbigiU3Ry dWN0QXJyYXlMYXlvdXQyaTJpMmkxMiIsc2EpO3ZhciBsYT1mdW5jdGlvbih0 KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJu IHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl KHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUu cHJvdG90eXBlLl9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4 PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQz Mj1uZXcgRmxvYXQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3Rv dHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10aGlz Lmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoYSsxKSx0aGlzLmVtcGxhY2Uo YSx0LGUscixuKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUs cixuLGEpe3ZhciBpPTEyKnQsbz0zKnQ7cmV0dXJuIHRoaXMudWludDhbaSsw XT1lLHRoaXMudWludDhbaSsxXT1yLHRoaXMuZmxvYXQzMltvKzFdPW4sdGhp cy5mbG9hdDMyW28rMl09YSx0fSxlfShabik7bGEucHJvdG90eXBlLmJ5dGVz UGVyRWxlbWVudD0xMixkbigiU3RydWN0QXJyYXlMYXlvdXQydWIyZjEyIixs YSk7dmFyIGNhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRo aXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJv dG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90 eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1m dW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJh eUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5 QnVmZmVyKSx0aGlzLnVpbnQxNj1uZXcgVWludDE2QXJyYXkodGhpcy5hcnJh eUJ1ZmZlciksdGhpcy51aW50MzI9bmV3IFVpbnQzMkFycmF5KHRoaXMuYXJy YXlCdWZmZXIpLHRoaXMuZmxvYXQzMj1uZXcgRmxvYXQzMkFycmF5KHRoaXMu YXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlv bih0LGUscixuLGEsaSxvLHMsbCxjLHUsaCxmLHAsZCxnKXt2YXIgdj10aGlz Lmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUodisxKSx0aGlzLmVtcGxhY2Uo dix0LGUscixuLGEsaSxvLHMsbCxjLHUsaCxmLHAsZCxnKX0sZS5wcm90b3R5 cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMsbCxjLHUsaCxm LHAsZCxnLHYpe3ZhciBtPTIyKnQseT0xMSp0LHg9NDQqdDtyZXR1cm4gdGhp cy5pbnQxNlttKzBdPWUsdGhpcy5pbnQxNlttKzFdPXIsdGhpcy51aW50MTZb bSsyXT1uLHRoaXMudWludDE2W20rM109YSx0aGlzLnVpbnQzMlt5KzJdPWks dGhpcy51aW50MzJbeSszXT1vLHRoaXMudWludDMyW3krNF09cyx0aGlzLnVp bnQxNlttKzEwXT1sLHRoaXMudWludDE2W20rMTFdPWMsdGhpcy51aW50MTZb bSsxMl09dSx0aGlzLmZsb2F0MzJbeSs3XT1oLHRoaXMuZmxvYXQzMlt5Kzhd PWYsdGhpcy51aW50OFt4KzM2XT1wLHRoaXMudWludDhbeCszN109ZCx0aGlz LnVpbnQ4W3grMzhdPWcsdGhpcy51aW50MzJbeSsxMF09dix0fSxlfShabik7 Y2EucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD00NCxkbigiU3RydWN0QXJy YXlMYXlvdXQyaTJ1aTN1bDN1aTJmM3ViMXVsNDQiLGNhKTt2YXIgdWE9ZnVu Y3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMp fXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0 LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0 b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhp cy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlz LmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMu dWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlz LnVpbnQzMj1uZXcgVWludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhp cy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9 LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQsZSxyLG4sYSxp LG8scyxsLGMsdSxoLGYscCxkLGcsdixtLHkseCl7dmFyIGI9dGhpcy5sZW5n dGg7cmV0dXJuIHRoaXMucmVzaXplKGIrMSksdGhpcy5lbXBsYWNlKGIsdCxl LHIsbixhLGksbyxzLGwsYyx1LGgsZixwLGQsZyx2LG0seSx4KX0sZS5wcm90 b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixuLGEsaSxvLHMsbCxjLHUs aCxmLHAsZCxnLHYsbSx5LHgsYil7dmFyIF89MjQqdCx3PTEyKnQ7cmV0dXJu IHRoaXMuaW50MTZbXyswXT1lLHRoaXMuaW50MTZbXysxXT1yLHRoaXMuaW50 MTZbXysyXT1uLHRoaXMuaW50MTZbXyszXT1hLHRoaXMuaW50MTZbXys0XT1p LHRoaXMuaW50MTZbXys1XT1vLHRoaXMudWludDE2W18rNl09cyx0aGlzLnVp bnQxNltfKzddPWwsdGhpcy51aW50MTZbXys4XT1jLHRoaXMudWludDE2W18r OV09dSx0aGlzLnVpbnQxNltfKzEwXT1oLHRoaXMudWludDE2W18rMTFdPWYs dGhpcy51aW50MTZbXysxMl09cCx0aGlzLnVpbnQxNltfKzEzXT1kLHRoaXMu dWludDE2W18rMTRdPWcsdGhpcy51aW50MTZbXysxNV09dix0aGlzLnVpbnQx NltfKzE2XT1tLHRoaXMudWludDMyW3crOV09eSx0aGlzLmZsb2F0MzJbdysx MF09eCx0aGlzLmZsb2F0MzJbdysxMV09Yix0fSxlfShabik7dWEucHJvdG90 eXBlLmJ5dGVzUGVyRWxlbWVudD00OCxkbigiU3RydWN0QXJyYXlMYXlvdXQ2 aTExdWkxdWwyZjQ4Iix1YSk7dmFyIGhhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9u IGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19w cm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90 b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUu X3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4 QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9h dDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxh Y2VCYWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGVuZ3RoO3JldHVybiB0 aGlzLnJlc2l6ZShlKzEpLHRoaXMuZW1wbGFjZShlLHQpfSxlLnByb3RvdHlw ZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MSp0O3JldHVybiB0aGlz LmZsb2F0MzJbciswXT1lLHR9LGV9KFpuKTtoYS5wcm90b3R5cGUuYnl0ZXNQ ZXJFbGVtZW50PTQsZG4oIlN0cnVjdEFycmF5TGF5b3V0MWY0IixoYSk7dmFy IGZhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJn dW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBl PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNv bnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlv bigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZl ciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVy KX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIpe3Zh ciBuPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShuKzEpLHRoaXMu ZW1wbGFjZShuLHQsZSxyKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlv bih0LGUscixuKXt2YXIgYT0zKnQ7cmV0dXJuIHRoaXMuaW50MTZbYSswXT1l LHRoaXMuaW50MTZbYSsxXT1yLHRoaXMuaW50MTZbYSsyXT1uLHR9LGV9KFpu KTtmYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTYsZG4oIlN0cnVjdEFy cmF5TGF5b3V0M2k2IixmYSk7dmFyIHBhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9u IGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19w cm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90 b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUu X3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4 QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MzI9bmV3IFVpbnQz MkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5ldyBVaW50 MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFj ZUJhY2s9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubGVuZ3RoO3JldHVy biB0aGlzLnJlc2l6ZShuKzEpLHRoaXMuZW1wbGFjZShuLHQsZSxyKX0sZS5w cm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixuKXt2YXIgYT0yKnQs aT00KnQ7cmV0dXJuIHRoaXMudWludDMyW2ErMF09ZSx0aGlzLnVpbnQxNltp KzJdPXIsdGhpcy51aW50MTZbaSszXT1uLHR9LGV9KFpuKTtwYS5wcm90b3R5 cGUuYnl0ZXNQZXJFbGVtZW50PTgsZG4oIlN0cnVjdEFycmF5TGF5b3V0MXVs MnVpOCIscGEpO3ZhciBkYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5h cHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10 KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxl LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNo Vmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRo aXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0 aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVu Y3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJl c2l6ZShuKzEpLHRoaXMuZW1wbGFjZShuLHQsZSxyKX0sZS5wcm90b3R5cGUu ZW1wbGFjZT1mdW5jdGlvbih0LGUscixuKXt2YXIgYT0zKnQ7cmV0dXJuIHRo aXMudWludDE2W2ErMF09ZSx0aGlzLnVpbnQxNlthKzFdPXIsdGhpcy51aW50 MTZbYSsyXT1uLHR9LGV9KFpuKTtkYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVt ZW50PTYsZG4oIlN0cnVjdEFycmF5TGF5b3V0M3VpNiIsZGEpO3ZhciBnYT1m dW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmpl Y3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1 Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0 aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRo aXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0s ZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlKXt2YXIgcj10 aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUocisxKSx0aGlzLmVtcGxh Y2Uocix0LGUpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxy KXt2YXIgbj0yKnQ7cmV0dXJuIHRoaXMudWludDE2W24rMF09ZSx0aGlzLnVp bnQxNltuKzFdPXIsdH0sZX0oWm4pO2dhLnByb3RvdHlwZS5ieXRlc1BlckVs ZW1lbnQ9NCxkbigiU3RydWN0QXJyYXlMYXlvdXQydWk0IixnYSk7dmFyIHZh PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1l bnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9i amVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0 cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigp e3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciks dGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIp fSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0KXt2YXIgZT10 aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoZSsxKSx0aGlzLmVtcGxh Y2UoZSx0KX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUpe3Zh ciByPTEqdDtyZXR1cm4gdGhpcy51aW50MTZbciswXT1lLHR9LGV9KFpuKTt2 YS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTIsZG4oIlN0cnVjdEFycmF5 TGF5b3V0MXVpMiIsdmEpO3ZhciBtYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJv dG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90 eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9y ZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFy cmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQzMj1uZXcgRmxvYXQz MkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNl QmFjaz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoO3JldHVybiB0 aGlzLnJlc2l6ZShyKzEpLHRoaXMuZW1wbGFjZShyLHQsZSl9LGUucHJvdG90 eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPTIqdDtyZXR1cm4g dGhpcy5mbG9hdDMyW24rMF09ZSx0aGlzLmZsb2F0MzJbbisxXT1yLHR9LGV9 KFpuKTttYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTgsZG4oIlN0cnVj dEFycmF5TGF5b3V0MmY4IixtYSk7dmFyIHlhPWZ1bmN0aW9uKHQpe2Z1bmN0 aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUu X19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w cm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5 cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVp bnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBG bG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVt cGxhY2VCYWNrPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXMubGVuZ3Ro O3JldHVybiB0aGlzLnJlc2l6ZShhKzEpLHRoaXMuZW1wbGFjZShhLHQsZSxy LG4pfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7 dmFyIGk9NCp0O3JldHVybiB0aGlzLmZsb2F0MzJbaSswXT1lLHRoaXMuZmxv YXQzMltpKzFdPXIsdGhpcy5mbG9hdDMyW2krMl09bix0aGlzLmZsb2F0MzJb aSszXT1hLHR9LGV9KFpuKTt5YS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50 PTE2LGRuKCJTdHJ1Y3RBcnJheUxheW91dDRmMTYiLHlhKTt2YXIgeGE9ZnVu Y3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMp fXQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl KHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lO3Zh ciByPXthbmNob3JQb2ludFg6e2NvbmZpZ3VyYWJsZTohMH0sYW5jaG9yUG9p bnRZOntjb25maWd1cmFibGU6ITB9LHgxOntjb25maWd1cmFibGU6ITB9LHkx Ontjb25maWd1cmFibGU6ITB9LHgyOntjb25maWd1cmFibGU6ITB9LHkyOntj b25maWd1cmFibGU6ITB9LGZlYXR1cmVJbmRleDp7Y29uZmlndXJhYmxlOiEw fSxzb3VyY2VMYXllckluZGV4Ontjb25maWd1cmFibGU6ITB9LGJ1Y2tldElu ZGV4Ontjb25maWd1cmFibGU6ITB9LHJhZGl1czp7Y29uZmlndXJhYmxlOiEw fSxzaWduZWREaXN0YW5jZUZyb21BbmNob3I6e2NvbmZpZ3VyYWJsZTohMH0s YW5jaG9yUG9pbnQ6e2NvbmZpZ3VyYWJsZTohMH19O3JldHVybiByLmFuY2hv clBvaW50WC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJy YXkuaW50MTZbdGhpcy5fcG9zMiswXX0sci5hbmNob3JQb2ludFguc2V0PWZ1 bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIr MF09dH0sci5hbmNob3JQb2ludFkuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMV19LHIuYW5jaG9y UG9pbnRZLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5pbnQx Nlt0aGlzLl9wb3MyKzFdPXR9LHIueDEuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMl19LHIueDEu c2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMu X3BvczIrMl09dH0sci55MS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f c3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMiszXX0sci55MS5zZXQ9ZnVu Y3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisz XT10fSxyLngyLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RB cnJheS5pbnQxNlt0aGlzLl9wb3MyKzRdfSxyLngyLnNldD1mdW5jdGlvbih0 KXt0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzRdPXR9LHIu eTIuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5Lmlu dDE2W3RoaXMuX3BvczIrNV19LHIueTIuc2V0PWZ1bmN0aW9uKHQpe3RoaXMu X3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrNV09dH0sci5mZWF0dXJl SW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5 LnVpbnQzMlt0aGlzLl9wb3M0KzNdfSxyLmZlYXR1cmVJbmRleC5zZXQ9ZnVu Y3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQr M109dH0sci5zb3VyY2VMYXllckluZGV4LmdldD1mdW5jdGlvbigpe3JldHVy biB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMis4XX0sci5z b3VyY2VMYXllckluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RB cnJheS51aW50MTZbdGhpcy5fcG9zMis4XT10fSxyLmJ1Y2tldEluZGV4Lmdl dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZb dGhpcy5fcG9zMis5XX0sci5idWNrZXRJbmRleC5zZXQ9ZnVuY3Rpb24odCl7 dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrOV09dH0sci5y YWRpdXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5 LmludDE2W3RoaXMuX3BvczIrMTBdfSxyLnJhZGl1cy5zZXQ9ZnVuY3Rpb24o dCl7dGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxMF09dH0s ci5zaWduZWREaXN0YW5jZUZyb21BbmNob3IuZ2V0PWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMTFdfSxy LnNpZ25lZERpc3RhbmNlRnJvbUFuY2hvci5zZXQ9ZnVuY3Rpb24odCl7dGhp cy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxMV09dH0sci5hbmNo b3JQb2ludC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEodGhpcy5hbmNo b3JQb2ludFgsdGhpcy5hbmNob3JQb2ludFkpfSxPYmplY3QuZGVmaW5lUHJv cGVydGllcyhlLnByb3RvdHlwZSxyKSxlfShYbik7eGEucHJvdG90eXBlLnNp emU9MjQ7dmFyIGJhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5 KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUu cHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJv dG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9u KHQpe3JldHVybiBuZXcgeGEodGhpcyx0KX0sZX0ob2EpO2RuKCJDb2xsaXNp b25Cb3hBcnJheSIsYmEpO3ZhciBfYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dCYmKGUuX19wcm90b19fPXQp LGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUu cHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7dmFyIHI9e2FuY2hvclg6e2NvbmZp Z3VyYWJsZTohMH0sYW5jaG9yWTp7Y29uZmlndXJhYmxlOiEwfSxnbHlwaFN0 YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sbnVtR2x5cGhzOntjb25maWd1 cmFibGU6ITB9LHZlcnRleFN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0s bGluZVN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sbGluZUxlbmd0aDp7 Y29uZmlndXJhYmxlOiEwfSxzZWdtZW50Ontjb25maWd1cmFibGU6ITB9LGxv d2VyU2l6ZTp7Y29uZmlndXJhYmxlOiEwfSx1cHBlclNpemU6e2NvbmZpZ3Vy YWJsZTohMH0sbGluZU9mZnNldFg6e2NvbmZpZ3VyYWJsZTohMH0sbGluZU9m ZnNldFk6e2NvbmZpZ3VyYWJsZTohMH0sd3JpdGluZ01vZGU6e2NvbmZpZ3Vy YWJsZTohMH0scGxhY2VkT3JpZW50YXRpb246e2NvbmZpZ3VyYWJsZTohMH0s aGlkZGVuOntjb25maWd1cmFibGU6ITB9LGNyb3NzVGlsZUlEOntjb25maWd1 cmFibGU6ITB9fTtyZXR1cm4gci5hbmNob3JYLmdldD1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzBdfSxy LmFuY2hvclguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5Lmlu dDE2W3RoaXMuX3BvczIrMF09dH0sci5hbmNob3JZLmdldD1mdW5jdGlvbigp e3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzFd fSxyLmFuY2hvclkuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5 LmludDE2W3RoaXMuX3BvczIrMV09dH0sci5nbHlwaFN0YXJ0SW5kZXguZ2V0 PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0 aGlzLl9wb3MyKzJdfSxyLmdseXBoU3RhcnRJbmRleC5zZXQ9ZnVuY3Rpb24o dCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMl09dH0s ci5udW1HbHlwaHMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVj dEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzNdfSxyLm51bUdseXBocy5zZXQ9 ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3Bv czIrM109dH0sci52ZXJ0ZXhTdGFydEluZGV4LmdldD1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCsyXX0s ci52ZXJ0ZXhTdGFydEluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1 Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCsyXT10fSxyLmxpbmVTdGFydElu ZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51 aW50MzJbdGhpcy5fcG9zNCszXX0sci5saW5lU3RhcnRJbmRleC5zZXQ9ZnVu Y3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQr M109dH0sci5saW5lTGVuZ3RoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlz Ll9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCs0XX0sci5saW5lTGVu Z3RoLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJb dGhpcy5fcG9zNCs0XT10fSxyLnNlZ21lbnQuZ2V0PWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzEwXX0s ci5zZWdtZW50LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51 aW50MTZbdGhpcy5fcG9zMisxMF09dH0sci5sb3dlclNpemUuZ2V0PWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9w b3MyKzExXX0sci5sb3dlclNpemUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0 cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzExXT10fSxyLnVwcGVyU2l6 ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWlu dDE2W3RoaXMuX3BvczIrMTJdfSxyLnVwcGVyU2l6ZS5zZXQ9ZnVuY3Rpb24o dCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTJdPXR9 LHIubGluZU9mZnNldFguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0 cnVjdEFycmF5LmZsb2F0MzJbdGhpcy5fcG9zNCs3XX0sci5saW5lT2Zmc2V0 WC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0 aGlzLl9wb3M0KzddPXR9LHIubGluZU9mZnNldFkuZ2V0PWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmZsb2F0MzJbdGhpcy5fcG9zNCs4 XX0sci5saW5lT2Zmc2V0WS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0 QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzhdPXR9LHIud3JpdGluZ01vZGUu Z2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQ4 W3RoaXMuX3BvczErMzZdfSxyLndyaXRpbmdNb2RlLnNldD1mdW5jdGlvbih0 KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50OFt0aGlzLl9wb3MxKzM2XT10fSxy LnBsYWNlZE9yaWVudGF0aW9uLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlz Ll9zdHJ1Y3RBcnJheS51aW50OFt0aGlzLl9wb3MxKzM3XX0sci5wbGFjZWRP cmllbnRhdGlvbi5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXku dWludDhbdGhpcy5fcG9zMSszN109dH0sci5oaWRkZW4uZ2V0PWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQ4W3RoaXMuX3BvczEr MzhdfSxyLmhpZGRlbi5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJy YXkudWludDhbdGhpcy5fcG9zMSszOF09dH0sci5jcm9zc1RpbGVJRC5nZXQ9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDMyW3Ro aXMuX3BvczQrMTBdfSxyLmNyb3NzVGlsZUlELnNldD1mdW5jdGlvbih0KXt0 aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCsxMF09dH0sT2Jq ZWN0LmRlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsciksZX0oWG4pO19h LnByb3RvdHlwZS5zaXplPTQ0O3ZhciB3YT1mdW5jdGlvbih0KXtmdW5jdGlv biBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9f cHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJv dG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBl LmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IF9hKHRoaXMsdCl9LGV9KGNh KTtkbigiUGxhY2VkU3ltYm9sQXJyYXkiLHdhKTt2YXIga2E9ZnVuY3Rpb24o dCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXQmJihl Ll9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu cHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lO3ZhciByPXth bmNob3JYOntjb25maWd1cmFibGU6ITB9LGFuY2hvclk6e2NvbmZpZ3VyYWJs ZTohMH0scmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXg6e2NvbmZpZ3Vy YWJsZTohMH0sY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Ontjb25m aWd1cmFibGU6ITB9LGxlZnRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXg6e2Nv bmZpZ3VyYWJsZTohMH0sdmVydGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXg6 e2NvbmZpZ3VyYWJsZTohMH0sa2V5Ontjb25maWd1cmFibGU6ITB9LHRleHRC b3hTdGFydEluZGV4Ontjb25maWd1cmFibGU6ITB9LHRleHRCb3hFbmRJbmRl eDp7Y29uZmlndXJhYmxlOiEwfSx2ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4 Ontjb25maWd1cmFibGU6ITB9LHZlcnRpY2FsVGV4dEJveEVuZEluZGV4Ontj b25maWd1cmFibGU6ITB9LGljb25Cb3hTdGFydEluZGV4Ontjb25maWd1cmFi bGU6ITB9LGljb25Cb3hFbmRJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxmZWF0 dXJlSW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sbnVtSG9yaXpvbnRhbEdseXBo VmVydGljZXM6e2NvbmZpZ3VyYWJsZTohMH0sbnVtVmVydGljYWxHbHlwaFZl cnRpY2VzOntjb25maWd1cmFibGU6ITB9LG51bUljb25WZXJ0aWNlczp7Y29u ZmlndXJhYmxlOiEwfSxjcm9zc1RpbGVJRDp7Y29uZmlndXJhYmxlOiEwfSx0 ZXh0Qm94U2NhbGU6e2NvbmZpZ3VyYWJsZTohMH0scmFkaWFsVGV4dE9mZnNl dDp7Y29uZmlndXJhYmxlOiEwfX07cmV0dXJuIHIuYW5jaG9yWC5nZXQ9ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5f cG9zMiswXX0sci5hbmNob3JYLnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1 Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzBdPXR9LHIuYW5jaG9yWS5nZXQ9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhp cy5fcG9zMisxXX0sci5hbmNob3JZLnNldD1mdW5jdGlvbih0KXt0aGlzLl9z dHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzFdPXR9LHIucmlnaHRKdXN0 aWZpZWRUZXh0U3ltYm9sSW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMl19LHIucmlnaHRK dXN0aWZpZWRUZXh0U3ltYm9sSW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMu X3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMl09dH0sci5jZW50ZXJK dXN0aWZpZWRUZXh0U3ltYm9sSW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrM119LHIuY2Vu dGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LnNldD1mdW5jdGlvbih0KXt0 aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzNdPXR9LHIubGVm dEp1c3RpZmllZFRleHRTeW1ib2xJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMis0XX0sci5s ZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LnNldD1mdW5jdGlvbih0KXt0 aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzRdPXR9LHIudmVy dGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrNV19LHIu dmVydGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXguc2V0PWZ1bmN0aW9uKHQp e3RoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrNV09dH0sci5r ZXkuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVp bnQxNlt0aGlzLl9wb3MyKzZdfSxyLmtleS5zZXQ9ZnVuY3Rpb24odCl7dGhp cy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrNl09dH0sci50ZXh0 Qm94U3RhcnRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3Ry dWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrN119LHIudGV4dEJveFN0YXJ0 SW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQx Nlt0aGlzLl9wb3MyKzddPXR9LHIudGV4dEJveEVuZEluZGV4LmdldD1mdW5j dGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5f cG9zMis4XX0sci50ZXh0Qm94RW5kSW5kZXguc2V0PWZ1bmN0aW9uKHQpe3Ro aXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzhdPXR9LHIudmVy dGljYWxUZXh0Qm94U3RhcnRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrOV19LHIudmVy dGljYWxUZXh0Qm94U3RhcnRJbmRleC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5f c3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrOV09dH0sci52ZXJ0aWNh bFRleHRCb3hFbmRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f c3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTBdfSxyLnZlcnRpY2Fs VGV4dEJveEVuZEluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RB cnJheS51aW50MTZbdGhpcy5fcG9zMisxMF09dH0sci5pY29uQm94U3RhcnRJ bmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXku dWludDE2W3RoaXMuX3BvczIrMTFdfSxyLmljb25Cb3hTdGFydEluZGV4LnNl dD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5f cG9zMisxMV09dH0sci5pY29uQm94RW5kSW5kZXguZ2V0PWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzEy XX0sci5pY29uQm94RW5kSW5kZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0 cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzEyXT10fSxyLmZlYXR1cmVJ bmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXku dWludDE2W3RoaXMuX3BvczIrMTNdfSxyLmZlYXR1cmVJbmRleC5zZXQ9ZnVu Y3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIr MTNdPXR9LHIubnVtSG9yaXpvbnRhbEdseXBoVmVydGljZXMuZ2V0PWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9w b3MyKzE0XX0sci5udW1Ib3Jpem9udGFsR2x5cGhWZXJ0aWNlcy5zZXQ9ZnVu Y3Rpb24odCl7dGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIr MTRdPXR9LHIubnVtVmVydGljYWxHbHlwaFZlcnRpY2VzLmdldD1mdW5jdGlv bigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9z MisxNV19LHIubnVtVmVydGljYWxHbHlwaFZlcnRpY2VzLnNldD1mdW5jdGlv bih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxNV09 dH0sci5udW1JY29uVmVydGljZXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzE2XX0sci5udW1J Y29uVmVydGljZXMuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5 LnVpbnQxNlt0aGlzLl9wb3MyKzE2XT10fSxyLmNyb3NzVGlsZUlELmdldD1m dW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhp cy5fcG9zNCs5XX0sci5jcm9zc1RpbGVJRC5zZXQ9ZnVuY3Rpb24odCl7dGhp cy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrOV09dH0sci50ZXh0 Qm94U2NhbGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFy cmF5LmZsb2F0MzJbdGhpcy5fcG9zNCsxMF19LHIudGV4dEJveFNjYWxlLnNl dD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMu X3BvczQrMTBdPXR9LHIucmFkaWFsVGV4dE9mZnNldC5nZXQ9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0 KzExXX0sci5yYWRpYWxUZXh0T2Zmc2V0LnNldD1mdW5jdGlvbih0KXt0aGlz Ll9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTFdPXR9LE9iamVj dC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHIpLGV9KFhuKTtrYS5w cm90b3R5cGUuc2l6ZT00ODt2YXIgVGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g ZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3By b3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3Rv dHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5n ZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrYSh0aGlzLHQpfSxlfSh1YSk7 ZG4oIlN5bWJvbEluc3RhbmNlQXJyYXkiLFRhKTt2YXIgTWE9ZnVuY3Rpb24o dCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXQmJihl Ll9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu cHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lO3ZhciByPXtv ZmZzZXRYOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gci5vZmZzZXRYLmdl dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMy W3RoaXMuX3BvczQrMF19LHIub2Zmc2V0WC5zZXQ9ZnVuY3Rpb24odCl7dGhp cy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzBdPXR9LE9iamVj dC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHIpLGV9KFhuKTtNYS5w cm90b3R5cGUuc2l6ZT00O3ZhciBBYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJv dG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90 eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdl dG9mZnNldFg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmxvYXQzMlsxKnQr MF19LGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IE1h KHRoaXMsdCl9LGV9KGhhKTtkbigiR2x5cGhPZmZzZXRBcnJheSIsQWEpO3Zh ciBTYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFy Z3VtZW50cyl9dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVj dC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVj dG9yPWU7dmFyIHI9e3g6e2NvbmZpZ3VyYWJsZTohMH0seTp7Y29uZmlndXJh YmxlOiEwfSx0aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hvcjp7Y29uZmlndXJh YmxlOiEwfX07cmV0dXJuIHIueC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMiswXX0sci54LnNldD1m dW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3My KzBdPXR9LHIueS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0 QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxXX0sci55LnNldD1mdW5jdGlvbih0 KXt0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzFdPXR9LHIu dGlsZVVuaXREaXN0YW5jZUZyb21BbmNob3IuZ2V0PWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMl19LHIu dGlsZVVuaXREaXN0YW5jZUZyb21BbmNob3Iuc2V0PWZ1bmN0aW9uKHQpe3Ro aXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMl09dH0sT2JqZWN0 LmRlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsciksZX0oWG4pO1NhLnBy b3RvdHlwZS5zaXplPTY7dmFyIEVhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo KXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90 b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5 cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0 eD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnQxNlszKnQrMF19LGUucHJv dG90eXBlLmdldHk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW50MTZbMyp0 KzFdfSxlLnByb3RvdHlwZS5nZXR0aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hv cj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnQxNlszKnQrMl19LGUucHJv dG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFNhKHRoaXMsdCl9 LGV9KGZhKTtkbigiU3ltYm9sTGluZVZlcnRleEFycmF5IixFYSk7dmFyIExh PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1l bnRzKX10JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNy ZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9 ZTt2YXIgcj17ZmVhdHVyZUluZGV4Ontjb25maWd1cmFibGU6ITB9LHNvdXJj ZUxheWVySW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sYnVja2V0SW5kZXg6e2Nv bmZpZ3VyYWJsZTohMH19O3JldHVybiByLmZlYXR1cmVJbmRleC5nZXQ9ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMu X3BvczQrMF19LHIuZmVhdHVyZUluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlz Ll9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCswXT10fSxyLnNvdXJj ZUxheWVySW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVj dEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzJdfSxyLnNvdXJjZUxheWVySW5k ZXguc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0 aGlzLl9wb3MyKzJdPXR9LHIuYnVja2V0SW5kZXguZ2V0PWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzNd fSxyLmJ1Y2tldEluZGV4LnNldD1mdW5jdGlvbih0KXt0aGlzLl9zdHJ1Y3RB cnJheS51aW50MTZbdGhpcy5fcG9zMiszXT10fSxPYmplY3QuZGVmaW5lUHJv cGVydGllcyhlLnByb3RvdHlwZSxyKSxlfShYbik7TGEucHJvdG90eXBlLnNp emU9ODt2YXIgQ2E9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHko dGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5w cm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90 b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24o dCl7cmV0dXJuIG5ldyBMYSh0aGlzLHQpfSxlfShwYSk7ZG4oIkZlYXR1cmVJ bmRleEFycmF5IixDYSk7dmFyIFBhPUpuKFt7bmFtZToiYV9wb3MiLGNvbXBv bmVudHM6Mix0eXBlOiJJbnQxNiJ9XSw0KS5tZW1iZXJzLE9hPWZ1bmN0aW9u KHQpe3ZvaWQgMD09PXQmJih0PVtdKSx0aGlzLnNlZ21lbnRzPXR9O2Z1bmN0 aW9uIHphKHQsZSl7cmV0dXJuIDI1NioodD1jKE1hdGguZmxvb3IodCksMCwy NTUpKStjKE1hdGguZmxvb3IoZSksMCwyNTUpfU9hLnByb3RvdHlwZS5wcmVw YXJlU2VnbWVudD1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10aGlzLnNlZ21l bnRzW3RoaXMuc2VnbWVudHMubGVuZ3RoLTFdO3JldHVybiB0Pk9hLk1BWF9W RVJURVhfQVJSQVlfTEVOR1RIJiZ3KCJNYXggdmVydGljZXMgcGVyIHNlZ21l bnQgaXMgIitPYS5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSCsiOiBidWNrZXQg cmVxdWVzdGVkICIrdCksKCFhfHxhLnZlcnRleExlbmd0aCt0Pk9hLk1BWF9W RVJURVhfQVJSQVlfTEVOR1RIfHxhLnNvcnRLZXkhPT1uKSYmKGE9e3ZlcnRl eE9mZnNldDplLmxlbmd0aCxwcmltaXRpdmVPZmZzZXQ6ci5sZW5ndGgsdmVy dGV4TGVuZ3RoOjAscHJpbWl0aXZlTGVuZ3RoOjB9LHZvaWQgMCE9PW4mJihh LnNvcnRLZXk9biksdGhpcy5zZWdtZW50cy5wdXNoKGEpKSxhfSxPYS5wcm90 b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VnbWVudHN9LE9h LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10 aGlzLnNlZ21lbnRzO3Q8ZS5sZW5ndGg7dCs9MSl7dmFyIHI9ZVt0XTtmb3Io dmFyIG4gaW4gci52YW9zKXIudmFvc1tuXS5kZXN0cm95KCl9fSxPYS5zaW1w bGVTZWdtZW50PWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBuZXcgT2EoW3t2 ZXJ0ZXhPZmZzZXQ6dCxwcmltaXRpdmVPZmZzZXQ6ZSx2ZXJ0ZXhMZW5ndGg6 cixwcmltaXRpdmVMZW5ndGg6bix2YW9zOnt9LHNvcnRLZXk6MH1dKX0sT2Eu TUFYX1ZFUlRFWF9BUlJBWV9MRU5HVEg9TWF0aC5wb3coMiwxNiktMSxkbigi U2VnbWVudFZlY3RvciIsT2EpO3ZhciBJYT1mdW5jdGlvbigpe3RoaXMuaWRz PVtdLHRoaXMucG9zaXRpb25zPVtdLHRoaXMuaW5kZXhlZD0hMX07ZnVuY3Rp b24gRGEodCxlLHIpe3ZhciBuPXRbZV07dFtlXT10W3JdLHRbcl09bn1JYS5w cm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMuaWRzLnB1c2go dCksdGhpcy5wb3NpdGlvbnMucHVzaChlLHIsbil9LElhLnByb3RvdHlwZS5n ZXRQb3NpdGlvbnM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10aGlzLmlk cy5sZW5ndGgtMTtlPHI7KXt2YXIgbj1lK3I+PjE7dGhpcy5pZHNbbl0+PXQ/ cj1uOmU9bisxfWZvcih2YXIgYT1bXTt0aGlzLmlkc1tlXT09PXQ7KXt2YXIg aT10aGlzLnBvc2l0aW9uc1szKmVdLG89dGhpcy5wb3NpdGlvbnNbMyplKzFd LHM9dGhpcy5wb3NpdGlvbnNbMyplKzJdO2EucHVzaCh7aW5kZXg6aSxzdGFy dDpvLGVuZDpzfSksZSsrfXJldHVybiBhfSxJYS5zZXJpYWxpemU9ZnVuY3Rp b24odCxlKXt2YXIgcj1uZXcgRmxvYXQ2NEFycmF5KHQuaWRzKSxuPW5ldyBV aW50MzJBcnJheSh0LnBvc2l0aW9ucyk7cmV0dXJuIGZ1bmN0aW9uIHQoZSxy LG4sYSl7aWYoIShuPj1hKSl7Zm9yKHZhciBpPWVbbithPj4xXSxvPW4tMSxz PWErMTs7KXtkb3tvKyt9d2hpbGUoZVtvXTxpKTtkb3tzLS19d2hpbGUoZVtz XT5pKTtpZihvPj1zKWJyZWFrO0RhKGUsbyxzKSxEYShyLDMqbywzKnMpLERh KHIsMypvKzEsMypzKzEpLERhKHIsMypvKzIsMypzKzIpfXQoZSxyLG4scyks dChlLHIscysxLGEpfX0ocixuLDAsci5sZW5ndGgtMSksZS5wdXNoKHIuYnVm ZmVyLG4uYnVmZmVyKSx7aWRzOnIscG9zaXRpb25zOm59fSxJYS5kZXNlcmlh bGl6ZT1mdW5jdGlvbih0KXt2YXIgZT1uZXcgSWE7cmV0dXJuIGUuaWRzPXQu aWRzLGUucG9zaXRpb25zPXQucG9zaXRpb25zLGUuaW5kZXhlZD0hMCxlfSxk bigiRmVhdHVyZVBvc2l0aW9uTWFwIixJYSk7dmFyIFJhPWZ1bmN0aW9uKHQs ZSl7dGhpcy5nbD10LmdsLHRoaXMubG9jYXRpb249ZX0sRmE9ZnVuY3Rpb24o dCl7ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLGUsciksdGhpcy5jdXJy ZW50PTB9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1P YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25z dHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt0aGlzLmN1 cnJlbnQhPT10JiYodGhpcy5jdXJyZW50PXQsdGhpcy5nbC51bmlmb3JtMWko dGhpcy5sb2NhdGlvbix0KSl9LGV9KFJhKSxCYT1mdW5jdGlvbih0KXtmdW5j dGlvbiBlKGUscil7dC5jYWxsKHRoaXMsZSxyKSx0aGlzLmN1cnJlbnQ9MH1y ZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5j cmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9y PWUsZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudCE9 PXQmJih0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm0xZih0aGlzLmxv Y2F0aW9uLHQpKX0sZX0oUmEpLE5hPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo ZSxyKXt0LmNhbGwodGhpcyxlLHIpLHRoaXMuY3VycmVudD1bMCwwXX1yZXR1 cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVh dGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUs ZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3RbMF09PT10aGlzLmN1cnJl bnRbMF0mJnRbMV09PT10aGlzLmN1cnJlbnRbMV18fCh0aGlzLmN1cnJlbnQ9 dCx0aGlzLmdsLnVuaWZvcm0yZih0aGlzLmxvY2F0aW9uLHRbMF0sdFsxXSkp fSxlfShSYSksamE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIpe3QuY2Fs bCh0aGlzLGUsciksdGhpcy5jdXJyZW50PVswLDAsMF19cmV0dXJuIHQmJihl Ll9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu cHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90 eXBlLnNldD1mdW5jdGlvbih0KXt0WzBdPT09dGhpcy5jdXJyZW50WzBdJiZ0 WzFdPT09dGhpcy5jdXJyZW50WzFdJiZ0WzJdPT09dGhpcy5jdXJyZW50WzJd fHwodGhpcy5jdXJyZW50PXQsdGhpcy5nbC51bmlmb3JtM2YodGhpcy5sb2Nh dGlvbix0WzBdLHRbMV0sdFsyXSkpfSxlfShSYSksVmE9ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLGUsciksdGhpcy5jdXJyZW50 PVswLDAsMCwwXX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90 eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBl LmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3Rb MF09PT10aGlzLmN1cnJlbnRbMF0mJnRbMV09PT10aGlzLmN1cnJlbnRbMV0m JnRbMl09PT10aGlzLmN1cnJlbnRbMl0mJnRbM109PT10aGlzLmN1cnJlbnRb M118fCh0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm00Zih0aGlzLmxv Y2F0aW9uLHRbMF0sdFsxXSx0WzJdLHRbM10pKX0sZX0oUmEpLFVhPWZ1bmN0 aW9uKHQpe2Z1bmN0aW9uIGUoZSxyKXt0LmNhbGwodGhpcyxlLHIpLHRoaXMu Y3VycmVudD1XdC50cmFuc3BhcmVudH1yZXR1cm4gdCYmKGUuX19wcm90b19f PXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUp LGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0PWZ1 bmN0aW9uKHQpe3Qucj09PXRoaXMuY3VycmVudC5yJiZ0Lmc9PT10aGlzLmN1 cnJlbnQuZyYmdC5iPT09dGhpcy5jdXJyZW50LmImJnQuYT09PXRoaXMuY3Vy cmVudC5hfHwodGhpcy5jdXJyZW50PXQsdGhpcy5nbC51bmlmb3JtNGYodGhp cy5sb2NhdGlvbix0LnIsdC5nLHQuYix0LmEpKX0sZX0oUmEpLHFhPW5ldyBG bG9hdDMyQXJyYXkoMTYpLEhhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxy KXt0LmNhbGwodGhpcyxlLHIpLHRoaXMuY3VycmVudD1xYX1yZXR1cm4gdCYm KGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYm dC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90 b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe2lmKHRbMTJdIT09dGhpcy5jdXJyZW50 WzEyXXx8dFswXSE9PXRoaXMuY3VycmVudFswXSlyZXR1cm4gdGhpcy5jdXJy ZW50PXQsdm9pZCB0aGlzLmdsLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5sb2Nh dGlvbiwhMSx0KTtmb3IodmFyIGU9MTtlPDE2O2UrKylpZih0W2VdIT09dGhp cy5jdXJyZW50W2VdKXt0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm1N YXRyaXg0ZnYodGhpcy5sb2NhdGlvbiwhMSx0KTticmVha319LGV9KFJhKTtm dW5jdGlvbiBHYSh0KXtyZXR1cm5bemEoMjU1KnQuciwyNTUqdC5nKSx6YSgy NTUqdC5iLDI1NSp0LmEpXX12YXIgWWE9ZnVuY3Rpb24odCxlLHIpe3RoaXMu dmFsdWU9dCx0aGlzLm5hbWVzPWUsdGhpcy51bmlmb3JtTmFtZXM9dGhpcy5u YW1lcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInVfIit0fSksdGhpcy50eXBl PXIsdGhpcy5tYXhWYWx1ZT0tMS8wfTtZYS5wcm90b3R5cGUuZGVmaW5lcz1m dW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWVzLm1hcChmdW5jdGlvbih0KXty ZXR1cm4iI2RlZmluZSBIQVNfVU5JRk9STV91XyIrdH0pfSxZYS5wcm90b3R5 cGUuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zPWZ1bmN0aW9uKCl7fSxZ YS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5PWZ1bmN0aW9uKCl7fSxZ YS5wcm90b3R5cGUudXBkYXRlUGFpbnRBcnJheT1mdW5jdGlvbigpe30sWWEu cHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbigpe30sWWEucHJvdG90eXBlLmRl c3Ryb3k9ZnVuY3Rpb24oKXt9LFlhLnByb3RvdHlwZS5zZXRVbmlmb3Jtcz1m dW5jdGlvbih0LGUscixuKXtlLnNldChuLmNvbnN0YW50T3IodGhpcy52YWx1 ZSkpfSxZYS5wcm90b3R5cGUuZ2V0QmluZGluZz1mdW5jdGlvbih0LGUpe3Jl dHVybiJjb2xvciI9PT10aGlzLnR5cGU/bmV3IFVhKHQsZSk6bmV3IEJhKHQs ZSl9LFlhLnNlcmlhbGl6ZT1mdW5jdGlvbih0KXt2YXIgZT10LnZhbHVlLHI9 dC5uYW1lcyxuPXQudHlwZTtyZXR1cm57dmFsdWU6dm4oZSksbmFtZXM6cix0 eXBlOm59fSxZYS5kZXNlcmlhbGl6ZT1mdW5jdGlvbih0KXt2YXIgZT10LnZh bHVlLHI9dC5uYW1lcyxuPXQudHlwZTtyZXR1cm4gbmV3IFlhKG1uKGUpLHIs bil9O3ZhciBXYT1mdW5jdGlvbih0LGUscil7dGhpcy52YWx1ZT10LHRoaXMu bmFtZXM9ZSx0aGlzLnVuaWZvcm1OYW1lcz10aGlzLm5hbWVzLm1hcChmdW5j dGlvbih0KXtyZXR1cm4idV8iK3R9KSx0aGlzLnR5cGU9cix0aGlzLm1heFZh bHVlPS0xLzAsdGhpcy5wYXR0ZXJuUG9zaXRpb25zPXtwYXR0ZXJuVG86bnVs bCxwYXR0ZXJuRnJvbTpudWxsfX07V2EucHJvdG90eXBlLmRlZmluZXM9ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lcy5tYXAoZnVuY3Rpb24odCl7cmV0 dXJuIiNkZWZpbmUgSEFTX1VOSUZPUk1fdV8iK3R9KX0sV2EucHJvdG90eXBl LnBvcHVsYXRlUGFpbnRBcnJheT1mdW5jdGlvbigpe30sV2EucHJvdG90eXBl LnVwZGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24oKXt9LFdhLnByb3RvdHlwZS51 cGxvYWQ9ZnVuY3Rpb24oKXt9LFdhLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0 aW9uKCl7fSxXYS5wcm90b3R5cGUuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRp b25zPWZ1bmN0aW9uKHQsZSl7dGhpcy5wYXR0ZXJuUG9zaXRpb25zLnBhdHRl cm5Ubz10LnRsYnIsdGhpcy5wYXR0ZXJuUG9zaXRpb25zLnBhdHRlcm5Gcm9t PWUudGxicn0sV2EucHJvdG90eXBlLnNldFVuaWZvcm1zPWZ1bmN0aW9uKHQs ZSxyLG4sYSl7dmFyIGk9dGhpcy5wYXR0ZXJuUG9zaXRpb25zOyJ1X3BhdHRl cm5fdG8iPT09YSYmaS5wYXR0ZXJuVG8mJmUuc2V0KGkucGF0dGVyblRvKSwi dV9wYXR0ZXJuX2Zyb20iPT09YSYmaS5wYXR0ZXJuRnJvbSYmZS5zZXQoaS5w YXR0ZXJuRnJvbSl9LFdhLnByb3RvdHlwZS5nZXRCaW5kaW5nPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIG5ldyBWYSh0LGUpfTt2YXIgWGE9ZnVuY3Rpb24odCxl LHIsbil7dGhpcy5leHByZXNzaW9uPXQsdGhpcy5uYW1lcz1lLHRoaXMudHlw ZT1yLHRoaXMudW5pZm9ybU5hbWVzPXRoaXMubmFtZXMubWFwKGZ1bmN0aW9u KHQpe3JldHVybiJhXyIrdH0pLHRoaXMubWF4VmFsdWU9LTEvMCx0aGlzLnBh aW50VmVydGV4QXR0cmlidXRlcz1lLm1hcChmdW5jdGlvbih0KXtyZXR1cm57 bmFtZToiYV8iK3QsdHlwZToiRmxvYXQzMiIsY29tcG9uZW50czoiY29sb3Ii PT09cj8yOjEsb2Zmc2V0OjB9fSksdGhpcy5wYWludFZlcnRleEFycmF5PW5l dyBufTtYYS5wcm90b3R5cGUuZGVmaW5lcz1mdW5jdGlvbigpe3JldHVybltd fSxYYS5wcm90b3R5cGUuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zPWZ1 bmN0aW9uKCl7fSxYYS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5PWZ1 bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXMucGFpbnRWZXJ0ZXhBcnJheSxp PWEubGVuZ3RoO2EucmVzZXJ2ZSh0KTt2YXIgbz10aGlzLmV4cHJlc3Npb24u ZXZhbHVhdGUobmV3IFBuKDApLGUse30sbik7aWYoImNvbG9yIj09PXRoaXMu dHlwZSlmb3IodmFyIHM9R2EobyksbD1pO2w8dDtsKyspYS5lbXBsYWNlQmFj ayhzWzBdLHNbMV0pO2Vsc2V7Zm9yKHZhciBjPWk7Yzx0O2MrKylhLmVtcGxh Y2VCYWNrKG8pO3RoaXMubWF4VmFsdWU9TWF0aC5tYXgodGhpcy5tYXhWYWx1 ZSxvKX19LFhhLnByb3RvdHlwZS51cGRhdGVQYWludEFycmF5PWZ1bmN0aW9u KHQsZSxyLG4pe3ZhciBhPXRoaXMucGFpbnRWZXJ0ZXhBcnJheSxpPXRoaXMu ZXhwcmVzc2lvbi5ldmFsdWF0ZSh7em9vbTowfSxyLG4pO2lmKCJjb2xvciI9 PT10aGlzLnR5cGUpZm9yKHZhciBvPUdhKGkpLHM9dDtzPGU7cysrKWEuZW1w bGFjZShzLG9bMF0sb1sxXSk7ZWxzZXtmb3IodmFyIGw9dDtsPGU7bCsrKWEu ZW1wbGFjZShsLGkpO3RoaXMubWF4VmFsdWU9TWF0aC5tYXgodGhpcy5tYXhW YWx1ZSxpKX19LFhhLnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rpb24odCl7dGhp cy5wYWludFZlcnRleEFycmF5JiZ0aGlzLnBhaW50VmVydGV4QXJyYXkuYXJy YXlCdWZmZXImJih0aGlzLnBhaW50VmVydGV4QnVmZmVyJiZ0aGlzLnBhaW50 VmVydGV4QnVmZmVyLmJ1ZmZlcj90aGlzLnBhaW50VmVydGV4QnVmZmVyLnVw ZGF0ZURhdGEodGhpcy5wYWludFZlcnRleEFycmF5KTp0aGlzLnBhaW50VmVy dGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMucGFpbnRWZXJ0 ZXhBcnJheSx0aGlzLnBhaW50VmVydGV4QXR0cmlidXRlcyx0aGlzLmV4cHJl c3Npb24uaXNTdGF0ZURlcGVuZGVudCkpfSxYYS5wcm90b3R5cGUuZGVzdHJv eT1mdW5jdGlvbigpe3RoaXMucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMucGFp bnRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpfSxYYS5wcm90b3R5cGUuc2V0VW5p Zm9ybXM9ZnVuY3Rpb24odCxlKXtlLnNldCgwKX0sWGEucHJvdG90eXBlLmdl dEJpbmRpbmc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEJhKHQsZSl9O3Zh ciBaYT1mdW5jdGlvbih0LGUscixuLGEsaSl7dGhpcy5leHByZXNzaW9uPXQs dGhpcy5uYW1lcz1lLHRoaXMudW5pZm9ybU5hbWVzPXRoaXMubmFtZXMubWFw KGZ1bmN0aW9uKHQpe3JldHVybiJ1XyIrdCsiX3QifSksdGhpcy50eXBlPXIs dGhpcy51c2VJbnRlZ2VyWm9vbT1uLHRoaXMuem9vbT1hLHRoaXMubWF4VmFs dWU9LTEvMDt2YXIgbz1pO3RoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzPWUu bWFwKGZ1bmN0aW9uKHQpe3JldHVybntuYW1lOiJhXyIrdCx0eXBlOiJGbG9h dDMyIixjb21wb25lbnRzOiJjb2xvciI9PT1yPzQ6MixvZmZzZXQ6MH19KSx0 aGlzLnBhaW50VmVydGV4QXJyYXk9bmV3IG99O1phLnByb3RvdHlwZS5kZWZp bmVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LFphLnByb3RvdHlwZS5zZXRDb25z dGFudFBhdHRlcm5Qb3NpdGlvbnM9ZnVuY3Rpb24oKXt9LFphLnByb3RvdHlw ZS5wb3B1bGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9 dGhpcy5wYWludFZlcnRleEFycmF5LGk9YS5sZW5ndGg7YS5yZXNlcnZlKHQp O3ZhciBvPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShuZXcgUG4odGhpcy56 b29tKSxlLHt9LG4pLHM9dGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKG5ldyBQ bih0aGlzLnpvb20rMSksZSx7fSxuKTtpZigiY29sb3IiPT09dGhpcy50eXBl KWZvcih2YXIgbD1HYShvKSxjPUdhKHMpLHU9aTt1PHQ7dSsrKWEuZW1wbGFj ZUJhY2sobFswXSxsWzFdLGNbMF0sY1sxXSk7ZWxzZXtmb3IodmFyIGg9aTto PHQ7aCsrKWEuZW1wbGFjZUJhY2sobyxzKTt0aGlzLm1heFZhbHVlPU1hdGgu bWF4KHRoaXMubWF4VmFsdWUsbyxzKX19LFphLnByb3RvdHlwZS51cGRhdGVQ YWludEFycmF5PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXMucGFpbnRW ZXJ0ZXhBcnJheSxpPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZSh7em9vbTp0 aGlzLnpvb219LHIsbiksbz10aGlzLmV4cHJlc3Npb24uZXZhbHVhdGUoe3pv b206dGhpcy56b29tKzF9LHIsbik7aWYoImNvbG9yIj09PXRoaXMudHlwZSlm b3IodmFyIHM9R2EoaSksbD1HYShvKSxjPXQ7YzxlO2MrKylhLmVtcGxhY2Uo YyxzWzBdLHNbMV0sbFswXSxsWzFdKTtlbHNle2Zvcih2YXIgdT10O3U8ZTt1 KyspYS5lbXBsYWNlKHUsaSxvKTt0aGlzLm1heFZhbHVlPU1hdGgubWF4KHRo aXMubWF4VmFsdWUsaSxvKX19LFphLnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rp b24odCl7dGhpcy5wYWludFZlcnRleEFycmF5JiZ0aGlzLnBhaW50VmVydGV4 QXJyYXkuYXJyYXlCdWZmZXImJih0aGlzLnBhaW50VmVydGV4QnVmZmVyJiZ0 aGlzLnBhaW50VmVydGV4QnVmZmVyLmJ1ZmZlcj90aGlzLnBhaW50VmVydGV4 QnVmZmVyLnVwZGF0ZURhdGEodGhpcy5wYWludFZlcnRleEFycmF5KTp0aGlz LnBhaW50VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMu cGFpbnRWZXJ0ZXhBcnJheSx0aGlzLnBhaW50VmVydGV4QXR0cmlidXRlcyx0 aGlzLmV4cHJlc3Npb24uaXNTdGF0ZURlcGVuZGVudCkpfSxaYS5wcm90b3R5 cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMucGFpbnRWZXJ0ZXhCdWZmZXIm JnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpfSxaYS5wcm90b3R5 cGUuaW50ZXJwb2xhdGlvbkZhY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhp cy51c2VJbnRlZ2VyWm9vbT90aGlzLmV4cHJlc3Npb24uaW50ZXJwb2xhdGlv bkZhY3RvcihNYXRoLmZsb29yKHQpLHRoaXMuem9vbSx0aGlzLnpvb20rMSk6 dGhpcy5leHByZXNzaW9uLmludGVycG9sYXRpb25GYWN0b3IodCx0aGlzLnpv b20sdGhpcy56b29tKzEpfSxaYS5wcm90b3R5cGUuc2V0VW5pZm9ybXM9ZnVu Y3Rpb24odCxlLHIpe2Uuc2V0KHRoaXMuaW50ZXJwb2xhdGlvbkZhY3Rvcihy Lnpvb20pKX0sWmEucHJvdG90eXBlLmdldEJpbmRpbmc9ZnVuY3Rpb24odCxl KXtyZXR1cm4gbmV3IEJhKHQsZSl9O3ZhciBKYT1mdW5jdGlvbih0LGUscixu LGEsaSxvKXt0aGlzLmV4cHJlc3Npb249dCx0aGlzLm5hbWVzPWUsdGhpcy50 eXBlPXIsdGhpcy51bmlmb3JtTmFtZXM9dGhpcy5uYW1lcy5tYXAoZnVuY3Rp b24odCl7cmV0dXJuInVfIit0KyJfdCJ9KSx0aGlzLnVzZUludGVnZXJab29t PW4sdGhpcy56b29tPWEsdGhpcy5tYXhWYWx1ZT0tMS8wLHRoaXMubGF5ZXJJ ZD1vLHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzPWUubWFwKGZ1bmN0aW9u KHQpe3JldHVybntuYW1lOiJhXyIrdCx0eXBlOiJVaW50MTYiLGNvbXBvbmVu dHM6NCxvZmZzZXQ6MH19KSx0aGlzLnpvb21JblBhaW50VmVydGV4QXJyYXk9 bmV3IGksdGhpcy56b29tT3V0UGFpbnRWZXJ0ZXhBcnJheT1uZXcgaX07SmEu cHJvdG90eXBlLmRlZmluZXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sSmEucHJv dG90eXBlLnNldENvbnN0YW50UGF0dGVyblBvc2l0aW9ucz1mdW5jdGlvbigp e30sSmEucHJvdG90eXBlLnBvcHVsYXRlUGFpbnRBcnJheT1mdW5jdGlvbih0 LGUscil7dmFyIG49dGhpcy56b29tSW5QYWludFZlcnRleEFycmF5LGE9dGhp cy56b29tT3V0UGFpbnRWZXJ0ZXhBcnJheSxpPXRoaXMubGF5ZXJJZCxvPW4u bGVuZ3RoO2lmKG4ucmVzZXJ2ZSh0KSxhLnJlc2VydmUodCksciYmZS5wYXR0 ZXJucyYmZS5wYXR0ZXJuc1tpXSl7dmFyIHM9ZS5wYXR0ZXJuc1tpXSxsPXMu bWluLGM9cy5taWQsdT1zLm1heCxoPXJbbF0sZj1yW2NdLHA9clt1XTtpZigh aHx8IWZ8fCFwKXJldHVybjtmb3IodmFyIGQ9bztkPHQ7ZCsrKW4uZW1wbGFj ZUJhY2soZi50bFswXSxmLnRsWzFdLGYuYnJbMF0sZi5iclsxXSxoLnRsWzBd LGgudGxbMV0saC5iclswXSxoLmJyWzFdKSxhLmVtcGxhY2VCYWNrKGYudGxb MF0sZi50bFsxXSxmLmJyWzBdLGYuYnJbMV0scC50bFswXSxwLnRsWzFdLHAu YnJbMF0scC5iclsxXSl9fSxKYS5wcm90b3R5cGUudXBkYXRlUGFpbnRBcnJh eT1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPXRoaXMuem9vbUluUGFpbnRW ZXJ0ZXhBcnJheSxvPXRoaXMuem9vbU91dFBhaW50VmVydGV4QXJyYXkscz10 aGlzLmxheWVySWQ7aWYoYSYmci5wYXR0ZXJucyYmci5wYXR0ZXJuc1tzXSl7 dmFyIGw9ci5wYXR0ZXJuc1tzXSxjPWwubWluLHU9bC5taWQsaD1sLm1heCxm PWFbY10scD1hW3VdLGQ9YVtoXTtpZighZnx8IXB8fCFkKXJldHVybjtmb3Io dmFyIGc9dDtnPGU7ZysrKWkuZW1wbGFjZShnLHAudGxbMF0scC50bFsxXSxw LmJyWzBdLHAuYnJbMV0sZi50bFswXSxmLnRsWzFdLGYuYnJbMF0sZi5iclsx XSksby5lbXBsYWNlKGcscC50bFswXSxwLnRsWzFdLHAuYnJbMF0scC5iclsx XSxkLnRsWzBdLGQudGxbMV0sZC5iclswXSxkLmJyWzFdKX19LEphLnByb3Rv dHlwZS51cGxvYWQ9ZnVuY3Rpb24odCl7dGhpcy56b29tSW5QYWludFZlcnRl eEFycmF5JiZ0aGlzLnpvb21JblBhaW50VmVydGV4QXJyYXkuYXJyYXlCdWZm ZXImJnRoaXMuem9vbU91dFBhaW50VmVydGV4QXJyYXkmJnRoaXMuem9vbU91 dFBhaW50VmVydGV4QXJyYXkuYXJyYXlCdWZmZXImJih0aGlzLnpvb21JblBh aW50VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuem9v bUluUGFpbnRWZXJ0ZXhBcnJheSx0aGlzLnBhaW50VmVydGV4QXR0cmlidXRl cyx0aGlzLmV4cHJlc3Npb24uaXNTdGF0ZURlcGVuZGVudCksdGhpcy56b29t T3V0UGFpbnRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhp cy56b29tT3V0UGFpbnRWZXJ0ZXhBcnJheSx0aGlzLnBhaW50VmVydGV4QXR0 cmlidXRlcyx0aGlzLmV4cHJlc3Npb24uaXNTdGF0ZURlcGVuZGVudCkpfSxK YS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuem9vbU91dFBh aW50VmVydGV4QnVmZmVyJiZ0aGlzLnpvb21PdXRQYWludFZlcnRleEJ1ZmZl ci5kZXN0cm95KCksdGhpcy56b29tSW5QYWludFZlcnRleEJ1ZmZlciYmdGhp cy56b29tSW5QYWludFZlcnRleEJ1ZmZlci5kZXN0cm95KCl9LEphLnByb3Rv dHlwZS5zZXRVbmlmb3Jtcz1mdW5jdGlvbih0LGUpe2Uuc2V0KDApfSxKYS5w cm90b3R5cGUuZ2V0QmluZGluZz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcg QmEodCxlKX07dmFyIEthPWZ1bmN0aW9uKCl7dGhpcy5iaW5kZXJzPXt9LHRo aXMuY2FjaGVLZXk9IiIsdGhpcy5fYnVmZmVycz1bXSx0aGlzLl9mZWF0dXJl TWFwPW5ldyBJYSx0aGlzLl9idWZmZXJPZmZzZXQ9MH07S2EuY3JlYXRlRHlu YW1pYz1mdW5jdGlvbih0LGUscil7dmFyIG49bmV3IEthLGE9W107Zm9yKHZh ciBpIGluIHQucGFpbnQuX3ZhbHVlcylpZihyKGkpKXt2YXIgbz10LnBhaW50 LmdldChpKTtpZihvIGluc3RhbmNlb2YgQm4mJnVyKG8ucHJvcGVydHkuc3Bl Y2lmaWNhdGlvbikpe3ZhciBzPSRhKGksdC50eXBlKSxsPW8ucHJvcGVydHku c3BlY2lmaWNhdGlvbi50eXBlLGM9by5wcm9wZXJ0eS51c2VJbnRlZ2VyWm9v bTtpZigiY3Jvc3MtZmFkZWQiPT09by5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9u WyJwcm9wZXJ0eS10eXBlIl18fCJjcm9zcy1mYWRlZC1kYXRhLWRyaXZlbiI9 PT1vLnByb3BlcnR5LnNwZWNpZmljYXRpb25bInByb3BlcnR5LXR5cGUiXSlp ZigiY29uc3RhbnQiPT09by52YWx1ZS5raW5kKW4uYmluZGVyc1tpXT1uZXcg V2Eoby52YWx1ZS52YWx1ZSxzLGwpLGEucHVzaCgiL3VfIitpKTtlbHNle3Zh ciB1PXRpKGksbCwic291cmNlIik7bi5iaW5kZXJzW2ldPW5ldyBKYShvLnZh bHVlLHMsbCxjLGUsdSx0LmlkKSxhLnB1c2goIi9hXyIraSl9ZWxzZSBpZigi Y29uc3RhbnQiPT09by52YWx1ZS5raW5kKW4uYmluZGVyc1tpXT1uZXcgWWEo by52YWx1ZS52YWx1ZSxzLGwpLGEucHVzaCgiL3VfIitpKTtlbHNlIGlmKCJz b3VyY2UiPT09by52YWx1ZS5raW5kKXt2YXIgaD10aShpLGwsInNvdXJjZSIp O24uYmluZGVyc1tpXT1uZXcgWGEoby52YWx1ZSxzLGwsaCksYS5wdXNoKCIv YV8iK2kpfWVsc2V7dmFyIGY9dGkoaSxsLCJjb21wb3NpdGUiKTtuLmJpbmRl cnNbaV09bmV3IFphKG8udmFsdWUscyxsLGMsZSxmKSxhLnB1c2goIi96XyIr aSl9fX1yZXR1cm4gbi5jYWNoZUtleT1hLnNvcnQoKS5qb2luKCIiKSxufSxL YS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5cz1mdW5jdGlvbih0LGUs cixuLGEpe2Zvcih2YXIgaSBpbiB0aGlzLmJpbmRlcnMpdGhpcy5iaW5kZXJz W2ldLnBvcHVsYXRlUGFpbnRBcnJheSh0LGUsbixhKTt2b2lkIDAhPT1lLmlk JiZ0aGlzLl9mZWF0dXJlTWFwLmFkZCgrZS5pZCxyLHRoaXMuX2J1ZmZlck9m ZnNldCx0KSx0aGlzLl9idWZmZXJPZmZzZXQ9dH0sS2EucHJvdG90eXBlLnNl dENvbnN0YW50UGF0dGVyblBvc2l0aW9ucz1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgciBpbiB0aGlzLmJpbmRlcnMpdGhpcy5iaW5kZXJzW3JdLnNldENvbnN0 YW50UGF0dGVyblBvc2l0aW9ucyh0LGUpfSxLYS5wcm90b3R5cGUudXBkYXRl UGFpbnRBcnJheXM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ITE7Zm9yKHZh ciBpIGluIHQpZm9yKHZhciBvPTAscz10aGlzLl9mZWF0dXJlTWFwLmdldFBv c2l0aW9ucygraSk7bzxzLmxlbmd0aDtvKz0xKXt2YXIgbD1zW29dLGM9ZS5m ZWF0dXJlKGwuaW5kZXgpO2Zvcih2YXIgdSBpbiB0aGlzLmJpbmRlcnMpe3Zh ciBoPXRoaXMuYmluZGVyc1t1XTtpZighKGggaW5zdGFuY2VvZiBZYXx8aCBp bnN0YW5jZW9mIFdhKSYmITA9PT1oLmV4cHJlc3Npb24uaXNTdGF0ZURlcGVu ZGVudCl7dmFyIGY9ci5wYWludC5nZXQodSk7aC5leHByZXNzaW9uPWYudmFs dWUsaC51cGRhdGVQYWludEFycmF5KGwuc3RhcnQsbC5lbmQsYyx0W2ldLG4p LGE9ITB9fX1yZXR1cm4gYX0sS2EucHJvdG90eXBlLmRlZmluZXM9ZnVuY3Rp b24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcy5iaW5kZXJzKXQucHVz aC5hcHBseSh0LHRoaXMuYmluZGVyc1tlXS5kZWZpbmVzKCkpO3JldHVybiB0 fSxLYS5wcm90b3R5cGUuZ2V0UGFpbnRWZXJ0ZXhCdWZmZXJzPWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX2J1ZmZlcnN9LEthLnByb3RvdHlwZS5nZXRVbmlm b3Jtcz1mdW5jdGlvbih0LGUpe3ZhciByPVtdO2Zvcih2YXIgbiBpbiB0aGlz LmJpbmRlcnMpZm9yKHZhciBhPXRoaXMuYmluZGVyc1tuXSxpPTAsbz1hLnVu aWZvcm1OYW1lcztpPG8ubGVuZ3RoO2krPTEpe3ZhciBzPW9baV07aWYoZVtz XSl7dmFyIGw9YS5nZXRCaW5kaW5nKHQsZVtzXSk7ci5wdXNoKHtuYW1lOnMs cHJvcGVydHk6bixiaW5kaW5nOmx9KX19cmV0dXJuIHJ9LEthLnByb3RvdHlw ZS5zZXRVbmlmb3Jtcz1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9MCxp PWU7YTxpLmxlbmd0aDthKz0xKXt2YXIgbz1pW2FdLHM9by5uYW1lLGw9by5w cm9wZXJ0eSxjPW8uYmluZGluZzt0aGlzLmJpbmRlcnNbbF0uc2V0VW5pZm9y bXModCxjLG4sci5nZXQobCkscyl9fSxLYS5wcm90b3R5cGUudXBkYXRlUGF0 dGVyblBhaW50QnVmZmVycz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFy IHIgaW4gdGhpcy5iaW5kZXJzKXt2YXIgbj10aGlzLmJpbmRlcnNbcl07aWYo biBpbnN0YW5jZW9mIEphKXt2YXIgYT0yPT09dC5mcm9tU2NhbGU/bi56b29t SW5QYWludFZlcnRleEJ1ZmZlcjpuLnpvb21PdXRQYWludFZlcnRleEJ1ZmZl cjthJiZlLnB1c2goYSl9ZWxzZShuIGluc3RhbmNlb2YgWGF8fG4gaW5zdGFu Y2VvZiBaYSkmJm4ucGFpbnRWZXJ0ZXhCdWZmZXImJmUucHVzaChuLnBhaW50 VmVydGV4QnVmZmVyKX10aGlzLl9idWZmZXJzPWV9LEthLnByb3RvdHlwZS51 cGxvYWQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuYmluZGVycyl0 aGlzLmJpbmRlcnNbZV0udXBsb2FkKHQpO3ZhciByPVtdO2Zvcih2YXIgbiBp biB0aGlzLmJpbmRlcnMpe3ZhciBhPXRoaXMuYmluZGVyc1tuXTsoYSBpbnN0 YW5jZW9mIFhhfHxhIGluc3RhbmNlb2YgWmEpJiZhLnBhaW50VmVydGV4QnVm ZmVyJiZyLnB1c2goYS5wYWludFZlcnRleEJ1ZmZlcil9dGhpcy5fYnVmZmVy cz1yfSxLYS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2Zvcih2YXIg dCBpbiB0aGlzLmJpbmRlcnMpdGhpcy5iaW5kZXJzW3RdLmRlc3Ryb3koKX07 dmFyIFFhPWZ1bmN0aW9uKHQsZSxyLG4pe3ZvaWQgMD09PW4mJihuPWZ1bmN0 aW9uKCl7cmV0dXJuITB9KSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz17 fTtmb3IodmFyIGE9MCxpPWU7YTxpLmxlbmd0aDthKz0xKXt2YXIgbz1pW2Fd O3RoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW28uaWRdPUthLmNyZWF0ZUR5 bmFtaWMobyxyLG4pLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW28uaWRd LmxheW91dEF0dHJpYnV0ZXM9dH10aGlzLm5lZWRzVXBsb2FkPSExfTtmdW5j dGlvbiAkYSh0LGUpe3JldHVybnsidGV4dC1vcGFjaXR5IjpbIm9wYWNpdHki XSwiaWNvbi1vcGFjaXR5IjpbIm9wYWNpdHkiXSwidGV4dC1jb2xvciI6WyJm aWxsX2NvbG9yIl0sImljb24tY29sb3IiOlsiZmlsbF9jb2xvciJdLCJ0ZXh0 LWhhbG8tY29sb3IiOlsiaGFsb19jb2xvciJdLCJpY29uLWhhbG8tY29sb3Ii OlsiaGFsb19jb2xvciJdLCJ0ZXh0LWhhbG8tYmx1ciI6WyJoYWxvX2JsdXIi XSwiaWNvbi1oYWxvLWJsdXIiOlsiaGFsb19ibHVyIl0sInRleHQtaGFsby13 aWR0aCI6WyJoYWxvX3dpZHRoIl0sImljb24taGFsby13aWR0aCI6WyJoYWxv X3dpZHRoIl0sImxpbmUtZ2FwLXdpZHRoIjpbImdhcHdpZHRoIl0sImxpbmUt cGF0dGVybiI6WyJwYXR0ZXJuX3RvIiwicGF0dGVybl9mcm9tIl0sImZpbGwt cGF0dGVybiI6WyJwYXR0ZXJuX3RvIiwicGF0dGVybl9mcm9tIl0sImZpbGwt ZXh0cnVzaW9uLXBhdHRlcm4iOlsicGF0dGVybl90byIsInBhdHRlcm5fZnJv bSJdfVt0XXx8W3QucmVwbGFjZShlKyItIiwiIikucmVwbGFjZSgvLS9nLCJf IildfWZ1bmN0aW9uIHRpKHQsZSxyKXt2YXIgbj17Y29sb3I6e3NvdXJjZTpt YSxjb21wb3NpdGU6eWF9LG51bWJlcjp7c291cmNlOmhhLGNvbXBvc2l0ZTpt YX19LGE9ZnVuY3Rpb24odCl7cmV0dXJueyJsaW5lLXBhdHRlcm4iOntzb3Vy Y2U6cmEsY29tcG9zaXRlOnJhfSwiZmlsbC1wYXR0ZXJuIjp7c291cmNlOnJh LGNvbXBvc2l0ZTpyYX0sImZpbGwtZXh0cnVzaW9uLXBhdHRlcm4iOntzb3Vy Y2U6cmEsY29tcG9zaXRlOnJhfX1bdF19KHQpO3JldHVybiBhJiZhW3JdfHxu W2VdW3JdfVFhLnByb3RvdHlwZS5wb3B1bGF0ZVBhaW50QXJyYXlzPWZ1bmN0 aW9uKHQsZSxyLG4sYSl7Zm9yKHZhciBpIGluIHRoaXMucHJvZ3JhbUNvbmZp Z3VyYXRpb25zKXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW2ldLnBvcHVs YXRlUGFpbnRBcnJheXModCxlLHIsbixhKTt0aGlzLm5lZWRzVXBsb2FkPSEw fSxRYS5wcm90b3R5cGUudXBkYXRlUGFpbnRBcnJheXM9ZnVuY3Rpb24odCxl LHIsbil7Zm9yKHZhciBhPTAsaT1yO2E8aS5sZW5ndGg7YSs9MSl7dmFyIG89 aVthXTt0aGlzLm5lZWRzVXBsb2FkPXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRp b25zW28uaWRdLnVwZGF0ZVBhaW50QXJyYXlzKHQsZSxvLG4pfHx0aGlzLm5l ZWRzVXBsb2FkfX0sUWEucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbdF19LFFhLnByb3RvdHlw ZS51cGxvYWQ9ZnVuY3Rpb24odCl7aWYodGhpcy5uZWVkc1VwbG9hZCl7Zm9y KHZhciBlIGluIHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zKXRoaXMucHJv Z3JhbUNvbmZpZ3VyYXRpb25zW2VdLnVwbG9hZCh0KTt0aGlzLm5lZWRzVXBs b2FkPSExfX0sUWEucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtmb3Io dmFyIHQgaW4gdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMpdGhpcy5wcm9n cmFtQ29uZmlndXJhdGlvbnNbdF0uZGVzdHJveSgpfSxkbigiQ29uc3RhbnRC aW5kZXIiLFlhKSxkbigiQ3Jvc3NGYWRlZENvbnN0YW50QmluZGVyIixXYSks ZG4oIlNvdXJjZUV4cHJlc3Npb25CaW5kZXIiLFhhKSxkbigiQ3Jvc3NGYWRl ZENvbXBvc2l0ZUJpbmRlciIsSmEpLGRuKCJDb21wb3NpdGVFeHByZXNzaW9u QmluZGVyIixaYSksZG4oIlByb2dyYW1Db25maWd1cmF0aW9uIixLYSx7b21p dDpbIl9idWZmZXJzIl19KSxkbigiUHJvZ3JhbUNvbmZpZ3VyYXRpb25TZXQi LFFhKTt2YXIgZWk9ODE5MixyaT0oMTUse21pbjotMSpNYXRoLnBvdygyLDE0 KSxtYXg6TWF0aC5wb3coMiwxNCktMX0pO2Z1bmN0aW9uIG5pKHQpe2Zvcih2 YXIgZT1laS90LmV4dGVudCxyPXQubG9hZEdlb21ldHJ5KCksbj0wO248ci5s ZW5ndGg7bisrKWZvcih2YXIgYT1yW25dLGk9MDtpPGEubGVuZ3RoO2krKyl7 dmFyIG89YVtpXTtvLng9TWF0aC5yb3VuZChvLngqZSksby55PU1hdGgucm91 bmQoby55KmUpLChvLng8cmkubWlufHxvLng+cmkubWF4fHxvLnk8cmkubWlu fHxvLnk+cmkubWF4KSYmKHcoIkdlb21ldHJ5IGV4Y2VlZHMgYWxsb3dlZCBl eHRlbnQsIHJlZHVjZSB5b3VyIHZlY3RvciB0aWxlIGJ1ZmZlciBzaXplIiks by54PWMoby54LHJpLm1pbixyaS5tYXgpLG8ueT1jKG8ueSxyaS5taW4scmku bWF4KSl9cmV0dXJuIHJ9ZnVuY3Rpb24gYWkodCxlLHIsbixhKXt0LmVtcGxh Y2VCYWNrKDIqZSsobisxKS8yLDIqcisoYSsxKS8yKX12YXIgaWk9ZnVuY3Rp b24odCl7dGhpcy56b29tPXQuem9vbSx0aGlzLm92ZXJzY2FsaW5nPXQub3Zl cnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXllcklkcz10 aGlzLmxheWVycy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSx0aGlz LmluZGV4PXQuaW5kZXgsdGhpcy5oYXNQYXR0ZXJuPSExLHRoaXMubGF5b3V0 VmVydGV4QXJyYXk9bmV3IFFuLHRoaXMuaW5kZXhBcnJheT1uZXcgZGEsdGhp cy5zZWdtZW50cz1uZXcgT2EsdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnM9 bmV3IFFhKFBhLHQubGF5ZXJzLHQuem9vbSksdGhpcy5zdGF0ZURlcGVuZGVu dExheWVySWRzPXRoaXMubGF5ZXJzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1 cm4gdC5pc1N0YXRlRGVwZW5kZW50KCl9KS5tYXAoZnVuY3Rpb24odCl7cmV0 dXJuIHQuaWR9KX07ZnVuY3Rpb24gb2kodCxlKXtmb3IodmFyIHI9MDtyPHQu bGVuZ3RoO3IrKylpZihnaShlLHRbcl0pKXJldHVybiEwO2Zvcih2YXIgbj0w O248ZS5sZW5ndGg7bisrKWlmKGdpKHQsZVtuXSkpcmV0dXJuITA7cmV0dXJu ISF1aSh0LGUpfWZ1bmN0aW9uIHNpKHQsZSxyKXtyZXR1cm4hIWdpKHQsZSl8 fCEhZmkoZSx0LHIpfWZ1bmN0aW9uIGxpKHQsZSl7aWYoMT09PXQubGVuZ3Ro KXJldHVybiBkaShlLHRbMF0pO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisr KWZvcih2YXIgbj1lW3JdLGE9MDthPG4ubGVuZ3RoO2ErKylpZihnaSh0LG5b YV0pKXJldHVybiEwO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKWlmKGRp KGUsdFtpXSkpcmV0dXJuITA7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKysp aWYodWkodCxlW29dKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBjaSh0 LGUscil7aWYodC5sZW5ndGg+MSl7aWYodWkodCxlKSlyZXR1cm4hMDtmb3Io dmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihmaShlW25dLHQscikpcmV0dXJu ITB9Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspaWYoZmkodFthXSxlLHIp KXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHVpKHQsZSl7aWYoMD09PXQu bGVuZ3RofHwwPT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciByPTA7cjx0 Lmxlbmd0aC0xO3IrKylmb3IodmFyIG49dFtyXSxhPXRbcisxXSxpPTA7aTxl Lmxlbmd0aC0xO2krKylpZihoaShuLGEsZVtpXSxlW2krMV0pKXJldHVybiEw O3JldHVybiExfWZ1bmN0aW9uIGhpKHQsZSxyLG4pe3JldHVybiBrKHQscixu KSE9PWsoZSxyLG4pJiZrKHQsZSxyKSE9PWsodCxlLG4pfWZ1bmN0aW9uIGZp KHQsZSxyKXt2YXIgbj1yKnI7aWYoMT09PWUubGVuZ3RoKXJldHVybiB0LmRp c3RTcXIoZVswXSk8bjtmb3IodmFyIGE9MTthPGUubGVuZ3RoO2ErKylpZihw aSh0LGVbYS0xXSxlW2FdKTxuKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9u IHBpKHQsZSxyKXt2YXIgbj1lLmRpc3RTcXIocik7aWYoMD09PW4pcmV0dXJu IHQuZGlzdFNxcihlKTt2YXIgYT0oKHQueC1lLngpKihyLngtZS54KSsodC55 LWUueSkqKHIueS1lLnkpKS9uO3JldHVybiBhPDA/dC5kaXN0U3FyKGUpOmE+ MT90LmRpc3RTcXIocik6dC5kaXN0U3FyKHIuc3ViKGUpLl9tdWx0KGEpLl9h ZGQoZSkpfWZ1bmN0aW9uIGRpKHQsZSl7Zm9yKHZhciByLG4sYSxpPSExLG89 MDtvPHQubGVuZ3RoO28rKylmb3IodmFyIHM9MCxsPShyPXRbb10pLmxlbmd0 aC0xO3M8ci5sZW5ndGg7bD1zKyspbj1yW3NdLGE9cltsXSxuLnk+ZS55IT1h Lnk+ZS55JiZlLng8KGEueC1uLngpKihlLnktbi55KS8oYS55LW4ueSkrbi54 JiYoaT0haSk7cmV0dXJuIGl9ZnVuY3Rpb24gZ2kodCxlKXtmb3IodmFyIHI9 ITEsbj0wLGE9dC5sZW5ndGgtMTtuPHQubGVuZ3RoO2E9bisrKXt2YXIgaT10 W25dLG89dFthXTtpLnk+ZS55IT1vLnk+ZS55JiZlLng8KG8ueC1pLngpKihl LnktaS55KS8oby55LWkueSkraS54JiYocj0hcil9cmV0dXJuIHJ9ZnVuY3Rp b24gdmkodCxlLHIpe3ZhciBuPXJbMF0sYT1yWzJdO2lmKHQueDxuLngmJmUu eDxuLnh8fHQueD5hLngmJmUueD5hLnh8fHQueTxuLnkmJmUueTxuLnl8fHQu eT5hLnkmJmUueT5hLnkpcmV0dXJuITE7dmFyIGk9ayh0LGUsclswXSk7cmV0 dXJuIGkhPT1rKHQsZSxyWzFdKXx8aSE9PWsodCxlLHJbMl0pfHxpIT09ayh0 LGUsclszXSl9ZnVuY3Rpb24gbWkodCxlLHIpe3ZhciBuPWUucGFpbnQuZ2V0 KHQpLnZhbHVlO3JldHVybiJjb25zdGFudCI9PT1uLmtpbmQ/bi52YWx1ZTpy LnByb2dyYW1Db25maWd1cmF0aW9ucy5nZXQoZS5pZCkuYmluZGVyc1t0XS5t YXhWYWx1ZX1mdW5jdGlvbiB5aSh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRbMF0q dFswXSt0WzFdKnRbMV0pfWZ1bmN0aW9uIHhpKHQsZSxyLG4saSl7aWYoIWVb MF0mJiFlWzFdKXJldHVybiB0O3ZhciBvPWEuY29udmVydChlKS5fbXVsdChp KTsidmlld3BvcnQiPT09ciYmby5fcm90YXRlKC1uKTtmb3IodmFyIHM9W10s bD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgYz10W2xdO3MucHVzaChjLnN1Yihv KSl9cmV0dXJuIHN9aWkucHJvdG90eXBlLnBvcHVsYXRlPWZ1bmN0aW9uKHQs ZSl7dmFyIHI9dGhpcy5sYXllcnNbMF0sbj1bXSxhPW51bGw7ImNpcmNsZSI9 PT1yLnR5cGUmJihhPXIubGF5b3V0LmdldCgiY2lyY2xlLXNvcnQta2V5Iikp O2Zvcih2YXIgaT0wLG89dDtpPG8ubGVuZ3RoO2krPTEpe3ZhciBzPW9baV0s bD1zLmZlYXR1cmUsYz1zLmluZGV4LHU9cy5zb3VyY2VMYXllckluZGV4O2lm KHRoaXMubGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyKG5ldyBQbih0aGlzLnpv b20pLGwpKXt2YXIgaD1uaShsKSxmPWE/YS5ldmFsdWF0ZShsLHt9KTp2b2lk IDAscD17aWQ6bC5pZCxwcm9wZXJ0aWVzOmwucHJvcGVydGllcyx0eXBlOmwu dHlwZSxzb3VyY2VMYXllckluZGV4OnUsaW5kZXg6YyxnZW9tZXRyeTpoLHBh dHRlcm5zOnt9LHNvcnRLZXk6Zn07bi5wdXNoKHApfX1hJiZuLnNvcnQoZnVu Y3Rpb24odCxlKXtyZXR1cm4gdC5zb3J0S2V5LWUuc29ydEtleX0pO2Zvcih2 YXIgZD0wLGc9bjtkPGcubGVuZ3RoO2QrPTEpe3ZhciB2PWdbZF0sbT12LHk9 bS5nZW9tZXRyeSx4PW0uaW5kZXgsYj1tLnNvdXJjZUxheWVySW5kZXgsXz10 W3hdLmZlYXR1cmU7dGhpcy5hZGRGZWF0dXJlKHYseSx4KSxlLmZlYXR1cmVJ bmRleC5pbnNlcnQoXyx5LHgsYix0aGlzLmluZGV4KX19LGlpLnByb3RvdHlw ZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuc3RhdGVEZXBlbmRlbnRM YXllcnMubGVuZ3RoJiZ0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGRh dGVQYWludEFycmF5cyh0LGUsdGhpcy5zdGF0ZURlcGVuZGVudExheWVycyxy KX0saWkucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09 PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RofSxpaS5wcm90b3R5cGUu dXBsb2FkUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVwbG9hZGVk fHx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZH0saWku cHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0KXt0aGlzLnVwbG9hZGVkfHwo dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIo dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxQYSksdGhpcy5pbmRleEJ1ZmZlcj10 LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSkpLHRoaXMucHJv Z3JhbUNvbmZpZ3VyYXRpb25zLnVwbG9hZCh0KSx0aGlzLnVwbG9hZGVkPSEw fSxpaS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubGF5b3V0 VmVydGV4QnVmZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJv eSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNv bmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3ko KSl9LGlpLnByb3RvdHlwZS5hZGRGZWF0dXJlPWZ1bmN0aW9uKHQsZSxyKXtm b3IodmFyIG49MCxhPWU7bjxhLmxlbmd0aDtuKz0xKWZvcih2YXIgaT0wLG89 YVtuXTtpPG8ubGVuZ3RoO2krPTEpe3ZhciBzPW9baV0sbD1zLngsYz1zLnk7 aWYoIShsPDB8fGw+PWVpfHxjPDB8fGM+PWVpKSl7dmFyIHU9dGhpcy5zZWdt ZW50cy5wcmVwYXJlU2VnbWVudCg0LHRoaXMubGF5b3V0VmVydGV4QXJyYXks dGhpcy5pbmRleEFycmF5LHQuc29ydEtleSksaD11LnZlcnRleExlbmd0aDth aSh0aGlzLmxheW91dFZlcnRleEFycmF5LGwsYywtMSwtMSksYWkodGhpcy5s YXlvdXRWZXJ0ZXhBcnJheSxsLGMsMSwtMSksYWkodGhpcy5sYXlvdXRWZXJ0 ZXhBcnJheSxsLGMsMSwxKSxhaSh0aGlzLmxheW91dFZlcnRleEFycmF5LGws YywtMSwxKSx0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2soaCxoKzEsaCsy KSx0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2soaCxoKzMsaCsyKSx1LnZl cnRleExlbmd0aCs9NCx1LnByaW1pdGl2ZUxlbmd0aCs9Mn19dGhpcy5wcm9n cmFtQ29uZmlndXJhdGlvbnMucG9wdWxhdGVQYWludEFycmF5cyh0aGlzLmxh eW91dFZlcnRleEFycmF5Lmxlbmd0aCx0LHIse30pfSxkbigiQ2lyY2xlQnVj a2V0IixpaSx7b21pdDpbImxheWVycyJdfSk7dmFyIGJpLF9pPW5ldyBHbih7 ImNpcmNsZS1zb3J0LWtleSI6bmV3IFZuKFR0LmxheW91dF9jaXJjbGVbImNp cmNsZS1zb3J0LWtleSJdKX0pLHdpPXtwYWludDpuZXcgR24oeyJjaXJjbGUt cmFkaXVzIjpuZXcgVm4oVHQucGFpbnRfY2lyY2xlWyJjaXJjbGUtcmFkaXVz Il0pLCJjaXJjbGUtY29sb3IiOm5ldyBWbihUdC5wYWludF9jaXJjbGVbImNp cmNsZS1jb2xvciJdKSwiY2lyY2xlLWJsdXIiOm5ldyBWbihUdC5wYWludF9j aXJjbGVbImNpcmNsZS1ibHVyIl0pLCJjaXJjbGUtb3BhY2l0eSI6bmV3IFZu KFR0LnBhaW50X2NpcmNsZVsiY2lyY2xlLW9wYWNpdHkiXSksImNpcmNsZS10 cmFuc2xhdGUiOm5ldyBqbihUdC5wYWludF9jaXJjbGVbImNpcmNsZS10cmFu c2xhdGUiXSksImNpcmNsZS10cmFuc2xhdGUtYW5jaG9yIjpuZXcgam4oVHQu cGFpbnRfY2lyY2xlWyJjaXJjbGUtdHJhbnNsYXRlLWFuY2hvciJdKSwiY2ly Y2xlLXBpdGNoLXNjYWxlIjpuZXcgam4oVHQucGFpbnRfY2lyY2xlWyJjaXJj bGUtcGl0Y2gtc2NhbGUiXSksImNpcmNsZS1waXRjaC1hbGlnbm1lbnQiOm5l dyBqbihUdC5wYWludF9jaXJjbGVbImNpcmNsZS1waXRjaC1hbGlnbm1lbnQi XSksImNpcmNsZS1zdHJva2Utd2lkdGgiOm5ldyBWbihUdC5wYWludF9jaXJj bGVbImNpcmNsZS1zdHJva2Utd2lkdGgiXSksImNpcmNsZS1zdHJva2UtY29s b3IiOm5ldyBWbihUdC5wYWludF9jaXJjbGVbImNpcmNsZS1zdHJva2UtY29s b3IiXSksImNpcmNsZS1zdHJva2Utb3BhY2l0eSI6bmV3IFZuKFR0LnBhaW50 X2NpcmNsZVsiY2lyY2xlLXN0cm9rZS1vcGFjaXR5Il0pfSksbGF5b3V0Ol9p fSxraT0idW5kZWZpbmVkIiE9dHlwZW9mIEZsb2F0MzJBcnJheT9GbG9hdDMy QXJyYXk6QXJyYXk7ZnVuY3Rpb24gVGkodCxlLHIpe3ZhciBuPWVbMF0sYT1l WzFdLGk9ZVsyXSxvPWVbM107cmV0dXJuIHRbMF09clswXSpuK3JbNF0qYSty WzhdKmkrclsxMl0qbyx0WzFdPXJbMV0qbityWzVdKmErcls5XSppK3JbMTNd Km8sdFsyXT1yWzJdKm4rcls2XSphK3JbMTBdKmkrclsxNF0qbyx0WzNdPXJb M10qbityWzddKmErclsxMV0qaStyWzE1XSpvLHR9TWF0aC5oeXBvdHx8KE1h dGguaHlwb3Q9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLGU9MCxy PWFyZ3VtZW50cy5sZW5ndGg7ci0tOyllKz10W3JdKnRbcl07cmV0dXJuIE1h dGguc3FydChlKX0pLGJpPW5ldyBraSgzKSxraSE9RmxvYXQzMkFycmF5JiYo YmlbMF09MCxiaVsxXT0wLGJpWzJdPTApLGZ1bmN0aW9uKCl7dmFyIHQ9bmV3 IGtpKDQpO2tpIT1GbG9hdDMyQXJyYXkmJih0WzBdPTAsdFsxXT0wLHRbMl09 MCx0WzNdPTApfSgpO3ZhciBNaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUp e3QuY2FsbCh0aGlzLGUsd2kpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCks ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5w cm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5jcmVhdGVCdWNr ZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBpaSh0KX0sZS5wcm90b3R5cGUu cXVlcnlSYWRpdXM9ZnVuY3Rpb24odCl7dmFyIGU9dDtyZXR1cm4gbWkoImNp cmNsZS1yYWRpdXMiLHRoaXMsZSkrbWkoImNpcmNsZS1zdHJva2Utd2lkdGgi LHRoaXMsZSkreWkodGhpcy5wYWludC5nZXQoImNpcmNsZS10cmFuc2xhdGUi KSl9LGUucHJvdG90eXBlLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmU9ZnVuY3Rp b24odCxlLHIsbixhLGksbyxzKXtmb3IodmFyIGw9eGkodCx0aGlzLnBhaW50 LmdldCgiY2lyY2xlLXRyYW5zbGF0ZSIpLHRoaXMucGFpbnQuZ2V0KCJjaXJj bGUtdHJhbnNsYXRlLWFuY2hvciIpLGkuYW5nbGUsbyksYz10aGlzLnBhaW50 LmdldCgiY2lyY2xlLXJhZGl1cyIpLmV2YWx1YXRlKGUscikrdGhpcy5wYWlu dC5nZXQoImNpcmNsZS1zdHJva2Utd2lkdGgiKS5ldmFsdWF0ZShlLHIpLHU9 Im1hcCI9PT10aGlzLnBhaW50LmdldCgiY2lyY2xlLXBpdGNoLWFsaWdubWVu dCIpLGg9dT9sOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGwubWFwKGZ1bmN0aW9u KHQpe3JldHVybiBBaSh0LGUpfSl9KDAscyksZj11P2MqbzpjLHA9MCxkPW47 cDxkLmxlbmd0aDtwKz0xKWZvcih2YXIgZz0wLHY9ZFtwXTtnPHYubGVuZ3Ro O2crPTEpe3ZhciBtPXZbZ10seT11P206QWkobSxzKSx4PWYsYj1UaShbXSxb bS54LG0ueSwwLDFdLHMpO2lmKCJ2aWV3cG9ydCI9PT10aGlzLnBhaW50Lmdl dCgiY2lyY2xlLXBpdGNoLXNjYWxlIikmJiJtYXAiPT09dGhpcy5wYWludC5n ZXQoImNpcmNsZS1waXRjaC1hbGlnbm1lbnQiKT94Kj1iWzNdL2kuY2FtZXJh VG9DZW50ZXJEaXN0YW5jZToibWFwIj09PXRoaXMucGFpbnQuZ2V0KCJjaXJj bGUtcGl0Y2gtc2NhbGUiKSYmInZpZXdwb3J0Ij09PXRoaXMucGFpbnQuZ2V0 KCJjaXJjbGUtcGl0Y2gtYWxpZ25tZW50IikmJih4Kj1pLmNhbWVyYVRvQ2Vu dGVyRGlzdGFuY2UvYlszXSksc2koaCx5LHgpKXJldHVybiEwfXJldHVybiEx fSxlfShZbik7ZnVuY3Rpb24gQWkodCxlKXt2YXIgcj1UaShbXSxbdC54LHQu eSwwLDFdLGUpO3JldHVybiBuZXcgYShyWzBdL3JbM10sclsxXS9yWzNdKX12 YXIgU2k9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxh cmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5 cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUu Y29uc3RydWN0b3I9ZSxlfShpaSk7ZnVuY3Rpb24gRWkodCxlLHIsbil7dmFy IGE9ZS53aWR0aCxpPWUuaGVpZ2h0O2lmKG4pe2lmKG4gaW5zdGFuY2VvZiBV aW50OENsYW1wZWRBcnJheSluPW5ldyBVaW50OEFycmF5KG4uYnVmZmVyKTtl bHNlIGlmKG4ubGVuZ3RoIT09YSppKnIpdGhyb3cgbmV3IFJhbmdlRXJyb3Io Im1pc21hdGNoZWQgaW1hZ2Ugc2l6ZSIpfWVsc2Ugbj1uZXcgVWludDhBcnJh eShhKmkqcik7cmV0dXJuIHQud2lkdGg9YSx0LmhlaWdodD1pLHQuZGF0YT1u LHR9ZnVuY3Rpb24gTGkodCxlLHIpe3ZhciBuPWUud2lkdGgsYT1lLmhlaWdo dDtpZihuIT09dC53aWR0aHx8YSE9PXQuaGVpZ2h0KXt2YXIgaT1FaSh7fSx7 d2lkdGg6bixoZWlnaHQ6YX0scik7Q2kodCxpLHt4OjAseTowfSx7eDowLHk6 MH0se3dpZHRoOk1hdGgubWluKHQud2lkdGgsbiksaGVpZ2h0Ok1hdGgubWlu KHQuaGVpZ2h0LGEpfSxyKSx0LndpZHRoPW4sdC5oZWlnaHQ9YSx0LmRhdGE9 aS5kYXRhfX1mdW5jdGlvbiBDaSh0LGUscixuLGEsaSl7aWYoMD09PWEud2lk dGh8fDA9PT1hLmhlaWdodClyZXR1cm4gZTtpZihhLndpZHRoPnQud2lkdGh8 fGEuaGVpZ2h0PnQuaGVpZ2h0fHxyLng+dC53aWR0aC1hLndpZHRofHxyLnk+ dC5oZWlnaHQtYS5oZWlnaHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBv ZiByYW5nZSBzb3VyY2UgY29vcmRpbmF0ZXMgZm9yIGltYWdlIGNvcHkiKTtp ZihhLndpZHRoPmUud2lkdGh8fGEuaGVpZ2h0PmUuaGVpZ2h0fHxuLng+ZS53 aWR0aC1hLndpZHRofHxuLnk+ZS5oZWlnaHQtYS5oZWlnaHQpdGhyb3cgbmV3 IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBkZXN0aW5hdGlvbiBjb29yZGlu YXRlcyBmb3IgaW1hZ2UgY29weSIpO2Zvcih2YXIgbz10LmRhdGEscz1lLmRh dGEsbD0wO2w8YS5oZWlnaHQ7bCsrKWZvcih2YXIgYz0oKHIueStsKSp0Lndp ZHRoK3IueCkqaSx1PSgobi55K2wpKmUud2lkdGgrbi54KSppLGg9MDtoPGEu d2lkdGgqaTtoKyspc1t1K2hdPW9bYytoXTtyZXR1cm4gZX1kbigiSGVhdG1h cEJ1Y2tldCIsU2kse29taXQ6WyJsYXllcnMiXX0pO3ZhciBQaT1mdW5jdGlv bih0LGUpe0VpKHRoaXMsdCwxLGUpfTtQaS5wcm90b3R5cGUucmVzaXplPWZ1 bmN0aW9uKHQpe0xpKHRoaXMsdCwxKX0sUGkucHJvdG90eXBlLmNsb25lPWZ1 bmN0aW9uKCl7cmV0dXJuIG5ldyBQaSh7d2lkdGg6dGhpcy53aWR0aCxoZWln aHQ6dGhpcy5oZWlnaHR9LG5ldyBVaW50OEFycmF5KHRoaXMuZGF0YSkpfSxQ aS5jb3B5PWZ1bmN0aW9uKHQsZSxyLG4sYSl7Q2kodCxlLHIsbixhLDEpfTt2 YXIgT2k9ZnVuY3Rpb24odCxlKXtFaSh0aGlzLHQsNCxlKX07T2kucHJvdG90 eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXtMaSh0aGlzLHQsNCl9LE9pLnByb3Rv dHlwZS5yZXBsYWNlPWZ1bmN0aW9uKHQsZSl7ZT90aGlzLmRhdGEuc2V0KHQp OnQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheT90aGlzLmRhdGE9bmV3 IFVpbnQ4QXJyYXkodC5idWZmZXIpOnRoaXMuZGF0YT10fSxPaS5wcm90b3R5 cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE9pKHt3aWR0aDp0aGlz LndpZHRoLGhlaWdodDp0aGlzLmhlaWdodH0sbmV3IFVpbnQ4QXJyYXkodGhp cy5kYXRhKSl9LE9pLmNvcHk9ZnVuY3Rpb24odCxlLHIsbixhKXtDaSh0LGUs cixuLGEsNCl9LGRuKCJBbHBoYUltYWdlIixQaSksZG4oIlJHQkFJbWFnZSIs T2kpO3ZhciB6aT17cGFpbnQ6bmV3IEduKHsiaGVhdG1hcC1yYWRpdXMiOm5l dyBWbihUdC5wYWludF9oZWF0bWFwWyJoZWF0bWFwLXJhZGl1cyJdKSwiaGVh dG1hcC13ZWlnaHQiOm5ldyBWbihUdC5wYWludF9oZWF0bWFwWyJoZWF0bWFw LXdlaWdodCJdKSwiaGVhdG1hcC1pbnRlbnNpdHkiOm5ldyBqbihUdC5wYWlu dF9oZWF0bWFwWyJoZWF0bWFwLWludGVuc2l0eSJdKSwiaGVhdG1hcC1jb2xv ciI6bmV3IEhuKFR0LnBhaW50X2hlYXRtYXBbImhlYXRtYXAtY29sb3IiXSks ImhlYXRtYXAtb3BhY2l0eSI6bmV3IGpuKFR0LnBhaW50X2hlYXRtYXBbImhl YXRtYXAtb3BhY2l0eSJdKX0pfTtmdW5jdGlvbiBJaSh0LGUpe2Zvcih2YXIg cj1uZXcgVWludDhBcnJheSgxMDI0KSxuPXt9LGE9MCxpPTA7YTwyNTY7YSsr LGkrPTQpe25bZV09YS8yNTU7dmFyIG89dC5ldmFsdWF0ZShuKTtyW2krMF09 TWF0aC5mbG9vcigyNTUqby5yL28uYSkscltpKzFdPU1hdGguZmxvb3IoMjU1 Km8uZy9vLmEpLHJbaSsyXT1NYXRoLmZsb29yKDI1NSpvLmIvby5hKSxyW2kr M109TWF0aC5mbG9vcigyNTUqby5hKX1yZXR1cm4gbmV3IE9pKHt3aWR0aDoy NTYsaGVpZ2h0OjF9LHIpfXZhciBEaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KGUpe3QuY2FsbCh0aGlzLGUsemkpLHRoaXMuX3VwZGF0ZUNvbG9yUmFtcCgp fXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0 LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0 b3I9ZSxlLnByb3RvdHlwZS5jcmVhdGVCdWNrZXQ9ZnVuY3Rpb24odCl7cmV0 dXJuIG5ldyBTaSh0KX0sZS5wcm90b3R5cGUuX2hhbmRsZVNwZWNpYWxQYWlu dFByb3BlcnR5VXBkYXRlPWZ1bmN0aW9uKHQpeyJoZWF0bWFwLWNvbG9yIj09 PXQmJnRoaXMuX3VwZGF0ZUNvbG9yUmFtcCgpfSxlLnByb3RvdHlwZS5fdXBk YXRlQ29sb3JSYW1wPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdHJhbnNpdGlv bmFibGVQYWludC5fdmFsdWVzWyJoZWF0bWFwLWNvbG9yIl0udmFsdWUuZXhw cmVzc2lvbjt0aGlzLmNvbG9yUmFtcD1JaSh0LCJoZWF0bWFwRGVuc2l0eSIp LHRoaXMuY29sb3JSYW1wVGV4dHVyZT1udWxsfSxlLnByb3RvdHlwZS5yZXNp emU9ZnVuY3Rpb24oKXt0aGlzLmhlYXRtYXBGYm8mJih0aGlzLmhlYXRtYXBG Ym8uZGVzdHJveSgpLHRoaXMuaGVhdG1hcEZibz1udWxsKX0sZS5wcm90b3R5 cGUucXVlcnlSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZS5wcm90b3R5 cGUucXVlcnlJbnRlcnNlY3RzRmVhdHVyZT1mdW5jdGlvbigpe3JldHVybiEx fSxlLnByb3RvdHlwZS5oYXNPZmZzY3JlZW5QYXNzPWZ1bmN0aW9uKCl7cmV0 dXJuIDAhPT10aGlzLnBhaW50LmdldCgiaGVhdG1hcC1vcGFjaXR5IikmJiJu b25lIiE9PXRoaXMudmlzaWJpbGl0eX0sZX0oWW4pLFJpPXtwYWludDpuZXcg R24oeyJoaWxsc2hhZGUtaWxsdW1pbmF0aW9uLWRpcmVjdGlvbiI6bmV3IGpu KFR0LnBhaW50X2hpbGxzaGFkZVsiaGlsbHNoYWRlLWlsbHVtaW5hdGlvbi1k aXJlY3Rpb24iXSksImhpbGxzaGFkZS1pbGx1bWluYXRpb24tYW5jaG9yIjpu ZXcgam4oVHQucGFpbnRfaGlsbHNoYWRlWyJoaWxsc2hhZGUtaWxsdW1pbmF0 aW9uLWFuY2hvciJdKSwiaGlsbHNoYWRlLWV4YWdnZXJhdGlvbiI6bmV3IGpu KFR0LnBhaW50X2hpbGxzaGFkZVsiaGlsbHNoYWRlLWV4YWdnZXJhdGlvbiJd KSwiaGlsbHNoYWRlLXNoYWRvdy1jb2xvciI6bmV3IGpuKFR0LnBhaW50X2hp bGxzaGFkZVsiaGlsbHNoYWRlLXNoYWRvdy1jb2xvciJdKSwiaGlsbHNoYWRl LWhpZ2hsaWdodC1jb2xvciI6bmV3IGpuKFR0LnBhaW50X2hpbGxzaGFkZVsi aGlsbHNoYWRlLWhpZ2hsaWdodC1jb2xvciJdKSwiaGlsbHNoYWRlLWFjY2Vu dC1jb2xvciI6bmV3IGpuKFR0LnBhaW50X2hpbGxzaGFkZVsiaGlsbHNoYWRl LWFjY2VudC1jb2xvciJdKX0pfSxGaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KGUpe3QuY2FsbCh0aGlzLGUsUmkpfXJldHVybiB0JiYoZS5fX3Byb3RvX189 dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSks ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5oYXNPZmZz Y3JlZW5QYXNzPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLnBhaW50Lmdl dCgiaGlsbHNoYWRlLWV4YWdnZXJhdGlvbiIpJiYibm9uZSIhPT10aGlzLnZp c2liaWxpdHl9LGV9KFluKSxCaT1Kbihbe25hbWU6ImFfcG9zIixjb21wb25l bnRzOjIsdHlwZToiSW50MTYifV0sNCkubWVtYmVycyxOaT1WaSxqaT1WaTtm dW5jdGlvbiBWaSh0LGUscil7cj1yfHwyO3ZhciBuLGEsaSxvLHMsbCxjLHU9 ZSYmZS5sZW5ndGgsaD11P2VbMF0qcjp0Lmxlbmd0aCxmPVVpKHQsMCxoLHIs ITApLHA9W107aWYoIWZ8fGYubmV4dD09PWYucHJldilyZXR1cm4gcDtpZih1 JiYoZj1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpLG8scz1bXTtmb3IoYT0w LGk9ZS5sZW5ndGg7YTxpO2ErKykobz1VaSh0LGVbYV0qbixhPGktMT9lW2Er MV0qbjp0Lmxlbmd0aCxuLCExKSk9PT1vLm5leHQmJihvLnN0ZWluZXI9ITAp LHMucHVzaCgkaShvKSk7Zm9yKHMuc29ydChaaSksYT0wO2E8cy5sZW5ndGg7 YSsrKUppKHNbYV0scikscj1xaShyLHIubmV4dCk7cmV0dXJuIHJ9KHQsZSxm LHIpKSx0Lmxlbmd0aD44MCpyKXtuPWk9dFswXSxhPW89dFsxXTtmb3IodmFy IGQ9cjtkPGg7ZCs9cikocz10W2RdKTxuJiYobj1zKSwobD10W2QrMV0pPGEm JihhPWwpLHM+aSYmKGk9cyksbD5vJiYobz1sKTtjPTAhPT0oYz1NYXRoLm1h eChpLW4sby1hKSk/MS9jOjB9cmV0dXJuIEhpKGYscCxyLG4sYSxjKSxwfWZ1 bmN0aW9uIFVpKHQsZSxyLG4sYSl7dmFyIGksbztpZihhPT09Zm8odCxlLHIs bik+MClmb3IoaT1lO2k8cjtpKz1uKW89Y28oaSx0W2ldLHRbaSsxXSxvKTtl bHNlIGZvcihpPXItbjtpPj1lO2ktPW4pbz1jbyhpLHRbaV0sdFtpKzFdLG8p O3JldHVybiBvJiZubyhvLG8ubmV4dCkmJih1byhvKSxvPW8ubmV4dCksb31m dW5jdGlvbiBxaSh0LGUpe2lmKCF0KXJldHVybiB0O2V8fChlPXQpO3ZhciBy LG49dDtkb3tpZihyPSExLG4uc3RlaW5lcnx8IW5vKG4sbi5uZXh0KSYmMCE9 PXJvKG4ucHJldixuLG4ubmV4dCkpbj1uLm5leHQ7ZWxzZXtpZih1byhuKSwo bj1lPW4ucHJldik9PT1uLm5leHQpYnJlYWs7cj0hMH19d2hpbGUocnx8biE9 PWUpO3JldHVybiBlfWZ1bmN0aW9uIEhpKHQsZSxyLG4sYSxpLG8pe2lmKHQp eyFvJiZpJiZmdW5jdGlvbih0LGUscixuKXt2YXIgYT10O2Rve251bGw9PT1h LnomJihhLno9UWkoYS54LGEueSxlLHIsbikpLGEucHJldlo9YS5wcmV2LGEu bmV4dFo9YS5uZXh0LGE9YS5uZXh0fXdoaWxlKGEhPT10KTthLnByZXZaLm5l eHRaPW51bGwsYS5wcmV2Wj1udWxsLGZ1bmN0aW9uKHQpe3ZhciBlLHIsbixh LGksbyxzLGwsYz0xO2Rve2ZvcihyPXQsdD1udWxsLGk9bnVsbCxvPTA7cjsp e2ZvcihvKyssbj1yLHM9MCxlPTA7ZTxjJiYocysrLG49bi5uZXh0Wik7ZSsr KTtmb3IobD1jO3M+MHx8bD4wJiZuOykwIT09cyYmKDA9PT1sfHwhbnx8ci56 PD1uLnopPyhhPXIscj1yLm5leHRaLHMtLSk6KGE9bixuPW4ubmV4dFosbC0t KSxpP2kubmV4dFo9YTp0PWEsYS5wcmV2Wj1pLGk9YTtyPW59aS5uZXh0Wj1u dWxsLGMqPTJ9d2hpbGUobz4xKX0oYSl9KHQsbixhLGkpO2Zvcih2YXIgcyxs LGM9dDt0LnByZXYhPT10Lm5leHQ7KWlmKHM9dC5wcmV2LGw9dC5uZXh0LGk/ WWkodCxuLGEsaSk6R2kodCkpZS5wdXNoKHMuaS9yKSxlLnB1c2godC5pL3Ip LGUucHVzaChsLmkvciksdW8odCksdD1sLm5leHQsYz1sLm5leHQ7ZWxzZSBp ZigodD1sKT09PWMpe28/MT09PW8/SGkodD1XaShxaSh0KSxlLHIpLGUscixu LGEsaSwyKToyPT09byYmWGkodCxlLHIsbixhLGkpOkhpKHFpKHQpLGUscixu LGEsaSwxKTticmVha319fWZ1bmN0aW9uIEdpKHQpe3ZhciBlPXQucHJldixy PXQsbj10Lm5leHQ7aWYocm8oZSxyLG4pPj0wKXJldHVybiExO2Zvcih2YXIg YT10Lm5leHQubmV4dDthIT09dC5wcmV2Oyl7aWYodG8oZS54LGUueSxyLngs ci55LG4ueCxuLnksYS54LGEueSkmJnJvKGEucHJldixhLGEubmV4dCk+PTAp cmV0dXJuITE7YT1hLm5leHR9cmV0dXJuITB9ZnVuY3Rpb24gWWkodCxlLHIs bil7dmFyIGE9dC5wcmV2LGk9dCxvPXQubmV4dDtpZihybyhhLGksbyk+PTAp cmV0dXJuITE7Zm9yKHZhciBzPWEueDxpLng/YS54PG8ueD9hLng6by54Omku eDxvLng/aS54Om8ueCxsPWEueTxpLnk/YS55PG8ueT9hLnk6by55OmkueTxv Lnk/aS55Om8ueSxjPWEueD5pLng/YS54Pm8ueD9hLng6by54OmkueD5vLng/ aS54Om8ueCx1PWEueT5pLnk/YS55Pm8ueT9hLnk6by55OmkueT5vLnk/aS55 Om8ueSxoPVFpKHMsbCxlLHIsbiksZj1RaShjLHUsZSxyLG4pLHA9dC5wcmV2 WixkPXQubmV4dFo7cCYmcC56Pj1oJiZkJiZkLno8PWY7KXtpZihwIT09dC5w cmV2JiZwIT09dC5uZXh0JiZ0byhhLngsYS55LGkueCxpLnksby54LG8ueSxw LngscC55KSYmcm8ocC5wcmV2LHAscC5uZXh0KT49MClyZXR1cm4hMTtpZihw PXAucHJldlosZCE9PXQucHJldiYmZCE9PXQubmV4dCYmdG8oYS54LGEueSxp LngsaS55LG8ueCxvLnksZC54LGQueSkmJnJvKGQucHJldixkLGQubmV4dCk+ PTApcmV0dXJuITE7ZD1kLm5leHRafWZvcig7cCYmcC56Pj1oOyl7aWYocCE9 PXQucHJldiYmcCE9PXQubmV4dCYmdG8oYS54LGEueSxpLngsaS55LG8ueCxv LnkscC54LHAueSkmJnJvKHAucHJldixwLHAubmV4dCk+PTApcmV0dXJuITE7 cD1wLnByZXZafWZvcig7ZCYmZC56PD1mOyl7aWYoZCE9PXQucHJldiYmZCE9 PXQubmV4dCYmdG8oYS54LGEueSxpLngsaS55LG8ueCxvLnksZC54LGQueSkm JnJvKGQucHJldixkLGQubmV4dCk+PTApcmV0dXJuITE7ZD1kLm5leHRafXJl dHVybiEwfWZ1bmN0aW9uIFdpKHQsZSxyKXt2YXIgbj10O2Rve3ZhciBhPW4u cHJldixpPW4ubmV4dC5uZXh0OyFubyhhLGkpJiZhbyhhLG4sbi5uZXh0LGkp JiZzbyhhLGkpJiZzbyhpLGEpJiYoZS5wdXNoKGEuaS9yKSxlLnB1c2gobi5p L3IpLGUucHVzaChpLmkvciksdW8obiksdW8obi5uZXh0KSxuPXQ9aSksbj1u Lm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBxaShuKX1mdW5jdGlvbiBYaSh0 LGUscixuLGEsaSl7dmFyIG89dDtkb3tmb3IodmFyIHM9by5uZXh0Lm5leHQ7 cyE9PW8ucHJldjspe2lmKG8uaSE9PXMuaSYmZW8obyxzKSl7dmFyIGw9bG8o byxzKTtyZXR1cm4gbz1xaShvLG8ubmV4dCksbD1xaShsLGwubmV4dCksSGko byxlLHIsbixhLGkpLHZvaWQgSGkobCxlLHIsbixhLGkpfXM9cy5uZXh0fW89 by5uZXh0fXdoaWxlKG8hPT10KX1mdW5jdGlvbiBaaSh0LGUpe3JldHVybiB0 LngtZS54fWZ1bmN0aW9uIEppKHQsZSl7aWYoZT1mdW5jdGlvbih0LGUpe3Zh ciByLG49ZSxhPXQueCxpPXQueSxvPS0xLzA7ZG97aWYoaTw9bi55JiZpPj1u Lm5leHQueSYmbi5uZXh0LnkhPT1uLnkpe3ZhciBzPW4ueCsoaS1uLnkpKihu Lm5leHQueC1uLngpLyhuLm5leHQueS1uLnkpO2lmKHM8PWEmJnM+byl7aWYo bz1zLHM9PT1hKXtpZihpPT09bi55KXJldHVybiBuO2lmKGk9PT1uLm5leHQu eSlyZXR1cm4gbi5uZXh0fXI9bi54PG4ubmV4dC54P246bi5uZXh0fX1uPW4u bmV4dH13aGlsZShuIT09ZSk7aWYoIXIpcmV0dXJuIG51bGw7aWYoYT09PW8p cmV0dXJuIHI7dmFyIGwsYz1yLHU9ci54LGg9ci55LGY9MS8wO249cjtkb3th Pj1uLngmJm4ueD49dSYmYSE9PW4ueCYmdG8oaTxoP2E6byxpLHUsaCxpPGg/ bzphLGksbi54LG4ueSkmJihsPU1hdGguYWJzKGktbi55KS8oYS1uLngpLHNv KG4sdCkmJihsPGZ8fGw9PT1mJiYobi54PnIueHx8bi54PT09ci54JiZLaShy LG4pKSkmJihyPW4sZj1sKSksbj1uLm5leHR9d2hpbGUobiE9PWMpO3JldHVy biByfSh0LGUpKXt2YXIgcj1sbyhlLHQpO3FpKHIsci5uZXh0KX19ZnVuY3Rp b24gS2kodCxlKXtyZXR1cm4gcm8odC5wcmV2LHQsZS5wcmV2KTwwJiZybyhl Lm5leHQsdCx0Lm5leHQpPDB9ZnVuY3Rpb24gUWkodCxlLHIsbixhKXtyZXR1 cm4odD0xNDMxNjU1NzY1JigodD04NTg5OTM0NTkmKCh0PTI1MjY0NTEzNSYo KHQ9MTY3MTE5MzUmKCh0PTMyNzY3Kih0LXIpKmEpfHQ8PDgpKXx0PDw0KSl8 dDw8MikpfHQ8PDEpKXwoZT0xNDMxNjU1NzY1JigoZT04NTg5OTM0NTkmKChl PTI1MjY0NTEzNSYoKGU9MTY3MTE5MzUmKChlPTMyNzY3KihlLW4pKmEpfGU8 PDgpKXxlPDw0KSl8ZTw8MikpfGU8PDEpKTw8MX1mdW5jdGlvbiAkaSh0KXt2 YXIgZT10LHI9dDtkb3soZS54PHIueHx8ZS54PT09ci54JiZlLnk8ci55KSYm KHI9ZSksZT1lLm5leHR9d2hpbGUoZSE9PXQpO3JldHVybiByfWZ1bmN0aW9u IHRvKHQsZSxyLG4sYSxpLG8scyl7cmV0dXJuKGEtbykqKGUtcyktKHQtbykq KGktcyk+PTAmJih0LW8pKihuLXMpLShyLW8pKihlLXMpPj0wJiYoci1vKSoo aS1zKS0oYS1vKSoobi1zKT49MH1mdW5jdGlvbiBlbyh0LGUpe3JldHVybiB0 Lm5leHQuaSE9PWUuaSYmdC5wcmV2LmkhPT1lLmkmJiFmdW5jdGlvbih0LGUp e3ZhciByPXQ7ZG97aWYoci5pIT09dC5pJiZyLm5leHQuaSE9PXQuaSYmci5p IT09ZS5pJiZyLm5leHQuaSE9PWUuaSYmYW8ocixyLm5leHQsdCxlKSlyZXR1 cm4hMDtyPXIubmV4dH13aGlsZShyIT09dCk7cmV0dXJuITF9KHQsZSkmJihz byh0LGUpJiZzbyhlLHQpJiZmdW5jdGlvbih0LGUpe3ZhciByPXQsbj0hMSxh PSh0LngrZS54KS8yLGk9KHQueStlLnkpLzI7ZG97ci55PmkhPXIubmV4dC55 PmkmJnIubmV4dC55IT09ci55JiZhPChyLm5leHQueC1yLngpKihpLXIueSkv KHIubmV4dC55LXIueSkrci54JiYobj0hbikscj1yLm5leHR9d2hpbGUociE9 PXQpO3JldHVybiBufSh0LGUpJiYocm8odC5wcmV2LHQsZS5wcmV2KXx8cm8o dCxlLnByZXYsZSkpfHxubyh0LGUpJiZybyh0LnByZXYsdCx0Lm5leHQpPjAm JnJvKGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24gcm8odCxlLHIpe3Jl dHVybihlLnktdC55KSooci54LWUueCktKGUueC10LngpKihyLnktZS55KX1m dW5jdGlvbiBubyh0LGUpe3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX1m dW5jdGlvbiBhbyh0LGUscixuKXt2YXIgYT1vbyhybyh0LGUscikpLGk9b28o cm8odCxlLG4pKSxvPW9vKHJvKHIsbix0KSkscz1vbyhybyhyLG4sZSkpO3Jl dHVybiBhIT09aSYmbyE9PXN8fCEoMCE9PWF8fCFpbyh0LHIsZSkpfHwhKDAh PT1pfHwhaW8odCxuLGUpKXx8ISgwIT09b3x8IWlvKHIsdCxuKSl8fCEoMCE9 PXN8fCFpbyhyLGUsbikpfWZ1bmN0aW9uIGlvKHQsZSxyKXtyZXR1cm4gZS54 PD1NYXRoLm1heCh0Lngsci54KSYmZS54Pj1NYXRoLm1pbih0Lngsci54KSYm ZS55PD1NYXRoLm1heCh0Lnksci55KSYmZS55Pj1NYXRoLm1pbih0Lnksci55 KX1mdW5jdGlvbiBvbyh0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9ZnVuY3Rp b24gc28odCxlKXtyZXR1cm4gcm8odC5wcmV2LHQsdC5uZXh0KTwwP3JvKHQs ZSx0Lm5leHQpPj0wJiZybyh0LHQucHJldixlKT49MDpybyh0LGUsdC5wcmV2 KTwwfHxybyh0LHQubmV4dCxlKTwwfWZ1bmN0aW9uIGxvKHQsZSl7dmFyIHI9 bmV3IGhvKHQuaSx0LngsdC55KSxuPW5ldyBobyhlLmksZS54LGUueSksYT10 Lm5leHQsaT1lLnByZXY7cmV0dXJuIHQubmV4dD1lLGUucHJldj10LHIubmV4 dD1hLGEucHJldj1yLG4ubmV4dD1yLHIucHJldj1uLGkubmV4dD1uLG4ucHJl dj1pLG59ZnVuY3Rpb24gY28odCxlLHIsbil7dmFyIGE9bmV3IGhvKHQsZSxy KTtyZXR1cm4gbj8oYS5uZXh0PW4ubmV4dCxhLnByZXY9bixuLm5leHQucHJl dj1hLG4ubmV4dD1hKTooYS5wcmV2PWEsYS5uZXh0PWEpLGF9ZnVuY3Rpb24g dW8odCl7dC5uZXh0LnByZXY9dC5wcmV2LHQucHJldi5uZXh0PXQubmV4dCx0 LnByZXZaJiYodC5wcmV2Wi5uZXh0Wj10Lm5leHRaKSx0Lm5leHRaJiYodC5u ZXh0Wi5wcmV2Wj10LnByZXZaKX1mdW5jdGlvbiBobyh0LGUscil7dGhpcy5p PXQsdGhpcy54PWUsdGhpcy55PXIsdGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0 PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1udWxsLHRoaXMubmV4dFo9 bnVsbCx0aGlzLnN0ZWluZXI9ITF9ZnVuY3Rpb24gZm8odCxlLHIsbil7Zm9y KHZhciBhPTAsaT1lLG89ci1uO2k8cjtpKz1uKWErPSh0W29dLXRbaV0pKih0 W2krMV0rdFtvKzFdKSxvPWk7cmV0dXJuIGF9ZnVuY3Rpb24gcG8odCxlLHIs bixhKXshZnVuY3Rpb24gdChlLHIsbixhLGkpe2Zvcig7YT5uOyl7aWYoYS1u PjYwMCl7dmFyIG89YS1uKzEscz1yLW4rMSxsPU1hdGgubG9nKG8pLGM9LjUq TWF0aC5leHAoMipsLzMpLHU9LjUqTWF0aC5zcXJ0KGwqYyooby1jKS9vKSoo cy1vLzI8MD8tMToxKTt0KGUscixNYXRoLm1heChuLE1hdGguZmxvb3Ioci1z KmMvbyt1KSksTWF0aC5taW4oYSxNYXRoLmZsb29yKHIrKG8tcykqYy9vK3Up KSxpKX12YXIgaD1lW3JdLGY9bixwPWE7Zm9yKGdvKGUsbixyKSxpKGVbYV0s aCk+MCYmZ28oZSxuLGEpO2Y8cDspe2ZvcihnbyhlLGYscCksZisrLHAtLTtp KGVbZl0saCk8MDspZisrO2Zvcig7aShlW3BdLGgpPjA7KXAtLX0wPT09aShl W25dLGgpP2dvKGUsbixwKTpnbyhlLCsrcCxhKSxwPD1yJiYobj1wKzEpLHI8 PXAmJihhPXAtMSl9fSh0LGUscnx8MCxufHx0Lmxlbmd0aC0xLGF8fHZvKX1m dW5jdGlvbiBnbyh0LGUscil7dmFyIG49dFtlXTt0W2VdPXRbcl0sdFtyXT1u fWZ1bmN0aW9uIHZvKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTowfWZ1bmN0 aW9uIG1vKHQsZSl7dmFyIHI9dC5sZW5ndGg7aWYocjw9MSlyZXR1cm5bdF07 Zm9yKHZhciBuLGEsaT1bXSxvPTA7bzxyO28rKyl7dmFyIHM9VCh0W29dKTsw IT09cyYmKHRbb10uYXJlYT1NYXRoLmFicyhzKSx2b2lkIDA9PT1hJiYoYT1z PDApLGE9PT1zPDA/KG4mJmkucHVzaChuKSxuPVt0W29dXSk6bi5wdXNoKHRb b10pKX1pZihuJiZpLnB1c2gobiksZT4xKWZvcih2YXIgbD0wO2w8aS5sZW5n dGg7bCsrKWlbbF0ubGVuZ3RoPD1lfHwocG8oaVtsXSxlLDEsaVtsXS5sZW5n dGgtMSx5byksaVtsXT1pW2xdLnNsaWNlKDAsZSkpO3JldHVybiBpfWZ1bmN0 aW9uIHlvKHQsZSl7cmV0dXJuIGUuYXJlYS10LmFyZWF9ZnVuY3Rpb24geG8o dCxlLHIpe2Zvcih2YXIgbj1yLnBhdHRlcm5EZXBlbmRlbmNpZXMsYT0hMSxp PTAsbz1lO2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXS5wYWludC5nZXQo dCsiLXBhdHRlcm4iKTtzLmlzQ29uc3RhbnQoKXx8KGE9ITApO3ZhciBsPXMu Y29uc3RhbnRPcihudWxsKTtsJiYoYT0hMCxuW2wudG9dPSEwLG5bbC5mcm9t XT0hMCl9cmV0dXJuIGF9ZnVuY3Rpb24gYm8odCxlLHIsbixhKXtmb3IodmFy IGk9YS5wYXR0ZXJuRGVwZW5kZW5jaWVzLG89MCxzPWU7bzxzLmxlbmd0aDtv Kz0xKXt2YXIgbD1zW29dLGM9bC5wYWludC5nZXQodCsiLXBhdHRlcm4iKS52 YWx1ZTtpZigiY29uc3RhbnQiIT09Yy5raW5kKXt2YXIgdT1jLmV2YWx1YXRl KHt6b29tOm4tMX0scix7fSksaD1jLmV2YWx1YXRlKHt6b29tOm59LHIse30p LGY9Yy5ldmFsdWF0ZSh7em9vbTpuKzF9LHIse30pO2lbdV09ITAsaVtoXT0h MCxpW2ZdPSEwLHIucGF0dGVybnNbbC5pZF09e21pbjp1LG1pZDpoLG1heDpm fX19cmV0dXJuIHJ9VmkuZGV2aWF0aW9uPWZ1bmN0aW9uKHQsZSxyLG4pe3Zh ciBhPWUmJmUubGVuZ3RoLGk9YT9lWzBdKnI6dC5sZW5ndGgsbz1NYXRoLmFi cyhmbyh0LDAsaSxyKSk7aWYoYSlmb3IodmFyIHM9MCxsPWUubGVuZ3RoO3M8 bDtzKyspe3ZhciBjPWVbc10qcix1PXM8bC0xP2VbcysxXSpyOnQubGVuZ3Ro O28tPU1hdGguYWJzKGZvKHQsYyx1LHIpKX12YXIgaD0wO2ZvcihzPTA7czxu Lmxlbmd0aDtzKz0zKXt2YXIgZj1uW3NdKnIscD1uW3MrMV0qcixkPW5bcysy XSpyO2grPU1hdGguYWJzKCh0W2ZdLXRbZF0pKih0W3ArMV0tdFtmKzFdKS0o dFtmXS10W3BdKSoodFtkKzFdLXRbZisxXSkpfXJldHVybiAwPT09byYmMD09 PWg/MDpNYXRoLmFicygoaC1vKS9vKX0sVmkuZmxhdHRlbj1mdW5jdGlvbih0 KXtmb3IodmFyIGU9dFswXVswXS5sZW5ndGgscj17dmVydGljZXM6W10saG9s ZXM6W10sZGltZW5zaW9uczplfSxuPTAsYT0wO2E8dC5sZW5ndGg7YSsrKXtm b3IodmFyIGk9MDtpPHRbYV0ubGVuZ3RoO2krKylmb3IodmFyIG89MDtvPGU7 bysrKXIudmVydGljZXMucHVzaCh0W2FdW2ldW29dKTthPjAmJihuKz10W2Et MV0ubGVuZ3RoLHIuaG9sZXMucHVzaChuKSl9cmV0dXJuIHJ9LE5pLmRlZmF1 bHQ9amk7dmFyIF9vPWZ1bmN0aW9uKHQpe3RoaXMuem9vbT10Lnpvb20sdGhp cy5vdmVyc2NhbGluZz10Lm92ZXJzY2FsaW5nLHRoaXMubGF5ZXJzPXQubGF5 ZXJzLHRoaXMubGF5ZXJJZHM9dGhpcy5sYXllcnMubWFwKGZ1bmN0aW9uKHQp e3JldHVybiB0LmlkfSksdGhpcy5pbmRleD10LmluZGV4LHRoaXMuaGFzUGF0 dGVybj0hMSx0aGlzLnBhdHRlcm5GZWF0dXJlcz1bXSx0aGlzLmxheW91dFZl cnRleEFycmF5PW5ldyBRbix0aGlzLmluZGV4QXJyYXk9bmV3IGRhLHRoaXMu aW5kZXhBcnJheTI9bmV3IGdhLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25z PW5ldyBRYShCaSx0LmxheWVycyx0Lnpvb20pLHRoaXMuc2VnbWVudHM9bmV3 IE9hLHRoaXMuc2VnbWVudHMyPW5ldyBPYSx0aGlzLnN0YXRlRGVwZW5kZW50 TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVy biB0LmlzU3RhdGVEZXBlbmRlbnQoKX0pLm1hcChmdW5jdGlvbih0KXtyZXR1 cm4gdC5pZH0pfTtfby5wcm90b3R5cGUucG9wdWxhdGU9ZnVuY3Rpb24odCxl KXt0aGlzLmhhc1BhdHRlcm49eG8oImZpbGwiLHRoaXMubGF5ZXJzLGUpO2Zv cih2YXIgcj10aGlzLmxheWVyc1swXS5sYXlvdXQuZ2V0KCJmaWxsLXNvcnQt a2V5Iiksbj1bXSxhPTAsaT10O2E8aS5sZW5ndGg7YSs9MSl7dmFyIG89aVth XSxzPW8uZmVhdHVyZSxsPW8uaW5kZXgsYz1vLnNvdXJjZUxheWVySW5kZXg7 aWYodGhpcy5sYXllcnNbMF0uX2ZlYXR1cmVGaWx0ZXIobmV3IFBuKHRoaXMu em9vbSkscykpe3ZhciB1PW5pKHMpLGg9cj9yLmV2YWx1YXRlKHMse30pOnZv aWQgMCxmPXtpZDpzLmlkLHByb3BlcnRpZXM6cy5wcm9wZXJ0aWVzLHR5cGU6 cy50eXBlLHNvdXJjZUxheWVySW5kZXg6YyxpbmRleDpsLGdlb21ldHJ5OnUs cGF0dGVybnM6e30sc29ydEtleTpofTtuLnB1c2goZil9fXImJm4uc29ydChm dW5jdGlvbih0LGUpe3JldHVybiB0LnNvcnRLZXktZS5zb3J0S2V5fSk7Zm9y KHZhciBwPTAsZD1uO3A8ZC5sZW5ndGg7cCs9MSl7dmFyIGc9ZFtwXSx2PWcs bT12Lmdlb21ldHJ5LHk9di5pbmRleCx4PXYuc291cmNlTGF5ZXJJbmRleDtp Zih0aGlzLmhhc1BhdHRlcm4pe3ZhciBiPWJvKCJmaWxsIix0aGlzLmxheWVy cyxnLHRoaXMuem9vbSxlKTt0aGlzLnBhdHRlcm5GZWF0dXJlcy5wdXNoKGIp fWVsc2UgdGhpcy5hZGRGZWF0dXJlKGcsbSx5LHt9KTt2YXIgXz10W3ldLmZl YXR1cmU7ZS5mZWF0dXJlSW5kZXguaW5zZXJ0KF8sbSx5LHgsdGhpcy5pbmRl eCl9fSxfby5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxyKXt0aGlz LnN0YXRlRGVwZW5kZW50TGF5ZXJzLmxlbmd0aCYmdGhpcy5wcm9ncmFtQ29u ZmlndXJhdGlvbnMudXBkYXRlUGFpbnRBcnJheXModCxlLHRoaXMuc3RhdGVE ZXBlbmRlbnRMYXllcnMscil9LF9vLnByb3RvdHlwZS5hZGRGZWF0dXJlcz1m dW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49dGhpcy5wYXR0ZXJuRmVhdHVy ZXM7cjxuLmxlbmd0aDtyKz0xKXt2YXIgYT1uW3JdO3RoaXMuYWRkRmVhdHVy ZShhLGEuZ2VvbWV0cnksYS5pbmRleCxlKX19LF9vLnByb3RvdHlwZS5pc0Vt cHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmxheW91dFZlcnRleEFy cmF5Lmxlbmd0aH0sX28ucHJvdG90eXBlLnVwbG9hZFBlbmRpbmc9ZnVuY3Rp b24oKXtyZXR1cm4hdGhpcy51cGxvYWRlZHx8dGhpcy5wcm9ncmFtQ29uZmln dXJhdGlvbnMubmVlZHNVcGxvYWR9LF9vLnByb3RvdHlwZS51cGxvYWQ9ZnVu Y3Rpb24odCl7dGhpcy51cGxvYWRlZHx8KHRoaXMubGF5b3V0VmVydGV4QnVm ZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMubGF5b3V0VmVydGV4QXJy YXksQmkpLHRoaXMuaW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcih0 aGlzLmluZGV4QXJyYXkpLHRoaXMuaW5kZXhCdWZmZXIyPXQuY3JlYXRlSW5k ZXhCdWZmZXIodGhpcy5pbmRleEFycmF5MikpLHRoaXMucHJvZ3JhbUNvbmZp Z3VyYXRpb25zLnVwbG9hZCh0KSx0aGlzLnVwbG9hZGVkPSEwfSxfby5wcm90 b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubGF5b3V0VmVydGV4QnVm ZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMu aW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIyLmRlc3Ry b3koKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5kZXN0cm95KCksdGhp cy5zZWdtZW50cy5kZXN0cm95KCksdGhpcy5zZWdtZW50czIuZGVzdHJveSgp KX0sX28ucHJvdG90eXBlLmFkZEZlYXR1cmU9ZnVuY3Rpb24odCxlLHIsbil7 Zm9yKHZhciBhPTAsaT1tbyhlLDUwMCk7YTxpLmxlbmd0aDthKz0xKXtmb3Io dmFyIG89aVthXSxzPTAsbD0wLGM9bztsPGMubGVuZ3RoO2wrPTEpcys9Y1ts XS5sZW5ndGg7Zm9yKHZhciB1PXRoaXMuc2VnbWVudHMucHJlcGFyZVNlZ21l bnQocyx0aGlzLmxheW91dFZlcnRleEFycmF5LHRoaXMuaW5kZXhBcnJheSks aD11LnZlcnRleExlbmd0aCxmPVtdLHA9W10sZD0wLGc9bztkPGcubGVuZ3Ro O2QrPTEpe3ZhciB2PWdbZF07aWYoMCE9PXYubGVuZ3RoKXt2IT09b1swXSYm cC5wdXNoKGYubGVuZ3RoLzIpO3ZhciBtPXRoaXMuc2VnbWVudHMyLnByZXBh cmVTZWdtZW50KHYubGVuZ3RoLHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhp cy5pbmRleEFycmF5MikseT1tLnZlcnRleExlbmd0aDt0aGlzLmxheW91dFZl cnRleEFycmF5LmVtcGxhY2VCYWNrKHZbMF0ueCx2WzBdLnkpLHRoaXMuaW5k ZXhBcnJheTIuZW1wbGFjZUJhY2soeSt2Lmxlbmd0aC0xLHkpLGYucHVzaCh2 WzBdLngpLGYucHVzaCh2WzBdLnkpO2Zvcih2YXIgeD0xO3g8di5sZW5ndGg7 eCsrKXRoaXMubGF5b3V0VmVydGV4QXJyYXkuZW1wbGFjZUJhY2sodlt4XS54 LHZbeF0ueSksdGhpcy5pbmRleEFycmF5Mi5lbXBsYWNlQmFjayh5K3gtMSx5 K3gpLGYucHVzaCh2W3hdLngpLGYucHVzaCh2W3hdLnkpO20udmVydGV4TGVu Z3RoKz12Lmxlbmd0aCxtLnByaW1pdGl2ZUxlbmd0aCs9di5sZW5ndGh9fWZv cih2YXIgYj1OaShmLHApLF89MDtfPGIubGVuZ3RoO18rPTMpdGhpcy5pbmRl eEFycmF5LmVtcGxhY2VCYWNrKGgrYltfXSxoK2JbXysxXSxoK2JbXysyXSk7 dS52ZXJ0ZXhMZW5ndGgrPXMsdS5wcmltaXRpdmVMZW5ndGgrPWIubGVuZ3Ro LzN9dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMucG9wdWxhdGVQYWludEFy cmF5cyh0aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCx0LHIsbil9LGRu KCJGaWxsQnVja2V0Iixfbyx7b21pdDpbImxheWVycyIsInBhdHRlcm5GZWF0 dXJlcyJdfSk7dmFyIHdvPW5ldyBHbih7ImZpbGwtc29ydC1rZXkiOm5ldyBW bihUdC5sYXlvdXRfZmlsbFsiZmlsbC1zb3J0LWtleSJdKX0pLGtvPXtwYWlu dDpuZXcgR24oeyJmaWxsLWFudGlhbGlhcyI6bmV3IGpuKFR0LnBhaW50X2Zp bGxbImZpbGwtYW50aWFsaWFzIl0pLCJmaWxsLW9wYWNpdHkiOm5ldyBWbihU dC5wYWludF9maWxsWyJmaWxsLW9wYWNpdHkiXSksImZpbGwtY29sb3IiOm5l dyBWbihUdC5wYWludF9maWxsWyJmaWxsLWNvbG9yIl0pLCJmaWxsLW91dGxp bmUtY29sb3IiOm5ldyBWbihUdC5wYWludF9maWxsWyJmaWxsLW91dGxpbmUt Y29sb3IiXSksImZpbGwtdHJhbnNsYXRlIjpuZXcgam4oVHQucGFpbnRfZmls bFsiZmlsbC10cmFuc2xhdGUiXSksImZpbGwtdHJhbnNsYXRlLWFuY2hvciI6 bmV3IGpuKFR0LnBhaW50X2ZpbGxbImZpbGwtdHJhbnNsYXRlLWFuY2hvciJd KSwiZmlsbC1wYXR0ZXJuIjpuZXcgVW4oVHQucGFpbnRfZmlsbFsiZmlsbC1w YXR0ZXJuIl0pfSksbGF5b3V0OndvfSxUbz1mdW5jdGlvbih0KXtmdW5jdGlv biBlKGUpe3QuY2FsbCh0aGlzLGUsa28pfXJldHVybiB0JiYoZS5fX3Byb3Rv X189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlw ZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5yZWNh bGN1bGF0ZT1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5yZWNhbGN1bGF0ZS5j YWxsKHRoaXMsZSk7dmFyIHI9dGhpcy5wYWludC5fdmFsdWVzWyJmaWxsLW91 dGxpbmUtY29sb3IiXTsiY29uc3RhbnQiPT09ci52YWx1ZS5raW5kJiZ2b2lk IDA9PT1yLnZhbHVlLnZhbHVlJiYodGhpcy5wYWludC5fdmFsdWVzWyJmaWxs LW91dGxpbmUtY29sb3IiXT10aGlzLnBhaW50Ll92YWx1ZXNbImZpbGwtY29s b3IiXSl9LGUucHJvdG90eXBlLmNyZWF0ZUJ1Y2tldD1mdW5jdGlvbih0KXty ZXR1cm4gbmV3IF9vKHQpfSxlLnByb3RvdHlwZS5xdWVyeVJhZGl1cz1mdW5j dGlvbigpe3JldHVybiB5aSh0aGlzLnBhaW50LmdldCgiZmlsbC10cmFuc2xh dGUiKSl9LGUucHJvdG90eXBlLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmU9ZnVu Y3Rpb24odCxlLHIsbixhLGksbyl7cmV0dXJuIGxpKHhpKHQsdGhpcy5wYWlu dC5nZXQoImZpbGwtdHJhbnNsYXRlIiksdGhpcy5wYWludC5nZXQoImZpbGwt dHJhbnNsYXRlLWFuY2hvciIpLGkuYW5nbGUsbyksbil9LGUucHJvdG90eXBl LmlzVGlsZUNsaXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZX0oWW4pLE1v PUpuKFt7bmFtZToiYV9wb3MiLGNvbXBvbmVudHM6Mix0eXBlOiJJbnQxNiJ9 LHtuYW1lOiJhX25vcm1hbF9lZCIsY29tcG9uZW50czo0LHR5cGU6IkludDE2 In1dLDQpLm1lbWJlcnMsQW89U287ZnVuY3Rpb24gU28odCxlLHIsbixhKXt0 aGlzLnByb3BlcnRpZXM9e30sdGhpcy5leHRlbnQ9cix0aGlzLnR5cGU9MCx0 aGlzLl9wYmY9dCx0aGlzLl9nZW9tZXRyeT0tMSx0aGlzLl9rZXlzPW4sdGhp cy5fdmFsdWVzPWEsdC5yZWFkRmllbGRzKEVvLHRoaXMsZSl9ZnVuY3Rpb24g RW8odCxlLHIpezE9PXQ/ZS5pZD1yLnJlYWRWYXJpbnQoKToyPT10P2Z1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPXQucmVhZFZhcmludCgpK3QucG9zO3QucG9z PHI7KXt2YXIgbj1lLl9rZXlzW3QucmVhZFZhcmludCgpXSxhPWUuX3ZhbHVl c1t0LnJlYWRWYXJpbnQoKV07ZS5wcm9wZXJ0aWVzW25dPWF9fShyLGUpOjM9 PXQ/ZS50eXBlPXIucmVhZFZhcmludCgpOjQ9PXQmJihlLl9nZW9tZXRyeT1y LnBvcyl9ZnVuY3Rpb24gTG8odCl7Zm9yKHZhciBlLHIsbj0wLGE9MCxpPXQu bGVuZ3RoLG89aS0xO2E8aTtvPWErKyllPXRbYV0sbis9KChyPXRbb10pLngt ZS54KSooZS55K3IueSk7cmV0dXJuIG59U28udHlwZXM9WyJVbmtub3duIiwi UG9pbnQiLCJMaW5lU3RyaW5nIiwiUG9seWdvbiJdLFNvLnByb3RvdHlwZS5s b2FkR2VvbWV0cnk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYmY7dC5wb3M9 dGhpcy5fZ2VvbWV0cnk7Zm9yKHZhciBlLHI9dC5yZWFkVmFyaW50KCkrdC5w b3Msbj0xLGk9MCxvPTAscz0wLGw9W107dC5wb3M8cjspe2lmKGk8PTApe3Zh ciBjPXQucmVhZFZhcmludCgpO249NyZjLGk9Yz4+M31pZihpLS0sMT09PW58 fDI9PT1uKW8rPXQucmVhZFNWYXJpbnQoKSxzKz10LnJlYWRTVmFyaW50KCks MT09PW4mJihlJiZsLnB1c2goZSksZT1bXSksZS5wdXNoKG5ldyBhKG8scykp O2Vsc2V7aWYoNyE9PW4pdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGNvbW1h bmQgIituKTtlJiZlLnB1c2goZVswXS5jbG9uZSgpKX19cmV0dXJuIGUmJmwu cHVzaChlKSxsfSxTby5wcm90b3R5cGUuYmJveD1mdW5jdGlvbigpe3ZhciB0 PXRoaXMuX3BiZjt0LnBvcz10aGlzLl9nZW9tZXRyeTtmb3IodmFyIGU9dC5y ZWFkVmFyaW50KCkrdC5wb3Mscj0xLG49MCxhPTAsaT0wLG89MS8wLHM9LTEv MCxsPTEvMCxjPS0xLzA7dC5wb3M8ZTspe2lmKG48PTApe3ZhciB1PXQucmVh ZFZhcmludCgpO3I9NyZ1LG49dT4+M31pZihuLS0sMT09PXJ8fDI9PT1yKShh Kz10LnJlYWRTVmFyaW50KCkpPG8mJihvPWEpLGE+cyYmKHM9YSksKGkrPXQu cmVhZFNWYXJpbnQoKSk8bCYmKGw9aSksaT5jJiYoYz1pKTtlbHNlIGlmKDch PT1yKXRocm93IG5ldyBFcnJvcigidW5rbm93biBjb21tYW5kICIrcil9cmV0 dXJuW28sbCxzLGNdfSxTby5wcm90b3R5cGUudG9HZW9KU09OPWZ1bmN0aW9u KHQsZSxyKXt2YXIgbixhLGk9dGhpcy5leHRlbnQqTWF0aC5wb3coMixyKSxv PXRoaXMuZXh0ZW50KnQscz10aGlzLmV4dGVudCplLGw9dGhpcy5sb2FkR2Vv bWV0cnkoKSxjPVNvLnR5cGVzW3RoaXMudHlwZV07ZnVuY3Rpb24gdSh0KXtm b3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dFtlXSxuPTE4MC0z NjAqKHIueStzKS9pO3RbZV09WzM2MCooci54K28pL2ktMTgwLDM2MC9NYXRo LlBJKk1hdGguYXRhbihNYXRoLmV4cChuKk1hdGguUEkvMTgwKSktOTBdfX1z d2l0Y2godGhpcy50eXBlKXtjYXNlIDE6dmFyIGg9W107Zm9yKG49MDtuPGwu bGVuZ3RoO24rKyloW25dPWxbbl1bMF07dShsPWgpO2JyZWFrO2Nhc2UgMjpm b3Iobj0wO248bC5sZW5ndGg7bisrKXUobFtuXSk7YnJlYWs7Y2FzZSAzOmZv cihsPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO2lmKGU8PTEpcmV0dXJu W3RdO2Zvcih2YXIgcixuLGE9W10saT0wO2k8ZTtpKyspe3ZhciBvPUxvKHRb aV0pOzAhPT1vJiYodm9pZCAwPT09biYmKG49bzwwKSxuPT09bzwwPyhyJiZh LnB1c2gocikscj1bdFtpXV0pOnIucHVzaCh0W2ldKSl9cmV0dXJuIHImJmEu cHVzaChyKSxhfShsKSxuPTA7bjxsLmxlbmd0aDtuKyspZm9yKGE9MDthPGxb bl0ubGVuZ3RoO2ErKyl1KGxbbl1bYV0pfTE9PT1sLmxlbmd0aD9sPWxbMF06 Yz0iTXVsdGkiK2M7dmFyIGY9e3R5cGU6IkZlYXR1cmUiLGdlb21ldHJ5Ont0 eXBlOmMsY29vcmRpbmF0ZXM6bH0scHJvcGVydGllczp0aGlzLnByb3BlcnRp ZXN9O3JldHVybiJpZCJpbiB0aGlzJiYoZi5pZD10aGlzLmlkKSxmfTt2YXIg Q289UG87ZnVuY3Rpb24gUG8odCxlKXt0aGlzLnZlcnNpb249MSx0aGlzLm5h bWU9bnVsbCx0aGlzLmV4dGVudD00MDk2LHRoaXMubGVuZ3RoPTAsdGhpcy5f cGJmPXQsdGhpcy5fa2V5cz1bXSx0aGlzLl92YWx1ZXM9W10sdGhpcy5fZmVh dHVyZXM9W10sdC5yZWFkRmllbGRzKE9vLHRoaXMsZSksdGhpcy5sZW5ndGg9 dGhpcy5fZmVhdHVyZXMubGVuZ3RofWZ1bmN0aW9uIE9vKHQsZSxyKXsxNT09 PXQ/ZS52ZXJzaW9uPXIucmVhZFZhcmludCgpOjE9PT10P2UubmFtZT1yLnJl YWRTdHJpbmcoKTo1PT09dD9lLmV4dGVudD1yLnJlYWRWYXJpbnQoKToyPT09 dD9lLl9mZWF0dXJlcy5wdXNoKHIucG9zKTozPT09dD9lLl9rZXlzLnB1c2go ci5yZWFkU3RyaW5nKCkpOjQ9PT10JiZlLl92YWx1ZXMucHVzaChmdW5jdGlv bih0KXtmb3IodmFyIGU9bnVsbCxyPXQucmVhZFZhcmludCgpK3QucG9zO3Qu cG9zPHI7KXt2YXIgbj10LnJlYWRWYXJpbnQoKT4+MztlPTE9PT1uP3QucmVh ZFN0cmluZygpOjI9PT1uP3QucmVhZEZsb2F0KCk6Mz09PW4/dC5yZWFkRG91 YmxlKCk6ND09PW4/dC5yZWFkVmFyaW50NjQoKTo1PT09bj90LnJlYWRWYXJp bnQoKTo2PT09bj90LnJlYWRTVmFyaW50KCk6Nz09PW4/dC5yZWFkQm9vbGVh bigpOm51bGx9cmV0dXJuIGV9KHIpKX1mdW5jdGlvbiB6byh0LGUscil7aWYo Mz09PXQpe3ZhciBuPW5ldyBDbyhyLHIucmVhZFZhcmludCgpK3IucG9zKTtu Lmxlbmd0aCYmKGVbbi5uYW1lXT1uKX19UG8ucHJvdG90eXBlLmZlYXR1cmU9 ZnVuY3Rpb24odCl7aWYodDwwfHx0Pj10aGlzLl9mZWF0dXJlcy5sZW5ndGgp dGhyb3cgbmV3IEVycm9yKCJmZWF0dXJlIGluZGV4IG91dCBvZiBib3VuZHMi KTt0aGlzLl9wYmYucG9zPXRoaXMuX2ZlYXR1cmVzW3RdO3ZhciBlPXRoaXMu X3BiZi5yZWFkVmFyaW50KCkrdGhpcy5fcGJmLnBvcztyZXR1cm4gbmV3IEFv KHRoaXMuX3BiZixlLHRoaXMuZXh0ZW50LHRoaXMuX2tleXMsdGhpcy5fdmFs dWVzKX07dmFyIElvPXtWZWN0b3JUaWxlOmZ1bmN0aW9uKHQsZSl7dGhpcy5s YXllcnM9dC5yZWFkRmllbGRzKHpvLHt9LGUpfSxWZWN0b3JUaWxlRmVhdHVy ZTpBbyxWZWN0b3JUaWxlTGF5ZXI6Q299LERvPUlvLlZlY3RvclRpbGVGZWF0 dXJlLnR5cGVzLFJvPU1hdGgucG93KDIsMTMpO2Z1bmN0aW9uIEZvKHQsZSxy LG4sYSxpLG8scyl7dC5lbXBsYWNlQmFjayhlLHIsMipNYXRoLmZsb29yKG4q Um8pK28sYSpSbyoyLGkqUm8qMixNYXRoLnJvdW5kKHMpKX12YXIgQm89ZnVu Y3Rpb24odCl7dGhpcy56b29tPXQuem9vbSx0aGlzLm92ZXJzY2FsaW5nPXQu b3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXllcklk cz10aGlzLmxheWVycy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSx0 aGlzLmluZGV4PXQuaW5kZXgsdGhpcy5oYXNQYXR0ZXJuPSExLHRoaXMubGF5 b3V0VmVydGV4QXJyYXk9bmV3IHRhLHRoaXMuaW5kZXhBcnJheT1uZXcgZGEs dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnM9bmV3IFFhKE1vLHQubGF5ZXJz LHQuem9vbSksdGhpcy5zZWdtZW50cz1uZXcgT2EsdGhpcy5zdGF0ZURlcGVu ZGVudExheWVySWRzPXRoaXMubGF5ZXJzLmZpbHRlcihmdW5jdGlvbih0KXty ZXR1cm4gdC5pc1N0YXRlRGVwZW5kZW50KCl9KS5tYXAoZnVuY3Rpb24odCl7 cmV0dXJuIHQuaWR9KX07ZnVuY3Rpb24gTm8odCxlKXtyZXR1cm4gdC54PT09 ZS54JiYodC54PDB8fHQueD5laSl8fHQueT09PWUueSYmKHQueTwwfHx0Lnk+ ZWkpfWZ1bmN0aW9uIGpvKHQpe3JldHVybiB0LmV2ZXJ5KGZ1bmN0aW9uKHQp e3JldHVybiB0Lng8MH0pfHx0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiB0 Lng+ZWl9KXx8dC5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gdC55PDB9KXx8 dC5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gdC55PmVpfSl9Qm8ucHJvdG90 eXBlLnBvcHVsYXRlPWZ1bmN0aW9uKHQsZSl7dGhpcy5mZWF0dXJlcz1bXSx0 aGlzLmhhc1BhdHRlcm49eG8oImZpbGwtZXh0cnVzaW9uIix0aGlzLmxheWVy cyxlKTtmb3IodmFyIHI9MCxuPXQ7cjxuLmxlbmd0aDtyKz0xKXt2YXIgYT1u W3JdLGk9YS5mZWF0dXJlLG89YS5pbmRleCxzPWEuc291cmNlTGF5ZXJJbmRl eDtpZih0aGlzLmxheWVyc1swXS5fZmVhdHVyZUZpbHRlcihuZXcgUG4odGhp cy56b29tKSxpKSl7dmFyIGw9bmkoaSksYz17c291cmNlTGF5ZXJJbmRleDpz LGluZGV4Om8sZ2VvbWV0cnk6bCxwcm9wZXJ0aWVzOmkucHJvcGVydGllcyx0 eXBlOmkudHlwZSxwYXR0ZXJuczp7fX07dm9pZCAwIT09aS5pZCYmKGMuaWQ9 aS5pZCksdGhpcy5oYXNQYXR0ZXJuP3RoaXMuZmVhdHVyZXMucHVzaChibygi ZmlsbC1leHRydXNpb24iLHRoaXMubGF5ZXJzLGMsdGhpcy56b29tLGUpKTp0 aGlzLmFkZEZlYXR1cmUoYyxsLG8se30pLGUuZmVhdHVyZUluZGV4Lmluc2Vy dChpLGwsbyxzLHRoaXMuaW5kZXgsITApfX19LEJvLnByb3RvdHlwZS5hZGRG ZWF0dXJlcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49dGhpcy5mZWF0 dXJlcztyPG4ubGVuZ3RoO3IrPTEpe3ZhciBhPW5bcl0saT1hLmdlb21ldHJ5 O3RoaXMuYWRkRmVhdHVyZShhLGksYS5pbmRleCxlKX19LEJvLnByb3RvdHlw ZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuc3RhdGVEZXBlbmRlbnRM YXllcnMubGVuZ3RoJiZ0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGRh dGVQYWludEFycmF5cyh0LGUsdGhpcy5zdGF0ZURlcGVuZGVudExheWVycyxy KX0sQm8ucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09 PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RofSxCby5wcm90b3R5cGUu dXBsb2FkUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVwbG9hZGVk fHx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZH0sQm8u cHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0KXt0aGlzLnVwbG9hZGVkfHwo dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIo dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxNbyksdGhpcy5pbmRleEJ1ZmZlcj10 LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSkpLHRoaXMucHJv Z3JhbUNvbmZpZ3VyYXRpb25zLnVwbG9hZCh0KSx0aGlzLnVwbG9hZGVkPSEw fSxCby5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubGF5b3V0 VmVydGV4QnVmZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJv eSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNv bmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3ko KSl9LEJvLnByb3RvdHlwZS5hZGRGZWF0dXJlPWZ1bmN0aW9uKHQsZSxyLG4p e2Zvcih2YXIgYT0wLGk9bW8oZSw1MDApO2E8aS5sZW5ndGg7YSs9MSl7Zm9y KHZhciBvPWlbYV0scz0wLGw9MCxjPW87bDxjLmxlbmd0aDtsKz0xKXMrPWNb bF0ubGVuZ3RoO2Zvcih2YXIgdT10aGlzLnNlZ21lbnRzLnByZXBhcmVTZWdt ZW50KDQsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx0aGlzLmluZGV4QXJyYXkp LGg9MCxmPW87aDxmLmxlbmd0aDtoKz0xKXt2YXIgcD1mW2hdO2lmKDAhPT1w Lmxlbmd0aCYmIWpvKHApKWZvcih2YXIgZD0wLGc9MDtnPHAubGVuZ3RoO2cr Kyl7dmFyIHY9cFtnXTtpZihnPj0xKXt2YXIgbT1wW2ctMV07aWYoIU5vKHYs bSkpe3UudmVydGV4TGVuZ3RoKzQ+T2EuTUFYX1ZFUlRFWF9BUlJBWV9MRU5H VEgmJih1PXRoaXMuc2VnbWVudHMucHJlcGFyZVNlZ21lbnQoNCx0aGlzLmxh eW91dFZlcnRleEFycmF5LHRoaXMuaW5kZXhBcnJheSkpO3ZhciB5PXYuc3Vi KG0pLl9wZXJwKCkuX3VuaXQoKSx4PW0uZGlzdCh2KTtkK3g+MzI3NjgmJihk PTApLEZvKHRoaXMubGF5b3V0VmVydGV4QXJyYXksdi54LHYueSx5LngseS55 LDAsMCxkKSxGbyh0aGlzLmxheW91dFZlcnRleEFycmF5LHYueCx2LnkseS54 LHkueSwwLDEsZCksZCs9eCxGbyh0aGlzLmxheW91dFZlcnRleEFycmF5LG0u eCxtLnkseS54LHkueSwwLDAsZCksRm8odGhpcy5sYXlvdXRWZXJ0ZXhBcnJh eSxtLngsbS55LHkueCx5LnksMCwxLGQpO3ZhciBiPXUudmVydGV4TGVuZ3Ro O3RoaXMuaW5kZXhBcnJheS5lbXBsYWNlQmFjayhiLGIrMixiKzEpLHRoaXMu aW5kZXhBcnJheS5lbXBsYWNlQmFjayhiKzEsYisyLGIrMyksdS52ZXJ0ZXhM ZW5ndGgrPTQsdS5wcmltaXRpdmVMZW5ndGgrPTJ9fX19aWYodS52ZXJ0ZXhM ZW5ndGgrcz5PYS5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSCYmKHU9dGhpcy5z ZWdtZW50cy5wcmVwYXJlU2VnbWVudChzLHRoaXMubGF5b3V0VmVydGV4QXJy YXksdGhpcy5pbmRleEFycmF5KSksIlBvbHlnb24iPT09RG9bdC50eXBlXSl7 Zm9yKHZhciBfPVtdLHc9W10saz11LnZlcnRleExlbmd0aCxUPTAsTT1vO1Q8 TS5sZW5ndGg7VCs9MSl7dmFyIEE9TVtUXTtpZigwIT09QS5sZW5ndGgpe0Eh PT1vWzBdJiZ3LnB1c2goXy5sZW5ndGgvMik7Zm9yKHZhciBTPTA7UzxBLmxl bmd0aDtTKyspe3ZhciBFPUFbU107Rm8odGhpcy5sYXlvdXRWZXJ0ZXhBcnJh eSxFLngsRS55LDAsMCwxLDEsMCksXy5wdXNoKEUueCksXy5wdXNoKEUueSl9 fX1mb3IodmFyIEw9TmkoXyx3KSxDPTA7QzxMLmxlbmd0aDtDKz0zKXRoaXMu aW5kZXhBcnJheS5lbXBsYWNlQmFjayhrK0xbQ10saytMW0MrMl0saytMW0Mr MV0pO3UucHJpbWl0aXZlTGVuZ3RoKz1MLmxlbmd0aC8zLHUudmVydGV4TGVu Z3RoKz1zfX10aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5wb3B1bGF0ZVBh aW50QXJyYXlzKHRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RoLHQscixu KX0sZG4oIkZpbGxFeHRydXNpb25CdWNrZXQiLEJvLHtvbWl0OlsibGF5ZXJz IiwiZmVhdHVyZXMiXX0pO3ZhciBWbz17cGFpbnQ6bmV3IEduKHsiZmlsbC1l eHRydXNpb24tb3BhY2l0eSI6bmV3IGpuKFR0WyJwYWludF9maWxsLWV4dHJ1 c2lvbiJdWyJmaWxsLWV4dHJ1c2lvbi1vcGFjaXR5Il0pLCJmaWxsLWV4dHJ1 c2lvbi1jb2xvciI6bmV3IFZuKFR0WyJwYWludF9maWxsLWV4dHJ1c2lvbiJd WyJmaWxsLWV4dHJ1c2lvbi1jb2xvciJdKSwiZmlsbC1leHRydXNpb24tdHJh bnNsYXRlIjpuZXcgam4oVHRbInBhaW50X2ZpbGwtZXh0cnVzaW9uIl1bImZp bGwtZXh0cnVzaW9uLXRyYW5zbGF0ZSJdKSwiZmlsbC1leHRydXNpb24tdHJh bnNsYXRlLWFuY2hvciI6bmV3IGpuKFR0WyJwYWludF9maWxsLWV4dHJ1c2lv biJdWyJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUtYW5jaG9yIl0pLCJmaWxs LWV4dHJ1c2lvbi1wYXR0ZXJuIjpuZXcgVW4oVHRbInBhaW50X2ZpbGwtZXh0 cnVzaW9uIl1bImZpbGwtZXh0cnVzaW9uLXBhdHRlcm4iXSksImZpbGwtZXh0 cnVzaW9uLWhlaWdodCI6bmV3IFZuKFR0WyJwYWludF9maWxsLWV4dHJ1c2lv biJdWyJmaWxsLWV4dHJ1c2lvbi1oZWlnaHQiXSksImZpbGwtZXh0cnVzaW9u LWJhc2UiOm5ldyBWbihUdFsicGFpbnRfZmlsbC1leHRydXNpb24iXVsiZmls bC1leHRydXNpb24tYmFzZSJdKSwiZmlsbC1leHRydXNpb24tdmVydGljYWwt Z3JhZGllbnQiOm5ldyBqbihUdFsicGFpbnRfZmlsbC1leHRydXNpb24iXVsi ZmlsbC1leHRydXNpb24tdmVydGljYWwtZ3JhZGllbnQiXSl9KX0sVW89ZnVu Y3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyxlLFZvKX1yZXR1 cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVh dGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUs ZS5wcm90b3R5cGUuY3JlYXRlQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiBu ZXcgQm8odCl9LGUucHJvdG90eXBlLnF1ZXJ5UmFkaXVzPWZ1bmN0aW9uKCl7 cmV0dXJuIHlpKHRoaXMucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi10cmFu c2xhdGUiKSl9LGUucHJvdG90eXBlLmlzM0Q9ZnVuY3Rpb24oKXtyZXR1cm4h MH0sZS5wcm90b3R5cGUucXVlcnlJbnRlcnNlY3RzRmVhdHVyZT1mdW5jdGlv bih0LGUscixuLGksbyxzLGwpe3ZhciBjPXhpKHQsdGhpcy5wYWludC5nZXQo ImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZSIpLHRoaXMucGFpbnQuZ2V0KCJm aWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUtYW5jaG9yIiksby5hbmdsZSxzKSx1 PXRoaXMucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi1oZWlnaHQiKS5ldmFs dWF0ZShlLHIpLGg9dGhpcy5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLWJh c2UiKS5ldmFsdWF0ZShlLHIpLGY9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZh ciBpPVtdLG89MCxzPXQ7bzxzLmxlbmd0aDtvKz0xKXt2YXIgbD1zW29dLGM9 W2wueCxsLnksMCwxXTtUaShjLGMsZSksaS5wdXNoKG5ldyBhKGNbMF0vY1sz XSxjWzFdL2NbM10pKX1yZXR1cm4gaX0oYyxsKSxwPWZ1bmN0aW9uKHQsZSxy LG4pe2Zvcih2YXIgaT1bXSxvPVtdLHM9bls4XSplLGw9bls5XSplLGM9blsx MF0qZSx1PW5bMTFdKmUsaD1uWzhdKnIsZj1uWzldKnIscD1uWzEwXSpyLGQ9 blsxMV0qcixnPTAsdj10O2c8di5sZW5ndGg7Zys9MSl7Zm9yKHZhciBtPVtd LHk9W10seD0wLGI9dltnXTt4PGIubGVuZ3RoO3grPTEpe3ZhciBfPWJbeF0s dz1fLngsaz1fLnksVD1uWzBdKncrbls0XSprK25bMTJdLE09blsxXSp3K25b NV0qaytuWzEzXSxBPW5bMl0qdytuWzZdKmsrblsxNF0sUz1uWzNdKncrbls3 XSprK25bMTVdLEU9QStjLEw9Uyt1LEM9VCtoLFA9TStmLE89QStwLHo9Uytk LEk9bmV3IGEoKFQrcykvTCwoTStsKS9MKTtJLno9RS9MLG0ucHVzaChJKTt2 YXIgRD1uZXcgYShDL3osUC96KTtELno9Ty96LHkucHVzaChEKX1pLnB1c2go bSksby5wdXNoKHkpfXJldHVybltpLG9dfShuLGgsdSxsKTtyZXR1cm4gZnVu Y3Rpb24odCxlLHIpe3ZhciBuPTEvMDtsaShyLGUpJiYobj1IbyhyLGVbMF0p KTtmb3IodmFyIGE9MDthPGUubGVuZ3RoO2ErKylmb3IodmFyIGk9ZVthXSxv PXRbYV0scz0wO3M8aS5sZW5ndGgtMTtzKyspe3ZhciBsPWlbc10sYz1pW3Mr MV0sdT1vW3NdLGg9W2wsYyxvW3MrMV0sdSxsXTtvaShyLGgpJiYobj1NYXRo Lm1pbihuLEhvKHIsaCkpKX1yZXR1cm4gbiE9PTEvMCYmbn0ocFswXSxwWzFd LGYpfSxlfShZbik7ZnVuY3Rpb24gcW8odCxlKXtyZXR1cm4gdC54KmUueCt0 LnkqZS55fWZ1bmN0aW9uIEhvKHQsZSl7aWYoMT09PXQubGVuZ3RoKXt2YXIg cj1lWzBdLG49ZVsxXSxhPWVbM10saT10WzBdLG89bi5zdWIocikscz1hLnN1 YihyKSxsPWkuc3ViKHIpLGM9cW8obyxvKSx1PXFvKG8scyksaD1xbyhzLHMp LGY9cW8obCxvKSxwPXFvKGwscyksZD1jKmgtdSp1LGc9KGgqZi11KnApL2Qs dj0oYypwLXUqZikvZCxtPTEtZy12O3JldHVybiByLnoqbStuLnoqZythLnoq dn1mb3IodmFyIHk9MS8wLHg9MCxiPWU7eDxiLmxlbmd0aDt4Kz0xKXt2YXIg Xz1iW3hdO3k9TWF0aC5taW4oeSxfLnopfXJldHVybiB5fXZhciBHbz1Kbihb e25hbWU6ImFfcG9zX25vcm1hbCIsY29tcG9uZW50czoyLHR5cGU6IkludDE2 In0se25hbWU6ImFfZGF0YSIsY29tcG9uZW50czo0LHR5cGU6IlVpbnQ4In1d LDQpLm1lbWJlcnMsWW89SW8uVmVjdG9yVGlsZUZlYXR1cmUudHlwZXMsV289 TWF0aC5jb3MoTWF0aC5QSS8xODAqMzcuNSksWG89TWF0aC5wb3coMiwxNCkv LjUsWm89ZnVuY3Rpb24odCl7dGhpcy56b29tPXQuem9vbSx0aGlzLm92ZXJz Y2FsaW5nPXQub3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhp cy5sYXllcklkcz10aGlzLmxheWVycy5tYXAoZnVuY3Rpb24odCl7cmV0dXJu IHQuaWR9KSx0aGlzLmluZGV4PXQuaW5kZXgsdGhpcy5oYXNQYXR0ZXJuPSEx LHRoaXMucGF0dGVybkZlYXR1cmVzPVtdLHRoaXMubGF5b3V0VmVydGV4QXJy YXk9bmV3IGVhLHRoaXMuaW5kZXhBcnJheT1uZXcgZGEsdGhpcy5wcm9ncmFt Q29uZmlndXJhdGlvbnM9bmV3IFFhKEdvLHQubGF5ZXJzLHQuem9vbSksdGhp cy5zZWdtZW50cz1uZXcgT2EsdGhpcy5zdGF0ZURlcGVuZGVudExheWVySWRz PXRoaXMubGF5ZXJzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5pc1N0 YXRlRGVwZW5kZW50KCl9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9 KX07Wm8ucHJvdG90eXBlLnBvcHVsYXRlPWZ1bmN0aW9uKHQsZSl7dGhpcy5o YXNQYXR0ZXJuPXhvKCJsaW5lIix0aGlzLmxheWVycyxlKTtmb3IodmFyIHI9 dGhpcy5sYXllcnNbMF0ubGF5b3V0LmdldCgibGluZS1zb3J0LWtleSIpLG49 W10sYT0wLGk9dDthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlbYV0scz1vLmZl YXR1cmUsbD1vLmluZGV4LGM9by5zb3VyY2VMYXllckluZGV4O2lmKHRoaXMu bGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyKG5ldyBQbih0aGlzLnpvb20pLHMp KXt2YXIgdT1uaShzKSxoPXI/ci5ldmFsdWF0ZShzLHt9KTp2b2lkIDAsZj17 aWQ6cy5pZCxwcm9wZXJ0aWVzOnMucHJvcGVydGllcyx0eXBlOnMudHlwZSxz b3VyY2VMYXllckluZGV4OmMsaW5kZXg6bCxnZW9tZXRyeTp1LHBhdHRlcm5z Ont9LHNvcnRLZXk6aH07bi5wdXNoKGYpfX1yJiZuLnNvcnQoZnVuY3Rpb24o dCxlKXtyZXR1cm4gdC5zb3J0S2V5LWUuc29ydEtleX0pO2Zvcih2YXIgcD0w LGQ9bjtwPGQubGVuZ3RoO3ArPTEpe3ZhciBnPWRbcF0sdj1nLG09di5nZW9t ZXRyeSx5PXYuaW5kZXgseD12LnNvdXJjZUxheWVySW5kZXg7aWYodGhpcy5o YXNQYXR0ZXJuKXt2YXIgYj1ibygibGluZSIsdGhpcy5sYXllcnMsZyx0aGlz Lnpvb20sZSk7dGhpcy5wYXR0ZXJuRmVhdHVyZXMucHVzaChiKX1lbHNlIHRo aXMuYWRkRmVhdHVyZShnLG0seSx7fSk7dmFyIF89dFt5XS5mZWF0dXJlO2Uu ZmVhdHVyZUluZGV4Lmluc2VydChfLG0seSx4LHRoaXMuaW5kZXgpfX0sWm8u cHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUscil7dGhpcy5zdGF0ZURl cGVuZGVudExheWVycy5sZW5ndGgmJnRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRp b25zLnVwZGF0ZVBhaW50QXJyYXlzKHQsZSx0aGlzLnN0YXRlRGVwZW5kZW50 TGF5ZXJzLHIpfSxaby5wcm90b3R5cGUuYWRkRmVhdHVyZXM9ZnVuY3Rpb24o dCxlKXtmb3IodmFyIHI9MCxuPXRoaXMucGF0dGVybkZlYXR1cmVzO3I8bi5s ZW5ndGg7cis9MSl7dmFyIGE9bltyXTt0aGlzLmFkZEZlYXR1cmUoYSxhLmdl b21ldHJ5LGEuaW5kZXgsZSl9fSxaby5wcm90b3R5cGUuaXNFbXB0eT1mdW5j dGlvbigpe3JldHVybiAwPT09dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5n dGh9LFpvLnByb3RvdHlwZS51cGxvYWRQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0 dXJuIXRoaXMudXBsb2FkZWR8fHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25z Lm5lZWRzVXBsb2FkfSxaby5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQp e3RoaXMudXBsb2FkZWR8fCh0aGlzLmxheW91dFZlcnRleEJ1ZmZlcj10LmNy ZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmxheW91dFZlcnRleEFycmF5LEdvKSx0 aGlzLmluZGV4QnVmZmVyPXQuY3JlYXRlSW5kZXhCdWZmZXIodGhpcy5pbmRl eEFycmF5KSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQp LHRoaXMudXBsb2FkZWQ9ITB9LFpvLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0 aW9uKCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXImJih0aGlzLmxheW91dFZl cnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlci5kZXN0cm95 KCksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZGVzdHJveSgpLHRoaXMu c2VnbWVudHMuZGVzdHJveSgpKX0sWm8ucHJvdG90eXBlLmFkZEZlYXR1cmU9 ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBhPXRoaXMubGF5ZXJzWzBdLmxh eW91dCxpPWEuZ2V0KCJsaW5lLWpvaW4iKS5ldmFsdWF0ZSh0LHt9KSxvPWEu Z2V0KCJsaW5lLWNhcCIpLHM9YS5nZXQoImxpbmUtbWl0ZXItbGltaXQiKSxs PWEuZ2V0KCJsaW5lLXJvdW5kLWxpbWl0IiksYz0wLHU9ZTtjPHUubGVuZ3Ro O2MrPTEpe3ZhciBoPXVbY107dGhpcy5hZGRMaW5lKGgsdCxpLG8scyxsLHIs bil9fSxaby5wcm90b3R5cGUuYWRkTGluZT1mdW5jdGlvbih0LGUscixuLGEs aSxvLHMpe2lmKHRoaXMuZGlzdGFuY2U9MCx0aGlzLnNjYWxlZERpc3RhbmNl PTAsdGhpcy50b3RhbERpc3RhbmNlPTAsZS5wcm9wZXJ0aWVzJiZlLnByb3Bl cnRpZXMuaGFzT3duUHJvcGVydHkoIm1hcGJveF9jbGlwX3N0YXJ0IikmJmUu cHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSgibWFwYm94X2NsaXBfZW5kIikp e3RoaXMuY2xpcFN0YXJ0PStlLnByb3BlcnRpZXMubWFwYm94X2NsaXBfc3Rh cnQsdGhpcy5jbGlwRW5kPStlLnByb3BlcnRpZXMubWFwYm94X2NsaXBfZW5k O2Zvcih2YXIgbD0wO2w8dC5sZW5ndGgtMTtsKyspdGhpcy50b3RhbERpc3Rh bmNlKz10W2xdLmRpc3QodFtsKzFdKX1mb3IodmFyIGM9IlBvbHlnb24iPT09 WW9bZS50eXBlXSx1PXQubGVuZ3RoO3U+PTImJnRbdS0xXS5lcXVhbHModFt1 LTJdKTspdS0tO2Zvcih2YXIgaD0wO2g8dS0xJiZ0W2hdLmVxdWFscyh0W2gr MV0pOyloKys7aWYoISh1PChjPzM6MikpKXsiYmV2ZWwiPT09ciYmKGE9MS4w NSk7dmFyIGYscD1laS8oNTEyKnRoaXMub3ZlcnNjYWxpbmcpKjE1LGQ9dGhp cy5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCgxMCp1LHRoaXMubGF5b3V0VmVy dGV4QXJyYXksdGhpcy5pbmRleEFycmF5KSxnPXZvaWQgMCx2PXZvaWQgMCxt PXZvaWQgMCx5PXZvaWQgMDt0aGlzLmUxPXRoaXMuZTI9LTEsYyYmKGY9dFt1 LTJdLHk9dFtoXS5zdWIoZikuX3VuaXQoKS5fcGVycCgpKTtmb3IodmFyIHg9 aDt4PHU7eCsrKWlmKCEodj1jJiZ4PT09dS0xP3RbaCsxXTp0W3grMV0pfHwh dFt4XS5lcXVhbHModikpe3kmJihtPXkpLGYmJihnPWYpLGY9dFt4XSx5PXY/ di5zdWIoZikuX3VuaXQoKS5fcGVycCgpOm07dmFyIGI9KG09bXx8eSkuYWRk KHkpOzA9PT1iLngmJjA9PT1iLnl8fGIuX3VuaXQoKTt2YXIgXz1tLngqeS54 K20ueSp5Lnksdz1iLngqeS54K2IueSp5Lnksaz0wIT09dz8xL3c6MS8wLFQ9 MipNYXRoLnNxcnQoMi0yKncpLE09dzxXbyYmZyYmdixBPW0ueCp5LnktbS55 KnkueD4wO2lmKE0mJng+aCl7dmFyIFM9Zi5kaXN0KGcpO2lmKFM+MipwKXt2 YXIgRT1mLnN1YihmLnN1YihnKS5fbXVsdChwL1MpLl9yb3VuZCgpKTt0aGlz LnVwZGF0ZURpc3RhbmNlKGcsRSksdGhpcy5hZGRDdXJyZW50VmVydGV4KEUs bSwwLDAsZCksZz1FfX12YXIgTD1nJiZ2LEM9TD9yOmM/ImJ1dHQiOm47aWYo TCYmInJvdW5kIj09PUMmJihrPGk/Qz0ibWl0ZXIiOms8PTImJihDPSJmYWtl cm91bmQiKSksIm1pdGVyIj09PUMmJms+YSYmKEM9ImJldmVsIiksImJldmVs Ij09PUMmJihrPjImJihDPSJmbGlwYmV2ZWwiKSxrPGEmJihDPSJtaXRlciIp KSxnJiZ0aGlzLnVwZGF0ZURpc3RhbmNlKGcsZiksIm1pdGVyIj09PUMpYi5f bXVsdChrKSx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoZixiLDAsMCxkKTtlbHNl IGlmKCJmbGlwYmV2ZWwiPT09Qyl7aWYoaz4xMDApYj15Lm11bHQoLTEpO2Vs c2V7dmFyIFA9ayptLmFkZCh5KS5tYWcoKS9tLnN1Yih5KS5tYWcoKTtiLl9w ZXJwKCkuX211bHQoUCooQT8tMToxKSl9dGhpcy5hZGRDdXJyZW50VmVydGV4 KGYsYiwwLDAsZCksdGhpcy5hZGRDdXJyZW50VmVydGV4KGYsYi5tdWx0KC0x KSwwLDAsZCl9ZWxzZSBpZigiYmV2ZWwiPT09Q3x8ImZha2Vyb3VuZCI9PT1D KXt2YXIgTz0tTWF0aC5zcXJ0KGsqay0xKSx6PUE/TzowLEk9QT8wOk87aWYo ZyYmdGhpcy5hZGRDdXJyZW50VmVydGV4KGYsbSx6LEksZCksImZha2Vyb3Vu ZCI9PT1DKWZvcih2YXIgRD1NYXRoLnJvdW5kKDE4MCpUL01hdGguUEkvMjAp LFI9MTtSPEQ7UisrKXt2YXIgRj1SL0Q7aWYoLjUhPT1GKXt2YXIgQj1GLS41 O0YrPUYqQiooRi0xKSooKDEuMDkwNCtfKihfKigzLjU1NjQ1LTEuNDM1MTkq XyktMy4yNDUyKSkqQipCKyguODQ4MDEzK18qKC4yMTU2MzgqXy0xLjA2MDIx KSkpfXZhciBOPXkuc3ViKG0pLl9tdWx0KEYpLl9hZGQobSkuX3VuaXQoKS5f bXVsdChBPy0xOjEpO3RoaXMuYWRkSGFsZlZlcnRleChmLE4ueCxOLnksITEs QSwwLGQpfXYmJnRoaXMuYWRkQ3VycmVudFZlcnRleChmLHksLXosLUksZCl9 ZWxzZSBpZigiYnV0dCI9PT1DKXRoaXMuYWRkQ3VycmVudFZlcnRleChmLGIs MCwwLGQpO2Vsc2UgaWYoInNxdWFyZSI9PT1DKXt2YXIgaj1nPzE6LTE7dGhp cy5hZGRDdXJyZW50VmVydGV4KGYsYixqLGosZCl9ZWxzZSJyb3VuZCI9PT1D JiYoZyYmKHRoaXMuYWRkQ3VycmVudFZlcnRleChmLG0sMCwwLGQpLHRoaXMu YWRkQ3VycmVudFZlcnRleChmLG0sMSwxLGQsITApKSx2JiYodGhpcy5hZGRD dXJyZW50VmVydGV4KGYseSwtMSwtMSxkLCEwKSx0aGlzLmFkZEN1cnJlbnRW ZXJ0ZXgoZix5LDAsMCxkKSkpO2lmKE0mJng8dS0xKXt2YXIgVj1mLmRpc3Qo dik7aWYoVj4yKnApe3ZhciBVPWYuYWRkKHYuc3ViKGYpLl9tdWx0KHAvViku X3JvdW5kKCkpO3RoaXMudXBkYXRlRGlzdGFuY2UoZixVKSx0aGlzLmFkZEN1 cnJlbnRWZXJ0ZXgoVSx5LDAsMCxkKSxmPVV9fX10aGlzLnByb2dyYW1Db25m aWd1cmF0aW9ucy5wb3B1bGF0ZVBhaW50QXJyYXlzKHRoaXMubGF5b3V0VmVy dGV4QXJyYXkubGVuZ3RoLGUsbyxzKX19LFpvLnByb3RvdHlwZS5hZGRDdXJy ZW50VmVydGV4PWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2b2lkIDA9PT1pJiYo aT0hMSk7dmFyIG89ZS54K2UueSpyLHM9ZS55LWUueCpyLGw9LWUueCtlLnkq bixjPS1lLnktZS54Km47dGhpcy5hZGRIYWxmVmVydGV4KHQsbyxzLGksITEs cixhKSx0aGlzLmFkZEhhbGZWZXJ0ZXgodCxsLGMsaSwhMCwtbixhKSx0aGlz LmRpc3RhbmNlPlhvLzImJjA9PT10aGlzLnRvdGFsRGlzdGFuY2UmJih0aGlz LmRpc3RhbmNlPTAsdGhpcy5hZGRDdXJyZW50VmVydGV4KHQsZSxyLG4sYSxp KSl9LFpvLnByb3RvdHlwZS5hZGRIYWxmVmVydGV4PWZ1bmN0aW9uKHQsZSxy LG4sYSxpLG8pe3ZhciBzPXQueCxsPXQueSxjPS41KnRoaXMuc2NhbGVkRGlz dGFuY2U7dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5lbXBsYWNlQmFjaygoczw8 MSkrKG4/MTowKSwobDw8MSkrKGE/MTowKSxNYXRoLnJvdW5kKDYzKmUpKzEy OCxNYXRoLnJvdW5kKDYzKnIpKzEyOCwxKygwPT09aT8wOmk8MD8tMToxKXwo NjMmYyk8PDIsYz4+Nik7dmFyIHU9by52ZXJ0ZXhMZW5ndGgrKzt0aGlzLmUx Pj0wJiZ0aGlzLmUyPj0wJiYodGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNr KHRoaXMuZTEsdGhpcy5lMix1KSxvLnByaW1pdGl2ZUxlbmd0aCsrKSxhP3Ro aXMuZTI9dTp0aGlzLmUxPXV9LFpvLnByb3RvdHlwZS51cGRhdGVEaXN0YW5j ZT1mdW5jdGlvbih0LGUpe3RoaXMuZGlzdGFuY2UrPXQuZGlzdChlKSx0aGlz LnNjYWxlZERpc3RhbmNlPXRoaXMudG90YWxEaXN0YW5jZT4wPyh0aGlzLmNs aXBTdGFydCsodGhpcy5jbGlwRW5kLXRoaXMuY2xpcFN0YXJ0KSp0aGlzLmRp c3RhbmNlL3RoaXMudG90YWxEaXN0YW5jZSkqKFhvLTEpOnRoaXMuZGlzdGFu Y2V9LGRuKCJMaW5lQnVja2V0Iixabyx7b21pdDpbImxheWVycyIsInBhdHRl cm5GZWF0dXJlcyJdfSk7dmFyIEpvPW5ldyBHbih7ImxpbmUtY2FwIjpuZXcg am4oVHQubGF5b3V0X2xpbmVbImxpbmUtY2FwIl0pLCJsaW5lLWpvaW4iOm5l dyBWbihUdC5sYXlvdXRfbGluZVsibGluZS1qb2luIl0pLCJsaW5lLW1pdGVy LWxpbWl0IjpuZXcgam4oVHQubGF5b3V0X2xpbmVbImxpbmUtbWl0ZXItbGlt aXQiXSksImxpbmUtcm91bmQtbGltaXQiOm5ldyBqbihUdC5sYXlvdXRfbGlu ZVsibGluZS1yb3VuZC1saW1pdCJdKSwibGluZS1zb3J0LWtleSI6bmV3IFZu KFR0LmxheW91dF9saW5lWyJsaW5lLXNvcnQta2V5Il0pfSksS289e3BhaW50 Om5ldyBHbih7ImxpbmUtb3BhY2l0eSI6bmV3IFZuKFR0LnBhaW50X2xpbmVb ImxpbmUtb3BhY2l0eSJdKSwibGluZS1jb2xvciI6bmV3IFZuKFR0LnBhaW50 X2xpbmVbImxpbmUtY29sb3IiXSksImxpbmUtdHJhbnNsYXRlIjpuZXcgam4o VHQucGFpbnRfbGluZVsibGluZS10cmFuc2xhdGUiXSksImxpbmUtdHJhbnNs YXRlLWFuY2hvciI6bmV3IGpuKFR0LnBhaW50X2xpbmVbImxpbmUtdHJhbnNs YXRlLWFuY2hvciJdKSwibGluZS13aWR0aCI6bmV3IFZuKFR0LnBhaW50X2xp bmVbImxpbmUtd2lkdGgiXSksImxpbmUtZ2FwLXdpZHRoIjpuZXcgVm4oVHQu cGFpbnRfbGluZVsibGluZS1nYXAtd2lkdGgiXSksImxpbmUtb2Zmc2V0Ijpu ZXcgVm4oVHQucGFpbnRfbGluZVsibGluZS1vZmZzZXQiXSksImxpbmUtYmx1 ciI6bmV3IFZuKFR0LnBhaW50X2xpbmVbImxpbmUtYmx1ciJdKSwibGluZS1k YXNoYXJyYXkiOm5ldyBxbihUdC5wYWludF9saW5lWyJsaW5lLWRhc2hhcnJh eSJdKSwibGluZS1wYXR0ZXJuIjpuZXcgVW4oVHQucGFpbnRfbGluZVsibGlu ZS1wYXR0ZXJuIl0pLCJsaW5lLWdyYWRpZW50IjpuZXcgSG4oVHQucGFpbnRf bGluZVsibGluZS1ncmFkaWVudCJdKX0pLGxheW91dDpKb30sUW89bmV3KGZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRz KX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVj dC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVj dG9yPWUsZS5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlvbihl LHIpe3JldHVybiByPW5ldyBQbihNYXRoLmZsb29yKHIuem9vbSkse25vdzpy Lm5vdyxmYWRlRHVyYXRpb246ci5mYWRlRHVyYXRpb24sem9vbUhpc3Rvcnk6 ci56b29tSGlzdG9yeSx0cmFuc2l0aW9uOnIudHJhbnNpdGlvbn0pLHQucHJv dG90eXBlLnBvc3NpYmx5RXZhbHVhdGUuY2FsbCh0aGlzLGUscil9LGUucHJv dG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGUscixuLGEpe3JldHVybiByPWgo e30scix7em9vbTpNYXRoLmZsb29yKHIuem9vbSl9KSx0LnByb3RvdHlwZS5l dmFsdWF0ZS5jYWxsKHRoaXMsZSxyLG4sYSl9LGV9KFZuKSkoS28ucGFpbnQu cHJvcGVydGllc1sibGluZS13aWR0aCJdLnNwZWNpZmljYXRpb24pO1FvLnVz ZUludGVnZXJab29tPSEwO3ZhciAkbz1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KGUpe3QuY2FsbCh0aGlzLGUsS28pfXJldHVybiB0JiYoZS5fX3Byb3RvX189 dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSks ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5faGFuZGxl U3BlY2lhbFBhaW50UHJvcGVydHlVcGRhdGU9ZnVuY3Rpb24odCl7ImxpbmUt Z3JhZGllbnQiPT09dCYmdGhpcy5fdXBkYXRlR3JhZGllbnQoKX0sZS5wcm90 b3R5cGUuX3VwZGF0ZUdyYWRpZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5f dHJhbnNpdGlvbmFibGVQYWludC5fdmFsdWVzWyJsaW5lLWdyYWRpZW50Il0u dmFsdWUuZXhwcmVzc2lvbjt0aGlzLmdyYWRpZW50PUlpKHQsImxpbmVQcm9n cmVzcyIpLHRoaXMuZ3JhZGllbnRUZXh0dXJlPW51bGx9LGUucHJvdG90eXBl LnJlY2FsY3VsYXRlPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLnJlY2FsY3Vs YXRlLmNhbGwodGhpcyxlKSx0aGlzLnBhaW50Ll92YWx1ZXNbImxpbmUtZmxv b3J3aWR0aCJdPVFvLnBvc3NpYmx5RXZhbHVhdGUodGhpcy5fdHJhbnNpdGlv bmluZ1BhaW50Ll92YWx1ZXNbImxpbmUtd2lkdGgiXS52YWx1ZSxlKX0sZS5w cm90b3R5cGUuY3JlYXRlQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcg Wm8odCl9LGUucHJvdG90eXBlLnF1ZXJ5UmFkaXVzPWZ1bmN0aW9uKHQpe3Zh ciBlPXQscj10cyhtaSgibGluZS13aWR0aCIsdGhpcyxlKSxtaSgibGluZS1n YXAtd2lkdGgiLHRoaXMsZSkpLG49bWkoImxpbmUtb2Zmc2V0Iix0aGlzLGUp O3JldHVybiByLzIrTWF0aC5hYnMobikreWkodGhpcy5wYWludC5nZXQoImxp bmUtdHJhbnNsYXRlIikpfSxlLnByb3RvdHlwZS5xdWVyeUludGVyc2VjdHNG ZWF0dXJlPWZ1bmN0aW9uKHQsZSxyLG4saSxvLHMpe3ZhciBsPXhpKHQsdGhp cy5wYWludC5nZXQoImxpbmUtdHJhbnNsYXRlIiksdGhpcy5wYWludC5nZXQo ImxpbmUtdHJhbnNsYXRlLWFuY2hvciIpLG8uYW5nbGUscyksYz1zLzIqdHMo dGhpcy5wYWludC5nZXQoImxpbmUtd2lkdGgiKS5ldmFsdWF0ZShlLHIpLHRo aXMucGFpbnQuZ2V0KCJsaW5lLWdhcC13aWR0aCIpLmV2YWx1YXRlKGUscikp LHU9dGhpcy5wYWludC5nZXQoImxpbmUtb2Zmc2V0IikuZXZhbHVhdGUoZSxy KTtyZXR1cm4gdSYmKG49ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10sbj1u ZXcgYSgwLDApLGk9MDtpPHQubGVuZ3RoO2krKyl7Zm9yKHZhciBvPXRbaV0s cz1bXSxsPTA7bDxvLmxlbmd0aDtsKyspe3ZhciBjPW9bbC0xXSx1PW9bbF0s aD1vW2wrMV0sZj0wPT09bD9uOnUuc3ViKGMpLl91bml0KCkuX3BlcnAoKSxw PWw9PT1vLmxlbmd0aC0xP246aC5zdWIodSkuX3VuaXQoKS5fcGVycCgpLGQ9 Zi5fYWRkKHApLl91bml0KCksZz1kLngqcC54K2QueSpwLnk7ZC5fbXVsdCgx L2cpLHMucHVzaChkLl9tdWx0KGUpLl9hZGQodSkpfXIucHVzaChzKX1yZXR1 cm4gcn0obix1KnMpKSxmdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPTA7bjxl Lmxlbmd0aDtuKyspe3ZhciBhPWVbbl07aWYodC5sZW5ndGg+PTMpZm9yKHZh ciBpPTA7aTxhLmxlbmd0aDtpKyspaWYoZ2kodCxhW2ldKSlyZXR1cm4hMDtp ZihjaSh0LGEscikpcmV0dXJuITB9cmV0dXJuITF9KGwsbixjKX0sZS5wcm90 b3R5cGUuaXNUaWxlQ2xpcHBlZD1mdW5jdGlvbigpe3JldHVybiEwfSxlfShZ bik7ZnVuY3Rpb24gdHModCxlKXtyZXR1cm4gZT4wP2UrMip0OnR9dmFyIGVz PUpuKFt7bmFtZToiYV9wb3Nfb2Zmc2V0Iixjb21wb25lbnRzOjQsdHlwZToi SW50MTYifSx7bmFtZToiYV9kYXRhIixjb21wb25lbnRzOjQsdHlwZToiVWlu dDE2In1dKSxycz1Kbihbe25hbWU6ImFfcHJvamVjdGVkX3BvcyIsY29tcG9u ZW50czozLHR5cGU6IkZsb2F0MzIifV0sNCksbnM9KEpuKFt7bmFtZToiYV9m YWRlX29wYWNpdHkiLGNvbXBvbmVudHM6MSx0eXBlOiJVaW50MzIifV0sNCks Sm4oW3tuYW1lOiJhX3BsYWNlZCIsY29tcG9uZW50czoyLHR5cGU6IlVpbnQ4 In0se25hbWU6ImFfc2hpZnQiLGNvbXBvbmVudHM6Mix0eXBlOiJGbG9hdDMy In1dKSksYXM9KEpuKFt7dHlwZToiSW50MTYiLG5hbWU6ImFuY2hvclBvaW50 WCJ9LHt0eXBlOiJJbnQxNiIsbmFtZToiYW5jaG9yUG9pbnRZIn0se3R5cGU6 IkludDE2IixuYW1lOiJ4MSJ9LHt0eXBlOiJJbnQxNiIsbmFtZToieTEifSx7 dHlwZToiSW50MTYiLG5hbWU6IngyIn0se3R5cGU6IkludDE2IixuYW1lOiJ5 MiJ9LHt0eXBlOiJVaW50MzIiLG5hbWU6ImZlYXR1cmVJbmRleCJ9LHt0eXBl OiJVaW50MTYiLG5hbWU6InNvdXJjZUxheWVySW5kZXgifSx7dHlwZToiVWlu dDE2IixuYW1lOiJidWNrZXRJbmRleCJ9LHt0eXBlOiJJbnQxNiIsbmFtZToi cmFkaXVzIn0se3R5cGU6IkludDE2IixuYW1lOiJzaWduZWREaXN0YW5jZUZy b21BbmNob3IifV0pLEpuKFt7bmFtZToiYV9wb3MiLGNvbXBvbmVudHM6Mix0 eXBlOiJJbnQxNiJ9LHtuYW1lOiJhX2FuY2hvcl9wb3MiLGNvbXBvbmVudHM6 Mix0eXBlOiJJbnQxNiJ9LHtuYW1lOiJhX2V4dHJ1ZGUiLGNvbXBvbmVudHM6 Mix0eXBlOiJJbnQxNiJ9XSw0KSksaXM9Sm4oW3tuYW1lOiJhX3BvcyIsY29t cG9uZW50czoyLHR5cGU6IkludDE2In0se25hbWU6ImFfYW5jaG9yX3BvcyIs Y29tcG9uZW50czoyLHR5cGU6IkludDE2In0se25hbWU6ImFfZXh0cnVkZSIs Y29tcG9uZW50czoyLHR5cGU6IkludDE2In1dLDQpO2Z1bmN0aW9uIG9zKHQs ZSxyKXtyZXR1cm4gdC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Qu dGV4dD1mdW5jdGlvbih0LGUscil7dmFyIG49ZS5sYXlvdXQuZ2V0KCJ0ZXh0 LXRyYW5zZm9ybSIpLmV2YWx1YXRlKHIse30pO3JldHVybiJ1cHBlcmNhc2Ui PT09bj90PXQudG9Mb2NhbGVVcHBlckNhc2UoKToibG93ZXJjYXNlIj09PW4m Jih0PXQudG9Mb2NhbGVMb3dlckNhc2UoKSksQ24uYXBwbHlBcmFiaWNTaGFw aW5nJiYodD1Dbi5hcHBseUFyYWJpY1NoYXBpbmcodCkpLHR9KHQudGV4dCxl LHIpfSksdH1Kbihbe3R5cGU6IkludDE2IixuYW1lOiJhbmNob3JYIn0se3R5 cGU6IkludDE2IixuYW1lOiJhbmNob3JZIn0se3R5cGU6IlVpbnQxNiIsbmFt ZToiZ2x5cGhTdGFydEluZGV4In0se3R5cGU6IlVpbnQxNiIsbmFtZToibnVt R2x5cGhzIn0se3R5cGU6IlVpbnQzMiIsbmFtZToidmVydGV4U3RhcnRJbmRl eCJ9LHt0eXBlOiJVaW50MzIiLG5hbWU6ImxpbmVTdGFydEluZGV4In0se3R5 cGU6IlVpbnQzMiIsbmFtZToibGluZUxlbmd0aCJ9LHt0eXBlOiJVaW50MTYi LG5hbWU6InNlZ21lbnQifSx7dHlwZToiVWludDE2IixuYW1lOiJsb3dlclNp emUifSx7dHlwZToiVWludDE2IixuYW1lOiJ1cHBlclNpemUifSx7dHlwZToi RmxvYXQzMiIsbmFtZToibGluZU9mZnNldFgifSx7dHlwZToiRmxvYXQzMiIs bmFtZToibGluZU9mZnNldFkifSx7dHlwZToiVWludDgiLG5hbWU6IndyaXRp bmdNb2RlIn0se3R5cGU6IlVpbnQ4IixuYW1lOiJwbGFjZWRPcmllbnRhdGlv biJ9LHt0eXBlOiJVaW50OCIsbmFtZToiaGlkZGVuIn0se3R5cGU6IlVpbnQz MiIsbmFtZToiY3Jvc3NUaWxlSUQifV0pLEpuKFt7dHlwZToiSW50MTYiLG5h bWU6ImFuY2hvclgifSx7dHlwZToiSW50MTYiLG5hbWU6ImFuY2hvclkifSx7 dHlwZToiSW50MTYiLG5hbWU6InJpZ2h0SnVzdGlmaWVkVGV4dFN5bWJvbElu ZGV4In0se3R5cGU6IkludDE2IixuYW1lOiJjZW50ZXJKdXN0aWZpZWRUZXh0 U3ltYm9sSW5kZXgifSx7dHlwZToiSW50MTYiLG5hbWU6ImxlZnRKdXN0aWZp ZWRUZXh0U3ltYm9sSW5kZXgifSx7dHlwZToiSW50MTYiLG5hbWU6InZlcnRp Y2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4In0se3R5cGU6IlVpbnQxNiIsbmFt ZToia2V5In0se3R5cGU6IlVpbnQxNiIsbmFtZToidGV4dEJveFN0YXJ0SW5k ZXgifSx7dHlwZToiVWludDE2IixuYW1lOiJ0ZXh0Qm94RW5kSW5kZXgifSx7 dHlwZToiVWludDE2IixuYW1lOiJ2ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4 In0se3R5cGU6IlVpbnQxNiIsbmFtZToidmVydGljYWxUZXh0Qm94RW5kSW5k ZXgifSx7dHlwZToiVWludDE2IixuYW1lOiJpY29uQm94U3RhcnRJbmRleCJ9 LHt0eXBlOiJVaW50MTYiLG5hbWU6Imljb25Cb3hFbmRJbmRleCJ9LHt0eXBl OiJVaW50MTYiLG5hbWU6ImZlYXR1cmVJbmRleCJ9LHt0eXBlOiJVaW50MTYi LG5hbWU6Im51bUhvcml6b250YWxHbHlwaFZlcnRpY2VzIn0se3R5cGU6IlVp bnQxNiIsbmFtZToibnVtVmVydGljYWxHbHlwaFZlcnRpY2VzIn0se3R5cGU6 IlVpbnQxNiIsbmFtZToibnVtSWNvblZlcnRpY2VzIn0se3R5cGU6IlVpbnQz MiIsbmFtZToiY3Jvc3NUaWxlSUQifSx7dHlwZToiRmxvYXQzMiIsbmFtZToi dGV4dEJveFNjYWxlIn0se3R5cGU6IkZsb2F0MzIiLG5hbWU6InJhZGlhbFRl eHRPZmZzZXQifV0pLEpuKFt7dHlwZToiRmxvYXQzMiIsbmFtZToib2Zmc2V0 WCJ9XSksSm4oW3t0eXBlOiJJbnQxNiIsbmFtZToieCJ9LHt0eXBlOiJJbnQx NiIsbmFtZToieSJ9LHt0eXBlOiJJbnQxNiIsbmFtZToidGlsZVVuaXREaXN0 YW5jZUZyb21BbmNob3IifV0pO3ZhciBzcz17IiEiOiJcdWZlMTUiLCIjIjoi XHVmZjAzIiwkOiJcdWZmMDQiLCIlIjoiXHVmZjA1IiwiJiI6Ilx1ZmYwNiIs IigiOiJcdWZlMzUiLCIpIjoiXHVmZTM2IiwiKiI6Ilx1ZmYwYSIsIisiOiJc dWZmMGIiLCIsIjoiXHVmZTEwIiwiLSI6Ilx1ZmUzMiIsIi4iOiJcdTMwZmIi LCIvIjoiXHVmZjBmIiwiOiI6Ilx1ZmUxMyIsIjsiOiJcdWZlMTQiLCI8Ijoi XHVmZTNmIiwiPSI6Ilx1ZmYxZCIsIj4iOiJcdWZlNDAiLCI/IjoiXHVmZTE2 IiwiQCI6Ilx1ZmYyMCIsIlsiOiJcdWZlNDciLCJcXCI6Ilx1ZmYzYyIsIl0i OiJcdWZlNDgiLCJeIjoiXHVmZjNlIixfOiJcdWZlMzMiLCJgIjoiXHVmZjQw IiwieyI6Ilx1ZmUzNyIsInwiOiJcdTIwMTUiLCJ9IjoiXHVmZTM4IiwifiI6 Ilx1ZmY1ZSIsIlx4YTIiOiJcdWZmZTAiLCJceGEzIjoiXHVmZmUxIiwiXHhh NSI6Ilx1ZmZlNSIsIlx4YTYiOiJcdWZmZTQiLCJceGFjIjoiXHVmZmUyIiwi XHhhZiI6Ilx1ZmZlMyIsIlx1MjAxMyI6Ilx1ZmUzMiIsIlx1MjAxNCI6Ilx1 ZmUzMSIsIlx1MjAxOCI6Ilx1ZmU0MyIsIlx1MjAxOSI6Ilx1ZmU0NCIsIlx1 MjAxYyI6Ilx1ZmU0MSIsIlx1MjAxZCI6Ilx1ZmU0MiIsIlx1MjAyNiI6Ilx1 ZmUxOSIsIlx1MjAyNyI6Ilx1MzBmYiIsIlx1MjBhOSI6Ilx1ZmZlNiIsIlx1 MzAwMSI6Ilx1ZmUxMSIsIlx1MzAwMiI6Ilx1ZmUxMiIsIlx1MzAwOCI6Ilx1 ZmUzZiIsIlx1MzAwOSI6Ilx1ZmU0MCIsIlx1MzAwYSI6Ilx1ZmUzZCIsIlx1 MzAwYiI6Ilx1ZmUzZSIsIlx1MzAwYyI6Ilx1ZmU0MSIsIlx1MzAwZCI6Ilx1 ZmU0MiIsIlx1MzAwZSI6Ilx1ZmU0MyIsIlx1MzAwZiI6Ilx1ZmU0NCIsIlx1 MzAxMCI6Ilx1ZmUzYiIsIlx1MzAxMSI6Ilx1ZmUzYyIsIlx1MzAxNCI6Ilx1 ZmUzOSIsIlx1MzAxNSI6Ilx1ZmUzYSIsIlx1MzAxNiI6Ilx1ZmUxNyIsIlx1 MzAxNyI6Ilx1ZmUxOCIsIlx1ZmYwMSI6Ilx1ZmUxNSIsIlx1ZmYwOCI6Ilx1 ZmUzNSIsIlx1ZmYwOSI6Ilx1ZmUzNiIsIlx1ZmYwYyI6Ilx1ZmUxMCIsIlx1 ZmYwZCI6Ilx1ZmUzMiIsIlx1ZmYwZSI6Ilx1MzBmYiIsIlx1ZmYxYSI6Ilx1 ZmUxMyIsIlx1ZmYxYiI6Ilx1ZmUxNCIsIlx1ZmYxYyI6Ilx1ZmUzZiIsIlx1 ZmYxZSI6Ilx1ZmU0MCIsIlx1ZmYxZiI6Ilx1ZmUxNiIsIlx1ZmYzYiI6Ilx1 ZmU0NyIsIlx1ZmYzZCI6Ilx1ZmU0OCIsIlx1ZmYzZiI6Ilx1ZmUzMyIsIlx1 ZmY1YiI6Ilx1ZmUzNyIsIlx1ZmY1YyI6Ilx1MjAxNSIsIlx1ZmY1ZCI6Ilx1 ZmUzOCIsIlx1ZmY1ZiI6Ilx1ZmUzNSIsIlx1ZmY2MCI6Ilx1ZmUzNiIsIlx1 ZmY2MSI6Ilx1ZmUxMiIsIlx1ZmY2MiI6Ilx1ZmU0MSIsIlx1ZmY2MyI6Ilx1 ZmU0MiJ9LGxzPTI0LGNzPXtob3Jpem9udGFsOjEsdmVydGljYWw6Mixob3Jp em9udGFsT25seTozfSx1cz1mdW5jdGlvbigpe3RoaXMudGV4dD0iIix0aGlz LnNlY3Rpb25JbmRleD1bXSx0aGlzLnNlY3Rpb25zPVtdfTtmdW5jdGlvbiBo cyh0LGUscixuLGEsaSxvLHMsbCxjLHUpe3ZhciBoLGY9dXMuZnJvbUZlYXR1 cmUodCxyKTtjPT09Y3MudmVydGljYWwmJmYudmVydGljYWxpemVQdW5jdHVh dGlvbigpO3ZhciBwPUNuLnByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dCxkPUNu LnByb2Nlc3NTdHlsZWRCaWRpcmVjdGlvbmFsVGV4dDtpZihwJiYxPT09Zi5z ZWN0aW9ucy5sZW5ndGgpe2g9W107Zm9yKHZhciBnPTAsdj1wKGYudG9TdHJp bmcoKSxtcyhmLHMsbixlKSk7Zzx2Lmxlbmd0aDtnKz0xKXt2YXIgbT12W2dd LHk9bmV3IHVzO3kudGV4dD1tLHkuc2VjdGlvbnM9Zi5zZWN0aW9ucztmb3Io dmFyIHg9MDt4PG0ubGVuZ3RoO3grKyl5LnNlY3Rpb25JbmRleC5wdXNoKDAp O2gucHVzaCh5KX19ZWxzZSBpZihkKXtoPVtdO2Zvcih2YXIgYj0wLF89ZChm LnRleHQsZi5zZWN0aW9uSW5kZXgsbXMoZixzLG4sZSkpO2I8Xy5sZW5ndGg7 Yis9MSl7dmFyIHc9X1tiXSxrPW5ldyB1cztrLnRleHQ9d1swXSxrLnNlY3Rp b25JbmRleD13WzFdLGsuc2VjdGlvbnM9Zi5zZWN0aW9ucyxoLnB1c2goayl9 fWVsc2UgaD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPXQudGV4dCxh PTAsaT0wLG89ZTtpPG8ubGVuZ3RoO2krPTEpe3ZhciBzPW9baV07ci5wdXNo KHQuc3Vic3RyaW5nKGEscykpLGE9c31yZXR1cm4gYTxuLmxlbmd0aCYmci5w dXNoKHQuc3Vic3RyaW5nKGEsbi5sZW5ndGgpKSxyfShmLG1zKGYscyxuLGUp KTt2YXIgVD1bXSxNPXtwb3NpdGlvbmVkR2x5cGhzOlQsdGV4dDpmLnRvU3Ry aW5nKCksdG9wOmxbMV0sYm90dG9tOmxbMV0sbGVmdDpsWzBdLHJpZ2h0Omxb MF0sd3JpdGluZ01vZGU6YyxsaW5lQ291bnQ6aC5sZW5ndGgseU9mZnNldDot MTd9O3JldHVybiBmdW5jdGlvbih0LGUscixuLGEsaSxvLHMsbCl7Zm9yKHZh ciBjPTAsdT10LnlPZmZzZXQsaD0wLGY9dC5wb3NpdGlvbmVkR2x5cGhzLHA9 InJpZ2h0Ij09PWk/MToibGVmdCI9PT1pPzA6LjUsZD0wLGc9cjtkPGcubGVu Z3RoO2QrPTEpe3ZhciB2PWdbZF07di50cmltKCk7dmFyIG09di5nZXRNYXhT Y2FsZSgpO2lmKHYubGVuZ3RoKCkpe2Zvcih2YXIgeT1mLmxlbmd0aCx4PTA7 eDx2Lmxlbmd0aCgpO3grKyl7dmFyIGI9di5nZXRTZWN0aW9uKHgpLF89di5n ZXRTZWN0aW9uSW5kZXgoeCksdz12LmdldENoYXJDb2RlKHgpLGs9MjQqKG0t Yi5zY2FsZSksVD1lW2IuZm9udFN0YWNrXSxNPVQmJlRbd107TSYmKG89PT1j cy5ob3Jpem9udGFsfHwhbCYmIXduKHcpfHxsJiYoZnNbd118fChTPXcseG4u QXJhYmljKFMpfHx4blsiQXJhYmljIFN1cHBsZW1lbnQiXShTKXx8eG5bIkFy YWJpYyBFeHRlbmRlZC1BIl0oUyl8fHhuWyJBcmFiaWMgUHJlc2VudGF0aW9u IEZvcm1zLUEiXShTKXx8eG5bIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMt QiJdKFMpKSk/KGYucHVzaCh7Z2x5cGg6dyx4OmMseTp1K2ssdmVydGljYWw6 ITEsc2NhbGU6Yi5zY2FsZSxmb250U3RhY2s6Yi5mb250U3RhY2ssc2VjdGlv bkluZGV4Ol99KSxjKz1NLm1ldHJpY3MuYWR2YW5jZSpiLnNjYWxlK3MpOihm LnB1c2goe2dseXBoOncseDpjLHk6dStrLHZlcnRpY2FsOiEwLHNjYWxlOmIu c2NhbGUsZm9udFN0YWNrOmIuZm9udFN0YWNrLHNlY3Rpb25JbmRleDpffSks Yys9bHMqYi5zY2FsZStzKSl9aWYoZi5sZW5ndGghPT15KXt2YXIgQT1jLXM7 aD1NYXRoLm1heChBLGgpLHhzKGYsZSx5LGYubGVuZ3RoLTEscCl9Yz0wLHUr PW4qbX1lbHNlIHUrPW59dmFyIFMsRT15cyhhKSxMPUUuaG9yaXpvbnRhbEFs aWduLEM9RS52ZXJ0aWNhbEFsaWduOyFmdW5jdGlvbih0LGUscixuLGEsaSxv KXtmb3IodmFyIHM9KGUtcikqYSxsPSgtbipvKy41KSppLGM9MDtjPHQubGVu Z3RoO2MrKyl0W2NdLngrPXMsdFtjXS55Kz1sfShmLHAsTCxDLGgsbixyLmxl bmd0aCk7dmFyIFA9dS10LnlPZmZzZXQ7dC50b3ArPS1DKlAsdC5ib3R0b209 dC50b3ArUCx0LmxlZnQrPS1MKmgsdC5yaWdodD10LmxlZnQraH0oTSxlLGgs YSxpLG8sYyxzLHUpLCEhVC5sZW5ndGgmJk19dXMuZnJvbUZlYXR1cmU9ZnVu Y3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IHVzLG49MDtuPHQuc2VjdGlvbnMu bGVuZ3RoO24rKyl7dmFyIGE9dC5zZWN0aW9uc1tuXTtyLnNlY3Rpb25zLnB1 c2goe3NjYWxlOmEuc2NhbGV8fDEsZm9udFN0YWNrOmEuZm9udFN0YWNrfHxl fSksci50ZXh0Kz1hLnRleHQ7Zm9yKHZhciBpPTA7aTxhLnRleHQubGVuZ3Ro O2krKylyLnNlY3Rpb25JbmRleC5wdXNoKG4pfXJldHVybiByfSx1cy5wcm90 b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dC5sZW5n dGh9LHVzLnByb3RvdHlwZS5nZXRTZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVy biB0aGlzLnNlY3Rpb25zW3RoaXMuc2VjdGlvbkluZGV4W3RdXX0sdXMucHJv dG90eXBlLmdldFNlY3Rpb25JbmRleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhp cy5zZWN0aW9uSW5kZXhbdF19LHVzLnByb3RvdHlwZS5nZXRDaGFyQ29kZT1m dW5jdGlvbih0KXtyZXR1cm4gdGhpcy50ZXh0LmNoYXJDb2RlQXQodCl9LHVz LnByb3RvdHlwZS52ZXJ0aWNhbGl6ZVB1bmN0dWF0aW9uPWZ1bmN0aW9uKCl7 dGhpcy50ZXh0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0iIixyPTA7cjx0Lmxl bmd0aDtyKyspe3ZhciBuPXQuY2hhckNvZGVBdChyKzEpfHxudWxsLGE9dC5j aGFyQ29kZUF0KHItMSl8fG51bGw7biYma24obikmJiFzc1t0W3IrMV1dfHxh JiZrbihhKSYmIXNzW3Rbci0xXV18fCFzc1t0W3JdXT9lKz10W3JdOmUrPXNz W3Rbcl1dfXJldHVybiBlfSh0aGlzLnRleHQpfSx1cy5wcm90b3R5cGUudHJp bT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9MDtlPHRoaXMudGV4dC5sZW5n dGgmJmZzW3RoaXMudGV4dC5jaGFyQ29kZUF0KGUpXTtlKyspdCsrO2Zvcih2 YXIgcj10aGlzLnRleHQubGVuZ3RoLG49dGhpcy50ZXh0Lmxlbmd0aC0xO24+ PTAmJm4+PXQmJmZzW3RoaXMudGV4dC5jaGFyQ29kZUF0KG4pXTtuLS0pci0t O3RoaXMudGV4dD10aGlzLnRleHQuc3Vic3RyaW5nKHQsciksdGhpcy5zZWN0 aW9uSW5kZXg9dGhpcy5zZWN0aW9uSW5kZXguc2xpY2UodCxyKX0sdXMucHJv dG90eXBlLnN1YnN0cmluZz1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyB1czty ZXR1cm4gci50ZXh0PXRoaXMudGV4dC5zdWJzdHJpbmcodCxlKSxyLnNlY3Rp b25JbmRleD10aGlzLnNlY3Rpb25JbmRleC5zbGljZSh0LGUpLHIuc2VjdGlv bnM9dGhpcy5zZWN0aW9ucyxyfSx1cy5wcm90b3R5cGUudG9TdHJpbmc9ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0fSx1cy5wcm90b3R5cGUuZ2V0TWF4 U2NhbGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLnNlY3Rp b25JbmRleC5yZWR1Y2UoZnVuY3Rpb24oZSxyKXtyZXR1cm4gTWF0aC5tYXgo ZSx0LnNlY3Rpb25zW3JdLnNjYWxlKX0sMCl9O3ZhciBmcz17OTohMCwxMDoh MCwxMTohMCwxMjohMCwxMzohMCwzMjohMH0scHM9e307ZnVuY3Rpb24gZHMo dCxlLHIsbil7dmFyIGE9TWF0aC5wb3codC1lLDIpO3JldHVybiBuP3Q8ZT9h LzI6MiphOmErTWF0aC5hYnMocikqcn1mdW5jdGlvbiBncyh0LGUscil7dmFy IG49MDtyZXR1cm4gMTA9PT10JiYobi09MWU0KSxyJiYobis9MTUwKSw0MCE9 PXQmJjY1Mjg4IT09dHx8KG4rPTUwKSw0MSE9PWUmJjY1Mjg5IT09ZXx8KG4r PTUwKSxufWZ1bmN0aW9uIHZzKHQsZSxyLG4sYSxpKXtmb3IodmFyIG89bnVs bCxzPWRzKGUscixhLGkpLGw9MCxjPW47bDxjLmxlbmd0aDtsKz0xKXt2YXIg dT1jW2xdLGg9ZHMoZS11LngscixhLGkpK3UuYmFkbmVzcztoPD1zJiYobz11 LHM9aCl9cmV0dXJue2luZGV4OnQseDplLHByaW9yQnJlYWs6byxiYWRuZXNz OnN9fWZ1bmN0aW9uIG1zKHQsZSxyLG4pe2lmKCFyKXJldHVybltdO2lmKCF0 KXJldHVybltdO2Zvcih2YXIgYSxpPVtdLG89ZnVuY3Rpb24odCxlLHIsbil7 Zm9yKHZhciBhPTAsaT0wO2k8dC5sZW5ndGgoKTtpKyspe3ZhciBvPXQuZ2V0 U2VjdGlvbihpKSxzPW5bby5mb250U3RhY2tdLGw9cyYmc1t0LmdldENoYXJD b2RlKGkpXTtsJiYoYSs9bC5tZXRyaWNzLmFkdmFuY2Uqby5zY2FsZStlKX1y ZXR1cm4gYS9NYXRoLm1heCgxLE1hdGguY2VpbChhL3IpKX0odCxlLHIsbiks cz10LnRleHQuaW5kZXhPZigiXHUyMDBiIik+PTAsbD0wLGM9MDtjPHQubGVu Z3RoKCk7YysrKXt2YXIgdT10LmdldFNlY3Rpb24oYyksaD10LmdldENoYXJD b2RlKGMpLGY9blt1LmZvbnRTdGFja10scD1mJiZmW2hdO2lmKHAmJiFmc1to XSYmKGwrPXAubWV0cmljcy5hZHZhbmNlKnUuc2NhbGUrZSksYzx0Lmxlbmd0 aCgpLTEpe3ZhciBkPSEoKGE9aCk8MTE5MDR8fCEoeG5bIkJvcG9tb2ZvIEV4 dGVuZGVkIl0oYSl8fHhuLkJvcG9tb2ZvKGEpfHx4blsiQ0pLIENvbXBhdGli aWxpdHkgRm9ybXMiXShhKXx8eG5bIkNKSyBDb21wYXRpYmlsaXR5IElkZW9n cmFwaHMiXShhKXx8eG5bIkNKSyBDb21wYXRpYmlsaXR5Il0oYSl8fHhuWyJD SksgUmFkaWNhbHMgU3VwcGxlbWVudCJdKGEpfHx4blsiQ0pLIFN0cm9rZXMi XShhKXx8eG5bIkNKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbiJdKGEpfHx4 blsiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQSJdKGEpfHx4 blsiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyJdKGEpfHx4blsiRW5jbG9zZWQg Q0pLIExldHRlcnMgYW5kIE1vbnRocyJdKGEpfHx4blsiSGFsZndpZHRoIGFu ZCBGdWxsd2lkdGggRm9ybXMiXShhKXx8eG4uSGlyYWdhbmEoYSl8fHhuWyJJ ZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBDaGFyYWN0ZXJzIl0oYSl8fHhuWyJL YW5neGkgUmFkaWNhbHMiXShhKXx8eG5bIkthdGFrYW5hIFBob25ldGljIEV4 dGVuc2lvbnMiXShhKXx8eG4uS2F0YWthbmEoYSl8fHhuWyJWZXJ0aWNhbCBG b3JtcyJdKGEpfHx4blsiWWkgUmFkaWNhbHMiXShhKXx8eG5bIllpIFN5bGxh YmxlcyJdKGEpKSk7KHBzW2hdfHxkKSYmaS5wdXNoKHZzKGMrMSxsLG8saSxn cyhoLHQuZ2V0Q2hhckNvZGUoYysxKSxkJiZzKSwhMSkpfX1yZXR1cm4gZnVu Y3Rpb24gdChlKXtyZXR1cm4gZT90KGUucHJpb3JCcmVhaykuY29uY2F0KGUu aW5kZXgpOltdfSh2cyh0Lmxlbmd0aCgpLGwsbyxpLDAsITApKX1mdW5jdGlv biB5cyh0KXt2YXIgZT0uNSxyPS41O3N3aXRjaCh0KXtjYXNlInJpZ2h0Ijpj YXNlInRvcC1yaWdodCI6Y2FzZSJib3R0b20tcmlnaHQiOmU9MTticmVhaztj YXNlImxlZnQiOmNhc2UidG9wLWxlZnQiOmNhc2UiYm90dG9tLWxlZnQiOmU9 MH1zd2l0Y2godCl7Y2FzZSJib3R0b20iOmNhc2UiYm90dG9tLXJpZ2h0Ijpj YXNlImJvdHRvbS1sZWZ0IjpyPTE7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UidG9w LXJpZ2h0IjpjYXNlInRvcC1sZWZ0IjpyPTB9cmV0dXJue2hvcml6b250YWxB bGlnbjplLHZlcnRpY2FsQWxpZ246cn19ZnVuY3Rpb24geHModCxlLHIsbixh KXtpZihhKXt2YXIgaT10W25dLG89ZVtpLmZvbnRTdGFja10scz1vJiZvW2ku Z2x5cGhdO2lmKHMpZm9yKHZhciBsPXMubWV0cmljcy5hZHZhbmNlKmkuc2Nh bGUsYz0odFtuXS54K2wpKmEsdT1yO3U8PW47dSsrKXRbdV0ueC09Y319cHNb MTBdPSEwLHBzWzMyXT0hMCxwc1szOF09ITAscHNbNDBdPSEwLHBzWzQxXT0h MCxwc1s0M109ITAscHNbNDVdPSEwLHBzWzQ3XT0hMCxwc1sxNzNdPSEwLHBz WzE4M109ITAscHNbODIwM109ITAscHNbODIwOF09ITAscHNbODIxMV09ITAs cHNbODIzMV09ITA7dmFyIGJzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxy LG4sYSl7dC5jYWxsKHRoaXMsZSxyKSx0aGlzLmFuZ2xlPW4sdm9pZCAwIT09 YSYmKHRoaXMuc2VnbWVudD1hKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQp LGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUu cHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuY2xvbmU9ZnVu Y3Rpb24oKXtyZXR1cm4gbmV3IGUodGhpcy54LHRoaXMueSx0aGlzLmFuZ2xl LHRoaXMuc2VnbWVudCl9LGV9KGEpO2RuKCJBbmNob3IiLGJzKTt2YXIgX3M9 MjU2O2Z1bmN0aW9uIHdzKHQsZSl7dmFyIHI9ZS5leHByZXNzaW9uO2lmKCJj b25zdGFudCI9PT1yLmtpbmQpcmV0dXJue2tpbmQ6ImNvbnN0YW50IixsYXlv dXRTaXplOnIuZXZhbHVhdGUobmV3IFBuKHQrMSkpfTtpZigic291cmNlIj09 PXIua2luZClyZXR1cm57a2luZDoic291cmNlIn07Zm9yKHZhciBuPXIuem9v bVN0b3BzLGE9ci5pbnRlcnBvbGF0aW9uVHlwZSxpPTA7aTxuLmxlbmd0aCYm bltpXTw9dDspaSsrO2Zvcih2YXIgbz1pPU1hdGgubWF4KDAsaS0xKTtvPG4u bGVuZ3RoJiZuW29dPHQrMTspbysrO289TWF0aC5taW4obi5sZW5ndGgtMSxv KTt2YXIgcz1uW2ldLGw9bltvXTtyZXR1cm4iY29tcG9zaXRlIj09PXIua2lu ZD97a2luZDoiY29tcG9zaXRlIixtaW5ab29tOnMsbWF4Wm9vbTpsLGludGVy cG9sYXRpb25UeXBlOmF9OntraW5kOiJjYW1lcmEiLG1pblpvb206cyxtYXha b29tOmwsbWluU2l6ZTpyLmV2YWx1YXRlKG5ldyBQbihzKSksbWF4U2l6ZTpy LmV2YWx1YXRlKG5ldyBQbihsKSksaW50ZXJwb2xhdGlvblR5cGU6YX19ZnVu Y3Rpb24ga3ModCxlLHIpe3ZhciBuPWUudVNpemUsYT1lLnVTaXplVCxpPXIu bG93ZXJTaXplLG89ci51cHBlclNpemU7cmV0dXJuInNvdXJjZSI9PT10Lmtp bmQ/aS9fczoiY29tcG9zaXRlIj09PXQua2luZD95ZShpL19zLG8vX3MsYSk6 bn1mdW5jdGlvbiBUcyh0LGUpe3ZhciByPTAsbj0wO2lmKCJjb25zdGFudCI9 PT10LmtpbmQpbj10LmxheW91dFNpemU7ZWxzZSBpZigic291cmNlIiE9PXQu a2luZCl7dmFyIGE9dC5pbnRlcnBvbGF0aW9uVHlwZSxpPXQubWluWm9vbSxv PXQubWF4Wm9vbSxzPWE/YyhOZS5pbnRlcnBvbGF0aW9uRmFjdG9yKGEsZSxp LG8pLDAsMSk6MDsiY2FtZXJhIj09PXQua2luZD9uPXllKHQubWluU2l6ZSx0 Lm1heFNpemUscyk6cj1zfXJldHVybnt1U2l6ZVQ6cix1U2l6ZTpufX12YXIg TXM9T2JqZWN0LmZyZWV6ZSh7Z2V0U2l6ZURhdGE6d3MsZXZhbHVhdGVTaXpl Rm9yRmVhdHVyZTprcyxldmFsdWF0ZVNpemVGb3Jab29tOlRzLFNJWkVfUEFD S19GQUNUT1I6X3N9KSxBcz1Jby5WZWN0b3JUaWxlRmVhdHVyZS50eXBlcyxT cz1be25hbWU6ImFfZmFkZV9vcGFjaXR5Iixjb21wb25lbnRzOjEsdHlwZToi VWludDgiLG9mZnNldDowfV07ZnVuY3Rpb24gRXModCxlLHIsbixhLGksbyxz KXt0LmVtcGxhY2VCYWNrKGUscixNYXRoLnJvdW5kKDMyKm4pLE1hdGgucm91 bmQoMzIqYSksaSxvLHM/c1swXTowLHM/c1sxXTowKX1mdW5jdGlvbiBMcyh0 LGUscil7dC5lbXBsYWNlQmFjayhlLngsZS55LHIpLHQuZW1wbGFjZUJhY2so ZS54LGUueSxyKSx0LmVtcGxhY2VCYWNrKGUueCxlLnksciksdC5lbXBsYWNl QmFjayhlLngsZS55LHIpfXZhciBDcz1mdW5jdGlvbih0KXt0aGlzLmxheW91 dFZlcnRleEFycmF5PW5ldyBuYSx0aGlzLmluZGV4QXJyYXk9bmV3IGRhLHRo aXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPXQsdGhpcy5zZWdtZW50cz1uZXcg T2EsdGhpcy5keW5hbWljTGF5b3V0VmVydGV4QXJyYXk9bmV3IGFhLHRoaXMu b3BhY2l0eVZlcnRleEFycmF5PW5ldyBpYSx0aGlzLnBsYWNlZFN5bWJvbEFy cmF5PW5ldyB3YX07Q3MucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0LGUs cixuKXtyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0 ZXhCdWZmZXIodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxlcy5tZW1iZXJzKSx0 aGlzLmluZGV4QnVmZmVyPXQuY3JlYXRlSW5kZXhCdWZmZXIodGhpcy5pbmRl eEFycmF5LGUpLHRoaXMuZHluYW1pY0xheW91dFZlcnRleEJ1ZmZlcj10LmNy ZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJh eSxycy5tZW1iZXJzLCEwKSx0aGlzLm9wYWNpdHlWZXJ0ZXhCdWZmZXI9dC5j cmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5vcGFjaXR5VmVydGV4QXJyYXksU3Ms ITApLHRoaXMub3BhY2l0eVZlcnRleEJ1ZmZlci5pdGVtU2l6ZT0xKSwocnx8 bikmJnRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwbG9hZCh0KX0sQ3Mu cHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmxheW91dFZlcnRl eEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0 aGlzLmluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLnByb2dyYW1Db25maWd1 cmF0aW9ucy5kZXN0cm95KCksdGhpcy5zZWdtZW50cy5kZXN0cm95KCksdGhp cy5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLm9w YWNpdHlWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpKX0sZG4oIlN5bWJvbEJ1ZmZl cnMiLENzKTt2YXIgUHM9ZnVuY3Rpb24odCxlLHIpe3RoaXMubGF5b3V0VmVy dGV4QXJyYXk9bmV3IHQsdGhpcy5sYXlvdXRBdHRyaWJ1dGVzPWUsdGhpcy5p bmRleEFycmF5PW5ldyByLHRoaXMuc2VnbWVudHM9bmV3IE9hLHRoaXMuY29s bGlzaW9uVmVydGV4QXJyYXk9bmV3IGxhfTtQcy5wcm90b3R5cGUudXBsb2Fk PWZ1bmN0aW9uKHQpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyPXQuY3JlYXRl VmVydGV4QnVmZmVyKHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5sYXlv dXRBdHRyaWJ1dGVzKSx0aGlzLmluZGV4QnVmZmVyPXQuY3JlYXRlSW5kZXhC dWZmZXIodGhpcy5pbmRleEFycmF5KSx0aGlzLmNvbGxpc2lvblZlcnRleEJ1 ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmNvbGxpc2lvblZlcnRl eEFycmF5LG5zLm1lbWJlcnMsITApfSxQcy5wcm90b3R5cGUuZGVzdHJveT1m dW5jdGlvbigpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyJiYodGhpcy5sYXlv dXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVz dHJveSgpLHRoaXMuc2VnbWVudHMuZGVzdHJveSgpLHRoaXMuY29sbGlzaW9u VmVydGV4QnVmZmVyLmRlc3Ryb3koKSl9LGRuKCJDb2xsaXNpb25CdWZmZXJz IixQcyk7dmFyIE9zPWZ1bmN0aW9uKHQpe3RoaXMuY29sbGlzaW9uQm94QXJy YXk9dC5jb2xsaXNpb25Cb3hBcnJheSx0aGlzLnpvb209dC56b29tLHRoaXMu b3ZlcnNjYWxpbmc9dC5vdmVyc2NhbGluZyx0aGlzLmxheWVycz10LmxheWVy cyx0aGlzLmxheWVySWRzPXRoaXMubGF5ZXJzLm1hcChmdW5jdGlvbih0KXty ZXR1cm4gdC5pZH0pLHRoaXMuaW5kZXg9dC5pbmRleCx0aGlzLnBpeGVsUmF0 aW89dC5waXhlbFJhdGlvLHRoaXMuc291cmNlTGF5ZXJJbmRleD10LnNvdXJj ZUxheWVySW5kZXgsdGhpcy5oYXNQYXR0ZXJuPSExLHRoaXMuaGFzUGFpbnRP dmVycmlkZXM9ITE7dmFyIGU9dGhpcy5sYXllcnNbMF0uX3VuZXZhbHVhdGVk TGF5b3V0Ll92YWx1ZXM7dGhpcy50ZXh0U2l6ZURhdGE9d3ModGhpcy56b29t LGVbInRleHQtc2l6ZSJdKSx0aGlzLmljb25TaXplRGF0YT13cyh0aGlzLnpv b20sZVsiaWNvbi1zaXplIl0pO3ZhciByPXRoaXMubGF5ZXJzWzBdLmxheW91 dCxuPXIuZ2V0KCJzeW1ib2wtc29ydC1rZXkiKSxhPXIuZ2V0KCJzeW1ib2wt ei1vcmRlciIpO3RoaXMuc29ydEZlYXR1cmVzQnlLZXk9InZpZXdwb3J0LXki IT09YSYmdm9pZCAwIT09bi5jb25zdGFudE9yKDEpO3ZhciBpPSJ2aWV3cG9y dC15Ij09PWF8fCJhdXRvIj09PWEmJiF0aGlzLnNvcnRGZWF0dXJlc0J5S2V5 O3RoaXMuc29ydEZlYXR1cmVzQnlZPWkmJihyLmdldCgidGV4dC1hbGxvdy1v dmVybGFwIil8fHIuZ2V0KCJpY29uLWFsbG93LW92ZXJsYXAiKXx8ci5nZXQo InRleHQtaWdub3JlLXBsYWNlbWVudCIpfHxyLmdldCgiaWNvbi1pZ25vcmUt cGxhY2VtZW50IikpLCJwb2ludCI9PT1yLmdldCgic3ltYm9sLXBsYWNlbWVu dCIpJiYodGhpcy53cml0aW5nTW9kZXM9ci5nZXQoInRleHQtd3JpdGluZy1t b2RlIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBjc1t0XX0pKSx0aGlzLnN0 YXRlRGVwZW5kZW50TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKGZ1bmN0 aW9uKHQpe3JldHVybiB0LmlzU3RhdGVEZXBlbmRlbnQoKX0pLm1hcChmdW5j dGlvbih0KXtyZXR1cm4gdC5pZH0pLHRoaXMuc291cmNlSUQ9dC5zb3VyY2VJ RH07T3MucHJvdG90eXBlLmNyZWF0ZUFycmF5cz1mdW5jdGlvbigpe3ZhciB0 PXRoaXMubGF5ZXJzWzBdLmxheW91dDt0aGlzLmhhc1BhaW50T3ZlcnJpZGVz PVJzLmhhc1BhaW50T3ZlcnJpZGVzKHQpLHRoaXMudGV4dD1uZXcgQ3MobmV3 IFFhKGVzLm1lbWJlcnMsdGhpcy5sYXllcnMsdGhpcy56b29tLGZ1bmN0aW9u KHQpe3JldHVybi9edGV4dC8udGVzdCh0KX0pKSx0aGlzLmljb249bmV3IENz KG5ldyBRYShlcy5tZW1iZXJzLHRoaXMubGF5ZXJzLHRoaXMuem9vbSxmdW5j dGlvbih0KXtyZXR1cm4vXmljb24vLnRlc3QodCl9KSksdGhpcy5jb2xsaXNp b25Cb3g9bmV3IFBzKHNhLGFzLm1lbWJlcnMsZ2EpLHRoaXMuY29sbGlzaW9u Q2lyY2xlPW5ldyBQcyhzYSxpcy5tZW1iZXJzLGRhKSx0aGlzLmdseXBoT2Zm c2V0QXJyYXk9bmV3IEFhLHRoaXMubGluZVZlcnRleEFycmF5PW5ldyBFYSx0 aGlzLnN5bWJvbEluc3RhbmNlcz1uZXcgVGF9LE9zLnByb3RvdHlwZS5jYWxj dWxhdGVHbHlwaERlcGVuZGVuY2llcz1mdW5jdGlvbih0LGUscixuLGEpe2Zv cih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKWlmKGVbdC5jaGFyQ29kZUF0KGkp XT0hMCwocnx8bikmJmEpe3ZhciBvPXNzW3QuY2hhckF0KGkpXTtvJiYoZVtv LmNoYXJDb2RlQXQoMCldPSEwKX19LE9zLnByb3RvdHlwZS5wb3B1bGF0ZT1m dW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGF5ZXJzWzBdLG49ci5sYXlvdXQs YT1uLmdldCgidGV4dC1mb250IiksaT1uLmdldCgidGV4dC1maWVsZCIpLG89 bi5nZXQoImljb24taW1hZ2UiKSxzPSgiY29uc3RhbnQiIT09aS52YWx1ZS5r aW5kfHxpLnZhbHVlLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoPjApJiYoImNv bnN0YW50IiE9PWEudmFsdWUua2luZHx8YS52YWx1ZS52YWx1ZS5sZW5ndGg+ MCksbD0iY29uc3RhbnQiIT09by52YWx1ZS5raW5kfHxvLnZhbHVlLnZhbHVl JiZvLnZhbHVlLnZhbHVlLmxlbmd0aD4wLGM9bi5nZXQoInN5bWJvbC1zb3J0 LWtleSIpO2lmKHRoaXMuZmVhdHVyZXM9W10sc3x8bCl7Zm9yKHZhciB1PWUu aWNvbkRlcGVuZGVuY2llcyxoPWUuZ2x5cGhEZXBlbmRlbmNpZXMsZj1uZXcg UG4odGhpcy56b29tKSxwPTAsZD10O3A8ZC5sZW5ndGg7cCs9MSl7dmFyIGc9 ZFtwXSx2PWcuZmVhdHVyZSxtPWcuaW5kZXgseT1nLnNvdXJjZUxheWVySW5k ZXg7aWYoci5fZmVhdHVyZUZpbHRlcihmLHYpKXt2YXIgeD12b2lkIDA7aWYo cyl7dmFyIGI9ci5nZXRWYWx1ZUFuZFJlc29sdmVUb2tlbnMoInRleHQtZmll bGQiLHYpO3g9b3MoYiBpbnN0YW5jZW9mIEp0P2I6SnQuZnJvbVN0cmluZyhi KSxyLHYpfXZhciBfPXZvaWQgMDtpZihsJiYoXz1yLmdldFZhbHVlQW5kUmVz b2x2ZVRva2VucygiaWNvbi1pbWFnZSIsdikpLHh8fF8pe3ZhciB3PXRoaXMu c29ydEZlYXR1cmVzQnlLZXk/Yy5ldmFsdWF0ZSh2LHt9KTp2b2lkIDAsaz17 dGV4dDp4LGljb246XyxpbmRleDptLHNvdXJjZUxheWVySW5kZXg6eSxnZW9t ZXRyeTpuaSh2KSxwcm9wZXJ0aWVzOnYucHJvcGVydGllcyx0eXBlOkFzW3Yu dHlwZV0sc29ydEtleTp3fTtpZih2b2lkIDAhPT12LmlkJiYoay5pZD12Lmlk KSx0aGlzLmZlYXR1cmVzLnB1c2goayksXyYmKHVbX109ITApLHgpe3ZhciBU PWEuZXZhbHVhdGUodix7fSkuam9pbigiLCIpLE09Im1hcCI9PT1uLmdldCgi dGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiKSYmInBvaW50IiE9PW4uZ2V0KCJz eW1ib2wtcGxhY2VtZW50Iik7dGhpcy5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50 PXRoaXMud3JpdGluZ01vZGVzJiZ0aGlzLndyaXRpbmdNb2Rlcy5pbmRleE9m KGNzLnZlcnRpY2FsKT49MDtmb3IodmFyIEE9MCxTPXguc2VjdGlvbnM7QTxT Lmxlbmd0aDtBKz0xKXt2YXIgRT1TW0FdLEw9Ym4oeC50b1N0cmluZygpKSxD PUUuZm9udFN0YWNrfHxULFA9aFtDXT1oW0NdfHx7fTt0aGlzLmNhbGN1bGF0 ZUdseXBoRGVwZW5kZW5jaWVzKEUudGV4dCxQLE0sdGhpcy5hbGxvd1ZlcnRp Y2FsUGxhY2VtZW50LEwpfX19fX0ibGluZSI9PT1uLmdldCgic3ltYm9sLXBs YWNlbWVudCIpJiYodGhpcy5mZWF0dXJlcz1mdW5jdGlvbih0KXt2YXIgZT17 fSxyPXt9LG49W10sYT0wO2Z1bmN0aW9uIGkoZSl7bi5wdXNoKHRbZV0pLGEr K31mdW5jdGlvbiBvKHQsZSxhKXt2YXIgaT1yW3RdO3JldHVybiBkZWxldGUg clt0XSxyW2VdPWksbltpXS5nZW9tZXRyeVswXS5wb3AoKSxuW2ldLmdlb21l dHJ5WzBdPW5baV0uZ2VvbWV0cnlbMF0uY29uY2F0KGFbMF0pLGl9ZnVuY3Rp b24gcyh0LHIsYSl7dmFyIGk9ZVtyXTtyZXR1cm4gZGVsZXRlIGVbcl0sZVt0 XT1pLG5baV0uZ2VvbWV0cnlbMF0uc2hpZnQoKSxuW2ldLmdlb21ldHJ5WzBd PWFbMF0uY29uY2F0KG5baV0uZ2VvbWV0cnlbMF0pLGl9ZnVuY3Rpb24gbCh0 LGUscil7dmFyIG49cj9lWzBdW2VbMF0ubGVuZ3RoLTFdOmVbMF1bMF07cmV0 dXJuIHQrIjoiK24ueCsiOiIrbi55fWZvcih2YXIgYz0wO2M8dC5sZW5ndGg7 YysrKXt2YXIgdT10W2NdLGg9dS5nZW9tZXRyeSxmPXUudGV4dD91LnRleHQu dG9TdHJpbmcoKTpudWxsO2lmKGYpe3ZhciBwPWwoZixoKSxkPWwoZixoLCEw KTtpZihwIGluIHImJmQgaW4gZSYmcltwXSE9PWVbZF0pe3ZhciBnPXMocCxk LGgpLHY9byhwLGQsbltnXS5nZW9tZXRyeSk7ZGVsZXRlIGVbcF0sZGVsZXRl IHJbZF0scltsKGYsblt2XS5nZW9tZXRyeSwhMCldPXYsbltnXS5nZW9tZXRy eT1udWxsfWVsc2UgcCBpbiByP28ocCxkLGgpOmQgaW4gZT9zKHAsZCxoKToo aShjKSxlW3BdPWEtMSxyW2RdPWEtMSl9ZWxzZSBpKGMpfXJldHVybiBuLmZp bHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5nZW9tZXRyeX0pfSh0aGlzLmZl YXR1cmVzKSksdGhpcy5zb3J0RmVhdHVyZXNCeUtleSYmdGhpcy5mZWF0dXJl cy5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc29ydEtleS1lLnNvcnRL ZXl9KX19LE9zLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe3Ro aXMuc3RhdGVEZXBlbmRlbnRMYXllcnMubGVuZ3RoJiYodGhpcy50ZXh0LnBy b2dyYW1Db25maWd1cmF0aW9ucy51cGRhdGVQYWludEFycmF5cyh0LGUsdGhp cy5sYXllcnMsciksdGhpcy5pY29uLnByb2dyYW1Db25maWd1cmF0aW9ucy51 cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5sYXllcnMscikpfSxPcy5wcm90 b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zeW1i b2xJbnN0YW5jZXMubGVuZ3RofSxPcy5wcm90b3R5cGUudXBsb2FkUGVuZGlu Zz1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVwbG9hZGVkfHx0aGlzLnRleHQu cHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfHx0aGlzLmljb24u cHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfSxPcy5wcm90b3R5 cGUudXBsb2FkPWZ1bmN0aW9uKHQpe3RoaXMudXBsb2FkZWR8fCh0aGlzLmNv bGxpc2lvbkJveC51cGxvYWQodCksdGhpcy5jb2xsaXNpb25DaXJjbGUudXBs b2FkKHQpKSx0aGlzLnRleHQudXBsb2FkKHQsdGhpcy5zb3J0RmVhdHVyZXNC eVksIXRoaXMudXBsb2FkZWQsdGhpcy50ZXh0LnByb2dyYW1Db25maWd1cmF0 aW9ucy5uZWVkc1VwbG9hZCksdGhpcy5pY29uLnVwbG9hZCh0LHRoaXMuc29y dEZlYXR1cmVzQnlZLCF0aGlzLnVwbG9hZGVkLHRoaXMuaWNvbi5wcm9ncmFt Q29uZmlndXJhdGlvbnMubmVlZHNVcGxvYWQpLHRoaXMudXBsb2FkZWQ9ITB9 LE9zLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy50ZXh0LmRl c3Ryb3koKSx0aGlzLmljb24uZGVzdHJveSgpLHRoaXMuY29sbGlzaW9uQm94 LmRlc3Ryb3koKSx0aGlzLmNvbGxpc2lvbkNpcmNsZS5kZXN0cm95KCl9LE9z LnByb3RvdHlwZS5hZGRUb0xpbmVWZXJ0ZXhBcnJheT1mdW5jdGlvbih0LGUp e3ZhciByPXRoaXMubGluZVZlcnRleEFycmF5Lmxlbmd0aDtpZih2b2lkIDAh PT10LnNlZ21lbnQpe2Zvcih2YXIgbj10LmRpc3QoZVt0LnNlZ21lbnQrMV0p LGE9dC5kaXN0KGVbdC5zZWdtZW50XSksaT17fSxvPXQuc2VnbWVudCsxO288 ZS5sZW5ndGg7bysrKWlbb109e3g6ZVtvXS54LHk6ZVtvXS55LHRpbGVVbml0 RGlzdGFuY2VGcm9tQW5jaG9yOm59LG88ZS5sZW5ndGgtMSYmKG4rPWVbbysx XS5kaXN0KGVbb10pKTtmb3IodmFyIHM9dC5zZWdtZW50fHwwO3M+PTA7cy0t KWlbc109e3g6ZVtzXS54LHk6ZVtzXS55LHRpbGVVbml0RGlzdGFuY2VGcm9t QW5jaG9yOmF9LHM+MCYmKGErPWVbcy0xXS5kaXN0KGVbc10pKTtmb3IodmFy IGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9aVtsXTt0aGlzLmxpbmVWZXJ0 ZXhBcnJheS5lbXBsYWNlQmFjayhjLngsYy55LGMudGlsZVVuaXREaXN0YW5j ZUZyb21BbmNob3IpfX1yZXR1cm57bGluZVN0YXJ0SW5kZXg6cixsaW5lTGVu Z3RoOnRoaXMubGluZVZlcnRleEFycmF5Lmxlbmd0aC1yfX0sT3MucHJvdG90 eXBlLmFkZFN5bWJvbHM9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzLGwsYyl7 dmFyIHU9dGhpcyxoPXQuaW5kZXhBcnJheSxmPXQubGF5b3V0VmVydGV4QXJy YXkscD10LmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheSxkPXQuc2VnbWVudHMu cHJlcGFyZVNlZ21lbnQoNCplLmxlbmd0aCx0LmxheW91dFZlcnRleEFycmF5 LHQuaW5kZXhBcnJheSxpLnNvcnRLZXkpLGc9dGhpcy5nbHlwaE9mZnNldEFy cmF5Lmxlbmd0aCx2PWQudmVydGV4TGVuZ3RoLG09dGhpcy5hbGxvd1ZlcnRp Y2FsUGxhY2VtZW50JiZvPT09Y3MudmVydGljYWw/TWF0aC5QSS8yOjAseT1m dW5jdGlvbih0KXt2YXIgZT10LnRsLG49dC50cixhPXQuYmwsaT10LmJyLG89 dC50ZXgsbD1kLnZlcnRleExlbmd0aCxjPXQuZ2x5cGhPZmZzZXRbMV07RXMo ZixzLngscy55LGUueCxjK2UueSxvLngsby55LHIpLEVzKGYscy54LHMueSxu LngsYytuLnksby54K28udyxvLnksciksRXMoZixzLngscy55LGEueCxjK2Eu eSxvLngsby55K28uaCxyKSxFcyhmLHMueCxzLnksaS54LGMraS55LG8ueCtv Lncsby55K28uaCxyKSxMcyhwLHMsbSksaC5lbXBsYWNlQmFjayhsLGwrMSxs KzIpLGguZW1wbGFjZUJhY2sobCsxLGwrMixsKzMpLGQudmVydGV4TGVuZ3Ro Kz00LGQucHJpbWl0aXZlTGVuZ3RoKz0yLHUuZ2x5cGhPZmZzZXRBcnJheS5l bXBsYWNlQmFjayh0LmdseXBoT2Zmc2V0WzBdKX07aWYoaS50ZXh0JiZpLnRl eHQuc2VjdGlvbnMpe3ZhciB4PWkudGV4dC5zZWN0aW9ucztpZih0aGlzLmhh c1BhaW50T3ZlcnJpZGVzKXtmb3IodmFyIGIsXz1mdW5jdGlvbihlLHIpe3Zv aWQgMD09PWJ8fGI9PT1lJiYhcnx8dC5wcm9ncmFtQ29uZmlndXJhdGlvbnMu cG9wdWxhdGVQYWludEFycmF5cyh0LmxheW91dFZlcnRleEFycmF5Lmxlbmd0 aCxpLGkuaW5kZXgse30seFtiXSksYj1lfSx3PTAsaz1lO3c8ay5sZW5ndGg7 dys9MSl7dmFyIFQ9a1t3XTtfKFQuc2VjdGlvbkluZGV4LCExKSx5KFQpfV8o YiwhMCl9ZWxzZXtmb3IodmFyIE09MCxBPWU7TTxBLmxlbmd0aDtNKz0xKXko QVtNXSk7dC5wcm9ncmFtQ29uZmlndXJhdGlvbnMucG9wdWxhdGVQYWludEFy cmF5cyh0LmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCxpLGkuaW5kZXgse30s eFswXSl9fWVsc2V7Zm9yKHZhciBTPTAsRT1lO1M8RS5sZW5ndGg7Uys9MSl5 KEVbU10pO3QucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRB cnJheXModC5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsaSxpLmluZGV4LHt9 KX10LnBsYWNlZFN5bWJvbEFycmF5LmVtcGxhY2VCYWNrKHMueCxzLnksZyx0 aGlzLmdseXBoT2Zmc2V0QXJyYXkubGVuZ3RoLWcsdixsLGMscy5zZWdtZW50 LHI/clswXTowLHI/clsxXTowLG5bMF0sblsxXSxvLDAsITEsMCl9LE9zLnBy b3RvdHlwZS5fYWRkQ29sbGlzaW9uRGVidWdWZXJ0ZXg9ZnVuY3Rpb24odCxl LHIsbixhLGkpe3JldHVybiBlLmVtcGxhY2VCYWNrKDAsMCksdC5lbXBsYWNl QmFjayhyLngsci55LG4sYSxNYXRoLnJvdW5kKGkueCksTWF0aC5yb3VuZChp LnkpKX0sT3MucHJvdG90eXBlLmFkZENvbGxpc2lvbkRlYnVnVmVydGljZXM9 ZnVuY3Rpb24odCxlLHIsbixpLG8scyxsKXt2YXIgYz1pLnNlZ21lbnRzLnBy ZXBhcmVTZWdtZW50KDQsaS5sYXlvdXRWZXJ0ZXhBcnJheSxpLmluZGV4QXJy YXkpLHU9Yy52ZXJ0ZXhMZW5ndGgsaD1pLmxheW91dFZlcnRleEFycmF5LGY9 aS5jb2xsaXNpb25WZXJ0ZXhBcnJheSxwPXMuYW5jaG9yWCxkPXMuYW5jaG9y WTtpZih0aGlzLl9hZGRDb2xsaXNpb25EZWJ1Z1ZlcnRleChoLGYsbyxwLGQs bmV3IGEodCxlKSksdGhpcy5fYWRkQ29sbGlzaW9uRGVidWdWZXJ0ZXgoaCxm LG8scCxkLG5ldyBhKHIsZSkpLHRoaXMuX2FkZENvbGxpc2lvbkRlYnVnVmVy dGV4KGgsZixvLHAsZCxuZXcgYShyLG4pKSx0aGlzLl9hZGRDb2xsaXNpb25E ZWJ1Z1ZlcnRleChoLGYsbyxwLGQsbmV3IGEodCxuKSksYy52ZXJ0ZXhMZW5n dGgrPTQsbCl7dmFyIGc9aS5pbmRleEFycmF5O2cuZW1wbGFjZUJhY2sodSx1 KzEsdSsyKSxnLmVtcGxhY2VCYWNrKHUsdSsyLHUrMyksYy5wcmltaXRpdmVM ZW5ndGgrPTJ9ZWxzZXt2YXIgdj1pLmluZGV4QXJyYXk7di5lbXBsYWNlQmFj ayh1LHUrMSksdi5lbXBsYWNlQmFjayh1KzEsdSsyKSx2LmVtcGxhY2VCYWNr KHUrMix1KzMpLHYuZW1wbGFjZUJhY2sodSszLHUpLGMucHJpbWl0aXZlTGVu Z3RoKz00fX0sT3MucHJvdG90eXBlLmFkZERlYnVnQ29sbGlzaW9uQm94ZXM9 ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj10O248ZTtuKyspe3ZhciBhPXRo aXMuY29sbGlzaW9uQm94QXJyYXkuZ2V0KG4pLGk9YS54MSxvPWEueTEscz1h LngyLGw9YS55MixjPWEucmFkaXVzPjA7dGhpcy5hZGRDb2xsaXNpb25EZWJ1 Z1ZlcnRpY2VzKGksbyxzLGwsYz90aGlzLmNvbGxpc2lvbkNpcmNsZTp0aGlz LmNvbGxpc2lvbkJveCxhLmFuY2hvclBvaW50LHIsYyl9fSxPcy5wcm90b3R5 cGUuZ2VuZXJhdGVDb2xsaXNpb25EZWJ1Z0J1ZmZlcnM9ZnVuY3Rpb24oKXtm b3IodmFyIHQ9MDt0PHRoaXMuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDt0Kysp e3ZhciBlPXRoaXMuc3ltYm9sSW5zdGFuY2VzLmdldCh0KTt0aGlzLmFkZERl YnVnQ29sbGlzaW9uQm94ZXMoZS50ZXh0Qm94U3RhcnRJbmRleCxlLnRleHRC b3hFbmRJbmRleCxlKSx0aGlzLmFkZERlYnVnQ29sbGlzaW9uQm94ZXMoZS52 ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4LGUudmVydGljYWxUZXh0Qm94RW5k SW5kZXgsZSksdGhpcy5hZGREZWJ1Z0NvbGxpc2lvbkJveGVzKGUuaWNvbkJv eFN0YXJ0SW5kZXgsZS5pY29uQm94RW5kSW5kZXgsZSl9fSxPcy5wcm90b3R5 cGUuX2Rlc2VyaWFsaXplQ29sbGlzaW9uQm94ZXNGb3JTeW1ib2w9ZnVuY3Rp b24odCxlLHIsbixhLGksbyl7Zm9yKHZhciBzPXt9LGw9ZTtsPHI7bCsrKXt2 YXIgYz10LmdldChsKTtpZigwPT09Yy5yYWRpdXMpe3MudGV4dEJveD17eDE6 Yy54MSx5MTpjLnkxLHgyOmMueDIseTI6Yy55MixhbmNob3JQb2ludFg6Yy5h bmNob3JQb2ludFgsYW5jaG9yUG9pbnRZOmMuYW5jaG9yUG9pbnRZfSxzLnRl eHRGZWF0dXJlSW5kZXg9Yy5mZWF0dXJlSW5kZXg7YnJlYWt9cy50ZXh0Q2ly Y2xlc3x8KHMudGV4dENpcmNsZXM9W10scy50ZXh0RmVhdHVyZUluZGV4PWMu ZmVhdHVyZUluZGV4KSxzLnRleHRDaXJjbGVzLnB1c2goYy5hbmNob3JQb2lu dFgsYy5hbmNob3JQb2ludFksYy5yYWRpdXMsYy5zaWduZWREaXN0YW5jZUZy b21BbmNob3IsMSl9Zm9yKHZhciB1PW47dTxhO3UrKyl7dmFyIGg9dC5nZXQo dSk7aWYoMD09PWgucmFkaXVzKXtzLnZlcnRpY2FsVGV4dEJveD17eDE6aC54 MSx5MTpoLnkxLHgyOmgueDIseTI6aC55MixhbmNob3JQb2ludFg6aC5hbmNo b3JQb2ludFgsYW5jaG9yUG9pbnRZOmguYW5jaG9yUG9pbnRZfSxzLnZlcnRp Y2FsVGV4dEZlYXR1cmVJbmRleD1oLmZlYXR1cmVJbmRleDticmVha319Zm9y KHZhciBmPWk7ZjxvO2YrKyl7dmFyIHA9dC5nZXQoZik7aWYoMD09PXAucmFk aXVzKXtzLmljb25Cb3g9e3gxOnAueDEseTE6cC55MSx4MjpwLngyLHkyOnAu eTIsYW5jaG9yUG9pbnRYOnAuYW5jaG9yUG9pbnRYLGFuY2hvclBvaW50WTpw LmFuY2hvclBvaW50WX0scy5pY29uRmVhdHVyZUluZGV4PXAuZmVhdHVyZUlu ZGV4O2JyZWFrfX1yZXR1cm4gc30sT3MucHJvdG90eXBlLmRlc2VyaWFsaXpl Q29sbGlzaW9uQm94ZXM9ZnVuY3Rpb24odCl7dGhpcy5jb2xsaXNpb25BcnJh eXM9W107Zm9yKHZhciBlPTA7ZTx0aGlzLnN5bWJvbEluc3RhbmNlcy5sZW5n dGg7ZSsrKXt2YXIgcj10aGlzLnN5bWJvbEluc3RhbmNlcy5nZXQoZSk7dGhp cy5jb2xsaXNpb25BcnJheXMucHVzaCh0aGlzLl9kZXNlcmlhbGl6ZUNvbGxp c2lvbkJveGVzRm9yU3ltYm9sKHQsci50ZXh0Qm94U3RhcnRJbmRleCxyLnRl eHRCb3hFbmRJbmRleCxyLnZlcnRpY2FsVGV4dEJveFN0YXJ0SW5kZXgsci52 ZXJ0aWNhbFRleHRCb3hFbmRJbmRleCxyLmljb25Cb3hTdGFydEluZGV4LHIu aWNvbkJveEVuZEluZGV4KSl9fSxPcy5wcm90b3R5cGUuaGFzVGV4dERhdGE9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0LnNlZ21lbnRzLmdldCgpLmxl bmd0aD4wfSxPcy5wcm90b3R5cGUuaGFzSWNvbkRhdGE9ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5pY29uLnNlZ21lbnRzLmdldCgpLmxlbmd0aD4wfSxPcy5w cm90b3R5cGUuaGFzQ29sbGlzaW9uQm94RGF0YT1mdW5jdGlvbigpe3JldHVy biB0aGlzLmNvbGxpc2lvbkJveC5zZWdtZW50cy5nZXQoKS5sZW5ndGg+MH0s T3MucHJvdG90eXBlLmhhc0NvbGxpc2lvbkNpcmNsZURhdGE9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5jb2xsaXNpb25DaXJjbGUuc2VnbWVudHMuZ2V0KCku bGVuZ3RoPjB9LE9zLnByb3RvdHlwZS5hZGRJbmRpY2VzRm9yUGxhY2VkVGV4 dFN5bWJvbD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50ZXh0LnBsYWNl ZFN5bWJvbEFycmF5LmdldCh0KSxyPWUudmVydGV4U3RhcnRJbmRleCs0KmUu bnVtR2x5cGhzLG49ZS52ZXJ0ZXhTdGFydEluZGV4O248cjtuKz00KXRoaXMu dGV4dC5pbmRleEFycmF5LmVtcGxhY2VCYWNrKG4sbisxLG4rMiksdGhpcy50 ZXh0LmluZGV4QXJyYXkuZW1wbGFjZUJhY2sobisxLG4rMixuKzMpfSxPcy5w cm90b3R5cGUuZ2V0U29ydGVkU3ltYm9sSW5kZXhlcz1mdW5jdGlvbih0KXtp Zih0aGlzLnNvcnRlZEFuZ2xlPT09dCYmdm9pZCAwIT09dGhpcy5zeW1ib2xJ bnN0YW5jZUluZGV4ZXMpcmV0dXJuIHRoaXMuc3ltYm9sSW5zdGFuY2VJbmRl eGVzO2Zvcih2YXIgZT1NYXRoLnNpbih0KSxyPU1hdGguY29zKHQpLG49W10s YT1bXSxpPVtdLG89MDtvPHRoaXMuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDsr K28pe2kucHVzaChvKTt2YXIgcz10aGlzLnN5bWJvbEluc3RhbmNlcy5nZXQo byk7bi5wdXNoKDB8TWF0aC5yb3VuZChlKnMuYW5jaG9yWCtyKnMuYW5jaG9y WSkpLGEucHVzaChzLmZlYXR1cmVJbmRleCl9cmV0dXJuIGkuc29ydChmdW5j dGlvbih0LGUpe3JldHVybiBuW3RdLW5bZV18fGFbZV0tYVt0XX0pLGl9LE9z LnByb3RvdHlwZS5zb3J0RmVhdHVyZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhp cztpZih0aGlzLnNvcnRGZWF0dXJlc0J5WSYmdGhpcy5zb3J0ZWRBbmdsZSE9 PXQmJiEodGhpcy50ZXh0LnNlZ21lbnRzLmdldCgpLmxlbmd0aD4xfHx0aGlz Lmljb24uc2VnbWVudHMuZ2V0KCkubGVuZ3RoPjEpKXt0aGlzLnN5bWJvbElu c3RhbmNlSW5kZXhlcz10aGlzLmdldFNvcnRlZFN5bWJvbEluZGV4ZXModCks dGhpcy5zb3J0ZWRBbmdsZT10LHRoaXMudGV4dC5pbmRleEFycmF5LmNsZWFy KCksdGhpcy5pY29uLmluZGV4QXJyYXkuY2xlYXIoKSx0aGlzLmZlYXR1cmVT b3J0T3JkZXI9W107Zm9yKHZhciByPTAsbj10aGlzLnN5bWJvbEluc3RhbmNl SW5kZXhlcztyPG4ubGVuZ3RoO3IrPTEpe3ZhciBhPW5bcl0saT10aGlzLnN5 bWJvbEluc3RhbmNlcy5nZXQoYSk7dGhpcy5mZWF0dXJlU29ydE9yZGVyLnB1 c2goaS5mZWF0dXJlSW5kZXgpLFtpLnJpZ2h0SnVzdGlmaWVkVGV4dFN5bWJv bEluZGV4LGkuY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LGkubGVm dEp1c3RpZmllZFRleHRTeW1ib2xJbmRleF0uZm9yRWFjaChmdW5jdGlvbih0 LHIsbil7dD49MCYmbi5pbmRleE9mKHQpPT09ciYmZS5hZGRJbmRpY2VzRm9y UGxhY2VkVGV4dFN5bWJvbCh0KX0pLGkudmVydGljYWxQbGFjZWRUZXh0U3lt Ym9sSW5kZXg+PTAmJnRoaXMuYWRkSW5kaWNlc0ZvclBsYWNlZFRleHRTeW1i b2woaS52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleCk7dmFyIG89dGhp cy5pY29uLnBsYWNlZFN5bWJvbEFycmF5LmdldChhKTtpZihvLm51bUdseXBo cyl7dmFyIHM9by52ZXJ0ZXhTdGFydEluZGV4O3RoaXMuaWNvbi5pbmRleEFy cmF5LmVtcGxhY2VCYWNrKHMscysxLHMrMiksdGhpcy5pY29uLmluZGV4QXJy YXkuZW1wbGFjZUJhY2socysxLHMrMixzKzMpfX10aGlzLnRleHQuaW5kZXhC dWZmZXImJnRoaXMudGV4dC5pbmRleEJ1ZmZlci51cGRhdGVEYXRhKHRoaXMu dGV4dC5pbmRleEFycmF5KSx0aGlzLmljb24uaW5kZXhCdWZmZXImJnRoaXMu aWNvbi5pbmRleEJ1ZmZlci51cGRhdGVEYXRhKHRoaXMuaWNvbi5pbmRleEFy cmF5KX19LGRuKCJTeW1ib2xCdWNrZXQiLE9zLHtvbWl0OlsibGF5ZXJzIiwi Y29sbGlzaW9uQm94QXJyYXkiLCJmZWF0dXJlcyIsImNvbXBhcmVUZXh0Il19 KSxPcy5NQVhfR0xZUEhTPTY1NTM1LE9zLmFkZER5bmFtaWNBdHRyaWJ1dGVz PUxzO3ZhciB6cz1uZXcgR24oeyJzeW1ib2wtcGxhY2VtZW50IjpuZXcgam4o VHQubGF5b3V0X3N5bWJvbFsic3ltYm9sLXBsYWNlbWVudCJdKSwic3ltYm9s LXNwYWNpbmciOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJzeW1ib2wtc3Bh Y2luZyJdKSwic3ltYm9sLWF2b2lkLWVkZ2VzIjpuZXcgam4oVHQubGF5b3V0 X3N5bWJvbFsic3ltYm9sLWF2b2lkLWVkZ2VzIl0pLCJzeW1ib2wtc29ydC1r ZXkiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJzeW1ib2wtc29ydC1rZXki XSksInN5bWJvbC16LW9yZGVyIjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsi c3ltYm9sLXotb3JkZXIiXSksImljb24tYWxsb3ctb3ZlcmxhcCI6bmV3IGpu KFR0LmxheW91dF9zeW1ib2xbImljb24tYWxsb3ctb3ZlcmxhcCJdKSwiaWNv bi1pZ25vcmUtcGxhY2VtZW50IjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsi aWNvbi1pZ25vcmUtcGxhY2VtZW50Il0pLCJpY29uLW9wdGlvbmFsIjpuZXcg am4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi1vcHRpb25hbCJdKSwiaWNvbi1y b3RhdGlvbi1hbGlnbm1lbnQiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJp Y29uLXJvdGF0aW9uLWFsaWdubWVudCJdKSwiaWNvbi1zaXplIjpuZXcgVm4o VHQubGF5b3V0X3N5bWJvbFsiaWNvbi1zaXplIl0pLCJpY29uLXRleHQtZml0 IjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi10ZXh0LWZpdCJdKSwi aWNvbi10ZXh0LWZpdC1wYWRkaW5nIjpuZXcgam4oVHQubGF5b3V0X3N5bWJv bFsiaWNvbi10ZXh0LWZpdC1wYWRkaW5nIl0pLCJpY29uLWltYWdlIjpuZXcg Vm4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi1pbWFnZSJdKSwiaWNvbi1yb3Rh dGUiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJpY29uLXJvdGF0ZSJdKSwi aWNvbi1wYWRkaW5nIjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsiaWNvbi1w YWRkaW5nIl0pLCJpY29uLWtlZXAtdXByaWdodCI6bmV3IGpuKFR0LmxheW91 dF9zeW1ib2xbImljb24ta2VlcC11cHJpZ2h0Il0pLCJpY29uLW9mZnNldCI6 bmV3IFZuKFR0LmxheW91dF9zeW1ib2xbImljb24tb2Zmc2V0Il0pLCJpY29u LWFuY2hvciI6bmV3IFZuKFR0LmxheW91dF9zeW1ib2xbImljb24tYW5jaG9y Il0pLCJpY29uLXBpdGNoLWFsaWdubWVudCI6bmV3IGpuKFR0LmxheW91dF9z eW1ib2xbImljb24tcGl0Y2gtYWxpZ25tZW50Il0pLCJ0ZXh0LXBpdGNoLWFs aWdubWVudCI6bmV3IGpuKFR0LmxheW91dF9zeW1ib2xbInRleHQtcGl0Y2gt YWxpZ25tZW50Il0pLCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCI6bmV3IGpu KFR0LmxheW91dF9zeW1ib2xbInRleHQtcm90YXRpb24tYWxpZ25tZW50Il0p LCJ0ZXh0LWZpZWxkIjpuZXcgVm4oVHQubGF5b3V0X3N5bWJvbFsidGV4dC1m aWVsZCJdKSwidGV4dC1mb250IjpuZXcgVm4oVHQubGF5b3V0X3N5bWJvbFsi dGV4dC1mb250Il0pLCJ0ZXh0LXNpemUiOm5ldyBWbihUdC5sYXlvdXRfc3lt Ym9sWyJ0ZXh0LXNpemUiXSksInRleHQtbWF4LXdpZHRoIjpuZXcgVm4oVHQu bGF5b3V0X3N5bWJvbFsidGV4dC1tYXgtd2lkdGgiXSksInRleHQtbGluZS1o ZWlnaHQiOm5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWxpbmUtaGVp Z2h0Il0pLCJ0ZXh0LWxldHRlci1zcGFjaW5nIjpuZXcgVm4oVHQubGF5b3V0 X3N5bWJvbFsidGV4dC1sZXR0ZXItc3BhY2luZyJdKSwidGV4dC1qdXN0aWZ5 IjpuZXcgVm4oVHQubGF5b3V0X3N5bWJvbFsidGV4dC1qdXN0aWZ5Il0pLCJ0 ZXh0LXJhZGlhbC1vZmZzZXQiOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0 ZXh0LXJhZGlhbC1vZmZzZXQiXSksInRleHQtdmFyaWFibGUtYW5jaG9yIjpu ZXcgam4oVHQubGF5b3V0X3N5bWJvbFsidGV4dC12YXJpYWJsZS1hbmNob3Ii XSksInRleHQtYW5jaG9yIjpuZXcgVm4oVHQubGF5b3V0X3N5bWJvbFsidGV4 dC1hbmNob3IiXSksInRleHQtbWF4LWFuZ2xlIjpuZXcgam4oVHQubGF5b3V0 X3N5bWJvbFsidGV4dC1tYXgtYW5nbGUiXSksInRleHQtd3JpdGluZy1tb2Rl IjpuZXcgam4oVHQubGF5b3V0X3N5bWJvbFsidGV4dC13cml0aW5nLW1vZGUi XSksInRleHQtcm90YXRlIjpuZXcgVm4oVHQubGF5b3V0X3N5bWJvbFsidGV4 dC1yb3RhdGUiXSksInRleHQtcGFkZGluZyI6bmV3IGpuKFR0LmxheW91dF9z eW1ib2xbInRleHQtcGFkZGluZyJdKSwidGV4dC1rZWVwLXVwcmlnaHQiOm5l dyBqbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWtlZXAtdXByaWdodCJdKSwi dGV4dC10cmFuc2Zvcm0iOm5ldyBWbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0 LXRyYW5zZm9ybSJdKSwidGV4dC1vZmZzZXQiOm5ldyBWbihUdC5sYXlvdXRf c3ltYm9sWyJ0ZXh0LW9mZnNldCJdKSwidGV4dC1hbGxvdy1vdmVybGFwIjpu ZXcgam4oVHQubGF5b3V0X3N5bWJvbFsidGV4dC1hbGxvdy1vdmVybGFwIl0p LCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnQiOm5ldyBqbihUdC5sYXlvdXRfc3lt Ym9sWyJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnQiXSksInRleHQtb3B0aW9uYWwi Om5ldyBqbihUdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LW9wdGlvbmFsIl0pfSks SXM9e3BhaW50Om5ldyBHbih7Imljb24tb3BhY2l0eSI6bmV3IFZuKFR0LnBh aW50X3N5bWJvbFsiaWNvbi1vcGFjaXR5Il0pLCJpY29uLWNvbG9yIjpuZXcg Vm4oVHQucGFpbnRfc3ltYm9sWyJpY29uLWNvbG9yIl0pLCJpY29uLWhhbG8t Y29sb3IiOm5ldyBWbihUdC5wYWludF9zeW1ib2xbImljb24taGFsby1jb2xv ciJdKSwiaWNvbi1oYWxvLXdpZHRoIjpuZXcgVm4oVHQucGFpbnRfc3ltYm9s WyJpY29uLWhhbG8td2lkdGgiXSksImljb24taGFsby1ibHVyIjpuZXcgVm4o VHQucGFpbnRfc3ltYm9sWyJpY29uLWhhbG8tYmx1ciJdKSwiaWNvbi10cmFu c2xhdGUiOm5ldyBqbihUdC5wYWludF9zeW1ib2xbImljb24tdHJhbnNsYXRl Il0pLCJpY29uLXRyYW5zbGF0ZS1hbmNob3IiOm5ldyBqbihUdC5wYWludF9z eW1ib2xbImljb24tdHJhbnNsYXRlLWFuY2hvciJdKSwidGV4dC1vcGFjaXR5 IjpuZXcgVm4oVHQucGFpbnRfc3ltYm9sWyJ0ZXh0LW9wYWNpdHkiXSksInRl eHQtY29sb3IiOm5ldyBWbihUdC5wYWludF9zeW1ib2xbInRleHQtY29sb3Ii XSx7cnVudGltZVR5cGU6RnQsZ2V0T3ZlcnJpZGU6ZnVuY3Rpb24odCl7cmV0 dXJuIHQudGV4dENvbG9yfSxoYXNPdmVycmlkZTpmdW5jdGlvbih0KXtyZXR1 cm4hIXQudGV4dENvbG9yfX0pLCJ0ZXh0LWhhbG8tY29sb3IiOm5ldyBWbihU dC5wYWludF9zeW1ib2xbInRleHQtaGFsby1jb2xvciJdKSwidGV4dC1oYWxv LXdpZHRoIjpuZXcgVm4oVHQucGFpbnRfc3ltYm9sWyJ0ZXh0LWhhbG8td2lk dGgiXSksInRleHQtaGFsby1ibHVyIjpuZXcgVm4oVHQucGFpbnRfc3ltYm9s WyJ0ZXh0LWhhbG8tYmx1ciJdKSwidGV4dC10cmFuc2xhdGUiOm5ldyBqbihU dC5wYWludF9zeW1ib2xbInRleHQtdHJhbnNsYXRlIl0pLCJ0ZXh0LXRyYW5z bGF0ZS1hbmNob3IiOm5ldyBqbihUdC5wYWludF9zeW1ib2xbInRleHQtdHJh bnNsYXRlLWFuY2hvciJdKX0pLGxheW91dDp6c30sRHM9ZnVuY3Rpb24odCl7 dGhpcy50eXBlPXQucHJvcGVydHkub3ZlcnJpZGVzP3QucHJvcGVydHkub3Zl cnJpZGVzLnJ1bnRpbWVUeXBlOnp0LHRoaXMuZGVmYXVsdFZhbHVlPXR9O0Rz LnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXtpZih0LmZvcm1hdHRl ZFNlY3Rpb24pe3ZhciBlPXRoaXMuZGVmYXVsdFZhbHVlLnByb3BlcnR5Lm92 ZXJyaWRlcztpZihlJiZlLmhhc092ZXJyaWRlKHQuZm9ybWF0dGVkU2VjdGlv bikpcmV0dXJuIGUuZ2V0T3ZlcnJpZGUodC5mb3JtYXR0ZWRTZWN0aW9uKX1y ZXR1cm4gdC5mZWF0dXJlJiZ0LmZlYXR1cmVTdGF0ZT90aGlzLmRlZmF1bHRW YWx1ZS5ldmFsdWF0ZSh0LmZlYXR1cmUsdC5mZWF0dXJlU3RhdGUpOnRoaXMu ZGVmYXVsdFZhbHVlLnByb3BlcnR5LnNwZWNpZmljYXRpb24uZGVmYXVsdH0s RHMucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0aGlzLmRlZmF1 bHRWYWx1ZS5pc0NvbnN0YW50KCl8fHQodGhpcy5kZWZhdWx0VmFsdWUudmFs dWUuX3N0eWxlRXhwcmVzc2lvbi5leHByZXNzaW9uKX0sRHMucHJvdG90eXBl LnBvc3NpYmxlT3V0cHV0cz1mdW5jdGlvbigpe3JldHVyblt2b2lkIDBdfSxE cy5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9 LGRuKCJGb3JtYXRTZWN0aW9uT3ZlcnJpZGUiLERzLHtvbWl0OlsiZGVmYXVs dFZhbHVlIl19KTt2YXIgUnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0 LmNhbGwodGhpcyxlLElzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUu cHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJv dG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUucmVjYWxjdWxhdGU9 ZnVuY3Rpb24oZSl7aWYodC5wcm90b3R5cGUucmVjYWxjdWxhdGUuY2FsbCh0 aGlzLGUpLCJhdXRvIj09PXRoaXMubGF5b3V0LmdldCgiaWNvbi1yb3RhdGlv bi1hbGlnbm1lbnQiKSYmKCJwb2ludCIhPT10aGlzLmxheW91dC5nZXQoInN5 bWJvbC1wbGFjZW1lbnQiKT90aGlzLmxheW91dC5fdmFsdWVzWyJpY29uLXJv dGF0aW9uLWFsaWdubWVudCJdPSJtYXAiOnRoaXMubGF5b3V0Ll92YWx1ZXNb Imljb24tcm90YXRpb24tYWxpZ25tZW50Il09InZpZXdwb3J0IiksImF1dG8i PT09dGhpcy5sYXlvdXQuZ2V0KCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCIp JiYoInBvaW50IiE9PXRoaXMubGF5b3V0LmdldCgic3ltYm9sLXBsYWNlbWVu dCIpP3RoaXMubGF5b3V0Ll92YWx1ZXNbInRleHQtcm90YXRpb24tYWxpZ25t ZW50Il09Im1hcCI6dGhpcy5sYXlvdXQuX3ZhbHVlc1sidGV4dC1yb3RhdGlv bi1hbGlnbm1lbnQiXT0idmlld3BvcnQiKSwiYXV0byI9PT10aGlzLmxheW91 dC5nZXQoInRleHQtcGl0Y2gtYWxpZ25tZW50IikmJih0aGlzLmxheW91dC5f dmFsdWVzWyJ0ZXh0LXBpdGNoLWFsaWdubWVudCJdPXRoaXMubGF5b3V0Lmdl dCgidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiKSksImF1dG8iPT09dGhpcy5s YXlvdXQuZ2V0KCJpY29uLXBpdGNoLWFsaWdubWVudCIpJiYodGhpcy5sYXlv dXQuX3ZhbHVlc1siaWNvbi1waXRjaC1hbGlnbm1lbnQiXT10aGlzLmxheW91 dC5nZXQoImljb24tcm90YXRpb24tYWxpZ25tZW50IikpLCJwb2ludCI9PT10 aGlzLmxheW91dC5nZXQoInN5bWJvbC1wbGFjZW1lbnQiKSl7dmFyIHI9dGhp cy5sYXlvdXQuZ2V0KCJ0ZXh0LXdyaXRpbmctbW9kZSIpO2lmKHIpe2Zvcih2 YXIgbj1bXSxhPTAsaT1yO2E8aS5sZW5ndGg7YSs9MSl7dmFyIG89aVthXTtu LmluZGV4T2Yobyk8MCYmbi5wdXNoKG8pfXRoaXMubGF5b3V0Ll92YWx1ZXNb InRleHQtd3JpdGluZy1tb2RlIl09bn1lbHNlIHRoaXMubGF5b3V0Ll92YWx1 ZXNbInRleHQtd3JpdGluZy1tb2RlIl09WyJob3Jpem9udGFsIl19dGhpcy5f c2V0UGFpbnRPdmVycmlkZXMoKX0sZS5wcm90b3R5cGUuZ2V0VmFsdWVBbmRS ZXNvbHZlVG9rZW5zPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5sYXlvdXQu Z2V0KHQpLmV2YWx1YXRlKGUse30pLG49dGhpcy5fdW5ldmFsdWF0ZWRMYXlv dXQuX3ZhbHVlc1t0XTtyZXR1cm4gbi5pc0RhdGFEcml2ZW4oKXx8d3Iobi52 YWx1ZSk/cjpmdW5jdGlvbih0LGUpe3JldHVybiByLnJlcGxhY2UoL3soW157 fV0rKX0vZyxmdW5jdGlvbihlLHIpe3JldHVybiByIGluIHQ/U3RyaW5nKHRb cl0pOiIifSl9KGUucHJvcGVydGllcyl9LGUucHJvdG90eXBlLmNyZWF0ZUJ1 Y2tldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IE9zKHQpfSxlLnByb3RvdHlw ZS5xdWVyeVJhZGl1cz1mdW5jdGlvbigpe3JldHVybiAwfSxlLnByb3RvdHlw ZS5xdWVyeUludGVyc2VjdHNGZWF0dXJlPWZ1bmN0aW9uKCl7cmV0dXJuITF9 LGUucHJvdG90eXBlLl9zZXRQYWludE92ZXJyaWRlcz1mdW5jdGlvbigpe2Zv cih2YXIgdD0wLHI9SXMucGFpbnQub3ZlcnJpZGFibGVQcm9wZXJ0aWVzO3Q8 ci5sZW5ndGg7dCs9MSl7dmFyIG49clt0XTtpZihlLmhhc1BhaW50T3ZlcnJp ZGUodGhpcy5sYXlvdXQsbikpe3ZhciBhLGk9dGhpcy5wYWludC5nZXQobiks bz1uZXcgRHMoaSkscz1uZXcgX3IobyxpLnByb3BlcnR5LnNwZWNpZmljYXRp b24pO2E9ImNvbnN0YW50Ij09PWkudmFsdWUua2luZHx8InNvdXJjZSI9PT1p LnZhbHVlLmtpbmQ/bmV3IFRyKCJzb3VyY2UiLHMpOm5ldyBNcigiY29tcG9z aXRlIixzLGkudmFsdWUuem9vbVN0b3BzLGkudmFsdWUuX2ludGVycG9sYXRp b25UeXBlKSx0aGlzLnBhaW50Ll92YWx1ZXNbbl09bmV3IEJuKGkucHJvcGVy dHksYSxpLnBhcmFtZXRlcnMpfX19LGUucHJvdG90eXBlLl9oYW5kbGVPdmVy cmlkYWJsZVBhaW50UHJvcGVydHlVcGRhdGU9ZnVuY3Rpb24odCxyLG4pe3Jl dHVybiEoIXRoaXMubGF5b3V0fHxyLmlzRGF0YURyaXZlbigpfHxuLmlzRGF0 YURyaXZlbigpKSYmZS5oYXNQYWludE92ZXJyaWRlKHRoaXMubGF5b3V0LHQp fSxlLmhhc1BhaW50T3ZlcnJpZGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10Lmdl dCgidGV4dC1maWVsZCIpLG49SXMucGFpbnQucHJvcGVydGllc1tlXSxhPSEx LGk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10O2U8ci5sZW5ndGg7ZSs9 MSl7dmFyIGk9cltlXTtpZihuLm92ZXJyaWRlcyYmbi5vdmVycmlkZXMuaGFz T3ZlcnJpZGUoaSkpcmV0dXJuIHZvaWQoYT0hMCl9fTtpZigiY29uc3RhbnQi PT09ci52YWx1ZS5raW5kJiZyLnZhbHVlLnZhbHVlIGluc3RhbmNlb2YgSnQp aShyLnZhbHVlLnZhbHVlLnNlY3Rpb25zKTtlbHNlIGlmKCJzb3VyY2UiPT09 ci52YWx1ZS5raW5kKXt2YXIgbz1mdW5jdGlvbih0KXtpZighYSlpZih0IGlu c3RhbmNlb2YgdGUmJlF0KHQudmFsdWUpPT09VnQpe3ZhciBlPXQudmFsdWU7 aShlLnNlY3Rpb25zKX1lbHNlIHQgaW5zdGFuY2VvZiBhZT9pKHQuc2VjdGlv bnMpOnQuZWFjaENoaWxkKG8pfSxzPXIudmFsdWU7cy5fc3R5bGVFeHByZXNz aW9uJiZvKHMuX3N0eWxlRXhwcmVzc2lvbi5leHByZXNzaW9uKX1yZXR1cm4g YX0sZS5oYXNQYWludE92ZXJyaWRlcz1mdW5jdGlvbih0KXtmb3IodmFyIHI9 MCxuPUlzLnBhaW50Lm92ZXJyaWRhYmxlUHJvcGVydGllcztyPG4ubGVuZ3Ro O3IrPTEpe3ZhciBhPW5bcl07aWYoZS5oYXNQYWludE92ZXJyaWRlKHQsYSkp cmV0dXJuITB9cmV0dXJuITF9LGV9KFluKSxGcz17cGFpbnQ6bmV3IEduKHsi YmFja2dyb3VuZC1jb2xvciI6bmV3IGpuKFR0LnBhaW50X2JhY2tncm91bmRb ImJhY2tncm91bmQtY29sb3IiXSksImJhY2tncm91bmQtcGF0dGVybiI6bmV3 IHFuKFR0LnBhaW50X2JhY2tncm91bmRbImJhY2tncm91bmQtcGF0dGVybiJd KSwiYmFja2dyb3VuZC1vcGFjaXR5IjpuZXcgam4oVHQucGFpbnRfYmFja2dy b3VuZFsiYmFja2dyb3VuZC1vcGFjaXR5Il0pfSl9LEJzPWZ1bmN0aW9uKHQp e2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSxGcyl9cmV0dXJuIHQmJihl Ll9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu cHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGV9KFluKSxO cz17cGFpbnQ6bmV3IEduKHsicmFzdGVyLW9wYWNpdHkiOm5ldyBqbihUdC5w YWludF9yYXN0ZXJbInJhc3Rlci1vcGFjaXR5Il0pLCJyYXN0ZXItaHVlLXJv dGF0ZSI6bmV3IGpuKFR0LnBhaW50X3Jhc3RlclsicmFzdGVyLWh1ZS1yb3Rh dGUiXSksInJhc3Rlci1icmlnaHRuZXNzLW1pbiI6bmV3IGpuKFR0LnBhaW50 X3Jhc3RlclsicmFzdGVyLWJyaWdodG5lc3MtbWluIl0pLCJyYXN0ZXItYnJp Z2h0bmVzcy1tYXgiOm5ldyBqbihUdC5wYWludF9yYXN0ZXJbInJhc3Rlci1i cmlnaHRuZXNzLW1heCJdKSwicmFzdGVyLXNhdHVyYXRpb24iOm5ldyBqbihU dC5wYWludF9yYXN0ZXJbInJhc3Rlci1zYXR1cmF0aW9uIl0pLCJyYXN0ZXIt Y29udHJhc3QiOm5ldyBqbihUdC5wYWludF9yYXN0ZXJbInJhc3Rlci1jb250 cmFzdCJdKSwicmFzdGVyLXJlc2FtcGxpbmciOm5ldyBqbihUdC5wYWludF9y YXN0ZXJbInJhc3Rlci1yZXNhbXBsaW5nIl0pLCJyYXN0ZXItZmFkZS1kdXJh dGlvbiI6bmV3IGpuKFR0LnBhaW50X3Jhc3RlclsicmFzdGVyLWZhZGUtZHVy YXRpb24iXSl9KX0sanM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNh bGwodGhpcyxlLE5zKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJv dG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90 eXBlLmNvbnN0cnVjdG9yPWUsZX0oWW4pLFZzPWZ1bmN0aW9uKHQpe2Z1bmN0 aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSx7fSksdGhpcy5pbXBsZW1lbnRhdGlv bj1lfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2Jq ZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3Ry dWN0b3I9ZSxlLnByb3RvdHlwZS5pczNEPWZ1bmN0aW9uKCl7cmV0dXJuIjNk Ij09PXRoaXMuaW1wbGVtZW50YXRpb24ucmVuZGVyaW5nTW9kZX0sZS5wcm90 b3R5cGUuaGFzT2Zmc2NyZWVuUGFzcz1mdW5jdGlvbigpe3JldHVybiB2b2lk IDAhPT10aGlzLmltcGxlbWVudGF0aW9uLnByZXJlbmRlcn0sZS5wcm90b3R5 cGUucmVjYWxjdWxhdGU9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLnVwZGF0 ZVRyYW5zaXRpb25zPWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5oYXNUcmFu c2l0aW9uPWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVu Y3Rpb24oKXt9LGUucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKHQpe3RoaXMu aW1wbGVtZW50YXRpb24ub25BZGQmJnRoaXMuaW1wbGVtZW50YXRpb24ub25B ZGQodCx0LnBhaW50ZXIuY29udGV4dC5nbCl9LGUucHJvdG90eXBlLm9uUmVt b3ZlPWZ1bmN0aW9uKHQpe3RoaXMuaW1wbGVtZW50YXRpb24ub25SZW1vdmUm JnRoaXMuaW1wbGVtZW50YXRpb24ub25SZW1vdmUodCx0LnBhaW50ZXIuY29u dGV4dC5nbCl9LGV9KFluKSxVcz17Y2lyY2xlOk1pLGhlYXRtYXA6RGksaGls bHNoYWRlOkZpLGZpbGw6VG8sImZpbGwtZXh0cnVzaW9uIjpVbyxsaW5lOiRv LHN5bWJvbDpScyxiYWNrZ3JvdW5kOkJzLHJhc3Rlcjpqc307ZnVuY3Rpb24g cXModCl7Zm9yKHZhciBlPTAscj0wLG49MCxhPXQ7bjxhLmxlbmd0aDtuKz0x KXt2YXIgaT1hW25dO2UrPWkudyppLmgscj1NYXRoLm1heChyLGkudyl9dC5z b3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuaC10Lmh9KTtmb3IodmFyIG89 W3t4OjAseTowLHc6TWF0aC5tYXgoTWF0aC5jZWlsKE1hdGguc3FydChlLy45 NSkpLHIpLGg6MS8wfV0scz0wLGw9MCxjPTAsdT10O2M8dS5sZW5ndGg7Yys9 MSlmb3IodmFyIGg9dVtjXSxmPW8ubGVuZ3RoLTE7Zj49MDtmLS0pe3ZhciBw PW9bZl07aWYoIShoLnc+cC53fHxoLmg+cC5oKSl7aWYoaC54PXAueCxoLnk9 cC55LGw9TWF0aC5tYXgobCxoLnkraC5oKSxzPU1hdGgubWF4KHMsaC54K2gu dyksaC53PT09cC53JiZoLmg9PT1wLmgpe3ZhciBkPW8ucG9wKCk7ZjxvLmxl bmd0aCYmKG9bZl09ZCl9ZWxzZSBoLmg9PT1wLmg/KHAueCs9aC53LHAudy09 aC53KTpoLnc9PT1wLnc/KHAueSs9aC5oLHAuaC09aC5oKTooby5wdXNoKHt4 OnAueCtoLncseTpwLnksdzpwLnctaC53LGg6aC5ofSkscC55Kz1oLmgscC5o LT1oLmgpO2JyZWFrfX1yZXR1cm57dzpzLGg6bCxmaWxsOmUvKHMqbCl8fDB9 fXZhciBIcz1mdW5jdGlvbih0LGUpe3ZhciByPWUucGl4ZWxSYXRpbyxuPWUu dmVyc2lvbjt0aGlzLnBhZGRlZFJlY3Q9dCx0aGlzLnBpeGVsUmF0aW89cix0 aGlzLnZlcnNpb249bn0sR3M9e3RsOntjb25maWd1cmFibGU6ITB9LGJyOntj b25maWd1cmFibGU6ITB9LHRsYnI6e2NvbmZpZ3VyYWJsZTohMH0sZGlzcGxh eVNpemU6e2NvbmZpZ3VyYWJsZTohMH19O0dzLnRsLmdldD1mdW5jdGlvbigp e3JldHVyblt0aGlzLnBhZGRlZFJlY3QueCsxLHRoaXMucGFkZGVkUmVjdC55 KzFdfSxHcy5ici5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5wYWRkZWRS ZWN0LngrdGhpcy5wYWRkZWRSZWN0LnctMSx0aGlzLnBhZGRlZFJlY3QueSt0 aGlzLnBhZGRlZFJlY3QuaC0xXX0sR3MudGxici5nZXQ9ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy50bC5jb25jYXQodGhpcy5icil9LEdzLmRpc3BsYXlTaXpl LmdldD1mdW5jdGlvbigpe3JldHVyblsodGhpcy5wYWRkZWRSZWN0LnctMikv dGhpcy5waXhlbFJhdGlvLCh0aGlzLnBhZGRlZFJlY3QuaC0yKS90aGlzLnBp eGVsUmF0aW9dfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhIcy5wcm90b3R5 cGUsR3MpO3ZhciBZcz1mdW5jdGlvbih0LGUpe3ZhciByPXt9LG49e307dGhp cy5oYXZlUmVuZGVyQ2FsbGJhY2tzPVtdO3ZhciBhPVtdO3RoaXMuYWRkSW1h Z2VzKHQscixhKSx0aGlzLmFkZEltYWdlcyhlLG4sYSk7dmFyIGk9cXMoYSks bz1pLncscz1pLmgsbD1uZXcgT2koe3dpZHRoOm98fDEsaGVpZ2h0OnN8fDF9 KTtmb3IodmFyIGMgaW4gdCl7dmFyIHU9dFtjXSxoPXJbY10ucGFkZGVkUmVj dDtPaS5jb3B5KHUuZGF0YSxsLHt4OjAseTowfSx7eDpoLngrMSx5OmgueSsx fSx1LmRhdGEpfWZvcih2YXIgZiBpbiBlKXt2YXIgcD1lW2ZdLGQ9bltmXS5w YWRkZWRSZWN0LGc9ZC54KzEsdj1kLnkrMSxtPXAuZGF0YS53aWR0aCx5PXAu ZGF0YS5oZWlnaHQ7T2kuY29weShwLmRhdGEsbCx7eDowLHk6MH0se3g6Zyx5 OnZ9LHAuZGF0YSksT2kuY29weShwLmRhdGEsbCx7eDowLHk6eS0xfSx7eDpn LHk6di0xfSx7d2lkdGg6bSxoZWlnaHQ6MX0pLE9pLmNvcHkocC5kYXRhLGws e3g6MCx5OjB9LHt4OmcseTp2K3l9LHt3aWR0aDptLGhlaWdodDoxfSksT2ku Y29weShwLmRhdGEsbCx7eDptLTEseTowfSx7eDpnLTEseTp2fSx7d2lkdGg6 MSxoZWlnaHQ6eX0pLE9pLmNvcHkocC5kYXRhLGwse3g6MCx5OjB9LHt4Omcr bSx5OnZ9LHt3aWR0aDoxLGhlaWdodDp5fSl9dGhpcy5pbWFnZT1sLHRoaXMu aWNvblBvc2l0aW9ucz1yLHRoaXMucGF0dGVyblBvc2l0aW9ucz1ufTtZcy5w cm90b3R5cGUuYWRkSW1hZ2VzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4g aW4gdCl7dmFyIGE9dFtuXSxpPXt4OjAseTowLHc6YS5kYXRhLndpZHRoKzIs aDphLmRhdGEuaGVpZ2h0KzJ9O3IucHVzaChpKSxlW25dPW5ldyBIcyhpLGEp LGEuaGFzUmVuZGVyQ2FsbGJhY2smJnRoaXMuaGF2ZVJlbmRlckNhbGxiYWNr cy5wdXNoKG4pfX0sWXMucHJvdG90eXBlLnBhdGNoVXBkYXRlZEltYWdlcz1m dW5jdGlvbih0LGUpe2Zvcih2YXIgciBpbiB0LmRpc3BhdGNoUmVuZGVyQ2Fs bGJhY2tzKHRoaXMuaGF2ZVJlbmRlckNhbGxiYWNrcyksdC51cGRhdGVkSW1h Z2VzKXRoaXMucGF0Y2hVcGRhdGVkSW1hZ2UodGhpcy5pY29uUG9zaXRpb25z W3JdLHQuZ2V0SW1hZ2UociksZSksdGhpcy5wYXRjaFVwZGF0ZWRJbWFnZSh0 aGlzLnBhdHRlcm5Qb3NpdGlvbnNbcl0sdC5nZXRJbWFnZShyKSxlKX0sWXMu cHJvdG90eXBlLnBhdGNoVXBkYXRlZEltYWdlPWZ1bmN0aW9uKHQsZSxyKXtp Zih0JiZlJiZ0LnZlcnNpb24hPT1lLnZlcnNpb24pe3QudmVyc2lvbj1lLnZl cnNpb247dmFyIG49dC50bCxhPW5bMF0saT1uWzFdO3IudXBkYXRlKGUuZGF0 YSx2b2lkIDAse3g6YSx5Oml9KX19LGRuKCJJbWFnZVBvc2l0aW9uIixIcyks ZG4oIkltYWdlQXRsYXMiLFlzKTt2YXIgV3M9c2VsZi5IVE1MSW1hZ2VFbGVt ZW50LFhzPXNlbGYuSFRNTENhbnZhc0VsZW1lbnQsWnM9c2VsZi5IVE1MVmlk ZW9FbGVtZW50LEpzPXNlbGYuSW1hZ2VEYXRhLEtzPWZ1bmN0aW9uKHQsZSxy LG4pe3RoaXMuY29udGV4dD10LHRoaXMuZm9ybWF0PXIsdGhpcy50ZXh0dXJl PXQuZ2wuY3JlYXRlVGV4dHVyZSgpLHRoaXMudXBkYXRlKGUsbil9O0tzLnBy b3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQud2lkdGgs YT10LmhlaWdodCxpPSEodGhpcy5zaXplJiZ0aGlzLnNpemVbMF09PT1uJiZ0 aGlzLnNpemVbMV09PT1hfHxyKSxvPXRoaXMuY29udGV4dCxzPW8uZ2w7aWYo dGhpcy51c2VNaXBtYXA9Qm9vbGVhbihlJiZlLnVzZU1pcG1hcCkscy5iaW5k VGV4dHVyZShzLlRFWFRVUkVfMkQsdGhpcy50ZXh0dXJlKSxvLnBpeGVsU3Rv cmVVbnBhY2tGbGlwWS5zZXQoITEpLG8ucGl4ZWxTdG9yZVVucGFjay5zZXQo MSksby5waXhlbFN0b3JlVW5wYWNrUHJlbXVsdGlwbHlBbHBoYS5zZXQodGhp cy5mb3JtYXQ9PT1zLlJHQkEmJighZXx8ITEhPT1lLnByZW11bHRpcGx5KSks aSl0aGlzLnNpemU9W24sYV0sdCBpbnN0YW5jZW9mIFdzfHx0IGluc3RhbmNl b2YgWHN8fHQgaW5zdGFuY2VvZiBac3x8dCBpbnN0YW5jZW9mIEpzP3MudGV4 SW1hZ2UyRChzLlRFWFRVUkVfMkQsMCx0aGlzLmZvcm1hdCx0aGlzLmZvcm1h dCxzLlVOU0lHTkVEX0JZVEUsdCk6cy50ZXhJbWFnZTJEKHMuVEVYVFVSRV8y RCwwLHRoaXMuZm9ybWF0LG4sYSwwLHRoaXMuZm9ybWF0LHMuVU5TSUdORURf QllURSx0LmRhdGEpO2Vsc2V7dmFyIGw9cnx8e3g6MCx5OjB9LGM9bC54LHU9 bC55O3QgaW5zdGFuY2VvZiBXc3x8dCBpbnN0YW5jZW9mIFhzfHx0IGluc3Rh bmNlb2YgWnN8fHQgaW5zdGFuY2VvZiBKcz9zLnRleFN1YkltYWdlMkQocy5U RVhUVVJFXzJELDAsYyx1LHMuUkdCQSxzLlVOU0lHTkVEX0JZVEUsdCk6cy50 ZXhTdWJJbWFnZTJEKHMuVEVYVFVSRV8yRCwwLGMsdSxuLGEscy5SR0JBLHMu VU5TSUdORURfQllURSx0LmRhdGEpfXRoaXMudXNlTWlwbWFwJiZ0aGlzLmlz U2l6ZVBvd2VyT2ZUd28oKSYmcy5nZW5lcmF0ZU1pcG1hcChzLlRFWFRVUkVf MkQpfSxLcy5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUscil7dmFyIG49 dGhpcy5jb250ZXh0LmdsO24uYmluZFRleHR1cmUobi5URVhUVVJFXzJELHRo aXMudGV4dHVyZSksciE9PW4uTElORUFSX01JUE1BUF9ORUFSRVNUfHx0aGlz LmlzU2l6ZVBvd2VyT2ZUd28oKXx8KHI9bi5MSU5FQVIpLHQhPT10aGlzLmZp bHRlciYmKG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQsbi5URVhUVVJF X01BR19GSUxURVIsdCksbi50ZXhQYXJhbWV0ZXJpKG4uVEVYVFVSRV8yRCxu LlRFWFRVUkVfTUlOX0ZJTFRFUixyfHx0KSx0aGlzLmZpbHRlcj10KSxlIT09 dGhpcy53cmFwJiYobi50ZXhQYXJhbWV0ZXJpKG4uVEVYVFVSRV8yRCxuLlRF WFRVUkVfV1JBUF9TLGUpLG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQs bi5URVhUVVJFX1dSQVBfVCxlKSx0aGlzLndyYXA9ZSl9LEtzLnByb3RvdHlw ZS5pc1NpemVQb3dlck9mVHdvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6 ZVswXT09PXRoaXMuc2l6ZVsxXSYmTWF0aC5sb2codGhpcy5zaXplWzBdKS9N YXRoLkxOMiUxPT0wfSxLcy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigp e3RoaXMuY29udGV4dC5nbC5kZWxldGVUZXh0dXJlKHRoaXMudGV4dHVyZSks dGhpcy50ZXh0dXJlPW51bGx9O3ZhciBRcz1mdW5jdGlvbih0LGUscixuLGEp e3ZhciBpLG8scz04KmEtbi0xLGw9KDE8PHMpLTEsYz1sPj4xLHU9LTcsaD1y P2EtMTowLGY9cj8tMToxLHA9dFtlK2hdO2ZvcihoKz1mLGk9cCYoMTw8LXUp LTEscD4+PS11LHUrPXM7dT4wO2k9MjU2KmkrdFtlK2hdLGgrPWYsdS09OCk7 Zm9yKG89aSYoMTw8LXUpLTEsaT4+PS11LHUrPW47dT4wO289MjU2Km8rdFtl K2hdLGgrPWYsdS09OCk7aWYoMD09PWkpaT0xLWM7ZWxzZXtpZihpPT09bCly ZXR1cm4gbz9OYU46MS8wKihwPy0xOjEpO28rPU1hdGgucG93KDIsbiksaS09 Y31yZXR1cm4ocD8tMToxKSpvKk1hdGgucG93KDIsaS1uKX0sJHM9ZnVuY3Rp b24odCxlLHIsbixhLGkpe3ZhciBvLHMsbCxjPTgqaS1hLTEsdT0oMTw8Yykt MSxoPXU+PjEsZj0yMz09PWE/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIs LTc3KTowLHA9bj8wOmktMSxkPW4/MTotMSxnPWU8MHx8MD09PWUmJjEvZTww PzE6MDtmb3IoZT1NYXRoLmFicyhlKSxpc05hTihlKXx8ZT09PTEvMD8ocz1p c05hTihlKT8xOjAsbz11KToobz1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01h dGguTE4yKSxlKihsPU1hdGgucG93KDIsLW8pKTwxJiYoby0tLGwqPTIpLChl Kz1vK2g+PTE/Zi9sOmYqTWF0aC5wb3coMiwxLWgpKSpsPj0yJiYobysrLGwv PTIpLG8raD49dT8ocz0wLG89dSk6bytoPj0xPyhzPShlKmwtMSkqTWF0aC5w b3coMixhKSxvKz1oKToocz1lKk1hdGgucG93KDIsaC0xKSpNYXRoLnBvdygy LGEpLG89MCkpO2E+PTg7dFtyK3BdPTI1NSZzLHArPWQscy89MjU2LGEtPTgp O2ZvcihvPW88PGF8cyxjKz1hO2M+MDt0W3IrcF09MjU1Jm8scCs9ZCxvLz0y NTYsYy09OCk7dFtyK3AtZF18PTEyOCpnfSx0bD1lbDtmdW5jdGlvbiBlbCh0 KXt0aGlzLmJ1Zj1BcnJheUJ1ZmZlci5pc1ZpZXcmJkFycmF5QnVmZmVyLmlz Vmlldyh0KT90Om5ldyBVaW50OEFycmF5KHR8fDApLHRoaXMucG9zPTAsdGhp cy50eXBlPTAsdGhpcy5sZW5ndGg9dGhpcy5idWYubGVuZ3RofWZ1bmN0aW9u IHJsKHQpe3JldHVybiB0LnR5cGU9PT1lbC5CeXRlcz90LnJlYWRWYXJpbnQo KSt0LnBvczp0LnBvcysxfWZ1bmN0aW9uIG5sKHQsZSxyKXtyZXR1cm4gcj80 Mjk0OTY3Mjk2KmUrKHQ+Pj4wKTo0Mjk0OTY3Mjk2KihlPj4+MCkrKHQ+Pj4w KX1mdW5jdGlvbiBhbCh0LGUscil7dmFyIG49ZTw9MTYzODM/MTplPD0yMDk3 MTUxPzI6ZTw9MjY4NDM1NDU1PzM6TWF0aC5mbG9vcihNYXRoLmxvZyhlKS8o NypNYXRoLkxOMikpO3IucmVhbGxvYyhuKTtmb3IodmFyIGE9ci5wb3MtMTth Pj10O2EtLSlyLmJ1ZlthK25dPXIuYnVmW2FdfWZ1bmN0aW9uIGlsKHQsZSl7 Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZVZhcmludCh0W3Jd KX1mdW5jdGlvbiBvbCh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisr KWUud3JpdGVTVmFyaW50KHRbcl0pfWZ1bmN0aW9uIHNsKHQsZSl7Zm9yKHZh ciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZUZsb2F0KHRbcl0pfWZ1bmN0 aW9uIGxsKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0 ZURvdWJsZSh0W3JdKX1mdW5jdGlvbiBjbCh0LGUpe2Zvcih2YXIgcj0wO3I8 dC5sZW5ndGg7cisrKWUud3JpdGVCb29sZWFuKHRbcl0pfWZ1bmN0aW9uIHVs KHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZUZpeGVk MzIodFtyXSl9ZnVuY3Rpb24gaGwodCxlKXtmb3IodmFyIHI9MDtyPHQubGVu Z3RoO3IrKyllLndyaXRlU0ZpeGVkMzIodFtyXSl9ZnVuY3Rpb24gZmwodCxl KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlRml4ZWQ2NCh0 W3JdKX1mdW5jdGlvbiBwbCh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7 cisrKWUud3JpdGVTRml4ZWQ2NCh0W3JdKX1mdW5jdGlvbiBkbCh0LGUpe3Jl dHVybih0W2VdfHRbZSsxXTw8OHx0W2UrMl08PDE2KSsxNjc3NzIxNip0W2Ur M119ZnVuY3Rpb24gZ2wodCxlLHIpe3Rbcl09ZSx0W3IrMV09ZT4+PjgsdFty KzJdPWU+Pj4xNix0W3IrM109ZT4+PjI0fWZ1bmN0aW9uIHZsKHQsZSl7cmV0 dXJuKHRbZV18dFtlKzFdPDw4fHRbZSsyXTw8MTYpKyh0W2UrM108PDI0KX1l bC5WYXJpbnQ9MCxlbC5GaXhlZDY0PTEsZWwuQnl0ZXM9MixlbC5GaXhlZDMy PTUsZWwucHJvdG90eXBlPXtkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5idWY9 bnVsbH0scmVhZEZpZWxkczpmdW5jdGlvbih0LGUscil7Zm9yKHI9cnx8dGhp cy5sZW5ndGg7dGhpcy5wb3M8cjspe3ZhciBuPXRoaXMucmVhZFZhcmludCgp LGE9bj4+MyxpPXRoaXMucG9zO3RoaXMudHlwZT03Jm4sdChhLGUsdGhpcyks dGhpcy5wb3M9PT1pJiZ0aGlzLnNraXAobil9cmV0dXJuIGV9LHJlYWRNZXNz YWdlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVhZEZpZWxkcyh0LGUs dGhpcy5yZWFkVmFyaW50KCkrdGhpcy5wb3MpfSxyZWFkRml4ZWQzMjpmdW5j dGlvbigpe3ZhciB0PWRsKHRoaXMuYnVmLHRoaXMucG9zKTtyZXR1cm4gdGhp cy5wb3MrPTQsdH0scmVhZFNGaXhlZDMyOmZ1bmN0aW9uKCl7dmFyIHQ9dmwo dGhpcy5idWYsdGhpcy5wb3MpO3JldHVybiB0aGlzLnBvcys9NCx0fSxyZWFk Rml4ZWQ2NDpmdW5jdGlvbigpe3ZhciB0PWRsKHRoaXMuYnVmLHRoaXMucG9z KSs0Mjk0OTY3Mjk2KmRsKHRoaXMuYnVmLHRoaXMucG9zKzQpO3JldHVybiB0 aGlzLnBvcys9OCx0fSxyZWFkU0ZpeGVkNjQ6ZnVuY3Rpb24oKXt2YXIgdD1k bCh0aGlzLmJ1Zix0aGlzLnBvcykrNDI5NDk2NzI5Nip2bCh0aGlzLmJ1Zix0 aGlzLnBvcys0KTtyZXR1cm4gdGhpcy5wb3MrPTgsdH0scmVhZEZsb2F0OmZ1 bmN0aW9uKCl7dmFyIHQ9UXModGhpcy5idWYsdGhpcy5wb3MsITAsMjMsNCk7 cmV0dXJuIHRoaXMucG9zKz00LHR9LHJlYWREb3VibGU6ZnVuY3Rpb24oKXt2 YXIgdD1Rcyh0aGlzLmJ1Zix0aGlzLnBvcywhMCw1Miw4KTtyZXR1cm4gdGhp cy5wb3MrPTgsdH0scmVhZFZhcmludDpmdW5jdGlvbih0KXt2YXIgZSxyLG49 dGhpcy5idWY7cmV0dXJuIGU9MTI3JihyPW5bdGhpcy5wb3MrK10pLHI8MTI4 P2U6KGV8PSgxMjcmKHI9blt0aGlzLnBvcysrXSkpPDw3LHI8MTI4P2U6KGV8 PSgxMjcmKHI9blt0aGlzLnBvcysrXSkpPDwxNCxyPDEyOD9lOihlfD0oMTI3 JihyPW5bdGhpcy5wb3MrK10pKTw8MjEscjwxMjg/ZTpmdW5jdGlvbih0LGUs cil7dmFyIG4sYSxpPXIuYnVmO2lmKG49KDExMiYoYT1pW3IucG9zKytdKSk+ PjQsYTwxMjgpcmV0dXJuIG5sKHQsbixlKTtpZihufD0oMTI3JihhPWlbci5w b3MrK10pKTw8MyxhPDEyOClyZXR1cm4gbmwodCxuLGUpO2lmKG58PSgxMjcm KGE9aVtyLnBvcysrXSkpPDwxMCxhPDEyOClyZXR1cm4gbmwodCxuLGUpO2lm KG58PSgxMjcmKGE9aVtyLnBvcysrXSkpPDwxNyxhPDEyOClyZXR1cm4gbmwo dCxuLGUpO2lmKG58PSgxMjcmKGE9aVtyLnBvcysrXSkpPDwyNCxhPDEyOCly ZXR1cm4gbmwodCxuLGUpO2lmKG58PSgxJihhPWlbci5wb3MrK10pKTw8MzEs YTwxMjgpcmV0dXJuIG5sKHQsbixlKTt0aHJvdyBuZXcgRXJyb3IoIkV4cGVj dGVkIHZhcmludCBub3QgbW9yZSB0aGFuIDEwIGJ5dGVzIil9KGV8PSgxNSYo cj1uW3RoaXMucG9zXSkpPDwyOCx0LHRoaXMpKSkpfSxyZWFkVmFyaW50NjQ6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkVmFyaW50KCEwKX0scmVhZFNW YXJpbnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJlYWRWYXJpbnQoKTtyZXR1 cm4gdCUyPT0xPyh0KzEpLy0yOnQvMn0scmVhZEJvb2xlYW46ZnVuY3Rpb24o KXtyZXR1cm4gQm9vbGVhbih0aGlzLnJlYWRWYXJpbnQoKSl9LHJlYWRTdHJp bmc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJlYWRWYXJpbnQoKSt0aGlzLnBv cyxlPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49IiIsYT1lO2E8cjspe3Zh ciBpLG8scyxsPXRbYV0sYz1udWxsLHU9bD4yMzk/NDpsPjIyMz8zOmw+MTkx PzI6MTtpZihhK3U+cilicmVhazsxPT09dT9sPDEyOCYmKGM9bCk6Mj09PXU/ MTI4PT0oMTkyJihpPXRbYSsxXSkpJiYoYz0oMzEmbCk8PDZ8NjMmaSk8PTEy NyYmKGM9bnVsbCk6Mz09PXU/KGk9dFthKzFdLG89dFthKzJdLDEyOD09KDE5 MiZpKSYmMTI4PT0oMTkyJm8pJiYoKGM9KDE1JmwpPDwxMnwoNjMmaSk8PDZ8 NjMmbyk8PTIwNDd8fGM+PTU1Mjk2JiZjPD01NzM0MykmJihjPW51bGwpKTo0 PT09dSYmKGk9dFthKzFdLG89dFthKzJdLHM9dFthKzNdLDEyOD09KDE5MiZp KSYmMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTImcykmJigoYz0oMTUmbCk8PDE4 fCg2MyZpKTw8MTJ8KDYzJm8pPDw2fDYzJnMpPD02NTUzNXx8Yz49MTExNDEx MikmJihjPW51bGwpKSxudWxsPT09Yz8oYz02NTUzMyx1PTEpOmM+NjU1MzUm JihjLT02NTUzNixuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGM+Pj4xMCYxMDIz fDU1Mjk2KSxjPTU2MzIwfDEwMjMmYyksbis9U3RyaW5nLmZyb21DaGFyQ29k ZShjKSxhKz11fXJldHVybiBufSh0aGlzLmJ1Zix0aGlzLnBvcyx0KTtyZXR1 cm4gdGhpcy5wb3M9dCxlfSxyZWFkQnl0ZXM6ZnVuY3Rpb24oKXt2YXIgdD10 aGlzLnJlYWRWYXJpbnQoKSt0aGlzLnBvcyxlPXRoaXMuYnVmLnN1YmFycmF5 KHRoaXMucG9zLHQpO3JldHVybiB0aGlzLnBvcz10LGV9LHJlYWRQYWNrZWRW YXJpbnQ6ZnVuY3Rpb24odCxlKXtpZih0aGlzLnR5cGUhPT1lbC5CeXRlcyly ZXR1cm4gdC5wdXNoKHRoaXMucmVhZFZhcmludChlKSk7dmFyIHI9cmwodGhp cyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8cjspdC5wdXNoKHRoaXMucmVhZFZh cmludChlKSk7cmV0dXJuIHR9LHJlYWRQYWNrZWRTVmFyaW50OmZ1bmN0aW9u KHQpe2lmKHRoaXMudHlwZSE9PWVsLkJ5dGVzKXJldHVybiB0LnB1c2godGhp cy5yZWFkU1ZhcmludCgpKTt2YXIgZT1ybCh0aGlzKTtmb3IodD10fHxbXTt0 aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkU1ZhcmludCgpKTtyZXR1cm4g dH0scmVhZFBhY2tlZEJvb2xlYW46ZnVuY3Rpb24odCl7aWYodGhpcy50eXBl IT09ZWwuQnl0ZXMpcmV0dXJuIHQucHVzaCh0aGlzLnJlYWRCb29sZWFuKCkp O3ZhciBlPXJsKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVz aCh0aGlzLnJlYWRCb29sZWFuKCkpO3JldHVybiB0fSxyZWFkUGFja2VkRmxv YXQ6ZnVuY3Rpb24odCl7aWYodGhpcy50eXBlIT09ZWwuQnl0ZXMpcmV0dXJu IHQucHVzaCh0aGlzLnJlYWRGbG9hdCgpKTt2YXIgZT1ybCh0aGlzKTtmb3Io dD10fHxbXTt0aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkRmxvYXQoKSk7 cmV0dXJuIHR9LHJlYWRQYWNrZWREb3VibGU6ZnVuY3Rpb24odCl7aWYodGhp cy50eXBlIT09ZWwuQnl0ZXMpcmV0dXJuIHQucHVzaCh0aGlzLnJlYWREb3Vi bGUoKSk7dmFyIGU9cmwodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8ZTsp dC5wdXNoKHRoaXMucmVhZERvdWJsZSgpKTtyZXR1cm4gdH0scmVhZFBhY2tl ZEZpeGVkMzI6ZnVuY3Rpb24odCl7aWYodGhpcy50eXBlIT09ZWwuQnl0ZXMp cmV0dXJuIHQucHVzaCh0aGlzLnJlYWRGaXhlZDMyKCkpO3ZhciBlPXJsKHRo aXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWRG aXhlZDMyKCkpO3JldHVybiB0fSxyZWFkUGFja2VkU0ZpeGVkMzI6ZnVuY3Rp b24odCl7aWYodGhpcy50eXBlIT09ZWwuQnl0ZXMpcmV0dXJuIHQucHVzaCh0 aGlzLnJlYWRTRml4ZWQzMigpKTt2YXIgZT1ybCh0aGlzKTtmb3IodD10fHxb XTt0aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkU0ZpeGVkMzIoKSk7cmV0 dXJuIHR9LHJlYWRQYWNrZWRGaXhlZDY0OmZ1bmN0aW9uKHQpe2lmKHRoaXMu dHlwZSE9PWVsLkJ5dGVzKXJldHVybiB0LnB1c2godGhpcy5yZWFkRml4ZWQ2 NCgpKTt2YXIgZT1ybCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxlOyl0 LnB1c2godGhpcy5yZWFkRml4ZWQ2NCgpKTtyZXR1cm4gdH0scmVhZFBhY2tl ZFNGaXhlZDY0OmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PWVsLkJ5dGVz KXJldHVybiB0LnB1c2godGhpcy5yZWFkU0ZpeGVkNjQoKSk7dmFyIGU9cmwo dGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVh ZFNGaXhlZDY0KCkpO3JldHVybiB0fSxza2lwOmZ1bmN0aW9uKHQpe3ZhciBl PTcmdDtpZihlPT09ZWwuVmFyaW50KWZvcig7dGhpcy5idWZbdGhpcy5wb3Mr K10+MTI3Oyk7ZWxzZSBpZihlPT09ZWwuQnl0ZXMpdGhpcy5wb3M9dGhpcy5y ZWFkVmFyaW50KCkrdGhpcy5wb3M7ZWxzZSBpZihlPT09ZWwuRml4ZWQzMil0 aGlzLnBvcys9NDtlbHNle2lmKGUhPT1lbC5GaXhlZDY0KXRocm93IG5ldyBF cnJvcigiVW5pbXBsZW1lbnRlZCB0eXBlOiAiK2UpO3RoaXMucG9zKz04fX0s d3JpdGVUYWc6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVmFyaW50KHQ8PDN8 ZSl9LHJlYWxsb2M6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMubGVuZ3Ro fHwxNjtlPHRoaXMucG9zK3Q7KWUqPTI7aWYoZSE9PXRoaXMubGVuZ3RoKXt2 YXIgcj1uZXcgVWludDhBcnJheShlKTtyLnNldCh0aGlzLmJ1ZiksdGhpcy5i dWY9cix0aGlzLmxlbmd0aD1lfX0sZmluaXNoOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMubGVuZ3RoPXRoaXMucG9zLHRoaXMucG9zPTAsdGhpcy5idWYuc3Vi YXJyYXkoMCx0aGlzLmxlbmd0aCl9LHdyaXRlRml4ZWQzMjpmdW5jdGlvbih0 KXt0aGlzLnJlYWxsb2MoNCksZ2wodGhpcy5idWYsdCx0aGlzLnBvcyksdGhp cy5wb3MrPTR9LHdyaXRlU0ZpeGVkMzI6ZnVuY3Rpb24odCl7dGhpcy5yZWFs bG9jKDQpLGdsKHRoaXMuYnVmLHQsdGhpcy5wb3MpLHRoaXMucG9zKz00fSx3 cml0ZUZpeGVkNjQ6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDgpLGdsKHRo aXMuYnVmLC0xJnQsdGhpcy5wb3MpLGdsKHRoaXMuYnVmLE1hdGguZmxvb3Io dCooMS80Mjk0OTY3Mjk2KSksdGhpcy5wb3MrNCksdGhpcy5wb3MrPTh9LHdy aXRlU0ZpeGVkNjQ6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDgpLGdsKHRo aXMuYnVmLC0xJnQsdGhpcy5wb3MpLGdsKHRoaXMuYnVmLE1hdGguZmxvb3Io dCooMS80Mjk0OTY3Mjk2KSksdGhpcy5wb3MrNCksdGhpcy5wb3MrPTh9LHdy aXRlVmFyaW50OmZ1bmN0aW9uKHQpeyh0PSt0fHwwKT4yNjg0MzU0NTV8fHQ8 MD9mdW5jdGlvbih0LGUpe3ZhciByLG47aWYodD49MD8ocj10JTQyOTQ5Njcy OTZ8MCxuPXQvNDI5NDk2NzI5NnwwKToobj1+KC10LzQyOTQ5NjcyOTYpLDQy OTQ5NjcyOTVeKHI9figtdCU0Mjk0OTY3Mjk2KSk/cj1yKzF8MDoocj0wLG49 bisxfDApKSx0Pj0weDEwMDAwMDAwMDAwMDAwMDAwfHx0PC0weDEwMDAwMDAw MDAwMDAwMDAwKXRocm93IG5ldyBFcnJvcigiR2l2ZW4gdmFyaW50IGRvZXNu J3QgZml0IGludG8gMTAgYnl0ZXMiKTtlLnJlYWxsb2MoMTApLGZ1bmN0aW9u KHQsZSxyKXtyLmJ1ZltyLnBvcysrXT0xMjcmdHwxMjgsdD4+Pj03LHIuYnVm W3IucG9zKytdPTEyNyZ0fDEyOCx0Pj4+PTcsci5idWZbci5wb3MrK109MTI3 JnR8MTI4LHQ+Pj49NyxyLmJ1ZltyLnBvcysrXT0xMjcmdHwxMjgsdD4+Pj03 LHIuYnVmW3IucG9zXT0xMjcmdH0ociwwLGUpLGZ1bmN0aW9uKHQsZSl7dmFy IHI9KDcmdCk8PDQ7ZS5idWZbZS5wb3MrK118PXJ8KCh0Pj4+PTMpPzEyODow KSx0JiYoZS5idWZbZS5wb3MrK109MTI3JnR8KCh0Pj4+PTcpPzEyODowKSx0 JiYoZS5idWZbZS5wb3MrK109MTI3JnR8KCh0Pj4+PTcpPzEyODowKSx0JiYo ZS5idWZbZS5wb3MrK109MTI3JnR8KCh0Pj4+PTcpPzEyODowKSx0JiYoZS5i dWZbZS5wb3MrK109MTI3JnR8KCh0Pj4+PTcpPzEyODowKSx0JiYoZS5idWZb ZS5wb3MrK109MTI3JnQpKSkpKX0obixlKX0odCx0aGlzKToodGhpcy5yZWFs bG9jKDQpLHRoaXMuYnVmW3RoaXMucG9zKytdPTEyNyZ0fCh0PjEyNz8xMjg6 MCksdDw9MTI3fHwodGhpcy5idWZbdGhpcy5wb3MrK109MTI3Jih0Pj4+PTcp fCh0PjEyNz8xMjg6MCksdDw9MTI3fHwodGhpcy5idWZbdGhpcy5wb3MrK109 MTI3Jih0Pj4+PTcpfCh0PjEyNz8xMjg6MCksdDw9MTI3fHwodGhpcy5idWZb dGhpcy5wb3MrK109dD4+PjcmMTI3KSkpKX0sd3JpdGVTVmFyaW50OmZ1bmN0 aW9uKHQpe3RoaXMud3JpdGVWYXJpbnQodDwwPzIqLXQtMToyKnQpfSx3cml0 ZUJvb2xlYW46ZnVuY3Rpb24odCl7dGhpcy53cml0ZVZhcmludChCb29sZWFu KHQpKX0sd3JpdGVTdHJpbmc6ZnVuY3Rpb24odCl7dD1TdHJpbmcodCksdGhp cy5yZWFsbG9jKDQqdC5sZW5ndGgpLHRoaXMucG9zKys7dmFyIGU9dGhpcy5w b3M7dGhpcy5wb3M9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbixhLGk9MDtp PGUubGVuZ3RoO2krKyl7aWYoKG49ZS5jaGFyQ29kZUF0KGkpKT41NTI5NSYm bjw1NzM0NCl7aWYoIWEpe24+NTYzMTl8fGkrMT09PWUubGVuZ3RoPyh0W3Ir K109MjM5LHRbcisrXT0xOTEsdFtyKytdPTE4OSk6YT1uO2NvbnRpbnVlfWlm KG48NTYzMjApe3RbcisrXT0yMzksdFtyKytdPTE5MSx0W3IrK109MTg5LGE9 bjtjb250aW51ZX1uPWEtNTUyOTY8PDEwfG4tNTYzMjB8NjU1MzYsYT1udWxs fWVsc2UgYSYmKHRbcisrXT0yMzksdFtyKytdPTE5MSx0W3IrK109MTg5LGE9 bnVsbCk7bjwxMjg/dFtyKytdPW46KG48MjA0OD90W3IrK109bj4+NnwxOTI6 KG48NjU1MzY/dFtyKytdPW4+PjEyfDIyNDoodFtyKytdPW4+PjE4fDI0MCx0 W3IrK109bj4+MTImNjN8MTI4KSx0W3IrK109bj4+NiY2M3wxMjgpLHRbcisr XT02MyZufDEyOCl9cmV0dXJuIHJ9KHRoaXMuYnVmLHQsdGhpcy5wb3MpO3Zh ciByPXRoaXMucG9zLWU7cj49MTI4JiZhbChlLHIsdGhpcyksdGhpcy5wb3M9 ZS0xLHRoaXMud3JpdGVWYXJpbnQociksdGhpcy5wb3MrPXJ9LHdyaXRlRmxv YXQ6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDQpLCRzKHRoaXMuYnVmLHQs dGhpcy5wb3MsITAsMjMsNCksdGhpcy5wb3MrPTR9LHdyaXRlRG91YmxlOmZ1 bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg4KSwkcyh0aGlzLmJ1Zix0LHRoaXMu cG9zLCEwLDUyLDgpLHRoaXMucG9zKz04fSx3cml0ZUJ5dGVzOmZ1bmN0aW9u KHQpe3ZhciBlPXQubGVuZ3RoO3RoaXMud3JpdGVWYXJpbnQoZSksdGhpcy5y ZWFsbG9jKGUpO2Zvcih2YXIgcj0wO3I8ZTtyKyspdGhpcy5idWZbdGhpcy5w b3MrK109dFtyXX0sd3JpdGVSYXdNZXNzYWdlOmZ1bmN0aW9uKHQsZSl7dGhp cy5wb3MrKzt2YXIgcj10aGlzLnBvczt0KGUsdGhpcyk7dmFyIG49dGhpcy5w b3MtcjtuPj0xMjgmJmFsKHIsbix0aGlzKSx0aGlzLnBvcz1yLTEsdGhpcy53 cml0ZVZhcmludChuKSx0aGlzLnBvcys9bn0sd3JpdGVNZXNzYWdlOmZ1bmN0 aW9uKHQsZSxyKXt0aGlzLndyaXRlVGFnKHQsZWwuQnl0ZXMpLHRoaXMud3Jp dGVSYXdNZXNzYWdlKGUscil9LHdyaXRlUGFja2VkVmFyaW50OmZ1bmN0aW9u KHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQsaWwsZSl9LHdy aXRlUGFja2VkU1ZhcmludDpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlz LndyaXRlTWVzc2FnZSh0LG9sLGUpfSx3cml0ZVBhY2tlZEJvb2xlYW46ZnVu Y3Rpb24odCxlKXtlLmxlbmd0aCYmdGhpcy53cml0ZU1lc3NhZ2UodCxjbCxl KX0sd3JpdGVQYWNrZWRGbG9hdDpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0 aGlzLndyaXRlTWVzc2FnZSh0LHNsLGUpfSx3cml0ZVBhY2tlZERvdWJsZTpm dW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LGxs LGUpfSx3cml0ZVBhY2tlZEZpeGVkMzI6ZnVuY3Rpb24odCxlKXtlLmxlbmd0 aCYmdGhpcy53cml0ZU1lc3NhZ2UodCx1bCxlKX0sd3JpdGVQYWNrZWRTRml4 ZWQzMjpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2Fn ZSh0LGhsLGUpfSx3cml0ZVBhY2tlZEZpeGVkNjQ6ZnVuY3Rpb24odCxlKXtl Lmxlbmd0aCYmdGhpcy53cml0ZU1lc3NhZ2UodCxmbCxlKX0sd3JpdGVQYWNr ZWRTRml4ZWQ2NDpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRl TWVzc2FnZSh0LHBsLGUpfSx3cml0ZUJ5dGVzRmllbGQ6ZnVuY3Rpb24odCxl KXt0aGlzLndyaXRlVGFnKHQsZWwuQnl0ZXMpLHRoaXMud3JpdGVCeXRlcyhl KX0sd3JpdGVGaXhlZDMyRmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRl VGFnKHQsZWwuRml4ZWQzMiksdGhpcy53cml0ZUZpeGVkMzIoZSl9LHdyaXRl U0ZpeGVkMzJGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVUYWcodCxl bC5GaXhlZDMyKSx0aGlzLndyaXRlU0ZpeGVkMzIoZSl9LHdyaXRlRml4ZWQ2 NEZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LGVsLkZpeGVk NjQpLHRoaXMud3JpdGVGaXhlZDY0KGUpfSx3cml0ZVNGaXhlZDY0RmllbGQ6 ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsZWwuRml4ZWQ2NCksdGhp cy53cml0ZVNGaXhlZDY0KGUpfSx3cml0ZVZhcmludEZpZWxkOmZ1bmN0aW9u KHQsZSl7dGhpcy53cml0ZVRhZyh0LGVsLlZhcmludCksdGhpcy53cml0ZVZh cmludChlKX0sd3JpdGVTVmFyaW50RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlz LndyaXRlVGFnKHQsZWwuVmFyaW50KSx0aGlzLndyaXRlU1ZhcmludChlKX0s d3JpdGVTdHJpbmdGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVUYWco dCxlbC5CeXRlcyksdGhpcy53cml0ZVN0cmluZyhlKX0sd3JpdGVGbG9hdEZp ZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LGVsLkZpeGVkMzIp LHRoaXMud3JpdGVGbG9hdChlKX0sd3JpdGVEb3VibGVGaWVsZDpmdW5jdGlv bih0LGUpe3RoaXMud3JpdGVUYWcodCxlbC5GaXhlZDY0KSx0aGlzLndyaXRl RG91YmxlKGUpfSx3cml0ZUJvb2xlYW5GaWVsZDpmdW5jdGlvbih0LGUpe3Ro aXMud3JpdGVWYXJpbnRGaWVsZCh0LEJvb2xlYW4oZSkpfX07dmFyIG1sPTM7 ZnVuY3Rpb24geWwodCxlLHIpezE9PT10JiZyLnJlYWRNZXNzYWdlKHhsLGUp fWZ1bmN0aW9uIHhsKHQsZSxyKXtpZigzPT09dCl7dmFyIG49ci5yZWFkTWVz c2FnZShibCx7fSksYT1uLmlkLGk9bi5iaXRtYXAsbz1uLndpZHRoLHM9bi5o ZWlnaHQsbD1uLmxlZnQsYz1uLnRvcCx1PW4uYWR2YW5jZTtlLnB1c2goe2lk OmEsYml0bWFwOm5ldyBQaSh7d2lkdGg6bysyKm1sLGhlaWdodDpzKzIqbWx9 LGkpLG1ldHJpY3M6e3dpZHRoOm8saGVpZ2h0OnMsbGVmdDpsLHRvcDpjLGFk dmFuY2U6dX19KX19ZnVuY3Rpb24gYmwodCxlLHIpezE9PT10P2UuaWQ9ci5y ZWFkVmFyaW50KCk6Mj09PXQ/ZS5iaXRtYXA9ci5yZWFkQnl0ZXMoKTozPT09 dD9lLndpZHRoPXIucmVhZFZhcmludCgpOjQ9PT10P2UuaGVpZ2h0PXIucmVh ZFZhcmludCgpOjU9PT10P2UubGVmdD1yLnJlYWRTVmFyaW50KCk6Nj09PXQ/ ZS50b3A9ci5yZWFkU1ZhcmludCgpOjc9PT10JiYoZS5hZHZhbmNlPXIucmVh ZFZhcmludCgpKX12YXIgX2w9bWwsd2w9ZnVuY3Rpb24odCl7dmFyIGU9dGhp czt0aGlzLl9jYWxsYmFjaz10LHRoaXMuX3RyaWdnZXJlZD0hMSwidW5kZWZp bmVkIiE9dHlwZW9mIE1lc3NhZ2VDaGFubmVsJiYodGhpcy5fY2hhbm5lbD1u ZXcgTWVzc2FnZUNoYW5uZWwsdGhpcy5fY2hhbm5lbC5wb3J0Mi5vbm1lc3Nh Z2U9ZnVuY3Rpb24oKXtlLl90cmlnZ2VyZWQ9ITEsZS5fY2FsbGJhY2soKX0p fTt3bC5wcm90b3R5cGUudHJpZ2dlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7 dGhpcy5fdHJpZ2dlcmVkfHwodGhpcy5fdHJpZ2dlcmVkPSEwLHRoaXMuX2No YW5uZWw/dGhpcy5fY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSghMCk6c2V0 VGltZW91dChmdW5jdGlvbigpe3QuX3RyaWdnZXJlZD0hMSx0Ll9jYWxsYmFj aygpfSwwKSl9O3ZhciBrbD1mdW5jdGlvbih0LGUscil7dGhpcy50YXJnZXQ9 dCx0aGlzLnBhcmVudD1lLHRoaXMubWFwSWQ9cix0aGlzLmNhbGxiYWNrcz17 fSx0aGlzLnRhc2tzPXt9LHRoaXMudGFza1F1ZXVlPVtdLHRoaXMuY2FuY2Vs Q2FsbGJhY2tzPXt9LHYoWyJyZWNlaXZlIiwicHJvY2VzcyJdLHRoaXMpLHRo aXMuaW52b2tlcj1uZXcgd2wodGhpcy5wcm9jZXNzKSx0aGlzLnRhcmdldC5h ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLnJlY2VpdmUsITEpfTtm dW5jdGlvbiBUbCh0LGUscil7dmFyIG49MipNYXRoLlBJKjYzNzgxMzcvMjU2 L01hdGgucG93KDIscik7cmV0dXJuW3Qqbi0yKk1hdGguUEkqNjM3ODEzNy8y LGUqbi0yKk1hdGguUEkqNjM3ODEzNy8yXX1rbC5wcm90b3R5cGUuc2VuZD1m dW5jdGlvbih0LGUscixuKXt2YXIgYT10aGlzLGk9TWF0aC5yb3VuZCgxZTE4 Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMCwxMCk7 ciYmKHRoaXMuY2FsbGJhY2tzW2ldPXIpO3ZhciBvPVtdO3JldHVybiB0aGlz LnRhcmdldC5wb3N0TWVzc2FnZSh7aWQ6aSx0eXBlOnQsaGFzQ2FsbGJhY2s6 ISFyLHRhcmdldE1hcElkOm4sc291cmNlTWFwSWQ6dGhpcy5tYXBJZCxkYXRh OnZuKGUsbyl9LG8pLHtjYW5jZWw6ZnVuY3Rpb24oKXtyJiZkZWxldGUgYS5j YWxsYmFja3NbaV0sYS50YXJnZXQucG9zdE1lc3NhZ2Uoe2lkOmksdHlwZToi PGNhbmNlbD4iLHRhcmdldE1hcElkOm4sc291cmNlTWFwSWQ6YS5tYXBJZH0p fX19LGtsLnByb3RvdHlwZS5yZWNlaXZlPWZ1bmN0aW9uKHQpe3ZhciBlPXQu ZGF0YSxyPWUuaWQ7aWYociYmKCFlLnRhcmdldE1hcElkfHx0aGlzLm1hcElk PT09ZS50YXJnZXRNYXBJZCkpaWYoIjxjYW5jZWw+Ij09PWUudHlwZSl7ZGVs ZXRlIHRoaXMudGFza3Nbcl07dmFyIG49dGhpcy5jYW5jZWxDYWxsYmFja3Nb cl07ZGVsZXRlIHRoaXMuY2FuY2VsQ2FsbGJhY2tzW3JdLG4mJm4oKX1lbHNl IHRoaXMudGFza3Nbcl09ZSx0aGlzLnRhc2tRdWV1ZS5wdXNoKHIpLHRoaXMu aW52b2tlci50cmlnZ2VyKCl9LGtsLnByb3RvdHlwZS5wcm9jZXNzPWZ1bmN0 aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLnRhc2tRdWV1ZS5sZW5ndGgpe3Zh ciBlPXRoaXMudGFza1F1ZXVlLnNoaWZ0KCkscj10aGlzLnRhc2tzW2VdO2lm KGRlbGV0ZSB0aGlzLnRhc2tzW2VdLHRoaXMudGFza1F1ZXVlLmxlbmd0aCYm dGhpcy5pbnZva2VyLnRyaWdnZXIoKSxyKWlmKCI8cmVzcG9uc2U+Ij09PXIu dHlwZSl7dmFyIG49dGhpcy5jYWxsYmFja3NbZV07ZGVsZXRlIHRoaXMuY2Fs bGJhY2tzW2VdLG4mJihyLmVycm9yP24obW4oci5lcnJvcikpOm4obnVsbCxt bihyLmRhdGEpKSl9ZWxzZXt2YXIgYT0hMSxpPXIuaGFzQ2FsbGJhY2s/ZnVu Y3Rpb24ocixuKXthPSEwLGRlbGV0ZSB0LmNhbmNlbENhbGxiYWNrc1tlXTt2 YXIgaT1bXTt0LnRhcmdldC5wb3N0TWVzc2FnZSh7aWQ6ZSx0eXBlOiI8cmVz cG9uc2U+Iixzb3VyY2VNYXBJZDp0Lm1hcElkLGVycm9yOnI/dm4ocik6bnVs bCxkYXRhOnZuKG4saSl9LGkpfTpmdW5jdGlvbih0KXthPSEwfSxvPW51bGws cz1tbihyLmRhdGEpO2lmKHRoaXMucGFyZW50W3IudHlwZV0pbz10aGlzLnBh cmVudFtyLnR5cGVdKHIuc291cmNlTWFwSWQscyxpKTtlbHNlIGlmKHRoaXMu cGFyZW50LmdldFdvcmtlclNvdXJjZSl7dmFyIGw9ci50eXBlLnNwbGl0KCIu Iik7bz10aGlzLnBhcmVudC5nZXRXb3JrZXJTb3VyY2Uoci5zb3VyY2VNYXBJ ZCxsWzBdLHMuc291cmNlKVtsWzFdXShzLGkpfWVsc2UgaShuZXcgRXJyb3Io IkNvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uICIrci50eXBlKSk7IWEmJm8mJm8u Y2FuY2VsJiYodGhpcy5jYW5jZWxDYWxsYmFja3NbZV09by5jYW5jZWwpfX19 LGtsLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLnRhcmdldC5y ZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLnJlY2VpdmUsITEp fTt2YXIgTWw9ZnVuY3Rpb24odCxlKXt0JiYoZT90aGlzLnNldFNvdXRoV2Vz dCh0KS5zZXROb3J0aEVhc3QoZSk6ND09PXQubGVuZ3RoP3RoaXMuc2V0U291 dGhXZXN0KFt0WzBdLHRbMV1dKS5zZXROb3J0aEVhc3QoW3RbMl0sdFszXV0p OnRoaXMuc2V0U291dGhXZXN0KHRbMF0pLnNldE5vcnRoRWFzdCh0WzFdKSl9 O01sLnByb3RvdHlwZS5zZXROb3J0aEVhc3Q9ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMuX25lPXQgaW5zdGFuY2VvZiBBbD9uZXcgQWwodC5sbmcsdC5sYXQp OkFsLmNvbnZlcnQodCksdGhpc30sTWwucHJvdG90eXBlLnNldFNvdXRoV2Vz dD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc3c9dCBpbnN0YW5jZW9mIEFs P25ldyBBbCh0LmxuZyx0LmxhdCk6QWwuY29udmVydCh0KSx0aGlzfSxNbC5w cm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbj10aGlzLl9z dyxhPXRoaXMuX25lO2lmKHQgaW5zdGFuY2VvZiBBbCllPXQscj10O2Vsc2V7 aWYoISh0IGluc3RhbmNlb2YgTWwpKXJldHVybiBBcnJheS5pc0FycmF5KHQp P3QuZXZlcnkoQXJyYXkuaXNBcnJheSk/dGhpcy5leHRlbmQoTWwuY29udmVy dCh0KSk6dGhpcy5leHRlbmQoQWwuY29udmVydCh0KSk6dGhpcztpZihlPXQu X3N3LHI9dC5fbmUsIWV8fCFyKXJldHVybiB0aGlzfXJldHVybiBufHxhPyhu LmxuZz1NYXRoLm1pbihlLmxuZyxuLmxuZyksbi5sYXQ9TWF0aC5taW4oZS5s YXQsbi5sYXQpLGEubG5nPU1hdGgubWF4KHIubG5nLGEubG5nKSxhLmxhdD1N YXRoLm1heChyLmxhdCxhLmxhdCkpOih0aGlzLl9zdz1uZXcgQWwoZS5sbmcs ZS5sYXQpLHRoaXMuX25lPW5ldyBBbChyLmxuZyxyLmxhdCkpLHRoaXN9LE1s LnByb3RvdHlwZS5nZXRDZW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFs KCh0aGlzLl9zdy5sbmcrdGhpcy5fbmUubG5nKS8yLCh0aGlzLl9zdy5sYXQr dGhpcy5fbmUubGF0KS8yKX0sTWwucHJvdG90eXBlLmdldFNvdXRoV2VzdD1m dW5jdGlvbigpe3JldHVybiB0aGlzLl9zd30sTWwucHJvdG90eXBlLmdldE5v cnRoRWFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZX0sTWwucHJvdG90 eXBlLmdldE5vcnRoV2VzdD1mdW5jdGlvbigpe3JldHVybiBuZXcgQWwodGhp cy5nZXRXZXN0KCksdGhpcy5nZXROb3J0aCgpKX0sTWwucHJvdG90eXBlLmdl dFNvdXRoRWFzdD1mdW5jdGlvbigpe3JldHVybiBuZXcgQWwodGhpcy5nZXRF YXN0KCksdGhpcy5nZXRTb3V0aCgpKX0sTWwucHJvdG90eXBlLmdldFdlc3Q9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3cubG5nfSxNbC5wcm90b3R5cGUu Z2V0U291dGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3cubGF0fSxNbC5w cm90b3R5cGUuZ2V0RWFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZS5s bmd9LE1sLnByb3RvdHlwZS5nZXROb3J0aD1mdW5jdGlvbigpe3JldHVybiB0 aGlzLl9uZS5sYXR9LE1sLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7 cmV0dXJuW3RoaXMuX3N3LnRvQXJyYXkoKSx0aGlzLl9uZS50b0FycmF5KCld fSxNbC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iTG5n TGF0Qm91bmRzKCIrdGhpcy5fc3cudG9TdHJpbmcoKSsiLCAiK3RoaXMuX25l LnRvU3RyaW5nKCkrIikifSxNbC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlv bigpe3JldHVybiEodGhpcy5fc3cmJnRoaXMuX25lKX0sTWwuY29udmVydD1m dW5jdGlvbih0KXtyZXR1cm4hdHx8dCBpbnN0YW5jZW9mIE1sP3Q6bmV3IE1s KHQpfTt2YXIgQWw9ZnVuY3Rpb24odCxlKXtpZihpc05hTih0KXx8aXNOYU4o ZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIExuZ0xhdCBvYmplY3Q6ICgi K3QrIiwgIitlKyIpIik7aWYodGhpcy5sbmc9K3QsdGhpcy5sYXQ9K2UsdGhp cy5sYXQ+OTB8fHRoaXMubGF0PC05MCl0aHJvdyBuZXcgRXJyb3IoIkludmFs aWQgTG5nTGF0IGxhdGl0dWRlIHZhbHVlOiBtdXN0IGJlIGJldHdlZW4gLTkw IGFuZCA5MCIpfTtBbC5wcm90b3R5cGUud3JhcD1mdW5jdGlvbigpe3JldHVy biBuZXcgQWwodSh0aGlzLmxuZywtMTgwLDE4MCksdGhpcy5sYXQpfSxBbC5w cm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVyblt0aGlzLmxuZyx0 aGlzLmxhdF19LEFsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3Jl dHVybiJMbmdMYXQoIit0aGlzLmxuZysiLCAiK3RoaXMubGF0KyIpIn0sQWwu cHJvdG90eXBlLnRvQm91bmRzPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0 PTApO3ZhciBlPTM2MCp0LzQwMDc1MDE3LHI9ZS9NYXRoLmNvcyhNYXRoLlBJ LzE4MCp0aGlzLmxhdCk7cmV0dXJuIG5ldyBNbChuZXcgQWwodGhpcy5sbmct cix0aGlzLmxhdC1lKSxuZXcgQWwodGhpcy5sbmcrcix0aGlzLmxhdCtlKSl9 LEFsLmNvbnZlcnQ9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEFsKXJl dHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkmJigyPT09dC5sZW5ndGh8fDM9 PT10Lmxlbmd0aCkpcmV0dXJuIG5ldyBBbChOdW1iZXIodFswXSksTnVtYmVy KHRbMV0pKTtpZighQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVv ZiB0JiZudWxsIT09dClyZXR1cm4gbmV3IEFsKE51bWJlcigibG5nImluIHQ/ dC5sbmc6dC5sb24pLE51bWJlcih0LmxhdCkpO3Rocm93IG5ldyBFcnJvcigi YExuZ0xhdExpa2VgIGFyZ3VtZW50IG11c3QgYmUgc3BlY2lmaWVkIGFzIGEg TG5nTGF0IGluc3RhbmNlLCBhbiBvYmplY3Qge2xuZzogPGxuZz4sIGxhdDog PGxhdD59LCBhbiBvYmplY3Qge2xvbjogPGxuZz4sIGxhdDogPGxhdD59LCBv ciBhbiBhcnJheSBvZiBbPGxuZz4sIDxsYXQ+XSIpfTt2YXIgU2w9MipNYXRo LlBJKjYzNzgxMzc7ZnVuY3Rpb24gRWwodCl7cmV0dXJuIFNsKk1hdGguY29z KHQqTWF0aC5QSS8xODApfWZ1bmN0aW9uIExsKHQpe3JldHVybigxODArdCkv MzYwfWZ1bmN0aW9uIENsKHQpe3JldHVybigxODAtMTgwL01hdGguUEkqTWF0 aC5sb2coTWF0aC50YW4oTWF0aC5QSS80K3QqTWF0aC5QSS8zNjApKSkvMzYw fWZ1bmN0aW9uIFBsKHQsZSl7cmV0dXJuIHQvRWwoZSl9ZnVuY3Rpb24gT2wo dCl7dmFyIGU9MTgwLTM2MCp0O3JldHVybiAzNjAvTWF0aC5QSSpNYXRoLmF0 YW4oTWF0aC5leHAoZSpNYXRoLlBJLzE4MCkpLTkwfXZhciB6bD1mdW5jdGlv bih0LGUscil7dm9pZCAwPT09ciYmKHI9MCksdGhpcy54PSt0LHRoaXMueT0r ZSx0aGlzLno9K3J9O3psLmZyb21MbmdMYXQ9ZnVuY3Rpb24odCxlKXt2b2lk IDA9PT1lJiYoZT0wKTt2YXIgcj1BbC5jb252ZXJ0KHQpO3JldHVybiBuZXcg emwoTGwoci5sbmcpLENsKHIubGF0KSxQbChlLHIubGF0KSl9LHpsLnByb3Rv dHlwZS50b0xuZ0xhdD1mdW5jdGlvbigpe3JldHVybiBuZXcgQWwoMzYwKnRo aXMueC0xODAsT2wodGhpcy55KSl9LHpsLnByb3RvdHlwZS50b0FsdGl0dWRl PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueipFbChPbCh0aGlzLnkpKX0semwu cHJvdG90eXBlLm1ldGVySW5NZXJjYXRvckNvb3JkaW5hdGVVbml0cz1mdW5j dGlvbigpe3JldHVybiAxL1NsKih0PU9sKHRoaXMueSksMS9NYXRoLmNvcyh0 Kk1hdGguUEkvMTgwKSk7dmFyIHR9O3ZhciBJbD1mdW5jdGlvbih0LGUscil7 dGhpcy56PXQsdGhpcy54PWUsdGhpcy55PXIsdGhpcy5rZXk9RmwoMCx0LGUs cil9O0lsLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRo aXMuej09PXQueiYmdGhpcy54PT09dC54JiZ0aGlzLnk9PT10Lnl9LElsLnBy b3RvdHlwZS51cmw9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsaSxvLHM9KHI9 dGhpcy54LG49dGhpcy55LGE9dGhpcy56LGk9VGwoMjU2KnIsMjU2KihuPU1h dGgucG93KDIsYSktbi0xKSxhKSxvPVRsKDI1NioocisxKSwyNTYqKG4rMSks YSksaVswXSsiLCIraVsxXSsiLCIrb1swXSsiLCIrb1sxXSksbD1mdW5jdGlv bih0LGUscil7Zm9yKHZhciBuLGE9IiIsaT10O2k+MDtpLS0pYSs9KGUmKG49 MTw8aS0xKT8xOjApKyhyJm4/MjowKTtyZXR1cm4gYX0odGhpcy56LHRoaXMu eCx0aGlzLnkpO3JldHVybiB0Wyh0aGlzLngrdGhpcy55KSV0Lmxlbmd0aF0u cmVwbGFjZSgie3ByZWZpeH0iLCh0aGlzLnglMTYpLnRvU3RyaW5nKDE2KSso dGhpcy55JTE2KS50b1N0cmluZygxNikpLnJlcGxhY2UoInt6fSIsU3RyaW5n KHRoaXMueikpLnJlcGxhY2UoInt4fSIsU3RyaW5nKHRoaXMueCkpLnJlcGxh Y2UoInt5fSIsU3RyaW5nKCJ0bXMiPT09ZT9NYXRoLnBvdygyLHRoaXMueikt dGhpcy55LTE6dGhpcy55KSkucmVwbGFjZSgie3F1YWRrZXl9IixsKS5yZXBs YWNlKCJ7YmJveC1lcHNnLTM4NTd9IixzKX0sSWwucHJvdG90eXBlLmdldFRp bGVQb2ludD1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLnBvdygyLHRoaXMueik7 cmV0dXJuIG5ldyBhKCh0LngqZS10aGlzLngpKmVpLCh0LnkqZS10aGlzLnkp KmVpKX07dmFyIERsPWZ1bmN0aW9uKHQsZSl7dGhpcy53cmFwPXQsdGhpcy5j YW5vbmljYWw9ZSx0aGlzLmtleT1GbCh0LGUueixlLngsZS55KX0sUmw9ZnVu Y3Rpb24odCxlLHIsbixhKXt0aGlzLm92ZXJzY2FsZWRaPXQsdGhpcy53cmFw PWUsdGhpcy5jYW5vbmljYWw9bmV3IElsKHIsK24sK2EpLHRoaXMua2V5PUZs KGUsdCxuLGEpfTtmdW5jdGlvbiBGbCh0LGUscixuKXsodCo9Mik8MCYmKHQ9 LTEqdC0xKTt2YXIgYT0xPDxlO3JldHVybiAzMiooYSphKnQrYSpuK3IpK2V9 UmwucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5v dmVyc2NhbGVkWj09PXQub3ZlcnNjYWxlZFomJnRoaXMud3JhcD09PXQud3Jh cCYmdGhpcy5jYW5vbmljYWwuZXF1YWxzKHQuY2Fub25pY2FsKX0sUmwucHJv dG90eXBlLnNjYWxlZFRvPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2Fub25p Y2FsLnotdDtyZXR1cm4gdD50aGlzLmNhbm9uaWNhbC56P25ldyBSbCh0LHRo aXMud3JhcCx0aGlzLmNhbm9uaWNhbC56LHRoaXMuY2Fub25pY2FsLngsdGhp cy5jYW5vbmljYWwueSk6bmV3IFJsKHQsdGhpcy53cmFwLHQsdGhpcy5jYW5v bmljYWwueD4+ZSx0aGlzLmNhbm9uaWNhbC55Pj5lKX0sUmwucHJvdG90eXBl LmlzQ2hpbGRPZj1mdW5jdGlvbih0KXtpZih0LndyYXAhPT10aGlzLndyYXAp cmV0dXJuITE7dmFyIGU9dGhpcy5jYW5vbmljYWwuei10LmNhbm9uaWNhbC56 O3JldHVybiAwPT09dC5vdmVyc2NhbGVkWnx8dC5vdmVyc2NhbGVkWjx0aGlz Lm92ZXJzY2FsZWRaJiZ0LmNhbm9uaWNhbC54PT09dGhpcy5jYW5vbmljYWwu eD4+ZSYmdC5jYW5vbmljYWwueT09PXRoaXMuY2Fub25pY2FsLnk+PmV9LFJs LnByb3RvdHlwZS5jaGlsZHJlbj1mdW5jdGlvbih0KXtpZih0aGlzLm92ZXJz Y2FsZWRaPj10KXJldHVybltuZXcgUmwodGhpcy5vdmVyc2NhbGVkWisxLHRo aXMud3JhcCx0aGlzLmNhbm9uaWNhbC56LHRoaXMuY2Fub25pY2FsLngsdGhp cy5jYW5vbmljYWwueSldO3ZhciBlPXRoaXMuY2Fub25pY2FsLnorMSxyPTIq dGhpcy5jYW5vbmljYWwueCxuPTIqdGhpcy5jYW5vbmljYWwueTtyZXR1cm5b bmV3IFJsKGUsdGhpcy53cmFwLGUscixuKSxuZXcgUmwoZSx0aGlzLndyYXAs ZSxyKzEsbiksbmV3IFJsKGUsdGhpcy53cmFwLGUscixuKzEpLG5ldyBSbChl LHRoaXMud3JhcCxlLHIrMSxuKzEpXX0sUmwucHJvdG90eXBlLmlzTGVzc1Ro YW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud3JhcDx0LndyYXB8fCEodGhp cy53cmFwPnQud3JhcCkmJih0aGlzLm92ZXJzY2FsZWRaPHQub3ZlcnNjYWxl ZFp8fCEodGhpcy5vdmVyc2NhbGVkWj50Lm92ZXJzY2FsZWRaKSYmKHRoaXMu Y2Fub25pY2FsLng8dC5jYW5vbmljYWwueHx8ISh0aGlzLmNhbm9uaWNhbC54 PnQuY2Fub25pY2FsLngpJiZ0aGlzLmNhbm9uaWNhbC55PHQuY2Fub25pY2Fs LnkpKX0sUmwucHJvdG90eXBlLndyYXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4g bmV3IFJsKHRoaXMub3ZlcnNjYWxlZFosMCx0aGlzLmNhbm9uaWNhbC56LHRo aXMuY2Fub25pY2FsLngsdGhpcy5jYW5vbmljYWwueSl9LFJsLnByb3RvdHlw ZS51bndyYXBUbz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFJsKHRoaXMub3Zl cnNjYWxlZFosdCx0aGlzLmNhbm9uaWNhbC56LHRoaXMuY2Fub25pY2FsLngs dGhpcy5jYW5vbmljYWwueSl9LFJsLnByb3RvdHlwZS5vdmVyc2NhbGVGYWN0 b3I9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5wb3coMix0aGlzLm92ZXJzY2Fs ZWRaLXRoaXMuY2Fub25pY2FsLnopfSxSbC5wcm90b3R5cGUudG9VbndyYXBw ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERsKHRoaXMud3JhcCx0aGlzLmNh bm9uaWNhbCl9LFJsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLm92ZXJzY2FsZWRaKyIvIit0aGlzLmNhbm9uaWNhbC54KyIv Iit0aGlzLmNhbm9uaWNhbC55fSxSbC5wcm90b3R5cGUuZ2V0VGlsZVBvaW50 PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhbm9uaWNhbC5nZXRUaWxlUG9p bnQobmV3IHpsKHQueC10aGlzLndyYXAsdC55KSl9LGRuKCJDYW5vbmljYWxU aWxlSUQiLElsKSxkbigiT3ZlcnNjYWxlZFRpbGVJRCIsUmwse29taXQ6WyJw b3NNYXRyaXgiXX0pO3ZhciBCbD1mdW5jdGlvbih0LGUscil7aWYodGhpcy51 aWQ9dCxlLmhlaWdodCE9PWUud2lkdGgpdGhyb3cgbmV3IFJhbmdlRXJyb3Io IkRFTSB0aWxlcyBtdXN0IGJlIHNxdWFyZSIpO2lmKHImJiJtYXBib3giIT09 ciYmInRlcnJhcml1bSIhPT1yKXJldHVybiB3KCciJytyKyciIGlzIG5vdCBh IHZhbGlkIGVuY29kaW5nIHR5cGUuIFZhbGlkIHR5cGVzIGluY2x1ZGUgIm1h cGJveCIgYW5kICJ0ZXJyYXJpdW0iLicpO3ZhciBuPXRoaXMuZGltPWUuaGVp Z2h0O3RoaXMuc3RyaWRlPXRoaXMuZGltKzIsdGhpcy5kYXRhPW5ldyBJbnQz MkFycmF5KHRoaXMuc3RyaWRlKnRoaXMuc3RyaWRlKTtmb3IodmFyIGE9ZS5k YXRhLGk9InRlcnJhcml1bSI9PT1yP3RoaXMuX3VucGFja1RlcnJhcml1bTp0 aGlzLl91bnBhY2tNYXBib3gsbz0wO288bjtvKyspZm9yKHZhciBzPTA7czxu O3MrKyl7dmFyIGw9NCoobypuK3MpO3RoaXMuc2V0KHMsbyxpKGFbbF0sYVts KzFdLGFbbCsyXSkpfWZvcih2YXIgYz0wO2M8bjtjKyspdGhpcy5zZXQoLTEs Yyx0aGlzLmdldCgwLGMpKSx0aGlzLnNldChuLGMsdGhpcy5nZXQobi0xLGMp KSx0aGlzLnNldChjLC0xLHRoaXMuZ2V0KGMsMCkpLHRoaXMuc2V0KGMsbix0 aGlzLmdldChjLG4tMSkpO3RoaXMuc2V0KC0xLC0xLHRoaXMuZ2V0KDAsMCkp LHRoaXMuc2V0KG4sLTEsdGhpcy5nZXQobi0xLDApKSx0aGlzLnNldCgtMSxu LHRoaXMuZ2V0KDAsbi0xKSksdGhpcy5zZXQobixuLHRoaXMuZ2V0KG4tMSxu LTEpKX07QmwucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUscil7dGhpcy5k YXRhW3RoaXMuX2lkeCh0LGUpXT1yKzY1NTM2fSxCbC5wcm90b3R5cGUuZ2V0 PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGF0YVt0aGlzLl9pZHgodCxl KV0tNjU1MzZ9LEJsLnByb3RvdHlwZS5faWR4PWZ1bmN0aW9uKHQsZSl7aWYo dDwtMXx8dD49dGhpcy5kaW0rMXx8ZTwtMXx8ZT49dGhpcy5kaW0rMSl0aHJv dyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIHNvdXJjZSBjb29yZGlu YXRlcyBmb3IgREVNIGRhdGEiKTtyZXR1cm4oZSsxKSp0aGlzLnN0cmlkZSso dCsxKX0sQmwucHJvdG90eXBlLl91bnBhY2tNYXBib3g9ZnVuY3Rpb24odCxl LHIpe3JldHVybigyNTYqdCoyNTYrMjU2KmUrcikvMTAtMWU0fSxCbC5wcm90 b3R5cGUuX3VucGFja1RlcnJhcml1bT1mdW5jdGlvbih0LGUscil7cmV0dXJu IDI1Nip0K2Urci8yNTYtMzI3Njh9LEJsLnByb3RvdHlwZS5nZXRQaXhlbHM9 ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE9pKHt3aWR0aDp0aGlzLnN0cmlkZSxo ZWlnaHQ6dGhpcy5zdHJpZGV9LG5ldyBVaW50OEFycmF5KHRoaXMuZGF0YS5i dWZmZXIpKX0sQmwucHJvdG90eXBlLmJhY2tmaWxsQm9yZGVyPWZ1bmN0aW9u KHQsZSxyKXtpZih0aGlzLmRpbSE9PXQuZGltKXRocm93IG5ldyBFcnJvcigi ZGVtIGRpbWVuc2lvbiBtaXNtYXRjaCIpO3ZhciBuPWUqdGhpcy5kaW0sYT1l KnRoaXMuZGltK3RoaXMuZGltLGk9cip0aGlzLmRpbSxvPXIqdGhpcy5kaW0r dGhpcy5kaW07c3dpdGNoKGUpe2Nhc2UtMTpuPWEtMTticmVhaztjYXNlIDE6 YT1uKzF9c3dpdGNoKHIpe2Nhc2UtMTppPW8tMTticmVhaztjYXNlIDE6bz1p KzF9Zm9yKHZhciBzPS1lKnRoaXMuZGltLGw9LXIqdGhpcy5kaW0sYz1pO2M8 bztjKyspZm9yKHZhciB1PW47dTxhO3UrKyl0aGlzLnNldCh1LGMsdC5nZXQo dStzLGMrbCkpfSxkbigiREVNRGF0YSIsQmwpO3ZhciBObD1Kbihbe25hbWU6 ImFfcG9zIix0eXBlOiJJbnQxNiIsY29tcG9uZW50czoyfSx7bmFtZToiYV90 ZXh0dXJlX3BvcyIsdHlwZToiSW50MTYiLGNvbXBvbmVudHM6Mn1dKSxqbD1m dW5jdGlvbih0KXt0aGlzLl9zdHJpbmdUb051bWJlcj17fSx0aGlzLl9udW1i ZXJUb1N0cmluZz1bXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFy IHI9dFtlXTt0aGlzLl9zdHJpbmdUb051bWJlcltyXT1lLHRoaXMuX251bWJl clRvU3RyaW5nW2VdPXJ9fTtqbC5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9u KHQpe3JldHVybiB0aGlzLl9zdHJpbmdUb051bWJlclt0XX0samwucHJvdG90 eXBlLmRlY29kZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbnVtYmVyVG9T dHJpbmdbdF19O3ZhciBWbD1mdW5jdGlvbih0LGUscixuKXt0aGlzLnR5cGU9 IkZlYXR1cmUiLHRoaXMuX3ZlY3RvclRpbGVGZWF0dXJlPXQsdC5fej1lLHQu X3g9cix0Ll95PW4sdGhpcy5wcm9wZXJ0aWVzPXQucHJvcGVydGllcyxudWxs IT10LmlkJiYodGhpcy5pZD10LmlkKX0sVWw9e2dlb21ldHJ5Ontjb25maWd1 cmFibGU6ITB9fTtVbC5nZW9tZXRyeS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4g dm9pZCAwPT09dGhpcy5fZ2VvbWV0cnkmJih0aGlzLl9nZW9tZXRyeT10aGlz Ll92ZWN0b3JUaWxlRmVhdHVyZS50b0dlb0pTT04odGhpcy5fdmVjdG9yVGls ZUZlYXR1cmUuX3gsdGhpcy5fdmVjdG9yVGlsZUZlYXR1cmUuX3ksdGhpcy5f dmVjdG9yVGlsZUZlYXR1cmUuX3opLmdlb21ldHJ5KSx0aGlzLl9nZW9tZXRy eX0sVWwuZ2VvbWV0cnkuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX2dlb21ldHJ5 PXR9LFZsLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgdD17Z2Vv bWV0cnk6dGhpcy5nZW9tZXRyeX07Zm9yKHZhciBlIGluIHRoaXMpIl9nZW9t ZXRyeSIhPT1lJiYiX3ZlY3RvclRpbGVGZWF0dXJlIiE9PWUmJih0W2VdPXRo aXNbZV0pO3JldHVybiB0fSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWbC5w cm90b3R5cGUsVWwpO3ZhciBxbD1mdW5jdGlvbigpe3RoaXMuc3RhdGU9e30s dGhpcy5zdGF0ZUNoYW5nZXM9e30sdGhpcy5kZWxldGVkU3RhdGVzPXt9fTtx bC5wcm90b3R5cGUudXBkYXRlU3RhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBu PVN0cmluZyhlKTtpZih0aGlzLnN0YXRlQ2hhbmdlc1t0XT10aGlzLnN0YXRl Q2hhbmdlc1t0XXx8e30sdGhpcy5zdGF0ZUNoYW5nZXNbdF1bbl09dGhpcy5z dGF0ZUNoYW5nZXNbdF1bbl18fHt9LGgodGhpcy5zdGF0ZUNoYW5nZXNbdF1b bl0sciksbnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XSlmb3IodmFyIGEg aW4gdGhpcy5kZWxldGVkU3RhdGVzW3RdPXt9LHRoaXMuc3RhdGVbdF0pYSE9 PW4mJih0aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bYV09bnVsbCk7ZWxzZSBpZih0 aGlzLmRlbGV0ZWRTdGF0ZXNbdF0mJm51bGw9PT10aGlzLmRlbGV0ZWRTdGF0 ZXNbdF1bbl0pZm9yKHZhciBpIGluIHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtu XT17fSx0aGlzLnN0YXRlW3RdW25dKXJbaV18fCh0aGlzLmRlbGV0ZWRTdGF0 ZXNbdF1bbl1baV09bnVsbCk7ZWxzZSBmb3IodmFyIG8gaW4gcil0aGlzLmRl bGV0ZWRTdGF0ZXNbdF0mJnRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXSYmbnVs bD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVtvXSYmZGVsZXRlIHRoaXMu ZGVsZXRlZFN0YXRlc1t0XVtuXVtvXX0scWwucHJvdG90eXBlLnJlbW92ZUZl YXR1cmVTdGF0ZT1mdW5jdGlvbih0LGUscil7aWYobnVsbCE9PXRoaXMuZGVs ZXRlZFN0YXRlc1t0XSl7dmFyIG49U3RyaW5nKGUpO2lmKHRoaXMuZGVsZXRl ZFN0YXRlc1t0XT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF18fHt9LHImJnZvaWQg MCE9PWUmJmU+PTApbnVsbCE9PXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXSYm KHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXT10aGlzLmRlbGV0ZWRTdGF0ZXNb dF1bbl18fHt9LHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVtyXT1udWxsKTtl bHNlIGlmKHZvaWQgMCE9PWUmJmU+PTApaWYodGhpcy5zdGF0ZUNoYW5nZXNb dF0mJnRoaXMuc3RhdGVDaGFuZ2VzW3RdW25dKWZvcihyIGluIHRoaXMuZGVs ZXRlZFN0YXRlc1t0XVtuXT17fSx0aGlzLnN0YXRlQ2hhbmdlc1t0XVtuXSl0 aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bbl1bcl09bnVsbDtlbHNlIHRoaXMuZGVs ZXRlZFN0YXRlc1t0XVtuXT1udWxsO2Vsc2UgdGhpcy5kZWxldGVkU3RhdGVz W3RdPW51bGx9fSxxbC5wcm90b3R5cGUuZ2V0U3RhdGU9ZnVuY3Rpb24odCxl KXt2YXIgcj1TdHJpbmcoZSksbj10aGlzLnN0YXRlW3RdfHx7fSxhPXRoaXMu c3RhdGVDaGFuZ2VzW3RdfHx7fSxpPWgoe30sbltyXSxhW3JdKTtpZihudWxs PT09dGhpcy5kZWxldGVkU3RhdGVzW3RdKXJldHVybnt9O2lmKHRoaXMuZGVs ZXRlZFN0YXRlc1t0XSl7dmFyIG89dGhpcy5kZWxldGVkU3RhdGVzW3RdW2Vd O2lmKG51bGw9PT1vKXJldHVybnt9O2Zvcih2YXIgcyBpbiBvKWRlbGV0ZSBp W3NdfXJldHVybiBpfSxxbC5wcm90b3R5cGUuaW5pdGlhbGl6ZVRpbGVTdGF0 ZT1mdW5jdGlvbih0LGUpe3Quc2V0RmVhdHVyZVN0YXRlKHRoaXMuc3RhdGUs ZSl9LHFsLnByb3RvdHlwZS5jb2FsZXNjZUNoYW5nZXM9ZnVuY3Rpb24odCxl KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gdGhpcy5zdGF0ZUNoYW5nZXMpe3Ro aXMuc3RhdGVbbl09dGhpcy5zdGF0ZVtuXXx8e307dmFyIGE9e307Zm9yKHZh ciBpIGluIHRoaXMuc3RhdGVDaGFuZ2VzW25dKXRoaXMuc3RhdGVbbl1baV18 fCh0aGlzLnN0YXRlW25dW2ldPXt9KSxoKHRoaXMuc3RhdGVbbl1baV0sdGhp cy5zdGF0ZUNoYW5nZXNbbl1baV0pLGFbaV09dGhpcy5zdGF0ZVtuXVtpXTty W25dPWF9Zm9yKHZhciBvIGluIHRoaXMuZGVsZXRlZFN0YXRlcyl7dGhpcy5z dGF0ZVtvXT10aGlzLnN0YXRlW29dfHx7fTt2YXIgcz17fTtpZihudWxsPT09 dGhpcy5kZWxldGVkU3RhdGVzW29dKWZvcih2YXIgbCBpbiB0aGlzLnN0YXRl W29dKXNbbF09e30sdGhpcy5zdGF0ZVtvXVtsXT17fTtlbHNlIGZvcih2YXIg YyBpbiB0aGlzLmRlbGV0ZWRTdGF0ZXNbb10pe2lmKG51bGw9PT10aGlzLmRl bGV0ZWRTdGF0ZXNbb11bY10pdGhpcy5zdGF0ZVtvXVtjXT17fTtlbHNlIGZv cih2YXIgdT0wLGY9T2JqZWN0LmtleXModGhpcy5kZWxldGVkU3RhdGVzW29d W2NdKTt1PGYubGVuZ3RoO3UrPTEpe3ZhciBwPWZbdV07ZGVsZXRlIHRoaXMu c3RhdGVbb11bY11bcF19c1tjXT10aGlzLnN0YXRlW29dW2NdfXJbb109cltv XXx8e30saChyW29dLHMpfWlmKHRoaXMuc3RhdGVDaGFuZ2VzPXt9LHRoaXMu ZGVsZXRlZFN0YXRlcz17fSwwIT09T2JqZWN0LmtleXMocikubGVuZ3RoKWZv cih2YXIgZCBpbiB0KXRbZF0uc2V0RmVhdHVyZVN0YXRlKHIsZSl9O3ZhciBI bD1mdW5jdGlvbih0LGUscil7dGhpcy50aWxlSUQ9dCx0aGlzLng9dC5jYW5v bmljYWwueCx0aGlzLnk9dC5jYW5vbmljYWwueSx0aGlzLno9dC5jYW5vbmlj YWwueix0aGlzLmdyaWQ9ZXx8bmV3IGNuKGVpLDE2LDApLHRoaXMuZ3JpZDNE PW5ldyBjbihlaSwxNiwwKSx0aGlzLmZlYXR1cmVJbmRleEFycmF5PXJ8fG5l dyBDYX07ZnVuY3Rpb24gR2wodCl7Zm9yKHZhciBlPTEvMCxyPTEvMCxuPS0x LzAsYT0tMS8wLGk9MCxvPXQ7aTxvLmxlbmd0aDtpKz0xKXt2YXIgcz1vW2ld O2U9TWF0aC5taW4oZSxzLngpLHI9TWF0aC5taW4ocixzLnkpLG49TWF0aC5t YXgobixzLngpLGE9TWF0aC5tYXgoYSxzLnkpfXJldHVybnttaW5YOmUsbWlu WTpyLG1heFg6bixtYXhZOmF9fWZ1bmN0aW9uIFlsKHQsZSl7cmV0dXJuIGUt dH1IbC5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2 YXIgbz10aGlzLmZlYXR1cmVJbmRleEFycmF5Lmxlbmd0aDt0aGlzLmZlYXR1 cmVJbmRleEFycmF5LmVtcGxhY2VCYWNrKHIsbixhKTtmb3IodmFyIHM9aT90 aGlzLmdyaWQzRDp0aGlzLmdyaWQsbD0wO2w8ZS5sZW5ndGg7bCsrKXtmb3Io dmFyIGM9ZVtsXSx1PVsxLzAsMS8wLC0xLzAsLTEvMF0saD0wO2g8Yy5sZW5n dGg7aCsrKXt2YXIgZj1jW2hdO3VbMF09TWF0aC5taW4odVswXSxmLngpLHVb MV09TWF0aC5taW4odVsxXSxmLnkpLHVbMl09TWF0aC5tYXgodVsyXSxmLngp LHVbM109TWF0aC5tYXgodVszXSxmLnkpfXVbMF08ZWkmJnVbMV08ZWkmJnVb Ml0+PTAmJnVbM10+PTAmJnMuaW5zZXJ0KG8sdVswXSx1WzFdLHVbMl0sdVsz XSl9fSxIbC5wcm90b3R5cGUubG9hZFZUTGF5ZXJzPWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMudnRMYXllcnN8fCh0aGlzLnZ0TGF5ZXJzPW5ldyBJby5WZWN0 b3JUaWxlKG5ldyB0bCh0aGlzLnJhd1RpbGVEYXRhKSkubGF5ZXJzLHRoaXMu c291cmNlTGF5ZXJDb2Rlcj1uZXcgamwodGhpcy52dExheWVycz9PYmplY3Qu a2V5cyh0aGlzLnZ0TGF5ZXJzKS5zb3J0KCk6WyJfZ2VvanNvblRpbGVMYXll ciJdKSksdGhpcy52dExheWVyc30sSGwucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0 aW9uKHQsZSxyKXt2YXIgbj10aGlzO3RoaXMubG9hZFZUTGF5ZXJzKCk7Zm9y KHZhciBpPXQucGFyYW1zfHx7fSxvPWVpL3QudGlsZVNpemUvdC5zY2FsZSxz PVJyKGkuZmlsdGVyKSxsPXQucXVlcnlHZW9tZXRyeSxjPXQucXVlcnlQYWRk aW5nKm8sdT1HbChsKSxoPXRoaXMuZ3JpZC5xdWVyeSh1Lm1pblgtYyx1Lm1p blktYyx1Lm1heFgrYyx1Lm1heFkrYyksZj1HbCh0LmNhbWVyYVF1ZXJ5R2Vv bWV0cnkpLHA9MCxkPXRoaXMuZ3JpZDNELnF1ZXJ5KGYubWluWC1jLGYubWlu WS1jLGYubWF4WCtjLGYubWF4WStjLGZ1bmN0aW9uKGUscixuLGkpe3JldHVy biBmdW5jdGlvbih0LGUscixuLGkpe2Zvcih2YXIgbz0wLHM9dDtvPHMubGVu Z3RoO28rPTEpe3ZhciBsPXNbb107aWYoZTw9bC54JiZyPD1sLnkmJm4+PWwu eCYmaT49bC55KXJldHVybiEwfXZhciBjPVtuZXcgYShlLHIpLG5ldyBhKGUs aSksbmV3IGEobixpKSxuZXcgYShuLHIpXTtpZih0Lmxlbmd0aD4yKWZvcih2 YXIgdT0wLGg9Yzt1PGgubGVuZ3RoO3UrPTEpaWYoZ2kodCxoW3VdKSlyZXR1 cm4hMDtmb3IodmFyIGY9MDtmPHQubGVuZ3RoLTE7ZisrKWlmKHZpKHRbZl0s dFtmKzFdLGMpKXJldHVybiEwO3JldHVybiExfSh0LmNhbWVyYVF1ZXJ5R2Vv bWV0cnksZS1jLHItYyxuK2MsaStjKX0pO3A8ZC5sZW5ndGg7cCs9MSl7dmFy IGc9ZFtwXTtoLnB1c2goZyl9aC5zb3J0KFlsKTtmb3IodmFyIHYsbT17fSx5 PWZ1bmN0aW9uKGEpe3ZhciBjPWhbYV07aWYoYyE9PXYpe3Y9Yzt2YXIgdT1u LmZlYXR1cmVJbmRleEFycmF5LmdldChjKSxmPW51bGw7bi5sb2FkTWF0Y2hp bmdGZWF0dXJlKG0sdS5idWNrZXRJbmRleCx1LnNvdXJjZUxheWVySW5kZXgs dS5mZWF0dXJlSW5kZXgscyxpLmxheWVycyxlLGZ1bmN0aW9uKGUsYSl7Znx8 KGY9bmkoZSkpO3ZhciBpPXt9O3JldHVybiBlLmlkJiYoaT1yLmdldFN0YXRl KGEuc291cmNlTGF5ZXJ8fCJfZ2VvanNvblRpbGVMYXllciIsZS5pZCkpLGEu cXVlcnlJbnRlcnNlY3RzRmVhdHVyZShsLGUsaSxmLG4ueix0LnRyYW5zZm9y bSxvLHQucGl4ZWxQb3NNYXRyaXgpfSl9fSx4PTA7eDxoLmxlbmd0aDt4Kysp eSh4KTtyZXR1cm4gbX0sSGwucHJvdG90eXBlLmxvYWRNYXRjaGluZ0ZlYXR1 cmU9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzKXt2YXIgbD10aGlzLmJ1Y2tl dExheWVySURzW2VdO2lmKCFpfHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0w O3I8dC5sZW5ndGg7cisrKWlmKGUuaW5kZXhPZih0W3JdKT49MClyZXR1cm4h MDtyZXR1cm4hMX0oaSxsKSl7dmFyIGM9dGhpcy5zb3VyY2VMYXllckNvZGVy LmRlY29kZShyKSx1PXRoaXMudnRMYXllcnNbY10uZmVhdHVyZShuKTtpZihh KG5ldyBQbih0aGlzLnRpbGVJRC5vdmVyc2NhbGVkWiksdSkpZm9yKHZhciBo PTA7aDxsLmxlbmd0aDtoKyspe3ZhciBmPWxbaF07aWYoIShpJiZpLmluZGV4 T2YoZik8MCkpe3ZhciBwPW9bZl07aWYocCl7dmFyIGQ9IXN8fHModSxwKTtp ZihkKXt2YXIgZz1uZXcgVmwodSx0aGlzLnosdGhpcy54LHRoaXMueSk7Zy5s YXllcj1wLnNlcmlhbGl6ZSgpO3ZhciB2PXRbZl07dm9pZCAwPT09diYmKHY9 dFtmXT1bXSksdi5wdXNoKHtmZWF0dXJlSW5kZXg6bixmZWF0dXJlOmcsaW50 ZXJzZWN0aW9uWjpkfSl9fX19fX0sSGwucHJvdG90eXBlLmxvb2t1cFN5bWJv bEZlYXR1cmVzPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbz17fTt0aGlz LmxvYWRWVExheWVycygpO2Zvcih2YXIgcz1ScihuKSxsPTAsYz10O2w8Yy5s ZW5ndGg7bCs9MSl7dmFyIHU9Y1tsXTt0aGlzLmxvYWRNYXRjaGluZ0ZlYXR1 cmUobyxlLHIsdSxzLGEsaSl9cmV0dXJuIG99LEhsLnByb3RvdHlwZS5oYXNM YXllcj1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXRoaXMuYnVja2V0TGF5 ZXJJRHM7ZTxyLmxlbmd0aDtlKz0xKWZvcih2YXIgbj0wLGE9cltlXTtuPGEu bGVuZ3RoO24rPTEpaWYodD09PWFbbl0pcmV0dXJuITA7cmV0dXJuITF9LGRu KCJGZWF0dXJlSW5kZXgiLEhsLHtvbWl0OlsicmF3VGlsZURhdGEiLCJzb3Vy Y2VMYXllckNvZGVyIl19KTt2YXIgV2w9ZnVuY3Rpb24odCxlKXt0aGlzLnRp bGVJRD10LHRoaXMudWlkPXAoKSx0aGlzLnVzZXM9MCx0aGlzLnRpbGVTaXpl PWUsdGhpcy5idWNrZXRzPXt9LHRoaXMuZXhwaXJhdGlvblRpbWU9bnVsbCx0 aGlzLnF1ZXJ5UGFkZGluZz0wLHRoaXMuaGFzU3ltYm9sQnVja2V0cz0hMSx0 aGlzLmV4cGlyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLnN0YXRlPSJsb2FkaW5n In07ZnVuY3Rpb24gWGwodCxlLHIsbixhKXtpZih2b2lkIDA9PT1lLnNlZ21l bnQpcmV0dXJuITA7Zm9yKHZhciBpPWUsbz1lLnNlZ21lbnQrMSxzPTA7cz4t ci8yOyl7aWYoLS1vPDApcmV0dXJuITE7cy09dFtvXS5kaXN0KGkpLGk9dFtv XX1zKz10W29dLmRpc3QodFtvKzFdKSxvKys7Zm9yKHZhciBsPVtdLGM9MDtz PHIvMjspe3ZhciB1PXRbby0xXSxoPXRbb10sZj10W28rMV07aWYoIWYpcmV0 dXJuITE7dmFyIHA9dS5hbmdsZVRvKGgpLWguYW5nbGVUbyhmKTtmb3IocD1N YXRoLmFicygocCszKk1hdGguUEkpJSgyKk1hdGguUEkpLU1hdGguUEkpLGwu cHVzaCh7ZGlzdGFuY2U6cyxhbmdsZURlbHRhOnB9KSxjKz1wO3MtbFswXS5k aXN0YW5jZT5uOyljLT1sLnNoaWZ0KCkuYW5nbGVEZWx0YTtpZihjPmEpcmV0 dXJuITE7bysrLHMrPWguZGlzdChmKX1yZXR1cm4hMH1mdW5jdGlvbiBabCh0 KXtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aC0xO3IrKyllKz10W3JdLmRp c3QodFtyKzFdKTtyZXR1cm4gZX1mdW5jdGlvbiBKbCh0LGUscil7cmV0dXJu IHQ/LjYqZSpyOjB9ZnVuY3Rpb24gS2wodCxlKXtyZXR1cm4gTWF0aC5tYXgo dD90LnJpZ2h0LXQubGVmdDowLGU/ZS5yaWdodC1lLmxlZnQ6MCl9ZnVuY3Rp b24gUWwodCxlLHIsbixhLGkpe2Zvcih2YXIgbz1KbChyLGEsaSkscz1LbChy LG4pKmksbD0wLGM9WmwodCkvMix1PTA7dTx0Lmxlbmd0aC0xO3UrKyl7dmFy IGg9dFt1XSxmPXRbdSsxXSxwPWguZGlzdChmKTtpZihsK3A+Yyl7dmFyIGQ9 KGMtbCkvcCxnPXllKGgueCxmLngsZCksdj15ZShoLnksZi55LGQpLG09bmV3 IGJzKGcsdixmLmFuZ2xlVG8oaCksdSk7cmV0dXJuIG0uX3JvdW5kKCksIW98 fFhsKHQsbSxzLG8sZSk/bTp2b2lkIDB9bCs9cH19ZnVuY3Rpb24gJGwodCxl LHIsbixhLGksbyxzLGwpe3ZhciBjPUpsKG4saSxvKSx1PUtsKG4sYSksaD11 Km8sZj0wPT09dFswXS54fHx0WzBdLng9PT1sfHwwPT09dFswXS55fHx0WzBd Lnk9PT1sO3JldHVybiBlLWg8ZS80JiYoZT1oK2UvNCksZnVuY3Rpb24gdChl LHIsbixhLGksbyxzLGwsYyl7Zm9yKHZhciB1PW8vMixoPVpsKGUpLGY9MCxw PXItbixkPVtdLGc9MDtnPGUubGVuZ3RoLTE7ZysrKXtmb3IodmFyIHY9ZVtn XSxtPWVbZysxXSx5PXYuZGlzdChtKSx4PW0uYW5nbGVUbyh2KTtwK248Zit5 Oyl7dmFyIGI9KChwKz1uKS1mKS95LF89eWUodi54LG0ueCxiKSx3PXllKHYu eSxtLnksYik7aWYoXz49MCYmXzxjJiZ3Pj0wJiZ3PGMmJnAtdT49MCYmcCt1 PD1oKXt2YXIgaz1uZXcgYnMoXyx3LHgsZyk7ay5fcm91bmQoKSxhJiYhWGwo ZSxrLG8sYSxpKXx8ZC5wdXNoKGspfX1mKz15fXJldHVybiBsfHxkLmxlbmd0 aHx8c3x8KGQ9dChlLGYvMixuLGEsaSxvLHMsITAsYykpLGR9KHQsZj9lLzIq cyVlOih1LzIrMippKSpvKnMlZSxlLGMscixoLGYsITEsbCl9V2wucHJvdG90 eXBlLnJlZ2lzdGVyRmFkZUR1cmF0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXQr dGhpcy50aW1lQWRkZWQ7ZTxJLm5vdygpfHx0aGlzLmZhZGVFbmRUaW1lJiZl PHRoaXMuZmFkZUVuZFRpbWV8fCh0aGlzLmZhZGVFbmRUaW1lPWUpfSxXbC5w cm90b3R5cGUud2FzUmVxdWVzdGVkPWZ1bmN0aW9uKCl7cmV0dXJuImVycm9y ZWQiPT09dGhpcy5zdGF0ZXx8ImxvYWRlZCI9PT10aGlzLnN0YXRlfHwicmVs b2FkaW5nIj09PXRoaXMuc3RhdGV9LFdsLnByb3RvdHlwZS5sb2FkVmVjdG9y RGF0YT1mdW5jdGlvbih0LGUscil7aWYodGhpcy5oYXNEYXRhKCkmJnRoaXMu dW5sb2FkVmVjdG9yRGF0YSgpLHRoaXMuc3RhdGU9ImxvYWRlZCIsdCl7Zm9y KHZhciBuIGluIHQuZmVhdHVyZUluZGV4JiYodGhpcy5sYXRlc3RGZWF0dXJl SW5kZXg9dC5mZWF0dXJlSW5kZXgsdC5yYXdUaWxlRGF0YT8odGhpcy5sYXRl c3RSYXdUaWxlRGF0YT10LnJhd1RpbGVEYXRhLHRoaXMubGF0ZXN0RmVhdHVy ZUluZGV4LnJhd1RpbGVEYXRhPXQucmF3VGlsZURhdGEpOnRoaXMubGF0ZXN0 UmF3VGlsZURhdGEmJih0aGlzLmxhdGVzdEZlYXR1cmVJbmRleC5yYXdUaWxl RGF0YT10aGlzLmxhdGVzdFJhd1RpbGVEYXRhKSksdGhpcy5jb2xsaXNpb25C b3hBcnJheT10LmNvbGxpc2lvbkJveEFycmF5LHRoaXMuYnVja2V0cz1mdW5j dGlvbih0LGUpe3ZhciByPXt9O2lmKCFlKXJldHVybiByO2Zvcih2YXIgbj1m dW5jdGlvbigpe3ZhciB0PWlbYV0sbj10LmxheWVySWRzLm1hcChmdW5jdGlv bih0KXtyZXR1cm4gZS5nZXRMYXllcih0KX0pLmZpbHRlcihCb29sZWFuKTtp ZigwIT09bi5sZW5ndGgpe3QubGF5ZXJzPW4sdC5zdGF0ZURlcGVuZGVudExh eWVySWRzJiYodC5zdGF0ZURlcGVuZGVudExheWVycz10LnN0YXRlRGVwZW5k ZW50TGF5ZXJJZHMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuLmZpbHRlcihm dW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXR9KVswXX0pKTtmb3IodmFyIG89 MCxzPW47bzxzLmxlbmd0aDtvKz0xKXt2YXIgbD1zW29dO3JbbC5pZF09dH19 fSxhPTAsaT10O2E8aS5sZW5ndGg7YSs9MSluKCk7cmV0dXJuIHJ9KHQuYnVj a2V0cyxlLnN0eWxlKSx0aGlzLmhhc1N5bWJvbEJ1Y2tldHM9ITEsdGhpcy5i dWNrZXRzKXt2YXIgYT10aGlzLmJ1Y2tldHNbbl07aWYoYSBpbnN0YW5jZW9m IE9zKXtpZih0aGlzLmhhc1N5bWJvbEJ1Y2tldHM9ITAsIXIpYnJlYWs7YS5q dXN0UmVsb2FkZWQ9ITB9fWZvcih2YXIgaSBpbiB0aGlzLnF1ZXJ5UGFkZGlu Zz0wLHRoaXMuYnVja2V0cyl7dmFyIG89dGhpcy5idWNrZXRzW2ldO3RoaXMu cXVlcnlQYWRkaW5nPU1hdGgubWF4KHRoaXMucXVlcnlQYWRkaW5nLGUuc3R5 bGUuZ2V0TGF5ZXIoaSkucXVlcnlSYWRpdXMobykpfXQuaW1hZ2VBdGxhcyYm KHRoaXMuaW1hZ2VBdGxhcz10LmltYWdlQXRsYXMpLHQuZ2x5cGhBdGxhc0lt YWdlJiYodGhpcy5nbHlwaEF0bGFzSW1hZ2U9dC5nbHlwaEF0bGFzSW1hZ2Up fWVsc2UgdGhpcy5jb2xsaXNpb25Cb3hBcnJheT1uZXcgYmF9LFdsLnByb3Rv dHlwZS51bmxvYWRWZWN0b3JEYXRhPWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGlu IHRoaXMuYnVja2V0cyl0aGlzLmJ1Y2tldHNbdF0uZGVzdHJveSgpO3RoaXMu YnVja2V0cz17fSx0aGlzLmltYWdlQXRsYXNUZXh0dXJlJiZ0aGlzLmltYWdl QXRsYXNUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLmltYWdlQXRsYXMmJih0aGlz LmltYWdlQXRsYXM9bnVsbCksdGhpcy5nbHlwaEF0bGFzVGV4dHVyZSYmdGhp cy5nbHlwaEF0bGFzVGV4dHVyZS5kZXN0cm95KCksdGhpcy5sYXRlc3RGZWF0 dXJlSW5kZXg9bnVsbCx0aGlzLnN0YXRlPSJ1bmxvYWRlZCJ9LFdsLnByb3Rv dHlwZS51bmxvYWRERU1EYXRhPWZ1bmN0aW9uKCl7dGhpcy5kZW09bnVsbCx0 aGlzLm5laWdoYm9yaW5nVGlsZXM9bnVsbCx0aGlzLnN0YXRlPSJ1bmxvYWRl ZCJ9LFdsLnByb3RvdHlwZS5nZXRCdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMuYnVja2V0c1t0LmlkXX0sV2wucHJvdG90eXBlLnVwbG9hZD1mdW5j dGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcy5idWNrZXRzKXt2YXIgcj10aGlz LmJ1Y2tldHNbZV07ci51cGxvYWRQZW5kaW5nKCkmJnIudXBsb2FkKHQpfXZh ciBuPXQuZ2w7dGhpcy5pbWFnZUF0bGFzJiYhdGhpcy5pbWFnZUF0bGFzLnVw bG9hZGVkJiYodGhpcy5pbWFnZUF0bGFzVGV4dHVyZT1uZXcgS3ModCx0aGlz LmltYWdlQXRsYXMuaW1hZ2Usbi5SR0JBKSx0aGlzLmltYWdlQXRsYXMudXBs b2FkZWQ9ITApLHRoaXMuZ2x5cGhBdGxhc0ltYWdlJiYodGhpcy5nbHlwaEF0 bGFzVGV4dHVyZT1uZXcgS3ModCx0aGlzLmdseXBoQXRsYXNJbWFnZSxuLkFM UEhBKSx0aGlzLmdseXBoQXRsYXNJbWFnZT1udWxsKX0sV2wucHJvdG90eXBl LnByZXBhcmU9ZnVuY3Rpb24odCl7dGhpcy5pbWFnZUF0bGFzJiZ0aGlzLmlt YWdlQXRsYXMucGF0Y2hVcGRhdGVkSW1hZ2VzKHQsdGhpcy5pbWFnZUF0bGFz VGV4dHVyZSl9LFdsLnByb3RvdHlwZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXM9 ZnVuY3Rpb24odCxlLHIsbixhLGksbyxzLGwpe3JldHVybiB0aGlzLmxhdGVz dEZlYXR1cmVJbmRleCYmdGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgucmF3VGls ZURhdGE/dGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgucXVlcnkoe3F1ZXJ5R2Vv bWV0cnk6cixjYW1lcmFRdWVyeUdlb21ldHJ5Om4sc2NhbGU6YSx0aWxlU2l6 ZTp0aGlzLnRpbGVTaXplLHBpeGVsUG9zTWF0cml4OmwsdHJhbnNmb3JtOm8s cGFyYW1zOmkscXVlcnlQYWRkaW5nOnRoaXMucXVlcnlQYWRkaW5nKnN9LHQs ZSk6e319LFdsLnByb3RvdHlwZS5xdWVyeVNvdXJjZUZlYXR1cmVzPWZ1bmN0 aW9uKHQsZSl7aWYodGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgmJnRoaXMubGF0 ZXN0RmVhdHVyZUluZGV4LnJhd1RpbGVEYXRhKXt2YXIgcj10aGlzLmxhdGVz dEZlYXR1cmVJbmRleC5sb2FkVlRMYXllcnMoKSxuPWU/ZS5zb3VyY2VMYXll cjoiIixhPXIuX2dlb2pzb25UaWxlTGF5ZXJ8fHJbbl07aWYoYSlmb3IodmFy IGk9UnIoZSYmZS5maWx0ZXIpLG89dGhpcy50aWxlSUQuY2Fub25pY2FsLHM9 by56LGw9by54LGM9by55LHU9e3o6cyx4OmwseTpjfSxoPTA7aDxhLmxlbmd0 aDtoKyspe3ZhciBmPWEuZmVhdHVyZShoKTtpZihpKG5ldyBQbih0aGlzLnRp bGVJRC5vdmVyc2NhbGVkWiksZikpe3ZhciBwPW5ldyBWbChmLHMsbCxjKTtw LnRpbGU9dSx0LnB1c2gocCl9fX19LFdsLnByb3RvdHlwZS5jbGVhck1hc2s9 ZnVuY3Rpb24oKXt0aGlzLnNlZ21lbnRzJiYodGhpcy5zZWdtZW50cy5kZXN0 cm95KCksZGVsZXRlIHRoaXMuc2VnbWVudHMpLHRoaXMubWFza2VkQm91bmRz QnVmZmVyJiYodGhpcy5tYXNrZWRCb3VuZHNCdWZmZXIuZGVzdHJveSgpLGRl bGV0ZSB0aGlzLm1hc2tlZEJvdW5kc0J1ZmZlciksdGhpcy5tYXNrZWRJbmRl eEJ1ZmZlciYmKHRoaXMubWFza2VkSW5kZXhCdWZmZXIuZGVzdHJveSgpLGRl bGV0ZSB0aGlzLm1hc2tlZEluZGV4QnVmZmVyKX0sV2wucHJvdG90eXBlLnNl dE1hc2s9ZnVuY3Rpb24odCxlKXtpZighbyh0aGlzLm1hc2ssdCkmJih0aGlz Lm1hc2s9dCx0aGlzLmNsZWFyTWFzaygpLCFvKHQsezA6ITB9KSkpe3ZhciBy PW5ldyAkbixuPW5ldyBkYTt0aGlzLnNlZ21lbnRzPW5ldyBPYSx0aGlzLnNl Z21lbnRzLnByZXBhcmVTZWdtZW50KDAscixuKTtmb3IodmFyIGk9T2JqZWN0 LmtleXModCkscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgbD10WytpW3NdXSxj PWVpPj5sLnosdT1uZXcgYShsLngqYyxsLnkqYyksaD1uZXcgYSh1LngrYyx1 LnkrYyksZj10aGlzLnNlZ21lbnRzLnByZXBhcmVTZWdtZW50KDQscixuKTty LmVtcGxhY2VCYWNrKHUueCx1LnksdS54LHUueSksci5lbXBsYWNlQmFjayho LngsdS55LGgueCx1LnkpLHIuZW1wbGFjZUJhY2sodS54LGgueSx1LngsaC55 KSxyLmVtcGxhY2VCYWNrKGgueCxoLnksaC54LGgueSk7dmFyIHA9Zi52ZXJ0 ZXhMZW5ndGg7bi5lbXBsYWNlQmFjayhwLHArMSxwKzIpLG4uZW1wbGFjZUJh Y2socCsxLHArMixwKzMpLGYudmVydGV4TGVuZ3RoKz00LGYucHJpbWl0aXZl TGVuZ3RoKz0yfXRoaXMubWFza2VkQm91bmRzQnVmZmVyPWUuY3JlYXRlVmVy dGV4QnVmZmVyKHIsTmwubWVtYmVycyksdGhpcy5tYXNrZWRJbmRleEJ1ZmZl cj1lLmNyZWF0ZUluZGV4QnVmZmVyKG4pfX0sV2wucHJvdG90eXBlLmhhc0Rh dGE9ZnVuY3Rpb24oKXtyZXR1cm4ibG9hZGVkIj09PXRoaXMuc3RhdGV8fCJy ZWxvYWRpbmciPT09dGhpcy5zdGF0ZXx8ImV4cGlyZWQiPT09dGhpcy5zdGF0 ZX0sV2wucHJvdG90eXBlLnBhdHRlcm5zTG9hZGVkPWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuaW1hZ2VBdGxhcyYmISFPYmplY3Qua2V5cyh0aGlzLmltYWdl QXRsYXMucGF0dGVyblBvc2l0aW9ucykubGVuZ3RofSxXbC5wcm90b3R5cGUu c2V0RXhwaXJ5RGF0YT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmV4cGlyYXRp b25UaW1lO2lmKHQuY2FjaGVDb250cm9sKXt2YXIgcj1NKHQuY2FjaGVDb250 cm9sKTtyWyJtYXgtYWdlIl0mJih0aGlzLmV4cGlyYXRpb25UaW1lPURhdGUu bm93KCkrMWUzKnJbIm1heC1hZ2UiXSl9ZWxzZSB0LmV4cGlyZXMmJih0aGlz LmV4cGlyYXRpb25UaW1lPW5ldyBEYXRlKHQuZXhwaXJlcykuZ2V0VGltZSgp KTtpZih0aGlzLmV4cGlyYXRpb25UaW1lKXt2YXIgbj1EYXRlLm5vdygpLGE9 ITE7aWYodGhpcy5leHBpcmF0aW9uVGltZT5uKWE9ITE7ZWxzZSBpZihlKWlm KHRoaXMuZXhwaXJhdGlvblRpbWU8ZSlhPSEwO2Vsc2V7dmFyIGk9dGhpcy5l eHBpcmF0aW9uVGltZS1lO2k/dGhpcy5leHBpcmF0aW9uVGltZT1uK01hdGgu bWF4KGksM2U0KTphPSEwfWVsc2UgYT0hMDthPyh0aGlzLmV4cGlyZWRSZXF1 ZXN0Q291bnQrKyx0aGlzLnN0YXRlPSJleHBpcmVkIik6dGhpcy5leHBpcmVk UmVxdWVzdENvdW50PTB9fSxXbC5wcm90b3R5cGUuZ2V0RXhwaXJ5VGltZW91 dD1mdW5jdGlvbigpe2lmKHRoaXMuZXhwaXJhdGlvblRpbWUpcmV0dXJuIHRo aXMuZXhwaXJlZFJlcXVlc3RDb3VudD8xZTMqKDE8PE1hdGgubWluKHRoaXMu ZXhwaXJlZFJlcXVlc3RDb3VudC0xLDMxKSk6TWF0aC5taW4odGhpcy5leHBp cmF0aW9uVGltZS0obmV3IERhdGUpLmdldFRpbWUoKSxNYXRoLnBvdygyLDMx KS0xKX0sV2wucHJvdG90eXBlLnNldEZlYXR1cmVTdGF0ZT1mdW5jdGlvbih0 LGUpe2lmKHRoaXMubGF0ZXN0RmVhdHVyZUluZGV4JiZ0aGlzLmxhdGVzdEZl YXR1cmVJbmRleC5yYXdUaWxlRGF0YSYmMCE9PU9iamVjdC5rZXlzKHQpLmxl bmd0aCl7dmFyIHI9dGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgubG9hZFZUTGF5 ZXJzKCk7Zm9yKHZhciBuIGluIHRoaXMuYnVja2V0cyl7dmFyIGE9dGhpcy5i dWNrZXRzW25dLGk9YS5sYXllcnNbMF0uc291cmNlTGF5ZXJ8fCJfZ2VvanNv blRpbGVMYXllciIsbz1yW2ldLHM9dFtpXTtvJiZzJiYwIT09T2JqZWN0Lmtl eXMocykubGVuZ3RoJiYoYS51cGRhdGUocyxvLHRoaXMuaW1hZ2VBdGxhcyYm dGhpcy5pbWFnZUF0bGFzLnBhdHRlcm5Qb3NpdGlvbnN8fHt9KSxlJiZlLnN0 eWxlJiYodGhpcy5xdWVyeVBhZGRpbmc9TWF0aC5tYXgodGhpcy5xdWVyeVBh ZGRpbmcsZS5zdHlsZS5nZXRMYXllcihuKS5xdWVyeVJhZGl1cyhhKSkpKX19 fSxXbC5wcm90b3R5cGUuaG9sZGluZ0ZvckZhZGU9ZnVuY3Rpb24oKXtyZXR1 cm4gdm9pZCAwIT09dGhpcy5zeW1ib2xGYWRlSG9sZFVudGlsfSxXbC5wcm90 b3R5cGUuc3ltYm9sRmFkZUZpbmlzaGVkPWZ1bmN0aW9uKCl7cmV0dXJuIXRo aXMuc3ltYm9sRmFkZUhvbGRVbnRpbHx8dGhpcy5zeW1ib2xGYWRlSG9sZFVu dGlsPEkubm93KCl9LFdsLnByb3RvdHlwZS5jbGVhckZhZGVIb2xkPWZ1bmN0 aW9uKCl7dGhpcy5zeW1ib2xGYWRlSG9sZFVudGlsPXZvaWQgMH0sV2wucHJv dG90eXBlLnNldEhvbGREdXJhdGlvbj1mdW5jdGlvbih0KXt0aGlzLnN5bWJv bEZhZGVIb2xkVW50aWw9SS5ub3coKSt0fTt2YXIgdGM9ZnVuY3Rpb24odCxl LHIsbixpLG8scyxsLGMsdSxoLGYpe3ZhciBwPXMudG9wKmwtYyxkPXMuYm90 dG9tKmwrYyxnPXMubGVmdCpsLWMsdj1zLnJpZ2h0KmwrYztpZih0aGlzLmJv eFN0YXJ0SW5kZXg9dC5sZW5ndGgsdSl7dmFyIG09ZC1wLHk9di1nO20+MCYm KG09TWF0aC5tYXgoMTAqbCxtKSx0aGlzLl9hZGRMaW5lQ29sbGlzaW9uQ2ly Y2xlcyh0LGUscixyLnNlZ21lbnQseSxtLG4saSxvLGgpKX1lbHNle2lmKGYp e3ZhciB4PW5ldyBhKGcscCksYj1uZXcgYSh2LHApLF89bmV3IGEoZyxkKSx3 PW5ldyBhKHYsZCksaz1mKk1hdGguUEkvMTgwO3guX3JvdGF0ZShrKSxiLl9y b3RhdGUoayksXy5fcm90YXRlKGspLHcuX3JvdGF0ZShrKSxnPU1hdGgubWlu KHgueCxiLngsXy54LHcueCksdj1NYXRoLm1heCh4LngsYi54LF8ueCx3Lngp LHA9TWF0aC5taW4oeC55LGIueSxfLnksdy55KSxkPU1hdGgubWF4KHgueSxi LnksXy55LHcueSl9dC5lbXBsYWNlQmFjayhyLngsci55LGcscCx2LGQsbixp LG8sMCwwKX10aGlzLmJveEVuZEluZGV4PXQubGVuZ3RofTt0Yy5wcm90b3R5 cGUuX2FkZExpbmVDb2xsaXNpb25DaXJjbGVzPWZ1bmN0aW9uKHQsZSxyLG4s YSxpLG8scyxsLGMpe3ZhciB1PWkvMixoPU1hdGguZmxvb3IoYS91KXx8MSxm PTErLjQqTWF0aC5sb2coYykvTWF0aC5MTjIscD1NYXRoLmZsb29yKGgqZi8y KSxkPS1pLzIsZz1yLHY9bisxLG09ZCx5PS1hLzIseD15LWEvNDtkb3tpZigt LXY8MCl7aWYobT55KXJldHVybjt2PTA7YnJlYWt9bS09ZVt2XS5kaXN0KGcp LGc9ZVt2XX13aGlsZShtPngpO2Zvcih2YXIgYj1lW3ZdLmRpc3QoZVt2KzFd KSxfPS1wO188aCtwO18rKyl7dmFyIHc9Xyp1LGs9eSt3O2lmKHc8MCYmKGsr PXcpLHc+YSYmKGsrPXctYSksIShrPG0pKXtmb3IoO20rYjxrOyl7aWYobSs9 YiwrK3YrMT49ZS5sZW5ndGgpcmV0dXJuO2I9ZVt2XS5kaXN0KGVbdisxXSl9 dmFyIFQ9ay1tLE09ZVt2XSxBPWVbdisxXS5zdWIoTSkuX3VuaXQoKS5fbXVs dChUKS5fYWRkKE0pLl9yb3VuZCgpLFM9TWF0aC5hYnMoay1kKTx1PzA6Ljgq KGstZCk7dC5lbXBsYWNlQmFjayhBLngsQS55LC1pLzIsLWkvMixpLzIsaS8y LG8scyxsLGkvMixTKX19fTt2YXIgZWM9ZnVuY3Rpb24odCxlKXtpZih2b2lk IDA9PT10JiYodD1bXSksdm9pZCAwPT09ZSYmKGU9cmMpLHRoaXMuZGF0YT10 LHRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGgsdGhpcy5jb21wYXJlPWUs dGhpcy5sZW5ndGg+MClmb3IodmFyIHI9KHRoaXMubGVuZ3RoPj4xKS0xO3I+ PTA7ci0tKXRoaXMuX2Rvd24ocil9O2Z1bmN0aW9uIHJjKHQsZSl7cmV0dXJu IHQ8ZT8tMTp0PmU/MTowfWZ1bmN0aW9uIG5jKHQsZSxyKXt2b2lkIDA9PT1l JiYoZT0xKSx2b2lkIDA9PT1yJiYocj0hMSk7Zm9yKHZhciBuPTEvMCxpPTEv MCxvPS0xLzAscz0tMS8wLGw9dFswXSxjPTA7YzxsLmxlbmd0aDtjKyspe3Zh ciB1PWxbY107KCFjfHx1Lng8bikmJihuPXUueCksKCFjfHx1Lnk8aSkmJihp PXUueSksKCFjfHx1Lng+bykmJihvPXUueCksKCFjfHx1Lnk+cykmJihzPXUu eSl9dmFyIGg9by1uLGY9cy1pLHA9TWF0aC5taW4oaCxmKSxkPXAvMixnPW5l dyBlYyhbXSxhYyk7aWYoMD09PXApcmV0dXJuIG5ldyBhKG4saSk7Zm9yKHZh ciB2PW47djxvO3YrPXApZm9yKHZhciBtPWk7bTxzO20rPXApZy5wdXNoKG5l dyBpYyh2K2QsbStkLGQsdCkpO2Zvcih2YXIgeT1mdW5jdGlvbih0KXtmb3Io dmFyIGU9MCxyPTAsbj0wLGE9dFswXSxpPTAsbz1hLmxlbmd0aCxzPW8tMTtp PG87cz1pKyspe3ZhciBsPWFbaV0sYz1hW3NdLHU9bC54KmMueS1jLngqbC55 O3IrPShsLngrYy54KSp1LG4rPShsLnkrYy55KSp1LGUrPTMqdX1yZXR1cm4g bmV3IGljKHIvZSxuL2UsMCx0KX0odCkseD1nLmxlbmd0aDtnLmxlbmd0aDsp e3ZhciBiPWcucG9wKCk7KGIuZD55LmR8fCF5LmQpJiYoeT1iLHImJmNvbnNv bGUubG9nKCJmb3VuZCBiZXN0ICVkIGFmdGVyICVkIHByb2JlcyIsTWF0aC5y b3VuZCgxZTQqYi5kKS8xZTQseCkpLGIubWF4LXkuZDw9ZXx8KGQ9Yi5oLzIs Zy5wdXNoKG5ldyBpYyhiLnAueC1kLGIucC55LWQsZCx0KSksZy5wdXNoKG5l dyBpYyhiLnAueCtkLGIucC55LWQsZCx0KSksZy5wdXNoKG5ldyBpYyhiLnAu eC1kLGIucC55K2QsZCx0KSksZy5wdXNoKG5ldyBpYyhiLnAueCtkLGIucC55 K2QsZCx0KSkseCs9NCl9cmV0dXJuIHImJihjb25zb2xlLmxvZygibnVtIHBy b2JlczogIit4KSxjb25zb2xlLmxvZygiYmVzdCBkaXN0YW5jZTogIit5LmQp KSx5LnB9ZnVuY3Rpb24gYWModCxlKXtyZXR1cm4gZS5tYXgtdC5tYXh9ZnVu Y3Rpb24gaWModCxlLHIsbil7dGhpcy5wPW5ldyBhKHQsZSksdGhpcy5oPXIs dGhpcy5kPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPSExLG49MS8wLGE9MDth PGUubGVuZ3RoO2ErKylmb3IodmFyIGk9ZVthXSxvPTAscz1pLmxlbmd0aCxs PXMtMTtvPHM7bD1vKyspe3ZhciBjPWlbb10sdT1pW2xdO2MueT50LnkhPXUu eT50LnkmJnQueDwodS54LWMueCkqKHQueS1jLnkpLyh1LnktYy55KStjLngm JihyPSFyKSxuPU1hdGgubWluKG4scGkodCxjLHUpKX1yZXR1cm4ocj8xOi0x KSpNYXRoLnNxcnQobil9KHRoaXMucCxuKSx0aGlzLm1heD10aGlzLmQrdGhp cy5oKk1hdGguU1FSVDJ9ZWMucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7 dGhpcy5kYXRhLnB1c2godCksdGhpcy5sZW5ndGgrKyx0aGlzLl91cCh0aGlz Lmxlbmd0aC0xKX0sZWMucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe2lmKDAh PT10aGlzLmxlbmd0aCl7dmFyIHQ9dGhpcy5kYXRhWzBdLGU9dGhpcy5kYXRh LnBvcCgpO3JldHVybiB0aGlzLmxlbmd0aC0tLHRoaXMubGVuZ3RoPjAmJih0 aGlzLmRhdGFbMF09ZSx0aGlzLl9kb3duKDApKSx0fX0sZWMucHJvdG90eXBl LnBlZWs9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhWzBdfSxlYy5wcm90 b3R5cGUuX3VwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLmRhdGEscj10 aGlzLmNvbXBhcmUsbj1lW3RdO3Q+MDspe3ZhciBhPXQtMT4+MSxpPWVbYV07 aWYocihuLGkpPj0wKWJyZWFrO2VbdF09aSx0PWF9ZVt0XT1ufSxlYy5wcm90 b3R5cGUuX2Rvd249ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuZGF0YSxy PXRoaXMuY29tcGFyZSxuPXRoaXMubGVuZ3RoPj4xLGE9ZVt0XTt0PG47KXt2 YXIgaT0xKyh0PDwxKSxvPWVbaV0scz1pKzE7aWYoczx0aGlzLmxlbmd0aCYm cihlW3NdLG8pPDAmJihpPXMsbz1lW3NdKSxyKG8sYSk+PTApYnJlYWs7ZVt0 XT1vLHQ9aX1lW3RdPWF9O3ZhciBvYz1lKGZ1bmN0aW9uKHQpe3QuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpLG8scyxsLGM7Zm9yKHI9MyZ0 Lmxlbmd0aCxuPXQubGVuZ3RoLXIsYT1lLG89MzQzMjkxODM1MyxzPTQ2MTg0 NTkwNyxjPTA7YzxuOylsPTI1NSZ0LmNoYXJDb2RlQXQoYyl8KDI1NSZ0LmNo YXJDb2RlQXQoKytjKSk8PDh8KDI1NSZ0LmNoYXJDb2RlQXQoKytjKSk8PDE2 fCgyNTUmdC5jaGFyQ29kZUF0KCsrYykpPDwyNCwrK2MsYT0yNzQ5MisoNjU1 MzUmKGk9NSooNjU1MzUmKGE9KGFePWw9KDY1NTM1JihsPShsPSg2NTUzNSZs KSpvKygoKGw+Pj4xNikqbyY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1KTw8MTV8 bD4+PjE3KSkqcysoKChsPj4+MTYpKnMmNjU1MzUpPDwxNikmNDI5NDk2NzI5 NSk8PDEzfGE+Pj4xOSkpKygoNSooYT4+PjE2KSY2NTUzNSk8PDE2KSY0Mjk0 OTY3Mjk1KSkrKCg1ODk2NCsoaT4+PjE2KSY2NTUzNSk8PDE2KTtzd2l0Y2go bD0wLHIpe2Nhc2UgMzpsXj0oMjU1JnQuY2hhckNvZGVBdChjKzIpKTw8MTY7 Y2FzZSAyOmxePSgyNTUmdC5jaGFyQ29kZUF0KGMrMSkpPDw4O2Nhc2UgMTph Xj1sPSg2NTUzNSYobD0obD0oNjU1MzUmKGxePTI1NSZ0LmNoYXJDb2RlQXQo YykpKSpvKygoKGw+Pj4xNikqbyY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1KTw8 MTV8bD4+PjE3KSkqcysoKChsPj4+MTYpKnMmNjU1MzUpPDwxNikmNDI5NDk2 NzI5NX1yZXR1cm4gYV49dC5sZW5ndGgsYT0yMjQ2ODIyNTA3Kig2NTUzNSYo YV49YT4+PjE2KSkrKCgyMjQ2ODIyNTA3KihhPj4+MTYpJjY1NTM1KTw8MTYp JjQyOTQ5NjcyOTUsYT0zMjY2NDg5OTA5Kig2NTUzNSYoYV49YT4+PjEzKSkr KCgzMjY2NDg5OTA5KihhPj4+MTYpJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUs KGFePWE+Pj4xNik+Pj4wfX0pLHNjPWUoZnVuY3Rpb24odCl7dC5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49dC5sZW5ndGgsYT1lXm4saT0w O24+PTQ7KXI9MTU0MDQ4MzQ3NyooNjU1MzUmKHI9MjU1JnQuY2hhckNvZGVB dChpKXwoMjU1JnQuY2hhckNvZGVBdCgrK2kpKTw8OHwoMjU1JnQuY2hhckNv ZGVBdCgrK2kpKTw8MTZ8KDI1NSZ0LmNoYXJDb2RlQXQoKytpKSk8PDI0KSkr KCgxNTQwNDgzNDc3KihyPj4+MTYpJjY1NTM1KTw8MTYpLGE9MTU0MDQ4MzQ3 NyooNjU1MzUmYSkrKCgxNTQwNDgzNDc3KihhPj4+MTYpJjY1NTM1KTw8MTYp XihyPTE1NDA0ODM0NzcqKDY1NTM1JihyXj1yPj4+MjQpKSsoKDE1NDA0ODM0 NzcqKHI+Pj4xNikmNjU1MzUpPDwxNikpLG4tPTQsKytpO3N3aXRjaChuKXtj YXNlIDM6YV49KDI1NSZ0LmNoYXJDb2RlQXQoaSsyKSk8PDE2O2Nhc2UgMjph Xj0oMjU1JnQuY2hhckNvZGVBdChpKzEpKTw8ODtjYXNlIDE6YT0xNTQwNDgz NDc3Kig2NTUzNSYoYV49MjU1JnQuY2hhckNvZGVBdChpKSkpKygoMTU0MDQ4 MzQ3NyooYT4+PjE2KSY2NTUzNSk8PDE2KX1yZXR1cm4gYT0xNTQwNDgzNDc3 Kig2NTUzNSYoYV49YT4+PjEzKSkrKCgxNTQwNDgzNDc3KihhPj4+MTYpJjY1 NTM1KTw8MTYpLChhXj1hPj4+MTUpPj4+MH19KSxsYz1vYyxjYz1vYyx1Yz1z YztsYy5tdXJtdXIzPWNjLGxjLm11cm11cjI9dWM7dmFyIGhjPTc7ZnVuY3Rp b24gZmModCxlKXt2YXIgcj0wLG49MCxhPWUvTWF0aC5zcXJ0KDIpO3N3aXRj aCh0KXtjYXNlInRvcC1yaWdodCI6Y2FzZSJ0b3AtbGVmdCI6bj1hLWhjO2Jy ZWFrO2Nhc2UiYm90dG9tLXJpZ2h0IjpjYXNlImJvdHRvbS1sZWZ0IjpuPS1h K2hjO2JyZWFrO2Nhc2UiYm90dG9tIjpuPS1lK2hjO2JyZWFrO2Nhc2UidG9w IjpuPWUtaGN9c3dpdGNoKHQpe2Nhc2UidG9wLXJpZ2h0IjpjYXNlImJvdHRv bS1yaWdodCI6cj0tYTticmVhaztjYXNlInRvcC1sZWZ0IjpjYXNlImJvdHRv bS1sZWZ0IjpyPWE7YnJlYWs7Y2FzZSJsZWZ0IjpyPWU7YnJlYWs7Y2FzZSJy aWdodCI6cj0tZX1yZXR1cm5bcixuXX1mdW5jdGlvbiBwYyh0KXtzd2l0Y2go dCl7Y2FzZSJyaWdodCI6Y2FzZSJ0b3AtcmlnaHQiOmNhc2UiYm90dG9tLXJp Z2h0IjpyZXR1cm4icmlnaHQiO2Nhc2UibGVmdCI6Y2FzZSJ0b3AtbGVmdCI6 Y2FzZSJib3R0b20tbGVmdCI6cmV0dXJuImxlZnQifXJldHVybiJjZW50ZXIi fXZhciBkYz02NTUzNTtmdW5jdGlvbiBnYyh0LGUscixuLGksbyxzLGwsYyx1 LGgsZixwKXt2YXIgZD1mdW5jdGlvbih0LGUscixuLGksbyxzLGwpe2Zvcih2 YXIgYz1uLmxheW91dC5nZXQoInRleHQtcm90YXRlIikuZXZhbHVhdGUobyx7 fSkqTWF0aC5QSS8xODAsdT1lLnBvc2l0aW9uZWRHbHlwaHMsaD1bXSxmPTA7 Zjx1Lmxlbmd0aDtmKyspe3ZhciBwPXVbZl0sZD1zW3AuZm9udFN0YWNrXSxn PWQmJmRbcC5nbHlwaF07aWYoZyl7dmFyIHY9Zy5yZWN0O2lmKHYpe3ZhciBt PV9sKzEseT1nLm1ldHJpY3MuYWR2YW5jZSpwLnNjYWxlLzIseD1pP1twLngr eSxwLnldOlswLDBdLGI9aT9bMCwwXTpbcC54K3krclswXSxwLnkrclsxXV0s Xz0oaXx8bCkmJnAudmVydGljYWwsdz1bMCwwXTtfJiYodz1iLGI9WzAsMF0p O3ZhciBrPShnLm1ldHJpY3MubGVmdC1tKSpwLnNjYWxlLXkrYlswXSxUPSgt Zy5tZXRyaWNzLnRvcC1tKSpwLnNjYWxlK2JbMV0sTT1rK3YudypwLnNjYWxl LEE9VCt2LmgqcC5zY2FsZSxTPW5ldyBhKGssVCksRT1uZXcgYShNLFQpLEw9 bmV3IGEoayxBKSxDPW5ldyBhKE0sQSk7aWYoXyl7dmFyIFA9bmV3IGEoLXks eS1lLnlPZmZzZXQpLE89LU1hdGguUEkvMix6PWxzLzIteSxJPW5ldyBhKDUt ZS55T2Zmc2V0LXosMCksRD1uZXcoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQu YXBwbHkoYSxbbnVsbF0uY29uY2F0KHcpKSk7Uy5fcm90YXRlQXJvdW5kKE8s UCkuX2FkZChJKS5fYWRkKEQpLEUuX3JvdGF0ZUFyb3VuZChPLFApLl9hZGQo SSkuX2FkZChEKSxMLl9yb3RhdGVBcm91bmQoTyxQKS5fYWRkKEkpLl9hZGQo RCksQy5fcm90YXRlQXJvdW5kKE8sUCkuX2FkZChJKS5fYWRkKEQpfWlmKGMp e3ZhciBSPU1hdGguc2luKGMpLEY9TWF0aC5jb3MoYyksQj1bRiwtUixSLEZd O1MuX21hdE11bHQoQiksRS5fbWF0TXVsdChCKSxMLl9tYXRNdWx0KEIpLEMu X21hdE11bHQoQil9aC5wdXNoKHt0bDpTLHRyOkUsYmw6TCxicjpDLHRleDp2 LHdyaXRpbmdNb2RlOmUud3JpdGluZ01vZGUsZ2x5cGhPZmZzZXQ6eCxzZWN0 aW9uSW5kZXg6cC5zZWN0aW9uSW5kZXh9KX19fXJldHVybiBofSgwLHIscyxu LGksbyxmLHQuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCksZz10LnRleHRTaXpl RGF0YSx2PW51bGw7InNvdXJjZSI9PT1nLmtpbmQ/KHY9W19zKm4ubGF5b3V0 LmdldCgidGV4dC1zaXplIikuZXZhbHVhdGUobyx7fSldKVswXT5kYyYmdyh0 LmxheWVySWRzWzBdKyc6IFZhbHVlIGZvciAidGV4dC1zaXplIiBpcyA+PSAy NTYuIFJlZHVjZSB5b3VyICJ0ZXh0LXNpemUiLicpOiJjb21wb3NpdGUiPT09 Zy5raW5kJiYoKHY9W19zKnAuY29tcG9zaXRlVGV4dFNpemVzWzBdLmV2YWx1 YXRlKG8se30pLF9zKnAuY29tcG9zaXRlVGV4dFNpemVzWzFdLmV2YWx1YXRl KG8se30pXSlbMF0+ZGN8fHZbMV0+ZGMpJiZ3KHQubGF5ZXJJZHNbMF0rJzog VmFsdWUgZm9yICJ0ZXh0LXNpemUiIGlzID49IDI1Ni4gUmVkdWNlIHlvdXIg InRleHQtc2l6ZSIuJyksdC5hZGRTeW1ib2xzKHQudGV4dCxkLHYscyxpLG8s YyxlLGwubGluZVN0YXJ0SW5kZXgsbC5saW5lTGVuZ3RoKTtmb3IodmFyIG09 MCx5PXU7bTx5Lmxlbmd0aDttKz0xKWhbeVttXV09dC50ZXh0LnBsYWNlZFN5 bWJvbEFycmF5Lmxlbmd0aC0xO3JldHVybiA0KmQubGVuZ3RofWZ1bmN0aW9u IHZjKHQpe2Zvcih2YXIgZSBpbiB0KXJldHVybiB0W2VdO3JldHVybiBudWxs fWZ1bmN0aW9uIG1jKHQsZSxyLG4pe3ZhciBhPXQuY29tcGFyZVRleHQ7aWYo ZSBpbiBhKXtmb3IodmFyIGk9YVtlXSxvPWkubGVuZ3RoLTE7bz49MDtvLS0p aWYobi5kaXN0KGlbb10pPHIpcmV0dXJuITB9ZWxzZSBhW2VdPVtdO3JldHVy biBhW2VdLnB1c2gobiksITF9dC5BY3Rvcj1rbCx0LkFscGhhSW1hZ2U9UGks dC5DYW5vbmljYWxUaWxlSUQ9SWwsdC5Db2xsaXNpb25Cb3hBcnJheT1iYSx0 LkNvbG9yPVd0LHQuREVNRGF0YT1CbCx0LkRhdGFDb25zdGFudFByb3BlcnR5 PWpuLHQuRGljdGlvbmFyeUNvZGVyPWpsLHQuRVhURU5UPWVpLHQuRXJyb3JF dmVudD13dCx0LkV2YWx1YXRpb25QYXJhbWV0ZXJzPVBuLHQuRXZlbnQ9X3Qs dC5FdmVudGVkPWt0LHQuRmVhdHVyZUluZGV4PUhsLHQuRmlsbEJ1Y2tldD1f byx0LkZpbGxFeHRydXNpb25CdWNrZXQ9Qm8sdC5JbWFnZUF0bGFzPVlzLHQu SW1hZ2VQb3NpdGlvbj1Icyx0LkxpbmVCdWNrZXQ9Wm8sdC5MbmdMYXQ9QWws dC5MbmdMYXRCb3VuZHM9TWwsdC5NZXJjYXRvckNvb3JkaW5hdGU9emwsdC5P TkVfRU09bHMsdC5PdmVyc2NhbGVkVGlsZUlEPVJsLHQuUG9pbnQ9YSx0LlBv aW50JDE9YSx0LlByb2dyYW1Db25maWd1cmF0aW9uPUthLHQuUHJvcGVydGll cz1Hbix0LlByb3RvYnVmPXRsLHQuUkdCQUltYWdlPU9pLHQuUmVxdWVzdE1h bmFnZXI9Vix0LlJlc291cmNlVHlwZT1sdCx0LlNlZ21lbnRWZWN0b3I9T2Es dC5Tb3VyY2VGZWF0dXJlU3RhdGU9cWwsdC5TdHJ1Y3RBcnJheUxheW91dDF1 aTI9dmEsdC5TdHJ1Y3RBcnJheUxheW91dDJpND1Rbix0LlN0cnVjdEFycmF5 TGF5b3V0MnVpND1nYSx0LlN0cnVjdEFycmF5TGF5b3V0M3VpNj1kYSx0LlN0 cnVjdEFycmF5TGF5b3V0NGk4PSRuLHQuU3ltYm9sQnVja2V0PU9zLHQuVGV4 dHVyZT1Lcyx0LlRpbGU9V2wsdC5UcmFuc2l0aW9uYWJsZT1Jbix0LlVuaWZv cm0xZj1CYSx0LlVuaWZvcm0xaT1GYSx0LlVuaWZvcm0yZj1OYSx0LlVuaWZv cm0zZj1qYSx0LlVuaWZvcm00Zj1WYSx0LlVuaWZvcm1Db2xvcj1VYSx0LlVu aWZvcm1NYXRyaXg0Zj1IYSx0LlVud3JhcHBlZFRpbGVJRD1EbCx0LlZhbGlk YXRpb25FcnJvcj1NdCx0LldyaXRpbmdNb2RlPWNzLHQuWm9vbUhpc3Rvcnk9 eW4sdC5hZGREeW5hbWljQXR0cmlidXRlcz1Mcyx0LmFzeW5jQWxsPWZ1bmN0 aW9uKHQsZSxyKXtpZighdC5sZW5ndGgpcmV0dXJuIHIobnVsbCxbXSk7dmFy IG49dC5sZW5ndGgsYT1uZXcgQXJyYXkodC5sZW5ndGgpLGk9bnVsbDt0LmZv ckVhY2goZnVuY3Rpb24odCxvKXtlKHQsZnVuY3Rpb24odCxlKXt0JiYoaT10 KSxhW29dPWUsMD09LS1uJiZyKGksYSl9KX0pfSx0LmJlemllcj1zLHQuYmlu ZEFsbD12LHQuYnJvd3Nlcj1JLHQuY2FjaGVFbnRyeVBvc3NpYmx5QWRkZWQ9 ZnVuY3Rpb24odCl7KytzdD5hdCYmKHQuZ2V0QWN0b3IoKS5zZW5kKCJlbmZv cmNlQ2FjaGVTaXplTGltaXQiLG50KSxzdD0wKX0sdC5jbGFtcD1jLHQuY2xl YXJUaWxlQ2FjaGU9ZnVuY3Rpb24odCl7dmFyIGU9c2VsZi5jYWNoZXMuZGVs ZXRlKHJ0KTt0JiZlLmNhdGNoKHQpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4g dCgpfSl9LHQuY2xvbmU9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGtpKDE2KTty ZXR1cm4gZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNd LGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhd PXRbOF0sZVs5XT10WzldLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTFdLGVbMTJd PXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVbMTVdPXRbMTVdLGV9 LHQuY2xvbmUkMT1iLHQuY29uZmlnPUQsdC5jcmVhdGU9ZnVuY3Rpb24oKXt2 YXIgdD1uZXcga2koMTYpO3JldHVybiBraSE9RmxvYXQzMkFycmF5JiYodFsx XT0wLHRbMl09MCx0WzNdPTAsdFs0XT0wLHRbNl09MCx0WzddPTAsdFs4XT0w LHRbOV09MCx0WzExXT0wLHRbMTJdPTAsdFsxM109MCx0WzE0XT0wKSx0WzBd PTEsdFs1XT0xLHRbMTBdPTEsdFsxNV09MSx0fSx0LmNyZWF0ZSQxPWZ1bmN0 aW9uKCl7dmFyIHQ9bmV3IGtpKDkpO3JldHVybiBraSE9RmxvYXQzMkFycmF5 JiYodFsxXT0wLHRbMl09MCx0WzNdPTAsdFs1XT0wLHRbNl09MCx0WzddPTAp LHRbMF09MSx0WzRdPTEsdFs4XT0xLHR9LHQuY3JlYXRlJDI9ZnVuY3Rpb24o KXt2YXIgdD1uZXcga2koNCk7cmV0dXJuIGtpIT1GbG9hdDMyQXJyYXkmJih0 WzFdPTAsdFsyXT0wKSx0WzBdPTEsdFszXT0xLHR9LHQuY3JlYXRlQ29tbW9u anNNb2R1bGU9ZSx0LmNyZWF0ZUV4cHJlc3Npb249a3IsdC5jcmVhdGVMYXlv dXQ9Sm4sdC5jcmVhdGVTdHlsZUxheWVyPWZ1bmN0aW9uKHQpe3JldHVybiJj dXN0b20iPT09dC50eXBlP25ldyBWcyh0KTpuZXcgVXNbdC50eXBlXSh0KX0s dC5kZWVwRXF1YWw9byx0LmVhc2U9bCx0LmVtaXRWYWxpZGF0aW9uRXJyb3Jz PWxuLHQuZW5kc1dpdGg9bSx0LmVuZm9yY2VDYWNoZVNpemVMaW1pdD1mdW5j dGlvbih0KXtzZWxmLmNhY2hlcyYmc2VsZi5jYWNoZXMub3BlbihydCkudGhl bihmdW5jdGlvbihlKXtlLmtleXMoKS50aGVuKGZ1bmN0aW9uKHIpe2Zvcih2 YXIgbj0wO248ci5sZW5ndGgtdDtuKyspZS5kZWxldGUocltuXSl9KX0pfSx0 LmV2YWx1YXRlUmFkaWFsT2Zmc2V0PWZjLHQuZXZhbHVhdGVTaXplRm9yRmVh dHVyZT1rcyx0LmV2YWx1YXRlU2l6ZUZvclpvb209VHMsdC5ldmVudGVkPUxu LHQuZXh0ZW5kPWgsdC5mZWF0dXJlRmlsdGVyPVJyLHQuZmlsdGVyT2JqZWN0 PXgsdC5mcm9tUm90YXRpb249ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRoLnNp bihlKSxuPU1hdGguY29zKGUpO3JldHVybiB0WzBdPW4sdFsxXT1yLHRbMl09 MCx0WzNdPS1yLHRbNF09bix0WzVdPTAsdFs2XT0wLHRbN109MCx0WzhdPTEs dH0sdC5nZXRBbmNob3JBbGlnbm1lbnQ9eXMsdC5nZXRBbmNob3JKdXN0aWZp Y2F0aW9uPXBjLHQuZ2V0QXJyYXlCdWZmZXI9dnQsdC5nZXRJbWFnZT15dCx0 LmdldEpTT049ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ3QoaCh0LHt0eXBlOiJq c29uIn0pLGUpfSx0LmdldFJlZmVycmVyPWh0LHQuZ2V0VmlkZW89ZnVuY3Rp b24odCxlKXt2YXIgcixuLGE9c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCJ2aWRlbyIpO2EubXV0ZWQ9ITAsYS5vbmxvYWRzdGFydD1mdW5jdGlvbigp e2UobnVsbCxhKX07Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBv PXNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic291cmNlIik7cj10W2ld LG49dm9pZCAwLChuPXNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIp KS5ocmVmPXIsKG4ucHJvdG9jb2whPT1zZWxmLmRvY3VtZW50LmxvY2F0aW9u LnByb3RvY29sfHxuLmhvc3QhPT1zZWxmLmRvY3VtZW50LmxvY2F0aW9uLmhv c3QpJiYoYS5jcm9zc09yaWdpbj0iQW5vbnltb3VzIiksby5zcmM9dFtpXSxh LmFwcGVuZENoaWxkKG8pfXJldHVybntjYW5jZWw6ZnVuY3Rpb24oKXt9fX0s dC5pZGVudGl0eT1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT0xLHRbMV09MCx0 WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0Wzhd PTAsdFs5XT0wLHRbMTBdPTEsdFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsx NF09MCx0WzE1XT0xLHR9LHQuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9 ZVswXSxuPWVbMV0sYT1lWzJdLGk9ZVszXSxvPWVbNF0scz1lWzVdLGw9ZVs2 XSxjPWVbN10sdT1lWzhdLGg9ZVs5XSxmPWVbMTBdLHA9ZVsxMV0sZD1lWzEy XSxnPWVbMTNdLHY9ZVsxNF0sbT1lWzE1XSx5PXIqcy1uKm8seD1yKmwtYSpv LGI9cipjLWkqbyxfPW4qbC1hKnMsdz1uKmMtaSpzLGs9YSpjLWkqbCxUPXUq Zy1oKmQsTT11KnYtZipkLEE9dSptLXAqZCxTPWgqdi1mKmcsRT1oKm0tcCpn LEw9ZiptLXAqdixDPXkqTC14KkUrYipTK18qQS13Kk0raypUO3JldHVybiBD PyhDPTEvQyx0WzBdPShzKkwtbCpFK2MqUykqQyx0WzFdPShhKkUtbipMLWkq UykqQyx0WzJdPShnKmstdip3K20qXykqQyx0WzNdPShmKnctaCprLXAqXykq Qyx0WzRdPShsKkEtbypMLWMqTSkqQyx0WzVdPShyKkwtYSpBK2kqTSkqQyx0 WzZdPSh2KmItZCprLW0qeCkqQyx0WzddPSh1KmstZipiK3AqeCkqQyx0Wzhd PShvKkUtcypBK2MqVCkqQyx0WzldPShuKkEtcipFLWkqVCkqQyx0WzEwXT0o ZCp3LWcqYittKnkpKkMsdFsxMV09KGgqYi11KnctcCp5KSpDLHRbMTJdPShz Kk0tbypTLWwqVCkqQyx0WzEzXT0ocipTLW4qTSthKlQpKkMsdFsxNF09KGcq eC1kKl8tdip5KSpDLHRbMTVdPSh1Kl8taCp4K2YqeSkqQyx0KTpudWxsfSx0 LmlzQ2hhcj14bix0LmlzTWFwYm94VVJMPVUsdC5rZXlzRGlmZmVyZW5jZT1m dW5jdGlvbih0LGUpe3ZhciByPVtdO2Zvcih2YXIgbiBpbiB0KW4gaW4gZXx8 ci5wdXNoKG4pO3JldHVybiByfSx0Lm1ha2VSZXF1ZXN0PWd0LHQubWFwT2Jq ZWN0PXksdC5tZXJjYXRvclhmcm9tTG5nPUxsLHQubWVyY2F0b3JZZnJvbUxh dD1DbCx0Lm1lcmNhdG9yWmZyb21BbHRpdHVkZT1QbCx0Lm11bHRpcGx5PWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbj1lWzBdLGE9ZVsxXSxpPWVbMl0sbz1lWzNd LHM9ZVs0XSxsPWVbNV0sYz1lWzZdLHU9ZVs3XSxoPWVbOF0sZj1lWzldLHA9 ZVsxMF0sZD1lWzExXSxnPWVbMTJdLHY9ZVsxM10sbT1lWzE0XSx5PWVbMTVd LHg9clswXSxiPXJbMV0sXz1yWzJdLHc9clszXTtyZXR1cm4gdFswXT14Km4r YipzK18qaCt3KmcsdFsxXT14KmErYipsK18qZit3KnYsdFsyXT14KmkrYipj K18qcCt3Km0sdFszXT14Km8rYip1K18qZCt3KnkseD1yWzRdLGI9cls1XSxf PXJbNl0sdz1yWzddLHRbNF09eCpuK2IqcytfKmgrdypnLHRbNV09eCphK2Iq bCtfKmYrdyp2LHRbNl09eCppK2IqYytfKnArdyptLHRbN109eCpvK2IqdStf KmQrdyp5LHg9cls4XSxiPXJbOV0sXz1yWzEwXSx3PXJbMTFdLHRbOF09eCpu K2IqcytfKmgrdypnLHRbOV09eCphK2IqbCtfKmYrdyp2LHRbMTBdPXgqaSti KmMrXypwK3cqbSx0WzExXT14Km8rYip1K18qZCt3KnkseD1yWzEyXSxiPXJb MTNdLF89clsxNF0sdz1yWzE1XSx0WzEyXT14Km4rYipzK18qaCt3KmcsdFsx M109eCphK2IqbCtfKmYrdyp2LHRbMTRdPXgqaStiKmMrXypwK3cqbSx0WzE1 XT14Km8rYip1K18qZCt3KnksdH0sdC5tdnQ9SW8sdC5udW1iZXI9eWUsdC5v cnRobz1mdW5jdGlvbih0LGUscixuLGEsaSxvKXt2YXIgcz0xLyhlLXIpLGw9 MS8obi1hKSxjPTEvKGktbyk7cmV0dXJuIHRbMF09LTIqcyx0WzFdPTAsdFsy XT0wLHRbM109MCx0WzRdPTAsdFs1XT0tMipsLHRbNl09MCx0WzddPTAsdFs4 XT0wLHRbOV09MCx0WzEwXT0yKmMsdFsxMV09MCx0WzEyXT0oZStyKSpzLHRb MTNdPShhK24pKmwsdFsxNF09KG8raSkqYyx0WzE1XT0xLHR9LHQucGFyc2VH bHlwaFBCRj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHRsKHQpLnJlYWRGaWVs ZHMoeWwsW10pfSx0LnBiZj10bCx0LnBlcmZvcm1TeW1ib2xMYXlvdXQ9ZnVu Y3Rpb24odCxlLHIsbixpLG8pe3QuY3JlYXRlQXJyYXlzKCk7dmFyIHM9NTEy KnQub3ZlcnNjYWxpbmc7dC50aWxlUGl4ZWxSYXRpbz1laS9zLHQuY29tcGFy ZVRleHQ9e30sdC5pY29uc05lZWRMaW5lYXI9ITE7dmFyIGw9dC5sYXllcnNb MF0ubGF5b3V0LGM9dC5sYXllcnNbMF0uX3VuZXZhbHVhdGVkTGF5b3V0Ll92 YWx1ZXMsdT17fTtpZigiY29tcG9zaXRlIj09PXQudGV4dFNpemVEYXRhLmtp bmQpe3ZhciBoPXQudGV4dFNpemVEYXRhLGY9aC5taW5ab29tLHA9aC5tYXha b29tO3UuY29tcG9zaXRlVGV4dFNpemVzPVtjWyJ0ZXh0LXNpemUiXS5wb3Nz aWJseUV2YWx1YXRlKG5ldyBQbihmKSksY1sidGV4dC1zaXplIl0ucG9zc2li bHlFdmFsdWF0ZShuZXcgUG4ocCkpXX1pZigiY29tcG9zaXRlIj09PXQuaWNv blNpemVEYXRhLmtpbmQpe3ZhciBkPXQuaWNvblNpemVEYXRhLGc9ZC5taW5a b29tLHY9ZC5tYXhab29tO3UuY29tcG9zaXRlSWNvblNpemVzPVtjWyJpY29u LXNpemUiXS5wb3NzaWJseUV2YWx1YXRlKG5ldyBQbihnKSksY1siaWNvbi1z aXplIl0ucG9zc2libHlFdmFsdWF0ZShuZXcgUG4odikpXX11LmxheW91dFRl eHRTaXplPWNbInRleHQtc2l6ZSJdLnBvc3NpYmx5RXZhbHVhdGUobmV3IFBu KHQuem9vbSsxKSksdS5sYXlvdXRJY29uU2l6ZT1jWyJpY29uLXNpemUiXS5w b3NzaWJseUV2YWx1YXRlKG5ldyBQbih0Lnpvb20rMSkpLHUudGV4dE1heFNp emU9Y1sidGV4dC1zaXplIl0ucG9zc2libHlFdmFsdWF0ZShuZXcgUG4oMTgp KTtmb3IodmFyIG09bC5nZXQoInRleHQtbGluZS1oZWlnaHQiKSpscyx5PSJt YXAiPT09bC5nZXQoInRleHQtcm90YXRpb24tYWxpZ25tZW50IikmJiJwb2lu dCIhPT1sLmdldCgic3ltYm9sLXBsYWNlbWVudCIpLHg9bC5nZXQoInRleHQt a2VlcC11cHJpZ2h0IiksYj1mdW5jdGlvbigpe3ZhciBvPWtbX10scz1sLmdl dCgidGV4dC1mb250IikuZXZhbHVhdGUobyx7fSkuam9pbigiLCIpLGM9cixo PXtob3Jpem9udGFsOnt9LHZlcnRpY2FsOnZvaWQgMH0sZj1vLnRleHQscD1b MCwwXTtpZihmKXt2YXIgZD1mLnRvU3RyaW5nKCksZz1sLmdldCgidGV4dC1s ZXR0ZXItc3BhY2luZyIpLmV2YWx1YXRlKG8se30pKmxzLHY9ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPTAscj1kO2U8ci5sZW5ndGg7ZSs9MSlpZighX24ocltl XS5jaGFyQ29kZUF0KDApKSlyZXR1cm4hMTtyZXR1cm4hMH0oKT9nOjAsYj1s LmdldCgidGV4dC1hbmNob3IiKS5ldmFsdWF0ZShvLHt9KSxUPWwuZ2V0KCJ0 ZXh0LXZhcmlhYmxlLWFuY2hvciIpLE09bC5nZXQoInRleHQtcmFkaWFsLW9m ZnNldCIpLmV2YWx1YXRlKG8se30pO1R8fChwPU0/ZmMoYixNKmxzKTpsLmdl dCgidGV4dC1vZmZzZXQiKS5ldmFsdWF0ZShvLHt9KS5tYXAoZnVuY3Rpb24o dCl7cmV0dXJuIHQqbHN9KSk7dmFyIEE9eT8iY2VudGVyIjpsLmdldCgidGV4 dC1qdXN0aWZ5IikuZXZhbHVhdGUobyx7fSksUz0icG9pbnQiPT09bC5nZXQo InN5bWJvbC1wbGFjZW1lbnQiKT9sLmdldCgidGV4dC1tYXgtd2lkdGgiKS5l dmFsdWF0ZShvLHt9KSpsczowLEU9ZnVuY3Rpb24oKXt0LmFsbG93VmVydGlj YWxQbGFjZW1lbnQmJmJuKGQpJiYoaC52ZXJ0aWNhbD1ocyhmLGUscyxTLG0s YiwibGVmdCIsdixwLGNzLnZlcnRpY2FsLCEwKSl9O2lmKCF5JiZUKXtmb3Io dmFyIEw9ImF1dG8iPT09QT9ULm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcGMo dCl9KTpbQV0sQz0hMSxQPTA7UDxMLmxlbmd0aDtQKyspe3ZhciBPPUxbUF07 aWYoIWguaG9yaXpvbnRhbFtPXSlpZihDKWguaG9yaXpvbnRhbFtPXT1oLmhv cml6b250YWxbMF07ZWxzZXt2YXIgej1ocyhmLGUscyxTLG0sImNlbnRlciIs Tyx2LHAsY3MuaG9yaXpvbnRhbCwhMSk7eiYmKGguaG9yaXpvbnRhbFtPXT16 LEM9MT09PXoubGluZUNvdW50KX19RSgpfWVsc2V7ImF1dG8iPT09QSYmKEE9 cGMoYikpO3ZhciBJPWhzKGYsZSxzLFMsbSxiLEEsdixwLGNzLmhvcml6b250 YWwsITEpO0kmJihoLmhvcml6b250YWxbQV09SSksRSgpLGJuKGQpJiZ5JiZ4 JiYoaC52ZXJ0aWNhbD1ocyhmLGUscyxTLG0sYixBLHYscCxjcy52ZXJ0aWNh bCwhMSkpfX12YXIgRD12b2lkIDA7aWYoby5pY29uKXt2YXIgUj1uW28uaWNv bl07UiYmKEQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXlzKHIpLGE9bi5ob3Jp em9udGFsQWxpZ24saT1uLnZlcnRpY2FsQWxpZ24sbz1lWzBdLHM9ZVsxXSxs PW8tdC5kaXNwbGF5U2l6ZVswXSphLGM9bCt0LmRpc3BsYXlTaXplWzBdLHU9 cy10LmRpc3BsYXlTaXplWzFdKmk7cmV0dXJue2ltYWdlOnQsdG9wOnUsYm90 dG9tOnUrdC5kaXNwbGF5U2l6ZVsxXSxsZWZ0OmwscmlnaHQ6Y319KGlbby5p Y29uXSxsLmdldCgiaWNvbi1vZmZzZXQiKS5ldmFsdWF0ZShvLHt9KSxsLmdl dCgiaWNvbi1hbmNob3IiKS5ldmFsdWF0ZShvLHt9KSksdm9pZCAwPT09dC5z ZGZJY29ucz90LnNkZkljb25zPVIuc2RmOnQuc2RmSWNvbnMhPT1SLnNkZiYm dygiU3R5bGUgc2hlZXQgd2FybmluZzogQ2Fubm90IG1peCBTREYgYW5kIG5v bi1TREYgaWNvbnMgaW4gb25lIGJ1ZmZlciIpLFIucGl4ZWxSYXRpbyE9PXQu cGl4ZWxSYXRpbz90Lmljb25zTmVlZExpbmVhcj0hMDowIT09bC5nZXQoImlj b24tcm90YXRlIikuY29uc3RhbnRPcigxKSYmKHQuaWNvbnNOZWVkTGluZWFy PSEwKSl9KE9iamVjdC5rZXlzKGguaG9yaXpvbnRhbCkubGVuZ3RofHxEKSYm ZnVuY3Rpb24odCxlLHIsbixpLG8scyl7dmFyIGw9by5sYXlvdXRUZXh0U2l6 ZS5ldmFsdWF0ZShlLHt9KSxjPW8ubGF5b3V0SWNvblNpemUuZXZhbHVhdGUo ZSx7fSksdT1vLnRleHRNYXhTaXplLmV2YWx1YXRlKGUse30pO3ZvaWQgMD09 PXUmJih1PWwpO3ZhciBoPXQubGF5ZXJzWzBdLmxheW91dCxmPWguZ2V0KCJp Y29uLW9mZnNldCIpLmV2YWx1YXRlKGUse30pLHA9dmMoci5ob3Jpem9udGFs KSxkPWwvMjQsZz10LnRpbGVQaXhlbFJhdGlvKmQsdj10LnRpbGVQaXhlbFJh dGlvKnUvMjQsbT10LnRpbGVQaXhlbFJhdGlvKmMseT10LnRpbGVQaXhlbFJh dGlvKmguZ2V0KCJzeW1ib2wtc3BhY2luZyIpLHg9aC5nZXQoInRleHQtcGFk ZGluZyIpKnQudGlsZVBpeGVsUmF0aW8sYj1oLmdldCgiaWNvbi1wYWRkaW5n IikqdC50aWxlUGl4ZWxSYXRpbyxfPWguZ2V0KCJ0ZXh0LW1heC1hbmdsZSIp LzE4MCpNYXRoLlBJLGs9Im1hcCI9PT1oLmdldCgidGV4dC1yb3RhdGlvbi1h bGlnbm1lbnQiKSYmInBvaW50IiE9PWguZ2V0KCJzeW1ib2wtcGxhY2VtZW50 IiksVD0ibWFwIj09PWguZ2V0KCJpY29uLXJvdGF0aW9uLWFsaWdubWVudCIp JiYicG9pbnQiIT09aC5nZXQoInN5bWJvbC1wbGFjZW1lbnQiKSxNPWguZ2V0 KCJzeW1ib2wtcGxhY2VtZW50IiksQT15LzIsUz1mdW5jdGlvbihsLGMpe2Mu eDwwfHxjLng+PWVpfHxjLnk8MHx8Yy55Pj1laXx8ZnVuY3Rpb24odCxlLHIs bixpLG8scyxsLGMsdSxoLGYscCxkLGcsdixtLHkseCxiLF8pe3ZhciBrLFQs TSxBPXQuYWRkVG9MaW5lVmVydGV4QXJyYXkoZSxyKSxTPTAsRT0wLEw9MCxD PXt9LFA9bGMoIiIpLE89KG8ubGF5b3V0LmdldCgidGV4dC1yYWRpYWwtb2Zm c2V0IikuZXZhbHVhdGUoeCx7fSl8fDApKmxzO2lmKHQuYWxsb3dWZXJ0aWNh bFBsYWNlbWVudCYmbi52ZXJ0aWNhbCl7dmFyIHo9by5sYXlvdXQuZ2V0KCJ0 ZXh0LXJvdGF0ZSIpLmV2YWx1YXRlKHgse30pKzkwLEk9bi52ZXJ0aWNhbDtN PW5ldyB0YyhzLHIsZSxsLGMsdSxJLGgsZixwLHQub3ZlcnNjYWxpbmcseil9 Zm9yKHZhciBEIGluIG4uaG9yaXpvbnRhbCl7dmFyIFI9bi5ob3Jpem9udGFs W0RdO2lmKCFrKXtQPWxjKFIudGV4dCk7dmFyIEY9by5sYXlvdXQuZ2V0KCJ0 ZXh0LXJvdGF0ZSIpLmV2YWx1YXRlKHgse30pO2s9bmV3IHRjKHMscixlLGws Yyx1LFIsaCxmLHAsdC5vdmVyc2NhbGluZyxGKX12YXIgQj0xPT09Ui5saW5l Q291bnQ7aWYoRSs9Z2ModCxlLFIsbyxwLHgsZCxBLG4udmVydGljYWw/Y3Mu aG9yaXpvbnRhbDpjcy5ob3Jpem9udGFsT25seSxCP09iamVjdC5rZXlzKG4u aG9yaXpvbnRhbCk6W0RdLEMsYixfKSxCKWJyZWFrfW4udmVydGljYWwmJihM Kz1nYyh0LGUsbi52ZXJ0aWNhbCxvLHAseCxkLEEsY3MudmVydGljYWwsWyJ2 ZXJ0aWNhbCJdLEMsYixfKSk7dmFyIE49az9rLmJveFN0YXJ0SW5kZXg6dC5j b2xsaXNpb25Cb3hBcnJheS5sZW5ndGgsaj1rP2suYm94RW5kSW5kZXg6dC5j b2xsaXNpb25Cb3hBcnJheS5sZW5ndGgsVj1NP00uYm94U3RhcnRJbmRleDp0 LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxVPU0/TS5ib3hFbmRJbmRleDp0 LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aDtpZihpKXt2YXIgcT1mdW5jdGlv bih0LGUscixuLGksbyl7dmFyIHMsbCxjLHUsaD1lLmltYWdlLGY9ci5sYXlv dXQscD1lLnRvcC0xL2gucGl4ZWxSYXRpbyxkPWUubGVmdC0xL2gucGl4ZWxS YXRpbyxnPWUuYm90dG9tKzEvaC5waXhlbFJhdGlvLHY9ZS5yaWdodCsxL2gu cGl4ZWxSYXRpbztpZigibm9uZSIhPT1mLmdldCgiaWNvbi10ZXh0LWZpdCIp JiZpKXt2YXIgbT12LWQseT1nLXAseD1mLmdldCgidGV4dC1zaXplIikuZXZh bHVhdGUobyx7fSkvMjQsYj1pLmxlZnQqeCxfPWkucmlnaHQqeCx3PWkudG9w Kngsaz1fLWIsVD1pLmJvdHRvbSp4LXcsTT1mLmdldCgiaWNvbi10ZXh0LWZp dC1wYWRkaW5nIilbMF0sQT1mLmdldCgiaWNvbi10ZXh0LWZpdC1wYWRkaW5n IilbMV0sUz1mLmdldCgiaWNvbi10ZXh0LWZpdC1wYWRkaW5nIilbMl0sRT1m LmdldCgiaWNvbi10ZXh0LWZpdC1wYWRkaW5nIilbM10sTD0id2lkdGgiPT09 Zi5nZXQoImljb24tdGV4dC1maXQiKT8uNSooVC15KTowLEM9ImhlaWdodCI9 PT1mLmdldCgiaWNvbi10ZXh0LWZpdCIpPy41KihrLW0pOjAsUD0id2lkdGgi PT09Zi5nZXQoImljb24tdGV4dC1maXQiKXx8ImJvdGgiPT09Zi5nZXQoImlj b24tdGV4dC1maXQiKT9rOm0sTz0iaGVpZ2h0Ij09PWYuZ2V0KCJpY29uLXRl eHQtZml0Iil8fCJib3RoIj09PWYuZ2V0KCJpY29uLXRleHQtZml0Iik/VDp5 O3M9bmV3IGEoYitDLUUsdytMLU0pLGw9bmV3IGEoYitDK0ErUCx3K0wtTSks Yz1uZXcgYShiK0MrQStQLHcrTCtTK08pLHU9bmV3IGEoYitDLUUsdytMK1Mr Tyl9ZWxzZSBzPW5ldyBhKGQscCksbD1uZXcgYSh2LHApLGM9bmV3IGEodixn KSx1PW5ldyBhKGQsZyk7dmFyIHo9ci5sYXlvdXQuZ2V0KCJpY29uLXJvdGF0 ZSIpLmV2YWx1YXRlKG8se30pKk1hdGguUEkvMTgwO2lmKHope3ZhciBJPU1h dGguc2luKHopLEQ9TWF0aC5jb3MoeiksUj1bRCwtSSxJLERdO3MuX21hdE11 bHQoUiksbC5fbWF0TXVsdChSKSx1Ll9tYXRNdWx0KFIpLGMuX21hdE11bHQo Uil9cmV0dXJuW3t0bDpzLHRyOmwsYmw6dSxicjpjLHRleDpoLnBhZGRlZFJl Y3Qsd3JpdGluZ01vZGU6dm9pZCAwLGdseXBoT2Zmc2V0OlswLDBdLHNlY3Rp b25JbmRleDowfV19KDAsaSxvLDAsdmMobi5ob3Jpem9udGFsKSx4KSxIPW8u bGF5b3V0LmdldCgiaWNvbi1yb3RhdGUiKS5ldmFsdWF0ZSh4LHt9KTtUPW5l dyB0YyhzLHIsZSxsLGMsdSxpLGcsdiwhMSx0Lm92ZXJzY2FsaW5nLEgpLFM9 NCpxLmxlbmd0aDt2YXIgRz10Lmljb25TaXplRGF0YSxZPW51bGw7InNvdXJj ZSI9PT1HLmtpbmQ/KFk9W19zKm8ubGF5b3V0LmdldCgiaWNvbi1zaXplIiku ZXZhbHVhdGUoeCx7fSldKVswXT5kYyYmdyh0LmxheWVySWRzWzBdKyc6IFZh bHVlIGZvciAiaWNvbi1zaXplIiBpcyA+PSAyNTYuIFJlZHVjZSB5b3VyICJp Y29uLXNpemUiLicpOiJjb21wb3NpdGUiPT09Ry5raW5kJiYoKFk9W19zKl8u Y29tcG9zaXRlSWNvblNpemVzWzBdLmV2YWx1YXRlKHgse30pLF9zKl8uY29t cG9zaXRlSWNvblNpemVzWzFdLmV2YWx1YXRlKHgse30pXSlbMF0+ZGN8fFlb MV0+ZGMpJiZ3KHQubGF5ZXJJZHNbMF0rJzogVmFsdWUgZm9yICJpY29uLXNp emUiIGlzID49IDI1Ni4gUmVkdWNlIHlvdXIgImljb24tc2l6ZSIuJyksdC5h ZGRTeW1ib2xzKHQuaWNvbixxLFkseSxtLHgsITEsZSxBLmxpbmVTdGFydElu ZGV4LEEubGluZUxlbmd0aCl9dmFyIFc9VD9ULmJveFN0YXJ0SW5kZXg6dC5j b2xsaXNpb25Cb3hBcnJheS5sZW5ndGgsWD1UP1QuYm94RW5kSW5kZXg6dC5j b2xsaXNpb25Cb3hBcnJheS5sZW5ndGg7dC5nbHlwaE9mZnNldEFycmF5Lmxl bmd0aD49T3MuTUFYX0dMWVBIUyYmdygiVG9vIG1hbnkgZ2x5cGhzIGJlaW5n IHJlbmRlcmVkIGluIGEgdGlsZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9t YXBib3gvbWFwYm94LWdsLWpzL2lzc3Vlcy8yOTA3IiksdC5zeW1ib2xJbnN0 YW5jZXMuZW1wbGFjZUJhY2soZS54LGUueSxDLnJpZ2h0Pj0wP0MucmlnaHQ6 LTEsQy5jZW50ZXI+PTA/Qy5jZW50ZXI6LTEsQy5sZWZ0Pj0wP0MubGVmdDot MSxDLnZlcnRpY2FsfHwtMSxQLE4saixWLFUsVyxYLGwsRSxMLFMsMCxoLE8p fSh0LGMsbCxyLG4sdC5sYXllcnNbMF0sdC5jb2xsaXNpb25Cb3hBcnJheSxl LmluZGV4LGUuc291cmNlTGF5ZXJJbmRleCx0LmluZGV4LGcseCxrLHMsbSxi LFQsZixlLGksbyl9O2lmKCJsaW5lIj09PU0pZm9yKHZhciBFPTAsTD1mdW5j dGlvbih0LGUscixuLGkpe2Zvcih2YXIgbz1bXSxzPTA7czx0Lmxlbmd0aDtz KyspZm9yKHZhciBsPXRbc10sYz12b2lkIDAsdT0wO3U8bC5sZW5ndGgtMTt1 Kyspe3ZhciBoPWxbdV0sZj1sW3UrMV07aC54PDAmJmYueDwwfHwoaC54PDA/ aD1uZXcgYSgwLGgueSsoZi55LWgueSkqKCgwLWgueCkvKGYueC1oLngpKSku X3JvdW5kKCk6Zi54PDAmJihmPW5ldyBhKDAsaC55KyhmLnktaC55KSooKDAt aC54KS8oZi54LWgueCkpKS5fcm91bmQoKSksaC55PDAmJmYueTwwfHwoaC55 PDA/aD1uZXcgYShoLngrKGYueC1oLngpKigoMC1oLnkpLyhmLnktaC55KSks MCkuX3JvdW5kKCk6Zi55PDAmJihmPW5ldyBhKGgueCsoZi54LWgueCkqKCgw LWgueSkvKGYueS1oLnkpKSwwKS5fcm91bmQoKSksaC54Pj1uJiZmLng+PW58 fChoLng+PW4/aD1uZXcgYShuLGgueSsoZi55LWgueSkqKChuLWgueCkvKGYu eC1oLngpKSkuX3JvdW5kKCk6Zi54Pj1uJiYoZj1uZXcgYShuLGgueSsoZi55 LWgueSkqKChuLWgueCkvKGYueC1oLngpKSkuX3JvdW5kKCkpLGgueT49aSYm Zi55Pj1pfHwoaC55Pj1pP2g9bmV3IGEoaC54KyhmLngtaC54KSooKGktaC55 KS8oZi55LWgueSkpLGkpLl9yb3VuZCgpOmYueT49aSYmKGY9bmV3IGEoaC54 KyhmLngtaC54KSooKGktaC55KS8oZi55LWgueSkpLGkpLl9yb3VuZCgpKSxj JiZoLmVxdWFscyhjW2MubGVuZ3RoLTFdKXx8KGM9W2hdLG8ucHVzaChjKSks Yy5wdXNoKGYpKSkpKX1yZXR1cm4gb30oZS5nZW9tZXRyeSwwLDAsZWksZWkp O0U8TC5sZW5ndGg7RSs9MSlmb3IodmFyIEM9TFtFXSxQPTAsTz0kbChDLHks XyxyLnZlcnRpY2FsfHxwLG4sMjQsdix0Lm92ZXJzY2FsaW5nLGVpKTtQPE8u bGVuZ3RoO1ArPTEpe3ZhciB6PU9bUF07cCYmbWModCxwLnRleHQsQSx6KXx8 UyhDLHopfWVsc2UgaWYoImxpbmUtY2VudGVyIj09PU0pZm9yKHZhciBJPTAs RD1lLmdlb21ldHJ5O0k8RC5sZW5ndGg7SSs9MSl7dmFyIFI9RFtJXTtpZihS Lmxlbmd0aD4xKXt2YXIgRj1RbChSLF8sci52ZXJ0aWNhbHx8cCxuLDI0LHYp O0YmJlMoUixGKX19ZWxzZSBpZigiUG9seWdvbiI9PT1lLnR5cGUpZm9yKHZh ciBCPTAsTj1tbyhlLmdlb21ldHJ5LDApO0I8Ti5sZW5ndGg7Qis9MSl7dmFy IGo9TltCXSxWPW5jKGosMTYpO1MoalswXSxuZXcgYnMoVi54LFYueSwwKSl9 ZWxzZSBpZigiTGluZVN0cmluZyI9PT1lLnR5cGUpZm9yKHZhciBVPTAscT1l Lmdlb21ldHJ5O1U8cS5sZW5ndGg7VSs9MSl7dmFyIEg9cVtVXTtTKEgsbmV3 IGJzKEhbMF0ueCxIWzBdLnksMCkpfWVsc2UgaWYoIlBvaW50Ij09PWUudHlw ZSlmb3IodmFyIEc9MCxZPWUuZ2VvbWV0cnk7RzxZLmxlbmd0aDtHKz0xKWZv cih2YXIgVz0wLFg9WVtHXTtXPFgubGVuZ3RoO1crPTEpe3ZhciBaPVhbV107 UyhbWl0sbmV3IGJzKFoueCxaLnksMCkpfX0odCxvLGgsRCxjLHUscCl9LF89 MCxrPXQuZmVhdHVyZXM7XzxrLmxlbmd0aDtfKz0xKWIoKTtvJiZ0LmdlbmVy YXRlQ29sbGlzaW9uRGVidWdCdWZmZXJzKCl9LHQucGVyc3BlY3RpdmU9ZnVu Y3Rpb24odCxlLHIsbixhKXt2YXIgaSxvPTEvTWF0aC50YW4oZS8yKTtyZXR1 cm4gdFswXT1vL3IsdFsxXT0wLHRbMl09MCx0WzNdPTAsdFs0XT0wLHRbNV09 byx0WzZdPTAsdFs3XT0wLHRbOF09MCx0WzldPTAsdFsxMV09LTEsdFsxMl09 MCx0WzEzXT0wLHRbMTVdPTAsbnVsbCE9YSYmYSE9PTEvMD8oaT0xLyhuLWEp LHRbMTBdPShhK24pKmksdFsxNF09MiphKm4qaSk6KHRbMTBdPS0xLHRbMTRd PS0yKm4pLHR9LHQucGljaz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj17fSxu PTA7bjxlLmxlbmd0aDtuKyspe3ZhciBhPWVbbl07YSBpbiB0JiYoclthXT10 W2FdKX1yZXR1cm4gcn0sdC5wbHVnaW49Q24sdC5wb2x5Z29uSW50ZXJzZWN0 c1BvbHlnb249b2ksdC5wb3N0TWFwTG9hZEV2ZW50PWV0LHQucG9zdFR1cm5z dGlsZUV2ZW50PSQsdC5wb3RwYWNrPXFzLHQucmFzdGVyQm91bmRzQXR0cmli dXRlcz1ObCx0LnJlZlByb3BlcnRpZXM9WyJ0eXBlIiwic291cmNlIiwic291 cmNlLWxheWVyIiwibWluem9vbSIsIm1heHpvb20iLCJmaWx0ZXIiLCJsYXlv dXQiXSx0LnJlZ2lzdGVyPWRuLHQucmVnaXN0ZXJGb3JQbHVnaW5BdmFpbGFi aWxpdHk9ZnVuY3Rpb24odCl7cmV0dXJuIFNuP3Qoe3BsdWdpblVSTDpTbixj b21wbGV0aW9uQ2FsbGJhY2s6TW59KTpMbi5vbmNlKCJwbHVnaW5BdmFpbGFi bGUiLHQpLHR9LHQucm90YXRlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lWzBd LGE9ZVsxXSxpPWVbMl0sbz1lWzNdLHM9TWF0aC5zaW4ociksbD1NYXRoLmNv cyhyKTtyZXR1cm4gdFswXT1uKmwraSpzLHRbMV09YSpsK28qcyx0WzJdPW4q LXMraSpsLHRbM109YSotcytvKmwsdH0sdC5yb3RhdGVYPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgbj1NYXRoLnNpbihyKSxhPU1hdGguY29zKHIpLGk9ZVs0XSxv PWVbNV0scz1lWzZdLGw9ZVs3XSxjPWVbOF0sdT1lWzldLGg9ZVsxMF0sZj1l WzExXTtyZXR1cm4gZSE9PXQmJih0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09 ZVsyXSx0WzNdPWVbM10sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09 ZVsxNF0sdFsxNV09ZVsxNV0pLHRbNF09aSphK2Mqbix0WzVdPW8qYSt1Km4s dFs2XT1zKmEraCpuLHRbN109bCphK2Yqbix0WzhdPWMqYS1pKm4sdFs5XT11 KmEtbypuLHRbMTBdPWgqYS1zKm4sdFsxMV09ZiphLWwqbix0fSx0LnJvdGF0 ZVo9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPU1hdGguc2luKHIpLGE9TWF0aC5j b3MociksaT1lWzBdLG89ZVsxXSxzPWVbMl0sbD1lWzNdLGM9ZVs0XSx1PWVb NV0saD1lWzZdLGY9ZVs3XTtyZXR1cm4gZSE9PXQmJih0WzhdPWVbOF0sdFs5 XT1lWzldLHRbMTBdPWVbMTBdLHRbMTFdPWVbMTFdLHRbMTJdPWVbMTJdLHRb MTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdKSx0WzBdPWkqYStj Km4sdFsxXT1vKmErdSpuLHRbMl09cyphK2gqbix0WzNdPWwqYStmKm4sdFs0 XT1jKmEtaSpuLHRbNV09dSphLW8qbix0WzZdPWgqYS1zKm4sdFs3XT1mKmEt bCpuLHR9LHQuc2NhbGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXJbMF0sYT1y WzFdLGk9clsyXTtyZXR1cm4gdFswXT1lWzBdKm4sdFsxXT1lWzFdKm4sdFsy XT1lWzJdKm4sdFszXT1lWzNdKm4sdFs0XT1lWzRdKmEsdFs1XT1lWzVdKmEs dFs2XT1lWzZdKmEsdFs3XT1lWzddKmEsdFs4XT1lWzhdKmksdFs5XT1lWzld KmksdFsxMF09ZVsxMF0qaSx0WzExXT1lWzExXSppLHRbMTJdPWVbMTJdLHRb MTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdLHR9LHQuc2V0Q2Fj aGVMaW1pdHM9ZnVuY3Rpb24odCxlKXtudD10LGF0PWV9LHQuc2V0UlRMVGV4 dFBsdWdpbj1mdW5jdGlvbih0LGUpe2lmKEFuKXRocm93IG5ldyBFcnJvcigi c2V0UlRMVGV4dFBsdWdpbiBjYW5ub3QgYmUgY2FsbGVkIG11bHRpcGxlIHRp bWVzLiIpO0FuPSEwLFNuPUkucmVzb2x2ZVVSTCh0KSxNbj1mdW5jdGlvbih0 KXt0PyhBbj0hMSxTbj1udWxsLGUmJmUodCkpOkVuPSEwfSxMbi5maXJlKG5l dyBfdCgicGx1Z2luQXZhaWxhYmxlIix7cGx1Z2luVVJMOlNuLGNvbXBsZXRp b25DYWxsYmFjazpNbn0pKX0sdC5zcGhlcmljYWxUb0NhcnRlc2lhbj1mdW5j dGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXSxuPXRbMl07cmV0dXJuIHIrPTkw LHIqPU1hdGguUEkvMTgwLG4qPU1hdGguUEkvMTgwLHt4OmUqTWF0aC5jb3Mo cikqTWF0aC5zaW4obikseTplKk1hdGguc2luKHIpKk1hdGguc2luKG4pLHo6 ZSpNYXRoLmNvcyhuKX19LHQuc3R5bGVTcGVjPVR0LHQuc3ltYm9sU2l6ZT1N cyx0LnRyYW5zZm9ybU1hdDM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0s YT1lWzFdLGk9ZVsyXTtyZXR1cm4gdFswXT1uKnJbMF0rYSpyWzNdK2kqcls2 XSx0WzFdPW4qclsxXSthKnJbNF0raSpyWzddLHRbMl09bipyWzJdK2Eqcls1 XStpKnJbOF0sdH0sdC50cmFuc2Zvcm1NYXQ0PVRpLHQudHJhbnNsYXRlPWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbixhLGksbyxzLGwsYyx1LGgsZixwLGQsZz1y WzBdLHY9clsxXSxtPXJbMl07cmV0dXJuIGU9PT10Pyh0WzEyXT1lWzBdKmcr ZVs0XSp2K2VbOF0qbStlWzEyXSx0WzEzXT1lWzFdKmcrZVs1XSp2K2VbOV0q bStlWzEzXSx0WzE0XT1lWzJdKmcrZVs2XSp2K2VbMTBdKm0rZVsxNF0sdFsx NV09ZVszXSpnK2VbN10qditlWzExXSptK2VbMTVdKToobj1lWzBdLGE9ZVsx XSxpPWVbMl0sbz1lWzNdLHM9ZVs0XSxsPWVbNV0sYz1lWzZdLHU9ZVs3XSxo PWVbOF0sZj1lWzldLHA9ZVsxMF0sZD1lWzExXSx0WzBdPW4sdFsxXT1hLHRb Ml09aSx0WzNdPW8sdFs0XT1zLHRbNV09bCx0WzZdPWMsdFs3XT11LHRbOF09 aCx0WzldPWYsdFsxMF09cCx0WzExXT1kLHRbMTJdPW4qZytzKnYraCptK2Vb MTJdLHRbMTNdPWEqZytsKnYrZiptK2VbMTNdLHRbMTRdPWkqZytjKnYrcCpt K2VbMTRdLHRbMTVdPW8qZyt1KnYrZCptK2VbMTVdKSx0fSx0LnVuaXF1ZUlk PXAsdC52YWxpZGF0ZUN1c3RvbVN0eWxlTGF5ZXI9ZnVuY3Rpb24odCl7dmFy IGU9W10scj10LmlkO3JldHVybiB2b2lkIDA9PT1yJiZlLnB1c2goe21lc3Nh Z2U6ImxheWVycy4iK3IrJzogbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSAi aWQiJ30pLHZvaWQgMD09PXQucmVuZGVyJiZlLnB1c2goe21lc3NhZ2U6Imxh eWVycy4iK3IrJzogbWlzc2luZyByZXF1aXJlZCBtZXRob2QgInJlbmRlciIn fSksdC5yZW5kZXJpbmdNb2RlJiYiMmQiIT09dC5yZW5kZXJpbmdNb2RlJiYi M2QiIT09dC5yZW5kZXJpbmdNb2RlJiZlLnB1c2goe21lc3NhZ2U6ImxheWVy cy4iK3IrJzogcHJvcGVydHkgInJlbmRlcmluZ01vZGUiIG11c3QgYmUgZWl0 aGVyICIyZCIgb3IgIjNkIid9KSxlfSx0LnZhbGlkYXRlTGlnaHQ9YW4sdC52 YWxpZGF0ZVN0eWxlPW5uLHQudmFsdWVzPWZ1bmN0aW9uKHQpe3ZhciBlPVtd O2Zvcih2YXIgciBpbiB0KWUucHVzaCh0W3JdKTtyZXR1cm4gZX0sdC52ZWN0 b3JUaWxlPUlvLHQudmVyc2lvbj0iMS4zLjIiLHQud2Fybk9uY2U9dyx0Lndl YnBTdXBwb3J0ZWQ9Uix0LndpbmRvdz1zZWxmLHQud3JhcD11fSksbigwLGZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dmFyIHI9dHlwZW9mIHQ7aWYoIm51 bWJlciI9PT1yfHwiYm9vbGVhbiI9PT1yfHwic3RyaW5nIj09PXJ8fG51bGw9 PXQpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpO2lmKEFycmF5LmlzQXJyYXko dCkpe2Zvcih2YXIgbj0iWyIsYT0wLGk9dDthPGkubGVuZ3RoO2ErPTEpbis9 ZShpW2FdKSsiLCI7cmV0dXJuIG4rIl0ifWZvcih2YXIgbz1PYmplY3Qua2V5 cyh0KS5zb3J0KCkscz0ieyIsbD0wO2w8by5sZW5ndGg7bCsrKXMrPUpTT04u c3RyaW5naWZ5KG9bbF0pKyI6IitlKHRbb1tsXV0pKyIsIjtyZXR1cm4gcysi fSJ9ZnVuY3Rpb24gcihyKXtmb3IodmFyIG49IiIsYT0wLGk9dC5yZWZQcm9w ZXJ0aWVzO2E8aS5sZW5ndGg7YSs9MSluKz0iLyIrZShyW2lbYV1dKTtyZXR1 cm4gbn12YXIgbj1mdW5jdGlvbih0KXt0aGlzLmtleUNhY2hlPXt9LHQmJnRo aXMucmVwbGFjZSh0KX07bi5wcm90b3R5cGUucmVwbGFjZT1mdW5jdGlvbih0 KXt0aGlzLl9sYXllckNvbmZpZ3M9e30sdGhpcy5fbGF5ZXJzPXt9LHRoaXMu dXBkYXRlKHQsW10pfSxuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSxu KXtmb3IodmFyIGE9dGhpcyxpPTAsbz1lO2k8by5sZW5ndGg7aSs9MSl7dmFy IHM9b1tpXTt0aGlzLl9sYXllckNvbmZpZ3Nbcy5pZF09czt2YXIgbD10aGlz Ll9sYXllcnNbcy5pZF09dC5jcmVhdGVTdHlsZUxheWVyKHMpO2wuX2ZlYXR1 cmVGaWx0ZXI9dC5mZWF0dXJlRmlsdGVyKGwuZmlsdGVyKSx0aGlzLmtleUNh Y2hlW3MuaWRdJiZkZWxldGUgdGhpcy5rZXlDYWNoZVtzLmlkXX1mb3IodmFy IGM9MCx1PW47Yzx1Lmxlbmd0aDtjKz0xKXt2YXIgaD11W2NdO2RlbGV0ZSB0 aGlzLmtleUNhY2hlW2hdLGRlbGV0ZSB0aGlzLl9sYXllckNvbmZpZ3NbaF0s ZGVsZXRlIHRoaXMuX2xheWVyc1toXX10aGlzLmZhbWlsaWVzQnlTb3VyY2U9 e307Zm9yKHZhciBmPTAscD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj17fSxh PTA7YTx0Lmxlbmd0aDthKyspe3ZhciBpPWUmJmVbdFthXS5pZF18fHIodFth XSk7ZSYmKGVbdFthXS5pZF09aSk7dmFyIG89bltpXTtvfHwobz1uW2ldPVtd KSxvLnB1c2godFthXSl9dmFyIHM9W107Zm9yKHZhciBsIGluIG4pcy5wdXNo KG5bbF0pO3JldHVybiBzfSh0LnZhbHVlcyh0aGlzLl9sYXllckNvbmZpZ3Mp LHRoaXMua2V5Q2FjaGUpO2Y8cC5sZW5ndGg7Zis9MSl7dmFyIGQ9cFtmXS5t YXAoZnVuY3Rpb24odCl7cmV0dXJuIGEuX2xheWVyc1t0LmlkXX0pLGc9ZFsw XTtpZigibm9uZSIhPT1nLnZpc2liaWxpdHkpe3ZhciB2PWcuc291cmNlfHwi IixtPXRoaXMuZmFtaWxpZXNCeVNvdXJjZVt2XTttfHwobT10aGlzLmZhbWls aWVzQnlTb3VyY2Vbdl09e30pO3ZhciB5PWcuc291cmNlTGF5ZXJ8fCJfZ2Vv anNvblRpbGVMYXllciIseD1tW3ldO3h8fCh4PW1beV09W10pLHgucHVzaChk KX19fTt2YXIgYT1mdW5jdGlvbihlKXt2YXIgcj17fSxuPVtdO2Zvcih2YXIg YSBpbiBlKXt2YXIgaT1lW2FdLG89clthXT17fTtmb3IodmFyIHMgaW4gaSl7 dmFyIGw9aVsrc107aWYobCYmMCE9PWwuYml0bWFwLndpZHRoJiYwIT09bC5i aXRtYXAuaGVpZ2h0KXt2YXIgYz17eDowLHk6MCx3OmwuYml0bWFwLndpZHRo KzIsaDpsLmJpdG1hcC5oZWlnaHQrMn07bi5wdXNoKGMpLG9bc109e3JlY3Q6 YyxtZXRyaWNzOmwubWV0cmljc319fX12YXIgdT10LnBvdHBhY2sobiksaD11 LncsZj11LmgscD1uZXcgdC5BbHBoYUltYWdlKHt3aWR0aDpofHwxLGhlaWdo dDpmfHwxfSk7Zm9yKHZhciBkIGluIGUpe3ZhciBnPWVbZF07Zm9yKHZhciB2 IGluIGcpe3ZhciBtPWdbK3ZdO2lmKG0mJjAhPT1tLmJpdG1hcC53aWR0aCYm MCE9PW0uYml0bWFwLmhlaWdodCl7dmFyIHk9cltkXVt2XS5yZWN0O3QuQWxw aGFJbWFnZS5jb3B5KG0uYml0bWFwLHAse3g6MCx5OjB9LHt4OnkueCsxLHk6 eS55KzF9LG0uYml0bWFwKX19fXRoaXMuaW1hZ2U9cCx0aGlzLnBvc2l0aW9u cz1yfTt0LnJlZ2lzdGVyKCJHbHlwaEF0bGFzIixhKTt2YXIgaT1mdW5jdGlv bihlKXt0aGlzLnRpbGVJRD1uZXcgdC5PdmVyc2NhbGVkVGlsZUlEKGUudGls ZUlELm92ZXJzY2FsZWRaLGUudGlsZUlELndyYXAsZS50aWxlSUQuY2Fub25p Y2FsLnosZS50aWxlSUQuY2Fub25pY2FsLngsZS50aWxlSUQuY2Fub25pY2Fs LnkpLHRoaXMudWlkPWUudWlkLHRoaXMuem9vbT1lLnpvb20sdGhpcy5waXhl bFJhdGlvPWUucGl4ZWxSYXRpbyx0aGlzLnRpbGVTaXplPWUudGlsZVNpemUs dGhpcy5zb3VyY2U9ZS5zb3VyY2UsdGhpcy5vdmVyc2NhbGluZz10aGlzLnRp bGVJRC5vdmVyc2NhbGVGYWN0b3IoKSx0aGlzLnNob3dDb2xsaXNpb25Cb3hl cz1lLnNob3dDb2xsaXNpb25Cb3hlcyx0aGlzLmNvbGxlY3RSZXNvdXJjZVRp bWluZz0hIWUuY29sbGVjdFJlc291cmNlVGltaW5nLHRoaXMucmV0dXJuRGVw ZW5kZW5jaWVzPSEhZS5yZXR1cm5EZXBlbmRlbmNpZXN9O2Z1bmN0aW9uIG8o ZSxyKXtmb3IodmFyIG49bmV3IHQuRXZhbHVhdGlvblBhcmFtZXRlcnMociks YT0wLGk9ZTthPGkubGVuZ3RoO2ErPTEpaVthXS5yZWNhbGN1bGF0ZShuKX1p LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlLHIsbixpKXt2YXIgcz10aGlz O3RoaXMuc3RhdHVzPSJwYXJzaW5nIix0aGlzLmRhdGE9ZSx0aGlzLmNvbGxp c2lvbkJveEFycmF5PW5ldyB0LkNvbGxpc2lvbkJveEFycmF5O3ZhciBsPW5l dyB0LkRpY3Rpb25hcnlDb2RlcihPYmplY3Qua2V5cyhlLmxheWVycykuc29y dCgpKSxjPW5ldyB0LkZlYXR1cmVJbmRleCh0aGlzLnRpbGVJRCk7Yy5idWNr ZXRMYXllcklEcz1bXTt2YXIgdSxoLGYscCxkPXt9LGc9e2ZlYXR1cmVJbmRl eDpjLGljb25EZXBlbmRlbmNpZXM6e30scGF0dGVybkRlcGVuZGVuY2llczp7 fSxnbHlwaERlcGVuZGVuY2llczp7fX0sdj1yLmZhbWlsaWVzQnlTb3VyY2Vb dGhpcy5zb3VyY2VdO2Zvcih2YXIgbSBpbiB2KXt2YXIgeT1lLmxheWVyc1tt XTtpZih5KXsxPT09eS52ZXJzaW9uJiZ0Lndhcm5PbmNlKCdWZWN0b3IgdGls ZSBzb3VyY2UgIicrdGhpcy5zb3VyY2UrJyIgbGF5ZXIgIicrbSsnIiBkb2Vz IG5vdCB1c2UgdmVjdG9yIHRpbGUgc3BlYyB2MiBhbmQgdGhlcmVmb3JlIG1h eSBoYXZlIHNvbWUgcmVuZGVyaW5nIGVycm9ycy4nKTtmb3IodmFyIHg9bC5l bmNvZGUobSksYj1bXSxfPTA7Xzx5Lmxlbmd0aDtfKyspe3ZhciB3PXkuZmVh dHVyZShfKTtiLnB1c2goe2ZlYXR1cmU6dyxpbmRleDpfLHNvdXJjZUxheWVy SW5kZXg6eH0pfWZvcih2YXIgaz0wLFQ9dlttXTtrPFQubGVuZ3RoO2srPTEp e3ZhciBNPVRba10sQT1NWzBdO0EubWluem9vbSYmdGhpcy56b29tPE1hdGgu Zmxvb3IoQS5taW56b29tKXx8QS5tYXh6b29tJiZ0aGlzLnpvb20+PUEubWF4 em9vbXx8Im5vbmUiIT09QS52aXNpYmlsaXR5JiYobyhNLHRoaXMuem9vbSks KGRbQS5pZF09QS5jcmVhdGVCdWNrZXQoe2luZGV4OmMuYnVja2V0TGF5ZXJJ RHMubGVuZ3RoLGxheWVyczpNLHpvb206dGhpcy56b29tLHBpeGVsUmF0aW86 dGhpcy5waXhlbFJhdGlvLG92ZXJzY2FsaW5nOnRoaXMub3ZlcnNjYWxpbmcs Y29sbGlzaW9uQm94QXJyYXk6dGhpcy5jb2xsaXNpb25Cb3hBcnJheSxzb3Vy Y2VMYXllckluZGV4Ongsc291cmNlSUQ6dGhpcy5zb3VyY2V9KSkucG9wdWxh dGUoYixnKSxjLmJ1Y2tldExheWVySURzLnB1c2goTS5tYXAoZnVuY3Rpb24o dCl7cmV0dXJuIHQuaWR9KSkpfX19dmFyIFM9dC5tYXBPYmplY3QoZy5nbHlw aERlcGVuZGVuY2llcyxmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmtleXMo dCkubWFwKE51bWJlcil9KTtPYmplY3Qua2V5cyhTKS5sZW5ndGg/bi5zZW5k KCJnZXRHbHlwaHMiLHt1aWQ6dGhpcy51aWQsc3RhY2tzOlN9LGZ1bmN0aW9u KHQsZSl7dXx8KHU9dCxoPWUsQy5jYWxsKHMpKX0pOmg9e307dmFyIEU9T2Jq ZWN0LmtleXMoZy5pY29uRGVwZW5kZW5jaWVzKTtFLmxlbmd0aD9uLnNlbmQo ImdldEltYWdlcyIse2ljb25zOkV9LGZ1bmN0aW9uKHQsZSl7dXx8KHU9dCxm PWUsQy5jYWxsKHMpKX0pOmY9e307dmFyIEw9T2JqZWN0LmtleXMoZy5wYXR0 ZXJuRGVwZW5kZW5jaWVzKTtmdW5jdGlvbiBDKCl7aWYodSlyZXR1cm4gaSh1 KTtpZihoJiZmJiZwKXt2YXIgZT1uZXcgYShoKSxyPW5ldyB0LkltYWdlQXRs YXMoZixwKTtmb3IodmFyIG4gaW4gZCl7dmFyIHM9ZFtuXTtzIGluc3RhbmNl b2YgdC5TeW1ib2xCdWNrZXQ/KG8ocy5sYXllcnMsdGhpcy56b29tKSx0LnBl cmZvcm1TeW1ib2xMYXlvdXQocyxoLGUucG9zaXRpb25zLGYsci5pY29uUG9z aXRpb25zLHRoaXMuc2hvd0NvbGxpc2lvbkJveGVzKSk6cy5oYXNQYXR0ZXJu JiYocyBpbnN0YW5jZW9mIHQuTGluZUJ1Y2tldHx8cyBpbnN0YW5jZW9mIHQu RmlsbEJ1Y2tldHx8cyBpbnN0YW5jZW9mIHQuRmlsbEV4dHJ1c2lvbkJ1Y2tl dCkmJihvKHMubGF5ZXJzLHRoaXMuem9vbSkscy5hZGRGZWF0dXJlcyhnLHIu cGF0dGVyblBvc2l0aW9ucykpfXRoaXMuc3RhdHVzPSJkb25lIixpKG51bGws e2J1Y2tldHM6dC52YWx1ZXMoZCkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVy biF0LmlzRW1wdHkoKX0pLGZlYXR1cmVJbmRleDpjLGNvbGxpc2lvbkJveEFy cmF5OnRoaXMuY29sbGlzaW9uQm94QXJyYXksZ2x5cGhBdGxhc0ltYWdlOmUu aW1hZ2UsaW1hZ2VBdGxhczpyLGdseXBoTWFwOnRoaXMucmV0dXJuRGVwZW5k ZW5jaWVzP2g6bnVsbCxpY29uTWFwOnRoaXMucmV0dXJuRGVwZW5kZW5jaWVz P2Y6bnVsbCxnbHlwaFBvc2l0aW9uczp0aGlzLnJldHVybkRlcGVuZGVuY2ll cz9lLnBvc2l0aW9uczpudWxsfSl9fUwubGVuZ3RoP24uc2VuZCgiZ2V0SW1h Z2VzIix7aWNvbnM6TH0sZnVuY3Rpb24odCxlKXt1fHwodT10LHA9ZSxDLmNh bGwocykpfSk6cD17fSxDLmNhbGwodGhpcyl9O3ZhciBzPSJ1bmRlZmluZWQi IT10eXBlb2YgcGVyZm9ybWFuY2UsbD17Z2V0RW50cmllc0J5TmFtZTpmdW5j dGlvbih0KXtyZXR1cm4hIShzJiZwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uu Z2V0RW50cmllc0J5TmFtZSkmJnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5h bWUodCl9LG1hcms6ZnVuY3Rpb24odCl7cmV0dXJuISEocyYmcGVyZm9ybWFu Y2UmJnBlcmZvcm1hbmNlLm1hcmspJiZwZXJmb3JtYW5jZS5tYXJrKHQpfSxt ZWFzdXJlOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4hIShzJiZwZXJmb3JtYW5j ZSYmcGVyZm9ybWFuY2UubWVhc3VyZSkmJnBlcmZvcm1hbmNlLm1lYXN1cmUo dCxlLHIpfSxjbGVhck1hcmtzOmZ1bmN0aW9uKHQpe3JldHVybiEhKHMmJnBl cmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5jbGVhck1hcmtzKSYmcGVyZm9ybWFu Y2UuY2xlYXJNYXJrcyh0KX0sY2xlYXJNZWFzdXJlczpmdW5jdGlvbih0KXty ZXR1cm4hIShzJiZwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2UuY2xlYXJNZWFz dXJlcykmJnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXModCl9fSxjPWZ1bmN0 aW9uKHQpe3RoaXMuX21hcmtzPXtzdGFydDpbdC51cmwsInN0YXJ0Il0uam9p bigiIyIpLGVuZDpbdC51cmwsImVuZCJdLmpvaW4oIiMiKSxtZWFzdXJlOnQu dXJsLnRvU3RyaW5nKCl9LGwubWFyayh0aGlzLl9tYXJrcy5zdGFydCl9O2Z1 bmN0aW9uIHUoZSxyKXt2YXIgbj10LmdldEFycmF5QnVmZmVyKGUucmVxdWVz dCxmdW5jdGlvbihlLG4sYSxpKXtlP3IoZSk6biYmcihudWxsLHt2ZWN0b3JU aWxlOm5ldyB0LnZlY3RvclRpbGUuVmVjdG9yVGlsZShuZXcgdC5wYmYobikp LHJhd0RhdGE6bixjYWNoZUNvbnRyb2w6YSxleHBpcmVzOml9KX0pO3JldHVy biBmdW5jdGlvbigpe24uY2FuY2VsKCkscigpfX1jLnByb3RvdHlwZS5maW5p c2g9ZnVuY3Rpb24oKXtsLm1hcmsodGhpcy5fbWFya3MuZW5kKTt2YXIgdD1s LmdldEVudHJpZXNCeU5hbWUodGhpcy5fbWFya3MubWVhc3VyZSk7cmV0dXJu IDA9PT10Lmxlbmd0aCYmKGwubWVhc3VyZSh0aGlzLl9tYXJrcy5tZWFzdXJl LHRoaXMuX21hcmtzLnN0YXJ0LHRoaXMuX21hcmtzLmVuZCksdD1sLmdldEVu dHJpZXNCeU5hbWUodGhpcy5fbWFya3MubWVhc3VyZSksbC5jbGVhck1hcmtz KHRoaXMuX21hcmtzLnN0YXJ0KSxsLmNsZWFyTWFya3ModGhpcy5fbWFya3Mu ZW5kKSxsLmNsZWFyTWVhc3VyZXModGhpcy5fbWFya3MubWVhc3VyZSkpLHR9 LGwuUGVyZm9ybWFuY2U9Yzt2YXIgaD1mdW5jdGlvbih0LGUscil7dGhpcy5h Y3Rvcj10LHRoaXMubGF5ZXJJbmRleD1lLHRoaXMubG9hZFZlY3RvckRhdGE9 cnx8dSx0aGlzLmxvYWRpbmc9e30sdGhpcy5sb2FkZWQ9e319O2gucHJvdG90 eXBlLmxvYWRUaWxlPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpcyxhPWUudWlk O3RoaXMubG9hZGluZ3x8KHRoaXMubG9hZGluZz17fSk7dmFyIG89ISEoZSYm ZS5yZXF1ZXN0JiZlLnJlcXVlc3QuY29sbGVjdFJlc291cmNlVGltaW5nKSYm bmV3IGwuUGVyZm9ybWFuY2UoZS5yZXF1ZXN0KSxzPXRoaXMubG9hZGluZ1th XT1uZXcgaShlKTtzLmFib3J0PXRoaXMubG9hZFZlY3RvckRhdGEoZSxmdW5j dGlvbihlLGkpe2lmKGRlbGV0ZSBuLmxvYWRpbmdbYV0sZXx8IWkpcmV0dXJu IHMuc3RhdHVzPSJkb25lIixuLmxvYWRlZFthXT1zLHIoZSk7dmFyIGw9aS5y YXdEYXRhLGM9e307aS5leHBpcmVzJiYoYy5leHBpcmVzPWkuZXhwaXJlcyks aS5jYWNoZUNvbnRyb2wmJihjLmNhY2hlQ29udHJvbD1pLmNhY2hlQ29udHJv bCk7dmFyIHU9e307aWYobyl7dmFyIGg9by5maW5pc2goKTtoJiYodS5yZXNv dXJjZVRpbWluZz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGgpKSl9cy52 ZWN0b3JUaWxlPWkudmVjdG9yVGlsZSxzLnBhcnNlKGkudmVjdG9yVGlsZSxu LmxheWVySW5kZXgsbi5hY3RvcixmdW5jdGlvbihlLG4pe2lmKGV8fCFuKXJl dHVybiByKGUpO3IobnVsbCx0LmV4dGVuZCh7cmF3VGlsZURhdGE6bC5zbGlj ZSgwKX0sbixjLHUpKX0pLG4ubG9hZGVkPW4ubG9hZGVkfHx7fSxuLmxvYWRl ZFthXT1zfSl9LGgucHJvdG90eXBlLnJlbG9hZFRpbGU9ZnVuY3Rpb24odCxl KXt2YXIgcj10aGlzLmxvYWRlZCxuPXQudWlkLGE9dGhpcztpZihyJiZyW25d KXt2YXIgaT1yW25dO2kuc2hvd0NvbGxpc2lvbkJveGVzPXQuc2hvd0NvbGxp c2lvbkJveGVzO3ZhciBvPWZ1bmN0aW9uKHQscil7dmFyIG49aS5yZWxvYWRD YWxsYmFjaztuJiYoZGVsZXRlIGkucmVsb2FkQ2FsbGJhY2ssaS5wYXJzZShp LnZlY3RvclRpbGUsYS5sYXllckluZGV4LGEuYWN0b3IsbikpLGUodCxyKX07 InBhcnNpbmciPT09aS5zdGF0dXM/aS5yZWxvYWRDYWxsYmFjaz1vOiJkb25l Ij09PWkuc3RhdHVzJiYoaS52ZWN0b3JUaWxlP2kucGFyc2UoaS52ZWN0b3JU aWxlLHRoaXMubGF5ZXJJbmRleCx0aGlzLmFjdG9yLG8pOm8oKSl9fSxoLnBy b3RvdHlwZS5hYm9ydFRpbGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxv YWRpbmcsbj10LnVpZDtyJiZyW25dJiZyW25dLmFib3J0JiYocltuXS5hYm9y dCgpLGRlbGV0ZSByW25dKSxlKCl9LGgucHJvdG90eXBlLnJlbW92ZVRpbGU9 ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxvYWRlZCxuPXQudWlkO3ImJnJb bl0mJmRlbGV0ZSByW25dLGUoKX07dmFyIGY9ZnVuY3Rpb24oKXt0aGlzLmxv YWRlZD17fX07Zi5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24oZSxyKXt2 YXIgbj1lLnVpZCxhPWUuZW5jb2RpbmcsaT1lLnJhd0ltYWdlRGF0YSxvPW5l dyB0LkRFTURhdGEobixpLGEpO3RoaXMubG9hZGVkPXRoaXMubG9hZGVkfHx7 fSx0aGlzLmxvYWRlZFtuXT1vLHIobnVsbCxvKX0sZi5wcm90b3R5cGUucmVt b3ZlVGlsZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxvYWRlZCxyPXQudWlk O2UmJmVbcl0mJmRlbGV0ZSBlW3JdfTt2YXIgcD17UkFESVVTOjYzNzgxMzcs RkxBVFRFTklORzoxLzI5OC4yNTcyMjM1NjMsUE9MQVJfUkFESVVTOjYzNTY3 NTIuMzE0Mn07ZnVuY3Rpb24gZCh0KXt2YXIgZT0wO2lmKHQmJnQubGVuZ3Ro PjApe2UrPU1hdGguYWJzKGcodFswXSkpO2Zvcih2YXIgcj0xO3I8dC5sZW5n dGg7cisrKWUtPU1hdGguYWJzKGcodFtyXSkpfXJldHVybiBlfWZ1bmN0aW9u IGcodCl7dmFyIGUscixuLGEsaSxvLHM9MCxsPXQubGVuZ3RoO2lmKGw+Mil7 Zm9yKG89MDtvPGw7bysrKW89PT1sLTI/KG49bC0yLGE9bC0xLGk9MCk6bz09 PWwtMT8obj1sLTEsYT0wLGk9MSk6KG49byxhPW8rMSxpPW8rMiksZT10W25d LHI9dFthXSxzKz0odih0W2ldWzBdKS12KGVbMF0pKSpNYXRoLnNpbih2KHJb MV0pKTtzPXMqcC5SQURJVVMqcC5SQURJVVMvMn1yZXR1cm4gc31mdW5jdGlv biB2KHQpe3JldHVybiB0Kk1hdGguUEkvMTgwfXZhciBtPXtnZW9tZXRyeTpm dW5jdGlvbiB0KGUpe3ZhciByLG49MDtzd2l0Y2goZS50eXBlKXtjYXNlIlBv bHlnb24iOnJldHVybiBkKGUuY29vcmRpbmF0ZXMpO2Nhc2UiTXVsdGlQb2x5 Z29uIjpmb3Iocj0wO3I8ZS5jb29yZGluYXRlcy5sZW5ndGg7cisrKW4rPWQo ZS5jb29yZGluYXRlc1tyXSk7cmV0dXJuIG47Y2FzZSJQb2ludCI6Y2FzZSJN dWx0aVBvaW50IjpjYXNlIkxpbmVTdHJpbmciOmNhc2UiTXVsdGlMaW5lU3Ry aW5nIjpyZXR1cm4gMDtjYXNlIkdlb21ldHJ5Q29sbGVjdGlvbiI6Zm9yKHI9 MDtyPGUuZ2VvbWV0cmllcy5sZW5ndGg7cisrKW4rPXQoZS5nZW9tZXRyaWVz W3JdKTtyZXR1cm4gbn19LHJpbmc6Z307ZnVuY3Rpb24geSh0LGUpe3JldHVy biBmdW5jdGlvbihyKXtyZXR1cm4gdChyLGUpfX1mdW5jdGlvbiB4KHQsZSl7 ZT0hIWUsdFswXT1iKHRbMF0sZSk7Zm9yKHZhciByPTE7cjx0Lmxlbmd0aDty KyspdFtyXT1iKHRbcl0sIWUpO3JldHVybiB0fWZ1bmN0aW9uIGIodCxlKXty ZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG0ucmluZyh0KT49MH0odCk9PT1l P3Q6dC5yZXZlcnNlKCl9dmFyIF89dC52ZWN0b3JUaWxlLlZlY3RvclRpbGVG ZWF0dXJlLnByb3RvdHlwZS50b0dlb0pTT04sdz1mdW5jdGlvbihlKXt0aGlz Ll9mZWF0dXJlPWUsdGhpcy5leHRlbnQ9dC5FWFRFTlQsdGhpcy50eXBlPWUu dHlwZSx0aGlzLnByb3BlcnRpZXM9ZS50YWdzLCJpZCJpbiBlJiYhaXNOYU4o ZS5pZCkmJih0aGlzLmlkPXBhcnNlSW50KGUuaWQsMTApKX07dy5wcm90b3R5 cGUubG9hZEdlb21ldHJ5PWZ1bmN0aW9uKCl7aWYoMT09PXRoaXMuX2ZlYXR1 cmUudHlwZSl7Zm9yKHZhciBlPVtdLHI9MCxuPXRoaXMuX2ZlYXR1cmUuZ2Vv bWV0cnk7cjxuLmxlbmd0aDtyKz0xKXt2YXIgYT1uW3JdO2UucHVzaChbbmV3 IHQuUG9pbnQkMShhWzBdLGFbMV0pXSl9cmV0dXJuIGV9Zm9yKHZhciBpPVtd LG89MCxzPXRoaXMuX2ZlYXR1cmUuZ2VvbWV0cnk7bzxzLmxlbmd0aDtvKz0x KXtmb3IodmFyIGw9W10sYz0wLHU9c1tvXTtjPHUubGVuZ3RoO2MrPTEpe3Zh ciBoPXVbY107bC5wdXNoKG5ldyB0LlBvaW50JDEoaFswXSxoWzFdKSl9aS5w dXNoKGwpfXJldHVybiBpfSx3LnByb3RvdHlwZS50b0dlb0pTT049ZnVuY3Rp b24odCxlLHIpe3JldHVybiBfLmNhbGwodGhpcyx0LGUscil9O3ZhciBrPWZ1 bmN0aW9uKGUpe3RoaXMubGF5ZXJzPXtfZ2VvanNvblRpbGVMYXllcjp0aGlz fSx0aGlzLm5hbWU9Il9nZW9qc29uVGlsZUxheWVyIix0aGlzLmV4dGVudD10 LkVYVEVOVCx0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLl9mZWF0dXJlcz1l fTtrLnByb3RvdHlwZS5mZWF0dXJlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcg dyh0aGlzLl9mZWF0dXJlc1t0XSl9O3ZhciBUPXQudmVjdG9yVGlsZS5WZWN0 b3JUaWxlRmVhdHVyZSxNPUE7ZnVuY3Rpb24gQSh0LGUpe3RoaXMub3B0aW9u cz1lfHx7fSx0aGlzLmZlYXR1cmVzPXQsdGhpcy5sZW5ndGg9dC5sZW5ndGh9 ZnVuY3Rpb24gUyh0LGUpe3RoaXMuaWQ9Im51bWJlciI9PXR5cGVvZiB0Lmlk P3QuaWQ6dm9pZCAwLHRoaXMudHlwZT10LnR5cGUsdGhpcy5yYXdHZW9tZXRy eT0xPT09dC50eXBlP1t0Lmdlb21ldHJ5XTp0Lmdlb21ldHJ5LHRoaXMucHJv cGVydGllcz10LnRhZ3MsdGhpcy5leHRlbnQ9ZXx8NDA5Nn1BLnByb3RvdHlw ZS5mZWF0dXJlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUyh0aGlzLmZlYXR1 cmVzW3RdLHRoaXMub3B0aW9ucy5leHRlbnQpfSxTLnByb3RvdHlwZS5sb2Fk R2VvbWV0cnk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJhd0dlb21ldHJ5O3Ro aXMuZ2VvbWV0cnk9W107Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe2Zv cih2YXIgbj1lW3JdLGE9W10saT0wO2k8bi5sZW5ndGg7aSsrKWEucHVzaChu ZXcgdC5Qb2ludCQxKG5baV1bMF0sbltpXVsxXSkpO3RoaXMuZ2VvbWV0cnku cHVzaChhKX1yZXR1cm4gdGhpcy5nZW9tZXRyeX0sUy5wcm90b3R5cGUuYmJv eD1mdW5jdGlvbigpe3RoaXMuZ2VvbWV0cnl8fHRoaXMubG9hZEdlb21ldHJ5 KCk7Zm9yKHZhciB0PXRoaXMuZ2VvbWV0cnksZT0xLzAscj0tMS8wLG49MS8w LGE9LTEvMCxpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKHZhciBvPXRbaV0scz0w O3M8by5sZW5ndGg7cysrKXt2YXIgbD1vW3NdO2U9TWF0aC5taW4oZSxsLngp LHI9TWF0aC5tYXgocixsLngpLG49TWF0aC5taW4obixsLnkpLGE9TWF0aC5t YXgoYSxsLnkpfXJldHVybltlLG4scixhXX0sUy5wcm90b3R5cGUudG9HZW9K U09OPVQucHJvdG90eXBlLnRvR2VvSlNPTjt2YXIgRT1QLEw9UCxDPU07ZnVu Y3Rpb24gUChlKXt2YXIgcj1uZXcgdC5wYmY7cmV0dXJuIGZ1bmN0aW9uKHQs ZSl7Zm9yKHZhciByIGluIHQubGF5ZXJzKWUud3JpdGVNZXNzYWdlKDMsTyx0 LmxheWVyc1tyXSl9KGUsciksci5maW5pc2goKX1mdW5jdGlvbiBPKHQsZSl7 dmFyIHI7ZS53cml0ZVZhcmludEZpZWxkKDE1LHQudmVyc2lvbnx8MSksZS53 cml0ZVN0cmluZ0ZpZWxkKDEsdC5uYW1lfHwiIiksZS53cml0ZVZhcmludEZp ZWxkKDUsdC5leHRlbnR8fDQwOTYpO3ZhciBuPXtrZXlzOltdLHZhbHVlczpb XSxrZXljYWNoZTp7fSx2YWx1ZWNhY2hlOnt9fTtmb3Iocj0wO3I8dC5sZW5n dGg7cisrKW4uZmVhdHVyZT10LmZlYXR1cmUociksZS53cml0ZU1lc3NhZ2Uo Mix6LG4pO3ZhciBhPW4ua2V5cztmb3Iocj0wO3I8YS5sZW5ndGg7cisrKWUu d3JpdGVTdHJpbmdGaWVsZCgzLGFbcl0pO3ZhciBpPW4udmFsdWVzO2Zvcihy PTA7cjxpLmxlbmd0aDtyKyspZS53cml0ZU1lc3NhZ2UoNCxCLGlbcl0pfWZ1 bmN0aW9uIHoodCxlKXt2YXIgcj10LmZlYXR1cmU7dm9pZCAwIT09ci5pZCYm ZS53cml0ZVZhcmludEZpZWxkKDEsci5pZCksZS53cml0ZU1lc3NhZ2UoMixJ LHQpLGUud3JpdGVWYXJpbnRGaWVsZCgzLHIudHlwZSksZS53cml0ZU1lc3Nh Z2UoNCxGLHIpfWZ1bmN0aW9uIEkodCxlKXt2YXIgcj10LmZlYXR1cmUsbj10 LmtleXMsYT10LnZhbHVlcyxpPXQua2V5Y2FjaGUsbz10LnZhbHVlY2FjaGU7 Zm9yKHZhciBzIGluIHIucHJvcGVydGllcyl7dmFyIGw9aVtzXTt2b2lkIDA9 PT1sJiYobi5wdXNoKHMpLGw9bi5sZW5ndGgtMSxpW3NdPWwpLGUud3JpdGVW YXJpbnQobCk7dmFyIGM9ci5wcm9wZXJ0aWVzW3NdLHU9dHlwZW9mIGM7InN0 cmluZyIhPT11JiYiYm9vbGVhbiIhPT11JiYibnVtYmVyIiE9PXUmJihjPUpT T04uc3RyaW5naWZ5KGMpKTt2YXIgaD11KyI6IitjLGY9b1toXTt2b2lkIDA9 PT1mJiYoYS5wdXNoKGMpLGY9YS5sZW5ndGgtMSxvW2hdPWYpLGUud3JpdGVW YXJpbnQoZil9fWZ1bmN0aW9uIEQodCxlKXtyZXR1cm4oZTw8MykrKDcmdCl9 ZnVuY3Rpb24gUih0KXtyZXR1cm4gdDw8MV50Pj4zMX1mdW5jdGlvbiBGKHQs ZSl7Zm9yKHZhciByPXQubG9hZEdlb21ldHJ5KCksbj10LnR5cGUsYT0wLGk9 MCxvPXIubGVuZ3RoLHM9MDtzPG87cysrKXt2YXIgbD1yW3NdLGM9MTsxPT09 biYmKGM9bC5sZW5ndGgpLGUud3JpdGVWYXJpbnQoRCgxLGMpKTtmb3IodmFy IHU9Mz09PW4/bC5sZW5ndGgtMTpsLmxlbmd0aCxoPTA7aDx1O2grKyl7MT09 PWgmJjEhPT1uJiZlLndyaXRlVmFyaW50KEQoMix1LTEpKTt2YXIgZj1sW2hd LngtYSxwPWxbaF0ueS1pO2Uud3JpdGVWYXJpbnQoUihmKSksZS53cml0ZVZh cmludChSKHApKSxhKz1mLGkrPXB9Mz09PW4mJmUud3JpdGVWYXJpbnQoRCg3 LDEpKX19ZnVuY3Rpb24gQih0LGUpe3ZhciByPXR5cGVvZiB0OyJzdHJpbmci PT09cj9lLndyaXRlU3RyaW5nRmllbGQoMSx0KToiYm9vbGVhbiI9PT1yP2Uu d3JpdGVCb29sZWFuRmllbGQoNyx0KToibnVtYmVyIj09PXImJih0JTEhPTA/ ZS53cml0ZURvdWJsZUZpZWxkKDMsdCk6dDwwP2Uud3JpdGVTVmFyaW50Rmll bGQoNix0KTplLndyaXRlVmFyaW50RmllbGQoNSx0KSl9ZnVuY3Rpb24gTih0 LGUscixuKXtqKHQscixuKSxqKGUsMipyLDIqbiksaihlLDIqcisxLDIqbisx KX1mdW5jdGlvbiBqKHQsZSxyKXt2YXIgbj10W2VdO3RbZV09dFtyXSx0W3Jd PW59ZnVuY3Rpb24gVih0LGUscixuKXt2YXIgYT10LXIsaT1lLW47cmV0dXJu IGEqYStpKml9RS5mcm9tVmVjdG9yVGlsZUpzPUwsRS5mcm9tR2VvanNvblZ0 PWZ1bmN0aW9uKHQsZSl7ZT1lfHx7fTt2YXIgcj17fTtmb3IodmFyIG4gaW4g dClyW25dPW5ldyBNKHRbbl0uZmVhdHVyZXMsZSkscltuXS5uYW1lPW4scltu XS52ZXJzaW9uPWUudmVyc2lvbixyW25dLmV4dGVudD1lLmV4dGVudDtyZXR1 cm4gUCh7bGF5ZXJzOnJ9KX0sRS5HZW9KU09OV3JhcHBlcj1DO3ZhciBVPWZ1 bmN0aW9uKHQpe3JldHVybiB0WzBdfSxxPWZ1bmN0aW9uKHQpe3JldHVybiB0 WzFdfSxIPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dm9pZCAwPT09ZSYmKGU9VSks dm9pZCAwPT09ciYmKHI9cSksdm9pZCAwPT09biYmKG49NjQpLHZvaWQgMD09 PWEmJihhPUZsb2F0NjRBcnJheSksdGhpcy5ub2RlU2l6ZT1uLHRoaXMucG9p bnRzPXQ7Zm9yKHZhciBpPXQubGVuZ3RoPDY1NTM2P1VpbnQxNkFycmF5OlVp bnQzMkFycmF5LG89dGhpcy5pZHM9bmV3IGkodC5sZW5ndGgpLHM9dGhpcy5j b29yZHM9bmV3IGEoMip0Lmxlbmd0aCksbD0wO2w8dC5sZW5ndGg7bCsrKW9b bF09bCxzWzIqbF09ZSh0W2xdKSxzWzIqbCsxXT1yKHRbbF0pOyFmdW5jdGlv biB0KGUscixuLGEsaSxvKXtpZighKGktYTw9bikpe3ZhciBzPWEraT4+MTsh ZnVuY3Rpb24gdChlLHIsbixhLGksbyl7Zm9yKDtpPmE7KXtpZihpLWE+NjAw KXt2YXIgcz1pLWErMSxsPW4tYSsxLGM9TWF0aC5sb2cocyksdT0uNSpNYXRo LmV4cCgyKmMvMyksaD0uNSpNYXRoLnNxcnQoYyp1KihzLXUpL3MpKihsLXMv MjwwPy0xOjEpO3QoZSxyLG4sTWF0aC5tYXgoYSxNYXRoLmZsb29yKG4tbCp1 L3MraCkpLE1hdGgubWluKGksTWF0aC5mbG9vcihuKyhzLWwpKnUvcytoKSks byl9dmFyIGY9clsyKm4rb10scD1hLGQ9aTtmb3IoTihlLHIsYSxuKSxyWzIq aStvXT5mJiZOKGUscixhLGkpO3A8ZDspe2ZvcihOKGUscixwLGQpLHArKyxk LS07clsyKnArb108ZjspcCsrO2Zvcig7clsyKmQrb10+ZjspZC0tfXJbMiph K29dPT09Zj9OKGUscixhLGQpOk4oZSxyLCsrZCxpKSxkPD1uJiYoYT1kKzEp LG48PWQmJihpPWQtMSl9fShlLHIscyxhLGksbyUyKSx0KGUscixuLGEscy0x LG8rMSksdChlLHIsbixzKzEsaSxvKzEpfX0obyxzLG4sMCxvLmxlbmd0aC0x LDApfTtILnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbih0LGUscixuKXtyZXR1 cm4gZnVuY3Rpb24odCxlLHIsbixhLGksbyl7Zm9yKHZhciBzLGwsYz1bMCx0 Lmxlbmd0aC0xLDBdLHU9W107Yy5sZW5ndGg7KXt2YXIgaD1jLnBvcCgpLGY9 Yy5wb3AoKSxwPWMucG9wKCk7aWYoZi1wPD1vKWZvcih2YXIgZD1wO2Q8PWY7 ZCsrKXM9ZVsyKmRdLGw9ZVsyKmQrMV0scz49ciYmczw9YSYmbD49biYmbDw9 aSYmdS5wdXNoKHRbZF0pO2Vsc2V7dmFyIGc9TWF0aC5mbG9vcigocCtmKS8y KTtzPWVbMipnXSxsPWVbMipnKzFdLHM+PXImJnM8PWEmJmw+PW4mJmw8PWkm JnUucHVzaCh0W2ddKTt2YXIgdj0oaCsxKSUyOygwPT09aD9yPD1zOm48PWwp JiYoYy5wdXNoKHApLGMucHVzaChnLTEpLGMucHVzaCh2KSksKDA9PT1oP2E+ PXM6aT49bCkmJihjLnB1c2goZysxKSxjLnB1c2goZiksYy5wdXNoKHYpKX19 cmV0dXJuIHV9KHRoaXMuaWRzLHRoaXMuY29vcmRzLHQsZSxyLG4sdGhpcy5u b2RlU2l6ZSl9LEgucHJvdG90eXBlLndpdGhpbj1mdW5jdGlvbih0LGUscil7 cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtmb3IodmFyIG89WzAsdC5s ZW5ndGgtMSwwXSxzPVtdLGw9YSphO28ubGVuZ3RoOyl7dmFyIGM9by5wb3Ao KSx1PW8ucG9wKCksaD1vLnBvcCgpO2lmKHUtaDw9aSlmb3IodmFyIGY9aDtm PD11O2YrKylWKGVbMipmXSxlWzIqZisxXSxyLG4pPD1sJiZzLnB1c2godFtm XSk7ZWxzZXt2YXIgcD1NYXRoLmZsb29yKChoK3UpLzIpLGQ9ZVsyKnBdLGc9 ZVsyKnArMV07VihkLGcscixuKTw9bCYmcy5wdXNoKHRbcF0pO3ZhciB2PShj KzEpJTI7KDA9PT1jP3ItYTw9ZDpuLWE8PWcpJiYoby5wdXNoKGgpLG8ucHVz aChwLTEpLG8ucHVzaCh2KSksKDA9PT1jP3IrYT49ZDpuK2E+PWcpJiYoby5w dXNoKHArMSksby5wdXNoKHUpLG8ucHVzaCh2KSl9fXJldHVybiBzfSh0aGlz Lmlkcyx0aGlzLmNvb3Jkcyx0LGUscix0aGlzLm5vZGVTaXplKX07dmFyIEc9 e21pblpvb206MCxtYXhab29tOjE2LHJhZGl1czo0MCxleHRlbnQ6NTEyLG5v ZGVTaXplOjY0LGxvZzohMSxyZWR1Y2U6bnVsbCxtYXA6ZnVuY3Rpb24odCl7 cmV0dXJuIHR9fSxZPWZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0kKE9iamVj dC5jcmVhdGUoRyksdCksdGhpcy50cmVlcz1uZXcgQXJyYXkodGhpcy5vcHRp b25zLm1heFpvb20rMSl9O2Z1bmN0aW9uIFcodCxlLHIsbixhKXtyZXR1cm57 eDp0LHk6ZSx6b29tOjEvMCxpZDpyLHBhcmVudElkOi0xLG51bVBvaW50czpu LHByb3BlcnRpZXM6YX19ZnVuY3Rpb24gWCh0LGUpe3ZhciByPXQuZ2VvbWV0 cnkuY29vcmRpbmF0ZXMsbj1yWzBdLGE9clsxXTtyZXR1cm57eDpLKG4pLHk6 UShhKSx6b29tOjEvMCxpbmRleDplLHBhcmVudElkOi0xfX1mdW5jdGlvbiBa KHQpe3JldHVybnt0eXBlOiJGZWF0dXJlIixpZDp0LmlkLHByb3BlcnRpZXM6 Sih0KSxnZW9tZXRyeTp7dHlwZToiUG9pbnQiLGNvb3JkaW5hdGVzOlsobj10 LngsMzYwKihuLS41KSksKGU9dC55LHI9KDE4MC0zNjAqZSkqTWF0aC5QSS8x ODAsMzYwKk1hdGguYXRhbihNYXRoLmV4cChyKSkvTWF0aC5QSS05MCldfX07 dmFyIGUscixufWZ1bmN0aW9uIEoodCl7dmFyIGU9dC5udW1Qb2ludHMscj1l Pj0xZTQ/TWF0aC5yb3VuZChlLzFlMykrImsiOmU+PTFlMz9NYXRoLnJvdW5k KGUvMTAwKS8xMCsiayI6ZTtyZXR1cm4gJCgkKHt9LHQucHJvcGVydGllcyks e2NsdXN0ZXI6ITAsY2x1c3Rlcl9pZDp0LmlkLHBvaW50X2NvdW50OmUscG9p bnRfY291bnRfYWJicmV2aWF0ZWQ6cn0pfWZ1bmN0aW9uIEsodCl7cmV0dXJu IHQvMzYwKy41fWZ1bmN0aW9uIFEodCl7dmFyIGU9TWF0aC5zaW4odCpNYXRo LlBJLzE4MCkscj0uNS0uMjUqTWF0aC5sb2coKDErZSkvKDEtZSkpL01hdGgu UEk7cmV0dXJuIHI8MD8wOnI+MT8xOnJ9ZnVuY3Rpb24gJCh0LGUpe2Zvcih2 YXIgciBpbiBlKXRbcl09ZVtyXTtyZXR1cm4gdH1mdW5jdGlvbiB0dCh0KXty ZXR1cm4gdC54fWZ1bmN0aW9uIGV0KHQpe3JldHVybiB0Lnl9ZnVuY3Rpb24g cnQodCxlLHIsbixhLGkpe3ZhciBvPWEtcixzPWktbjtpZigwIT09b3x8MCE9 PXMpe3ZhciBsPSgodC1yKSpvKyhlLW4pKnMpLyhvKm8rcypzKTtsPjE/KHI9 YSxuPWkpOmw+MCYmKHIrPW8qbCxuKz1zKmwpfXJldHVybihvPXQtcikqbyso cz1lLW4pKnN9ZnVuY3Rpb24gbnQodCxlLHIsbil7dmFyIGE9e2lkOnZvaWQg MD09PXQ/bnVsbDp0LHR5cGU6ZSxnZW9tZXRyeTpyLHRhZ3M6bixtaW5YOjEv MCxtaW5ZOjEvMCxtYXhYOi0xLzAsbWF4WTotMS8wfTtyZXR1cm4gZnVuY3Rp b24odCl7dmFyIGU9dC5nZW9tZXRyeSxyPXQudHlwZTtpZigiUG9pbnQiPT09 cnx8Ik11bHRpUG9pbnQiPT09cnx8IkxpbmVTdHJpbmciPT09cilhdCh0LGUp O2Vsc2UgaWYoIlBvbHlnb24iPT09cnx8Ik11bHRpTGluZVN0cmluZyI9PT1y KWZvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWF0KHQsZVtuXSk7ZWxzZSBp ZigiTXVsdGlQb2x5Z29uIj09PXIpZm9yKG49MDtuPGUubGVuZ3RoO24rKylm b3IodmFyIGE9MDthPGVbbl0ubGVuZ3RoO2ErKylhdCh0LGVbbl1bYV0pfShh KSxhfWZ1bmN0aW9uIGF0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDty Kz0zKXQubWluWD1NYXRoLm1pbih0Lm1pblgsZVtyXSksdC5taW5ZPU1hdGgu bWluKHQubWluWSxlW3IrMV0pLHQubWF4WD1NYXRoLm1heCh0Lm1heFgsZVty XSksdC5tYXhZPU1hdGgubWF4KHQubWF4WSxlW3IrMV0pfWZ1bmN0aW9uIGl0 KHQsZSxyLG4pe2lmKGUuZ2VvbWV0cnkpe3ZhciBhPWUuZ2VvbWV0cnkuY29v cmRpbmF0ZXMsaT1lLmdlb21ldHJ5LnR5cGUsbz1NYXRoLnBvdyhyLnRvbGVy YW5jZS8oKDE8PHIubWF4Wm9vbSkqci5leHRlbnQpLDIpLHM9W10sbD1lLmlk O2lmKHIucHJvbW90ZUlkP2w9ZS5wcm9wZXJ0aWVzW3IucHJvbW90ZUlkXTpy LmdlbmVyYXRlSWQmJihsPW58fDApLCJQb2ludCI9PT1pKW90KGEscyk7ZWxz ZSBpZigiTXVsdGlQb2ludCI9PT1pKWZvcih2YXIgYz0wO2M8YS5sZW5ndGg7 YysrKW90KGFbY10scyk7ZWxzZSBpZigiTGluZVN0cmluZyI9PT1pKXN0KGEs cyxvLCExKTtlbHNlIGlmKCJNdWx0aUxpbmVTdHJpbmciPT09aSl7aWYoci5s aW5lTWV0cmljcyl7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKylzPVtdLHN0KGFb Y10scyxvLCExKSx0LnB1c2gobnQobCwiTGluZVN0cmluZyIscyxlLnByb3Bl cnRpZXMpKTtyZXR1cm59bHQoYSxzLG8sITEpfWVsc2UgaWYoIlBvbHlnb24i PT09aSlsdChhLHMsbywhMCk7ZWxzZXtpZigiTXVsdGlQb2x5Z29uIiE9PWkp e2lmKCJHZW9tZXRyeUNvbGxlY3Rpb24iPT09aSl7Zm9yKGM9MDtjPGUuZ2Vv bWV0cnkuZ2VvbWV0cmllcy5sZW5ndGg7YysrKWl0KHQse2lkOmwsZ2VvbWV0 cnk6ZS5nZW9tZXRyeS5nZW9tZXRyaWVzW2NdLHByb3BlcnRpZXM6ZS5wcm9w ZXJ0aWVzfSxyLG4pO3JldHVybn10aHJvdyBuZXcgRXJyb3IoIklucHV0IGRh dGEgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3QuIil9Zm9yKGM9MDtj PGEubGVuZ3RoO2MrKyl7dmFyIHU9W107bHQoYVtjXSx1LG8sITApLHMucHVz aCh1KX19dC5wdXNoKG50KGwsaSxzLGUucHJvcGVydGllcykpfX1mdW5jdGlv biBvdCh0LGUpe2UucHVzaChjdCh0WzBdKSksZS5wdXNoKHV0KHRbMV0pKSxl LnB1c2goMCl9ZnVuY3Rpb24gc3QodCxlLHIsbil7Zm9yKHZhciBhLGksbz0w LHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGw9Y3QodFtzXVswXSksYz11dCh0 W3NdWzFdKTtlLnB1c2gobCksZS5wdXNoKGMpLGUucHVzaCgwKSxzPjAmJihv Kz1uPyhhKmMtbCppKS8yOk1hdGguc3FydChNYXRoLnBvdyhsLWEsMikrTWF0 aC5wb3coYy1pLDIpKSksYT1sLGk9Y312YXIgdT1lLmxlbmd0aC0zO2VbMl09 MSxmdW5jdGlvbiB0KGUscixuLGEpe2Zvcih2YXIgaSxvPWEscz1uLXI+PjEs bD1uLXIsYz1lW3JdLHU9ZVtyKzFdLGg9ZVtuXSxmPWVbbisxXSxwPXIrMztw PG47cCs9Myl7dmFyIGQ9cnQoZVtwXSxlW3ArMV0sYyx1LGgsZik7aWYoZD5v KWk9cCxvPWQ7ZWxzZSBpZihkPT09byl7dmFyIGc9TWF0aC5hYnMocC1zKTtn PGwmJihpPXAsbD1nKX19bz5hJiYoaS1yPjMmJnQoZSxyLGksYSksZVtpKzJd PW8sbi1pPjMmJnQoZSxpLG4sYSkpfShlLDAsdSxyKSxlW3UrMl09MSxlLnNp emU9TWF0aC5hYnMobyksZS5zdGFydD0wLGUuZW5kPWUuc2l6ZX1mdW5jdGlv biBsdCh0LGUscixuKXtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl7dmFy IGk9W107c3QodFthXSxpLHIsbiksZS5wdXNoKGkpfX1mdW5jdGlvbiBjdCh0 KXtyZXR1cm4gdC8zNjArLjV9ZnVuY3Rpb24gdXQodCl7dmFyIGU9TWF0aC5z aW4odCpNYXRoLlBJLzE4MCkscj0uNS0uMjUqTWF0aC5sb2coKDErZSkvKDEt ZSkpL01hdGguUEk7cmV0dXJuIHI8MD8wOnI+MT8xOnJ9ZnVuY3Rpb24gaHQo dCxlLHIsbixhLGksbyxzKXtpZihuLz1lLGk+PShyLz1lKSYmbzxuKXJldHVy biB0O2lmKG88cnx8aT49bilyZXR1cm4gbnVsbDtmb3IodmFyIGw9W10sYz0w O2M8dC5sZW5ndGg7YysrKXt2YXIgdT10W2NdLGg9dS5nZW9tZXRyeSxmPXUu dHlwZSxwPTA9PT1hP3UubWluWDp1Lm1pblksZD0wPT09YT91Lm1heFg6dS5t YXhZO2lmKHA+PXImJmQ8bilsLnB1c2godSk7ZWxzZSBpZighKGQ8cnx8cD49 bikpe3ZhciBnPVtdO2lmKCJQb2ludCI9PT1mfHwiTXVsdGlQb2ludCI9PT1m KWZ0KGgsZyxyLG4sYSk7ZWxzZSBpZigiTGluZVN0cmluZyI9PT1mKXB0KGgs ZyxyLG4sYSwhMSxzLmxpbmVNZXRyaWNzKTtlbHNlIGlmKCJNdWx0aUxpbmVT dHJpbmciPT09ZilndChoLGcscixuLGEsITEpO2Vsc2UgaWYoIlBvbHlnb24i PT09ZilndChoLGcscixuLGEsITApO2Vsc2UgaWYoIk11bHRpUG9seWdvbiI9 PT1mKWZvcih2YXIgdj0wO3Y8aC5sZW5ndGg7disrKXt2YXIgbT1bXTtndCho W3ZdLG0scixuLGEsITApLG0ubGVuZ3RoJiZnLnB1c2gobSl9aWYoZy5sZW5n dGgpe2lmKHMubGluZU1ldHJpY3MmJiJMaW5lU3RyaW5nIj09PWYpe2Zvcih2 PTA7djxnLmxlbmd0aDt2KyspbC5wdXNoKG50KHUuaWQsZixnW3ZdLHUudGFn cykpO2NvbnRpbnVlfSJMaW5lU3RyaW5nIiE9PWYmJiJNdWx0aUxpbmVTdHJp bmciIT09Znx8KDE9PT1nLmxlbmd0aD8oZj0iTGluZVN0cmluZyIsZz1nWzBd KTpmPSJNdWx0aUxpbmVTdHJpbmciKSwiUG9pbnQiIT09ZiYmIk11bHRpUG9p bnQiIT09Znx8KGY9Mz09PWcubGVuZ3RoPyJQb2ludCI6Ik11bHRpUG9pbnQi KSxsLnB1c2gobnQodS5pZCxmLGcsdS50YWdzKSl9fX1yZXR1cm4gbC5sZW5n dGg/bDpudWxsfWZ1bmN0aW9uIGZ0KHQsZSxyLG4sYSl7Zm9yKHZhciBpPTA7 aTx0Lmxlbmd0aDtpKz0zKXt2YXIgbz10W2krYV07bz49ciYmbzw9biYmKGUu cHVzaCh0W2ldKSxlLnB1c2godFtpKzFdKSxlLnB1c2godFtpKzJdKSl9fWZ1 bmN0aW9uIHB0KHQsZSxyLG4sYSxpLG8pe2Zvcih2YXIgcyxsLGM9ZHQodCks dT0wPT09YT9tdDp5dCxoPXQuc3RhcnQsZj0wO2Y8dC5sZW5ndGgtMztmKz0z KXt2YXIgcD10W2ZdLGQ9dFtmKzFdLGc9dFtmKzJdLHY9dFtmKzNdLG09dFtm KzRdLHk9MD09PWE/cDpkLHg9MD09PWE/djptLGI9ITE7byYmKHM9TWF0aC5z cXJ0KE1hdGgucG93KHAtdiwyKStNYXRoLnBvdyhkLW0sMikpKSx5PHI/eD5y JiYobD11KGMscCxkLHYsbSxyKSxvJiYoYy5zdGFydD1oK3MqbCkpOnk+bj94 PG4mJihsPXUoYyxwLGQsdixtLG4pLG8mJihjLnN0YXJ0PWgrcypsKSk6dnQo YyxwLGQsZykseDxyJiZ5Pj1yJiYobD11KGMscCxkLHYsbSxyKSxiPSEwKSx4 Pm4mJnk8PW4mJihsPXUoYyxwLGQsdixtLG4pLGI9ITApLCFpJiZiJiYobyYm KGMuZW5kPWgrcypsKSxlLnB1c2goYyksYz1kdCh0KSksbyYmKGgrPXMpfXZh ciBfPXQubGVuZ3RoLTM7cD10W19dLGQ9dFtfKzFdLGc9dFtfKzJdLCh5PTA9 PT1hP3A6ZCk+PXImJnk8PW4mJnZ0KGMscCxkLGcpLF89Yy5sZW5ndGgtMyxp JiZfPj0zJiYoY1tfXSE9PWNbMF18fGNbXysxXSE9PWNbMV0pJiZ2dChjLGNb MF0sY1sxXSxjWzJdKSxjLmxlbmd0aCYmZS5wdXNoKGMpfWZ1bmN0aW9uIGR0 KHQpe3ZhciBlPVtdO3JldHVybiBlLnNpemU9dC5zaXplLGUuc3RhcnQ9dC5z dGFydCxlLmVuZD10LmVuZCxlfWZ1bmN0aW9uIGd0KHQsZSxyLG4sYSxpKXtm b3IodmFyIG89MDtvPHQubGVuZ3RoO28rKylwdCh0W29dLGUscixuLGEsaSwh MSl9ZnVuY3Rpb24gdnQodCxlLHIsbil7dC5wdXNoKGUpLHQucHVzaChyKSx0 LnB1c2gobil9ZnVuY3Rpb24gbXQodCxlLHIsbixhLGkpe3ZhciBvPShpLWUp LyhuLWUpO3JldHVybiB0LnB1c2goaSksdC5wdXNoKHIrKGEtcikqbyksdC5w dXNoKDEpLG99ZnVuY3Rpb24geXQodCxlLHIsbixhLGkpe3ZhciBvPShpLXIp LyhhLXIpO3JldHVybiB0LnB1c2goZSsobi1lKSpvKSx0LnB1c2goaSksdC5w dXNoKDEpLG99ZnVuY3Rpb24geHQodCxlKXtmb3IodmFyIHI9W10sbj0wO248 dC5sZW5ndGg7bisrKXt2YXIgYSxpPXRbbl0sbz1pLnR5cGU7aWYoIlBvaW50 Ij09PW98fCJNdWx0aVBvaW50Ij09PW98fCJMaW5lU3RyaW5nIj09PW8pYT1i dChpLmdlb21ldHJ5LGUpO2Vsc2UgaWYoIk11bHRpTGluZVN0cmluZyI9PT1v fHwiUG9seWdvbiI9PT1vKXthPVtdO2Zvcih2YXIgcz0wO3M8aS5nZW9tZXRy eS5sZW5ndGg7cysrKWEucHVzaChidChpLmdlb21ldHJ5W3NdLGUpKX1lbHNl IGlmKCJNdWx0aVBvbHlnb24iPT09bylmb3IoYT1bXSxzPTA7czxpLmdlb21l dHJ5Lmxlbmd0aDtzKyspe2Zvcih2YXIgbD1bXSxjPTA7YzxpLmdlb21ldHJ5 W3NdLmxlbmd0aDtjKyspbC5wdXNoKGJ0KGkuZ2VvbWV0cnlbc11bY10sZSkp O2EucHVzaChsKX1yLnB1c2gobnQoaS5pZCxvLGEsaS50YWdzKSl9cmV0dXJu IHJ9ZnVuY3Rpb24gYnQodCxlKXt2YXIgcj1bXTtyLnNpemU9dC5zaXplLHZv aWQgMCE9PXQuc3RhcnQmJihyLnN0YXJ0PXQuc3RhcnQsci5lbmQ9dC5lbmQp O2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bis9MylyLnB1c2godFtuXStlLHRb bisxXSx0W24rMl0pO3JldHVybiByfWZ1bmN0aW9uIF90KHQsZSl7aWYodC50 cmFuc2Zvcm1lZClyZXR1cm4gdDt2YXIgcixuLGEsaT0xPDx0Lnosbz10Lngs cz10Lnk7Zm9yKHI9MDtyPHQuZmVhdHVyZXMubGVuZ3RoO3IrKyl7dmFyIGw9 dC5mZWF0dXJlc1tyXSxjPWwuZ2VvbWV0cnksdT1sLnR5cGU7aWYobC5nZW9t ZXRyeT1bXSwxPT09dSlmb3Iobj0wO248Yy5sZW5ndGg7bis9MilsLmdlb21l dHJ5LnB1c2god3QoY1tuXSxjW24rMV0sZSxpLG8scykpO2Vsc2UgZm9yKG49 MDtuPGMubGVuZ3RoO24rKyl7dmFyIGg9W107Zm9yKGE9MDthPGNbbl0ubGVu Z3RoO2ErPTIpaC5wdXNoKHd0KGNbbl1bYV0sY1tuXVthKzFdLGUsaSxvLHMp KTtsLmdlb21ldHJ5LnB1c2goaCl9fXJldHVybiB0LnRyYW5zZm9ybWVkPSEw LHR9ZnVuY3Rpb24gd3QodCxlLHIsbixhLGkpe3JldHVybltNYXRoLnJvdW5k KHIqKHQqbi1hKSksTWF0aC5yb3VuZChyKihlKm4taSkpXX1mdW5jdGlvbiBr dCh0LGUscixuLGEpe2Zvcih2YXIgaT1lPT09YS5tYXhab29tPzA6YS50b2xl cmFuY2UvKCgxPDxlKSphLmV4dGVudCksbz17ZmVhdHVyZXM6W10sbnVtUG9p bnRzOjAsbnVtU2ltcGxpZmllZDowLG51bUZlYXR1cmVzOjAsc291cmNlOm51 bGwseDpyLHk6bix6OmUsdHJhbnNmb3JtZWQ6ITEsbWluWDoyLG1pblk6MSxt YXhYOi0xLG1heFk6MH0scz0wO3M8dC5sZW5ndGg7cysrKXtvLm51bUZlYXR1 cmVzKyssVHQobyx0W3NdLGksYSk7dmFyIGw9dFtzXS5taW5YLGM9dFtzXS5t aW5ZLHU9dFtzXS5tYXhYLGg9dFtzXS5tYXhZO2w8by5taW5YJiYoby5taW5Y PWwpLGM8by5taW5ZJiYoby5taW5ZPWMpLHU+by5tYXhYJiYoby5tYXhYPXUp LGg+by5tYXhZJiYoby5tYXhZPWgpfXJldHVybiBvfWZ1bmN0aW9uIFR0KHQs ZSxyLG4pe3ZhciBhPWUuZ2VvbWV0cnksaT1lLnR5cGUsbz1bXTtpZigiUG9p bnQiPT09aXx8Ik11bHRpUG9pbnQiPT09aSlmb3IodmFyIHM9MDtzPGEubGVu Z3RoO3MrPTMpby5wdXNoKGFbc10pLG8ucHVzaChhW3MrMV0pLHQubnVtUG9p bnRzKyssdC5udW1TaW1wbGlmaWVkKys7ZWxzZSBpZigiTGluZVN0cmluZyI9 PT1pKU10KG8sYSx0LHIsITEsITEpO2Vsc2UgaWYoIk11bHRpTGluZVN0cmlu ZyI9PT1pfHwiUG9seWdvbiI9PT1pKWZvcihzPTA7czxhLmxlbmd0aDtzKysp TXQobyxhW3NdLHQsciwiUG9seWdvbiI9PT1pLDA9PT1zKTtlbHNlIGlmKCJN dWx0aVBvbHlnb24iPT09aSlmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKyl7 dmFyIGM9YVtsXTtmb3Iocz0wO3M8Yy5sZW5ndGg7cysrKU10KG8sY1tzXSx0 LHIsITAsMD09PXMpfWlmKG8ubGVuZ3RoKXt2YXIgdT1lLnRhZ3N8fG51bGw7 aWYoIkxpbmVTdHJpbmciPT09aSYmbi5saW5lTWV0cmljcyl7Zm9yKHZhciBo IGluIHU9e30sZS50YWdzKXVbaF09ZS50YWdzW2hdO3UubWFwYm94X2NsaXBf c3RhcnQ9YS5zdGFydC9hLnNpemUsdS5tYXBib3hfY2xpcF9lbmQ9YS5lbmQv YS5zaXplfXZhciBmPXtnZW9tZXRyeTpvLHR5cGU6IlBvbHlnb24iPT09aXx8 Ik11bHRpUG9seWdvbiI9PT1pPzM6IkxpbmVTdHJpbmciPT09aXx8Ik11bHRp TGluZVN0cmluZyI9PT1pPzI6MSx0YWdzOnV9O251bGwhPT1lLmlkJiYoZi5p ZD1lLmlkKSx0LmZlYXR1cmVzLnB1c2goZil9fWZ1bmN0aW9uIE10KHQsZSxy LG4sYSxpKXt2YXIgbz1uKm47aWYobj4wJiZlLnNpemU8KGE/bzpuKSlyLm51 bVBvaW50cys9ZS5sZW5ndGgvMztlbHNle2Zvcih2YXIgcz1bXSxsPTA7bDxl Lmxlbmd0aDtsKz0zKSgwPT09bnx8ZVtsKzJdPm8pJiYoci5udW1TaW1wbGlm aWVkKysscy5wdXNoKGVbbF0pLHMucHVzaChlW2wrMV0pKSxyLm51bVBvaW50 cysrO2EmJmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0wLGE9dC5sZW5n dGgsaT1hLTI7bjxhO2k9bixuKz0yKXIrPSh0W25dLXRbaV0pKih0W24rMV0r dFtpKzFdKTtpZihyPjA9PT1lKWZvcihuPTAsYT10Lmxlbmd0aDtuPGEvMjtu Kz0yKXt2YXIgbz10W25dLHM9dFtuKzFdO3Rbbl09dFthLTItbl0sdFtuKzFd PXRbYS0xLW5dLHRbYS0yLW5dPW8sdFthLTEtbl09c319KHMsaSksdC5wdXNo KHMpfX1mdW5jdGlvbiBBdCh0LGUpe3ZhciByPShlPXRoaXMub3B0aW9ucz1m dW5jdGlvbih0LGUpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXTtyZXR1cm4g dH0oT2JqZWN0LmNyZWF0ZSh0aGlzLm9wdGlvbnMpLGUpKS5kZWJ1ZztpZihy JiZjb25zb2xlLnRpbWUoInByZXByb2Nlc3MgZGF0YSIpLGUubWF4Wm9vbTww fHxlLm1heFpvb20+MjQpdGhyb3cgbmV3IEVycm9yKCJtYXhab29tIHNob3Vs ZCBiZSBpbiB0aGUgMC0yNCByYW5nZSIpO2lmKGUucHJvbW90ZUlkJiZlLmdl bmVyYXRlSWQpdGhyb3cgbmV3IEVycm9yKCJwcm9tb3RlSWQgYW5kIGdlbmVy YXRlSWQgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuIik7dmFyIG49ZnVuY3Rp b24odCxlKXt2YXIgcj1bXTtpZigiRmVhdHVyZUNvbGxlY3Rpb24iPT09dC50 eXBlKWZvcih2YXIgbj0wO248dC5mZWF0dXJlcy5sZW5ndGg7bisrKWl0KHIs dC5mZWF0dXJlc1tuXSxlLG4pO2Vsc2UiRmVhdHVyZSI9PT10LnR5cGU/aXQo cix0LGUpOml0KHIse2dlb21ldHJ5OnR9LGUpO3JldHVybiByfSh0LGUpO3Ro aXMudGlsZXM9e30sdGhpcy50aWxlQ29vcmRzPVtdLHImJihjb25zb2xlLnRp bWVFbmQoInByZXByb2Nlc3MgZGF0YSIpLGNvbnNvbGUubG9nKCJpbmRleDog bWF4Wm9vbTogJWQsIG1heFBvaW50czogJWQiLGUuaW5kZXhNYXhab29tLGUu aW5kZXhNYXhQb2ludHMpLGNvbnNvbGUudGltZSgiZ2VuZXJhdGUgdGlsZXMi KSx0aGlzLnN0YXRzPXt9LHRoaXMudG90YWw9MCksKG49ZnVuY3Rpb24odCxl KXt2YXIgcj1lLmJ1ZmZlci9lLmV4dGVudCxuPXQsYT1odCh0LDEsLTEtcixy LDAsLTEsMixlKSxpPWh0KHQsMSwxLXIsMityLDAsLTEsMixlKTtyZXR1cm4o YXx8aSkmJihuPWh0KHQsMSwtciwxK3IsMCwtMSwyLGUpfHxbXSxhJiYobj14 dChhLDEpLmNvbmNhdChuKSksaSYmKG49bi5jb25jYXQoeHQoaSwtMSkpKSks bn0obixlKSkubGVuZ3RoJiZ0aGlzLnNwbGl0VGlsZShuLDAsMCwwKSxyJiYo bi5sZW5ndGgmJmNvbnNvbGUubG9nKCJmZWF0dXJlczogJWQsIHBvaW50czog JWQiLHRoaXMudGlsZXNbMF0ubnVtRmVhdHVyZXMsdGhpcy50aWxlc1swXS5u dW1Qb2ludHMpLGNvbnNvbGUudGltZUVuZCgiZ2VuZXJhdGUgdGlsZXMiKSxj b25zb2xlLmxvZygidGlsZXMgZ2VuZXJhdGVkOiIsdGhpcy50b3RhbCxKU09O LnN0cmluZ2lmeSh0aGlzLnN0YXRzKSkpfWZ1bmN0aW9uIFN0KHQsZSxyKXty ZXR1cm4gMzIqKCgxPDx0KSpyK2UpK3R9ZnVuY3Rpb24gRXQodCxlKXt2YXIg cj10LnRpbGVJRC5jYW5vbmljYWw7aWYoIXRoaXMuX2dlb0pTT05JbmRleCly ZXR1cm4gZShudWxsLG51bGwpO3ZhciBuPXRoaXMuX2dlb0pTT05JbmRleC5n ZXRUaWxlKHIueixyLngsci55KTtpZighbilyZXR1cm4gZShudWxsLG51bGwp O3ZhciBhPW5ldyBrKG4uZmVhdHVyZXMpLGk9RShhKTswPT09aS5ieXRlT2Zm c2V0JiZpLmJ5dGVMZW5ndGg9PT1pLmJ1ZmZlci5ieXRlTGVuZ3RofHwoaT1u ZXcgVWludDhBcnJheShpKSksZShudWxsLHt2ZWN0b3JUaWxlOmEscmF3RGF0 YTppLmJ1ZmZlcn0pfVkucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24odCl7dmFy IGU9dGhpcy5vcHRpb25zLHI9ZS5sb2csbj1lLm1pblpvb20sYT1lLm1heFpv b20saT1lLm5vZGVTaXplO3ImJmNvbnNvbGUudGltZSgidG90YWwgdGltZSIp O3ZhciBvPSJwcmVwYXJlICIrdC5sZW5ndGgrIiBwb2ludHMiO3ImJmNvbnNv bGUudGltZShvKSx0aGlzLnBvaW50cz10O2Zvcih2YXIgcz1bXSxsPTA7bDx0 Lmxlbmd0aDtsKyspdFtsXS5nZW9tZXRyeSYmcy5wdXNoKFgodFtsXSxsKSk7 dGhpcy50cmVlc1thKzFdPW5ldyBIKHMsdHQsZXQsaSxGbG9hdDMyQXJyYXkp LHImJmNvbnNvbGUudGltZUVuZChvKTtmb3IodmFyIGM9YTtjPj1uO2MtLSl7 dmFyIHU9K0RhdGUubm93KCk7cz10aGlzLl9jbHVzdGVyKHMsYyksdGhpcy50 cmVlc1tjXT1uZXcgSChzLHR0LGV0LGksRmxvYXQzMkFycmF5KSxyJiZjb25z b2xlLmxvZygieiVkOiAlZCBjbHVzdGVycyBpbiAlZG1zIixjLHMubGVuZ3Ro LCtEYXRlLm5vdygpLXUpfXJldHVybiByJiZjb25zb2xlLnRpbWVFbmQoInRv dGFsIHRpbWUiKSx0aGlzfSxZLnByb3RvdHlwZS5nZXRDbHVzdGVycz1mdW5j dGlvbih0LGUpe3ZhciByPSgodFswXSsxODApJTM2MCszNjApJTM2MC0xODAs bj1NYXRoLm1heCgtOTAsTWF0aC5taW4oOTAsdFsxXSkpLGE9MTgwPT09dFsy XT8xODA6KCh0WzJdKzE4MCklMzYwKzM2MCklMzYwLTE4MCxpPU1hdGgubWF4 KC05MCxNYXRoLm1pbig5MCx0WzNdKSk7aWYodFsyXS10WzBdPj0zNjApcj0t MTgwLGE9MTgwO2Vsc2UgaWYocj5hKXt2YXIgbz10aGlzLmdldENsdXN0ZXJz KFtyLG4sMTgwLGldLGUpLHM9dGhpcy5nZXRDbHVzdGVycyhbLTE4MCxuLGEs aV0sZSk7cmV0dXJuIG8uY29uY2F0KHMpfWZvcih2YXIgbD10aGlzLnRyZWVz W3RoaXMuX2xpbWl0Wm9vbShlKV0sYz1bXSx1PTAsaD1sLnJhbmdlKEsociks UShpKSxLKGEpLFEobikpO3U8aC5sZW5ndGg7dSs9MSl7dmFyIGY9aFt1XSxw PWwucG9pbnRzW2ZdO2MucHVzaChwLm51bVBvaW50cz9aKHApOnRoaXMucG9p bnRzW3AuaW5kZXhdKX1yZXR1cm4gY30sWS5wcm90b3R5cGUuZ2V0Q2hpbGRy ZW49ZnVuY3Rpb24odCl7dmFyIGU9dD4+NSxyPXQlMzIsbj0iTm8gY2x1c3Rl ciB3aXRoIHRoZSBzcGVjaWZpZWQgaWQuIixhPXRoaXMudHJlZXNbcl07aWYo IWEpdGhyb3cgbmV3IEVycm9yKG4pO3ZhciBpPWEucG9pbnRzW2VdO2lmKCFp KXRocm93IG5ldyBFcnJvcihuKTtmb3IodmFyIG89dGhpcy5vcHRpb25zLnJh ZGl1cy8odGhpcy5vcHRpb25zLmV4dGVudCpNYXRoLnBvdygyLHItMSkpLHM9 W10sbD0wLGM9YS53aXRoaW4oaS54LGkueSxvKTtsPGMubGVuZ3RoO2wrPTEp e3ZhciB1PWNbbF0saD1hLnBvaW50c1t1XTtoLnBhcmVudElkPT09dCYmcy5w dXNoKGgubnVtUG9pbnRzP1ooaCk6dGhpcy5wb2ludHNbaC5pbmRleF0pfWlm KDA9PT1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3Iobik7cmV0dXJuIHN9LFku cHJvdG90eXBlLmdldExlYXZlcz1mdW5jdGlvbih0LGUscil7ZT1lfHwxMCxy PXJ8fDA7dmFyIG49W107cmV0dXJuIHRoaXMuX2FwcGVuZExlYXZlcyhuLHQs ZSxyLDApLG59LFkucHJvdG90eXBlLmdldFRpbGU9ZnVuY3Rpb24odCxlLHIp e3ZhciBuPXRoaXMudHJlZXNbdGhpcy5fbGltaXRab29tKHQpXSxhPU1hdGgu cG93KDIsdCksaT10aGlzLm9wdGlvbnMsbz1pLmV4dGVudCxzPWkucmFkaXVz L28sbD0oci1zKS9hLGM9KHIrMStzKS9hLHU9e2ZlYXR1cmVzOltdfTtyZXR1 cm4gdGhpcy5fYWRkVGlsZUZlYXR1cmVzKG4ucmFuZ2UoKGUtcykvYSxsLChl KzErcykvYSxjKSxuLnBvaW50cyxlLHIsYSx1KSwwPT09ZSYmdGhpcy5fYWRk VGlsZUZlYXR1cmVzKG4ucmFuZ2UoMS1zL2EsbCwxLGMpLG4ucG9pbnRzLGEs cixhLHUpLGU9PT1hLTEmJnRoaXMuX2FkZFRpbGVGZWF0dXJlcyhuLnJhbmdl KDAsbCxzL2EsYyksbi5wb2ludHMsLTEscixhLHUpLHUuZmVhdHVyZXMubGVu Z3RoP3U6bnVsbH0sWS5wcm90b3R5cGUuZ2V0Q2x1c3RlckV4cGFuc2lvblpv b209ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQlMzItMTtlPD10aGlzLm9wdGlv bnMubWF4Wm9vbTspe3ZhciByPXRoaXMuZ2V0Q2hpbGRyZW4odCk7aWYoZSsr LDEhPT1yLmxlbmd0aClicmVhazt0PXJbMF0ucHJvcGVydGllcy5jbHVzdGVy X2lkfXJldHVybiBlfSxZLnByb3RvdHlwZS5fYXBwZW5kTGVhdmVzPWZ1bmN0 aW9uKHQsZSxyLG4sYSl7Zm9yKHZhciBpPTAsbz10aGlzLmdldENoaWxkcmVu KGUpO2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tpXSxsPXMucHJvcGVydGll cztpZihsJiZsLmNsdXN0ZXI/YStsLnBvaW50X2NvdW50PD1uP2ErPWwucG9p bnRfY291bnQ6YT10aGlzLl9hcHBlbmRMZWF2ZXModCxsLmNsdXN0ZXJfaWQs cixuLGEpOmE8bj9hKys6dC5wdXNoKHMpLHQubGVuZ3RoPT09cilicmVha31y ZXR1cm4gYX0sWS5wcm90b3R5cGUuX2FkZFRpbGVGZWF0dXJlcz1mdW5jdGlv bih0LGUscixuLGEsaSl7Zm9yKHZhciBvPTAscz10O288cy5sZW5ndGg7bys9 MSl7dmFyIGw9ZVtzW29dXSxjPXt0eXBlOjEsZ2VvbWV0cnk6W1tNYXRoLnJv dW5kKHRoaXMub3B0aW9ucy5leHRlbnQqKGwueCphLXIpKSxNYXRoLnJvdW5k KHRoaXMub3B0aW9ucy5leHRlbnQqKGwueSphLW4pKV1dLHRhZ3M6bC5udW1Q b2ludHM/SihsKTp0aGlzLnBvaW50c1tsLmluZGV4XS5wcm9wZXJ0aWVzfSx1 PWwubnVtUG9pbnRzP2wuaWQ6dGhpcy5wb2ludHNbbC5pbmRleF0uaWQ7dm9p ZCAwIT09dSYmKGMuaWQ9dSksaS5mZWF0dXJlcy5wdXNoKGMpfX0sWS5wcm90 b3R5cGUuX2xpbWl0Wm9vbT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgo dGhpcy5vcHRpb25zLm1pblpvb20sTWF0aC5taW4odCx0aGlzLm9wdGlvbnMu bWF4Wm9vbSsxKSl9LFkucHJvdG90eXBlLl9jbHVzdGVyPWZ1bmN0aW9uKHQs ZSl7Zm9yKHZhciByPVtdLG49dGhpcy5vcHRpb25zLGE9bi5yYWRpdXMsaT1u LmV4dGVudCxvPW4ucmVkdWNlLHM9YS8oaSpNYXRoLnBvdygyLGUpKSxsPTA7 bDx0Lmxlbmd0aDtsKyspe3ZhciBjPXRbbF07aWYoIShjLnpvb208PWUpKXtj Lnpvb209ZTtmb3IodmFyIHU9dGhpcy50cmVlc1tlKzFdLGg9dS53aXRoaW4o Yy54LGMueSxzKSxmPWMubnVtUG9pbnRzfHwxLHA9Yy54KmYsZD1jLnkqZixn PW8mJmY+MT90aGlzLl9tYXAoYywhMCk6bnVsbCx2PShsPDw1KSsoZSsxKSxt PTAseT1oO208eS5sZW5ndGg7bSs9MSl7dmFyIHg9eVttXSxiPXUucG9pbnRz W3hdO2lmKCEoYi56b29tPD1lKSl7Yi56b29tPWU7dmFyIF89Yi5udW1Qb2lu dHN8fDE7cCs9Yi54Kl8sZCs9Yi55Kl8sZis9XyxiLnBhcmVudElkPXYsbyYm KGd8fChnPXRoaXMuX21hcChjLCEwKSksbyhnLHRoaXMuX21hcChiKSkpfX0x PT09Zj9yLnB1c2goYyk6KGMucGFyZW50SWQ9dixyLnB1c2goVyhwL2YsZC9m LHYsZixnKSkpfX1yZXR1cm4gcn0sWS5wcm90b3R5cGUuX21hcD1mdW5jdGlv bih0LGUpe2lmKHQubnVtUG9pbnRzKXJldHVybiBlPyQoe30sdC5wcm9wZXJ0 aWVzKTp0LnByb3BlcnRpZXM7dmFyIHI9dGhpcy5wb2ludHNbdC5pbmRleF0u cHJvcGVydGllcyxuPXRoaXMub3B0aW9ucy5tYXAocik7cmV0dXJuIGUmJm49 PT1yPyQoe30sbik6bn0sQXQucHJvdG90eXBlLm9wdGlvbnM9e21heFpvb206 MTQsaW5kZXhNYXhab29tOjUsaW5kZXhNYXhQb2ludHM6MWU1LHRvbGVyYW5j ZTozLGV4dGVudDo0MDk2LGJ1ZmZlcjo2NCxsaW5lTWV0cmljczohMSxwcm9t b3RlSWQ6bnVsbCxnZW5lcmF0ZUlkOiExLGRlYnVnOjB9LEF0LnByb3RvdHlw ZS5zcGxpdFRpbGU9ZnVuY3Rpb24odCxlLHIsbixhLGksbyl7Zm9yKHZhciBz PVt0LGUscixuXSxsPXRoaXMub3B0aW9ucyxjPWwuZGVidWc7cy5sZW5ndGg7 KXtuPXMucG9wKCkscj1zLnBvcCgpLGU9cy5wb3AoKSx0PXMucG9wKCk7dmFy IHU9MTw8ZSxoPVN0KGUscixuKSxmPXRoaXMudGlsZXNbaF07aWYoIWYmJihj PjEmJmNvbnNvbGUudGltZSgiY3JlYXRpb24iKSxmPXRoaXMudGlsZXNbaF09 a3QodCxlLHIsbixsKSx0aGlzLnRpbGVDb29yZHMucHVzaCh7ejplLHg6cix5 Om59KSxjKSl7Yz4xJiYoY29uc29sZS5sb2coInRpbGUgeiVkLSVkLSVkIChm ZWF0dXJlczogJWQsIHBvaW50czogJWQsIHNpbXBsaWZpZWQ6ICVkKSIsZSxy LG4sZi5udW1GZWF0dXJlcyxmLm51bVBvaW50cyxmLm51bVNpbXBsaWZpZWQp LGNvbnNvbGUudGltZUVuZCgiY3JlYXRpb24iKSk7dmFyIHA9InoiK2U7dGhp cy5zdGF0c1twXT0odGhpcy5zdGF0c1twXXx8MCkrMSx0aGlzLnRvdGFsKyt9 aWYoZi5zb3VyY2U9dCxhKXtpZihlPT09bC5tYXhab29tfHxlPT09YSljb250 aW51ZTt2YXIgZD0xPDxhLWU7aWYociE9PU1hdGguZmxvb3IoaS9kKXx8biE9 PU1hdGguZmxvb3Ioby9kKSljb250aW51ZX1lbHNlIGlmKGU9PT1sLmluZGV4 TWF4Wm9vbXx8Zi5udW1Qb2ludHM8PWwuaW5kZXhNYXhQb2ludHMpY29udGlu dWU7aWYoZi5zb3VyY2U9bnVsbCwwIT09dC5sZW5ndGgpe2M+MSYmY29uc29s ZS50aW1lKCJjbGlwcGluZyIpO3ZhciBnLHYsbSx5LHgsYixfPS41KmwuYnVm ZmVyL2wuZXh0ZW50LHc9LjUtXyxrPS41K18sVD0xK187Zz12PW09eT1udWxs LHg9aHQodCx1LHItXyxyK2ssMCxmLm1pblgsZi5tYXhYLGwpLGI9aHQodCx1 LHIrdyxyK1QsMCxmLm1pblgsZi5tYXhYLGwpLHQ9bnVsbCx4JiYoZz1odCh4 LHUsbi1fLG4raywxLGYubWluWSxmLm1heFksbCksdj1odCh4LHUsbit3LG4r VCwxLGYubWluWSxmLm1heFksbCkseD1udWxsKSxiJiYobT1odChiLHUsbi1f LG4raywxLGYubWluWSxmLm1heFksbCkseT1odChiLHUsbit3LG4rVCwxLGYu bWluWSxmLm1heFksbCksYj1udWxsKSxjPjEmJmNvbnNvbGUudGltZUVuZCgi Y2xpcHBpbmciKSxzLnB1c2goZ3x8W10sZSsxLDIqciwyKm4pLHMucHVzaCh2 fHxbXSxlKzEsMipyLDIqbisxKSxzLnB1c2gobXx8W10sZSsxLDIqcisxLDIq bikscy5wdXNoKHl8fFtdLGUrMSwyKnIrMSwyKm4rMSl9fX0sQXQucHJvdG90 eXBlLmdldFRpbGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMub3B0aW9u cyxhPW4uZXh0ZW50LGk9bi5kZWJ1ZztpZih0PDB8fHQ+MjQpcmV0dXJuIG51 bGw7dmFyIG89MTw8dCxzPVN0KHQsZT0oZSVvK28pJW8scik7aWYodGhpcy50 aWxlc1tzXSlyZXR1cm4gX3QodGhpcy50aWxlc1tzXSxhKTtpPjEmJmNvbnNv bGUubG9nKCJkcmlsbGluZyBkb3duIHRvIHolZC0lZC0lZCIsdCxlLHIpO2Zv cih2YXIgbCxjPXQsdT1lLGg9cjshbCYmYz4wOyljLS0sdT1NYXRoLmZsb29y KHUvMiksaD1NYXRoLmZsb29yKGgvMiksbD10aGlzLnRpbGVzW1N0KGMsdSxo KV07cmV0dXJuIGwmJmwuc291cmNlPyhpPjEmJmNvbnNvbGUubG9nKCJmb3Vu ZCBwYXJlbnQgdGlsZSB6JWQtJWQtJWQiLGMsdSxoKSxpPjEmJmNvbnNvbGUu dGltZSgiZHJpbGxpbmcgZG93biIpLHRoaXMuc3BsaXRUaWxlKGwuc291cmNl LGMsdSxoLHQsZSxyKSxpPjEmJmNvbnNvbGUudGltZUVuZCgiZHJpbGxpbmcg ZG93biIpLHRoaXMudGlsZXNbc10/X3QodGhpcy50aWxlc1tzXSxhKTpudWxs KTpudWxsfTt2YXIgTHQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcih0LHIsbil7 ZS5jYWxsKHRoaXMsdCxyLEV0KSxuJiYodGhpcy5sb2FkR2VvSlNPTj1uKX1y ZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90eXBlPU9iamVjdC5j cmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9y PXIsci5wcm90b3R5cGUubG9hZERhdGE9ZnVuY3Rpb24odCxlKXt0aGlzLl9w ZW5kaW5nQ2FsbGJhY2smJnRoaXMuX3BlbmRpbmdDYWxsYmFjayhudWxsLHth YmFuZG9uZWQ6ITB9KSx0aGlzLl9wZW5kaW5nQ2FsbGJhY2s9ZSx0aGlzLl9w ZW5kaW5nTG9hZERhdGFQYXJhbXM9dCx0aGlzLl9zdGF0ZSYmIklkbGUiIT09 dGhpcy5fc3RhdGU/dGhpcy5fc3RhdGU9Ik5lZWRzTG9hZERhdGEiOih0aGlz Ll9zdGF0ZT0iQ29hbGVzY2luZyIsdGhpcy5fbG9hZERhdGEoKSl9LHIucHJv dG90eXBlLl9sb2FkRGF0YT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhp cy5fcGVuZGluZ0NhbGxiYWNrJiZ0aGlzLl9wZW5kaW5nTG9hZERhdGFQYXJh bXMpe3ZhciByPXRoaXMuX3BlbmRpbmdDYWxsYmFjayxuPXRoaXMuX3BlbmRp bmdMb2FkRGF0YVBhcmFtcztkZWxldGUgdGhpcy5fcGVuZGluZ0NhbGxiYWNr LGRlbGV0ZSB0aGlzLl9wZW5kaW5nTG9hZERhdGFQYXJhbXM7dmFyIGE9ISEo biYmbi5yZXF1ZXN0JiZuLnJlcXVlc3QuY29sbGVjdFJlc291cmNlVGltaW5n KSYmbmV3IGwuUGVyZm9ybWFuY2Uobi5yZXF1ZXN0KTt0aGlzLmxvYWRHZW9K U09OKG4sZnVuY3Rpb24oaSxvKXtpZihpfHwhbylyZXR1cm4gcihpKTtpZigi b2JqZWN0IiE9dHlwZW9mIG8pcmV0dXJuIHIobmV3IEVycm9yKCJJbnB1dCBk YXRhIGdpdmVuIHRvICciK24uc291cmNlKyInIGlzIG5vdCBhIHZhbGlkIEdl b0pTT04gb2JqZWN0LiIpKTshZnVuY3Rpb24gdChlLHIpe3N3aXRjaChlJiZl LnR5cGV8fG51bGwpe2Nhc2UiRmVhdHVyZUNvbGxlY3Rpb24iOnJldHVybiBl LmZlYXR1cmVzPWUuZmVhdHVyZXMubWFwKHkodCxyKSksZTtjYXNlIkdlb21l dHJ5Q29sbGVjdGlvbiI6cmV0dXJuIGUuZ2VvbWV0cmllcz1lLmdlb21ldHJp ZXMubWFwKHkodCxyKSksZTtjYXNlIkZlYXR1cmUiOnJldHVybiBlLmdlb21l dHJ5PXQoZS5nZW9tZXRyeSxyKSxlO2Nhc2UiUG9seWdvbiI6Y2FzZSJNdWx0 aVBvbHlnb24iOnJldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiJQb2x5Z29u Ij09PXQudHlwZT90LmNvb3JkaW5hdGVzPXgodC5jb29yZGluYXRlcyxlKToi TXVsdGlQb2x5Z29uIj09PXQudHlwZSYmKHQuY29vcmRpbmF0ZXM9dC5jb29y ZGluYXRlcy5tYXAoeSh4LGUpKSksdH0oZSxyKTtkZWZhdWx0OnJldHVybiBl fX0obywhMCk7dHJ5e2UuX2dlb0pTT05JbmRleD1uLmNsdXN0ZXI/bmV3IFko ZnVuY3Rpb24oZSl7dmFyIHI9ZS5zdXBlcmNsdXN0ZXJPcHRpb25zLG49ZS5j bHVzdGVyUHJvcGVydGllcztpZighbnx8IXIpcmV0dXJuIHI7Zm9yKHZhciBh PXt9LGk9e30sbz17YWNjdW11bGF0ZWQ6bnVsbCx6b29tOjB9LHM9e3Byb3Bl cnRpZXM6bnVsbH0sbD1PYmplY3Qua2V5cyhuKSxjPTAsdT1sO2M8dS5sZW5n dGg7Yys9MSl7dmFyIGg9dVtjXSxmPW5baF0scD1mWzBdLGQ9ZlsxXSxnPXQu Y3JlYXRlRXhwcmVzc2lvbihkKSx2PXQuY3JlYXRlRXhwcmVzc2lvbigic3Ry aW5nIj09dHlwZW9mIHA/W3AsWyJhY2N1bXVsYXRlZCJdLFsiZ2V0IixoXV06 cCk7YVtoXT1nLnZhbHVlLGlbaF09di52YWx1ZX1yZXR1cm4gci5tYXA9ZnVu Y3Rpb24odCl7cy5wcm9wZXJ0aWVzPXQ7Zm9yKHZhciBlPXt9LHI9MCxuPWw7 cjxuLmxlbmd0aDtyKz0xKXt2YXIgaT1uW3JdO2VbaV09YVtpXS5ldmFsdWF0 ZShvLHMpfXJldHVybiBlfSxyLnJlZHVjZT1mdW5jdGlvbih0LGUpe3MucHJv cGVydGllcz1lO2Zvcih2YXIgcj0wLG49bDtyPG4ubGVuZ3RoO3IrPTEpe3Zh ciBhPW5bcl07by5hY2N1bXVsYXRlZD10W2FdLHRbYV09aVthXS5ldmFsdWF0 ZShvLHMpfX0scn0obikpLmxvYWQoby5mZWF0dXJlcyk6bmV3IEF0KG8sbi5n ZW9qc29uVnRPcHRpb25zKX1jYXRjaChpKXtyZXR1cm4gcihpKX1lLmxvYWRl ZD17fTt2YXIgcz17fTtpZihhKXt2YXIgbD1hLmZpbmlzaCgpO2wmJihzLnJl c291cmNlVGltaW5nPXt9LHMucmVzb3VyY2VUaW1pbmdbbi5zb3VyY2VdPUpT T04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobCkpKX1yKG51bGwscyl9KX19LHIu cHJvdG90eXBlLmNvYWxlc2NlPWZ1bmN0aW9uKCl7IkNvYWxlc2NpbmciPT09 dGhpcy5fc3RhdGU/dGhpcy5fc3RhdGU9IklkbGUiOiJOZWVkc0xvYWREYXRh Ij09PXRoaXMuX3N0YXRlJiYodGhpcy5fc3RhdGU9IkNvYWxlc2NpbmciLHRo aXMuX2xvYWREYXRhKCkpfSxyLnByb3RvdHlwZS5yZWxvYWRUaWxlPWZ1bmN0 aW9uKHQscil7dmFyIG49dGhpcy5sb2FkZWQsYT10LnVpZDtyZXR1cm4gbiYm blthXT9lLnByb3RvdHlwZS5yZWxvYWRUaWxlLmNhbGwodGhpcyx0LHIpOnRo aXMubG9hZFRpbGUodCxyKX0sci5wcm90b3R5cGUubG9hZEdlb0pTT049ZnVu Y3Rpb24oZSxyKXtpZihlLnJlcXVlc3QpdC5nZXRKU09OKGUucmVxdWVzdCxy KTtlbHNle2lmKCJzdHJpbmciIT10eXBlb2YgZS5kYXRhKXJldHVybiByKG5l dyBFcnJvcigiSW5wdXQgZGF0YSBnaXZlbiB0byAnIitlLnNvdXJjZSsiJyBp cyBub3QgYSB2YWxpZCBHZW9KU09OIG9iamVjdC4iKSk7dHJ5e3JldHVybiBy KG51bGwsSlNPTi5wYXJzZShlLmRhdGEpKX1jYXRjaCh0KXtyZXR1cm4gcihu ZXcgRXJyb3IoIklucHV0IGRhdGEgZ2l2ZW4gdG8gJyIrZS5zb3VyY2UrIicg aXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3QuIikpfX19LHIucHJvdG90 eXBlLnJlbW92ZVNvdXJjZT1mdW5jdGlvbih0LGUpe3RoaXMuX3BlbmRpbmdD YWxsYmFjayYmdGhpcy5fcGVuZGluZ0NhbGxiYWNrKG51bGwse2FiYW5kb25l ZDohMH0pLGUoKX0sci5wcm90b3R5cGUuZ2V0Q2x1c3RlckV4cGFuc2lvblpv b209ZnVuY3Rpb24odCxlKXtlKG51bGwsdGhpcy5fZ2VvSlNPTkluZGV4Lmdl dENsdXN0ZXJFeHBhbnNpb25ab29tKHQuY2x1c3RlcklkKSl9LHIucHJvdG90 eXBlLmdldENsdXN0ZXJDaGlsZHJlbj1mdW5jdGlvbih0LGUpe2UobnVsbCx0 aGlzLl9nZW9KU09OSW5kZXguZ2V0Q2hpbGRyZW4odC5jbHVzdGVySWQpKX0s ci5wcm90b3R5cGUuZ2V0Q2x1c3RlckxlYXZlcz1mdW5jdGlvbih0LGUpe2Uo bnVsbCx0aGlzLl9nZW9KU09OSW5kZXguZ2V0TGVhdmVzKHQuY2x1c3Rlcklk LHQubGltaXQsdC5vZmZzZXQpKX0scn0oaCksQ3Q9ZnVuY3Rpb24oZSl7dmFy IHI9dGhpczt0aGlzLnNlbGY9ZSx0aGlzLmFjdG9yPW5ldyB0LkFjdG9yKGUs dGhpcyksdGhpcy5sYXllckluZGV4ZXM9e30sdGhpcy53b3JrZXJTb3VyY2VU eXBlcz17dmVjdG9yOmgsZ2VvanNvbjpMdH0sdGhpcy53b3JrZXJTb3VyY2Vz PXt9LHRoaXMuZGVtV29ya2VyU291cmNlcz17fSx0aGlzLnNlbGYucmVnaXN0 ZXJXb3JrZXJTb3VyY2U9ZnVuY3Rpb24odCxlKXtpZihyLndvcmtlclNvdXJj ZVR5cGVzW3RdKXRocm93IG5ldyBFcnJvcignV29ya2VyIHNvdXJjZSB3aXRo IG5hbWUgIicrdCsnIiBhbHJlYWR5IHJlZ2lzdGVyZWQuJyk7ci53b3JrZXJT b3VyY2VUeXBlc1t0XT1lfSx0aGlzLnNlbGYucmVnaXN0ZXJSVExUZXh0UGx1 Z2luPWZ1bmN0aW9uKGUpe2lmKHQucGx1Z2luLmlzTG9hZGVkKCkpdGhyb3cg bmV3IEVycm9yKCJSVEwgdGV4dCBwbHVnaW4gYWxyZWFkeSByZWdpc3RlcmVk LiIpO3QucGx1Z2luLmFwcGx5QXJhYmljU2hhcGluZz1lLmFwcGx5QXJhYmlj U2hhcGluZyx0LnBsdWdpbi5wcm9jZXNzQmlkaXJlY3Rpb25hbFRleHQ9ZS5w cm9jZXNzQmlkaXJlY3Rpb25hbFRleHQsdC5wbHVnaW4ucHJvY2Vzc1N0eWxl ZEJpZGlyZWN0aW9uYWxUZXh0PWUucHJvY2Vzc1N0eWxlZEJpZGlyZWN0aW9u YWxUZXh0fX07cmV0dXJuIEN0LnByb3RvdHlwZS5zZXRSZWZlcnJlcj1mdW5j dGlvbih0LGUpe3RoaXMucmVmZXJyZXI9ZX0sQ3QucHJvdG90eXBlLnNldExh eWVycz1mdW5jdGlvbih0LGUscil7dGhpcy5nZXRMYXllckluZGV4KHQpLnJl cGxhY2UoZSkscigpfSxDdC5wcm90b3R5cGUudXBkYXRlTGF5ZXJzPWZ1bmN0 aW9uKHQsZSxyKXt0aGlzLmdldExheWVySW5kZXgodCkudXBkYXRlKGUubGF5 ZXJzLGUucmVtb3ZlZElkcykscigpfSxDdC5wcm90b3R5cGUubG9hZFRpbGU9 ZnVuY3Rpb24odCxlLHIpe3RoaXMuZ2V0V29ya2VyU291cmNlKHQsZS50eXBl LGUuc291cmNlKS5sb2FkVGlsZShlLHIpfSxDdC5wcm90b3R5cGUubG9hZERF TVRpbGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZ2V0REVNV29ya2VyU291cmNl KHQsZS5zb3VyY2UpLmxvYWRUaWxlKGUscil9LEN0LnByb3RvdHlwZS5yZWxv YWRUaWxlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmdldFdvcmtlclNvdXJjZSh0 LGUudHlwZSxlLnNvdXJjZSkucmVsb2FkVGlsZShlLHIpfSxDdC5wcm90b3R5 cGUuYWJvcnRUaWxlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmdldFdvcmtlclNv dXJjZSh0LGUudHlwZSxlLnNvdXJjZSkuYWJvcnRUaWxlKGUscil9LEN0LnBy b3RvdHlwZS5yZW1vdmVUaWxlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmdldFdv cmtlclNvdXJjZSh0LGUudHlwZSxlLnNvdXJjZSkucmVtb3ZlVGlsZShlLHIp fSxDdC5wcm90b3R5cGUucmVtb3ZlREVNVGlsZT1mdW5jdGlvbih0LGUpe3Ro aXMuZ2V0REVNV29ya2VyU291cmNlKHQsZS5zb3VyY2UpLnJlbW92ZVRpbGUo ZSl9LEN0LnByb3RvdHlwZS5yZW1vdmVTb3VyY2U9ZnVuY3Rpb24odCxlLHIp e2lmKHRoaXMud29ya2VyU291cmNlc1t0XSYmdGhpcy53b3JrZXJTb3VyY2Vz W3RdW2UudHlwZV0mJnRoaXMud29ya2VyU291cmNlc1t0XVtlLnR5cGVdW2Uu c291cmNlXSl7dmFyIG49dGhpcy53b3JrZXJTb3VyY2VzW3RdW2UudHlwZV1b ZS5zb3VyY2VdO2RlbGV0ZSB0aGlzLndvcmtlclNvdXJjZXNbdF1bZS50eXBl XVtlLnNvdXJjZV0sdm9pZCAwIT09bi5yZW1vdmVTb3VyY2U/bi5yZW1vdmVT b3VyY2UoZSxyKTpyKCl9fSxDdC5wcm90b3R5cGUubG9hZFdvcmtlclNvdXJj ZT1mdW5jdGlvbih0LGUscil7dHJ5e3RoaXMuc2VsZi5pbXBvcnRTY3JpcHRz KGUudXJsKSxyKCl9Y2F0Y2godCl7cih0LnRvU3RyaW5nKCkpfX0sQ3QucHJv dG90eXBlLmxvYWRSVExUZXh0UGx1Z2luPWZ1bmN0aW9uKGUscixuKXt0cnl7 dC5wbHVnaW4uaXNMb2FkZWQoKXx8KHRoaXMuc2VsZi5pbXBvcnRTY3JpcHRz KHIpLG4odC5wbHVnaW4uaXNMb2FkZWQoKT9udWxsOm5ldyBFcnJvcigiUlRM IFRleHQgUGx1Z2luIGZhaWxlZCB0byBpbXBvcnQgc2NyaXB0cyBmcm9tICIr cikpKX1jYXRjaCh0KXtuKHQudG9TdHJpbmcoKSl9fSxDdC5wcm90b3R5cGUu Z2V0TGF5ZXJJbmRleD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxheWVySW5k ZXhlc1t0XTtyZXR1cm4gZXx8KGU9dGhpcy5sYXllckluZGV4ZXNbdF09bmV3 IG4pLGV9LEN0LnByb3RvdHlwZS5nZXRXb3JrZXJTb3VyY2U9ZnVuY3Rpb24o dCxlLHIpe3ZhciBuPXRoaXM7aWYodGhpcy53b3JrZXJTb3VyY2VzW3RdfHwo dGhpcy53b3JrZXJTb3VyY2VzW3RdPXt9KSx0aGlzLndvcmtlclNvdXJjZXNb dF1bZV18fCh0aGlzLndvcmtlclNvdXJjZXNbdF1bZV09e30pLCF0aGlzLndv cmtlclNvdXJjZXNbdF1bZV1bcl0pe3ZhciBhPXtzZW5kOmZ1bmN0aW9uKGUs cixhKXtuLmFjdG9yLnNlbmQoZSxyLGEsdCl9fTt0aGlzLndvcmtlclNvdXJj ZXNbdF1bZV1bcl09bmV3IHRoaXMud29ya2VyU291cmNlVHlwZXNbZV0oYSx0 aGlzLmdldExheWVySW5kZXgodCkpfXJldHVybiB0aGlzLndvcmtlclNvdXJj ZXNbdF1bZV1bcl19LEN0LnByb3RvdHlwZS5nZXRERU1Xb3JrZXJTb3VyY2U9 ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZW1Xb3JrZXJTb3VyY2VzW3Rd fHwodGhpcy5kZW1Xb3JrZXJTb3VyY2VzW3RdPXt9KSx0aGlzLmRlbVdvcmtl clNvdXJjZXNbdF1bZV18fCh0aGlzLmRlbVdvcmtlclNvdXJjZXNbdF1bZV09 bmV3IGYpLHRoaXMuZGVtV29ya2VyU291cmNlc1t0XVtlXX0sQ3QucHJvdG90 eXBlLmVuZm9yY2VDYWNoZVNpemVMaW1pdD1mdW5jdGlvbihlLHIpe3QuZW5m b3JjZUNhY2hlU2l6ZUxpbWl0KHIpfSwidW5kZWZpbmVkIiE9dHlwZW9mIFdv cmtlckdsb2JhbFNjb3BlJiZ2b2lkIDAhPT10LndpbmRvdyYmdC53aW5kb3cg aW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmKHQud2luZG93Lndvcmtl cj1uZXcgQ3QodC53aW5kb3cpKSxDdH0pLG4oMCxmdW5jdGlvbih0KXt2YXIg ZT10LmNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKHQpe2Z1bmN0aW9u IGUodCl7cmV0dXJuISEoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1 bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJkFycmF5LnByb3RvdHlwZSYm QXJyYXkucHJvdG90eXBlLmV2ZXJ5JiZBcnJheS5wcm90b3R5cGUuZmlsdGVy JiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaCYmQXJyYXkucHJvdG90eXBlLmlu ZGV4T2YmJkFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZiYmQXJyYXkucHJv dG90eXBlLm1hcCYmQXJyYXkucHJvdG90eXBlLnNvbWUmJkFycmF5LnByb3Rv dHlwZS5yZWR1Y2UmJkFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodCYmQXJy YXkuaXNBcnJheSYmRnVuY3Rpb24ucHJvdG90eXBlJiZGdW5jdGlvbi5wcm90 b3R5cGUuYmluZCYmT2JqZWN0LmtleXMmJk9iamVjdC5jcmVhdGUmJk9iamVj dC5nZXRQcm90b3R5cGVPZiYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMm Jk9iamVjdC5pc1NlYWxlZCYmT2JqZWN0LmlzRnJvemVuJiZPYmplY3QuaXNF eHRlbnNpYmxlJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJiZP YmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVz JiZPYmplY3Quc2VhbCYmT2JqZWN0LmZyZWV6ZSYmT2JqZWN0LnByZXZlbnRF eHRlbnNpb25zJiYiSlNPTiJpbiB3aW5kb3cmJiJwYXJzZSJpbiBKU09OJiYi c3RyaW5naWZ5ImluIEpTT04mJmZ1bmN0aW9uKCl7aWYoISgiV29ya2VyImlu IHdpbmRvdyYmIkJsb2IiaW4gd2luZG93JiYiVVJMImluIHdpbmRvdykpcmV0 dXJuITE7dmFyIHQsZSxyPW5ldyBCbG9iKFsiIl0se3R5cGU6InRleHQvamF2 YXNjcmlwdCJ9KSxuPVVSTC5jcmVhdGVPYmplY3RVUkwocik7dHJ5e2U9bmV3 IFdvcmtlcihuKSx0PSEwfWNhdGNoKGUpe3Q9ITF9cmV0dXJuIGUmJmUudGVy bWluYXRlKCksVVJMLnJldm9rZU9iamVjdFVSTChuKSx0fSgpJiYiVWludDhD bGFtcGVkQXJyYXkiaW4gd2luZG93JiZBcnJheUJ1ZmZlci5pc1ZpZXcmJmZ1 bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT1yW3RdJiYoclt0XT1mdW5jdGlv bih0KXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxu PU9iamVjdC5jcmVhdGUoZS53ZWJHTENvbnRleHRBdHRyaWJ1dGVzKTtyZXR1 cm4gbi5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0PXQsci5wcm9iYWJs eVN1cHBvcnRzQ29udGV4dD9yLnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KCJ3 ZWJnbCIsbil8fHIucHJvYmFibHlTdXBwb3J0c0NvbnRleHQoImV4cGVyaW1l bnRhbC13ZWJnbCIsbik6ci5zdXBwb3J0c0NvbnRleHQ/ci5zdXBwb3J0c0Nv bnRleHQoIndlYmdsIixuKXx8ci5zdXBwb3J0c0NvbnRleHQoImV4cGVyaW1l bnRhbC13ZWJnbCIsbik6ci5nZXRDb250ZXh0KCJ3ZWJnbCIsbil8fHIuZ2V0 Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIixuKX0odCkpLHJbdF19KHQm JnQuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCkpfXQuZXhwb3J0cz90 LmV4cG9ydHM9ZTp3aW5kb3cmJih3aW5kb3cubWFwYm94Z2w9d2luZG93Lm1h cGJveGdsfHx7fSx3aW5kb3cubWFwYm94Z2wuc3VwcG9ydGVkPWUpO3ZhciBy PXt9O2Uud2ViR0xDb250ZXh0QXR0cmlidXRlcz17YW50aWFsaWFzOiExLGFs cGhhOiEwLHN0ZW5jaWw6ITAsZGVwdGg6ITB9fSkscj17Y3JlYXRlOmZ1bmN0 aW9uKGUscixuKXt2YXIgYT10LndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVt ZW50KGUpO3JldHVybiB2b2lkIDAhPT1yJiYoYS5jbGFzc05hbWU9ciksbiYm bi5hcHBlbmRDaGlsZChhKSxhfSxjcmVhdGVOUzpmdW5jdGlvbihlLHIpe3Jl dHVybiB0LndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZSxyKX19 LG49dC53aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlO2Z1 bmN0aW9uIGEodCl7aWYoIW4pcmV0dXJuIHRbMF07Zm9yKHZhciBlPTA7ZTx0 Lmxlbmd0aDtlKyspaWYodFtlXWluIG4pcmV0dXJuIHRbZV07cmV0dXJuIHRb MF19dmFyIGksbz1hKFsidXNlclNlbGVjdCIsIk1velVzZXJTZWxlY3QiLCJX ZWJraXRVc2VyU2VsZWN0IiwibXNVc2VyU2VsZWN0Il0pO3IuZGlzYWJsZURy YWc9ZnVuY3Rpb24oKXtuJiZvJiYoaT1uW29dLG5bb109Im5vbmUiKX0sci5l bmFibGVEcmFnPWZ1bmN0aW9uKCl7biYmbyYmKG5bb109aSl9O3ZhciBzPWEo WyJ0cmFuc2Zvcm0iLCJXZWJraXRUcmFuc2Zvcm0iXSk7ci5zZXRUcmFuc2Zv cm09ZnVuY3Rpb24odCxlKXt0LnN0eWxlW3NdPWV9O3ZhciBsPSExO3RyeXt2 YXIgYz1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6 ZnVuY3Rpb24oKXtsPSEwfX0pO3Qud2luZG93LmFkZEV2ZW50TGlzdGVuZXIo InRlc3QiLGMsYyksdC53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVz dCIsYyxjKX1jYXRjaCh0KXtsPSExfXIuYWRkRXZlbnRMaXN0ZW5lcj1mdW5j dGlvbih0LGUscixuKXt2b2lkIDA9PT1uJiYobj17fSksInBhc3NpdmUiaW4g biYmbD90LmFkZEV2ZW50TGlzdGVuZXIoZSxyLG4pOnQuYWRkRXZlbnRMaXN0 ZW5lcihlLHIsbi5jYXB0dXJlKX0sci5yZW1vdmVFdmVudExpc3RlbmVyPWZ1 bmN0aW9uKHQsZSxyLG4pe3ZvaWQgMD09PW4mJihuPXt9KSwicGFzc2l2ZSJp biBuJiZsP3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHIsbik6dC5yZW1vdmVF dmVudExpc3RlbmVyKGUscixuLmNhcHR1cmUpfTt2YXIgdT1mdW5jdGlvbihl KXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0Lndp bmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdSwhMCl9O2Z1bmN0 aW9uIGgodCl7dmFyIGU9dC51c2VySW1hZ2U7cmV0dXJuISEoZSYmZS5yZW5k ZXImJmUucmVuZGVyKCkpJiYodC5kYXRhLnJlcGxhY2UobmV3IFVpbnQ4QXJy YXkoZS5kYXRhLmJ1ZmZlcikpLCEwKX1yLnN1cHByZXNzQ2xpY2s9ZnVuY3Rp b24oKXt0LndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdSwhMCks dC53aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3Qud2luZG93LnJlbW92 ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix1LCEwKX0sMCl9LHIubW91c2VQb3M9 ZnVuY3Rpb24oZSxyKXt2YXIgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp LGE9dC53aW5kb3cuVG91Y2hFdmVudCYmciBpbnN0YW5jZW9mIHQud2luZG93 LlRvdWNoRXZlbnQ/ci50b3VjaGVzWzBdOnI7cmV0dXJuIG5ldyB0LlBvaW50 KGEuY2xpZW50WC1uLmxlZnQtZS5jbGllbnRMZWZ0LGEuY2xpZW50WS1uLnRv cC1lLmNsaWVudFRvcCl9LHIudG91Y2hQb3M9ZnVuY3Rpb24oZSxyKXtmb3Io dmFyIG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPVtdLGk9InRvdWNo ZW5kIj09PXIudHlwZT9yLmNoYW5nZWRUb3VjaGVzOnIudG91Y2hlcyxvPTA7 bzxpLmxlbmd0aDtvKyspYS5wdXNoKG5ldyB0LlBvaW50KGlbb10uY2xpZW50 WC1uLmxlZnQtZS5jbGllbnRMZWZ0LGlbb10uY2xpZW50WS1uLnRvcC1lLmNs aWVudFRvcCkpO3JldHVybiBhfSxyLm1vdXNlQnV0dG9uPWZ1bmN0aW9uKGUp e3JldHVybiB2b2lkIDAhPT10LndpbmRvdy5JbnN0YWxsVHJpZ2dlciYmMj09 PWUuYnV0dG9uJiZlLmN0cmxLZXkmJnQud2luZG93Lm5hdmlnYXRvci5wbGF0 Zm9ybS50b1VwcGVyQ2FzZSgpLmluZGV4T2YoIk1BQyIpPj0wPzA6ZS5idXR0 b259LHIucmVtb3ZlPWZ1bmN0aW9uKHQpe3QucGFyZW50Tm9kZSYmdC5wYXJl bnROb2RlLnJlbW92ZUNoaWxkKHQpfTt2YXIgZj1mdW5jdGlvbihlKXtmdW5j dGlvbiByKCl7ZS5jYWxsKHRoaXMpLHRoaXMuaW1hZ2VzPXt9LHRoaXMudXBk YXRlZEltYWdlcz17fSx0aGlzLmNhbGxiYWNrRGlzcGF0Y2hlZFRoaXNGcmFt ZT17fSx0aGlzLmxvYWRlZD0hMSx0aGlzLnJlcXVlc3RvcnM9W10sdGhpcy5w YXR0ZXJucz17fSx0aGlzLmF0bGFzSW1hZ2U9bmV3IHQuUkdCQUltYWdlKHt3 aWR0aDoxLGhlaWdodDoxfSksdGhpcy5kaXJ0eT0hMH1yZXR1cm4gZSYmKHIu X19wcm90b19fPWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5w cm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5 cGUuaXNMb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2FkZWR9LHIu cHJvdG90eXBlLnNldExvYWRlZD1mdW5jdGlvbih0KXtpZih0aGlzLmxvYWRl ZCE9PXQmJih0aGlzLmxvYWRlZD10LHQpKXtmb3IodmFyIGU9MCxyPXRoaXMu cmVxdWVzdG9ycztlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV0sYT1uLmlk cyxpPW4uY2FsbGJhY2s7dGhpcy5fbm90aWZ5KGEsaSl9dGhpcy5yZXF1ZXN0 b3JzPVtdfX0sci5wcm90b3R5cGUuZ2V0SW1hZ2U9ZnVuY3Rpb24odCl7cmV0 dXJuIHRoaXMuaW1hZ2VzW3RdfSxyLnByb3RvdHlwZS5hZGRJbWFnZT1mdW5j dGlvbih0LGUpe3RoaXMuaW1hZ2VzW3RdPWV9LHIucHJvdG90eXBlLnVwZGF0 ZUltYWdlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5pbWFnZXNbdF07ZS52 ZXJzaW9uPXIudmVyc2lvbisxLHRoaXMuaW1hZ2VzW3RdPWUsdGhpcy51cGRh dGVkSW1hZ2VzW3RdPSEwfSxyLnByb3RvdHlwZS5yZW1vdmVJbWFnZT1mdW5j dGlvbih0KXt2YXIgZT10aGlzLmltYWdlc1t0XTtkZWxldGUgdGhpcy5pbWFn ZXNbdF0sZGVsZXRlIHRoaXMucGF0dGVybnNbdF0sZS51c2VySW1hZ2UmJmUu dXNlckltYWdlLm9uUmVtb3ZlJiZlLnVzZXJJbWFnZS5vblJlbW92ZSgpfSxy LnByb3RvdHlwZS5saXN0SW1hZ2VzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVj dC5rZXlzKHRoaXMuaW1hZ2VzKX0sci5wcm90b3R5cGUuZ2V0SW1hZ2VzPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9ITA7aWYoIXRoaXMuaXNMb2FkZWQoKSlmb3Io dmFyIG49MCxhPXQ7bjxhLmxlbmd0aDtuKz0xKXt2YXIgaT1hW25dO3RoaXMu aW1hZ2VzW2ldfHwocj0hMSl9dGhpcy5pc0xvYWRlZCgpfHxyP3RoaXMuX25v dGlmeSh0LGUpOnRoaXMucmVxdWVzdG9ycy5wdXNoKHtpZHM6dCxjYWxsYmFj azplfSl9LHIucHJvdG90eXBlLl9ub3RpZnk9ZnVuY3Rpb24oZSxyKXtmb3Io dmFyIG49e30sYT0wLGk9ZTthPGkubGVuZ3RoO2ErPTEpe3ZhciBvPWlbYV07 dGhpcy5pbWFnZXNbb118fHRoaXMuZmlyZShuZXcgdC5FdmVudCgic3R5bGVp bWFnZW1pc3NpbmciLHtpZDpvfSkpO3ZhciBzPXRoaXMuaW1hZ2VzW29dO3M/ bltvXT17ZGF0YTpzLmRhdGEuY2xvbmUoKSxwaXhlbFJhdGlvOnMucGl4ZWxS YXRpbyxzZGY6cy5zZGYsdmVyc2lvbjpzLnZlcnNpb24saGFzUmVuZGVyQ2Fs bGJhY2s6Qm9vbGVhbihzLnVzZXJJbWFnZSYmcy51c2VySW1hZ2UucmVuZGVy KX06dC53YXJuT25jZSgnSW1hZ2UgIicrbysnIiBjb3VsZCBub3QgYmUgbG9h ZGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlIGFkZGVkIHRoZSBpbWFn ZSB3aXRoIG1hcC5hZGRJbWFnZSgpIG9yIGEgInNwcml0ZSIgcHJvcGVydHkg aW4geW91ciBzdHlsZS4gWW91IGNhbiBwcm92aWRlIG1pc3NpbmcgaW1hZ2Vz IGJ5IGxpc3RlbmluZyBmb3IgdGhlICJzdHlsZWltYWdlbWlzc2luZyIgbWFw IGV2ZW50LicpfXIobnVsbCxuKX0sci5wcm90b3R5cGUuZ2V0UGl4ZWxTaXpl PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hdGxhc0ltYWdlO3JldHVybnt3aWR0 aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19LHIucHJvdG90eXBlLmdldFBh dHRlcm49ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5wYXR0ZXJuc1tlXSxuPXRo aXMuZ2V0SW1hZ2UoZSk7aWYoIW4pcmV0dXJuIG51bGw7aWYociYmci5wb3Np dGlvbi52ZXJzaW9uPT09bi52ZXJzaW9uKXJldHVybiByLnBvc2l0aW9uO2lm KHIpci5wb3NpdGlvbi52ZXJzaW9uPW4udmVyc2lvbjtlbHNle3ZhciBhPXt3 Om4uZGF0YS53aWR0aCsyLGg6bi5kYXRhLmhlaWdodCsyLHg6MCx5OjB9LGk9 bmV3IHQuSW1hZ2VQb3NpdGlvbihhLG4pO3RoaXMucGF0dGVybnNbZV09e2Jp bjphLHBvc2l0aW9uOml9fXJldHVybiB0aGlzLl91cGRhdGVQYXR0ZXJuQXRs YXMoKSx0aGlzLnBhdHRlcm5zW2VdLnBvc2l0aW9ufSxyLnByb3RvdHlwZS5i aW5kPWZ1bmN0aW9uKGUpe3ZhciByPWUuZ2w7dGhpcy5hdGxhc1RleHR1cmU/ dGhpcy5kaXJ0eSYmKHRoaXMuYXRsYXNUZXh0dXJlLnVwZGF0ZSh0aGlzLmF0 bGFzSW1hZ2UpLHRoaXMuZGlydHk9ITEpOnRoaXMuYXRsYXNUZXh0dXJlPW5l dyB0LlRleHR1cmUoZSx0aGlzLmF0bGFzSW1hZ2Usci5SR0JBKSx0aGlzLmF0 bGFzVGV4dHVyZS5iaW5kKHIuTElORUFSLHIuQ0xBTVBfVE9fRURHRSl9LHIu cHJvdG90eXBlLl91cGRhdGVQYXR0ZXJuQXRsYXM9ZnVuY3Rpb24oKXt2YXIg ZT1bXTtmb3IodmFyIHIgaW4gdGhpcy5wYXR0ZXJucyllLnB1c2godGhpcy5w YXR0ZXJuc1tyXS5iaW4pO3ZhciBuPXQucG90cGFjayhlKSxhPW4udyxpPW4u aCxvPXRoaXMuYXRsYXNJbWFnZTtmb3IodmFyIHMgaW4gby5yZXNpemUoe3dp ZHRoOmF8fDEsaGVpZ2h0Oml8fDF9KSx0aGlzLnBhdHRlcm5zKXt2YXIgbD10 aGlzLnBhdHRlcm5zW3NdLmJpbixjPWwueCsxLHU9bC55KzEsaD10aGlzLmlt YWdlc1tzXS5kYXRhLGY9aC53aWR0aCxwPWguaGVpZ2h0O3QuUkdCQUltYWdl LmNvcHkoaCxvLHt4OjAseTowfSx7eDpjLHk6dX0se3dpZHRoOmYsaGVpZ2h0 OnB9KSx0LlJHQkFJbWFnZS5jb3B5KGgsbyx7eDowLHk6cC0xfSx7eDpjLHk6 dS0xfSx7d2lkdGg6ZixoZWlnaHQ6MX0pLHQuUkdCQUltYWdlLmNvcHkoaCxv LHt4OjAseTowfSx7eDpjLHk6dStwfSx7d2lkdGg6ZixoZWlnaHQ6MX0pLHQu UkdCQUltYWdlLmNvcHkoaCxvLHt4OmYtMSx5OjB9LHt4OmMtMSx5OnV9LHt3 aWR0aDoxLGhlaWdodDpwfSksdC5SR0JBSW1hZ2UuY29weShoLG8se3g6MCx5 OjB9LHt4OmMrZix5OnV9LHt3aWR0aDoxLGhlaWdodDpwfSl9dGhpcy5kaXJ0 eT0hMH0sci5wcm90b3R5cGUuYmVnaW5GcmFtZT1mdW5jdGlvbigpe3RoaXMu Y2FsbGJhY2tEaXNwYXRjaGVkVGhpc0ZyYW1lPXt9fSxyLnByb3RvdHlwZS5k aXNwYXRjaFJlbmRlckNhbGxiYWNrcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9 MCxyPXQ7ZTxyLmxlbmd0aDtlKz0xKXt2YXIgbj1yW2VdO2lmKCF0aGlzLmNh bGxiYWNrRGlzcGF0Y2hlZFRoaXNGcmFtZVtuXSl7dGhpcy5jYWxsYmFja0Rp c3BhdGNoZWRUaGlzRnJhbWVbbl09ITA7dmFyIGE9dGhpcy5pbWFnZXNbbl07 aChhKSYmdGhpcy51cGRhdGVJbWFnZShuLGEpfX19LHJ9KHQuRXZlbnRlZCks cD12LGQ9dixnPTFlMjA7ZnVuY3Rpb24gdih0LGUscixuLGEsaSl7dGhpcy5m b250U2l6ZT10fHwyNCx0aGlzLmJ1ZmZlcj12b2lkIDA9PT1lPzM6ZSx0aGlz LmN1dG9mZj1ufHwuMjUsdGhpcy5mb250RmFtaWx5PWF8fCJzYW5zLXNlcmlm Iix0aGlzLmZvbnRXZWlnaHQ9aXx8Im5vcm1hbCIsdGhpcy5yYWRpdXM9cnx8 ODt2YXIgbz10aGlzLnNpemU9dGhpcy5mb250U2l6ZSsyKnRoaXMuYnVmZmVy O3RoaXMuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp LHRoaXMuY2FudmFzLndpZHRoPXRoaXMuY2FudmFzLmhlaWdodD1vLHRoaXMu Y3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoIjJkIiksdGhpcy5jdHguZm9u dD10aGlzLmZvbnRXZWlnaHQrIiAiK3RoaXMuZm9udFNpemUrInB4ICIrdGhp cy5mb250RmFtaWx5LHRoaXMuY3R4LnRleHRCYXNlbGluZT0ibWlkZGxlIix0 aGlzLmN0eC5maWxsU3R5bGU9ImJsYWNrIix0aGlzLmdyaWRPdXRlcj1uZXcg RmxvYXQ2NEFycmF5KG8qbyksdGhpcy5ncmlkSW5uZXI9bmV3IEZsb2F0NjRB cnJheShvKm8pLHRoaXMuZj1uZXcgRmxvYXQ2NEFycmF5KG8pLHRoaXMuZD1u ZXcgRmxvYXQ2NEFycmF5KG8pLHRoaXMuej1uZXcgRmxvYXQ2NEFycmF5KG8r MSksdGhpcy52PW5ldyBJbnQxNkFycmF5KG8pLHRoaXMubWlkZGxlPU1hdGgu cm91bmQoby8yKihuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkdlY2tv LyIpPj0wPzEuMjoxKSl9ZnVuY3Rpb24gbSh0LGUscixuLGEsaSxvKXtmb3Io dmFyIHM9MDtzPGU7cysrKXtmb3IodmFyIGw9MDtsPHI7bCsrKW5bbF09dFts KmUrc107Zm9yKHkobixhLGksbyxyKSxsPTA7bDxyO2wrKyl0W2wqZStzXT1h W2xdfWZvcihsPTA7bDxyO2wrKyl7Zm9yKHM9MDtzPGU7cysrKW5bc109dFts KmUrc107Zm9yKHkobixhLGksbyxlKSxzPTA7czxlO3MrKyl0W2wqZStzXT1N YXRoLnNxcnQoYVtzXSl9fWZ1bmN0aW9uIHkodCxlLHIsbixhKXtyWzBdPTAs blswXT0tZyxuWzFdPStnO2Zvcih2YXIgaT0xLG89MDtpPGE7aSsrKXtmb3Io dmFyIHM9KHRbaV0raSppLSh0W3Jbb11dK3Jbb10qcltvXSkpLygyKmktMipy W29dKTtzPD1uW29dOylvLS0scz0odFtpXStpKmktKHRbcltvXV0rcltvXSpy W29dKSkvKDIqaS0yKnJbb10pO3JbKytvXT1pLG5bb109cyxuW28rMV09K2d9 Zm9yKGk9MCxvPTA7aTxhO2krKyl7Zm9yKDtuW28rMV08aTspbysrO2VbaV09 KGktcltvXSkqKGktcltvXSkrdFtyW29dXX19di5wcm90b3R5cGUuZHJhdz1m dW5jdGlvbih0KXt0aGlzLmN0eC5jbGVhclJlY3QoMCwwLHRoaXMuc2l6ZSx0 aGlzLnNpemUpLHRoaXMuY3R4LmZpbGxUZXh0KHQsdGhpcy5idWZmZXIsdGhp cy5taWRkbGUpO2Zvcih2YXIgZT10aGlzLmN0eC5nZXRJbWFnZURhdGEoMCww LHRoaXMuc2l6ZSx0aGlzLnNpemUpLHI9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5 KHRoaXMuc2l6ZSp0aGlzLnNpemUpLG49MDtuPHRoaXMuc2l6ZSp0aGlzLnNp emU7bisrKXt2YXIgYT1lLmRhdGFbNCpuKzNdLzI1NTt0aGlzLmdyaWRPdXRl cltuXT0xPT09YT8wOjA9PT1hP2c6TWF0aC5wb3coTWF0aC5tYXgoMCwuNS1h KSwyKSx0aGlzLmdyaWRJbm5lcltuXT0xPT09YT9nOjA9PT1hPzA6TWF0aC5w b3coTWF0aC5tYXgoMCxhLS41KSwyKX1mb3IobSh0aGlzLmdyaWRPdXRlcix0 aGlzLnNpemUsdGhpcy5zaXplLHRoaXMuZix0aGlzLmQsdGhpcy52LHRoaXMu eiksbSh0aGlzLmdyaWRJbm5lcix0aGlzLnNpemUsdGhpcy5zaXplLHRoaXMu Zix0aGlzLmQsdGhpcy52LHRoaXMueiksbj0wO248dGhpcy5zaXplKnRoaXMu c2l6ZTtuKyspe3ZhciBpPXRoaXMuZ3JpZE91dGVyW25dLXRoaXMuZ3JpZElu bmVyW25dO3Jbbl09TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3Vu ZCgyNTUtMjU1KihpL3RoaXMucmFkaXVzK3RoaXMuY3V0b2ZmKSkpKX1yZXR1 cm4gcn0scC5kZWZhdWx0PWQ7dmFyIHg9ZnVuY3Rpb24odCxlKXt0aGlzLnJl cXVlc3RNYW5hZ2VyPXQsdGhpcy5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHk9 ZSx0aGlzLmVudHJpZXM9e319O3gucHJvdG90eXBlLnNldFVSTD1mdW5jdGlv bih0KXt0aGlzLnVybD10fSx4LnByb3RvdHlwZS5nZXRHbHlwaHM9ZnVuY3Rp b24oZSxyKXt2YXIgbj10aGlzLGE9W107Zm9yKHZhciBpIGluIGUpZm9yKHZh ciBvPTAscz1lW2ldO288cy5sZW5ndGg7bys9MSl7dmFyIGw9c1tvXTthLnB1 c2goe3N0YWNrOmksaWQ6bH0pfXQuYXN5bmNBbGwoYSxmdW5jdGlvbih0LGUp e3ZhciByPXQuc3RhY2ssYT10LmlkLGk9bi5lbnRyaWVzW3JdO2l8fChpPW4u ZW50cmllc1tyXT17Z2x5cGhzOnt9LHJlcXVlc3RzOnt9fSk7dmFyIG89aS5n bHlwaHNbYV07aWYodm9pZCAwPT09byl7aWYobz1uLl90aW55U0RGKGkscixh KSlyZXR1cm4gaS5nbHlwaHNbYV09byx2b2lkIGUobnVsbCx7c3RhY2s6cixp ZDphLGdseXBoOm99KTt2YXIgcz1NYXRoLmZsb29yKGEvMjU2KTtpZigyNTYq cz42NTUzNSllKG5ldyBFcnJvcigiZ2x5cGhzID4gNjU1MzUgbm90IHN1cHBv cnRlZCIpKTtlbHNle3ZhciBsPWkucmVxdWVzdHNbc107bHx8KGw9aS5yZXF1 ZXN0c1tzXT1bXSx4LmxvYWRHbHlwaFJhbmdlKHIscyxuLnVybCxuLnJlcXVl c3RNYW5hZ2VyLGZ1bmN0aW9uKHQsZSl7aWYoZSlmb3IodmFyIHIgaW4gZSlu Ll9kb2VzQ2hhclN1cHBvcnRMb2NhbEdseXBoKCtyKXx8KGkuZ2x5cGhzWyty XT1lWytyXSk7Zm9yKHZhciBhPTAsbz1sO2E8by5sZW5ndGg7YSs9MSkoMCxv W2FdKSh0LGUpO2RlbGV0ZSBpLnJlcXVlc3RzW3NdfSkpLGwucHVzaChmdW5j dGlvbih0LG4pe3Q/ZSh0KTpuJiZlKG51bGwse3N0YWNrOnIsaWQ6YSxnbHlw aDpuW2FdfHxudWxsfSl9KX19ZWxzZSBlKG51bGwse3N0YWNrOnIsaWQ6YSxn bHlwaDpvfSl9LGZ1bmN0aW9uKHQsZSl7aWYodClyKHQpO2Vsc2UgaWYoZSl7 Zm9yKHZhciBuPXt9LGE9MCxpPWU7YTxpLmxlbmd0aDthKz0xKXt2YXIgbz1p W2FdLHM9by5zdGFjayxsPW8uaWQsYz1vLmdseXBoOyhuW3NdfHwobltzXT17 fSkpW2xdPWMmJntpZDpjLmlkLGJpdG1hcDpjLmJpdG1hcC5jbG9uZSgpLG1l dHJpY3M6Yy5tZXRyaWNzfX1yKG51bGwsbil9fSl9LHgucHJvdG90eXBlLl9k b2VzQ2hhclN1cHBvcnRMb2NhbEdseXBoPWZ1bmN0aW9uKGUpe3JldHVybiEh dGhpcy5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHkmJih0LmlzQ2hhclsiQ0pL IFVuaWZpZWQgSWRlb2dyYXBocyJdKGUpfHx0LmlzQ2hhclsiSGFuZ3VsIFN5 bGxhYmxlcyJdKGUpfHx0LmlzQ2hhci5IaXJhZ2FuYShlKXx8dC5pc0NoYXIu S2F0YWthbmEoZSkpfSx4LnByb3RvdHlwZS5fdGlueVNERj1mdW5jdGlvbihl LHIsbil7dmFyIGE9dGhpcy5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHk7aWYo YSYmdGhpcy5fZG9lc0NoYXJTdXBwb3J0TG9jYWxHbHlwaChuKSl7dmFyIGk9 ZS50aW55U0RGO2lmKCFpKXt2YXIgbz0iNDAwIjsvYm9sZC9pLnRlc3Qocik/ bz0iOTAwIjovbWVkaXVtL2kudGVzdChyKT9vPSI1MDAiOi9saWdodC9pLnRl c3QocikmJihvPSIyMDAiKSxpPWUudGlueVNERj1uZXcgeC5UaW55U0RGKDI0 LDMsOCwuMjUsYSxvKX1yZXR1cm57aWQ6bixiaXRtYXA6bmV3IHQuQWxwaGFJ bWFnZSh7d2lkdGg6MzAsaGVpZ2h0OjMwfSxpLmRyYXcoU3RyaW5nLmZyb21D aGFyQ29kZShuKSkpLG1ldHJpY3M6e3dpZHRoOjI0LGhlaWdodDoyNCxsZWZ0 OjAsdG9wOi04LGFkdmFuY2U6MjR9fX19LHgubG9hZEdseXBoUmFuZ2U9ZnVu Y3Rpb24oZSxyLG4sYSxpKXt2YXIgbz0yNTYqcixzPW8rMjU1LGw9YS50cmFu c2Zvcm1SZXF1ZXN0KGEubm9ybWFsaXplR2x5cGhzVVJMKG4pLnJlcGxhY2Uo Intmb250c3RhY2t9IixlKS5yZXBsYWNlKCJ7cmFuZ2V9IixvKyItIitzKSx0 LlJlc291cmNlVHlwZS5HbHlwaHMpO3QuZ2V0QXJyYXlCdWZmZXIobCxmdW5j dGlvbihlLHIpe2lmKGUpaShlKTtlbHNlIGlmKHIpe2Zvcih2YXIgbj17fSxh PTAsbz10LnBhcnNlR2x5cGhQQkYocik7YTxvLmxlbmd0aDthKz0xKXt2YXIg cz1vW2FdO25bcy5pZF09c31pKG51bGwsbil9fSl9LHguVGlueVNERj1wO3Zh ciBiPWZ1bmN0aW9uKCl7dGhpcy5zcGVjaWZpY2F0aW9uPXQuc3R5bGVTcGVj LmxpZ2h0LnBvc2l0aW9ufTtiLnByb3RvdHlwZS5wb3NzaWJseUV2YWx1YXRl PWZ1bmN0aW9uKGUscil7cmV0dXJuIHQuc3BoZXJpY2FsVG9DYXJ0ZXNpYW4o ZS5leHByZXNzaW9uLmV2YWx1YXRlKHIpKX0sYi5wcm90b3R5cGUuaW50ZXJw b2xhdGU9ZnVuY3Rpb24oZSxyLG4pe3JldHVybnt4OnQubnVtYmVyKGUueCxy LngsbikseTp0Lm51bWJlcihlLnksci55LG4pLHo6dC5udW1iZXIoZS56LHIu eixuKX19O3ZhciBfPW5ldyB0LlByb3BlcnRpZXMoe2FuY2hvcjpuZXcgdC5E YXRhQ29uc3RhbnRQcm9wZXJ0eSh0LnN0eWxlU3BlYy5saWdodC5hbmNob3Ip LHBvc2l0aW9uOm5ldyBiLGNvbG9yOm5ldyB0LkRhdGFDb25zdGFudFByb3Bl cnR5KHQuc3R5bGVTcGVjLmxpZ2h0LmNvbG9yKSxpbnRlbnNpdHk6bmV3IHQu RGF0YUNvbnN0YW50UHJvcGVydHkodC5zdHlsZVNwZWMubGlnaHQuaW50ZW5z aXR5KX0pLHc9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihyKXtlLmNhbGwodGhp cyksdGhpcy5fdHJhbnNpdGlvbmFibGU9bmV3IHQuVHJhbnNpdGlvbmFibGUo XyksdGhpcy5zZXRMaWdodChyKSx0aGlzLl90cmFuc2l0aW9uaW5nPXRoaXMu X3RyYW5zaXRpb25hYmxlLnVudHJhbnNpdGlvbmVkKCl9cmV0dXJuIGUmJihy Ll9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUu cHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJvdG90 eXBlLmdldExpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRp b25hYmxlLnNlcmlhbGl6ZSgpfSxyLnByb3RvdHlwZS5zZXRMaWdodD1mdW5j dGlvbihlLHIpe2lmKHZvaWQgMD09PXImJihyPXt9KSwhdGhpcy5fdmFsaWRh dGUodC52YWxpZGF0ZUxpZ2h0LGUscikpZm9yKHZhciBuIGluIGUpe3ZhciBh PWVbbl07dC5lbmRzV2l0aChuLCItdHJhbnNpdGlvbiIpP3RoaXMuX3RyYW5z aXRpb25hYmxlLnNldFRyYW5zaXRpb24obi5zbGljZSgwLC0iLXRyYW5zaXRp b24iLmxlbmd0aCksYSk6dGhpcy5fdHJhbnNpdGlvbmFibGUuc2V0VmFsdWUo bixhKX19LHIucHJvdG90eXBlLnVwZGF0ZVRyYW5zaXRpb25zPWZ1bmN0aW9u KHQpe3RoaXMuX3RyYW5zaXRpb25pbmc9dGhpcy5fdHJhbnNpdGlvbmFibGUu dHJhbnNpdGlvbmVkKHQsdGhpcy5fdHJhbnNpdGlvbmluZyl9LHIucHJvdG90 eXBlLmhhc1RyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJh bnNpdGlvbmluZy5oYXNUcmFuc2l0aW9uKCl9LHIucHJvdG90eXBlLnJlY2Fs Y3VsYXRlPWZ1bmN0aW9uKHQpe3RoaXMucHJvcGVydGllcz10aGlzLl90cmFu c2l0aW9uaW5nLnBvc3NpYmx5RXZhbHVhdGUodCl9LHIucHJvdG90eXBlLl92 YWxpZGF0ZT1mdW5jdGlvbihlLHIsbil7cmV0dXJuKCFufHwhMSE9PW4udmFs aWRhdGUpJiZ0LmVtaXRWYWxpZGF0aW9uRXJyb3JzKHRoaXMsZS5jYWxsKHQu dmFsaWRhdGVTdHlsZSx0LmV4dGVuZCh7dmFsdWU6cixzdHlsZTp7Z2x5cGhz OiEwLHNwcml0ZTohMH0sc3R5bGVTcGVjOnQuc3R5bGVTcGVjfSkpKX0scn0o dC5FdmVudGVkKSxrPWZ1bmN0aW9uKHQsZSl7dGhpcy53aWR0aD10LHRoaXMu aGVpZ2h0PWUsdGhpcy5uZXh0Um93PTAsdGhpcy5ieXRlcz00LHRoaXMuZGF0 YT1uZXcgVWludDhBcnJheSh0aGlzLndpZHRoKnRoaXMuaGVpZ2h0KnRoaXMu Ynl0ZXMpLHRoaXMucG9zaXRpb25zPXt9fTtrLnByb3RvdHlwZS5nZXREYXNo PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5qb2luKCIsIikrU3RyaW5nKGUpO3Jl dHVybiB0aGlzLnBvc2l0aW9uc1tyXXx8KHRoaXMucG9zaXRpb25zW3JdPXRo aXMuYWRkRGFzaCh0LGUpKSx0aGlzLnBvc2l0aW9uc1tyXX0say5wcm90b3R5 cGUuYWRkRGFzaD1mdW5jdGlvbihlLHIpe3ZhciBuPXI/NzowLGE9MipuKzE7 aWYodGhpcy5uZXh0Um93K2E+dGhpcy5oZWlnaHQpcmV0dXJuIHQud2Fybk9u Y2UoIkxpbmVBdGxhcyBvdXQgb2Ygc3BhY2UiKSxudWxsO2Zvcih2YXIgaT0w LG89MDtvPGUubGVuZ3RoO28rKylpKz1lW29dO2Zvcih2YXIgcz10aGlzLndp ZHRoL2ksbD1zLzIsYz1lLmxlbmd0aCUyPT0xLHU9LW47dTw9bjt1KyspZm9y KHZhciBoPXRoaXMubmV4dFJvdytuK3UsZj10aGlzLndpZHRoKmgscD1jPy1l W2UubGVuZ3RoLTFdOjAsZD1lWzBdLGc9MSx2PTA7djx0aGlzLndpZHRoO3Yr Kyl7Zm9yKDtkPHYvczspcD1kLGQrPWVbZ10sYyYmZz09PWUubGVuZ3RoLTEm JihkKz1lWzBdKSxnKys7dmFyIG09TWF0aC5hYnModi1wKnMpLHk9TWF0aC5h YnModi1kKnMpLHg9TWF0aC5taW4obSx5KSxiPWclMj09MSxfPXZvaWQgMDtp ZihyKXt2YXIgdz1uP3UvbioobCsxKTowO2lmKGIpe3ZhciBrPWwtTWF0aC5h YnModyk7Xz1NYXRoLnNxcnQoeCp4K2sqayl9ZWxzZSBfPWwtTWF0aC5zcXJ0 KHgqeCt3KncpfWVsc2UgXz0oYj8xOi0xKSp4O3RoaXMuZGF0YVszKzQqKGYr dildPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LF8rMTI4KSl9dmFyIFQ9e3k6 KHRoaXMubmV4dFJvdytuKy41KS90aGlzLmhlaWdodCxoZWlnaHQ6MipuL3Ro aXMuaGVpZ2h0LHdpZHRoOml9O3JldHVybiB0aGlzLm5leHRSb3crPWEsdGhp cy5kaXJ0eT0hMCxUfSxrLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQpe3Zh ciBlPXQuZ2w7dGhpcy50ZXh0dXJlPyhlLmJpbmRUZXh0dXJlKGUuVEVYVFVS RV8yRCx0aGlzLnRleHR1cmUpLHRoaXMuZGlydHkmJih0aGlzLmRpcnR5PSEx LGUudGV4U3ViSW1hZ2UyRChlLlRFWFRVUkVfMkQsMCwwLDAsdGhpcy53aWR0 aCx0aGlzLmhlaWdodCxlLlJHQkEsZS5VTlNJR05FRF9CWVRFLHRoaXMuZGF0 YSkpKToodGhpcy50ZXh0dXJlPWUuY3JlYXRlVGV4dHVyZSgpLGUuYmluZFRl eHR1cmUoZS5URVhUVVJFXzJELHRoaXMudGV4dHVyZSksZS50ZXhQYXJhbWV0 ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfV1JBUF9TLGUuUkVQRUFUKSxl LnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9XUkFQX1Qs ZS5SRVBFQVQpLGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhU VVJFX01JTl9GSUxURVIsZS5MSU5FQVIpLGUudGV4UGFyYW1ldGVyaShlLlRF WFRVUkVfMkQsZS5URVhUVVJFX01BR19GSUxURVIsZS5MSU5FQVIpLGUudGV4 SW1hZ2UyRChlLlRFWFRVUkVfMkQsMCxlLlJHQkEsdGhpcy53aWR0aCx0aGlz LmhlaWdodCwwLGUuUkdCQSxlLlVOU0lHTkVEX0JZVEUsdGhpcy5kYXRhKSl9 O3ZhciBUPWZ1bmN0aW9uIGUocixuKXt0aGlzLndvcmtlclBvb2w9cix0aGlz LmFjdG9ycz1bXSx0aGlzLmN1cnJlbnRBY3Rvcj0wLHRoaXMuaWQ9dC51bmlx dWVJZCgpO2Zvcih2YXIgYT10aGlzLndvcmtlclBvb2wuYWNxdWlyZSh0aGlz LmlkKSxpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciBvPWFbaV0scz1uZXcgZS5B Y3RvcihvLG4sdGhpcy5pZCk7cy5uYW1lPSJXb3JrZXIgIitpLHRoaXMuYWN0 b3JzLnB1c2gocyl9fTtmdW5jdGlvbiBNKGUscixuKXt2YXIgYT1mdW5jdGlv bihhLGkpe2lmKGEpcmV0dXJuIG4oYSk7aWYoaSl7dmFyIG89dC5waWNrKHQu ZXh0ZW5kKGksZSksWyJ0aWxlcyIsIm1pbnpvb20iLCJtYXh6b29tIiwiYXR0 cmlidXRpb24iLCJtYXBib3hfbG9nbyIsImJvdW5kcyIsInNjaGVtZSIsInRp bGVTaXplIiwiZW5jb2RpbmciXSk7aS52ZWN0b3JfbGF5ZXJzJiYoby52ZWN0 b3JMYXllcnM9aS52ZWN0b3JfbGF5ZXJzLG8udmVjdG9yTGF5ZXJJZHM9by52 ZWN0b3JMYXllcnMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSkpLGUu dXJsJiYoby50aWxlcz1yLmNhbm9uaWNhbGl6ZVRpbGVzZXQobyxlLnVybCkp LG4obnVsbCxvKX19O3JldHVybiBlLnVybD90LmdldEpTT04oci50cmFuc2Zv cm1SZXF1ZXN0KHIubm9ybWFsaXplU291cmNlVVJMKGUudXJsKSx0LlJlc291 cmNlVHlwZS5Tb3VyY2UpLGEpOnQuYnJvd3Nlci5mcmFtZShmdW5jdGlvbigp e3JldHVybiBhKG51bGwsZSl9KX1ULnByb3RvdHlwZS5icm9hZGNhc3Q9ZnVu Y3Rpb24oZSxyLG4pe249bnx8ZnVuY3Rpb24oKXt9LHQuYXN5bmNBbGwodGhp cy5hY3RvcnMsZnVuY3Rpb24odCxuKXt0LnNlbmQoZSxyLG4pfSxuKX0sVC5w cm90b3R5cGUuZ2V0QWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJy ZW50QWN0b3I9KHRoaXMuY3VycmVudEFjdG9yKzEpJXRoaXMuYWN0b3JzLmxl bmd0aCx0aGlzLmFjdG9yc1t0aGlzLmN1cnJlbnRBY3Rvcl19LFQucHJvdG90 eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuYWN0b3JzLmZvckVhY2goZnVu Y3Rpb24odCl7dC5yZW1vdmUoKX0pLHRoaXMuYWN0b3JzPVtdLHRoaXMud29y a2VyUG9vbC5yZWxlYXNlKHRoaXMuaWQpfSxULkFjdG9yPXQuQWN0b3I7dmFy IEE9ZnVuY3Rpb24oZSxyLG4pe3RoaXMuYm91bmRzPXQuTG5nTGF0Qm91bmRz LmNvbnZlcnQodGhpcy52YWxpZGF0ZUJvdW5kcyhlKSksdGhpcy5taW56b29t PXJ8fDAsdGhpcy5tYXh6b29tPW58fDI0fTtBLnByb3RvdHlwZS52YWxpZGF0 ZUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYm ND09PXQubGVuZ3RoP1tNYXRoLm1heCgtMTgwLHRbMF0pLE1hdGgubWF4KC05 MCx0WzFdKSxNYXRoLm1pbigxODAsdFsyXSksTWF0aC5taW4oOTAsdFszXSld OlstMTgwLC05MCwxODAsOTBdfSxBLnByb3RvdHlwZS5jb250YWlucz1mdW5j dGlvbihlKXt2YXIgcj1NYXRoLnBvdygyLGUueiksbj1NYXRoLmZsb29yKHQu bWVyY2F0b3JYZnJvbUxuZyh0aGlzLmJvdW5kcy5nZXRXZXN0KCkpKnIpLGE9 TWF0aC5mbG9vcih0Lm1lcmNhdG9yWWZyb21MYXQodGhpcy5ib3VuZHMuZ2V0 Tm9ydGgoKSkqciksaT1NYXRoLmNlaWwodC5tZXJjYXRvclhmcm9tTG5nKHRo aXMuYm91bmRzLmdldEVhc3QoKSkqciksbz1NYXRoLmNlaWwodC5tZXJjYXRv cllmcm9tTGF0KHRoaXMuYm91bmRzLmdldFNvdXRoKCkpKnIpO3JldHVybiBl Lng+PW4mJmUueDxpJiZlLnk+PWEmJmUueTxvfTt2YXIgUz1mdW5jdGlvbihl KXtmdW5jdGlvbiByKHIsbixhLGkpe2lmKGUuY2FsbCh0aGlzKSx0aGlzLmlk PXIsdGhpcy5kaXNwYXRjaGVyPWEsdGhpcy50eXBlPSJ2ZWN0b3IiLHRoaXMu bWluem9vbT0wLHRoaXMubWF4em9vbT0yMix0aGlzLnNjaGVtZT0ieHl6Iix0 aGlzLnRpbGVTaXplPTUxMix0aGlzLnJlcGFyc2VPdmVyc2NhbGVkPSEwLHRo aXMuaXNUaWxlQ2xpcHBlZD0hMCx0aGlzLl9sb2FkZWQ9ITEsdC5leHRlbmQo dGhpcyx0LnBpY2sobixbInVybCIsInNjaGVtZSIsInRpbGVTaXplIl0pKSx0 aGlzLl9vcHRpb25zPXQuZXh0ZW5kKHt0eXBlOiJ2ZWN0b3IifSxuKSx0aGlz Ll9jb2xsZWN0UmVzb3VyY2VUaW1pbmc9bi5jb2xsZWN0UmVzb3VyY2VUaW1p bmcsNTEyIT09dGhpcy50aWxlU2l6ZSl0aHJvdyBuZXcgRXJyb3IoInZlY3Rv ciB0aWxlIHNvdXJjZXMgbXVzdCBoYXZlIGEgdGlsZVNpemUgb2YgNTEyIik7 dGhpcy5zZXRFdmVudGVkUGFyZW50KGkpfXJldHVybiBlJiYoci5fX3Byb3Rv X189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlw ZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5sb2Fk PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9sb2FkZWQ9ITEsdGhpcy5m aXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGluZyIse2RhdGFUeXBlOiJzb3Vy Y2UifSkpLHRoaXMuX3RpbGVKU09OUmVxdWVzdD1NKHRoaXMuX29wdGlvbnMs dGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLGZ1bmN0aW9uKHIsbil7ZS5fdGls ZUpTT05SZXF1ZXN0PW51bGwsZS5fbG9hZGVkPSEwLHI/ZS5maXJlKG5ldyB0 LkVycm9yRXZlbnQocikpOm4mJih0LmV4dGVuZChlLG4pLG4uYm91bmRzJiYo ZS50aWxlQm91bmRzPW5ldyBBKG4uYm91bmRzLGUubWluem9vbSxlLm1heHpv b20pKSx0LnBvc3RUdXJuc3RpbGVFdmVudChuLnRpbGVzLGUubWFwLl9yZXF1 ZXN0TWFuYWdlci5fY3VzdG9tQWNjZXNzVG9rZW4pLHQucG9zdE1hcExvYWRF dmVudChuLnRpbGVzLGUubWFwLl9nZXRNYXBJZCgpLGUubWFwLl9yZXF1ZXN0 TWFuYWdlci5fc2t1VG9rZW4sZS5tYXAuX3JlcXVlc3RNYW5hZ2VyLl9jdXN0 b21BY2Nlc3NUb2tlbiksZS5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0 YVR5cGU6InNvdXJjZSIsc291cmNlRGF0YVR5cGU6Im1ldGFkYXRhIn0pKSxl LmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLHtkYXRhVHlwZToic291cmNlIixz b3VyY2VEYXRhVHlwZToiY29udGVudCJ9KSkpfSl9LHIucHJvdG90eXBlLmxv YWRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2FkZWR9LHIucHJvdG90 eXBlLmhhc1RpbGU9ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMudGlsZUJvdW5k c3x8dGhpcy50aWxlQm91bmRzLmNvbnRhaW5zKHQuY2Fub25pY2FsKX0sci5w cm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dGhpcy5tYXA9dCx0aGlzLmxv YWQoKX0sci5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLl90 aWxlSlNPTlJlcXVlc3QmJih0aGlzLl90aWxlSlNPTlJlcXVlc3QuY2FuY2Vs KCksdGhpcy5fdGlsZUpTT05SZXF1ZXN0PW51bGwpfSxyLnByb3RvdHlwZS5z ZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5leHRlbmQoe30sdGhpcy5f b3B0aW9ucyl9LHIucHJvdG90eXBlLmxvYWRUaWxlPWZ1bmN0aW9uKGUscil7 dmFyIG49dGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLm5vcm1hbGl6ZVRpbGVV UkwoZS50aWxlSUQuY2Fub25pY2FsLnVybCh0aGlzLnRpbGVzLHRoaXMuc2No ZW1lKSx0aGlzLnVybCxudWxsKSxhPXtyZXF1ZXN0OnRoaXMubWFwLl9yZXF1 ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KG4sdC5SZXNvdXJjZVR5cGUu VGlsZSksdWlkOmUudWlkLHRpbGVJRDplLnRpbGVJRCx6b29tOmUudGlsZUlE Lm92ZXJzY2FsZWRaLHRpbGVTaXplOnRoaXMudGlsZVNpemUqZS50aWxlSUQu b3ZlcnNjYWxlRmFjdG9yKCksdHlwZTp0aGlzLnR5cGUsc291cmNlOnRoaXMu aWQscGl4ZWxSYXRpbzp0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyxzaG93 Q29sbGlzaW9uQm94ZXM6dGhpcy5tYXAuc2hvd0NvbGxpc2lvbkJveGVzfTtm dW5jdGlvbiBpKG4sYSl7cmV0dXJuIGRlbGV0ZSBlLnJlcXVlc3QsZS5hYm9y dGVkP3IobnVsbCk6biYmNDA0IT09bi5zdGF0dXM/cihuKTooYSYmYS5yZXNv dXJjZVRpbWluZyYmKGUucmVzb3VyY2VUaW1pbmc9YS5yZXNvdXJjZVRpbWlu ZyksdGhpcy5tYXAuX3JlZnJlc2hFeHBpcmVkVGlsZXMmJmEmJmUuc2V0RXhw aXJ5RGF0YShhKSxlLmxvYWRWZWN0b3JEYXRhKGEsdGhpcy5tYXAucGFpbnRl ciksdC5jYWNoZUVudHJ5UG9zc2libHlBZGRlZCh0aGlzLmRpc3BhdGNoZXIp LHIobnVsbCksdm9pZChlLnJlbG9hZENhbGxiYWNrJiYodGhpcy5sb2FkVGls ZShlLGUucmVsb2FkQ2FsbGJhY2spLGUucmVsb2FkQ2FsbGJhY2s9bnVsbCkp KX1hLnJlcXVlc3QuY29sbGVjdFJlc291cmNlVGltaW5nPXRoaXMuX2NvbGxl Y3RSZXNvdXJjZVRpbWluZyxlLmFjdG9yJiYiZXhwaXJlZCIhPT1lLnN0YXRl PyJsb2FkaW5nIj09PWUuc3RhdGU/ZS5yZWxvYWRDYWxsYmFjaz1yOmUucmVx dWVzdD1lLmFjdG9yLnNlbmQoInJlbG9hZFRpbGUiLGEsaS5iaW5kKHRoaXMp KTooZS5hY3Rvcj10aGlzLmRpc3BhdGNoZXIuZ2V0QWN0b3IoKSxlLnJlcXVl c3Q9ZS5hY3Rvci5zZW5kKCJsb2FkVGlsZSIsYSxpLmJpbmQodGhpcykpKX0s ci5wcm90b3R5cGUuYWJvcnRUaWxlPWZ1bmN0aW9uKHQpe3QucmVxdWVzdCYm KHQucmVxdWVzdC5jYW5jZWwoKSxkZWxldGUgdC5yZXF1ZXN0KSx0LmFjdG9y JiZ0LmFjdG9yLnNlbmQoImFib3J0VGlsZSIse3VpZDp0LnVpZCx0eXBlOnRo aXMudHlwZSxzb3VyY2U6dGhpcy5pZH0sdm9pZCAwKX0sci5wcm90b3R5cGUu dW5sb2FkVGlsZT1mdW5jdGlvbih0KXt0LnVubG9hZFZlY3RvckRhdGEoKSx0 LmFjdG9yJiZ0LmFjdG9yLnNlbmQoInJlbW92ZVRpbGUiLHt1aWQ6dC51aWQs dHlwZTp0aGlzLnR5cGUsc291cmNlOnRoaXMuaWR9LHZvaWQgMCl9LHIucHJv dG90eXBlLmhhc1RyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4hMX0scn0o dC5FdmVudGVkKSxFPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIocixuLGEsaSl7 ZS5jYWxsKHRoaXMpLHRoaXMuaWQ9cix0aGlzLmRpc3BhdGNoZXI9YSx0aGlz LnNldEV2ZW50ZWRQYXJlbnQoaSksdGhpcy50eXBlPSJyYXN0ZXIiLHRoaXMu bWluem9vbT0wLHRoaXMubWF4em9vbT0yMix0aGlzLnJvdW5kWm9vbT0hMCx0 aGlzLnNjaGVtZT0ieHl6Iix0aGlzLnRpbGVTaXplPTUxMix0aGlzLl9sb2Fk ZWQ9ITEsdGhpcy5fb3B0aW9ucz10LmV4dGVuZCh7dHlwZToicmFzdGVyIn0s biksdC5leHRlbmQodGhpcyx0LnBpY2sobixbInVybCIsInNjaGVtZSIsInRp bGVTaXplIl0pKX1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90 eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBl LmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUubG9hZD1mdW5jdGlvbigpe3Zh ciBlPXRoaXM7dGhpcy5fbG9hZGVkPSExLHRoaXMuZmlyZShuZXcgdC5FdmVu dCgiZGF0YWxvYWRpbmciLHtkYXRhVHlwZToic291cmNlIn0pKSx0aGlzLl90 aWxlSlNPTlJlcXVlc3Q9TSh0aGlzLl9vcHRpb25zLHRoaXMubWFwLl9yZXF1 ZXN0TWFuYWdlcixmdW5jdGlvbihyLG4pe2UuX3RpbGVKU09OUmVxdWVzdD1u dWxsLGUuX2xvYWRlZD0hMCxyP2UuZmlyZShuZXcgdC5FcnJvckV2ZW50KHIp KTpuJiYodC5leHRlbmQoZSxuKSxuLmJvdW5kcyYmKGUudGlsZUJvdW5kcz1u ZXcgQShuLmJvdW5kcyxlLm1pbnpvb20sZS5tYXh6b29tKSksdC5wb3N0VHVy bnN0aWxlRXZlbnQobi50aWxlcyksdC5wb3N0TWFwTG9hZEV2ZW50KG4udGls ZXMsZS5tYXAuX2dldE1hcElkKCksZS5tYXAuX3JlcXVlc3RNYW5hZ2VyLl9z a3VUb2tlbiksZS5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0YVR5cGU6 InNvdXJjZSIsc291cmNlRGF0YVR5cGU6Im1ldGFkYXRhIn0pKSxlLmZpcmUo bmV3IHQuRXZlbnQoImRhdGEiLHtkYXRhVHlwZToic291cmNlIixzb3VyY2VE YXRhVHlwZToiY29udGVudCJ9KSkpfSl9LHIucHJvdG90eXBlLmxvYWRlZD1m dW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2FkZWR9LHIucHJvdG90eXBlLm9u QWRkPWZ1bmN0aW9uKHQpe3RoaXMubWFwPXQsdGhpcy5sb2FkKCl9LHIucHJv dG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5fdGlsZUpTT05SZXF1 ZXN0JiYodGhpcy5fdGlsZUpTT05SZXF1ZXN0LmNhbmNlbCgpLHRoaXMuX3Rp bGVKU09OUmVxdWVzdD1udWxsKX0sci5wcm90b3R5cGUuc2VyaWFsaXplPWZ1 bmN0aW9uKCl7cmV0dXJuIHQuZXh0ZW5kKHt9LHRoaXMuX29wdGlvbnMpfSxy LnByb3RvdHlwZS5oYXNUaWxlPWZ1bmN0aW9uKHQpe3JldHVybiF0aGlzLnRp bGVCb3VuZHN8fHRoaXMudGlsZUJvdW5kcy5jb250YWlucyh0LmNhbm9uaWNh bCl9LHIucHJvdG90eXBlLmxvYWRUaWxlPWZ1bmN0aW9uKGUscil7dmFyIG49 dGhpcyxhPXRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci5ub3JtYWxpemVUaWxl VVJMKGUudGlsZUlELmNhbm9uaWNhbC51cmwodGhpcy50aWxlcyx0aGlzLnNj aGVtZSksdGhpcy51cmwsdGhpcy50aWxlU2l6ZSk7ZS5yZXF1ZXN0PXQuZ2V0 SW1hZ2UodGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVl c3QoYSx0LlJlc291cmNlVHlwZS5UaWxlKSxmdW5jdGlvbihhLGkpe2lmKGRl bGV0ZSBlLnJlcXVlc3QsZS5hYm9ydGVkKWUuc3RhdGU9InVubG9hZGVkIixy KG51bGwpO2Vsc2UgaWYoYSllLnN0YXRlPSJlcnJvcmVkIixyKGEpO2Vsc2Ug aWYoaSl7bi5tYXAuX3JlZnJlc2hFeHBpcmVkVGlsZXMmJmUuc2V0RXhwaXJ5 RGF0YShpKSxkZWxldGUgaS5jYWNoZUNvbnRyb2wsZGVsZXRlIGkuZXhwaXJl czt2YXIgbz1uLm1hcC5wYWludGVyLmNvbnRleHQscz1vLmdsO2UudGV4dHVy ZT1uLm1hcC5wYWludGVyLmdldFRpbGVUZXh0dXJlKGkud2lkdGgpLGUudGV4 dHVyZT9lLnRleHR1cmUudXBkYXRlKGkse3VzZU1pcG1hcDohMH0pOihlLnRl eHR1cmU9bmV3IHQuVGV4dHVyZShvLGkscy5SR0JBLHt1c2VNaXBtYXA6ITB9 KSxlLnRleHR1cmUuYmluZChzLkxJTkVBUixzLkNMQU1QX1RPX0VER0Uscy5M SU5FQVJfTUlQTUFQX05FQVJFU1QpLG8uZXh0VGV4dHVyZUZpbHRlckFuaXNv dHJvcGljJiZzLnRleFBhcmFtZXRlcmYocy5URVhUVVJFXzJELG8uZXh0VGV4 dHVyZUZpbHRlckFuaXNvdHJvcGljLlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlf RVhULG8uZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljTWF4KSksZS5zdGF0 ZT0ibG9hZGVkIix0LmNhY2hlRW50cnlQb3NzaWJseUFkZGVkKG4uZGlzcGF0 Y2hlcikscihudWxsKX19KX0sci5wcm90b3R5cGUuYWJvcnRUaWxlPWZ1bmN0 aW9uKHQsZSl7dC5yZXF1ZXN0JiYodC5yZXF1ZXN0LmNhbmNlbCgpLGRlbGV0 ZSB0LnJlcXVlc3QpLGUoKX0sci5wcm90b3R5cGUudW5sb2FkVGlsZT1mdW5j dGlvbih0LGUpe3QudGV4dHVyZSYmdGhpcy5tYXAucGFpbnRlci5zYXZlVGls ZVRleHR1cmUodC50ZXh0dXJlKSxlKCl9LHIucHJvdG90eXBlLmhhc1RyYW5z aXRpb249ZnVuY3Rpb24oKXtyZXR1cm4hMX0scn0odC5FdmVudGVkKSxMPWZ1 bmN0aW9uKGUpe2Z1bmN0aW9uIHIocixuLGEsaSl7ZS5jYWxsKHRoaXMscixu LGEsaSksdGhpcy50eXBlPSJyYXN0ZXItZGVtIix0aGlzLm1heHpvb209MjIs dGhpcy5fb3B0aW9ucz10LmV4dGVuZCh7dHlwZToicmFzdGVyLWRlbSJ9LG4p LHRoaXMuZW5jb2Rpbmc9bi5lbmNvZGluZ3x8Im1hcGJveCJ9cmV0dXJuIGUm JihyLl9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUm JmUucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJv dG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJyYXN0 ZXItZGVtIix1cmw6dGhpcy51cmwsdGlsZVNpemU6dGhpcy50aWxlU2l6ZSx0 aWxlczp0aGlzLnRpbGVzLGJvdW5kczp0aGlzLmJvdW5kcyxlbmNvZGluZzp0 aGlzLmVuY29kaW5nfX0sci5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24o ZSxyKXt2YXIgbj10aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIubm9ybWFsaXpl VGlsZVVSTChlLnRpbGVJRC5jYW5vbmljYWwudXJsKHRoaXMudGlsZXMsdGhp cy5zY2hlbWUpLHRoaXMudXJsLHRoaXMudGlsZVNpemUpO2UucmVxdWVzdD10 LmdldEltYWdlKHRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1S ZXF1ZXN0KG4sdC5SZXNvdXJjZVR5cGUuVGlsZSksZnVuY3Rpb24obixhKXtp ZihkZWxldGUgZS5yZXF1ZXN0LGUuYWJvcnRlZCllLnN0YXRlPSJ1bmxvYWRl ZCIscihudWxsKTtlbHNlIGlmKG4pZS5zdGF0ZT0iZXJyb3JlZCIscihuKTtl bHNlIGlmKGEpe3RoaXMubWFwLl9yZWZyZXNoRXhwaXJlZFRpbGVzJiZlLnNl dEV4cGlyeURhdGEoYSksZGVsZXRlIGEuY2FjaGVDb250cm9sLGRlbGV0ZSBh LmV4cGlyZXM7dmFyIGk9dC5icm93c2VyLmdldEltYWdlRGF0YShhKSxvPXt1 aWQ6ZS51aWQsY29vcmQ6ZS50aWxlSUQsc291cmNlOnRoaXMuaWQscmF3SW1h Z2VEYXRhOmksZW5jb2Rpbmc6dGhpcy5lbmNvZGluZ307ZS5hY3RvciYmImV4 cGlyZWQiIT09ZS5zdGF0ZXx8KGUuYWN0b3I9dGhpcy5kaXNwYXRjaGVyLmdl dEFjdG9yKCksZS5hY3Rvci5zZW5kKCJsb2FkREVNVGlsZSIsbyxmdW5jdGlv bih0LG4pe3QmJihlLnN0YXRlPSJlcnJvcmVkIixyKHQpKSxuJiYoZS5kZW09 bixlLm5lZWRzSGlsbHNoYWRlUHJlcGFyZT0hMCxlLnN0YXRlPSJsb2FkZWQi LHIobnVsbCkpfS5iaW5kKHRoaXMpKSl9fS5iaW5kKHRoaXMpKSxlLm5laWdo Ym9yaW5nVGlsZXM9dGhpcy5fZ2V0TmVpZ2hib3JpbmdUaWxlcyhlLnRpbGVJ RCl9LHIucHJvdG90eXBlLl9nZXROZWlnaGJvcmluZ1RpbGVzPWZ1bmN0aW9u KGUpe3ZhciByPWUuY2Fub25pY2FsLG49TWF0aC5wb3coMixyLnopLGE9KHIu eC0xK24pJW4saT0wPT09ci54P2Uud3JhcC0xOmUud3JhcCxvPShyLngrMStu KSVuLHM9ci54KzE9PT1uP2Uud3JhcCsxOmUud3JhcCxsPXt9O3JldHVybiBs W25ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixpLHIueixh LHIueSkua2V5XT17YmFja2ZpbGxlZDohMX0sbFtuZXcgdC5PdmVyc2NhbGVk VGlsZUlEKGUub3ZlcnNjYWxlZFoscyxyLnosbyxyLnkpLmtleV09e2JhY2tm aWxsZWQ6ITF9LHIueT4wJiYobFtuZXcgdC5PdmVyc2NhbGVkVGlsZUlEKGUu b3ZlcnNjYWxlZFosaSxyLnosYSxyLnktMSkua2V5XT17YmFja2ZpbGxlZDoh MX0sbFtuZXcgdC5PdmVyc2NhbGVkVGlsZUlEKGUub3ZlcnNjYWxlZFosZS53 cmFwLHIueixyLngsci55LTEpLmtleV09e2JhY2tmaWxsZWQ6ITF9LGxbbmV3 IHQuT3ZlcnNjYWxlZFRpbGVJRChlLm92ZXJzY2FsZWRaLHMsci56LG8sci55 LTEpLmtleV09e2JhY2tmaWxsZWQ6ITF9KSxyLnkrMTxuJiYobFtuZXcgdC5P dmVyc2NhbGVkVGlsZUlEKGUub3ZlcnNjYWxlZFosaSxyLnosYSxyLnkrMSku a2V5XT17YmFja2ZpbGxlZDohMX0sbFtuZXcgdC5PdmVyc2NhbGVkVGlsZUlE KGUub3ZlcnNjYWxlZFosZS53cmFwLHIueixyLngsci55KzEpLmtleV09e2Jh Y2tmaWxsZWQ6ITF9LGxbbmV3IHQuT3ZlcnNjYWxlZFRpbGVJRChlLm92ZXJz Y2FsZWRaLHMsci56LG8sci55KzEpLmtleV09e2JhY2tmaWxsZWQ6ITF9KSxs fSxyLnByb3RvdHlwZS51bmxvYWRUaWxlPWZ1bmN0aW9uKHQpe3QuZGVtVGV4 dHVyZSYmdGhpcy5tYXAucGFpbnRlci5zYXZlVGlsZVRleHR1cmUodC5kZW1U ZXh0dXJlKSx0LmZibyYmKHQuZmJvLmRlc3Ryb3koKSxkZWxldGUgdC5mYm8p LHQuZGVtJiZkZWxldGUgdC5kZW0sZGVsZXRlIHQubmVpZ2hib3JpbmdUaWxl cyx0LnN0YXRlPSJ1bmxvYWRlZCIsdC5hY3RvciYmdC5hY3Rvci5zZW5kKCJy ZW1vdmVERU1UaWxlIix7dWlkOnQudWlkLHNvdXJjZTp0aGlzLmlkfSl9LHJ9 KEUpLEM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihyLG4sYSxpKXtlLmNhbGwo dGhpcyksdGhpcy5pZD1yLHRoaXMudHlwZT0iZ2VvanNvbiIsdGhpcy5taW56 b29tPTAsdGhpcy5tYXh6b29tPTE4LHRoaXMudGlsZVNpemU9NTEyLHRoaXMu aXNUaWxlQ2xpcHBlZD0hMCx0aGlzLnJlcGFyc2VPdmVyc2NhbGVkPSEwLHRo aXMuX3JlbW92ZWQ9ITEsdGhpcy5fbG9hZGVkPSExLHRoaXMuYWN0b3I9YS5n ZXRBY3RvcigpLHRoaXMuc2V0RXZlbnRlZFBhcmVudChpKSx0aGlzLl9kYXRh PW4uZGF0YSx0aGlzLl9vcHRpb25zPXQuZXh0ZW5kKHt9LG4pLHRoaXMuX2Nv bGxlY3RSZXNvdXJjZVRpbWluZz1uLmNvbGxlY3RSZXNvdXJjZVRpbWluZyx0 aGlzLl9yZXNvdXJjZVRpbWluZz1bXSx2b2lkIDAhPT1uLm1heHpvb20mJih0 aGlzLm1heHpvb209bi5tYXh6b29tKSxuLnR5cGUmJih0aGlzLnR5cGU9bi50 eXBlKSxuLmF0dHJpYnV0aW9uJiYodGhpcy5hdHRyaWJ1dGlvbj1uLmF0dHJp YnV0aW9uKTt2YXIgbz10LkVYVEVOVC90aGlzLnRpbGVTaXplO3RoaXMud29y a2VyT3B0aW9ucz10LmV4dGVuZCh7c291cmNlOnRoaXMuaWQsY2x1c3Rlcjpu LmNsdXN0ZXJ8fCExLGdlb2pzb25WdE9wdGlvbnM6e2J1ZmZlcjoodm9pZCAw IT09bi5idWZmZXI/bi5idWZmZXI6MTI4KSpvLHRvbGVyYW5jZToodm9pZCAw IT09bi50b2xlcmFuY2U/bi50b2xlcmFuY2U6LjM3NSkqbyxleHRlbnQ6dC5F WFRFTlQsbWF4Wm9vbTp0aGlzLm1heHpvb20sbGluZU1ldHJpY3M6bi5saW5l TWV0cmljc3x8ITEsZ2VuZXJhdGVJZDpuLmdlbmVyYXRlSWR8fCExfSxzdXBl cmNsdXN0ZXJPcHRpb25zOnttYXhab29tOnZvaWQgMCE9PW4uY2x1c3Rlck1h eFpvb20/TWF0aC5taW4obi5jbHVzdGVyTWF4Wm9vbSx0aGlzLm1heHpvb20t MSk6dGhpcy5tYXh6b29tLTEsZXh0ZW50OnQuRVhURU5ULHJhZGl1czoobi5j bHVzdGVyUmFkaXVzfHw1MCkqbyxsb2c6ITF9LGNsdXN0ZXJQcm9wZXJ0aWVz Om4uY2x1c3RlclByb3BlcnRpZXN9LG4ud29ya2VyT3B0aW9ucyl9cmV0dXJu IGUmJihyLl9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl KGUmJmUucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIu cHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuZmly ZShuZXcgdC5FdmVudCgiZGF0YWxvYWRpbmciLHtkYXRhVHlwZToic291cmNl In0pKSx0aGlzLl91cGRhdGVXb3JrZXJEYXRhKGZ1bmN0aW9uKHIpe2lmKHIp ZS5maXJlKG5ldyB0LkVycm9yRXZlbnQocikpO2Vsc2V7dmFyIG49e2RhdGFU eXBlOiJzb3VyY2UiLHNvdXJjZURhdGFUeXBlOiJtZXRhZGF0YSJ9O2UuX2Nv bGxlY3RSZXNvdXJjZVRpbWluZyYmZS5fcmVzb3VyY2VUaW1pbmcmJmUuX3Jl c291cmNlVGltaW5nLmxlbmd0aD4wJiYobi5yZXNvdXJjZVRpbWluZz1lLl9y ZXNvdXJjZVRpbWluZyxlLl9yZXNvdXJjZVRpbWluZz1bXSksZS5maXJlKG5l dyB0LkV2ZW50KCJkYXRhIixuKSl9fSl9LHIucHJvdG90eXBlLm9uQWRkPWZ1 bmN0aW9uKHQpe3RoaXMubWFwPXQsdGhpcy5sb2FkKCl9LHIucHJvdG90eXBl LnNldERhdGE9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5f ZGF0YT1lLHRoaXMuZmlyZShuZXcgdC5FdmVudCgiZGF0YWxvYWRpbmciLHtk YXRhVHlwZToic291cmNlIn0pKSx0aGlzLl91cGRhdGVXb3JrZXJEYXRhKGZ1 bmN0aW9uKGUpe2lmKGUpci5maXJlKG5ldyB0LkVycm9yRXZlbnQoZSkpO2Vs c2V7dmFyIG49e2RhdGFUeXBlOiJzb3VyY2UiLHNvdXJjZURhdGFUeXBlOiJj b250ZW50In07ci5fY29sbGVjdFJlc291cmNlVGltaW5nJiZyLl9yZXNvdXJj ZVRpbWluZyYmci5fcmVzb3VyY2VUaW1pbmcubGVuZ3RoPjAmJihuLnJlc291 cmNlVGltaW5nPXIuX3Jlc291cmNlVGltaW5nLHIuX3Jlc291cmNlVGltaW5n PVtdKSxyLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLG4pKX19KSx0aGlzfSxy LnByb3RvdHlwZS5nZXRDbHVzdGVyRXhwYW5zaW9uWm9vbT1mdW5jdGlvbih0 LGUpe3JldHVybiB0aGlzLmFjdG9yLnNlbmQoImdlb2pzb24uZ2V0Q2x1c3Rl ckV4cGFuc2lvblpvb20iLHtjbHVzdGVySWQ6dCxzb3VyY2U6dGhpcy5pZH0s ZSksdGhpc30sci5wcm90b3R5cGUuZ2V0Q2x1c3RlckNoaWxkcmVuPWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWN0b3Iuc2VuZCgiZ2VvanNvbi5nZXRD bHVzdGVyQ2hpbGRyZW4iLHtjbHVzdGVySWQ6dCxzb3VyY2U6dGhpcy5pZH0s ZSksdGhpc30sci5wcm90b3R5cGUuZ2V0Q2x1c3RlckxlYXZlcz1mdW5jdGlv bih0LGUscixuKXtyZXR1cm4gdGhpcy5hY3Rvci5zZW5kKCJnZW9qc29uLmdl dENsdXN0ZXJMZWF2ZXMiLHtzb3VyY2U6dGhpcy5pZCxjbHVzdGVySWQ6dCxs aW1pdDplLG9mZnNldDpyfSxuKSx0aGlzfSxyLnByb3RvdHlwZS5fdXBkYXRl V29ya2VyRGF0YT1mdW5jdGlvbihlKXt2YXIgcj10aGlzO3RoaXMuX2xvYWRl ZD0hMTt2YXIgbj10LmV4dGVuZCh7fSx0aGlzLndvcmtlck9wdGlvbnMpLGE9 dGhpcy5fZGF0YTsic3RyaW5nIj09dHlwZW9mIGE/KG4ucmVxdWVzdD10aGlz Lm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdCh0LmJyb3dz ZXIucmVzb2x2ZVVSTChhKSx0LlJlc291cmNlVHlwZS5Tb3VyY2UpLG4ucmVx dWVzdC5jb2xsZWN0UmVzb3VyY2VUaW1pbmc9dGhpcy5fY29sbGVjdFJlc291 cmNlVGltaW5nKTpuLmRhdGE9SlNPTi5zdHJpbmdpZnkoYSksdGhpcy5hY3Rv ci5zZW5kKHRoaXMudHlwZSsiLmxvYWREYXRhIixuLGZ1bmN0aW9uKHQsYSl7 ci5fcmVtb3ZlZHx8YSYmYS5hYmFuZG9uZWR8fChyLl9sb2FkZWQ9ITAsYSYm YS5yZXNvdXJjZVRpbWluZyYmYS5yZXNvdXJjZVRpbWluZ1tyLmlkXSYmKHIu X3Jlc291cmNlVGltaW5nPWEucmVzb3VyY2VUaW1pbmdbci5pZF0uc2xpY2Uo MCkpLHIuYWN0b3Iuc2VuZChyLnR5cGUrIi5jb2FsZXNjZSIse3NvdXJjZTpu LnNvdXJjZX0sbnVsbCksZSh0KSl9KX0sci5wcm90b3R5cGUubG9hZGVkPWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRlZH0sci5wcm90b3R5cGUubG9h ZFRpbGU9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLGE9ZS5hY3Rvcj8icmVs b2FkVGlsZSI6ImxvYWRUaWxlIjtlLmFjdG9yPXRoaXMuYWN0b3I7dmFyIGk9 e3R5cGU6dGhpcy50eXBlLHVpZDplLnVpZCx0aWxlSUQ6ZS50aWxlSUQsem9v bTplLnRpbGVJRC5vdmVyc2NhbGVkWixtYXhab29tOnRoaXMubWF4em9vbSx0 aWxlU2l6ZTp0aGlzLnRpbGVTaXplLHNvdXJjZTp0aGlzLmlkLHBpeGVsUmF0 aW86dC5icm93c2VyLmRldmljZVBpeGVsUmF0aW8sc2hvd0NvbGxpc2lvbkJv eGVzOnRoaXMubWFwLnNob3dDb2xsaXNpb25Cb3hlc307ZS5yZXF1ZXN0PXRo aXMuYWN0b3Iuc2VuZChhLGksZnVuY3Rpb24odCxpKXtyZXR1cm4gZGVsZXRl IGUucmVxdWVzdCxlLnVubG9hZFZlY3RvckRhdGEoKSxlLmFib3J0ZWQ/cihu dWxsKTp0P3IodCk6KGUubG9hZFZlY3RvckRhdGEoaSxuLm1hcC5wYWludGVy LCJyZWxvYWRUaWxlIj09PWEpLHIobnVsbCkpfSl9LHIucHJvdG90eXBlLmFi b3J0VGlsZT1mdW5jdGlvbih0KXt0LnJlcXVlc3QmJih0LnJlcXVlc3QuY2Fu Y2VsKCksZGVsZXRlIHQucmVxdWVzdCksdC5hYm9ydGVkPSEwfSxyLnByb3Rv dHlwZS51bmxvYWRUaWxlPWZ1bmN0aW9uKHQpe3QudW5sb2FkVmVjdG9yRGF0 YSgpLHRoaXMuYWN0b3Iuc2VuZCgicmVtb3ZlVGlsZSIse3VpZDp0LnVpZCx0 eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5pZH0pfSxyLnByb3RvdHlwZS5v blJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3JlbW92ZWQ9ITAsdGhpcy5hY3Rv ci5zZW5kKCJyZW1vdmVTb3VyY2UiLHt0eXBlOnRoaXMudHlwZSxzb3VyY2U6 dGhpcy5pZH0pfSxyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXty ZXR1cm4gdC5leHRlbmQoe30sdGhpcy5fb3B0aW9ucyx7dHlwZTp0aGlzLnR5 cGUsZGF0YTp0aGlzLl9kYXRhfSl9LHIucHJvdG90eXBlLmhhc1RyYW5zaXRp b249ZnVuY3Rpb24oKXtyZXR1cm4hMX0scn0odC5FdmVudGVkKSxQPWZ1bmN0 aW9uKGUpe2Z1bmN0aW9uIHIodCxyLG4sYSl7ZS5jYWxsKHRoaXMpLHRoaXMu aWQ9dCx0aGlzLmRpc3BhdGNoZXI9bix0aGlzLmNvb3JkaW5hdGVzPXIuY29v cmRpbmF0ZXMsdGhpcy50eXBlPSJpbWFnZSIsdGhpcy5taW56b29tPTAsdGhp cy5tYXh6b29tPTIyLHRoaXMudGlsZVNpemU9NTEyLHRoaXMudGlsZXM9e30s dGhpcy5fbG9hZGVkPSExLHRoaXMuc2V0RXZlbnRlZFBhcmVudChhKSx0aGlz Lm9wdGlvbnM9cn1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90 eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBl LmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihlLHIp e3ZhciBuPXRoaXM7dGhpcy5fbG9hZGVkPSExLHRoaXMuZmlyZShuZXcgdC5F dmVudCgiZGF0YWxvYWRpbmciLHtkYXRhVHlwZToic291cmNlIn0pKSx0aGlz LnVybD10aGlzLm9wdGlvbnMudXJsLHQuZ2V0SW1hZ2UodGhpcy5tYXAuX3Jl cXVlc3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVlc3QodGhpcy51cmwsdC5SZXNv dXJjZVR5cGUuSW1hZ2UpLGZ1bmN0aW9uKGEsaSl7bi5fbG9hZGVkPSEwLGE/ bi5maXJlKG5ldyB0LkVycm9yRXZlbnQoYSkpOmkmJihuLmltYWdlPWksZSYm KG4uY29vcmRpbmF0ZXM9ZSksciYmcigpLG4uX2ZpbmlzaExvYWRpbmcoKSl9 KX0sci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu X2xvYWRlZH0sci5wcm90b3R5cGUudXBkYXRlSW1hZ2U9ZnVuY3Rpb24odCl7 dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5pbWFnZSYmdC51cmw/KHRoaXMub3B0 aW9ucy51cmw9dC51cmwsdGhpcy5sb2FkKHQuY29vcmRpbmF0ZXMsZnVuY3Rp b24oKXtlLnRleHR1cmU9bnVsbH0pLHRoaXMpOnRoaXN9LHIucHJvdG90eXBl Ll9maW5pc2hMb2FkaW5nPWZ1bmN0aW9uKCl7dGhpcy5tYXAmJih0aGlzLnNl dENvb3JkaW5hdGVzKHRoaXMuY29vcmRpbmF0ZXMpLHRoaXMuZmlyZShuZXcg dC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJzb3VyY2UiLHNvdXJjZURhdGFU eXBlOiJtZXRhZGF0YSJ9KSkpfSxyLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlv bih0KXt0aGlzLm1hcD10LHRoaXMubG9hZCgpfSxyLnByb3RvdHlwZS5zZXRD b29yZGluYXRlcz1mdW5jdGlvbihlKXt2YXIgcj10aGlzO3RoaXMuY29vcmRp bmF0ZXM9ZTt2YXIgbj1lLm1hcCh0Lk1lcmNhdG9yQ29vcmRpbmF0ZS5mcm9t TG5nTGF0KTt0aGlzLnRpbGVJRD1mdW5jdGlvbihlKXtmb3IodmFyIHI9MS8w LG49MS8wLGE9LTEvMCxpPS0xLzAsbz0wLHM9ZTtvPHMubGVuZ3RoO28rPTEp e3ZhciBsPXNbb107cj1NYXRoLm1pbihyLGwueCksbj1NYXRoLm1pbihuLGwu eSksYT1NYXRoLm1heChhLGwueCksaT1NYXRoLm1heChpLGwueSl9dmFyIGM9 YS1yLHU9aS1uLGg9TWF0aC5tYXgoYyx1KSxmPU1hdGgubWF4KDAsTWF0aC5m bG9vcigtTWF0aC5sb2coaCkvTWF0aC5MTjIpKSxwPU1hdGgucG93KDIsZik7 cmV0dXJuIG5ldyB0LkNhbm9uaWNhbFRpbGVJRChmLE1hdGguZmxvb3IoKHIr YSkvMipwKSxNYXRoLmZsb29yKChuK2kpLzIqcCkpfShuKSx0aGlzLm1pbnpv b209dGhpcy5tYXh6b29tPXRoaXMudGlsZUlELno7dmFyIGE9bi5tYXAoZnVu Y3Rpb24odCl7cmV0dXJuIHIudGlsZUlELmdldFRpbGVQb2ludCh0KS5fcm91 bmQoKX0pO3JldHVybiB0aGlzLl9ib3VuZHNBcnJheT1uZXcgdC5TdHJ1Y3RB cnJheUxheW91dDRpOCx0aGlzLl9ib3VuZHNBcnJheS5lbXBsYWNlQmFjayhh WzBdLngsYVswXS55LDAsMCksdGhpcy5fYm91bmRzQXJyYXkuZW1wbGFjZUJh Y2soYVsxXS54LGFbMV0ueSx0LkVYVEVOVCwwKSx0aGlzLl9ib3VuZHNBcnJh eS5lbXBsYWNlQmFjayhhWzNdLngsYVszXS55LDAsdC5FWFRFTlQpLHRoaXMu X2JvdW5kc0FycmF5LmVtcGxhY2VCYWNrKGFbMl0ueCxhWzJdLnksdC5FWFRF TlQsdC5FWFRFTlQpLHRoaXMuYm91bmRzQnVmZmVyJiYodGhpcy5ib3VuZHNC dWZmZXIuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLmJvdW5kc0J1ZmZlciksdGhp cy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0YVR5cGU6InNvdXJjZSIs c291cmNlRGF0YVR5cGU6ImNvbnRlbnQifSkpLHRoaXN9LHIucHJvdG90eXBl LnByZXBhcmU9ZnVuY3Rpb24oKXtpZigwIT09T2JqZWN0LmtleXModGhpcy50 aWxlcykubGVuZ3RoJiZ0aGlzLmltYWdlKXt2YXIgZT10aGlzLm1hcC5wYWlu dGVyLmNvbnRleHQscj1lLmdsO2Zvcih2YXIgbiBpbiB0aGlzLmJvdW5kc0J1 ZmZlcnx8KHRoaXMuYm91bmRzQnVmZmVyPWUuY3JlYXRlVmVydGV4QnVmZmVy KHRoaXMuX2JvdW5kc0FycmF5LHQucmFzdGVyQm91bmRzQXR0cmlidXRlcy5t ZW1iZXJzKSksdGhpcy5ib3VuZHNTZWdtZW50c3x8KHRoaXMuYm91bmRzU2Vn bWVudHM9dC5TZWdtZW50VmVjdG9yLnNpbXBsZVNlZ21lbnQoMCwwLDQsMikp LHRoaXMudGV4dHVyZXx8KHRoaXMudGV4dHVyZT1uZXcgdC5UZXh0dXJlKGUs dGhpcy5pbWFnZSxyLlJHQkEpLHRoaXMudGV4dHVyZS5iaW5kKHIuTElORUFS LHIuQ0xBTVBfVE9fRURHRSkpLHRoaXMudGlsZXMpe3ZhciBhPXRoaXMudGls ZXNbbl07ImxvYWRlZCIhPT1hLnN0YXRlJiYoYS5zdGF0ZT0ibG9hZGVkIixh LnRleHR1cmU9dGhpcy50ZXh0dXJlKX19fSxyLnByb3RvdHlwZS5sb2FkVGls ZT1mdW5jdGlvbih0LGUpe3RoaXMudGlsZUlEJiZ0aGlzLnRpbGVJRC5lcXVh bHModC50aWxlSUQuY2Fub25pY2FsKT8odGhpcy50aWxlc1tTdHJpbmcodC50 aWxlSUQud3JhcCldPXQsdC5idWNrZXRzPXt9LGUobnVsbCkpOih0LnN0YXRl PSJlcnJvcmVkIixlKG51bGwpKX0sci5wcm90b3R5cGUuc2VyaWFsaXplPWZ1 bmN0aW9uKCl7cmV0dXJue3R5cGU6ImltYWdlIix1cmw6dGhpcy5vcHRpb25z LnVybCxjb29yZGluYXRlczp0aGlzLmNvb3JkaW5hdGVzfX0sci5wcm90b3R5 cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiExfSxyfSh0LkV2 ZW50ZWQpLE89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcih0LHIsbixhKXtlLmNh bGwodGhpcyx0LHIsbixhKSx0aGlzLnJvdW5kWm9vbT0hMCx0aGlzLnR5cGU9 InZpZGVvIix0aGlzLm9wdGlvbnM9cn1yZXR1cm4gZSYmKHIuX19wcm90b19f PWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUp LHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUubG9hZD1m dW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fbG9hZGVkPSExO3ZhciByPXRo aXMub3B0aW9uczt0aGlzLnVybHM9W107Zm9yKHZhciBuPTAsYT1yLnVybHM7 bjxhLmxlbmd0aDtuKz0xKXt2YXIgaT1hW25dO3RoaXMudXJscy5wdXNoKHRo aXMubWFwLl9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KGksdC5S ZXNvdXJjZVR5cGUuU291cmNlKS51cmwpfXQuZ2V0VmlkZW8odGhpcy51cmxz LGZ1bmN0aW9uKHIsbil7ZS5fbG9hZGVkPSEwLHI/ZS5maXJlKG5ldyB0LkVy cm9yRXZlbnQocikpOm4mJihlLnZpZGVvPW4sZS52aWRlby5sb29wPSEwLGUu dmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigicGxheWluZyIsZnVuY3Rpb24oKXtl Lm1hcC50cmlnZ2VyUmVwYWludCgpfSksZS5tYXAmJmUudmlkZW8ucGxheSgp LGUuX2ZpbmlzaExvYWRpbmcoKSl9KX0sci5wcm90b3R5cGUucGF1c2U9ZnVu Y3Rpb24oKXt0aGlzLnZpZGVvJiZ0aGlzLnZpZGVvLnBhdXNlKCl9LHIucHJv dG90eXBlLnBsYXk9ZnVuY3Rpb24oKXt0aGlzLnZpZGVvJiZ0aGlzLnZpZGVv LnBsYXkoKX0sci5wcm90b3R5cGUuc2Vlaz1mdW5jdGlvbihlKXtpZih0aGlz LnZpZGVvKXt2YXIgcj10aGlzLnZpZGVvLnNlZWthYmxlO2U8ci5zdGFydCgw KXx8ZT5yLmVuZCgwKT90aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcg dC5WYWxpZGF0aW9uRXJyb3IoIlBsYXliYWNrIGZvciB0aGlzIHZpZGVvIGNh biBiZSBzZXQgb25seSBiZXR3ZWVuIHRoZSAiK3Iuc3RhcnQoMCkrIiBhbmQg IityLmVuZCgwKSsiLXNlY29uZCBtYXJrLiIpKSk6dGhpcy52aWRlby5jdXJy ZW50VGltZT1lfX0sci5wcm90b3R5cGUuZ2V0VmlkZW89ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy52aWRlb30sci5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24o dCl7dGhpcy5tYXB8fCh0aGlzLm1hcD10LHRoaXMubG9hZCgpLHRoaXMudmlk ZW8mJih0aGlzLnZpZGVvLnBsYXkoKSx0aGlzLnNldENvb3JkaW5hdGVzKHRo aXMuY29vcmRpbmF0ZXMpKSl9LHIucHJvdG90eXBlLnByZXBhcmU9ZnVuY3Rp b24oKXtpZighKDA9PT1PYmplY3Qua2V5cyh0aGlzLnRpbGVzKS5sZW5ndGh8 fHRoaXMudmlkZW8ucmVhZHlTdGF0ZTwyKSl7dmFyIGU9dGhpcy5tYXAucGFp bnRlci5jb250ZXh0LHI9ZS5nbDtmb3IodmFyIG4gaW4gdGhpcy5ib3VuZHNC dWZmZXJ8fCh0aGlzLmJvdW5kc0J1ZmZlcj1lLmNyZWF0ZVZlcnRleEJ1ZmZl cih0aGlzLl9ib3VuZHNBcnJheSx0LnJhc3RlckJvdW5kc0F0dHJpYnV0ZXMu bWVtYmVycykpLHRoaXMuYm91bmRzU2VnbWVudHN8fCh0aGlzLmJvdW5kc1Nl Z21lbnRzPXQuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIp KSx0aGlzLnRleHR1cmU/dGhpcy52aWRlby5wYXVzZWR8fCh0aGlzLnRleHR1 cmUuYmluZChyLkxJTkVBUixyLkNMQU1QX1RPX0VER0UpLHIudGV4U3ViSW1h Z2UyRChyLlRFWFRVUkVfMkQsMCwwLDAsci5SR0JBLHIuVU5TSUdORURfQllU RSx0aGlzLnZpZGVvKSk6KHRoaXMudGV4dHVyZT1uZXcgdC5UZXh0dXJlKGUs dGhpcy52aWRlbyxyLlJHQkEpLHRoaXMudGV4dHVyZS5iaW5kKHIuTElORUFS LHIuQ0xBTVBfVE9fRURHRSkpLHRoaXMudGlsZXMpe3ZhciBhPXRoaXMudGls ZXNbbl07ImxvYWRlZCIhPT1hLnN0YXRlJiYoYS5zdGF0ZT0ibG9hZGVkIixh LnRleHR1cmU9dGhpcy50ZXh0dXJlKX19fSxyLnByb3RvdHlwZS5zZXJpYWxp emU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToidmlkZW8iLHVybHM6dGhpcy51 cmxzLGNvb3JkaW5hdGVzOnRoaXMuY29vcmRpbmF0ZXN9fSxyLnByb3RvdHlw ZS5oYXNUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlkZW8m JiF0aGlzLnZpZGVvLnBhdXNlZH0scn0oUCksej1mdW5jdGlvbihlKXtmdW5j dGlvbiByKHIsbixhLGkpe2UuY2FsbCh0aGlzLHIsbixhLGkpLG4uY29vcmRp bmF0ZXM/QXJyYXkuaXNBcnJheShuLmNvb3JkaW5hdGVzKSYmND09PW4uY29v cmRpbmF0ZXMubGVuZ3RoJiYhbi5jb29yZGluYXRlcy5zb21lKGZ1bmN0aW9u KHQpe3JldHVybiFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGh8fHQu c29tZShmdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHR9KX0p fHx0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgdC5WYWxpZGF0aW9u RXJyb3IoInNvdXJjZXMuIityLG51bGwsJyJjb29yZGluYXRlcyIgcHJvcGVy dHkgbXVzdCBiZSBhbiBhcnJheSBvZiA0IGxvbmdpdHVkZS9sYXRpdHVkZSBh cnJheSBwYWlycycpKSk6dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3 IHQuVmFsaWRhdGlvbkVycm9yKCJzb3VyY2VzLiIrcixudWxsLCdtaXNzaW5n IHJlcXVpcmVkIHByb3BlcnR5ICJjb29yZGluYXRlcyInKSkpLG4uYW5pbWF0 ZSYmImJvb2xlYW4iIT10eXBlb2Ygbi5hbmltYXRlJiZ0aGlzLmZpcmUobmV3 IHQuRXJyb3JFdmVudChuZXcgdC5WYWxpZGF0aW9uRXJyb3IoInNvdXJjZXMu IityLG51bGwsJ29wdGlvbmFsICJhbmltYXRlIiBwcm9wZXJ0eSBtdXN0IGJl IGEgYm9vbGVhbiB2YWx1ZScpKSksbi5jYW52YXM/InN0cmluZyI9PXR5cGVv ZiBuLmNhbnZhc3x8bi5jYW52YXMgaW5zdGFuY2VvZiB0LndpbmRvdy5IVE1M Q2FudmFzRWxlbWVudHx8dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3 IHQuVmFsaWRhdGlvbkVycm9yKCJzb3VyY2VzLiIrcixudWxsLCciY2FudmFz IiBtdXN0IGJlIGVpdGhlciBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIElE IG9mIHRoZSBjYW52YXMgZWxlbWVudCBmcm9tIHdoaWNoIHRvIHJlYWQsIG9y IGFuIEhUTUxDYW52YXNFbGVtZW50IGluc3RhbmNlJykpKTp0aGlzLmZpcmUo bmV3IHQuRXJyb3JFdmVudChuZXcgdC5WYWxpZGF0aW9uRXJyb3IoInNvdXJj ZXMuIityLG51bGwsJ21pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgImNhbnZh cyInKSkpLHRoaXMub3B0aW9ucz1uLHRoaXMuYW5pbWF0ZT12b2lkIDA9PT1u LmFuaW1hdGV8fG4uYW5pbWF0ZX1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUp LHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIu cHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUubG9hZD1mdW5j dGlvbigpe3RoaXMuX2xvYWRlZD0hMCx0aGlzLmNhbnZhc3x8KHRoaXMuY2Fu dmFzPXRoaXMub3B0aW9ucy5jYW52YXMgaW5zdGFuY2VvZiB0LndpbmRvdy5I VE1MQ2FudmFzRWxlbWVudD90aGlzLm9wdGlvbnMuY2FudmFzOnQud2luZG93 LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMub3B0aW9ucy5jYW52YXMp KSx0aGlzLndpZHRoPXRoaXMuY2FudmFzLndpZHRoLHRoaXMuaGVpZ2h0PXRo aXMuY2FudmFzLmhlaWdodCx0aGlzLl9oYXNJbnZhbGlkRGltZW5zaW9ucygp P3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiQ2FudmFz IGRpbWVuc2lvbnMgY2Fubm90IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6 ZXJvLiIpKSk6KHRoaXMucGxheT1mdW5jdGlvbigpe3RoaXMuX3BsYXlpbmc9 ITAsdGhpcy5tYXAudHJpZ2dlclJlcGFpbnQoKX0sdGhpcy5wYXVzZT1mdW5j dGlvbigpe3RoaXMuX3BsYXlpbmcmJih0aGlzLnByZXBhcmUoKSx0aGlzLl9w bGF5aW5nPSExKX0sdGhpcy5fZmluaXNoTG9hZGluZygpKX0sci5wcm90b3R5 cGUuZ2V0Q2FudmFzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FudmFzfSxy LnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt0aGlzLm1hcD10LHRoaXMu bG9hZCgpLHRoaXMuY2FudmFzJiZ0aGlzLmFuaW1hdGUmJnRoaXMucGxheSgp fSxyLnByb3RvdHlwZS5vblJlbW92ZT1mdW5jdGlvbigpe3RoaXMucGF1c2Uo KX0sci5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe3ZhciBlPSExO2lm KHRoaXMuY2FudmFzLndpZHRoIT09dGhpcy53aWR0aCYmKHRoaXMud2lkdGg9 dGhpcy5jYW52YXMud2lkdGgsZT0hMCksdGhpcy5jYW52YXMuaGVpZ2h0IT09 dGhpcy5oZWlnaHQmJih0aGlzLmhlaWdodD10aGlzLmNhbnZhcy5oZWlnaHQs ZT0hMCksIXRoaXMuX2hhc0ludmFsaWREaW1lbnNpb25zKCkmJjAhPT1PYmpl Y3Qua2V5cyh0aGlzLnRpbGVzKS5sZW5ndGgpe3ZhciByPXRoaXMubWFwLnBh aW50ZXIuY29udGV4dCxuPXIuZ2w7Zm9yKHZhciBhIGluIHRoaXMuYm91bmRz QnVmZmVyfHwodGhpcy5ib3VuZHNCdWZmZXI9ci5jcmVhdGVWZXJ0ZXhCdWZm ZXIodGhpcy5fYm91bmRzQXJyYXksdC5yYXN0ZXJCb3VuZHNBdHRyaWJ1dGVz Lm1lbWJlcnMpKSx0aGlzLmJvdW5kc1NlZ21lbnRzfHwodGhpcy5ib3VuZHNT ZWdtZW50cz10LlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsNCwy KSksdGhpcy50ZXh0dXJlPyhlfHx0aGlzLl9wbGF5aW5nKSYmdGhpcy50ZXh0 dXJlLnVwZGF0ZSh0aGlzLmNhbnZhcyx7cHJlbXVsdGlwbHk6ITB9KTp0aGlz LnRleHR1cmU9bmV3IHQuVGV4dHVyZShyLHRoaXMuY2FudmFzLG4uUkdCQSx7 cHJlbXVsdGlwbHk6ITB9KSx0aGlzLnRpbGVzKXt2YXIgaT10aGlzLnRpbGVz W2FdOyJsb2FkZWQiIT09aS5zdGF0ZSYmKGkuc3RhdGU9ImxvYWRlZCIsaS50 ZXh0dXJlPXRoaXMudGV4dHVyZSl9fX0sci5wcm90b3R5cGUuc2VyaWFsaXpl PWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6ImNhbnZhcyIsY29vcmRpbmF0ZXM6 dGhpcy5jb29yZGluYXRlc319LHIucHJvdG90eXBlLmhhc1RyYW5zaXRpb249 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGxheWluZ30sci5wcm90b3R5cGUu X2hhc0ludmFsaWREaW1lbnNpb25zPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAs ZT1bdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0XTt0PGUu bGVuZ3RoO3QrPTEpe3ZhciByPWVbdF07aWYoaXNOYU4ocil8fHI8PTApcmV0 dXJuITB9cmV0dXJuITF9LHJ9KFApLEk9e3ZlY3RvcjpTLHJhc3RlcjpFLCJy YXN0ZXItZGVtIjpMLGdlb2pzb246Qyx2aWRlbzpPLGltYWdlOlAsY2FudmFz Onp9LEQ9ZnVuY3Rpb24oZSxyLG4sYSl7dmFyIGk9bmV3IElbci50eXBlXShl LHIsbixhKTtpZihpLmlkIT09ZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk IFNvdXJjZSBpZCB0byBiZSAiK2UrIiBpbnN0ZWFkIG9mICIraS5pZCk7cmV0 dXJuIHQuYmluZEFsbChbImxvYWQiLCJhYm9ydCIsInVubG9hZCIsInNlcmlh bGl6ZSIsInByZXBhcmUiXSxpKSxpfTtmdW5jdGlvbiBSKGUscil7dmFyIG49 dC5pZGVudGl0eShbXSk7cmV0dXJuIHQudHJhbnNsYXRlKG4sbixbMSwxLDBd KSx0LnNjYWxlKG4sbixbLjUqZS53aWR0aCwuNSplLmhlaWdodCwxXSksdC5t dWx0aXBseShuLG4sZS5jYWxjdWxhdGVQb3NNYXRyaXgoci50b1Vud3JhcHBl ZCgpKSl9ZnVuY3Rpb24gRih0LGUscixuLGEpe3ZhciBpPWZ1bmN0aW9uKHQs ZSxyKXtpZih0KWZvcih2YXIgbj0wLGE9dDtuPGEubGVuZ3RoO24rPTEpe3Zh ciBpPWVbYVtuXV07aWYoaSYmaS5zb3VyY2U9PT1yJiYiZmlsbC1leHRydXNp b24iPT09aS50eXBlKXJldHVybiEwfWVsc2UgZm9yKHZhciBvIGluIGUpe3Zh ciBzPWVbb107aWYocy5zb3VyY2U9PT1yJiYiZmlsbC1leHRydXNpb24iPT09 cy50eXBlKXJldHVybiEwfXJldHVybiExfShuJiZuLmxheWVycyxlLHQuaWQp LG89YS5tYXhQaXRjaFNjYWxlRmFjdG9yKCkscz10LnRpbGVzSW4ocixvLGkp O3Muc29ydChCKTtmb3IodmFyIGw9W10sYz0wLHU9cztjPHUubGVuZ3RoO2Mr PTEpe3ZhciBoPXVbY107bC5wdXNoKHt3cmFwcGVkVGlsZUlEOmgudGlsZUlE LndyYXBwZWQoKS5rZXkscXVlcnlSZXN1bHRzOmgudGlsZS5xdWVyeVJlbmRl cmVkRmVhdHVyZXMoZSx0Ll9zdGF0ZSxoLnF1ZXJ5R2VvbWV0cnksaC5jYW1l cmFRdWVyeUdlb21ldHJ5LGguc2NhbGUsbixhLG8sUih0LnRyYW5zZm9ybSxo LnRpbGVJRCkpfSl9dmFyIGY9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXt9LHI9 e30sbj0wLGE9dDtuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl0sbz1pLnF1 ZXJ5UmVzdWx0cyxzPWkud3JhcHBlZFRpbGVJRCxsPXJbc109cltzXXx8e307 Zm9yKHZhciBjIGluIG8pZm9yKHZhciB1PW9bY10saD1sW2NdPWxbY118fHt9 LGY9ZVtjXT1lW2NdfHxbXSxwPTAsZD11O3A8ZC5sZW5ndGg7cCs9MSl7dmFy IGc9ZFtwXTtoW2cuZmVhdHVyZUluZGV4XXx8KGhbZy5mZWF0dXJlSW5kZXhd PSEwLGYucHVzaChnKSl9fXJldHVybiBlfShsKTtmb3IodmFyIHAgaW4gZilm W3BdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHI9ZS5mZWF0dXJlLG49dC5n ZXRGZWF0dXJlU3RhdGUoci5sYXllclsic291cmNlLWxheWVyIl0sci5pZCk7 ci5zb3VyY2U9ci5sYXllci5zb3VyY2Usci5sYXllclsic291cmNlLWxheWVy Il0mJihyLnNvdXJjZUxheWVyPXIubGF5ZXJbInNvdXJjZS1sYXllciJdKSxy LnN0YXRlPW59KTtyZXR1cm4gZn1mdW5jdGlvbiBCKHQsZSl7dmFyIHI9dC50 aWxlSUQsbj1lLnRpbGVJRDtyZXR1cm4gci5vdmVyc2NhbGVkWi1uLm92ZXJz Y2FsZWRafHxyLmNhbm9uaWNhbC55LW4uY2Fub25pY2FsLnl8fHIud3JhcC1u LndyYXB8fHIuY2Fub25pY2FsLngtbi5jYW5vbmljYWwueH12YXIgTj1mdW5j dGlvbih0LGUpe3RoaXMubWF4PXQsdGhpcy5vblJlbW92ZT1lLHRoaXMucmVz ZXQoKX07Ti5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQg aW4gdGhpcy5kYXRhKWZvcih2YXIgZT0wLHI9dGhpcy5kYXRhW3RdO2U8ci5s ZW5ndGg7ZSs9MSl7dmFyIG49cltlXTtuLnRpbWVvdXQmJmNsZWFyVGltZW91 dChuLnRpbWVvdXQpLHRoaXMub25SZW1vdmUobi52YWx1ZSl9cmV0dXJuIHRo aXMuZGF0YT17fSx0aGlzLm9yZGVyPVtdLHRoaXN9LE4ucHJvdG90eXBlLmFk ZD1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcyxhPXQud3JhcHBlZCgpLmtl eTt2b2lkIDA9PT10aGlzLmRhdGFbYV0mJih0aGlzLmRhdGFbYV09W10pO3Zh ciBpPXt2YWx1ZTplLHRpbWVvdXQ6dm9pZCAwfTtpZih2b2lkIDAhPT1yJiYo aS50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnJlbW92ZSh0LGkp fSxyKSksdGhpcy5kYXRhW2FdLnB1c2goaSksdGhpcy5vcmRlci5wdXNoKGEp LHRoaXMub3JkZXIubGVuZ3RoPnRoaXMubWF4KXt2YXIgbz10aGlzLl9nZXRB bmRSZW1vdmVCeUtleSh0aGlzLm9yZGVyWzBdKTtvJiZ0aGlzLm9uUmVtb3Zl KG8pfXJldHVybiB0aGlzfSxOLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7 cmV0dXJuIHQud3JhcHBlZCgpLmtleSBpbiB0aGlzLmRhdGF9LE4ucHJvdG90 eXBlLmdldEFuZFJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXMo dCk/dGhpcy5fZ2V0QW5kUmVtb3ZlQnlLZXkodC53cmFwcGVkKCkua2V5KTpu dWxsfSxOLnByb3RvdHlwZS5fZ2V0QW5kUmVtb3ZlQnlLZXk9ZnVuY3Rpb24o dCl7dmFyIGU9dGhpcy5kYXRhW3RdLnNoaWZ0KCk7cmV0dXJuIGUudGltZW91 dCYmY2xlYXJUaW1lb3V0KGUudGltZW91dCksMD09PXRoaXMuZGF0YVt0XS5s ZW5ndGgmJmRlbGV0ZSB0aGlzLmRhdGFbdF0sdGhpcy5vcmRlci5zcGxpY2Uo dGhpcy5vcmRlci5pbmRleE9mKHQpLDEpLGUudmFsdWV9LE4ucHJvdG90eXBl LmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXModCk/dGhpcy5kYXRh W3Qud3JhcHBlZCgpLmtleV1bMF0udmFsdWU6bnVsbH0sTi5wcm90b3R5cGUu cmVtb3ZlPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuaGFzKHQpKXJldHVybiB0 aGlzO3ZhciByPXQud3JhcHBlZCgpLmtleSxuPXZvaWQgMD09PWU/MDp0aGlz LmRhdGFbcl0uaW5kZXhPZihlKSxhPXRoaXMuZGF0YVtyXVtuXTtyZXR1cm4g dGhpcy5kYXRhW3JdLnNwbGljZShuLDEpLGEudGltZW91dCYmY2xlYXJUaW1l b3V0KGEudGltZW91dCksMD09PXRoaXMuZGF0YVtyXS5sZW5ndGgmJmRlbGV0 ZSB0aGlzLmRhdGFbcl0sdGhpcy5vblJlbW92ZShhLnZhbHVlKSx0aGlzLm9y ZGVyLnNwbGljZSh0aGlzLm9yZGVyLmluZGV4T2YociksMSksdGhpc30sTi5w cm90b3R5cGUuc2V0TWF4U2l6ZT1mdW5jdGlvbih0KXtmb3IodGhpcy5tYXg9 dDt0aGlzLm9yZGVyLmxlbmd0aD50aGlzLm1heDspe3ZhciBlPXRoaXMuX2dl dEFuZFJlbW92ZUJ5S2V5KHRoaXMub3JkZXJbMF0pO2UmJnRoaXMub25SZW1v dmUoZSl9cmV0dXJuIHRoaXN9O3ZhciBqPWZ1bmN0aW9uKHQsZSxyKXt0aGlz LmNvbnRleHQ9dDt2YXIgbj10LmdsO3RoaXMuYnVmZmVyPW4uY3JlYXRlQnVm ZmVyKCksdGhpcy5keW5hbWljRHJhdz1Cb29sZWFuKHIpLHRoaXMuY29udGV4 dC51bmJpbmRWQU8oKSx0LmJpbmRFbGVtZW50QnVmZmVyLnNldCh0aGlzLmJ1 ZmZlciksbi5idWZmZXJEYXRhKG4uRUxFTUVOVF9BUlJBWV9CVUZGRVIsZS5h cnJheUJ1ZmZlcix0aGlzLmR5bmFtaWNEcmF3P24uRFlOQU1JQ19EUkFXOm4u U1RBVElDX0RSQVcpLHRoaXMuZHluYW1pY0RyYXd8fGRlbGV0ZSBlLmFycmF5 QnVmZmVyfTtqLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dGhpcy5jb250 ZXh0LmJpbmRFbGVtZW50QnVmZmVyLnNldCh0aGlzLmJ1ZmZlcil9LGoucHJv dG90eXBlLnVwZGF0ZURhdGE9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250 ZXh0LmdsO3RoaXMuY29udGV4dC51bmJpbmRWQU8oKSx0aGlzLmJpbmQoKSxl LmJ1ZmZlclN1YkRhdGEoZS5FTEVNRU5UX0FSUkFZX0JVRkZFUiwwLHQuYXJy YXlCdWZmZXIpfSxqLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFy IHQ9dGhpcy5jb250ZXh0LmdsO3RoaXMuYnVmZmVyJiYodC5kZWxldGVCdWZm ZXIodGhpcy5idWZmZXIpLGRlbGV0ZSB0aGlzLmJ1ZmZlcil9O3ZhciBWPXtJ bnQ4OiJCWVRFIixVaW50ODoiVU5TSUdORURfQllURSIsSW50MTY6IlNIT1JU IixVaW50MTY6IlVOU0lHTkVEX1NIT1JUIixJbnQzMjoiSU5UIixVaW50MzI6 IlVOU0lHTkVEX0lOVCIsRmxvYXQzMjoiRkxPQVQifSxVPWZ1bmN0aW9uKHQs ZSxyLG4pe3RoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuYXR0cmlidXRlcz1y LHRoaXMuaXRlbVNpemU9ZS5ieXRlc1BlckVsZW1lbnQsdGhpcy5keW5hbWlj RHJhdz1uLHRoaXMuY29udGV4dD10O3ZhciBhPXQuZ2w7dGhpcy5idWZmZXI9 YS5jcmVhdGVCdWZmZXIoKSx0LmJpbmRWZXJ0ZXhCdWZmZXIuc2V0KHRoaXMu YnVmZmVyKSxhLmJ1ZmZlckRhdGEoYS5BUlJBWV9CVUZGRVIsZS5hcnJheUJ1 ZmZlcix0aGlzLmR5bmFtaWNEcmF3P2EuRFlOQU1JQ19EUkFXOmEuU1RBVElD X0RSQVcpLHRoaXMuZHluYW1pY0RyYXd8fGRlbGV0ZSBlLmFycmF5QnVmZmVy fTtVLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dGhpcy5jb250ZXh0LmJp bmRWZXJ0ZXhCdWZmZXIuc2V0KHRoaXMuYnVmZmVyKX0sVS5wcm90b3R5cGUu dXBkYXRlRGF0YT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbnRleHQuZ2w7 dGhpcy5iaW5kKCksZS5idWZmZXJTdWJEYXRhKGUuQVJSQVlfQlVGRkVSLDAs dC5hcnJheUJ1ZmZlcil9LFUucHJvdG90eXBlLmVuYWJsZUF0dHJpYnV0ZXM9 ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPHRoaXMuYXR0cmlidXRlcy5s ZW5ndGg7cisrKXt2YXIgbj10aGlzLmF0dHJpYnV0ZXNbcl0sYT1lLmF0dHJp YnV0ZXNbbi5uYW1lXTt2b2lkIDAhPT1hJiZ0LmVuYWJsZVZlcnRleEF0dHJp YkFycmF5KGEpfX0sVS5wcm90b3R5cGUuc2V0VmVydGV4QXR0cmliUG9pbnRl cnM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0wO248dGhpcy5hdHRyaWJ1 dGVzLmxlbmd0aDtuKyspe3ZhciBhPXRoaXMuYXR0cmlidXRlc1tuXSxpPWUu YXR0cmlidXRlc1thLm5hbWVdO3ZvaWQgMCE9PWkmJnQudmVydGV4QXR0cmli UG9pbnRlcihpLGEuY29tcG9uZW50cyx0W1ZbYS50eXBlXV0sITEsdGhpcy5p dGVtU2l6ZSxhLm9mZnNldCt0aGlzLml0ZW1TaXplKihyfHwwKSl9fSxVLnBy b3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0 LmdsO3RoaXMuYnVmZmVyJiYodC5kZWxldGVCdWZmZXIodGhpcy5idWZmZXIp LGRlbGV0ZSB0aGlzLmJ1ZmZlcil9O3ZhciBxPWZ1bmN0aW9uKHQpe3RoaXMu Z2w9dC5nbCx0aGlzLmRlZmF1bHQ9dGhpcy5nZXREZWZhdWx0KCksdGhpcy5j dXJyZW50PXRoaXMuZGVmYXVsdCx0aGlzLmRpcnR5PSExfTtxLnByb3RvdHlw ZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50fSxxLnByb3Rv dHlwZS5zZXQ9ZnVuY3Rpb24odCl7fSxxLnByb3RvdHlwZS5nZXREZWZhdWx0 PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdH0scS5wcm90b3R5cGUu c2V0RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuc2V0KHRoaXMuZGVmYXVsdCl9 O3ZhciBIPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoKXtlLmFwcGx5KHRoaXMs YXJndW1lbnRzKX1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90 eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBl LmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlv bigpe3JldHVybiB0LkNvbG9yLnRyYW5zcGFyZW50fSxyLnByb3RvdHlwZS5z ZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJyZW50Oyh0LnIhPT1lLnJ8 fHQuZyE9PWUuZ3x8dC5iIT09ZS5ifHx0LmEhPT1lLmF8fHRoaXMuZGlydHkp JiYodGhpcy5nbC5jbGVhckNvbG9yKHQucix0LmcsdC5iLHQuYSksdGhpcy5j dXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LHJ9KHEpLEc9ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0 JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0 JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnBy b3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIDF9LGUucHJv dG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVudHx8dGhp cy5kaXJ0eSkmJih0aGlzLmdsLmNsZWFyRGVwdGgodCksdGhpcy5jdXJyZW50 PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEpLFk9ZnVuY3Rpb24odCl7ZnVuY3Rp b24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5f X3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnBy b3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlw ZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIDB9LGUucHJvdG90eXBl LnNldD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0 eSkmJih0aGlzLmdsLmNsZWFyU3RlbmNpbCh0KSx0aGlzLmN1cnJlbnQ9dCx0 aGlzLmRpcnR5PSExKX0sZX0ocSksVz1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJv dG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90 eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdl dERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm5bITAsITAsITAsITBdfSxlLnBy b3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJyZW50Oyh0 WzBdIT09ZVswXXx8dFsxXSE9PWVbMV18fHRbMl0hPT1lWzJdfHx0WzNdIT09 ZVszXXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmNvbG9yTWFzayh0WzBdLHRb MV0sdFsyXSx0WzNdKSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0s ZX0ocSksWD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlz LGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3Rv dHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlw ZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rp b24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpeyh0 IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuZGVwdGhN YXNrKHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxa PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1l bnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9i amVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0 cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3Jl dHVybiAyNTV9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9PXRo aXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLnN0ZW5jaWxNYXNr KHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxKPWZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRz KX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVj dC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVj dG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVy bntmdW5jOnRoaXMuZ2wuQUxXQVlTLHJlZjowLG1hc2s6MjU1fX0sZS5wcm90 b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudDsodC5m dW5jIT09ZS5mdW5jfHx0LnJlZiE9PWUucmVmfHx0Lm1hc2shPT1lLm1hc2t8 fHRoaXMuZGlydHkpJiYodGhpcy5nbC5zdGVuY2lsRnVuYyh0LmZ1bmMsdC5y ZWYsdC5tYXNrKSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0o cSksSz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFy Z3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlw ZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5j b25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24o KXt2YXIgdD10aGlzLmdsO3JldHVyblt0LktFRVAsdC5LRUVQLHQuS0VFUF19 LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJl bnQ7KHRbMF0hPT1lWzBdfHx0WzFdIT09ZVsxXXx8dFsyXSE9PWVbMl18fHRo aXMuZGlydHkpJiYodGhpcy5nbC5zdGVuY2lsT3AodFswXSx0WzFdLHRbMl0p LHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSxRPWZ1bmN0 aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1y ZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5j cmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9y PWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiEx fSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3Vy cmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDt0P2UuZW5hYmxlKGUu U1RFTkNJTF9URVNUKTplLmRpc2FibGUoZS5TVEVOQ0lMX1RFU1QpLHRoaXMu Y3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShxKSwkPWZ1bmN0aW9uKHQp e2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4g dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo dCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5w cm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVyblswLDFdfSxl LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJyZW50 Oyh0WzBdIT09ZVswXXx8dFsxXSE9PWVbMV18fHRoaXMuZGlydHkpJiYodGhp cy5nbC5kZXB0aFJhbmdlKHRbMF0sdFsxXSksdGhpcy5jdXJyZW50PXQsdGhp cy5kaXJ0eT0hMSl9LGV9KHEpLHR0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo KXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90 b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5 cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0 RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5zZXQ9 ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7 dmFyIGU9dGhpcy5nbDt0P2UuZW5hYmxlKGUuREVQVEhfVEVTVCk6ZS5kaXNh YmxlKGUuREVQVEhfVEVTVCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0h MX19LGV9KHEpLGV0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5 KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUu cHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJv dG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1m dW5jdGlvbigpe3JldHVybiB0aGlzLmdsLkxFU1N9LGUucHJvdG90eXBlLnNl dD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkm Jih0aGlzLmdsLmRlcHRoRnVuYyh0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRp cnR5PSExKX0sZX0ocSkscnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Qu YXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189 dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSks ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZh dWx0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLnNldD1mdW5j dGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIg ZT10aGlzLmdsO3Q/ZS5lbmFibGUoZS5CTEVORCk6ZS5kaXNhYmxlKGUuQkxF TkQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShxKSxudD1m dW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmpl Y3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1 Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXt2YXIg dD10aGlzLmdsO3JldHVyblt0Lk9ORSx0LlpFUk9dfSxlLnByb3RvdHlwZS5z ZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJyZW50Oyh0WzBdIT09ZVsw XXx8dFsxXSE9PWVbMV18fHRoaXMuZGlydHkpJiYodGhpcy5nbC5ibGVuZEZ1 bmModFswXSx0WzFdKSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0s ZX0ocSksYXQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcigpe2UuYXBwbHkodGhp cyxhcmd1bWVudHMpfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90 b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5 cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0 aW9uKCl7cmV0dXJuIHQuQ29sb3IudHJhbnNwYXJlbnR9LHIucHJvdG90eXBl LnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7KHQuciE9PWUu cnx8dC5nIT09ZS5nfHx0LmIhPT1lLmJ8fHQuYSE9PWUuYXx8dGhpcy5kaXJ0 eSkmJih0aGlzLmdsLmJsZW5kQ29sb3IodC5yLHQuZyx0LmIsdC5hKSx0aGlz LmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0scn0ocSksaXQ9ZnVuY3Rpb24o dCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVy biB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0 ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxl LnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu Z2wuRlVOQ19BRER9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9 PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmJsZW5kRXF1 YXRpb24odCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEp LG90PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJn dW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBl PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNv bnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigp e3JldHVybiExfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9 PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDt0P2Uu ZW5hYmxlKGUuQ1VMTF9GQUNFKTplLmRpc2FibGUoZS5DVUxMX0ZBQ0UpLHRo aXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShxKSxzdD1mdW5jdGlv bih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0 dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3Jl YXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1l LGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5nbC5CQUNLfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7KHQhPT10 aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5jdWxsRmFjZSh0 KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0ocSksbHQ9ZnVu Y3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMp fXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0 LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0 b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuZ2wuQ0NXfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7KHQh PT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5mcm9udEZh Y2UodCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEpLGN0 PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1l bnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9i amVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0 cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3Jl dHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7KHQhPT10 aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC51c2VQcm9ncmFt KHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShxKSx1dD1m dW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmpl Y3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1 Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5nbC5URVhUVVJFMH0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9u KHQpeyh0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wu YWN0aXZlVGV4dHVyZSh0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSEx KX0sZX0ocSksaHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHko dGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5w cm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90 b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1 bmN0aW9uKCl7dmFyIHQ9dGhpcy5nbDtyZXR1cm5bMCwwLHQuZHJhd2luZ0J1 ZmZlcldpZHRoLHQuZHJhd2luZ0J1ZmZlckhlaWdodF19LGUucHJvdG90eXBl LnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7KHRbMF0hPT1l WzBdfHx0WzFdIT09ZVsxXXx8dFsyXSE9PWVbMl18fHRbM10hPT1lWzNdfHx0 aGlzLmRpcnR5KSYmKHRoaXMuZ2wudmlld3BvcnQodFswXSx0WzFdLHRbMl0s dFszXSksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEpLGZ0 PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1l bnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9i amVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0 cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3Jl dHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9 PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDtlLmJp bmRGcmFtZWJ1ZmZlcihlLkZSQU1FQlVGRkVSLHQpLHRoaXMuY3VycmVudD10 LHRoaXMuZGlydHk9ITF9fSxlfShxKSxwdD1mdW5jdGlvbih0KXtmdW5jdGlv biBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9f cHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJv dG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBl LmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZS5wcm90b3R5 cGUuc2V0PWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlzLmN1cnJlbnR8fHRoaXMu ZGlydHkpe3ZhciBlPXRoaXMuZ2w7ZS5iaW5kUmVuZGVyYnVmZmVyKGUuUkVO REVSQlVGRkVSLHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxl fShxKSxkdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlz LGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3Rv dHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlw ZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rp b24oKXtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQp e2lmKHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpe3ZhciBlPXRoaXMu Z2w7ZS5iaW5kVGV4dHVyZShlLlRFWFRVUkVfMkQsdCksdGhpcy5jdXJyZW50 PXQsdGhpcy5kaXJ0eT0hMX19LGV9KHEpLGd0PWZ1bmN0aW9uKHQpe2Z1bmN0 aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUu X19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w cm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5 cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLnByb3Rv dHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3VycmVudHx8dGhp cy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDtlLmJpbmRCdWZmZXIoZS5BUlJBWV9C VUZGRVIsdCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KHEp LHZ0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJn dW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBl PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNv bnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigp e3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dmFy IGU9dGhpcy5nbDtlLmJpbmRCdWZmZXIoZS5FTEVNRU5UX0FSUkFZX0JVRkZF Uix0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfSxlfShxKSxtdD1m dW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUpLHRoaXMu dmFvPWUuZXh0VmVydGV4QXJyYXlPYmplY3R9cmV0dXJuIHQmJihlLl9fcHJv dG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90 eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdl dERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUu c2V0PWZ1bmN0aW9uKHQpe3RoaXMudmFvJiYodCE9PXRoaXMuY3VycmVudHx8 dGhpcy5kaXJ0eSkmJih0aGlzLnZhby5iaW5kVmVydGV4QXJyYXlPRVModCks dGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KHEpLHl0PWZ1bmN0 aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1y ZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5j cmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9y PWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiA0 fSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3Vy cmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDtlLnBpeGVsU3RvcmVp KGUuVU5QQUNLX0FMSUdOTUVOVCx0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRp cnR5PSExfX0sZX0ocSkseHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3Qu YXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189 dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSks ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZh dWx0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLnNldD1mdW5j dGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KXt2YXIg ZT10aGlzLmdsO2UucGl4ZWxTdG9yZWkoZS5VTlBBQ0tfUFJFTVVMVElQTFlf QUxQSEFfV0VCR0wsdCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19 LGV9KHEpLGJ0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRo aXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJv dG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90 eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5j dGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7 aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5n bDtlLnBpeGVsU3RvcmVpKGUuVU5QQUNLX0ZMSVBfWV9XRUJHTCx0KSx0aGlz LmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0ocSksX3Q9ZnVuY3Rpb24o dCl7ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLGUpLHRoaXMuY29udGV4 dD1lLHRoaXMucGFyZW50PXJ9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxl LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnBy b3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9 ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZX0ocSksd3Q9ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0 JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0 JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnBy b3RvdHlwZS5zZXREaXJ0eT1mdW5jdGlvbigpe3RoaXMuZGlydHk9ITB9LGUu cHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50 fHx0aGlzLmRpcnR5KXt0aGlzLmNvbnRleHQuYmluZEZyYW1lYnVmZmVyLnNl dCh0aGlzLnBhcmVudCk7dmFyIGU9dGhpcy5nbDtlLmZyYW1lYnVmZmVyVGV4 dHVyZTJEKGUuRlJBTUVCVUZGRVIsZS5DT0xPUl9BVFRBQ0hNRU5UMCxlLlRF WFRVUkVfMkQsdCwwKSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0s ZX0oX3QpLGt0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRo aXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJv dG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90 eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQp e2lmKHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpe3RoaXMuY29udGV4 dC5iaW5kRnJhbWVidWZmZXIuc2V0KHRoaXMucGFyZW50KTt2YXIgZT10aGlz LmdsO2UuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZS5GUkFNRUJVRkZFUixl LkRFUFRIX0FUVEFDSE1FTlQsZS5SRU5ERVJCVUZGRVIsdCksdGhpcy5jdXJy ZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KF90KSxUdD1mdW5jdGlvbih0LGUs cil7dGhpcy5jb250ZXh0PXQsdGhpcy53aWR0aD1lLHRoaXMuaGVpZ2h0PXI7 dmFyIG49dC5nbCxhPXRoaXMuZnJhbWVidWZmZXI9bi5jcmVhdGVGcmFtZWJ1 ZmZlcigpO3RoaXMuY29sb3JBdHRhY2htZW50PW5ldyB3dCh0LGEpLHRoaXMu ZGVwdGhBdHRhY2htZW50PW5ldyBrdCh0LGEpfTtUdC5wcm90b3R5cGUuZGVz dHJveT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY29udGV4dC5nbCxlPXRoaXMu Y29sb3JBdHRhY2htZW50LmdldCgpO2UmJnQuZGVsZXRlVGV4dHVyZShlKTt2 YXIgcj10aGlzLmRlcHRoQXR0YWNobWVudC5nZXQoKTtyJiZ0LmRlbGV0ZVJl bmRlcmJ1ZmZlcihyKSx0LmRlbGV0ZUZyYW1lYnVmZmVyKHRoaXMuZnJhbWVi dWZmZXIpfTt2YXIgTXQ9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZnVuYz10LHRo aXMubWFzaz1lLHRoaXMucmFuZ2U9cn07TXQuUmVhZE9ubHk9ITEsTXQuUmVh ZFdyaXRlPSEwLE10LmRpc2FibGVkPW5ldyBNdCg1MTksTXQuUmVhZE9ubHks WzAsMV0pO3ZhciBBdD1mdW5jdGlvbih0LGUscixuLGEsaSl7dGhpcy50ZXN0 PXQsdGhpcy5yZWY9ZSx0aGlzLm1hc2s9cix0aGlzLmZhaWw9bix0aGlzLmRl cHRoRmFpbD1hLHRoaXMucGFzcz1pfTtBdC5kaXNhYmxlZD1uZXcgQXQoe2Z1 bmM6NTE5LG1hc2s6MH0sMCwwLDc2ODAsNzY4MCw3NjgwKTt2YXIgU3Q9ZnVu Y3Rpb24odCxlLHIpe3RoaXMuYmxlbmRGdW5jdGlvbj10LHRoaXMuYmxlbmRD b2xvcj1lLHRoaXMubWFzaz1yfTtTdC5kaXNhYmxlZD1uZXcgU3QoU3QuUmVw bGFjZT1bMSwwXSx0LkNvbG9yLnRyYW5zcGFyZW50LFshMSwhMSwhMSwhMV0p LFN0LnVuYmxlbmRlZD1uZXcgU3QoU3QuUmVwbGFjZSx0LkNvbG9yLnRyYW5z cGFyZW50LFshMCwhMCwhMCwhMF0pLFN0LmFscGhhQmxlbmRlZD1uZXcgU3Qo WzEsNzcxXSx0LkNvbG9yLnRyYW5zcGFyZW50LFshMCwhMCwhMCwhMF0pO3Zh ciBFdD1mdW5jdGlvbih0LGUscil7dGhpcy5lbmFibGU9dCx0aGlzLm1vZGU9 ZSx0aGlzLmZyb250RmFjZT1yfTtFdC5kaXNhYmxlZD1uZXcgRXQoITEsMTAy OSwyMzA1KSxFdC5iYWNrQ0NXPW5ldyBFdCghMCwxMDI5LDIzMDUpO3ZhciBM dD1mdW5jdGlvbih0KXt0aGlzLmdsPXQsdGhpcy5leHRWZXJ0ZXhBcnJheU9i amVjdD10aGlzLmdsLmdldEV4dGVuc2lvbigiT0VTX3ZlcnRleF9hcnJheV9v YmplY3QiKSx0aGlzLmNsZWFyQ29sb3I9bmV3IEgodGhpcyksdGhpcy5jbGVh ckRlcHRoPW5ldyBHKHRoaXMpLHRoaXMuY2xlYXJTdGVuY2lsPW5ldyBZKHRo aXMpLHRoaXMuY29sb3JNYXNrPW5ldyBXKHRoaXMpLHRoaXMuZGVwdGhNYXNr PW5ldyBYKHRoaXMpLHRoaXMuc3RlbmNpbE1hc2s9bmV3IFoodGhpcyksdGhp cy5zdGVuY2lsRnVuYz1uZXcgSih0aGlzKSx0aGlzLnN0ZW5jaWxPcD1uZXcg Syh0aGlzKSx0aGlzLnN0ZW5jaWxUZXN0PW5ldyBRKHRoaXMpLHRoaXMuZGVw dGhSYW5nZT1uZXcgJCh0aGlzKSx0aGlzLmRlcHRoVGVzdD1uZXcgdHQodGhp cyksdGhpcy5kZXB0aEZ1bmM9bmV3IGV0KHRoaXMpLHRoaXMuYmxlbmQ9bmV3 IHJ0KHRoaXMpLHRoaXMuYmxlbmRGdW5jPW5ldyBudCh0aGlzKSx0aGlzLmJs ZW5kQ29sb3I9bmV3IGF0KHRoaXMpLHRoaXMuYmxlbmRFcXVhdGlvbj1uZXcg aXQodGhpcyksdGhpcy5jdWxsRmFjZT1uZXcgb3QodGhpcyksdGhpcy5jdWxs RmFjZVNpZGU9bmV3IHN0KHRoaXMpLHRoaXMuZnJvbnRGYWNlPW5ldyBsdCh0 aGlzKSx0aGlzLnByb2dyYW09bmV3IGN0KHRoaXMpLHRoaXMuYWN0aXZlVGV4 dHVyZT1uZXcgdXQodGhpcyksdGhpcy52aWV3cG9ydD1uZXcgaHQodGhpcyks dGhpcy5iaW5kRnJhbWVidWZmZXI9bmV3IGZ0KHRoaXMpLHRoaXMuYmluZFJl bmRlcmJ1ZmZlcj1uZXcgcHQodGhpcyksdGhpcy5iaW5kVGV4dHVyZT1uZXcg ZHQodGhpcyksdGhpcy5iaW5kVmVydGV4QnVmZmVyPW5ldyBndCh0aGlzKSx0 aGlzLmJpbmRFbGVtZW50QnVmZmVyPW5ldyB2dCh0aGlzKSx0aGlzLmJpbmRW ZXJ0ZXhBcnJheU9FUz10aGlzLmV4dFZlcnRleEFycmF5T2JqZWN0JiZuZXcg bXQodGhpcyksdGhpcy5waXhlbFN0b3JlVW5wYWNrPW5ldyB5dCh0aGlzKSx0 aGlzLnBpeGVsU3RvcmVVbnBhY2tQcmVtdWx0aXBseUFscGhhPW5ldyB4dCh0 aGlzKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2tGbGlwWT1uZXcgYnQodGhpcyks dGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM9dC5nZXRFeHRlbnNp b24oIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHx0LmdldEV4 dGVuc2lvbigiTU9aX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp fHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9h bmlzb3Ryb3BpYyIpLHRoaXMuZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj JiYodGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWNNYXg9dC5nZXRQ YXJhbWV0ZXIodGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuTUFY X1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKSksdGhpcy5leHRUZXh0dXJl SGFsZkZsb2F0PXQuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9oYWxmX2Zs b2F0IiksdGhpcy5leHRUZXh0dXJlSGFsZkZsb2F0JiZ0LmdldEV4dGVuc2lv bigiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKX07THQucHJvdG90 eXBlLnNldERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLnVuYmluZFZBTygpLHRo aXMuY2xlYXJDb2xvci5zZXREZWZhdWx0KCksdGhpcy5jbGVhckRlcHRoLnNl dERlZmF1bHQoKSx0aGlzLmNsZWFyU3RlbmNpbC5zZXREZWZhdWx0KCksdGhp cy5jb2xvck1hc2suc2V0RGVmYXVsdCgpLHRoaXMuZGVwdGhNYXNrLnNldERl ZmF1bHQoKSx0aGlzLnN0ZW5jaWxNYXNrLnNldERlZmF1bHQoKSx0aGlzLnN0 ZW5jaWxGdW5jLnNldERlZmF1bHQoKSx0aGlzLnN0ZW5jaWxPcC5zZXREZWZh dWx0KCksdGhpcy5zdGVuY2lsVGVzdC5zZXREZWZhdWx0KCksdGhpcy5kZXB0 aFJhbmdlLnNldERlZmF1bHQoKSx0aGlzLmRlcHRoVGVzdC5zZXREZWZhdWx0 KCksdGhpcy5kZXB0aEZ1bmMuc2V0RGVmYXVsdCgpLHRoaXMuYmxlbmQuc2V0 RGVmYXVsdCgpLHRoaXMuYmxlbmRGdW5jLnNldERlZmF1bHQoKSx0aGlzLmJs ZW5kQ29sb3Iuc2V0RGVmYXVsdCgpLHRoaXMuYmxlbmRFcXVhdGlvbi5zZXRE ZWZhdWx0KCksdGhpcy5jdWxsRmFjZS5zZXREZWZhdWx0KCksdGhpcy5jdWxs RmFjZVNpZGUuc2V0RGVmYXVsdCgpLHRoaXMuZnJvbnRGYWNlLnNldERlZmF1 bHQoKSx0aGlzLnByb2dyYW0uc2V0RGVmYXVsdCgpLHRoaXMuYWN0aXZlVGV4 dHVyZS5zZXREZWZhdWx0KCksdGhpcy5iaW5kRnJhbWVidWZmZXIuc2V0RGVm YXVsdCgpLHRoaXMucGl4ZWxTdG9yZVVucGFjay5zZXREZWZhdWx0KCksdGhp cy5waXhlbFN0b3JlVW5wYWNrUHJlbXVsdGlwbHlBbHBoYS5zZXREZWZhdWx0 KCksdGhpcy5waXhlbFN0b3JlVW5wYWNrRmxpcFkuc2V0RGVmYXVsdCgpfSxM dC5wcm90b3R5cGUuc2V0RGlydHk9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyQ29s b3IuZGlydHk9ITAsdGhpcy5jbGVhckRlcHRoLmRpcnR5PSEwLHRoaXMuY2xl YXJTdGVuY2lsLmRpcnR5PSEwLHRoaXMuY29sb3JNYXNrLmRpcnR5PSEwLHRo aXMuZGVwdGhNYXNrLmRpcnR5PSEwLHRoaXMuc3RlbmNpbE1hc2suZGlydHk9 ITAsdGhpcy5zdGVuY2lsRnVuYy5kaXJ0eT0hMCx0aGlzLnN0ZW5jaWxPcC5k aXJ0eT0hMCx0aGlzLnN0ZW5jaWxUZXN0LmRpcnR5PSEwLHRoaXMuZGVwdGhS YW5nZS5kaXJ0eT0hMCx0aGlzLmRlcHRoVGVzdC5kaXJ0eT0hMCx0aGlzLmRl cHRoRnVuYy5kaXJ0eT0hMCx0aGlzLmJsZW5kLmRpcnR5PSEwLHRoaXMuYmxl bmRGdW5jLmRpcnR5PSEwLHRoaXMuYmxlbmRDb2xvci5kaXJ0eT0hMCx0aGlz LmJsZW5kRXF1YXRpb24uZGlydHk9ITAsdGhpcy5jdWxsRmFjZS5kaXJ0eT0h MCx0aGlzLmN1bGxGYWNlU2lkZS5kaXJ0eT0hMCx0aGlzLmZyb250RmFjZS5k aXJ0eT0hMCx0aGlzLnByb2dyYW0uZGlydHk9ITAsdGhpcy5hY3RpdmVUZXh0 dXJlLmRpcnR5PSEwLHRoaXMudmlld3BvcnQuZGlydHk9ITAsdGhpcy5iaW5k RnJhbWVidWZmZXIuZGlydHk9ITAsdGhpcy5iaW5kUmVuZGVyYnVmZmVyLmRp cnR5PSEwLHRoaXMuYmluZFRleHR1cmUuZGlydHk9ITAsdGhpcy5iaW5kVmVy dGV4QnVmZmVyLmRpcnR5PSEwLHRoaXMuYmluZEVsZW1lbnRCdWZmZXIuZGly dHk9ITAsdGhpcy5leHRWZXJ0ZXhBcnJheU9iamVjdCYmKHRoaXMuYmluZFZl cnRleEFycmF5T0VTLmRpcnR5PSEwKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2su ZGlydHk9ITAsdGhpcy5waXhlbFN0b3JlVW5wYWNrUHJlbXVsdGlwbHlBbHBo YS5kaXJ0eT0hMCx0aGlzLnBpeGVsU3RvcmVVbnBhY2tGbGlwWS5kaXJ0eT0h MH0sTHQucHJvdG90eXBlLmNyZWF0ZUluZGV4QnVmZmVyPWZ1bmN0aW9uKHQs ZSl7cmV0dXJuIG5ldyBqKHRoaXMsdCxlKX0sTHQucHJvdG90eXBlLmNyZWF0 ZVZlcnRleEJ1ZmZlcj1mdW5jdGlvbih0LGUscil7cmV0dXJuIG5ldyBVKHRo aXMsdCxlLHIpfSxMdC5wcm90b3R5cGUuY3JlYXRlUmVuZGVyYnVmZmVyPWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLmdsLGE9bi5jcmVhdGVSZW5kZXJi dWZmZXIoKTtyZXR1cm4gdGhpcy5iaW5kUmVuZGVyYnVmZmVyLnNldChhKSxu LnJlbmRlcmJ1ZmZlclN0b3JhZ2Uobi5SRU5ERVJCVUZGRVIsdCxlLHIpLHRo aXMuYmluZFJlbmRlcmJ1ZmZlci5zZXQobnVsbCksYX0sTHQucHJvdG90eXBl LmNyZWF0ZUZyYW1lYnVmZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBU dCh0aGlzLHQsZSl9LEx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0KXt2 YXIgZT10LmNvbG9yLHI9dC5kZXB0aCxuPXRoaXMuZ2wsYT0wO2UmJihhfD1u LkNPTE9SX0JVRkZFUl9CSVQsdGhpcy5jbGVhckNvbG9yLnNldChlKSx0aGlz LmNvbG9yTWFzay5zZXQoWyEwLCEwLCEwLCEwXSkpLHZvaWQgMCE9PXImJihh fD1uLkRFUFRIX0JVRkZFUl9CSVQsdGhpcy5kZXB0aFJhbmdlLnNldChbMCwx XSksdGhpcy5jbGVhckRlcHRoLnNldChyKSx0aGlzLmRlcHRoTWFzay5zZXQo ITApKSxuLmNsZWFyKGEpfSxMdC5wcm90b3R5cGUuc2V0Q3VsbEZhY2U9ZnVu Y3Rpb24odCl7ITE9PT10LmVuYWJsZT90aGlzLmN1bGxGYWNlLnNldCghMSk6 KHRoaXMuY3VsbEZhY2Uuc2V0KCEwKSx0aGlzLmN1bGxGYWNlU2lkZS5zZXQo dC5tb2RlKSx0aGlzLmZyb250RmFjZS5zZXQodC5mcm9udEZhY2UpKX0sTHQu cHJvdG90eXBlLnNldERlcHRoTW9kZT1mdW5jdGlvbih0KXt0LmZ1bmMhPT10 aGlzLmdsLkFMV0FZU3x8dC5tYXNrPyh0aGlzLmRlcHRoVGVzdC5zZXQoITAp LHRoaXMuZGVwdGhGdW5jLnNldCh0LmZ1bmMpLHRoaXMuZGVwdGhNYXNrLnNl dCh0Lm1hc2spLHRoaXMuZGVwdGhSYW5nZS5zZXQodC5yYW5nZSkpOnRoaXMu ZGVwdGhUZXN0LnNldCghMSl9LEx0LnByb3RvdHlwZS5zZXRTdGVuY2lsTW9k ZT1mdW5jdGlvbih0KXt0LnRlc3QuZnVuYyE9PXRoaXMuZ2wuQUxXQVlTfHx0 Lm1hc2s/KHRoaXMuc3RlbmNpbFRlc3Quc2V0KCEwKSx0aGlzLnN0ZW5jaWxN YXNrLnNldCh0Lm1hc2spLHRoaXMuc3RlbmNpbE9wLnNldChbdC5mYWlsLHQu ZGVwdGhGYWlsLHQucGFzc10pLHRoaXMuc3RlbmNpbEZ1bmMuc2V0KHtmdW5j OnQudGVzdC5mdW5jLHJlZjp0LnJlZixtYXNrOnQudGVzdC5tYXNrfSkpOnRo aXMuc3RlbmNpbFRlc3Quc2V0KCExKX0sTHQucHJvdG90eXBlLnNldENvbG9y TW9kZT1mdW5jdGlvbihlKXt0LmRlZXBFcXVhbChlLmJsZW5kRnVuY3Rpb24s U3QuUmVwbGFjZSk/dGhpcy5ibGVuZC5zZXQoITEpOih0aGlzLmJsZW5kLnNl dCghMCksdGhpcy5ibGVuZEZ1bmMuc2V0KGUuYmxlbmRGdW5jdGlvbiksdGhp cy5ibGVuZENvbG9yLnNldChlLmJsZW5kQ29sb3IpKSx0aGlzLmNvbG9yTWFz ay5zZXQoZS5tYXNrKX0sTHQucHJvdG90eXBlLnVuYmluZFZBTz1mdW5jdGlv bigpe3RoaXMuZXh0VmVydGV4QXJyYXlPYmplY3QmJnRoaXMuYmluZFZlcnRl eEFycmF5T0VTLnNldChudWxsKX07dmFyIEN0PWZ1bmN0aW9uKGUpe2Z1bmN0 aW9uIHIocixuLGEpe3ZhciBpPXRoaXM7ZS5jYWxsKHRoaXMpLHRoaXMuaWQ9 cix0aGlzLmRpc3BhdGNoZXI9YSx0aGlzLm9uKCJkYXRhIixmdW5jdGlvbih0 KXsic291cmNlIj09PXQuZGF0YVR5cGUmJiJtZXRhZGF0YSI9PT10LnNvdXJj ZURhdGFUeXBlJiYoaS5fc291cmNlTG9hZGVkPSEwKSxpLl9zb3VyY2VMb2Fk ZWQmJiFpLl9wYXVzZWQmJiJzb3VyY2UiPT09dC5kYXRhVHlwZSYmImNvbnRl bnQiPT09dC5zb3VyY2VEYXRhVHlwZSYmKGkucmVsb2FkKCksaS50cmFuc2Zv cm0mJmkudXBkYXRlKGkudHJhbnNmb3JtKSl9KSx0aGlzLm9uKCJlcnJvciIs ZnVuY3Rpb24oKXtpLl9zb3VyY2VFcnJvcmVkPSEwfSksdGhpcy5fc291cmNl PUQocixuLGEsdGhpcyksdGhpcy5fdGlsZXM9e30sdGhpcy5fY2FjaGU9bmV3 IE4oMCx0aGlzLl91bmxvYWRUaWxlLmJpbmQodGhpcykpLHRoaXMuX3RpbWVy cz17fSx0aGlzLl9jYWNoZVRpbWVycz17fSx0aGlzLl9tYXhUaWxlQ2FjaGVT aXplPW51bGwsdGhpcy5fY292ZXJlZFRpbGVzPXt9LHRoaXMuX3N0YXRlPW5l dyB0LlNvdXJjZUZlYXR1cmVTdGF0ZX1yZXR1cm4gZSYmKHIuX19wcm90b19f PWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUp LHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUub25BZGQ9 ZnVuY3Rpb24odCl7dGhpcy5tYXA9dCx0aGlzLl9tYXhUaWxlQ2FjaGVTaXpl PXQ/dC5fbWF4VGlsZUNhY2hlU2l6ZTpudWxsLHRoaXMuX3NvdXJjZSYmdGhp cy5fc291cmNlLm9uQWRkJiZ0aGlzLl9zb3VyY2Uub25BZGQodCl9LHIucHJv dG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKHQpe3RoaXMuX3NvdXJjZSYmdGhp cy5fc291cmNlLm9uUmVtb3ZlJiZ0aGlzLl9zb3VyY2Uub25SZW1vdmUodCl9 LHIucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe2lmKHRoaXMuX3NvdXJj ZUVycm9yZWQpcmV0dXJuITA7aWYoIXRoaXMuX3NvdXJjZUxvYWRlZClyZXR1 cm4hMTtpZighdGhpcy5fc291cmNlLmxvYWRlZCgpKXJldHVybiExO2Zvcih2 YXIgdCBpbiB0aGlzLl90aWxlcyl7dmFyIGU9dGhpcy5fdGlsZXNbdF07aWYo ImxvYWRlZCIhPT1lLnN0YXRlJiYiZXJyb3JlZCIhPT1lLnN0YXRlKXJldHVy biExfXJldHVybiEwfSxyLnByb3RvdHlwZS5nZXRTb3VyY2U9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5fc291cmNlfSxyLnByb3RvdHlwZS5wYXVzZT1mdW5j dGlvbigpe3RoaXMuX3BhdXNlZD0hMH0sci5wcm90b3R5cGUucmVzdW1lPWZ1 bmN0aW9uKCl7aWYodGhpcy5fcGF1c2VkKXt2YXIgdD10aGlzLl9zaG91bGRS ZWxvYWRPblJlc3VtZTt0aGlzLl9wYXVzZWQ9ITEsdGhpcy5fc2hvdWxkUmVs b2FkT25SZXN1bWU9ITEsdCYmdGhpcy5yZWxvYWQoKSx0aGlzLnRyYW5zZm9y bSYmdGhpcy51cGRhdGUodGhpcy50cmFuc2Zvcm0pfX0sci5wcm90b3R5cGUu X2xvYWRUaWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3NvdXJjZS5s b2FkVGlsZSh0LGUpfSxyLnByb3RvdHlwZS5fdW5sb2FkVGlsZT1mdW5jdGlv bih0KXtpZih0aGlzLl9zb3VyY2UudW5sb2FkVGlsZSlyZXR1cm4gdGhpcy5f c291cmNlLnVubG9hZFRpbGUodCxmdW5jdGlvbigpe30pfSxyLnByb3RvdHlw ZS5fYWJvcnRUaWxlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX3NvdXJjZS5hYm9y dFRpbGUpcmV0dXJuIHRoaXMuX3NvdXJjZS5hYm9ydFRpbGUodCxmdW5jdGlv bigpe30pfSxyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fc291cmNlLnNlcmlhbGl6ZSgpfSxyLnByb3RvdHlwZS5wcmVw YXJlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLl9zb3VyY2UucHJl cGFyZSYmdGhpcy5fc291cmNlLnByZXBhcmUoKSx0aGlzLl9zdGF0ZS5jb2Fs ZXNjZUNoYW5nZXModGhpcy5fdGlsZXMsdGhpcy5tYXA/dGhpcy5tYXAucGFp bnRlcjpudWxsKSx0aGlzLl90aWxlcyl7dmFyIHI9dGhpcy5fdGlsZXNbZV07 ci51cGxvYWQodCksci5wcmVwYXJlKHRoaXMubWFwLnN0eWxlLmltYWdlTWFu YWdlcil9fSxyLnByb3RvdHlwZS5nZXRJZHM9ZnVuY3Rpb24oKXtyZXR1cm4g T2JqZWN0LmtleXModGhpcy5fdGlsZXMpLm1hcChOdW1iZXIpLnNvcnQoUHQp fSxyLnByb3RvdHlwZS5nZXRSZW5kZXJhYmxlSWRzPWZ1bmN0aW9uKGUpe3Zh ciByPXRoaXMsbj1bXTtmb3IodmFyIGEgaW4gdGhpcy5fdGlsZXMpdGhpcy5f aXNJZFJlbmRlcmFibGUoK2EsZSkmJm4ucHVzaCgrYSk7cmV0dXJuIGU/bi5z b3J0KGZ1bmN0aW9uKGUsbil7dmFyIGE9ci5fdGlsZXNbZV0udGlsZUlELGk9 ci5fdGlsZXNbbl0udGlsZUlELG89bmV3IHQuUG9pbnQoYS5jYW5vbmljYWwu eCxhLmNhbm9uaWNhbC55KS5fcm90YXRlKHIudHJhbnNmb3JtLmFuZ2xlKSxz PW5ldyB0LlBvaW50KGkuY2Fub25pY2FsLngsaS5jYW5vbmljYWwueSkuX3Jv dGF0ZShyLnRyYW5zZm9ybS5hbmdsZSk7cmV0dXJuIGEub3ZlcnNjYWxlZFot aS5vdmVyc2NhbGVkWnx8cy55LW8ueXx8cy54LW8ueH0pOm4uc29ydChQdCl9 LHIucHJvdG90eXBlLmhhc1JlbmRlcmFibGVQYXJlbnQ9ZnVuY3Rpb24odCl7 dmFyIGU9dGhpcy5maW5kTG9hZGVkUGFyZW50KHQsMCk7cmV0dXJuISFlJiZ0 aGlzLl9pc0lkUmVuZGVyYWJsZShlLnRpbGVJRC5rZXkpfSxyLnByb3RvdHlw ZS5faXNJZFJlbmRlcmFibGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5f dGlsZXNbdF0mJnRoaXMuX3RpbGVzW3RdLmhhc0RhdGEoKSYmIXRoaXMuX2Nv dmVyZWRUaWxlc1t0XSYmKGV8fCF0aGlzLl90aWxlc1t0XS5ob2xkaW5nRm9y RmFkZSgpKX0sci5wcm90b3R5cGUucmVsb2FkPWZ1bmN0aW9uKCl7aWYodGhp cy5fcGF1c2VkKXRoaXMuX3Nob3VsZFJlbG9hZE9uUmVzdW1lPSEwO2Vsc2Ug Zm9yKHZhciB0IGluIHRoaXMuX2NhY2hlLnJlc2V0KCksdGhpcy5fdGlsZXMp ImVycm9yZWQiIT09dGhpcy5fdGlsZXNbdF0uc3RhdGUmJnRoaXMuX3JlbG9h ZFRpbGUodCwicmVsb2FkaW5nIil9LHIucHJvdG90eXBlLl9yZWxvYWRUaWxl PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdGlsZXNbdF07ciYmKCJsb2Fk aW5nIiE9PXIuc3RhdGUmJihyLnN0YXRlPWUpLHRoaXMuX2xvYWRUaWxlKHIs dGhpcy5fdGlsZUxvYWRlZC5iaW5kKHRoaXMscix0LGUpKSl9LHIucHJvdG90 eXBlLl90aWxlTG9hZGVkPWZ1bmN0aW9uKGUscixuLGEpe2lmKGEpcmV0dXJu IGUuc3RhdGU9ImVycm9yZWQiLHZvaWQoNDA0IT09YS5zdGF0dXM/dGhpcy5f c291cmNlLmZpcmUobmV3IHQuRXJyb3JFdmVudChhLHt0aWxlOmV9KSk6dGhp cy51cGRhdGUodGhpcy50cmFuc2Zvcm0pKTtlLnRpbWVBZGRlZD10LmJyb3dz ZXIubm93KCksImV4cGlyZWQiPT09biYmKGUucmVmcmVzaGVkVXBvbkV4cGly YXRpb249ITApLHRoaXMuX3NldFRpbGVSZWxvYWRUaW1lcihyLGUpLCJyYXN0 ZXItZGVtIj09PXRoaXMuZ2V0U291cmNlKCkudHlwZSYmZS5kZW0mJnRoaXMu X2JhY2tmaWxsREVNKGUpLHRoaXMuX3N0YXRlLmluaXRpYWxpemVUaWxlU3Rh dGUoZSx0aGlzLm1hcD90aGlzLm1hcC5wYWludGVyOm51bGwpLHRoaXMuX3Nv dXJjZS5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0YVR5cGU6InNvdXJj ZSIsdGlsZTplLGNvb3JkOmUudGlsZUlEfSkpfSxyLnByb3RvdHlwZS5fYmFj a2ZpbGxERU09ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuZ2V0UmVuZGVy YWJsZUlkcygpLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtpZih0 Lm5laWdoYm9yaW5nVGlsZXMmJnQubmVpZ2hib3JpbmdUaWxlc1tuXSl7dmFy IGE9dGhpcy5nZXRUaWxlQnlJRChuKTtpKHQsYSksaShhLHQpfX1mdW5jdGlv biBpKHQsZSl7dC5uZWVkc0hpbGxzaGFkZVByZXBhcmU9ITA7dmFyIHI9ZS50 aWxlSUQuY2Fub25pY2FsLngtdC50aWxlSUQuY2Fub25pY2FsLngsbj1lLnRp bGVJRC5jYW5vbmljYWwueS10LnRpbGVJRC5jYW5vbmljYWwueSxhPU1hdGgu cG93KDIsdC50aWxlSUQuY2Fub25pY2FsLnopLGk9ZS50aWxlSUQua2V5OzA9 PT1yJiYwPT09bnx8TWF0aC5hYnMobik+MXx8KE1hdGguYWJzKHIpPjEmJigx PT09TWF0aC5hYnMocithKT9yKz1hOjE9PT1NYXRoLmFicyhyLWEpJiYoci09 YSkpLGUuZGVtJiZ0LmRlbSYmKHQuZGVtLmJhY2tmaWxsQm9yZGVyKGUuZGVt LHIsbiksdC5uZWlnaGJvcmluZ1RpbGVzJiZ0Lm5laWdoYm9yaW5nVGlsZXNb aV0mJih0Lm5laWdoYm9yaW5nVGlsZXNbaV0uYmFja2ZpbGxlZD0hMCkpKX19 LHIucHJvdG90eXBlLmdldFRpbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu Z2V0VGlsZUJ5SUQodC5rZXkpfSxyLnByb3RvdHlwZS5nZXRUaWxlQnlJRD1m dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdGlsZXNbdF19LHIucHJvdG90eXBl LmdldFpvb209ZnVuY3Rpb24odCl7cmV0dXJuIHQuem9vbSt0LnNjYWxlWm9v bSh0LnRpbGVTaXplL3RoaXMuX3NvdXJjZS50aWxlU2l6ZSl9LHIucHJvdG90 eXBlLl9yZXRhaW5Mb2FkZWRDaGlsZHJlbj1mdW5jdGlvbih0LGUscixuKXtm b3IodmFyIGEgaW4gdGhpcy5fdGlsZXMpe3ZhciBpPXRoaXMuX3RpbGVzW2Fd O2lmKCEoblthXXx8IWkuaGFzRGF0YSgpfHxpLnRpbGVJRC5vdmVyc2NhbGVk Wjw9ZXx8aS50aWxlSUQub3ZlcnNjYWxlZFo+cikpe2Zvcih2YXIgbz1pLnRp bGVJRDtpJiZpLnRpbGVJRC5vdmVyc2NhbGVkWj5lKzE7KXt2YXIgcz1pLnRp bGVJRC5zY2FsZWRUbyhpLnRpbGVJRC5vdmVyc2NhbGVkWi0xKTsoaT10aGlz Ll90aWxlc1tzLmtleV0pJiZpLmhhc0RhdGEoKSYmKG89cyl9Zm9yKHZhciBs PW87bC5vdmVyc2NhbGVkWj5lOylpZih0WyhsPWwuc2NhbGVkVG8obC5vdmVy c2NhbGVkWi0xKSkua2V5XSl7bltvLmtleV09bzticmVha319fX0sci5wcm90 b3R5cGUuZmluZExvYWRlZFBhcmVudD1mdW5jdGlvbih0LGUpe2Zvcih2YXIg cj10Lm92ZXJzY2FsZWRaLTE7cj49ZTtyLS0pe3ZhciBuPXQuc2NhbGVkVG8o cik7aWYoIW4pcmV0dXJuO3ZhciBhPVN0cmluZyhuLmtleSksaT10aGlzLl90 aWxlc1thXTtpZihpJiZpLmhhc0RhdGEoKSlyZXR1cm4gaTtpZih0aGlzLl9j YWNoZS5oYXMobikpcmV0dXJuIHRoaXMuX2NhY2hlLmdldChuKX19LHIucHJv dG90eXBlLnVwZGF0ZUNhY2hlU2l6ZT1mdW5jdGlvbih0KXt2YXIgZT0oTWF0 aC5jZWlsKHQud2lkdGgvdGhpcy5fc291cmNlLnRpbGVTaXplKSsxKSooTWF0 aC5jZWlsKHQuaGVpZ2h0L3RoaXMuX3NvdXJjZS50aWxlU2l6ZSkrMSkscj1N YXRoLmZsb29yKDUqZSksbj0ibnVtYmVyIj09dHlwZW9mIHRoaXMuX21heFRp bGVDYWNoZVNpemU/TWF0aC5taW4odGhpcy5fbWF4VGlsZUNhY2hlU2l6ZSxy KTpyO3RoaXMuX2NhY2hlLnNldE1heFNpemUobil9LHIucHJvdG90eXBlLmhh bmRsZVdyYXBKdW1wPWZ1bmN0aW9uKHQpe3ZhciBlPSh0LSh2b2lkIDA9PT10 aGlzLl9wcmV2TG5nP3Q6dGhpcy5fcHJldkxuZykpLzM2MCxyPU1hdGgucm91 bmQoZSk7aWYodGhpcy5fcHJldkxuZz10LHIpe3ZhciBuPXt9O2Zvcih2YXIg YSBpbiB0aGlzLl90aWxlcyl7dmFyIGk9dGhpcy5fdGlsZXNbYV07aS50aWxl SUQ9aS50aWxlSUQudW53cmFwVG8oaS50aWxlSUQud3JhcCtyKSxuW2kudGls ZUlELmtleV09aX1mb3IodmFyIG8gaW4gdGhpcy5fdGlsZXM9bix0aGlzLl90 aW1lcnMpY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyc1tvXSksZGVsZXRlIHRo aXMuX3RpbWVyc1tvXTtmb3IodmFyIHMgaW4gdGhpcy5fdGlsZXMpe3ZhciBs PXRoaXMuX3RpbGVzW3NdO3RoaXMuX3NldFRpbGVSZWxvYWRUaW1lcihzLGwp fX19LHIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXt2YXIgbj10aGlz O2lmKHRoaXMudHJhbnNmb3JtPWUsdGhpcy5fc291cmNlTG9hZGVkJiYhdGhp cy5fcGF1c2VkKXt2YXIgYTt0aGlzLnVwZGF0ZUNhY2hlU2l6ZShlKSx0aGlz LmhhbmRsZVdyYXBKdW1wKHRoaXMudHJhbnNmb3JtLmNlbnRlci5sbmcpLHRo aXMuX2NvdmVyZWRUaWxlcz17fSx0aGlzLnVzZWQ/dGhpcy5fc291cmNlLnRp bGVJRD9hPWUuZ2V0VmlzaWJsZVVud3JhcHBlZENvb3JkaW5hdGVzKHRoaXMu X3NvdXJjZS50aWxlSUQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQu T3ZlcnNjYWxlZFRpbGVJRChlLmNhbm9uaWNhbC56LGUud3JhcCxlLmNhbm9u aWNhbC56LGUuY2Fub25pY2FsLngsZS5jYW5vbmljYWwueSl9KTooYT1lLmNv dmVyaW5nVGlsZXMoe3RpbGVTaXplOnRoaXMuX3NvdXJjZS50aWxlU2l6ZSxt aW56b29tOnRoaXMuX3NvdXJjZS5taW56b29tLG1heHpvb206dGhpcy5fc291 cmNlLm1heHpvb20scm91bmRab29tOnRoaXMuX3NvdXJjZS5yb3VuZFpvb20s cmVwYXJzZU92ZXJzY2FsZWQ6dGhpcy5fc291cmNlLnJlcGFyc2VPdmVyc2Nh bGVkfSksdGhpcy5fc291cmNlLmhhc1RpbGUmJihhPWEuZmlsdGVyKGZ1bmN0 aW9uKHQpe3JldHVybiBuLl9zb3VyY2UuaGFzVGlsZSh0KX0pKSk6YT1bXTt2 YXIgaT0odGhpcy5fc291cmNlLnJvdW5kWm9vbT9NYXRoLnJvdW5kOk1hdGgu Zmxvb3IpKHRoaXMuZ2V0Wm9vbShlKSksbz1NYXRoLm1heChpLXIubWF4T3Zl cnpvb21pbmcsdGhpcy5fc291cmNlLm1pbnpvb20pLHM9TWF0aC5tYXgoaSty Lm1heFVuZGVyem9vbWluZyx0aGlzLl9zb3VyY2UubWluem9vbSksbD10aGlz Ll91cGRhdGVSZXRhaW5lZFRpbGVzKGEsaSk7aWYoT3QodGhpcy5fc291cmNl LnR5cGUpKXtmb3IodmFyIGM9e30sdT17fSxoPTAsZj1PYmplY3Qua2V5cyhs KTtoPGYubGVuZ3RoO2grPTEpe3ZhciBwPWZbaF0sZD1sW3BdLGc9dGhpcy5f dGlsZXNbcF07aWYoZyYmIShnLmZhZGVFbmRUaW1lJiZnLmZhZGVFbmRUaW1l PD10LmJyb3dzZXIubm93KCkpKXt2YXIgdj10aGlzLmZpbmRMb2FkZWRQYXJl bnQoZCxvKTt2JiYodGhpcy5fYWRkVGlsZSh2LnRpbGVJRCksY1t2LnRpbGVJ RC5rZXldPXYudGlsZUlEKSx1W3BdPWR9fWZvcih2YXIgbSBpbiB0aGlzLl9y ZXRhaW5Mb2FkZWRDaGlsZHJlbih1LGkscyxsKSxjKWxbbV18fCh0aGlzLl9j b3ZlcmVkVGlsZXNbbV09ITAsbFttXT1jW21dKX1mb3IodmFyIHkgaW4gbCl0 aGlzLl90aWxlc1t5XS5jbGVhckZhZGVIb2xkKCk7Zm9yKHZhciB4PTAsYj10 LmtleXNEaWZmZXJlbmNlKHRoaXMuX3RpbGVzLGwpO3g8Yi5sZW5ndGg7eCs9 MSl7dmFyIF89Ylt4XSx3PXRoaXMuX3RpbGVzW19dO3cuaGFzU3ltYm9sQnVj a2V0cyYmIXcuaG9sZGluZ0ZvckZhZGUoKT93LnNldEhvbGREdXJhdGlvbih0 aGlzLm1hcC5fZmFkZUR1cmF0aW9uKTp3Lmhhc1N5bWJvbEJ1Y2tldHMmJiF3 LnN5bWJvbEZhZGVGaW5pc2hlZCgpfHx0aGlzLl9yZW1vdmVUaWxlKF8pfX19 LHIucHJvdG90eXBlLnJlbGVhc2VTeW1ib2xGYWRlVGlsZXM9ZnVuY3Rpb24o KXtmb3IodmFyIHQgaW4gdGhpcy5fdGlsZXMpdGhpcy5fdGlsZXNbdF0uaG9s ZGluZ0ZvckZhZGUoKSYmdGhpcy5fcmVtb3ZlVGlsZSh0KX0sci5wcm90b3R5 cGUuX3VwZGF0ZVJldGFpbmVkVGlsZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFy IG49e30sYT17fSxpPU1hdGgubWF4KGUtci5tYXhPdmVyem9vbWluZyx0aGlz Ll9zb3VyY2UubWluem9vbSksbz1NYXRoLm1heChlK3IubWF4VW5kZXJ6b29t aW5nLHRoaXMuX3NvdXJjZS5taW56b29tKSxzPXt9LGw9MCxjPXQ7bDxjLmxl bmd0aDtsKz0xKXt2YXIgdT1jW2xdLGg9dGhpcy5fYWRkVGlsZSh1KTtuW3Uu a2V5XT11LGguaGFzRGF0YSgpfHxlPHRoaXMuX3NvdXJjZS5tYXh6b29tJiYo c1t1LmtleV09dSl9dGhpcy5fcmV0YWluTG9hZGVkQ2hpbGRyZW4ocyxlLG8s bik7Zm9yKHZhciBmPTAscD10O2Y8cC5sZW5ndGg7Zis9MSl7dmFyIGQ9cFtm XSxnPXRoaXMuX3RpbGVzW2Qua2V5XTtpZighZy5oYXNEYXRhKCkpe2lmKGUr MT50aGlzLl9zb3VyY2UubWF4em9vbSl7dmFyIHY9ZC5jaGlsZHJlbih0aGlz Ll9zb3VyY2UubWF4em9vbSlbMF0sbT10aGlzLmdldFRpbGUodik7aWYobSYm bS5oYXNEYXRhKCkpe25bdi5rZXldPXY7Y29udGludWV9fWVsc2V7dmFyIHk9 ZC5jaGlsZHJlbih0aGlzLl9zb3VyY2UubWF4em9vbSk7aWYoblt5WzBdLmtl eV0mJm5beVsxXS5rZXldJiZuW3lbMl0ua2V5XSYmblt5WzNdLmtleV0pY29u dGludWV9Zm9yKHZhciB4PWcud2FzUmVxdWVzdGVkKCksYj1kLm92ZXJzY2Fs ZWRaLTE7Yj49aTstLWIpe3ZhciBfPWQuc2NhbGVkVG8oYik7aWYoYVtfLmtl eV0pYnJlYWs7aWYoYVtfLmtleV09ITAsIShnPXRoaXMuZ2V0VGlsZShfKSkm JngmJihnPXRoaXMuX2FkZFRpbGUoXykpLGcmJihuW18ua2V5XT1fLHg9Zy53 YXNSZXF1ZXN0ZWQoKSxnLmhhc0RhdGEoKSkpYnJlYWt9fX1yZXR1cm4gbn0s ci5wcm90b3R5cGUuX2FkZFRpbGU9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5f dGlsZXNbZS5rZXldO2lmKHIpcmV0dXJuIHI7KHI9dGhpcy5fY2FjaGUuZ2V0 QW5kUmVtb3ZlKGUpKSYmKHRoaXMuX3NldFRpbGVSZWxvYWRUaW1lcihlLmtl eSxyKSxyLnRpbGVJRD1lLHRoaXMuX3N0YXRlLmluaXRpYWxpemVUaWxlU3Rh dGUocix0aGlzLm1hcD90aGlzLm1hcC5wYWludGVyOm51bGwpLHRoaXMuX2Nh Y2hlVGltZXJzW2Uua2V5XSYmKGNsZWFyVGltZW91dCh0aGlzLl9jYWNoZVRp bWVyc1tlLmtleV0pLGRlbGV0ZSB0aGlzLl9jYWNoZVRpbWVyc1tlLmtleV0s dGhpcy5fc2V0VGlsZVJlbG9hZFRpbWVyKGUua2V5LHIpKSk7dmFyIG49Qm9v bGVhbihyKTtyZXR1cm4gbnx8KHI9bmV3IHQuVGlsZShlLHRoaXMuX3NvdXJj ZS50aWxlU2l6ZSplLm92ZXJzY2FsZUZhY3RvcigpKSx0aGlzLl9sb2FkVGls ZShyLHRoaXMuX3RpbGVMb2FkZWQuYmluZCh0aGlzLHIsZS5rZXksci5zdGF0 ZSkpKSxyPyhyLnVzZXMrKyx0aGlzLl90aWxlc1tlLmtleV09cixufHx0aGlz Ll9zb3VyY2UuZmlyZShuZXcgdC5FdmVudCgiZGF0YWxvYWRpbmciLHt0aWxl OnIsY29vcmQ6ci50aWxlSUQsZGF0YVR5cGU6InNvdXJjZSJ9KSkscik6bnVs bH0sci5wcm90b3R5cGUuX3NldFRpbGVSZWxvYWRUaW1lcj1mdW5jdGlvbih0 LGUpe3ZhciByPXRoaXM7dCBpbiB0aGlzLl90aW1lcnMmJihjbGVhclRpbWVv dXQodGhpcy5fdGltZXJzW3RdKSxkZWxldGUgdGhpcy5fdGltZXJzW3RdKTt2 YXIgbj1lLmdldEV4cGlyeVRpbWVvdXQoKTtuJiYodGhpcy5fdGltZXJzW3Rd PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtyLl9yZWxvYWRUaWxlKHQsImV4cGly ZWQiKSxkZWxldGUgci5fdGltZXJzW3RdfSxuKSl9LHIucHJvdG90eXBlLl9y ZW1vdmVUaWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbGVzW3RdO2Um JihlLnVzZXMtLSxkZWxldGUgdGhpcy5fdGlsZXNbdF0sdGhpcy5fdGltZXJz W3RdJiYoY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyc1t0XSksZGVsZXRlIHRo aXMuX3RpbWVyc1t0XSksZS51c2VzPjB8fChlLmhhc0RhdGEoKSYmInJlbG9h ZGluZyIhPT1lLnN0YXRlP3RoaXMuX2NhY2hlLmFkZChlLnRpbGVJRCxlLGUu Z2V0RXhwaXJ5VGltZW91dCgpKTooZS5hYm9ydGVkPSEwLHRoaXMuX2Fib3J0 VGlsZShlKSx0aGlzLl91bmxvYWRUaWxlKGUpKSkpfSxyLnByb3RvdHlwZS5j bGVhclRpbGVzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX3Nob3Vs ZFJlbG9hZE9uUmVzdW1lPSExLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl90aWxl cyl0aGlzLl9yZW1vdmVUaWxlKHQpO3RoaXMuX2NhY2hlLnJlc2V0KCl9LHIu cHJvdG90eXBlLnRpbGVzSW49ZnVuY3Rpb24oZSxyLG4pe3ZhciBhPXRoaXMs aT1bXSxvPXRoaXMudHJhbnNmb3JtO2lmKCFvKXJldHVybiBpO2Zvcih2YXIg cz1uP28uZ2V0Q2FtZXJhUXVlcnlHZW9tZXRyeShlKTplLGw9ZS5tYXAoZnVu Y3Rpb24odCl7cmV0dXJuIG8ucG9pbnRDb29yZGluYXRlKHQpfSksYz1zLm1h cChmdW5jdGlvbih0KXtyZXR1cm4gby5wb2ludENvb3JkaW5hdGUodCl9KSx1 PXRoaXMuZ2V0SWRzKCksaD0xLzAsZj0xLzAscD0tMS8wLGQ9LTEvMCxnPTAs dj1jO2c8di5sZW5ndGg7Zys9MSl7dmFyIG09dltnXTtoPU1hdGgubWluKGgs bS54KSxmPU1hdGgubWluKGYsbS55KSxwPU1hdGgubWF4KHAsbS54KSxkPU1h dGgubWF4KGQsbS55KX1mb3IodmFyIHk9ZnVuY3Rpb24oZSl7dmFyIG49YS5f dGlsZXNbdVtlXV07aWYoIW4uaG9sZGluZ0ZvckZhZGUoKSl7dmFyIHM9bi50 aWxlSUQsZz1NYXRoLnBvdygyLG8uem9vbS1uLnRpbGVJRC5vdmVyc2NhbGVk Wiksdj1yKm4ucXVlcnlQYWRkaW5nKnQuRVhURU5UL24udGlsZVNpemUvZyxt PVtzLmdldFRpbGVQb2ludChuZXcgdC5NZXJjYXRvckNvb3JkaW5hdGUoaCxm KSkscy5nZXRUaWxlUG9pbnQobmV3IHQuTWVyY2F0b3JDb29yZGluYXRlKHAs ZCkpXTtpZihtWzBdLngtdjx0LkVYVEVOVCYmbVswXS55LXY8dC5FWFRFTlQm Jm1bMV0ueCt2Pj0wJiZtWzFdLnkrdj49MCl7dmFyIHk9bC5tYXAoZnVuY3Rp b24odCl7cmV0dXJuIHMuZ2V0VGlsZVBvaW50KHQpfSkseD1jLm1hcChmdW5j dGlvbih0KXtyZXR1cm4gcy5nZXRUaWxlUG9pbnQodCl9KTtpLnB1c2goe3Rp bGU6bix0aWxlSUQ6cyxxdWVyeUdlb21ldHJ5OnksY2FtZXJhUXVlcnlHZW9t ZXRyeTp4LHNjYWxlOmd9KX19fSx4PTA7eDx1Lmxlbmd0aDt4KyspeSh4KTty ZXR1cm4gaX0sci5wcm90b3R5cGUuZ2V0VmlzaWJsZUNvb3JkaW5hdGVzPWZ1 bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLHI9dGhpcy5nZXRSZW5kZXJhYmxl SWRzKHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZS5fdGlsZXNbdF0udGls ZUlEfSksbj0wLGE9cjtuPGEubGVuZ3RoO24rPTEpe3ZhciBpPWFbbl07aS5w b3NNYXRyaXg9dGhpcy50cmFuc2Zvcm0uY2FsY3VsYXRlUG9zTWF0cml4KGku dG9VbndyYXBwZWQoKSl9cmV0dXJuIHJ9LHIucHJvdG90eXBlLmhhc1RyYW5z aXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLl9zb3VyY2UuaGFzVHJhbnNpdGlv bigpKXJldHVybiEwO2lmKE90KHRoaXMuX3NvdXJjZS50eXBlKSlmb3IodmFy IGUgaW4gdGhpcy5fdGlsZXMpe3ZhciByPXRoaXMuX3RpbGVzW2VdO2lmKHZv aWQgMCE9PXIuZmFkZUVuZFRpbWUmJnIuZmFkZUVuZFRpbWU+PXQuYnJvd3Nl ci5ub3coKSlyZXR1cm4hMH1yZXR1cm4hMX0sci5wcm90b3R5cGUuc2V0RmVh dHVyZVN0YXRlPWZ1bmN0aW9uKHQsZSxyKXt0PXR8fCJfZ2VvanNvblRpbGVM YXllciIsdGhpcy5fc3RhdGUudXBkYXRlU3RhdGUodCxlLHIpfSxyLnByb3Rv dHlwZS5yZW1vdmVGZWF0dXJlU3RhdGU9ZnVuY3Rpb24odCxlLHIpe3Q9dHx8 Il9nZW9qc29uVGlsZUxheWVyIix0aGlzLl9zdGF0ZS5yZW1vdmVGZWF0dXJl U3RhdGUodCxlLHIpfSxyLnByb3RvdHlwZS5nZXRGZWF0dXJlU3RhdGU9ZnVu Y3Rpb24odCxlKXtyZXR1cm4gdD10fHwiX2dlb2pzb25UaWxlTGF5ZXIiLHRo aXMuX3N0YXRlLmdldFN0YXRlKHQsZSl9LHJ9KHQuRXZlbnRlZCk7ZnVuY3Rp b24gUHQodCxlKXtyZXR1cm4gdCUzMi1lJTMyfHxlLXR9ZnVuY3Rpb24gT3Qo dCl7cmV0dXJuInJhc3RlciI9PT10fHwiaW1hZ2UiPT09dHx8InZpZGVvIj09 PXR9ZnVuY3Rpb24genQoKXtyZXR1cm4gbmV3IHQud2luZG93Lldvcmtlcigk bi53b3JrZXJVcmwpfUN0Lm1heE92ZXJ6b29taW5nPTEwLEN0Lm1heFVuZGVy em9vbWluZz0zO3ZhciBJdD1mdW5jdGlvbigpe3RoaXMuYWN0aXZlPXt9fTtJ dC5wcm90b3R5cGUuYWNxdWlyZT1mdW5jdGlvbih0KXtpZighdGhpcy53b3Jr ZXJzKWZvcih0aGlzLndvcmtlcnM9W107dGhpcy53b3JrZXJzLmxlbmd0aDxJ dC53b3JrZXJDb3VudDspdGhpcy53b3JrZXJzLnB1c2gobmV3IHp0KTtyZXR1 cm4gdGhpcy5hY3RpdmVbdF09ITAsdGhpcy53b3JrZXJzLnNsaWNlKCl9LEl0 LnByb3RvdHlwZS5yZWxlYXNlPWZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLmFj dGl2ZVt0XSwwPT09T2JqZWN0LmtleXModGhpcy5hY3RpdmUpLmxlbmd0aCYm KHRoaXMud29ya2Vycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QudGVybWluYXRl KCl9KSx0aGlzLndvcmtlcnM9bnVsbCl9O3ZhciBEdCxSdD1NYXRoLmZsb29y KHQuYnJvd3Nlci5oYXJkd2FyZUNvbmN1cnJlbmN5LzIpO2Z1bmN0aW9uIEZ0 KGUscil7dmFyIG49e307Zm9yKHZhciBhIGluIGUpInJlZiIhPT1hJiYoblth XT1lW2FdKTtyZXR1cm4gdC5yZWZQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rp b24odCl7dCBpbiByJiYoblt0XT1yW3RdKX0pLG59ZnVuY3Rpb24gQnQodCl7 dD10LnNsaWNlKCk7Zm9yKHZhciBlPU9iamVjdC5jcmVhdGUobnVsbCkscj0w O3I8dC5sZW5ndGg7cisrKWVbdFtyXS5pZF09dFtyXTtmb3IodmFyIG49MDtu PHQubGVuZ3RoO24rKykicmVmImluIHRbbl0mJih0W25dPUZ0KHRbbl0sZVt0 W25dLnJlZl0pKTtyZXR1cm4gdH1JdC53b3JrZXJDb3VudD1NYXRoLm1heChN YXRoLm1pbihSdCw2KSwxKTt2YXIgTnQ9e3NldFN0eWxlOiJzZXRTdHlsZSIs YWRkTGF5ZXI6ImFkZExheWVyIixyZW1vdmVMYXllcjoicmVtb3ZlTGF5ZXIi LHNldFBhaW50UHJvcGVydHk6InNldFBhaW50UHJvcGVydHkiLHNldExheW91 dFByb3BlcnR5OiJzZXRMYXlvdXRQcm9wZXJ0eSIsc2V0RmlsdGVyOiJzZXRG aWx0ZXIiLGFkZFNvdXJjZToiYWRkU291cmNlIixyZW1vdmVTb3VyY2U6InJl bW92ZVNvdXJjZSIsc2V0R2VvSlNPTlNvdXJjZURhdGE6InNldEdlb0pTT05T b3VyY2VEYXRhIixzZXRMYXllclpvb21SYW5nZToic2V0TGF5ZXJab29tUmFu Z2UiLHNldExheWVyUHJvcGVydHk6InNldExheWVyUHJvcGVydHkiLHNldENl bnRlcjoic2V0Q2VudGVyIixzZXRab29tOiJzZXRab29tIixzZXRCZWFyaW5n OiJzZXRCZWFyaW5nIixzZXRQaXRjaDoic2V0UGl0Y2giLHNldFNwcml0ZToi c2V0U3ByaXRlIixzZXRHbHlwaHM6InNldEdseXBocyIsc2V0VHJhbnNpdGlv bjoic2V0VHJhbnNpdGlvbiIsc2V0TGlnaHQ6InNldExpZ2h0In07ZnVuY3Rp b24ganQodCxlLHIpe3IucHVzaCh7Y29tbWFuZDpOdC5hZGRTb3VyY2UsYXJn czpbdCxlW3RdXX0pfWZ1bmN0aW9uIFZ0KHQsZSxyKXtlLnB1c2goe2NvbW1h bmQ6TnQucmVtb3ZlU291cmNlLGFyZ3M6W3RdfSksclt0XT0hMH1mdW5jdGlv biBVdCh0LGUscixuKXtWdCh0LHIsbiksanQodCxlLHIpfWZ1bmN0aW9uIHF0 KGUscixuKXt2YXIgYTtmb3IoYSBpbiBlW25dKWlmKGVbbl0uaGFzT3duUHJv cGVydHkoYSkmJiJkYXRhIiE9PWEmJiF0LmRlZXBFcXVhbChlW25dW2FdLHJb bl1bYV0pKXJldHVybiExO2ZvcihhIGluIHJbbl0paWYocltuXS5oYXNPd25Q cm9wZXJ0eShhKSYmImRhdGEiIT09YSYmIXQuZGVlcEVxdWFsKGVbbl1bYV0s cltuXVthXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gSHQoZSxyLG4s YSxpLG8pe3ZhciBzO2ZvcihzIGluIHI9cnx8e30sZT1lfHx7fSllLmhhc093 blByb3BlcnR5KHMpJiYodC5kZWVwRXF1YWwoZVtzXSxyW3NdKXx8bi5wdXNo KHtjb21tYW5kOm8sYXJnczpbYSxzLHJbc10saV19KSk7Zm9yKHMgaW4gcily Lmhhc093blByb3BlcnR5KHMpJiYhZS5oYXNPd25Qcm9wZXJ0eShzKSYmKHQu ZGVlcEVxdWFsKGVbc10scltzXSl8fG4ucHVzaCh7Y29tbWFuZDpvLGFyZ3M6 W2EscyxyW3NdLGldfSkpfWZ1bmN0aW9uIEd0KHQpe3JldHVybiB0LmlkfWZ1 bmN0aW9uIFl0KHQsZSl7cmV0dXJuIHRbZS5pZF09ZSx0fXZhciBXdD1mdW5j dGlvbih0LGUscil7dmFyIG49dGhpcy5ib3hDZWxscz1bXSxhPXRoaXMuY2ly Y2xlQ2VsbHM9W107dGhpcy54Q2VsbENvdW50PU1hdGguY2VpbCh0L3IpLHRo aXMueUNlbGxDb3VudD1NYXRoLmNlaWwoZS9yKTtmb3IodmFyIGk9MDtpPHRo aXMueENlbGxDb3VudCp0aGlzLnlDZWxsQ291bnQ7aSsrKW4ucHVzaChbXSks YS5wdXNoKFtdKTt0aGlzLmNpcmNsZUtleXM9W10sdGhpcy5ib3hLZXlzPVtd LHRoaXMuYmJveGVzPVtdLHRoaXMuY2lyY2xlcz1bXSx0aGlzLndpZHRoPXQs dGhpcy5oZWlnaHQ9ZSx0aGlzLnhTY2FsZT10aGlzLnhDZWxsQ291bnQvdCx0 aGlzLnlTY2FsZT10aGlzLnlDZWxsQ291bnQvZSx0aGlzLmJveFVpZD0wLHRo aXMuY2lyY2xlVWlkPTB9O2Z1bmN0aW9uIFh0KGUscixuLGEsaSl7dmFyIG89 dC5jcmVhdGUoKTtyZXR1cm4gcj8odC5zY2FsZShvLG8sWzEvaSwxL2ksMV0p LG58fHQucm90YXRlWihvLG8sYS5hbmdsZSkpOnQubXVsdGlwbHkobyxhLmxh YmVsUGxhbmVNYXRyaXgsZSksb31mdW5jdGlvbiBadChlLHIsbixhLGkpe2lm KHIpe3ZhciBvPXQuY2xvbmUoZSk7cmV0dXJuIHQuc2NhbGUobyxvLFtpLGks MV0pLG58fHQucm90YXRlWihvLG8sLWEuYW5nbGUpLG99cmV0dXJuIGEuZ2xD b29yZE1hdHJpeH1mdW5jdGlvbiBKdChlLHIpe3ZhciBuPVtlLngsZS55LDAs MV07b2UobixuLHIpO3ZhciBhPW5bM107cmV0dXJue3BvaW50Om5ldyB0LlBv aW50KG5bMF0vYSxuWzFdL2EpLHNpZ25lZERpc3RhbmNlRnJvbUNhbWVyYTph fX1mdW5jdGlvbiBLdCh0LGUpe3ZhciByPXRbMF0vdFszXSxuPXRbMV0vdFsz XTtyZXR1cm4gcj49LWVbMF0mJnI8PWVbMF0mJm4+PS1lWzFdJiZuPD1lWzFd fWZ1bmN0aW9uIFF0KGUscixuLGEsaSxvLHMsbCl7dmFyIGM9YT9lLnRleHRT aXplRGF0YTplLmljb25TaXplRGF0YSx1PXQuZXZhbHVhdGVTaXplRm9yWm9v bShjLG4udHJhbnNmb3JtLnpvb20pLGg9WzI1Ni9uLndpZHRoKjIrMSwyNTYv bi5oZWlnaHQqMisxXSxmPWE/ZS50ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhB cnJheTplLmljb24uZHluYW1pY0xheW91dFZlcnRleEFycmF5O2YuY2xlYXIo KTtmb3IodmFyIHA9ZS5saW5lVmVydGV4QXJyYXksZD1hP2UudGV4dC5wbGFj ZWRTeW1ib2xBcnJheTplLmljb24ucGxhY2VkU3ltYm9sQXJyYXksZz1uLnRy YW5zZm9ybS53aWR0aC9uLnRyYW5zZm9ybS5oZWlnaHQsdj0hMSxtPTA7bTxk Lmxlbmd0aDttKyspe3ZhciB5PWQuZ2V0KG0pO2lmKHkuaGlkZGVufHx5Lndy aXRpbmdNb2RlPT09dC5Xcml0aW5nTW9kZS52ZXJ0aWNhbCYmIXYpaWUoeS5u dW1HbHlwaHMsZik7ZWxzZXt2PSExO3ZhciB4PVt5LmFuY2hvclgseS5hbmNo b3JZLDAsMV07aWYodC50cmFuc2Zvcm1NYXQ0KHgseCxyKSxLdCh4LGgpKXt2 YXIgYj0uNSt4WzNdL24udHJhbnNmb3JtLmNhbWVyYVRvQ2VudGVyRGlzdGFu Y2UqLjUsXz10LmV2YWx1YXRlU2l6ZUZvckZlYXR1cmUoYyx1LHkpLHc9cz9f KmI6Xy9iLGs9bmV3IHQuUG9pbnQoeS5hbmNob3JYLHkuYW5jaG9yWSksVD1K dChrLGkpLnBvaW50LE09e30sQT1lZSh5LHcsITEsbCxyLGksbyxlLmdseXBo T2Zmc2V0QXJyYXkscCxmLFQsayxNLGcpO3Y9QS51c2VWZXJ0aWNhbCwoQS5u b3RFbm91Z2hSb29tfHx2fHxBLm5lZWRzRmxpcHBpbmcmJmVlKHksdywhMCxs LHIsaSxvLGUuZ2x5cGhPZmZzZXRBcnJheSxwLGYsVCxrLE0sZykubm90RW5v dWdoUm9vbSkmJmllKHkubnVtR2x5cGhzLGYpfWVsc2UgaWUoeS5udW1HbHlw aHMsZil9fWE/ZS50ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBk YXRlRGF0YShmKTplLmljb24uZHluYW1pY0xheW91dFZlcnRleEJ1ZmZlci51 cGRhdGVEYXRhKGYpfWZ1bmN0aW9uICR0KHQsZSxyLG4sYSxpLG8scyxsLGMs dSxoKXt2YXIgZj1zLmdseXBoU3RhcnRJbmRleCtzLm51bUdseXBocyxwPXMu bGluZVN0YXJ0SW5kZXgsZD1zLmxpbmVTdGFydEluZGV4K3MubGluZUxlbmd0 aCxnPWUuZ2V0b2Zmc2V0WChzLmdseXBoU3RhcnRJbmRleCksdj1lLmdldG9m ZnNldFgoZi0xKSxtPW5lKHQqZyxyLG4sYSxpLG8scy5zZWdtZW50LHAsZCxs LGMsdSxoKTtpZighbSlyZXR1cm4gbnVsbDt2YXIgeT1uZSh0KnYscixuLGEs aSxvLHMuc2VnbWVudCxwLGQsbCxjLHUsaCk7cmV0dXJuIHk/e2ZpcnN0Om0s bGFzdDp5fTpudWxsfWZ1bmN0aW9uIHRlKGUscixuLGEpe3JldHVybiBlPT09 dC5Xcml0aW5nTW9kZS5ob3Jpem9udGFsJiZNYXRoLmFicyhuLnktci55KT5N YXRoLmFicyhuLngtci54KSphP3t1c2VWZXJ0aWNhbDohMH06KGU9PT10Lldy aXRpbmdNb2RlLnZlcnRpY2FsP3IueTxuLnk6ci54Pm4ueCk/e25lZWRzRmxp cHBpbmc6ITB9Om51bGx9ZnVuY3Rpb24gZWUoZSxyLG4sYSxpLG8scyxsLGMs dSxoLGYscCxkKXt2YXIgZyx2PXIvMjQsbT1lLmxpbmVPZmZzZXRYKnYseT1l LmxpbmVPZmZzZXRZKnY7aWYoZS5udW1HbHlwaHM+MSl7dmFyIHg9ZS5nbHlw aFN0YXJ0SW5kZXgrZS5udW1HbHlwaHMsYj1lLmxpbmVTdGFydEluZGV4LF89 ZS5saW5lU3RhcnRJbmRleCtlLmxpbmVMZW5ndGgsdz0kdCh2LGwsbSx5LG4s aCxmLGUsYyxvLHAsITEpO2lmKCF3KXJldHVybntub3RFbm91Z2hSb29tOiEw fTt2YXIgaz1KdCh3LmZpcnN0LnBvaW50LHMpLnBvaW50LFQ9SnQody5sYXN0 LnBvaW50LHMpLnBvaW50O2lmKGEmJiFuKXt2YXIgTT10ZShlLndyaXRpbmdN b2RlLGssVCxkKTtpZihNKXJldHVybiBNfWc9W3cuZmlyc3RdO2Zvcih2YXIg QT1lLmdseXBoU3RhcnRJbmRleCsxO0E8eC0xO0ErKylnLnB1c2gobmUodips LmdldG9mZnNldFgoQSksbSx5LG4saCxmLGUuc2VnbWVudCxiLF8sYyxvLHAs ITEpKTtnLnB1c2gody5sYXN0KX1lbHNle2lmKGEmJiFuKXt2YXIgUz1KdChm LGkpLnBvaW50LEU9ZS5saW5lU3RhcnRJbmRleCtlLnNlZ21lbnQrMSxMPW5l dyB0LlBvaW50KGMuZ2V0eChFKSxjLmdldHkoRSkpLEM9SnQoTCxpKSxQPUMu c2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhPjA/Qy5wb2ludDpyZShmLEwsUywx LGkpLE89dGUoZS53cml0aW5nTW9kZSxTLFAsZCk7aWYoTylyZXR1cm4gT312 YXIgej1uZSh2KmwuZ2V0b2Zmc2V0WChlLmdseXBoU3RhcnRJbmRleCksbSx5 LG4saCxmLGUuc2VnbWVudCxlLmxpbmVTdGFydEluZGV4LGUubGluZVN0YXJ0 SW5kZXgrZS5saW5lTGVuZ3RoLGMsbyxwLCExKTtpZigheilyZXR1cm57bm90 RW5vdWdoUm9vbTohMH07Zz1bel19Zm9yKHZhciBJPTAsRD1nO0k8RC5sZW5n dGg7SSs9MSl7dmFyIFI9RFtJXTt0LmFkZER5bmFtaWNBdHRyaWJ1dGVzKHUs Ui5wb2ludCxSLmFuZ2xlKX1yZXR1cm57fX1mdW5jdGlvbiByZSh0LGUscixu LGEpe3ZhciBpPUp0KHQuYWRkKHQuc3ViKGUpLl91bml0KCkpLGEpLnBvaW50 LG89ci5zdWIoaSk7cmV0dXJuIHIuYWRkKG8uX211bHQobi9vLm1hZygpKSl9 ZnVuY3Rpb24gbmUoZSxyLG4sYSxpLG8scyxsLGMsdSxoLGYscCl7dmFyIGQ9 YT9lLXI6ZStyLGc9ZD4wPzE6LTEsdj0wO2EmJihnKj0tMSx2PU1hdGguUEkp LGc8MCYmKHYrPU1hdGguUEkpO2Zvcih2YXIgbT1nPjA/bCtzOmwrcysxLHk9 bSx4PWksYj1pLF89MCx3PTAsaz1NYXRoLmFicyhkKTtfK3c8PWs7KXtpZigo bSs9Zyk8bHx8bT49YylyZXR1cm4gbnVsbDtpZihiPXgsdm9pZCAwPT09KHg9 ZlttXSkpe3ZhciBUPW5ldyB0LlBvaW50KHUuZ2V0eChtKSx1LmdldHkobSkp LE09SnQoVCxoKTtpZihNLnNpZ25lZERpc3RhbmNlRnJvbUNhbWVyYT4wKXg9 ZlttXT1NLnBvaW50O2Vsc2V7dmFyIEE9bS1nO3g9cmUoMD09PV8/bzpuZXcg dC5Qb2ludCh1LmdldHgoQSksdS5nZXR5KEEpKSxULGIsay1fKzEsaCl9fV8r PXcsdz1iLmRpc3QoeCl9dmFyIFM9KGstXykvdyxFPXguc3ViKGIpLEw9RS5t dWx0KFMpLl9hZGQoYik7cmV0dXJuIEwuX2FkZChFLl91bml0KCkuX3BlcnAo KS5fbXVsdChuKmcpKSx7cG9pbnQ6TCxhbmdsZTp2K01hdGguYXRhbjIoeC55 LWIueSx4LngtYi54KSx0aWxlRGlzdGFuY2U6cD97cHJldlRpbGVEaXN0YW5j ZTptLWc9PT15PzA6dS5nZXR0aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hvciht LWcpLGxhc3RTZWdtZW50Vmlld3BvcnREaXN0YW5jZTprLV99Om51bGx9fVd0 LnByb3RvdHlwZS5rZXlzTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu Ym94S2V5cy5sZW5ndGgrdGhpcy5jaXJjbGVLZXlzLmxlbmd0aH0sV3QucHJv dG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUscixuLGEpe3RoaXMuX2ZvckVh Y2hDZWxsKGUscixuLGEsdGhpcy5faW5zZXJ0Qm94Q2VsbCx0aGlzLmJveFVp ZCsrKSx0aGlzLmJveEtleXMucHVzaCh0KSx0aGlzLmJib3hlcy5wdXNoKGUp LHRoaXMuYmJveGVzLnB1c2gociksdGhpcy5iYm94ZXMucHVzaChuKSx0aGlz LmJib3hlcy5wdXNoKGEpfSxXdC5wcm90b3R5cGUuaW5zZXJ0Q2lyY2xlPWZ1 bmN0aW9uKHQsZSxyLG4pe3RoaXMuX2ZvckVhY2hDZWxsKGUtbixyLW4sZStu LHIrbix0aGlzLl9pbnNlcnRDaXJjbGVDZWxsLHRoaXMuY2lyY2xlVWlkKysp LHRoaXMuY2lyY2xlS2V5cy5wdXNoKHQpLHRoaXMuY2lyY2xlcy5wdXNoKGUp LHRoaXMuY2lyY2xlcy5wdXNoKHIpLHRoaXMuY2lyY2xlcy5wdXNoKG4pfSxX dC5wcm90b3R5cGUuX2luc2VydEJveENlbGw9ZnVuY3Rpb24odCxlLHIsbixh LGkpe3RoaXMuYm94Q2VsbHNbYV0ucHVzaChpKX0sV3QucHJvdG90eXBlLl9p bnNlcnRDaXJjbGVDZWxsPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt0aGlzLmNp cmNsZUNlbGxzW2FdLnB1c2goaSl9LFd0LnByb3RvdHlwZS5fcXVlcnk9ZnVu Y3Rpb24odCxlLHIsbixhLGkpe2lmKHI8MHx8dD50aGlzLndpZHRofHxuPDB8 fGU+dGhpcy5oZWlnaHQpcmV0dXJuIWEmJltdO3ZhciBvPVtdO2lmKHQ8PTAm JmU8PTAmJnRoaXMud2lkdGg8PXImJnRoaXMuaGVpZ2h0PD1uKXtpZihhKXJl dHVybiEwO2Zvcih2YXIgcz0wO3M8dGhpcy5ib3hLZXlzLmxlbmd0aDtzKysp by5wdXNoKHtrZXk6dGhpcy5ib3hLZXlzW3NdLHgxOnRoaXMuYmJveGVzWzQq c10seTE6dGhpcy5iYm94ZXNbNCpzKzFdLHgyOnRoaXMuYmJveGVzWzQqcysy XSx5Mjp0aGlzLmJib3hlc1s0KnMrM119KTtmb3IodmFyIGw9MDtsPHRoaXMu Y2lyY2xlS2V5cy5sZW5ndGg7bCsrKXt2YXIgYz10aGlzLmNpcmNsZXNbMyps XSx1PXRoaXMuY2lyY2xlc1szKmwrMV0saD10aGlzLmNpcmNsZXNbMypsKzJd O28ucHVzaCh7a2V5OnRoaXMuY2lyY2xlS2V5c1tsXSx4MTpjLWgseTE6dS1o LHgyOmMraCx5Mjp1K2h9KX1yZXR1cm4gaT9vLmZpbHRlcihpKTpvfXZhciBm PXtoaXRUZXN0OmEsc2VlblVpZHM6e2JveDp7fSxjaXJjbGU6e319fTtyZXR1 cm4gdGhpcy5fZm9yRWFjaENlbGwodCxlLHIsbix0aGlzLl9xdWVyeUNlbGws byxmLGkpLGE/by5sZW5ndGg+MDpvfSxXdC5wcm90b3R5cGUuX3F1ZXJ5Q2ly Y2xlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9dC1yLG89dCtyLHM9ZS1y LGw9ZStyO2lmKG88MHx8aT50aGlzLndpZHRofHxsPDB8fHM+dGhpcy5oZWln aHQpcmV0dXJuIW4mJltdO3ZhciBjPVtdLHU9e2hpdFRlc3Q6bixjaXJjbGU6 e3g6dCx5OmUscmFkaXVzOnJ9LHNlZW5VaWRzOntib3g6e30sY2lyY2xlOnt9 fX07cmV0dXJuIHRoaXMuX2ZvckVhY2hDZWxsKGkscyxvLGwsdGhpcy5fcXVl cnlDZWxsQ2lyY2xlLGMsdSxhKSxuP2MubGVuZ3RoPjA6Y30sV3QucHJvdG90 eXBlLnF1ZXJ5PWZ1bmN0aW9uKHQsZSxyLG4sYSl7cmV0dXJuIHRoaXMuX3F1 ZXJ5KHQsZSxyLG4sITEsYSl9LFd0LnByb3RvdHlwZS5oaXRUZXN0PWZ1bmN0 aW9uKHQsZSxyLG4sYSl7cmV0dXJuIHRoaXMuX3F1ZXJ5KHQsZSxyLG4sITAs YSl9LFd0LnByb3RvdHlwZS5oaXRUZXN0Q2lyY2xlPWZ1bmN0aW9uKHQsZSxy LG4pe3JldHVybiB0aGlzLl9xdWVyeUNpcmNsZSh0LGUsciwhMCxuKX0sV3Qu cHJvdG90eXBlLl9xdWVyeUNlbGw9ZnVuY3Rpb24odCxlLHIsbixhLGksbyxz KXt2YXIgbD1vLnNlZW5VaWRzLGM9dGhpcy5ib3hDZWxsc1thXTtpZihudWxs IT09Yylmb3IodmFyIHU9dGhpcy5iYm94ZXMsaD0wLGY9YztoPGYubGVuZ3Ro O2grPTEpe3ZhciBwPWZbaF07aWYoIWwuYm94W3BdKXtsLmJveFtwXT0hMDt2 YXIgZD00KnA7aWYodDw9dVtkKzJdJiZlPD11W2QrM10mJnI+PXVbZCswXSYm bj49dVtkKzFdJiYoIXN8fHModGhpcy5ib3hLZXlzW3BdKSkpe2lmKG8uaGl0 VGVzdClyZXR1cm4gaS5wdXNoKCEwKSwhMDtpLnB1c2goe2tleTp0aGlzLmJv eEtleXNbcF0seDE6dVtkXSx5MTp1W2QrMV0seDI6dVtkKzJdLHkyOnVbZCsz XX0pfX19dmFyIGc9dGhpcy5jaXJjbGVDZWxsc1thXTtpZihudWxsIT09Zylm b3IodmFyIHY9dGhpcy5jaXJjbGVzLG09MCx5PWc7bTx5Lmxlbmd0aDttKz0x KXt2YXIgeD15W21dO2lmKCFsLmNpcmNsZVt4XSl7bC5jaXJjbGVbeF09ITA7 dmFyIGI9Myp4O2lmKHRoaXMuX2NpcmNsZUFuZFJlY3RDb2xsaWRlKHZbYl0s dltiKzFdLHZbYisyXSx0LGUscixuKSYmKCFzfHxzKHRoaXMuY2lyY2xlS2V5 c1t4XSkpKXtpZihvLmhpdFRlc3QpcmV0dXJuIGkucHVzaCghMCksITA7dmFy IF89dltiXSx3PXZbYisxXSxrPXZbYisyXTtpLnB1c2goe2tleTp0aGlzLmNp cmNsZUtleXNbeF0seDE6Xy1rLHkxOnctayx4MjpfK2sseTI6dytrfSl9fX19 LFd0LnByb3RvdHlwZS5fcXVlcnlDZWxsQ2lyY2xlPWZ1bmN0aW9uKHQsZSxy LG4sYSxpLG8scyl7dmFyIGw9by5jaXJjbGUsYz1vLnNlZW5VaWRzLHU9dGhp cy5ib3hDZWxsc1thXTtpZihudWxsIT09dSlmb3IodmFyIGg9dGhpcy5iYm94 ZXMsZj0wLHA9dTtmPHAubGVuZ3RoO2YrPTEpe3ZhciBkPXBbZl07aWYoIWMu Ym94W2RdKXtjLmJveFtkXT0hMDt2YXIgZz00KmQ7aWYodGhpcy5fY2lyY2xl QW5kUmVjdENvbGxpZGUobC54LGwueSxsLnJhZGl1cyxoW2crMF0saFtnKzFd LGhbZysyXSxoW2crM10pJiYoIXN8fHModGhpcy5ib3hLZXlzW2RdKSkpcmV0 dXJuIGkucHVzaCghMCksITB9fXZhciB2PXRoaXMuY2lyY2xlQ2VsbHNbYV07 aWYobnVsbCE9PXYpZm9yKHZhciBtPXRoaXMuY2lyY2xlcyx5PTAseD12O3k8 eC5sZW5ndGg7eSs9MSl7dmFyIGI9eFt5XTtpZighYy5jaXJjbGVbYl0pe2Mu Y2lyY2xlW2JdPSEwO3ZhciBfPTMqYjtpZih0aGlzLl9jaXJjbGVzQ29sbGlk ZShtW19dLG1bXysxXSxtW18rMl0sbC54LGwueSxsLnJhZGl1cykmJighc3x8 cyh0aGlzLmNpcmNsZUtleXNbYl0pKSlyZXR1cm4gaS5wdXNoKCEwKSwhMH19 fSxXdC5wcm90b3R5cGUuX2ZvckVhY2hDZWxsPWZ1bmN0aW9uKHQsZSxyLG4s YSxpLG8scyl7Zm9yKHZhciBsPXRoaXMuX2NvbnZlcnRUb1hDZWxsQ29vcmQo dCksYz10aGlzLl9jb252ZXJ0VG9ZQ2VsbENvb3JkKGUpLHU9dGhpcy5fY29u dmVydFRvWENlbGxDb29yZChyKSxoPXRoaXMuX2NvbnZlcnRUb1lDZWxsQ29v cmQobiksZj1sO2Y8PXU7ZisrKWZvcih2YXIgcD1jO3A8PWg7cCsrKXt2YXIg ZD10aGlzLnhDZWxsQ291bnQqcCtmO2lmKGEuY2FsbCh0aGlzLHQsZSxyLG4s ZCxpLG8scykpcmV0dXJufX0sV3QucHJvdG90eXBlLl9jb252ZXJ0VG9YQ2Vs bENvb3JkPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWlu KHRoaXMueENlbGxDb3VudC0xLE1hdGguZmxvb3IodCp0aGlzLnhTY2FsZSkp KX0sV3QucHJvdG90eXBlLl9jb252ZXJ0VG9ZQ2VsbENvb3JkPWZ1bmN0aW9u KHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKHRoaXMueUNlbGxDb3Vu dC0xLE1hdGguZmxvb3IodCp0aGlzLnlTY2FsZSkpKX0sV3QucHJvdG90eXBl Ll9jaXJjbGVzQ29sbGlkZT1mdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIG89 bi10LHM9YS1lLGw9citpO3JldHVybiBsKmw+bypvK3Mqc30sV3QucHJvdG90 eXBlLl9jaXJjbGVBbmRSZWN0Q29sbGlkZT1mdW5jdGlvbih0LGUscixuLGEs aSxvKXt2YXIgcz0oaS1uKS8yLGw9TWF0aC5hYnModC0obitzKSk7aWYobD5z K3IpcmV0dXJuITE7dmFyIGM9KG8tYSkvMix1PU1hdGguYWJzKGUtKGErYykp O2lmKHU+YytyKXJldHVybiExO2lmKGw8PXN8fHU8PWMpcmV0dXJuITA7dmFy IGg9bC1zLGY9dS1jO3JldHVybiBoKmgrZipmPD1yKnJ9O3ZhciBhZT1uZXcg RmxvYXQzMkFycmF5KFstMS8wLC0xLzAsMCwtMS8wLC0xLzAsMCwtMS8wLC0x LzAsMCwtMS8wLC0xLzAsMF0pO2Z1bmN0aW9uIGllKHQsZSl7Zm9yKHZhciBy PTA7cjx0O3IrKyl7dmFyIG49ZS5sZW5ndGg7ZS5yZXNpemUobis0KSxlLmZs b2F0MzIuc2V0KGFlLDMqbil9fWZ1bmN0aW9uIG9lKHQsZSxyKXt2YXIgbj1l WzBdLGE9ZVsxXTtyZXR1cm4gdFswXT1yWzBdKm4rcls0XSphK3JbMTJdLHRb MV09clsxXSpuK3JbNV0qYStyWzEzXSx0WzNdPXJbM10qbityWzddKmErclsx NV0sdH12YXIgc2U9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPW5l dyBXdCh0LndpZHRoKzIwMCx0LmhlaWdodCsyMDAsMjUpKSx2b2lkIDA9PT1y JiYocj1uZXcgV3QodC53aWR0aCsyMDAsdC5oZWlnaHQrMjAwLDI1KSksdGhp cy50cmFuc2Zvcm09dCx0aGlzLmdyaWQ9ZSx0aGlzLmlnbm9yZWRHcmlkPXIs dGhpcy5waXRjaGZhY3Rvcj1NYXRoLmNvcyh0Ll9waXRjaCkqdC5jYW1lcmFU b0NlbnRlckRpc3RhbmNlLHRoaXMuc2NyZWVuUmlnaHRCb3VuZGFyeT10Lndp ZHRoKzEwMCx0aGlzLnNjcmVlbkJvdHRvbUJvdW5kYXJ5PXQuaGVpZ2h0KzEw MCx0aGlzLmdyaWRSaWdodEJvdW5kYXJ5PXQud2lkdGgrMjAwLHRoaXMuZ3Jp ZEJvdHRvbUJvdW5kYXJ5PXQuaGVpZ2h0KzIwMH07ZnVuY3Rpb24gbGUodCxl LHIpe3RbZSs0XT1yPzE6MH1mdW5jdGlvbiBjZShlLHIsbil7cmV0dXJuIHIq KHQuRVhURU5ULyhlLnRpbGVTaXplKk1hdGgucG93KDIsbi1lLnRpbGVJRC5v dmVyc2NhbGVkWikpKX1zZS5wcm90b3R5cGUucGxhY2VDb2xsaXNpb25Cb3g9 ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT10aGlzLnByb2plY3RBbmRHZXRQ ZXJzcGVjdGl2ZVJhdGlvKG4sdC5hbmNob3JQb2ludFgsdC5hbmNob3JQb2lu dFkpLG89cippLnBlcnNwZWN0aXZlUmF0aW8scz10LngxKm8raS5wb2ludC54 LGw9dC55MSpvK2kucG9pbnQueSxjPXQueDIqbytpLnBvaW50LngsdT10Lnky Km8raS5wb2ludC55O3JldHVybiF0aGlzLmlzSW5zaWRlR3JpZChzLGwsYyx1 KXx8IWUmJnRoaXMuZ3JpZC5oaXRUZXN0KHMsbCxjLHUsYSk/e2JveDpbXSxv ZmZzY3JlZW46ITF9Ontib3g6W3MsbCxjLHVdLG9mZnNjcmVlbjp0aGlzLmlz T2Zmc2NyZWVuKHMsbCxjLHUpfX0sc2UucHJvdG90eXBlLmFwcHJveGltYXRl VGlsZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9YT8xOm4v dGhpcy5waXRjaGZhY3RvcixvPXQubGFzdFNlZ21lbnRWaWV3cG9ydERpc3Rh bmNlKnI7cmV0dXJuIHQucHJldlRpbGVEaXN0YW5jZStvKyhpLTEpKm8qTWF0 aC5hYnMoTWF0aC5zaW4oZSkpfSxzZS5wcm90b3R5cGUucGxhY2VDb2xsaXNp b25DaXJjbGVzPWZ1bmN0aW9uKGUscixuLGEsaSxvLHMsbCxjLHUsaCxmLHAp e3ZhciBkPVtdLGc9dGhpcy5wcm9qZWN0QW5jaG9yKGMsaS5hbmNob3JYLGku YW5jaG9yWSksdj1sLzI0LG09aS5saW5lT2Zmc2V0WCpsLHk9aS5saW5lT2Zm c2V0WSpsLHg9bmV3IHQuUG9pbnQoaS5hbmNob3JYLGkuYW5jaG9yWSksYj0k dCh2LHMsbSx5LCExLEp0KHgsdSkucG9pbnQseCxpLG8sdSx7fSwhMCksXz0h MSx3PSExLGs9ITAsVD1nLnBlcnNwZWN0aXZlUmF0aW8qYSxNPTEvKGEqbiks QT0wLFM9MDtiJiYoQT10aGlzLmFwcHJveGltYXRlVGlsZURpc3RhbmNlKGIu Zmlyc3QudGlsZURpc3RhbmNlLGIuZmlyc3QuYW5nbGUsTSxnLmNhbWVyYURp c3RhbmNlLGYpLFM9dGhpcy5hcHByb3hpbWF0ZVRpbGVEaXN0YW5jZShiLmxh c3QudGlsZURpc3RhbmNlLGIubGFzdC5hbmdsZSxNLGcuY2FtZXJhRGlzdGFu Y2UsZikpO2Zvcih2YXIgRT0wO0U8ZS5sZW5ndGg7RSs9NSl7dmFyIEw9ZVtF XSxDPWVbRSsxXSxQPWVbRSsyXSxPPWVbRSszXTtpZighYnx8TzwtQXx8Tz5T KWxlKGUsRSwhMSk7ZWxzZXt2YXIgej10aGlzLnByb2plY3RQb2ludChjLEws QyksST1QKlQ7aWYoZC5sZW5ndGg+MCl7dmFyIEQ9ei54LWRbZC5sZW5ndGgt NF0sUj16LnktZFtkLmxlbmd0aC0zXTtpZihJKkkqMj5EKkQrUipSJiZFKzg8 ZS5sZW5ndGgpe3ZhciBGPWVbRSs4XTtpZihGPi1BJiZGPFMpe2xlKGUsRSwh MSk7Y29udGludWV9fX12YXIgQj1FLzU7ZC5wdXNoKHoueCx6LnksSSxCKSxs ZShlLEUsITApO3ZhciBOPXoueC1JLGo9ei55LUksVj16LngrSSxVPXoueStJ O2lmKGs9ayYmdGhpcy5pc09mZnNjcmVlbihOLGosVixVKSx3PXd8fHRoaXMu aXNJbnNpZGVHcmlkKE4saixWLFUpLCFyJiZ0aGlzLmdyaWQuaGl0VGVzdENp cmNsZSh6Lngsei55LEkscCkpe2lmKCFoKXJldHVybntjaXJjbGVzOltdLG9m ZnNjcmVlbjohMX07Xz0hMH19fXJldHVybntjaXJjbGVzOl98fCF3P1tdOmQs b2Zmc2NyZWVuOmt9fSxzZS5wcm90b3R5cGUucXVlcnlSZW5kZXJlZFN5bWJv bHM9ZnVuY3Rpb24oZSl7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5ncmlk LmtleXNMZW5ndGgoKSYmMD09PXRoaXMuaWdub3JlZEdyaWQua2V5c0xlbmd0 aCgpKXJldHVybnt9O2Zvcih2YXIgcj1bXSxuPTEvMCxhPTEvMCxpPS0xLzAs bz0tMS8wLHM9MCxsPWU7czxsLmxlbmd0aDtzKz0xKXt2YXIgYz1sW3NdLHU9 bmV3IHQuUG9pbnQoYy54KzEwMCxjLnkrMTAwKTtuPU1hdGgubWluKG4sdS54 KSxhPU1hdGgubWluKGEsdS55KSxpPU1hdGgubWF4KGksdS54KSxvPU1hdGgu bWF4KG8sdS55KSxyLnB1c2godSl9Zm9yKHZhciBoPXt9LGY9e30scD0wLGQ9 dGhpcy5ncmlkLnF1ZXJ5KG4sYSxpLG8pLmNvbmNhdCh0aGlzLmlnbm9yZWRH cmlkLnF1ZXJ5KG4sYSxpLG8pKTtwPGQubGVuZ3RoO3ArPTEpe3ZhciBnPWRb cF0sdj1nLmtleTtpZih2b2lkIDA9PT1oW3YuYnVja2V0SW5zdGFuY2VJZF0m JihoW3YuYnVja2V0SW5zdGFuY2VJZF09e30pLCFoW3YuYnVja2V0SW5zdGFu Y2VJZF1bdi5mZWF0dXJlSW5kZXhdKXt2YXIgbT1bbmV3IHQuUG9pbnQoZy54 MSxnLnkxKSxuZXcgdC5Qb2ludChnLngyLGcueTEpLG5ldyB0LlBvaW50KGcu eDIsZy55MiksbmV3IHQuUG9pbnQoZy54MSxnLnkyKV07dC5wb2x5Z29uSW50 ZXJzZWN0c1BvbHlnb24ocixtKSYmKGhbdi5idWNrZXRJbnN0YW5jZUlkXVt2 LmZlYXR1cmVJbmRleF09ITAsdm9pZCAwPT09Zlt2LmJ1Y2tldEluc3RhbmNl SWRdJiYoZlt2LmJ1Y2tldEluc3RhbmNlSWRdPVtdKSxmW3YuYnVja2V0SW5z dGFuY2VJZF0ucHVzaCh2LmZlYXR1cmVJbmRleCkpfX1yZXR1cm4gZn0sc2Uu cHJvdG90eXBlLmluc2VydENvbGxpc2lvbkJveD1mdW5jdGlvbih0LGUscixu LGEpe3ZhciBpPXtidWNrZXRJbnN0YW5jZUlkOnIsZmVhdHVyZUluZGV4Om4s Y29sbGlzaW9uR3JvdXBJRDphfTsoZT90aGlzLmlnbm9yZWRHcmlkOnRoaXMu Z3JpZCkuaW5zZXJ0KGksdFswXSx0WzFdLHRbMl0sdFszXSl9LHNlLnByb3Rv dHlwZS5pbnNlcnRDb2xsaXNpb25DaXJjbGVzPWZ1bmN0aW9uKHQsZSxyLG4s YSl7Zm9yKHZhciBpPWU/dGhpcy5pZ25vcmVkR3JpZDp0aGlzLmdyaWQsbz17 YnVja2V0SW5zdGFuY2VJZDpyLGZlYXR1cmVJbmRleDpuLGNvbGxpc2lvbkdy b3VwSUQ6YX0scz0wO3M8dC5sZW5ndGg7cys9NClpLmluc2VydENpcmNsZShv LHRbc10sdFtzKzFdLHRbcysyXSl9LHNlLnByb3RvdHlwZS5wcm9qZWN0QW5j aG9yPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1bZSxyLDAsMV07cmV0dXJuIG9l KG4sbix0KSx7cGVyc3BlY3RpdmVSYXRpbzouNSt0aGlzLnRyYW5zZm9ybS5j YW1lcmFUb0NlbnRlckRpc3RhbmNlL25bM10qLjUsY2FtZXJhRGlzdGFuY2U6 blszXX19LHNlLnByb3RvdHlwZS5wcm9qZWN0UG9pbnQ9ZnVuY3Rpb24oZSxy LG4pe3ZhciBhPVtyLG4sMCwxXTtyZXR1cm4gb2UoYSxhLGUpLG5ldyB0LlBv aW50KChhWzBdL2FbM10rMSkvMip0aGlzLnRyYW5zZm9ybS53aWR0aCsxMDAs KC1hWzFdL2FbM10rMSkvMip0aGlzLnRyYW5zZm9ybS5oZWlnaHQrMTAwKX0s c2UucHJvdG90eXBlLnByb2plY3RBbmRHZXRQZXJzcGVjdGl2ZVJhdGlvPWZ1 bmN0aW9uKGUscixuKXt2YXIgYT1bcixuLDAsMV07cmV0dXJuIG9lKGEsYSxl KSx7cG9pbnQ6bmV3IHQuUG9pbnQoKGFbMF0vYVszXSsxKS8yKnRoaXMudHJh bnNmb3JtLndpZHRoKzEwMCwoLWFbMV0vYVszXSsxKS8yKnRoaXMudHJhbnNm b3JtLmhlaWdodCsxMDApLHBlcnNwZWN0aXZlUmF0aW86LjUrdGhpcy50cmFu c2Zvcm0uY2FtZXJhVG9DZW50ZXJEaXN0YW5jZS9hWzNdKi41fX0sc2UucHJv dG90eXBlLmlzT2Zmc2NyZWVuPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBy PDEwMHx8dD49dGhpcy5zY3JlZW5SaWdodEJvdW5kYXJ5fHxuPDEwMHx8ZT50 aGlzLnNjcmVlbkJvdHRvbUJvdW5kYXJ5fSxzZS5wcm90b3R5cGUuaXNJbnNp ZGVHcmlkPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiByPj0wJiZ0PHRoaXMu Z3JpZFJpZ2h0Qm91bmRhcnkmJm4+PTAmJmU8dGhpcy5ncmlkQm90dG9tQm91 bmRhcnl9O3ZhciB1ZT1mdW5jdGlvbih0LGUscixuKXt0aGlzLm9wYWNpdHk9 dD9NYXRoLm1heCgwLE1hdGgubWluKDEsdC5vcGFjaXR5Kyh0LnBsYWNlZD9l Oi1lKSkpOm4mJnI/MTowLHRoaXMucGxhY2VkPXJ9O3VlLnByb3RvdHlwZS5p c0hpZGRlbj1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5vcGFjaXR5JiYh dGhpcy5wbGFjZWR9O3ZhciBoZT1mdW5jdGlvbih0LGUscixuLGEpe3RoaXMu dGV4dD1uZXcgdWUodD90LnRleHQ6bnVsbCxlLHIsYSksdGhpcy5pY29uPW5l dyB1ZSh0P3QuaWNvbjpudWxsLGUsbixhKX07aGUucHJvdG90eXBlLmlzSGlk ZGVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dC5pc0hpZGRlbigpJiZ0 aGlzLmljb24uaXNIaWRkZW4oKX07dmFyIGZlPWZ1bmN0aW9uKHQsZSxyKXt0 aGlzLnRleHQ9dCx0aGlzLmljb249ZSx0aGlzLnNraXBGYWRlPXJ9LHBlPWZ1 bmN0aW9uKHQsZSxyLG4sYSl7dGhpcy5idWNrZXRJbnN0YW5jZUlkPXQsdGhp cy5mZWF0dXJlSW5kZXg9ZSx0aGlzLnNvdXJjZUxheWVySW5kZXg9cix0aGlz LmJ1Y2tldEluZGV4PW4sdGhpcy50aWxlSUQ9YX0sZGU9ZnVuY3Rpb24odCl7 dGhpcy5jcm9zc1NvdXJjZUNvbGxpc2lvbnM9dCx0aGlzLm1heEdyb3VwSUQ9 MCx0aGlzLmNvbGxpc2lvbkdyb3Vwcz17fX07ZnVuY3Rpb24gZ2UoZSxyLG4s YSxpKXt2YXIgbz10LmdldEFuY2hvckFsaWdubWVudChlKSxzPS0oby5ob3Jp em9udGFsQWxpZ24tLjUpKnIsbD0tKG8udmVydGljYWxBbGlnbi0uNSkqbixj PXQuZXZhbHVhdGVSYWRpYWxPZmZzZXQoZSxhKTtyZXR1cm4gbmV3IHQuUG9p bnQocytjWzBdKmksbCtjWzFdKmkpfWRlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rp b24odCl7aWYodGhpcy5jcm9zc1NvdXJjZUNvbGxpc2lvbnMpcmV0dXJue0lE OjAscHJlZGljYXRlOm51bGx9O2lmKCF0aGlzLmNvbGxpc2lvbkdyb3Vwc1t0 XSl7dmFyIGU9Kyt0aGlzLm1heEdyb3VwSUQ7dGhpcy5jb2xsaXNpb25Hcm91 cHNbdF09e0lEOmUscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNv bGxpc2lvbkdyb3VwSUQ9PT1lfX19cmV0dXJuIHRoaXMuY29sbGlzaW9uR3Jv dXBzW3RdfTt2YXIgdmU9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy50cmFuc2Zv cm09dC5jbG9uZSgpLHRoaXMuY29sbGlzaW9uSW5kZXg9bmV3IHNlKHRoaXMu dHJhbnNmb3JtKSx0aGlzLnBsYWNlbWVudHM9e30sdGhpcy5vcGFjaXRpZXM9 e30sdGhpcy52YXJpYWJsZU9mZnNldHM9e30sdGhpcy5zdGFsZT0hMSx0aGlz LmNvbW1pdFRpbWU9MCx0aGlzLmZhZGVEdXJhdGlvbj1lLHRoaXMucmV0YWlu ZWRRdWVyeURhdGE9e30sdGhpcy5jb2xsaXNpb25Hcm91cHM9bmV3IGRlKHIp LHRoaXMucHJldlBsYWNlbWVudD1uLG4mJihuLnByZXZQbGFjZW1lbnQ9dm9p ZCAwKSx0aGlzLnBsYWNlZE9yaWVudGF0aW9ucz17fX07ZnVuY3Rpb24gbWUo dCxlLHIsbixhKXt0LmVtcGxhY2VCYWNrKGU/MTowLHI/MTowLG58fDAsYXx8 MCksdC5lbXBsYWNlQmFjayhlPzE6MCxyPzE6MCxufHwwLGF8fDApLHQuZW1w bGFjZUJhY2soZT8xOjAscj8xOjAsbnx8MCxhfHwwKSx0LmVtcGxhY2VCYWNr KGU/MTowLHI/MTowLG58fDAsYXx8MCl9dmUucHJvdG90eXBlLnBsYWNlTGF5 ZXJUaWxlPWZ1bmN0aW9uKGUscixuLGEpe3ZhciBpPXIuZ2V0QnVja2V0KGUp LG89ci5sYXRlc3RGZWF0dXJlSW5kZXg7aWYoaSYmbyYmZS5pZD09PWkubGF5 ZXJJZHNbMF0pe3ZhciBzPXIuY29sbGlzaW9uQm94QXJyYXksbD1pLmxheWVy c1swXS5sYXlvdXQsYz1NYXRoLnBvdygyLHRoaXMudHJhbnNmb3JtLnpvb20t ci50aWxlSUQub3ZlcnNjYWxlZFopLHU9ci50aWxlU2l6ZS90LkVYVEVOVCxo PXRoaXMudHJhbnNmb3JtLmNhbGN1bGF0ZVBvc01hdHJpeChyLnRpbGVJRC50 b1Vud3JhcHBlZCgpKSxmPVh0KGgsIm1hcCI9PT1sLmdldCgidGV4dC1waXRj aC1hbGlnbm1lbnQiKSwibWFwIj09PWwuZ2V0KCJ0ZXh0LXJvdGF0aW9uLWFs aWdubWVudCIpLHRoaXMudHJhbnNmb3JtLGNlKHIsMSx0aGlzLnRyYW5zZm9y bS56b29tKSkscD1YdChoLCJtYXAiPT09bC5nZXQoImljb24tcGl0Y2gtYWxp Z25tZW50IiksIm1hcCI9PT1sLmdldCgiaWNvbi1yb3RhdGlvbi1hbGlnbm1l bnQiKSx0aGlzLnRyYW5zZm9ybSxjZShyLDEsdGhpcy50cmFuc2Zvcm0uem9v bSkpO3RoaXMucmV0YWluZWRRdWVyeURhdGFbaS5idWNrZXRJbnN0YW5jZUlk XT1uZXcgcGUoaS5idWNrZXRJbnN0YW5jZUlkLG8saS5zb3VyY2VMYXllcklu ZGV4LGkuaW5kZXgsci50aWxlSUQpLHRoaXMucGxhY2VMYXllckJ1Y2tldChp LGgsZixwLGMsdSxuLHIuaG9sZGluZ0ZvckZhZGUoKSxhLHMpfX0sdmUucHJv dG90eXBlLmF0dGVtcHRBbmNob3JQbGFjZW1lbnQ9ZnVuY3Rpb24oZSxyLG4s YSxpLG8scyxsLGMsdSxoLGYscCxkLGcpe3ZhciB2LG09Z2UoZSxuLGEsaSxv KSx5PXRoaXMuY29sbGlzaW9uSW5kZXgucGxhY2VDb2xsaXNpb25Cb3goZnVu Y3Rpb24oZSxyLG4sYSxpLG8pe3ZhciBzPWUueDEsbD1lLngyLGM9ZS55MSx1 PWUueTIsaD1lLmFuY2hvclBvaW50WCxmPWUuYW5jaG9yUG9pbnRZLHA9bmV3 IHQuUG9pbnQocixuKTtyZXR1cm4gYSYmcC5fcm90YXRlKGk/bzotbykse3gx OnMrcC54LHkxOmMrcC55LHgyOmwrcC54LHkyOnUrcC55LGFuY2hvclBvaW50 WDpoLGFuY2hvclBvaW50WTpmfX0ocixtLngsbS55LHMsbCx0aGlzLnRyYW5z Zm9ybS5hbmdsZSksZixjLHUsaC5wcmVkaWNhdGUpO2lmKHkuYm94Lmxlbmd0 aD4wKXJldHVybiB0aGlzLnByZXZQbGFjZW1lbnQmJnRoaXMucHJldlBsYWNl bWVudC52YXJpYWJsZU9mZnNldHNbcC5jcm9zc1RpbGVJRF0mJnRoaXMucHJl dlBsYWNlbWVudC5wbGFjZW1lbnRzW3AuY3Jvc3NUaWxlSURdJiZ0aGlzLnBy ZXZQbGFjZW1lbnQucGxhY2VtZW50c1twLmNyb3NzVGlsZUlEXS50ZXh0JiYo dj10aGlzLnByZXZQbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzW3AuY3Jvc3NU aWxlSURdLmFuY2hvciksdGhpcy52YXJpYWJsZU9mZnNldHNbcC5jcm9zc1Rp bGVJRF09e3JhZGlhbE9mZnNldDppLHdpZHRoOm4saGVpZ2h0OmEsYW5jaG9y OmUsdGV4dEJveFNjYWxlOm8scHJldkFuY2hvcjp2fSx0aGlzLm1hcmtVc2Vk SnVzdGlmaWNhdGlvbihkLGUscCxnKSxkLmFsbG93VmVydGljYWxQbGFjZW1l bnQmJih0aGlzLm1hcmtVc2VkT3JpZW50YXRpb24oZCxnLHApLHRoaXMucGxh Y2VkT3JpZW50YXRpb25zW3AuY3Jvc3NUaWxlSURdPWcpLHl9LHZlLnByb3Rv dHlwZS5wbGFjZUxheWVyQnVja2V0PWZ1bmN0aW9uKGUscixuLGEsaSxvLHMs bCxjLHUpe3ZhciBoPXRoaXMsZj1lLmxheWVyc1swXS5sYXlvdXQscD10LmV2 YWx1YXRlU2l6ZUZvclpvb20oZS50ZXh0U2l6ZURhdGEsdGhpcy50cmFuc2Zv cm0uem9vbSksZD1mLmdldCgidGV4dC1vcHRpb25hbCIpLGc9Zi5nZXQoImlj b24tb3B0aW9uYWwiKSx2PWYuZ2V0KCJ0ZXh0LWFsbG93LW92ZXJsYXAiKSxt PWYuZ2V0KCJpY29uLWFsbG93LW92ZXJsYXAiKSx5PXYmJihtfHwhZS5oYXNJ Y29uRGF0YSgpfHxnKSx4PW0mJih2fHwhZS5oYXNUZXh0RGF0YSgpfHxkKSxi PXRoaXMuY29sbGlzaW9uR3JvdXBzLmdldChlLnNvdXJjZUlEKSxfPSJtYXAi PT09Zi5nZXQoInRleHQtcm90YXRpb24tYWxpZ25tZW50Iiksdz0ibWFwIj09 PWYuZ2V0KCJ0ZXh0LXBpdGNoLWFsaWdubWVudCIpLGs9InZpZXdwb3J0LXki PT09Zi5nZXQoInN5bWJvbC16LW9yZGVyIik7IWUuY29sbGlzaW9uQXJyYXlz JiZ1JiZlLmRlc2VyaWFsaXplQ29sbGlzaW9uQm94ZXModSk7dmFyIFQ9ZnVu Y3Rpb24oYSx1KXtpZighY1thLmNyb3NzVGlsZUlEXSlpZihsKWgucGxhY2Vt ZW50c1thLmNyb3NzVGlsZUlEXT1uZXcgZmUoITEsITEsITEpO2Vsc2V7dmFy IG0saz0hMSxUPSExLE09ITAsQT17Ym94Om51bGwsb2Zmc2NyZWVuOm51bGx9 LFM9e2JveDpudWxsLG9mZnNjcmVlbjpudWxsfSxFPW51bGwsTD1udWxsLEM9 MCxQPTAsTz0wO3UudGV4dEZlYXR1cmVJbmRleCYmKEM9dS50ZXh0RmVhdHVy ZUluZGV4KSx1LnZlcnRpY2FsVGV4dEZlYXR1cmVJbmRleCYmKFA9dS52ZXJ0 aWNhbFRleHRGZWF0dXJlSW5kZXgpO3ZhciB6PXUudGV4dEJveDtpZih6KXt2 YXIgST1mdW5jdGlvbihyKXt2YXIgbj10LldyaXRpbmdNb2RlLmhvcml6b250 YWw7aWYoZS5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiYhciYmaC5wcmV2UGxh Y2VtZW50KXt2YXIgaT1oLnByZXZQbGFjZW1lbnQucGxhY2VkT3JpZW50YXRp b25zW2EuY3Jvc3NUaWxlSURdO2kmJihoLnBsYWNlZE9yaWVudGF0aW9uc1th LmNyb3NzVGlsZUlEXT1pLG49aSxoLm1hcmtVc2VkT3JpZW50YXRpb24oZSxu LGEpKX1yZXR1cm4gbn0sRD1mdW5jdGlvbihyLG4pe2lmKGUuYWxsb3dWZXJ0 aWNhbFBsYWNlbWVudCYmYS5udW1WZXJ0aWNhbEdseXBoVmVydGljZXM+MCYm dS52ZXJ0aWNhbFRleHRCb3gpZm9yKHZhciBpPTAsbz1lLndyaXRpbmdNb2Rl cztpPG8ubGVuZ3RoJiYob1tpXT09PXQuV3JpdGluZ01vZGUudmVydGljYWw/ KEE9bigpLFM9QSk6QT1yKCksIShBJiZBLmJveCYmQS5ib3gubGVuZ3RoKSk7 aSs9MSk7ZWxzZSBBPXIoKX07aWYoZi5nZXQoInRleHQtdmFyaWFibGUtYW5j aG9yIikpe3ZhciBSPWYuZ2V0KCJ0ZXh0LXZhcmlhYmxlLWFuY2hvciIpO2lm KGgucHJldlBsYWNlbWVudCYmaC5wcmV2UGxhY2VtZW50LnZhcmlhYmxlT2Zm c2V0c1thLmNyb3NzVGlsZUlEXSl7dmFyIEY9aC5wcmV2UGxhY2VtZW50LnZh cmlhYmxlT2Zmc2V0c1thLmNyb3NzVGlsZUlEXTtSLmluZGV4T2YoRi5hbmNo b3IpPjAmJihSPVIuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09Ri5h bmNob3J9KSkudW5zaGlmdChGLmFuY2hvcil9dmFyIEI9ZnVuY3Rpb24odCxu KXtmb3IodmFyIGk9dC54Mi10LngxLHM9dC55Mi10LnkxLGw9YS50ZXh0Qm94 U2NhbGUsYz17Ym94OltdLG9mZnNjcmVlbjohMX0sdT12PzIqUi5sZW5ndGg6 Ui5sZW5ndGgsZj0wO2Y8dTsrK2Ype3ZhciBwPVJbZiVSLmxlbmd0aF0sZD1m Pj1SLmxlbmd0aDtpZigoYz1oLmF0dGVtcHRBbmNob3JQbGFjZW1lbnQocCx0 LGkscyxhLnJhZGlhbFRleHRPZmZzZXQsbCxfLHcsbyxyLGIsZCxhLGUsbikp JiZjLmJveCYmYy5ib3gubGVuZ3RoKXtrPSEwO2JyZWFrfX1yZXR1cm4gY307 RChmdW5jdGlvbigpe3JldHVybiBCKHosdC5Xcml0aW5nTW9kZS5ob3Jpem9u dGFsKX0sZnVuY3Rpb24oKXt2YXIgcj11LnZlcnRpY2FsVGV4dEJveCxuPUEm JkEuYm94JiZBLmJveC5sZW5ndGg7cmV0dXJuIGUuYWxsb3dWZXJ0aWNhbFBs YWNlbWVudCYmIW4mJmEubnVtVmVydGljYWxHbHlwaFZlcnRpY2VzPjAmJnI/ QihyLHQuV3JpdGluZ01vZGUudmVydGljYWwpOntib3g6bnVsbCxvZmZzY3Jl ZW46bnVsbH19KSxBJiYoaz1BLmJveCxNPUEub2Zmc2NyZWVuKTt2YXIgTj1J KEEmJkEuYm94KTtpZighayYmaC5wcmV2UGxhY2VtZW50KXt2YXIgaj1oLnBy ZXZQbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzW2EuY3Jvc3NUaWxlSURdO2om JihoLnZhcmlhYmxlT2Zmc2V0c1thLmNyb3NzVGlsZUlEXT1qLGgubWFya1Vz ZWRKdXN0aWZpY2F0aW9uKGUsai5hbmNob3IsYSxOKSl9fWVsc2V7dmFyIFY9 ZnVuY3Rpb24odCxuKXt2YXIgaT1oLmNvbGxpc2lvbkluZGV4LnBsYWNlQ29s bGlzaW9uQm94KHQsZi5nZXQoInRleHQtYWxsb3ctb3ZlcmxhcCIpLG8scixi LnByZWRpY2F0ZSk7cmV0dXJuIGkmJmkuYm94JiZpLmJveC5sZW5ndGgmJiho Lm1hcmtVc2VkT3JpZW50YXRpb24oZSxuLGEpLGgucGxhY2VkT3JpZW50YXRp b25zW2EuY3Jvc3NUaWxlSURdPW4pLGl9O0QoZnVuY3Rpb24oKXtyZXR1cm4g Vih6LHQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbCl9LGZ1bmN0aW9uKCl7dmFy IHI9dS52ZXJ0aWNhbFRleHRCb3g7cmV0dXJuIGUuYWxsb3dWZXJ0aWNhbFBs YWNlbWVudCYmYS5udW1WZXJ0aWNhbEdseXBoVmVydGljZXM+MCYmcj9WKHIs dC5Xcml0aW5nTW9kZS52ZXJ0aWNhbCk6e2JveDpudWxsLG9mZnNjcmVlbjpu dWxsfX0pLEkoQSYmQS5ib3gmJkEuYm94Lmxlbmd0aCl9fWs9KG09QSkmJm0u Ym94JiZtLmJveC5sZW5ndGg+MCxNPW0mJm0ub2Zmc2NyZWVuO3ZhciBVPXUu dGV4dENpcmNsZXM7aWYoVSl7dmFyIHE9ZS50ZXh0LnBsYWNlZFN5bWJvbEFy cmF5LmdldChhLmNlbnRlckp1c3RpZmllZFRleHRTeW1ib2xJbmRleCksSD10 LmV2YWx1YXRlU2l6ZUZvckZlYXR1cmUoZS50ZXh0U2l6ZURhdGEscCxxKTtF PWguY29sbGlzaW9uSW5kZXgucGxhY2VDb2xsaXNpb25DaXJjbGVzKFUsZi5n ZXQoInRleHQtYWxsb3ctb3ZlcmxhcCIpLGksbyxxLGUubGluZVZlcnRleEFy cmF5LGUuZ2x5cGhPZmZzZXRBcnJheSxILHIsbixzLHcsYi5wcmVkaWNhdGUp LGs9Zi5nZXQoInRleHQtYWxsb3ctb3ZlcmxhcCIpfHxFLmNpcmNsZXMubGVu Z3RoPjAsTT1NJiZFLm9mZnNjcmVlbn11Lmljb25GZWF0dXJlSW5kZXgmJihP PXUuaWNvbkZlYXR1cmVJbmRleCksdS5pY29uQm94JiYoVD0oTD1oLmNvbGxp c2lvbkluZGV4LnBsYWNlQ29sbGlzaW9uQm94KHUuaWNvbkJveCxmLmdldCgi aWNvbi1hbGxvdy1vdmVybGFwIiksbyxyLGIucHJlZGljYXRlKSkuYm94Lmxl bmd0aD4wLE09TSYmTC5vZmZzY3JlZW4pO3ZhciBHPWR8fDA9PT1hLm51bUhv cml6b250YWxHbHlwaFZlcnRpY2VzJiYwPT09YS5udW1WZXJ0aWNhbEdseXBo VmVydGljZXMsWT1nfHwwPT09YS5udW1JY29uVmVydGljZXM7R3x8WT9ZP0d8 fChUPVQmJmspOms9VCYmazpUPWs9VCYmayxrJiZtJiZtLmJveCYmKFMmJlMu Ym94JiZQP2guY29sbGlzaW9uSW5kZXguaW5zZXJ0Q29sbGlzaW9uQm94KG0u Ym94LGYuZ2V0KCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnQiKSxlLmJ1Y2tldElu c3RhbmNlSWQsUCxiLklEKTpoLmNvbGxpc2lvbkluZGV4Lmluc2VydENvbGxp c2lvbkJveChtLmJveCxmLmdldCgidGV4dC1pZ25vcmUtcGxhY2VtZW50Iiks ZS5idWNrZXRJbnN0YW5jZUlkLEMsYi5JRCkpLFQmJkwmJmguY29sbGlzaW9u SW5kZXguaW5zZXJ0Q29sbGlzaW9uQm94KEwuYm94LGYuZ2V0KCJpY29uLWln bm9yZS1wbGFjZW1lbnQiKSxlLmJ1Y2tldEluc3RhbmNlSWQsTyxiLklEKSxr JiZFJiZoLmNvbGxpc2lvbkluZGV4Lmluc2VydENvbGxpc2lvbkNpcmNsZXMo RS5jaXJjbGVzLGYuZ2V0KCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnQiKSxlLmJ1 Y2tldEluc3RhbmNlSWQsQyxiLklEKSxoLnBsYWNlbWVudHNbYS5jcm9zc1Rp bGVJRF09bmV3IGZlKGt8fHksVHx8eCxNfHxlLmp1c3RSZWxvYWRlZCksY1th LmNyb3NzVGlsZUlEXT0hMH19O2lmKGspZm9yKHZhciBNPWUuZ2V0U29ydGVk U3ltYm9sSW5kZXhlcyh0aGlzLnRyYW5zZm9ybS5hbmdsZSksQT1NLmxlbmd0 aC0xO0E+PTA7LS1BKXt2YXIgUz1NW0FdO1QoZS5zeW1ib2xJbnN0YW5jZXMu Z2V0KFMpLGUuY29sbGlzaW9uQXJyYXlzW1NdKX1lbHNlIGZvcih2YXIgRT0w O0U8ZS5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoOysrRSlUKGUuc3ltYm9sSW5z dGFuY2VzLmdldChFKSxlLmNvbGxpc2lvbkFycmF5c1tFXSk7ZS5qdXN0UmVs b2FkZWQ9ITF9LHZlLnByb3RvdHlwZS5tYXJrVXNlZEp1c3RpZmljYXRpb249 ZnVuY3Rpb24oZSxyLG4sYSl7dmFyIGksbz17bGVmdDpuLmxlZnRKdXN0aWZp ZWRUZXh0U3ltYm9sSW5kZXgsY2VudGVyOm4uY2VudGVySnVzdGlmaWVkVGV4 dFN5bWJvbEluZGV4LHJpZ2h0Om4ucmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9s SW5kZXh9O2k9YT09PXQuV3JpdGluZ01vZGUudmVydGljYWw/bi52ZXJ0aWNh bFBsYWNlZFRleHRTeW1ib2xJbmRleDpvW3QuZ2V0QW5jaG9ySnVzdGlmaWNh dGlvbihyKV07Zm9yKHZhciBzPTAsbD1bbi5sZWZ0SnVzdGlmaWVkVGV4dFN5 bWJvbEluZGV4LG4uY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LG4u cmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsbi52ZXJ0aWNhbFBsYWNl ZFRleHRTeW1ib2xJbmRleF07czxsLmxlbmd0aDtzKz0xKXt2YXIgYz1sW3Nd O2M+PTAmJihlLnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KGMpLmNyb3Nz VGlsZUlEPWk+PTAmJmMhPT1pPzA6bi5jcm9zc1RpbGVJRCl9fSx2ZS5wcm90 b3R5cGUubWFya1VzZWRPcmllbnRhdGlvbj1mdW5jdGlvbihlLHIsbil7Zm9y KHZhciBhPXI9PT10LldyaXRpbmdNb2RlLmhvcml6b250YWx8fHI9PT10Lldy aXRpbmdNb2RlLmhvcml6b250YWxPbmx5P3I6MCxpPXI9PT10LldyaXRpbmdN b2RlLnZlcnRpY2FsP3I6MCxvPTAscz1bbi5sZWZ0SnVzdGlmaWVkVGV4dFN5 bWJvbEluZGV4LG4uY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LG4u cmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXhdO288cy5sZW5ndGg7bys9 MSl7dmFyIGw9c1tvXTtlLnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KGwp LnBsYWNlZE9yaWVudGF0aW9uPWF9bi52ZXJ0aWNhbFBsYWNlZFRleHRTeW1i b2xJbmRleCYmKGUudGV4dC5wbGFjZWRTeW1ib2xBcnJheS5nZXQobi52ZXJ0 aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleCkucGxhY2VkT3JpZW50YXRpb249 aSl9LHZlLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24odCl7dGhpcy5jb21t aXRUaW1lPXQ7dmFyIGU9dGhpcy5wcmV2UGxhY2VtZW50LHI9ITEsbj1lJiYw IT09dGhpcy5mYWRlRHVyYXRpb24/KHRoaXMuY29tbWl0VGltZS1lLmNvbW1p dFRpbWUpL3RoaXMuZmFkZUR1cmF0aW9uOjEsYT1lP2Uub3BhY2l0aWVzOnt9 LGk9ZT9lLnZhcmlhYmxlT2Zmc2V0czp7fSxvPWU/ZS5wbGFjZWRPcmllbnRh dGlvbnM6e307Zm9yKHZhciBzIGluIHRoaXMucGxhY2VtZW50cyl7dmFyIGw9 dGhpcy5wbGFjZW1lbnRzW3NdLGM9YVtzXTtjPyh0aGlzLm9wYWNpdGllc1tz XT1uZXcgaGUoYyxuLGwudGV4dCxsLmljb24pLHI9cnx8bC50ZXh0IT09Yy50 ZXh0LnBsYWNlZHx8bC5pY29uIT09Yy5pY29uLnBsYWNlZCk6KHRoaXMub3Bh Y2l0aWVzW3NdPW5ldyBoZShudWxsLG4sbC50ZXh0LGwuaWNvbixsLnNraXBG YWRlKSxyPXJ8fGwudGV4dHx8bC5pY29uKX1mb3IodmFyIHUgaW4gYSl7dmFy IGg9YVt1XTtpZighdGhpcy5vcGFjaXRpZXNbdV0pe3ZhciBmPW5ldyBoZSho LG4sITEsITEpO2YuaXNIaWRkZW4oKXx8KHRoaXMub3BhY2l0aWVzW3VdPWYs cj1yfHxoLnRleHQucGxhY2VkfHxoLmljb24ucGxhY2VkKX19Zm9yKHZhciBw IGluIGkpdGhpcy52YXJpYWJsZU9mZnNldHNbcF18fCF0aGlzLm9wYWNpdGll c1twXXx8dGhpcy5vcGFjaXRpZXNbcF0uaXNIaWRkZW4oKXx8KHRoaXMudmFy aWFibGVPZmZzZXRzW3BdPWlbcF0pO2Zvcih2YXIgZCBpbiBvKXRoaXMucGxh Y2VkT3JpZW50YXRpb25zW2RdfHwhdGhpcy5vcGFjaXRpZXNbZF18fHRoaXMu b3BhY2l0aWVzW2RdLmlzSGlkZGVuKCl8fCh0aGlzLnBsYWNlZE9yaWVudGF0 aW9uc1tkXT1vW2RdKTtyP3RoaXMubGFzdFBsYWNlbWVudENoYW5nZVRpbWU9 dDoibnVtYmVyIiE9dHlwZW9mIHRoaXMubGFzdFBsYWNlbWVudENoYW5nZVRp bWUmJih0aGlzLmxhc3RQbGFjZW1lbnRDaGFuZ2VUaW1lPWU/ZS5sYXN0UGxh Y2VtZW50Q2hhbmdlVGltZTp0KX0sdmUucHJvdG90eXBlLnVwZGF0ZUxheWVy T3BhY2l0aWVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXt9LG49MCxhPWU7 bjxhLmxlbmd0aDtuKz0xKXt2YXIgaT1hW25dLG89aS5nZXRCdWNrZXQodCk7 byYmaS5sYXRlc3RGZWF0dXJlSW5kZXgmJnQuaWQ9PT1vLmxheWVySWRzWzBd JiZ0aGlzLnVwZGF0ZUJ1Y2tldE9wYWNpdGllcyhvLHIsaS5jb2xsaXNpb25C b3hBcnJheSl9fSx2ZS5wcm90b3R5cGUudXBkYXRlQnVja2V0T3BhY2l0aWVz PWZ1bmN0aW9uKGUscixuKXtlLmhhc1RleHREYXRhKCkmJmUudGV4dC5vcGFj aXR5VmVydGV4QXJyYXkuY2xlYXIoKSxlLmhhc0ljb25EYXRhKCkmJmUuaWNv bi5vcGFjaXR5VmVydGV4QXJyYXkuY2xlYXIoKSxlLmhhc0NvbGxpc2lvbkJv eERhdGEoKSYmZS5jb2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QXJyYXku Y2xlYXIoKSxlLmhhc0NvbGxpc2lvbkNpcmNsZURhdGEoKSYmZS5jb2xsaXNp b25DaXJjbGUuY29sbGlzaW9uVmVydGV4QXJyYXkuY2xlYXIoKTt2YXIgYT1l LmxheWVyc1swXS5sYXlvdXQsaT1uZXcgaGUobnVsbCwwLCExLCExLCEwKSxv PWEuZ2V0KCJ0ZXh0LWFsbG93LW92ZXJsYXAiKSxzPWEuZ2V0KCJpY29uLWFs bG93LW92ZXJsYXAiKSxsPWEuZ2V0KCJ0ZXh0LXZhcmlhYmxlLWFuY2hvciIp LGM9Im1hcCI9PT1hLmdldCgidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiKSx1 PSJtYXAiPT09YS5nZXQoInRleHQtcGl0Y2gtYWxpZ25tZW50IiksaD1uZXcg aGUobnVsbCwwLG8mJihzfHwhZS5oYXNJY29uRGF0YSgpfHxhLmdldCgiaWNv bi1vcHRpb25hbCIpKSxzJiYob3x8IWUuaGFzVGV4dERhdGEoKXx8YS5nZXQo InRleHQtb3B0aW9uYWwiKSksITApOyFlLmNvbGxpc2lvbkFycmF5cyYmbiYm KGUuaGFzQ29sbGlzaW9uQm94RGF0YSgpfHxlLmhhc0NvbGxpc2lvbkNpcmNs ZURhdGEoKSkmJmUuZGVzZXJpYWxpemVDb2xsaXNpb25Cb3hlcyhuKTtmb3Io dmFyIGY9MDtmPGUuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDtmKyspe3ZhciBw PWUuc3ltYm9sSW5zdGFuY2VzLmdldChmKSxkPXAubnVtSG9yaXpvbnRhbEds eXBoVmVydGljZXMsZz1wLm51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlcyx2PXAu Y3Jvc3NUaWxlSUQsbT1yW3ZdLHk9dGhpcy5vcGFjaXRpZXNbdl07bT95PWk6 eXx8KHk9aCx0aGlzLm9wYWNpdGllc1t2XT15KSxyW3ZdPSEwO3ZhciB4PWQ+ MHx8Zz4wLGI9cC5udW1JY29uVmVydGljZXM+MDtpZih4KXtmb3IodmFyIF89 TWUoeS50ZXh0KSx3PShkK2cpLzQsaz0wO2s8dztrKyspZS50ZXh0Lm9wYWNp dHlWZXJ0ZXhBcnJheS5lbXBsYWNlQmFjayhfKTt2YXIgVD15LnRleHQuaXNI aWRkZW4oKT8xOjAsTT10aGlzLnBsYWNlZE9yaWVudGF0aW9uc1twLmNyb3Nz VGlsZUlEXSxBPU09PT10LldyaXRpbmdNb2RlLmhvcml6b250YWx8fE09PT10 LldyaXRpbmdNb2RlLmhvcml6b250YWxPbmx5PzE6MCxTPU09PT10LldyaXRp bmdNb2RlLnZlcnRpY2FsPzE6MDtbcC5yaWdodEp1c3RpZmllZFRleHRTeW1i b2xJbmRleCxwLmNlbnRlckp1c3RpZmllZFRleHRTeW1ib2xJbmRleCxwLmxl ZnRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXhdLmZvckVhY2goZnVuY3Rpb24o dCl7dD49MCYmKGUudGV4dC5wbGFjZWRTeW1ib2xBcnJheS5nZXQodCkuaGlk ZGVuPVR8fFMpfSkscC52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleD49 MCYmKGUudGV4dC5wbGFjZWRTeW1ib2xBcnJheS5nZXQocC52ZXJ0aWNhbFBs YWNlZFRleHRTeW1ib2xJbmRleCkuaGlkZGVuPVR8fEEpO3ZhciBFPXRoaXMu dmFyaWFibGVPZmZzZXRzW3AuY3Jvc3NUaWxlSURdO0UmJnRoaXMubWFya1Vz ZWRKdXN0aWZpY2F0aW9uKGUsRS5hbmNob3IscCxNKTt2YXIgTD10aGlzLnBs YWNlZE9yaWVudGF0aW9uc1twLmNyb3NzVGlsZUlEXTtMJiYodGhpcy5tYXJr VXNlZEp1c3RpZmljYXRpb24oZSwibGVmdCIscCxMKSx0aGlzLm1hcmtVc2Vk T3JpZW50YXRpb24oZSxMLHApKX1pZihiKXtmb3IodmFyIEM9TWUoeS5pY29u KSxQPTA7UDxwLm51bUljb25WZXJ0aWNlcy80O1ArKyllLmljb24ub3BhY2l0 eVZlcnRleEFycmF5LmVtcGxhY2VCYWNrKEMpO2UuaWNvbi5wbGFjZWRTeW1i b2xBcnJheS5nZXQoZikuaGlkZGVuPXkuaWNvbi5pc0hpZGRlbigpfWlmKGUu aGFzQ29sbGlzaW9uQm94RGF0YSgpfHxlLmhhc0NvbGxpc2lvbkNpcmNsZURh dGEoKSl7dmFyIE89ZS5jb2xsaXNpb25BcnJheXNbZl07aWYoTyl7aWYoTy50 ZXh0Qm94KXt2YXIgej1uZXcgdC5Qb2ludCgwLDApLEk9ITA7aWYobCl7dmFy IEQ9dGhpcy52YXJpYWJsZU9mZnNldHNbdl07RD8oej1nZShELmFuY2hvcixE LndpZHRoLEQuaGVpZ2h0LEQucmFkaWFsT2Zmc2V0LEQudGV4dEJveFNjYWxl KSxjJiZ6Ll9yb3RhdGUodT90aGlzLnRyYW5zZm9ybS5hbmdsZTotdGhpcy50 cmFuc2Zvcm0uYW5nbGUpKTpJPSExfW1lKGUuY29sbGlzaW9uQm94LmNvbGxp c2lvblZlcnRleEFycmF5LHkudGV4dC5wbGFjZWQsIUksei54LHoueSl9Ty5p Y29uQm94JiZtZShlLmNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJh eSx5Lmljb24ucGxhY2VkLCExKTt2YXIgUj1PLnRleHRDaXJjbGVzO2lmKFIm JmUuaGFzQ29sbGlzaW9uQ2lyY2xlRGF0YSgpKWZvcih2YXIgRj0wO0Y8Ui5s ZW5ndGg7Ris9NSl7dmFyIEI9bXx8MD09PVJbRis0XTttZShlLmNvbGxpc2lv bkNpcmNsZS5jb2xsaXNpb25WZXJ0ZXhBcnJheSx5LnRleHQucGxhY2VkLEIp fX19fWUuc29ydEZlYXR1cmVzKHRoaXMudHJhbnNmb3JtLmFuZ2xlKSx0aGlz LnJldGFpbmVkUXVlcnlEYXRhW2UuYnVja2V0SW5zdGFuY2VJZF0mJih0aGlz LnJldGFpbmVkUXVlcnlEYXRhW2UuYnVja2V0SW5zdGFuY2VJZF0uZmVhdHVy ZVNvcnRPcmRlcj1lLmZlYXR1cmVTb3J0T3JkZXIpLGUuaGFzVGV4dERhdGEo KSYmZS50ZXh0Lm9wYWNpdHlWZXJ0ZXhCdWZmZXImJmUudGV4dC5vcGFjaXR5 VmVydGV4QnVmZmVyLnVwZGF0ZURhdGEoZS50ZXh0Lm9wYWNpdHlWZXJ0ZXhB cnJheSksZS5oYXNJY29uRGF0YSgpJiZlLmljb24ub3BhY2l0eVZlcnRleEJ1 ZmZlciYmZS5pY29uLm9wYWNpdHlWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShl Lmljb24ub3BhY2l0eVZlcnRleEFycmF5KSxlLmhhc0NvbGxpc2lvbkJveERh dGEoKSYmZS5jb2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QnVmZmVyJiZl LmNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhCdWZmZXIudXBkYXRlRGF0 YShlLmNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheSksZS5oYXND b2xsaXNpb25DaXJjbGVEYXRhKCkmJmUuY29sbGlzaW9uQ2lyY2xlLmNvbGxp c2lvblZlcnRleEJ1ZmZlciYmZS5jb2xsaXNpb25DaXJjbGUuY29sbGlzaW9u VmVydGV4QnVmZmVyLnVwZGF0ZURhdGEoZS5jb2xsaXNpb25DaXJjbGUuY29s bGlzaW9uVmVydGV4QXJyYXkpfSx2ZS5wcm90b3R5cGUuc3ltYm9sRmFkZUNo YW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gMD09PXRoaXMuZmFkZUR1cmF0aW9u PzE6KHQtdGhpcy5jb21taXRUaW1lKS90aGlzLmZhZGVEdXJhdGlvbn0sdmUu cHJvdG90eXBlLmhhc1RyYW5zaXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiB0 aGlzLnN0YWxlfHx0LXRoaXMubGFzdFBsYWNlbWVudENoYW5nZVRpbWU8dGhp cy5mYWRlRHVyYXRpb259LHZlLnByb3RvdHlwZS5zdGlsbFJlY2VudD1mdW5j dGlvbih0KXtyZXR1cm4gdGhpcy5jb21taXRUaW1lK3RoaXMuZmFkZUR1cmF0 aW9uPnR9LHZlLnByb3RvdHlwZS5zZXRTdGFsZT1mdW5jdGlvbigpe3RoaXMu c3RhbGU9ITB9O3ZhciB5ZT1NYXRoLnBvdygyLDI1KSx4ZT1NYXRoLnBvdygy LDI0KSxiZT1NYXRoLnBvdygyLDE3KSxfZT1NYXRoLnBvdygyLDE2KSx3ZT1N YXRoLnBvdygyLDkpLGtlPU1hdGgucG93KDIsOCksVGU9TWF0aC5wb3coMiwx KTtmdW5jdGlvbiBNZSh0KXtpZigwPT09dC5vcGFjaXR5JiYhdC5wbGFjZWQp cmV0dXJuIDA7aWYoMT09PXQub3BhY2l0eSYmdC5wbGFjZWQpcmV0dXJuIDQy OTQ5NjcyOTU7dmFyIGU9dC5wbGFjZWQ/MTowLHI9TWF0aC5mbG9vcigxMjcq dC5vcGFjaXR5KTtyZXR1cm4gcip5ZStlKnhlK3IqYmUrZSpfZStyKndlK2Uq a2UrcipUZStlfXZhciBBZT1mdW5jdGlvbigpe3RoaXMuX2N1cnJlbnRUaWxl SW5kZXg9MCx0aGlzLl9zZWVuQ3Jvc3NUaWxlSURzPXt9fTtBZS5wcm90b3R5 cGUuY29udGludWVQbGFjZW1lbnQ9ZnVuY3Rpb24odCxlLHIsbixhKXtmb3Io O3RoaXMuX2N1cnJlbnRUaWxlSW5kZXg8dC5sZW5ndGg7KXt2YXIgaT10W3Ro aXMuX2N1cnJlbnRUaWxlSW5kZXhdO2lmKGUucGxhY2VMYXllclRpbGUobixp LHIsdGhpcy5fc2VlbkNyb3NzVGlsZUlEcyksdGhpcy5fY3VycmVudFRpbGVJ bmRleCsrLGEoKSlyZXR1cm4hMH19O3ZhciBTZT1mdW5jdGlvbih0LGUscixu LGEsaSxvKXt0aGlzLnBsYWNlbWVudD1uZXcgdmUodCxhLGksbyksdGhpcy5f Y3VycmVudFBsYWNlbWVudEluZGV4PWUubGVuZ3RoLTEsdGhpcy5fZm9yY2VG dWxsUGxhY2VtZW50PXIsdGhpcy5fc2hvd0NvbGxpc2lvbkJveGVzPW4sdGhp cy5fZG9uZT0hMX07U2UucHJvdG90eXBlLmlzRG9uZT1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9kb25lfSxTZS5wcm90b3R5cGUuY29udGludWVQbGFjZW1l bnQ9ZnVuY3Rpb24oZSxyLG4pe2Zvcih2YXIgYT10aGlzLGk9dC5icm93c2Vy Lm5vdygpLG89ZnVuY3Rpb24oKXt2YXIgZT10LmJyb3dzZXIubm93KCktaTty ZXR1cm4hYS5fZm9yY2VGdWxsUGxhY2VtZW50JiZlPjJ9O3RoaXMuX2N1cnJl bnRQbGFjZW1lbnRJbmRleD49MDspe3ZhciBzPXJbZVt0aGlzLl9jdXJyZW50 UGxhY2VtZW50SW5kZXhdXSxsPXRoaXMucGxhY2VtZW50LmNvbGxpc2lvbklu ZGV4LnRyYW5zZm9ybS56b29tO2lmKCJzeW1ib2wiPT09cy50eXBlJiYoIXMu bWluem9vbXx8cy5taW56b29tPD1sKSYmKCFzLm1heHpvb218fHMubWF4em9v bT5sKSl7aWYodGhpcy5faW5Qcm9ncmVzc0xheWVyfHwodGhpcy5faW5Qcm9n cmVzc0xheWVyPW5ldyBBZSksdGhpcy5faW5Qcm9ncmVzc0xheWVyLmNvbnRp bnVlUGxhY2VtZW50KG5bcy5zb3VyY2VdLHRoaXMucGxhY2VtZW50LHRoaXMu X3Nob3dDb2xsaXNpb25Cb3hlcyxzLG8pKXJldHVybjtkZWxldGUgdGhpcy5f aW5Qcm9ncmVzc0xheWVyfXRoaXMuX2N1cnJlbnRQbGFjZW1lbnRJbmRleC0t fXRoaXMuX2RvbmU9ITB9LFNlLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24o dCl7cmV0dXJuIHRoaXMucGxhY2VtZW50LmNvbW1pdCh0KSx0aGlzLnBsYWNl bWVudH07dmFyIEVlPTUxMi90LkVYVEVOVC8yLExlPWZ1bmN0aW9uKHQsZSxy KXt0aGlzLnRpbGVJRD10LHRoaXMuaW5kZXhlZFN5bWJvbEluc3RhbmNlcz17 fSx0aGlzLmJ1Y2tldEluc3RhbmNlSWQ9cjtmb3IodmFyIG49MDtuPGUubGVu Z3RoO24rKyl7dmFyIGE9ZS5nZXQobiksaT1hLmtleTt0aGlzLmluZGV4ZWRT eW1ib2xJbnN0YW5jZXNbaV18fCh0aGlzLmluZGV4ZWRTeW1ib2xJbnN0YW5j ZXNbaV09W10pLHRoaXMuaW5kZXhlZFN5bWJvbEluc3RhbmNlc1tpXS5wdXNo KHtjcm9zc1RpbGVJRDphLmNyb3NzVGlsZUlELGNvb3JkOnRoaXMuZ2V0U2Nh bGVkQ29vcmRpbmF0ZXMoYSx0KX0pfX07TGUucHJvdG90eXBlLmdldFNjYWxl ZENvb3JkaW5hdGVzPWZ1bmN0aW9uKGUscil7dmFyIG49ci5jYW5vbmljYWwu ei10aGlzLnRpbGVJRC5jYW5vbmljYWwueixhPUVlL01hdGgucG93KDIsbik7 cmV0dXJue3g6TWF0aC5mbG9vcigoci5jYW5vbmljYWwueCp0LkVYVEVOVCtl LmFuY2hvclgpKmEpLHk6TWF0aC5mbG9vcigoci5jYW5vbmljYWwueSp0LkVY VEVOVCtlLmFuY2hvclkpKmEpfX0sTGUucHJvdG90eXBlLmZpbmRNYXRjaGVz PWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49dGhpcy50aWxlSUQuY2Fub25p Y2FsLno8ZS5jYW5vbmljYWwuej8xOk1hdGgucG93KDIsdGhpcy50aWxlSUQu Y2Fub25pY2FsLnotZS5jYW5vbmljYWwueiksYT0wO2E8dC5sZW5ndGg7YSsr KXt2YXIgaT10LmdldChhKTtpZighaS5jcm9zc1RpbGVJRCl7dmFyIG89dGhp cy5pbmRleGVkU3ltYm9sSW5zdGFuY2VzW2kua2V5XTtpZihvKWZvcih2YXIg cz10aGlzLmdldFNjYWxlZENvb3JkaW5hdGVzKGksZSksbD0wLGM9bztsPGMu bGVuZ3RoO2wrPTEpe3ZhciB1PWNbbF07aWYoTWF0aC5hYnModS5jb29yZC54 LXMueCk8PW4mJk1hdGguYWJzKHUuY29vcmQueS1zLnkpPD1uJiYhclt1LmNy b3NzVGlsZUlEXSl7clt1LmNyb3NzVGlsZUlEXT0hMCxpLmNyb3NzVGlsZUlE PXUuY3Jvc3NUaWxlSUQ7YnJlYWt9fX19fTt2YXIgQ2U9ZnVuY3Rpb24oKXt0 aGlzLm1heENyb3NzVGlsZUlEPTB9O0NlLnByb3RvdHlwZS5nZW5lcmF0ZT1m dW5jdGlvbigpe3JldHVybisrdGhpcy5tYXhDcm9zc1RpbGVJRH07dmFyIFBl PWZ1bmN0aW9uKCl7dGhpcy5pbmRleGVzPXt9LHRoaXMudXNlZENyb3NzVGls ZUlEcz17fSx0aGlzLmxuZz0wfTtQZS5wcm90b3R5cGUuaGFuZGxlV3JhcEp1 bXA9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5yb3VuZCgodC10aGlzLmxuZykv MzYwKTtpZigwIT09ZSlmb3IodmFyIHIgaW4gdGhpcy5pbmRleGVzKXt2YXIg bj10aGlzLmluZGV4ZXNbcl0sYT17fTtmb3IodmFyIGkgaW4gbil7dmFyIG89 bltpXTtvLnRpbGVJRD1vLnRpbGVJRC51bndyYXBUbyhvLnRpbGVJRC53cmFw K2UpLGFbby50aWxlSUQua2V5XT1vfXRoaXMuaW5kZXhlc1tyXT1hfXRoaXMu bG5nPXR9LFBlLnByb3RvdHlwZS5hZGRCdWNrZXQ9ZnVuY3Rpb24odCxlLHIp e2lmKHRoaXMuaW5kZXhlc1t0Lm92ZXJzY2FsZWRaXSYmdGhpcy5pbmRleGVz W3Qub3ZlcnNjYWxlZFpdW3Qua2V5XSl7aWYodGhpcy5pbmRleGVzW3Qub3Zl cnNjYWxlZFpdW3Qua2V5XS5idWNrZXRJbnN0YW5jZUlkPT09ZS5idWNrZXRJ bnN0YW5jZUlkKXJldHVybiExO3RoaXMucmVtb3ZlQnVja2V0Q3Jvc3NUaWxl SURzKHQub3ZlcnNjYWxlZFosdGhpcy5pbmRleGVzW3Qub3ZlcnNjYWxlZFpd W3Qua2V5XSl9Zm9yKHZhciBuPTA7bjxlLnN5bWJvbEluc3RhbmNlcy5sZW5n dGg7bisrKWUuc3ltYm9sSW5zdGFuY2VzLmdldChuKS5jcm9zc1RpbGVJRD0w O3RoaXMudXNlZENyb3NzVGlsZUlEc1t0Lm92ZXJzY2FsZWRaXXx8KHRoaXMu dXNlZENyb3NzVGlsZUlEc1t0Lm92ZXJzY2FsZWRaXT17fSk7dmFyIGE9dGhp cy51c2VkQ3Jvc3NUaWxlSURzW3Qub3ZlcnNjYWxlZFpdO2Zvcih2YXIgaSBp biB0aGlzLmluZGV4ZXMpe3ZhciBvPXRoaXMuaW5kZXhlc1tpXTtpZihOdW1i ZXIoaSk+dC5vdmVyc2NhbGVkWilmb3IodmFyIHMgaW4gbyl7dmFyIGw9b1tz XTtsLnRpbGVJRC5pc0NoaWxkT2YodCkmJmwuZmluZE1hdGNoZXMoZS5zeW1i b2xJbnN0YW5jZXMsdCxhKX1lbHNle3ZhciBjPW9bdC5zY2FsZWRUbyhOdW1i ZXIoaSkpLmtleV07YyYmYy5maW5kTWF0Y2hlcyhlLnN5bWJvbEluc3RhbmNl cyx0LGEpfX1mb3IodmFyIHU9MDt1PGUuc3ltYm9sSW5zdGFuY2VzLmxlbmd0 aDt1Kyspe3ZhciBoPWUuc3ltYm9sSW5zdGFuY2VzLmdldCh1KTtoLmNyb3Nz VGlsZUlEfHwoaC5jcm9zc1RpbGVJRD1yLmdlbmVyYXRlKCksYVtoLmNyb3Nz VGlsZUlEXT0hMCl9cmV0dXJuIHZvaWQgMD09PXRoaXMuaW5kZXhlc1t0Lm92 ZXJzY2FsZWRaXSYmKHRoaXMuaW5kZXhlc1t0Lm92ZXJzY2FsZWRaXT17fSks dGhpcy5pbmRleGVzW3Qub3ZlcnNjYWxlZFpdW3Qua2V5XT1uZXcgTGUodCxl LnN5bWJvbEluc3RhbmNlcyxlLmJ1Y2tldEluc3RhbmNlSWQpLCEwfSxQZS5w cm90b3R5cGUucmVtb3ZlQnVja2V0Q3Jvc3NUaWxlSURzPWZ1bmN0aW9uKHQs ZSl7Zm9yKHZhciByIGluIGUuaW5kZXhlZFN5bWJvbEluc3RhbmNlcylmb3Io dmFyIG49MCxhPWUuaW5kZXhlZFN5bWJvbEluc3RhbmNlc1tyXTtuPGEubGVu Z3RoO24rPTEpe3ZhciBpPWFbbl07ZGVsZXRlIHRoaXMudXNlZENyb3NzVGls ZUlEc1t0XVtpLmNyb3NzVGlsZUlEXX19LFBlLnByb3RvdHlwZS5yZW1vdmVT dGFsZUJ1Y2tldHM9ZnVuY3Rpb24odCl7dmFyIGU9ITE7Zm9yKHZhciByIGlu IHRoaXMuaW5kZXhlcyl7dmFyIG49dGhpcy5pbmRleGVzW3JdO2Zvcih2YXIg YSBpbiBuKXRbblthXS5idWNrZXRJbnN0YW5jZUlkXXx8KHRoaXMucmVtb3Zl QnVja2V0Q3Jvc3NUaWxlSURzKHIsblthXSksZGVsZXRlIG5bYV0sZT0hMCl9 cmV0dXJuIGV9O3ZhciBPZT1mdW5jdGlvbigpe3RoaXMubGF5ZXJJbmRleGVz PXt9LHRoaXMuY3Jvc3NUaWxlSURzPW5ldyBDZSx0aGlzLm1heEJ1Y2tldElu c3RhbmNlSWQ9MCx0aGlzLmJ1Y2tldHNJbkN1cnJlbnRQbGFjZW1lbnQ9e319 O09lLnByb3RvdHlwZS5hZGRMYXllcj1mdW5jdGlvbih0LGUscil7dmFyIG49 dGhpcy5sYXllckluZGV4ZXNbdC5pZF07dm9pZCAwPT09biYmKG49dGhpcy5s YXllckluZGV4ZXNbdC5pZF09bmV3IFBlKTt2YXIgYT0hMSxpPXt9O24uaGFu ZGxlV3JhcEp1bXAocik7Zm9yKHZhciBvPTAscz1lO288cy5sZW5ndGg7bys9 MSl7dmFyIGw9c1tvXSxjPWwuZ2V0QnVja2V0KHQpO2MmJnQuaWQ9PT1jLmxh eWVySWRzWzBdJiYoYy5idWNrZXRJbnN0YW5jZUlkfHwoYy5idWNrZXRJbnN0 YW5jZUlkPSsrdGhpcy5tYXhCdWNrZXRJbnN0YW5jZUlkKSxuLmFkZEJ1Y2tl dChsLnRpbGVJRCxjLHRoaXMuY3Jvc3NUaWxlSURzKSYmKGE9ITApLGlbYy5i dWNrZXRJbnN0YW5jZUlkXT0hMCl9cmV0dXJuIG4ucmVtb3ZlU3RhbGVCdWNr ZXRzKGkpJiYoYT0hMCksYX0sT2UucHJvdG90eXBlLnBydW5lVW51c2VkTGF5 ZXJzPWZ1bmN0aW9uKHQpe3ZhciBlPXt9O2Zvcih2YXIgciBpbiB0LmZvckVh Y2goZnVuY3Rpb24odCl7ZVt0XT0hMH0pLHRoaXMubGF5ZXJJbmRleGVzKWVb cl18fGRlbGV0ZSB0aGlzLmxheWVySW5kZXhlc1tyXX07dmFyIHplPWZ1bmN0 aW9uKGUscil7cmV0dXJuIHQuZW1pdFZhbGlkYXRpb25FcnJvcnMoZSxyJiZy LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4ic291cmNlLmNhbnZhcyIhPT10 LmlkZW50aWZpZXJ9KSl9LEllPXQucGljayhOdCxbImFkZExheWVyIiwicmVt b3ZlTGF5ZXIiLCJzZXRQYWludFByb3BlcnR5Iiwic2V0TGF5b3V0UHJvcGVy dHkiLCJzZXRGaWx0ZXIiLCJhZGRTb3VyY2UiLCJyZW1vdmVTb3VyY2UiLCJz ZXRMYXllclpvb21SYW5nZSIsInNldExpZ2h0Iiwic2V0VHJhbnNpdGlvbiIs InNldEdlb0pTT05Tb3VyY2VEYXRhIl0pLERlPXQucGljayhOdCxbInNldENl bnRlciIsInNldFpvb20iLCJzZXRCZWFyaW5nIiwic2V0UGl0Y2giXSksUmU9 ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihuLGEpe3ZhciBpPXRoaXM7dm9pZCAw PT09YSYmKGE9e30pLGUuY2FsbCh0aGlzKSx0aGlzLm1hcD1uLHRoaXMuZGlz cGF0Y2hlcj1uZXcgVCgoRHR8fChEdD1uZXcgSXQpLER0KSx0aGlzKSx0aGlz LmltYWdlTWFuYWdlcj1uZXcgZix0aGlzLmltYWdlTWFuYWdlci5zZXRFdmVu dGVkUGFyZW50KHRoaXMpLHRoaXMuZ2x5cGhNYW5hZ2VyPW5ldyB4KG4uX3Jl cXVlc3RNYW5hZ2VyLGEubG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5KSx0aGlz LmxpbmVBdGxhcz1uZXcgaygyNTYsNTEyKSx0aGlzLmNyb3NzVGlsZVN5bWJv bEluZGV4PW5ldyBPZSx0aGlzLl9sYXllcnM9e30sdGhpcy5fb3JkZXI9W10s dGhpcy5zb3VyY2VDYWNoZXM9e30sdGhpcy56b29tSGlzdG9yeT1uZXcgdC5a b29tSGlzdG9yeSx0aGlzLl9sb2FkZWQ9ITEsdGhpcy5fcmVzZXRVcGRhdGVz KCksdGhpcy5kaXNwYXRjaGVyLmJyb2FkY2FzdCgic2V0UmVmZXJyZXIiLHQu Z2V0UmVmZXJyZXIoKSk7dmFyIG89dGhpczt0aGlzLl9ydGxUZXh0UGx1Z2lu Q2FsbGJhY2s9ci5yZWdpc3RlckZvclBsdWdpbkF2YWlsYWJpbGl0eShmdW5j dGlvbih0KXtmb3IodmFyIGUgaW4gby5kaXNwYXRjaGVyLmJyb2FkY2FzdCgi bG9hZFJUTFRleHRQbHVnaW4iLHQucGx1Z2luVVJMLHQuY29tcGxldGlvbkNh bGxiYWNrKSxvLnNvdXJjZUNhY2hlcylvLnNvdXJjZUNhY2hlc1tlXS5yZWxv YWQoKX0pLHRoaXMub24oImRhdGEiLGZ1bmN0aW9uKHQpe2lmKCJzb3VyY2Ui PT09dC5kYXRhVHlwZSYmIm1ldGFkYXRhIj09PXQuc291cmNlRGF0YVR5cGUp e3ZhciBlPWkuc291cmNlQ2FjaGVzW3Quc291cmNlSWRdO2lmKGUpe3ZhciBy PWUuZ2V0U291cmNlKCk7aWYociYmci52ZWN0b3JMYXllcklkcylmb3IodmFy IG4gaW4gaS5fbGF5ZXJzKXt2YXIgYT1pLl9sYXllcnNbbl07YS5zb3VyY2U9 PT1yLmlkJiZpLl92YWxpZGF0ZUxheWVyKGEpfX19fSl9cmV0dXJuIGUmJihy Ll9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUu cHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJvdG90 eXBlLmxvYWRVUkw9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzO3ZvaWQgMD09 PXImJihyPXt9KSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImRhdGFsb2FkaW5n Iix7ZGF0YVR5cGU6InN0eWxlIn0pKTt2YXIgYT0iYm9vbGVhbiI9PXR5cGVv ZiByLnZhbGlkYXRlP3IudmFsaWRhdGU6IXQuaXNNYXBib3hVUkwoZSk7ZT10 aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIubm9ybWFsaXplU3R5bGVVUkwoZSxy LmFjY2Vzc1Rva2VuKTt2YXIgaT10aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIu dHJhbnNmb3JtUmVxdWVzdChlLHQuUmVzb3VyY2VUeXBlLlN0eWxlKTt0aGlz Ll9yZXF1ZXN0PXQuZ2V0SlNPTihpLGZ1bmN0aW9uKGUscil7bi5fcmVxdWVz dD1udWxsLGU/bi5maXJlKG5ldyB0LkVycm9yRXZlbnQoZSkpOnImJm4uX2xv YWQocixhKX0pfSxyLnByb3RvdHlwZS5sb2FkSlNPTj1mdW5jdGlvbihlLHIp e3ZhciBuPXRoaXM7dm9pZCAwPT09ciYmKHI9e30pLHRoaXMuZmlyZShuZXcg dC5FdmVudCgiZGF0YWxvYWRpbmciLHtkYXRhVHlwZToic3R5bGUifSkpLHRo aXMuX3JlcXVlc3Q9dC5icm93c2VyLmZyYW1lKGZ1bmN0aW9uKCl7bi5fcmVx dWVzdD1udWxsLG4uX2xvYWQoZSwhMSE9PXIudmFsaWRhdGUpfSl9LHIucHJv dG90eXBlLl9sb2FkPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpcztpZighcnx8 IXplKHRoaXMsdC52YWxpZGF0ZVN0eWxlKGUpKSl7Zm9yKHZhciBhIGluIHRo aXMuX2xvYWRlZD0hMCx0aGlzLnN0eWxlc2hlZXQ9ZSxlLnNvdXJjZXMpdGhp cy5hZGRTb3VyY2UoYSxlLnNvdXJjZXNbYV0se3ZhbGlkYXRlOiExfSk7ZS5z cHJpdGU/dGhpcy5fc3ByaXRlUmVxdWVzdD1mdW5jdGlvbihlLHIsbil7dmFy IGEsaSxvLHM9dC5icm93c2VyLmRldmljZVBpeGVsUmF0aW8+MT8iQDJ4Ijoi IixsPXQuZ2V0SlNPTihyLnRyYW5zZm9ybVJlcXVlc3Qoci5ub3JtYWxpemVT cHJpdGVVUkwoZSxzLCIuanNvbiIpLHQuUmVzb3VyY2VUeXBlLlNwcml0ZUpT T04pLGZ1bmN0aW9uKHQsZSl7bD1udWxsLG98fChvPXQsYT1lLHUoKSl9KSxj PXQuZ2V0SW1hZ2Uoci50cmFuc2Zvcm1SZXF1ZXN0KHIubm9ybWFsaXplU3By aXRlVVJMKGUscywiLnBuZyIpLHQuUmVzb3VyY2VUeXBlLlNwcml0ZUltYWdl KSxmdW5jdGlvbih0LGUpe2M9bnVsbCxvfHwobz10LGk9ZSx1KCkpfSk7ZnVu Y3Rpb24gdSgpe2lmKG8pbihvKTtlbHNlIGlmKGEmJmkpe3ZhciBlPXQuYnJv d3Nlci5nZXRJbWFnZURhdGEoaSkscj17fTtmb3IodmFyIHMgaW4gYSl7dmFy IGw9YVtzXSxjPWwud2lkdGgsdT1sLmhlaWdodCxoPWwueCxmPWwueSxwPWwu c2RmLGQ9bC5waXhlbFJhdGlvLGc9bmV3IHQuUkdCQUltYWdlKHt3aWR0aDpj LGhlaWdodDp1fSk7dC5SR0JBSW1hZ2UuY29weShlLGcse3g6aCx5OmZ9LHt4 OjAseTowfSx7d2lkdGg6YyxoZWlnaHQ6dX0pLHJbc109e2RhdGE6ZyxwaXhl bFJhdGlvOmQsc2RmOnB9fW4obnVsbCxyKX19cmV0dXJue2NhbmNlbDpmdW5j dGlvbigpe2wmJihsLmNhbmNlbCgpLGw9bnVsbCksYyYmKGMuY2FuY2VsKCks Yz1udWxsKX19fShlLnNwcml0ZSx0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIs ZnVuY3Rpb24oZSxyKXtpZihuLl9zcHJpdGVSZXF1ZXN0PW51bGwsZSluLmZp cmUobmV3IHQuRXJyb3JFdmVudChlKSk7ZWxzZSBpZihyKWZvcih2YXIgYSBp biByKW4uaW1hZ2VNYW5hZ2VyLmFkZEltYWdlKGEsclthXSk7bi5pbWFnZU1h bmFnZXIuc2V0TG9hZGVkKCEwKSxuLmZpcmUobmV3IHQuRXZlbnQoImRhdGEi LHtkYXRhVHlwZToic3R5bGUifSkpfSk6dGhpcy5pbWFnZU1hbmFnZXIuc2V0 TG9hZGVkKCEwKSx0aGlzLmdseXBoTWFuYWdlci5zZXRVUkwoZS5nbHlwaHMp O3ZhciBpPUJ0KHRoaXMuc3R5bGVzaGVldC5sYXllcnMpO3RoaXMuX29yZGVy PWkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSksdGhpcy5fbGF5ZXJz PXt9O2Zvcih2YXIgbz0wLHM9aTtvPHMubGVuZ3RoO28rPTEpe3ZhciBsPXNb b107KGw9dC5jcmVhdGVTdHlsZUxheWVyKGwpKS5zZXRFdmVudGVkUGFyZW50 KHRoaXMse2xheWVyOntpZDpsLmlkfX0pLHRoaXMuX2xheWVyc1tsLmlkXT1s fXRoaXMuZGlzcGF0Y2hlci5icm9hZGNhc3QoInNldExheWVycyIsdGhpcy5f c2VyaWFsaXplTGF5ZXJzKHRoaXMuX29yZGVyKSksdGhpcy5saWdodD1uZXcg dyh0aGlzLnN0eWxlc2hlZXQubGlnaHQpLHRoaXMuZmlyZShuZXcgdC5FdmVu dCgiZGF0YSIse2RhdGFUeXBlOiJzdHlsZSJ9KSksdGhpcy5maXJlKG5ldyB0 LkV2ZW50KCJzdHlsZS5sb2FkIikpfX0sci5wcm90b3R5cGUuX3ZhbGlkYXRl TGF5ZXI9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5zb3VyY2VDYWNoZXNbZS5z b3VyY2VdO2lmKHIpe3ZhciBuPWUuc291cmNlTGF5ZXI7aWYobil7dmFyIGE9 ci5nZXRTb3VyY2UoKTsoImdlb2pzb24iPT09YS50eXBlfHxhLnZlY3Rvckxh eWVySWRzJiYtMT09PWEudmVjdG9yTGF5ZXJJZHMuaW5kZXhPZihuKSkmJnRo aXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcignU291cmNlIGxh eWVyICInK24rJyIgZG9lcyBub3QgZXhpc3Qgb24gc291cmNlICInK2EuaWQr JyIgYXMgc3BlY2lmaWVkIGJ5IHN0eWxlIGxheWVyICInK2UuaWQrJyInKSkp fX19LHIucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe2lmKCF0aGlzLl9s b2FkZWQpcmV0dXJuITE7aWYoT2JqZWN0LmtleXModGhpcy5fdXBkYXRlZFNv dXJjZXMpLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHQgaW4gdGhpcy5zb3Vy Y2VDYWNoZXMpaWYoIXRoaXMuc291cmNlQ2FjaGVzW3RdLmxvYWRlZCgpKXJl dHVybiExO3JldHVybiEhdGhpcy5pbWFnZU1hbmFnZXIuaXNMb2FkZWQoKX0s ci5wcm90b3R5cGUuX3NlcmlhbGl6ZUxheWVycz1mdW5jdGlvbih0KXtmb3Io dmFyIGU9W10scj0wLG49dDtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBhPW5bcl0s aT10aGlzLl9sYXllcnNbYV07ImN1c3RvbSIhPT1pLnR5cGUmJmUucHVzaChp LnNlcmlhbGl6ZSgpKX1yZXR1cm4gZX0sci5wcm90b3R5cGUuaGFzVHJhbnNp dGlvbnM9ZnVuY3Rpb24oKXtpZih0aGlzLmxpZ2h0JiZ0aGlzLmxpZ2h0Lmhh c1RyYW5zaXRpb24oKSlyZXR1cm4hMDtmb3IodmFyIHQgaW4gdGhpcy5zb3Vy Y2VDYWNoZXMpaWYodGhpcy5zb3VyY2VDYWNoZXNbdF0uaGFzVHJhbnNpdGlv bigpKXJldHVybiEwO2Zvcih2YXIgZSBpbiB0aGlzLl9sYXllcnMpaWYodGhp cy5fbGF5ZXJzW2VdLmhhc1RyYW5zaXRpb24oKSlyZXR1cm4hMDtyZXR1cm4h MX0sci5wcm90b3R5cGUuX2NoZWNrTG9hZGVkPWZ1bmN0aW9uKCl7aWYoIXRo aXMuX2xvYWRlZCl0aHJvdyBuZXcgRXJyb3IoIlN0eWxlIGlzIG5vdCBkb25l IGxvYWRpbmciKX0sci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe2lm KHRoaXMuX2xvYWRlZCl7dmFyIHI9dGhpcy5fY2hhbmdlZDtpZih0aGlzLl9j aGFuZ2VkKXt2YXIgbj1PYmplY3Qua2V5cyh0aGlzLl91cGRhdGVkTGF5ZXJz KSxhPU9iamVjdC5rZXlzKHRoaXMuX3JlbW92ZWRMYXllcnMpO2Zvcih2YXIg aSBpbihuLmxlbmd0aHx8YS5sZW5ndGgpJiZ0aGlzLl91cGRhdGVXb3JrZXJM YXllcnMobixhKSx0aGlzLl91cGRhdGVkU291cmNlcyl7dmFyIG89dGhpcy5f dXBkYXRlZFNvdXJjZXNbaV07InJlbG9hZCI9PT1vP3RoaXMuX3JlbG9hZFNv dXJjZShpKToiY2xlYXIiPT09byYmdGhpcy5fY2xlYXJTb3VyY2UoaSl9Zm9y KHZhciBzIGluIHRoaXMuX3VwZGF0ZWRQYWludFByb3BzKXRoaXMuX2xheWVy c1tzXS51cGRhdGVUcmFuc2l0aW9ucyhlKTt0aGlzLmxpZ2h0LnVwZGF0ZVRy YW5zaXRpb25zKGUpLHRoaXMuX3Jlc2V0VXBkYXRlcygpfWZvcih2YXIgbCBp biB0aGlzLnNvdXJjZUNhY2hlcyl0aGlzLnNvdXJjZUNhY2hlc1tsXS51c2Vk PSExO2Zvcih2YXIgYz0wLHU9dGhpcy5fb3JkZXI7Yzx1Lmxlbmd0aDtjKz0x KXt2YXIgaD11W2NdLGY9dGhpcy5fbGF5ZXJzW2hdO2YucmVjYWxjdWxhdGUo ZSksIWYuaXNIaWRkZW4oZS56b29tKSYmZi5zb3VyY2UmJih0aGlzLnNvdXJj ZUNhY2hlc1tmLnNvdXJjZV0udXNlZD0hMCl9dGhpcy5saWdodC5yZWNhbGN1 bGF0ZShlKSx0aGlzLno9ZS56b29tLHImJnRoaXMuZmlyZShuZXcgdC5FdmVu dCgiZGF0YSIse2RhdGFUeXBlOiJzdHlsZSJ9KSl9fSxyLnByb3RvdHlwZS5f dXBkYXRlV29ya2VyTGF5ZXJzPWZ1bmN0aW9uKHQsZSl7dGhpcy5kaXNwYXRj aGVyLmJyb2FkY2FzdCgidXBkYXRlTGF5ZXJzIix7bGF5ZXJzOnRoaXMuX3Nl cmlhbGl6ZUxheWVycyh0KSxyZW1vdmVkSWRzOmV9KX0sci5wcm90b3R5cGUu X3Jlc2V0VXBkYXRlcz1mdW5jdGlvbigpe3RoaXMuX2NoYW5nZWQ9ITEsdGhp cy5fdXBkYXRlZExheWVycz17fSx0aGlzLl9yZW1vdmVkTGF5ZXJzPXt9LHRo aXMuX3VwZGF0ZWRTb3VyY2VzPXt9LHRoaXMuX3VwZGF0ZWRQYWludFByb3Bz PXt9fSxyLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlKXt2YXIgcj10 aGlzO2lmKHRoaXMuX2NoZWNrTG9hZGVkKCksemUodGhpcyx0LnZhbGlkYXRl U3R5bGUoZSkpKXJldHVybiExOyhlPXQuY2xvbmUkMShlKSkubGF5ZXJzPUJ0 KGUubGF5ZXJzKTt2YXIgbj1mdW5jdGlvbihlLHIpe2lmKCFlKXJldHVyblt7 Y29tbWFuZDpOdC5zZXRTdHlsZSxhcmdzOltyXX1dO3ZhciBuPVtdO3RyeXtp ZighdC5kZWVwRXF1YWwoZS52ZXJzaW9uLHIudmVyc2lvbikpcmV0dXJuW3tj b21tYW5kOk50LnNldFN0eWxlLGFyZ3M6W3JdfV07dC5kZWVwRXF1YWwoZS5j ZW50ZXIsci5jZW50ZXIpfHxuLnB1c2goe2NvbW1hbmQ6TnQuc2V0Q2VudGVy LGFyZ3M6W3IuY2VudGVyXX0pLHQuZGVlcEVxdWFsKGUuem9vbSxyLnpvb20p fHxuLnB1c2goe2NvbW1hbmQ6TnQuc2V0Wm9vbSxhcmdzOltyLnpvb21dfSks dC5kZWVwRXF1YWwoZS5iZWFyaW5nLHIuYmVhcmluZyl8fG4ucHVzaCh7Y29t bWFuZDpOdC5zZXRCZWFyaW5nLGFyZ3M6W3IuYmVhcmluZ119KSx0LmRlZXBF cXVhbChlLnBpdGNoLHIucGl0Y2gpfHxuLnB1c2goe2NvbW1hbmQ6TnQuc2V0 UGl0Y2gsYXJnczpbci5waXRjaF19KSx0LmRlZXBFcXVhbChlLnNwcml0ZSxy LnNwcml0ZSl8fG4ucHVzaCh7Y29tbWFuZDpOdC5zZXRTcHJpdGUsYXJnczpb ci5zcHJpdGVdfSksdC5kZWVwRXF1YWwoZS5nbHlwaHMsci5nbHlwaHMpfHxu LnB1c2goe2NvbW1hbmQ6TnQuc2V0R2x5cGhzLGFyZ3M6W3IuZ2x5cGhzXX0p LHQuZGVlcEVxdWFsKGUudHJhbnNpdGlvbixyLnRyYW5zaXRpb24pfHxuLnB1 c2goe2NvbW1hbmQ6TnQuc2V0VHJhbnNpdGlvbixhcmdzOltyLnRyYW5zaXRp b25dfSksdC5kZWVwRXF1YWwoZS5saWdodCxyLmxpZ2h0KXx8bi5wdXNoKHtj b21tYW5kOk50LnNldExpZ2h0LGFyZ3M6W3IubGlnaHRdfSk7dmFyIGE9e30s aT1bXTshZnVuY3Rpb24oZSxyLG4sYSl7dmFyIGk7Zm9yKGkgaW4gcj1yfHx7 fSxlPWV8fHt9KWUuaGFzT3duUHJvcGVydHkoaSkmJihyLmhhc093blByb3Bl cnR5KGkpfHxWdChpLG4sYSkpO2ZvcihpIGluIHIpci5oYXNPd25Qcm9wZXJ0 eShpKSYmKGUuaGFzT3duUHJvcGVydHkoaSk/dC5kZWVwRXF1YWwoZVtpXSxy W2ldKXx8KCJnZW9qc29uIj09PWVbaV0udHlwZSYmImdlb2pzb24iPT09cltp XS50eXBlJiZxdChlLHIsaSk/bi5wdXNoKHtjb21tYW5kOk50LnNldEdlb0pT T05Tb3VyY2VEYXRhLGFyZ3M6W2kscltpXS5kYXRhXX0pOlV0KGkscixuLGEp KTpqdChpLHIsbikpfShlLnNvdXJjZXMsci5zb3VyY2VzLGksYSk7dmFyIG89 W107ZS5sYXllcnMmJmUubGF5ZXJzLmZvckVhY2goZnVuY3Rpb24odCl7YVt0 LnNvdXJjZV0/bi5wdXNoKHtjb21tYW5kOk50LnJlbW92ZUxheWVyLGFyZ3M6 W3QuaWRdfSk6by5wdXNoKHQpfSksbj1uLmNvbmNhdChpKSxmdW5jdGlvbihl LHIsbil7cj1yfHxbXTt2YXIgYSxpLG8scyxsLGMsdSxoPShlPWV8fFtdKS5t YXAoR3QpLGY9ci5tYXAoR3QpLHA9ZS5yZWR1Y2UoWXQse30pLGQ9ci5yZWR1 Y2UoWXQse30pLGc9aC5zbGljZSgpLHY9T2JqZWN0LmNyZWF0ZShudWxsKTtm b3IoYT0wLGk9MDthPGgubGVuZ3RoO2ErKylvPWhbYV0sZC5oYXNPd25Qcm9w ZXJ0eShvKT9pKys6KG4ucHVzaCh7Y29tbWFuZDpOdC5yZW1vdmVMYXllcixh cmdzOltvXX0pLGcuc3BsaWNlKGcuaW5kZXhPZihvLGkpLDEpKTtmb3IoYT0w LGk9MDthPGYubGVuZ3RoO2ErKylvPWZbZi5sZW5ndGgtMS1hXSxnW2cubGVu Z3RoLTEtYV0hPT1vJiYocC5oYXNPd25Qcm9wZXJ0eShvKT8obi5wdXNoKHtj b21tYW5kOk50LnJlbW92ZUxheWVyLGFyZ3M6W29dfSksZy5zcGxpY2UoZy5s YXN0SW5kZXhPZihvLGcubGVuZ3RoLWkpLDEpKTppKyssYz1nW2cubGVuZ3Ro LWFdLG4ucHVzaCh7Y29tbWFuZDpOdC5hZGRMYXllcixhcmdzOltkW29dLGNd fSksZy5zcGxpY2UoZy5sZW5ndGgtYSwwLG8pLHZbb109ITApO2ZvcihhPTA7 YTxmLmxlbmd0aDthKyspaWYocz1wW289ZlthXV0sbD1kW29dLCF2W29dJiYh dC5kZWVwRXF1YWwocyxsKSlpZih0LmRlZXBFcXVhbChzLnNvdXJjZSxsLnNv dXJjZSkmJnQuZGVlcEVxdWFsKHNbInNvdXJjZS1sYXllciJdLGxbInNvdXJj ZS1sYXllciJdKSYmdC5kZWVwRXF1YWwocy50eXBlLGwudHlwZSkpe2Zvcih1 IGluIEh0KHMubGF5b3V0LGwubGF5b3V0LG4sbyxudWxsLE50LnNldExheW91 dFByb3BlcnR5KSxIdChzLnBhaW50LGwucGFpbnQsbixvLG51bGwsTnQuc2V0 UGFpbnRQcm9wZXJ0eSksdC5kZWVwRXF1YWwocy5maWx0ZXIsbC5maWx0ZXIp fHxuLnB1c2goe2NvbW1hbmQ6TnQuc2V0RmlsdGVyLGFyZ3M6W28sbC5maWx0 ZXJdfSksdC5kZWVwRXF1YWwocy5taW56b29tLGwubWluem9vbSkmJnQuZGVl cEVxdWFsKHMubWF4em9vbSxsLm1heHpvb20pfHxuLnB1c2goe2NvbW1hbmQ6 TnQuc2V0TGF5ZXJab29tUmFuZ2UsYXJnczpbbyxsLm1pbnpvb20sbC5tYXh6 b29tXX0pLHMpcy5oYXNPd25Qcm9wZXJ0eSh1KSYmImxheW91dCIhPT11JiYi cGFpbnQiIT09dSYmImZpbHRlciIhPT11JiYibWV0YWRhdGEiIT09dSYmIm1p bnpvb20iIT09dSYmIm1heHpvb20iIT09dSYmKDA9PT11LmluZGV4T2YoInBh aW50LiIpP0h0KHNbdV0sbFt1XSxuLG8sdS5zbGljZSg2KSxOdC5zZXRQYWlu dFByb3BlcnR5KTp0LmRlZXBFcXVhbChzW3VdLGxbdV0pfHxuLnB1c2goe2Nv bW1hbmQ6TnQuc2V0TGF5ZXJQcm9wZXJ0eSxhcmdzOltvLHUsbFt1XV19KSk7 Zm9yKHUgaW4gbClsLmhhc093blByb3BlcnR5KHUpJiYhcy5oYXNPd25Qcm9w ZXJ0eSh1KSYmImxheW91dCIhPT11JiYicGFpbnQiIT09dSYmImZpbHRlciIh PT11JiYibWV0YWRhdGEiIT09dSYmIm1pbnpvb20iIT09dSYmIm1heHpvb20i IT09dSYmKDA9PT11LmluZGV4T2YoInBhaW50LiIpP0h0KHNbdV0sbFt1XSxu LG8sdS5zbGljZSg2KSxOdC5zZXRQYWludFByb3BlcnR5KTp0LmRlZXBFcXVh bChzW3VdLGxbdV0pfHxuLnB1c2goe2NvbW1hbmQ6TnQuc2V0TGF5ZXJQcm9w ZXJ0eSxhcmdzOltvLHUsbFt1XV19KSl9ZWxzZSBuLnB1c2goe2NvbW1hbmQ6 TnQucmVtb3ZlTGF5ZXIsYXJnczpbb119KSxjPWdbZy5sYXN0SW5kZXhPZihv KSsxXSxuLnB1c2goe2NvbW1hbmQ6TnQuYWRkTGF5ZXIsYXJnczpbbCxjXX0p fShvLHIubGF5ZXJzLG4pfWNhdGNoKHQpe2NvbnNvbGUud2FybigiVW5hYmxl IHRvIGNvbXB1dGUgc3R5bGUgZGlmZjoiLHQpLG49W3tjb21tYW5kOk50LnNl dFN0eWxlLGFyZ3M6W3JdfV19cmV0dXJuIG59KHRoaXMuc2VyaWFsaXplKCks ZSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiEodC5jb21tYW5kIGluIERl KX0pO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4hMTt2YXIgYT1uLmZpbHRlcihm dW5jdGlvbih0KXtyZXR1cm4hKHQuY29tbWFuZCBpbiBJZSl9KTtpZihhLmxl bmd0aD4wKXRocm93IG5ldyBFcnJvcigiVW5pbXBsZW1lbnRlZDogIithLm1h cChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21tYW5kfSkuam9pbigiLCAiKSsi LiIpO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24odCl7InNldFRyYW5zaXRp b24iIT09dC5jb21tYW5kJiZyW3QuY29tbWFuZF0uYXBwbHkocix0LmFyZ3Mp fSksdGhpcy5zdHlsZXNoZWV0PWUsITB9LHIucHJvdG90eXBlLmFkZEltYWdl PWZ1bmN0aW9uKGUscil7aWYodGhpcy5nZXRJbWFnZShlKSlyZXR1cm4gdGhp cy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJBbiBpbWFnZSB3 aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSkpO3RoaXMuaW1hZ2VN YW5hZ2VyLmFkZEltYWdlKGUsciksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJk YXRhIix7ZGF0YVR5cGU6InN0eWxlIn0pKX0sci5wcm90b3R5cGUudXBkYXRl SW1hZ2U9ZnVuY3Rpb24odCxlKXt0aGlzLmltYWdlTWFuYWdlci51cGRhdGVJ bWFnZSh0LGUpfSxyLnByb3RvdHlwZS5nZXRJbWFnZT1mdW5jdGlvbih0KXty ZXR1cm4gdGhpcy5pbWFnZU1hbmFnZXIuZ2V0SW1hZ2UodCl9LHIucHJvdG90 eXBlLnJlbW92ZUltYWdlPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmdldEltYWdl KGUpKXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJy b3IoIk5vIGltYWdlIHdpdGggdGhpcyBuYW1lIGV4aXN0cy4iKSkpO3RoaXMu aW1hZ2VNYW5hZ2VyLnJlbW92ZUltYWdlKGUpLHRoaXMuZmlyZShuZXcgdC5F dmVudCgiZGF0YSIse2RhdGFUeXBlOiJzdHlsZSJ9KSl9LHIucHJvdG90eXBl Lmxpc3RJbWFnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tMb2Fk ZWQoKSx0aGlzLmltYWdlTWFuYWdlci5saXN0SW1hZ2VzKCl9LHIucHJvdG90 eXBlLmFkZFNvdXJjZT1mdW5jdGlvbihlLHIsbil7dmFyIGE9dGhpcztpZih2 b2lkIDA9PT1uJiYobj17fSksdGhpcy5fY2hlY2tMb2FkZWQoKSx2b2lkIDAh PT10aGlzLnNvdXJjZUNhY2hlc1tlXSl0aHJvdyBuZXcgRXJyb3IoIlRoZXJl IGlzIGFscmVhZHkgYSBzb3VyY2Ugd2l0aCB0aGlzIElEIik7aWYoIXIudHlw ZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSB0eXBlIHByb3BlcnR5IG11c3QgYmUg ZGVmaW5lZCwgYnV0IHRoZSBvbmx5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGll cyB3ZXJlIGdpdmVuOiAiK09iamVjdC5rZXlzKHIpLmpvaW4oIiwgIikrIi4i KTtpZighKFsidmVjdG9yIiwicmFzdGVyIiwiZ2VvanNvbiIsInZpZGVvIiwi aW1hZ2UiXS5pbmRleE9mKHIudHlwZSk+PTAmJnRoaXMuX3ZhbGlkYXRlKHQu dmFsaWRhdGVTdHlsZS5zb3VyY2UsInNvdXJjZXMuIitlLHIsbnVsbCxuKSkp e3RoaXMubWFwJiZ0aGlzLm1hcC5fY29sbGVjdFJlc291cmNlVGltaW5nJiYo ci5jb2xsZWN0UmVzb3VyY2VUaW1pbmc9ITApO3ZhciBpPXRoaXMuc291cmNl Q2FjaGVzW2VdPW5ldyBDdChlLHIsdGhpcy5kaXNwYXRjaGVyKTtpLnN0eWxl PXRoaXMsaS5zZXRFdmVudGVkUGFyZW50KHRoaXMsZnVuY3Rpb24oKXtyZXR1 cm57aXNTb3VyY2VMb2FkZWQ6YS5sb2FkZWQoKSxzb3VyY2U6aS5zZXJpYWxp emUoKSxzb3VyY2VJZDplfX0pLGkub25BZGQodGhpcy5tYXApLHRoaXMuX2No YW5nZWQ9ITB9fSxyLnByb3RvdHlwZS5yZW1vdmVTb3VyY2U9ZnVuY3Rpb24o ZSl7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSx2b2lkIDA9PT10aGlzLnNvdXJj ZUNhY2hlc1tlXSl0aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGlzIG5vIHNvdXJj ZSB3aXRoIHRoaXMgSUQiKTtmb3IodmFyIHIgaW4gdGhpcy5fbGF5ZXJzKWlm KHRoaXMuX2xheWVyc1tyXS5zb3VyY2U9PT1lKXJldHVybiB0aGlzLmZpcmUo bmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoJ1NvdXJjZSAiJytlKyciIGNh bm5vdCBiZSByZW1vdmVkIHdoaWxlIGxheWVyICInK3IrJyIgaXMgdXNpbmcg aXQuJykpKTt2YXIgbj10aGlzLnNvdXJjZUNhY2hlc1tlXTtkZWxldGUgdGhp cy5zb3VyY2VDYWNoZXNbZV0sZGVsZXRlIHRoaXMuX3VwZGF0ZWRTb3VyY2Vz W2VdLG4uZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse3NvdXJjZURhdGFUeXBl OiJtZXRhZGF0YSIsZGF0YVR5cGU6InNvdXJjZSIsc291cmNlSWQ6ZX0pKSxu LnNldEV2ZW50ZWRQYXJlbnQobnVsbCksbi5jbGVhclRpbGVzKCksbi5vblJl bW92ZSYmbi5vblJlbW92ZSh0aGlzLm1hcCksdGhpcy5fY2hhbmdlZD0hMH0s ci5wcm90b3R5cGUuc2V0R2VvSlNPTlNvdXJjZURhdGE9ZnVuY3Rpb24odCxl KXt0aGlzLl9jaGVja0xvYWRlZCgpLHRoaXMuc291cmNlQ2FjaGVzW3RdLmdl dFNvdXJjZSgpLnNldERhdGEoZSksdGhpcy5fY2hhbmdlZD0hMH0sci5wcm90 b3R5cGUuZ2V0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNvdXJj ZUNhY2hlc1t0XSYmdGhpcy5zb3VyY2VDYWNoZXNbdF0uZ2V0U291cmNlKCl9 LHIucHJvdG90eXBlLmFkZExheWVyPWZ1bmN0aW9uKGUscixuKXt2b2lkIDA9 PT1uJiYobj17fSksdGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgYT1lLmlkO2lm KHRoaXMuZ2V0TGF5ZXIoYSkpdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQo bmV3IEVycm9yKCdMYXllciB3aXRoIGlkICInK2ErJyIgYWxyZWFkeSBleGlz dHMgb24gdGhpcyBtYXAnKSkpO2Vsc2V7dmFyIGk7aWYoImN1c3RvbSI9PT1l LnR5cGUpe2lmKHplKHRoaXMsdC52YWxpZGF0ZUN1c3RvbVN0eWxlTGF5ZXIo ZSkpKXJldHVybjtpPXQuY3JlYXRlU3R5bGVMYXllcihlKX1lbHNle2lmKCJv YmplY3QiPT10eXBlb2YgZS5zb3VyY2UmJih0aGlzLmFkZFNvdXJjZShhLGUu c291cmNlKSxlPXQuY2xvbmUkMShlKSxlPXQuZXh0ZW5kKGUse3NvdXJjZTph fSkpLHRoaXMuX3ZhbGlkYXRlKHQudmFsaWRhdGVTdHlsZS5sYXllciwibGF5 ZXJzLiIrYSxlLHthcnJheUluZGV4Oi0xfSxuKSlyZXR1cm47aT10LmNyZWF0 ZVN0eWxlTGF5ZXIoZSksdGhpcy5fdmFsaWRhdGVMYXllcihpKSxpLnNldEV2 ZW50ZWRQYXJlbnQodGhpcyx7bGF5ZXI6e2lkOmF9fSl9dmFyIG89cj90aGlz Ll9vcmRlci5pbmRleE9mKHIpOnRoaXMuX29yZGVyLmxlbmd0aDtpZihyJiYt MT09PW8pdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCdM YXllciB3aXRoIGlkICInK3IrJyIgZG9lcyBub3QgZXhpc3Qgb24gdGhpcyBt YXAuJykpKTtlbHNle2lmKHRoaXMuX29yZGVyLnNwbGljZShvLDAsYSksdGhp cy5fbGF5ZXJPcmRlckNoYW5nZWQ9ITAsdGhpcy5fbGF5ZXJzW2FdPWksdGhp cy5fcmVtb3ZlZExheWVyc1thXSYmaS5zb3VyY2UmJiJjdXN0b20iIT09aS50 eXBlKXt2YXIgcz10aGlzLl9yZW1vdmVkTGF5ZXJzW2FdO2RlbGV0ZSB0aGlz Ll9yZW1vdmVkTGF5ZXJzW2FdLHMudHlwZSE9PWkudHlwZT90aGlzLl91cGRh dGVkU291cmNlc1tpLnNvdXJjZV09ImNsZWFyIjoodGhpcy5fdXBkYXRlZFNv dXJjZXNbaS5zb3VyY2VdPSJyZWxvYWQiLHRoaXMuc291cmNlQ2FjaGVzW2ku c291cmNlXS5wYXVzZSgpKX10aGlzLl91cGRhdGVMYXllcihpKSxpLm9uQWRk JiZpLm9uQWRkKHRoaXMubWFwKX19fSxyLnByb3RvdHlwZS5tb3ZlTGF5ZXI9 ZnVuY3Rpb24oZSxyKXtpZih0aGlzLl9jaGVja0xvYWRlZCgpLHRoaXMuX2No YW5nZWQ9ITAsdGhpcy5fbGF5ZXJzW2VdKXtpZihlIT09cil7dmFyIG49dGhp cy5fb3JkZXIuaW5kZXhPZihlKTt0aGlzLl9vcmRlci5zcGxpY2UobiwxKTt2 YXIgYT1yP3RoaXMuX29yZGVyLmluZGV4T2Yocik6dGhpcy5fb3JkZXIubGVu Z3RoO3ImJi0xPT09YT90aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcg RXJyb3IoJ0xheWVyIHdpdGggaWQgIicrcisnIiBkb2VzIG5vdCBleGlzdCBv biB0aGlzIG1hcC4nKSkpOih0aGlzLl9vcmRlci5zcGxpY2UoYSwwLGUpLHRo aXMuX2xheWVyT3JkZXJDaGFuZ2VkPSEwKX19ZWxzZSB0aGlzLmZpcmUobmV3 IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBsYXllciAnIitlKyInIGRv ZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGJl IG1vdmVkLiIpKSl9LHIucHJvdG90eXBlLnJlbW92ZUxheWVyPWZ1bmN0aW9u KGUpe3RoaXMuX2NoZWNrTG9hZGVkKCk7dmFyIHI9dGhpcy5fbGF5ZXJzW2Vd O2lmKHIpe3Iuc2V0RXZlbnRlZFBhcmVudChudWxsKTt2YXIgbj10aGlzLl9v cmRlci5pbmRleE9mKGUpO3RoaXMuX29yZGVyLnNwbGljZShuLDEpLHRoaXMu X2xheWVyT3JkZXJDaGFuZ2VkPSEwLHRoaXMuX2NoYW5nZWQ9ITAsdGhpcy5f cmVtb3ZlZExheWVyc1tlXT1yLGRlbGV0ZSB0aGlzLl9sYXllcnNbZV0sZGVs ZXRlIHRoaXMuX3VwZGF0ZWRMYXllcnNbZV0sZGVsZXRlIHRoaXMuX3VwZGF0 ZWRQYWludFByb3BzW2VdLHIub25SZW1vdmUmJnIub25SZW1vdmUodGhpcy5t YXApfWVsc2UgdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9y KCJUaGUgbGF5ZXIgJyIrZSsiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFw J3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSByZW1vdmVkLiIpKSl9LHIucHJvdG90 eXBlLmdldExheWVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXllcnNb dF19LHIucHJvdG90eXBlLnNldExheWVyWm9vbVJhbmdlPWZ1bmN0aW9uKGUs cixuKXt0aGlzLl9jaGVja0xvYWRlZCgpO3ZhciBhPXRoaXMuZ2V0TGF5ZXIo ZSk7YT9hLm1pbnpvb209PT1yJiZhLm1heHpvb209PT1ufHwobnVsbCE9ciYm KGEubWluem9vbT1yKSxudWxsIT1uJiYoYS5tYXh6b29tPW4pLHRoaXMuX3Vw ZGF0ZUxheWVyKGEpKTp0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcg RXJyb3IoIlRoZSBsYXllciAnIitlKyInIGRvZXMgbm90IGV4aXN0IGluIHRo ZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGhhdmUgem9vbSBleHRlbnQuIikp KX0sci5wcm90b3R5cGUuc2V0RmlsdGVyPWZ1bmN0aW9uKGUscixuKXt2b2lk IDA9PT1uJiYobj17fSksdGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgYT10aGlz LmdldExheWVyKGUpO2lmKGEpe2lmKCF0LmRlZXBFcXVhbChhLmZpbHRlcixy KSlyZXR1cm4gbnVsbD09cj8oYS5maWx0ZXI9dm9pZCAwLHZvaWQgdGhpcy5f dXBkYXRlTGF5ZXIoYSkpOnZvaWQodGhpcy5fdmFsaWRhdGUodC52YWxpZGF0 ZVN0eWxlLmZpbHRlciwibGF5ZXJzLiIrYS5pZCsiLmZpbHRlciIscixudWxs LG4pfHwoYS5maWx0ZXI9dC5jbG9uZSQxKHIpLHRoaXMuX3VwZGF0ZUxheWVy KGEpKSl9ZWxzZSB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJy b3IoIlRoZSBsYXllciAnIitlKyInIGRvZXMgbm90IGV4aXN0IGluIHRoZSBt YXAncyBzdHlsZSBhbmQgY2Fubm90IGJlIGZpbHRlcmVkLiIpKSl9LHIucHJv dG90eXBlLmdldEZpbHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5jbG9uZSQx KHRoaXMuZ2V0TGF5ZXIoZSkuZmlsdGVyKX0sci5wcm90b3R5cGUuc2V0TGF5 b3V0UHJvcGVydHk9ZnVuY3Rpb24oZSxyLG4sYSl7dm9pZCAwPT09YSYmKGE9 e30pLHRoaXMuX2NoZWNrTG9hZGVkKCk7dmFyIGk9dGhpcy5nZXRMYXllcihl KTtpP3QuZGVlcEVxdWFsKGkuZ2V0TGF5b3V0UHJvcGVydHkociksbil8fChp LnNldExheW91dFByb3BlcnR5KHIsbixhKSx0aGlzLl91cGRhdGVMYXllcihp KSk6dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUg bGF5ZXIgJyIrZSsiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5 bGUgYW5kIGNhbm5vdCBiZSBzdHlsZWQuIikpKX0sci5wcm90b3R5cGUuZ2V0 TGF5b3V0UHJvcGVydHk9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLmdldExh eWVyKGUpO2lmKG4pcmV0dXJuIG4uZ2V0TGF5b3V0UHJvcGVydHkocik7dGhp cy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUgbGF5ZXIg JyIrZSsiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUuIikp KX0sci5wcm90b3R5cGUuc2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbihlLHIs bixhKXt2b2lkIDA9PT1hJiYoYT17fSksdGhpcy5fY2hlY2tMb2FkZWQoKTt2 YXIgaT10aGlzLmdldExheWVyKGUpO2k/dC5kZWVwRXF1YWwoaS5nZXRQYWlu dFByb3BlcnR5KHIpLG4pfHwoaS5zZXRQYWludFByb3BlcnR5KHIsbixhKSYm dGhpcy5fdXBkYXRlTGF5ZXIoaSksdGhpcy5fY2hhbmdlZD0hMCx0aGlzLl91 cGRhdGVkUGFpbnRQcm9wc1tlXT0hMCk6dGhpcy5maXJlKG5ldyB0LkVycm9y RXZlbnQobmV3IEVycm9yKCJUaGUgbGF5ZXIgJyIrZSsiJyBkb2VzIG5vdCBl eGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBzdHlsZWQu IikpKX0sci5wcm90b3R5cGUuZ2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0 LGUpe3JldHVybiB0aGlzLmdldExheWVyKHQpLmdldFBhaW50UHJvcGVydHko ZSl9LHIucHJvdG90eXBlLnNldEZlYXR1cmVTdGF0ZT1mdW5jdGlvbihlLHIp e3RoaXMuX2NoZWNrTG9hZGVkKCk7dmFyIG49ZS5zb3VyY2UsYT1lLnNvdXJj ZUxheWVyLGk9dGhpcy5zb3VyY2VDYWNoZXNbbl0sbz1wYXJzZUludChlLmlk LDEwKTtpZih2b2lkIDAhPT1pKXt2YXIgcz1pLmdldFNvdXJjZSgpLnR5cGU7 Imdlb2pzb24iPT09cyYmYT90aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChu ZXcgRXJyb3IoIkdlb0pTT04gc291cmNlcyBjYW5ub3QgaGF2ZSBhIHNvdXJj ZUxheWVyIHBhcmFtZXRlci4iKSkpOiJ2ZWN0b3IiIT09c3x8YT9pc05hTihv KXx8bzwwP3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigi VGhlIGZlYXR1cmUgaWQgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWQgYW5k IG5vbi1uZWdhdGl2ZS4iKSkpOmkuc2V0RmVhdHVyZVN0YXRlKGEsbyxyKTp0 aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBzb3Vy Y2VMYXllciBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZCBmb3IgdmVjdG9y IHNvdXJjZSB0eXBlcy4iKSkpfWVsc2UgdGhpcy5maXJlKG5ldyB0LkVycm9y RXZlbnQobmV3IEVycm9yKCJUaGUgc291cmNlICciK24rIicgZG9lcyBub3Qg ZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlLiIpKSl9LHIucHJvdG90eXBlLnJl bW92ZUZlYXR1cmVTdGF0ZT1mdW5jdGlvbihlLHIpe3RoaXMuX2NoZWNrTG9h ZGVkKCk7dmFyIG49ZS5zb3VyY2UsYT10aGlzLnNvdXJjZUNhY2hlc1tuXTtp Zih2b2lkIDAhPT1hKXt2YXIgaT1hLmdldFNvdXJjZSgpLnR5cGUsbz0idmVj dG9yIj09PWk/ZS5zb3VyY2VMYXllcjp2b2lkIDAscz1wYXJzZUludChlLmlk LDEwKTsidmVjdG9yIiE9PWl8fG8/dm9pZCAwIT09ZS5pZCYmaXNOYU4ocyl8 fHM8MD90aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRo ZSBmZWF0dXJlIGlkIHBhcmFtZXRlciBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4i KSkpOnImJiJzdHJpbmciIT10eXBlb2YgZS5pZCYmIm51bWJlciIhPXR5cGVv ZiBlLmlkP3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigi QSBmZWF0dXJlIGlkIGlzIHJlcXVyZWQgdG8gcmVtb3ZlIGl0cyBzcGVjaWZp YyBzdGF0ZSBwcm9wZXJ0eS4iKSkpOmEucmVtb3ZlRmVhdHVyZVN0YXRlKG8s cyxyKTp0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRo ZSBzb3VyY2VMYXllciBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZCBmb3Ig dmVjdG9yIHNvdXJjZSB0eXBlcy4iKSkpfWVsc2UgdGhpcy5maXJlKG5ldyB0 LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUgc291cmNlICciK24rIicgZG9l cyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlLiIpKSl9LHIucHJvdG90 eXBlLmdldEZlYXR1cmVTdGF0ZT1mdW5jdGlvbihlKXt0aGlzLl9jaGVja0xv YWRlZCgpO3ZhciByPWUuc291cmNlLG49ZS5zb3VyY2VMYXllcixhPXRoaXMu c291cmNlQ2FjaGVzW3JdLGk9cGFyc2VJbnQoZS5pZCwxMCk7aWYodm9pZCAw IT09YSlpZigidmVjdG9yIiE9PWEuZ2V0U291cmNlKCkudHlwZXx8bil7aWYo IShpc05hTihpKXx8aTwwKSlyZXR1cm4gYS5nZXRGZWF0dXJlU3RhdGUobixp KTt0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBm ZWF0dXJlIGlkIHBhcmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkIGFuZCBub24t bmVnYXRpdmUuIikpKX1lbHNlIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50 KG5ldyBFcnJvcigiVGhlIHNvdXJjZUxheWVyIHBhcmFtZXRlciBtdXN0IGJl IHByb3ZpZGVkIGZvciB2ZWN0b3Igc291cmNlIHR5cGVzLiIpKSk7ZWxzZSB0 aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBzb3Vy Y2UgJyIrcisiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUu IikpKX0sci5wcm90b3R5cGUuZ2V0VHJhbnNpdGlvbj1mdW5jdGlvbigpe3Jl dHVybiB0LmV4dGVuZCh7ZHVyYXRpb246MzAwLGRlbGF5OjB9LHRoaXMuc3R5 bGVzaGVldCYmdGhpcy5zdHlsZXNoZWV0LnRyYW5zaXRpb24pfSxyLnByb3Rv dHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5maWx0ZXJPYmpl Y3Qoe3ZlcnNpb246dGhpcy5zdHlsZXNoZWV0LnZlcnNpb24sbmFtZTp0aGlz LnN0eWxlc2hlZXQubmFtZSxtZXRhZGF0YTp0aGlzLnN0eWxlc2hlZXQubWV0 YWRhdGEsbGlnaHQ6dGhpcy5zdHlsZXNoZWV0LmxpZ2h0LGNlbnRlcjp0aGlz LnN0eWxlc2hlZXQuY2VudGVyLHpvb206dGhpcy5zdHlsZXNoZWV0Lnpvb20s YmVhcmluZzp0aGlzLnN0eWxlc2hlZXQuYmVhcmluZyxwaXRjaDp0aGlzLnN0 eWxlc2hlZXQucGl0Y2gsc3ByaXRlOnRoaXMuc3R5bGVzaGVldC5zcHJpdGUs Z2x5cGhzOnRoaXMuc3R5bGVzaGVldC5nbHlwaHMsdHJhbnNpdGlvbjp0aGlz LnN0eWxlc2hlZXQudHJhbnNpdGlvbixzb3VyY2VzOnQubWFwT2JqZWN0KHRo aXMuc291cmNlQ2FjaGVzLGZ1bmN0aW9uKHQpe3JldHVybiB0LnNlcmlhbGl6 ZSgpfSksbGF5ZXJzOnRoaXMuX3NlcmlhbGl6ZUxheWVycyh0aGlzLl9vcmRl cil9LGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10fSl9LHIucHJvdG90 eXBlLl91cGRhdGVMYXllcj1mdW5jdGlvbih0KXt0aGlzLl91cGRhdGVkTGF5 ZXJzW3QuaWRdPSEwLHQuc291cmNlJiYhdGhpcy5fdXBkYXRlZFNvdXJjZXNb dC5zb3VyY2VdJiYodGhpcy5fdXBkYXRlZFNvdXJjZXNbdC5zb3VyY2VdPSJy ZWxvYWQiLHRoaXMuc291cmNlQ2FjaGVzW3Quc291cmNlXS5wYXVzZSgpKSx0 aGlzLl9jaGFuZ2VkPSEwfSxyLnByb3RvdHlwZS5fZmxhdHRlbkFuZFNvcnRS ZW5kZXJlZEZlYXR1cmVzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLHI9 ZnVuY3Rpb24odCl7cmV0dXJuImZpbGwtZXh0cnVzaW9uIj09PWUuX2xheWVy c1t0XS50eXBlfSxuPXt9LGE9W10saT10aGlzLl9vcmRlci5sZW5ndGgtMTtp Pj0wO2ktLSl7dmFyIG89dGhpcy5fb3JkZXJbaV07aWYocihvKSl7bltvXT1p O2Zvcih2YXIgcz0wLGw9dDtzPGwubGVuZ3RoO3MrPTEpe3ZhciBjPWxbc11b b107aWYoYylmb3IodmFyIHU9MCxoPWM7dTxoLmxlbmd0aDt1Kz0xKXt2YXIg Zj1oW3VdO2EucHVzaChmKX19fX1hLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1 cm4gZS5pbnRlcnNlY3Rpb25aLXQuaW50ZXJzZWN0aW9uWn0pO2Zvcih2YXIg cD1bXSxkPXRoaXMuX29yZGVyLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIgZz10 aGlzLl9vcmRlcltkXTtpZihyKGcpKWZvcih2YXIgdj1hLmxlbmd0aC0xO3Y+ PTA7di0tKXt2YXIgbT1hW3ZdLmZlYXR1cmU7aWYoblttLmxheWVyLmlkXTxk KWJyZWFrO3AucHVzaChtKSxhLnBvcCgpfWVsc2UgZm9yKHZhciB5PTAseD10 O3k8eC5sZW5ndGg7eSs9MSl7dmFyIGI9eFt5XVtnXTtpZihiKWZvcih2YXIg Xz0wLHc9YjtfPHcubGVuZ3RoO18rPTEpe3ZhciBrPXdbX107cC5wdXNoKGsu ZmVhdHVyZSl9fX1yZXR1cm4gcH0sci5wcm90b3R5cGUucXVlcnlSZW5kZXJl ZEZlYXR1cmVzPWZ1bmN0aW9uKGUscixuKXtyJiZyLmZpbHRlciYmdGhpcy5f dmFsaWRhdGUodC52YWxpZGF0ZVN0eWxlLmZpbHRlciwicXVlcnlSZW5kZXJl ZEZlYXR1cmVzLmZpbHRlciIsci5maWx0ZXIsbnVsbCxyKTt2YXIgYT17fTtp ZihyJiZyLmxheWVycyl7aWYoIUFycmF5LmlzQXJyYXkoci5sYXllcnMpKXJl dHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoInBh cmFtZXRlcnMubGF5ZXJzIG11c3QgYmUgYW4gQXJyYXkuIikpKSxbXTtmb3Io dmFyIGk9MCxvPXIubGF5ZXJzO2k8by5sZW5ndGg7aSs9MSl7dmFyIHM9b1tp XSxsPXRoaXMuX2xheWVyc1tzXTtpZighbClyZXR1cm4gdGhpcy5maXJlKG5l dyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUgbGF5ZXIgJyIrcysiJyBk b2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBi ZSBxdWVyaWVkIGZvciBmZWF0dXJlcy4iKSkpLFtdO2FbbC5zb3VyY2VdPSEw fX12YXIgYz1bXTtmb3IodmFyIHUgaW4gdGhpcy5zb3VyY2VDYWNoZXMpci5s YXllcnMmJiFhW3VdfHxjLnB1c2goRih0aGlzLnNvdXJjZUNhY2hlc1t1XSx0 aGlzLl9sYXllcnMsZSxyLG4pKTtyZXR1cm4gdGhpcy5wbGFjZW1lbnQmJmMu cHVzaChmdW5jdGlvbih0LGUscixuLGEsaSl7Zm9yKHZhciBvPXt9LHM9YS5x dWVyeVJlbmRlcmVkU3ltYm9scyhyKSxsPVtdLGM9MCx1PU9iamVjdC5rZXlz KHMpLm1hcChOdW1iZXIpO2M8dS5sZW5ndGg7Yys9MSl7dmFyIGg9dVtjXTts LnB1c2goaVtoXSl9bC5zb3J0KEIpO2Zvcih2YXIgZj1mdW5jdGlvbigpe3Zh ciBlPWRbcF0scj1lLmZlYXR1cmVJbmRleC5sb29rdXBTeW1ib2xGZWF0dXJl cyhzW2UuYnVja2V0SW5zdGFuY2VJZF0sZS5idWNrZXRJbmRleCxlLnNvdXJj ZUxheWVySW5kZXgsbi5maWx0ZXIsbi5sYXllcnMsdCk7Zm9yKHZhciBhIGlu IHIpe3ZhciBpPW9bYV09b1thXXx8W10sbD1yW2FdO2wuc29ydChmdW5jdGlv bih0LHIpe3ZhciBuPWUuZmVhdHVyZVNvcnRPcmRlcjtpZihuKXt2YXIgYT1u LmluZGV4T2YodC5mZWF0dXJlSW5kZXgpO3JldHVybiBuLmluZGV4T2Yoci5m ZWF0dXJlSW5kZXgpLWF9cmV0dXJuIHIuZmVhdHVyZUluZGV4LXQuZmVhdHVy ZUluZGV4fSk7Zm9yKHZhciBjPTAsdT1sO2M8dS5sZW5ndGg7Yys9MSl7dmFy IGg9dVtjXTtpLnB1c2goaCl9fX0scD0wLGQ9bDtwPGQubGVuZ3RoO3ArPTEp ZigpO3ZhciBnPWZ1bmN0aW9uKHIpe29bcl0uZm9yRWFjaChmdW5jdGlvbihu KXt2YXIgYT1uLmZlYXR1cmUsaT10W3JdLG89ZVtpLnNvdXJjZV0uZ2V0RmVh dHVyZVN0YXRlKGEubGF5ZXJbInNvdXJjZS1sYXllciJdLGEuaWQpO2Euc291 cmNlPWEubGF5ZXIuc291cmNlLGEubGF5ZXJbInNvdXJjZS1sYXllciJdJiYo YS5zb3VyY2VMYXllcj1hLmxheWVyWyJzb3VyY2UtbGF5ZXIiXSksYS5zdGF0 ZT1vfSl9O2Zvcih2YXIgdiBpbiBvKWcodik7cmV0dXJuIG99KHRoaXMuX2xh eWVycyx0aGlzLnNvdXJjZUNhY2hlcyxlLHIsdGhpcy5wbGFjZW1lbnQuY29s bGlzaW9uSW5kZXgsdGhpcy5wbGFjZW1lbnQucmV0YWluZWRRdWVyeURhdGEp KSx0aGlzLl9mbGF0dGVuQW5kU29ydFJlbmRlcmVkRmVhdHVyZXMoYyl9LHIu cHJvdG90eXBlLnF1ZXJ5U291cmNlRmVhdHVyZXM9ZnVuY3Rpb24oZSxyKXty JiZyLmZpbHRlciYmdGhpcy5fdmFsaWRhdGUodC52YWxpZGF0ZVN0eWxlLmZp bHRlciwicXVlcnlTb3VyY2VGZWF0dXJlcy5maWx0ZXIiLHIuZmlsdGVyLG51 bGwscik7dmFyIG49dGhpcy5zb3VyY2VDYWNoZXNbZV07cmV0dXJuIG4/ZnVu Y3Rpb24odCxlKXtmb3IodmFyIHI9dC5nZXRSZW5kZXJhYmxlSWRzKCkubWFw KGZ1bmN0aW9uKGUpe3JldHVybiB0LmdldFRpbGVCeUlEKGUpfSksbj1bXSxh PXt9LGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpXSxzPW8udGlsZUlE LmNhbm9uaWNhbC5rZXk7YVtzXXx8KGFbc109ITAsby5xdWVyeVNvdXJjZUZl YXR1cmVzKG4sZSkpfXJldHVybiBufShuLHIpOltdfSxyLnByb3RvdHlwZS5h ZGRTb3VyY2VUeXBlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5nZXRTb3Vy Y2VUeXBlKHQpP24obmV3IEVycm9yKCdBIHNvdXJjZSB0eXBlIGNhbGxlZCAi Jyt0KyciIGFscmVhZHkgZXhpc3RzLicpKTooci5zZXRTb3VyY2VUeXBlKHQs ZSksZS53b3JrZXJTb3VyY2VVUkw/dm9pZCB0aGlzLmRpc3BhdGNoZXIuYnJv YWRjYXN0KCJsb2FkV29ya2VyU291cmNlIix7bmFtZTp0LHVybDplLndvcmtl clNvdXJjZVVSTH0sbik6bihudWxsLG51bGwpKX0sci5wcm90b3R5cGUuZ2V0 TGlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saWdodC5nZXRMaWdodCgp fSxyLnByb3RvdHlwZS5zZXRMaWdodD1mdW5jdGlvbihlLHIpe3ZvaWQgMD09 PXImJihyPXt9KSx0aGlzLl9jaGVja0xvYWRlZCgpO3ZhciBuPXRoaXMubGln aHQuZ2V0TGlnaHQoKSxhPSExO2Zvcih2YXIgaSBpbiBlKWlmKCF0LmRlZXBF cXVhbChlW2ldLG5baV0pKXthPSEwO2JyZWFrfWlmKGEpe3ZhciBvPXtub3c6 dC5icm93c2VyLm5vdygpLHRyYW5zaXRpb246dC5leHRlbmQoe2R1cmF0aW9u OjMwMCxkZWxheTowfSx0aGlzLnN0eWxlc2hlZXQudHJhbnNpdGlvbil9O3Ro aXMubGlnaHQuc2V0TGlnaHQoZSxyKSx0aGlzLmxpZ2h0LnVwZGF0ZVRyYW5z aXRpb25zKG8pfX0sci5wcm90b3R5cGUuX3ZhbGlkYXRlPWZ1bmN0aW9uKGUs cixuLGEsaSl7cmV0dXJuIHZvaWQgMD09PWkmJihpPXt9KSwoIWl8fCExIT09 aS52YWxpZGF0ZSkmJnplKHRoaXMsZS5jYWxsKHQudmFsaWRhdGVTdHlsZSx0 LmV4dGVuZCh7a2V5OnIsc3R5bGU6dGhpcy5zZXJpYWxpemUoKSx2YWx1ZTpu LHN0eWxlU3BlYzp0LnN0eWxlU3BlY30sYSkpKX0sci5wcm90b3R5cGUuX3Jl bW92ZT1mdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLl9yZXF1ZXN0JiYo dGhpcy5fcmVxdWVzdC5jYW5jZWwoKSx0aGlzLl9yZXF1ZXN0PW51bGwpLHRo aXMuX3Nwcml0ZVJlcXVlc3QmJih0aGlzLl9zcHJpdGVSZXF1ZXN0LmNhbmNl bCgpLHRoaXMuX3Nwcml0ZVJlcXVlc3Q9bnVsbCksdC5ldmVudGVkLm9mZigi cGx1Z2luQXZhaWxhYmxlIix0aGlzLl9ydGxUZXh0UGx1Z2luQ2FsbGJhY2sp LHRoaXMuc291cmNlQ2FjaGVzKXRoaXMuc291cmNlQ2FjaGVzW2VdLmNsZWFy VGlsZXMoKTt0aGlzLmRpc3BhdGNoZXIucmVtb3ZlKCl9LHIucHJvdG90eXBl Ll9jbGVhclNvdXJjZT1mdW5jdGlvbih0KXt0aGlzLnNvdXJjZUNhY2hlc1t0 XS5jbGVhclRpbGVzKCl9LHIucHJvdG90eXBlLl9yZWxvYWRTb3VyY2U9ZnVu Y3Rpb24odCl7dGhpcy5zb3VyY2VDYWNoZXNbdF0ucmVzdW1lKCksdGhpcy5z b3VyY2VDYWNoZXNbdF0ucmVsb2FkKCl9LHIucHJvdG90eXBlLl91cGRhdGVT b3VyY2VzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLnNvdXJjZUNh Y2hlcyl0aGlzLnNvdXJjZUNhY2hlc1tlXS51cGRhdGUodCl9LHIucHJvdG90 eXBlLl9nZW5lcmF0ZUNvbGxpc2lvbkJveGVzPWZ1bmN0aW9uKCl7Zm9yKHZh ciB0IGluIHRoaXMuc291cmNlQ2FjaGVzKXRoaXMuX3JlbG9hZFNvdXJjZSh0 KX0sci5wcm90b3R5cGUuX3VwZGF0ZVBsYWNlbWVudD1mdW5jdGlvbihlLHIs bixhKXtmb3IodmFyIGk9ITEsbz0hMSxzPXt9LGw9MCxjPXRoaXMuX29yZGVy O2w8Yy5sZW5ndGg7bCs9MSl7dmFyIHU9Y1tsXSxoPXRoaXMuX2xheWVyc1t1 XTtpZigic3ltYm9sIj09PWgudHlwZSl7aWYoIXNbaC5zb3VyY2VdKXt2YXIg Zj10aGlzLnNvdXJjZUNhY2hlc1toLnNvdXJjZV07c1toLnNvdXJjZV09Zi5n ZXRSZW5kZXJhYmxlSWRzKCEwKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGYu Z2V0VGlsZUJ5SUQodCl9KS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUu dGlsZUlELm92ZXJzY2FsZWRaLXQudGlsZUlELm92ZXJzY2FsZWRafHwodC50 aWxlSUQuaXNMZXNzVGhhbihlLnRpbGVJRCk/LTE6MSl9KX12YXIgcD10aGlz LmNyb3NzVGlsZVN5bWJvbEluZGV4LmFkZExheWVyKGgsc1toLnNvdXJjZV0s ZS5jZW50ZXIubG5nKTtpPWl8fHB9fXRoaXMuY3Jvc3NUaWxlU3ltYm9sSW5k ZXgucHJ1bmVVbnVzZWRMYXllcnModGhpcy5fb3JkZXIpO3ZhciBkPXRoaXMu X2xheWVyT3JkZXJDaGFuZ2VkfHwwPT09bjtpZigoZHx8IXRoaXMucGF1c2Vh YmxlUGxhY2VtZW50fHx0aGlzLnBhdXNlYWJsZVBsYWNlbWVudC5pc0RvbmUo KSYmIXRoaXMucGxhY2VtZW50LnN0aWxsUmVjZW50KHQuYnJvd3Nlci5ub3co KSkpJiYodGhpcy5wYXVzZWFibGVQbGFjZW1lbnQ9bmV3IFNlKGUsdGhpcy5f b3JkZXIsZCxyLG4sYSx0aGlzLnBsYWNlbWVudCksdGhpcy5fbGF5ZXJPcmRl ckNoYW5nZWQ9ITEpLHRoaXMucGF1c2VhYmxlUGxhY2VtZW50LmlzRG9uZSgp P3RoaXMucGxhY2VtZW50LnNldFN0YWxlKCk6KHRoaXMucGF1c2VhYmxlUGxh Y2VtZW50LmNvbnRpbnVlUGxhY2VtZW50KHRoaXMuX29yZGVyLHRoaXMuX2xh eWVycyxzKSx0aGlzLnBhdXNlYWJsZVBsYWNlbWVudC5pc0RvbmUoKSYmKHRo aXMucGxhY2VtZW50PXRoaXMucGF1c2VhYmxlUGxhY2VtZW50LmNvbW1pdCh0 LmJyb3dzZXIubm93KCkpLG89ITApLGkmJnRoaXMucGF1c2VhYmxlUGxhY2Vt ZW50LnBsYWNlbWVudC5zZXRTdGFsZSgpKSxvfHxpKWZvcih2YXIgZz0wLHY9 dGhpcy5fb3JkZXI7Zzx2Lmxlbmd0aDtnKz0xKXt2YXIgbT12W2ddLHk9dGhp cy5fbGF5ZXJzW21dOyJzeW1ib2wiPT09eS50eXBlJiZ0aGlzLnBsYWNlbWVu dC51cGRhdGVMYXllck9wYWNpdGllcyh5LHNbeS5zb3VyY2VdKX1yZXR1cm4h dGhpcy5wYXVzZWFibGVQbGFjZW1lbnQuaXNEb25lKCl8fHRoaXMucGxhY2Vt ZW50Lmhhc1RyYW5zaXRpb25zKHQuYnJvd3Nlci5ub3coKSl9LHIucHJvdG90 eXBlLl9yZWxlYXNlU3ltYm9sRmFkZVRpbGVzPWZ1bmN0aW9uKCl7Zm9yKHZh ciB0IGluIHRoaXMuc291cmNlQ2FjaGVzKXRoaXMuc291cmNlQ2FjaGVzW3Rd LnJlbGVhc2VTeW1ib2xGYWRlVGlsZXMoKX0sci5wcm90b3R5cGUuZ2V0SW1h Z2VzPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmltYWdlTWFuYWdlci5nZXRJbWFn ZXMoZS5pY29ucyxyKX0sci5wcm90b3R5cGUuZ2V0R2x5cGhzPWZ1bmN0aW9u KHQsZSxyKXt0aGlzLmdseXBoTWFuYWdlci5nZXRHbHlwaHMoZS5zdGFja3Ms cil9LHIucHJvdG90eXBlLmdldFJlc291cmNlPWZ1bmN0aW9uKGUscixuKXty ZXR1cm4gdC5tYWtlUmVxdWVzdChyLG4pfSxyfSh0LkV2ZW50ZWQpO1JlLmdl dFNvdXJjZVR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIElbdF19LFJlLnNldFNv dXJjZVR5cGU9ZnVuY3Rpb24odCxlKXtJW3RdPWV9LFJlLnJlZ2lzdGVyRm9y UGx1Z2luQXZhaWxhYmlsaXR5PXQucmVnaXN0ZXJGb3JQbHVnaW5BdmFpbGFi aWxpdHk7dmFyIEZlPXQuY3JlYXRlTGF5b3V0KFt7bmFtZToiYV9wb3MiLHR5 cGU6IkludDE2Iixjb21wb25lbnRzOjJ9XSksQmU9Y3IoIiNpZmRlZiBHTF9F U1xucHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZWxzZVxuI2lmICFkZWZp bmVkKGxvd3ApXG4jZGVmaW5lIGxvd3BcbiNlbmRpZlxuI2lmICFkZWZpbmVk KG1lZGl1bXApXG4jZGVmaW5lIG1lZGl1bXBcbiNlbmRpZlxuI2lmICFkZWZp bmVkKGhpZ2hwKVxuI2RlZmluZSBoaWdocFxuI2VuZGlmXG4jZW5kaWYiLCIj aWZkZWYgR0xfRVNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNlbHNlXG4j aWYgIWRlZmluZWQobG93cClcbiNkZWZpbmUgbG93cFxuI2VuZGlmXG4jaWYg IWRlZmluZWQobWVkaXVtcClcbiNkZWZpbmUgbWVkaXVtcFxuI2VuZGlmXG4j aWYgIWRlZmluZWQoaGlnaHApXG4jZGVmaW5lIGhpZ2hwXG4jZW5kaWZcbiNl bmRpZlxudmVjMiB1bnBhY2tfZmxvYXQoY29uc3QgZmxvYXQgcGFja2VkVmFs dWUpIHtpbnQgcGFja2VkSW50VmFsdWU9aW50KHBhY2tlZFZhbHVlKTtpbnQg djA9cGFja2VkSW50VmFsdWUvMjU2O3JldHVybiB2ZWMyKHYwLHBhY2tlZElu dFZhbHVlLXYwKjI1Nik7fXZlYzIgdW5wYWNrX29wYWNpdHkoY29uc3QgZmxv YXQgcGFja2VkT3BhY2l0eSkge2ludCBpbnRPcGFjaXR5PWludChwYWNrZWRP cGFjaXR5KS8yO3JldHVybiB2ZWMyKGZsb2F0KGludE9wYWNpdHkpLzEyNy4w LG1vZChwYWNrZWRPcGFjaXR5LDIuMCkpO312ZWM0IGRlY29kZV9jb2xvcihj b25zdCB2ZWMyIGVuY29kZWRDb2xvcikge3JldHVybiB2ZWM0KHVucGFja19m bG9hdChlbmNvZGVkQ29sb3JbMF0pLzI1NS4wLHVucGFja19mbG9hdChlbmNv ZGVkQ29sb3JbMV0pLzI1NS4wXG4pO31mbG9hdCB1bnBhY2tfbWl4X3ZlYzIo Y29uc3QgdmVjMiBwYWNrZWRWYWx1ZSxjb25zdCBmbG9hdCB0KSB7cmV0dXJu IG1peChwYWNrZWRWYWx1ZVswXSxwYWNrZWRWYWx1ZVsxXSx0KTt9dmVjNCB1 bnBhY2tfbWl4X2NvbG9yKGNvbnN0IHZlYzQgcGFja2VkQ29sb3JzLGNvbnN0 IGZsb2F0IHQpIHt2ZWM0IG1pbkNvbG9yPWRlY29kZV9jb2xvcih2ZWMyKHBh Y2tlZENvbG9yc1swXSxwYWNrZWRDb2xvcnNbMV0pKTt2ZWM0IG1heENvbG9y PWRlY29kZV9jb2xvcih2ZWMyKHBhY2tlZENvbG9yc1syXSxwYWNrZWRDb2xv cnNbM10pKTtyZXR1cm4gbWl4KG1pbkNvbG9yLG1heENvbG9yLHQpO312ZWMy IGdldF9wYXR0ZXJuX3Bvcyhjb25zdCB2ZWMyIHBpeGVsX2Nvb3JkX3VwcGVy LGNvbnN0IHZlYzIgcGl4ZWxfY29vcmRfbG93ZXIsY29uc3QgdmVjMiBwYXR0 ZXJuX3NpemUsY29uc3QgZmxvYXQgdGlsZV91bml0c190b19waXhlbHMsY29u c3QgdmVjMiBwb3MpIHt2ZWMyIG9mZnNldD1tb2QobW9kKG1vZChwaXhlbF9j b29yZF91cHBlcixwYXR0ZXJuX3NpemUpKjI1Ni4wLHBhdHRlcm5fc2l6ZSkq MjU2LjArcGl4ZWxfY29vcmRfbG93ZXIscGF0dGVybl9zaXplKTtyZXR1cm4g KHRpbGVfdW5pdHNfdG9fcGl4ZWxzKnBvcytvZmZzZXQpL3BhdHRlcm5fc2l6 ZTt9IiksTmU9Y3IoInVuaWZvcm0gdmVjNCB1X2NvbG9yO3VuaWZvcm0gZmxv YXQgdV9vcGFjaXR5O3ZvaWQgbWFpbigpIHtnbF9GcmFnQ29sb3I9dV9jb2xv cip1X29wYWNpdHk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9G cmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59IiwiYXR0cmlidXRlIHZl YzIgYV9wb3M7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3ZvaWQgbWFpbigpIHtn bF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7fSIpLGplPWNy KCJ1bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3RsX2E7dW5pZm9ybSB2ZWMyIHVf cGF0dGVybl9icl9hO3VuaWZvcm0gdmVjMiB1X3BhdHRlcm5fdGxfYjt1bmlm b3JtIHZlYzIgdV9wYXR0ZXJuX2JyX2I7dW5pZm9ybSB2ZWMyIHVfdGV4c2l6 ZTt1bmlmb3JtIGZsb2F0IHVfbWl4O3VuaWZvcm0gZmxvYXQgdV9vcGFjaXR5 O3VuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7dmFyeWluZyB2ZWMyIHZfcG9z X2E7dmFyeWluZyB2ZWMyIHZfcG9zX2I7dm9pZCBtYWluKCkge3ZlYzIgaW1h Z2Vjb29yZD1tb2Qodl9wb3NfYSwxLjApO3ZlYzIgcG9zPW1peCh1X3BhdHRl cm5fdGxfYS91X3RleHNpemUsdV9wYXR0ZXJuX2JyX2EvdV90ZXhzaXplLGlt YWdlY29vcmQpO3ZlYzQgY29sb3IxPXRleHR1cmUyRCh1X2ltYWdlLHBvcyk7 dmVjMiBpbWFnZWNvb3JkX2I9bW9kKHZfcG9zX2IsMS4wKTt2ZWMyIHBvczI9 bWl4KHVfcGF0dGVybl90bF9iL3VfdGV4c2l6ZSx1X3BhdHRlcm5fYnJfYi91 X3RleHNpemUsaW1hZ2Vjb29yZF9iKTt2ZWM0IGNvbG9yMj10ZXh0dXJlMkQo dV9pbWFnZSxwb3MyKTtnbF9GcmFnQ29sb3I9bWl4KGNvbG9yMSxjb2xvcjIs dV9taXgpKnVfb3BhY2l0eTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1Jc bmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3Jt IG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfcGF0dGVybl9zaXplX2E7 dW5pZm9ybSB2ZWMyIHVfcGF0dGVybl9zaXplX2I7dW5pZm9ybSB2ZWMyIHVf cGl4ZWxfY29vcmRfdXBwZXI7dW5pZm9ybSB2ZWMyIHVfcGl4ZWxfY29vcmRf bG93ZXI7dW5pZm9ybSBmbG9hdCB1X3NjYWxlX2E7dW5pZm9ybSBmbG9hdCB1 X3NjYWxlX2I7dW5pZm9ybSBmbG9hdCB1X3RpbGVfdW5pdHNfdG9fcGl4ZWxz O2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvc19hO3Zh cnlpbmcgdmVjMiB2X3Bvc19iO3ZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbj11 X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7dl9wb3NfYT1nZXRfcGF0dGVybl9w b3ModV9waXhlbF9jb29yZF91cHBlcix1X3BpeGVsX2Nvb3JkX2xvd2VyLHVf c2NhbGVfYSp1X3BhdHRlcm5fc2l6ZV9hLHVfdGlsZV91bml0c190b19waXhl bHMsYV9wb3MpO3ZfcG9zX2I9Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29v cmRfdXBwZXIsdV9waXhlbF9jb29yZF9sb3dlcix1X3NjYWxlX2IqdV9wYXR0 ZXJuX3NpemVfYix1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzLGFfcG9zKTt9Iiks VmU9Y3IoInZhcnlpbmcgdmVjMyB2X2RhdGE7XG4jcHJhZ21hIG1hcGJveDog ZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBkZWZp bmUgbWVkaXVtcCBmbG9hdCByYWRpdXNcbiNwcmFnbWEgbWFwYm94OiBkZWZp bmUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxv d3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdo cCB2ZWM0IHN0cm9rZV9jb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBt ZWRpdW1wIGZsb2F0IHN0cm9rZV93aWR0aFxuI3ByYWdtYSBtYXBib3g6IGRl ZmluZSBsb3dwIGZsb2F0IHN0cm9rZV9vcGFjaXR5XG52b2lkIG1haW4oKSB7 XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNvbG9y XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHJh ZGl1c1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBi bHVyXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9w YWNpdHlcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQg c3Ryb2tlX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRp dW1wIGZsb2F0IHN0cm9rZV93aWR0aFxuI3ByYWdtYSBtYXBib3g6IGluaXRp YWxpemUgbG93cCBmbG9hdCBzdHJva2Vfb3BhY2l0eVxudmVjMiBleHRydWRl PXZfZGF0YS54eTtmbG9hdCBleHRydWRlX2xlbmd0aD1sZW5ndGgoZXh0cnVk ZSk7bG93cCBmbG9hdCBhbnRpYWxpYXNibHVyPXZfZGF0YS56O2Zsb2F0IGFu dGlhbGlhc2VkX2JsdXI9LW1heChibHVyLGFudGlhbGlhc2JsdXIpO2Zsb2F0 IG9wYWNpdHlfdD1zbW9vdGhzdGVwKDAuMCxhbnRpYWxpYXNlZF9ibHVyLGV4 dHJ1ZGVfbGVuZ3RoLTEuMCk7ZmxvYXQgY29sb3JfdD1zdHJva2Vfd2lkdGgg PCAwLjAxID8gMC4wIDogc21vb3Roc3RlcChhbnRpYWxpYXNlZF9ibHVyLDAu MCxleHRydWRlX2xlbmd0aC1yYWRpdXMvKHJhZGl1cytzdHJva2Vfd2lkdGgp KTtnbF9GcmFnQ29sb3I9b3BhY2l0eV90Km1peChjb2xvcipvcGFjaXR5LHN0 cm9rZV9jb2xvcipzdHJva2Vfb3BhY2l0eSxjb2xvcl90KTtcbiNpZmRlZiBP VkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4j ZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSBib29s IHVfc2NhbGVfd2l0aF9tYXA7dW5pZm9ybSBib29sIHVfcGl0Y2hfd2l0aF9t YXA7dW5pZm9ybSB2ZWMyIHVfZXh0cnVkZV9zY2FsZTt1bmlmb3JtIGxvd3Ag ZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dW5pZm9ybSBoaWdocCBmbG9h dCB1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U7YXR0cmlidXRlIHZlYzIg YV9wb3M7dmFyeWluZyB2ZWMzIHZfZGF0YTtcbiNwcmFnbWEgbWFwYm94OiBk ZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmlu ZSBtZWRpdW1wIGZsb2F0IHJhZGl1c1xuI3ByYWdtYSBtYXBib3g6IGRlZmlu ZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93 cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hw IHZlYzQgc3Ryb2tlX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1l ZGl1bXAgZmxvYXQgc3Ryb2tlX3dpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVm aW5lIGxvd3AgZmxvYXQgc3Ryb2tlX29wYWNpdHlcbnZvaWQgbWFpbih2b2lk KSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNv bG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0 IHJhZGl1c1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9h dCBibHVyXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0 IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZl YzQgc3Ryb2tlX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBt ZWRpdW1wIGZsb2F0IHN0cm9rZV93aWR0aFxuI3ByYWdtYSBtYXBib3g6IGlu aXRpYWxpemUgbG93cCBmbG9hdCBzdHJva2Vfb3BhY2l0eVxudmVjMiBleHRy dWRlPXZlYzIobW9kKGFfcG9zLDIuMCkqMi4wLTEuMCk7dmVjMiBjaXJjbGVf Y2VudGVyPWZsb29yKGFfcG9zKjAuNSk7aWYgKHVfcGl0Y2hfd2l0aF9tYXAp IHt2ZWMyIGNvcm5lcl9wb3NpdGlvbj1jaXJjbGVfY2VudGVyO2lmICh1X3Nj YWxlX3dpdGhfbWFwKSB7Y29ybmVyX3Bvc2l0aW9uKz1leHRydWRlKihyYWRp dXMrc3Ryb2tlX3dpZHRoKSp1X2V4dHJ1ZGVfc2NhbGU7fSBlbHNlIHt2ZWM0 IHByb2plY3RlZF9jZW50ZXI9dV9tYXRyaXgqdmVjNChjaXJjbGVfY2VudGVy LDAsMSk7Y29ybmVyX3Bvc2l0aW9uKz1leHRydWRlKihyYWRpdXMrc3Ryb2tl X3dpZHRoKSp1X2V4dHJ1ZGVfc2NhbGUqKHByb2plY3RlZF9jZW50ZXIudy91 X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UpO31nbF9Qb3NpdGlvbj11X21h dHJpeCp2ZWM0KGNvcm5lcl9wb3NpdGlvbiwwLDEpO30gZWxzZSB7Z2xfUG9z aXRpb249dV9tYXRyaXgqdmVjNChjaXJjbGVfY2VudGVyLDAsMSk7aWYgKHVf c2NhbGVfd2l0aF9tYXApIHtnbF9Qb3NpdGlvbi54eSs9ZXh0cnVkZSoocmFk aXVzK3N0cm9rZV93aWR0aCkqdV9leHRydWRlX3NjYWxlKnVfY2FtZXJhX3Rv X2NlbnRlcl9kaXN0YW5jZTt9IGVsc2Uge2dsX1Bvc2l0aW9uLnh5Kz1leHRy dWRlKihyYWRpdXMrc3Ryb2tlX3dpZHRoKSp1X2V4dHJ1ZGVfc2NhbGUqZ2xf UG9zaXRpb24udzt9fWxvd3AgZmxvYXQgYW50aWFsaWFzYmx1cj0xLjAvdV9k ZXZpY2VfcGl4ZWxfcmF0aW8vKHJhZGl1cytzdHJva2Vfd2lkdGgpO3ZfZGF0 YT12ZWMzKGV4dHJ1ZGUueCxleHRydWRlLnksYW50aWFsaWFzYmx1cik7fSIp LFVlPWNyKCJ2b2lkIG1haW4oKSB7Z2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTt9 IiwiYXR0cmlidXRlIHZlYzIgYV9wb3M7dW5pZm9ybSBtYXQ0IHVfbWF0cml4 O3ZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9z LDAsMSk7fSIpLHFlPWNyKCJ1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfaW50ZW5z aXR5O3ZhcnlpbmcgdmVjMiB2X2V4dHJ1ZGU7XG4jcHJhZ21hIG1hcGJveDog ZGVmaW5lIGhpZ2hwIGZsb2F0IHdlaWdodFxuI2RlZmluZSBHQVVTU19DT0VG IDAuMzk4OTQyMjgwNDAxNDMyN1xudm9pZCBtYWluKCkge1xuI3ByYWdtYSBt YXBib3g6IGluaXRpYWxpemUgaGlnaHAgZmxvYXQgd2VpZ2h0XG5mbG9hdCBk PS0wLjUqMy4wKjMuMCpkb3Qodl9leHRydWRlLHZfZXh0cnVkZSk7ZmxvYXQg dmFsPXdlaWdodCp1X2ludGVuc2l0eSpHQVVTU19DT0VGKmV4cChkKTtnbF9G cmFnQ29sb3I9dmVjNCh2YWwsMS4wLDEuMCwxLjApO1xuI2lmZGVmIE9WRVJE UkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRp ZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIGZsb2F0IHVf ZXh0cnVkZV9zY2FsZTt1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTt1bmlmb3Jt IGZsb2F0IHVfaW50ZW5zaXR5O2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO3Zhcnlp bmcgdmVjMiB2X2V4dHJ1ZGU7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhp Z2hwIGZsb2F0IHdlaWdodFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRp dW1wIGZsb2F0IHJhZGl1c1xuY29uc3QgaGlnaHAgZmxvYXQgWkVSTz0xLjAv MjU1LjAvMTYuMDtcbiNkZWZpbmUgR0FVU1NfQ09FRiAwLjM5ODk0MjI4MDQw MTQzMjdcbnZvaWQgbWFpbih2b2lkKSB7XG4jcHJhZ21hIG1hcGJveDogaW5p dGlhbGl6ZSBoaWdocCBmbG9hdCB3ZWlnaHRcbiNwcmFnbWEgbWFwYm94OiBp bml0aWFsaXplIG1lZGl1bXAgZmxvYXQgcmFkaXVzXG52ZWMyIHVuc2NhbGVk X2V4dHJ1ZGU9dmVjMihtb2QoYV9wb3MsMi4wKSoyLjAtMS4wKTtmbG9hdCBT PXNxcnQoLTIuMCpsb2coWkVSTy93ZWlnaHQvdV9pbnRlbnNpdHkvR0FVU1Nf Q09FRikpLzMuMDt2X2V4dHJ1ZGU9Uyp1bnNjYWxlZF9leHRydWRlO3ZlYzIg ZXh0cnVkZT12X2V4dHJ1ZGUqcmFkaXVzKnVfZXh0cnVkZV9zY2FsZTt2ZWM0 IHBvcz12ZWM0KGZsb29yKGFfcG9zKjAuNSkrZXh0cnVkZSwwLDEpO2dsX1Bv c2l0aW9uPXVfbWF0cml4KnBvczt9IiksSGU9Y3IoInVuaWZvcm0gc2FtcGxl cjJEIHVfaW1hZ2U7dW5pZm9ybSBzYW1wbGVyMkQgdV9jb2xvcl9yYW1wO3Vu aWZvcm0gZmxvYXQgdV9vcGFjaXR5O3ZhcnlpbmcgdmVjMiB2X3Bvczt2b2lk IG1haW4oKSB7ZmxvYXQgdD10ZXh0dXJlMkQodV9pbWFnZSx2X3Bvcykucjt2 ZWM0IGNvbG9yPXRleHR1cmUyRCh1X2NvbG9yX3JhbXAsdmVjMih0LDAuNSkp O2dsX0ZyYWdDb2xvcj1jb2xvcip1X29wYWNpdHk7XG4jaWZkZWYgT1ZFUkRS QVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgwLjApO1xuI2VuZGlm XG59IiwidW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3dv cmxkO2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvczt2 b2lkIG1haW4oKSB7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3Bvcyp1 X3dvcmxkLDAsMSk7dl9wb3MueD1hX3Bvcy54O3ZfcG9zLnk9MS4wLWFfcG9z Lnk7fSIpLEdlPWNyKCJ2YXJ5aW5nIGZsb2F0IHZfcGxhY2VkO3Zhcnlpbmcg ZmxvYXQgdl9ub3RVc2VkO3ZvaWQgbWFpbigpIHtmbG9hdCBhbHBoYT0wLjU7 Z2xfRnJhZ0NvbG9yPXZlYzQoMS4wLDAuMCwwLjAsMS4wKSphbHBoYTtpZiAo dl9wbGFjZWQgPiAwLjUpIHtnbF9GcmFnQ29sb3I9dmVjNCgwLjAsMC4wLDEu MCwwLjUpKmFscGhhO31pZiAodl9ub3RVc2VkID4gMC41KSB7Z2xfRnJhZ0Nv bG9yKj0uMTt9fSIsImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO2F0dHJpYnV0ZSB2 ZWMyIGFfYW5jaG9yX3BvczthdHRyaWJ1dGUgdmVjMiBhX2V4dHJ1ZGU7YXR0 cmlidXRlIHZlYzIgYV9wbGFjZWQ7YXR0cmlidXRlIHZlYzIgYV9zaGlmdDt1 bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfZXh0cnVkZV9z Y2FsZTt1bmlmb3JtIGZsb2F0IHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5j ZTt2YXJ5aW5nIGZsb2F0IHZfcGxhY2VkO3ZhcnlpbmcgZmxvYXQgdl9ub3RV c2VkO3ZvaWQgbWFpbigpIHt2ZWM0IHByb2plY3RlZFBvaW50PXVfbWF0cml4 KnZlYzQoYV9hbmNob3JfcG9zLDAsMSk7aGlnaHAgZmxvYXQgY2FtZXJhX3Rv X2FuY2hvcl9kaXN0YW5jZT1wcm9qZWN0ZWRQb2ludC53O2hpZ2hwIGZsb2F0 IGNvbGxpc2lvbl9wZXJzcGVjdGl2ZV9yYXRpbz1jbGFtcCgwLjUrMC41Kih1 X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UvY2FtZXJhX3RvX2FuY2hvcl9k aXN0YW5jZSksMC4wLDQuMCk7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChh X3BvcywwLjAsMS4wKTtnbF9Qb3NpdGlvbi54eSs9KGFfZXh0cnVkZSthX3No aWZ0KSp1X2V4dHJ1ZGVfc2NhbGUqZ2xfUG9zaXRpb24udypjb2xsaXNpb25f cGVyc3BlY3RpdmVfcmF0aW87dl9wbGFjZWQ9YV9wbGFjZWQueDt2X25vdFVz ZWQ9YV9wbGFjZWQueTt9IiksWWU9Y3IoInVuaWZvcm0gZmxvYXQgdV9vdmVy c2NhbGVfZmFjdG9yO3ZhcnlpbmcgZmxvYXQgdl9wbGFjZWQ7dmFyeWluZyBm bG9hdCB2X25vdFVzZWQ7dmFyeWluZyBmbG9hdCB2X3JhZGl1czt2YXJ5aW5n IHZlYzIgdl9leHRydWRlO3ZhcnlpbmcgdmVjMiB2X2V4dHJ1ZGVfc2NhbGU7 dm9pZCBtYWluKCkge2Zsb2F0IGFscGhhPTAuNTt2ZWM0IGNvbG9yPXZlYzQo MS4wLDAuMCwwLjAsMS4wKSphbHBoYTtpZiAodl9wbGFjZWQgPiAwLjUpIHtj b2xvcj12ZWM0KDAuMCwwLjAsMS4wLDAuNSkqYWxwaGE7fWlmICh2X25vdFVz ZWQgPiAwLjUpIHtjb2xvcio9LjI7fWZsb2F0IGV4dHJ1ZGVfc2NhbGVfbGVu Z3RoPWxlbmd0aCh2X2V4dHJ1ZGVfc2NhbGUpO2Zsb2F0IGV4dHJ1ZGVfbGVu Z3RoPWxlbmd0aCh2X2V4dHJ1ZGUpKmV4dHJ1ZGVfc2NhbGVfbGVuZ3RoO2Zs b2F0IHN0cm9rZV93aWR0aD0xNS4wKmV4dHJ1ZGVfc2NhbGVfbGVuZ3RoL3Vf b3ZlcnNjYWxlX2ZhY3RvcjtmbG9hdCByYWRpdXM9dl9yYWRpdXMqZXh0cnVk ZV9zY2FsZV9sZW5ndGg7ZmxvYXQgZGlzdGFuY2VfdG9fZWRnZT1hYnMoZXh0 cnVkZV9sZW5ndGgtcmFkaXVzKTtmbG9hdCBvcGFjaXR5X3Q9c21vb3Roc3Rl cCgtc3Ryb2tlX3dpZHRoLDAuMCwtZGlzdGFuY2VfdG9fZWRnZSk7Z2xfRnJh Z0NvbG9yPW9wYWNpdHlfdCpjb2xvcjt9IiwiYXR0cmlidXRlIHZlYzIgYV9w b3M7YXR0cmlidXRlIHZlYzIgYV9hbmNob3JfcG9zO2F0dHJpYnV0ZSB2ZWMy IGFfZXh0cnVkZTthdHRyaWJ1dGUgdmVjMiBhX3BsYWNlZDt1bmlmb3JtIG1h dDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfZXh0cnVkZV9zY2FsZTt1bmlm b3JtIGZsb2F0IHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTt2YXJ5aW5n IGZsb2F0IHZfcGxhY2VkO3ZhcnlpbmcgZmxvYXQgdl9ub3RVc2VkO3Zhcnlp bmcgZmxvYXQgdl9yYWRpdXM7dmFyeWluZyB2ZWMyIHZfZXh0cnVkZTt2YXJ5 aW5nIHZlYzIgdl9leHRydWRlX3NjYWxlO3ZvaWQgbWFpbigpIHt2ZWM0IHBy b2plY3RlZFBvaW50PXVfbWF0cml4KnZlYzQoYV9hbmNob3JfcG9zLDAsMSk7 aGlnaHAgZmxvYXQgY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZT1wcm9qZWN0 ZWRQb2ludC53O2hpZ2hwIGZsb2F0IGNvbGxpc2lvbl9wZXJzcGVjdGl2ZV9y YXRpbz1jbGFtcCgwLjUrMC41Kih1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFu Y2UvY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZSksMC4wLDQuMCk7Z2xfUG9z aXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLjAsMS4wKTtoaWdocCBmbG9h dCBwYWRkaW5nX2ZhY3Rvcj0xLjI7Z2xfUG9zaXRpb24ueHkrPWFfZXh0cnVk ZSp1X2V4dHJ1ZGVfc2NhbGUqcGFkZGluZ19mYWN0b3IqZ2xfUG9zaXRpb24u dypjb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW87dl9wbGFjZWQ9YV9wbGFj ZWQueDt2X25vdFVzZWQ9YV9wbGFjZWQueTt2X3JhZGl1cz1hYnMoYV9leHRy dWRlLnkpO3ZfZXh0cnVkZT1hX2V4dHJ1ZGUqcGFkZGluZ19mYWN0b3I7dl9l eHRydWRlX3NjYWxlPXVfZXh0cnVkZV9zY2FsZSp1X2NhbWVyYV90b19jZW50 ZXJfZGlzdGFuY2UqY29sbGlzaW9uX3BlcnNwZWN0aXZlX3JhdGlvO30iKSxX ZT1jcigidW5pZm9ybSBoaWdocCB2ZWM0IHVfY29sb3I7dm9pZCBtYWluKCkg e2dsX0ZyYWdDb2xvcj11X2NvbG9yO30iLCJhdHRyaWJ1dGUgdmVjMiBhX3Bv czt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dm9pZCBtYWluKCkge2dsX1Bvc2l0 aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt9IiksWGU9Y3IoIiNwcmFn bWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBt YXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigp IHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29s b3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3Bh Y2l0eVxuZ2xfRnJhZ0NvbG9yPWNvbG9yKm9wYWNpdHk7XG4jaWZkZWYgT1ZF UkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2Vu ZGlmXG59IiwiYXR0cmlidXRlIHZlYzIgYV9wb3M7dW5pZm9ybSBtYXQ0IHVf bWF0cml4O1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNv bG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0 eVxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUg aGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUg bG93cCBmbG9hdCBvcGFjaXR5XG5nbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0 KGFfcG9zLDAsMSk7fSIpLFplPWNyKCJ2YXJ5aW5nIHZlYzIgdl9wb3M7XG4j cHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgb3V0bGluZV9jb2xv clxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlc bnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhp Z2hwIHZlYzQgb3V0bGluZV9jb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRp YWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5mbG9hdCBkaXN0PWxlbmd0aCh2 X3Bvcy1nbF9GcmFnQ29vcmQueHkpO2Zsb2F0IGFscGhhPTEuMC1zbW9vdGhz dGVwKDAuMCwxLjAsZGlzdCk7Z2xfRnJhZ0NvbG9yPW91dGxpbmVfY29sb3Iq KGFscGhhKm9wYWNpdHkpO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxu Z2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsImF0dHJpYnV0 ZSB2ZWMyIGFfcG9zO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZl YzIgdV93b3JsZDt2YXJ5aW5nIHZlYzIgdl9wb3M7XG4jcHJhZ21hIG1hcGJv eDogZGVmaW5lIGhpZ2hwIHZlYzQgb3V0bGluZV9jb2xvclxuI3ByYWdtYSBt YXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigp IHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgb3V0 bGluZV9jb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBm bG9hdCBvcGFjaXR5XG5nbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9z LDAsMSk7dl9wb3M9KGdsX1Bvc2l0aW9uLnh5L2dsX1Bvc2l0aW9uLncrMS4w KS8yLjAqdV93b3JsZDt9IiksSmU9Y3IoInVuaWZvcm0gdmVjMiB1X3RleHNp emU7dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt1bmlmb3JtIGZsb2F0IHVf ZmFkZTt2YXJ5aW5nIHZlYzIgdl9wb3NfYTt2YXJ5aW5nIHZlYzIgdl9wb3Nf Yjt2YXJ5aW5nIHZlYzIgdl9wb3M7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBs b3dwIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGxvd3AgdmVjNCBwYXR0ZXJuX3RvXG52b2lkIG1haW4oKSB7XG4jcHJhZ21h IG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFn bWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX2Zy b21cbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBw YXR0ZXJuX3RvXG52ZWMyIHBhdHRlcm5fdGxfYT1wYXR0ZXJuX2Zyb20ueHk7 dmVjMiBwYXR0ZXJuX2JyX2E9cGF0dGVybl9mcm9tLnp3O3ZlYzIgcGF0dGVy bl90bF9iPXBhdHRlcm5fdG8ueHk7dmVjMiBwYXR0ZXJuX2JyX2I9cGF0dGVy bl90by56dzt2ZWMyIGltYWdlY29vcmQ9bW9kKHZfcG9zX2EsMS4wKTt2ZWMy IHBvcz1taXgocGF0dGVybl90bF9hL3VfdGV4c2l6ZSxwYXR0ZXJuX2JyX2Ev dV90ZXhzaXplLGltYWdlY29vcmQpO3ZlYzQgY29sb3IxPXRleHR1cmUyRCh1 X2ltYWdlLHBvcyk7dmVjMiBpbWFnZWNvb3JkX2I9bW9kKHZfcG9zX2IsMS4w KTt2ZWMyIHBvczI9bWl4KHBhdHRlcm5fdGxfYi91X3RleHNpemUscGF0dGVy bl9icl9iL3VfdGV4c2l6ZSxpbWFnZWNvb3JkX2IpO3ZlYzQgY29sb3IyPXRl eHR1cmUyRCh1X2ltYWdlLHBvczIpO2Zsb2F0IGRpc3Q9bGVuZ3RoKHZfcG9z LWdsX0ZyYWdDb29yZC54eSk7ZmxvYXQgYWxwaGE9MS4wLXNtb290aHN0ZXAo MC4wLDEuMCxkaXN0KTtnbF9GcmFnQ29sb3I9bWl4KGNvbG9yMSxjb2xvcjIs dV9mYWRlKSphbHBoYSpvcGFjaXR5O1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BF Q1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsInVu aWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV93b3JsZDt1bmlm b3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9w aXhlbF9jb29yZF9sb3dlcjt1bmlmb3JtIHZlYzQgdV9zY2FsZTthdHRyaWJ1 dGUgdmVjMiBhX3Bvczt2YXJ5aW5nIHZlYzIgdl9wb3NfYTt2YXJ5aW5nIHZl YzIgdl9wb3NfYjt2YXJ5aW5nIHZlYzIgdl9wb3M7XG4jcHJhZ21hIG1hcGJv eDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6 IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJv eDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX3RvXG52b2lkIG1haW4oKSB7 XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNp dHlcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBw YXR0ZXJuX2Zyb21cbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1 bXAgdmVjNCBwYXR0ZXJuX3RvXG52ZWMyIHBhdHRlcm5fdGxfYT1wYXR0ZXJu X2Zyb20ueHk7dmVjMiBwYXR0ZXJuX2JyX2E9cGF0dGVybl9mcm9tLnp3O3Zl YzIgcGF0dGVybl90bF9iPXBhdHRlcm5fdG8ueHk7dmVjMiBwYXR0ZXJuX2Jy X2I9cGF0dGVybl90by56dztmbG9hdCBwaXhlbFJhdGlvPXVfc2NhbGUueDtm bG9hdCB0aWxlUmF0aW89dV9zY2FsZS55O2Zsb2F0IGZyb21TY2FsZT11X3Nj YWxlLno7ZmxvYXQgdG9TY2FsZT11X3NjYWxlLnc7Z2xfUG9zaXRpb249dV9t YXRyaXgqdmVjNChhX3BvcywwLDEpO3ZlYzIgZGlzcGxheV9zaXplX2E9dmVj MigocGF0dGVybl9icl9hLngtcGF0dGVybl90bF9hLngpL3BpeGVsUmF0aW8s KHBhdHRlcm5fYnJfYS55LXBhdHRlcm5fdGxfYS55KS9waXhlbFJhdGlvKTt2 ZWMyIGRpc3BsYXlfc2l6ZV9iPXZlYzIoKHBhdHRlcm5fYnJfYi54LXBhdHRl cm5fdGxfYi54KS9waXhlbFJhdGlvLChwYXR0ZXJuX2JyX2IueS1wYXR0ZXJu X3RsX2IueSkvcGl4ZWxSYXRpbyk7dl9wb3NfYT1nZXRfcGF0dGVybl9wb3Mo dV9waXhlbF9jb29yZF91cHBlcix1X3BpeGVsX2Nvb3JkX2xvd2VyLGZyb21T Y2FsZSpkaXNwbGF5X3NpemVfYSx0aWxlUmF0aW8sYV9wb3MpO3ZfcG9zX2I9 Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsdV9waXhlbF9j b29yZF9sb3dlcix0b1NjYWxlKmRpc3BsYXlfc2l6ZV9iLHRpbGVSYXRpbyxh X3Bvcyk7dl9wb3M9KGdsX1Bvc2l0aW9uLnh5L2dsX1Bvc2l0aW9uLncrMS4w KS8yLjAqdV93b3JsZDt9IiksS2U9Y3IoInVuaWZvcm0gdmVjMiB1X3RleHNp emU7dW5pZm9ybSBmbG9hdCB1X2ZhZGU7dW5pZm9ybSBzYW1wbGVyMkQgdV9p bWFnZTt2YXJ5aW5nIHZlYzIgdl9wb3NfYTt2YXJ5aW5nIHZlYzIgdl9wb3Nf YjtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5 XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX2Zy b21cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5f dG9cbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXpl IGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbnZlYzIgcGF0 dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRlcm5fYnJfYT1w YXR0ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVybl90by54 eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0ZXJuX3RvLnp3O3ZlYzIgaW1hZ2Vj b29yZD1tb2Qodl9wb3NfYSwxLjApO3ZlYzIgcG9zPW1peChwYXR0ZXJuX3Rs X2EvdV90ZXhzaXplLHBhdHRlcm5fYnJfYS91X3RleHNpemUsaW1hZ2Vjb29y ZCk7dmVjNCBjb2xvcjE9dGV4dHVyZTJEKHVfaW1hZ2UscG9zKTt2ZWMyIGlt YWdlY29vcmRfYj1tb2Qodl9wb3NfYiwxLjApO3ZlYzIgcG9zMj1taXgocGF0 dGVybl90bF9iL3VfdGV4c2l6ZSxwYXR0ZXJuX2JyX2IvdV90ZXhzaXplLGlt YWdlY29vcmRfYik7dmVjNCBjb2xvcjI9dGV4dHVyZTJEKHVfaW1hZ2UscG9z Mik7Z2xfRnJhZ0NvbG9yPW1peChjb2xvcjEsY29sb3IyLHVfZmFkZSkqb3Bh Y2l0eTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xv cj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRy aXg7dW5pZm9ybSB2ZWMyIHVfcGl4ZWxfY29vcmRfdXBwZXI7dW5pZm9ybSB2 ZWMyIHVfcGl4ZWxfY29vcmRfbG93ZXI7dW5pZm9ybSB2ZWM0IHVfc2NhbGU7 YXR0cmlidXRlIHZlYzIgYV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zX2E7dmFy eWluZyB2ZWMyIHZfcG9zX2I7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxv d3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dw IHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxv d3AgdmVjNCBwYXR0ZXJuX3RvXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1h cGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEg bWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX2Zyb21c biNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0 ZXJuX3RvXG52ZWMyIHBhdHRlcm5fdGxfYT1wYXR0ZXJuX2Zyb20ueHk7dmVj MiBwYXR0ZXJuX2JyX2E9cGF0dGVybl9mcm9tLnp3O3ZlYzIgcGF0dGVybl90 bF9iPXBhdHRlcm5fdG8ueHk7dmVjMiBwYXR0ZXJuX2JyX2I9cGF0dGVybl90 by56dztmbG9hdCBwaXhlbFJhdGlvPXVfc2NhbGUueDtmbG9hdCB0aWxlWm9v bVJhdGlvPXVfc2NhbGUueTtmbG9hdCBmcm9tU2NhbGU9dV9zY2FsZS56O2Zs b2F0IHRvU2NhbGU9dV9zY2FsZS53O3ZlYzIgZGlzcGxheV9zaXplX2E9dmVj MigocGF0dGVybl9icl9hLngtcGF0dGVybl90bF9hLngpL3BpeGVsUmF0aW8s KHBhdHRlcm5fYnJfYS55LXBhdHRlcm5fdGxfYS55KS9waXhlbFJhdGlvKTt2 ZWMyIGRpc3BsYXlfc2l6ZV9iPXZlYzIoKHBhdHRlcm5fYnJfYi54LXBhdHRl cm5fdGxfYi54KS9waXhlbFJhdGlvLChwYXR0ZXJuX2JyX2IueS1wYXR0ZXJu X3RsX2IueSkvcGl4ZWxSYXRpbyk7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVj NChhX3BvcywwLDEpO3ZfcG9zX2E9Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxf Y29vcmRfdXBwZXIsdV9waXhlbF9jb29yZF9sb3dlcixmcm9tU2NhbGUqZGlz cGxheV9zaXplX2EsdGlsZVpvb21SYXRpbyxhX3Bvcyk7dl9wb3NfYj1nZXRf cGF0dGVybl9wb3ModV9waXhlbF9jb29yZF91cHBlcix1X3BpeGVsX2Nvb3Jk X2xvd2VyLHRvU2NhbGUqZGlzcGxheV9zaXplX2IsdGlsZVpvb21SYXRpbyxh X3Bvcyk7fSIpLFFlPWNyKCJ2YXJ5aW5nIHZlYzQgdl9jb2xvcjt2b2lkIG1h aW4oKSB7Z2xfRnJhZ0NvbG9yPXZfY29sb3I7XG4jaWZkZWYgT1ZFUkRSQVdf SU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59 IiwidW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMyB1X2xpZ2h0 Y29sb3I7dW5pZm9ybSBsb3dwIHZlYzMgdV9saWdodHBvczt1bmlmb3JtIGxv d3AgZmxvYXQgdV9saWdodGludGVuc2l0eTt1bmlmb3JtIGZsb2F0IHVfdmVy dGljYWxfZ3JhZGllbnQ7dW5pZm9ybSBsb3dwIGZsb2F0IHVfb3BhY2l0eTth dHRyaWJ1dGUgdmVjMiBhX3BvczthdHRyaWJ1dGUgdmVjNCBhX25vcm1hbF9l ZDt2YXJ5aW5nIHZlYzQgdl9jb2xvcjtcbiNwcmFnbWEgbWFwYm94OiBkZWZp bmUgaGlnaHAgZmxvYXQgYmFzZVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBo aWdocCBmbG9hdCBoZWlnaHRcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGln aHAgdmVjNCBjb2xvclxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgaGlnaHAgZmxvYXQgYmFzZVxuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgaGlnaHAgZmxvYXQgaGVpZ2h0XG4jcHJhZ21hIG1hcGJv eDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNvbG9yXG52ZWMzIG5vcm1hbD1h X25vcm1hbF9lZC54eXo7YmFzZT1tYXgoMC4wLGJhc2UpO2hlaWdodD1tYXgo MC4wLGhlaWdodCk7ZmxvYXQgdD1tb2Qobm9ybWFsLngsMi4wKTtnbF9Qb3Np dGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLHQgPiAwLjAgPyBoZWlnaHQgOiBi YXNlLDEpO2Zsb2F0IGNvbG9ydmFsdWU9Y29sb3IuciowLjIxMjYrY29sb3Iu ZyowLjcxNTIrY29sb3IuYiowLjA3MjI7dl9jb2xvcj12ZWM0KDAuMCwwLjAs MC4wLDEuMCk7dmVjNCBhbWJpZW50bGlnaHQ9dmVjNCgwLjAzLDAuMDMsMC4w MywxLjApO2NvbG9yKz1hbWJpZW50bGlnaHQ7ZmxvYXQgZGlyZWN0aW9uYWw9 Y2xhbXAoZG90KG5vcm1hbC8xNjM4NC4wLHVfbGlnaHRwb3MpLDAuMCwxLjAp O2RpcmVjdGlvbmFsPW1peCgoMS4wLXVfbGlnaHRpbnRlbnNpdHkpLG1heCgo MS4wLWNvbG9ydmFsdWUrdV9saWdodGludGVuc2l0eSksMS4wKSxkaXJlY3Rp b25hbCk7aWYgKG5vcm1hbC55ICE9MC4wKSB7ZGlyZWN0aW9uYWwqPSgoMS4w LXVfdmVydGljYWxfZ3JhZGllbnQpKyh1X3ZlcnRpY2FsX2dyYWRpZW50KmNs YW1wKCh0K2Jhc2UpKnBvdyhoZWlnaHQvMTUwLjAsMC41KSxtaXgoMC43LDAu OTgsMS4wLXVfbGlnaHRpbnRlbnNpdHkpLDEuMCkpKTt9dl9jb2xvci5yKz1j bGFtcChjb2xvci5yKmRpcmVjdGlvbmFsKnVfbGlnaHRjb2xvci5yLG1peCgw LjAsMC4zLDEuMC11X2xpZ2h0Y29sb3IuciksMS4wKTt2X2NvbG9yLmcrPWNs YW1wKGNvbG9yLmcqZGlyZWN0aW9uYWwqdV9saWdodGNvbG9yLmcsbWl4KDAu MCwwLjMsMS4wLXVfbGlnaHRjb2xvci5nKSwxLjApO3ZfY29sb3IuYis9Y2xh bXAoY29sb3IuYipkaXJlY3Rpb25hbCp1X2xpZ2h0Y29sb3IuYixtaXgoMC4w LDAuMywxLjAtdV9saWdodGNvbG9yLmIpLDEuMCk7dl9jb2xvcio9dV9vcGFj aXR5O30iKSwkZT1jcigidW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3Jt IGZsb2F0IHVfZmFkZTt1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3Zhcnlp bmcgdmVjMiB2X3Bvc19hO3ZhcnlpbmcgdmVjMiB2X3Bvc19iO3Zhcnlpbmcg dmVjNCB2X2xpZ2h0aW5nO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dw IGZsb2F0IGJhc2VcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9h dCBoZWlnaHRcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBh dHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQg cGF0dGVybl90b1xudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGlu aXRpYWxpemUgbG93cCBmbG9hdCBiYXNlXG4jcHJhZ21hIG1hcGJveDogaW5p dGlhbGl6ZSBsb3dwIGZsb2F0IGhlaWdodFxuI3ByYWdtYSBtYXBib3g6IGlu aXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBt YXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbnZl YzIgcGF0dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRlcm5f YnJfYT1wYXR0ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVy bl90by54eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0ZXJuX3RvLnp3O3ZlYzIg aW1hZ2Vjb29yZD1tb2Qodl9wb3NfYSwxLjApO3ZlYzIgcG9zPW1peChwYXR0 ZXJuX3RsX2EvdV90ZXhzaXplLHBhdHRlcm5fYnJfYS91X3RleHNpemUsaW1h Z2Vjb29yZCk7dmVjNCBjb2xvcjE9dGV4dHVyZTJEKHVfaW1hZ2UscG9zKTt2 ZWMyIGltYWdlY29vcmRfYj1tb2Qodl9wb3NfYiwxLjApO3ZlYzIgcG9zMj1t aXgocGF0dGVybl90bF9iL3VfdGV4c2l6ZSxwYXR0ZXJuX2JyX2IvdV90ZXhz aXplLGltYWdlY29vcmRfYik7dmVjNCBjb2xvcjI9dGV4dHVyZTJEKHVfaW1h Z2UscG9zMik7dmVjNCBtaXhlZENvbG9yPW1peChjb2xvcjEsY29sb3IyLHVf ZmFkZSk7Z2xfRnJhZ0NvbG9yPW1peGVkQ29sb3Iqdl9saWdodGluZztcbiNp ZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEu MCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9y bSB2ZWMyIHVfcGl4ZWxfY29vcmRfdXBwZXI7dW5pZm9ybSB2ZWMyIHVfcGl4 ZWxfY29vcmRfbG93ZXI7dW5pZm9ybSBmbG9hdCB1X2hlaWdodF9mYWN0b3I7 dW5pZm9ybSB2ZWM0IHVfc2NhbGU7dW5pZm9ybSBmbG9hdCB1X3ZlcnRpY2Fs X2dyYWRpZW50O3VuaWZvcm0gbG93cCBmbG9hdCB1X29wYWNpdHk7dW5pZm9y bSB2ZWMzIHVfbGlnaHRjb2xvcjt1bmlmb3JtIGxvd3AgdmVjMyB1X2xpZ2h0 cG9zO3VuaWZvcm0gbG93cCBmbG9hdCB1X2xpZ2h0aW50ZW5zaXR5O2F0dHJp YnV0ZSB2ZWMyIGFfcG9zO2F0dHJpYnV0ZSB2ZWM0IGFfbm9ybWFsX2VkO3Zh cnlpbmcgdmVjMiB2X3Bvc19hO3ZhcnlpbmcgdmVjMiB2X3Bvc19iO3Zhcnlp bmcgdmVjNCB2X2xpZ2h0aW5nO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBs b3dwIGZsb2F0IGJhc2VcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBm bG9hdCBoZWlnaHRcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0 IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZl YzQgcGF0dGVybl90b1xudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgbG93cCBmbG9hdCBiYXNlXG4jcHJhZ21hIG1hcGJveDog aW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhlaWdodFxuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdt YSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9c bnZlYzIgcGF0dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRl cm5fYnJfYT1wYXR0ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0 dGVybl90by54eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0ZXJuX3RvLnp3O2Zs b2F0IHBpeGVsUmF0aW89dV9zY2FsZS54O2Zsb2F0IHRpbGVSYXRpbz11X3Nj YWxlLnk7ZmxvYXQgZnJvbVNjYWxlPXVfc2NhbGUuejtmbG9hdCB0b1NjYWxl PXVfc2NhbGUudzt2ZWMzIG5vcm1hbD1hX25vcm1hbF9lZC54eXo7ZmxvYXQg ZWRnZWRpc3RhbmNlPWFfbm9ybWFsX2VkLnc7dmVjMiBkaXNwbGF5X3NpemVf YT12ZWMyKChwYXR0ZXJuX2JyX2EueC1wYXR0ZXJuX3RsX2EueCkvcGl4ZWxS YXRpbywocGF0dGVybl9icl9hLnktcGF0dGVybl90bF9hLnkpL3BpeGVsUmF0 aW8pO3ZlYzIgZGlzcGxheV9zaXplX2I9dmVjMigocGF0dGVybl9icl9iLngt cGF0dGVybl90bF9iLngpL3BpeGVsUmF0aW8sKHBhdHRlcm5fYnJfYi55LXBh dHRlcm5fdGxfYi55KS9waXhlbFJhdGlvKTtiYXNlPW1heCgwLjAsYmFzZSk7 aGVpZ2h0PW1heCgwLjAsaGVpZ2h0KTtmbG9hdCB0PW1vZChub3JtYWwueCwy LjApO2Zsb2F0IHo9dCA+IDAuMCA/IGhlaWdodCA6IGJhc2U7Z2xfUG9zaXRp b249dV9tYXRyaXgqdmVjNChhX3Bvcyx6LDEpO3ZlYzIgcG9zPW5vcm1hbC54 PT0xLjAgJiYgbm9ybWFsLnk9PTAuMCAmJiBub3JtYWwuej09MTYzODQuMFxu PyBhX3Bvc1xuOiB2ZWMyKGVkZ2VkaXN0YW5jZSx6KnVfaGVpZ2h0X2ZhY3Rv cik7dl9wb3NfYT1nZXRfcGF0dGVybl9wb3ModV9waXhlbF9jb29yZF91cHBl cix1X3BpeGVsX2Nvb3JkX2xvd2VyLGZyb21TY2FsZSpkaXNwbGF5X3NpemVf YSx0aWxlUmF0aW8scG9zKTt2X3Bvc19iPWdldF9wYXR0ZXJuX3Bvcyh1X3Bp eGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29vcmRfbG93ZXIsdG9TY2FsZSpk aXNwbGF5X3NpemVfYix0aWxlUmF0aW8scG9zKTt2X2xpZ2h0aW5nPXZlYzQo MC4wLDAuMCwwLjAsMS4wKTtmbG9hdCBkaXJlY3Rpb25hbD1jbGFtcChkb3Qo bm9ybWFsLzE2MzgzLjAsdV9saWdodHBvcyksMC4wLDEuMCk7ZGlyZWN0aW9u YWw9bWl4KCgxLjAtdV9saWdodGludGVuc2l0eSksbWF4KCgwLjUrdV9saWdo dGludGVuc2l0eSksMS4wKSxkaXJlY3Rpb25hbCk7aWYgKG5vcm1hbC55ICE9 MC4wKSB7ZGlyZWN0aW9uYWwqPSgoMS4wLXVfdmVydGljYWxfZ3JhZGllbnQp Kyh1X3ZlcnRpY2FsX2dyYWRpZW50KmNsYW1wKCh0K2Jhc2UpKnBvdyhoZWln aHQvMTUwLjAsMC41KSxtaXgoMC43LDAuOTgsMS4wLXVfbGlnaHRpbnRlbnNp dHkpLDEuMCkpKTt9dl9saWdodGluZy5yZ2IrPWNsYW1wKGRpcmVjdGlvbmFs KnVfbGlnaHRjb2xvcixtaXgodmVjMygwLjApLHZlYzMoMC4zKSwxLjAtdV9s aWdodGNvbG9yKSx2ZWMzKDEuMCkpO3ZfbGlnaHRpbmcqPXVfb3BhY2l0eTt9 IiksdHI9Y3IoIiNpZmRlZiBHTF9FU1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0 O1xuI2VuZGlmXG51bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3Zhcnlpbmcg dmVjMiB2X3Bvczt1bmlmb3JtIHZlYzIgdV9kaW1lbnNpb247dW5pZm9ybSBm bG9hdCB1X3pvb207dW5pZm9ybSBmbG9hdCB1X21heHpvb207ZmxvYXQgZ2V0 RWxldmF0aW9uKHZlYzIgY29vcmQsZmxvYXQgYmlhcykge3ZlYzQgZGF0YT10 ZXh0dXJlMkQodV9pbWFnZSxjb29yZCkqMjU1LjA7cmV0dXJuIChkYXRhLnIr ZGF0YS5nKjI1Ni4wK2RhdGEuYioyNTYuMCoyNTYuMCkvNC4wO312b2lkIG1h aW4oKSB7dmVjMiBlcHNpbG9uPTEuMC91X2RpbWVuc2lvbjtmbG9hdCBhPWdl dEVsZXZhdGlvbih2X3Bvcyt2ZWMyKC1lcHNpbG9uLngsLWVwc2lsb24ueSks MC4wKTtmbG9hdCBiPWdldEVsZXZhdGlvbih2X3Bvcyt2ZWMyKDAsLWVwc2ls b24ueSksMC4wKTtmbG9hdCBjPWdldEVsZXZhdGlvbih2X3Bvcyt2ZWMyKGVw c2lsb24ueCwtZXBzaWxvbi55KSwwLjApO2Zsb2F0IGQ9Z2V0RWxldmF0aW9u KHZfcG9zK3ZlYzIoLWVwc2lsb24ueCwwKSwwLjApO2Zsb2F0IGU9Z2V0RWxl dmF0aW9uKHZfcG9zLDAuMCk7ZmxvYXQgZj1nZXRFbGV2YXRpb24odl9wb3Mr dmVjMihlcHNpbG9uLngsMCksMC4wKTtmbG9hdCBnPWdldEVsZXZhdGlvbih2 X3Bvcyt2ZWMyKC1lcHNpbG9uLngsZXBzaWxvbi55KSwwLjApO2Zsb2F0IGg9 Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoMCxlcHNpbG9uLnkpLDAuMCk7Zmxv YXQgaT1nZXRFbGV2YXRpb24odl9wb3MrdmVjMihlcHNpbG9uLngsZXBzaWxv bi55KSwwLjApO2Zsb2F0IGV4YWdnZXJhdGlvbj11X3pvb20gPCAyLjAgPyAw LjQgOiB1X3pvb20gPCA0LjUgPyAwLjM1IDogMC4zO3ZlYzIgZGVyaXY9dmVj MigoYytmK2YraSktKGErZCtkK2cpLChnK2graCtpKS0oYStiK2IrYykpLyBw b3coMi4wLCh1X3pvb20tdV9tYXh6b29tKSpleGFnZ2VyYXRpb24rMTkuMjU2 Mi11X3pvb20pO2dsX0ZyYWdDb2xvcj1jbGFtcCh2ZWM0KGRlcml2LngvMi4w KzAuNSxkZXJpdi55LzIuMCswLjUsMS4wLDEuMCksMC4wLDEuMCk7XG4jaWZk ZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjAp O1xuI2VuZGlmXG59IiwidW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0g dmVjMiB1X2RpbWVuc2lvbjthdHRyaWJ1dGUgdmVjMiBhX3BvczthdHRyaWJ1 dGUgdmVjMiBhX3RleHR1cmVfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvczt2b2lk IG1haW4oKSB7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLDEp O2hpZ2hwIHZlYzIgZXBzaWxvbj0xLjAvdV9kaW1lbnNpb247ZmxvYXQgc2Nh bGU9KHVfZGltZW5zaW9uLngtMi4wKS91X2RpbWVuc2lvbi54O3ZfcG9zPShh X3RleHR1cmVfcG9zLzgxOTIuMCkqc2NhbGUrZXBzaWxvbjt9IiksZXI9Y3Io InVuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7dmFyeWluZyB2ZWMyIHZfcG9z O3VuaWZvcm0gdmVjMiB1X2xhdHJhbmdlO3VuaWZvcm0gdmVjMiB1X2xpZ2h0 O3VuaWZvcm0gdmVjNCB1X3NoYWRvdzt1bmlmb3JtIHZlYzQgdV9oaWdobGln aHQ7dW5pZm9ybSB2ZWM0IHVfYWNjZW50O1xuI2RlZmluZSBQSSAzLjE0MTU5 MjY1MzU4OTc5M1xudm9pZCBtYWluKCkge3ZlYzQgcGl4ZWw9dGV4dHVyZTJE KHVfaW1hZ2Usdl9wb3MpO3ZlYzIgZGVyaXY9KChwaXhlbC5yZyoyLjApLTEu MCk7ZmxvYXQgc2NhbGVGYWN0b3I9Y29zKHJhZGlhbnMoKHVfbGF0cmFuZ2Vb MF0tdV9sYXRyYW5nZVsxXSkqKDEuMC12X3Bvcy55KSt1X2xhdHJhbmdlWzFd KSk7ZmxvYXQgc2xvcGU9YXRhbigxLjI1Kmxlbmd0aChkZXJpdikvc2NhbGVG YWN0b3IpO2Zsb2F0IGFzcGVjdD1kZXJpdi54ICE9MC4wID8gYXRhbihkZXJp di55LC1kZXJpdi54KSA6IFBJLzIuMCooZGVyaXYueSA+IDAuMCA/IDEuMCA6 LTEuMCk7ZmxvYXQgaW50ZW5zaXR5PXVfbGlnaHQueDtmbG9hdCBhemltdXRo PXVfbGlnaHQueStQSTtmbG9hdCBiYXNlPTEuODc1LWludGVuc2l0eSoxLjc1 O2Zsb2F0IG1heFZhbHVlPTAuNSpQSTtmbG9hdCBzY2FsZWRTbG9wZT1pbnRl bnNpdHkgIT0wLjUgPyAoKHBvdyhiYXNlLHNsb3BlKS0xLjApLyhwb3coYmFz ZSxtYXhWYWx1ZSktMS4wKSkqbWF4VmFsdWUgOiBzbG9wZTtmbG9hdCBhY2Nl bnQ9Y29zKHNjYWxlZFNsb3BlKTt2ZWM0IGFjY2VudF9jb2xvcj0oMS4wLWFj Y2VudCkqdV9hY2NlbnQqY2xhbXAoaW50ZW5zaXR5KjIuMCwwLjAsMS4wKTtm bG9hdCBzaGFkZT1hYnMobW9kKChhc3BlY3QrYXppbXV0aCkvUEkrMC41LDIu MCktMS4wKTt2ZWM0IHNoYWRlX2NvbG9yPW1peCh1X3NoYWRvdyx1X2hpZ2hs aWdodCxzaGFkZSkqc2luKHNjYWxlZFNsb3BlKSpjbGFtcChpbnRlbnNpdHkq Mi4wLDAuMCwxLjApO2dsX0ZyYWdDb2xvcj1hY2NlbnRfY29sb3IqKDEuMC1z aGFkZV9jb2xvci5hKStzaGFkZV9jb2xvcjtcbiNpZmRlZiBPVkVSRFJBV19J TlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0i LCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7YXR0cmlidXRlIHZlYzIgYV9wb3M7 YXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlX3Bvczt2YXJ5aW5nIHZlYzIgdl9w b3M7dm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9w b3MsMCwxKTt2X3Bvcz1hX3RleHR1cmVfcG9zLzgxOTIuMDt9IikscnI9Y3Io InVuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt2YXJ5 aW5nIHZlYzIgdl93aWR0aDI7dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3Zhcnlp bmcgZmxvYXQgdl9nYW1tYV9zY2FsZTtcbiNwcmFnbWEgbWFwYm94OiBkZWZp bmUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBs b3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBm bG9hdCBvcGFjaXR5XG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDog aW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDog aW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBp bml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuZmxvYXQgZGlzdD1sZW5n dGgodl9ub3JtYWwpKnZfd2lkdGgyLnM7ZmxvYXQgYmx1cjI9KGJsdXIrMS4w L3VfZGV2aWNlX3BpeGVsX3JhdGlvKSp2X2dhbW1hX3NjYWxlO2Zsb2F0IGFs cGhhPWNsYW1wKG1pbihkaXN0LSh2X3dpZHRoMi50LWJsdXIyKSx2X3dpZHRo Mi5zLWRpc3QpL2JsdXIyLDAuMCwxLjApO2dsX0ZyYWdDb2xvcj1jb2xvcioo YWxwaGEqb3BhY2l0eSk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5n bF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59IiwiXG4jZGVmaW5l IHNjYWxlIDAuMDE1ODczMDE2XG5hdHRyaWJ1dGUgdmVjMiBhX3Bvc19ub3Jt YWw7YXR0cmlidXRlIHZlYzQgYV9kYXRhO3VuaWZvcm0gbWF0NCB1X21hdHJp eDt1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdV9yYXRpbzt1bmlmb3JtIHZlYzIg dV91bml0c190b19waXhlbHM7dW5pZm9ybSBsb3dwIGZsb2F0IHVfZGV2aWNl X3BpeGVsX3JhdGlvO3ZhcnlpbmcgdmVjMiB2X25vcm1hbDt2YXJ5aW5nIHZl YzIgdl93aWR0aDI7dmFyeWluZyBmbG9hdCB2X2dhbW1hX3NjYWxlO3Zhcnlp bmcgaGlnaHAgZmxvYXQgdl9saW5lc29mYXI7XG4jcHJhZ21hIG1hcGJveDog ZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBkZWZp bmUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxv d3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRp dW1wIGZsb2F0IGdhcHdpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxv d3AgZmxvYXQgb2Zmc2V0XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1 bXAgZmxvYXQgd2lkdGhcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94 OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94 OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJv eDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IGdhcHdpZHRoXG4jcHJhZ21h IG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9mZnNldFxuI3ByYWdt YSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCB3aWR0aFxuZmxv YXQgQU5USUFMSUFTSU5HPTEuMC91X2RldmljZV9waXhlbF9yYXRpby8yLjA7 dmVjMiBhX2V4dHJ1ZGU9YV9kYXRhLnh5LTEyOC4wO2Zsb2F0IGFfZGlyZWN0 aW9uPW1vZChhX2RhdGEueiw0LjApLTEuMDt2X2xpbmVzb2Zhcj0oZmxvb3Io YV9kYXRhLnovNC4wKSthX2RhdGEudyo2NC4wKSoyLjA7dmVjMiBwb3M9Zmxv b3IoYV9wb3Nfbm9ybWFsKjAuNSk7bWVkaXVtcCB2ZWMyIG5vcm1hbD1hX3Bv c19ub3JtYWwtMi4wKnBvcztub3JtYWwueT1ub3JtYWwueSoyLjAtMS4wO3Zf bm9ybWFsPW5vcm1hbDtnYXB3aWR0aD1nYXB3aWR0aC8yLjA7ZmxvYXQgaGFs ZndpZHRoPXdpZHRoLzIuMDtvZmZzZXQ9LTEuMCpvZmZzZXQ7ZmxvYXQgaW5z ZXQ9Z2Fwd2lkdGgrKGdhcHdpZHRoID4gMC4wID8gQU5USUFMSUFTSU5HIDog MC4wKTtmbG9hdCBvdXRzZXQ9Z2Fwd2lkdGgraGFsZndpZHRoKihnYXB3aWR0 aCA+IDAuMCA/IDIuMCA6IDEuMCkrKGhhbGZ3aWR0aD09MC4wID8gMC4wIDog QU5USUFMSUFTSU5HKTttZWRpdW1wIHZlYzIgZGlzdD1vdXRzZXQqYV9leHRy dWRlKnNjYWxlO21lZGl1bXAgZmxvYXQgdT0wLjUqYV9kaXJlY3Rpb247bWVk aXVtcCBmbG9hdCB0PTEuMC1hYnModSk7bWVkaXVtcCB2ZWMyIG9mZnNldDI9 b2Zmc2V0KmFfZXh0cnVkZSpzY2FsZSpub3JtYWwueSptYXQyKHQsLXUsdSx0 KTt2ZWM0IHByb2plY3RlZF9leHRydWRlPXVfbWF0cml4KnZlYzQoZGlzdC91 X3JhdGlvLDAuMCwwLjApO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQocG9z K29mZnNldDIvdV9yYXRpbywwLjAsMS4wKStwcm9qZWN0ZWRfZXh0cnVkZTtm bG9hdCBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlPWxlbmd0 aChkaXN0KTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZl PWxlbmd0aChwcm9qZWN0ZWRfZXh0cnVkZS54eS9nbF9Qb3NpdGlvbi53KnVf dW5pdHNfdG9fcGl4ZWxzKTt2X2dhbW1hX3NjYWxlPWV4dHJ1ZGVfbGVuZ3Ro X3dpdGhvdXRfcGVyc3BlY3RpdmUvZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJz cGVjdGl2ZTt2X3dpZHRoMj12ZWMyKG91dHNldCxpbnNldCk7fSIpLG5yPWNy KCJ1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dW5p Zm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt2YXJ5aW5nIHZlYzIgdl93aWR0aDI7 dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9z Y2FsZTt2YXJ5aW5nIGhpZ2hwIGZsb2F0IHZfbGluZXByb2dyZXNzO1xuI3By YWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEg bWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG52b2lkIG1haW4o KSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJs dXJcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3Bh Y2l0eVxuZmxvYXQgZGlzdD1sZW5ndGgodl9ub3JtYWwpKnZfd2lkdGgyLnM7 ZmxvYXQgYmx1cjI9KGJsdXIrMS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvKSp2 X2dhbW1hX3NjYWxlO2Zsb2F0IGFscGhhPWNsYW1wKG1pbihkaXN0LSh2X3dp ZHRoMi50LWJsdXIyKSx2X3dpZHRoMi5zLWRpc3QpL2JsdXIyLDAuMCwxLjAp O3ZlYzQgY29sb3I9dGV4dHVyZTJEKHVfaW1hZ2UsdmVjMih2X2xpbmVwcm9n cmVzcywwLjUpKTtnbF9GcmFnQ29sb3I9Y29sb3IqKGFscGhhKm9wYWNpdHkp O1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZl YzQoMS4wKTtcbiNlbmRpZlxufSIsIlxuI2RlZmluZSBNQVhfTElORV9ESVNU QU5DRSAzMjc2Ny4wXG4jZGVmaW5lIHNjYWxlIDAuMDE1ODczMDE2XG5hdHRy aWJ1dGUgdmVjMiBhX3Bvc19ub3JtYWw7YXR0cmlidXRlIHZlYzQgYV9kYXRh O3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1lZGl1bXAgZmxvYXQg dV9yYXRpbzt1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0 aW87dW5pZm9ybSB2ZWMyIHVfdW5pdHNfdG9fcGl4ZWxzO3ZhcnlpbmcgdmVj MiB2X25vcm1hbDt2YXJ5aW5nIHZlYzIgdl93aWR0aDI7dmFyeWluZyBmbG9h dCB2X2dhbW1hX3NjYWxlO3ZhcnlpbmcgaGlnaHAgZmxvYXQgdl9saW5lcHJv Z3Jlc3M7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1 clxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlc biNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCBnYXB3aWR0 aFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9mZnNldFxu I3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHdpZHRoXG52 b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dw IGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3Ag ZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVk aXVtcCBmbG9hdCBnYXB3aWR0aFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbG93cCBmbG9hdCBvZmZzZXRcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFs aXplIG1lZGl1bXAgZmxvYXQgd2lkdGhcbmZsb2F0IEFOVElBTElBU0lORz0x LjAvdV9kZXZpY2VfcGl4ZWxfcmF0aW8vMi4wO3ZlYzIgYV9leHRydWRlPWFf ZGF0YS54eS0xMjguMDtmbG9hdCBhX2RpcmVjdGlvbj1tb2QoYV9kYXRhLnos NC4wKS0xLjA7dl9saW5lcHJvZ3Jlc3M9KGZsb29yKGFfZGF0YS56LzQuMCkr YV9kYXRhLncqNjQuMCkqMi4wL01BWF9MSU5FX0RJU1RBTkNFO3ZlYzIgcG9z PWZsb29yKGFfcG9zX25vcm1hbCowLjUpO21lZGl1bXAgdmVjMiBub3JtYWw9 YV9wb3Nfbm9ybWFsLTIuMCpwb3M7bm9ybWFsLnk9bm9ybWFsLnkqMi4wLTEu MDt2X25vcm1hbD1ub3JtYWw7Z2Fwd2lkdGg9Z2Fwd2lkdGgvMi4wO2Zsb2F0 IGhhbGZ3aWR0aD13aWR0aC8yLjA7b2Zmc2V0PS0xLjAqb2Zmc2V0O2Zsb2F0 IGluc2V0PWdhcHdpZHRoKyhnYXB3aWR0aCA+IDAuMCA/IEFOVElBTElBU0lO RyA6IDAuMCk7ZmxvYXQgb3V0c2V0PWdhcHdpZHRoK2hhbGZ3aWR0aCooZ2Fw d2lkdGggPiAwLjAgPyAyLjAgOiAxLjApKyhoYWxmd2lkdGg9PTAuMCA/IDAu MCA6IEFOVElBTElBU0lORyk7bWVkaXVtcCB2ZWMyIGRpc3Q9b3V0c2V0KmFf ZXh0cnVkZSpzY2FsZTttZWRpdW1wIGZsb2F0IHU9MC41KmFfZGlyZWN0aW9u O21lZGl1bXAgZmxvYXQgdD0xLjAtYWJzKHUpO21lZGl1bXAgdmVjMiBvZmZz ZXQyPW9mZnNldCphX2V4dHJ1ZGUqc2NhbGUqbm9ybWFsLnkqbWF0Mih0LC11 LHUsdCk7dmVjNCBwcm9qZWN0ZWRfZXh0cnVkZT11X21hdHJpeCp2ZWM0KGRp c3QvdV9yYXRpbywwLjAsMC4wKTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0 KHBvcytvZmZzZXQyL3VfcmF0aW8sMC4wLDEuMCkrcHJvamVjdGVkX2V4dHJ1 ZGU7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJzcGVjdGl2ZT1s ZW5ndGgoZGlzdCk7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVj dGl2ZT1sZW5ndGgocHJvamVjdGVkX2V4dHJ1ZGUueHkvZ2xfUG9zaXRpb24u dyp1X3VuaXRzX3RvX3BpeGVscyk7dl9nYW1tYV9zY2FsZT1leHRydWRlX2xl bmd0aF93aXRob3V0X3BlcnNwZWN0aXZlL2V4dHJ1ZGVfbGVuZ3RoX3dpdGhf cGVyc3BlY3RpdmU7dl93aWR0aDI9dmVjMihvdXRzZXQsaW5zZXQpO30iKSxh cj1jcigidW5pZm9ybSBsb3dwIGZsb2F0IHVfZGV2aWNlX3BpeGVsX3JhdGlv O3VuaWZvcm0gdmVjMiB1X3RleHNpemU7dW5pZm9ybSBmbG9hdCB1X2ZhZGU7 dW5pZm9ybSBtZWRpdW1wIHZlYzQgdV9zY2FsZTt1bmlmb3JtIHNhbXBsZXIy RCB1X2ltYWdlO3ZhcnlpbmcgdmVjMiB2X25vcm1hbDt2YXJ5aW5nIHZlYzIg dl93aWR0aDI7dmFyeWluZyBmbG9hdCB2X2xpbmVzb2Zhcjt2YXJ5aW5nIGZs b2F0IHZfZ2FtbWFfc2NhbGU7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxv d3AgdmVjNCBwYXR0ZXJuX2Zyb21cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUg bG93cCB2ZWM0IHBhdHRlcm5fdG9cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUg bG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3Ag ZmxvYXQgb3BhY2l0eVxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdt YSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9c biNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxu I3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5 XG52ZWMyIHBhdHRlcm5fdGxfYT1wYXR0ZXJuX2Zyb20ueHk7dmVjMiBwYXR0 ZXJuX2JyX2E9cGF0dGVybl9mcm9tLnp3O3ZlYzIgcGF0dGVybl90bF9iPXBh dHRlcm5fdG8ueHk7dmVjMiBwYXR0ZXJuX2JyX2I9cGF0dGVybl90by56dztm bG9hdCBwaXhlbFJhdGlvPXVfc2NhbGUueDtmbG9hdCB0aWxlWm9vbVJhdGlv PXVfc2NhbGUueTtmbG9hdCBmcm9tU2NhbGU9dV9zY2FsZS56O2Zsb2F0IHRv U2NhbGU9dV9zY2FsZS53O3ZlYzIgZGlzcGxheV9zaXplX2E9dmVjMigocGF0 dGVybl9icl9hLngtcGF0dGVybl90bF9hLngpL3BpeGVsUmF0aW8sKHBhdHRl cm5fYnJfYS55LXBhdHRlcm5fdGxfYS55KS9waXhlbFJhdGlvKTt2ZWMyIGRp c3BsYXlfc2l6ZV9iPXZlYzIoKHBhdHRlcm5fYnJfYi54LXBhdHRlcm5fdGxf Yi54KS9waXhlbFJhdGlvLChwYXR0ZXJuX2JyX2IueS1wYXR0ZXJuX3RsX2Iu eSkvcGl4ZWxSYXRpbyk7dmVjMiBwYXR0ZXJuX3NpemVfYT12ZWMyKGRpc3Bs YXlfc2l6ZV9hLngqZnJvbVNjYWxlL3RpbGVab29tUmF0aW8sZGlzcGxheV9z aXplX2EueSk7dmVjMiBwYXR0ZXJuX3NpemVfYj12ZWMyKGRpc3BsYXlfc2l6 ZV9iLngqdG9TY2FsZS90aWxlWm9vbVJhdGlvLGRpc3BsYXlfc2l6ZV9iLnkp O2Zsb2F0IGRpc3Q9bGVuZ3RoKHZfbm9ybWFsKSp2X3dpZHRoMi5zO2Zsb2F0 IGJsdXIyPShibHVyKzEuMC91X2RldmljZV9waXhlbF9yYXRpbykqdl9nYW1t YV9zY2FsZTtmbG9hdCBhbHBoYT1jbGFtcChtaW4oZGlzdC0odl93aWR0aDIu dC1ibHVyMiksdl93aWR0aDIucy1kaXN0KS9ibHVyMiwwLjAsMS4wKTtmbG9h dCB4X2E9bW9kKHZfbGluZXNvZmFyL3BhdHRlcm5fc2l6ZV9hLngsMS4wKTtm bG9hdCB4X2I9bW9kKHZfbGluZXNvZmFyL3BhdHRlcm5fc2l6ZV9iLngsMS4w KTtmbG9hdCB5X2E9MC41Kyh2X25vcm1hbC55KmNsYW1wKHZfd2lkdGgyLnMs MC4wLChwYXR0ZXJuX3NpemVfYS55KzIuMCkvMi4wKS9wYXR0ZXJuX3NpemVf YS55KTtmbG9hdCB5X2I9MC41Kyh2X25vcm1hbC55KmNsYW1wKHZfd2lkdGgy LnMsMC4wLChwYXR0ZXJuX3NpemVfYi55KzIuMCkvMi4wKS9wYXR0ZXJuX3Np emVfYi55KTt2ZWMyIHBvc19hPW1peChwYXR0ZXJuX3RsX2EvdV90ZXhzaXpl LHBhdHRlcm5fYnJfYS91X3RleHNpemUsdmVjMih4X2EseV9hKSk7dmVjMiBw b3NfYj1taXgocGF0dGVybl90bF9iL3VfdGV4c2l6ZSxwYXR0ZXJuX2JyX2Iv dV90ZXhzaXplLHZlYzIoeF9iLHlfYikpO3ZlYzQgY29sb3I9bWl4KHRleHR1 cmUyRCh1X2ltYWdlLHBvc19hKSx0ZXh0dXJlMkQodV9pbWFnZSxwb3NfYiks dV9mYWRlKTtnbF9GcmFnQ29sb3I9Y29sb3IqYWxwaGEqb3BhY2l0eTtcbiNp ZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEu MCk7XG4jZW5kaWZcbn0iLCJcbiNkZWZpbmUgc2NhbGUgMC4wMTU4NzMwMTZc biNkZWZpbmUgTElORV9ESVNUQU5DRV9TQ0FMRSAyLjBcbmF0dHJpYnV0ZSB2 ZWMyIGFfcG9zX25vcm1hbDthdHRyaWJ1dGUgdmVjNCBhX2RhdGE7dW5pZm9y bSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3VuaXRzX3RvX3BpeGVs czt1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdV9yYXRpbzt1bmlmb3JtIGxvd3Ag ZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dmFyeWluZyB2ZWMyIHZfbm9y bWFsO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIGZsb2F0IHZfbGlu ZXNvZmFyO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTtcbiNwcmFnbWEg bWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJv eDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6 IGRlZmluZSBsb3dwIGZsb2F0IG9mZnNldFxuI3ByYWdtYSBtYXBib3g6IGRl ZmluZSBtZWRpdW1wIGZsb2F0IGdhcHdpZHRoXG4jcHJhZ21hIG1hcGJveDog ZGVmaW5lIG1lZGl1bXAgZmxvYXQgd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBk ZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6 IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl90b1xudm9pZCBtYWluKCkge1xu I3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXG4j cHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlc biNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb2Zmc2V0 XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IGdh cHdpZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZs b2F0IHdpZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1w IHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6 ZSBtZWRpdW1wIHZlYzQgcGF0dGVybl90b1xuZmxvYXQgQU5USUFMSUFTSU5H PTEuMC91X2RldmljZV9waXhlbF9yYXRpby8yLjA7dmVjMiBhX2V4dHJ1ZGU9 YV9kYXRhLnh5LTEyOC4wO2Zsb2F0IGFfZGlyZWN0aW9uPW1vZChhX2RhdGEu eiw0LjApLTEuMDtmbG9hdCBhX2xpbmVzb2Zhcj0oZmxvb3IoYV9kYXRhLnov NC4wKSthX2RhdGEudyo2NC4wKSpMSU5FX0RJU1RBTkNFX1NDQUxFO3ZlYzIg cG9zPWZsb29yKGFfcG9zX25vcm1hbCowLjUpO21lZGl1bXAgdmVjMiBub3Jt YWw9YV9wb3Nfbm9ybWFsLTIuMCpwb3M7bm9ybWFsLnk9bm9ybWFsLnkqMi4w LTEuMDt2X25vcm1hbD1ub3JtYWw7Z2Fwd2lkdGg9Z2Fwd2lkdGgvMi4wO2Zs b2F0IGhhbGZ3aWR0aD13aWR0aC8yLjA7b2Zmc2V0PS0xLjAqb2Zmc2V0O2Zs b2F0IGluc2V0PWdhcHdpZHRoKyhnYXB3aWR0aCA+IDAuMCA/IEFOVElBTElB U0lORyA6IDAuMCk7ZmxvYXQgb3V0c2V0PWdhcHdpZHRoK2hhbGZ3aWR0aCoo Z2Fwd2lkdGggPiAwLjAgPyAyLjAgOiAxLjApKyhoYWxmd2lkdGg9PTAuMCA/ IDAuMCA6IEFOVElBTElBU0lORyk7bWVkaXVtcCB2ZWMyIGRpc3Q9b3V0c2V0 KmFfZXh0cnVkZSpzY2FsZTttZWRpdW1wIGZsb2F0IHU9MC41KmFfZGlyZWN0 aW9uO21lZGl1bXAgZmxvYXQgdD0xLjAtYWJzKHUpO21lZGl1bXAgdmVjMiBv ZmZzZXQyPW9mZnNldCphX2V4dHJ1ZGUqc2NhbGUqbm9ybWFsLnkqbWF0Mih0 LC11LHUsdCk7dmVjNCBwcm9qZWN0ZWRfZXh0cnVkZT11X21hdHJpeCp2ZWM0 KGRpc3QvdV9yYXRpbywwLjAsMC4wKTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2 ZWM0KHBvcytvZmZzZXQyL3VfcmF0aW8sMC4wLDEuMCkrcHJvamVjdGVkX2V4 dHJ1ZGU7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJzcGVjdGl2 ZT1sZW5ndGgoZGlzdCk7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJz cGVjdGl2ZT1sZW5ndGgocHJvamVjdGVkX2V4dHJ1ZGUueHkvZ2xfUG9zaXRp b24udyp1X3VuaXRzX3RvX3BpeGVscyk7dl9nYW1tYV9zY2FsZT1leHRydWRl X2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlL2V4dHJ1ZGVfbGVuZ3RoX3dp dGhfcGVyc3BlY3RpdmU7dl9saW5lc29mYXI9YV9saW5lc29mYXI7dl93aWR0 aDI9dmVjMihvdXRzZXQsaW5zZXQpO30iKSxpcj1jcigidW5pZm9ybSBsb3dw IGZsb2F0IHVfZGV2aWNlX3BpeGVsX3JhdGlvO3VuaWZvcm0gc2FtcGxlcjJE IHVfaW1hZ2U7dW5pZm9ybSBmbG9hdCB1X3NkZmdhbW1hO3VuaWZvcm0gZmxv YXQgdV9taXg7dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgdmVjMiB2 X3dpZHRoMjt2YXJ5aW5nIHZlYzIgdl90ZXhfYTt2YXJ5aW5nIHZlYzIgdl90 ZXhfYjt2YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7XG4jcHJhZ21hIG1h cGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94 OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogZGVm aW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmlu ZSBtZWRpdW1wIGZsb2F0IHdpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxudm9pZCBtYWluKCkge1xuI3ByYWdt YSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdt YSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21h IG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFn bWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgd2lkdGhcbiNw cmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgZmxvb3J3aWR0 aFxuZmxvYXQgZGlzdD1sZW5ndGgodl9ub3JtYWwpKnZfd2lkdGgyLnM7Zmxv YXQgYmx1cjI9KGJsdXIrMS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvKSp2X2dh bW1hX3NjYWxlO2Zsb2F0IGFscGhhPWNsYW1wKG1pbihkaXN0LSh2X3dpZHRo Mi50LWJsdXIyKSx2X3dpZHRoMi5zLWRpc3QpL2JsdXIyLDAuMCwxLjApO2Zs b2F0IHNkZmRpc3RfYT10ZXh0dXJlMkQodV9pbWFnZSx2X3RleF9hKS5hO2Zs b2F0IHNkZmRpc3RfYj10ZXh0dXJlMkQodV9pbWFnZSx2X3RleF9iKS5hO2Zs b2F0IHNkZmRpc3Q9bWl4KHNkZmRpc3RfYSxzZGZkaXN0X2IsdV9taXgpO2Fs cGhhKj1zbW9vdGhzdGVwKDAuNS11X3NkZmdhbW1hL2Zsb29yd2lkdGgsMC41 K3Vfc2RmZ2FtbWEvZmxvb3J3aWR0aCxzZGZkaXN0KTtnbF9GcmFnQ29sb3I9 Y29sb3IqKGFscGhhKm9wYWNpdHkpO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BF Q1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsIlxu I2RlZmluZSBzY2FsZSAwLjAxNTg3MzAxNlxuI2RlZmluZSBMSU5FX0RJU1RB TkNFX1NDQUxFIDIuMFxuYXR0cmlidXRlIHZlYzIgYV9wb3Nfbm9ybWFsO2F0 dHJpYnV0ZSB2ZWM0IGFfZGF0YTt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5p Zm9ybSBtZWRpdW1wIGZsb2F0IHVfcmF0aW87dW5pZm9ybSBsb3dwIGZsb2F0 IHVfZGV2aWNlX3BpeGVsX3JhdGlvO3VuaWZvcm0gdmVjMiB1X3BhdHRlcm5z Y2FsZV9hO3VuaWZvcm0gZmxvYXQgdV90ZXhfeV9hO3VuaWZvcm0gdmVjMiB1 X3BhdHRlcm5zY2FsZV9iO3VuaWZvcm0gZmxvYXQgdV90ZXhfeV9iO3VuaWZv cm0gdmVjMiB1X3VuaXRzX3RvX3BpeGVsczt2YXJ5aW5nIHZlYzIgdl9ub3Jt YWw7dmFyeWluZyB2ZWMyIHZfd2lkdGgyO3ZhcnlpbmcgdmVjMiB2X3RleF9h O3ZhcnlpbmcgdmVjMiB2X3RleF9iO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9z Y2FsZTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xv clxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcbiNw cmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJh Z21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcbiNw cmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvZmZzZXRcbiNwcmFn bWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCB3aWR0aFxuI3ByYWdt YSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGZsb29yd2lkdGhcbnZvaWQg bWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZl YzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxv YXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9h dCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1w IGZsb2F0IGdhcHdpZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBs b3dwIGZsb2F0IG9mZnNldFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUg bWVkaXVtcCBmbG9hdCB3aWR0aFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbG93cCBmbG9hdCBmbG9vcndpZHRoXG5mbG9hdCBBTlRJQUxJQVNJTkc9 MS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvLzIuMDt2ZWMyIGFfZXh0cnVkZT1h X2RhdGEueHktMTI4LjA7ZmxvYXQgYV9kaXJlY3Rpb249bW9kKGFfZGF0YS56 LDQuMCktMS4wO2Zsb2F0IGFfbGluZXNvZmFyPShmbG9vcihhX2RhdGEuei80 LjApK2FfZGF0YS53KjY0LjApKkxJTkVfRElTVEFOQ0VfU0NBTEU7dmVjMiBw b3M9Zmxvb3IoYV9wb3Nfbm9ybWFsKjAuNSk7bWVkaXVtcCB2ZWMyIG5vcm1h bD1hX3Bvc19ub3JtYWwtMi4wKnBvcztub3JtYWwueT1ub3JtYWwueSoyLjAt MS4wO3Zfbm9ybWFsPW5vcm1hbDtnYXB3aWR0aD1nYXB3aWR0aC8yLjA7Zmxv YXQgaGFsZndpZHRoPXdpZHRoLzIuMDtvZmZzZXQ9LTEuMCpvZmZzZXQ7Zmxv YXQgaW5zZXQ9Z2Fwd2lkdGgrKGdhcHdpZHRoID4gMC4wID8gQU5USUFMSUFT SU5HIDogMC4wKTtmbG9hdCBvdXRzZXQ9Z2Fwd2lkdGgraGFsZndpZHRoKihn YXB3aWR0aCA+IDAuMCA/IDIuMCA6IDEuMCkrKGhhbGZ3aWR0aD09MC4wID8g MC4wIDogQU5USUFMSUFTSU5HKTttZWRpdW1wIHZlYzIgZGlzdD1vdXRzZXQq YV9leHRydWRlKnNjYWxlO21lZGl1bXAgZmxvYXQgdT0wLjUqYV9kaXJlY3Rp b247bWVkaXVtcCBmbG9hdCB0PTEuMC1hYnModSk7bWVkaXVtcCB2ZWMyIG9m ZnNldDI9b2Zmc2V0KmFfZXh0cnVkZSpzY2FsZSpub3JtYWwueSptYXQyKHQs LXUsdSx0KTt2ZWM0IHByb2plY3RlZF9leHRydWRlPXVfbWF0cml4KnZlYzQo ZGlzdC91X3JhdGlvLDAuMCwwLjApO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZl YzQocG9zK29mZnNldDIvdV9yYXRpbywwLjAsMS4wKStwcm9qZWN0ZWRfZXh0 cnVkZTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZl PWxlbmd0aChkaXN0KTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNw ZWN0aXZlPWxlbmd0aChwcm9qZWN0ZWRfZXh0cnVkZS54eS9nbF9Qb3NpdGlv bi53KnVfdW5pdHNfdG9fcGl4ZWxzKTt2X2dhbW1hX3NjYWxlPWV4dHJ1ZGVf bGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmUvZXh0cnVkZV9sZW5ndGhfd2l0 aF9wZXJzcGVjdGl2ZTt2X3RleF9hPXZlYzIoYV9saW5lc29mYXIqdV9wYXR0 ZXJuc2NhbGVfYS54L2Zsb29yd2lkdGgsbm9ybWFsLnkqdV9wYXR0ZXJuc2Nh bGVfYS55K3VfdGV4X3lfYSk7dl90ZXhfYj12ZWMyKGFfbGluZXNvZmFyKnVf cGF0dGVybnNjYWxlX2IueC9mbG9vcndpZHRoLG5vcm1hbC55KnVfcGF0dGVy bnNjYWxlX2IueSt1X3RleF95X2IpO3Zfd2lkdGgyPXZlYzIob3V0c2V0LGlu c2V0KTt9Iiksb3I9Y3IoInVuaWZvcm0gZmxvYXQgdV9mYWRlX3Q7dW5pZm9y bSBmbG9hdCB1X29wYWNpdHk7dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTA7 dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTE7dmFyeWluZyB2ZWMyIHZfcG9z MDt2YXJ5aW5nIHZlYzIgdl9wb3MxO3VuaWZvcm0gZmxvYXQgdV9icmlnaHRu ZXNzX2xvdzt1bmlmb3JtIGZsb2F0IHVfYnJpZ2h0bmVzc19oaWdoO3VuaWZv cm0gZmxvYXQgdV9zYXR1cmF0aW9uX2ZhY3Rvcjt1bmlmb3JtIGZsb2F0IHVf Y29udHJhc3RfZmFjdG9yO3VuaWZvcm0gdmVjMyB1X3NwaW5fd2VpZ2h0czt2 b2lkIG1haW4oKSB7dmVjNCBjb2xvcjA9dGV4dHVyZTJEKHVfaW1hZ2UwLHZf cG9zMCk7dmVjNCBjb2xvcjE9dGV4dHVyZTJEKHVfaW1hZ2UxLHZfcG9zMSk7 aWYgKGNvbG9yMC5hID4gMC4wKSB7Y29sb3IwLnJnYj1jb2xvcjAucmdiL2Nv bG9yMC5hO31pZiAoY29sb3IxLmEgPiAwLjApIHtjb2xvcjEucmdiPWNvbG9y MS5yZ2IvY29sb3IxLmE7fXZlYzQgY29sb3I9bWl4KGNvbG9yMCxjb2xvcjEs dV9mYWRlX3QpO2NvbG9yLmEqPXVfb3BhY2l0eTt2ZWMzIHJnYj1jb2xvci5y Z2I7cmdiPXZlYzMoZG90KHJnYix1X3NwaW5fd2VpZ2h0cy54eXopLGRvdChy Z2IsdV9zcGluX3dlaWdodHMuenh5KSxkb3QocmdiLHVfc3Bpbl93ZWlnaHRz Lnl6eCkpO2Zsb2F0IGF2ZXJhZ2U9KGNvbG9yLnIrY29sb3IuZytjb2xvci5i KS8zLjA7cmdiKz0oYXZlcmFnZS1yZ2IpKnVfc2F0dXJhdGlvbl9mYWN0b3I7 cmdiPShyZ2ItMC41KSp1X2NvbnRyYXN0X2ZhY3RvciswLjU7dmVjMyB1X2hp Z2hfdmVjPXZlYzModV9icmlnaHRuZXNzX2xvdyx1X2JyaWdodG5lc3NfbG93 LHVfYnJpZ2h0bmVzc19sb3cpO3ZlYzMgdV9sb3dfdmVjPXZlYzModV9icmln aHRuZXNzX2hpZ2gsdV9icmlnaHRuZXNzX2hpZ2gsdV9icmlnaHRuZXNzX2hp Z2gpO2dsX0ZyYWdDb2xvcj12ZWM0KG1peCh1X2hpZ2hfdmVjLHVfbG93X3Zl YyxyZ2IpKmNvbG9yLmEsY29sb3IuYSk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5T UEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59Iiwi dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3RsX3BhcmVu dDt1bmlmb3JtIGZsb2F0IHVfc2NhbGVfcGFyZW50O3VuaWZvcm0gZmxvYXQg dV9idWZmZXJfc2NhbGU7YXR0cmlidXRlIHZlYzIgYV9wb3M7YXR0cmlidXRl IHZlYzIgYV90ZXh0dXJlX3Bvczt2YXJ5aW5nIHZlYzIgdl9wb3MwO3Zhcnlp bmcgdmVjMiB2X3BvczE7dm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uPXVfbWF0 cml4KnZlYzQoYV9wb3MsMCwxKTt2X3BvczA9KCgoYV90ZXh0dXJlX3Bvcy84 MTkyLjApLTAuNSkvdV9idWZmZXJfc2NhbGUgKSswLjU7dl9wb3MxPSh2X3Bv czAqdV9zY2FsZV9wYXJlbnQpK3VfdGxfcGFyZW50O30iKSxzcj1jcigidW5p Zm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlO3ZhcnlpbmcgdmVjMiB2X3RleDt2 YXJ5aW5nIGZsb2F0IHZfZmFkZV9vcGFjaXR5O1xuI3ByYWdtYSBtYXBib3g6 IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigpIHtcbiNw cmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxu bG93cCBmbG9hdCBhbHBoYT1vcGFjaXR5KnZfZmFkZV9vcGFjaXR5O2dsX0Zy YWdDb2xvcj10ZXh0dXJlMkQodV90ZXh0dXJlLHZfdGV4KSphbHBoYTtcbiNp ZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEu MCk7XG4jZW5kaWZcbn0iLCJjb25zdCBmbG9hdCBQST0zLjE0MTU5MjY1MzU4 OTc5MzthdHRyaWJ1dGUgdmVjNCBhX3Bvc19vZmZzZXQ7YXR0cmlidXRlIHZl YzQgYV9kYXRhO2F0dHJpYnV0ZSB2ZWMzIGFfcHJvamVjdGVkX3BvczthdHRy aWJ1dGUgZmxvYXQgYV9mYWRlX29wYWNpdHk7dW5pZm9ybSBib29sIHVfaXNf c2l6ZV96b29tX2NvbnN0YW50O3VuaWZvcm0gYm9vbCB1X2lzX3NpemVfZmVh dHVyZV9jb25zdGFudDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfc2l6ZV90O3Vu aWZvcm0gaGlnaHAgZmxvYXQgdV9zaXplO3VuaWZvcm0gaGlnaHAgZmxvYXQg dV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO3VuaWZvcm0gaGlnaHAgZmxv YXQgdV9waXRjaDt1bmlmb3JtIGJvb2wgdV9yb3RhdGVfc3ltYm9sO3VuaWZv cm0gaGlnaHAgZmxvYXQgdV9hc3BlY3RfcmF0aW87dW5pZm9ybSBmbG9hdCB1 X2ZhZGVfY2hhbmdlO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1h dDQgdV9sYWJlbF9wbGFuZV9tYXRyaXg7dW5pZm9ybSBtYXQ0IHVfY29vcmRf bWF0cml4O3VuaWZvcm0gYm9vbCB1X2lzX3RleHQ7dW5pZm9ybSBib29sIHVf cGl0Y2hfd2l0aF9tYXA7dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt2YXJ5aW5n IHZlYzIgdl90ZXg7dmFyeWluZyBmbG9hdCB2X2ZhZGVfb3BhY2l0eTtcbiNw cmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG52b2lk IG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZs b2F0IG9wYWNpdHlcbnZlYzIgYV9wb3M9YV9wb3Nfb2Zmc2V0Lnh5O3ZlYzIg YV9vZmZzZXQ9YV9wb3Nfb2Zmc2V0Lnp3O3ZlYzIgYV90ZXg9YV9kYXRhLnh5 O3ZlYzIgYV9zaXplPWFfZGF0YS56dztoaWdocCBmbG9hdCBzZWdtZW50X2Fu Z2xlPS1hX3Byb2plY3RlZF9wb3NbMl07ZmxvYXQgc2l6ZTtpZiAoIXVfaXNf c2l6ZV96b29tX2NvbnN0YW50ICYmICF1X2lzX3NpemVfZmVhdHVyZV9jb25z dGFudCkge3NpemU9bWl4KGFfc2l6ZVswXSxhX3NpemVbMV0sdV9zaXplX3Qp LzI1Ni4wO30gZWxzZSBpZiAodV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYg IXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1hX3NpemVbMF0v MjU2LjA7fSBlbHNlIGlmICghdV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYg dV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtzaXplPXVfc2l6ZTt9IGVs c2Uge3NpemU9dV9zaXplO312ZWM0IHByb2plY3RlZFBvaW50PXVfbWF0cml4 KnZlYzQoYV9wb3MsMCwxKTtoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9y X2Rpc3RhbmNlPXByb2plY3RlZFBvaW50Lnc7aGlnaHAgZmxvYXQgZGlzdGFu Y2VfcmF0aW89dV9waXRjaF93aXRoX21hcCA/XG5jYW1lcmFfdG9fYW5jaG9y X2Rpc3RhbmNlL3VfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSA6XG51X2Nh bWVyYV90b19jZW50ZXJfZGlzdGFuY2UvY2FtZXJhX3RvX2FuY2hvcl9kaXN0 YW5jZTtoaWdocCBmbG9hdCBwZXJzcGVjdGl2ZV9yYXRpbz1jbGFtcCgwLjUr MC41KmRpc3RhbmNlX3JhdGlvLDAuMCw0LjApO3NpemUqPXBlcnNwZWN0aXZl X3JhdGlvO2Zsb2F0IGZvbnRTY2FsZT11X2lzX3RleHQgPyBzaXplLzI0LjAg OiBzaXplO2hpZ2hwIGZsb2F0IHN5bWJvbF9yb3RhdGlvbj0wLjA7aWYgKHVf cm90YXRlX3N5bWJvbCkge3ZlYzQgb2Zmc2V0UHJvamVjdGVkUG9pbnQ9dV9t YXRyaXgqdmVjNChhX3Bvcyt2ZWMyKDEsMCksMCwxKTt2ZWMyIGE9cHJvamVj dGVkUG9pbnQueHkvcHJvamVjdGVkUG9pbnQudzt2ZWMyIGI9b2Zmc2V0UHJv amVjdGVkUG9pbnQueHkvb2Zmc2V0UHJvamVjdGVkUG9pbnQudztzeW1ib2xf cm90YXRpb249YXRhbigoYi55LWEueSkvdV9hc3BlY3RfcmF0aW8sYi54LWEu eCk7fWhpZ2hwIGZsb2F0IGFuZ2xlX3Npbj1zaW4oc2VnbWVudF9hbmdsZStz eW1ib2xfcm90YXRpb24pO2hpZ2hwIGZsb2F0IGFuZ2xlX2Nvcz1jb3Moc2Vn bWVudF9hbmdsZStzeW1ib2xfcm90YXRpb24pO21hdDIgcm90YXRpb25fbWF0 cml4PW1hdDIoYW5nbGVfY29zLC0xLjAqYW5nbGVfc2luLGFuZ2xlX3Npbixh bmdsZV9jb3MpO3ZlYzQgcHJvamVjdGVkX3Bvcz11X2xhYmVsX3BsYW5lX21h dHJpeCp2ZWM0KGFfcHJvamVjdGVkX3Bvcy54eSwwLjAsMS4wKTtnbF9Qb3Np dGlvbj11X2Nvb3JkX21hdHJpeCp2ZWM0KHByb2plY3RlZF9wb3MueHkvcHJv amVjdGVkX3Bvcy53K3JvdGF0aW9uX21hdHJpeCooYV9vZmZzZXQvMzIuMCpm b250U2NhbGUpLDAuMCwxLjApO3ZfdGV4PWFfdGV4L3VfdGV4c2l6ZTt2ZWMy IGZhZGVfb3BhY2l0eT11bnBhY2tfb3BhY2l0eShhX2ZhZGVfb3BhY2l0eSk7 ZmxvYXQgZmFkZV9jaGFuZ2U9ZmFkZV9vcGFjaXR5WzFdID4gMC41ID8gdV9m YWRlX2NoYW5nZSA6LXVfZmFkZV9jaGFuZ2U7dl9mYWRlX29wYWNpdHk9bWF4 KDAuMCxtaW4oMS4wLGZhZGVfb3BhY2l0eVswXStmYWRlX2NoYW5nZSkpO30i KSxscj1jcigiI2RlZmluZSBTREZfUFggOC4wXG51bmlmb3JtIGJvb2wgdV9p c19oYWxvO3VuaWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTt1bmlmb3JtIGhp Z2hwIGZsb2F0IHVfZ2FtbWFfc2NhbGU7dW5pZm9ybSBsb3dwIGZsb2F0IHVf ZGV2aWNlX3BpeGVsX3JhdGlvO3VuaWZvcm0gYm9vbCB1X2lzX3RleHQ7dmFy eWluZyB2ZWMyIHZfZGF0YTA7dmFyeWluZyB2ZWMzIHZfZGF0YTE7XG4jcHJh Z21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgZmlsbF9jb2xvclxuI3By YWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGhhbG9fY29sb3JcbiNw cmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJh Z21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGFsb193aWR0aFxuI3By YWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fYmx1clxudm9p ZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAg dmVjNCBmaWxsX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBo aWdocCB2ZWM0IGhhbG9fY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFs aXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRp YWxpemUgbG93cCBmbG9hdCBoYWxvX3dpZHRoXG4jcHJhZ21hIG1hcGJveDog aW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhhbG9fYmx1clxuZmxvYXQgRURHRV9H QU1NQT0wLjEwNS91X2RldmljZV9waXhlbF9yYXRpbzt2ZWMyIHRleD12X2Rh dGEwLnh5O2Zsb2F0IGdhbW1hX3NjYWxlPXZfZGF0YTEueDtmbG9hdCBzaXpl PXZfZGF0YTEueTtmbG9hdCBmYWRlX29wYWNpdHk9dl9kYXRhMVsyXTtmbG9h dCBmb250U2NhbGU9dV9pc190ZXh0ID8gc2l6ZS8yNC4wIDogc2l6ZTtsb3dw IHZlYzQgY29sb3I9ZmlsbF9jb2xvcjtoaWdocCBmbG9hdCBnYW1tYT1FREdF X0dBTU1BLyhmb250U2NhbGUqdV9nYW1tYV9zY2FsZSk7bG93cCBmbG9hdCBi dWZmPSgyNTYuMC02NC4wKS8yNTYuMDtpZiAodV9pc19oYWxvKSB7Y29sb3I9 aGFsb19jb2xvcjtnYW1tYT0oaGFsb19ibHVyKjEuMTkvU0RGX1BYK0VER0Vf R0FNTUEpLyhmb250U2NhbGUqdV9nYW1tYV9zY2FsZSk7YnVmZj0oNi4wLWhh bG9fd2lkdGgvZm9udFNjYWxlKS9TREZfUFg7fWxvd3AgZmxvYXQgZGlzdD10 ZXh0dXJlMkQodV90ZXh0dXJlLHRleCkuYTtoaWdocCBmbG9hdCBnYW1tYV9z Y2FsZWQ9Z2FtbWEqZ2FtbWFfc2NhbGU7aGlnaHAgZmxvYXQgYWxwaGE9c21v b3Roc3RlcChidWZmLWdhbW1hX3NjYWxlZCxidWZmK2dhbW1hX3NjYWxlZCxk aXN0KTtnbF9GcmFnQ29sb3I9Y29sb3IqKGFscGhhKm9wYWNpdHkqZmFkZV9v cGFjaXR5KTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdD b2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJjb25zdCBmbG9hdCBQST0z LjE0MTU5MjY1MzU4OTc5MzthdHRyaWJ1dGUgdmVjNCBhX3Bvc19vZmZzZXQ7 YXR0cmlidXRlIHZlYzQgYV9kYXRhO2F0dHJpYnV0ZSB2ZWMzIGFfcHJvamVj dGVkX3BvczthdHRyaWJ1dGUgZmxvYXQgYV9mYWRlX29wYWNpdHk7dW5pZm9y bSBib29sIHVfaXNfc2l6ZV96b29tX2NvbnN0YW50O3VuaWZvcm0gYm9vbCB1 X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDt1bmlmb3JtIGhpZ2hwIGZsb2F0 IHVfc2l6ZV90O3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9zaXplO3VuaWZvcm0g bWF0NCB1X21hdHJpeDt1bmlmb3JtIG1hdDQgdV9sYWJlbF9wbGFuZV9tYXRy aXg7dW5pZm9ybSBtYXQ0IHVfY29vcmRfbWF0cml4O3VuaWZvcm0gYm9vbCB1 X2lzX3RleHQ7dW5pZm9ybSBib29sIHVfcGl0Y2hfd2l0aF9tYXA7dW5pZm9y bSBoaWdocCBmbG9hdCB1X3BpdGNoO3VuaWZvcm0gYm9vbCB1X3JvdGF0ZV9z eW1ib2w7dW5pZm9ybSBoaWdocCBmbG9hdCB1X2FzcGVjdF9yYXRpbzt1bmlm b3JtIGhpZ2hwIGZsb2F0IHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTt1 bmlmb3JtIGZsb2F0IHVfZmFkZV9jaGFuZ2U7dW5pZm9ybSB2ZWMyIHVfdGV4 c2l6ZTt2YXJ5aW5nIHZlYzIgdl9kYXRhMDt2YXJ5aW5nIHZlYzMgdl9kYXRh MTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBmaWxsX2Nv bG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgaGFsb19j b2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNp dHlcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX3dp ZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGFsb19i bHVyXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6 ZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0 aWFsaXplIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJv eDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcbiNwcmFnbWEg bWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb19ibHVyXG52ZWMy IGFfcG9zPWFfcG9zX29mZnNldC54eTt2ZWMyIGFfb2Zmc2V0PWFfcG9zX29m ZnNldC56dzt2ZWMyIGFfdGV4PWFfZGF0YS54eTt2ZWMyIGFfc2l6ZT1hX2Rh dGEuenc7aGlnaHAgZmxvYXQgc2VnbWVudF9hbmdsZT0tYV9wcm9qZWN0ZWRf cG9zWzJdO2Zsb2F0IHNpemU7aWYgKCF1X2lzX3NpemVfem9vbV9jb25zdGFu dCAmJiAhdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtzaXplPW1peChh X3NpemVbMF0sYV9zaXplWzFdLHVfc2l6ZV90KS8yNTYuMDt9IGVsc2UgaWYg KHVfaXNfc2l6ZV96b29tX2NvbnN0YW50ICYmICF1X2lzX3NpemVfZmVhdHVy ZV9jb25zdGFudCkge3NpemU9YV9zaXplWzBdLzI1Ni4wO30gZWxzZSBpZiAo IXVfaXNfc2l6ZV96b29tX2NvbnN0YW50ICYmIHVfaXNfc2l6ZV9mZWF0dXJl X2NvbnN0YW50KSB7c2l6ZT11X3NpemU7fSBlbHNlIHtzaXplPXVfc2l6ZTt9 dmVjNCBwcm9qZWN0ZWRQb2ludD11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7 aGlnaHAgZmxvYXQgY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZT1wcm9qZWN0 ZWRQb2ludC53O2hpZ2hwIGZsb2F0IGRpc3RhbmNlX3JhdGlvPXVfcGl0Y2hf d2l0aF9tYXAgP1xuY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZS91X2NhbWVy YV90b19jZW50ZXJfZGlzdGFuY2UgOlxudV9jYW1lcmFfdG9fY2VudGVyX2Rp c3RhbmNlL2NhbWVyYV90b19hbmNob3JfZGlzdGFuY2U7aGlnaHAgZmxvYXQg cGVyc3BlY3RpdmVfcmF0aW89Y2xhbXAoMC41KzAuNSpkaXN0YW5jZV9yYXRp bywwLjAsNC4wKTtzaXplKj1wZXJzcGVjdGl2ZV9yYXRpbztmbG9hdCBmb250 U2NhbGU9dV9pc190ZXh0ID8gc2l6ZS8yNC4wIDogc2l6ZTtoaWdocCBmbG9h dCBzeW1ib2xfcm90YXRpb249MC4wO2lmICh1X3JvdGF0ZV9zeW1ib2wpIHt2 ZWM0IG9mZnNldFByb2plY3RlZFBvaW50PXVfbWF0cml4KnZlYzQoYV9wb3Mr dmVjMigxLDApLDAsMSk7dmVjMiBhPXByb2plY3RlZFBvaW50Lnh5L3Byb2pl Y3RlZFBvaW50Lnc7dmVjMiBiPW9mZnNldFByb2plY3RlZFBvaW50Lnh5L29m ZnNldFByb2plY3RlZFBvaW50Lnc7c3ltYm9sX3JvdGF0aW9uPWF0YW4oKGIu eS1hLnkpL3VfYXNwZWN0X3JhdGlvLGIueC1hLngpO31oaWdocCBmbG9hdCBh bmdsZV9zaW49c2luKHNlZ21lbnRfYW5nbGUrc3ltYm9sX3JvdGF0aW9uKTto aWdocCBmbG9hdCBhbmdsZV9jb3M9Y29zKHNlZ21lbnRfYW5nbGUrc3ltYm9s X3JvdGF0aW9uKTttYXQyIHJvdGF0aW9uX21hdHJpeD1tYXQyKGFuZ2xlX2Nv cywtMS4wKmFuZ2xlX3NpbixhbmdsZV9zaW4sYW5nbGVfY29zKTt2ZWM0IHBy b2plY3RlZF9wb3M9dV9sYWJlbF9wbGFuZV9tYXRyaXgqdmVjNChhX3Byb2pl Y3RlZF9wb3MueHksMC4wLDEuMCk7Z2xfUG9zaXRpb249dV9jb29yZF9tYXRy aXgqdmVjNChwcm9qZWN0ZWRfcG9zLnh5L3Byb2plY3RlZF9wb3Mudytyb3Rh dGlvbl9tYXRyaXgqKGFfb2Zmc2V0LzMyLjAqZm9udFNjYWxlKSwwLjAsMS4w KTtmbG9hdCBnYW1tYV9zY2FsZT1nbF9Qb3NpdGlvbi53O3ZlYzIgdGV4PWFf dGV4L3VfdGV4c2l6ZTt2ZWMyIGZhZGVfb3BhY2l0eT11bnBhY2tfb3BhY2l0 eShhX2ZhZGVfb3BhY2l0eSk7ZmxvYXQgZmFkZV9jaGFuZ2U9ZmFkZV9vcGFj aXR5WzFdID4gMC41ID8gdV9mYWRlX2NoYW5nZSA6LXVfZmFkZV9jaGFuZ2U7 ZmxvYXQgaW50ZXJwb2xhdGVkX2ZhZGVfb3BhY2l0eT1tYXgoMC4wLG1pbigx LjAsZmFkZV9vcGFjaXR5WzBdK2ZhZGVfY2hhbmdlKSk7dl9kYXRhMD12ZWMy KHRleC54LHRleC55KTt2X2RhdGExPXZlYzMoZ2FtbWFfc2NhbGUsc2l6ZSxp bnRlcnBvbGF0ZWRfZmFkZV9vcGFjaXR5KTt9Iik7ZnVuY3Rpb24gY3IodCxl KXt2YXIgcj0vI3ByYWdtYSBtYXBib3g6IChbXHddKykgKFtcd10rKSAoW1x3 XSspIChbXHddKykvZyxuPXt9O3JldHVybntmcmFnbWVudFNvdXJjZTp0PXQu cmVwbGFjZShyLGZ1bmN0aW9uKHQsZSxyLGEsaSl7cmV0dXJuIG5baV09ITAs ImRlZmluZSI9PT1lPyJcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2krIlxu dmFyeWluZyAiK3IrIiAiK2ErIiAiK2krIjtcbiNlbHNlXG51bmlmb3JtICIr cisiICIrYSsiIHVfIitpKyI7XG4jZW5kaWZcbiI6IlxuI2lmZGVmIEhBU19V TklGT1JNX3VfIitpKyJcbiAgICAiK3IrIiAiK2ErIiAiK2krIiA9IHVfIitp KyI7XG4jZW5kaWZcbiJ9KSx2ZXJ0ZXhTb3VyY2U6ZT1lLnJlcGxhY2Uocixm dW5jdGlvbih0LGUscixhLGkpe3ZhciBvPSJmbG9hdCI9PT1hPyJ2ZWMyIjoi dmVjNCIscz1pLm1hdGNoKC9jb2xvci8pPyJjb2xvciI6bztyZXR1cm4gbltp XT8iZGVmaW5lIj09PWU/IlxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyIraSsi XG51bmlmb3JtIGxvd3AgZmxvYXQgdV8iK2krIl90O1xuYXR0cmlidXRlICIr cisiICIrbysiIGFfIitpKyI7XG52YXJ5aW5nICIrcisiICIrYSsiICIraSsi O1xuI2Vsc2VcbnVuaWZvcm0gIityKyIgIithKyIgdV8iK2krIjtcbiNlbmRp ZlxuIjoidmVjNCI9PT1zPyJcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2kr IlxuICAgICIraSsiID0gYV8iK2krIjtcbiNlbHNlXG4gICAgIityKyIgIith KyIgIitpKyIgPSB1XyIraSsiO1xuI2VuZGlmXG4iOiJcbiNpZm5kZWYgSEFT X1VOSUZPUk1fdV8iK2krIlxuICAgICIraSsiID0gdW5wYWNrX21peF8iK3Mr IihhXyIraSsiLCB1XyIraSsiX3QpO1xuI2Vsc2VcbiAgICAiK3IrIiAiK2Er IiAiK2krIiA9IHVfIitpKyI7XG4jZW5kaWZcbiI6ImRlZmluZSI9PT1lPyJc biNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2krIlxudW5pZm9ybSBsb3dwIGZs b2F0IHVfIitpKyJfdDtcbmF0dHJpYnV0ZSAiK3IrIiAiK28rIiBhXyIraSsi O1xuI2Vsc2VcbnVuaWZvcm0gIityKyIgIithKyIgdV8iK2krIjtcbiNlbmRp ZlxuIjoidmVjNCI9PT1zPyJcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2kr IlxuICAgICIrcisiICIrYSsiICIraSsiID0gYV8iK2krIjtcbiNlbHNlXG4g ICAgIityKyIgIithKyIgIitpKyIgPSB1XyIraSsiO1xuI2VuZGlmXG4iOiJc biNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2krIlxuICAgICIrcisiICIrYSsi ICIraSsiID0gdW5wYWNrX21peF8iK3MrIihhXyIraSsiLCB1XyIraSsiX3Qp O1xuI2Vsc2VcbiAgICAiK3IrIiAiK2ErIiAiK2krIiA9IHVfIitpKyI7XG4j ZW5kaWZcbiJ9KX19dmFyIHVyPU9iamVjdC5mcmVlemUoe3ByZWx1ZGU6QmUs YmFja2dyb3VuZDpOZSxiYWNrZ3JvdW5kUGF0dGVybjpqZSxjaXJjbGU6VmUs Y2xpcHBpbmdNYXNrOlVlLGhlYXRtYXA6cWUsaGVhdG1hcFRleHR1cmU6SGUs Y29sbGlzaW9uQm94OkdlLGNvbGxpc2lvbkNpcmNsZTpZZSxkZWJ1ZzpXZSxm aWxsOlhlLGZpbGxPdXRsaW5lOlplLGZpbGxPdXRsaW5lUGF0dGVybjpKZSxm aWxsUGF0dGVybjpLZSxmaWxsRXh0cnVzaW9uOlFlLGZpbGxFeHRydXNpb25Q YXR0ZXJuOiRlLGhpbGxzaGFkZVByZXBhcmU6dHIsaGlsbHNoYWRlOmVyLGxp bmU6cnIsbGluZUdyYWRpZW50Om5yLGxpbmVQYXR0ZXJuOmFyLGxpbmVTREY6 aXIscmFzdGVyOm9yLHN5bWJvbEljb246c3Isc3ltYm9sU0RGOmxyfSksaHI9 ZnVuY3Rpb24oKXt0aGlzLmJvdW5kUHJvZ3JhbT1udWxsLHRoaXMuYm91bmRM YXlvdXRWZXJ0ZXhCdWZmZXI9bnVsbCx0aGlzLmJvdW5kUGFpbnRWZXJ0ZXhC dWZmZXJzPVtdLHRoaXMuYm91bmRJbmRleEJ1ZmZlcj1udWxsLHRoaXMuYm91 bmRWZXJ0ZXhPZmZzZXQ9bnVsbCx0aGlzLmJvdW5kRHluYW1pY1ZlcnRleEJ1 ZmZlcj1udWxsLHRoaXMudmFvPW51bGx9O2hyLnByb3RvdHlwZS5iaW5kPWZ1 bmN0aW9uKHQsZSxyLG4sYSxpLG8scyl7dGhpcy5jb250ZXh0PXQ7Zm9yKHZh ciBsPXRoaXMuYm91bmRQYWludFZlcnRleEJ1ZmZlcnMubGVuZ3RoIT09bi5s ZW5ndGgsYz0wOyFsJiZjPG4ubGVuZ3RoO2MrKyl0aGlzLmJvdW5kUGFpbnRW ZXJ0ZXhCdWZmZXJzW2NdIT09bltjXSYmKGw9ITApO3ZhciB1PSF0aGlzLnZh b3x8dGhpcy5ib3VuZFByb2dyYW0hPT1lfHx0aGlzLmJvdW5kTGF5b3V0VmVy dGV4QnVmZmVyIT09cnx8bHx8dGhpcy5ib3VuZEluZGV4QnVmZmVyIT09YXx8 dGhpcy5ib3VuZFZlcnRleE9mZnNldCE9PWl8fHRoaXMuYm91bmREeW5hbWlj VmVydGV4QnVmZmVyIT09b3x8dGhpcy5ib3VuZER5bmFtaWNWZXJ0ZXhCdWZm ZXIyIT09czshdC5leHRWZXJ0ZXhBcnJheU9iamVjdHx8dT90aGlzLmZyZXNo QmluZChlLHIsbixhLGksbyxzKToodC5iaW5kVmVydGV4QXJyYXlPRVMuc2V0 KHRoaXMudmFvKSxvJiZvLmJpbmQoKSxhJiZhLmR5bmFtaWNEcmF3JiZhLmJp bmQoKSxzJiZzLmJpbmQoKSl9LGhyLnByb3RvdHlwZS5mcmVzaEJpbmQ9ZnVu Y3Rpb24odCxlLHIsbixhLGksbyl7dmFyIHMsbD10Lm51bUF0dHJpYnV0ZXMs Yz10aGlzLmNvbnRleHQsdT1jLmdsO2lmKGMuZXh0VmVydGV4QXJyYXlPYmpl Y3QpdGhpcy52YW8mJnRoaXMuZGVzdHJveSgpLHRoaXMudmFvPWMuZXh0VmVy dGV4QXJyYXlPYmplY3QuY3JlYXRlVmVydGV4QXJyYXlPRVMoKSxjLmJpbmRW ZXJ0ZXhBcnJheU9FUy5zZXQodGhpcy52YW8pLHM9MCx0aGlzLmJvdW5kUHJv Z3JhbT10LHRoaXMuYm91bmRMYXlvdXRWZXJ0ZXhCdWZmZXI9ZSx0aGlzLmJv dW5kUGFpbnRWZXJ0ZXhCdWZmZXJzPXIsdGhpcy5ib3VuZEluZGV4QnVmZmVy PW4sdGhpcy5ib3VuZFZlcnRleE9mZnNldD1hLHRoaXMuYm91bmREeW5hbWlj VmVydGV4QnVmZmVyPWksdGhpcy5ib3VuZER5bmFtaWNWZXJ0ZXhCdWZmZXIy PW87ZWxzZXtzPWMuY3VycmVudE51bUF0dHJpYnV0ZXN8fDA7Zm9yKHZhciBo PWw7aDxzO2grKyl1LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShoKX1lLmVu YWJsZUF0dHJpYnV0ZXModSx0KTtmb3IodmFyIGY9MCxwPXI7ZjxwLmxlbmd0 aDtmKz0xKXBbZl0uZW5hYmxlQXR0cmlidXRlcyh1LHQpO2kmJmkuZW5hYmxl QXR0cmlidXRlcyh1LHQpLG8mJm8uZW5hYmxlQXR0cmlidXRlcyh1LHQpLGUu YmluZCgpLGUuc2V0VmVydGV4QXR0cmliUG9pbnRlcnModSx0LGEpO2Zvcih2 YXIgZD0wLGc9cjtkPGcubGVuZ3RoO2QrPTEpe3ZhciB2PWdbZF07di5iaW5k KCksdi5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyh1LHQsYSl9aSYmKGkuYmlu ZCgpLGkuc2V0VmVydGV4QXR0cmliUG9pbnRlcnModSx0LGEpKSxuJiZuLmJp bmQoKSxvJiYoby5iaW5kKCksby5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyh1 LHQsYSkpLGMuY3VycmVudE51bUF0dHJpYnV0ZXM9bH0saHIucHJvdG90eXBl LmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnZhbyYmKHRoaXMuY29udGV4dC5l eHRWZXJ0ZXhBcnJheU9iamVjdC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh0aGlz LnZhbyksdGhpcy52YW89bnVsbCl9O3ZhciBmcj1mdW5jdGlvbih0LGUscixu LGEpe3ZhciBpPXQuZ2w7dGhpcy5wcm9ncmFtPWkuY3JlYXRlUHJvZ3JhbSgp O3ZhciBvPXIuZGVmaW5lcygpO2EmJm8ucHVzaCgiI2RlZmluZSBPVkVSRFJB V19JTlNQRUNUT1I7Iik7dmFyIHM9by5jb25jYXQoQmUuZnJhZ21lbnRTb3Vy Y2UsZS5mcmFnbWVudFNvdXJjZSkuam9pbigiXG4iKSxsPW8uY29uY2F0KEJl LnZlcnRleFNvdXJjZSxlLnZlcnRleFNvdXJjZSkuam9pbigiXG4iKSxjPWku Y3JlYXRlU2hhZGVyKGkuRlJBR01FTlRfU0hBREVSKTtpLnNoYWRlclNvdXJj ZShjLHMpLGkuY29tcGlsZVNoYWRlcihjKSxpLmF0dGFjaFNoYWRlcih0aGlz LnByb2dyYW0sYyk7dmFyIHU9aS5jcmVhdGVTaGFkZXIoaS5WRVJURVhfU0hB REVSKTtpLnNoYWRlclNvdXJjZSh1LGwpLGkuY29tcGlsZVNoYWRlcih1KSxp LmF0dGFjaFNoYWRlcih0aGlzLnByb2dyYW0sdSk7Zm9yKHZhciBoPXIubGF5 b3V0QXR0cmlidXRlc3x8W10sZj0wO2Y8aC5sZW5ndGg7ZisrKWkuYmluZEF0 dHJpYkxvY2F0aW9uKHRoaXMucHJvZ3JhbSxmLGhbZl0ubmFtZSk7aS5saW5r UHJvZ3JhbSh0aGlzLnByb2dyYW0pLHRoaXMubnVtQXR0cmlidXRlcz1pLmdl dFByb2dyYW1QYXJhbWV0ZXIodGhpcy5wcm9ncmFtLGkuQUNUSVZFX0FUVFJJ QlVURVMpLHRoaXMuYXR0cmlidXRlcz17fTtmb3IodmFyIHA9e30sZD0wO2Q8 dGhpcy5udW1BdHRyaWJ1dGVzO2QrKyl7dmFyIGc9aS5nZXRBY3RpdmVBdHRy aWIodGhpcy5wcm9ncmFtLGQpO2cmJih0aGlzLmF0dHJpYnV0ZXNbZy5uYW1l XT1pLmdldEF0dHJpYkxvY2F0aW9uKHRoaXMucHJvZ3JhbSxnLm5hbWUpKX1m b3IodmFyIHY9aS5nZXRQcm9ncmFtUGFyYW1ldGVyKHRoaXMucHJvZ3JhbSxp LkFDVElWRV9VTklGT1JNUyksbT0wO208djttKyspe3ZhciB5PWkuZ2V0QWN0 aXZlVW5pZm9ybSh0aGlzLnByb2dyYW0sbSk7eSYmKHBbeS5uYW1lXT1pLmdl dFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0seS5uYW1lKSl9dGhpcy5m aXhlZFVuaWZvcm1zPW4odCxwKSx0aGlzLmJpbmRlclVuaWZvcm1zPXIuZ2V0 VW5pZm9ybXModCxwKX07ZnVuY3Rpb24gcHIoZSxyLG4pe3ZhciBhPTEvY2Uo biwxLHIudHJhbnNmb3JtLnRpbGVab29tKSxpPU1hdGgucG93KDIsbi50aWxl SUQub3ZlcnNjYWxlZFopLG89bi50aWxlU2l6ZSpNYXRoLnBvdygyLHIudHJh bnNmb3JtLnRpbGVab29tKS9pLHM9byoobi50aWxlSUQuY2Fub25pY2FsLngr bi50aWxlSUQud3JhcCppKSxsPW8qbi50aWxlSUQuY2Fub25pY2FsLnk7cmV0 dXJue3VfaW1hZ2U6MCx1X3RleHNpemU6bi5pbWFnZUF0bGFzVGV4dHVyZS5z aXplLHVfc2NhbGU6W3QuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvLGEsZS5m cm9tU2NhbGUsZS50b1NjYWxlXSx1X2ZhZGU6ZS50LHVfcGl4ZWxfY29vcmRf dXBwZXI6W3M+PjE2LGw+PjE2XSx1X3BpeGVsX2Nvb3JkX2xvd2VyOls2NTUz NSZzLDY1NTM1JmxdfX1mci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbih0LGUs cixuLGEsaSxvLHMsbCxjLHUsaCxmLHAsZCxnKXt2YXIgdixtPXQuZ2w7Zm9y KHZhciB5IGluIHQucHJvZ3JhbS5zZXQodGhpcy5wcm9ncmFtKSx0LnNldERl cHRoTW9kZShyKSx0LnNldFN0ZW5jaWxNb2RlKG4pLHQuc2V0Q29sb3JNb2Rl KGEpLHQuc2V0Q3VsbEZhY2UoaSksdGhpcy5maXhlZFVuaWZvcm1zKXRoaXMu Zml4ZWRVbmlmb3Jtc1t5XS5zZXQob1t5XSk7cCYmcC5zZXRVbmlmb3Jtcyh0 LHRoaXMuYmluZGVyVW5pZm9ybXMsaCx7em9vbTpmfSk7Zm9yKHZhciB4PSh2 PXt9LHZbbS5MSU5FU109Mix2W20uVFJJQU5HTEVTXT0zLHZbbS5MSU5FX1NU UklQXT0xLHYpW2VdLGI9MCxfPXUuZ2V0KCk7YjxfLmxlbmd0aDtiKz0xKXt2 YXIgdz1fW2JdLGs9dy52YW9zfHwody52YW9zPXt9KTsoa1tzXXx8KGtbc109 bmV3IGhyKSkuYmluZCh0LHRoaXMsbCxwP3AuZ2V0UGFpbnRWZXJ0ZXhCdWZm ZXJzKCk6W10sYyx3LnZlcnRleE9mZnNldCxkLGcpLG0uZHJhd0VsZW1lbnRz KGUsdy5wcmltaXRpdmVMZW5ndGgqeCxtLlVOU0lHTkVEX1NIT1JULHcucHJp bWl0aXZlT2Zmc2V0KngqMil9fTt2YXIgZHI9ZnVuY3Rpb24oZSxyLG4sYSl7 dmFyIGk9ci5zdHlsZS5saWdodCxvPWkucHJvcGVydGllcy5nZXQoInBvc2l0 aW9uIikscz1bby54LG8ueSxvLnpdLGw9dC5jcmVhdGUkMSgpOyJ2aWV3cG9y dCI9PT1pLnByb3BlcnRpZXMuZ2V0KCJhbmNob3IiKSYmdC5mcm9tUm90YXRp b24obCwtci50cmFuc2Zvcm0uYW5nbGUpLHQudHJhbnNmb3JtTWF0MyhzLHMs bCk7dmFyIGM9aS5wcm9wZXJ0aWVzLmdldCgiY29sb3IiKTtyZXR1cm57dV9t YXRyaXg6ZSx1X2xpZ2h0cG9zOnMsdV9saWdodGludGVuc2l0eTppLnByb3Bl cnRpZXMuZ2V0KCJpbnRlbnNpdHkiKSx1X2xpZ2h0Y29sb3I6W2MucixjLmcs Yy5iXSx1X3ZlcnRpY2FsX2dyYWRpZW50OituLHVfb3BhY2l0eTphfX0sZ3I9 ZnVuY3Rpb24oZSxyLG4sYSxpLG8scyl7cmV0dXJuIHQuZXh0ZW5kKGRyKGUs cixuLGEpLHByKG8scixzKSx7dV9oZWlnaHRfZmFjdG9yOi1NYXRoLnBvdygy LGkub3ZlcnNjYWxlZFopL3MudGlsZVNpemUvOH0pfSx2cj1mdW5jdGlvbih0 KXtyZXR1cm57dV9tYXRyaXg6dH19LG1yPWZ1bmN0aW9uKGUscixuLGEpe3Jl dHVybiB0LmV4dGVuZCh2cihlKSxwcihuLHIsYSkpfSx5cj1mdW5jdGlvbih0 LGUpe3JldHVybnt1X21hdHJpeDp0LHVfd29ybGQ6ZX19LHhyPWZ1bmN0aW9u KGUscixuLGEsaSl7cmV0dXJuIHQuZXh0ZW5kKG1yKGUscixuLGEpLHt1X3dv cmxkOml9KX0sYnI9ZnVuY3Rpb24oZSxyLG4sYSl7dmFyIGksbyxzPWUudHJh bnNmb3JtO2lmKCJtYXAiPT09YS5wYWludC5nZXQoImNpcmNsZS1waXRjaC1h bGlnbm1lbnQiKSl7dmFyIGw9Y2UobiwxLHMuem9vbSk7aT0hMCxvPVtsLGxd fWVsc2UgaT0hMSxvPXMucGl4ZWxzVG9HTFVuaXRzO3JldHVybnt1X2NhbWVy YV90b19jZW50ZXJfZGlzdGFuY2U6cy5jYW1lcmFUb0NlbnRlckRpc3RhbmNl LHVfc2NhbGVfd2l0aF9tYXA6KygibWFwIj09PWEucGFpbnQuZ2V0KCJjaXJj bGUtcGl0Y2gtc2NhbGUiKSksdV9tYXRyaXg6ZS50cmFuc2xhdGVQb3NNYXRy aXgoci5wb3NNYXRyaXgsbixhLnBhaW50LmdldCgiY2lyY2xlLXRyYW5zbGF0 ZSIpLGEucGFpbnQuZ2V0KCJjaXJjbGUtdHJhbnNsYXRlLWFuY2hvciIpKSx1 X3BpdGNoX3dpdGhfbWFwOitpLHVfZGV2aWNlX3BpeGVsX3JhdGlvOnQuYnJv d3Nlci5kZXZpY2VQaXhlbFJhdGlvLHVfZXh0cnVkZV9zY2FsZTpvfX0sX3I9 ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1h dHJpeDRmKGUsci51X21hdHJpeCksdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3Rh bmNlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9jYW1lcmFfdG9fY2VudGVyX2Rp c3RhbmNlKSx1X3BpeGVsc190b190aWxlX3VuaXRzOm5ldyB0LlVuaWZvcm0x ZihlLHIudV9waXhlbHNfdG9fdGlsZV91bml0cyksdV9leHRydWRlX3NjYWxl Om5ldyB0LlVuaWZvcm0yZihlLHIudV9leHRydWRlX3NjYWxlKSx1X292ZXJz Y2FsZV9mYWN0b3I6bmV3IHQuVW5pZm9ybTFmKGUsci51X292ZXJzY2FsZV9m YWN0b3IpfX0sd3I9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWNlKHIsMSxlLnpv b20pLGE9TWF0aC5wb3coMixlLnpvb20tci50aWxlSUQub3ZlcnNjYWxlZFop LGk9ci50aWxlSUQub3ZlcnNjYWxlRmFjdG9yKCk7cmV0dXJue3VfbWF0cml4 OnQsdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlOmUuY2FtZXJhVG9DZW50 ZXJEaXN0YW5jZSx1X3BpeGVsc190b190aWxlX3VuaXRzOm4sdV9leHRydWRl X3NjYWxlOltlLnBpeGVsc1RvR0xVbml0c1swXS8obiphKSxlLnBpeGVsc1Rv R0xVbml0c1sxXS8obiphKV0sdV9vdmVyc2NhbGVfZmFjdG9yOml9fSxrcj1m dW5jdGlvbih0LGUpe3JldHVybnt1X21hdHJpeDp0LHVfY29sb3I6ZX19LFRy PWZ1bmN0aW9uKHQpe3JldHVybnt1X21hdHJpeDp0fX0sTXI9ZnVuY3Rpb24o dCxlLHIsbil7cmV0dXJue3VfbWF0cml4OnQsdV9leHRydWRlX3NjYWxlOmNl KGUsMSxyKSx1X2ludGVuc2l0eTpufX0sQXI9ZnVuY3Rpb24odCxlLHIpe3Zh ciBuPXIucGFpbnQuZ2V0KCJoaWxsc2hhZGUtc2hhZG93LWNvbG9yIiksYT1y LnBhaW50LmdldCgiaGlsbHNoYWRlLWhpZ2hsaWdodC1jb2xvciIpLGk9ci5w YWludC5nZXQoImhpbGxzaGFkZS1hY2NlbnQtY29sb3IiKSxvPXIucGFpbnQu Z2V0KCJoaWxsc2hhZGUtaWxsdW1pbmF0aW9uLWRpcmVjdGlvbiIpKihNYXRo LlBJLzE4MCk7InZpZXdwb3J0Ij09PXIucGFpbnQuZ2V0KCJoaWxsc2hhZGUt aWxsdW1pbmF0aW9uLWFuY2hvciIpJiYoby09dC50cmFuc2Zvcm0uYW5nbGUp O3ZhciBzPSF0Lm9wdGlvbnMubW92aW5nO3JldHVybnt1X21hdHJpeDp0LnRy YW5zZm9ybS5jYWxjdWxhdGVQb3NNYXRyaXgoZS50aWxlSUQudG9VbndyYXBw ZWQoKSxzKSx1X2ltYWdlOjAsdV9sYXRyYW5nZTpFcih0LGUudGlsZUlEKSx1 X2xpZ2h0OltyLnBhaW50LmdldCgiaGlsbHNoYWRlLWV4YWdnZXJhdGlvbiIp LG9dLHVfc2hhZG93Om4sdV9oaWdobGlnaHQ6YSx1X2FjY2VudDppfX0sU3I9 ZnVuY3Rpb24oZSxyKXt2YXIgbj1lLmRlbS5zdHJpZGUsYT10LmNyZWF0ZSgp O3JldHVybiB0Lm9ydGhvKGEsMCx0LkVYVEVOVCwtdC5FWFRFTlQsMCwwLDEp LHQudHJhbnNsYXRlKGEsYSxbMCwtdC5FWFRFTlQsMF0pLHt1X21hdHJpeDph LHVfaW1hZ2U6MSx1X2RpbWVuc2lvbjpbbixuXSx1X3pvb206ZS50aWxlSUQu b3ZlcnNjYWxlZFosdV9tYXh6b29tOnJ9fTtmdW5jdGlvbiBFcihlLHIpe3Zh ciBuPU1hdGgucG93KDIsci5jYW5vbmljYWwueiksYT1yLmNhbm9uaWNhbC55 O3JldHVybltuZXcgdC5NZXJjYXRvckNvb3JkaW5hdGUoMCxhL24pLnRvTG5n TGF0KCkubGF0LG5ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZSgwLChhKzEpL24p LnRvTG5nTGF0KCkubGF0XX12YXIgTHI9ZnVuY3Rpb24oZSxyLG4pe3ZhciBh PWUudHJhbnNmb3JtO3JldHVybnt1X21hdHJpeDpJcihlLHIsbiksdV9yYXRp bzoxL2NlKHIsMSxhLnpvb20pLHVfZGV2aWNlX3BpeGVsX3JhdGlvOnQuYnJv d3Nlci5kZXZpY2VQaXhlbFJhdGlvLHVfdW5pdHNfdG9fcGl4ZWxzOlsxL2Eu cGl4ZWxzVG9HTFVuaXRzWzBdLDEvYS5waXhlbHNUb0dMVW5pdHNbMV1dfX0s Q3I9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0LmV4dGVuZChMcihlLHIsbiks e3VfaW1hZ2U6MH0pfSxQcj1mdW5jdGlvbihlLHIsbixhKXt2YXIgaT1lLnRy YW5zZm9ybSxvPXpyKHIsaSk7cmV0dXJue3VfbWF0cml4OklyKGUscixuKSx1 X3RleHNpemU6ci5pbWFnZUF0bGFzVGV4dHVyZS5zaXplLHVfcmF0aW86MS9j ZShyLDEsaS56b29tKSx1X2RldmljZV9waXhlbF9yYXRpbzp0LmJyb3dzZXIu ZGV2aWNlUGl4ZWxSYXRpbyx1X2ltYWdlOjAsdV9zY2FsZTpbdC5icm93c2Vy LmRldmljZVBpeGVsUmF0aW8sbyxhLmZyb21TY2FsZSxhLnRvU2NhbGVdLHVf ZmFkZTphLnQsdV91bml0c190b19waXhlbHM6WzEvaS5waXhlbHNUb0dMVW5p dHNbMF0sMS9pLnBpeGVsc1RvR0xVbml0c1sxXV19fSxPcj1mdW5jdGlvbihl LHIsbixhLGkpe3ZhciBvPWUudHJhbnNmb3JtLHM9ZS5saW5lQXRsYXMsbD16 cihyLG8pLGM9InJvdW5kIj09PW4ubGF5b3V0LmdldCgibGluZS1jYXAiKSx1 PXMuZ2V0RGFzaChhLmZyb20sYyksaD1zLmdldERhc2goYS50byxjKSxmPXUu d2lkdGgqaS5mcm9tU2NhbGUscD1oLndpZHRoKmkudG9TY2FsZTtyZXR1cm4g dC5leHRlbmQoTHIoZSxyLG4pLHt1X3BhdHRlcm5zY2FsZV9hOltsL2YsLXUu aGVpZ2h0LzJdLHVfcGF0dGVybnNjYWxlX2I6W2wvcCwtaC5oZWlnaHQvMl0s dV9zZGZnYW1tYTpzLndpZHRoLygyNTYqTWF0aC5taW4oZixwKSp0LmJyb3dz ZXIuZGV2aWNlUGl4ZWxSYXRpbykvMix1X2ltYWdlOjAsdV90ZXhfeV9hOnUu eSx1X3RleF95X2I6aC55LHVfbWl4OmkudH0pfTtmdW5jdGlvbiB6cih0LGUp e3JldHVybiAxL2NlKHQsMSxlLnRpbGVab29tKX1mdW5jdGlvbiBJcih0LGUs cil7cmV0dXJuIHQudHJhbnNsYXRlUG9zTWF0cml4KGUudGlsZUlELnBvc01h dHJpeCxlLHIucGFpbnQuZ2V0KCJsaW5lLXRyYW5zbGF0ZSIpLHIucGFpbnQu Z2V0KCJsaW5lLXRyYW5zbGF0ZS1hbmNob3IiKSl9dmFyIERyPWZ1bmN0aW9u KHQsZSxyLG4sYSl7cmV0dXJue3VfbWF0cml4OnQsdV90bF9wYXJlbnQ6ZSx1 X3NjYWxlX3BhcmVudDpyLHVfYnVmZmVyX3NjYWxlOjEsdV9mYWRlX3Q6bi5t aXgsdV9vcGFjaXR5Om4ub3BhY2l0eSphLnBhaW50LmdldCgicmFzdGVyLW9w YWNpdHkiKSx1X2ltYWdlMDowLHVfaW1hZ2UxOjEsdV9icmlnaHRuZXNzX2xv dzphLnBhaW50LmdldCgicmFzdGVyLWJyaWdodG5lc3MtbWluIiksdV9icmln aHRuZXNzX2hpZ2g6YS5wYWludC5nZXQoInJhc3Rlci1icmlnaHRuZXNzLW1h eCIpLHVfc2F0dXJhdGlvbl9mYWN0b3I6KG89YS5wYWludC5nZXQoInJhc3Rl ci1zYXR1cmF0aW9uIiksbz4wPzEtMS8oMS4wMDEtbyk6LW8pLHVfY29udHJh c3RfZmFjdG9yOihpPWEucGFpbnQuZ2V0KCJyYXN0ZXItY29udHJhc3QiKSxp PjA/MS8oMS1pKToxK2kpLHVfc3Bpbl93ZWlnaHRzOlJyKGEucGFpbnQuZ2V0 KCJyYXN0ZXItaHVlLXJvdGF0ZSIpKX07dmFyIGksb307ZnVuY3Rpb24gUnIo dCl7dCo9TWF0aC5QSS8xODA7dmFyIGU9TWF0aC5zaW4odCkscj1NYXRoLmNv cyh0KTtyZXR1cm5bKDIqcisxKS8zLCgtTWF0aC5zcXJ0KDMpKmUtcisxKS8z LChNYXRoLnNxcnQoMykqZS1yKzEpLzNdfXZhciBGcj1mdW5jdGlvbih0LGUs cixuLGEsaSxvLHMsbCxjKXt2YXIgdT1hLnRyYW5zZm9ybTtyZXR1cm57dV9p c19zaXplX3pvb21fY29uc3RhbnQ6KygiY29uc3RhbnQiPT09dHx8InNvdXJj ZSI9PT10KSx1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDorKCJjb25zdGFu dCI9PT10fHwiY2FtZXJhIj09PXQpLHVfc2l6ZV90OmU/ZS51U2l6ZVQ6MCx1 X3NpemU6ZT9lLnVTaXplOjAsdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNl OnUuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSx1X3BpdGNoOnUucGl0Y2gvMzYw KjIqTWF0aC5QSSx1X3JvdGF0ZV9zeW1ib2w6K3IsdV9hc3BlY3RfcmF0aW86 dS53aWR0aC91LmhlaWdodCx1X2ZhZGVfY2hhbmdlOmEub3B0aW9ucy5mYWRl RHVyYXRpb24/YS5zeW1ib2xGYWRlQ2hhbmdlOjEsdV9tYXRyaXg6aSx1X2xh YmVsX3BsYW5lX21hdHJpeDpvLHVfY29vcmRfbWF0cml4OnMsdV9pc190ZXh0 OitsLHVfcGl0Y2hfd2l0aF9tYXA6K24sdV90ZXhzaXplOmMsdV90ZXh0dXJl OjB9fSxCcj1mdW5jdGlvbihlLHIsbixhLGksbyxzLGwsYyx1LGgpe3ZhciBm PWkudHJhbnNmb3JtO3JldHVybiB0LmV4dGVuZChGcihlLHIsbixhLGksbyxz LGwsYyx1KSx7dV9nYW1tYV9zY2FsZTphP01hdGguY29zKGYuX3BpdGNoKSpm LmNhbWVyYVRvQ2VudGVyRGlzdGFuY2U6MSx1X2RldmljZV9waXhlbF9yYXRp bzp0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyx1X2lzX2hhbG86K2h9KX0s TnI9ZnVuY3Rpb24odCxlLHIpe3JldHVybnt1X21hdHJpeDp0LHVfb3BhY2l0 eTplLHVfY29sb3I6cn19LGpyPWZ1bmN0aW9uKGUscixuLGEsaSxvKXtyZXR1 cm4gdC5leHRlbmQoZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ci5pbWFnZU1h bmFnZXIuZ2V0UGF0dGVybih0LmZyb20pLGk9ci5pbWFnZU1hbmFnZXIuZ2V0 UGF0dGVybih0LnRvKSxvPXIuaW1hZ2VNYW5hZ2VyLmdldFBpeGVsU2l6ZSgp LHM9by53aWR0aCxsPW8uaGVpZ2h0LGM9TWF0aC5wb3coMixuLnRpbGVJRC5v dmVyc2NhbGVkWiksdT1uLnRpbGVTaXplKk1hdGgucG93KDIsci50cmFuc2Zv cm0udGlsZVpvb20pL2MsaD11KihuLnRpbGVJRC5jYW5vbmljYWwueCtuLnRp bGVJRC53cmFwKmMpLGY9dSpuLnRpbGVJRC5jYW5vbmljYWwueTtyZXR1cm57 dV9pbWFnZTowLHVfcGF0dGVybl90bF9hOmEudGwsdV9wYXR0ZXJuX2JyX2E6 YS5icix1X3BhdHRlcm5fdGxfYjppLnRsLHVfcGF0dGVybl9icl9iOmkuYnIs dV90ZXhzaXplOltzLGxdLHVfbWl4OmUudCx1X3BhdHRlcm5fc2l6ZV9hOmEu ZGlzcGxheVNpemUsdV9wYXR0ZXJuX3NpemVfYjppLmRpc3BsYXlTaXplLHVf c2NhbGVfYTplLmZyb21TY2FsZSx1X3NjYWxlX2I6ZS50b1NjYWxlLHVfdGls ZV91bml0c190b19waXhlbHM6MS9jZShuLDEsci50cmFuc2Zvcm0udGlsZVpv b20pLHVfcGl4ZWxfY29vcmRfdXBwZXI6W2g+PjE2LGY+PjE2XSx1X3BpeGVs X2Nvb3JkX2xvd2VyOls2NTUzNSZoLDY1NTM1JmZdfX0oYSxvLG4saSkse3Vf bWF0cml4OmUsdV9vcGFjaXR5OnJ9KX0sVnI9e2ZpbGxFeHRydXNpb246ZnVu Y3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJp eDRmKGUsci51X21hdHJpeCksdV9saWdodHBvczpuZXcgdC5Vbmlmb3JtM2Yo ZSxyLnVfbGlnaHRwb3MpLHVfbGlnaHRpbnRlbnNpdHk6bmV3IHQuVW5pZm9y bTFmKGUsci51X2xpZ2h0aW50ZW5zaXR5KSx1X2xpZ2h0Y29sb3I6bmV3IHQu VW5pZm9ybTNmKGUsci51X2xpZ2h0Y29sb3IpLHVfdmVydGljYWxfZ3JhZGll bnQ6bmV3IHQuVW5pZm9ybTFmKGUsci51X3ZlcnRpY2FsX2dyYWRpZW50KSx1 X29wYWNpdHk6bmV3IHQuVW5pZm9ybTFmKGUsci51X29wYWNpdHkpfX0sZmls bEV4dHJ1c2lvblBhdHRlcm46ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRy aXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV9saWdo dHBvczpuZXcgdC5Vbmlmb3JtM2YoZSxyLnVfbGlnaHRwb3MpLHVfbGlnaHRp bnRlbnNpdHk6bmV3IHQuVW5pZm9ybTFmKGUsci51X2xpZ2h0aW50ZW5zaXR5 KSx1X2xpZ2h0Y29sb3I6bmV3IHQuVW5pZm9ybTNmKGUsci51X2xpZ2h0Y29s b3IpLHVfdmVydGljYWxfZ3JhZGllbnQ6bmV3IHQuVW5pZm9ybTFmKGUsci51 X3ZlcnRpY2FsX2dyYWRpZW50KSx1X2hlaWdodF9mYWN0b3I6bmV3IHQuVW5p Zm9ybTFmKGUsci51X2hlaWdodF9mYWN0b3IpLHVfaW1hZ2U6bmV3IHQuVW5p Zm9ybTFpKGUsci51X2ltYWdlKSx1X3RleHNpemU6bmV3IHQuVW5pZm9ybTJm KGUsci51X3RleHNpemUpLHVfcGl4ZWxfY29vcmRfdXBwZXI6bmV3IHQuVW5p Zm9ybTJmKGUsci51X3BpeGVsX2Nvb3JkX3VwcGVyKSx1X3BpeGVsX2Nvb3Jk X2xvd2VyOm5ldyB0LlVuaWZvcm0yZihlLHIudV9waXhlbF9jb29yZF9sb3dl ciksdV9zY2FsZTpuZXcgdC5Vbmlmb3JtNGYoZSxyLnVfc2NhbGUpLHVfZmFk ZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZSksdV9vcGFjaXR5Om5ldyB0 LlVuaWZvcm0xZihlLHIudV9vcGFjaXR5KX19LGZpbGw6ZnVuY3Rpb24oZSxy KXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51 X21hdHJpeCl9fSxmaWxsUGF0dGVybjpmdW5jdGlvbihlLHIpe3JldHVybnt1 X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1 X2ltYWdlOm5ldyB0LlVuaWZvcm0xaShlLHIudV9pbWFnZSksdV90ZXhzaXpl Om5ldyB0LlVuaWZvcm0yZihlLHIudV90ZXhzaXplKSx1X3BpeGVsX2Nvb3Jk X3VwcGVyOm5ldyB0LlVuaWZvcm0yZihlLHIudV9waXhlbF9jb29yZF91cHBl ciksdV9waXhlbF9jb29yZF9sb3dlcjpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVf cGl4ZWxfY29vcmRfbG93ZXIpLHVfc2NhbGU6bmV3IHQuVW5pZm9ybTRmKGUs ci51X3NjYWxlKSx1X2ZhZGU6bmV3IHQuVW5pZm9ybTFmKGUsci51X2ZhZGUp fX0sZmlsbE91dGxpbmU6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6 bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV93b3JsZDpu ZXcgdC5Vbmlmb3JtMmYoZSxyLnVfd29ybGQpfX0sZmlsbE91dGxpbmVQYXR0 ZXJuOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZv cm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfd29ybGQ6bmV3IHQuVW5pZm9y bTJmKGUsci51X3dvcmxkKSx1X2ltYWdlOm5ldyB0LlVuaWZvcm0xaShlLHIu dV9pbWFnZSksdV90ZXhzaXplOm5ldyB0LlVuaWZvcm0yZihlLHIudV90ZXhz aXplKSx1X3BpeGVsX2Nvb3JkX3VwcGVyOm5ldyB0LlVuaWZvcm0yZihlLHIu dV9waXhlbF9jb29yZF91cHBlciksdV9waXhlbF9jb29yZF9sb3dlcjpuZXcg dC5Vbmlmb3JtMmYoZSxyLnVfcGl4ZWxfY29vcmRfbG93ZXIpLHVfc2NhbGU6 bmV3IHQuVW5pZm9ybTRmKGUsci51X3NjYWxlKSx1X2ZhZGU6bmV3IHQuVW5p Zm9ybTFmKGUsci51X2ZhZGUpfX0sY2lyY2xlOmZ1bmN0aW9uKGUscil7cmV0 dXJue3VfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTpuZXcgdC5Vbmlmb3Jt MWYoZSxyLnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSksdV9zY2FsZV93 aXRoX21hcDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfc2NhbGVfd2l0aF9tYXAp LHVfcGl0Y2hfd2l0aF9tYXA6bmV3IHQuVW5pZm9ybTFpKGUsci51X3BpdGNo X3dpdGhfbWFwKSx1X2V4dHJ1ZGVfc2NhbGU6bmV3IHQuVW5pZm9ybTJmKGUs ci51X2V4dHJ1ZGVfc2NhbGUpLHVfZGV2aWNlX3BpeGVsX3JhdGlvOm5ldyB0 LlVuaWZvcm0xZihlLHIudV9kZXZpY2VfcGl4ZWxfcmF0aW8pLHVfbWF0cml4 Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpfX0sY29sbGlz aW9uQm94Ol9yLGNvbGxpc2lvbkNpcmNsZTpfcixkZWJ1ZzpmdW5jdGlvbihl LHIpe3JldHVybnt1X2NvbG9yOm5ldyB0LlVuaWZvcm1Db2xvcihlLHIudV9j b2xvciksdV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21h dHJpeCl9fSxjbGlwcGluZ01hc2s6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9t YXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCl9fSxo ZWF0bWFwOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfZXh0cnVkZV9zY2FsZTpu ZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZXh0cnVkZV9zY2FsZSksdV9pbnRlbnNp dHk6bmV3IHQuVW5pZm9ybTFmKGUsci51X2ludGVuc2l0eSksdV9tYXRyaXg6 bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCl9fSxoZWF0bWFw VGV4dHVyZTpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5V bmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X3dvcmxkOm5ldyB0LlVu aWZvcm0yZihlLHIudV93b3JsZCksdV9pbWFnZTpuZXcgdC5Vbmlmb3JtMWko ZSxyLnVfaW1hZ2UpLHVfY29sb3JfcmFtcDpuZXcgdC5Vbmlmb3JtMWkoZSxy LnVfY29sb3JfcmFtcCksdV9vcGFjaXR5Om5ldyB0LlVuaWZvcm0xZihlLHIu dV9vcGFjaXR5KX19LGhpbGxzaGFkZTpmdW5jdGlvbihlLHIpe3JldHVybnt1 X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1 X2ltYWdlOm5ldyB0LlVuaWZvcm0xaShlLHIudV9pbWFnZSksdV9sYXRyYW5n ZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfbGF0cmFuZ2UpLHVfbGlnaHQ6bmV3 IHQuVW5pZm9ybTJmKGUsci51X2xpZ2h0KSx1X3NoYWRvdzpuZXcgdC5Vbmlm b3JtQ29sb3IoZSxyLnVfc2hhZG93KSx1X2hpZ2hsaWdodDpuZXcgdC5Vbmlm b3JtQ29sb3IoZSxyLnVfaGlnaGxpZ2h0KSx1X2FjY2VudDpuZXcgdC5Vbmlm b3JtQ29sb3IoZSxyLnVfYWNjZW50KX19LGhpbGxzaGFkZVByZXBhcmU6ZnVu Y3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJp eDRmKGUsci51X21hdHJpeCksdV9pbWFnZTpuZXcgdC5Vbmlmb3JtMWkoZSxy LnVfaW1hZ2UpLHVfZGltZW5zaW9uOm5ldyB0LlVuaWZvcm0yZihlLHIudV9k aW1lbnNpb24pLHVfem9vbTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfem9vbSks dV9tYXh6b29tOm5ldyB0LlVuaWZvcm0xZihlLHIudV9tYXh6b29tKX19LGxp bmU6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9y bU1hdHJpeDRmKGUsci51X21hdHJpeCksdV9yYXRpbzpuZXcgdC5Vbmlmb3Jt MWYoZSxyLnVfcmF0aW8pLHVfZGV2aWNlX3BpeGVsX3JhdGlvOm5ldyB0LlVu aWZvcm0xZihlLHIudV9kZXZpY2VfcGl4ZWxfcmF0aW8pLHVfdW5pdHNfdG9f cGl4ZWxzOm5ldyB0LlVuaWZvcm0yZihlLHIudV91bml0c190b19waXhlbHMp fX0sbGluZUdyYWRpZW50OmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4 Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfcmF0aW86 bmV3IHQuVW5pZm9ybTFmKGUsci51X3JhdGlvKSx1X2RldmljZV9waXhlbF9y YXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZGV2aWNlX3BpeGVsX3JhdGlv KSx1X3VuaXRzX3RvX3BpeGVsczpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdW5p dHNfdG9fcGl4ZWxzKSx1X2ltYWdlOm5ldyB0LlVuaWZvcm0xaShlLHIudV9p bWFnZSl9fSxsaW5lUGF0dGVybjpmdW5jdGlvbihlLHIpe3JldHVybnt1X21h dHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X3Rl eHNpemU6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RleHNpemUpLHVfcmF0aW86 bmV3IHQuVW5pZm9ybTFmKGUsci51X3JhdGlvKSx1X2RldmljZV9waXhlbF9y YXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZGV2aWNlX3BpeGVsX3JhdGlv KSx1X2ltYWdlOm5ldyB0LlVuaWZvcm0xaShlLHIudV9pbWFnZSksdV91bml0 c190b19waXhlbHM6bmV3IHQuVW5pZm9ybTJmKGUsci51X3VuaXRzX3RvX3Bp eGVscyksdV9zY2FsZTpuZXcgdC5Vbmlmb3JtNGYoZSxyLnVfc2NhbGUpLHVf ZmFkZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZSl9fSxsaW5lU0RGOmZ1 bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRy aXg0ZihlLHIudV9tYXRyaXgpLHVfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUs ci51X3JhdGlvKSx1X2RldmljZV9waXhlbF9yYXRpbzpuZXcgdC5Vbmlmb3Jt MWYoZSxyLnVfZGV2aWNlX3BpeGVsX3JhdGlvKSx1X3VuaXRzX3RvX3BpeGVs czpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdW5pdHNfdG9fcGl4ZWxzKSx1X3Bh dHRlcm5zY2FsZV9hOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0ZXJuc2Nh bGVfYSksdV9wYXR0ZXJuc2NhbGVfYjpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVf cGF0dGVybnNjYWxlX2IpLHVfc2RmZ2FtbWE6bmV3IHQuVW5pZm9ybTFmKGUs ci51X3NkZmdhbW1hKSx1X2ltYWdlOm5ldyB0LlVuaWZvcm0xaShlLHIudV9p bWFnZSksdV90ZXhfeV9hOm5ldyB0LlVuaWZvcm0xZihlLHIudV90ZXhfeV9h KSx1X3RleF95X2I6bmV3IHQuVW5pZm9ybTFmKGUsci51X3RleF95X2IpLHVf bWl4Om5ldyB0LlVuaWZvcm0xZihlLHIudV9taXgpfX0scmFzdGVyOmZ1bmN0 aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0 ZihlLHIudV9tYXRyaXgpLHVfdGxfcGFyZW50Om5ldyB0LlVuaWZvcm0yZihl LHIudV90bF9wYXJlbnQpLHVfc2NhbGVfcGFyZW50Om5ldyB0LlVuaWZvcm0x ZihlLHIudV9zY2FsZV9wYXJlbnQpLHVfYnVmZmVyX3NjYWxlOm5ldyB0LlVu aWZvcm0xZihlLHIudV9idWZmZXJfc2NhbGUpLHVfZmFkZV90Om5ldyB0LlVu aWZvcm0xZihlLHIudV9mYWRlX3QpLHVfb3BhY2l0eTpuZXcgdC5Vbmlmb3Jt MWYoZSxyLnVfb3BhY2l0eSksdV9pbWFnZTA6bmV3IHQuVW5pZm9ybTFpKGUs ci51X2ltYWdlMCksdV9pbWFnZTE6bmV3IHQuVW5pZm9ybTFpKGUsci51X2lt YWdlMSksdV9icmlnaHRuZXNzX2xvdzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVf YnJpZ2h0bmVzc19sb3cpLHVfYnJpZ2h0bmVzc19oaWdoOm5ldyB0LlVuaWZv cm0xZihlLHIudV9icmlnaHRuZXNzX2hpZ2gpLHVfc2F0dXJhdGlvbl9mYWN0 b3I6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NhdHVyYXRpb25fZmFjdG9yKSx1 X2NvbnRyYXN0X2ZhY3RvcjpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfY29udHJh c3RfZmFjdG9yKSx1X3NwaW5fd2VpZ2h0czpuZXcgdC5Vbmlmb3JtM2YoZSxy LnVfc3Bpbl93ZWlnaHRzKX19LHN5bWJvbEljb246ZnVuY3Rpb24oZSxyKXty ZXR1cm57dV9pc19zaXplX3pvb21fY29uc3RhbnQ6bmV3IHQuVW5pZm9ybTFp KGUsci51X2lzX3NpemVfem9vbV9jb25zdGFudCksdV9pc19zaXplX2ZlYXR1 cmVfY29uc3RhbnQ6bmV3IHQuVW5pZm9ybTFpKGUsci51X2lzX3NpemVfZmVh dHVyZV9jb25zdGFudCksdV9zaXplX3Q6bmV3IHQuVW5pZm9ybTFmKGUsci51 X3NpemVfdCksdV9zaXplOm5ldyB0LlVuaWZvcm0xZihlLHIudV9zaXplKSx1 X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U6bmV3IHQuVW5pZm9ybTFmKGUs ci51X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UpLHVfcGl0Y2g6bmV3IHQu VW5pZm9ybTFmKGUsci51X3BpdGNoKSx1X3JvdGF0ZV9zeW1ib2w6bmV3IHQu VW5pZm9ybTFpKGUsci51X3JvdGF0ZV9zeW1ib2wpLHVfYXNwZWN0X3JhdGlv Om5ldyB0LlVuaWZvcm0xZihlLHIudV9hc3BlY3RfcmF0aW8pLHVfZmFkZV9j aGFuZ2U6bmV3IHQuVW5pZm9ybTFmKGUsci51X2ZhZGVfY2hhbmdlKSx1X21h dHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X2xh YmVsX3BsYW5lX21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVf bGFiZWxfcGxhbmVfbWF0cml4KSx1X2Nvb3JkX21hdHJpeDpuZXcgdC5Vbmlm b3JtTWF0cml4NGYoZSxyLnVfY29vcmRfbWF0cml4KSx1X2lzX3RleHQ6bmV3 IHQuVW5pZm9ybTFmKGUsci51X2lzX3RleHQpLHVfcGl0Y2hfd2l0aF9tYXA6 bmV3IHQuVW5pZm9ybTFpKGUsci51X3BpdGNoX3dpdGhfbWFwKSx1X3RleHNp emU6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RleHNpemUpLHVfdGV4dHVyZTpu ZXcgdC5Vbmlmb3JtMWkoZSxyLnVfdGV4dHVyZSl9fSxzeW1ib2xTREY6ZnVu Y3Rpb24oZSxyKXtyZXR1cm57dV9pc19zaXplX3pvb21fY29uc3RhbnQ6bmV3 IHQuVW5pZm9ybTFpKGUsci51X2lzX3NpemVfem9vbV9jb25zdGFudCksdV9p c19zaXplX2ZlYXR1cmVfY29uc3RhbnQ6bmV3IHQuVW5pZm9ybTFpKGUsci51 X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudCksdV9zaXplX3Q6bmV3IHQuVW5p Zm9ybTFmKGUsci51X3NpemVfdCksdV9zaXplOm5ldyB0LlVuaWZvcm0xZihl LHIudV9zaXplKSx1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U6bmV3IHQu VW5pZm9ybTFmKGUsci51X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UpLHVf cGl0Y2g6bmV3IHQuVW5pZm9ybTFmKGUsci51X3BpdGNoKSx1X3JvdGF0ZV9z eW1ib2w6bmV3IHQuVW5pZm9ybTFpKGUsci51X3JvdGF0ZV9zeW1ib2wpLHVf YXNwZWN0X3JhdGlvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9hc3BlY3RfcmF0 aW8pLHVfZmFkZV9jaGFuZ2U6bmV3IHQuVW5pZm9ybTFmKGUsci51X2ZhZGVf Y2hhbmdlKSx1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVf bWF0cml4KSx1X2xhYmVsX3BsYW5lX21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0 cml4NGYoZSxyLnVfbGFiZWxfcGxhbmVfbWF0cml4KSx1X2Nvb3JkX21hdHJp eDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfY29vcmRfbWF0cml4KSx1 X2lzX3RleHQ6bmV3IHQuVW5pZm9ybTFmKGUsci51X2lzX3RleHQpLHVfcGl0 Y2hfd2l0aF9tYXA6bmV3IHQuVW5pZm9ybTFpKGUsci51X3BpdGNoX3dpdGhf bWFwKSx1X3RleHNpemU6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RleHNpemUp LHVfdGV4dHVyZTpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfdGV4dHVyZSksdV9n YW1tYV9zY2FsZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZ2FtbWFfc2NhbGUp LHVfZGV2aWNlX3BpeGVsX3JhdGlvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9k ZXZpY2VfcGl4ZWxfcmF0aW8pLHVfaXNfaGFsbzpuZXcgdC5Vbmlmb3JtMWYo ZSxyLnVfaXNfaGFsbyl9fSxiYWNrZ3JvdW5kOmZ1bmN0aW9uKGUscil7cmV0 dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRy aXgpLHVfb3BhY2l0eTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfb3BhY2l0eSks dV9jb2xvcjpuZXcgdC5Vbmlmb3JtQ29sb3IoZSxyLnVfY29sb3IpfX0sYmFj a2dyb3VuZFBhdHRlcm46ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6 bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV9vcGFjaXR5 Om5ldyB0LlVuaWZvcm0xZihlLHIudV9vcGFjaXR5KSx1X2ltYWdlOm5ldyB0 LlVuaWZvcm0xaShlLHIudV9pbWFnZSksdV9wYXR0ZXJuX3RsX2E6bmV3IHQu VW5pZm9ybTJmKGUsci51X3BhdHRlcm5fdGxfYSksdV9wYXR0ZXJuX2JyX2E6 bmV3IHQuVW5pZm9ybTJmKGUsci51X3BhdHRlcm5fYnJfYSksdV9wYXR0ZXJu X3RsX2I6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BhdHRlcm5fdGxfYiksdV9w YXR0ZXJuX2JyX2I6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BhdHRlcm5fYnJf YiksdV90ZXhzaXplOm5ldyB0LlVuaWZvcm0yZihlLHIudV90ZXhzaXplKSx1 X21peDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfbWl4KSx1X3BhdHRlcm5fc2l6 ZV9hOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0ZXJuX3NpemVfYSksdV9w YXR0ZXJuX3NpemVfYjpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGF0dGVybl9z aXplX2IpLHVfc2NhbGVfYTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2NhbGVf YSksdV9zY2FsZV9iOm5ldyB0LlVuaWZvcm0xZihlLHIudV9zY2FsZV9iKSx1 X3BpeGVsX2Nvb3JkX3VwcGVyOm5ldyB0LlVuaWZvcm0yZihlLHIudV9waXhl bF9jb29yZF91cHBlciksdV9waXhlbF9jb29yZF9sb3dlcjpuZXcgdC5Vbmlm b3JtMmYoZSxyLnVfcGl4ZWxfY29vcmRfbG93ZXIpLHVfdGlsZV91bml0c190 b19waXhlbHM6bmV3IHQuVW5pZm9ybTFmKGUsci51X3RpbGVfdW5pdHNfdG9f cGl4ZWxzKX19fTtmdW5jdGlvbiBVcihlLHIpe2Zvcih2YXIgbj1lLnNvcnQo ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50aWxlSUQuaXNMZXNzVGhhbihlLnRp bGVJRCk/LTE6ZS50aWxlSUQuaXNMZXNzVGhhbih0LnRpbGVJRCk/MTowfSks YT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgaT17fSxvPW5bYV0scz1uLnNsaWNl KGErMSk7cXIoby50aWxlSUQud3JhcHBlZCgpLG8udGlsZUlELHMsbmV3IHQu T3ZlcnNjYWxlZFRpbGVJRCgwLG8udGlsZUlELndyYXArMSwwLDAsMCksaSks by5zZXRNYXNrKGkscil9fWZ1bmN0aW9uIHFyKGUscixuLGEsaSl7Zm9yKHZh ciBvPTA7bzxuLmxlbmd0aDtvKyspe3ZhciBzPW5bb107aWYoYS5pc0xlc3NU aGFuKHMudGlsZUlEKSlicmVhaztpZihyLmtleT09PXMudGlsZUlELmtleSly ZXR1cm47aWYocy50aWxlSUQuaXNDaGlsZE9mKHIpKXtmb3IodmFyIGw9ci5j aGlsZHJlbigxLzApLGM9MDtjPGwubGVuZ3RoO2MrKylxcihlLGxbY10sbi5z bGljZShvKSxhLGkpO3JldHVybn19dmFyIHU9ci5vdmVyc2NhbGVkWi1lLm92 ZXJzY2FsZWRaLGg9bmV3IHQuQ2Fub25pY2FsVGlsZUlEKHUsci5jYW5vbmlj YWwueC0oZS5jYW5vbmljYWwueDw8dSksci5jYW5vbmljYWwueS0oZS5jYW5v bmljYWwueTw8dSkpO2lbaC5rZXldPWlbaC5rZXldfHxofWZ1bmN0aW9uIEhy KHQsZSxyLG4sYSl7Zm9yKHZhciBpPXQuY29udGV4dCxvPWkuZ2wscz1hP3Qu dXNlUHJvZ3JhbSgiY29sbGlzaW9uQ2lyY2xlIik6dC51c2VQcm9ncmFtKCJj b2xsaXNpb25Cb3giKSxsPTA7bDxuLmxlbmd0aDtsKyspe3ZhciBjPW5bbF0s dT1lLmdldFRpbGUoYyksaD11LmdldEJ1Y2tldChyKTtpZihoKXt2YXIgZj1h P2guY29sbGlzaW9uQ2lyY2xlOmguY29sbGlzaW9uQm94O2YmJnMuZHJhdyhp LGE/by5UUklBTkdMRVM6by5MSU5FUyxNdC5kaXNhYmxlZCxBdC5kaXNhYmxl ZCx0LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSxFdC5kaXNhYmxlZCx3cihj LnBvc01hdHJpeCx0LnRyYW5zZm9ybSx1KSxyLmlkLGYubGF5b3V0VmVydGV4 QnVmZmVyLGYuaW5kZXhCdWZmZXIsZi5zZWdtZW50cyxudWxsLHQudHJhbnNm b3JtLnpvb20sbnVsbCxudWxsLGYuY29sbGlzaW9uVmVydGV4QnVmZmVyKX19 fXZhciBHcj10LmlkZW50aXR5KG5ldyBGbG9hdDMyQXJyYXkoMTYpKTtmdW5j dGlvbiBZcihlLHIsbixhLGksbyl7dmFyIHM9dC5nZXRBbmNob3JBbGlnbm1l bnQoZSksbD0tKHMuaG9yaXpvbnRhbEFsaWduLS41KSpyLGM9LShzLnZlcnRp Y2FsQWxpZ24tLjUpKm4sdT10LmV2YWx1YXRlUmFkaWFsT2Zmc2V0KGUsYSk7 cmV0dXJuIG5ldyB0LlBvaW50KChsL2krdVswXSkqbywoYy9pK3VbMV0pKm8p fWZ1bmN0aW9uIFdyKGUscixuLGEsaSxvLHMsbCxjLHUpe3ZhciBoPWUudGV4 dC5wbGFjZWRTeW1ib2xBcnJheSxmPWUudGV4dC5keW5hbWljTGF5b3V0VmVy dGV4QXJyYXk7Zi5jbGVhcigpO2Zvcih2YXIgcD0wO3A8aC5sZW5ndGg7cCsr KXt2YXIgZD1oLmdldChwKSxnPWUuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYm IWQucGxhY2VkT3JpZW50YXRpb24sdj1kLmhpZGRlbnx8IWQuY3Jvc3NUaWxl SUR8fGc/bnVsbDphW2QuY3Jvc3NUaWxlSURdO2lmKHYpe3ZhciBtPW5ldyB0 LlBvaW50KGQuYW5jaG9yWCxkLmFuY2hvclkpLHk9SnQobSxuP2w6cykseD0u NStvLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UveS5zaWduZWREaXN0YW5jZUZy b21DYW1lcmEqLjUsYj1pLmV2YWx1YXRlU2l6ZUZvckZlYXR1cmUoZS50ZXh0 U2l6ZURhdGEsdSxkKSp4L3QuT05FX0VNO24mJihiKj1lLnRpbGVQaXhlbFJh dGlvL2MpO2Zvcih2YXIgXz12LndpZHRoLHc9di5oZWlnaHQsaz12LnJhZGlh bE9mZnNldCxUPXYudGV4dEJveFNjYWxlLE09WXIodi5hbmNob3IsXyx3LGss VCxiKSxBPW4/SnQobS5hZGQoTSkscykucG9pbnQ6eS5wb2ludC5hZGQocj9N LnJvdGF0ZSgtby5hbmdsZSk6TSksUz1lLmFsbG93VmVydGljYWxQbGFjZW1l bnQmJmQucGxhY2VkT3JpZW50YXRpb249PT10LldyaXRpbmdNb2RlLnZlcnRp Y2FsP01hdGguUEkvMjowLEU9MDtFPGQubnVtR2x5cGhzO0UrKyl0LmFkZER5 bmFtaWNBdHRyaWJ1dGVzKGYsQSxTKX1lbHNlIGllKGQubnVtR2x5cGhzLGYp fWUudGV4dC5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyLnVwZGF0ZURhdGEo Zil9ZnVuY3Rpb24gWHIoZSl7dmFyIHI9ZS50ZXh0LnBsYWNlZFN5bWJvbEFy cmF5LG49ZS50ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheTtuLmNsZWFy KCk7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBpPXIuZ2V0KGEp O2lmKGkuaGlkZGVufHwhaS5wbGFjZWRPcmllbnRhdGlvbilpZShpLm51bUds eXBocyxuKTtlbHNlIGZvcih2YXIgbz1uZXcgdC5Qb2ludChpLmFuY2hvclgs aS5hbmNob3JZKSxzPWUuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmaS5wbGFj ZWRPcmllbnRhdGlvbj09PXQuV3JpdGluZ01vZGUudmVydGljYWw/TWF0aC5Q SS8yOjAsbD0wO2w8aS5udW1HbHlwaHM7bCsrKXQuYWRkRHluYW1pY0F0dHJp YnV0ZXMobixvLHMpfWUudGV4dC5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVy LnVwZGF0ZURhdGEobil9ZnVuY3Rpb24gWnIoZSxyLG4sYSxpLG8scyxsLGMs dSxoLGYscCl7Zm9yKHZhciBkLGcsdj1lLmNvbnRleHQsbT12LmdsLHk9ZS50 cmFuc2Zvcm0seD0ibWFwIj09PWwsYj0ibWFwIj09PWMsXz14JiYicG9pbnQi IT09bi5sYXlvdXQuZ2V0KCJzeW1ib2wtcGxhY2VtZW50Iiksdz14JiYhYiYm IV8saz12b2lkIDAhPT1uLmxheW91dC5nZXQoInN5bWJvbC1zb3J0LWtleSIp LmNvbnN0YW50T3IoMSksVD1lLmRlcHRoTW9kZUZvclN1YmxheWVyKDAsTXQu UmVhZE9ubHkpLE09bi5sYXlvdXQuZ2V0KCJ0ZXh0LXZhcmlhYmxlLWFuY2hv ciIpLEE9W10sUz0wLEU9YTtTPEUubGVuZ3RoO1MrPTEpe3ZhciBMPUVbU10s Qz1yLmdldFRpbGUoTCksUD1DLmdldEJ1Y2tldChuKTtpZihQKXt2YXIgTz1p P1AudGV4dDpQLmljb247aWYoTyYmTy5zZWdtZW50cy5nZXQoKS5sZW5ndGgp e3ZhciB6PU8ucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChuLmlkKSxJPWl8 fFAuc2RmSWNvbnMsRD1pP1AudGV4dFNpemVEYXRhOlAuaWNvblNpemVEYXRh O2R8fChkPWUudXNlUHJvZ3JhbShJPyJzeW1ib2xTREYiOiJzeW1ib2xJY29u Iix6KSxnPXQuZXZhbHVhdGVTaXplRm9yWm9vbShELHkuem9vbSkpLHYuYWN0 aXZlVGV4dHVyZS5zZXQobS5URVhUVVJFMCk7dmFyIFI9dm9pZCAwLEY9dm9p ZCAwLEI9dm9pZCAwO2lmKGkpRj1DLmdseXBoQXRsYXNUZXh0dXJlLEI9bS5M SU5FQVIsUj1DLmdseXBoQXRsYXNUZXh0dXJlLnNpemU7ZWxzZXt2YXIgTj0x IT09bi5sYXlvdXQuZ2V0KCJpY29uLXNpemUiKS5jb25zdGFudE9yKDApfHxQ Lmljb25zTmVlZExpbmVhcixqPWJ8fDAhPT15LnBpdGNoO0Y9Qy5pbWFnZUF0 bGFzVGV4dHVyZSxCPUl8fGUub3B0aW9ucy5yb3RhdGluZ3x8ZS5vcHRpb25z Lnpvb21pbmd8fE58fGo/bS5MSU5FQVI6bS5ORUFSRVNULFI9Qy5pbWFnZUF0 bGFzVGV4dHVyZS5zaXplfXZhciBWPWNlKEMsMSxlLnRyYW5zZm9ybS56b29t KSxVPVh0KEwucG9zTWF0cml4LGIseCxlLnRyYW5zZm9ybSxWKSxxPVp0KEwu cG9zTWF0cml4LGIseCxlLnRyYW5zZm9ybSxWKTtpZihfKVF0KFAsTC5wb3NN YXRyaXgsZSxpLFUscSxiLHUpO2Vsc2UgaWYoaSYmZyYmTSl7dmFyIEg9TWF0 aC5wb3coMix5Lnpvb20tQy50aWxlSUQub3ZlcnNjYWxlZFopO1dyKFAseCxi LHAsdC5zeW1ib2xTaXplLHksVSxMLnBvc01hdHJpeCxILGcpfWVsc2UgaSYm ZyYmUC5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZYcihQKTt2YXIgRz1lLnRy YW5zbGF0ZVBvc01hdHJpeChMLnBvc01hdHJpeCxDLG8scyksWT1ffHxpJiZN P0dyOlUsVz1lLnRyYW5zbGF0ZVBvc01hdHJpeChxLEMsbyxzLCEwKSxYPUkm JjAhPT1uLnBhaW50LmdldChpPyJ0ZXh0LWhhbG8td2lkdGgiOiJpY29uLWhh bG8td2lkdGgiKS5jb25zdGFudE9yKDEpLFo9e3Byb2dyYW06ZCxidWZmZXJz Ok8sdW5pZm9ybVZhbHVlczpJP0JyKEQua2luZCxnLHcsYixlLEcsWSxXLGks UiwhMCk6RnIoRC5raW5kLGcsdyxiLGUsRyxZLFcsaSxSKSxhdGxhc1RleHR1 cmU6RixhdGxhc0ludGVycG9sYXRpb246Qixpc1NERjpJLGhhc0hhbG86WH07 aWYoaylmb3IodmFyIEo9MCxLPU8uc2VnbWVudHMuZ2V0KCk7SjxLLmxlbmd0 aDtKKz0xKXt2YXIgUT1LW0pdO0EucHVzaCh7c2VnbWVudHM6bmV3IHQuU2Vn bWVudFZlY3RvcihbUV0pLHNvcnRLZXk6US5zb3J0S2V5LHN0YXRlOlp9KX1l bHNlIEEucHVzaCh7c2VnbWVudHM6Ty5zZWdtZW50cyxzb3J0S2V5OjAsc3Rh dGU6Wn0pfX19ayYmQS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc29y dEtleS1lLnNvcnRLZXl9KTtmb3IodmFyICQ9MCx0dD1BOyQ8dHQubGVuZ3Ro OyQrPTEpe3ZhciBldD10dFskXSxydD1ldC5zdGF0ZTtpZihydC5hdGxhc1Rl eHR1cmUuYmluZChydC5hdGxhc0ludGVycG9sYXRpb24sbS5DTEFNUF9UT19F REdFKSxydC5pc1NERil7dmFyIG50PXJ0LnVuaWZvcm1WYWx1ZXM7cnQuaGFz SGFsbyYmKG50LnVfaXNfaGFsbz0xLEpyKHJ0LmJ1ZmZlcnMsZXQuc2VnbWVu dHMsbixlLHJ0LnByb2dyYW0sVCxoLGYsbnQpKSxudC51X2lzX2hhbG89MH1K cihydC5idWZmZXJzLGV0LnNlZ21lbnRzLG4sZSxydC5wcm9ncmFtLFQsaCxm LHJ0LnVuaWZvcm1WYWx1ZXMpfX1mdW5jdGlvbiBKcih0LGUscixuLGEsaSxv LHMsbCl7dmFyIGM9bi5jb250ZXh0LHU9Yy5nbDthLmRyYXcoYyx1LlRSSUFO R0xFUyxpLG8scyxFdC5kaXNhYmxlZCxsLHIuaWQsdC5sYXlvdXRWZXJ0ZXhC dWZmZXIsdC5pbmRleEJ1ZmZlcixlLHIucGFpbnQsbi50cmFuc2Zvcm0uem9v bSx0LnByb2dyYW1Db25maWd1cmF0aW9ucy5nZXQoci5pZCksdC5keW5hbWlj TGF5b3V0VmVydGV4QnVmZmVyLHQub3BhY2l0eVZlcnRleEJ1ZmZlcil9ZnVu Y3Rpb24gS3IodCxlLHIsbixhLGksbyl7dmFyIHMsbCxjLHUsaCxmPXQuY29u dGV4dC5nbCxwPXIucGFpbnQuZ2V0KCJmaWxsLXBhdHRlcm4iKSxkPXAmJnAu Y29uc3RhbnRPcigxKSxnPXIuZ2V0Q3Jvc3NmYWRlUGFyYW1ldGVycygpO28/ KGw9ZCYmIXIuZ2V0UGFpbnRQcm9wZXJ0eSgiZmlsbC1vdXRsaW5lLWNvbG9y Iik/ImZpbGxPdXRsaW5lUGF0dGVybiI6ImZpbGxPdXRsaW5lIixzPWYuTElO RVMpOihsPWQ/ImZpbGxQYXR0ZXJuIjoiZmlsbCIscz1mLlRSSUFOR0xFUyk7 Zm9yKHZhciB2PTAsbT1uO3Y8bS5sZW5ndGg7dis9MSl7dmFyIHk9bVt2XSx4 PWUuZ2V0VGlsZSh5KTtpZighZHx8eC5wYXR0ZXJuc0xvYWRlZCgpKXt2YXIg Yj14LmdldEJ1Y2tldChyKTtpZihiKXt2YXIgXz1iLnByb2dyYW1Db25maWd1 cmF0aW9ucy5nZXQoci5pZCksdz10LnVzZVByb2dyYW0obCxfKTtkJiYodC5j b250ZXh0LmFjdGl2ZVRleHR1cmUuc2V0KGYuVEVYVFVSRTApLHguaW1hZ2VB dGxhc1RleHR1cmUuYmluZChmLkxJTkVBUixmLkNMQU1QX1RPX0VER0UpLF8u dXBkYXRlUGF0dGVyblBhaW50QnVmZmVycyhnKSk7dmFyIGs9cC5jb25zdGFu dE9yKG51bGwpO2lmKGsmJnguaW1hZ2VBdGxhcyl7dmFyIFQ9eC5pbWFnZUF0 bGFzLnBhdHRlcm5Qb3NpdGlvbnNbay50b10sTT14LmltYWdlQXRsYXMucGF0 dGVyblBvc2l0aW9uc1trLmZyb21dO1QmJk0mJl8uc2V0Q29uc3RhbnRQYXR0 ZXJuUG9zaXRpb25zKFQsTSl9dmFyIEE9dC50cmFuc2xhdGVQb3NNYXRyaXgo eS5wb3NNYXRyaXgseCxyLnBhaW50LmdldCgiZmlsbC10cmFuc2xhdGUiKSxy LnBhaW50LmdldCgiZmlsbC10cmFuc2xhdGUtYW5jaG9yIikpO2lmKG8pe3U9 Yi5pbmRleEJ1ZmZlcjIsaD1iLnNlZ21lbnRzMjt2YXIgUz1bZi5kcmF3aW5n QnVmZmVyV2lkdGgsZi5kcmF3aW5nQnVmZmVySGVpZ2h0XTtjPSJmaWxsT3V0 bGluZVBhdHRlcm4iPT09bCYmZD94cihBLHQsZyx4LFMpOnlyKEEsUyl9ZWxz ZSB1PWIuaW5kZXhCdWZmZXIsaD1iLnNlZ21lbnRzLGM9ZD9tcihBLHQsZyx4 KTp2cihBKTt3LmRyYXcodC5jb250ZXh0LHMsYSx0LnN0ZW5jaWxNb2RlRm9y Q2xpcHBpbmcoeSksaSxFdC5kaXNhYmxlZCxjLHIuaWQsYi5sYXlvdXRWZXJ0 ZXhCdWZmZXIsdSxoLHIucGFpbnQsdC50cmFuc2Zvcm0uem9vbSxfKX19fX1m dW5jdGlvbiBRcih0LGUscixuLGEsaSxvKXtmb3IodmFyIHM9dC5jb250ZXh0 LGw9cy5nbCxjPXIucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi1wYXR0ZXJu IiksdT1jLmNvbnN0YW50T3IoMSksaD1yLmdldENyb3NzZmFkZVBhcmFtZXRl cnMoKSxmPXIucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi1vcGFjaXR5Iiks cD0wLGQ9bjtwPGQubGVuZ3RoO3ArPTEpe3ZhciBnPWRbcF0sdj1lLmdldFRp bGUoZyksbT12LmdldEJ1Y2tldChyKTtpZihtKXt2YXIgeT1tLnByb2dyYW1D b25maWd1cmF0aW9ucy5nZXQoci5pZCkseD10LnVzZVByb2dyYW0odT8iZmls bEV4dHJ1c2lvblBhdHRlcm4iOiJmaWxsRXh0cnVzaW9uIix5KTt1JiYodC5j b250ZXh0LmFjdGl2ZVRleHR1cmUuc2V0KGwuVEVYVFVSRTApLHYuaW1hZ2VB dGxhc1RleHR1cmUuYmluZChsLkxJTkVBUixsLkNMQU1QX1RPX0VER0UpLHku dXBkYXRlUGF0dGVyblBhaW50QnVmZmVycyhoKSk7dmFyIGI9Yy5jb25zdGFu dE9yKG51bGwpO2lmKGImJnYuaW1hZ2VBdGxhcyl7dmFyIF89di5pbWFnZUF0 bGFzLnBhdHRlcm5Qb3NpdGlvbnNbYi50b10sdz12LmltYWdlQXRsYXMucGF0 dGVyblBvc2l0aW9uc1tiLmZyb21dO18mJncmJnkuc2V0Q29uc3RhbnRQYXR0 ZXJuUG9zaXRpb25zKF8sdyl9dmFyIGs9dC50cmFuc2xhdGVQb3NNYXRyaXgo Zy5wb3NNYXRyaXgsdixyLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24tdHJh bnNsYXRlIiksci5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0 ZS1hbmNob3IiKSksVD1yLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24tdmVy dGljYWwtZ3JhZGllbnQiKSxNPXU/Z3Ioayx0LFQsZixnLGgsdik6ZHIoayx0 LFQsZik7eC5kcmF3KHMscy5nbC5UUklBTkdMRVMsYSxpLG8sRXQuYmFja0ND VyxNLHIuaWQsbS5sYXlvdXRWZXJ0ZXhCdWZmZXIsbS5pbmRleEJ1ZmZlcixt LnNlZ21lbnRzLHIucGFpbnQsdC50cmFuc2Zvcm0uem9vbSx5KX19fWZ1bmN0 aW9uICRyKHQsZSxyLG4sYSxpKXt2YXIgbz10LmNvbnRleHQscz1vLmdsLGw9 ZS5mYm87aWYobCl7dmFyIGM9dC51c2VQcm9ncmFtKCJoaWxsc2hhZGUiKTtv LmFjdGl2ZVRleHR1cmUuc2V0KHMuVEVYVFVSRTApLHMuYmluZFRleHR1cmUo cy5URVhUVVJFXzJELGwuY29sb3JBdHRhY2htZW50LmdldCgpKTt2YXIgdT1B cih0LGUscik7ZS5tYXNrZWRCb3VuZHNCdWZmZXImJmUubWFza2VkSW5kZXhC dWZmZXImJmUuc2VnbWVudHM/Yy5kcmF3KG8scy5UUklBTkdMRVMsbixhLGks RXQuZGlzYWJsZWQsdSxyLmlkLGUubWFza2VkQm91bmRzQnVmZmVyLGUubWFz a2VkSW5kZXhCdWZmZXIsZS5zZWdtZW50cyk6Yy5kcmF3KG8scy5UUklBTkdM RVMsbixhLGksRXQuZGlzYWJsZWQsdSxyLmlkLHQucmFzdGVyQm91bmRzQnVm ZmVyLHQucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsdC5yYXN0ZXJCb3VuZHNT ZWdtZW50cyl9fWZ1bmN0aW9uIHRuKGUscixuLGEsaSxvLHMpe3ZhciBsPWUu Y29udGV4dCxjPWwuZ2w7aWYoci5kZW0mJnIuZGVtLmRhdGEpe3ZhciB1PXIu ZGVtLmRpbSxoPXIuZGVtLnN0cmlkZSxmPXIuZGVtLmdldFBpeGVscygpO2lm KGwuYWN0aXZlVGV4dHVyZS5zZXQoYy5URVhUVVJFMSksbC5waXhlbFN0b3Jl VW5wYWNrUHJlbXVsdGlwbHlBbHBoYS5zZXQoITEpLHIuZGVtVGV4dHVyZT1y LmRlbVRleHR1cmV8fGUuZ2V0VGlsZVRleHR1cmUoaCksci5kZW1UZXh0dXJl KXt2YXIgcD1yLmRlbVRleHR1cmU7cC51cGRhdGUoZix7cHJlbXVsdGlwbHk6 ITF9KSxwLmJpbmQoYy5ORUFSRVNULGMuQ0xBTVBfVE9fRURHRSl9ZWxzZSBy LmRlbVRleHR1cmU9bmV3IHQuVGV4dHVyZShsLGYsYy5SR0JBLHtwcmVtdWx0 aXBseTohMX0pLHIuZGVtVGV4dHVyZS5iaW5kKGMuTkVBUkVTVCxjLkNMQU1Q X1RPX0VER0UpO2wuYWN0aXZlVGV4dHVyZS5zZXQoYy5URVhUVVJFMCk7dmFy IGQ9ci5mYm87aWYoIWQpe3ZhciBnPW5ldyB0LlRleHR1cmUobCx7d2lkdGg6 dSxoZWlnaHQ6dSxkYXRhOm51bGx9LGMuUkdCQSk7Zy5iaW5kKGMuTElORUFS LGMuQ0xBTVBfVE9fRURHRSksKGQ9ci5mYm89bC5jcmVhdGVGcmFtZWJ1ZmZl cih1LHUpKS5jb2xvckF0dGFjaG1lbnQuc2V0KGcudGV4dHVyZSl9bC5iaW5k RnJhbWVidWZmZXIuc2V0KGQuZnJhbWVidWZmZXIpLGwudmlld3BvcnQuc2V0 KFswLDAsdSx1XSksZS51c2VQcm9ncmFtKCJoaWxsc2hhZGVQcmVwYXJlIiku ZHJhdyhsLGMuVFJJQU5HTEVTLGksbyxzLEV0LmRpc2FibGVkLFNyKHIsYSks bi5pZCxlLnJhc3RlckJvdW5kc0J1ZmZlcixlLnF1YWRUcmlhbmdsZUluZGV4 QnVmZmVyLGUucmFzdGVyQm91bmRzU2VnbWVudHMpLHIubmVlZHNIaWxsc2hh ZGVQcmVwYXJlPSExfX1mdW5jdGlvbiBlbihlLHIsbixhLGkpe3ZhciBvPWEu cGFpbnQuZ2V0KCJyYXN0ZXItZmFkZS1kdXJhdGlvbiIpO2lmKG8+MCl7dmFy IHM9dC5icm93c2VyLm5vdygpLGw9KHMtZS50aW1lQWRkZWQpL28sYz1yPyhz LXIudGltZUFkZGVkKS9vOi0xLHU9bi5nZXRTb3VyY2UoKSxoPWkuY292ZXJp bmdab29tTGV2ZWwoe3RpbGVTaXplOnUudGlsZVNpemUscm91bmRab29tOnUu cm91bmRab29tfSksZj0hcnx8TWF0aC5hYnMoci50aWxlSUQub3ZlcnNjYWxl ZFotaCk+TWF0aC5hYnMoZS50aWxlSUQub3ZlcnNjYWxlZFotaCkscD1mJiZl LnJlZnJlc2hlZFVwb25FeHBpcmF0aW9uPzE6dC5jbGFtcChmP2w6MS1jLDAs MSk7cmV0dXJuIGUucmVmcmVzaGVkVXBvbkV4cGlyYXRpb24mJmw+PTEmJihl LnJlZnJlc2hlZFVwb25FeHBpcmF0aW9uPSExKSxyP3tvcGFjaXR5OjEsbWl4 OjEtcH06e29wYWNpdHk6cCxtaXg6MH19cmV0dXJue29wYWNpdHk6MSxtaXg6 MH19ZnVuY3Rpb24gcm4oZSxyLG4pe3ZhciBhPWUuY29udGV4dCxpPWEuZ2ws bz1uLnBvc01hdHJpeCxzPWUudXNlUHJvZ3JhbSgiZGVidWciKSxsPU10LmRp c2FibGVkLGM9QXQuZGlzYWJsZWQsdT1lLmNvbG9yTW9kZUZvclJlbmRlclBh c3MoKSxoPSIkZGVidWciO3MuZHJhdyhhLGkuTElORV9TVFJJUCxsLGMsdSxF dC5kaXNhYmxlZCxrcihvLHQuQ29sb3IucmVkKSxoLGUuZGVidWdCdWZmZXIs ZS50aWxlQm9yZGVySW5kZXhCdWZmZXIsZS5kZWJ1Z1NlZ21lbnRzKTtmb3Io dmFyIGY9ci5nZXRUaWxlQnlJRChuLmtleSkubGF0ZXN0UmF3VGlsZURhdGEs cD1mJiZmLmJ5dGVMZW5ndGh8fDAsZD1NYXRoLmZsb29yKHAvMTAyNCksZz1y LmdldFRpbGUobikudGlsZVNpemUsdj01MTIvTWF0aC5taW4oZyw1MTIpLG09 ZnVuY3Rpb24odCxlLHIsbil7bj1ufHwxO3ZhciBhLGksbyxzLGwsYyx1LGgs Zj1bXTtmb3IoYT0wLGk9dC5sZW5ndGg7YTxpO2ErKylpZihsPW5uW3RbYV1d KXtmb3IoaD1udWxsLG89MCxzPWxbMV0ubGVuZ3RoO288cztvKz0yKS0xPT09 bFsxXVtvXSYmLTE9PT1sWzFdW28rMV0/aD1udWxsOihjPWUrbFsxXVtvXSpu LHU9ci1sWzFdW28rMV0qbixoJiZmLnB1c2goaC54LGgueSxjLHUpLGg9e3g6 Yyx5OnV9KTtlKz1sWzBdKm59cmV0dXJuIGZ9KG4udG9TdHJpbmcoKSsiICIr ZCsia2IiLDUwLDIwMCp2LDUqdikseT1uZXcgdC5TdHJ1Y3RBcnJheUxheW91 dDJpNCx4PW5ldyB0LlN0cnVjdEFycmF5TGF5b3V0MnVpNCxiPTA7YjxtLmxl bmd0aDtiKz0yKXkuZW1wbGFjZUJhY2sobVtiXSxtW2IrMV0pLHguZW1wbGFj ZUJhY2soYixiKzEpO2Zvcih2YXIgXz1hLmNyZWF0ZVZlcnRleEJ1ZmZlcih5 LEZlLm1lbWJlcnMpLHc9YS5jcmVhdGVJbmRleEJ1ZmZlcih4KSxrPXQuU2Vn bWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCx5Lmxlbmd0aC8yLHkubGVu Z3RoLzIpLFQ9dC5FWFRFTlQvKE1hdGgucG93KDIsZS50cmFuc2Zvcm0uem9v bS1uLm92ZXJzY2FsZWRaKSpnKnYpLE09W10sQT0tMTtBPD0xO0ErKylmb3Io dmFyIFM9LTE7Uzw9MSYmKDAhPT1BfHwwIT09Uyk7UysrKU0ucHVzaChbQSxT XSk7Zm9yKHZhciBFPTA7RTxNLmxlbmd0aDtFKyspe3ZhciBMPU1bRV07cy5k cmF3KGEsaS5MSU5FUyxsLGMsdSxFdC5kaXNhYmxlZCxrcih0LnRyYW5zbGF0 ZShbXSxvLFtUKkxbMF0sVCpMWzFdLDBdKSx0LkNvbG9yLndoaXRlKSxoLF8s dyxrKX1zLmRyYXcoYSxpLkxJTkVTLGwsYyx1LEV0LmRpc2FibGVkLGtyKG8s dC5Db2xvci5ibGFjayksaCxfLHcsayl9dmFyIG5uPXsiICI6WzE2LFtdXSwi ISI6WzEwLFs1LDIxLDUsNywtMSwtMSw1LDIsNCwxLDUsMCw2LDEsNSwyXV0s JyInOlsxNixbNCwyMSw0LDE0LC0xLC0xLDEyLDIxLDEyLDE0XV0sIiMiOlsy MSxbMTEsMjUsNCwtNywtMSwtMSwxNywyNSwxMCwtNywtMSwtMSw0LDEyLDE4 LDEyLC0xLC0xLDMsNiwxNyw2XV0sJDpbMjAsWzgsMjUsOCwtNCwtMSwtMSwx MiwyNSwxMiwtNCwtMSwtMSwxNywxOCwxNSwyMCwxMiwyMSw4LDIxLDUsMjAs MywxOCwzLDE2LDQsMTQsNSwxMyw3LDEyLDEzLDEwLDE1LDksMTYsOCwxNyw2 LDE3LDMsMTUsMSwxMiwwLDgsMCw1LDEsMywzXV0sIiUiOlsyNCxbMjEsMjEs MywwLC0xLC0xLDgsMjEsMTAsMTksMTAsMTcsOSwxNSw3LDE0LDUsMTQsMywx NiwzLDE4LDQsMjAsNiwyMSw4LDIxLDEwLDIwLDEzLDE5LDE2LDE5LDE5LDIw LDIxLDIxLC0xLC0xLDE3LDcsMTUsNiwxNCw0LDE0LDIsMTYsMCwxOCwwLDIw LDEsMjEsMywyMSw1LDE5LDcsMTcsN11dLCImIjpbMjYsWzIzLDEyLDIzLDEz LDIyLDE0LDIxLDE0LDIwLDEzLDE5LDExLDE3LDYsMTUsMywxMywxLDExLDAs NywwLDUsMSw0LDIsMyw0LDMsNiw0LDgsNSw5LDEyLDEzLDEzLDE0LDE0LDE2 LDE0LDE4LDEzLDIwLDExLDIxLDksMjAsOCwxOCw4LDE2LDksMTMsMTEsMTAs MTYsMywxOCwxLDIwLDAsMjIsMCwyMywxLDIzLDJdXSwiJyI6WzEwLFs1LDE5 LDQsMjAsNSwyMSw2LDIwLDYsMTgsNSwxNiw0LDE1XV0sIigiOlsxNCxbMTEs MjUsOSwyMyw3LDIwLDUsMTYsNCwxMSw0LDcsNSwyLDcsLTIsOSwtNSwxMSwt N11dLCIpIjpbMTQsWzMsMjUsNSwyMyw3LDIwLDksMTYsMTAsMTEsMTAsNyw5 LDIsNywtMiw1LC01LDMsLTddXSwiKiI6WzE2LFs4LDIxLDgsOSwtMSwtMSwz LDE4LDEzLDEyLC0xLC0xLDEzLDE4LDMsMTJdXSwiKyI6WzI2LFsxMywxOCwx MywwLC0xLC0xLDQsOSwyMiw5XV0sIiwiOlsxMCxbNiwxLDUsMCw0LDEsNSwy LDYsMSw2LC0xLDUsLTMsNCwtNF1dLCItIjpbMjYsWzQsOSwyMiw5XV0sIi4i OlsxMCxbNSwyLDQsMSw1LDAsNiwxLDUsMl1dLCIvIjpbMjIsWzIwLDI1LDIs LTddXSwwOlsyMCxbOSwyMSw2LDIwLDQsMTcsMywxMiwzLDksNCw0LDYsMSw5 LDAsMTEsMCwxNCwxLDE2LDQsMTcsOSwxNywxMiwxNiwxNywxNCwyMCwxMSwy MSw5LDIxXV0sMTpbMjAsWzYsMTcsOCwxOCwxMSwyMSwxMSwwXV0sMjpbMjAs WzQsMTYsNCwxNyw1LDE5LDYsMjAsOCwyMSwxMiwyMSwxNCwyMCwxNSwxOSwx NiwxNywxNiwxNSwxNSwxMywxMywxMCwzLDAsMTcsMF1dLDM6WzIwLFs1LDIx LDE2LDIxLDEwLDEzLDEzLDEzLDE1LDEyLDE2LDExLDE3LDgsMTcsNiwxNiwz LDE0LDEsMTEsMCw4LDAsNSwxLDQsMiwzLDRdXSw0OlsyMCxbMTMsMjEsMyw3 LDE4LDcsLTEsLTEsMTMsMjEsMTMsMF1dLDU6WzIwLFsxNSwyMSw1LDIxLDQs MTIsNSwxMyw4LDE0LDExLDE0LDE0LDEzLDE2LDExLDE3LDgsMTcsNiwxNiwz LDE0LDEsMTEsMCw4LDAsNSwxLDQsMiwzLDRdXSw2OlsyMCxbMTYsMTgsMTUs MjAsMTIsMjEsMTAsMjEsNywyMCw1LDE3LDQsMTIsNCw3LDUsMyw3LDEsMTAs MCwxMSwwLDE0LDEsMTYsMywxNyw2LDE3LDcsMTYsMTAsMTQsMTIsMTEsMTMs MTAsMTMsNywxMiw1LDEwLDQsN11dLDc6WzIwLFsxNywyMSw3LDAsLTEsLTEs MywyMSwxNywyMV1dLDg6WzIwLFs4LDIxLDUsMjAsNCwxOCw0LDE2LDUsMTQs NywxMywxMSwxMiwxNCwxMSwxNiw5LDE3LDcsMTcsNCwxNiwyLDE1LDEsMTIs MCw4LDAsNSwxLDQsMiwzLDQsMyw3LDQsOSw2LDExLDksMTIsMTMsMTMsMTUs MTQsMTYsMTYsMTYsMTgsMTUsMjAsMTIsMjEsOCwyMV1dLDk6WzIwLFsxNiwx NCwxNSwxMSwxMyw5LDEwLDgsOSw4LDYsOSw0LDExLDMsMTQsMywxNSw0LDE4 LDYsMjAsOSwyMSwxMCwyMSwxMywyMCwxNSwxOCwxNiwxNCwxNiw5LDE1LDQs MTMsMSwxMCwwLDgsMCw1LDEsNCwzXV0sIjoiOlsxMCxbNSwxNCw0LDEzLDUs MTIsNiwxMyw1LDE0LC0xLC0xLDUsMiw0LDEsNSwwLDYsMSw1LDJdXSwiOyI6 WzEwLFs1LDE0LDQsMTMsNSwxMiw2LDEzLDUsMTQsLTEsLTEsNiwxLDUsMCw0 LDEsNSwyLDYsMSw2LC0xLDUsLTMsNCwtNF1dLCI8IjpbMjQsWzIwLDE4LDQs OSwyMCwwXV0sIj0iOlsyNixbNCwxMiwyMiwxMiwtMSwtMSw0LDYsMjIsNl1d LCI+IjpbMjQsWzQsMTgsMjAsOSw0LDBdXSwiPyI6WzE4LFszLDE2LDMsMTcs NCwxOSw1LDIwLDcsMjEsMTEsMjEsMTMsMjAsMTQsMTksMTUsMTcsMTUsMTUs MTQsMTMsMTMsMTIsOSwxMCw5LDcsLTEsLTEsOSwyLDgsMSw5LDAsMTAsMSw5 LDJdXSwiQCI6WzI3LFsxOCwxMywxNywxNSwxNSwxNiwxMiwxNiwxMCwxNSw5 LDE0LDgsMTEsOCw4LDksNiwxMSw1LDE0LDUsMTYsNiwxNyw4LC0xLC0xLDEy LDE2LDEwLDE0LDksMTEsOSw4LDEwLDYsMTEsNSwtMSwtMSwxOCwxNiwxNyw4 LDE3LDYsMTksNSwyMSw1LDIzLDcsMjQsMTAsMjQsMTIsMjMsMTUsMjIsMTcs MjAsMTksMTgsMjAsMTUsMjEsMTIsMjEsOSwyMCw3LDE5LDUsMTcsNCwxNSwz LDEyLDMsOSw0LDYsNSw0LDcsMiw5LDEsMTIsMCwxNSwwLDE4LDEsMjAsMiwy MSwzLC0xLC0xLDE5LDE2LDE4LDgsMTgsNiwxOSw1XV0sQTpbMTgsWzksMjEs MSwwLC0xLC0xLDksMjEsMTcsMCwtMSwtMSw0LDcsMTQsN11dLEI6WzIxLFs0 LDIxLDQsMCwtMSwtMSw0LDIxLDEzLDIxLDE2LDIwLDE3LDE5LDE4LDE3LDE4 LDE1LDE3LDEzLDE2LDEyLDEzLDExLC0xLC0xLDQsMTEsMTMsMTEsMTYsMTAs MTcsOSwxOCw3LDE4LDQsMTcsMiwxNiwxLDEzLDAsNCwwXV0sQzpbMjEsWzE4 LDE2LDE3LDE4LDE1LDIwLDEzLDIxLDksMjEsNywyMCw1LDE4LDQsMTYsMywx MywzLDgsNCw1LDUsMyw3LDEsOSwwLDEzLDAsMTUsMSwxNywzLDE4LDVdXSxE OlsyMSxbNCwyMSw0LDAsLTEsLTEsNCwyMSwxMSwyMSwxNCwyMCwxNiwxOCwx NywxNiwxOCwxMywxOCw4LDE3LDUsMTYsMywxNCwxLDExLDAsNCwwXV0sRTpb MTksWzQsMjEsNCwwLC0xLC0xLDQsMjEsMTcsMjEsLTEsLTEsNCwxMSwxMiwx MSwtMSwtMSw0LDAsMTcsMF1dLEY6WzE4LFs0LDIxLDQsMCwtMSwtMSw0LDIx LDE3LDIxLC0xLC0xLDQsMTEsMTIsMTFdXSxHOlsyMSxbMTgsMTYsMTcsMTgs MTUsMjAsMTMsMjEsOSwyMSw3LDIwLDUsMTgsNCwxNiwzLDEzLDMsOCw0LDUs NSwzLDcsMSw5LDAsMTMsMCwxNSwxLDE3LDMsMTgsNSwxOCw4LC0xLC0xLDEz LDgsMTgsOF1dLEg6WzIyLFs0LDIxLDQsMCwtMSwtMSwxOCwyMSwxOCwwLC0x LC0xLDQsMTEsMTgsMTFdXSxJOls4LFs0LDIxLDQsMF1dLEo6WzE2LFsxMiwy MSwxMiw1LDExLDIsMTAsMSw4LDAsNiwwLDQsMSwzLDIsMiw1LDIsN11dLEs6 WzIxLFs0LDIxLDQsMCwtMSwtMSwxOCwyMSw0LDcsLTEsLTEsOSwxMiwxOCww XV0sTDpbMTcsWzQsMjEsNCwwLC0xLC0xLDQsMCwxNiwwXV0sTTpbMjQsWzQs MjEsNCwwLC0xLC0xLDQsMjEsMTIsMCwtMSwtMSwyMCwyMSwxMiwwLC0xLC0x LDIwLDIxLDIwLDBdXSxOOlsyMixbNCwyMSw0LDAsLTEsLTEsNCwyMSwxOCww LC0xLC0xLDE4LDIxLDE4LDBdXSxPOlsyMixbOSwyMSw3LDIwLDUsMTgsNCwx NiwzLDEzLDMsOCw0LDUsNSwzLDcsMSw5LDAsMTMsMCwxNSwxLDE3LDMsMTgs NSwxOSw4LDE5LDEzLDE4LDE2LDE3LDE4LDE1LDIwLDEzLDIxLDksMjFdXSxQ OlsyMSxbNCwyMSw0LDAsLTEsLTEsNCwyMSwxMywyMSwxNiwyMCwxNywxOSwx OCwxNywxOCwxNCwxNywxMiwxNiwxMSwxMywxMCw0LDEwXV0sUTpbMjIsWzks MjEsNywyMCw1LDE4LDQsMTYsMywxMywzLDgsNCw1LDUsMyw3LDEsOSwwLDEz LDAsMTUsMSwxNywzLDE4LDUsMTksOCwxOSwxMywxOCwxNiwxNywxOCwxNSwy MCwxMywyMSw5LDIxLC0xLC0xLDEyLDQsMTgsLTJdXSxSOlsyMSxbNCwyMSw0 LDAsLTEsLTEsNCwyMSwxMywyMSwxNiwyMCwxNywxOSwxOCwxNywxOCwxNSwx NywxMywxNiwxMiwxMywxMSw0LDExLC0xLC0xLDExLDExLDE4LDBdXSxTOlsy MCxbMTcsMTgsMTUsMjAsMTIsMjEsOCwyMSw1LDIwLDMsMTgsMywxNiw0LDE0 LDUsMTMsNywxMiwxMywxMCwxNSw5LDE2LDgsMTcsNiwxNywzLDE1LDEsMTIs MCw4LDAsNSwxLDMsM11dLFQ6WzE2LFs4LDIxLDgsMCwtMSwtMSwxLDIxLDE1 LDIxXV0sVTpbMjIsWzQsMjEsNCw2LDUsMyw3LDEsMTAsMCwxMiwwLDE1LDEs MTcsMywxOCw2LDE4LDIxXV0sVjpbMTgsWzEsMjEsOSwwLC0xLC0xLDE3LDIx LDksMF1dLFc6WzI0LFsyLDIxLDcsMCwtMSwtMSwxMiwyMSw3LDAsLTEsLTEs MTIsMjEsMTcsMCwtMSwtMSwyMiwyMSwxNywwXV0sWDpbMjAsWzMsMjEsMTcs MCwtMSwtMSwxNywyMSwzLDBdXSxZOlsxOCxbMSwyMSw5LDExLDksMCwtMSwt MSwxNywyMSw5LDExXV0sWjpbMjAsWzE3LDIxLDMsMCwtMSwtMSwzLDIxLDE3 LDIxLC0xLC0xLDMsMCwxNywwXV0sIlsiOlsxNCxbNCwyNSw0LC03LC0xLC0x LDUsMjUsNSwtNywtMSwtMSw0LDI1LDExLDI1LC0xLC0xLDQsLTcsMTEsLTdd XSwiXFwiOlsxNCxbMCwyMSwxNCwtM11dLCJdIjpbMTQsWzksMjUsOSwtNywt MSwtMSwxMCwyNSwxMCwtNywtMSwtMSwzLDI1LDEwLDI1LC0xLC0xLDMsLTcs MTAsLTddXSwiXiI6WzE2LFs2LDE1LDgsMTgsMTAsMTUsLTEsLTEsMywxMiw4 LDE3LDEzLDEyLC0xLC0xLDgsMTcsOCwwXV0sXzpbMTYsWzAsLTIsMTYsLTJd XSwiYCI6WzEwLFs2LDIxLDUsMjAsNCwxOCw0LDE2LDUsMTUsNiwxNiw1LDE3 XV0sYTpbMTksWzE1LDE0LDE1LDAsLTEsLTEsMTUsMTEsMTMsMTMsMTEsMTQs OCwxNCw2LDEzLDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwxMSwwLDEzLDEs MTUsM11dLGI6WzE5LFs0LDIxLDQsMCwtMSwtMSw0LDExLDYsMTMsOCwxNCwx MSwxNCwxMywxMywxNSwxMSwxNiw4LDE2LDYsMTUsMywxMywxLDExLDAsOCww LDYsMSw0LDNdXSxjOlsxOCxbMTUsMTEsMTMsMTMsMTEsMTQsOCwxNCw2LDEz LDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwxMSwwLDEzLDEsMTUsM11dLGQ6 WzE5LFsxNSwyMSwxNSwwLC0xLC0xLDE1LDExLDEzLDEzLDExLDE0LDgsMTQs NiwxMyw0LDExLDMsOCwzLDYsNCwzLDYsMSw4LDAsMTEsMCwxMywxLDE1LDNd XSxlOlsxOCxbMyw4LDE1LDgsMTUsMTAsMTQsMTIsMTMsMTMsMTEsMTQsOCwx NCw2LDEzLDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwxMSwwLDEzLDEsMTUs M11dLGY6WzEyLFsxMCwyMSw4LDIxLDYsMjAsNSwxNyw1LDAsLTEsLTEsMiwx NCw5LDE0XV0sZzpbMTksWzE1LDE0LDE1LC0yLDE0LC01LDEzLC02LDExLC03 LDgsLTcsNiwtNiwtMSwtMSwxNSwxMSwxMywxMywxMSwxNCw4LDE0LDYsMTMs NCwxMSwzLDgsMyw2LDQsMyw2LDEsOCwwLDExLDAsMTMsMSwxNSwzXV0saDpb MTksWzQsMjEsNCwwLC0xLC0xLDQsMTAsNywxMyw5LDE0LDEyLDE0LDE0LDEz LDE1LDEwLDE1LDBdXSxpOls4LFszLDIxLDQsMjAsNSwyMSw0LDIyLDMsMjEs LTEsLTEsNCwxNCw0LDBdXSxqOlsxMCxbNSwyMSw2LDIwLDcsMjEsNiwyMiw1 LDIxLC0xLC0xLDYsMTQsNiwtMyw1LC02LDMsLTcsMSwtN11dLGs6WzE3LFs0 LDIxLDQsMCwtMSwtMSwxNCwxNCw0LDQsLTEsLTEsOCw4LDE1LDBdXSxsOls4 LFs0LDIxLDQsMF1dLG06WzMwLFs0LDE0LDQsMCwtMSwtMSw0LDEwLDcsMTMs OSwxNCwxMiwxNCwxNCwxMywxNSwxMCwxNSwwLC0xLC0xLDE1LDEwLDE4LDEz LDIwLDE0LDIzLDE0LDI1LDEzLDI2LDEwLDI2LDBdXSxuOlsxOSxbNCwxNCw0 LDAsLTEsLTEsNCwxMCw3LDEzLDksMTQsMTIsMTQsMTQsMTMsMTUsMTAsMTUs MF1dLG86WzE5LFs4LDE0LDYsMTMsNCwxMSwzLDgsMyw2LDQsMyw2LDEsOCww LDExLDAsMTMsMSwxNSwzLDE2LDYsMTYsOCwxNSwxMSwxMywxMywxMSwxNCw4 LDE0XV0scDpbMTksWzQsMTQsNCwtNywtMSwtMSw0LDExLDYsMTMsOCwxNCwx MSwxNCwxMywxMywxNSwxMSwxNiw4LDE2LDYsMTUsMywxMywxLDExLDAsOCww LDYsMSw0LDNdXSxxOlsxOSxbMTUsMTQsMTUsLTcsLTEsLTEsMTUsMTEsMTMs MTMsMTEsMTQsOCwxNCw2LDEzLDQsMTEsMyw4LDMsNiw0LDMsNiwxLDgsMCwx MSwwLDEzLDEsMTUsM11dLHI6WzEzLFs0LDE0LDQsMCwtMSwtMSw0LDgsNSwx MSw3LDEzLDksMTQsMTIsMTRdXSxzOlsxNyxbMTQsMTEsMTMsMTMsMTAsMTQs NywxNCw0LDEzLDMsMTEsNCw5LDYsOCwxMSw3LDEzLDYsMTQsNCwxNCwzLDEz LDEsMTAsMCw3LDAsNCwxLDMsM11dLHQ6WzEyLFs1LDIxLDUsNCw2LDEsOCww LDEwLDAsLTEsLTEsMiwxNCw5LDE0XV0sdTpbMTksWzQsMTQsNCw0LDUsMSw3 LDAsMTAsMCwxMiwxLDE1LDQsLTEsLTEsMTUsMTQsMTUsMF1dLHY6WzE2LFsy LDE0LDgsMCwtMSwtMSwxNCwxNCw4LDBdXSx3OlsyMixbMywxNCw3LDAsLTEs LTEsMTEsMTQsNywwLC0xLC0xLDExLDE0LDE1LDAsLTEsLTEsMTksMTQsMTUs MF1dLHg6WzE3LFszLDE0LDE0LDAsLTEsLTEsMTQsMTQsMywwXV0seTpbMTYs WzIsMTQsOCwwLC0xLC0xLDE0LDE0LDgsMCw2LC00LDQsLTYsMiwtNywxLC03 XV0sejpbMTcsWzE0LDE0LDMsMCwtMSwtMSwzLDE0LDE0LDE0LC0xLC0xLDMs MCwxNCwwXV0sInsiOlsxNCxbOSwyNSw3LDI0LDYsMjMsNSwyMSw1LDE5LDYs MTcsNywxNiw4LDE0LDgsMTIsNiwxMCwtMSwtMSw3LDI0LDYsMjIsNiwyMCw3 LDE4LDgsMTcsOSwxNSw5LDEzLDgsMTEsNCw5LDgsNyw5LDUsOSwzLDgsMSw3 LDAsNiwtMiw2LC00LDcsLTYsLTEsLTEsNiw4LDgsNiw4LDQsNywyLDYsMSw1 LC0xLDUsLTMsNiwtNSw3LC02LDksLTddXSwifCI6WzgsWzQsMjUsNCwtN11d LCJ9IjpbMTQsWzUsMjUsNywyNCw4LDIzLDksMjEsOSwxOSw4LDE3LDcsMTYs NiwxNCw2LDEyLDgsMTAsLTEsLTEsNywyNCw4LDIyLDgsMjAsNywxOCw2LDE3 LDUsMTUsNSwxMyw2LDExLDEwLDksNiw3LDUsNSw1LDMsNiwxLDcsMCw4LC0y LDgsLTQsNywtNiwtMSwtMSw4LDgsNiw2LDYsNCw3LDIsOCwxLDksLTEsOSwt Myw4LC01LDcsLTYsNSwtN11dLCJ+IjpbMjQsWzMsNiwzLDgsNCwxMSw2LDEy LDgsMTIsMTAsMTEsMTQsOCwxNiw3LDE4LDcsMjAsOCwyMSwxMCwtMSwtMSwz LDgsNCwxMCw2LDExLDgsMTEsMTAsMTAsMTQsNywxNiw2LDE4LDYsMjAsNywy MSwxMCwyMSwxMl1dfSxhbj17c3ltYm9sOmZ1bmN0aW9uKHQsZSxyLG4sYSl7 aWYoInRyYW5zbHVjZW50Ij09PXQucmVuZGVyUGFzcyl7dmFyIGk9QXQuZGlz YWJsZWQsbz10LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKTswIT09ci5wYWlu dC5nZXQoImljb24tb3BhY2l0eSIpLmNvbnN0YW50T3IoMSkmJlpyKHQsZSxy LG4sITEsci5wYWludC5nZXQoImljb24tdHJhbnNsYXRlIiksci5wYWludC5n ZXQoImljb24tdHJhbnNsYXRlLWFuY2hvciIpLHIubGF5b3V0LmdldCgiaWNv bi1yb3RhdGlvbi1hbGlnbm1lbnQiKSxyLmxheW91dC5nZXQoImljb24tcGl0 Y2gtYWxpZ25tZW50Iiksci5sYXlvdXQuZ2V0KCJpY29uLWtlZXAtdXByaWdo dCIpLGksbyxhKSwwIT09ci5wYWludC5nZXQoInRleHQtb3BhY2l0eSIpLmNv bnN0YW50T3IoMSkmJlpyKHQsZSxyLG4sITAsci5wYWludC5nZXQoInRleHQt dHJhbnNsYXRlIiksci5wYWludC5nZXQoInRleHQtdHJhbnNsYXRlLWFuY2hv ciIpLHIubGF5b3V0LmdldCgidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiKSxy LmxheW91dC5nZXQoInRleHQtcGl0Y2gtYWxpZ25tZW50Iiksci5sYXlvdXQu Z2V0KCJ0ZXh0LWtlZXAtdXByaWdodCIpLGksbyxhKSxlLm1hcC5zaG93Q29s bGlzaW9uQm94ZXMmJmZ1bmN0aW9uKHQsZSxyLG4pe0hyKHQsZSxyLG4sITEp LEhyKHQsZSxyLG4sITApfSh0LGUscixuKX19LGNpcmNsZTpmdW5jdGlvbihl LHIsbixhKXtpZigidHJhbnNsdWNlbnQiPT09ZS5yZW5kZXJQYXNzKXt2YXIg aT1uLnBhaW50LmdldCgiY2lyY2xlLW9wYWNpdHkiKSxvPW4ucGFpbnQuZ2V0 KCJjaXJjbGUtc3Ryb2tlLXdpZHRoIikscz1uLnBhaW50LmdldCgiY2lyY2xl LXN0cm9rZS1vcGFjaXR5IiksbD12b2lkIDAhPT1uLmxheW91dC5nZXQoImNp cmNsZS1zb3J0LWtleSIpLmNvbnN0YW50T3IoMSk7aWYoMCE9PWkuY29uc3Rh bnRPcigxKXx8MCE9PW8uY29uc3RhbnRPcigxKSYmMCE9PXMuY29uc3RhbnRP cigxKSl7Zm9yKHZhciBjPWUuY29udGV4dCx1PWMuZ2wsaD1lLmRlcHRoTW9k ZUZvclN1YmxheWVyKDAsTXQuUmVhZE9ubHkpLGY9QXQuZGlzYWJsZWQscD1l LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSxkPVtdLGc9MDtnPGEubGVuZ3Ro O2crKyl7dmFyIHY9YVtnXSxtPXIuZ2V0VGlsZSh2KSx5PW0uZ2V0QnVja2V0 KG4pO2lmKHkpe3ZhciB4PXkucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChu LmlkKSxiPXtwcm9ncmFtQ29uZmlndXJhdGlvbjp4LHByb2dyYW06ZS51c2VQ cm9ncmFtKCJjaXJjbGUiLHgpLGxheW91dFZlcnRleEJ1ZmZlcjp5LmxheW91 dFZlcnRleEJ1ZmZlcixpbmRleEJ1ZmZlcjp5LmluZGV4QnVmZmVyLHVuaWZv cm1WYWx1ZXM6YnIoZSx2LG0sbil9O2lmKGwpZm9yKHZhciBfPTAsdz15LnNl Z21lbnRzLmdldCgpO188dy5sZW5ndGg7Xys9MSl7dmFyIGs9d1tfXTtkLnB1 c2goe3NlZ21lbnRzOm5ldyB0LlNlZ21lbnRWZWN0b3IoW2tdKSxzb3J0S2V5 Omsuc29ydEtleSxzdGF0ZTpifSl9ZWxzZSBkLnB1c2goe3NlZ21lbnRzOnku c2VnbWVudHMsc29ydEtleTowLHN0YXRlOmJ9KX19bCYmZC5zb3J0KGZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHQuc29ydEtleS1lLnNvcnRLZXl9KTtmb3IodmFy IFQ9MCxNPWQ7VDxNLmxlbmd0aDtUKz0xKXt2YXIgQT1NW1RdLFM9QS5zdGF0 ZSxFPVMucHJvZ3JhbUNvbmZpZ3VyYXRpb24sTD1TLnByb2dyYW0sQz1TLmxh eW91dFZlcnRleEJ1ZmZlcixQPVMuaW5kZXhCdWZmZXIsTz1TLnVuaWZvcm1W YWx1ZXMsej1BLnNlZ21lbnRzO0wuZHJhdyhjLHUuVFJJQU5HTEVTLGgsZixw LEV0LmRpc2FibGVkLE8sbi5pZCxDLFAseixuLnBhaW50LGUudHJhbnNmb3Jt Lnpvb20sRSl9fX19LGhlYXRtYXA6ZnVuY3Rpb24oZSxyLG4sYSl7aWYoMCE9 PW4ucGFpbnQuZ2V0KCJoZWF0bWFwLW9wYWNpdHkiKSlpZigib2Zmc2NyZWVu Ij09PWUucmVuZGVyUGFzcyl7dmFyIGk9ZS5jb250ZXh0LG89aS5nbCxzPWUu ZGVwdGhNb2RlRm9yU3VibGF5ZXIoMCxNdC5SZWFkT25seSksbD1BdC5kaXNh YmxlZCxjPW5ldyBTdChbby5PTkUsby5PTkVdLHQuQ29sb3IudHJhbnNwYXJl bnQsWyEwLCEwLCEwLCEwXSk7IWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10Lmds O3QuYWN0aXZlVGV4dHVyZS5zZXQobi5URVhUVVJFMSksdC52aWV3cG9ydC5z ZXQoWzAsMCxlLndpZHRoLzQsZS5oZWlnaHQvNF0pO3ZhciBhPXIuaGVhdG1h cEZibztpZihhKW4uYmluZFRleHR1cmUobi5URVhUVVJFXzJELGEuY29sb3JB dHRhY2htZW50LmdldCgpKSx0LmJpbmRGcmFtZWJ1ZmZlci5zZXQoYS5mcmFt ZWJ1ZmZlcik7ZWxzZXt2YXIgaT1uLmNyZWF0ZVRleHR1cmUoKTtuLmJpbmRU ZXh0dXJlKG4uVEVYVFVSRV8yRCxpKSxuLnRleFBhcmFtZXRlcmkobi5URVhU VVJFXzJELG4uVEVYVFVSRV9XUkFQX1Msbi5DTEFNUF9UT19FREdFKSxuLnRl eFBhcmFtZXRlcmkobi5URVhUVVJFXzJELG4uVEVYVFVSRV9XUkFQX1Qsbi5D TEFNUF9UT19FREdFKSxuLnRleFBhcmFtZXRlcmkobi5URVhUVVJFXzJELG4u VEVYVFVSRV9NSU5fRklMVEVSLG4uTElORUFSKSxuLnRleFBhcmFtZXRlcmko bi5URVhUVVJFXzJELG4uVEVYVFVSRV9NQUdfRklMVEVSLG4uTElORUFSKSxh PXIuaGVhdG1hcEZibz10LmNyZWF0ZUZyYW1lYnVmZmVyKGUud2lkdGgvNCxl LmhlaWdodC80KSxmdW5jdGlvbiB0KGUscixuLGEpe3ZhciBpPWUuZ2w7aS50 ZXhJbWFnZTJEKGkuVEVYVFVSRV8yRCwwLGkuUkdCQSxyLndpZHRoLzQsci5o ZWlnaHQvNCwwLGkuUkdCQSxlLmV4dFRleHR1cmVIYWxmRmxvYXQ/ZS5leHRU ZXh0dXJlSGFsZkZsb2F0LkhBTEZfRkxPQVRfT0VTOmkuVU5TSUdORURfQllU RSxudWxsKSxhLmNvbG9yQXR0YWNobWVudC5zZXQobiksZS5leHRUZXh0dXJl SGFsZkZsb2F0JiZpLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoaS5GUkFNRUJV RkZFUikhPT1pLkZSQU1FQlVGRkVSX0NPTVBMRVRFJiYoZS5leHRUZXh0dXJl SGFsZkZsb2F0PW51bGwsYS5jb2xvckF0dGFjaG1lbnQuc2V0RGlydHkoKSx0 KGUscixuLGEpKX0odCxlLGksYSl9fShpLGUsbiksaS5jbGVhcih7Y29sb3I6 dC5Db2xvci50cmFuc3BhcmVudH0pO2Zvcih2YXIgdT0wO3U8YS5sZW5ndGg7 dSsrKXt2YXIgaD1hW3VdO2lmKCFyLmhhc1JlbmRlcmFibGVQYXJlbnQoaCkp e3ZhciBmPXIuZ2V0VGlsZShoKSxwPWYuZ2V0QnVja2V0KG4pO2lmKHApe3Zh ciBkPXAucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChuLmlkKSxnPWUudXNl UHJvZ3JhbSgiaGVhdG1hcCIsZCksdj1lLnRyYW5zZm9ybS56b29tO2cuZHJh dyhpLG8uVFJJQU5HTEVTLHMsbCxjLEV0LmRpc2FibGVkLE1yKGgucG9zTWF0 cml4LGYsdixuLnBhaW50LmdldCgiaGVhdG1hcC1pbnRlbnNpdHkiKSksbi5p ZCxwLmxheW91dFZlcnRleEJ1ZmZlcixwLmluZGV4QnVmZmVyLHAuc2VnbWVu dHMsbi5wYWludCxlLnRyYW5zZm9ybS56b29tLGQpfX19aS52aWV3cG9ydC5z ZXQoWzAsMCxlLndpZHRoLGUuaGVpZ2h0XSl9ZWxzZSJ0cmFuc2x1Y2VudCI9 PT1lLnJlbmRlclBhc3MmJihlLmNvbnRleHQuc2V0Q29sb3JNb2RlKGUuY29s b3JNb2RlRm9yUmVuZGVyUGFzcygpKSxmdW5jdGlvbihlLHIpe3ZhciBuPWUu Y29udGV4dCxhPW4uZ2wsaT1yLmhlYXRtYXBGYm87aWYoaSl7bi5hY3RpdmVU ZXh0dXJlLnNldChhLlRFWFRVUkUwKSxhLmJpbmRUZXh0dXJlKGEuVEVYVFVS RV8yRCxpLmNvbG9yQXR0YWNobWVudC5nZXQoKSksbi5hY3RpdmVUZXh0dXJl LnNldChhLlRFWFRVUkUxKTt2YXIgbz1yLmNvbG9yUmFtcFRleHR1cmU7b3x8 KG89ci5jb2xvclJhbXBUZXh0dXJlPW5ldyB0LlRleHR1cmUobixyLmNvbG9y UmFtcCxhLlJHQkEpKSxvLmJpbmQoYS5MSU5FQVIsYS5DTEFNUF9UT19FREdF KSxlLnVzZVByb2dyYW0oImhlYXRtYXBUZXh0dXJlIikuZHJhdyhuLGEuVFJJ QU5HTEVTLE10LmRpc2FibGVkLEF0LmRpc2FibGVkLGUuY29sb3JNb2RlRm9y UmVuZGVyUGFzcygpLEV0LmRpc2FibGVkLGZ1bmN0aW9uKGUscixuLGEpe3Zh ciBpPXQuY3JlYXRlKCk7dC5vcnRobyhpLDAsZS53aWR0aCxlLmhlaWdodCww LDAsMSk7dmFyIG89ZS5jb250ZXh0LmdsO3JldHVybnt1X21hdHJpeDppLHVf d29ybGQ6W28uZHJhd2luZ0J1ZmZlcldpZHRoLG8uZHJhd2luZ0J1ZmZlckhl aWdodF0sdV9pbWFnZTpuLHVfY29sb3JfcmFtcDphLHVfb3BhY2l0eTpyLnBh aW50LmdldCgiaGVhdG1hcC1vcGFjaXR5Iil9fShlLHIsMCwxKSxyLmlkLGUu dmlld3BvcnRCdWZmZXIsZS5xdWFkVHJpYW5nbGVJbmRleEJ1ZmZlcixlLnZp ZXdwb3J0U2VnbWVudHMsci5wYWludCxlLnRyYW5zZm9ybS56b29tKX19KGUs bikpfSxsaW5lOmZ1bmN0aW9uKGUscixuLGEpe2lmKCJ0cmFuc2x1Y2VudCI9 PT1lLnJlbmRlclBhc3Mpe3ZhciBpPW4ucGFpbnQuZ2V0KCJsaW5lLW9wYWNp dHkiKSxvPW4ucGFpbnQuZ2V0KCJsaW5lLXdpZHRoIik7aWYoMCE9PWkuY29u c3RhbnRPcigxKSYmMCE9PW8uY29uc3RhbnRPcigxKSl7dmFyIHM9ZS5kZXB0 aE1vZGVGb3JTdWJsYXllcigwLE10LlJlYWRPbmx5KSxsPWUuY29sb3JNb2Rl Rm9yUmVuZGVyUGFzcygpLGM9bi5wYWludC5nZXQoImxpbmUtZGFzaGFycmF5 IiksdT1uLnBhaW50LmdldCgibGluZS1wYXR0ZXJuIiksaD11LmNvbnN0YW50 T3IoMSksZj1uLnBhaW50LmdldCgibGluZS1ncmFkaWVudCIpLHA9bi5nZXRD cm9zc2ZhZGVQYXJhbWV0ZXJzKCksZD1jPyJsaW5lU0RGIjpoPyJsaW5lUGF0 dGVybiI6Zj8ibGluZUdyYWRpZW50IjoibGluZSIsZz1lLmNvbnRleHQsdj1n LmdsLG09ITA7aWYoZil7Zy5hY3RpdmVUZXh0dXJlLnNldCh2LlRFWFRVUkUw KTt2YXIgeT1uLmdyYWRpZW50VGV4dHVyZTtpZighbi5ncmFkaWVudClyZXR1 cm47eXx8KHk9bi5ncmFkaWVudFRleHR1cmU9bmV3IHQuVGV4dHVyZShnLG4u Z3JhZGllbnQsdi5SR0JBKSkseS5iaW5kKHYuTElORUFSLHYuQ0xBTVBfVE9f RURHRSl9Zm9yKHZhciB4PTAsYj1hO3g8Yi5sZW5ndGg7eCs9MSl7dmFyIF89 Ylt4XSx3PXIuZ2V0VGlsZShfKTtpZighaHx8dy5wYXR0ZXJuc0xvYWRlZCgp KXt2YXIgaz13LmdldEJ1Y2tldChuKTtpZihrKXt2YXIgVD1rLnByb2dyYW1D b25maWd1cmF0aW9ucy5nZXQobi5pZCksTT1lLmNvbnRleHQucHJvZ3JhbS5n ZXQoKSxBPWUudXNlUHJvZ3JhbShkLFQpLFM9bXx8QS5wcm9ncmFtIT09TSxF PXUuY29uc3RhbnRPcihudWxsKTtpZihFJiZ3LmltYWdlQXRsYXMpe3ZhciBM PXcuaW1hZ2VBdGxhcy5wYXR0ZXJuUG9zaXRpb25zW0UudG9dLEM9dy5pbWFn ZUF0bGFzLnBhdHRlcm5Qb3NpdGlvbnNbRS5mcm9tXTtMJiZDJiZULnNldENv bnN0YW50UGF0dGVyblBvc2l0aW9ucyhMLEMpfXZhciBQPWM/T3IoZSx3LG4s YyxwKTpoP1ByKGUsdyxuLHApOmY/Q3IoZSx3LG4pOkxyKGUsdyxuKTtjJiYo U3x8ZS5saW5lQXRsYXMuZGlydHkpPyhnLmFjdGl2ZVRleHR1cmUuc2V0KHYu VEVYVFVSRTApLGUubGluZUF0bGFzLmJpbmQoZykpOmgmJihnLmFjdGl2ZVRl eHR1cmUuc2V0KHYuVEVYVFVSRTApLHcuaW1hZ2VBdGxhc1RleHR1cmUuYmlu ZCh2LkxJTkVBUix2LkNMQU1QX1RPX0VER0UpLFQudXBkYXRlUGF0dGVyblBh aW50QnVmZmVycyhwKSksQS5kcmF3KGcsdi5UUklBTkdMRVMscyxlLnN0ZW5j aWxNb2RlRm9yQ2xpcHBpbmcoXyksbCxFdC5kaXNhYmxlZCxQLG4uaWQsay5s YXlvdXRWZXJ0ZXhCdWZmZXIsay5pbmRleEJ1ZmZlcixrLnNlZ21lbnRzLG4u cGFpbnQsZS50cmFuc2Zvcm0uem9vbSxUKSxtPSExfX19fX19LGZpbGw6ZnVu Y3Rpb24oZSxyLG4sYSl7dmFyIGk9bi5wYWludC5nZXQoImZpbGwtY29sb3Ii KSxvPW4ucGFpbnQuZ2V0KCJmaWxsLW9wYWNpdHkiKTtpZigwIT09by5jb25z dGFudE9yKDEpKXt2YXIgcz1lLmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSxs PW4ucGFpbnQuZ2V0KCJmaWxsLXBhdHRlcm4iKSxjPWUub3BhcXVlUGFzc0Vu YWJsZWRGb3JMYXllcigpJiYhbC5jb25zdGFudE9yKDEpJiYxPT09aS5jb25z dGFudE9yKHQuQ29sb3IudHJhbnNwYXJlbnQpLmEmJjE9PT1vLmNvbnN0YW50 T3IoMCk/Im9wYXF1ZSI6InRyYW5zbHVjZW50IjtpZihlLnJlbmRlclBhc3M9 PT1jKXt2YXIgdT1lLmRlcHRoTW9kZUZvclN1YmxheWVyKDEsIm9wYXF1ZSI9 PT1lLnJlbmRlclBhc3M/TXQuUmVhZFdyaXRlOk10LlJlYWRPbmx5KTtLcihl LHIsbixhLHUscywhMSl9aWYoInRyYW5zbHVjZW50Ij09PWUucmVuZGVyUGFz cyYmbi5wYWludC5nZXQoImZpbGwtYW50aWFsaWFzIikpe3ZhciBoPWUuZGVw dGhNb2RlRm9yU3VibGF5ZXIobi5nZXRQYWludFByb3BlcnR5KCJmaWxsLW91 dGxpbmUtY29sb3IiKT8yOjAsTXQuUmVhZE9ubHkpO0tyKGUscixuLGEsaCxz LCEwKX19fSwiZmlsbC1leHRydXNpb24iOmZ1bmN0aW9uKHQsZSxyLG4pe3Zh ciBhPXIucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi1vcGFjaXR5Iik7aWYo MCE9PWEmJiJ0cmFuc2x1Y2VudCI9PT10LnJlbmRlclBhc3Mpe3ZhciBpPW5l dyBNdCh0LmNvbnRleHQuZ2wuTEVRVUFMLE10LlJlYWRXcml0ZSx0LmRlcHRo UmFuZ2VGb3IzRCk7aWYoMSE9PWF8fHIucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1 c2lvbi1wYXR0ZXJuIikuY29uc3RhbnRPcigxKSlRcih0LGUscixuLGksQXQu ZGlzYWJsZWQsU3QuZGlzYWJsZWQpLFFyKHQsZSxyLG4saSx0LnN0ZW5jaWxN b2RlRm9yM0QoKSx0LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSk7ZWxzZXt2 YXIgbz10LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKTtRcih0LGUscixuLGks QXQuZGlzYWJsZWQsbyl9fX0saGlsbHNoYWRlOmZ1bmN0aW9uKHQsZSxyLG4p e2lmKCJvZmZzY3JlZW4iPT09dC5yZW5kZXJQYXNzfHwidHJhbnNsdWNlbnQi PT09dC5yZW5kZXJQYXNzKXtmb3IodmFyIGE9dC5jb250ZXh0LGk9ZS5nZXRT b3VyY2UoKS5tYXh6b29tLG89dC5kZXB0aE1vZGVGb3JTdWJsYXllcigwLE10 LlJlYWRPbmx5KSxzPUF0LmRpc2FibGVkLGw9dC5jb2xvck1vZGVGb3JSZW5k ZXJQYXNzKCksYz0wLHU9bjtjPHUubGVuZ3RoO2MrPTEpe3ZhciBoPXVbY10s Zj1lLmdldFRpbGUoaCk7Zi5uZWVkc0hpbGxzaGFkZVByZXBhcmUmJiJvZmZz Y3JlZW4iPT09dC5yZW5kZXJQYXNzP3RuKHQsZixyLGksbyxzLGwpOiJ0cmFu c2x1Y2VudCI9PT10LnJlbmRlclBhc3MmJiRyKHQsZixyLG8scyxsKX1hLnZp ZXdwb3J0LnNldChbMCwwLHQud2lkdGgsdC5oZWlnaHRdKX19LHJhc3Rlcjpm dW5jdGlvbih0LGUscixuKXtpZigidHJhbnNsdWNlbnQiPT09dC5yZW5kZXJQ YXNzJiYwIT09ci5wYWludC5nZXQoInJhc3Rlci1vcGFjaXR5IikpZm9yKHZh ciBhPXQuY29udGV4dCxpPWEuZ2wsbz1lLmdldFNvdXJjZSgpLHM9dC51c2VQ cm9ncmFtKCJyYXN0ZXIiKSxsPUF0LmRpc2FibGVkLGM9dC5jb2xvck1vZGVG b3JSZW5kZXJQYXNzKCksdT1uLmxlbmd0aCYmblswXS5vdmVyc2NhbGVkWixo PSF0Lm9wdGlvbnMubW92aW5nLGY9MCxwPW47ZjxwLmxlbmd0aDtmKz0xKXt2 YXIgZD1wW2ZdLGc9dC5kZXB0aE1vZGVGb3JTdWJsYXllcihkLm92ZXJzY2Fs ZWRaLXUsMT09PXIucGFpbnQuZ2V0KCJyYXN0ZXItb3BhY2l0eSIpP010LlJl YWRXcml0ZTpNdC5SZWFkT25seSxpLkxFU1MpLHY9ZS5nZXRUaWxlKGQpLG09 dC50cmFuc2Zvcm0uY2FsY3VsYXRlUG9zTWF0cml4KGQudG9VbndyYXBwZWQo KSxoKTt2LnJlZ2lzdGVyRmFkZUR1cmF0aW9uKHIucGFpbnQuZ2V0KCJyYXN0 ZXItZmFkZS1kdXJhdGlvbiIpKTt2YXIgeT1lLmZpbmRMb2FkZWRQYXJlbnQo ZCwwKSx4PWVuKHYseSxlLHIsdC50cmFuc2Zvcm0pLGI9dm9pZCAwLF89dm9p ZCAwLHc9Im5lYXJlc3QiPT09ci5wYWludC5nZXQoInJhc3Rlci1yZXNhbXBs aW5nIik/aS5ORUFSRVNUOmkuTElORUFSO2EuYWN0aXZlVGV4dHVyZS5zZXQo aS5URVhUVVJFMCksdi50ZXh0dXJlLmJpbmQodyxpLkNMQU1QX1RPX0VER0Us aS5MSU5FQVJfTUlQTUFQX05FQVJFU1QpLGEuYWN0aXZlVGV4dHVyZS5zZXQo aS5URVhUVVJFMSkseT8oeS50ZXh0dXJlLmJpbmQodyxpLkNMQU1QX1RPX0VE R0UsaS5MSU5FQVJfTUlQTUFQX05FQVJFU1QpLGI9TWF0aC5wb3coMix5LnRp bGVJRC5vdmVyc2NhbGVkWi12LnRpbGVJRC5vdmVyc2NhbGVkWiksXz1bdi50 aWxlSUQuY2Fub25pY2FsLngqYiUxLHYudGlsZUlELmNhbm9uaWNhbC55KmIl MV0pOnYudGV4dHVyZS5iaW5kKHcsaS5DTEFNUF9UT19FREdFLGkuTElORUFS X01JUE1BUF9ORUFSRVNUKTt2YXIgaz1EcihtLF98fFswLDBdLGJ8fDEseCxy KTtvIGluc3RhbmNlb2YgUD9zLmRyYXcoYSxpLlRSSUFOR0xFUyxnLGwsYyxF dC5kaXNhYmxlZCxrLHIuaWQsby5ib3VuZHNCdWZmZXIsdC5xdWFkVHJpYW5n bGVJbmRleEJ1ZmZlcixvLmJvdW5kc1NlZ21lbnRzKTp2Lm1hc2tlZEJvdW5k c0J1ZmZlciYmdi5tYXNrZWRJbmRleEJ1ZmZlciYmdi5zZWdtZW50cz9zLmRy YXcoYSxpLlRSSUFOR0xFUyxnLGwsYyxFdC5kaXNhYmxlZCxrLHIuaWQsdi5t YXNrZWRCb3VuZHNCdWZmZXIsdi5tYXNrZWRJbmRleEJ1ZmZlcix2LnNlZ21l bnRzLHIucGFpbnQsdC50cmFuc2Zvcm0uem9vbSk6cy5kcmF3KGEsaS5UUklB TkdMRVMsZyxsLGMsRXQuZGlzYWJsZWQsayxyLmlkLHQucmFzdGVyQm91bmRz QnVmZmVyLHQucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsdC5yYXN0ZXJCb3Vu ZHNTZWdtZW50cyl9fSxiYWNrZ3JvdW5kOmZ1bmN0aW9uKHQsZSxyKXt2YXIg bj1yLnBhaW50LmdldCgiYmFja2dyb3VuZC1jb2xvciIpLGE9ci5wYWludC5n ZXQoImJhY2tncm91bmQtb3BhY2l0eSIpO2lmKDAhPT1hKXt2YXIgaT10LmNv bnRleHQsbz1pLmdsLHM9dC50cmFuc2Zvcm0sbD1zLnRpbGVTaXplLGM9ci5w YWludC5nZXQoImJhY2tncm91bmQtcGF0dGVybiIpO2lmKCF0LmlzUGF0dGVy bk1pc3NpbmcoYykpe3ZhciB1PSFjJiYxPT09bi5hJiYxPT09YSYmdC5vcGFx dWVQYXNzRW5hYmxlZEZvckxheWVyKCk/Im9wYXF1ZSI6InRyYW5zbHVjZW50 IjtpZih0LnJlbmRlclBhc3M9PT11KXt2YXIgaD1BdC5kaXNhYmxlZCxmPXQu ZGVwdGhNb2RlRm9yU3VibGF5ZXIoMCwib3BhcXVlIj09PXU/TXQuUmVhZFdy aXRlOk10LlJlYWRPbmx5KSxwPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygp LGQ9dC51c2VQcm9ncmFtKGM/ImJhY2tncm91bmRQYXR0ZXJuIjoiYmFja2dy b3VuZCIpLGc9cy5jb3ZlcmluZ1RpbGVzKHt0aWxlU2l6ZTpsfSk7YyYmKGku YWN0aXZlVGV4dHVyZS5zZXQoby5URVhUVVJFMCksdC5pbWFnZU1hbmFnZXIu YmluZCh0LmNvbnRleHQpKTtmb3IodmFyIHY9ci5nZXRDcm9zc2ZhZGVQYXJh bWV0ZXJzKCksbT0wLHk9ZzttPHkubGVuZ3RoO20rPTEpe3ZhciB4PXlbbV0s Yj10LnRyYW5zZm9ybS5jYWxjdWxhdGVQb3NNYXRyaXgoeC50b1Vud3JhcHBl ZCgpKSxfPWM/anIoYixhLHQsYyx7dGlsZUlEOngsdGlsZVNpemU6bH0sdik6 TnIoYixhLG4pO2QuZHJhdyhpLG8uVFJJQU5HTEVTLGYsaCxwLEV0LmRpc2Fi bGVkLF8sci5pZCx0LnRpbGVFeHRlbnRCdWZmZXIsdC5xdWFkVHJpYW5nbGVJ bmRleEJ1ZmZlcix0LnRpbGVFeHRlbnRTZWdtZW50cyl9fX19fSxkZWJ1Zzpm dW5jdGlvbih0LGUscil7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspcm4o dCxlLHJbbl0pfSxjdXN0b206ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuY29u dGV4dCxhPXIuaW1wbGVtZW50YXRpb247aWYoIm9mZnNjcmVlbiI9PT10LnJl bmRlclBhc3Mpe3ZhciBpPWEucHJlcmVuZGVyO2kmJih0LnNldEN1c3RvbUxh eWVyRGVmYXVsdHMoKSxuLnNldENvbG9yTW9kZSh0LmNvbG9yTW9kZUZvclJl bmRlclBhc3MoKSksaS5jYWxsKGEsbi5nbCx0LnRyYW5zZm9ybS5jdXN0b21M YXllck1hdHJpeCgpKSxuLnNldERpcnR5KCksdC5zZXRCYXNlU3RhdGUoKSl9 ZWxzZSBpZigidHJhbnNsdWNlbnQiPT09dC5yZW5kZXJQYXNzKXt0LnNldEN1 c3RvbUxheWVyRGVmYXVsdHMoKSxuLnNldENvbG9yTW9kZSh0LmNvbG9yTW9k ZUZvclJlbmRlclBhc3MoKSksbi5zZXRTdGVuY2lsTW9kZShBdC5kaXNhYmxl ZCk7dmFyIG89IjNkIj09PWEucmVuZGVyaW5nTW9kZT9uZXcgTXQodC5jb250 ZXh0LmdsLkxFUVVBTCxNdC5SZWFkV3JpdGUsdC5kZXB0aFJhbmdlRm9yM0Qp OnQuZGVwdGhNb2RlRm9yU3VibGF5ZXIoMCxNdC5SZWFkT25seSk7bi5zZXRE ZXB0aE1vZGUobyksYS5yZW5kZXIobi5nbCx0LnRyYW5zZm9ybS5jdXN0b21M YXllck1hdHJpeCgpKSxuLnNldERpcnR5KCksdC5zZXRCYXNlU3RhdGUoKSxu LmJpbmRGcmFtZWJ1ZmZlci5zZXQobnVsbCl9fX0sb249ZnVuY3Rpb24oZSxy KXt0aGlzLmNvbnRleHQ9bmV3IEx0KGUpLHRoaXMudHJhbnNmb3JtPXIsdGhp cy5fdGlsZVRleHR1cmVzPXt9LHRoaXMuc2V0dXAoKSx0aGlzLm51bVN1Ymxh eWVycz1DdC5tYXhVbmRlcnpvb21pbmcrQ3QubWF4T3Zlcnpvb21pbmcrMSx0 aGlzLmRlcHRoRXBzaWxvbj0xL01hdGgucG93KDIsMTYpLHRoaXMuZGVwdGhS Ym9OZWVkc0NsZWFyPSEwLHRoaXMuZW1wdHlQcm9ncmFtQ29uZmlndXJhdGlv bj1uZXcgdC5Qcm9ncmFtQ29uZmlndXJhdGlvbix0aGlzLmNyb3NzVGlsZVN5 bWJvbEluZGV4PW5ldyBPZX07ZnVuY3Rpb24gc24odCxlKXtpZih0Lnk+ZS55 KXt2YXIgcj10O3Q9ZSxlPXJ9cmV0dXJue3gwOnQueCx5MDp0LnkseDE6ZS54 LHkxOmUueSxkeDplLngtdC54LGR5OmUueS10Lnl9fWZ1bmN0aW9uIGxuKHQs ZSxyLG4sYSl7dmFyIGk9TWF0aC5tYXgocixNYXRoLmZsb29yKGUueTApKSxv PU1hdGgubWluKG4sTWF0aC5jZWlsKGUueTEpKTtpZih0LngwPT09ZS54MCYm dC55MD09PWUueTA/dC54MCtlLmR5L3QuZHkqdC5keDxlLngxOnQueDEtZS5k eS90LmR5KnQuZHg8ZS54MCl7dmFyIHM9dDt0PWUsZT1zfWZvcih2YXIgbD10 LmR4L3QuZHksYz1lLmR4L2UuZHksdT10LmR4PjAsaD1lLmR4PDAsZj1pO2Y8 bztmKyspe3ZhciBwPWwqTWF0aC5tYXgoMCxNYXRoLm1pbih0LmR5LGYrdS10 LnkwKSkrdC54MCxkPWMqTWF0aC5tYXgoMCxNYXRoLm1pbihlLmR5LGYraC1l LnkwKSkrZS54MDthKE1hdGguZmxvb3IoZCksTWF0aC5jZWlsKHApLGYpfX1m dW5jdGlvbiBjbih0LGUscixuLGEsaSl7dmFyIG8scz1zbih0LGUpLGw9c24o ZSxyKSxjPXNuKHIsdCk7cy5keT5sLmR5JiYobz1zLHM9bCxsPW8pLHMuZHk+ Yy5keSYmKG89cyxzPWMsYz1vKSxsLmR5PmMuZHkmJihvPWwsbD1jLGM9byks cy5keSYmbG4oYyxzLG4sYSxpKSxsLmR5JiZsbihjLGwsbixhLGkpfW9uLnBy b3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLmNvbnRl eHQuZ2w7aWYodGhpcy53aWR0aD1lKnQuYnJvd3Nlci5kZXZpY2VQaXhlbFJh dGlvLHRoaXMuaGVpZ2h0PXIqdC5icm93c2VyLmRldmljZVBpeGVsUmF0aW8s dGhpcy5jb250ZXh0LnZpZXdwb3J0LnNldChbMCwwLHRoaXMud2lkdGgsdGhp cy5oZWlnaHRdKSx0aGlzLnN0eWxlKWZvcih2YXIgYT0wLGk9dGhpcy5zdHls ZS5fb3JkZXI7YTxpLmxlbmd0aDthKz0xKXt2YXIgbz1pW2FdO3RoaXMuc3R5 bGUuX2xheWVyc1tvXS5yZXNpemUoKX10aGlzLmRlcHRoUmJvJiYobi5kZWxl dGVSZW5kZXJidWZmZXIodGhpcy5kZXB0aFJibyksdGhpcy5kZXB0aFJibz1u dWxsKX0sb24ucHJvdG90eXBlLnNldHVwPWZ1bmN0aW9uKCl7dmFyIGU9dGhp cy5jb250ZXh0LHI9bmV3IHQuU3RydWN0QXJyYXlMYXlvdXQyaTQ7ci5lbXBs YWNlQmFjaygwLDApLHIuZW1wbGFjZUJhY2sodC5FWFRFTlQsMCksci5lbXBs YWNlQmFjaygwLHQuRVhURU5UKSxyLmVtcGxhY2VCYWNrKHQuRVhURU5ULHQu RVhURU5UKSx0aGlzLnRpbGVFeHRlbnRCdWZmZXI9ZS5jcmVhdGVWZXJ0ZXhC dWZmZXIocixGZS5tZW1iZXJzKSx0aGlzLnRpbGVFeHRlbnRTZWdtZW50cz10 LlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsNCwyKTt2YXIgbj1u ZXcgdC5TdHJ1Y3RBcnJheUxheW91dDJpNDtuLmVtcGxhY2VCYWNrKDAsMCks bi5lbXBsYWNlQmFjayh0LkVYVEVOVCwwKSxuLmVtcGxhY2VCYWNrKDAsdC5F WFRFTlQpLG4uZW1wbGFjZUJhY2sodC5FWFRFTlQsdC5FWFRFTlQpLHRoaXMu ZGVidWdCdWZmZXI9ZS5jcmVhdGVWZXJ0ZXhCdWZmZXIobixGZS5tZW1iZXJz KSx0aGlzLmRlYnVnU2VnbWVudHM9dC5TZWdtZW50VmVjdG9yLnNpbXBsZVNl Z21lbnQoMCwwLDQsNSk7dmFyIGE9bmV3IHQuU3RydWN0QXJyYXlMYXlvdXQ0 aTg7YS5lbXBsYWNlQmFjaygwLDAsMCwwKSxhLmVtcGxhY2VCYWNrKHQuRVhU RU5ULDAsdC5FWFRFTlQsMCksYS5lbXBsYWNlQmFjaygwLHQuRVhURU5ULDAs dC5FWFRFTlQpLGEuZW1wbGFjZUJhY2sodC5FWFRFTlQsdC5FWFRFTlQsdC5F WFRFTlQsdC5FWFRFTlQpLHRoaXMucmFzdGVyQm91bmRzQnVmZmVyPWUuY3Jl YXRlVmVydGV4QnVmZmVyKGEsdC5yYXN0ZXJCb3VuZHNBdHRyaWJ1dGVzLm1l bWJlcnMpLHRoaXMucmFzdGVyQm91bmRzU2VnbWVudHM9dC5TZWdtZW50VmVj dG9yLnNpbXBsZVNlZ21lbnQoMCwwLDQsMik7dmFyIGk9bmV3IHQuU3RydWN0 QXJyYXlMYXlvdXQyaTQ7aS5lbXBsYWNlQmFjaygwLDApLGkuZW1wbGFjZUJh Y2soMSwwKSxpLmVtcGxhY2VCYWNrKDAsMSksaS5lbXBsYWNlQmFjaygxLDEp LHRoaXMudmlld3BvcnRCdWZmZXI9ZS5jcmVhdGVWZXJ0ZXhCdWZmZXIoaSxG ZS5tZW1iZXJzKSx0aGlzLnZpZXdwb3J0U2VnbWVudHM9dC5TZWdtZW50VmVj dG9yLnNpbXBsZVNlZ21lbnQoMCwwLDQsMik7dmFyIG89bmV3IHQuU3RydWN0 QXJyYXlMYXlvdXQxdWkyO28uZW1wbGFjZUJhY2soMCksby5lbXBsYWNlQmFj aygxKSxvLmVtcGxhY2VCYWNrKDMpLG8uZW1wbGFjZUJhY2soMiksby5lbXBs YWNlQmFjaygwKSx0aGlzLnRpbGVCb3JkZXJJbmRleEJ1ZmZlcj1lLmNyZWF0 ZUluZGV4QnVmZmVyKG8pO3ZhciBzPW5ldyB0LlN0cnVjdEFycmF5TGF5b3V0 M3VpNjtzLmVtcGxhY2VCYWNrKDAsMSwyKSxzLmVtcGxhY2VCYWNrKDIsMSwz KSx0aGlzLnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyPWUuY3JlYXRlSW5kZXhC dWZmZXIocyk7dmFyIGw9dGhpcy5jb250ZXh0LmdsO3RoaXMuc3RlbmNpbENs ZWFyTW9kZT1uZXcgQXQoe2Z1bmM6bC5BTFdBWVMsbWFzazowfSwwLDI1NSxs LlpFUk8sbC5aRVJPLGwuWkVSTyl9LG9uLnByb3RvdHlwZS5jbGVhclN0ZW5j aWw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnRleHQscj1lLmdsO3RoaXMu bmV4dFN0ZW5jaWxJRD0xLHRoaXMuY3VycmVudFN0ZW5jaWxTb3VyY2U9dm9p ZCAwO3ZhciBuPXQuY3JlYXRlKCk7dC5vcnRobyhuLDAsdGhpcy53aWR0aCx0 aGlzLmhlaWdodCwwLDAsMSksdC5zY2FsZShuLG4sW3IuZHJhd2luZ0J1ZmZl cldpZHRoLHIuZHJhd2luZ0J1ZmZlckhlaWdodCwwXSksdGhpcy51c2VQcm9n cmFtKCJjbGlwcGluZ01hc2siKS5kcmF3KGUsci5UUklBTkdMRVMsTXQuZGlz YWJsZWQsdGhpcy5zdGVuY2lsQ2xlYXJNb2RlLFN0LmRpc2FibGVkLEV0LmRp c2FibGVkLFRyKG4pLCIkY2xpcHBpbmciLHRoaXMudmlld3BvcnRCdWZmZXIs dGhpcy5xdWFkVHJpYW5nbGVJbmRleEJ1ZmZlcix0aGlzLnZpZXdwb3J0U2Vn bWVudHMpfSxvbi5wcm90b3R5cGUuX3JlbmRlclRpbGVDbGlwcGluZ01hc2tz PWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZSE9 PXQuc291cmNlJiZ0LmlzVGlsZUNsaXBwZWQoKSYmZSYmZS5sZW5ndGgpe3Ro aXMuY3VycmVudFN0ZW5jaWxTb3VyY2U9dC5zb3VyY2U7dmFyIHI9dGhpcy5j b250ZXh0LG49ci5nbDt0aGlzLm5leHRTdGVuY2lsSUQrZS5sZW5ndGg+MjU2 JiZ0aGlzLmNsZWFyU3RlbmNpbCgpLHIuc2V0Q29sb3JNb2RlKFN0LmRpc2Fi bGVkKSxyLnNldERlcHRoTW9kZShNdC5kaXNhYmxlZCk7dmFyIGE9dGhpcy51 c2VQcm9ncmFtKCJjbGlwcGluZ01hc2siKTt0aGlzLl90aWxlQ2xpcHBpbmdN YXNrSURzPXt9O2Zvcih2YXIgaT0wLG89ZTtpPG8ubGVuZ3RoO2krPTEpe3Zh ciBzPW9baV0sbD10aGlzLl90aWxlQ2xpcHBpbmdNYXNrSURzW3Mua2V5XT10 aGlzLm5leHRTdGVuY2lsSUQrKzthLmRyYXcocixuLlRSSUFOR0xFUyxNdC5k aXNhYmxlZCxuZXcgQXQoe2Z1bmM6bi5BTFdBWVMsbWFzazowfSxsLDI1NSxu LktFRVAsbi5LRUVQLG4uUkVQTEFDRSksU3QuZGlzYWJsZWQsRXQuZGlzYWJs ZWQsVHIocy5wb3NNYXRyaXgpLCIkY2xpcHBpbmciLHRoaXMudGlsZUV4dGVu dEJ1ZmZlcix0aGlzLnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyLHRoaXMudGls ZUV4dGVudFNlZ21lbnRzKX19fSxvbi5wcm90b3R5cGUuc3RlbmNpbE1vZGVG b3IzRD1mdW5jdGlvbigpe3RoaXMuY3VycmVudFN0ZW5jaWxTb3VyY2U9dm9p ZCAwLHRoaXMubmV4dFN0ZW5jaWxJRCsxPjI1NiYmdGhpcy5jbGVhclN0ZW5j aWwoKTt2YXIgdD10aGlzLm5leHRTdGVuY2lsSUQrKyxlPXRoaXMuY29udGV4 dC5nbDtyZXR1cm4gbmV3IEF0KHtmdW5jOmUuTk9URVFVQUwsbWFzazoyNTV9 LHQsMjU1LGUuS0VFUCxlLktFRVAsZS5SRVBMQUNFKX0sb24ucHJvdG90eXBl LnN0ZW5jaWxNb2RlRm9yQ2xpcHBpbmc9ZnVuY3Rpb24odCl7dmFyIGU9dGhp cy5jb250ZXh0LmdsO3JldHVybiBuZXcgQXQoe2Z1bmM6ZS5FUVVBTCxtYXNr OjI1NX0sdGhpcy5fdGlsZUNsaXBwaW5nTWFza0lEc1t0LmtleV0sMCxlLktF RVAsZS5LRUVQLGUuUkVQTEFDRSl9LG9uLnByb3RvdHlwZS5jb2xvck1vZGVG b3JSZW5kZXJQYXNzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb250ZXh0Lmds O3JldHVybiB0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3I/bmV3IFN0KFtl LkNPTlNUQU5UX0NPTE9SLGUuT05FXSxuZXcgdC5Db2xvcigxLzgsMS84LDEv OCwwKSxbITAsITAsITAsITBdKToib3BhcXVlIj09PXRoaXMucmVuZGVyUGFz cz9TdC51bmJsZW5kZWQ6U3QuYWxwaGFCbGVuZGVkfSxvbi5wcm90b3R5cGUu ZGVwdGhNb2RlRm9yU3VibGF5ZXI9ZnVuY3Rpb24odCxlLHIpe2lmKCF0aGlz Lm9wYXF1ZVBhc3NFbmFibGVkRm9yTGF5ZXIoKSlyZXR1cm4gTXQuZGlzYWJs ZWQ7dmFyIG49MS0oKDErdGhpcy5jdXJyZW50TGF5ZXIpKnRoaXMubnVtU3Vi bGF5ZXJzK3QpKnRoaXMuZGVwdGhFcHNpbG9uO3JldHVybiBuZXcgTXQocnx8 dGhpcy5jb250ZXh0LmdsLkxFUVVBTCxlLFtuLG5dKX0sb24ucHJvdG90eXBl Lm9wYXF1ZVBhc3NFbmFibGVkRm9yTGF5ZXI9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5jdXJyZW50TGF5ZXI8dGhpcy5vcGFxdWVQYXNzQ3V0b2ZmfSxvbi5w cm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUscil7dGhpcy5zdHlsZT1lLHRo aXMub3B0aW9ucz1yLHRoaXMubGluZUF0bGFzPWUubGluZUF0bGFzLHRoaXMu aW1hZ2VNYW5hZ2VyPWUuaW1hZ2VNYW5hZ2VyLHRoaXMuZ2x5cGhNYW5hZ2Vy PWUuZ2x5cGhNYW5hZ2VyLHRoaXMuc3ltYm9sRmFkZUNoYW5nZT1lLnBsYWNl bWVudC5zeW1ib2xGYWRlQ2hhbmdlKHQuYnJvd3Nlci5ub3coKSksdGhpcy5p bWFnZU1hbmFnZXIuYmVnaW5GcmFtZSgpO3ZhciBuPXRoaXMuc3R5bGUuX29y ZGVyLGE9dGhpcy5zdHlsZS5zb3VyY2VDYWNoZXM7Zm9yKHZhciBpIGluIGEp e3ZhciBvPWFbaV07by51c2VkJiZvLnByZXBhcmUodGhpcy5jb250ZXh0KX12 YXIgcz17fSxsPXt9LGM9e307Zm9yKHZhciB1IGluIGEpe3ZhciBoPWFbdV07 c1t1XT1oLmdldFZpc2libGVDb29yZGluYXRlcygpLGxbdV09c1t1XS5zbGlj ZSgpLnJldmVyc2UoKSxjW3VdPWguZ2V0VmlzaWJsZUNvb3JkaW5hdGVzKCEw KS5yZXZlcnNlKCl9Zm9yKHZhciBmIGluIGEpe3ZhciBwPWFbZl0sZD1wLmdl dFNvdXJjZSgpO2lmKCJyYXN0ZXIiPT09ZC50eXBlfHwicmFzdGVyLWRlbSI9 PT1kLnR5cGUpe2Zvcih2YXIgZz1bXSx2PTAsbT1zW2ZdO3Y8bS5sZW5ndGg7 dis9MSl7dmFyIHk9bVt2XTtnLnB1c2gocC5nZXRUaWxlKHkpKX1VcihnLHRo aXMuY29udGV4dCl9fXRoaXMub3BhcXVlUGFzc0N1dG9mZj0xLzA7Zm9yKHZh ciB4PTA7eDxuLmxlbmd0aDt4Kyspe3ZhciBiPW5beF07aWYodGhpcy5zdHls ZS5fbGF5ZXJzW2JdLmlzM0QoKSl7dGhpcy5vcGFxdWVQYXNzQ3V0b2ZmPXg7 YnJlYWt9fXRoaXMucmVuZGVyUGFzcz0ib2Zmc2NyZWVuIix0aGlzLmRlcHRo UmJvTmVlZHNDbGVhcj0hMDtmb3IodmFyIF89MCx3PW47Xzx3Lmxlbmd0aDtf Kz0xKXt2YXIgaz13W19dLFQ9dGhpcy5zdHlsZS5fbGF5ZXJzW2tdO2lmKFQu aGFzT2Zmc2NyZWVuUGFzcygpJiYhVC5pc0hpZGRlbih0aGlzLnRyYW5zZm9y bS56b29tKSl7dmFyIE09bFtULnNvdXJjZV07KCJjdXN0b20iPT09VC50eXBl fHxNLmxlbmd0aCkmJnRoaXMucmVuZGVyTGF5ZXIodGhpcyxhW1Quc291cmNl XSxULE0pfX1mb3IodGhpcy5jb250ZXh0LmJpbmRGcmFtZWJ1ZmZlci5zZXQo bnVsbCksdGhpcy5jb250ZXh0LmNsZWFyKHtjb2xvcjpyLnNob3dPdmVyZHJh d0luc3BlY3Rvcj90LkNvbG9yLmJsYWNrOnQuQ29sb3IudHJhbnNwYXJlbnQs ZGVwdGg6MX0pLHRoaXMuY2xlYXJTdGVuY2lsKCksdGhpcy5fc2hvd092ZXJk cmF3SW5zcGVjdG9yPXIuc2hvd092ZXJkcmF3SW5zcGVjdG9yLHRoaXMuZGVw dGhSYW5nZUZvcjNEPVswLDEtKGUuX29yZGVyLmxlbmd0aCsyKSp0aGlzLm51 bVN1YmxheWVycyp0aGlzLmRlcHRoRXBzaWxvbl0sdGhpcy5yZW5kZXJQYXNz PSJvcGFxdWUiLHRoaXMuY3VycmVudExheWVyPW4ubGVuZ3RoLTE7dGhpcy5j dXJyZW50TGF5ZXI+PTA7dGhpcy5jdXJyZW50TGF5ZXItLSl7dmFyIEE9dGhp cy5zdHlsZS5fbGF5ZXJzW25bdGhpcy5jdXJyZW50TGF5ZXJdXSxTPWFbQS5z b3VyY2VdLEU9c1tBLnNvdXJjZV07dGhpcy5fcmVuZGVyVGlsZUNsaXBwaW5n TWFza3MoQSxFKSx0aGlzLnJlbmRlckxheWVyKHRoaXMsUyxBLEUpfWZvcih0 aGlzLnJlbmRlclBhc3M9InRyYW5zbHVjZW50Iix0aGlzLmN1cnJlbnRMYXll cj0wO3RoaXMuY3VycmVudExheWVyPG4ubGVuZ3RoO3RoaXMuY3VycmVudExh eWVyKyspe3ZhciBMPXRoaXMuc3R5bGUuX2xheWVyc1tuW3RoaXMuY3VycmVu dExheWVyXV0sQz1hW0wuc291cmNlXSxQPSgic3ltYm9sIj09PUwudHlwZT9j OmwpW0wuc291cmNlXTt0aGlzLl9yZW5kZXJUaWxlQ2xpcHBpbmdNYXNrcyhM LHNbTC5zb3VyY2VdKSx0aGlzLnJlbmRlckxheWVyKHRoaXMsQyxMLFApfWlm KHRoaXMub3B0aW9ucy5zaG93VGlsZUJvdW5kYXJpZXMpZm9yKHZhciBPIGlu IGEpe2FuLmRlYnVnKHRoaXMsYVtPXSxzW09dKTticmVha310aGlzLmNvbnRl eHQuc2V0RGVmYXVsdCgpfSxvbi5wcm90b3R5cGUuc2V0dXBPZmZzY3JlZW5E ZXB0aFJlbmRlcmJ1ZmZlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY29udGV4 dDt0aGlzLmRlcHRoUmJvfHwodGhpcy5kZXB0aFJibz10LmNyZWF0ZVJlbmRl cmJ1ZmZlcih0LmdsLkRFUFRIX0NPTVBPTkVOVDE2LHRoaXMud2lkdGgsdGhp cy5oZWlnaHQpKX0sb24ucHJvdG90eXBlLnJlbmRlckxheWVyPWZ1bmN0aW9u KHQsZSxyLG4pe3IuaXNIaWRkZW4odGhpcy50cmFuc2Zvcm0uem9vbSl8fCgi YmFja2dyb3VuZCI9PT1yLnR5cGV8fCJjdXN0b20iPT09ci50eXBlfHxuLmxl bmd0aCkmJih0aGlzLmlkPXIuaWQsYW5bci50eXBlXSh0LGUscixuLHRoaXMu c3R5bGUucGxhY2VtZW50LnZhcmlhYmxlT2Zmc2V0cykpfSxvbi5wcm90b3R5 cGUudHJhbnNsYXRlUG9zTWF0cml4PWZ1bmN0aW9uKGUscixuLGEsaSl7aWYo IW5bMF0mJiFuWzFdKXJldHVybiBlO3ZhciBvPWk/Im1hcCI9PT1hP3RoaXMu dHJhbnNmb3JtLmFuZ2xlOjA6InZpZXdwb3J0Ij09PWE/LXRoaXMudHJhbnNm b3JtLmFuZ2xlOjA7aWYobyl7dmFyIHM9TWF0aC5zaW4obyksbD1NYXRoLmNv cyhvKTtuPVtuWzBdKmwtblsxXSpzLG5bMF0qcytuWzFdKmxdfXZhciBjPVtp P25bMF06Y2UocixuWzBdLHRoaXMudHJhbnNmb3JtLnpvb20pLGk/blsxXTpj ZShyLG5bMV0sdGhpcy50cmFuc2Zvcm0uem9vbSksMF0sdT1uZXcgRmxvYXQz MkFycmF5KDE2KTtyZXR1cm4gdC50cmFuc2xhdGUodSxlLGMpLHV9LG9uLnBy b3RvdHlwZS5zYXZlVGlsZVRleHR1cmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhp cy5fdGlsZVRleHR1cmVzW3Quc2l6ZVswXV07ZT9lLnB1c2godCk6dGhpcy5f dGlsZVRleHR1cmVzW3Quc2l6ZVswXV09W3RdfSxvbi5wcm90b3R5cGUuZ2V0 VGlsZVRleHR1cmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZVRleHR1 cmVzW3RdO3JldHVybiBlJiZlLmxlbmd0aD4wP2UucG9wKCk6bnVsbH0sb24u cHJvdG90eXBlLmlzUGF0dGVybk1pc3Npbmc9ZnVuY3Rpb24odCl7aWYoIXQp cmV0dXJuITE7dmFyIGU9dGhpcy5pbWFnZU1hbmFnZXIuZ2V0UGF0dGVybih0 LmZyb20pLHI9dGhpcy5pbWFnZU1hbmFnZXIuZ2V0UGF0dGVybih0LnRvKTty ZXR1cm4hZXx8IXJ9LG9uLnByb3RvdHlwZS51c2VQcm9ncmFtPWZ1bmN0aW9u KHQsZSl7dm9pZCAwPT09ZSYmKGU9dGhpcy5lbXB0eVByb2dyYW1Db25maWd1 cmF0aW9uKSx0aGlzLmNhY2hlPXRoaXMuY2FjaGV8fHt9O3ZhciByPSIiK3Qr KGUuY2FjaGVLZXl8fCIiKSsodGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9y PyIvb3ZlcmRyYXciOiIiKTtyZXR1cm4gdGhpcy5jYWNoZVtyXXx8KHRoaXMu Y2FjaGVbcl09bmV3IGZyKHRoaXMuY29udGV4dCx1clt0XSxlLFZyW3RdLHRo aXMuX3Nob3dPdmVyZHJhd0luc3BlY3RvcikpLHRoaXMuY2FjaGVbcl19LG9u LnByb3RvdHlwZS5zZXRDdXN0b21MYXllckRlZmF1bHRzPWZ1bmN0aW9uKCl7 dGhpcy5jb250ZXh0LnVuYmluZFZBTygpLHRoaXMuY29udGV4dC5jdWxsRmFj ZS5zZXREZWZhdWx0KCksdGhpcy5jb250ZXh0LmFjdGl2ZVRleHR1cmUuc2V0 RGVmYXVsdCgpLHRoaXMuY29udGV4dC5waXhlbFN0b3JlVW5wYWNrLnNldERl ZmF1bHQoKSx0aGlzLmNvbnRleHQucGl4ZWxTdG9yZVVucGFja1ByZW11bHRp cGx5QWxwaGEuc2V0RGVmYXVsdCgpLHRoaXMuY29udGV4dC5waXhlbFN0b3Jl VW5wYWNrRmxpcFkuc2V0RGVmYXVsdCgpfSxvbi5wcm90b3R5cGUuc2V0QmFz ZVN0YXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0LmdsO3RoaXMu Y29udGV4dC5jdWxsRmFjZS5zZXQoITEpLHRoaXMuY29udGV4dC52aWV3cG9y dC5zZXQoWzAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0XSksdGhpcy5jb250 ZXh0LmJsZW5kRXF1YXRpb24uc2V0KHQuRlVOQ19BREQpfTt2YXIgdW49ZnVu Y3Rpb24oZSxyLG4pe3RoaXMudGlsZVNpemU9NTEyLHRoaXMubWF4VmFsaWRM YXRpdHVkZT04NS4wNTExMjksdGhpcy5fcmVuZGVyV29ybGRDb3BpZXM9dm9p ZCAwPT09bnx8bix0aGlzLl9taW5ab29tPWV8fDAsdGhpcy5fbWF4Wm9vbT1y fHwyMix0aGlzLnNldE1heEJvdW5kcygpLHRoaXMud2lkdGg9MCx0aGlzLmhl aWdodD0wLHRoaXMuX2NlbnRlcj1uZXcgdC5MbmdMYXQoMCwwKSx0aGlzLnpv b209MCx0aGlzLmFuZ2xlPTAsdGhpcy5fZm92PS42NDM1MDExMDg3OTMyODQ0 LHRoaXMuX3BpdGNoPTAsdGhpcy5fdW5tb2RpZmllZD0hMCx0aGlzLl9wb3NN YXRyaXhDYWNoZT17fSx0aGlzLl9hbGlnbmVkUG9zTWF0cml4Q2FjaGU9e319 LGhuPXttaW5ab29tOntjb25maWd1cmFibGU6ITB9LG1heFpvb206e2NvbmZp Z3VyYWJsZTohMH0scmVuZGVyV29ybGRDb3BpZXM6e2NvbmZpZ3VyYWJsZToh MH0sd29ybGRTaXplOntjb25maWd1cmFibGU6ITB9LGNlbnRlclBvaW50Ontj b25maWd1cmFibGU6ITB9LHNpemU6e2NvbmZpZ3VyYWJsZTohMH0sYmVhcmlu Zzp7Y29uZmlndXJhYmxlOiEwfSxwaXRjaDp7Y29uZmlndXJhYmxlOiEwfSxm b3Y6e2NvbmZpZ3VyYWJsZTohMH0sem9vbTp7Y29uZmlndXJhYmxlOiEwfSxj ZW50ZXI6e2NvbmZpZ3VyYWJsZTohMH0sdW5tb2RpZmllZDp7Y29uZmlndXJh YmxlOiEwfSxwb2ludDp7Y29uZmlndXJhYmxlOiEwfX07dW4ucHJvdG90eXBl LmNsb25lPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHVuKHRoaXMuX21pblpvb20s dGhpcy5fbWF4Wm9vbSx0aGlzLl9yZW5kZXJXb3JsZENvcGllcyk7cmV0dXJu IHQudGlsZVNpemU9dGhpcy50aWxlU2l6ZSx0LmxhdFJhbmdlPXRoaXMubGF0 UmFuZ2UsdC53aWR0aD10aGlzLndpZHRoLHQuaGVpZ2h0PXRoaXMuaGVpZ2h0 LHQuX2NlbnRlcj10aGlzLl9jZW50ZXIsdC56b29tPXRoaXMuem9vbSx0LmFu Z2xlPXRoaXMuYW5nbGUsdC5fZm92PXRoaXMuX2Zvdix0Ll9waXRjaD10aGlz Ll9waXRjaCx0Ll91bm1vZGlmaWVkPXRoaXMuX3VubW9kaWZpZWQsdC5fY2Fs Y01hdHJpY2VzKCksdH0saG4ubWluWm9vbS5nZXQ9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fbWluWm9vbX0saG4ubWluWm9vbS5zZXQ9ZnVuY3Rpb24odCl7 dGhpcy5fbWluWm9vbSE9PXQmJih0aGlzLl9taW5ab29tPXQsdGhpcy56b29t PU1hdGgubWF4KHRoaXMuem9vbSx0KSl9LGhuLm1heFpvb20uZ2V0PWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX21heFpvb219LGhuLm1heFpvb20uc2V0PWZ1 bmN0aW9uKHQpe3RoaXMuX21heFpvb20hPT10JiYodGhpcy5fbWF4Wm9vbT10 LHRoaXMuem9vbT1NYXRoLm1pbih0aGlzLnpvb20sdCkpfSxobi5yZW5kZXJX b3JsZENvcGllcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVy V29ybGRDb3BpZXN9LGhuLnJlbmRlcldvcmxkQ29waWVzLnNldD1mdW5jdGlv bih0KXt2b2lkIDA9PT10P3Q9ITA6bnVsbD09PXQmJih0PSExKSx0aGlzLl9y ZW5kZXJXb3JsZENvcGllcz10fSxobi53b3JsZFNpemUuZ2V0PWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMudGlsZVNpemUqdGhpcy5zY2FsZX0saG4uY2VudGVy UG9pbnQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZS5fZGl2KDIp fSxobi5zaXplLmdldD1mdW5jdGlvbigpe3JldHVybiBuZXcgdC5Qb2ludCh0 aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX0saG4uYmVhcmluZy5nZXQ9ZnVuY3Rp b24oKXtyZXR1cm4tdGhpcy5hbmdsZS9NYXRoLlBJKjE4MH0saG4uYmVhcmlu Zy5zZXQ9ZnVuY3Rpb24oZSl7dmFyIHI9LXQud3JhcChlLC0xODAsMTgwKSpN YXRoLlBJLzE4MDt0aGlzLmFuZ2xlIT09ciYmKHRoaXMuX3VubW9kaWZpZWQ9 ITEsdGhpcy5hbmdsZT1yLHRoaXMuX2NhbGNNYXRyaWNlcygpLHRoaXMucm90 YXRpb25NYXRyaXg9dC5jcmVhdGUkMigpLHQucm90YXRlKHRoaXMucm90YXRp b25NYXRyaXgsdGhpcy5yb3RhdGlvbk1hdHJpeCx0aGlzLmFuZ2xlKSl9LGhu LnBpdGNoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXRjaC9NYXRo LlBJKjE4MH0saG4ucGl0Y2guc2V0PWZ1bmN0aW9uKGUpe3ZhciByPXQuY2xh bXAoZSwwLDYwKS8xODAqTWF0aC5QSTt0aGlzLl9waXRjaCE9PXImJih0aGlz Ll91bm1vZGlmaWVkPSExLHRoaXMuX3BpdGNoPXIsdGhpcy5fY2FsY01hdHJp Y2VzKCkpfSxobi5mb3YuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zv di9NYXRoLlBJKjE4MH0saG4uZm92LnNldD1mdW5jdGlvbih0KXt0PU1hdGgu bWF4KC4wMSxNYXRoLm1pbig2MCx0KSksdGhpcy5fZm92IT09dCYmKHRoaXMu X3VubW9kaWZpZWQ9ITEsdGhpcy5fZm92PXQvMTgwKk1hdGguUEksdGhpcy5f Y2FsY01hdHJpY2VzKCkpfSxobi56b29tLmdldD1mdW5jdGlvbigpe3JldHVy biB0aGlzLl96b29tfSxobi56b29tLnNldD1mdW5jdGlvbih0KXt2YXIgZT1N YXRoLm1pbihNYXRoLm1heCh0LHRoaXMubWluWm9vbSksdGhpcy5tYXhab29t KTt0aGlzLl96b29tIT09ZSYmKHRoaXMuX3VubW9kaWZpZWQ9ITEsdGhpcy5f em9vbT1lLHRoaXMuc2NhbGU9dGhpcy56b29tU2NhbGUoZSksdGhpcy50aWxl Wm9vbT1NYXRoLmZsb29yKGUpLHRoaXMuem9vbUZyYWN0aW9uPWUtdGhpcy50 aWxlWm9vbSx0aGlzLl9jb25zdHJhaW4oKSx0aGlzLl9jYWxjTWF0cmljZXMo KSl9LGhuLmNlbnRlci5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2Vu dGVyfSxobi5jZW50ZXIuc2V0PWZ1bmN0aW9uKHQpe3QubGF0PT09dGhpcy5f Y2VudGVyLmxhdCYmdC5sbmc9PT10aGlzLl9jZW50ZXIubG5nfHwodGhpcy5f dW5tb2RpZmllZD0hMSx0aGlzLl9jZW50ZXI9dCx0aGlzLl9jb25zdHJhaW4o KSx0aGlzLl9jYWxjTWF0cmljZXMoKSl9LHVuLnByb3RvdHlwZS5jb3Zlcmlu Z1pvb21MZXZlbD1mdW5jdGlvbih0KXtyZXR1cm4odC5yb3VuZFpvb20/TWF0 aC5yb3VuZDpNYXRoLmZsb29yKSh0aGlzLnpvb20rdGhpcy5zY2FsZVpvb20o dGhpcy50aWxlU2l6ZS90LnRpbGVTaXplKSl9LHVuLnByb3RvdHlwZS5nZXRW aXNpYmxlVW53cmFwcGVkQ29vcmRpbmF0ZXM9ZnVuY3Rpb24oZSl7dmFyIHI9 W25ldyB0LlVud3JhcHBlZFRpbGVJRCgwLGUpXTtpZih0aGlzLl9yZW5kZXJX b3JsZENvcGllcylmb3IodmFyIG49dGhpcy5wb2ludENvb3JkaW5hdGUobmV3 IHQuUG9pbnQoMCwwKSksYT10aGlzLnBvaW50Q29vcmRpbmF0ZShuZXcgdC5Q b2ludCh0aGlzLndpZHRoLDApKSxpPXRoaXMucG9pbnRDb29yZGluYXRlKG5l dyB0LlBvaW50KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpKSxvPXRoaXMucG9p bnRDb29yZGluYXRlKG5ldyB0LlBvaW50KDAsdGhpcy5oZWlnaHQpKSxzPU1h dGguZmxvb3IoTWF0aC5taW4obi54LGEueCxpLngsby54KSksbD1NYXRoLmZs b29yKE1hdGgubWF4KG4ueCxhLngsaS54LG8ueCkpLGM9cy0xO2M8PWwrMTtj KyspMCE9PWMmJnIucHVzaChuZXcgdC5VbndyYXBwZWRUaWxlSUQoYyxlKSk7 cmV0dXJuIHJ9LHVuLnByb3RvdHlwZS5jb3ZlcmluZ1RpbGVzPWZ1bmN0aW9u KGUpe3ZhciByPXRoaXMuY292ZXJpbmdab29tTGV2ZWwoZSksbj1yO2lmKHZv aWQgMCE9PWUubWluem9vbSYmcjxlLm1pbnpvb20pcmV0dXJuW107dm9pZCAw IT09ZS5tYXh6b29tJiZyPmUubWF4em9vbSYmKHI9ZS5tYXh6b29tKTt2YXIg YT10Lk1lcmNhdG9yQ29vcmRpbmF0ZS5mcm9tTG5nTGF0KHRoaXMuY2VudGVy KSxpPU1hdGgucG93KDIsciksbz1uZXcgdC5Qb2ludChpKmEueC0uNSxpKmEu eS0uNSk7cmV0dXJuIGZ1bmN0aW9uKGUscixuLGEpe3ZvaWQgMD09PWEmJihh PSEwKTt2YXIgaT0xPDxlLG89e307ZnVuY3Rpb24gcyhyLHMsbCl7dmFyIGMs dSxoLGY7aWYobD49MCYmbDw9aSlmb3IoYz1yO2M8cztjKyspdT1NYXRoLmZs b29yKGMvaSksaD0oYyVpK2kpJWksMCE9PXUmJiEwIT09YXx8KGY9bmV3IHQu T3ZlcnNjYWxlZFRpbGVJRChuLHUsZSxoLGwpLG9bZi5rZXldPWYpfXZhciBs PXIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdC5Qb2ludChlLngsZS55 KS5fbXVsdChpKX0pO3JldHVybiBjbihsWzBdLGxbMV0sbFsyXSwwLGkscyks Y24obFsyXSxsWzNdLGxbMF0sMCxpLHMpLE9iamVjdC5rZXlzKG8pLm1hcChm dW5jdGlvbih0KXtyZXR1cm4gb1t0XX0pfShyLFt0aGlzLnBvaW50Q29vcmRp bmF0ZShuZXcgdC5Qb2ludCgwLDApKSx0aGlzLnBvaW50Q29vcmRpbmF0ZShu ZXcgdC5Qb2ludCh0aGlzLndpZHRoLDApKSx0aGlzLnBvaW50Q29vcmRpbmF0 ZShuZXcgdC5Qb2ludCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSksdGhpcy5w b2ludENvb3JkaW5hdGUobmV3IHQuUG9pbnQoMCx0aGlzLmhlaWdodCkpXSxl LnJlcGFyc2VPdmVyc2NhbGVkP246cix0aGlzLl9yZW5kZXJXb3JsZENvcGll cykuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBvLmRpc3QodC5jYW5vbmlj YWwpLW8uZGlzdChlLmNhbm9uaWNhbCl9KX0sdW4ucHJvdG90eXBlLnJlc2l6 ZT1mdW5jdGlvbih0LGUpe3RoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRo aXMucGl4ZWxzVG9HTFVuaXRzPVsyL3QsLTIvZV0sdGhpcy5fY29uc3RyYWlu KCksdGhpcy5fY2FsY01hdHJpY2VzKCl9LGhuLnVubW9kaWZpZWQuZ2V0PWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VubW9kaWZpZWR9LHVuLnByb3RvdHlw ZS56b29tU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDIsdCl9 LHVuLnByb3RvdHlwZS5zY2FsZVpvb209ZnVuY3Rpb24odCl7cmV0dXJuIE1h dGgubG9nKHQpL01hdGguTE4yfSx1bi5wcm90b3R5cGUucHJvamVjdD1mdW5j dGlvbihlKXt2YXIgcj10LmNsYW1wKGUubGF0LC10aGlzLm1heFZhbGlkTGF0 aXR1ZGUsdGhpcy5tYXhWYWxpZExhdGl0dWRlKTtyZXR1cm4gbmV3IHQuUG9p bnQodC5tZXJjYXRvclhmcm9tTG5nKGUubG5nKSp0aGlzLndvcmxkU2l6ZSx0 Lm1lcmNhdG9yWWZyb21MYXQocikqdGhpcy53b3JsZFNpemUpfSx1bi5wcm90 b3R5cGUudW5wcm9qZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdC5NZXJj YXRvckNvb3JkaW5hdGUoZS54L3RoaXMud29ybGRTaXplLGUueS90aGlzLndv cmxkU2l6ZSkudG9MbmdMYXQoKX0saG4ucG9pbnQuZ2V0PWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMucHJvamVjdCh0aGlzLmNlbnRlcil9LHVuLnByb3RvdHlw ZS5zZXRMb2NhdGlvbkF0UG9pbnQ9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlz LnBvaW50Q29vcmRpbmF0ZShyKSxhPXRoaXMucG9pbnRDb29yZGluYXRlKHRo aXMuY2VudGVyUG9pbnQpLGk9dGhpcy5sb2NhdGlvbkNvb3JkaW5hdGUoZSks bz1uZXcgdC5NZXJjYXRvckNvb3JkaW5hdGUoaS54LShuLngtYS54KSxpLnkt KG4ueS1hLnkpKTt0aGlzLmNlbnRlcj10aGlzLmNvb3JkaW5hdGVMb2NhdGlv bihvKSx0aGlzLl9yZW5kZXJXb3JsZENvcGllcyYmKHRoaXMuY2VudGVyPXRo aXMuY2VudGVyLndyYXAoKSl9LHVuLnByb3RvdHlwZS5sb2NhdGlvblBvaW50 PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvb3JkaW5hdGVQb2ludCh0aGlz LmxvY2F0aW9uQ29vcmRpbmF0ZSh0KSl9LHVuLnByb3RvdHlwZS5wb2ludExv Y2F0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvb3JkaW5hdGVMb2Nh dGlvbih0aGlzLnBvaW50Q29vcmRpbmF0ZSh0KSl9LHVuLnByb3RvdHlwZS5s b2NhdGlvbkNvb3JkaW5hdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuTWVyY2F0 b3JDb29yZGluYXRlLmZyb21MbmdMYXQoZSl9LHVuLnByb3RvdHlwZS5jb29y ZGluYXRlTG9jYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9MbmdMYXQo KX0sdW4ucHJvdG90eXBlLnBvaW50Q29vcmRpbmF0ZT1mdW5jdGlvbihlKXt2 YXIgcj1bZS54LGUueSwwLDFdLG49W2UueCxlLnksMSwxXTt0LnRyYW5zZm9y bU1hdDQocixyLHRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlKSx0LnRyYW5zZm9y bU1hdDQobixuLHRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlKTt2YXIgYT1yWzNd LGk9blszXSxvPXJbMF0vYSxzPW5bMF0vaSxsPXJbMV0vYSxjPW5bMV0vaSx1 PXJbMl0vYSxoPW5bMl0vaSxmPXU9PT1oPzA6KDAtdSkvKGgtdSk7cmV0dXJu IG5ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZSh0Lm51bWJlcihvLHMsZikvdGhp cy53b3JsZFNpemUsdC5udW1iZXIobCxjLGYpL3RoaXMud29ybGRTaXplKX0s dW4ucHJvdG90eXBlLmNvb3JkaW5hdGVQb2ludD1mdW5jdGlvbihlKXt2YXIg cj1bZS54KnRoaXMud29ybGRTaXplLGUueSp0aGlzLndvcmxkU2l6ZSwwLDFd O3JldHVybiB0LnRyYW5zZm9ybU1hdDQocixyLHRoaXMucGl4ZWxNYXRyaXgp LG5ldyB0LlBvaW50KHJbMF0vclszXSxyWzFdL3JbM10pfSx1bi5wcm90b3R5 cGUuZ2V0Qm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0LkxuZ0xhdEJv dW5kcykuZXh0ZW5kKHRoaXMucG9pbnRMb2NhdGlvbihuZXcgdC5Qb2ludCgw LDApKSkuZXh0ZW5kKHRoaXMucG9pbnRMb2NhdGlvbihuZXcgdC5Qb2ludCh0 aGlzLndpZHRoLDApKSkuZXh0ZW5kKHRoaXMucG9pbnRMb2NhdGlvbihuZXcg dC5Qb2ludCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSkpLmV4dGVuZCh0aGlz LnBvaW50TG9jYXRpb24obmV3IHQuUG9pbnQoMCx0aGlzLmhlaWdodCkpKX0s dW4ucHJvdG90eXBlLmdldE1heEJvdW5kcz1mdW5jdGlvbigpe3JldHVybiB0 aGlzLmxhdFJhbmdlJiYyPT09dGhpcy5sYXRSYW5nZS5sZW5ndGgmJnRoaXMu bG5nUmFuZ2UmJjI9PT10aGlzLmxuZ1JhbmdlLmxlbmd0aD9uZXcgdC5MbmdM YXRCb3VuZHMoW3RoaXMubG5nUmFuZ2VbMF0sdGhpcy5sYXRSYW5nZVswXV0s W3RoaXMubG5nUmFuZ2VbMV0sdGhpcy5sYXRSYW5nZVsxXV0pOm51bGx9LHVu LnByb3RvdHlwZS5zZXRNYXhCb3VuZHM9ZnVuY3Rpb24odCl7dD8odGhpcy5s bmdSYW5nZT1bdC5nZXRXZXN0KCksdC5nZXRFYXN0KCldLHRoaXMubGF0UmFu Z2U9W3QuZ2V0U291dGgoKSx0LmdldE5vcnRoKCldLHRoaXMuX2NvbnN0cmFp bigpKToodGhpcy5sbmdSYW5nZT1udWxsLHRoaXMubGF0UmFuZ2U9Wy10aGlz Lm1heFZhbGlkTGF0aXR1ZGUsdGhpcy5tYXhWYWxpZExhdGl0dWRlXSl9LHVu LnByb3RvdHlwZS5jYWxjdWxhdGVQb3NNYXRyaXg9ZnVuY3Rpb24oZSxyKXt2 b2lkIDA9PT1yJiYocj0hMSk7dmFyIG49ZS5rZXksYT1yP3RoaXMuX2FsaWdu ZWRQb3NNYXRyaXhDYWNoZTp0aGlzLl9wb3NNYXRyaXhDYWNoZTtpZihhW25d KXJldHVybiBhW25dO3ZhciBpPWUuY2Fub25pY2FsLG89dGhpcy53b3JsZFNp emUvdGhpcy56b29tU2NhbGUoaS56KSxzPWkueCtNYXRoLnBvdygyLGkueikq ZS53cmFwLGw9dC5pZGVudGl0eShuZXcgRmxvYXQ2NEFycmF5KDE2KSk7cmV0 dXJuIHQudHJhbnNsYXRlKGwsbCxbcypvLGkueSpvLDBdKSx0LnNjYWxlKGws bCxbby90LkVYVEVOVCxvL3QuRVhURU5ULDFdKSx0Lm11bHRpcGx5KGwscj90 aGlzLmFsaWduZWRQcm9qTWF0cml4OnRoaXMucHJvak1hdHJpeCxsKSxhW25d PW5ldyBGbG9hdDMyQXJyYXkobCksYVtuXX0sdW4ucHJvdG90eXBlLmN1c3Rv bUxheWVyTWF0cml4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVyY2F0b3JN YXRyaXguc2xpY2UoKX0sdW4ucHJvdG90eXBlLl9jb25zdHJhaW49ZnVuY3Rp b24oKXtpZih0aGlzLmNlbnRlciYmdGhpcy53aWR0aCYmdGhpcy5oZWlnaHQm JiF0aGlzLl9jb25zdHJhaW5pbmcpe3RoaXMuX2NvbnN0cmFpbmluZz0hMDt2 YXIgZSxyLG4sYSxpPS05MCxvPTkwLHM9LTE4MCxsPTE4MCxjPXRoaXMuc2l6 ZSx1PXRoaXMuX3VubW9kaWZpZWQ7aWYodGhpcy5sYXRSYW5nZSl7dmFyIGg9 dGhpcy5sYXRSYW5nZTtpPXQubWVyY2F0b3JZZnJvbUxhdChoWzFdKSp0aGlz LndvcmxkU2l6ZSxlPShvPXQubWVyY2F0b3JZZnJvbUxhdChoWzBdKSp0aGlz LndvcmxkU2l6ZSktaTxjLnk/Yy55LyhvLWkpOjB9aWYodGhpcy5sbmdSYW5n ZSl7dmFyIGY9dGhpcy5sbmdSYW5nZTtzPXQubWVyY2F0b3JYZnJvbUxuZyhm WzBdKSp0aGlzLndvcmxkU2l6ZSxyPShsPXQubWVyY2F0b3JYZnJvbUxuZyhm WzFdKSp0aGlzLndvcmxkU2l6ZSktczxjLng/Yy54LyhsLXMpOjB9dmFyIHA9 dGhpcy5wb2ludCxkPU1hdGgubWF4KHJ8fDAsZXx8MCk7aWYoZClyZXR1cm4g dGhpcy5jZW50ZXI9dGhpcy51bnByb2plY3QobmV3IHQuUG9pbnQocj8obCtz KS8yOnAueCxlPyhvK2kpLzI6cC55KSksdGhpcy56b29tKz10aGlzLnNjYWxl Wm9vbShkKSx0aGlzLl91bm1vZGlmaWVkPXUsdm9pZCh0aGlzLl9jb25zdHJh aW5pbmc9ITEpO2lmKHRoaXMubGF0UmFuZ2Upe3ZhciBnPXAueSx2PWMueS8y O2ctdjxpJiYoYT1pK3YpLGcrdj5vJiYoYT1vLXYpfWlmKHRoaXMubG5nUmFu Z2Upe3ZhciBtPXAueCx5PWMueC8yO20teTxzJiYobj1zK3kpLG0reT5sJiYo bj1sLXkpfXZvaWQgMD09PW4mJnZvaWQgMD09PWF8fCh0aGlzLmNlbnRlcj10 aGlzLnVucHJvamVjdChuZXcgdC5Qb2ludCh2b2lkIDAhPT1uP246cC54LHZv aWQgMCE9PWE/YTpwLnkpKSksdGhpcy5fdW5tb2RpZmllZD11LHRoaXMuX2Nv bnN0cmFpbmluZz0hMX19LHVuLnByb3RvdHlwZS5fY2FsY01hdHJpY2VzPWZ1 bmN0aW9uKCl7aWYodGhpcy5oZWlnaHQpe3RoaXMuY2FtZXJhVG9DZW50ZXJE aXN0YW5jZT0uNS9NYXRoLnRhbih0aGlzLl9mb3YvMikqdGhpcy5oZWlnaHQ7 dmFyIGU9dGhpcy5fZm92LzIscj1NYXRoLlBJLzIrdGhpcy5fcGl0Y2gsbj1N YXRoLnNpbihlKSp0aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UvTWF0aC5z aW4oTWF0aC5QSS1yLWUpLGE9dGhpcy5wb2ludCxpPWEueCxvPWEueSxzPTEu MDEqKE1hdGguY29zKE1hdGguUEkvMi10aGlzLl9waXRjaCkqbit0aGlzLmNh bWVyYVRvQ2VudGVyRGlzdGFuY2UpLGw9dGhpcy5oZWlnaHQvNTAsYz1uZXcg RmxvYXQ2NEFycmF5KDE2KTt0LnBlcnNwZWN0aXZlKGMsdGhpcy5fZm92LHRo aXMud2lkdGgvdGhpcy5oZWlnaHQsbCxzKSx0LnNjYWxlKGMsYyxbMSwtMSwx XSksdC50cmFuc2xhdGUoYyxjLFswLDAsLXRoaXMuY2FtZXJhVG9DZW50ZXJE aXN0YW5jZV0pLHQucm90YXRlWChjLGMsdGhpcy5fcGl0Y2gpLHQucm90YXRl WihjLGMsdGhpcy5hbmdsZSksdC50cmFuc2xhdGUoYyxjLFstaSwtbywwXSks dGhpcy5tZXJjYXRvck1hdHJpeD10LnNjYWxlKFtdLGMsW3RoaXMud29ybGRT aXplLHRoaXMud29ybGRTaXplLHRoaXMud29ybGRTaXplXSksdC5zY2FsZShj LGMsWzEsMSx0Lm1lcmNhdG9yWmZyb21BbHRpdHVkZSgxLHRoaXMuY2VudGVy LmxhdCkqdGhpcy53b3JsZFNpemUsMV0pLHRoaXMucHJvak1hdHJpeD1jO3Zh ciB1PXRoaXMud2lkdGglMi8yLGg9dGhpcy5oZWlnaHQlMi8yLGY9TWF0aC5j b3ModGhpcy5hbmdsZSkscD1NYXRoLnNpbih0aGlzLmFuZ2xlKSxkPWktTWF0 aC5yb3VuZChpKStmKnUrcCpoLGc9by1NYXRoLnJvdW5kKG8pK2YqaCtwKnUs dj1uZXcgRmxvYXQ2NEFycmF5KGMpO2lmKHQudHJhbnNsYXRlKHYsdixbZD4u NT9kLTE6ZCxnPi41P2ctMTpnLDBdKSx0aGlzLmFsaWduZWRQcm9qTWF0cml4 PXYsYz10LmNyZWF0ZSgpLHQuc2NhbGUoYyxjLFt0aGlzLndpZHRoLzIsLXRo aXMuaGVpZ2h0LzIsMV0pLHQudHJhbnNsYXRlKGMsYyxbMSwtMSwwXSksdGhp cy5sYWJlbFBsYW5lTWF0cml4PWMsYz10LmNyZWF0ZSgpLHQuc2NhbGUoYyxj LFsxLC0xLDFdKSx0LnRyYW5zbGF0ZShjLGMsWy0xLC0xLDBdKSx0LnNjYWxl KGMsYyxbMi90aGlzLndpZHRoLDIvdGhpcy5oZWlnaHQsMV0pLHRoaXMuZ2xD b29yZE1hdHJpeD1jLHRoaXMucGl4ZWxNYXRyaXg9dC5tdWx0aXBseShuZXcg RmxvYXQ2NEFycmF5KDE2KSx0aGlzLmxhYmVsUGxhbmVNYXRyaXgsdGhpcy5w cm9qTWF0cml4KSwhKGM9dC5pbnZlcnQobmV3IEZsb2F0NjRBcnJheSgxNiks dGhpcy5waXhlbE1hdHJpeCkpKXRocm93IG5ldyBFcnJvcigiZmFpbGVkIHRv IGludmVydCBtYXRyaXgiKTt0aGlzLnBpeGVsTWF0cml4SW52ZXJzZT1jLHRo aXMuX3Bvc01hdHJpeENhY2hlPXt9LHRoaXMuX2FsaWduZWRQb3NNYXRyaXhD YWNoZT17fX19LHVuLnByb3RvdHlwZS5tYXhQaXRjaFNjYWxlRmFjdG9yPWZ1 bmN0aW9uKCl7aWYoIXRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlKXJldHVybiAx O3ZhciBlPXRoaXMucG9pbnRDb29yZGluYXRlKG5ldyB0LlBvaW50KDAsMCkp LHI9W2UueCp0aGlzLndvcmxkU2l6ZSxlLnkqdGhpcy53b3JsZFNpemUsMCwx XTtyZXR1cm4gdC50cmFuc2Zvcm1NYXQ0KHIscix0aGlzLnBpeGVsTWF0cml4 KVszXS90aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2V9LHVuLnByb3RvdHlw ZS5nZXRDYW1lcmFQb2ludD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX3BpdGNo LHI9TWF0aC50YW4oZSkqKHRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZXx8 MSk7cmV0dXJuIHRoaXMuY2VudGVyUG9pbnQuYWRkKG5ldyB0LlBvaW50KDAs cikpfSx1bi5wcm90b3R5cGUuZ2V0Q2FtZXJhUXVlcnlHZW9tZXRyeT1mdW5j dGlvbihlKXt2YXIgcj10aGlzLmdldENhbWVyYVBvaW50KCk7aWYoMT09PWUu bGVuZ3RoKXJldHVybltlWzBdLHJdO2Zvcih2YXIgbj1yLngsYT1yLnksaT1y Lngsbz1yLnkscz0wLGw9ZTtzPGwubGVuZ3RoO3MrPTEpe3ZhciBjPWxbc107 bj1NYXRoLm1pbihuLGMueCksYT1NYXRoLm1pbihhLGMueSksaT1NYXRoLm1h eChpLGMueCksbz1NYXRoLm1heChvLGMueSl9cmV0dXJuW25ldyB0LlBvaW50 KG4sYSksbmV3IHQuUG9pbnQoaSxhKSxuZXcgdC5Qb2ludChpLG8pLG5ldyB0 LlBvaW50KG4sbyksbmV3IHQuUG9pbnQobixhKV19LE9iamVjdC5kZWZpbmVQ cm9wZXJ0aWVzKHVuLnByb3RvdHlwZSxobik7dmFyIGZuPWZ1bmN0aW9uKCl7 dmFyIGUscixuLGE7dC5iaW5kQWxsKFsiX29uSGFzaENoYW5nZSIsIl91cGRh dGVIYXNoIl0sdGhpcyksdGhpcy5fdXBkYXRlSGFzaD0oZT10aGlzLl91cGRh dGVIYXNoVW50aHJvdHRsZWQuYmluZCh0aGlzKSwzMDAscj0hMSxuPW51bGws YT1mdW5jdGlvbigpe249bnVsbCxyJiYoZSgpLG49c2V0VGltZW91dChhLDMw MCkscj0hMSl9LGZ1bmN0aW9uKCl7cmV0dXJuIHI9ITAsbnx8YSgpLG59KX07 Zm4ucHJvdG90eXBlLmFkZFRvPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9t YXA9ZSx0LndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIix0 aGlzLl9vbkhhc2hDaGFuZ2UsITEpLHRoaXMuX21hcC5vbigibW92ZWVuZCIs dGhpcy5fdXBkYXRlSGFzaCksdGhpc30sZm4ucHJvdG90eXBlLnJlbW92ZT1m dW5jdGlvbigpe3JldHVybiB0LndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVy KCJoYXNoY2hhbmdlIix0aGlzLl9vbkhhc2hDaGFuZ2UsITEpLHRoaXMuX21h cC5vZmYoIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZUhhc2gpLGNsZWFyVGltZW91 dCh0aGlzLl91cGRhdGVIYXNoKCkpLGRlbGV0ZSB0aGlzLl9tYXAsdGhpc30s Zm4ucHJvdG90eXBlLmdldEhhc2hTdHJpbmc9ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5fbWFwLmdldENlbnRlcigpLHI9TWF0aC5yb3VuZCgxMDAqdGhpcy5f bWFwLmdldFpvb20oKSkvMTAwLG49TWF0aC5jZWlsKChyKk1hdGguTE4yK01h dGgubG9nKDUxMi8zNjAvLjUpKS9NYXRoLkxOMTApLGE9TWF0aC5wb3coMTAs biksaT1NYXRoLnJvdW5kKGUubG5nKmEpL2Esbz1NYXRoLnJvdW5kKGUubGF0 KmEpL2Escz10aGlzLl9tYXAuZ2V0QmVhcmluZygpLGw9dGhpcy5fbWFwLmdl dFBpdGNoKCksYz0iIjtyZXR1cm4gYys9dD8iIy8iK2krIi8iK28rIi8iK3I6 IiMiK3IrIi8iK28rIi8iK2ksKHN8fGwpJiYoYys9Ii8iK01hdGgucm91bmQo MTAqcykvMTApLGwmJihjKz0iLyIrTWF0aC5yb3VuZChsKSksY30sZm4ucHJv dG90eXBlLl9vbkhhc2hDaGFuZ2U9ZnVuY3Rpb24oKXt2YXIgZT10LndpbmRv dy5sb2NhdGlvbi5oYXNoLnJlcGxhY2UoIiMiLCIiKS5zcGxpdCgiLyIpO3Jl dHVybiBlLmxlbmd0aD49MyYmKHRoaXMuX21hcC5qdW1wVG8oe2NlbnRlcjpb K2VbMl0sK2VbMV1dLHpvb206K2VbMF0sYmVhcmluZzorKGVbM118fDApLHBp dGNoOisoZVs0XXx8MCl9KSwhMCl9LGZuLnByb3RvdHlwZS5fdXBkYXRlSGFz aFVudGhyb3R0bGVkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRIYXNoU3Ry aW5nKCk7dHJ5e3Qud2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHQud2lu ZG93Lmhpc3Rvcnkuc3RhdGUsIiIsZSl9Y2F0Y2godCl7fX07dmFyIHBuPWZ1 bmN0aW9uKGUpe2Z1bmN0aW9uIG4obixhLGksbyl7dm9pZCAwPT09byYmKG89 e30pO3ZhciBzPXIubW91c2VQb3MoYS5nZXRDYW52YXNDb250YWluZXIoKSxp KSxsPWEudW5wcm9qZWN0KHMpO2UuY2FsbCh0aGlzLG4sdC5leHRlbmQoe3Bv aW50OnMsbG5nTGF0Omwsb3JpZ2luYWxFdmVudDppfSxvKSksdGhpcy5fZGVm YXVsdFByZXZlbnRlZD0hMSx0aGlzLnRhcmdldD1hfWUmJihuLl9fcHJvdG9f Xz1lKSxuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBl KSxuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1uO3ZhciBhPXtkZWZhdWx0UHJl dmVudGVkOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gbi5wcm90b3R5cGUu cHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLl9kZWZhdWx0UHJldmVu dGVkPSEwfSxhLmRlZmF1bHRQcmV2ZW50ZWQuZ2V0PWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX2RlZmF1bHRQcmV2ZW50ZWR9LE9iamVjdC5kZWZpbmVQcm9w ZXJ0aWVzKG4ucHJvdG90eXBlLGEpLG59KHQuRXZlbnQpLGRuPWZ1bmN0aW9u KGUpe2Z1bmN0aW9uIG4obixhLGkpe3ZhciBvPXIudG91Y2hQb3MoYS5nZXRD YW52YXNDb250YWluZXIoKSxpKSxzPW8ubWFwKGZ1bmN0aW9uKHQpe3JldHVy biBhLnVucHJvamVjdCh0KX0pLGw9by5yZWR1Y2UoZnVuY3Rpb24odCxlLHIs bil7cmV0dXJuIHQuYWRkKGUuZGl2KG4ubGVuZ3RoKSl9LG5ldyB0LlBvaW50 KDAsMCkpLGM9YS51bnByb2plY3QobCk7ZS5jYWxsKHRoaXMsbix7cG9pbnRz Om8scG9pbnQ6bCxsbmdMYXRzOnMsbG5nTGF0OmMsb3JpZ2luYWxFdmVudDpp fSksdGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMX1lJiYobi5fX3Byb3RvX189 ZSksbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSks bi5wcm90b3R5cGUuY29uc3RydWN0b3I9bjt2YXIgYT17ZGVmYXVsdFByZXZl bnRlZDp7Y29uZmlndXJhYmxlOiEwfX07cmV0dXJuIG4ucHJvdG90eXBlLnBy ZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5fZGVmYXVsdFByZXZlbnRl ZD0hMH0sYS5kZWZhdWx0UHJldmVudGVkLmdldD1mdW5jdGlvbigpe3JldHVy biB0aGlzLl9kZWZhdWx0UHJldmVudGVkfSxPYmplY3QuZGVmaW5lUHJvcGVy dGllcyhuLnByb3RvdHlwZSxhKSxufSh0LkV2ZW50KSxnbj1mdW5jdGlvbih0 KXtmdW5jdGlvbiBlKGUscixuKXt0LmNhbGwodGhpcyxlLHtvcmlnaW5hbEV2 ZW50Om59KSx0aGlzLl9kZWZhdWx0UHJldmVudGVkPSExfXQmJihlLl9fcHJv dG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90 eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lO3ZhciByPXtkZWZhdWx0 UHJldmVudGVkOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4gZS5wcm90b3R5 cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLl9kZWZhdWx0UHJl dmVudGVkPSEwfSxyLmRlZmF1bHRQcmV2ZW50ZWQuZ2V0PWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX2RlZmF1bHRQcmV2ZW50ZWR9LE9iamVjdC5kZWZpbmVQ cm9wZXJ0aWVzKGUucHJvdG90eXBlLHIpLGV9KHQuRXZlbnQpLHZuPWZ1bmN0 aW9uKGUpe3RoaXMuX21hcD1lLHRoaXMuX2VsPWUuZ2V0Q2FudmFzQ29udGFp bmVyKCksdGhpcy5fZGVsdGE9MCx0aGlzLl9kZWZhdWx0Wm9vbVJhdGU9LjAx LHRoaXMuX3doZWVsWm9vbVJhdGU9MS80NTAsdC5iaW5kQWxsKFsiX29uV2hl ZWwiLCJfb25UaW1lb3V0IiwiX29uU2Nyb2xsRnJhbWUiLCJfb25TY3JvbGxG aW5pc2hlZCJdLHRoaXMpfTt2bi5wcm90b3R5cGUuc2V0Wm9vbVJhdGU9ZnVu Y3Rpb24odCl7dGhpcy5fZGVmYXVsdFpvb21SYXRlPXR9LHZuLnByb3RvdHlw ZS5zZXRXaGVlbFpvb21SYXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3doZWVsWm9v bVJhdGU9dH0sdm4ucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3Jl dHVybiEhdGhpcy5fZW5hYmxlZH0sdm4ucHJvdG90eXBlLmlzQWN0aXZlPWZ1 bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9hY3RpdmV9LHZuLnByb3RvdHlwZS5p c1pvb21pbmc9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX3pvb21pbmd9LHZu LnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCl7dGhpcy5pc0VuYWJsZWQo KXx8KHRoaXMuX2VuYWJsZWQ9ITAsdGhpcy5fYXJvdW5kQ2VudGVyPXQmJiJj ZW50ZXIiPT09dC5hcm91bmQpfSx2bi5wcm90b3R5cGUuZGlzYWJsZT1mdW5j dGlvbigpe3RoaXMuaXNFbmFibGVkKCkmJih0aGlzLl9lbmFibGVkPSExKX0s dm4ucHJvdG90eXBlLm9uV2hlZWw9ZnVuY3Rpb24oZSl7aWYodGhpcy5pc0Vu YWJsZWQoKSl7dmFyIHI9ZS5kZWx0YU1vZGU9PT10LndpbmRvdy5XaGVlbEV2 ZW50LkRPTV9ERUxUQV9MSU5FPzQwKmUuZGVsdGFZOmUuZGVsdGFZLG49dC5i cm93c2VyLm5vdygpLGE9bi0odGhpcy5fbGFzdFdoZWVsRXZlbnRUaW1lfHww KTt0aGlzLl9sYXN0V2hlZWxFdmVudFRpbWU9biwwIT09ciYmciU0LjAwMDI0 NDE0MDYyNT09MD90aGlzLl90eXBlPSJ3aGVlbCI6MCE9PXImJk1hdGguYWJz KHIpPDQ/dGhpcy5fdHlwZT0idHJhY2twYWQiOmE+NDAwPyh0aGlzLl90eXBl PW51bGwsdGhpcy5fbGFzdFZhbHVlPXIsdGhpcy5fdGltZW91dD1zZXRUaW1l b3V0KHRoaXMuX29uVGltZW91dCw0MCxlKSk6dGhpcy5fdHlwZXx8KHRoaXMu X3R5cGU9TWF0aC5hYnMoYSpyKTwyMDA/InRyYWNrcGFkIjoid2hlZWwiLHRo aXMuX3RpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksdGhp cy5fdGltZW91dD1udWxsLHIrPXRoaXMuX2xhc3RWYWx1ZSkpLGUuc2hpZnRL ZXkmJnImJihyLz00KSx0aGlzLl90eXBlJiYodGhpcy5fbGFzdFdoZWVsRXZl bnQ9ZSx0aGlzLl9kZWx0YS09cix0aGlzLmlzQWN0aXZlKCl8fHRoaXMuX3N0 YXJ0KGUpKSxlLnByZXZlbnREZWZhdWx0KCl9fSx2bi5wcm90b3R5cGUuX29u VGltZW91dD1mdW5jdGlvbih0KXt0aGlzLl90eXBlPSJ3aGVlbCIsdGhpcy5f ZGVsdGEtPXRoaXMuX2xhc3RWYWx1ZSx0aGlzLmlzQWN0aXZlKCl8fHRoaXMu X3N0YXJ0KHQpfSx2bi5wcm90b3R5cGUuX3N0YXJ0PWZ1bmN0aW9uKGUpe2lm KHRoaXMuX2RlbHRhKXt0aGlzLl9mcmFtZUlkJiYodGhpcy5fbWFwLl9jYW5j ZWxSZW5kZXJGcmFtZSh0aGlzLl9mcmFtZUlkKSx0aGlzLl9mcmFtZUlkPW51 bGwpLHRoaXMuX2FjdGl2ZT0hMCx0aGlzLmlzWm9vbWluZygpfHwodGhpcy5f em9vbWluZz0hMCx0aGlzLl9tYXAuZmlyZShuZXcgdC5FdmVudCgibW92ZXN0 YXJ0Iix7b3JpZ2luYWxFdmVudDplfSkpLHRoaXMuX21hcC5maXJlKG5ldyB0 LkV2ZW50KCJ6b29tc3RhcnQiLHtvcmlnaW5hbEV2ZW50OmV9KSkpLHRoaXMu X2ZpbmlzaFRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl9maW5pc2hUaW1l b3V0KTt2YXIgbj1yLm1vdXNlUG9zKHRoaXMuX2VsLGUpO3RoaXMuX2Fyb3Vu ZD10LkxuZ0xhdC5jb252ZXJ0KHRoaXMuX2Fyb3VuZENlbnRlcj90aGlzLl9t YXAuZ2V0Q2VudGVyKCk6dGhpcy5fbWFwLnVucHJvamVjdChuKSksdGhpcy5f YXJvdW5kUG9pbnQ9dGhpcy5fbWFwLnRyYW5zZm9ybS5sb2NhdGlvblBvaW50 KHRoaXMuX2Fyb3VuZCksdGhpcy5fZnJhbWVJZHx8KHRoaXMuX2ZyYW1lSWQ9 dGhpcy5fbWFwLl9yZXF1ZXN0UmVuZGVyRnJhbWUodGhpcy5fb25TY3JvbGxG cmFtZSkpfX0sdm4ucHJvdG90eXBlLl9vblNjcm9sbEZyYW1lPWZ1bmN0aW9u KCl7dmFyIGU9dGhpcztpZih0aGlzLl9mcmFtZUlkPW51bGwsdGhpcy5pc0Fj dGl2ZSgpKXt2YXIgcj10aGlzLl9tYXAudHJhbnNmb3JtO2lmKDAhPT10aGlz Ll9kZWx0YSl7dmFyIG49IndoZWVsIj09PXRoaXMuX3R5cGUmJk1hdGguYWJz KHRoaXMuX2RlbHRhKT40LjAwMDI0NDE0MDYyNT90aGlzLl93aGVlbFpvb21S YXRlOnRoaXMuX2RlZmF1bHRab29tUmF0ZSxhPTIvKDErTWF0aC5leHAoLU1h dGguYWJzKHRoaXMuX2RlbHRhKm4pKSk7dGhpcy5fZGVsdGE8MCYmMCE9PWEm JihhPTEvYSk7dmFyIGk9Im51bWJlciI9PXR5cGVvZiB0aGlzLl90YXJnZXRa b29tP3Iuem9vbVNjYWxlKHRoaXMuX3RhcmdldFpvb20pOnIuc2NhbGU7dGhp cy5fdGFyZ2V0Wm9vbT1NYXRoLm1pbihyLm1heFpvb20sTWF0aC5tYXgoci5t aW5ab29tLHIuc2NhbGVab29tKGkqYSkpKSwid2hlZWwiPT09dGhpcy5fdHlw ZSYmKHRoaXMuX3N0YXJ0Wm9vbT1yLnpvb20sdGhpcy5fZWFzaW5nPXRoaXMu X3Ntb290aE91dEVhc2luZygyMDApKSx0aGlzLl9kZWx0YT0wfXZhciBvPSJu dW1iZXIiPT10eXBlb2YgdGhpcy5fdGFyZ2V0Wm9vbT90aGlzLl90YXJnZXRa b29tOnIuem9vbSxzPXRoaXMuX3N0YXJ0Wm9vbSxsPXRoaXMuX2Vhc2luZyxj PSExO2lmKCJ3aGVlbCI9PT10aGlzLl90eXBlJiZzJiZsKXt2YXIgdT1NYXRo Lm1pbigodC5icm93c2VyLm5vdygpLXRoaXMuX2xhc3RXaGVlbEV2ZW50VGlt ZSkvMjAwLDEpLGg9bCh1KTtyLnpvb209dC5udW1iZXIocyxvLGgpLHU8MT90 aGlzLl9mcmFtZUlkfHwodGhpcy5fZnJhbWVJZD10aGlzLl9tYXAuX3JlcXVl c3RSZW5kZXJGcmFtZSh0aGlzLl9vblNjcm9sbEZyYW1lKSk6Yz0hMH1lbHNl IHIuem9vbT1vLGM9ITA7ci5zZXRMb2NhdGlvbkF0UG9pbnQodGhpcy5fYXJv dW5kLHRoaXMuX2Fyb3VuZFBvaW50KSx0aGlzLl9tYXAuZmlyZShuZXcgdC5F dmVudCgibW92ZSIse29yaWdpbmFsRXZlbnQ6dGhpcy5fbGFzdFdoZWVsRXZl bnR9KSksdGhpcy5fbWFwLmZpcmUobmV3IHQuRXZlbnQoInpvb20iLHtvcmln aW5hbEV2ZW50OnRoaXMuX2xhc3RXaGVlbEV2ZW50fSkpLGMmJih0aGlzLl9h Y3RpdmU9ITEsdGhpcy5fZmluaXNoVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0 aW9uKCl7ZS5fem9vbWluZz0hMSxlLl9tYXAuZmlyZShuZXcgdC5FdmVudCgi em9vbWVuZCIse29yaWdpbmFsRXZlbnQ6ZS5fbGFzdFdoZWVsRXZlbnR9KSks ZS5fbWFwLmZpcmUobmV3IHQuRXZlbnQoIm1vdmVlbmQiLHtvcmlnaW5hbEV2 ZW50OmUuX2xhc3RXaGVlbEV2ZW50fSkpLGRlbGV0ZSBlLl90YXJnZXRab29t fSwyMDApKX19LHZuLnByb3RvdHlwZS5fc21vb3RoT3V0RWFzaW5nPWZ1bmN0 aW9uKGUpe3ZhciByPXQuZWFzZTtpZih0aGlzLl9wcmV2RWFzZSl7dmFyIG49 dGhpcy5fcHJldkVhc2UsYT0odC5icm93c2VyLm5vdygpLW4uc3RhcnQpL24u ZHVyYXRpb24saT1uLmVhc2luZyhhKy4wMSktbi5lYXNpbmcoYSksbz0uMjcv TWF0aC5zcXJ0KGkqaSsxZS00KSouMDEscz1NYXRoLnNxcnQoLjA3Mjktbypv KTtyPXQuYmV6aWVyKG8scywuMjUsMSl9cmV0dXJuIHRoaXMuX3ByZXZFYXNl PXtzdGFydDp0LmJyb3dzZXIubm93KCksZHVyYXRpb246ZSxlYXNpbmc6cn0s cn07dmFyIG1uPWZ1bmN0aW9uKGUscil7dGhpcy5fbWFwPWUsdGhpcy5fZWw9 ZS5nZXRDYW52YXNDb250YWluZXIoKSx0aGlzLl9jb250YWluZXI9ZS5nZXRD b250YWluZXIoKSx0aGlzLl9jbGlja1RvbGVyYW5jZT1yLmNsaWNrVG9sZXJh bmNlfHwxLHQuYmluZEFsbChbIl9vbk1vdXNlTW92ZSIsIl9vbk1vdXNlVXAi LCJfb25LZXlEb3duIl0sdGhpcyl9O21uLnByb3RvdHlwZS5pc0VuYWJsZWQ9 ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2VuYWJsZWR9LG1uLnByb3RvdHlw ZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fYWN0aXZlfSxt bi5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQo KXx8KHRoaXMuX2VuYWJsZWQ9ITApfSxtbi5wcm90b3R5cGUuZGlzYWJsZT1m dW5jdGlvbigpe3RoaXMuaXNFbmFibGVkKCkmJih0aGlzLl9lbmFibGVkPSEx KX0sbW4ucHJvdG90eXBlLm9uTW91c2VEb3duPWZ1bmN0aW9uKGUpe3RoaXMu aXNFbmFibGVkKCkmJmUuc2hpZnRLZXkmJjA9PT1lLmJ1dHRvbiYmKHQud2lu ZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhp cy5fb25Nb3VzZU1vdmUsITEpLHQud2luZG93LmRvY3VtZW50LmFkZEV2ZW50 TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX29uS2V5RG93biwhMSksdC53aW5k b3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5f b25Nb3VzZVVwLCExKSxyLmRpc2FibGVEcmFnKCksdGhpcy5fc3RhcnRQb3M9 dGhpcy5fbGFzdFBvcz1yLm1vdXNlUG9zKHRoaXMuX2VsLGUpLHRoaXMuX2Fj dGl2ZT0hMCl9LG1uLnByb3RvdHlwZS5fb25Nb3VzZU1vdmU9ZnVuY3Rpb24o dCl7dmFyIGU9ci5tb3VzZVBvcyh0aGlzLl9lbCx0KTtpZighKHRoaXMuX2xh c3RQb3MuZXF1YWxzKGUpfHwhdGhpcy5fYm94JiZlLmRpc3QodGhpcy5fc3Rh cnRQb3MpPHRoaXMuX2NsaWNrVG9sZXJhbmNlKSl7dmFyIG49dGhpcy5fc3Rh cnRQb3M7dGhpcy5fbGFzdFBvcz1lLHRoaXMuX2JveHx8KHRoaXMuX2JveD1y LmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtYm94em9vbSIsdGhpcy5fY29udGFp bmVyKSx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wt Y3Jvc3NoYWlyIiksdGhpcy5fZmlyZUV2ZW50KCJib3h6b29tc3RhcnQiLHQp KTt2YXIgYT1NYXRoLm1pbihuLngsZS54KSxpPU1hdGgubWF4KG4ueCxlLngp LG89TWF0aC5taW4obi55LGUueSkscz1NYXRoLm1heChuLnksZS55KTtyLnNl dFRyYW5zZm9ybSh0aGlzLl9ib3gsInRyYW5zbGF0ZSgiK2ErInB4LCIrbysi cHgpIiksdGhpcy5fYm94LnN0eWxlLndpZHRoPWktYSsicHgiLHRoaXMuX2Jv eC5zdHlsZS5oZWlnaHQ9cy1vKyJweCJ9fSxtbi5wcm90b3R5cGUuX29uTW91 c2VVcD1mdW5jdGlvbihlKXtpZigwPT09ZS5idXR0b24pe3ZhciBuPXRoaXMu X3N0YXJ0UG9zLGE9ci5tb3VzZVBvcyh0aGlzLl9lbCxlKTt0aGlzLl9maW5p c2goKSxyLnN1cHByZXNzQ2xpY2soKSxuLng9PT1hLngmJm4ueT09PWEueT90 aGlzLl9maXJlRXZlbnQoImJveHpvb21jYW5jZWwiLGUpOnRoaXMuX21hcC5m aXRTY3JlZW5Db29yZGluYXRlcyhuLGEsdGhpcy5fbWFwLmdldEJlYXJpbmco KSx7bGluZWFyOiEwfSkuZmlyZShuZXcgdC5FdmVudCgiYm94em9vbWVuZCIs e29yaWdpbmFsRXZlbnQ6ZX0pKX19LG1uLnByb3RvdHlwZS5fb25LZXlEb3du PWZ1bmN0aW9uKHQpezI3PT09dC5rZXlDb2RlJiYodGhpcy5fZmluaXNoKCks dGhpcy5fZmlyZUV2ZW50KCJib3h6b29tY2FuY2VsIix0KSl9LG1uLnByb3Rv dHlwZS5fZmluaXNoPWZ1bmN0aW9uKCl7dGhpcy5fYWN0aXZlPSExLHQud2lu ZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIs dGhpcy5fb25Nb3VzZU1vdmUsITEpLHQud2luZG93LmRvY3VtZW50LnJlbW92 ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX29uS2V5RG93biwhMSks dC53aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1 cCIsdGhpcy5fb25Nb3VzZVVwLCExKSx0aGlzLl9jb250YWluZXIuY2xhc3NM aXN0LnJlbW92ZSgibWFwYm94Z2wtY3Jvc3NoYWlyIiksdGhpcy5fYm94JiYo ci5yZW1vdmUodGhpcy5fYm94KSx0aGlzLl9ib3g9bnVsbCksci5lbmFibGVE cmFnKCksZGVsZXRlIHRoaXMuX3N0YXJ0UG9zLGRlbGV0ZSB0aGlzLl9sYXN0 UG9zfSxtbi5wcm90b3R5cGUuX2ZpcmVFdmVudD1mdW5jdGlvbihlLHIpe3Jl dHVybiB0aGlzLl9tYXAuZmlyZShuZXcgdC5FdmVudChlLHtvcmlnaW5hbEV2 ZW50OnJ9KSl9O3ZhciB5bj10LmJlemllcigwLDAsLjI1LDEpLHhuPWZ1bmN0 aW9uKGUscil7dGhpcy5fbWFwPWUsdGhpcy5fZWw9ci5lbGVtZW50fHxlLmdl dENhbnZhc0NvbnRhaW5lcigpLHRoaXMuX3N0YXRlPSJkaXNhYmxlZCIsdGhp cy5fYnV0dG9uPXIuYnV0dG9ufHwicmlnaHQiLHRoaXMuX2JlYXJpbmdTbmFw PXIuYmVhcmluZ1NuYXB8fDAsdGhpcy5fcGl0Y2hXaXRoUm90YXRlPSExIT09 ci5waXRjaFdpdGhSb3RhdGUsdC5iaW5kQWxsKFsib25Nb3VzZURvd24iLCJf b25Nb3VzZU1vdmUiLCJfb25Nb3VzZVVwIiwiX29uQmx1ciIsIl9vbkRyYWdG cmFtZSJdLHRoaXMpfTt4bi5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9u KCl7cmV0dXJuImRpc2FibGVkIiE9PXRoaXMuX3N0YXRlfSx4bi5wcm90b3R5 cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4iYWN0aXZlIj09PXRoaXMu X3N0YXRlfSx4bi5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5p c0VuYWJsZWQoKXx8KHRoaXMuX3N0YXRlPSJlbmFibGVkIil9LHhuLnByb3Rv dHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0VuYWJsZWQoKSlz d2l0Y2godGhpcy5fc3RhdGUpe2Nhc2UiYWN0aXZlIjp0aGlzLl9zdGF0ZT0i ZGlzYWJsZWQiLHRoaXMuX3VuYmluZCgpLHRoaXMuX2RlYWN0aXZhdGUoKSx0 aGlzLl9maXJlRXZlbnQoInJvdGF0ZWVuZCIpLHRoaXMuX3BpdGNoV2l0aFJv dGF0ZSYmdGhpcy5fZmlyZUV2ZW50KCJwaXRjaGVuZCIpLHRoaXMuX2ZpcmVF dmVudCgibW92ZWVuZCIpO2JyZWFrO2Nhc2UicGVuZGluZyI6dGhpcy5fc3Rh dGU9ImRpc2FibGVkIix0aGlzLl91bmJpbmQoKTticmVhaztkZWZhdWx0OnRo aXMuX3N0YXRlPSJkaXNhYmxlZCJ9fSx4bi5wcm90b3R5cGUub25Nb3VzZURv d249ZnVuY3Rpb24oZSl7aWYoImVuYWJsZWQiPT09dGhpcy5fc3RhdGUpe3Zh ciBuPSJ0b3VjaHN0YXJ0Ij09PWUudHlwZTtpZihuKXRoaXMuX3N0YXJ0VGlt ZT1EYXRlLm5vdygpO2Vsc2UgaWYoInJpZ2h0Ij09PXRoaXMuX2J1dHRvbil7 aWYodGhpcy5fZXZlbnRCdXR0b249ci5tb3VzZUJ1dHRvbihlKSx0aGlzLl9l dmVudEJ1dHRvbiE9PShlLmN0cmxLZXk/MDoyKSlyZXR1cm59ZWxzZXtpZihl LmN0cmxLZXl8fDAhPT1yLm1vdXNlQnV0dG9uKGUpKXJldHVybjt0aGlzLl9l dmVudEJ1dHRvbj0wfXIuZGlzYWJsZURyYWcoKSxuPyh0LndpbmRvdy5kb2N1 bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMuX29uTW91 c2VNb3ZlLHtjYXB0dXJlOiEwfSksdC53aW5kb3cuZG9jdW1lbnQuYWRkRXZl bnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuX29uTW91c2VVcCkpOih0Lndp bmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRo aXMuX29uTW91c2VNb3ZlLHtjYXB0dXJlOiEwfSksdC53aW5kb3cuZG9jdW1l bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVw KSksdC53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fb25C bHVyKSx0aGlzLl9zdGF0ZT0icGVuZGluZyIsdGhpcy5faW5lcnRpYT1bW3Qu YnJvd3Nlci5ub3coKSx0aGlzLl9tYXAuZ2V0QmVhcmluZygpXV0sdGhpcy5f c3RhcnRQb3M9dGhpcy5fcHJldlBvcz10aGlzLl9sYXN0UG9zPXIubW91c2VQ b3ModGhpcy5fZWwsZSksdGhpcy5fY2VudGVyPXRoaXMuX21hcC50cmFuc2Zv cm0uY2VudGVyUG9pbnQsZS5wcmV2ZW50RGVmYXVsdCgpfX0seG4ucHJvdG90 eXBlLl9vbk1vdXNlTW92ZT1mdW5jdGlvbih0KXt2YXIgZT1yLm1vdXNlUG9z KHRoaXMuX2VsLHQpO3RoaXMuX2xhc3RQb3MuZXF1YWxzKGUpfHwodGhpcy5f bGFzdE1vdmVFdmVudD10LHRoaXMuX2xhc3RQb3M9ZSwicGVuZGluZyI9PT10 aGlzLl9zdGF0ZSYmKHRoaXMuX3N0YXRlPSJhY3RpdmUiLHRoaXMuX2ZpcmVF dmVudCgicm90YXRlc3RhcnQiLHQpLHRoaXMuX2ZpcmVFdmVudCgibW92ZXN0 YXJ0Iix0KSx0aGlzLl9waXRjaFdpdGhSb3RhdGUmJnRoaXMuX2ZpcmVFdmVu dCgicGl0Y2hzdGFydCIsdCkpLHRoaXMuX2ZyYW1lSWR8fCh0aGlzLl9mcmFt ZUlkPXRoaXMuX21hcC5fcmVxdWVzdFJlbmRlckZyYW1lKHRoaXMuX29uRHJh Z0ZyYW1lKSkpfSx4bi5wcm90b3R5cGUuX29uRHJhZ0ZyYW1lPWZ1bmN0aW9u KCl7dGhpcy5fZnJhbWVJZD1udWxsO3ZhciBlPXRoaXMuX2xhc3RNb3ZlRXZl bnQ7aWYoZSl7dmFyIHI9dGhpcy5fbWFwLnRyYW5zZm9ybSxuPXRoaXMuX3By ZXZQb3MsYT10aGlzLl9sYXN0UG9zLGk9LjgqKG4ueC1hLngpLG89LS41Kihu LnktYS55KSxzPXIuYmVhcmluZy1pLGw9ci5waXRjaC1vLGM9dGhpcy5faW5l cnRpYSx1PWNbYy5sZW5ndGgtMV07dGhpcy5fZHJhaW5JbmVydGlhQnVmZmVy KCksYy5wdXNoKFt0LmJyb3dzZXIubm93KCksdGhpcy5fbWFwLl9ub3JtYWxp emVCZWFyaW5nKHMsdVsxXSldKSxyLmJlYXJpbmc9cyx0aGlzLl9waXRjaFdp dGhSb3RhdGUmJih0aGlzLl9maXJlRXZlbnQoInBpdGNoIixlKSxyLnBpdGNo PWwpLHRoaXMuX2ZpcmVFdmVudCgicm90YXRlIixlKSx0aGlzLl9maXJlRXZl bnQoIm1vdmUiLGUpLGRlbGV0ZSB0aGlzLl9sYXN0TW92ZUV2ZW50LHRoaXMu X3ByZXZQb3M9dGhpcy5fbGFzdFBvc319LHhuLnByb3RvdHlwZS5fb25Nb3Vz ZVVwPWZ1bmN0aW9uKHQpe2lmKCJ0b3VjaGVuZCI9PT10LnR5cGUmJnRoaXMu X3N0YXJ0UG9zPT09dGhpcy5fbGFzdFBvcyYmRGF0ZS5ub3coKS10aGlzLl9z dGFydFRpbWU8MzAwJiZ0aGlzLl9lbC5jbGljaygpLHIubW91c2VCdXR0b24o dCk9PT10aGlzLl9ldmVudEJ1dHRvbilzd2l0Y2godGhpcy5fc3RhdGUpe2Nh c2UiYWN0aXZlIjp0aGlzLl9zdGF0ZT0iZW5hYmxlZCIsci5zdXBwcmVzc0Ns aWNrKCksdGhpcy5fdW5iaW5kKCksdGhpcy5fZGVhY3RpdmF0ZSgpLHRoaXMu X2luZXJ0aWFsUm90YXRlKHQpO2JyZWFrO2Nhc2UicGVuZGluZyI6dGhpcy5f c3RhdGU9ImVuYWJsZWQiLHRoaXMuX3VuYmluZCgpfX0seG4ucHJvdG90eXBl Ll9vbkJsdXI9ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuX3N0YXRlKXtjYXNl ImFjdGl2ZSI6dGhpcy5fc3RhdGU9ImVuYWJsZWQiLHRoaXMuX3VuYmluZCgp LHRoaXMuX2RlYWN0aXZhdGUoKSx0aGlzLl9maXJlRXZlbnQoInJvdGF0ZWVu ZCIsdCksdGhpcy5fcGl0Y2hXaXRoUm90YXRlJiZ0aGlzLl9maXJlRXZlbnQo InBpdGNoZW5kIix0KSx0aGlzLl9maXJlRXZlbnQoIm1vdmVlbmQiLHQpO2Jy ZWFrO2Nhc2UicGVuZGluZyI6dGhpcy5fc3RhdGU9ImVuYWJsZWQiLHRoaXMu X3VuYmluZCgpfX0seG4ucHJvdG90eXBlLl91bmJpbmQ9ZnVuY3Rpb24oKXt0 LndpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1v dmUiLHRoaXMuX29uTW91c2VNb3ZlLHtjYXB0dXJlOiEwfSksdC53aW5kb3cu ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5f b25Nb3VzZVVwKSx0LndpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3Rl bmVyKCJ0b3VjaG1vdmUiLHRoaXMuX29uTW91c2VNb3ZlLHtjYXB0dXJlOiEw fSksdC53aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91 Y2hlbmQiLHRoaXMuX29uTW91c2VVcCksdC53aW5kb3cucmVtb3ZlRXZlbnRM aXN0ZW5lcigiYmx1ciIsdGhpcy5fb25CbHVyKSxyLmVuYWJsZURyYWcoKX0s eG4ucHJvdG90eXBlLl9kZWFjdGl2YXRlPWZ1bmN0aW9uKCl7dGhpcy5fZnJh bWVJZCYmKHRoaXMuX21hcC5fY2FuY2VsUmVuZGVyRnJhbWUodGhpcy5fZnJh bWVJZCksdGhpcy5fZnJhbWVJZD1udWxsKSxkZWxldGUgdGhpcy5fbGFzdE1v dmVFdmVudCxkZWxldGUgdGhpcy5fc3RhcnRQb3MsZGVsZXRlIHRoaXMuX3By ZXZQb3MsZGVsZXRlIHRoaXMuX2xhc3RQb3N9LHhuLnByb3RvdHlwZS5faW5l cnRpYWxSb3RhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9maXJl RXZlbnQoInJvdGF0ZWVuZCIsdCksdGhpcy5fZHJhaW5JbmVydGlhQnVmZmVy KCk7dmFyIHI9dGhpcy5fbWFwLG49ci5nZXRCZWFyaW5nKCksYT10aGlzLl9p bmVydGlhLGk9ZnVuY3Rpb24oKXtNYXRoLmFicyhuKTxlLl9iZWFyaW5nU25h cD9yLnJlc2V0Tm9ydGgoe25vTW92ZVN0YXJ0OiEwfSx7b3JpZ2luYWxFdmVu dDp0fSk6ZS5fZmlyZUV2ZW50KCJtb3ZlZW5kIix0KSxlLl9waXRjaFdpdGhS b3RhdGUmJmUuX2ZpcmVFdmVudCgicGl0Y2hlbmQiLHQpfTtpZihhLmxlbmd0 aDwyKWkoKTtlbHNle3ZhciBvPWFbMF0scz1hW2EubGVuZ3RoLTFdLGw9YVth Lmxlbmd0aC0yXSxjPXIuX25vcm1hbGl6ZUJlYXJpbmcobixsWzFdKSx1PXNb MV0tb1sxXSxoPXU8MD8tMToxLGY9KHNbMF0tb1swXSkvMWUzO2lmKDAhPT11 JiYwIT09Zil7dmFyIHA9TWF0aC5hYnModSooLjI1L2YpKTtwPjE4MCYmKHA9 MTgwKTt2YXIgZD1wLzE4MDtjKz1oKnAqKGQvMiksTWF0aC5hYnMoci5fbm9y bWFsaXplQmVhcmluZyhjLDApKTx0aGlzLl9iZWFyaW5nU25hcCYmKGM9ci5f bm9ybWFsaXplQmVhcmluZygwLGMpKSxyLnJvdGF0ZVRvKGMse2R1cmF0aW9u OjFlMypkLGVhc2luZzp5bixub01vdmVTdGFydDohMH0se29yaWdpbmFsRXZl bnQ6dH0pfWVsc2UgaSgpfX0seG4ucHJvdG90eXBlLl9maXJlRXZlbnQ9ZnVu Y3Rpb24oZSxyKXtyZXR1cm4gdGhpcy5fbWFwLmZpcmUobmV3IHQuRXZlbnQo ZSxyP3tvcmlnaW5hbEV2ZW50OnJ9Ont9KSl9LHhuLnByb3RvdHlwZS5fZHJh aW5JbmVydGlhQnVmZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuX2lu ZXJ0aWEscj10LmJyb3dzZXIubm93KCk7ZS5sZW5ndGg+MCYmci1lWzBdWzBd PjE2MDspZS5zaGlmdCgpfTt2YXIgYm49dC5iZXppZXIoMCwwLC4zLDEpLF9u PWZ1bmN0aW9uKGUscil7dGhpcy5fbWFwPWUsdGhpcy5fZWw9ZS5nZXRDYW52 YXNDb250YWluZXIoKSx0aGlzLl9zdGF0ZT0iZGlzYWJsZWQiLHRoaXMuX2Ns aWNrVG9sZXJhbmNlPXIuY2xpY2tUb2xlcmFuY2V8fDEsdC5iaW5kQWxsKFsi X29uTW92ZSIsIl9vbk1vdXNlVXAiLCJfb25Ub3VjaEVuZCIsIl9vbkJsdXIi LCJfb25EcmFnRnJhbWUiXSx0aGlzKX07X24ucHJvdG90eXBlLmlzRW5hYmxl ZD1mdW5jdGlvbigpe3JldHVybiJkaXNhYmxlZCIhPT10aGlzLl9zdGF0ZX0s X24ucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuImFjdGl2 ZSI9PT10aGlzLl9zdGF0ZX0sX24ucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlv bigpe3RoaXMuaXNFbmFibGVkKCl8fCh0aGlzLl9lbC5jbGFzc0xpc3QuYWRk KCJtYXBib3hnbC10b3VjaC1kcmFnLXBhbiIpLHRoaXMuX3N0YXRlPSJlbmFi bGVkIil9LF9uLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7aWYodGhp cy5pc0VuYWJsZWQoKSlzd2l0Y2godGhpcy5fZWwuY2xhc3NMaXN0LnJlbW92 ZSgibWFwYm94Z2wtdG91Y2gtZHJhZy1wYW4iKSx0aGlzLl9zdGF0ZSl7Y2Fz ZSJhY3RpdmUiOnRoaXMuX3N0YXRlPSJkaXNhYmxlZCIsdGhpcy5fdW5iaW5k KCksdGhpcy5fZGVhY3RpdmF0ZSgpLHRoaXMuX2ZpcmVFdmVudCgiZHJhZ2Vu ZCIpLHRoaXMuX2ZpcmVFdmVudCgibW92ZWVuZCIpO2JyZWFrO2Nhc2UicGVu ZGluZyI6dGhpcy5fc3RhdGU9ImRpc2FibGVkIix0aGlzLl91bmJpbmQoKTti cmVhaztkZWZhdWx0OnRoaXMuX3N0YXRlPSJkaXNhYmxlZCJ9fSxfbi5wcm90 b3R5cGUub25Nb3VzZURvd249ZnVuY3Rpb24oZSl7ImVuYWJsZWQiPT09dGhp cy5fc3RhdGUmJihlLmN0cmxLZXl8fDAhPT1yLm1vdXNlQnV0dG9uKGUpfHwo ci5hZGRFdmVudExpc3RlbmVyKHQud2luZG93LmRvY3VtZW50LCJtb3VzZW1v dmUiLHRoaXMuX29uTW92ZSx7Y2FwdHVyZTohMH0pLHIuYWRkRXZlbnRMaXN0 ZW5lcih0LndpbmRvdy5kb2N1bWVudCwibW91c2V1cCIsdGhpcy5fb25Nb3Vz ZVVwKSx0aGlzLl9zdGFydChlKSkpfSxfbi5wcm90b3R5cGUub25Ub3VjaFN0 YXJ0PWZ1bmN0aW9uKGUpeyJlbmFibGVkIj09PXRoaXMuX3N0YXRlJiYoZS50 b3VjaGVzLmxlbmd0aD4xfHwoci5hZGRFdmVudExpc3RlbmVyKHQud2luZG93 LmRvY3VtZW50LCJ0b3VjaG1vdmUiLHRoaXMuX29uTW92ZSx7Y2FwdHVyZToh MCxwYXNzaXZlOiExfSksci5hZGRFdmVudExpc3RlbmVyKHQud2luZG93LmRv Y3VtZW50LCJ0b3VjaGVuZCIsdGhpcy5fb25Ub3VjaEVuZCksdGhpcy5fc3Rh cnQoZSkpKX0sX24ucHJvdG90eXBlLl9zdGFydD1mdW5jdGlvbihlKXt0Lndp bmRvdy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9vbkJsdXIpLHRo aXMuX3N0YXRlPSJwZW5kaW5nIix0aGlzLl9zdGFydFBvcz10aGlzLl9tb3Vz ZURvd25Qb3M9dGhpcy5fcHJldlBvcz10aGlzLl9sYXN0UG9zPXIubW91c2VQ b3ModGhpcy5fZWwsZSksdGhpcy5faW5lcnRpYT1bW3QuYnJvd3Nlci5ub3co KSx0aGlzLl9zdGFydFBvc11dfSxfbi5wcm90b3R5cGUuX29uTW92ZT1mdW5j dGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIG49ci5tb3VzZVBvcyh0 aGlzLl9lbCxlKTt0aGlzLl9sYXN0UG9zLmVxdWFscyhuKXx8InBlbmRpbmci PT09dGhpcy5fc3RhdGUmJm4uZGlzdCh0aGlzLl9tb3VzZURvd25Qb3MpPHRo aXMuX2NsaWNrVG9sZXJhbmNlfHwodGhpcy5fbGFzdE1vdmVFdmVudD1lLHRo aXMuX2xhc3RQb3M9bix0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKSx0aGlz Ll9pbmVydGlhLnB1c2goW3QuYnJvd3Nlci5ub3coKSx0aGlzLl9sYXN0UG9z XSksInBlbmRpbmciPT09dGhpcy5fc3RhdGUmJih0aGlzLl9zdGF0ZT0iYWN0 aXZlIix0aGlzLl9maXJlRXZlbnQoImRyYWdzdGFydCIsZSksdGhpcy5fZmly ZUV2ZW50KCJtb3Zlc3RhcnQiLGUpKSx0aGlzLl9mcmFtZUlkfHwodGhpcy5f ZnJhbWVJZD10aGlzLl9tYXAuX3JlcXVlc3RSZW5kZXJGcmFtZSh0aGlzLl9v bkRyYWdGcmFtZSkpKX0sX24ucHJvdG90eXBlLl9vbkRyYWdGcmFtZT1mdW5j dGlvbigpe3RoaXMuX2ZyYW1lSWQ9bnVsbDt2YXIgdD10aGlzLl9sYXN0TW92 ZUV2ZW50O2lmKHQpe3ZhciBlPXRoaXMuX21hcC50cmFuc2Zvcm07ZS5zZXRM b2NhdGlvbkF0UG9pbnQoZS5wb2ludExvY2F0aW9uKHRoaXMuX3ByZXZQb3Mp LHRoaXMuX2xhc3RQb3MpLHRoaXMuX2ZpcmVFdmVudCgiZHJhZyIsdCksdGhp cy5fZmlyZUV2ZW50KCJtb3ZlIix0KSx0aGlzLl9wcmV2UG9zPXRoaXMuX2xh c3RQb3MsZGVsZXRlIHRoaXMuX2xhc3RNb3ZlRXZlbnR9fSxfbi5wcm90b3R5 cGUuX29uTW91c2VVcD1mdW5jdGlvbih0KXtpZigwPT09ci5tb3VzZUJ1dHRv bih0KSlzd2l0Y2godGhpcy5fc3RhdGUpe2Nhc2UiYWN0aXZlIjp0aGlzLl9z dGF0ZT0iZW5hYmxlZCIsci5zdXBwcmVzc0NsaWNrKCksdGhpcy5fdW5iaW5k KCksdGhpcy5fZGVhY3RpdmF0ZSgpLHRoaXMuX2luZXJ0aWFsUGFuKHQpO2Jy ZWFrO2Nhc2UicGVuZGluZyI6dGhpcy5fc3RhdGU9ImVuYWJsZWQiLHRoaXMu X3VuYmluZCgpfX0sX24ucHJvdG90eXBlLl9vblRvdWNoRW5kPWZ1bmN0aW9u KHQpe3N3aXRjaCh0aGlzLl9zdGF0ZSl7Y2FzZSJhY3RpdmUiOnRoaXMuX3N0 YXRlPSJlbmFibGVkIix0aGlzLl91bmJpbmQoKSx0aGlzLl9kZWFjdGl2YXRl KCksdGhpcy5faW5lcnRpYWxQYW4odCk7YnJlYWs7Y2FzZSJwZW5kaW5nIjp0 aGlzLl9zdGF0ZT0iZW5hYmxlZCIsdGhpcy5fdW5iaW5kKCl9fSxfbi5wcm90 b3R5cGUuX29uQmx1cj1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5fc3RhdGUp e2Nhc2UiYWN0aXZlIjp0aGlzLl9zdGF0ZT0iZW5hYmxlZCIsdGhpcy5fdW5i aW5kKCksdGhpcy5fZGVhY3RpdmF0ZSgpLHRoaXMuX2ZpcmVFdmVudCgiZHJh Z2VuZCIsdCksdGhpcy5fZmlyZUV2ZW50KCJtb3ZlZW5kIix0KTticmVhaztj YXNlInBlbmRpbmciOnRoaXMuX3N0YXRlPSJlbmFibGVkIix0aGlzLl91bmJp bmQoKX19LF9uLnByb3RvdHlwZS5fdW5iaW5kPWZ1bmN0aW9uKCl7ci5yZW1v dmVFdmVudExpc3RlbmVyKHQud2luZG93LmRvY3VtZW50LCJ0b3VjaG1vdmUi LHRoaXMuX29uTW92ZSx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSksci5yZW1v dmVFdmVudExpc3RlbmVyKHQud2luZG93LmRvY3VtZW50LCJ0b3VjaGVuZCIs dGhpcy5fb25Ub3VjaEVuZCksci5yZW1vdmVFdmVudExpc3RlbmVyKHQud2lu ZG93LmRvY3VtZW50LCJtb3VzZW1vdmUiLHRoaXMuX29uTW92ZSx7Y2FwdHVy ZTohMH0pLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LndpbmRvdy5kb2N1bWVu dCwibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVwKSxyLnJlbW92ZUV2ZW50TGlz dGVuZXIodC53aW5kb3csImJsdXIiLHRoaXMuX29uQmx1cil9LF9uLnByb3Rv dHlwZS5fZGVhY3RpdmF0ZT1mdW5jdGlvbigpe3RoaXMuX2ZyYW1lSWQmJih0 aGlzLl9tYXAuX2NhbmNlbFJlbmRlckZyYW1lKHRoaXMuX2ZyYW1lSWQpLHRo aXMuX2ZyYW1lSWQ9bnVsbCksZGVsZXRlIHRoaXMuX2xhc3RNb3ZlRXZlbnQs ZGVsZXRlIHRoaXMuX3N0YXJ0UG9zLGRlbGV0ZSB0aGlzLl9wcmV2UG9zLGRl bGV0ZSB0aGlzLl9tb3VzZURvd25Qb3MsZGVsZXRlIHRoaXMuX2xhc3RQb3N9 LF9uLnByb3RvdHlwZS5faW5lcnRpYWxQYW49ZnVuY3Rpb24odCl7dGhpcy5f ZmlyZUV2ZW50KCJkcmFnZW5kIix0KSx0aGlzLl9kcmFpbkluZXJ0aWFCdWZm ZXIoKTt2YXIgZT10aGlzLl9pbmVydGlhO2lmKGUubGVuZ3RoPDIpdGhpcy5f ZmlyZUV2ZW50KCJtb3ZlZW5kIix0KTtlbHNle3ZhciByPWVbZS5sZW5ndGgt MV0sbj1lWzBdLGE9clsxXS5zdWIoblsxXSksaT0oclswXS1uWzBdKS8xZTM7 aWYoMD09PWl8fHJbMV0uZXF1YWxzKG5bMV0pKXRoaXMuX2ZpcmVFdmVudCgi bW92ZWVuZCIsdCk7ZWxzZXt2YXIgbz1hLm11bHQoLjMvaSkscz1vLm1hZygp O3M+MTQwMCYmKHM9MTQwMCxvLl91bml0KCkuX211bHQocykpO3ZhciBsPXMv NzUwLGM9by5tdWx0KC1sLzIpO3RoaXMuX21hcC5wYW5CeShjLHtkdXJhdGlv bjoxZTMqbCxlYXNpbmc6Ym4sbm9Nb3ZlU3RhcnQ6ITB9LHtvcmlnaW5hbEV2 ZW50OnR9KX19fSxfbi5wcm90b3R5cGUuX2ZpcmVFdmVudD1mdW5jdGlvbihl LHIpe3JldHVybiB0aGlzLl9tYXAuZmlyZShuZXcgdC5FdmVudChlLHI/e29y aWdpbmFsRXZlbnQ6cn06e30pKX0sX24ucHJvdG90eXBlLl9kcmFpbkluZXJ0 aWFCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5faW5lcnRpYSxy PXQuYnJvd3Nlci5ub3coKTtlLmxlbmd0aD4wJiZyLWVbMF1bMF0+MTYwOyll LnNoaWZ0KCl9O3ZhciB3bj1mdW5jdGlvbihlKXt0aGlzLl9tYXA9ZSx0aGlz Ll9lbD1lLmdldENhbnZhc0NvbnRhaW5lcigpLHQuYmluZEFsbChbIl9vbktl eURvd24iXSx0aGlzKX07ZnVuY3Rpb24ga24odCl7cmV0dXJuIHQqKDItdCl9 d24ucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiEhdGhp cy5fZW5hYmxlZH0sd24ucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3Ro aXMuaXNFbmFibGVkKCl8fCh0aGlzLl9lbC5hZGRFdmVudExpc3RlbmVyKCJr ZXlkb3duIix0aGlzLl9vbktleURvd24sITEpLHRoaXMuX2VuYWJsZWQ9ITAp fSx3bi5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuaXNFbmFi bGVkKCkmJih0aGlzLl9lbC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3du Iix0aGlzLl9vbktleURvd24pLHRoaXMuX2VuYWJsZWQ9ITEpfSx3bi5wcm90 b3R5cGUuX29uS2V5RG93bj1mdW5jdGlvbih0KXtpZighKHQuYWx0S2V5fHx0 LmN0cmxLZXl8fHQubWV0YUtleSkpe3ZhciBlPTAscj0wLG49MCxhPTAsaT0w O3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgNjE6Y2FzZSAxMDc6Y2FzZSAxNzE6 Y2FzZSAxODc6ZT0xO2JyZWFrO2Nhc2UgMTg5OmNhc2UgMTA5OmNhc2UgMTcz OmU9LTE7YnJlYWs7Y2FzZSAzNzp0LnNoaWZ0S2V5P3I9LTE6KHQucHJldmVu dERlZmF1bHQoKSxhPS0xKTticmVhaztjYXNlIDM5OnQuc2hpZnRLZXk/cj0x Oih0LnByZXZlbnREZWZhdWx0KCksYT0xKTticmVhaztjYXNlIDM4OnQuc2hp ZnRLZXk/bj0xOih0LnByZXZlbnREZWZhdWx0KCksaT0tMSk7YnJlYWs7Y2Fz ZSA0MDp0LnNoaWZ0S2V5P249LTE6KGk9MSx0LnByZXZlbnREZWZhdWx0KCkp O2JyZWFrO2RlZmF1bHQ6cmV0dXJufXZhciBvPXRoaXMuX21hcCxzPW8uZ2V0 Wm9vbSgpLGw9e2R1cmF0aW9uOjMwMCxkZWxheUVuZEV2ZW50czo1MDAsZWFz aW5nOmtuLHpvb206ZT9NYXRoLnJvdW5kKHMpK2UqKHQuc2hpZnRLZXk/Mjox KTpzLGJlYXJpbmc6by5nZXRCZWFyaW5nKCkrMTUqcixwaXRjaDpvLmdldFBp dGNoKCkrMTAqbixvZmZzZXQ6WzEwMCotYSwxMDAqLWldLGNlbnRlcjpvLmdl dENlbnRlcigpfTtvLmVhc2VUbyhsLHtvcmlnaW5hbEV2ZW50OnR9KX19O3Zh ciBUbj1mdW5jdGlvbihlKXt0aGlzLl9tYXA9ZSx0LmJpbmRBbGwoWyJfb25E YmxDbGljayIsIl9vblpvb21FbmQiXSx0aGlzKX07VG4ucHJvdG90eXBlLmlz RW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH0sVG4u cHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9h Y3RpdmV9LFRuLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmlz RW5hYmxlZCgpfHwodGhpcy5fZW5hYmxlZD0hMCl9LFRuLnByb3RvdHlwZS5k aXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKSYmKHRoaXMuX2Vu YWJsZWQ9ITEpfSxUbi5wcm90b3R5cGUub25Ub3VjaFN0YXJ0PWZ1bmN0aW9u KHQpe3ZhciBlPXRoaXM7aWYodGhpcy5pc0VuYWJsZWQoKSYmISh0LnBvaW50 cy5sZW5ndGg+MSkpaWYodGhpcy5fdGFwcGVkKXt2YXIgcj10LnBvaW50c1sw XSxuPXRoaXMuX3RhcHBlZFBvaW50O2lmKG4mJm4uZGlzdChyKTw9MzApe3Qu b3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBhPWZ1bmN0aW9u KCl7ZS5fdGFwcGVkJiZlLl96b29tKHQpLGUuX21hcC5vZmYoInRvdWNoY2Fu Y2VsIixpKSxlLl9yZXNldFRhcHBlZCgpfSxpPWZ1bmN0aW9uKCl7ZS5fbWFw Lm9mZigidG91Y2hlbmQiLGEpLGUuX3Jlc2V0VGFwcGVkKCl9O3RoaXMuX21h cC5vbmNlKCJ0b3VjaGVuZCIsYSksdGhpcy5fbWFwLm9uY2UoInRvdWNoY2Fu Y2VsIixpKX1lbHNlIHRoaXMuX3Jlc2V0VGFwcGVkKCl9ZWxzZSB0aGlzLl90 YXBwZWRQb2ludD10LnBvaW50c1swXSx0aGlzLl90YXBwZWQ9c2V0VGltZW91 dChmdW5jdGlvbigpe2UuX3RhcHBlZD1udWxsLGUuX3RhcHBlZFBvaW50PW51 bGx9LDMwMCl9LFRuLnByb3RvdHlwZS5fcmVzZXRUYXBwZWQ9ZnVuY3Rpb24o KXtjbGVhclRpbWVvdXQodGhpcy5fdGFwcGVkKSx0aGlzLl90YXBwZWQ9bnVs bCx0aGlzLl90YXBwZWRQb2ludD1udWxsfSxUbi5wcm90b3R5cGUub25EYmxD bGljaz1mdW5jdGlvbih0KXt0aGlzLmlzRW5hYmxlZCgpJiYodC5vcmlnaW5h bEV2ZW50LnByZXZlbnREZWZhdWx0KCksdGhpcy5fem9vbSh0KSl9LFRuLnBy b3RvdHlwZS5fem9vbT1mdW5jdGlvbih0KXt0aGlzLl9hY3RpdmU9ITAsdGhp cy5fbWFwLm9uKCJ6b29tZW5kIix0aGlzLl9vblpvb21FbmQpLHRoaXMuX21h cC56b29tVG8odGhpcy5fbWFwLmdldFpvb20oKSsodC5vcmlnaW5hbEV2ZW50 LnNoaWZ0S2V5Py0xOjEpLHthcm91bmQ6dC5sbmdMYXR9LHQpfSxUbi5wcm90 b3R5cGUuX29uWm9vbUVuZD1mdW5jdGlvbigpe3RoaXMuX2FjdGl2ZT0hMSx0 aGlzLl9tYXAub2ZmKCJ6b29tZW5kIix0aGlzLl9vblpvb21FbmQpfTt2YXIg TW49dC5iZXppZXIoMCwwLC4xNSwxKSxBbj1mdW5jdGlvbihlKXt0aGlzLl9t YXA9ZSx0aGlzLl9lbD1lLmdldENhbnZhc0NvbnRhaW5lcigpLHQuYmluZEFs bChbIl9vbk1vdmUiLCJfb25FbmQiLCJfb25Ub3VjaEZyYW1lIl0sdGhpcyl9 O0FuLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRo aXMuX2VuYWJsZWR9LEFuLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCl7 dGhpcy5pc0VuYWJsZWQoKXx8KHRoaXMuX2VsLmNsYXNzTGlzdC5hZGQoIm1h cGJveGdsLXRvdWNoLXpvb20tcm90YXRlIiksdGhpcy5fZW5hYmxlZD0hMCx0 aGlzLl9hcm91bmRDZW50ZXI9ISF0JiYiY2VudGVyIj09PXQuYXJvdW5kKX0s QW4ucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxl ZCgpJiYodGhpcy5fZWwuY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtdG91 Y2gtem9vbS1yb3RhdGUiKSx0aGlzLl9lbmFibGVkPSExKX0sQW4ucHJvdG90 eXBlLmRpc2FibGVSb3RhdGlvbj1mdW5jdGlvbigpe3RoaXMuX3JvdGF0aW9u RGlzYWJsZWQ9ITB9LEFuLnByb3RvdHlwZS5lbmFibGVSb3RhdGlvbj1mdW5j dGlvbigpe3RoaXMuX3JvdGF0aW9uRGlzYWJsZWQ9ITF9LEFuLnByb3RvdHlw ZS5vblN0YXJ0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNFbmFibGVkKCkmJjI9 PT1lLnRvdWNoZXMubGVuZ3RoKXt2YXIgbj1yLm1vdXNlUG9zKHRoaXMuX2Vs LGUudG91Y2hlc1swXSksYT1yLm1vdXNlUG9zKHRoaXMuX2VsLGUudG91Y2hl c1sxXSksaT1uLmFkZChhKS5kaXYoMik7dGhpcy5fc3RhcnRWZWM9bi5zdWIo YSksdGhpcy5fc3RhcnRBcm91bmQ9dGhpcy5fbWFwLnRyYW5zZm9ybS5wb2lu dExvY2F0aW9uKGkpLHRoaXMuX2dlc3R1cmVJbnRlbnQ9dm9pZCAwLHRoaXMu X2luZXJ0aWE9W10sci5hZGRFdmVudExpc3RlbmVyKHQud2luZG93LmRvY3Vt ZW50LCJ0b3VjaG1vdmUiLHRoaXMuX29uTW92ZSx7cGFzc2l2ZTohMX0pLHIu YWRkRXZlbnRMaXN0ZW5lcih0LndpbmRvdy5kb2N1bWVudCwidG91Y2hlbmQi LHRoaXMuX29uRW5kKX19LEFuLnByb3RvdHlwZS5fZ2V0VG91Y2hFdmVudERh dGE9ZnVuY3Rpb24odCl7dmFyIGU9ci5tb3VzZVBvcyh0aGlzLl9lbCx0LnRv dWNoZXNbMF0pLG49ci5tb3VzZVBvcyh0aGlzLl9lbCx0LnRvdWNoZXNbMV0p LGE9ZS5zdWIobik7cmV0dXJue3ZlYzphLGNlbnRlcjplLmFkZChuKS5kaXYo Miksc2NhbGU6YS5tYWcoKS90aGlzLl9zdGFydFZlYy5tYWcoKSxiZWFyaW5n OnRoaXMuX3JvdGF0aW9uRGlzYWJsZWQ/MDoxODAqYS5hbmdsZVdpdGgodGhp cy5fc3RhcnRWZWMpL01hdGguUEl9fSxBbi5wcm90b3R5cGUuX29uTW92ZT1m dW5jdGlvbihlKXtpZigyPT09ZS50b3VjaGVzLmxlbmd0aCl7dmFyIHI9dGhp cy5fZ2V0VG91Y2hFdmVudERhdGEoZSksbj1yLnZlYyxhPXIuc2NhbGUsaT1y LmJlYXJpbmc7aWYoIXRoaXMuX2dlc3R1cmVJbnRlbnQpe3ZhciBvPXRoaXMu X3JvdGF0aW9uRGlzYWJsZWQmJjEhPT1hfHxNYXRoLmFicygxLWEpPi4xNTtN YXRoLmFicyhpKT4xMD90aGlzLl9nZXN0dXJlSW50ZW50PSJyb3RhdGUiOm8m Jih0aGlzLl9nZXN0dXJlSW50ZW50PSJ6b29tIiksdGhpcy5fZ2VzdHVyZUlu dGVudCYmKHRoaXMuX21hcC5maXJlKG5ldyB0LkV2ZW50KHRoaXMuX2dlc3R1 cmVJbnRlbnQrInN0YXJ0Iix7b3JpZ2luYWxFdmVudDplfSkpLHRoaXMuX21h cC5maXJlKG5ldyB0LkV2ZW50KCJtb3Zlc3RhcnQiLHtvcmlnaW5hbEV2ZW50 OmV9KSksdGhpcy5fc3RhcnRWZWM9bil9dGhpcy5fbGFzdFRvdWNoRXZlbnQ9 ZSx0aGlzLl9mcmFtZUlkfHwodGhpcy5fZnJhbWVJZD10aGlzLl9tYXAuX3Jl cXVlc3RSZW5kZXJGcmFtZSh0aGlzLl9vblRvdWNoRnJhbWUpKSxlLnByZXZl bnREZWZhdWx0KCl9fSxBbi5wcm90b3R5cGUuX29uVG91Y2hGcmFtZT1mdW5j dGlvbigpe3RoaXMuX2ZyYW1lSWQ9bnVsbDt2YXIgZT10aGlzLl9nZXN0dXJl SW50ZW50O2lmKGUpe3ZhciByPXRoaXMuX21hcC50cmFuc2Zvcm07dGhpcy5f c3RhcnRTY2FsZXx8KHRoaXMuX3N0YXJ0U2NhbGU9ci5zY2FsZSx0aGlzLl9z dGFydEJlYXJpbmc9ci5iZWFyaW5nKTt2YXIgbj10aGlzLl9nZXRUb3VjaEV2 ZW50RGF0YSh0aGlzLl9sYXN0VG91Y2hFdmVudCksYT1uLmNlbnRlcixpPW4u YmVhcmluZyxvPW4uc2NhbGUscz1yLnBvaW50TG9jYXRpb24oYSksbD1yLmxv Y2F0aW9uUG9pbnQocyk7InJvdGF0ZSI9PT1lJiYoci5iZWFyaW5nPXRoaXMu X3N0YXJ0QmVhcmluZytpKSxyLnpvb209ci5zY2FsZVpvb20odGhpcy5fc3Rh cnRTY2FsZSpvKSxyLnNldExvY2F0aW9uQXRQb2ludCh0aGlzLl9zdGFydEFy b3VuZCxsKSx0aGlzLl9tYXAuZmlyZShuZXcgdC5FdmVudChlLHtvcmlnaW5h bEV2ZW50OnRoaXMuX2xhc3RUb3VjaEV2ZW50fSkpLHRoaXMuX21hcC5maXJl KG5ldyB0LkV2ZW50KCJtb3ZlIix7b3JpZ2luYWxFdmVudDp0aGlzLl9sYXN0 VG91Y2hFdmVudH0pKSx0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKSx0aGlz Ll9pbmVydGlhLnB1c2goW3QuYnJvd3Nlci5ub3coKSxvLGFdKX19LEFuLnBy b3RvdHlwZS5fb25FbmQ9ZnVuY3Rpb24oZSl7ci5yZW1vdmVFdmVudExpc3Rl bmVyKHQud2luZG93LmRvY3VtZW50LCJ0b3VjaG1vdmUiLHRoaXMuX29uTW92 ZSx7cGFzc2l2ZTohMX0pLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LndpbmRv dy5kb2N1bWVudCwidG91Y2hlbmQiLHRoaXMuX29uRW5kKTt2YXIgbj10aGlz Ll9nZXN0dXJlSW50ZW50LGE9dGhpcy5fc3RhcnRTY2FsZTtpZih0aGlzLl9m cmFtZUlkJiYodGhpcy5fbWFwLl9jYW5jZWxSZW5kZXJGcmFtZSh0aGlzLl9m cmFtZUlkKSx0aGlzLl9mcmFtZUlkPW51bGwpLGRlbGV0ZSB0aGlzLl9nZXN0 dXJlSW50ZW50LGRlbGV0ZSB0aGlzLl9zdGFydFNjYWxlLGRlbGV0ZSB0aGlz Ll9zdGFydEJlYXJpbmcsZGVsZXRlIHRoaXMuX2xhc3RUb3VjaEV2ZW50LG4p e3RoaXMuX21hcC5maXJlKG5ldyB0LkV2ZW50KG4rImVuZCIse29yaWdpbmFs RXZlbnQ6ZX0pKSx0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKTt2YXIgaT10 aGlzLl9pbmVydGlhLG89dGhpcy5fbWFwO2lmKGkubGVuZ3RoPDIpby5zbmFw VG9Ob3J0aCh7fSx7b3JpZ2luYWxFdmVudDplfSk7ZWxzZXt2YXIgcz1pW2ku bGVuZ3RoLTFdLGw9aVswXSxjPW8udHJhbnNmb3JtLnNjYWxlWm9vbShhKnNb MV0pLHU9by50cmFuc2Zvcm0uc2NhbGVab29tKGEqbFsxXSksaD1jLXUsZj0o c1swXS1sWzBdKS8xZTMscD1zWzJdO2lmKDAhPT1mJiZjIT09dSl7dmFyIGQ9 LjE1KmgvZjtNYXRoLmFicyhkKT4yLjUmJihkPWQ+MD8yLjU6LTIuNSk7dmFy IGc9MWUzKk1hdGguYWJzKGQvKDEyKi4xNSkpLHY9YytkKmcvMmUzO3Y8MCYm KHY9MCksby5lYXNlVG8oe3pvb206dixkdXJhdGlvbjpnLGVhc2luZzpNbixh cm91bmQ6dGhpcy5fYXJvdW5kQ2VudGVyP28uZ2V0Q2VudGVyKCk6by51bnBy b2plY3QocCksbm9Nb3ZlU3RhcnQ6ITB9LHtvcmlnaW5hbEV2ZW50OmV9KX1l bHNlIG8uc25hcFRvTm9ydGgoe30se29yaWdpbmFsRXZlbnQ6ZX0pfX19LEFu LnByb3RvdHlwZS5fZHJhaW5JbmVydGlhQnVmZmVyPWZ1bmN0aW9uKCl7Zm9y KHZhciBlPXRoaXMuX2luZXJ0aWEscj10LmJyb3dzZXIubm93KCk7ZS5sZW5n dGg+MiYmci1lWzBdWzBdPjE2MDspZS5zaGlmdCgpfTt2YXIgU249e3Njcm9s bFpvb206dm4sYm94Wm9vbTptbixkcmFnUm90YXRlOnhuLGRyYWdQYW46X24s a2V5Ym9hcmQ6d24sZG91YmxlQ2xpY2tab29tOlRuLHRvdWNoWm9vbVJvdGF0 ZTpBbn0sRW49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihyLG4pe2UuY2FsbCh0 aGlzKSx0aGlzLl9tb3Zpbmc9ITEsdGhpcy5fem9vbWluZz0hMSx0aGlzLnRy YW5zZm9ybT1yLHRoaXMuX2JlYXJpbmdTbmFwPW4uYmVhcmluZ1NuYXAsdC5i aW5kQWxsKFsiX3JlbmRlckZyYW1lQ2FsbGJhY2siXSx0aGlzKX1yZXR1cm4g ZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo ZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5w cm90b3R5cGUuZ2V0Q2VudGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0Lkxu Z0xhdCh0aGlzLnRyYW5zZm9ybS5jZW50ZXIubG5nLHRoaXMudHJhbnNmb3Jt LmNlbnRlci5sYXQpfSxyLnByb3RvdHlwZS5zZXRDZW50ZXI9ZnVuY3Rpb24o dCxlKXtyZXR1cm4gdGhpcy5qdW1wVG8oe2NlbnRlcjp0fSxlKX0sci5wcm90 b3R5cGUucGFuQnk9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBlPXQuUG9pbnQu Y29udmVydChlKS5tdWx0KC0xKSx0aGlzLnBhblRvKHRoaXMudHJhbnNmb3Jt LmNlbnRlcix0LmV4dGVuZCh7b2Zmc2V0OmV9LHIpLG4pfSxyLnByb3RvdHlw ZS5wYW5Ubz1mdW5jdGlvbihlLHIsbil7cmV0dXJuIHRoaXMuZWFzZVRvKHQu ZXh0ZW5kKHtjZW50ZXI6ZX0sciksbil9LHIucHJvdG90eXBlLmdldFpvb209 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0uem9vbX0sci5wcm90 b3R5cGUuc2V0Wm9vbT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmp1bXBU byh7em9vbTp0fSxlKSx0aGlzfSxyLnByb3RvdHlwZS56b29tVG89ZnVuY3Rp b24oZSxyLG4pe3JldHVybiB0aGlzLmVhc2VUbyh0LmV4dGVuZCh7em9vbTpl fSxyKSxuKX0sci5wcm90b3R5cGUuem9vbUluPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHRoaXMuem9vbVRvKHRoaXMuZ2V0Wm9vbSgpKzEsdCxlKSx0aGlzfSxy LnByb3RvdHlwZS56b29tT3V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMu em9vbVRvKHRoaXMuZ2V0Wm9vbSgpLTEsdCxlKSx0aGlzfSxyLnByb3RvdHlw ZS5nZXRCZWFyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3Jt LmJlYXJpbmd9LHIucHJvdG90eXBlLnNldEJlYXJpbmc9ZnVuY3Rpb24odCxl KXtyZXR1cm4gdGhpcy5qdW1wVG8oe2JlYXJpbmc6dH0sZSksdGhpc30sci5w cm90b3R5cGUucm90YXRlVG89ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0aGlz LmVhc2VUbyh0LmV4dGVuZCh7YmVhcmluZzplfSxyKSxuKX0sci5wcm90b3R5 cGUucmVzZXROb3J0aD1mdW5jdGlvbihlLHIpe3JldHVybiB0aGlzLnJvdGF0 ZVRvKDAsdC5leHRlbmQoe2R1cmF0aW9uOjFlM30sZSksciksdGhpc30sci5w cm90b3R5cGUucmVzZXROb3J0aFBpdGNoPWZ1bmN0aW9uKGUscil7cmV0dXJu IHRoaXMuZWFzZVRvKHQuZXh0ZW5kKHtiZWFyaW5nOjAscGl0Y2g6MCxkdXJh dGlvbjoxZTN9LGUpLHIpLHRoaXN9LHIucHJvdG90eXBlLnNuYXBUb05vcnRo PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguYWJzKHRoaXMuZ2V0QmVhcmlu ZygpKTx0aGlzLl9iZWFyaW5nU25hcD90aGlzLnJlc2V0Tm9ydGgodCxlKTp0 aGlzfSxyLnByb3RvdHlwZS5nZXRQaXRjaD1mdW5jdGlvbigpe3JldHVybiB0 aGlzLnRyYW5zZm9ybS5waXRjaH0sci5wcm90b3R5cGUuc2V0UGl0Y2g9ZnVu Y3Rpb24odCxlKXtyZXR1cm4gdGhpcy5qdW1wVG8oe3BpdGNoOnR9LGUpLHRo aXN9LHIucHJvdG90eXBlLmNhbWVyYUZvckJvdW5kcz1mdW5jdGlvbihlLHIp e3JldHVybiBlPXQuTG5nTGF0Qm91bmRzLmNvbnZlcnQoZSksdGhpcy5fY2Ft ZXJhRm9yQm94QW5kQmVhcmluZyhlLmdldE5vcnRoV2VzdCgpLGUuZ2V0U291 dGhFYXN0KCksMCxyKX0sci5wcm90b3R5cGUuX2NhbWVyYUZvckJveEFuZEJl YXJpbmc9ZnVuY3Rpb24oZSxyLG4sYSl7aWYoIm51bWJlciI9PXR5cGVvZihh PXQuZXh0ZW5kKHtwYWRkaW5nOnt0b3A6MCxib3R0b206MCxyaWdodDowLGxl ZnQ6MH0sb2Zmc2V0OlswLDBdLG1heFpvb206dGhpcy50cmFuc2Zvcm0ubWF4 Wm9vbX0sYSkpLnBhZGRpbmcpe3ZhciBpPWEucGFkZGluZzthLnBhZGRpbmc9 e3RvcDppLGJvdHRvbTppLHJpZ2h0OmksbGVmdDppfX1pZih0LmRlZXBFcXVh bChPYmplY3Qua2V5cyhhLnBhZGRpbmcpLnNvcnQoZnVuY3Rpb24odCxlKXty ZXR1cm4gdDxlPy0xOnQ+ZT8xOjB9KSxbImJvdHRvbSIsImxlZnQiLCJyaWdo dCIsInRvcCJdKSl7dmFyIG89dGhpcy50cmFuc2Zvcm0scz1vLnByb2plY3Qo dC5MbmdMYXQuY29udmVydChlKSksbD1vLnByb2plY3QodC5MbmdMYXQuY29u dmVydChyKSksYz1zLnJvdGF0ZSgtbipNYXRoLlBJLzE4MCksdT1sLnJvdGF0 ZSgtbipNYXRoLlBJLzE4MCksaD1uZXcgdC5Qb2ludChNYXRoLm1heChjLngs dS54KSxNYXRoLm1heChjLnksdS55KSksZj1uZXcgdC5Qb2ludChNYXRoLm1p bihjLngsdS54KSxNYXRoLm1pbihjLnksdS55KSkscD1oLnN1YihmKSxkPShv LndpZHRoLWEucGFkZGluZy5sZWZ0LWEucGFkZGluZy5yaWdodCkvcC54LGc9 KG8uaGVpZ2h0LWEucGFkZGluZy50b3AtYS5wYWRkaW5nLmJvdHRvbSkvcC55 O2lmKCEoZzwwfHxkPDApKXt2YXIgdj1NYXRoLm1pbihvLnNjYWxlWm9vbShv LnNjYWxlKk1hdGgubWluKGQsZykpLGEubWF4Wm9vbSksbT10LlBvaW50LmNv bnZlcnQoYS5vZmZzZXQpLHk9KGEucGFkZGluZy5sZWZ0LWEucGFkZGluZy5y aWdodCkvMix4PShhLnBhZGRpbmcudG9wLWEucGFkZGluZy5ib3R0b20pLzIs Yj1uZXcgdC5Qb2ludChtLngreSxtLnkreCkubXVsdChvLnNjYWxlL28uem9v bVNjYWxlKHYpKTtyZXR1cm57Y2VudGVyOm8udW5wcm9qZWN0KHMuYWRkKGwp LmRpdigyKS5zdWIoYikpLHpvb206dixiZWFyaW5nOm59fXQud2Fybk9uY2Uo Ik1hcCBjYW5ub3QgZml0IHdpdGhpbiBjYW52YXMgd2l0aCB0aGUgZ2l2ZW4g Ym91bmRzLCBwYWRkaW5nLCBhbmQvb3Igb2Zmc2V0LiIpfWVsc2UgdC53YXJu T25jZSgib3B0aW9ucy5wYWRkaW5nIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1i ZXIsIG9yIGFuIE9iamVjdCB3aXRoIGtleXMgJ2JvdHRvbScsICdsZWZ0Jywg J3JpZ2h0JywgJ3RvcCciKX0sci5wcm90b3R5cGUuZml0Qm91bmRzPWZ1bmN0 aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fZml0SW50ZXJuYWwodGhpcy5jYW1l cmFGb3JCb3VuZHModCxlKSxlLHIpfSxyLnByb3RvdHlwZS5maXRTY3JlZW5D b29yZGluYXRlcz1mdW5jdGlvbihlLHIsbixhLGkpe3JldHVybiB0aGlzLl9m aXRJbnRlcm5hbCh0aGlzLl9jYW1lcmFGb3JCb3hBbmRCZWFyaW5nKHRoaXMu dHJhbnNmb3JtLnBvaW50TG9jYXRpb24odC5Qb2ludC5jb252ZXJ0KGUpKSx0 aGlzLnRyYW5zZm9ybS5wb2ludExvY2F0aW9uKHQuUG9pbnQuY29udmVydChy KSksbixhKSxhLGkpfSxyLnByb3RvdHlwZS5fZml0SW50ZXJuYWw9ZnVuY3Rp b24oZSxyLG4pe3JldHVybiBlPyhyPXQuZXh0ZW5kKGUscikpLmxpbmVhcj90 aGlzLmVhc2VUbyhyLG4pOnRoaXMuZmx5VG8ocixuKTp0aGlzfSxyLnByb3Rv dHlwZS5qdW1wVG89ZnVuY3Rpb24oZSxyKXt0aGlzLnN0b3AoKTt2YXIgbj10 aGlzLnRyYW5zZm9ybSxhPSExLGk9ITEsbz0hMTtyZXR1cm4iem9vbSJpbiBl JiZuLnpvb20hPT0rZS56b29tJiYoYT0hMCxuLnpvb209K2Uuem9vbSksdm9p ZCAwIT09ZS5jZW50ZXImJihuLmNlbnRlcj10LkxuZ0xhdC5jb252ZXJ0KGUu Y2VudGVyKSksImJlYXJpbmciaW4gZSYmbi5iZWFyaW5nIT09K2UuYmVhcmlu ZyYmKGk9ITAsbi5iZWFyaW5nPStlLmJlYXJpbmcpLCJwaXRjaCJpbiBlJiZu LnBpdGNoIT09K2UucGl0Y2gmJihvPSEwLG4ucGl0Y2g9K2UucGl0Y2gpLHRo aXMuZmlyZShuZXcgdC5FdmVudCgibW92ZXN0YXJ0IixyKSkuZmlyZShuZXcg dC5FdmVudCgibW92ZSIscikpLGEmJnRoaXMuZmlyZShuZXcgdC5FdmVudCgi em9vbXN0YXJ0IixyKSkuZmlyZShuZXcgdC5FdmVudCgiem9vbSIscikpLmZp cmUobmV3IHQuRXZlbnQoInpvb21lbmQiLHIpKSxpJiZ0aGlzLmZpcmUobmV3 IHQuRXZlbnQoInJvdGF0ZXN0YXJ0IixyKSkuZmlyZShuZXcgdC5FdmVudCgi cm90YXRlIixyKSkuZmlyZShuZXcgdC5FdmVudCgicm90YXRlZW5kIixyKSks byYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJwaXRjaHN0YXJ0IixyKSkuZmly ZShuZXcgdC5FdmVudCgicGl0Y2giLHIpKS5maXJlKG5ldyB0LkV2ZW50KCJw aXRjaGVuZCIscikpLHRoaXMuZmlyZShuZXcgdC5FdmVudCgibW92ZWVuZCIs cikpfSxyLnByb3RvdHlwZS5lYXNlVG89ZnVuY3Rpb24oZSxyKXt2YXIgbj10 aGlzO3RoaXMuc3RvcCgpLCghMT09PShlPXQuZXh0ZW5kKHtvZmZzZXQ6WzAs MF0sZHVyYXRpb246NTAwLGVhc2luZzp0LmVhc2V9LGUpKS5hbmltYXRlfHx0 LmJyb3dzZXIucHJlZmVyc1JlZHVjZWRNb3Rpb24pJiYoZS5kdXJhdGlvbj0w KTt2YXIgYT10aGlzLnRyYW5zZm9ybSxpPXRoaXMuZ2V0Wm9vbSgpLG89dGhp cy5nZXRCZWFyaW5nKCkscz10aGlzLmdldFBpdGNoKCksbD0iem9vbSJpbiBl PytlLnpvb206aSxjPSJiZWFyaW5nImluIGU/dGhpcy5fbm9ybWFsaXplQmVh cmluZyhlLmJlYXJpbmcsbyk6byx1PSJwaXRjaCJpbiBlPytlLnBpdGNoOnMs aD1hLmNlbnRlclBvaW50LmFkZCh0LlBvaW50LmNvbnZlcnQoZS5vZmZzZXQp KSxmPWEucG9pbnRMb2NhdGlvbihoKSxwPXQuTG5nTGF0LmNvbnZlcnQoZS5j ZW50ZXJ8fGYpO3RoaXMuX25vcm1hbGl6ZUNlbnRlcihwKTt2YXIgZCxnLHY9 YS5wcm9qZWN0KGYpLG09YS5wcm9qZWN0KHApLnN1Yih2KSx5PWEuem9vbVNj YWxlKGwtaSk7cmV0dXJuIGUuYXJvdW5kJiYoZD10LkxuZ0xhdC5jb252ZXJ0 KGUuYXJvdW5kKSxnPWEubG9jYXRpb25Qb2ludChkKSksdGhpcy5fem9vbWlu Zz1sIT09aSx0aGlzLl9yb3RhdGluZz1vIT09Yyx0aGlzLl9waXRjaGluZz11 IT09cyx0aGlzLl9wcmVwYXJlRWFzZShyLGUubm9Nb3ZlU3RhcnQpLGNsZWFy VGltZW91dCh0aGlzLl9lYXNlRW5kVGltZW91dElEKSx0aGlzLl9lYXNlKGZ1 bmN0aW9uKGUpe2lmKG4uX3pvb21pbmcmJihhLnpvb209dC5udW1iZXIoaSxs LGUpKSxuLl9yb3RhdGluZyYmKGEuYmVhcmluZz10Lm51bWJlcihvLGMsZSkp LG4uX3BpdGNoaW5nJiYoYS5waXRjaD10Lm51bWJlcihzLHUsZSkpLGQpYS5z ZXRMb2NhdGlvbkF0UG9pbnQoZCxnKTtlbHNle3ZhciBmPWEuem9vbVNjYWxl KGEuem9vbS1pKSxwPWw+aT9NYXRoLm1pbigyLHkpOk1hdGgubWF4KC41LHkp LHg9TWF0aC5wb3cocCwxLWUpLGI9YS51bnByb2plY3Qodi5hZGQobS5tdWx0 KGUqeCkpLm11bHQoZikpO2Euc2V0TG9jYXRpb25BdFBvaW50KGEucmVuZGVy V29ybGRDb3BpZXM/Yi53cmFwKCk6YixoKX1uLl9maXJlTW92ZUV2ZW50cyhy KX0sZnVuY3Rpb24oKXtlLmRlbGF5RW5kRXZlbnRzP24uX2Vhc2VFbmRUaW1l b3V0SUQ9c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBuLl9hZnRlckVh c2Uocil9LGUuZGVsYXlFbmRFdmVudHMpOm4uX2FmdGVyRWFzZShyKX0sZSks dGhpc30sci5wcm90b3R5cGUuX3ByZXBhcmVFYXNlPWZ1bmN0aW9uKGUscil7 dGhpcy5fbW92aW5nPSEwLHJ8fHRoaXMuZmlyZShuZXcgdC5FdmVudCgibW92 ZXN0YXJ0IixlKSksdGhpcy5fem9vbWluZyYmdGhpcy5maXJlKG5ldyB0LkV2 ZW50KCJ6b29tc3RhcnQiLGUpKSx0aGlzLl9yb3RhdGluZyYmdGhpcy5maXJl KG5ldyB0LkV2ZW50KCJyb3RhdGVzdGFydCIsZSkpLHRoaXMuX3BpdGNoaW5n JiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInBpdGNoc3RhcnQiLGUpKX0sci5w cm90b3R5cGUuX2ZpcmVNb3ZlRXZlbnRzPWZ1bmN0aW9uKGUpe3RoaXMuZmly ZShuZXcgdC5FdmVudCgibW92ZSIsZSkpLHRoaXMuX3pvb21pbmcmJnRoaXMu ZmlyZShuZXcgdC5FdmVudCgiem9vbSIsZSkpLHRoaXMuX3JvdGF0aW5nJiZ0 aGlzLmZpcmUobmV3IHQuRXZlbnQoInJvdGF0ZSIsZSkpLHRoaXMuX3BpdGNo aW5nJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInBpdGNoIixlKSl9LHIucHJv dG90eXBlLl9hZnRlckVhc2U9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5fem9v bWluZyxuPXRoaXMuX3JvdGF0aW5nLGE9dGhpcy5fcGl0Y2hpbmc7dGhpcy5f bW92aW5nPSExLHRoaXMuX3pvb21pbmc9ITEsdGhpcy5fcm90YXRpbmc9ITEs dGhpcy5fcGl0Y2hpbmc9ITEsciYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJ6 b29tZW5kIixlKSksbiYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJyb3RhdGVl bmQiLGUpKSxhJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInBpdGNoZW5kIixl KSksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJtb3ZlZW5kIixlKSl9LHIucHJv dG90eXBlLmZseVRvPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpcztpZih0LmJy b3dzZXIucHJlZmVyc1JlZHVjZWRNb3Rpb24pe3ZhciBhPXQucGljayhlLFsi Y2VudGVyIiwiem9vbSIsImJlYXJpbmciLCJwaXRjaCIsImFyb3VuZCJdKTty ZXR1cm4gdGhpcy5qdW1wVG8oYSxyKX10aGlzLnN0b3AoKSxlPXQuZXh0ZW5k KHtvZmZzZXQ6WzAsMF0sc3BlZWQ6MS4yLGN1cnZlOjEuNDIsZWFzaW5nOnQu ZWFzZX0sZSk7dmFyIGk9dGhpcy50cmFuc2Zvcm0sbz10aGlzLmdldFpvb20o KSxzPXRoaXMuZ2V0QmVhcmluZygpLGw9dGhpcy5nZXRQaXRjaCgpLGM9Inpv b20iaW4gZT90LmNsYW1wKCtlLnpvb20saS5taW5ab29tLGkubWF4Wm9vbSk6 byx1PSJiZWFyaW5nImluIGU/dGhpcy5fbm9ybWFsaXplQmVhcmluZyhlLmJl YXJpbmcscyk6cyxoPSJwaXRjaCJpbiBlPytlLnBpdGNoOmwsZj1pLnpvb21T Y2FsZShjLW8pLHA9aS5jZW50ZXJQb2ludC5hZGQodC5Qb2ludC5jb252ZXJ0 KGUub2Zmc2V0KSksZD1pLnBvaW50TG9jYXRpb24ocCksZz10LkxuZ0xhdC5j b252ZXJ0KGUuY2VudGVyfHxkKTt0aGlzLl9ub3JtYWxpemVDZW50ZXIoZyk7 dmFyIHY9aS5wcm9qZWN0KGQpLG09aS5wcm9qZWN0KGcpLnN1Yih2KSx5PWUu Y3VydmUseD1NYXRoLm1heChpLndpZHRoLGkuaGVpZ2h0KSxiPXgvZixfPW0u bWFnKCk7aWYoIm1pblpvb20iaW4gZSl7dmFyIHc9dC5jbGFtcChNYXRoLm1p bihlLm1pblpvb20sbyxjKSxpLm1pblpvb20saS5tYXhab29tKSxrPXgvaS56 b29tU2NhbGUody1vKTt5PU1hdGguc3FydChrL18qMil9dmFyIFQ9eSp5O2Z1 bmN0aW9uIE0odCl7dmFyIGU9KGIqYi14KngrKHQ/LTE6MSkqVCpUKl8qXykv KDIqKHQ/Yjp4KSpUKl8pO3JldHVybiBNYXRoLmxvZyhNYXRoLnNxcnQoZSpl KzEpLWUpfWZ1bmN0aW9uIEEodCl7cmV0dXJuKE1hdGguZXhwKHQpLU1hdGgu ZXhwKC10KSkvMn1mdW5jdGlvbiBTKHQpe3JldHVybihNYXRoLmV4cCh0KStN YXRoLmV4cCgtdCkpLzJ9dmFyIEU9TSgwKSxMPWZ1bmN0aW9uKHQpe3JldHVy biBTKEUpL1MoRSt5KnQpfSxDPWZ1bmN0aW9uKHQpe3JldHVybiB4KigoUyhF KSooQShlPUUreSp0KS9TKGUpKS1BKEUpKS9UKS9fO3ZhciBlfSxQPShNKDEp LUUpL3k7aWYoTWF0aC5hYnMoXyk8MWUtNnx8IWlzRmluaXRlKFApKXtpZihN YXRoLmFicyh4LWIpPDFlLTYpcmV0dXJuIHRoaXMuZWFzZVRvKGUscik7dmFy IE89Yjx4Py0xOjE7UD1NYXRoLmFicyhNYXRoLmxvZyhiL3gpKS95LEM9ZnVu Y3Rpb24oKXtyZXR1cm4gMH0sTD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5l eHAoTyp5KnQpfX1pZigiZHVyYXRpb24iaW4gZSllLmR1cmF0aW9uPStlLmR1 cmF0aW9uO2Vsc2V7dmFyIHo9InNjcmVlblNwZWVkImluIGU/K2Uuc2NyZWVu U3BlZWQveTorZS5zcGVlZDtlLmR1cmF0aW9uPTFlMypQL3p9cmV0dXJuIGUu bWF4RHVyYXRpb24mJmUuZHVyYXRpb24+ZS5tYXhEdXJhdGlvbiYmKGUuZHVy YXRpb249MCksdGhpcy5fem9vbWluZz0hMCx0aGlzLl9yb3RhdGluZz1zIT09 dSx0aGlzLl9waXRjaGluZz1oIT09bCx0aGlzLl9wcmVwYXJlRWFzZShyLCEx KSx0aGlzLl9lYXNlKGZ1bmN0aW9uKGUpe3ZhciBhPWUqUCxmPTEvTChhKTtp Lnpvb209MT09PWU/YzpvK2kuc2NhbGVab29tKGYpLG4uX3JvdGF0aW5nJiYo aS5iZWFyaW5nPXQubnVtYmVyKHMsdSxlKSksbi5fcGl0Y2hpbmcmJihpLnBp dGNoPXQubnVtYmVyKGwsaCxlKSk7dmFyIGQ9MT09PWU/ZzppLnVucHJvamVj dCh2LmFkZChtLm11bHQoQyhhKSkpLm11bHQoZikpO2kuc2V0TG9jYXRpb25B dFBvaW50KGkucmVuZGVyV29ybGRDb3BpZXM/ZC53cmFwKCk6ZCxwKSxuLl9m aXJlTW92ZUV2ZW50cyhyKX0sZnVuY3Rpb24oKXtyZXR1cm4gbi5fYWZ0ZXJF YXNlKHIpfSxlKSx0aGlzfSxyLnByb3RvdHlwZS5pc0Vhc2luZz1mdW5jdGlv bigpe3JldHVybiEhdGhpcy5fZWFzZUZyYW1lSWR9LHIucHJvdG90eXBlLnN0 b3A9ZnVuY3Rpb24oKXtpZih0aGlzLl9lYXNlRnJhbWVJZCYmKHRoaXMuX2Nh bmNlbFJlbmRlckZyYW1lKHRoaXMuX2Vhc2VGcmFtZUlkKSxkZWxldGUgdGhp cy5fZWFzZUZyYW1lSWQsZGVsZXRlIHRoaXMuX29uRWFzZUZyYW1lKSx0aGlz Ll9vbkVhc2VFbmQpe3ZhciB0PXRoaXMuX29uRWFzZUVuZDtkZWxldGUgdGhp cy5fb25FYXNlRW5kLHQuY2FsbCh0aGlzKX1yZXR1cm4gdGhpc30sci5wcm90 b3R5cGUuX2Vhc2U9ZnVuY3Rpb24oZSxyLG4peyExPT09bi5hbmltYXRlfHww PT09bi5kdXJhdGlvbj8oZSgxKSxyKCkpOih0aGlzLl9lYXNlU3RhcnQ9dC5i cm93c2VyLm5vdygpLHRoaXMuX2Vhc2VPcHRpb25zPW4sdGhpcy5fb25FYXNl RnJhbWU9ZSx0aGlzLl9vbkVhc2VFbmQ9cix0aGlzLl9lYXNlRnJhbWVJZD10 aGlzLl9yZXF1ZXN0UmVuZGVyRnJhbWUodGhpcy5fcmVuZGVyRnJhbWVDYWxs YmFjaykpfSxyLnByb3RvdHlwZS5fcmVuZGVyRnJhbWVDYWxsYmFjaz1mdW5j dGlvbigpe3ZhciBlPU1hdGgubWluKCh0LmJyb3dzZXIubm93KCktdGhpcy5f ZWFzZVN0YXJ0KS90aGlzLl9lYXNlT3B0aW9ucy5kdXJhdGlvbiwxKTt0aGlz Ll9vbkVhc2VGcmFtZSh0aGlzLl9lYXNlT3B0aW9ucy5lYXNpbmcoZSkpLGU8 MT90aGlzLl9lYXNlRnJhbWVJZD10aGlzLl9yZXF1ZXN0UmVuZGVyRnJhbWUo dGhpcy5fcmVuZGVyRnJhbWVDYWxsYmFjayk6dGhpcy5zdG9wKCl9LHIucHJv dG90eXBlLl9ub3JtYWxpemVCZWFyaW5nPWZ1bmN0aW9uKGUscil7ZT10Lndy YXAoZSwtMTgwLDE4MCk7dmFyIG49TWF0aC5hYnMoZS1yKTtyZXR1cm4gTWF0 aC5hYnMoZS0zNjAtcik8biYmKGUtPTM2MCksTWF0aC5hYnMoZSszNjAtcik8 biYmKGUrPTM2MCksZX0sci5wcm90b3R5cGUuX25vcm1hbGl6ZUNlbnRlcj1m dW5jdGlvbih0KXt2YXIgZT10aGlzLnRyYW5zZm9ybTtpZihlLnJlbmRlcldv cmxkQ29waWVzJiYhZS5sbmdSYW5nZSl7dmFyIHI9dC5sbmctZS5jZW50ZXIu bG5nO3QubG5nKz1yPjE4MD8tMzYwOnI8LTE4MD8zNjA6MH19LHJ9KHQuRXZl bnRlZCksTG49ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMu b3B0aW9ucz1lLHQuYmluZEFsbChbIl91cGRhdGVFZGl0TGluayIsIl91cGRh dGVEYXRhIiwiX3VwZGF0ZUNvbXBhY3QiXSx0aGlzKX07TG4ucHJvdG90eXBl LmdldERlZmF1bHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiJib3R0b20t cmlnaHQifSxMbi5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMuY29tcGFjdDtyZXR1cm4gdGhp cy5fbWFwPXQsdGhpcy5fY29udGFpbmVyPXIuY3JlYXRlKCJkaXYiLCJtYXBi b3hnbC1jdHJsIG1hcGJveGdsLWN0cmwtYXR0cmliIiksdGhpcy5faW5uZXJD b250YWluZXI9ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLWN0cmwtYXR0cmli LWlubmVyIix0aGlzLl9jb250YWluZXIpLGUmJnRoaXMuX2NvbnRhaW5lci5j bGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jb21wYWN0IiksdGhpcy5fdXBkYXRl QXR0cmlidXRpb25zKCksdGhpcy5fdXBkYXRlRWRpdExpbmsoKSx0aGlzLl9t YXAub24oInN0eWxlZGF0YSIsdGhpcy5fdXBkYXRlRGF0YSksdGhpcy5fbWFw Lm9uKCJzb3VyY2VkYXRhIix0aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAu b24oIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZUVkaXRMaW5rKSx2b2lkIDA9PT1l JiYodGhpcy5fbWFwLm9uKCJyZXNpemUiLHRoaXMuX3VwZGF0ZUNvbXBhY3Qp LHRoaXMuX3VwZGF0ZUNvbXBhY3QoKSksdGhpcy5fY29udGFpbmVyfSxMbi5w cm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXtyLnJlbW92ZSh0aGlzLl9j b250YWluZXIpLHRoaXMuX21hcC5vZmYoInN0eWxlZGF0YSIsdGhpcy5fdXBk YXRlRGF0YSksdGhpcy5fbWFwLm9mZigic291cmNlZGF0YSIsdGhpcy5fdXBk YXRlRGF0YSksdGhpcy5fbWFwLm9mZigibW92ZWVuZCIsdGhpcy5fdXBkYXRl RWRpdExpbmspLHRoaXMuX21hcC5vZmYoInJlc2l6ZSIsdGhpcy5fdXBkYXRl Q29tcGFjdCksdGhpcy5fbWFwPXZvaWQgMH0sTG4ucHJvdG90eXBlLl91cGRh dGVFZGl0TGluaz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2VkaXRMaW5rO2V8 fChlPXRoaXMuX2VkaXRMaW5rPXRoaXMuX2NvbnRhaW5lci5xdWVyeVNlbGVj dG9yKCIubWFwYm94LWltcHJvdmUtbWFwIikpO3ZhciByPVt7a2V5OiJvd25l ciIsdmFsdWU6dGhpcy5zdHlsZU93bmVyfSx7a2V5OiJpZCIsdmFsdWU6dGhp cy5zdHlsZUlkfSx7a2V5OiJhY2Nlc3NfdG9rZW4iLHZhbHVlOnRoaXMuX21h cC5fcmVxdWVzdE1hbmFnZXIuX2N1c3RvbUFjY2Vzc1Rva2VufHx0LmNvbmZp Zy5BQ0NFU1NfVE9LRU59XTtpZihlKXt2YXIgbj1yLnJlZHVjZShmdW5jdGlv bih0LGUsbil7cmV0dXJuIGUudmFsdWUmJih0Kz1lLmtleSsiPSIrZS52YWx1 ZSsobjxyLmxlbmd0aC0xPyImIjoiIikpLHR9LCI/Iik7ZS5ocmVmPXQuY29u ZmlnLkZFRURCQUNLX1VSTCsiLyIrbisodGhpcy5fbWFwLl9oYXNoP3RoaXMu X21hcC5faGFzaC5nZXRIYXNoU3RyaW5nKCEwKToiIiksZS5yZWw9Im5vb3Bl bmVyIG5vZm9sbG93In19LExuLnByb3RvdHlwZS5fdXBkYXRlRGF0YT1mdW5j dGlvbih0KXshdHx8Im1ldGFkYXRhIiE9PXQuc291cmNlRGF0YVR5cGUmJiJz dHlsZSIhPT10LmRhdGFUeXBlfHwodGhpcy5fdXBkYXRlQXR0cmlidXRpb25z KCksdGhpcy5fdXBkYXRlRWRpdExpbmsoKSl9LExuLnByb3RvdHlwZS5fdXBk YXRlQXR0cmlidXRpb25zPWZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwLnN0eWxl KXt2YXIgdD1bXTtpZih0aGlzLm9wdGlvbnMuY3VzdG9tQXR0cmlidXRpb24m JihBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucy5jdXN0b21BdHRyaWJ1dGlv bik/dD10LmNvbmNhdCh0aGlzLm9wdGlvbnMuY3VzdG9tQXR0cmlidXRpb24u bWFwKGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdD8iIjp0 fSkpOiJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLmN1c3RvbUF0dHJp YnV0aW9uJiZ0LnB1c2godGhpcy5vcHRpb25zLmN1c3RvbUF0dHJpYnV0aW9u KSksdGhpcy5fbWFwLnN0eWxlLnN0eWxlc2hlZXQpe3ZhciBlPXRoaXMuX21h cC5zdHlsZS5zdHlsZXNoZWV0O3RoaXMuc3R5bGVPd25lcj1lLm93bmVyLHRo aXMuc3R5bGVJZD1lLmlkfXZhciByPXRoaXMuX21hcC5zdHlsZS5zb3VyY2VD YWNoZXM7Zm9yKHZhciBuIGluIHIpe3ZhciBhPXJbbl07aWYoYS51c2VkKXt2 YXIgaT1hLmdldFNvdXJjZSgpO2kuYXR0cmlidXRpb24mJnQuaW5kZXhPZihp LmF0dHJpYnV0aW9uKTwwJiZ0LnB1c2goaS5hdHRyaWJ1dGlvbil9fXQuc29y dChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aC1lLmxlbmd0aH0pO3Zh ciBvPSh0PXQuZmlsdGVyKGZ1bmN0aW9uKGUscil7Zm9yKHZhciBuPXIrMTtu PHQubGVuZ3RoO24rKylpZih0W25dLmluZGV4T2YoZSk+PTApcmV0dXJuITE7 cmV0dXJuITB9KSkuam9pbigiIHwgIik7byE9PXRoaXMuX2F0dHJpYkhUTUwm Jih0aGlzLl9hdHRyaWJIVE1MPW8sdC5sZW5ndGg/KHRoaXMuX2lubmVyQ29u dGFpbmVyLmlubmVySFRNTD1vLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3Qu cmVtb3ZlKCJtYXBib3hnbC1hdHRyaWItZW1wdHkiKSk6dGhpcy5fY29udGFp bmVyLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWF0dHJpYi1lbXB0eSIpLHRo aXMuX2VkaXRMaW5rPW51bGwpfX0sTG4ucHJvdG90eXBlLl91cGRhdGVDb21w YWN0PWZ1bmN0aW9uKCl7dGhpcy5fbWFwLmdldENhbnZhc0NvbnRhaW5lcigp Lm9mZnNldFdpZHRoPD02NDA/dGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5h ZGQoIm1hcGJveGdsLWNvbXBhY3QiKTp0aGlzLl9jb250YWluZXIuY2xhc3NM aXN0LnJlbW92ZSgibWFwYm94Z2wtY29tcGFjdCIpfTt2YXIgQ249ZnVuY3Rp b24oKXt0LmJpbmRBbGwoWyJfdXBkYXRlTG9nbyJdLHRoaXMpLHQuYmluZEFs bChbIl91cGRhdGVDb21wYWN0Il0sdGhpcyl9O0NuLnByb3RvdHlwZS5vbkFk ZD1mdW5jdGlvbih0KXt0aGlzLl9tYXA9dCx0aGlzLl9jb250YWluZXI9ci5j cmVhdGUoImRpdiIsIm1hcGJveGdsLWN0cmwiKTt2YXIgZT1yLmNyZWF0ZSgi YSIsIm1hcGJveGdsLWN0cmwtbG9nbyIpO3JldHVybiBlLnRhcmdldD0iX2Js YW5rIixlLnJlbD0ibm9vcGVuZXIgbm9mb2xsb3ciLGUuaHJlZj0iaHR0cHM6 Ly93d3cubWFwYm94LmNvbS8iLGUuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVs IiwiTWFwYm94IGxvZ28iKSxlLnNldEF0dHJpYnV0ZSgicmVsIiwibm9vcGVu ZXIgbm9mb2xsb3ciKSx0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoZSks dGhpcy5fY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuX21h cC5vbigic291cmNlZGF0YSIsdGhpcy5fdXBkYXRlTG9nbyksdGhpcy5fdXBk YXRlTG9nbygpLHRoaXMuX21hcC5vbigicmVzaXplIix0aGlzLl91cGRhdGVD b21wYWN0KSx0aGlzLl91cGRhdGVDb21wYWN0KCksdGhpcy5fY29udGFpbmVy fSxDbi5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXtyLnJlbW92ZSh0 aGlzLl9jb250YWluZXIpLHRoaXMuX21hcC5vZmYoInNvdXJjZWRhdGEiLHRo aXMuX3VwZGF0ZUxvZ28pLHRoaXMuX21hcC5vZmYoInJlc2l6ZSIsdGhpcy5f dXBkYXRlQ29tcGFjdCl9LENuLnByb3RvdHlwZS5nZXREZWZhdWx0UG9zaXRp b249ZnVuY3Rpb24oKXtyZXR1cm4iYm90dG9tLWxlZnQifSxDbi5wcm90b3R5 cGUuX3VwZGF0ZUxvZ289ZnVuY3Rpb24odCl7dCYmIm1ldGFkYXRhIiE9PXQu c291cmNlRGF0YVR5cGV8fCh0aGlzLl9jb250YWluZXIuc3R5bGUuZGlzcGxh eT10aGlzLl9sb2dvUmVxdWlyZWQoKT8iYmxvY2siOiJub25lIil9LENuLnBy b3RvdHlwZS5fbG9nb1JlcXVpcmVkPWZ1bmN0aW9uKCl7aWYodGhpcy5fbWFw LnN0eWxlKXt2YXIgdD10aGlzLl9tYXAuc3R5bGUuc291cmNlQ2FjaGVzO2Zv cih2YXIgZSBpbiB0KWlmKHRbZV0uZ2V0U291cmNlKCkubWFwYm94X2xvZ28p cmV0dXJuITA7cmV0dXJuITF9fSxDbi5wcm90b3R5cGUuX3VwZGF0ZUNvbXBh Y3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXIuY2hpbGRyZW47 aWYodC5sZW5ndGgpe3ZhciBlPXRbMF07dGhpcy5fbWFwLmdldENhbnZhc0Nv bnRhaW5lcigpLm9mZnNldFdpZHRoPDI1MD9lLmNsYXNzTGlzdC5hZGQoIm1h cGJveGdsLWNvbXBhY3QiKTplLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGds LWNvbXBhY3QiKX19O3ZhciBQbj1mdW5jdGlvbigpe3RoaXMuX3F1ZXVlPVtd LHRoaXMuX2lkPTAsdGhpcy5fY2xlYXJlZD0hMSx0aGlzLl9jdXJyZW50bHlS dW5uaW5nPSExfTtQbi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3ZhciBl PSsrdGhpcy5faWQ7cmV0dXJuIHRoaXMuX3F1ZXVlLnB1c2goe2NhbGxiYWNr OnQsaWQ6ZSxjYW5jZWxsZWQ6ITF9KSxlfSxQbi5wcm90b3R5cGUucmVtb3Zl PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9jdXJyZW50bHlSdW5uaW5n LHI9MCxuPWU/dGhpcy5fcXVldWUuY29uY2F0KGUpOnRoaXMuX3F1ZXVlO3I8 bi5sZW5ndGg7cis9MSl7dmFyIGE9bltyXTtpZihhLmlkPT09dClyZXR1cm4g dm9pZChhLmNhbmNlbGxlZD0hMCl9fSxQbi5wcm90b3R5cGUucnVuPWZ1bmN0 aW9uKCl7dmFyIHQ9dGhpcy5fY3VycmVudGx5UnVubmluZz10aGlzLl9xdWV1 ZTt0aGlzLl9xdWV1ZT1bXTtmb3IodmFyIGU9MCxyPXQ7ZTxyLmxlbmd0aDtl Kz0xKXt2YXIgbj1yW2VdO2lmKCFuLmNhbmNlbGxlZCYmKG4uY2FsbGJhY2so KSx0aGlzLl9jbGVhcmVkKSlicmVha310aGlzLl9jbGVhcmVkPSExLHRoaXMu X2N1cnJlbnRseVJ1bm5pbmc9ITF9LFBuLnByb3RvdHlwZS5jbGVhcj1mdW5j dGlvbigpe3RoaXMuX2N1cnJlbnRseVJ1bm5pbmcmJih0aGlzLl9jbGVhcmVk PSEwKSx0aGlzLl9xdWV1ZT1bXX07dmFyIE9uPXQud2luZG93LkhUTUxJbWFn ZUVsZW1lbnQsem49dC53aW5kb3cuSFRNTEVsZW1lbnQsSW49e2NlbnRlcjpb MCwwXSx6b29tOjAsYmVhcmluZzowLHBpdGNoOjAsbWluWm9vbTowLG1heFpv b206MjIsaW50ZXJhY3RpdmU6ITAsc2Nyb2xsWm9vbTohMCxib3hab29tOiEw LGRyYWdSb3RhdGU6ITAsZHJhZ1BhbjohMCxrZXlib2FyZDohMCxkb3VibGVD bGlja1pvb206ITAsdG91Y2hab29tUm90YXRlOiEwLGJlYXJpbmdTbmFwOjcs Y2xpY2tUb2xlcmFuY2U6MyxoYXNoOiExLGF0dHJpYnV0aW9uQ29udHJvbDoh MCxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OiExLHByZXNlcnZlRHJh d2luZ0J1ZmZlcjohMSx0cmFja1Jlc2l6ZTohMCxyZW5kZXJXb3JsZENvcGll czohMCxyZWZyZXNoRXhwaXJlZFRpbGVzOiEwLG1heFRpbGVDYWNoZVNpemU6 bnVsbCxsb2NhbElkZW9ncmFwaEZvbnRGYW1pbHk6InNhbnMtc2VyaWYiLHRy YW5zZm9ybVJlcXVlc3Q6bnVsbCxhY2Nlc3NUb2tlbjpudWxsLGZhZGVEdXJh dGlvbjozMDAsY3Jvc3NTb3VyY2VDb2xsaXNpb25zOiEwfSxEbj1mdW5jdGlv bihuKXtmdW5jdGlvbiBhKGUpe3ZhciBhPXRoaXM7aWYobnVsbCE9KGU9dC5l eHRlbmQoe30sSW4sZSkpLm1pblpvb20mJm51bGwhPWUubWF4Wm9vbSYmZS5t aW5ab29tPmUubWF4Wm9vbSl0aHJvdyBuZXcgRXJyb3IoIm1heFpvb20gbXVz dCBiZSBncmVhdGVyIHRoYW4gbWluWm9vbSIpO3ZhciBpPW5ldyB1bihlLm1p blpvb20sZS5tYXhab29tLGUucmVuZGVyV29ybGRDb3BpZXMpO2lmKG4uY2Fs bCh0aGlzLGksZSksdGhpcy5faW50ZXJhY3RpdmU9ZS5pbnRlcmFjdGl2ZSx0 aGlzLl9tYXhUaWxlQ2FjaGVTaXplPWUubWF4VGlsZUNhY2hlU2l6ZSx0aGlz Ll9mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0PWUuZmFpbElmTWFqb3JQ ZXJmb3JtYW5jZUNhdmVhdCx0aGlzLl9wcmVzZXJ2ZURyYXdpbmdCdWZmZXI9 ZS5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIsdGhpcy5fYW50aWFsaWFzPWUuYW50 aWFsaWFzLHRoaXMuX3RyYWNrUmVzaXplPWUudHJhY2tSZXNpemUsdGhpcy5f YmVhcmluZ1NuYXA9ZS5iZWFyaW5nU25hcCx0aGlzLl9yZWZyZXNoRXhwaXJl ZFRpbGVzPWUucmVmcmVzaEV4cGlyZWRUaWxlcyx0aGlzLl9mYWRlRHVyYXRp b249ZS5mYWRlRHVyYXRpb24sdGhpcy5fY3Jvc3NTb3VyY2VDb2xsaXNpb25z PWUuY3Jvc3NTb3VyY2VDb2xsaXNpb25zLHRoaXMuX2Nyb3NzRmFkaW5nRmFj dG9yPTEsdGhpcy5fY29sbGVjdFJlc291cmNlVGltaW5nPWUuY29sbGVjdFJl c291cmNlVGltaW5nLHRoaXMuX3JlbmRlclRhc2tRdWV1ZT1uZXcgUG4sdGhp cy5fY29udHJvbHM9W10sdGhpcy5fbWFwSWQ9dC51bmlxdWVJZCgpLHRoaXMu X3JlcXVlc3RNYW5hZ2VyPW5ldyB0LlJlcXVlc3RNYW5hZ2VyKGUudHJhbnNm b3JtUmVxdWVzdCxlLmFjY2Vzc1Rva2VuKSwic3RyaW5nIj09dHlwZW9mIGUu Y29udGFpbmVyKXtpZih0aGlzLl9jb250YWluZXI9dC53aW5kb3cuZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoZS5jb250YWluZXIpLCF0aGlzLl9jb250YWlu ZXIpdGhyb3cgbmV3IEVycm9yKCJDb250YWluZXIgJyIrZS5jb250YWluZXIr Iicgbm90IGZvdW5kLiIpfWVsc2V7aWYoIShlLmNvbnRhaW5lciBpbnN0YW5j ZW9mIHpuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdHlwZTogJ2NvbnRh aW5lcicgbXVzdCBiZSBhIFN0cmluZyBvciBIVE1MRWxlbWVudC4iKTt0aGlz Ll9jb250YWluZXI9ZS5jb250YWluZXJ9aWYoZS5tYXhCb3VuZHMmJnRoaXMu c2V0TWF4Qm91bmRzKGUubWF4Qm91bmRzKSx0LmJpbmRBbGwoWyJfb25XaW5k b3dPbmxpbmUiLCJfb25XaW5kb3dSZXNpemUiLCJfY29udGV4dExvc3QiLCJf Y29udGV4dFJlc3RvcmVkIl0sdGhpcyksdGhpcy5fc2V0dXBDb250YWluZXIo KSx0aGlzLl9zZXR1cFBhaW50ZXIoKSx2b2lkIDA9PT10aGlzLnBhaW50ZXIp dGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBXZWJHTC4i KTt0aGlzLm9uKCJtb3ZlIixmdW5jdGlvbigpe3JldHVybiBhLl91cGRhdGUo ITEpfSksdGhpcy5vbigibW92ZWVuZCIsZnVuY3Rpb24oKXtyZXR1cm4gYS5f dXBkYXRlKCExKX0pLHRoaXMub24oInpvb20iLGZ1bmN0aW9uKCl7cmV0dXJu IGEuX3VwZGF0ZSghMCl9KSx2b2lkIDAhPT10LndpbmRvdyYmKHQud2luZG93 LmFkZEV2ZW50TGlzdGVuZXIoIm9ubGluZSIsdGhpcy5fb25XaW5kb3dPbmxp bmUsITEpLHQud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhp cy5fb25XaW5kb3dSZXNpemUsITEpKSxmdW5jdGlvbih0LGUpe3ZhciBuPXQu Z2V0Q2FudmFzQ29udGFpbmVyKCksYT1udWxsLGk9ITEsbz1udWxsO2Zvcih2 YXIgcyBpbiBTbil0W3NdPW5ldyBTbltzXSh0LGUpLGUuaW50ZXJhY3RpdmUm JmVbc10mJnRbc10uZW5hYmxlKGVbc10pO3IuYWRkRXZlbnRMaXN0ZW5lcihu LCJtb3VzZW91dCIsZnVuY3Rpb24oZSl7dC5maXJlKG5ldyBwbigibW91c2Vv dXQiLHQsZSkpfSksci5hZGRFdmVudExpc3RlbmVyKG4sIm1vdXNlZG93biIs ZnVuY3Rpb24oYSl7aT0hMCxvPXIubW91c2VQb3MobixhKTt2YXIgcz1uZXcg cG4oIm1vdXNlZG93biIsdCxhKTt0LmZpcmUocykscy5kZWZhdWx0UHJldmVu dGVkfHwoZS5pbnRlcmFjdGl2ZSYmIXQuZG91YmxlQ2xpY2tab29tLmlzQWN0 aXZlKCkmJnQuc3RvcCgpLHQuYm94Wm9vbS5vbk1vdXNlRG93bihhKSx0LmJv eFpvb20uaXNBY3RpdmUoKXx8dC5kcmFnUGFuLmlzQWN0aXZlKCl8fHQuZHJh Z1JvdGF0ZS5vbk1vdXNlRG93bihhKSx0LmJveFpvb20uaXNBY3RpdmUoKXx8 dC5kcmFnUm90YXRlLmlzQWN0aXZlKCl8fHQuZHJhZ1Bhbi5vbk1vdXNlRG93 bihhKSl9KSxyLmFkZEV2ZW50TGlzdGVuZXIobiwibW91c2V1cCIsZnVuY3Rp b24oZSl7dmFyIHI9dC5kcmFnUm90YXRlLmlzQWN0aXZlKCk7YSYmIXImJnQu ZmlyZShuZXcgcG4oImNvbnRleHRtZW51Iix0LGEpKSxhPW51bGwsaT0hMSx0 LmZpcmUobmV3IHBuKCJtb3VzZXVwIix0LGUpKX0pLHIuYWRkRXZlbnRMaXN0 ZW5lcihuLCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGUpe2lmKCF0LmRyYWdQYW4u aXNBY3RpdmUoKSYmIXQuZHJhZ1JvdGF0ZS5pc0FjdGl2ZSgpKXtmb3IodmFy IHI9ZS50YXJnZXQ7ciYmciE9PW47KXI9ci5wYXJlbnROb2RlO3I9PT1uJiZ0 LmZpcmUobmV3IHBuKCJtb3VzZW1vdmUiLHQsZSkpfX0pLHIuYWRkRXZlbnRM aXN0ZW5lcihuLCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgcj1l LnRhcmdldDtyJiZyIT09bjspcj1yLnBhcmVudE5vZGU7cj09PW4mJnQuZmly ZShuZXcgcG4oIm1vdXNlb3ZlciIsdCxlKSl9KSxyLmFkZEV2ZW50TGlzdGVu ZXIobiwidG91Y2hzdGFydCIsZnVuY3Rpb24ocil7dmFyIG49bmV3IGRuKCJ0 b3VjaHN0YXJ0Iix0LHIpO3QuZmlyZShuKSxuLmRlZmF1bHRQcmV2ZW50ZWR8 fChlLmludGVyYWN0aXZlJiZ0LnN0b3AoKSx0LmJveFpvb20uaXNBY3RpdmUo KXx8dC5kcmFnUm90YXRlLmlzQWN0aXZlKCl8fHQuZHJhZ1Bhbi5vblRvdWNo U3RhcnQociksdC50b3VjaFpvb21Sb3RhdGUub25TdGFydChyKSx0LmRvdWJs ZUNsaWNrWm9vbS5vblRvdWNoU3RhcnQobikpfSx7cGFzc2l2ZTohMX0pLHIu YWRkRXZlbnRMaXN0ZW5lcihuLCJ0b3VjaG1vdmUiLGZ1bmN0aW9uKGUpe3Qu ZmlyZShuZXcgZG4oInRvdWNobW92ZSIsdCxlKSl9LHtwYXNzaXZlOiExfSks ci5hZGRFdmVudExpc3RlbmVyKG4sInRvdWNoZW5kIixmdW5jdGlvbihlKXt0 LmZpcmUobmV3IGRuKCJ0b3VjaGVuZCIsdCxlKSl9KSxyLmFkZEV2ZW50TGlz dGVuZXIobiwidG91Y2hjYW5jZWwiLGZ1bmN0aW9uKGUpe3QuZmlyZShuZXcg ZG4oInRvdWNoY2FuY2VsIix0LGUpKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcihu LCJjbGljayIsZnVuY3Rpb24oYSl7dmFyIGk9ci5tb3VzZVBvcyhuLGEpOygh b3x8aS5lcXVhbHMobyl8fGkuZGlzdChvKTxlLmNsaWNrVG9sZXJhbmNlKSYm dC5maXJlKG5ldyBwbigiY2xpY2siLHQsYSkpfSksci5hZGRFdmVudExpc3Rl bmVyKG4sImRibGNsaWNrIixmdW5jdGlvbihlKXt2YXIgcj1uZXcgcG4oImRi bGNsaWNrIix0LGUpO3QuZmlyZShyKSxyLmRlZmF1bHRQcmV2ZW50ZWR8fHQu ZG91YmxlQ2xpY2tab29tLm9uRGJsQ2xpY2socil9KSxyLmFkZEV2ZW50TGlz dGVuZXIobiwiY29udGV4dG1lbnUiLGZ1bmN0aW9uKGUpe3ZhciByPXQuZHJh Z1JvdGF0ZS5pc0FjdGl2ZSgpO2l8fHI/aSYmKGE9ZSk6dC5maXJlKG5ldyBw bigiY29udGV4dG1lbnUiLHQsZSkpLCh0LmRyYWdSb3RhdGUuaXNFbmFibGVk KCl8fHQubGlzdGVucygiY29udGV4dG1lbnUiKSkmJmUucHJldmVudERlZmF1 bHQoKX0pLHIuYWRkRXZlbnRMaXN0ZW5lcihuLCJ3aGVlbCIsZnVuY3Rpb24o cil7ZS5pbnRlcmFjdGl2ZSYmdC5zdG9wKCk7dmFyIG49bmV3IGduKCJ3aGVl bCIsdCxyKTt0LmZpcmUobiksbi5kZWZhdWx0UHJldmVudGVkfHx0LnNjcm9s bFpvb20ub25XaGVlbChyKX0se3Bhc3NpdmU6ITF9KX0odGhpcyxlKSx0aGlz Ll9oYXNoPWUuaGFzaCYmKG5ldyBmbikuYWRkVG8odGhpcyksdGhpcy5faGFz aCYmdGhpcy5faGFzaC5fb25IYXNoQ2hhbmdlKCl8fCh0aGlzLmp1bXBUbyh7 Y2VudGVyOmUuY2VudGVyLHpvb206ZS56b29tLGJlYXJpbmc6ZS5iZWFyaW5n LHBpdGNoOmUucGl0Y2h9KSxlLmJvdW5kcyYmKHRoaXMucmVzaXplKCksdGhp cy5maXRCb3VuZHMoZS5ib3VuZHMsdC5leHRlbmQoe30sZS5maXRCb3VuZHNP cHRpb25zLHtkdXJhdGlvbjowfSkpKSksdGhpcy5yZXNpemUoKSx0aGlzLl9s b2NhbElkZW9ncmFwaEZvbnRGYW1pbHk9ZS5sb2NhbElkZW9ncmFwaEZvbnRG YW1pbHksZS5zdHlsZSYmdGhpcy5zZXRTdHlsZShlLnN0eWxlLHtsb2NhbElk ZW9ncmFwaEZvbnRGYW1pbHk6ZS5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHl9 KSxlLmF0dHJpYnV0aW9uQ29udHJvbCYmdGhpcy5hZGRDb250cm9sKG5ldyBM bih7Y3VzdG9tQXR0cmlidXRpb246ZS5jdXN0b21BdHRyaWJ1dGlvbn0pKSx0 aGlzLmFkZENvbnRyb2wobmV3IENuLGUubG9nb1Bvc2l0aW9uKSx0aGlzLm9u KCJzdHlsZS5sb2FkIixmdW5jdGlvbigpe2EudHJhbnNmb3JtLnVubW9kaWZp ZWQmJmEuanVtcFRvKGEuc3R5bGUuc3R5bGVzaGVldCl9KSx0aGlzLm9uKCJk YXRhIixmdW5jdGlvbihlKXthLl91cGRhdGUoInN0eWxlIj09PWUuZGF0YVR5 cGUpLGEuZmlyZShuZXcgdC5FdmVudChlLmRhdGFUeXBlKyJkYXRhIixlKSl9 KSx0aGlzLm9uKCJkYXRhbG9hZGluZyIsZnVuY3Rpb24oZSl7YS5maXJlKG5l dyB0LkV2ZW50KGUuZGF0YVR5cGUrImRhdGFsb2FkaW5nIixlKSl9KX1uJiYo YS5fX3Byb3RvX189biksYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuJiZu LnByb3RvdHlwZSksYS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTt2YXIgaT17 c2hvd1RpbGVCb3VuZGFyaWVzOntjb25maWd1cmFibGU6ITB9LHNob3dDb2xs aXNpb25Cb3hlczp7Y29uZmlndXJhYmxlOiEwfSxzaG93T3ZlcmRyYXdJbnNw ZWN0b3I6e2NvbmZpZ3VyYWJsZTohMH0scmVwYWludDp7Y29uZmlndXJhYmxl OiEwfSx2ZXJ0aWNlczp7Y29uZmlndXJhYmxlOiEwfSx2ZXJzaW9uOntjb25m aWd1cmFibGU6ITB9fTtyZXR1cm4gYS5wcm90b3R5cGUuX2dldE1hcElkPWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcElkfSxhLnByb3RvdHlwZS5hZGRD b250cm9sPWZ1bmN0aW9uKGUscil7aWYodm9pZCAwPT09ciYmZS5nZXREZWZh dWx0UG9zaXRpb24mJihyPWUuZ2V0RGVmYXVsdFBvc2l0aW9uKCkpLHZvaWQg MD09PXImJihyPSJ0b3AtcmlnaHQiKSwhZXx8IWUub25BZGQpcmV0dXJuIHRo aXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiSW52YWxpZCBh cmd1bWVudCB0byBtYXAuYWRkQ29udHJvbCgpLiBBcmd1bWVudCBtdXN0IGJl IGEgY29udHJvbCB3aXRoIG9uQWRkIGFuZCBvblJlbW92ZSBtZXRob2RzLiIp KSk7dmFyIG49ZS5vbkFkZCh0aGlzKTt0aGlzLl9jb250cm9scy5wdXNoKGUp O3ZhciBhPXRoaXMuX2NvbnRyb2xQb3NpdGlvbnNbcl07cmV0dXJuLTEhPT1y LmluZGV4T2YoImJvdHRvbSIpP2EuaW5zZXJ0QmVmb3JlKG4sYS5maXJzdENo aWxkKTphLmFwcGVuZENoaWxkKG4pLHRoaXN9LGEucHJvdG90eXBlLnJlbW92 ZUNvbnRyb2w9ZnVuY3Rpb24oZSl7aWYoIWV8fCFlLm9uUmVtb3ZlKXJldHVy biB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIkludmFs aWQgYXJndW1lbnQgdG8gbWFwLnJlbW92ZUNvbnRyb2woKS4gQXJndW1lbnQg bXVzdCBiZSBhIGNvbnRyb2wgd2l0aCBvbkFkZCBhbmQgb25SZW1vdmUgbWV0 aG9kcy4iKSkpO3ZhciByPXRoaXMuX2NvbnRyb2xzLmluZGV4T2YoZSk7cmV0 dXJuIHI+LTEmJnRoaXMuX2NvbnRyb2xzLnNwbGljZShyLDEpLGUub25SZW1v dmUodGhpcyksdGhpc30sYS5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKGUp e3ZhciByPXRoaXMuX2NvbnRhaW5lckRpbWVuc2lvbnMoKSxuPXJbMF0sYT1y WzFdO3JldHVybiB0aGlzLl9yZXNpemVDYW52YXMobixhKSx0aGlzLnRyYW5z Zm9ybS5yZXNpemUobixhKSx0aGlzLnBhaW50ZXIucmVzaXplKG4sYSksdGhp cy5maXJlKG5ldyB0LkV2ZW50KCJtb3Zlc3RhcnQiLGUpKS5maXJlKG5ldyB0 LkV2ZW50KCJtb3ZlIixlKSkuZmlyZShuZXcgdC5FdmVudCgicmVzaXplIixl KSkuZmlyZShuZXcgdC5FdmVudCgibW92ZWVuZCIsZSkpLHRoaXN9LGEucHJv dG90eXBlLmdldEJvdW5kcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyYW5z Zm9ybS5nZXRCb3VuZHMoKX0sYS5wcm90b3R5cGUuZ2V0TWF4Qm91bmRzPWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLmdldE1heEJvdW5kcygp fSxhLnByb3RvdHlwZS5zZXRNYXhCb3VuZHM9ZnVuY3Rpb24oZSl7cmV0dXJu IHRoaXMudHJhbnNmb3JtLnNldE1heEJvdW5kcyh0LkxuZ0xhdEJvdW5kcy5j b252ZXJ0KGUpKSx0aGlzLl91cGRhdGUoKX0sYS5wcm90b3R5cGUuc2V0TWlu Wm9vbT1mdW5jdGlvbih0KXtpZigodD1udWxsPT10PzA6dCk+PTAmJnQ8PXRo aXMudHJhbnNmb3JtLm1heFpvb20pcmV0dXJuIHRoaXMudHJhbnNmb3JtLm1p blpvb209dCx0aGlzLl91cGRhdGUoKSx0aGlzLmdldFpvb20oKTx0JiZ0aGlz LnNldFpvb20odCksdGhpczt0aHJvdyBuZXcgRXJyb3IoIm1pblpvb20gbXVz dCBiZSBiZXR3ZWVuIDAgYW5kIHRoZSBjdXJyZW50IG1heFpvb20sIGluY2x1 c2l2ZSIpfSxhLnByb3RvdHlwZS5nZXRNaW5ab29tPWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMudHJhbnNmb3JtLm1pblpvb219LGEucHJvdG90eXBlLnNldE1h eFpvb209ZnVuY3Rpb24odCl7aWYoKHQ9bnVsbD09dD8yMjp0KT49dGhpcy50 cmFuc2Zvcm0ubWluWm9vbSlyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWF4Wm9v bT10LHRoaXMuX3VwZGF0ZSgpLHRoaXMuZ2V0Wm9vbSgpPnQmJnRoaXMuc2V0 Wm9vbSh0KSx0aGlzO3Rocm93IG5ldyBFcnJvcigibWF4Wm9vbSBtdXN0IGJl IGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBtaW5ab29tIil9LGEucHJvdG90 eXBlLmdldFJlbmRlcldvcmxkQ29waWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMudHJhbnNmb3JtLnJlbmRlcldvcmxkQ29waWVzfSxhLnByb3RvdHlwZS5z ZXRSZW5kZXJXb3JsZENvcGllcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50 cmFuc2Zvcm0ucmVuZGVyV29ybGRDb3BpZXM9dCx0aGlzLl91cGRhdGUoKX0s YS5wcm90b3R5cGUuZ2V0TWF4Wm9vbT1mdW5jdGlvbigpe3JldHVybiB0aGlz LnRyYW5zZm9ybS5tYXhab29tfSxhLnByb3RvdHlwZS5wcm9qZWN0PWZ1bmN0 aW9uKGUpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5sb2NhdGlvblBvaW50KHQu TG5nTGF0LmNvbnZlcnQoZSkpfSxhLnByb3RvdHlwZS51bnByb2plY3Q9ZnVu Y3Rpb24oZSl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLnBvaW50TG9jYXRpb24o dC5Qb2ludC5jb252ZXJ0KGUpKX0sYS5wcm90b3R5cGUuaXNNb3Zpbmc9ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fbW92aW5nfHx0aGlzLmRyYWdQYW4uaXNB Y3RpdmUoKXx8dGhpcy5kcmFnUm90YXRlLmlzQWN0aXZlKCl8fHRoaXMuc2Ny b2xsWm9vbS5pc0FjdGl2ZSgpfSxhLnByb3RvdHlwZS5pc1pvb21pbmc9ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fem9vbWluZ3x8dGhpcy5zY3JvbGxab29t LmlzWm9vbWluZygpfSxhLnByb3RvdHlwZS5pc1JvdGF0aW5nPWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX3JvdGF0aW5nfHx0aGlzLmRyYWdSb3RhdGUuaXNB Y3RpdmUoKX0sYS5wcm90b3R5cGUub249ZnVuY3Rpb24odCxlLHIpe3ZhciBh PXRoaXM7aWYodm9pZCAwPT09cilyZXR1cm4gbi5wcm90b3R5cGUub24uY2Fs bCh0aGlzLHQsZSk7dmFyIGk9ZnVuY3Rpb24oKXt2YXIgbjtpZigibW91c2Vl bnRlciI9PT10fHwibW91c2VvdmVyIj09PXQpe3ZhciBpPSExO3JldHVybnts YXllcjplLGxpc3RlbmVyOnIsZGVsZWdhdGVzOnttb3VzZW1vdmU6ZnVuY3Rp b24obil7dmFyIG89YS5nZXRMYXllcihlKT9hLnF1ZXJ5UmVuZGVyZWRGZWF0 dXJlcyhuLnBvaW50LHtsYXllcnM6W2VdfSk6W107by5sZW5ndGg/aXx8KGk9 ITAsci5jYWxsKGEsbmV3IHBuKHQsYSxuLm9yaWdpbmFsRXZlbnQse2ZlYXR1 cmVzOm99KSkpOmk9ITF9LG1vdXNlb3V0OmZ1bmN0aW9uKCl7aT0hMX19fX1p ZigibW91c2VsZWF2ZSI9PT10fHwibW91c2VvdXQiPT09dCl7dmFyIG89ITE7 cmV0dXJue2xheWVyOmUsbGlzdGVuZXI6cixkZWxlZ2F0ZXM6e21vdXNlbW92 ZTpmdW5jdGlvbihuKXsoYS5nZXRMYXllcihlKT9hLnF1ZXJ5UmVuZGVyZWRG ZWF0dXJlcyhuLnBvaW50LHtsYXllcnM6W2VdfSk6W10pLmxlbmd0aD9vPSEw Om8mJihvPSExLHIuY2FsbChhLG5ldyBwbih0LGEsbi5vcmlnaW5hbEV2ZW50 KSkpfSxtb3VzZW91dDpmdW5jdGlvbihlKXtvJiYobz0hMSxyLmNhbGwoYSxu ZXcgcG4odCxhLGUub3JpZ2luYWxFdmVudCkpKX19fX1yZXR1cm57bGF5ZXI6 ZSxsaXN0ZW5lcjpyLGRlbGVnYXRlczoobj17fSxuW3RdPWZ1bmN0aW9uKHQp e3ZhciBuPWEuZ2V0TGF5ZXIoZSk/YS5xdWVyeVJlbmRlcmVkRmVhdHVyZXMo dC5wb2ludCx7bGF5ZXJzOltlXX0pOltdO24ubGVuZ3RoJiYodC5mZWF0dXJl cz1uLHIuY2FsbChhLHQpLGRlbGV0ZSB0LmZlYXR1cmVzKX0sbil9fSgpO2Zv cih2YXIgbyBpbiB0aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnM9dGhpcy5fZGVs ZWdhdGVkTGlzdGVuZXJzfHx7fSx0aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnNb dF09dGhpcy5fZGVsZWdhdGVkTGlzdGVuZXJzW3RdfHxbXSx0aGlzLl9kZWxl Z2F0ZWRMaXN0ZW5lcnNbdF0ucHVzaChpKSxpLmRlbGVnYXRlcyl0aGlzLm9u KG8saS5kZWxlZ2F0ZXNbb10pO3JldHVybiB0aGlzfSxhLnByb3RvdHlwZS5v ZmY9ZnVuY3Rpb24odCxlLHIpe2lmKHZvaWQgMD09PXIpcmV0dXJuIG4ucHJv dG90eXBlLm9mZi5jYWxsKHRoaXMsdCxlKTtpZih0aGlzLl9kZWxlZ2F0ZWRM aXN0ZW5lcnMmJnRoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1t0XSlmb3IodmFy IGE9dGhpcy5fZGVsZWdhdGVkTGlzdGVuZXJzW3RdLGk9MDtpPGEubGVuZ3Ro O2krKyl7dmFyIG89YVtpXTtpZihvLmxheWVyPT09ZSYmby5saXN0ZW5lcj09 PXIpe2Zvcih2YXIgcyBpbiBvLmRlbGVnYXRlcyl0aGlzLm9mZihzLG8uZGVs ZWdhdGVzW3NdKTtyZXR1cm4gYS5zcGxpY2UoaSwxKSx0aGlzfX1yZXR1cm4g dGhpc30sYS5wcm90b3R5cGUucXVlcnlSZW5kZXJlZEZlYXR1cmVzPWZ1bmN0 aW9uKGUscil7aWYoIXRoaXMuc3R5bGUpcmV0dXJuW107dmFyIG47aWYodm9p ZCAwIT09cnx8dm9pZCAwPT09ZXx8ZSBpbnN0YW5jZW9mIHQuUG9pbnR8fEFy cmF5LmlzQXJyYXkoZSl8fChyPWUsZT12b2lkIDApLHI9cnx8e30sKGU9ZXx8 W1swLDBdLFt0aGlzLnRyYW5zZm9ybS53aWR0aCx0aGlzLnRyYW5zZm9ybS5o ZWlnaHRdXSlpbnN0YW5jZW9mIHQuUG9pbnR8fCJudW1iZXIiPT10eXBlb2Yg ZVswXSluPVt0LlBvaW50LmNvbnZlcnQoZSldO2Vsc2V7dmFyIGE9dC5Qb2lu dC5jb252ZXJ0KGVbMF0pLGk9dC5Qb2ludC5jb252ZXJ0KGVbMV0pO249W2Es bmV3IHQuUG9pbnQoaS54LGEueSksaSxuZXcgdC5Qb2ludChhLngsaS55KSxh XX1yZXR1cm4gdGhpcy5zdHlsZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXMobixy LHRoaXMudHJhbnNmb3JtKX0sYS5wcm90b3R5cGUucXVlcnlTb3VyY2VGZWF0 dXJlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlLnF1ZXJ5U291 cmNlRmVhdHVyZXModCxlKX0sYS5wcm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rp b24oZSxyKXtyZXR1cm4hMSE9PShyPXQuZXh0ZW5kKHt9LHtsb2NhbElkZW9n cmFwaEZvbnRGYW1pbHk6dGhpcy5fbG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5 fSxyKSkuZGlmZiYmci5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHk9PT10aGlz Ll9sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHkmJnRoaXMuc3R5bGUmJmU/KHRo aXMuX2RpZmZTdHlsZShlLHIpLHRoaXMpOih0aGlzLl9sb2NhbElkZW9ncmFw aEZvbnRGYW1pbHk9ci5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHksdGhpcy5f dXBkYXRlU3R5bGUoZSxyKSl9LGEucHJvdG90eXBlLl91cGRhdGVTdHlsZT1m dW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlJiYodGhpcy5zdHlsZS5z ZXRFdmVudGVkUGFyZW50KG51bGwpLHRoaXMuc3R5bGUuX3JlbW92ZSgpKSx0 Pyh0aGlzLnN0eWxlPW5ldyBSZSh0aGlzLGV8fHt9KSx0aGlzLnN0eWxlLnNl dEV2ZW50ZWRQYXJlbnQodGhpcyx7c3R5bGU6dGhpcy5zdHlsZX0pLCJzdHJp bmciPT10eXBlb2YgdD90aGlzLnN0eWxlLmxvYWRVUkwodCk6dGhpcy5zdHls ZS5sb2FkSlNPTih0KSx0aGlzKTooZGVsZXRlIHRoaXMuc3R5bGUsdGhpcyl9 LGEucHJvdG90eXBlLl9kaWZmU3R5bGU9ZnVuY3Rpb24oZSxyKXt2YXIgbj10 aGlzO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIGE9dGhpcy5fcmVxdWVz dE1hbmFnZXIubm9ybWFsaXplU3R5bGVVUkwoZSksaT10aGlzLl9yZXF1ZXN0 TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KGEsdC5SZXNvdXJjZVR5cGUuU3R5 bGUpO3QuZ2V0SlNPTihpLGZ1bmN0aW9uKGUsYSl7ZT9uLmZpcmUobmV3IHQu RXJyb3JFdmVudChlKSk6YSYmbi5fdXBkYXRlRGlmZihhLHIpfSl9ZWxzZSJv YmplY3QiPT10eXBlb2YgZSYmdGhpcy5fdXBkYXRlRGlmZihlLHIpfSxhLnBy b3RvdHlwZS5fdXBkYXRlRGlmZj1mdW5jdGlvbihlLHIpe3RyeXt0aGlzLnN0 eWxlLnNldFN0YXRlKGUpJiZ0aGlzLl91cGRhdGUoITApfWNhdGNoKG4pe3Qu d2Fybk9uY2UoIlVuYWJsZSB0byBwZXJmb3JtIHN0eWxlIGRpZmY6ICIrKG4u bWVzc2FnZXx8bi5lcnJvcnx8bikrIi4gIFJlYnVpbGRpbmcgdGhlIHN0eWxl IGZyb20gc2NyYXRjaC4iKSx0aGlzLl91cGRhdGVTdHlsZShlLHIpfX0sYS5w cm90b3R5cGUuZ2V0U3R5bGU9ZnVuY3Rpb24oKXtpZih0aGlzLnN0eWxlKXJl dHVybiB0aGlzLnN0eWxlLnNlcmlhbGl6ZSgpfSxhLnByb3RvdHlwZS5pc1N0 eWxlTG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGU/dGhpcy5z dHlsZS5sb2FkZWQoKTp0Lndhcm5PbmNlKCJUaGVyZSBpcyBubyBzdHlsZSBh ZGRlZCB0byB0aGUgbWFwLiIpfSxhLnByb3RvdHlwZS5hZGRTb3VyY2U9ZnVu Y3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zdHlsZS5hZGRTb3VyY2UodCxlKSx0 aGlzLl91cGRhdGUoITApfSxhLnByb3RvdHlwZS5pc1NvdXJjZUxvYWRlZD1m dW5jdGlvbihlKXt2YXIgcj10aGlzLnN0eWxlJiZ0aGlzLnN0eWxlLnNvdXJj ZUNhY2hlc1tlXTtpZih2b2lkIDAhPT1yKXJldHVybiByLmxvYWRlZCgpO3Ro aXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlcmUgaXMg bm8gc291cmNlIHdpdGggSUQgJyIrZSsiJyIpKSl9LGEucHJvdG90eXBlLmFy ZVRpbGVzTG9hZGVkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdHlsZSYmdGhp cy5zdHlsZS5zb3VyY2VDYWNoZXM7Zm9yKHZhciBlIGluIHQpe3ZhciByPXRb ZV0uX3RpbGVzO2Zvcih2YXIgbiBpbiByKXt2YXIgYT1yW25dO2lmKCJsb2Fk ZWQiIT09YS5zdGF0ZSYmImVycm9yZWQiIT09YS5zdGF0ZSlyZXR1cm4hMX19 cmV0dXJuITB9LGEucHJvdG90eXBlLmFkZFNvdXJjZVR5cGU9ZnVuY3Rpb24o dCxlLHIpe3JldHVybiB0aGlzLnN0eWxlLmFkZFNvdXJjZVR5cGUodCxlLHIp fSxhLnByb3RvdHlwZS5yZW1vdmVTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMuc3R5bGUucmVtb3ZlU291cmNlKHQpLHRoaXMuX3VwZGF0ZSghMCl9 LGEucHJvdG90eXBlLmdldFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhp cy5zdHlsZS5nZXRTb3VyY2UodCl9LGEucHJvdG90eXBlLmFkZEltYWdlPWZ1 bmN0aW9uKGUscixuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIGE9bi5waXhl bFJhdGlvO3ZvaWQgMD09PWEmJihhPTEpO3ZhciBpPW4uc2RmO2lmKHZvaWQg MD09PWkmJihpPSExKSxyIGluc3RhbmNlb2YgT24pe3ZhciBvPXQuYnJvd3Nl ci5nZXRJbWFnZURhdGEocikscz1vLndpZHRoLGw9by5oZWlnaHQsYz1vLmRh dGE7dGhpcy5zdHlsZS5hZGRJbWFnZShlLHtkYXRhOm5ldyB0LlJHQkFJbWFn ZSh7d2lkdGg6cyxoZWlnaHQ6bH0sYykscGl4ZWxSYXRpbzphLHNkZjppLHZl cnNpb246MH0pfWVsc2V7aWYodm9pZCAwPT09ci53aWR0aHx8dm9pZCAwPT09 ci5oZWlnaHQpcmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5l dyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgdG8gbWFwLmFkZEltYWdlKCku IFRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhbiBgSFRNTEltYWdlRWxl bWVudGAsIGBJbWFnZURhdGFgLCBvciBvYmplY3Qgd2l0aCBgd2lkdGhgLCBg aGVpZ2h0YCwgYW5kIGBkYXRhYCBwcm9wZXJ0aWVzIHdpdGggdGhlIHNhbWUg Zm9ybWF0IGFzIGBJbWFnZURhdGFgIikpKTt2YXIgdT1yLndpZHRoLGg9ci5o ZWlnaHQsZj1yLmRhdGEscD1yO3RoaXMuc3R5bGUuYWRkSW1hZ2UoZSx7ZGF0 YTpuZXcgdC5SR0JBSW1hZ2Uoe3dpZHRoOnUsaGVpZ2h0Omh9LG5ldyBVaW50 OEFycmF5KGYpKSxwaXhlbFJhdGlvOmEsc2RmOmksdmVyc2lvbjowLHVzZXJJ bWFnZTpwfSkscC5vbkFkZCYmcC5vbkFkZCh0aGlzLGUpfX0sYS5wcm90b3R5 cGUudXBkYXRlSW1hZ2U9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLnN0eWxl LmdldEltYWdlKGUpO2lmKCFuKXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJy b3JFdmVudChuZXcgRXJyb3IoIlRoZSBtYXAgaGFzIG5vIGltYWdlIHdpdGgg dGhhdCBpZC4gSWYgeW91IGFyZSBhZGRpbmcgYSBuZXcgaW1hZ2UgdXNlIGBt YXAuYWRkSW1hZ2UoLi4uKWAgaW5zdGVhZC4iKSkpO3ZhciBhPXIgaW5zdGFu Y2VvZiBPbj90LmJyb3dzZXIuZ2V0SW1hZ2VEYXRhKHIpOnIsaT1hLndpZHRo LG89YS5oZWlnaHQscz1hLmRhdGE7aWYodm9pZCAwPT09aXx8dm9pZCAwPT09 bylyZXR1cm4gdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9y KCJJbnZhbGlkIGFyZ3VtZW50cyB0byBtYXAudXBkYXRlSW1hZ2UoKS4gVGhl IHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGFuIGBIVE1MSW1hZ2VFbGVtZW50 YCwgYEltYWdlRGF0YWAsIG9yIG9iamVjdCB3aXRoIGB3aWR0aGAsIGBoZWln aHRgLCBhbmQgYGRhdGFgIHByb3BlcnRpZXMgd2l0aCB0aGUgc2FtZSBmb3Jt YXQgYXMgYEltYWdlRGF0YWAiKSkpO2lmKGkhPT1uLmRhdGEud2lkdGh8fG8h PT1uLmRhdGEuaGVpZ2h0KXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JF dmVudChuZXcgRXJyb3IoIlRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB1 cGRhdGVkIGltYWdlIG11c3QgYmUgdGhhdCBzYW1lIGFzIHRoZSBwcmV2aW91 cyB2ZXJzaW9uIG9mIHRoZSBpbWFnZSIpKSk7dmFyIGw9IShyIGluc3RhbmNl b2YgT24pO24uZGF0YS5yZXBsYWNlKHMsbCksdGhpcy5zdHlsZS51cGRhdGVJ bWFnZShlLG4pfSxhLnByb3RvdHlwZS5oYXNJbWFnZT1mdW5jdGlvbihlKXty ZXR1cm4gZT8hIXRoaXMuc3R5bGUuZ2V0SW1hZ2UoZSk6KHRoaXMuZmlyZShu ZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiTWlzc2luZyByZXF1aXJlZCBp bWFnZSBpZCIpKSksITEpfSxhLnByb3RvdHlwZS5yZW1vdmVJbWFnZT1mdW5j dGlvbih0KXt0aGlzLnN0eWxlLnJlbW92ZUltYWdlKHQpfSxhLnByb3RvdHlw ZS5sb2FkSW1hZ2U9ZnVuY3Rpb24oZSxyKXt0LmdldEltYWdlKHRoaXMuX3Jl cXVlc3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVlc3QoZSx0LlJlc291cmNlVHlw ZS5JbWFnZSkscil9LGEucHJvdG90eXBlLmxpc3RJbWFnZXM9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5zdHlsZS5saXN0SW1hZ2VzKCl9LGEucHJvdG90eXBl LmFkZExheWVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUuYWRk TGF5ZXIodCxlKSx0aGlzLl91cGRhdGUoITApfSxhLnByb3RvdHlwZS5tb3Zl TGF5ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zdHlsZS5tb3ZlTGF5 ZXIodCxlKSx0aGlzLl91cGRhdGUoITApfSxhLnByb3RvdHlwZS5yZW1vdmVM YXllcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdHlsZS5yZW1vdmVMYXll cih0KSx0aGlzLl91cGRhdGUoITApfSxhLnByb3RvdHlwZS5nZXRMYXllcj1m dW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRMYXllcih0KX0sYS5w cm90b3R5cGUuc2V0RmlsdGVyPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9p ZCAwPT09ciYmKHI9e30pLHRoaXMuc3R5bGUuc2V0RmlsdGVyKHQsZSxyKSx0 aGlzLl91cGRhdGUoITApfSxhLnByb3RvdHlwZS5zZXRMYXllclpvb21SYW5n ZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuc3R5bGUuc2V0TGF5ZXJa b29tUmFuZ2UodCxlLHIpLHRoaXMuX3VwZGF0ZSghMCl9LGEucHJvdG90eXBl LmdldEZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRG aWx0ZXIodCl9LGEucHJvdG90eXBlLnNldFBhaW50UHJvcGVydHk9ZnVuY3Rp b24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXt9KSx0aGlzLnN0 eWxlLnNldFBhaW50UHJvcGVydHkodCxlLHIsbiksdGhpcy5fdXBkYXRlKCEw KX0sYS5wcm90b3R5cGUuZ2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGUp e3JldHVybiB0aGlzLnN0eWxlLmdldFBhaW50UHJvcGVydHkodCxlKX0sYS5w cm90b3R5cGUuc2V0TGF5b3V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLHIsbil7 cmV0dXJuIHZvaWQgMD09PW4mJihuPXt9KSx0aGlzLnN0eWxlLnNldExheW91 dFByb3BlcnR5KHQsZSxyLG4pLHRoaXMuX3VwZGF0ZSghMCl9LGEucHJvdG90 eXBlLmdldExheW91dFByb3BlcnR5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRo aXMuc3R5bGUuZ2V0TGF5b3V0UHJvcGVydHkodCxlKX0sYS5wcm90b3R5cGUu c2V0TGlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9 e30pLHRoaXMuc3R5bGUuc2V0TGlnaHQodCxlKSx0aGlzLl91cGRhdGUoITAp fSxhLnByb3RvdHlwZS5nZXRMaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlz LnN0eWxlLmdldExpZ2h0KCl9LGEucHJvdG90eXBlLnNldEZlYXR1cmVTdGF0 ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlLnNldEZlYXR1cmVT dGF0ZSh0LGUpLHRoaXMuX3VwZGF0ZSgpfSxhLnByb3RvdHlwZS5yZW1vdmVG ZWF0dXJlU3RhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zdHlsZS5y ZW1vdmVGZWF0dXJlU3RhdGUodCxlKSx0aGlzLl91cGRhdGUoKX0sYS5wcm90 b3R5cGUuZ2V0RmVhdHVyZVN0YXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlz LnN0eWxlLmdldEZlYXR1cmVTdGF0ZSh0KX0sYS5wcm90b3R5cGUuZ2V0Q29u dGFpbmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sYS5w cm90b3R5cGUuZ2V0Q2FudmFzQ29udGFpbmVyPWZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX2NhbnZhc0NvbnRhaW5lcn0sYS5wcm90b3R5cGUuZ2V0Q2FudmFz PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbnZhc30sYS5wcm90b3R5cGUu X2NvbnRhaW5lckRpbWVuc2lvbnM9ZnVuY3Rpb24oKXt2YXIgdD0wLGU9MDty ZXR1cm4gdGhpcy5fY29udGFpbmVyJiYodD10aGlzLl9jb250YWluZXIuY2xp ZW50V2lkdGh8fDQwMCxlPXRoaXMuX2NvbnRhaW5lci5jbGllbnRIZWlnaHR8 fDMwMCksW3QsZV19LGEucHJvdG90eXBlLl9kZXRlY3RNaXNzaW5nQ1NTPWZ1 bmN0aW9uKCl7InJnYigyNTAsIDEyOCwgMTE0KSIhPT10LndpbmRvdy5nZXRD b21wdXRlZFN0eWxlKHRoaXMuX21pc3NpbmdDU1NDYW5hcnkpLmdldFByb3Bl cnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSYmdC53YXJuT25jZSgiVGhp cyBwYWdlIGFwcGVhcnMgdG8gYmUgbWlzc2luZyBDU1MgZGVjbGFyYXRpb25z IGZvciBNYXBib3ggR0wgSlMsIHdoaWNoIG1heSBjYXVzZSB0aGUgbWFwIHRv IGRpc3BsYXkgaW5jb3JyZWN0bHkuIFBsZWFzZSBlbnN1cmUgeW91ciBwYWdl IGluY2x1ZGVzIG1hcGJveC1nbC5jc3MsIGFzIGRlc2NyaWJlZCBpbiBodHRw czovL3d3dy5tYXBib3guY29tL21hcGJveC1nbC1qcy9hcGkvLiIpfSxhLnBy b3RvdHlwZS5fc2V0dXBDb250YWluZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlz Ll9jb250YWluZXI7dC5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1tYXAiKSwo dGhpcy5fbWlzc2luZ0NTU0NhbmFyeT1yLmNyZWF0ZSgiZGl2IiwibWFwYm94 Z2wtY2FuYXJ5Iix0KSkuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlz Ll9kZXRlY3RNaXNzaW5nQ1NTKCk7dmFyIGU9dGhpcy5fY2FudmFzQ29udGFp bmVyPXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1jYW52YXMtY29udGFpbmVy Iix0KTt0aGlzLl9pbnRlcmFjdGl2ZSYmZS5jbGFzc0xpc3QuYWRkKCJtYXBi b3hnbC1pbnRlcmFjdGl2ZSIpLHRoaXMuX2NhbnZhcz1yLmNyZWF0ZSgiY2Fu dmFzIiwibWFwYm94Z2wtY2FudmFzIixlKSx0aGlzLl9jYW52YXMuc3R5bGUu cG9zaXRpb249ImFic29sdXRlIix0aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0 ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsdGhpcy5fY29udGV4dExvc3QsITEp LHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRy ZXN0b3JlZCIsdGhpcy5fY29udGV4dFJlc3RvcmVkLCExKSx0aGlzLl9jYW52 YXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSx0aGlzLl9jYW52YXMu c2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiTWFwIik7dmFyIG49dGhpcy5f Y29udGFpbmVyRGltZW5zaW9ucygpO3RoaXMuX3Jlc2l6ZUNhbnZhcyhuWzBd LG5bMV0pO3ZhciBhPXRoaXMuX2NvbnRyb2xDb250YWluZXI9ci5jcmVhdGUo ImRpdiIsIm1hcGJveGdsLWNvbnRyb2wtY29udGFpbmVyIix0KSxpPXRoaXMu X2NvbnRyb2xQb3NpdGlvbnM9e307WyJ0b3AtbGVmdCIsInRvcC1yaWdodCIs ImJvdHRvbS1sZWZ0IiwiYm90dG9tLXJpZ2h0Il0uZm9yRWFjaChmdW5jdGlv bih0KXtpW3RdPXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1jdHJsLSIrdCxh KX0pfSxhLnByb3RvdHlwZS5fcmVzaXplQ2FudmFzPWZ1bmN0aW9uKGUscil7 dmFyIG49dC53aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MTt0aGlzLl9jYW52 YXMud2lkdGg9biplLHRoaXMuX2NhbnZhcy5oZWlnaHQ9bipyLHRoaXMuX2Nh bnZhcy5zdHlsZS53aWR0aD1lKyJweCIsdGhpcy5fY2FudmFzLnN0eWxlLmhl aWdodD1yKyJweCJ9LGEucHJvdG90eXBlLl9zZXR1cFBhaW50ZXI9ZnVuY3Rp b24oKXt2YXIgcj10LmV4dGVuZCh7fSxlLndlYkdMQ29udGV4dEF0dHJpYnV0 ZXMse2ZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6dGhpcy5fZmFpbElm TWFqb3JQZXJmb3JtYW5jZUNhdmVhdCxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6 dGhpcy5fcHJlc2VydmVEcmF3aW5nQnVmZmVyLGFudGlhbGlhczp0aGlzLl9h bnRpYWxpYXN8fCExfSksbj10aGlzLl9jYW52YXMuZ2V0Q29udGV4dCgid2Vi Z2wiLHIpfHx0aGlzLl9jYW52YXMuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFs LXdlYmdsIixyKTtuPyh0aGlzLnBhaW50ZXI9bmV3IG9uKG4sdGhpcy50cmFu c2Zvcm0pLHQud2VicFN1cHBvcnRlZC50ZXN0U3VwcG9ydChuKSk6dGhpcy5m aXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJGYWlsZWQgdG8gaW5p dGlhbGl6ZSBXZWJHTCIpKSl9LGEucHJvdG90eXBlLl9jb250ZXh0TG9zdD1m dW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZnJhbWUmJih0 aGlzLl9mcmFtZS5jYW5jZWwoKSx0aGlzLl9mcmFtZT1udWxsKSx0aGlzLmZp cmUobmV3IHQuRXZlbnQoIndlYmdsY29udGV4dGxvc3QiLHtvcmlnaW5hbEV2 ZW50OmV9KSl9LGEucHJvdG90eXBlLl9jb250ZXh0UmVzdG9yZWQ9ZnVuY3Rp b24oZSl7dGhpcy5fc2V0dXBQYWludGVyKCksdGhpcy5yZXNpemUoKSx0aGlz Ll91cGRhdGUoKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoIndlYmdsY29udGV4 dHJlc3RvcmVkIix7b3JpZ2luYWxFdmVudDplfSkpfSxhLnByb3RvdHlwZS5s b2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fc3R5bGVEaXJ0eSYmIXRo aXMuX3NvdXJjZXNEaXJ0eSYmISF0aGlzLnN0eWxlJiZ0aGlzLnN0eWxlLmxv YWRlZCgpfSxhLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVy biB0aGlzLnN0eWxlPyh0aGlzLl9zdHlsZURpcnR5PXRoaXMuX3N0eWxlRGly dHl8fHQsdGhpcy5fc291cmNlc0RpcnR5PSEwLHRoaXMudHJpZ2dlclJlcGFp bnQoKSx0aGlzKTp0aGlzfSxhLnByb3RvdHlwZS5fcmVxdWVzdFJlbmRlckZy YW1lPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl91cGRhdGUoKSx0aGlzLl9y ZW5kZXJUYXNrUXVldWUuYWRkKHQpfSxhLnByb3RvdHlwZS5fY2FuY2VsUmVu ZGVyRnJhbWU9ZnVuY3Rpb24odCl7dGhpcy5fcmVuZGVyVGFza1F1ZXVlLnJl bW92ZSh0KX0sYS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3RoaXMu cGFpbnRlci5jb250ZXh0LnNldERpcnR5KCksdGhpcy5wYWludGVyLnNldEJh c2VTdGF0ZSgpLHRoaXMuX3JlbmRlclRhc2tRdWV1ZS5ydW4oKTt2YXIgZT0h MTtpZih0aGlzLnN0eWxlJiZ0aGlzLl9zdHlsZURpcnR5KXt0aGlzLl9zdHls ZURpcnR5PSExO3ZhciByPXRoaXMudHJhbnNmb3JtLnpvb20sbj10LmJyb3dz ZXIubm93KCk7dGhpcy5zdHlsZS56b29tSGlzdG9yeS51cGRhdGUocixuKTt2 YXIgYT1uZXcgdC5FdmFsdWF0aW9uUGFyYW1ldGVycyhyLHtub3c6bixmYWRl RHVyYXRpb246dGhpcy5fZmFkZUR1cmF0aW9uLHpvb21IaXN0b3J5OnRoaXMu c3R5bGUuem9vbUhpc3RvcnksdHJhbnNpdGlvbjp0aGlzLnN0eWxlLmdldFRy YW5zaXRpb24oKX0pLGk9YS5jcm9zc0ZhZGluZ0ZhY3RvcigpOzE9PT1pJiZp PT09dGhpcy5fY3Jvc3NGYWRpbmdGYWN0b3J8fChlPSEwLHRoaXMuX2Nyb3Nz RmFkaW5nRmFjdG9yPWkpLHRoaXMuc3R5bGUudXBkYXRlKGEpfXJldHVybiB0 aGlzLnN0eWxlJiZ0aGlzLl9zb3VyY2VzRGlydHkmJih0aGlzLl9zb3VyY2Vz RGlydHk9ITEsdGhpcy5zdHlsZS5fdXBkYXRlU291cmNlcyh0aGlzLnRyYW5z Zm9ybSkpLHRoaXMuX3BsYWNlbWVudERpcnR5PXRoaXMuc3R5bGUmJnRoaXMu c3R5bGUuX3VwZGF0ZVBsYWNlbWVudCh0aGlzLnBhaW50ZXIudHJhbnNmb3Jt LHRoaXMuc2hvd0NvbGxpc2lvbkJveGVzLHRoaXMuX2ZhZGVEdXJhdGlvbix0 aGlzLl9jcm9zc1NvdXJjZUNvbGxpc2lvbnMpLHRoaXMucGFpbnRlci5yZW5k ZXIodGhpcy5zdHlsZSx7c2hvd1RpbGVCb3VuZGFyaWVzOnRoaXMuc2hvd1Rp bGVCb3VuZGFyaWVzLHNob3dPdmVyZHJhd0luc3BlY3Rvcjp0aGlzLl9zaG93 T3ZlcmRyYXdJbnNwZWN0b3Iscm90YXRpbmc6dGhpcy5pc1JvdGF0aW5nKCks em9vbWluZzp0aGlzLmlzWm9vbWluZygpLG1vdmluZzp0aGlzLmlzTW92aW5n KCksZmFkZUR1cmF0aW9uOnRoaXMuX2ZhZGVEdXJhdGlvbn0pLHRoaXMuZmly ZShuZXcgdC5FdmVudCgicmVuZGVyIikpLHRoaXMubG9hZGVkKCkmJiF0aGlz Ll9sb2FkZWQmJih0aGlzLl9sb2FkZWQ9ITAsdGhpcy5maXJlKG5ldyB0LkV2 ZW50KCJsb2FkIikpKSx0aGlzLnN0eWxlJiYodGhpcy5zdHlsZS5oYXNUcmFu c2l0aW9ucygpfHxlKSYmKHRoaXMuX3N0eWxlRGlydHk9ITApLHRoaXMuc3R5 bGUmJiF0aGlzLl9wbGFjZW1lbnREaXJ0eSYmdGhpcy5zdHlsZS5fcmVsZWFz ZVN5bWJvbEZhZGVUaWxlcygpLHRoaXMuX3NvdXJjZXNEaXJ0eXx8dGhpcy5f cmVwYWludHx8dGhpcy5fc3R5bGVEaXJ0eXx8dGhpcy5fcGxhY2VtZW50RGly dHk/dGhpcy50cmlnZ2VyUmVwYWludCgpOiF0aGlzLmlzTW92aW5nKCkmJnRo aXMubG9hZGVkKCkmJnRoaXMuZmlyZShuZXcgdC5FdmVudCgiaWRsZSIpKSx0 aGlzfSxhLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLl9oYXNo JiZ0aGlzLl9oYXNoLnJlbW92ZSgpO2Zvcih2YXIgZT0wLHI9dGhpcy5fY29u dHJvbHM7ZTxyLmxlbmd0aDtlKz0xKXJbZV0ub25SZW1vdmUodGhpcyk7dGhp cy5fY29udHJvbHM9W10sdGhpcy5fZnJhbWUmJih0aGlzLl9mcmFtZS5jYW5j ZWwoKSx0aGlzLl9mcmFtZT1udWxsKSx0aGlzLl9yZW5kZXJUYXNrUXVldWUu Y2xlYXIoKSx0aGlzLnNldFN0eWxlKG51bGwpLHZvaWQgMCE9PXQud2luZG93 JiYodC53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlz Ll9vbldpbmRvd1Jlc2l6ZSwhMSksdC53aW5kb3cucmVtb3ZlRXZlbnRMaXN0 ZW5lcigib25saW5lIix0aGlzLl9vbldpbmRvd09ubGluZSwhMSkpO3ZhciBu PXRoaXMucGFpbnRlci5jb250ZXh0LmdsLmdldEV4dGVuc2lvbigiV0VCR0xf bG9zZV9jb250ZXh0Iik7biYmbi5sb3NlQ29udGV4dCgpLFJuKHRoaXMuX2Nh bnZhc0NvbnRhaW5lciksUm4odGhpcy5fY29udHJvbENvbnRhaW5lciksUm4o dGhpcy5fbWlzc2luZ0NTU0NhbmFyeSksdGhpcy5fY29udGFpbmVyLmNsYXNz TGlzdC5yZW1vdmUoIm1hcGJveGdsLW1hcCIpLHRoaXMuZmlyZShuZXcgdC5F dmVudCgicmVtb3ZlIikpfSxhLnByb3RvdHlwZS50cmlnZ2VyUmVwYWludD1m dW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5zdHlsZSYmIXRoaXMuX2ZyYW1l JiYodGhpcy5fZnJhbWU9dC5icm93c2VyLmZyYW1lKGZ1bmN0aW9uKCl7ZS5f ZnJhbWU9bnVsbCxlLl9yZW5kZXIoKX0pKX0sYS5wcm90b3R5cGUuX29uV2lu ZG93T25saW5lPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlKCl9LGEucHJvdG90 eXBlLl9vbldpbmRvd1Jlc2l6ZT1mdW5jdGlvbigpe3RoaXMuX3RyYWNrUmVz aXplJiZ0aGlzLnJlc2l6ZSgpLl91cGRhdGUoKX0saS5zaG93VGlsZUJvdW5k YXJpZXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9zaG93VGlsZUJv dW5kYXJpZXN9LGkuc2hvd1RpbGVCb3VuZGFyaWVzLnNldD1mdW5jdGlvbih0 KXt0aGlzLl9zaG93VGlsZUJvdW5kYXJpZXMhPT10JiYodGhpcy5fc2hvd1Rp bGVCb3VuZGFyaWVzPXQsdGhpcy5fdXBkYXRlKCkpfSxpLnNob3dDb2xsaXNp b25Cb3hlcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX3Nob3dDb2xs aXNpb25Cb3hlc30saS5zaG93Q29sbGlzaW9uQm94ZXMuc2V0PWZ1bmN0aW9u KHQpe3RoaXMuX3Nob3dDb2xsaXNpb25Cb3hlcyE9PXQmJih0aGlzLl9zaG93 Q29sbGlzaW9uQm94ZXM9dCx0P3RoaXMuc3R5bGUuX2dlbmVyYXRlQ29sbGlz aW9uQm94ZXMoKTp0aGlzLl91cGRhdGUoKSl9LGkuc2hvd092ZXJkcmF3SW5z cGVjdG9yLmdldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fc2hvd092ZXJk cmF3SW5zcGVjdG9yfSxpLnNob3dPdmVyZHJhd0luc3BlY3Rvci5zZXQ9ZnVu Y3Rpb24odCl7dGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yIT09dCYmKHRo aXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcj10LHRoaXMuX3VwZGF0ZSgpKX0s aS5yZXBhaW50LmdldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fcmVwYWlu dH0saS5yZXBhaW50LnNldD1mdW5jdGlvbih0KXt0aGlzLl9yZXBhaW50IT09 dCYmKHRoaXMuX3JlcGFpbnQ9dCx0aGlzLnRyaWdnZXJSZXBhaW50KCkpfSxp LnZlcnRpY2VzLmdldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fdmVydGlj ZXN9LGkudmVydGljZXMuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3ZlcnRpY2Vz PXQsdGhpcy5fdXBkYXRlKCl9LGEucHJvdG90eXBlLl9zZXRDYWNoZUxpbWl0 cz1mdW5jdGlvbihlLHIpe3Quc2V0Q2FjaGVMaW1pdHMoZSxyKX0saS52ZXJz aW9uLmdldD1mdW5jdGlvbigpe3JldHVybiB0LnZlcnNpb259LE9iamVjdC5k ZWZpbmVQcm9wZXJ0aWVzKGEucHJvdG90eXBlLGkpLGF9KEVuKTtmdW5jdGlv biBSbih0KXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGls ZCh0KX12YXIgRm49e3Nob3dDb21wYXNzOiEwLHNob3dab29tOiEwLHZpc3Vh bGl6ZVBpdGNoOiExfSxCbj1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3RoaXMu b3B0aW9ucz10LmV4dGVuZCh7fSxGbixlKSx0aGlzLl9jb250YWluZXI9ci5j cmVhdGUoImRpdiIsIm1hcGJveGdsLWN0cmwgbWFwYm94Z2wtY3RybC1ncm91 cCIpLHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0 bWVudSIsZnVuY3Rpb24odCl7cmV0dXJuIHQucHJldmVudERlZmF1bHQoKX0p LHRoaXMub3B0aW9ucy5zaG93Wm9vbSYmKHQuYmluZEFsbChbIl91cGRhdGVa b29tQnV0dG9ucyJdLHRoaXMpLHRoaXMuX3pvb21JbkJ1dHRvbj10aGlzLl9j cmVhdGVCdXR0b24oIm1hcGJveGdsLWN0cmwtaWNvbiBtYXBib3hnbC1jdHJs LXpvb20taW4iLCJab29tIGluIixmdW5jdGlvbigpe3JldHVybiBuLl9tYXAu em9vbUluKCl9KSx0aGlzLl96b29tT3V0QnV0dG9uPXRoaXMuX2NyZWF0ZUJ1 dHRvbigibWFwYm94Z2wtY3RybC1pY29uIG1hcGJveGdsLWN0cmwtem9vbS1v dXQiLCJab29tIG91dCIsZnVuY3Rpb24oKXtyZXR1cm4gbi5fbWFwLnpvb21P dXQoKX0pKSx0aGlzLm9wdGlvbnMuc2hvd0NvbXBhc3MmJih0LmJpbmRBbGwo WyJfcm90YXRlQ29tcGFzc0Fycm93Il0sdGhpcyksdGhpcy5fY29tcGFzcz10 aGlzLl9jcmVhdGVCdXR0b24oIm1hcGJveGdsLWN0cmwtaWNvbiBtYXBib3hn bC1jdHJsLWNvbXBhc3MiLCJSZXNldCBiZWFyaW5nIHRvIG5vcnRoIixmdW5j dGlvbigpe24ub3B0aW9ucy52aXN1YWxpemVQaXRjaD9uLl9tYXAucmVzZXRO b3J0aFBpdGNoKCk6bi5fbWFwLnJlc2V0Tm9ydGgoKX0pLHRoaXMuX2NvbXBh c3NBcnJvdz1yLmNyZWF0ZSgic3BhbiIsIm1hcGJveGdsLWN0cmwtY29tcGFz cy1hcnJvdyIsdGhpcy5fY29tcGFzcykpfTtmdW5jdGlvbiBObihlLHIsbil7 aWYoZT1uZXcgdC5MbmdMYXQoZS5sbmcsZS5sYXQpLHIpe3ZhciBhPW5ldyB0 LkxuZ0xhdChlLmxuZy0zNjAsZS5sYXQpLGk9bmV3IHQuTG5nTGF0KGUubG5n KzM2MCxlLmxhdCksbz1uLmxvY2F0aW9uUG9pbnQoZSkuZGlzdFNxcihyKTtu LmxvY2F0aW9uUG9pbnQoYSkuZGlzdFNxcihyKTxvP2U9YTpuLmxvY2F0aW9u UG9pbnQoaSkuZGlzdFNxcihyKTxvJiYoZT1pKX1mb3IoO01hdGguYWJzKGUu bG5nLW4uY2VudGVyLmxuZyk+MTgwOyl7dmFyIHM9bi5sb2NhdGlvblBvaW50 KGUpO2lmKHMueD49MCYmcy55Pj0wJiZzLng8PW4ud2lkdGgmJnMueTw9bi5o ZWlnaHQpYnJlYWs7ZS5sbmc+bi5jZW50ZXIubG5nP2UubG5nLT0zNjA6ZS5s bmcrPTM2MH1yZXR1cm4gZX1Cbi5wcm90b3R5cGUuX3VwZGF0ZVpvb21CdXR0 b25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLmdldFpvb20oKTt0PT09 dGhpcy5fbWFwLmdldE1heFpvb20oKT90aGlzLl96b29tSW5CdXR0b24uY2xh c3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1pY29uLWRpc2FibGVkIik6dGhp cy5fem9vbUluQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0 cmwtaWNvbi1kaXNhYmxlZCIpLHQ9PT10aGlzLl9tYXAuZ2V0TWluWm9vbSgp P3RoaXMuX3pvb21PdXRCdXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wt Y3RybC1pY29uLWRpc2FibGVkIik6dGhpcy5fem9vbU91dEJ1dHRvbi5jbGFz c0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWljb24tZGlzYWJsZWQiKX0s Qm4ucHJvdG90eXBlLl9yb3RhdGVDb21wYXNzQXJyb3c9ZnVuY3Rpb24oKXt2 YXIgdD10aGlzLm9wdGlvbnMudmlzdWFsaXplUGl0Y2g/InNjYWxlKCIrMS9N YXRoLnBvdyhNYXRoLmNvcyh0aGlzLl9tYXAudHJhbnNmb3JtLnBpdGNoKihN YXRoLlBJLzE4MCkpLC41KSsiKSByb3RhdGVYKCIrdGhpcy5fbWFwLnRyYW5z Zm9ybS5waXRjaCsiZGVnKSByb3RhdGVaKCIrdGhpcy5fbWFwLnRyYW5zZm9y bS5hbmdsZSooMTgwL01hdGguUEkpKyJkZWcpIjoicm90YXRlKCIrdGhpcy5f bWFwLnRyYW5zZm9ybS5hbmdsZSooMTgwL01hdGguUEkpKyJkZWcpIjt0aGlz Ll9jb21wYXNzQXJyb3cuc3R5bGUudHJhbnNmb3JtPXR9LEJuLnByb3RvdHlw ZS5vbkFkZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbWFwPXQsdGhpcy5v cHRpb25zLnNob3dab29tJiYodGhpcy5fbWFwLm9uKCJ6b29tIix0aGlzLl91 cGRhdGVab29tQnV0dG9ucyksdGhpcy5fdXBkYXRlWm9vbUJ1dHRvbnMoKSks dGhpcy5vcHRpb25zLnNob3dDb21wYXNzJiYodGhpcy5vcHRpb25zLnZpc3Vh bGl6ZVBpdGNoJiZ0aGlzLl9tYXAub24oInBpdGNoIix0aGlzLl9yb3RhdGVD b21wYXNzQXJyb3cpLHRoaXMuX21hcC5vbigicm90YXRlIix0aGlzLl9yb3Rh dGVDb21wYXNzQXJyb3cpLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdygpLHRo aXMuX2hhbmRsZXI9bmV3IHhuKHQse2J1dHRvbjoibGVmdCIsZWxlbWVudDp0 aGlzLl9jb21wYXNzfSksci5hZGRFdmVudExpc3RlbmVyKHRoaXMuX2NvbXBh c3MsIm1vdXNlZG93biIsdGhpcy5faGFuZGxlci5vbk1vdXNlRG93biksci5h ZGRFdmVudExpc3RlbmVyKHRoaXMuX2NvbXBhc3MsInRvdWNoc3RhcnQiLHRo aXMuX2hhbmRsZXIub25Nb3VzZURvd24se3Bhc3NpdmU6ITF9KSx0aGlzLl9o YW5kbGVyLmVuYWJsZSgpKSx0aGlzLl9jb250YWluZXJ9LEJuLnByb3RvdHlw ZS5vblJlbW92ZT1mdW5jdGlvbigpe3IucmVtb3ZlKHRoaXMuX2NvbnRhaW5l ciksdGhpcy5vcHRpb25zLnNob3dab29tJiZ0aGlzLl9tYXAub2ZmKCJ6b29t Iix0aGlzLl91cGRhdGVab29tQnV0dG9ucyksdGhpcy5vcHRpb25zLnNob3dD b21wYXNzJiYodGhpcy5vcHRpb25zLnZpc3VhbGl6ZVBpdGNoJiZ0aGlzLl9t YXAub2ZmKCJwaXRjaCIsdGhpcy5fcm90YXRlQ29tcGFzc0Fycm93KSx0aGlz Ll9tYXAub2ZmKCJyb3RhdGUiLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyks ci5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuX2NvbXBhc3MsIm1vdXNlZG93 biIsdGhpcy5faGFuZGxlci5vbk1vdXNlRG93biksci5yZW1vdmVFdmVudExp c3RlbmVyKHRoaXMuX2NvbXBhc3MsInRvdWNoc3RhcnQiLHRoaXMuX2hhbmRs ZXIub25Nb3VzZURvd24se3Bhc3NpdmU6ITF9KSx0aGlzLl9oYW5kbGVyLmRp c2FibGUoKSxkZWxldGUgdGhpcy5faGFuZGxlciksZGVsZXRlIHRoaXMuX21h cH0sQm4ucHJvdG90eXBlLl9jcmVhdGVCdXR0b249ZnVuY3Rpb24odCxlLG4p e3ZhciBhPXIuY3JlYXRlKCJidXR0b24iLHQsdGhpcy5fY29udGFpbmVyKTty ZXR1cm4gYS50eXBlPSJidXR0b24iLGEudGl0bGU9ZSxhLnNldEF0dHJpYnV0 ZSgiYXJpYS1sYWJlbCIsZSksYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs biksYX07dmFyIGpuPXtjZW50ZXI6InRyYW5zbGF0ZSgtNTAlLC01MCUpIix0 b3A6InRyYW5zbGF0ZSgtNTAlLDApIiwidG9wLWxlZnQiOiJ0cmFuc2xhdGUo MCwwKSIsInRvcC1yaWdodCI6InRyYW5zbGF0ZSgtMTAwJSwwKSIsYm90dG9t OiJ0cmFuc2xhdGUoLTUwJSwtMTAwJSkiLCJib3R0b20tbGVmdCI6InRyYW5z bGF0ZSgwLC0xMDAlKSIsImJvdHRvbS1yaWdodCI6InRyYW5zbGF0ZSgtMTAw JSwtMTAwJSkiLGxlZnQ6InRyYW5zbGF0ZSgwLC01MCUpIixyaWdodDoidHJh bnNsYXRlKC0xMDAlLC01MCUpIn07ZnVuY3Rpb24gVm4odCxlLHIpe3ZhciBu PXQuY2xhc3NMaXN0O2Zvcih2YXIgYSBpbiBqbiluLnJlbW92ZSgibWFwYm94 Z2wtIityKyItYW5jaG9yLSIrYSk7bi5hZGQoIm1hcGJveGdsLSIrcisiLWFu Y2hvci0iK2UpfXZhciBVbixxbj1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKG4s YSl7aWYoZS5jYWxsKHRoaXMpLChuIGluc3RhbmNlb2YgdC53aW5kb3cuSFRN TEVsZW1lbnR8fGEpJiYobj10LmV4dGVuZCh7ZWxlbWVudDpufSxhKSksdC5i aW5kQWxsKFsiX3VwZGF0ZSIsIl9vbk1vdmUiLCJfb25VcCIsIl9hZGREcmFn SGFuZGxlciIsIl9vbk1hcENsaWNrIl0sdGhpcyksdGhpcy5fYW5jaG9yPW4m Jm4uYW5jaG9yfHwiY2VudGVyIix0aGlzLl9jb2xvcj1uJiZuLmNvbG9yfHwi IzNGQjFDRSIsdGhpcy5fZHJhZ2dhYmxlPW4mJm4uZHJhZ2dhYmxlfHwhMSx0 aGlzLl9zdGF0ZT0iaW5hY3RpdmUiLG4mJm4uZWxlbWVudCl0aGlzLl9lbGVt ZW50PW4uZWxlbWVudCx0aGlzLl9vZmZzZXQ9dC5Qb2ludC5jb252ZXJ0KG4m Jm4ub2Zmc2V0fHxbMCwwXSk7ZWxzZXt0aGlzLl9kZWZhdWx0TWFya2VyPSEw LHRoaXMuX2VsZW1lbnQ9ci5jcmVhdGUoImRpdiIpO3ZhciBpPXIuY3JlYXRl TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwic3ZnIik7aS5zZXRB dHRyaWJ1dGVOUyhudWxsLCJkaXNwbGF5IiwiYmxvY2siKSxpLnNldEF0dHJp YnV0ZU5TKG51bGwsImhlaWdodCIsIjQxcHgiKSxpLnNldEF0dHJpYnV0ZU5T KG51bGwsIndpZHRoIiwiMjdweCIpLGkuc2V0QXR0cmlidXRlTlMobnVsbCwi dmlld0JveCIsIjAgMCAyNyA0MSIpO3ZhciBvPXIuY3JlYXRlTlMoImh0dHA6 Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpO28uc2V0QXR0cmlidXRlTlMo bnVsbCwic3Ryb2tlIiwibm9uZSIpLG8uc2V0QXR0cmlidXRlTlMobnVsbCwi c3Ryb2tlLXdpZHRoIiwiMSIpLG8uc2V0QXR0cmlidXRlTlMobnVsbCwiZmls bCIsIm5vbmUiKSxvLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIs ImV2ZW5vZGQiKTt2YXIgcz1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9y Zy8yMDAwL3N2ZyIsImciKTtzLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwt cnVsZSIsIm5vbnplcm8iKTt2YXIgbD1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3 LnczLm9yZy8yMDAwL3N2ZyIsImciKTtsLnNldEF0dHJpYnV0ZU5TKG51bGws InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgzLjAsIDI5LjApIiksbC5zZXRBdHRy aWJ1dGVOUyhudWxsLCJmaWxsIiwiIzAwMDAwMCIpO2Zvcih2YXIgYz0wLHU9 W3tyeDoiMTAuNSIscnk6IjUuMjUwMDIyNzMifSx7cng6IjEwLjUiLHJ5OiI1 LjI1MDAyMjczIn0se3J4OiI5LjUiLHJ5OiI0Ljc3Mjc1MDA3In0se3J4OiI4 LjUiLHJ5OiI0LjI5NTQ5OTM2In0se3J4OiI3LjUiLHJ5OiIzLjgxODIyMzA4 In0se3J4OiI2LjUiLHJ5OiIzLjM0MDk0Njc5In0se3J4OiI1LjUiLHJ5OiIy Ljg2MzY3MDUxIn0se3J4OiI0LjUiLHJ5OiIyLjM4NjM2ODY0In1dO2M8dS5s ZW5ndGg7Yys9MSl7dmFyIGg9dVtjXSxmPXIuY3JlYXRlTlMoImh0dHA6Ly93 d3cudzMub3JnLzIwMDAvc3ZnIiwiZWxsaXBzZSIpO2Yuc2V0QXR0cmlidXRl TlMobnVsbCwib3BhY2l0eSIsIjAuMDQiKSxmLnNldEF0dHJpYnV0ZU5TKG51 bGwsImN4IiwiMTAuNSIpLGYuc2V0QXR0cmlidXRlTlMobnVsbCwiY3kiLCI1 LjgwMDI5MDA4IiksZi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJyeCIsaC5yeCks Zi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJyeSIsaC5yeSksbC5hcHBlbmRDaGls ZChmKX12YXIgcD1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw L3N2ZyIsImciKTtwLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHRoaXMu X2NvbG9yKTt2YXIgZD1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8y MDAwL3N2ZyIsInBhdGgiKTtkLnNldEF0dHJpYnV0ZU5TKG51bGwsImQiLCJN MjcsMTMuNSBDMjcsMTkuMDc0NjQ0IDIwLjI1MDAwMSwyNy4wMDAwMDIgMTQu NzUsMzQuNTAwMDAyIEMxNC4wMTY2NjUsMzUuNTAwMDA0IDEyLjk4MzMzNSwz NS41MDAwMDQgMTIuMjUsMzQuNTAwMDAyIEM2Ljc0OTk5OTMsMjcuMDAwMDAy IDAsMTkuMjIyNTYyIDAsMTMuNSBDMCw2LjA0NDE1NTkgNi4wNDQxNTU5LDAg MTMuNSwwIEMyMC45NTU4NDQsMCAyNyw2LjA0NDE1NTkgMjcsMTMuNSBaIiks cC5hcHBlbmRDaGlsZChkKTt2YXIgZz1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3 LnczLm9yZy8yMDAwL3N2ZyIsImciKTtnLnNldEF0dHJpYnV0ZU5TKG51bGws Im9wYWNpdHkiLCIwLjI1IiksZy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxs IiwiIzAwMDAwMCIpO3ZhciB2PXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMu b3JnLzIwMDAvc3ZnIiwicGF0aCIpO3Yuc2V0QXR0cmlidXRlTlMobnVsbCwi ZCIsIk0xMy41LDAgQzYuMDQ0MTU1OSwwIDAsNi4wNDQxNTU5IDAsMTMuNSBD MCwxOS4yMjI1NjIgNi43NDk5OTkzLDI3IDEyLjI1LDM0LjUgQzEzLDM1LjUy MjcyNyAxNC4wMTY2NjQsMzUuNTAwMDA0IDE0Ljc1LDM0LjUgQzIwLjI1MDAw MSwyNyAyNywxOS4wNzQ2NDQgMjcsMTMuNSBDMjcsNi4wNDQxNTU5IDIwLjk1 NTg0NCwwIDEzLjUsMCBaIE0xMy41LDEgQzIwLjQxNTQwNCwxIDI2LDYuNTg0 NTk2IDI2LDEzLjUgQzI2LDE1Ljg5ODY1NyAyNC40OTU1ODQsMTkuMTgxNDMx IDIyLjIyMDcwMywyMi43MzgyODEgQzE5Ljk0NTgyMywyNi4yOTUxMzIgMTYu NzA1MTE5LDMwLjE0MjE2NyAxMy45NDMzNTksMzMuOTA4MjAzIEMxMy43NDM0 NDUsMzQuMTgwODE0IDEzLjYxMjcxNSwzNC4zMjI3MzggMTMuNSwzNC40NDE0 MDYgQzEzLjM4NzI4NSwzNC4zMjI3MzggMTMuMjU2NTU1LDM0LjE4MDgxNCAx My4wNTY2NDEsMzMuOTA4MjAzIEMxMC4yODQ0ODEsMzAuMTI3OTg1IDcuNDE0 ODY4NCwyNi4zMTQxNTkgNS4wMTU2MjUsMjIuNzczNDM4IEMyLjYxNjM4MTYs MTkuMjMyNzE1IDEsMTUuOTUzNTM4IDEsMTMuNSBDMSw2LjU4NDU5NiA2LjU4 NDU5NiwxIDEzLjUsMSBaIiksZy5hcHBlbmRDaGlsZCh2KTt2YXIgbT1yLmNy ZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKTttLnNl dEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsInRyYW5zbGF0ZSg2LjAs IDcuMCkiKSxtLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCIjRkZGRkZG Iik7dmFyIHk9ci5jcmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z dmciLCJnIik7eS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLCJ0 cmFuc2xhdGUoOC4wLCA4LjApIik7dmFyIHg9ci5jcmVhdGVOUygiaHR0cDov L3d3dy53My5vcmcvMjAwMC9zdmciLCJjaXJjbGUiKTt4LnNldEF0dHJpYnV0 ZU5TKG51bGwsImZpbGwiLCIjMDAwMDAwIikseC5zZXRBdHRyaWJ1dGVOUyhu dWxsLCJvcGFjaXR5IiwiMC4yNSIpLHguc2V0QXR0cmlidXRlTlMobnVsbCwi Y3giLCI1LjUiKSx4LnNldEF0dHJpYnV0ZU5TKG51bGwsImN5IiwiNS41Iiks eC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJyIiwiNS40OTk5OTYyIik7dmFyIGI9 ci5jcmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJjaXJj bGUiKTtiLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCIjRkZGRkZGIiks Yi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjeCIsIjUuNSIpLGIuc2V0QXR0cmli dXRlTlMobnVsbCwiY3kiLCI1LjUiKSxiLnNldEF0dHJpYnV0ZU5TKG51bGws InIiLCI1LjQ5OTk5NjIiKSx5LmFwcGVuZENoaWxkKHgpLHkuYXBwZW5kQ2hp bGQoYikscy5hcHBlbmRDaGlsZChsKSxzLmFwcGVuZENoaWxkKHApLHMuYXBw ZW5kQ2hpbGQoZykscy5hcHBlbmRDaGlsZChtKSxzLmFwcGVuZENoaWxkKHkp LGkuYXBwZW5kQ2hpbGQocyksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChp KSx0aGlzLl9vZmZzZXQ9dC5Qb2ludC5jb252ZXJ0KG4mJm4ub2Zmc2V0fHxb MCwtMTRdKX10aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1hcGJveGds LW1hcmtlciIpLHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJh Z3N0YXJ0IixmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9KSxWbih0 aGlzLl9lbGVtZW50LHRoaXMuX2FuY2hvciwibWFya2VyIiksdGhpcy5fcG9w dXA9bnVsbH1yZXR1cm4gZSYmKG4uX19wcm90b19fPWUpLG4ucHJvdG90eXBl PU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLG4ucHJvdG90eXBlLmNv bnN0cnVjdG9yPW4sbi5wcm90b3R5cGUuYWRkVG89ZnVuY3Rpb24odCl7cmV0 dXJuIHRoaXMucmVtb3ZlKCksdGhpcy5fbWFwPXQsdC5nZXRDYW52YXNDb250 YWluZXIoKS5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50KSx0Lm9uKCJtb3Zl Iix0aGlzLl91cGRhdGUpLHQub24oIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZSks dGhpcy5zZXREcmFnZ2FibGUodGhpcy5fZHJhZ2dhYmxlKSx0aGlzLl91cGRh dGUoKSx0aGlzLl9tYXAub24oImNsaWNrIix0aGlzLl9vbk1hcENsaWNrKSx0 aGlzfSxuLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fbWFwJiYodGhpcy5fbWFwLm9mZigiY2xpY2siLHRoaXMuX29uTWFwQ2xp Y2spLHRoaXMuX21hcC5vZmYoIm1vdmUiLHRoaXMuX3VwZGF0ZSksdGhpcy5f bWFwLm9mZigibW92ZWVuZCIsdGhpcy5fdXBkYXRlKSx0aGlzLl9tYXAub2Zm KCJtb3VzZWRvd24iLHRoaXMuX2FkZERyYWdIYW5kbGVyKSx0aGlzLl9tYXAu b2ZmKCJ0b3VjaHN0YXJ0Iix0aGlzLl9hZGREcmFnSGFuZGxlciksdGhpcy5f bWFwLm9mZigibW91c2V1cCIsdGhpcy5fb25VcCksdGhpcy5fbWFwLm9mZigi dG91Y2hlbmQiLHRoaXMuX29uVXApLHRoaXMuX21hcC5vZmYoIm1vdXNlbW92 ZSIsdGhpcy5fb25Nb3ZlKSx0aGlzLl9tYXAub2ZmKCJ0b3VjaG1vdmUiLHRo aXMuX29uTW92ZSksZGVsZXRlIHRoaXMuX21hcCksci5yZW1vdmUodGhpcy5f ZWxlbWVudCksdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnJlbW92ZSgpLHRo aXN9LG4ucHJvdG90eXBlLmdldExuZ0xhdD1mdW5jdGlvbigpe3JldHVybiB0 aGlzLl9sbmdMYXR9LG4ucHJvdG90eXBlLnNldExuZ0xhdD1mdW5jdGlvbihl KXtyZXR1cm4gdGhpcy5fbG5nTGF0PXQuTG5nTGF0LmNvbnZlcnQoZSksdGhp cy5fcG9zPW51bGwsdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnNldExuZ0xh dCh0aGlzLl9sbmdMYXQpLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LG4ucHJvdG90 eXBlLmdldEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxlbWVu dH0sbi5wcm90b3R5cGUuc2V0UG9wdXA9ZnVuY3Rpb24odCl7aWYodGhpcy5f cG9wdXAmJih0aGlzLl9wb3B1cC5yZW1vdmUoKSx0aGlzLl9wb3B1cD1udWxs KSx0KXtpZighKCJvZmZzZXQiaW4gdC5vcHRpb25zKSl7dmFyIGU9TWF0aC5z cXJ0KE1hdGgucG93KDEzLjUsMikvMik7dC5vcHRpb25zLm9mZnNldD10aGlz Ll9kZWZhdWx0TWFya2VyP3t0b3A6WzAsMF0sInRvcC1sZWZ0IjpbMCwwXSwi dG9wLXJpZ2h0IjpbMCwwXSxib3R0b206WzAsLTM4LjFdLCJib3R0b20tbGVm dCI6W2UsLTEqKDI0LjYrZSldLCJib3R0b20tcmlnaHQiOlstZSwtMSooMjQu NitlKV0sbGVmdDpbMTMuNSwtMjQuNl0scmlnaHQ6Wy0xMy41LC0yNC42XX06 dGhpcy5fb2Zmc2V0fXRoaXMuX3BvcHVwPXQsdGhpcy5fbG5nTGF0JiZ0aGlz Ll9wb3B1cC5zZXRMbmdMYXQodGhpcy5fbG5nTGF0KX1yZXR1cm4gdGhpc30s bi5wcm90b3R5cGUuX29uTWFwQ2xpY2s9ZnVuY3Rpb24odCl7dmFyIGU9dC5v cmlnaW5hbEV2ZW50LnRhcmdldCxyPXRoaXMuX2VsZW1lbnQ7dGhpcy5fcG9w dXAmJihlPT09cnx8ci5jb250YWlucyhlKSkmJnRoaXMudG9nZ2xlUG9wdXAo KX0sbi5wcm90b3R5cGUuZ2V0UG9wdXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fcG9wdXB9LG4ucHJvdG90eXBlLnRvZ2dsZVBvcHVwPWZ1bmN0aW9uKCl7 dmFyIHQ9dGhpcy5fcG9wdXA7cmV0dXJuIHQ/KHQuaXNPcGVuKCk/dC5yZW1v dmUoKTp0LmFkZFRvKHRoaXMuX21hcCksdGhpcyk6dGhpc30sbi5wcm90b3R5 cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9tYXAmJih0aGlzLl9tYXAu dHJhbnNmb3JtLnJlbmRlcldvcmxkQ29waWVzJiYodGhpcy5fbG5nTGF0PU5u KHRoaXMuX2xuZ0xhdCx0aGlzLl9wb3MsdGhpcy5fbWFwLnRyYW5zZm9ybSkp LHRoaXMuX3Bvcz10aGlzLl9tYXAucHJvamVjdCh0aGlzLl9sbmdMYXQpLl9h ZGQodGhpcy5fb2Zmc2V0KSx0JiYibW92ZWVuZCIhPT10LnR5cGV8fCh0aGlz Ll9wb3M9dGhpcy5fcG9zLnJvdW5kKCkpLHIuc2V0VHJhbnNmb3JtKHRoaXMu X2VsZW1lbnQsam5bdGhpcy5fYW5jaG9yXSsiIHRyYW5zbGF0ZSgiK3RoaXMu X3Bvcy54KyJweCwgIit0aGlzLl9wb3MueSsicHgpIikpfSxuLnByb3RvdHlw ZS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2Zmc2V0fSxu LnByb3RvdHlwZS5zZXRPZmZzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMu X29mZnNldD10LlBvaW50LmNvbnZlcnQoZSksdGhpcy5fdXBkYXRlKCksdGhp c30sbi5wcm90b3R5cGUuX29uTW92ZT1mdW5jdGlvbihlKXt0aGlzLl9wb3M9 ZS5wb2ludC5zdWIodGhpcy5fcG9zaXRpb25EZWx0YSksdGhpcy5fbG5nTGF0 PXRoaXMuX21hcC51bnByb2plY3QodGhpcy5fcG9zKSx0aGlzLnNldExuZ0xh dCh0aGlzLl9sbmdMYXQpLHRoaXMuX2VsZW1lbnQuc3R5bGUucG9pbnRlckV2 ZW50cz0ibm9uZSIsInBlbmRpbmciPT09dGhpcy5fc3RhdGUmJih0aGlzLl9z dGF0ZT0iYWN0aXZlIix0aGlzLmZpcmUobmV3IHQuRXZlbnQoImRyYWdzdGFy dCIpKSksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkcmFnIikpfSxuLnByb3Rv dHlwZS5fb25VcD1mdW5jdGlvbigpe3RoaXMuX2VsZW1lbnQuc3R5bGUucG9p bnRlckV2ZW50cz0iYXV0byIsdGhpcy5fcG9zaXRpb25EZWx0YT1udWxsLHRo aXMuX21hcC5vZmYoIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3ZlKSx0aGlzLl9t YXAub2ZmKCJ0b3VjaG1vdmUiLHRoaXMuX29uTW92ZSksImFjdGl2ZSI9PT10 aGlzLl9zdGF0ZSYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkcmFnZW5kIikp LHRoaXMuX3N0YXRlPSJpbmFjdGl2ZSJ9LG4ucHJvdG90eXBlLl9hZGREcmFn SGFuZGxlcj1mdW5jdGlvbih0KXt0aGlzLl9lbGVtZW50LmNvbnRhaW5zKHQu b3JpZ2luYWxFdmVudC50YXJnZXQpJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRo aXMuX3Bvc2l0aW9uRGVsdGE9dC5wb2ludC5zdWIodGhpcy5fcG9zKS5hZGQo dGhpcy5fb2Zmc2V0KSx0aGlzLl9zdGF0ZT0icGVuZGluZyIsdGhpcy5fbWFw Lm9uKCJtb3VzZW1vdmUiLHRoaXMuX29uTW92ZSksdGhpcy5fbWFwLm9uKCJ0 b3VjaG1vdmUiLHRoaXMuX29uTW92ZSksdGhpcy5fbWFwLm9uY2UoIm1vdXNl dXAiLHRoaXMuX29uVXApLHRoaXMuX21hcC5vbmNlKCJ0b3VjaGVuZCIsdGhp cy5fb25VcCkpfSxuLnByb3RvdHlwZS5zZXREcmFnZ2FibGU9ZnVuY3Rpb24o dCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZT0hIXQsdGhpcy5fbWFwJiYodD8o dGhpcy5fbWFwLm9uKCJtb3VzZWRvd24iLHRoaXMuX2FkZERyYWdIYW5kbGVy KSx0aGlzLl9tYXAub24oInRvdWNoc3RhcnQiLHRoaXMuX2FkZERyYWdIYW5k bGVyKSk6KHRoaXMuX21hcC5vZmYoIm1vdXNlZG93biIsdGhpcy5fYWRkRHJh Z0hhbmRsZXIpLHRoaXMuX21hcC5vZmYoInRvdWNoc3RhcnQiLHRoaXMuX2Fk ZERyYWdIYW5kbGVyKSkpLHRoaXN9LG4ucHJvdG90eXBlLmlzRHJhZ2dhYmxl PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZX0sbn0odC5FdmVu dGVkKSxIbj17cG9zaXRpb25PcHRpb25zOntlbmFibGVIaWdoQWNjdXJhY3k6 ITEsbWF4aW11bUFnZTowLHRpbWVvdXQ6NmUzfSxmaXRCb3VuZHNPcHRpb25z OnttYXhab29tOjE1fSx0cmFja1VzZXJMb2NhdGlvbjohMSxzaG93VXNlckxv Y2F0aW9uOiEwfSxHbj1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKHIpe2UuY2Fs bCh0aGlzKSx0aGlzLm9wdGlvbnM9dC5leHRlbmQoe30sSG4sciksdC5iaW5k QWxsKFsiX29uU3VjY2VzcyIsIl9vbkVycm9yIiwiX2ZpbmlzaCIsIl9zZXR1 cFVJIiwiX3VwZGF0ZUNhbWVyYSIsIl91cGRhdGVNYXJrZXIiXSx0aGlzKX1y ZXR1cm4gZSYmKG4uX19wcm90b19fPWUpLG4ucHJvdG90eXBlPU9iamVjdC5j cmVhdGUoZSYmZS5wcm90b3R5cGUpLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9y PW4sbi5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24oZSl7dmFyIG47cmV0dXJu IHRoaXMuX21hcD1lLHRoaXMuX2NvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2Iiwi bWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLWdyb3VwIiksbj10aGlzLl9z ZXR1cFVJLHZvaWQgMCE9PVVuP24oVW4pOnZvaWQgMCE9PXQud2luZG93Lm5h dmlnYXRvci5wZXJtaXNzaW9ucz90LndpbmRvdy5uYXZpZ2F0b3IucGVybWlz c2lvbnMucXVlcnkoe25hbWU6Imdlb2xvY2F0aW9uIn0pLnRoZW4oZnVuY3Rp b24odCl7VW49ImRlbmllZCIhPT10LnN0YXRlLG4oVW4pfSk6KFVuPSEhdC53 aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uLG4oVW4pKSx0aGlzLl9jb250 YWluZXJ9LG4ucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7dm9pZCAw IT09dGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEJiYodC53aW5kb3cubmF2aWdh dG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2godGhpcy5fZ2VvbG9jYXRpb25X YXRjaElEKSx0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQ9dm9pZCAwKSx0aGlz Lm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhpcy5fdXNlckxvY2F0aW9u RG90TWFya2VyJiZ0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXIucmVtb3Zl KCksci5yZW1vdmUodGhpcy5fY29udGFpbmVyKSx0aGlzLl9tYXA9dm9pZCAw fSxuLnByb3RvdHlwZS5fb25TdWNjZXNzPWZ1bmN0aW9uKGUpe2lmKHRoaXMu b3B0aW9ucy50cmFja1VzZXJMb2NhdGlvbilzd2l0Y2godGhpcy5fbGFzdEtu b3duUG9zaXRpb249ZSx0aGlzLl93YXRjaFN0YXRlKXtjYXNlIldBSVRJTkdf QUNUSVZFIjpjYXNlIkFDVElWRV9MT0NLIjpjYXNlIkFDVElWRV9FUlJPUiI6 dGhpcy5fd2F0Y2hTdGF0ZT0iQUNUSVZFX0xPQ0siLHRoaXMuX2dlb2xvY2F0 ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xv Y2F0ZS13YWl0aW5nIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlz dC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJv ciIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBi b3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUiKTticmVhaztjYXNlIkJBQ0tH Uk9VTkQiOmNhc2UiQkFDS0dST1VORF9FUlJPUiI6dGhpcy5fd2F0Y2hTdGF0 ZT0iQkFDS0dST1VORCIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlz dC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmciKSx0 aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94 Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZC1lcnJvciIpLHRoaXMuX2dl b2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdl b2xvY2F0ZS1iYWNrZ3JvdW5kIil9dGhpcy5vcHRpb25zLnNob3dVc2VyTG9j YXRpb24mJiJPRkYiIT09dGhpcy5fd2F0Y2hTdGF0ZSYmdGhpcy5fdXBkYXRl TWFya2VyKGUpLHRoaXMub3B0aW9ucy50cmFja1VzZXJMb2NhdGlvbiYmIkFD VElWRV9MT0NLIiE9PXRoaXMuX3dhdGNoU3RhdGV8fHRoaXMuX3VwZGF0ZUNh bWVyYShlKSx0aGlzLm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhpcy5f ZG90RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC11c2VyLWxv Y2F0aW9uLWRvdC1zdGFsZSIpLHRoaXMuZmlyZShuZXcgdC5FdmVudCgiZ2Vv bG9jYXRlIixlKSksdGhpcy5fZmluaXNoKCl9LG4ucHJvdG90eXBlLl91cGRh dGVDYW1lcmE9ZnVuY3Rpb24oZSl7dmFyIHI9bmV3IHQuTG5nTGF0KGUuY29v cmRzLmxvbmdpdHVkZSxlLmNvb3Jkcy5sYXRpdHVkZSksbj1lLmNvb3Jkcy5h Y2N1cmFjeSxhPXRoaXMuX21hcC5nZXRCZWFyaW5nKCksaT10LmV4dGVuZCh7 YmVhcmluZzphfSx0aGlzLm9wdGlvbnMuZml0Qm91bmRzT3B0aW9ucyk7dGhp cy5fbWFwLmZpdEJvdW5kcyhyLnRvQm91bmRzKG4pLGkse2dlb2xvY2F0ZVNv dXJjZTohMH0pfSxuLnByb3RvdHlwZS5fdXBkYXRlTWFya2VyPWZ1bmN0aW9u KHQpe3Q/dGhpcy5fdXNlckxvY2F0aW9uRG90TWFya2VyLnNldExuZ0xhdChb dC5jb29yZHMubG9uZ2l0dWRlLHQuY29vcmRzLmxhdGl0dWRlXSkuYWRkVG8o dGhpcy5fbWFwKTp0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXIucmVtb3Zl KCl9LG4ucHJvdG90eXBlLl9vbkVycm9yPWZ1bmN0aW9uKGUpe2lmKHRoaXMu b3B0aW9ucy50cmFja1VzZXJMb2NhdGlvbilpZigxPT09ZS5jb2RlKXRoaXMu X3dhdGNoU3RhdGU9Ik9GRiIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNz TGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmci KSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFw Ym94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIiksdGhpcy5fZ2VvbG9jYXRl QnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9j YXRlLWFjdGl2ZS1lcnJvciIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFz c0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3Jv dW5kIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUo Im1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQtZXJyb3IiKSx2 b2lkIDAhPT10aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQmJnRoaXMuX2NsZWFy V2F0Y2goKTtlbHNlIHN3aXRjaCh0aGlzLl93YXRjaFN0YXRlKXtjYXNlIldB SVRJTkdfQUNUSVZFIjp0aGlzLl93YXRjaFN0YXRlPSJBQ1RJVkVfRVJST1Ii LHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBi b3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUiKSx0aGlzLl9nZW9sb2NhdGVC dXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUt YWN0aXZlLWVycm9yIik7YnJlYWs7Y2FzZSJBQ1RJVkVfTE9DSyI6dGhpcy5f d2F0Y2hTdGF0ZT0iQUNUSVZFX0VSUk9SIix0aGlzLl9nZW9sb2NhdGVCdXR0 b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUt YWN0aXZlIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQo Im1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciIpLHRoaXMu X2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJs LWdlb2xvY2F0ZS13YWl0aW5nIik7YnJlYWs7Y2FzZSJCQUNLR1JPVU5EIjp0 aGlzLl93YXRjaFN0YXRlPSJCQUNLR1JPVU5EX0VSUk9SIix0aGlzLl9nZW9s b2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1n ZW9sb2NhdGUtYmFja2dyb3VuZCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5j bGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3Jv dW5kLWVycm9yIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5h ZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmciKX0iT0ZGIiE9 PXRoaXMuX3dhdGNoU3RhdGUmJnRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0 aW9uJiZ0aGlzLl9kb3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1hcGJveGds LXVzZXItbG9jYXRpb24tZG90LXN0YWxlIiksdGhpcy5maXJlKG5ldyB0LkV2 ZW50KCJlcnJvciIsZSkpLHRoaXMuX2ZpbmlzaCgpfSxuLnByb3RvdHlwZS5f ZmluaXNoPWZ1bmN0aW9uKCl7dGhpcy5fdGltZW91dElkJiZjbGVhclRpbWVv dXQodGhpcy5fdGltZW91dElkKSx0aGlzLl90aW1lb3V0SWQ9dm9pZCAwfSxu LnByb3RvdHlwZS5fc2V0dXBVST1mdW5jdGlvbihlKXt2YXIgbj10aGlzOyEx IT09ZT8odGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRl eHRtZW51IixmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgp fSksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uPXIuY3JlYXRlKCJidXR0b24iLCJt YXBib3hnbC1jdHJsLWljb24gbWFwYm94Z2wtY3RybC1nZW9sb2NhdGUiLHRo aXMuX2NvbnRhaW5lciksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLnR5cGU9ImJ1 dHRvbiIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLnNldEF0dHJpYnV0ZSgiYXJp YS1sYWJlbCIsIkdlb2xvY2F0ZSIpLHRoaXMub3B0aW9ucy50cmFja1VzZXJM b2NhdGlvbiYmKHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5zZXRBdHRyaWJ1dGUo ImFyaWEtcHJlc3NlZCIsImZhbHNlIiksdGhpcy5fd2F0Y2hTdGF0ZT0iT0ZG IiksdGhpcy5vcHRpb25zLnNob3dVc2VyTG9jYXRpb24mJih0aGlzLl9kb3RF bGVtZW50PXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC11c2VyLWxvY2F0aW9u LWRvdCIpLHRoaXMuX3VzZXJMb2NhdGlvbkRvdE1hcmtlcj1uZXcgcW4odGhp cy5fZG90RWxlbWVudCksdGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9u JiYodGhpcy5fd2F0Y2hTdGF0ZT0iT0ZGIikpLHRoaXMuX2dlb2xvY2F0ZUJ1 dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy50cmlnZ2VyLmJp bmQodGhpcykpLHRoaXMuX3NldHVwPSEwLHRoaXMub3B0aW9ucy50cmFja1Vz ZXJMb2NhdGlvbiYmdGhpcy5fbWFwLm9uKCJtb3Zlc3RhcnQiLGZ1bmN0aW9u KGUpe2UuZ2VvbG9jYXRlU291cmNlfHwiQUNUSVZFX0xPQ0siIT09bi5fd2F0 Y2hTdGF0ZXx8KG4uX3dhdGNoU3RhdGU9IkJBQ0tHUk9VTkQiLG4uX2dlb2xv Y2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xv Y2F0ZS1iYWNrZ3JvdW5kIiksbi5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlz dC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZSIpLG4u ZmlyZShuZXcgdC5FdmVudCgidHJhY2t1c2VybG9jYXRpb25lbmQiKSkpfSkp OnQud2Fybk9uY2UoIkdlb2xvY2F0aW9uIHN1cHBvcnQgaXMgbm90IGF2YWls YWJsZSwgdGhlIEdlb2xvY2F0ZUNvbnRyb2wgd2lsbCBub3QgYmUgdmlzaWJs ZS4iKX0sbi5wcm90b3R5cGUudHJpZ2dlcj1mdW5jdGlvbigpe2lmKCF0aGlz Ll9zZXR1cClyZXR1cm4gdC53YXJuT25jZSgiR2VvbG9jYXRlIGNvbnRyb2wg dHJpZ2dlcmVkIGJlZm9yZSBhZGRlZCB0byBhIG1hcCIpLCExO2lmKHRoaXMu b3B0aW9ucy50cmFja1VzZXJMb2NhdGlvbil7c3dpdGNoKHRoaXMuX3dhdGNo U3RhdGUpe2Nhc2UiT0ZGIjp0aGlzLl93YXRjaFN0YXRlPSJXQUlUSU5HX0FD VElWRSIsdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJ0cmFja3VzZXJsb2NhdGlv bnN0YXJ0IikpO2JyZWFrO2Nhc2UiV0FJVElOR19BQ1RJVkUiOmNhc2UiQUNU SVZFX0xPQ0siOmNhc2UiQUNUSVZFX0VSUk9SIjpjYXNlIkJBQ0tHUk9VTkRf RVJST1IiOnRoaXMuX3dhdGNoU3RhdGU9Ik9GRiIsdGhpcy5fZ2VvbG9jYXRl QnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9j YXRlLXdhaXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0 LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIiksdGhp cy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGds LWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciIpLHRoaXMuX2dlb2xvY2F0 ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xv Y2F0ZS1iYWNrZ3JvdW5kIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNz TGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91 bmQtZXJyb3IiKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoInRyYWNrdXNlcmxv Y2F0aW9uZW5kIikpO2JyZWFrO2Nhc2UiQkFDS0dST1VORCI6dGhpcy5fd2F0 Y2hTdGF0ZT0iQUNUSVZFX0xPQ0siLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5j bGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNr Z3JvdW5kIiksdGhpcy5fbGFzdEtub3duUG9zaXRpb24mJnRoaXMuX3VwZGF0 ZUNhbWVyYSh0aGlzLl9sYXN0S25vd25Qb3NpdGlvbiksdGhpcy5maXJlKG5l dyB0LkV2ZW50KCJ0cmFja3VzZXJsb2NhdGlvbnN0YXJ0IikpfXN3aXRjaCh0 aGlzLl93YXRjaFN0YXRlKXtjYXNlIldBSVRJTkdfQUNUSVZFIjp0aGlzLl9n ZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1n ZW9sb2NhdGUtd2FpdGluZyIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFz c0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUiKTti cmVhaztjYXNlIkFDVElWRV9MT0NLIjp0aGlzLl9nZW9sb2NhdGVCdXR0b24u Y2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZl Iik7YnJlYWs7Y2FzZSJBQ1RJVkVfRVJST1IiOnRoaXMuX2dlb2xvY2F0ZUJ1 dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13 YWl0aW5nIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQo Im1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciIpO2JyZWFr O2Nhc2UiQkFDS0dST1VORCI6dGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNz TGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQi KTticmVhaztjYXNlIkJBQ0tHUk9VTkRfRVJST1IiOnRoaXMuX2dlb2xvY2F0 ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0 ZS13YWl0aW5nIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5h ZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQtZXJyb3Ii KX0iT0ZGIj09PXRoaXMuX3dhdGNoU3RhdGUmJnZvaWQgMCE9PXRoaXMuX2dl b2xvY2F0aW9uV2F0Y2hJRD90aGlzLl9jbGVhcldhdGNoKCk6dm9pZCAwPT09 dGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEJiYodGhpcy5fZ2VvbG9jYXRlQnV0 dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdh aXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKCJh cmlhLXByZXNzZWQiLCJ0cnVlIiksdGhpcy5fZ2VvbG9jYXRpb25XYXRjaElE PXQud2luZG93Lm5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9u KHRoaXMuX29uU3VjY2Vzcyx0aGlzLl9vbkVycm9yLHRoaXMub3B0aW9ucy5w b3NpdGlvbk9wdGlvbnMpKX1lbHNlIHQud2luZG93Lm5hdmlnYXRvci5nZW9s b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24odGhpcy5fb25TdWNjZXNzLHRo aXMuX29uRXJyb3IsdGhpcy5vcHRpb25zLnBvc2l0aW9uT3B0aW9ucyksdGhp cy5fdGltZW91dElkPXNldFRpbWVvdXQodGhpcy5fZmluaXNoLDFlNCk7cmV0 dXJuITB9LG4ucHJvdG90eXBlLl9jbGVhcldhdGNoPWZ1bmN0aW9uKCl7dC53 aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2godGhpcy5f Z2VvbG9jYXRpb25XYXRjaElEKSx0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQ9 dm9pZCAwLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3Zl KCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nIiksdGhpcy5fZ2Vv bG9jYXRlQnV0dG9uLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwiZmFs c2UiKSx0aGlzLm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhpcy5fdXBk YXRlTWFya2VyKG51bGwpfSxufSh0LkV2ZW50ZWQpLFluPXttYXhXaWR0aDox MDAsdW5pdDoibWV0cmljIn0sV249ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25z PXQuZXh0ZW5kKHt9LFluLGUpLHQuYmluZEFsbChbIl9vbk1vdmUiLCJzZXRV bml0Il0sdGhpcyl9O2Z1bmN0aW9uIFhuKHQsZSxyKXt2YXIgbixhLGksbyxz LGwsYz1yJiZyLm1heFdpZHRofHwxMDAsdT10Ll9jb250YWluZXIuY2xpZW50 SGVpZ2h0LzIsaD0obj10LnVucHJvamVjdChbMCx1XSksYT10LnVucHJvamVj dChbYyx1XSksaT1NYXRoLlBJLzE4MCxvPW4ubGF0Kmkscz1hLmxhdCppLGw9 TWF0aC5zaW4obykqTWF0aC5zaW4ocykrTWF0aC5jb3MobykqTWF0aC5jb3Mo cykqTWF0aC5jb3MoKGEubG5nLW4ubG5nKSppKSw2MzcxZTMqTWF0aC5hY29z KE1hdGgubWluKGwsMSkpKTtpZihyJiYiaW1wZXJpYWwiPT09ci51bml0KXt2 YXIgZj0zLjI4MDgqaDtmPjUyODA/Wm4oZSxjLGYvNTI4MCwibWkiKTpabihl LGMsZiwiZnQiKX1lbHNlIHImJiJuYXV0aWNhbCI9PT1yLnVuaXQ/Wm4oZSxj LGgvMTg1Miwibm0iKTpabihlLGMsaCwibSIpfWZ1bmN0aW9uIFpuKHQsZSxy LG4pe3ZhciBhLGksbyxzPShhPXIsKGk9TWF0aC5wb3coMTAsKCIiK01hdGgu Zmxvb3IoYSkpLmxlbmd0aC0xKSkqKG89KG89YS9pKT49MTA/MTA6bz49NT81 Om8+PTM/MzpvPj0yPzI6bz49MT8xOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgu cG93KDEwLE1hdGguY2VpbCgtTWF0aC5sb2codCkvTWF0aC5MTjEwKSk7cmV0 dXJuIE1hdGgucm91bmQodCplKS9lfShvKSkpLGw9cy9yOyJtIj09PW4mJnM+ PTFlMyYmKHMvPTFlMyxuPSJrbSIpLHQuc3R5bGUud2lkdGg9ZSpsKyJweCIs dC5pbm5lckhUTUw9cytufVduLnByb3RvdHlwZS5nZXREZWZhdWx0UG9zaXRp b249ZnVuY3Rpb24oKXtyZXR1cm4iYm90dG9tLWxlZnQifSxXbi5wcm90b3R5 cGUuX29uTW92ZT1mdW5jdGlvbigpe1huKHRoaXMuX21hcCx0aGlzLl9jb250 YWluZXIsdGhpcy5vcHRpb25zKX0sV24ucHJvdG90eXBlLm9uQWRkPWZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl9jb250YWluZXI9ci5j cmVhdGUoImRpdiIsIm1hcGJveGdsLWN0cmwgbWFwYm94Z2wtY3RybC1zY2Fs ZSIsdC5nZXRDb250YWluZXIoKSksdGhpcy5fbWFwLm9uKCJtb3ZlIix0aGlz Ll9vbk1vdmUpLHRoaXMuX29uTW92ZSgpLHRoaXMuX2NvbnRhaW5lcn0sV24u cHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7ci5yZW1vdmUodGhpcy5f Y29udGFpbmVyKSx0aGlzLl9tYXAub2ZmKCJtb3ZlIix0aGlzLl9vbk1vdmUp LHRoaXMuX21hcD12b2lkIDB9LFduLnByb3RvdHlwZS5zZXRVbml0PWZ1bmN0 aW9uKHQpe3RoaXMub3B0aW9ucy51bml0PXQsWG4odGhpcy5fbWFwLHRoaXMu X2NvbnRhaW5lcix0aGlzLm9wdGlvbnMpfTt2YXIgSm49ZnVuY3Rpb24oZSl7 dGhpcy5fZnVsbHNjcmVlbj0hMSxlJiZlLmNvbnRhaW5lciYmKGUuY29udGFp bmVyIGluc3RhbmNlb2YgdC53aW5kb3cuSFRNTEVsZW1lbnQ/dGhpcy5fY29u dGFpbmVyPWUuY29udGFpbmVyOnQud2Fybk9uY2UoIkZ1bGwgc2NyZWVuIGNv bnRyb2wgJ2NvbnRhaW5lcicgbXVzdCBiZSBhIERPTSBlbGVtZW50LiIpKSx0 LmJpbmRBbGwoWyJfb25DbGlja0Z1bGxzY3JlZW4iLCJfY2hhbmdlSWNvbiJd LHRoaXMpLCJvbmZ1bGxzY3JlZW5jaGFuZ2UiaW4gdC53aW5kb3cuZG9jdW1l bnQ/dGhpcy5fZnVsbHNjcmVlbmNoYW5nZT0iZnVsbHNjcmVlbmNoYW5nZSI6 Im9ubW96ZnVsbHNjcmVlbmNoYW5nZSJpbiB0LndpbmRvdy5kb2N1bWVudD90 aGlzLl9mdWxsc2NyZWVuY2hhbmdlPSJtb3pmdWxsc2NyZWVuY2hhbmdlIjoi b253ZWJraXRmdWxsc2NyZWVuY2hhbmdlImluIHQud2luZG93LmRvY3VtZW50 P3RoaXMuX2Z1bGxzY3JlZW5jaGFuZ2U9IndlYmtpdGZ1bGxzY3JlZW5jaGFu Z2UiOiJvbm1zZnVsbHNjcmVlbmNoYW5nZSJpbiB0LndpbmRvdy5kb2N1bWVu dCYmKHRoaXMuX2Z1bGxzY3JlZW5jaGFuZ2U9Ik1TRnVsbHNjcmVlbkNoYW5n ZSIpLHRoaXMuX2NsYXNzTmFtZT0ibWFwYm94Z2wtY3RybCJ9O0puLnByb3Rv dHlwZS5vbkFkZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbWFwPWUsdGhp cy5fY29udGFpbmVyfHwodGhpcy5fY29udGFpbmVyPXRoaXMuX21hcC5nZXRD b250YWluZXIoKSksdGhpcy5fY29udHJvbENvbnRhaW5lcj1yLmNyZWF0ZSgi ZGl2Iix0aGlzLl9jbGFzc05hbWUrIiBtYXBib3hnbC1jdHJsLWdyb3VwIiks dGhpcy5fY2hlY2tGdWxsc2NyZWVuU3VwcG9ydCgpP3RoaXMuX3NldHVwVUko KToodGhpcy5fY29udHJvbENvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSJub25l Iix0Lndhcm5PbmNlKCJUaGlzIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGZ1 bGxzY3JlZW4gbW9kZS4iKSksdGhpcy5fY29udHJvbENvbnRhaW5lcn0sSm4u cHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7ci5yZW1vdmUodGhpcy5f Y29udHJvbENvbnRhaW5lciksdGhpcy5fbWFwPW51bGwsdC53aW5kb3cuZG9j dW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl9mdWxsc2NyZWVuY2hh bmdlLHRoaXMuX2NoYW5nZUljb24pfSxKbi5wcm90b3R5cGUuX2NoZWNrRnVs bHNjcmVlblN1cHBvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4hISh0LndpbmRvdy5k b2N1bWVudC5mdWxsc2NyZWVuRW5hYmxlZHx8dC53aW5kb3cuZG9jdW1lbnQu bW96RnVsbFNjcmVlbkVuYWJsZWR8fHQud2luZG93LmRvY3VtZW50Lm1zRnVs bHNjcmVlbkVuYWJsZWR8fHQud2luZG93LmRvY3VtZW50LndlYmtpdEZ1bGxz Y3JlZW5FbmFibGVkKX0sSm4ucHJvdG90eXBlLl9zZXR1cFVJPWZ1bmN0aW9u KCl7KHRoaXMuX2Z1bGxzY3JlZW5CdXR0b249ci5jcmVhdGUoImJ1dHRvbiIs dGhpcy5fY2xhc3NOYW1lKyItaWNvbiAiK3RoaXMuX2NsYXNzTmFtZSsiLWZ1 bGxzY3JlZW4iLHRoaXMuX2NvbnRyb2xDb250YWluZXIpKS50eXBlPSJidXR0 b24iLHRoaXMuX3VwZGF0ZVRpdGxlKCksdGhpcy5fZnVsbHNjcmVlbkJ1dHRv bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fb25DbGlja0Z1bGxz Y3JlZW4pLHQud2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhp cy5fZnVsbHNjcmVlbmNoYW5nZSx0aGlzLl9jaGFuZ2VJY29uKX0sSm4ucHJv dG90eXBlLl91cGRhdGVUaXRsZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2lz RnVsbHNjcmVlbigpPyJFeGl0IGZ1bGxzY3JlZW4iOiJFbnRlciBmdWxsc2Ny ZWVuIjt0aGlzLl9mdWxsc2NyZWVuQnV0dG9uLnNldEF0dHJpYnV0ZSgiYXJp YS1sYWJlbCIsdCksdGhpcy5fZnVsbHNjcmVlbkJ1dHRvbi50aXRsZT10fSxK bi5wcm90b3R5cGUuX2lzRnVsbHNjcmVlbj1mdW5jdGlvbigpe3JldHVybiB0 aGlzLl9mdWxsc2NyZWVufSxKbi5wcm90b3R5cGUuX2NoYW5nZUljb249ZnVu Y3Rpb24oKXsodC53aW5kb3cuZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnR8 fHQud2luZG93LmRvY3VtZW50Lm1vekZ1bGxTY3JlZW5FbGVtZW50fHx0Lndp bmRvdy5kb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8dC53aW5k b3cuZG9jdW1lbnQubXNGdWxsc2NyZWVuRWxlbWVudCk9PT10aGlzLl9jb250 YWluZXIhPT10aGlzLl9mdWxsc2NyZWVuJiYodGhpcy5fZnVsbHNjcmVlbj0h dGhpcy5fZnVsbHNjcmVlbix0aGlzLl9mdWxsc2NyZWVuQnV0dG9uLmNsYXNz TGlzdC50b2dnbGUodGhpcy5fY2xhc3NOYW1lKyItc2hyaW5rIiksdGhpcy5f ZnVsbHNjcmVlbkJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKHRoaXMuX2NsYXNz TmFtZSsiLWZ1bGxzY3JlZW4iKSx0aGlzLl91cGRhdGVUaXRsZSgpKX0sSm4u cHJvdG90eXBlLl9vbkNsaWNrRnVsbHNjcmVlbj1mdW5jdGlvbigpe3RoaXMu X2lzRnVsbHNjcmVlbigpP3Qud2luZG93LmRvY3VtZW50LmV4aXRGdWxsc2Ny ZWVuP3Qud2luZG93LmRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk6dC53aW5k b3cuZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbj90LndpbmRvdy5kb2N1 bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuKCk6dC53aW5kb3cuZG9jdW1lbnQu bXNFeGl0RnVsbHNjcmVlbj90LndpbmRvdy5kb2N1bWVudC5tc0V4aXRGdWxs c2NyZWVuKCk6dC53aW5kb3cuZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNj cmVlbiYmdC53aW5kb3cuZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVl bigpOnRoaXMuX2NvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbj90aGlzLl9j b250YWluZXIucmVxdWVzdEZ1bGxzY3JlZW4oKTp0aGlzLl9jb250YWluZXIu bW96UmVxdWVzdEZ1bGxTY3JlZW4/dGhpcy5fY29udGFpbmVyLm1velJlcXVl c3RGdWxsU2NyZWVuKCk6dGhpcy5fY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxz Y3JlZW4/dGhpcy5fY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTp0 aGlzLl9jb250YWluZXIud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4mJnRoaXMu X2NvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfTt2YXIgS249 e2Nsb3NlQnV0dG9uOiEwLGNsb3NlT25DbGljazohMCxjbGFzc05hbWU6IiIs bWF4V2lkdGg6IjI0MHB4In0sUW49ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihy KXtlLmNhbGwodGhpcyksdGhpcy5vcHRpb25zPXQuZXh0ZW5kKE9iamVjdC5j cmVhdGUoS24pLHIpLHQuYmluZEFsbChbIl91cGRhdGUiLCJfb25DbGlja0Ns b3NlIiwicmVtb3ZlIl0sdGhpcyl9cmV0dXJuIGUmJihuLl9fcHJvdG9fXz1l KSxuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxu LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1uLG4ucHJvdG90eXBlLmFkZFRvPWZ1 bmN0aW9uKGUpe3ZhciByPXRoaXM7cmV0dXJuIHRoaXMuX21hcD1lLHRoaXMu b3B0aW9ucy5jbG9zZU9uQ2xpY2smJnRoaXMuX21hcC5vbigiY2xpY2siLHRo aXMuX29uQ2xpY2tDbG9zZSksdGhpcy5fbWFwLm9uKCJyZW1vdmUiLHRoaXMu cmVtb3ZlKSx0aGlzLl91cGRhdGUoKSx0aGlzLl90cmFja1BvaW50ZXI/KHRo aXMuX21hcC5vbigibW91c2Vtb3ZlIixmdW5jdGlvbih0KXtyLl91cGRhdGUo dC5wb2ludCl9KSx0aGlzLl9tYXAub24oIm1vdXNldXAiLGZ1bmN0aW9uKHQp e3IuX3VwZGF0ZSh0LnBvaW50KX0pLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xp c3QuYWRkKCJtYXBib3hnbC1wb3B1cC10cmFjay1wb2ludGVyIiksdGhpcy5f bWFwLl9jYW52YXNDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wt dHJhY2stcG9pbnRlciIpKTp0aGlzLl9tYXAub24oIm1vdmUiLHRoaXMuX3Vw ZGF0ZSksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJvcGVuIikpLHRoaXN9LG4u cHJvdG90eXBlLmlzT3Blbj1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fbWFw fSxuLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f Y29udGVudCYmci5yZW1vdmUodGhpcy5fY29udGVudCksdGhpcy5fY29udGFp bmVyJiYoci5yZW1vdmUodGhpcy5fY29udGFpbmVyKSxkZWxldGUgdGhpcy5f Y29udGFpbmVyKSx0aGlzLl9tYXAmJih0aGlzLl9tYXAub2ZmKCJtb3ZlIix0 aGlzLl91cGRhdGUpLHRoaXMuX21hcC5vZmYoImNsaWNrIix0aGlzLl9vbkNs aWNrQ2xvc2UpLHRoaXMuX21hcC5vZmYoInJlbW92ZSIsdGhpcy5yZW1vdmUp LHRoaXMuX21hcC5vZmYoIm1vdXNlbW92ZSIpLGRlbGV0ZSB0aGlzLl9tYXAp LHRoaXMuZmlyZShuZXcgdC5FdmVudCgiY2xvc2UiKSksdGhpc30sbi5wcm90 b3R5cGUuZ2V0TG5nTGF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xuZ0xh dH0sbi5wcm90b3R5cGUuc2V0TG5nTGF0PWZ1bmN0aW9uKGUpe3JldHVybiB0 aGlzLl9sbmdMYXQ9dC5MbmdMYXQuY29udmVydChlKSx0aGlzLl9wb3M9bnVs bCx0aGlzLl90cmFja1BvaW50ZXI9ITEsdGhpcy5fdXBkYXRlKCksdGhpcy5f bWFwJiYodGhpcy5fbWFwLm9uKCJtb3ZlIix0aGlzLl91cGRhdGUpLHRoaXMu X21hcC5vZmYoIm1vdXNlbW92ZSIpLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xp c3QucmVtb3ZlKCJtYXBib3hnbC1wb3B1cC10cmFjay1wb2ludGVyIiksdGhp cy5fbWFwLl9jYW52YXNDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgibWFw Ym94Z2wtdHJhY2stcG9pbnRlciIpKSx0aGlzfSxuLnByb3RvdHlwZS50cmFj a1BvaW50ZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl90 cmFja1BvaW50ZXI9ITAsdGhpcy5fcG9zPW51bGwsdGhpcy5fbWFwJiYodGhp cy5fbWFwLm9mZigibW92ZSIsdGhpcy5fdXBkYXRlKSx0aGlzLl9tYXAub24o Im1vdXNlbW92ZSIsZnVuY3Rpb24oZSl7dC5fdXBkYXRlKGUucG9pbnQpfSks dGhpcy5fbWFwLm9uKCJkcmFnIixmdW5jdGlvbihlKXt0Ll91cGRhdGUoZS5w b2ludCl9KSx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFwYm94 Z2wtcG9wdXAtdHJhY2stcG9pbnRlciIpLHRoaXMuX21hcC5fY2FudmFzQ29u dGFpbmVyLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLXRyYWNrLXBvaW50ZXIi KSksdGhpc30sbi5wcm90b3R5cGUuZ2V0RWxlbWVudD1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9jb250YWluZXJ9LG4ucHJvdG90eXBlLnNldFRleHQ9ZnVu Y3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0RE9NQ29udGVudCh0LndpbmRvdy5k b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSl9LG4ucHJvdG90eXBlLnNldEhU TUw9ZnVuY3Rpb24oZSl7dmFyIHIsbj10LndpbmRvdy5kb2N1bWVudC5jcmVh dGVEb2N1bWVudEZyYWdtZW50KCksYT10LndpbmRvdy5kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJib2R5Iik7Zm9yKGEuaW5uZXJIVE1MPWU7cj1hLmZpcnN0 Q2hpbGQ7KW4uYXBwZW5kQ2hpbGQocik7cmV0dXJuIHRoaXMuc2V0RE9NQ29u dGVudChuKX0sbi5wcm90b3R5cGUuZ2V0TWF4V2lkdGg9ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fY29udGFpbmVyLnN0eWxlLm1heFdpZHRofSxuLnByb3Rv dHlwZS5zZXRNYXhXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRp b25zLm1heFdpZHRoPXQsdGhpcy5fdXBkYXRlKCksdGhpc30sbi5wcm90b3R5 cGUuc2V0RE9NQ29udGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY3Jl YXRlQ29udGVudCgpLHRoaXMuX2NvbnRlbnQuYXBwZW5kQ2hpbGQodCksdGhp cy5fdXBkYXRlKCksdGhpc30sbi5wcm90b3R5cGUuX2NyZWF0ZUNvbnRlbnQ9 ZnVuY3Rpb24oKXt0aGlzLl9jb250ZW50JiZyLnJlbW92ZSh0aGlzLl9jb250 ZW50KSx0aGlzLl9jb250ZW50PXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1w b3B1cC1jb250ZW50Iix0aGlzLl9jb250YWluZXIpLHRoaXMub3B0aW9ucy5j bG9zZUJ1dHRvbiYmKHRoaXMuX2Nsb3NlQnV0dG9uPXIuY3JlYXRlKCJidXR0 b24iLCJtYXBib3hnbC1wb3B1cC1jbG9zZS1idXR0b24iLHRoaXMuX2NvbnRl bnQpLHRoaXMuX2Nsb3NlQnV0dG9uLnR5cGU9ImJ1dHRvbiIsdGhpcy5fY2xv c2VCdXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiQ2xvc2UgcG9w dXAiKSx0aGlzLl9jbG9zZUJ1dHRvbi5pbm5lckhUTUw9IiYjMjE1OyIsdGhp cy5fY2xvc2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMu X29uQ2xpY2tDbG9zZSkpfSxuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9u KGUpe3ZhciBuPXRoaXMsYT10aGlzLl9sbmdMYXR8fHRoaXMuX3RyYWNrUG9p bnRlcjtpZih0aGlzLl9tYXAmJmEmJnRoaXMuX2NvbnRlbnQmJih0aGlzLl9j b250YWluZXJ8fCh0aGlzLl9jb250YWluZXI9ci5jcmVhdGUoImRpdiIsIm1h cGJveGdsLXBvcHVwIix0aGlzLl9tYXAuZ2V0Q29udGFpbmVyKCkpLHRoaXMu X3RpcD1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtcG9wdXAtdGlwIix0aGlz Ll9jb250YWluZXIpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlz Ll9jb250ZW50KSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lJiZ0aGlzLm9wdGlv bnMuY2xhc3NOYW1lLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbih0KXty ZXR1cm4gbi5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodCl9KSksdGhpcy5v cHRpb25zLm1heFdpZHRoJiZ0aGlzLl9jb250YWluZXIuc3R5bGUubWF4V2lk dGghPT10aGlzLm9wdGlvbnMubWF4V2lkdGgmJih0aGlzLl9jb250YWluZXIu c3R5bGUubWF4V2lkdGg9dGhpcy5vcHRpb25zLm1heFdpZHRoKSx0aGlzLl9t YXAudHJhbnNmb3JtLnJlbmRlcldvcmxkQ29waWVzJiYhdGhpcy5fdHJhY2tQ b2ludGVyJiYodGhpcy5fbG5nTGF0PU5uKHRoaXMuX2xuZ0xhdCx0aGlzLl9w b3MsdGhpcy5fbWFwLnRyYW5zZm9ybSkpLCF0aGlzLl90cmFja1BvaW50ZXJ8 fGUpKXt2YXIgaT10aGlzLl9wb3M9dGhpcy5fdHJhY2tQb2ludGVyJiZlP2U6 dGhpcy5fbWFwLnByb2plY3QodGhpcy5fbG5nTGF0KSxvPXRoaXMub3B0aW9u cy5hbmNob3Iscz1mdW5jdGlvbiBlKHIpe2lmKHIpe2lmKCJudW1iZXIiPT10 eXBlb2Ygcil7dmFyIG49TWF0aC5yb3VuZChNYXRoLnNxcnQoLjUqTWF0aC5w b3cociwyKSkpO3JldHVybntjZW50ZXI6bmV3IHQuUG9pbnQoMCwwKSx0b3A6 bmV3IHQuUG9pbnQoMCxyKSwidG9wLWxlZnQiOm5ldyB0LlBvaW50KG4sbiks InRvcC1yaWdodCI6bmV3IHQuUG9pbnQoLW4sbiksYm90dG9tOm5ldyB0LlBv aW50KDAsLXIpLCJib3R0b20tbGVmdCI6bmV3IHQuUG9pbnQobiwtbiksImJv dHRvbS1yaWdodCI6bmV3IHQuUG9pbnQoLW4sLW4pLGxlZnQ6bmV3IHQuUG9p bnQociwwKSxyaWdodDpuZXcgdC5Qb2ludCgtciwwKX19aWYociBpbnN0YW5j ZW9mIHQuUG9pbnR8fEFycmF5LmlzQXJyYXkocikpe3ZhciBhPXQuUG9pbnQu Y29udmVydChyKTtyZXR1cm57Y2VudGVyOmEsdG9wOmEsInRvcC1sZWZ0Ijph LCJ0b3AtcmlnaHQiOmEsYm90dG9tOmEsImJvdHRvbS1sZWZ0IjphLCJib3R0 b20tcmlnaHQiOmEsbGVmdDphLHJpZ2h0OmF9fXJldHVybntjZW50ZXI6dC5Q b2ludC5jb252ZXJ0KHIuY2VudGVyfHxbMCwwXSksdG9wOnQuUG9pbnQuY29u dmVydChyLnRvcHx8WzAsMF0pLCJ0b3AtbGVmdCI6dC5Qb2ludC5jb252ZXJ0 KHJbInRvcC1sZWZ0Il18fFswLDBdKSwidG9wLXJpZ2h0Ijp0LlBvaW50LmNv bnZlcnQoclsidG9wLXJpZ2h0Il18fFswLDBdKSxib3R0b206dC5Qb2ludC5j b252ZXJ0KHIuYm90dG9tfHxbMCwwXSksImJvdHRvbS1sZWZ0Ijp0LlBvaW50 LmNvbnZlcnQoclsiYm90dG9tLWxlZnQiXXx8WzAsMF0pLCJib3R0b20tcmln aHQiOnQuUG9pbnQuY29udmVydChyWyJib3R0b20tcmlnaHQiXXx8WzAsMF0p LGxlZnQ6dC5Qb2ludC5jb252ZXJ0KHIubGVmdHx8WzAsMF0pLHJpZ2h0OnQu UG9pbnQuY29udmVydChyLnJpZ2h0fHxbMCwwXSl9fXJldHVybiBlKG5ldyB0 LlBvaW50KDAsMCkpfSh0aGlzLm9wdGlvbnMub2Zmc2V0KTtpZighbyl7dmFy IGwsYz10aGlzLl9jb250YWluZXIub2Zmc2V0V2lkdGgsdT10aGlzLl9jb250 YWluZXIub2Zmc2V0SGVpZ2h0O2w9aS55K3MuYm90dG9tLnk8dT9bInRvcCJd OmkueT50aGlzLl9tYXAudHJhbnNmb3JtLmhlaWdodC11P1siYm90dG9tIl06 W10saS54PGMvMj9sLnB1c2goImxlZnQiKTppLng+dGhpcy5fbWFwLnRyYW5z Zm9ybS53aWR0aC1jLzImJmwucHVzaCgicmlnaHQiKSxvPTA9PT1sLmxlbmd0 aD8iYm90dG9tIjpsLmpvaW4oIi0iKX12YXIgaD1pLmFkZChzW29dKS5yb3Vu ZCgpO3Iuc2V0VHJhbnNmb3JtKHRoaXMuX2NvbnRhaW5lcixqbltvXSsiIHRy YW5zbGF0ZSgiK2gueCsicHgsIitoLnkrInB4KSIpLFZuKHRoaXMuX2NvbnRh aW5lcixvLCJwb3B1cCIpfX0sbi5wcm90b3R5cGUuX29uQ2xpY2tDbG9zZT1m dW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9LG59KHQuRXZlbnRlZCksJG49e3Zl cnNpb246dC52ZXJzaW9uLHN1cHBvcnRlZDplLHNldFJUTFRleHRQbHVnaW46 dC5zZXRSVExUZXh0UGx1Z2luLE1hcDpEbixOYXZpZ2F0aW9uQ29udHJvbDpC bixHZW9sb2NhdGVDb250cm9sOkduLEF0dHJpYnV0aW9uQ29udHJvbDpMbixT Y2FsZUNvbnRyb2w6V24sRnVsbHNjcmVlbkNvbnRyb2w6Sm4sUG9wdXA6UW4s TWFya2VyOnFuLFN0eWxlOlJlLExuZ0xhdDp0LkxuZ0xhdCxMbmdMYXRCb3Vu ZHM6dC5MbmdMYXRCb3VuZHMsUG9pbnQ6dC5Qb2ludCxNZXJjYXRvckNvb3Jk aW5hdGU6dC5NZXJjYXRvckNvb3JkaW5hdGUsRXZlbnRlZDp0LkV2ZW50ZWQs Y29uZmlnOnQuY29uZmlnLGdldCBhY2Nlc3NUb2tlbigpe3JldHVybiB0LmNv bmZpZy5BQ0NFU1NfVE9LRU59LHNldCBhY2Nlc3NUb2tlbihlKXt0LmNvbmZp Zy5BQ0NFU1NfVE9LRU49ZX0sZ2V0IGJhc2VBcGlVcmwoKXtyZXR1cm4gdC5j b25maWcuQVBJX1VSTH0sc2V0IGJhc2VBcGlVcmwoZSl7dC5jb25maWcuQVBJ X1VSTD1lfSxnZXQgd29ya2VyQ291bnQoKXtyZXR1cm4gSXQud29ya2VyQ291 bnR9LHNldCB3b3JrZXJDb3VudCh0KXtJdC53b3JrZXJDb3VudD10fSxnZXQg bWF4UGFyYWxsZWxJbWFnZVJlcXVlc3RzKCl7cmV0dXJuIHQuY29uZmlnLk1B WF9QQVJBTExFTF9JTUFHRV9SRVFVRVNUU30sc2V0IG1heFBhcmFsbGVsSW1h Z2VSZXF1ZXN0cyhlKXt0LmNvbmZpZy5NQVhfUEFSQUxMRUxfSU1BR0VfUkVR VUVTVFM9ZX0sY2xlYXJTdG9yYWdlOmZ1bmN0aW9uKGUpe3QuY2xlYXJUaWxl Q2FjaGUoZSl9LHdvcmtlclVybDoiIn07cmV0dXJuICRufSkscn0sIm9iamVj dCI9PXR5cGVvZiByJiYidW5kZWZpbmVkIiE9dHlwZW9mIGU/ZS5leHBvcnRz PWEoKToobj1ufHxzZWxmKS5tYXBib3hnbD1hKCl9LHt9XSw0Mjk6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQp e2Zvcih2YXIgZT0xPDx0KzEscj1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24p cltuXT1pKHQsbik7cmV0dXJuIHJ9O3ZhciBuPXQoImNvbnZleC1odWxsIik7 ZnVuY3Rpb24gYSh0LGUscil7Zm9yKHZhciBuPW5ldyBBcnJheSh0KSxhPTA7 YTx0OysrYSluW2FdPTAsYT09PWUmJihuW2FdKz0uNSksYT09PXImJihuW2Fd Kz0uNSk7cmV0dXJuIG59ZnVuY3Rpb24gaSh0LGUpe2lmKDA9PT1lfHxlPT09 KDE8PHQrMSktMSlyZXR1cm5bXTtmb3IodmFyIHI9W10saT1bXSxvPTA7bzw9 dDsrK28paWYoZSYxPDxvKXtyLnB1c2goYSh0LG8tMSxvLTEpKSxpLnB1c2go bnVsbCk7Zm9yKHZhciBzPTA7czw9dDsrK3MpfmUmMTw8cyYmKHIucHVzaChh KHQsby0xLHMtMSkpLGkucHVzaChbbyxzXSkpfXZhciBsPW4ociksYz1bXTt0 OmZvcihvPTA7bzxsLmxlbmd0aDsrK28pe3ZhciB1PWxbb10saD1bXTtmb3Io cz0wO3M8dS5sZW5ndGg7KytzKXtpZighaVt1W3NdXSljb250aW51ZSB0O2gu cHVzaChpW3Vbc11dLnNsaWNlKCkpfWMucHVzaChoKX1yZXR1cm4gY319LHsi Y29udmV4LWh1bGwiOjEzMn1dLDQzMDpbZnVuY3Rpb24odCxlLHIpe3ZhciBu PXQoIi4vbm9ybWFsaXplIiksYT10KCJnbC1tYXQ0L2NyZWF0ZSIpLGk9dCgi Z2wtbWF0NC9jbG9uZSIpLG89dCgiZ2wtbWF0NC9kZXRlcm1pbmFudCIpLHM9 dCgiZ2wtbWF0NC9pbnZlcnQiKSxsPXQoImdsLW1hdDQvdHJhbnNwb3NlIiks Yz17bGVuZ3RoOnQoImdsLXZlYzMvbGVuZ3RoIiksbm9ybWFsaXplOnQoImds LXZlYzMvbm9ybWFsaXplIiksZG90OnQoImdsLXZlYzMvZG90IiksY3Jvc3M6 dCgiZ2wtdmVjMy9jcm9zcyIpfSx1PWEoKSxoPWEoKSxmPVswLDAsMCwwXSxw PVtbMCwwLDBdLFswLDAsMF0sWzAsMCwwXV0sZD1bMCwwLDBdO2Z1bmN0aW9u IGcodCxlLHIsbixhKXt0WzBdPWVbMF0qbityWzBdKmEsdFsxXT1lWzFdKm4r clsxXSphLHRbMl09ZVsyXSpuK3JbMl0qYX1lLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIsYSx2LG0pe2lmKGV8fChlPVswLDAsMF0pLHJ8fChyPVswLDAsMF0p LGF8fChhPVswLDAsMF0pLHZ8fCh2PVswLDAsMCwxXSksbXx8KG09WzAsMCww LDFdKSwhbih1LHQpKXJldHVybiExO2lmKGkoaCx1KSxoWzNdPTAsaFs3XT0w LGhbMTFdPTAsaFsxNV09MSxNYXRoLmFicyhvKGgpPDFlLTgpKXJldHVybiEx O3ZhciB5LHgsYixfLHcsayxULE09dVszXSxBPXVbN10sUz11WzExXSxFPXVb MTJdLEw9dVsxM10sQz11WzE0XSxQPXVbMTVdO2lmKDAhPT1NfHwwIT09QXx8 MCE9PVMpe2lmKGZbMF09TSxmWzFdPUEsZlsyXT1TLGZbM109UCwhcyhoLGgp KXJldHVybiExO2woaCxoKSx5PXYsYj1oLF89KHg9ZilbMF0sdz14WzFdLGs9 eFsyXSxUPXhbM10seVswXT1iWzBdKl8rYls0XSp3K2JbOF0qaytiWzEyXSpU LHlbMV09YlsxXSpfK2JbNV0qdytiWzldKmsrYlsxM10qVCx5WzJdPWJbMl0q XytiWzZdKncrYlsxMF0qaytiWzE0XSpULHlbM109YlszXSpfK2JbN10qdyti WzExXSprK2JbMTVdKlR9ZWxzZSB2WzBdPXZbMV09dlsyXT0wLHZbM109MTtp ZihlWzBdPUUsZVsxXT1MLGVbMl09QyxmdW5jdGlvbih0LGUpe3RbMF1bMF09 ZVswXSx0WzBdWzFdPWVbMV0sdFswXVsyXT1lWzJdLHRbMV1bMF09ZVs0XSx0 WzFdWzFdPWVbNV0sdFsxXVsyXT1lWzZdLHRbMl1bMF09ZVs4XSx0WzJdWzFd PWVbOV0sdFsyXVsyXT1lWzEwXX0ocCx1KSxyWzBdPWMubGVuZ3RoKHBbMF0p LGMubm9ybWFsaXplKHBbMF0scFswXSksYVswXT1jLmRvdChwWzBdLHBbMV0p LGcocFsxXSxwWzFdLHBbMF0sMSwtYVswXSksclsxXT1jLmxlbmd0aChwWzFd KSxjLm5vcm1hbGl6ZShwWzFdLHBbMV0pLGFbMF0vPXJbMV0sYVsxXT1jLmRv dChwWzBdLHBbMl0pLGcocFsyXSxwWzJdLHBbMF0sMSwtYVsxXSksYVsyXT1j LmRvdChwWzFdLHBbMl0pLGcocFsyXSxwWzJdLHBbMV0sMSwtYVsyXSksclsy XT1jLmxlbmd0aChwWzJdKSxjLm5vcm1hbGl6ZShwWzJdLHBbMl0pLGFbMV0v PXJbMl0sYVsyXS89clsyXSxjLmNyb3NzKGQscFsxXSxwWzJdKSxjLmRvdChw WzBdLGQpPDApZm9yKHZhciBPPTA7TzwzO08rKylyW09dKj0tMSxwW09dWzBd Kj0tMSxwW09dWzFdKj0tMSxwW09dWzJdKj0tMTtyZXR1cm4gbVswXT0uNSpN YXRoLnNxcnQoTWF0aC5tYXgoMStwWzBdWzBdLXBbMV1bMV0tcFsyXVsyXSww KSksbVsxXT0uNSpNYXRoLnNxcnQoTWF0aC5tYXgoMS1wWzBdWzBdK3BbMV1b MV0tcFsyXVsyXSwwKSksbVsyXT0uNSpNYXRoLnNxcnQoTWF0aC5tYXgoMS1w WzBdWzBdLXBbMV1bMV0rcFsyXVsyXSwwKSksbVszXT0uNSpNYXRoLnNxcnQo TWF0aC5tYXgoMStwWzBdWzBdK3BbMV1bMV0rcFsyXVsyXSwwKSkscFsyXVsx XT5wWzFdWzJdJiYobVswXT0tbVswXSkscFswXVsyXT5wWzJdWzBdJiYobVsx XT0tbVsxXSkscFsxXVswXT5wWzBdWzFdJiYobVsyXT0tbVsyXSksITB9fSx7 Ii4vbm9ybWFsaXplIjo0MzEsImdsLW1hdDQvY2xvbmUiOjI2MiwiZ2wtbWF0 NC9jcmVhdGUiOjI2MywiZ2wtbWF0NC9kZXRlcm1pbmFudCI6MjY0LCJnbC1t YXQ0L2ludmVydCI6MjY4LCJnbC1tYXQ0L3RyYW5zcG9zZSI6Mjc5LCJnbC12 ZWMzL2Nyb3NzIjozMzYsImdsLXZlYzMvZG90IjozNDEsImdsLXZlYzMvbGVu Z3RoIjozNTEsImdsLXZlYzMvbm9ybWFsaXplIjozNTh9XSw0MzE6W2Z1bmN0 aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzE1 XTtpZigwPT09cilyZXR1cm4hMTtmb3IodmFyIG49MS9yLGE9MDthPDE2O2Er Kyl0W2FdPWVbYV0qbjtyZXR1cm4hMH19LHt9XSw0MzI6W2Z1bmN0aW9uKHQs ZSxyKXt2YXIgbj10KCJnbC12ZWMzL2xlcnAiKSxhPXQoIm1hdDQtcmVjb21w b3NlIiksaT10KCJtYXQ0LWRlY29tcG9zZSIpLG89dCgiZ2wtbWF0NC9kZXRl cm1pbmFudCIpLHM9dCgicXVhdC1zbGVycCIpLGw9aCgpLGM9aCgpLHU9aCgp O2Z1bmN0aW9uIGgoKXtyZXR1cm57dHJhbnNsYXRlOmYoKSxzY2FsZTpmKDEp LHNrZXc6ZigpLHBlcnNwZWN0aXZlOlswLDAsMCwxXSxxdWF0ZXJuaW9uOlsw LDAsMCwxXX19ZnVuY3Rpb24gZih0KXtyZXR1cm5bdHx8MCx0fHwwLHR8fDBd fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixoKXtpZigwPT09byhlKXx8MD09 PW8ocikpcmV0dXJuITE7dmFyIGY9aShlLGwudHJhbnNsYXRlLGwuc2NhbGUs bC5za2V3LGwucGVyc3BlY3RpdmUsbC5xdWF0ZXJuaW9uKSxwPWkocixjLnRy YW5zbGF0ZSxjLnNjYWxlLGMuc2tldyxjLnBlcnNwZWN0aXZlLGMucXVhdGVy bmlvbik7cmV0dXJuISghZnx8IXB8fChuKHUudHJhbnNsYXRlLGwudHJhbnNs YXRlLGMudHJhbnNsYXRlLGgpLG4odS5za2V3LGwuc2tldyxjLnNrZXcsaCks bih1LnNjYWxlLGwuc2NhbGUsYy5zY2FsZSxoKSxuKHUucGVyc3BlY3RpdmUs bC5wZXJzcGVjdGl2ZSxjLnBlcnNwZWN0aXZlLGgpLHModS5xdWF0ZXJuaW9u LGwucXVhdGVybmlvbixjLnF1YXRlcm5pb24saCksYSh0LHUudHJhbnNsYXRl LHUuc2NhbGUsdS5za2V3LHUucGVyc3BlY3RpdmUsdS5xdWF0ZXJuaW9uKSww KSl9fSx7ImdsLW1hdDQvZGV0ZXJtaW5hbnQiOjI2NCwiZ2wtdmVjMy9sZXJw IjozNTIsIm1hdDQtZGVjb21wb3NlIjo0MzAsIm1hdDQtcmVjb21wb3NlIjo0 MzMsInF1YXQtc2xlcnAiOjQ4NX1dLDQzMzpbZnVuY3Rpb24odCxlLHIpe3Zh ciBuPXtpZGVudGl0eTp0KCJnbC1tYXQ0L2lkZW50aXR5IiksdHJhbnNsYXRl OnQoImdsLW1hdDQvdHJhbnNsYXRlIiksbXVsdGlwbHk6dCgiZ2wtbWF0NC9t dWx0aXBseSIpLGNyZWF0ZTp0KCJnbC1tYXQ0L2NyZWF0ZSIpLHNjYWxlOnQo ImdsLW1hdDQvc2NhbGUiKSxmcm9tUm90YXRpb25UcmFuc2xhdGlvbjp0KCJn bC1tYXQ0L2Zyb21Sb3RhdGlvblRyYW5zbGF0aW9uIil9LGE9KG4uY3JlYXRl KCksbi5jcmVhdGUoKSk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGksbyxz KXtyZXR1cm4gbi5pZGVudGl0eSh0KSxuLmZyb21Sb3RhdGlvblRyYW5zbGF0 aW9uKHQscyxlKSx0WzNdPW9bMF0sdFs3XT1vWzFdLHRbMTFdPW9bMl0sdFsx NV09b1szXSxuLmlkZW50aXR5KGEpLDAhPT1pWzJdJiYoYVs5XT1pWzJdLG4u bXVsdGlwbHkodCx0LGEpKSwwIT09aVsxXSYmKGFbOV09MCxhWzhdPWlbMV0s bi5tdWx0aXBseSh0LHQsYSkpLDAhPT1pWzBdJiYoYVs4XT0wLGFbNF09aVsw XSxuLm11bHRpcGx5KHQsdCxhKSksbi5zY2FsZSh0LHQsciksdH19LHsiZ2wt bWF0NC9jcmVhdGUiOjI2MywiZ2wtbWF0NC9mcm9tUm90YXRpb25UcmFuc2xh dGlvbiI6MjY2LCJnbC1tYXQ0L2lkZW50aXR5IjoyNjcsImdsLW1hdDQvbXVs dGlwbHkiOjI3MCwiZ2wtbWF0NC9zY2FsZSI6Mjc3LCJnbC1tYXQ0L3RyYW5z bGF0ZSI6Mjc4fV0sNDM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1NYXRoLmxvZzJ8fGZ1bmN0aW9uKHQpe3JldHVybiBNYXRo LmxvZyh0KSpNYXRoLkxPRzJFfX0se31dLDQzNTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIp LGE9dCgibWF0NC1pbnRlcnBvbGF0ZSIpLGk9dCgiZ2wtbWF0NC9pbnZlcnQi KSxvPXQoImdsLW1hdDQvcm90YXRlWCIpLHM9dCgiZ2wtbWF0NC9yb3RhdGVZ IiksbD10KCJnbC1tYXQ0L3JvdGF0ZVoiKSxjPXQoImdsLW1hdDQvbG9va0F0 IiksdT10KCJnbC1tYXQ0L3RyYW5zbGF0ZSIpLGg9KHQoImdsLW1hdDQvc2Nh bGUiKSx0KCJnbC12ZWMzL25vcm1hbGl6ZSIpKSxmPVswLDAsMF07ZnVuY3Rp b24gcCh0KXt0aGlzLl9jb21wb25lbnRzPXQuc2xpY2UoKSx0aGlzLl90aW1l PVswXSx0aGlzLnByZXZNYXRyaXg9dC5zbGljZSgpLHRoaXMubmV4dE1hdHJp eD10LnNsaWNlKCksdGhpcy5jb21wdXRlZE1hdHJpeD10LnNsaWNlKCksdGhp cy5jb21wdXRlZEludmVyc2U9dC5zbGljZSgpLHRoaXMuY29tcHV0ZWRFeWU9 WzAsMCwwXSx0aGlzLmNvbXB1dGVkVXA9WzAsMCwwXSx0aGlzLmNvbXB1dGVk Q2VudGVyPVswLDAsMF0sdGhpcy5jb21wdXRlZFJhZGl1cz1bMF0sdGhpcy5f bGltaXRzPVstMS8wLDEvMF19ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVy biBuZXcgcCgodD10fHx7fSkubWF0cml4fHxbMSwwLDAsMCwwLDEsMCwwLDAs MCwxLDAsMCwwLDAsMV0pfTt2YXIgZD1wLnByb3RvdHlwZTtkLnJlY2FsY01h dHJpeD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90aW1lLHI9bi5sZShlLHQp LG89dGhpcy5jb21wdXRlZE1hdHJpeDtpZighKHI8MCkpe3ZhciBzPXRoaXMu X2NvbXBvbmVudHM7aWYocj09PWUubGVuZ3RoLTEpZm9yKHZhciBsPTE2KnIs Yz0wO2M8MTY7KytjKW9bY109c1tsKytdO2Vsc2V7dmFyIHU9ZVtyKzFdLWVb cl0sZj0obD0xNipyLHRoaXMucHJldk1hdHJpeCkscD0hMDtmb3IoYz0wO2M8 MTY7KytjKWZbY109c1tsKytdO3ZhciBkPXRoaXMubmV4dE1hdHJpeDtmb3Io Yz0wO2M8MTY7KytjKWRbY109c1tsKytdLHA9cCYmZltjXT09PWRbY107aWYo dTwxZS02fHxwKWZvcihjPTA7YzwxNjsrK2Mpb1tjXT1mW2NdO2Vsc2UgYShv LGYsZCwodC1lW3JdKS91KX12YXIgZz10aGlzLmNvbXB1dGVkVXA7Z1swXT1v WzFdLGdbMV09b1s1XSxnWzJdPW9bOV0saChnLGcpO3ZhciB2PXRoaXMuY29t cHV0ZWRJbnZlcnNlO2kodixvKTt2YXIgbT10aGlzLmNvbXB1dGVkRXllLHk9 dlsxNV07bVswXT12WzEyXS95LG1bMV09dlsxM10veSxtWzJdPXZbMTRdL3k7 dmFyIHg9dGhpcy5jb21wdXRlZENlbnRlcixiPU1hdGguZXhwKHRoaXMuY29t cHV0ZWRSYWRpdXNbMF0pO2ZvcihjPTA7YzwzOysrYyl4W2NdPW1bY10tb1sy KzQqY10qYn19LGQuaWRsZT1mdW5jdGlvbih0KXtpZighKHQ8dGhpcy5sYXN0 VCgpKSl7Zm9yKHZhciBlPXRoaXMuX2NvbXBvbmVudHMscj1lLmxlbmd0aC0x NixuPTA7bjwxNjsrK24pZS5wdXNoKGVbcisrXSk7dGhpcy5fdGltZS5wdXNo KHQpfX0sZC5mbHVzaD1mdW5jdGlvbih0KXt2YXIgZT1uLmd0KHRoaXMuX3Rp bWUsdCktMjtlPDB8fCh0aGlzLl90aW1lLnNwbGljZSgwLGUpLHRoaXMuX2Nv bXBvbmVudHMuc3BsaWNlKDAsMTYqZSkpfSxkLmxhc3RUPWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX3RpbWVbdGhpcy5fdGltZS5sZW5ndGgtMV19LGQubG9v a0F0PWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMucmVjYWxjTWF0cml4KHQpLGU9 ZXx8dGhpcy5jb21wdXRlZEV5ZSxyPXJ8fGYsbj1ufHx0aGlzLmNvbXB1dGVk VXAsdGhpcy5zZXRNYXRyaXgodCxjKHRoaXMuY29tcHV0ZWRNYXRyaXgsZSxy LG4pKTtmb3IodmFyIGE9MCxpPTA7aTwzOysraSlhKz1NYXRoLnBvdyhyW2ld LWVbaV0sMik7YT1NYXRoLmxvZyhNYXRoLnNxcnQoYSkpLHRoaXMuY29tcHV0 ZWRSYWRpdXNbMF09YX0sZC5yb3RhdGU9ZnVuY3Rpb24odCxlLHIsbil7dGhp cy5yZWNhbGNNYXRyaXgodCk7dmFyIGE9dGhpcy5jb21wdXRlZEludmVyc2U7 ZSYmcyhhLGEsZSksciYmbyhhLGEsciksbiYmbChhLGEsbiksdGhpcy5zZXRN YXRyaXgodCxpKHRoaXMuY29tcHV0ZWRNYXRyaXgsYSkpfTt2YXIgZz1bMCww LDBdO2QucGFuPWZ1bmN0aW9uKHQsZSxyLG4pe2dbMF09LShlfHwwKSxnWzFd PS0ocnx8MCksZ1syXT0tKG58fDApLHRoaXMucmVjYWxjTWF0cml4KHQpO3Zh ciBhPXRoaXMuY29tcHV0ZWRJbnZlcnNlO3UoYSxhLGcpLHRoaXMuc2V0TWF0 cml4KHQsaShhLGEpKX0sZC50cmFuc2xhdGU9ZnVuY3Rpb24odCxlLHIsbil7 Z1swXT1lfHwwLGdbMV09cnx8MCxnWzJdPW58fDAsdGhpcy5yZWNhbGNNYXRy aXgodCk7dmFyIGE9dGhpcy5jb21wdXRlZE1hdHJpeDt1KGEsYSxnKSx0aGlz LnNldE1hdHJpeCh0LGEpfSxkLnNldE1hdHJpeD1mdW5jdGlvbih0LGUpe2lm KCEodDx0aGlzLmxhc3RUKCkpKXt0aGlzLl90aW1lLnB1c2godCk7Zm9yKHZh ciByPTA7cjwxNjsrK3IpdGhpcy5fY29tcG9uZW50cy5wdXNoKGVbcl0pfX0s ZC5zZXREaXN0YW5jZT1mdW5jdGlvbih0LGUpe3RoaXMuY29tcHV0ZWRSYWRp dXNbMF09ZX0sZC5zZXREaXN0YW5jZUxpbWl0cz1mdW5jdGlvbih0LGUpe3Zh ciByPXRoaXMuX2xpbWl0cztyWzBdPXQsclsxXT1lfSxkLmdldERpc3RhbmNl TGltaXRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xpbWl0cztyZXR1cm4g dD8odFswXT1lWzBdLHRbMV09ZVsxXSx0KTplfX0seyJiaW5hcnktc2VhcmNo LWJvdW5kcyI6OTMsImdsLW1hdDQvaW52ZXJ0IjoyNjgsImdsLW1hdDQvbG9v a0F0IjoyNjksImdsLW1hdDQvcm90YXRlWCI6Mjc0LCJnbC1tYXQ0L3JvdGF0 ZVkiOjI3NSwiZ2wtbWF0NC9yb3RhdGVaIjoyNzYsImdsLW1hdDQvc2NhbGUi OjI3NywiZ2wtbWF0NC90cmFuc2xhdGUiOjI3OCwiZ2wtdmVjMy9ub3JtYWxp emUiOjM1OCwibWF0NC1pbnRlcnBvbGF0ZSI6NDMyfV0sNDM2OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2 YXIgZT10Lmxlbmd0aDtpZihlPDMpe2Zvcih2YXIgcj1uZXcgQXJyYXkoZSks YT0wO2E8ZTsrK2EpclthXT1hO3JldHVybiAyPT09ZSYmdFswXVswXT09PXRb MV1bMF0mJnRbMF1bMV09PT10WzFdWzFdP1swXTpyfWZvcih2YXIgaT1uZXcg QXJyYXkoZSksYT0wO2E8ZTsrK2EpaVthXT1hO2kuc29ydChmdW5jdGlvbihl LHIpe3ZhciBuPXRbZV1bMF0tdFtyXVswXTtyZXR1cm4gbnx8dFtlXVsxXS10 W3JdWzFdfSk7Zm9yKHZhciBvPVtpWzBdLGlbMV1dLHM9W2lbMF0saVsxXV0s YT0yO2E8ZTsrK2Epe2Zvcih2YXIgbD1pW2FdLGM9dFtsXSx1PW8ubGVuZ3Ro O3U+MSYmbih0W29bdS0yXV0sdFtvW3UtMV1dLGMpPD0wOyl1LT0xLG8ucG9w KCk7Zm9yKG8ucHVzaChsKSx1PXMubGVuZ3RoO3U+MSYmbih0W3NbdS0yXV0s dFtzW3UtMV1dLGMpPj0wOyl1LT0xLHMucG9wKCk7cy5wdXNoKGwpfWZvcih2 YXIgcj1uZXcgQXJyYXkocy5sZW5ndGgrby5sZW5ndGgtMiksaD0wLGE9MCxm PW8ubGVuZ3RoO2E8ZjsrK2EpcltoKytdPW9bYV07Zm9yKHZhciBwPXMubGVu Z3RoLTI7cD4wOy0tcClyW2grK109c1twXTtyZXR1cm4gcn07dmFyIG49dCgi cm9idXN0LW9yaWVudGF0aW9uIilbM119LHsicm9idXN0LW9yaWVudGF0aW9u Ijo1MDl9XSw0Mzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZXx8KGU9dCx0PXdpbmRvdyk7dmFyIHI9 MCxhPTAsaT0wLG89e3NoaWZ0OiExLGFsdDohMSxjb250cm9sOiExLG1ldGE6 ITF9LHM9ITE7ZnVuY3Rpb24gbCh0KXt2YXIgZT0hMTtyZXR1cm4iYWx0S2V5 ImluIHQmJihlPWV8fHQuYWx0S2V5IT09by5hbHQsby5hbHQ9ISF0LmFsdEtl eSksInNoaWZ0S2V5ImluIHQmJihlPWV8fHQuc2hpZnRLZXkhPT1vLnNoaWZ0 LG8uc2hpZnQ9ISF0LnNoaWZ0S2V5KSwiY3RybEtleSJpbiB0JiYoZT1lfHx0 LmN0cmxLZXkhPT1vLmNvbnRyb2wsby5jb250cm9sPSEhdC5jdHJsS2V5KSwi bWV0YUtleSJpbiB0JiYoZT1lfHx0Lm1ldGFLZXkhPT1vLm1ldGEsby5tZXRh PSEhdC5tZXRhS2V5KSxlfWZ1bmN0aW9uIGModCxzKXt2YXIgYz1uLngocyks dT1uLnkocyk7ImJ1dHRvbnMiaW4gcyYmKHQ9MHxzLmJ1dHRvbnMpLCh0IT09 cnx8YyE9PWF8fHUhPT1pfHxsKHMpKSYmKHI9MHx0LGE9Y3x8MCxpPXV8fDAs ZSYmZShyLGEsaSxvKSl9ZnVuY3Rpb24gdSh0KXtjKDAsdCl9ZnVuY3Rpb24g aCgpeyhyfHxhfHxpfHxvLnNoaWZ0fHxvLmFsdHx8by5tZXRhfHxvLmNvbnRy b2wpJiYoYT1pPTAscj0wLG8uc2hpZnQ9by5hbHQ9by5jb250cm9sPW8ubWV0 YT0hMSxlJiZlKDAsMCwwLG8pKX1mdW5jdGlvbiBmKHQpe2wodCkmJmUmJmUo cixhLGksbyl9ZnVuY3Rpb24gcCh0KXswPT09bi5idXR0b25zKHQpP2MoMCx0 KTpjKHIsdCl9ZnVuY3Rpb24gZCh0KXtjKHJ8bi5idXR0b25zKHQpLHQpfWZ1 bmN0aW9uIGcodCl7YyhyJn5uLmJ1dHRvbnModCksdCl9ZnVuY3Rpb24gdigp e3N8fChzPSEwLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixwKSx0 LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsZCksdC5hZGRFdmVudExp c3RlbmVyKCJtb3VzZXVwIixnKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl bGVhdmUiLHUpLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsdSks dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsdSksdC5hZGRFdmVudExp c3RlbmVyKCJtb3VzZW92ZXIiLHUpLHQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1 ciIsaCksdC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsZiksdC5hZGRFdmVu dExpc3RlbmVyKCJrZXlkb3duIixmKSx0LmFkZEV2ZW50TGlzdGVuZXIoImtl eXByZXNzIixmKSx0IT09d2luZG93JiYod2luZG93LmFkZEV2ZW50TGlzdGVu ZXIoImJsdXIiLGgpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIs Ziksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGYpLHdpbmRv dy5hZGRFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIsZikpKX12KCk7dmFyIG09 e2VsZW1lbnQ6dH07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG0s e2VuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBzfSxzZXQ6ZnVuY3Rp b24oZSl7ZT92KCk6cyYmKHM9ITEsdC5yZW1vdmVFdmVudExpc3RlbmVyKCJt b3VzZW1vdmUiLHApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du IixkKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGcpLHQucmVt b3ZlRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsdSksdC5yZW1vdmVFdmVu dExpc3RlbmVyKCJtb3VzZWVudGVyIix1KSx0LnJlbW92ZUV2ZW50TGlzdGVu ZXIoIm1vdXNlb3V0Iix1KSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNl b3ZlciIsdSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixoKSx0LnJl bW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIixmKSx0LnJlbW92ZUV2ZW50TGlz dGVuZXIoImtleWRvd24iLGYpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5 cHJlc3MiLGYpLHQhPT13aW5kb3cmJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0 ZW5lcigiYmx1ciIsaCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtl eXVwIixmKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIs Ziksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXByZXNzIixmKSkp fSxlbnVtZXJhYmxlOiEwfSxidXR0b25zOntnZXQ6ZnVuY3Rpb24oKXtyZXR1 cm4gcn0sZW51bWVyYWJsZTohMH0seDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu IGF9LGVudW1lcmFibGU6ITB9LHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBp fSxlbnVtZXJhYmxlOiEwfSxtb2RzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g b30sZW51bWVyYWJsZTohMH19KSxtfTt2YXIgbj10KCJtb3VzZS1ldmVudCIp fSx7Im1vdXNlLWV2ZW50Ijo0Mzl9XSw0Mzg6W2Z1bmN0aW9uKHQsZSxyKXt2 YXIgbj17bGVmdDowLHRvcDowfTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIp e2U9ZXx8dC5jdXJyZW50VGFyZ2V0fHx0LnNyY0VsZW1lbnQsQXJyYXkuaXNB cnJheShyKXx8KHI9WzAsMF0pO3ZhciBhPXQuY2xpZW50WHx8MCxpPXQuY2xp ZW50WXx8MCxvPShzPWUscz09PXdpbmRvd3x8cz09PWRvY3VtZW50fHxzPT09 ZG9jdW1lbnQuYm9keT9uOnMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3Zh ciBzO3JldHVybiByWzBdPWEtby5sZWZ0LHJbMV09aS1vLnRvcCxyfX0se31d LDQzOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu KHQpe3JldHVybiB0LnRhcmdldHx8dC5zcmNFbGVtZW50fHx3aW5kb3d9ci5i dXR0b25zPWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgdCl7aWYo ImJ1dHRvbnMiaW4gdClyZXR1cm4gdC5idXR0b25zO2lmKCJ3aGljaCJpbiB0 KXtpZigyPT09KGU9dC53aGljaCkpcmV0dXJuIDQ7aWYoMz09PWUpcmV0dXJu IDI7aWYoZT4wKXJldHVybiAxPDxlLTF9ZWxzZSBpZigiYnV0dG9uImluIHQp e3ZhciBlO2lmKDE9PT0oZT10LmJ1dHRvbikpcmV0dXJuIDQ7aWYoMj09PWUp cmV0dXJuIDI7aWYoZT49MClyZXR1cm4gMTw8ZX19cmV0dXJuIDB9LHIuZWxl bWVudD1uLHIueD1mdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQp e2lmKCJvZmZzZXRYImluIHQpcmV0dXJuIHQub2Zmc2V0WDt2YXIgZT1uKHQp LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiB0LmNsaWVudFgtZS5s ZWZ0fXJldHVybiAwfSxyLnk9ZnVuY3Rpb24odCl7aWYoIm9iamVjdCI9PXR5 cGVvZiB0KXtpZigib2Zmc2V0WSJpbiB0KXJldHVybiB0Lm9mZnNldFk7dmFy IGU9bih0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gdC5jbGll bnRZLWUudG9wfXJldHVybiAwfX0se31dLDQ0MDpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0by1weCIpO2UuZXhwb3J0cz1mdW5j dGlvbih0LGUscil7ImZ1bmN0aW9uIj09dHlwZW9mIHQmJihyPSEhZSxlPXQs dD13aW5kb3cpO3ZhciBhPW4oImV4Iix0KSxpPWZ1bmN0aW9uKHQpe3ImJnQu cHJldmVudERlZmF1bHQoKTt2YXIgbj10LmRlbHRhWHx8MCxpPXQuZGVsdGFZ fHwwLG89dC5kZWx0YVp8fDAscz10LmRlbHRhTW9kZSxsPTE7c3dpdGNoKHMp e2Nhc2UgMTpsPWE7YnJlYWs7Y2FzZSAyOmw9d2luZG93LmlubmVySGVpZ2h0 fWlmKGkqPWwsbyo9bCwobio9bCl8fGl8fG8pcmV0dXJuIGUobixpLG8sdCl9 O3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIixpKSxpfX0seyJ0 by1weCI6NTM4fV0sNDQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoInR5cGVkYXJyYXktcG9vbCIpO2Z1bmN0aW9uIGEodCl7cmV0 dXJuImEiK3R9ZnVuY3Rpb24gaSh0KXtyZXR1cm4iZCIrdH1mdW5jdGlvbiBv KHQsZSl7cmV0dXJuImMiK3QrIl8iK2V9ZnVuY3Rpb24gcyh0KXtyZXR1cm4i cyIrdH1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuInQiK3QrIl8iK2V9ZnVuY3Rp b24gYyh0KXtyZXR1cm4ibyIrdH1mdW5jdGlvbiB1KHQpe3JldHVybiJ4Iit0 fWZ1bmN0aW9uIGgodCl7cmV0dXJuInAiK3R9ZnVuY3Rpb24gZih0LGUpe3Jl dHVybiJkIit0KyJfIitlfWZ1bmN0aW9uIHAodCl7cmV0dXJuImkiK3R9ZnVu Y3Rpb24gZCh0LGUpe3JldHVybiJ1Iit0KyJfIitlfWZ1bmN0aW9uIGcodCl7 cmV0dXJuImIiK3R9ZnVuY3Rpb24gdih0KXtyZXR1cm4ieSIrdH1mdW5jdGlv biBtKHQpe3JldHVybiJlIit0fWZ1bmN0aW9uIHkodCl7cmV0dXJuInYiK3R9 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dGhyb3cgbmV3 IEVycm9yKCJuZGFycmF5LWV4dHJhY3QtY29udG91cjogIit0KX0ib2JqZWN0 IiE9dHlwZW9mIHQmJmUoIk11c3Qgc3BlY2lmeSBhcmd1bWVudHMiKTt2YXIg cj10Lm9yZGVyO0FycmF5LmlzQXJyYXkocil8fGUoIk11c3Qgc3BlY2lmeSBv cmRlciIpO3ZhciBBPXQuYXJyYXlBcmd1bWVudHN8fDE7QTwxJiZlKCJNdXN0 IGhhdmUgYXQgbGVhc3Qgb25lIGFycmF5IGFyZ3VtZW50Iik7dmFyIFM9dC5z Y2FsYXJBcmd1bWVudHN8fDA7UzwwJiZlKCJTY2FsYXIgYXJnIGNvdW50IG11 c3QgYmUgPiAwIik7ImZ1bmN0aW9uIiE9dHlwZW9mIHQudmVydGV4JiZlKCJN dXN0IHNwZWNpZnkgdmVydGV4IGNyZWF0aW9uIGZ1bmN0aW9uIik7ImZ1bmN0 aW9uIiE9dHlwZW9mIHQuY2VsbCYmZSgiTXVzdCBzcGVjaWZ5IGNlbGwgY3Jl YXRpb24gZnVuY3Rpb24iKTsiZnVuY3Rpb24iIT10eXBlb2YgdC5waGFzZSYm ZSgiTXVzdCBzcGVjaWZ5IHBoYXNlIGZ1bmN0aW9uIik7Zm9yKHZhciBFPXQu Z2V0dGVyc3x8W10sTD1uZXcgQXJyYXkoQSksQz0wO0M8QTsrK0MpRS5pbmRl eE9mKEMpPj0wP0xbQ109ITA6TFtDXT0hMTtyZXR1cm4gZnVuY3Rpb24odCxl LHIsQSxTLEUpe3ZhciBMPUUubGVuZ3RoLEM9Uy5sZW5ndGg7aWYoQzwyKXRo cm93IG5ldyBFcnJvcigibmRhcnJheS1leHRyYWN0LWNvbnRvdXI6IERpbWVu c2lvbiBtdXN0IGJlIGF0IGxlYXN0IDIiKTtmb3IodmFyIFA9ImV4dHJhY3RD b250b3VyIitTLmpvaW4oIl8iKSxPPVtdLHo9W10sST1bXSxEPTA7RDxMOysr RClJLnB1c2goYShEKSk7Zm9yKHZhciBEPTA7RDxBOysrRClJLnB1c2godShE KSk7Zm9yKHZhciBEPTA7RDxDOysrRCl6LnB1c2gocyhEKSsiPSIrYSgwKSsi LnNoYXBlWyIrRCsiXXwwIik7Zm9yKHZhciBEPTA7RDxMOysrRCl7ei5wdXNo KGkoRCkrIj0iK2EoRCkrIi5kYXRhIixjKEQpKyI9IithKEQpKyIub2Zmc2V0 fDAiKTtmb3IodmFyIFI9MDtSPEM7KytSKXoucHVzaChsKEQsUikrIj0iK2Eo RCkrIi5zdHJpZGVbIitSKyJdfDAiKX1mb3IodmFyIEQ9MDtEPEw7KytEKXt6 LnB1c2goaChEKSsiPSIrYyhEKSksei5wdXNoKG8oRCwwKSk7Zm9yKHZhciBS PTE7UjwxPDxDOysrUil7Zm9yKHZhciBGPVtdLEI9MDtCPEM7KytCKVImMTw8 QiYmRi5wdXNoKCItIitsKEQsQikpO3oucHVzaChmKEQsUikrIj0oIitGLmpv aW4oIiIpKyIpfDAiKSx6LnB1c2gobyhELFIpKyI9MCIpfX1mb3IodmFyIEQ9 MDtEPEw7KytEKWZvcih2YXIgUj0wO1I8QzsrK1Ipe3ZhciBOPVtsKEQsU1tS XSldO1I+MCYmTi5wdXNoKGwoRCxTW1ItMV0pKyIqIitzKFNbUi0xXSkpLHou cHVzaChkKEQsU1tSXSkrIj0oIitOLmpvaW4oIi0iKSsiKXwwIil9Zm9yKHZh ciBEPTA7RDxDOysrRCl6LnB1c2gocChEKSsiPTAiKTt6LnB1c2goXysiPTAi KTtmb3IodmFyIGo9WyIyIl0sRD1DLTI7RD49MDstLUQpai5wdXNoKHMoU1tE XSkpO3oucHVzaCh3KyI9KCIrai5qb2luKCIqIikrIil8MCIsYisiPW1hbGxv Y1VpbnQzMigiK3crIikiLHgrIj1tYWxsb2NVaW50MzIoIit3KyIpIixrKyI9 MCIpLHoucHVzaChnKDApKyI9MCIpO2Zvcih2YXIgUj0xO1I8MTw8QzsrK1Ip e2Zvcih2YXIgVj1bXSxVPVtdLEI9MDtCPEM7KytCKVImMTw8QiYmKDA9PT1V Lmxlbmd0aD9WLnB1c2goIjEiKTpWLnVuc2hpZnQoVS5qb2luKCIqIikpKSxV LnB1c2gocyhTW0JdKSk7dmFyIHE9IiI7VlswXS5pbmRleE9mKHMoU1tDLTJd KSk8MCYmKHE9Ii0iKTt2YXIgSD1NKEMsUixTKTt6LnB1c2gobShIKSsiPSgt IitWLmpvaW4oIi0iKSsiKXwwIix2KEgpKyI9KCIrcStWLmpvaW4oIi0iKSsi KXwwIixnKEgpKyI9MCIpfWZ1bmN0aW9uIEcodCxlKXtPLnB1c2goImZvcigi LHAoU1t0XSksIj0iLGUsIjsiLHAoU1t0XSksIjwiLHMoU1t0XSksIjsiLCIr KyIscChTW3RdKSwiKXsiKX1mdW5jdGlvbiBZKHQpe2Zvcih2YXIgZT0wO2U8 TDsrK2UpTy5wdXNoKGgoZSksIis9IixkKGUsU1t0XSksIjsiKTtPLnB1c2go In0iKX1mdW5jdGlvbiBXKCl7Zm9yKHZhciB0PTE7dDwxPDxDOysrdClPLnB1 c2goVCwiPSIsbSh0KSwiOyIsbSh0KSwiPSIsdih0KSwiOyIsdih0KSwiPSIs VCwiOyIpfXoucHVzaCh5KDApKyI9MCIsVCsiPTAiKSxmdW5jdGlvbiB0KGUs cil7aWYoZTwwKXJldHVybiB2b2lkIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0w O2U8TDsrK2UpRVtlXT9PLnB1c2gobyhlLDApLCI9IixpKGUpLCIuZ2V0KCIs aChlKSwiKTsiKTpPLnB1c2gobyhlLDApLCI9IixpKGUpLCJbIixoKGUpLCJd OyIpO2Zvcih2YXIgcj1bXSxlPTA7ZTxMOysrZSlyLnB1c2gobyhlLDApKTtm b3IodmFyIGU9MDtlPEE7KytlKXIucHVzaCh1KGUpKTtPLnB1c2goZygwKSwi PSIsYiwiWyIsaywiXT1waGFzZSgiLHIuam9pbigpLCIpOyIpO2Zvcih2YXIg bj0xO248MTw8QzsrK24pTy5wdXNoKGcobiksIj0iLGIsIlsiLGssIisiLG0o biksIl07Iik7Zm9yKHZhciBhPVtdLG49MTtuPDE8PEM7KytuKWEucHVzaCgi KCIrZygwKSsiIT09IitnKG4pKyIpIik7Ty5wdXNoKCJpZigiLGEuam9pbigi fHwiKSwiKXsiKTtmb3IodmFyIHM9W10sZT0wO2U8QzsrK2Upcy5wdXNoKHAo ZSkpO2Zvcih2YXIgZT0wO2U8TDsrK2Upe3MucHVzaChvKGUsMCkpO2Zvcih2 YXIgbj0xO248MTw8QzsrK24pRVtlXT9PLnB1c2gobyhlLG4pLCI9IixpKGUp LCIuZ2V0KCIsaChlKSwiKyIsZihlLG4pLCIpOyIpOk8ucHVzaChvKGUsbiks Ij0iLGkoZSksIlsiLGgoZSksIisiLGYoZSxuKSwiXTsiKSxzLnB1c2gobyhl LG4pKX1mb3IodmFyIGU9MDtlPDE8PEM7KytlKXMucHVzaChnKGUpKTtmb3Io dmFyIGU9MDtlPEE7KytlKXMucHVzaCh1KGUpKTtPLnB1c2goInZlcnRleCgi LHMuam9pbigpLCIpOyIseSgwKSwiPSIseCwiWyIsaywiXT0iLF8sIisrOyIp O2Zvcih2YXIgbD0oMTw8QyktMSxjPWcobCksbj0wO248QzsrK24paWYoMD09 KHQmfigxPDxuKSkpe2Zvcih2YXIgZD1sXjE8PG4sdj1nKGQpLHc9W10sVD1k O1Q+MDtUPVQtMSZkKXcucHVzaCh4KyJbIitrKyIrIittKFQpKyJdIik7dy5w dXNoKHkoMCkpO2Zvcih2YXIgVD0wO1Q8TDsrK1QpMSZuP3cucHVzaChvKFQs bCksbyhULGQpKTp3LnB1c2gobyhULGQpLG8oVCxsKSk7MSZuP3cucHVzaChj LHYpOncucHVzaCh2LGMpO2Zvcih2YXIgVD0wO1Q8QTsrK1Qpdy5wdXNoKHUo VCkpO08ucHVzaCgiaWYoIixjLCIhPT0iLHYsIil7IiwiZmFjZSgiLHcuam9p bigpLCIpfSIpfU8ucHVzaCgifSIsaywiKz0xOyIpfShyKTshZnVuY3Rpb24o dCl7Zm9yKHZhciBlPXQtMTtlPj0wOy0tZSlHKGUsMCk7Zm9yKHZhciByPVtd LGU9MDtlPEw7KytlKUVbZV0/ci5wdXNoKGkoZSkrIi5nZXQoIitoKGUpKyIp Iik6ci5wdXNoKGkoZSkrIlsiK2goZSkrIl0iKTtmb3IodmFyIGU9MDtlPEE7 KytlKXIucHVzaCh1KGUpKTtPLnB1c2goYiwiWyIsaywiKytdPXBoYXNlKCIs ci5qb2luKCksIik7Iik7Zm9yKHZhciBlPTA7ZTx0OysrZSlZKGUpO2Zvcih2 YXIgbj0wO248TDsrK24pTy5wdXNoKGgobiksIis9IixkKG4sU1t0XSksIjsi KX0oZSk7Ty5wdXNoKCJpZigiLHMoU1tlXSksIj4wKXsiLHAoU1tlXSksIj0x OyIpO3QoZS0xLHJ8MTw8U1tlXSk7Zm9yKHZhciBuPTA7bjxMOysrbilPLnB1 c2goaChuKSwiKz0iLGQobixTW2VdKSwiOyIpO2U9PT1DLTEmJihPLnB1c2go aywiPTA7IiksVygpKTtHKGUsMik7dChlLTEscik7ZT09PUMtMSYmKE8ucHVz aCgiaWYoIixwKFNbQy0xXSksIiYxKXsiLGssIj0wO30iKSxXKCkpO1koZSk7 Ty5wdXNoKCJ9Iil9KEMtMSwwKSxPLnB1c2goImZyZWVVaW50MzIoIix4LCIp O2ZyZWVVaW50MzIoIixiLCIpOyIpO3ZhciBYPVsiJ3VzZSBzdHJpY3QnOyIs ImZ1bmN0aW9uICIsUCwiKCIsSS5qb2luKCksIil7IiwidmFyICIsei5qb2lu KCksIjsiLE8uam9pbigiIiksIn0iLCJyZXR1cm4gIixQXS5qb2luKCIiKTty ZXR1cm4gbmV3IEZ1bmN0aW9uKCJ2ZXJ0ZXgiLCJmYWNlIiwicGhhc2UiLCJt YWxsb2NVaW50MzIiLCJmcmVlVWludDMyIixYKSh0LGUscixuLm1hbGxvY1Vp bnQzMixuLmZyZWVVaW50MzIpfSh0LnZlcnRleCx0LmNlbGwsdC5waGFzZSxT LHIsTCl9O3ZhciB4PSJWIixiPSJQIixfPSJOIix3PSJRIixrPSJYIixUPSJU IjtmdW5jdGlvbiBNKHQsZSxyKXtmb3IodmFyIG49MCxhPTA7YTx0OysrYSll JjE8PGEmJihufD0xPDxyW2FdKTtyZXR1cm4gbn19LHsidHlwZWRhcnJheS1w b29sIjo1NDR9XSw0NDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiY3dpc2UvbGliL3dyYXBwZXIiKSh7YXJnczpbImluZGV4Iiwi YXJyYXkiLCJzY2FsYXIiXSxwcmU6e2JvZHk6Int9IixhcmdzOltdLHRoaXNW YXJzOltdLGxvY2FsVmFyczpbXX0sYm9keTp7Ym9keToie19pbmxpbmVfMV9h cmcxXz1faW5saW5lXzFfYXJnMl8uYXBwbHkodm9pZCAwLF9pbmxpbmVfMV9h cmcwXyl9IixhcmdzOlt7bmFtZToiX2lubGluZV8xX2FyZzBfIixsdmFsdWU6 ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzFfYXJnMV8i LGx2YWx1ZTohMCxydmFsdWU6ITEsY291bnQ6MX0se25hbWU6Il9pbmxpbmVf MV9hcmcyXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sdGhpc1Zh cnM6W10sbG9jYWxWYXJzOltdfSxwb3N0Ontib2R5OiJ7fSIsYXJnczpbXSx0 aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGRlYnVnOiExLGZ1bmNOYW1lOiJj d2lzZSIsYmxvY2tTaXplOjY0fSk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 cmV0dXJuIG4odCxlKSx0fX0seyJjd2lzZS9saWIvd3JhcHBlciI6MTUxfV0s NDQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscil7aWYoQXJyYXkuaXNBcnJheShyKSl7aWYoci5sZW5n dGghPT1lLmRpbWVuc2lvbil0aHJvdyBuZXcgRXJyb3IoIm5kYXJyYXktZ3Jh ZGllbnQ6IGludmFsaWQgYm91bmRhcnkgY29uZGl0aW9ucyIpfWVsc2Ugcj1u KGUuZGltZW5zaW9uLCJzdHJpbmciPT10eXBlb2Ygcj9yOiJjbGFtcCIpO2lm KHQuZGltZW5zaW9uIT09ZS5kaW1lbnNpb24rMSl0aHJvdyBuZXcgRXJyb3Io Im5kYXJyYXktZ3JhZGllbnQ6IG91dHB1dCBkaW1lbnNpb24gbXVzdCBiZSAr MSBpbnB1dCBkaW1lbnNpb24iKTtpZih0LnNoYXBlW2UuZGltZW5zaW9uXSE9 PWUuZGltZW5zaW9uKXRocm93IG5ldyBFcnJvcigibmRhcnJheS1ncmFkaWVu dDogb3V0cHV0IHNoYXBlIG11c3QgbWF0Y2ggaW5wdXQgc2hhcGUiKTtmb3Io dmFyIGE9MDthPGUuZGltZW5zaW9uOysrYSlpZih0LnNoYXBlW2FdIT09ZS5z aGFwZVthXSl0aHJvdyBuZXcgRXJyb3IoIm5kYXJyYXktZ3JhZGllbnQ6IHNo YXBlIG1pc21hdGNoIik7aWYoMD09PWUuc2l6ZSlyZXR1cm4gdDtpZihlLmRp bWVuc2lvbjw9MClyZXR1cm4gdC5zZXQoMCksdDtyZXR1cm4gZnVuY3Rpb24o dCl7dmFyIGU9dC5qb2luKCk7aWYobT1vW2VdKXJldHVybiBtO3ZhciByPXQu bGVuZ3RoLG49WyJmdW5jdGlvbiBncmFkaWVudChkc3Qsc3JjKXt2YXIgcz1z cmMuc2hhcGUuc2xpY2UoKTsiXTtmdW5jdGlvbiBhKGUpe2Zvcih2YXIgYT1y LWUubGVuZ3RoLGk9W10sbz1bXSxzPVtdLGw9MDtsPHI7KytsKWUuaW5kZXhP ZihsKzEpPj0wP3MucHVzaCgiMCIpOmUuaW5kZXhPZigtKGwrMSkpPj0wP3Mu cHVzaCgic1siK2wrIl0tMSIpOihzLnB1c2goIi0xIiksaS5wdXNoKCIxIiks by5wdXNoKCJzWyIrbCsiXS0yIikpO3ZhciBjPSIubG8oIitpLmpvaW4oKSsi KS5oaSgiK28uam9pbigpKyIpIjtpZigwPT09aS5sZW5ndGgmJihjPSIiKSxh PjApe24ucHVzaCgiaWYoMSIpO2Zvcih2YXIgbD0wO2w8cjsrK2wpZS5pbmRl eE9mKGwrMSk+PTB8fGUuaW5kZXhPZigtKGwrMSkpPj0wfHxuLnB1c2goIiYm c1siLGwsIl0+MiIpO24ucHVzaCgiKXtncmFkIixhLCIoc3JjLnBpY2soIixz LmpvaW4oKSwiKSIsYyk7Zm9yKHZhciBsPTA7bDxyOysrbCllLmluZGV4T2Yo bCsxKT49MHx8ZS5pbmRleE9mKC0obCsxKSk+PTB8fG4ucHVzaCgiLGRzdC5w aWNrKCIscy5qb2luKCksIiwiLGwsIikiLGMpO24ucHVzaCgiKTsiKX1mb3Io dmFyIGw9MDtsPGUubGVuZ3RoOysrbCl7dmFyIHU9TWF0aC5hYnMoZVtsXSkt MSxoPSJkc3QucGljaygiK3Muam9pbigpKyIsIit1KyIpIitjO3N3aXRjaCh0 W3VdKXtjYXNlImNsYW1wIjp2YXIgZj1zLnNsaWNlKCkscD1zLnNsaWNlKCk7 ZVtsXTwwP2ZbdV09InNbIit1KyJdLTIiOnBbdV09IjEiLDA9PT1hP24ucHVz aCgiaWYoc1siLHUsIl0+MSl7ZHN0LnNldCgiLHMuam9pbigpLCIsIix1LCIs MC41KihzcmMuZ2V0KCIsZi5qb2luKCksIiktc3JjLmdldCgiLHAuam9pbigp LCIpKSl9ZWxzZXtkc3Quc2V0KCIscy5qb2luKCksIiwiLHUsIiwwKX07Iik6 bi5wdXNoKCJpZihzWyIsdSwiXT4xKXtkaWZmKCIsaCwiLHNyYy5waWNrKCIs Zi5qb2luKCksIikiLGMsIixzcmMucGljaygiLHAuam9pbigpLCIpIixjLCIp O31lbHNle3plcm8oIixoLCIpO307Iik7YnJlYWs7Y2FzZSJtaXJyb3IiOjA9 PT1hP24ucHVzaCgiZHN0LnNldCgiLHMuam9pbigpLCIsIix1LCIsMCk7Iik6 bi5wdXNoKCJ6ZXJvKCIsaCwiKTsiKTticmVhaztjYXNlIndyYXAiOnZhciBk PXMuc2xpY2UoKSxnPXMuc2xpY2UoKTtlW2xdPDA/KGRbdV09InNbIit1KyJd LTIiLGdbdV09IjAiKTooZFt1XT0ic1siK3UrIl0tMSIsZ1t1XT0iMSIpLDA9 PT1hP24ucHVzaCgiaWYoc1siLHUsIl0+Mil7ZHN0LnNldCgiLHMuam9pbigp LCIsIix1LCIsMC41KihzcmMuZ2V0KCIsZC5qb2luKCksIiktc3JjLmdldCgi LGcuam9pbigpLCIpKSl9ZWxzZXtkc3Quc2V0KCIscy5qb2luKCksIiwiLHUs IiwwKX07Iik6bi5wdXNoKCJpZihzWyIsdSwiXT4yKXtkaWZmKCIsaCwiLHNy Yy5waWNrKCIsZC5qb2luKCksIikiLGMsIixzcmMucGljaygiLGcuam9pbigp LCIpIixjLCIpO31lbHNle3plcm8oIixoLCIpO307Iik7YnJlYWs7ZGVmYXVs dDp0aHJvdyBuZXcgRXJyb3IoIm5kYXJyYXktZ3JhZGllbnQ6IEludmFsaWQg Ym91bmRhcnkgY29uZGl0aW9uIil9fWE+MCYmbi5wdXNoKCJ9OyIpfWZvcih2 YXIgcz0wO3M8MTw8cjsrK3Mpe2Zvcih2YXIgaD1bXSxmPTA7ZjxyOysrZilz JjE8PGYmJmgucHVzaChmKzEpO2Zvcih2YXIgcD0wO3A8MTw8aC5sZW5ndGg7 KytwKXtmb3IodmFyIGQ9aC5zbGljZSgpLGY9MDtmPGgubGVuZ3RoOysrZilw JjE8PGYmJihkW2ZdPS1kW2ZdKTthKGQpfX1uLnB1c2goInJldHVybiBkc3Q7 fTtyZXR1cm4gZ3JhZGllbnQiKTtmb3IodmFyIGc9WyJkaWZmIiwiemVybyJd LHY9W2wsY10scz0xO3M8PXI7KytzKWcucHVzaCgiZ3JhZCIrcyksdi5wdXNo KHUocykpO2cucHVzaChuLmpvaW4oIiIpKTt2YXIgbT1GdW5jdGlvbi5hcHBs eSh2b2lkIDAsZykuYXBwbHkodm9pZCAwLHYpO3JldHVybiBpW2VdPW0sbX0o cikodCxlKX07dmFyIG49dCgiZHVwIiksYT10KCJjd2lzZS1jb21waWxlciIp LGk9e30sbz17fSxzPXtib2R5OiIiLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9j YWxWYXJzOltdfSxsPWEoe2FyZ3M6WyJhcnJheSIsImFycmF5IiwiYXJyYXki XSxwcmU6cyxwb3N0OnMsYm9keTp7YXJnczpbe25hbWU6Im91dCIsbHZhbHVl OiEwLHJ2YWx1ZTohMSxjb3VudDoxfSx7bmFtZToibGVmdCIsbHZhbHVlOiEx LHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToicmlnaHQiLGx2YWx1ZTohMSxy dmFsdWU6ITAsY291bnQ6MX1dLGJvZHk6Im91dD0wLjUqKGxlZnQtcmlnaHQp Iix0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119LGZ1bmNOYW1lOiJjZGlmZiJ9 KSxjPWEoe2FyZ3M6WyJhcnJheSJdLHByZTpzLHBvc3Q6cyxib2R5Onthcmdz Olt7bmFtZToib3V0IixsdmFsdWU6ITAscnZhbHVlOiExLGNvdW50OjF9XSxi b2R5OiJvdXQ9MCIsdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxmdW5jTmFt ZToiemVybyJ9KTtmdW5jdGlvbiB1KHQpe2lmKHQgaW4gaSlyZXR1cm4gaVt0 XTtmb3IodmFyIGU9W10scj0wO3I8dDsrK3IpZS5wdXNoKCJvdXQiLHIsInM9 MC41KihpbnAiLHIsImwtaW5wIixyLCJyKTsiKTt2YXIgbz1bImFycmF5Il0s bD1bImp1bmsiXTtmb3Iocj0wO3I8dDsrK3Ipe28ucHVzaCgiYXJyYXkiKSxs LnB1c2goIm91dCIrcisicyIpO3ZhciBjPW4odCk7Y1tyXT0tMSxvLnB1c2go e2FycmF5OjAsb2Zmc2V0OmMuc2xpY2UoKX0pLGNbcl09MSxvLnB1c2goe2Fy cmF5OjAsb2Zmc2V0OmMuc2xpY2UoKX0pLGwucHVzaCgiaW5wIityKyJsIiwi aW5wIityKyJyIil9cmV0dXJuIGlbdF09YSh7YXJnczpvLHByZTpzLHBvc3Q6 cyxib2R5Ontib2R5OmUuam9pbigiIiksYXJnczpsLm1hcChmdW5jdGlvbih0 KXtyZXR1cm57bmFtZTp0LGx2YWx1ZTowPT09dC5pbmRleE9mKCJvdXQiKSxy dmFsdWU6MD09PXQuaW5kZXhPZigiaW5wIiksY291bnQ6Imp1bmsiIT09dHww fX0pLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZnVuY05hbWU6ImZkVGVt cGxhdGUiK3R9KX19LHsiY3dpc2UtY29tcGlsZXIiOjE0OCxkdXA6MTcyfV0s NDQ0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIm5k YXJyYXktd2FycCIpLGE9dCgiZ2wtbWF0cml4LWludmVydCIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscil7dmFyIGk9ZS5kaW1lbnNpb24sbz1hKFtdLHIp O3JldHVybiBuKHQsZSxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8aTsr K3Ipe3Rbcl09b1soaSsxKSppK3JdO2Zvcih2YXIgbj0wO248aTsrK24pdFty XSs9b1soaSsxKSpuK3JdKmVbbl19dmFyIGE9b1soaSsxKSooaSsxKS0xXTtm b3Iobj0wO248aTsrK24pYSs9b1soaSsxKSpuK2ldKmVbbl07dmFyIHM9MS9h O2ZvcihyPTA7cjxpOysrcil0W3JdKj1zO3JldHVybiB0fSksdH19LHsiZ2wt bWF0cml4LWludmVydCI6MjgwLCJuZGFycmF5LXdhcnAiOjQ1MX1dLDQ0NTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7 dmFyIHI9TWF0aC5mbG9vcihlKSxuPWUtcixhPTA8PXImJnI8dC5zaGFwZVsw XSxpPTA8PXIrMSYmcisxPHQuc2hhcGVbMF07cmV0dXJuKDEtbikqKGE/K3Qu Z2V0KHIpOjApK24qKGk/K3QuZ2V0KHIrMSk6MCl9ZnVuY3Rpb24gYSh0LGUs cil7dmFyIG49TWF0aC5mbG9vcihlKSxhPWUtbixpPTA8PW4mJm48dC5zaGFw ZVswXSxvPTA8PW4rMSYmbisxPHQuc2hhcGVbMF0scz1NYXRoLmZsb29yKHIp LGw9ci1zLGM9MDw9cyYmczx0LnNoYXBlWzFdLHU9MDw9cysxJiZzKzE8dC5z aGFwZVsxXSxoPWkmJmM/dC5nZXQobixzKTowLGY9aSYmdT90LmdldChuLHMr MSk6MDtyZXR1cm4oMS1sKSooKDEtYSkqaCthKihvJiZjP3QuZ2V0KG4rMSxz KTowKSkrbCooKDEtYSkqZithKihvJiZ1P3QuZ2V0KG4rMSxzKzEpOjApKX1m dW5jdGlvbiBpKHQsZSxyLG4pe3ZhciBhPU1hdGguZmxvb3IoZSksaT1lLWEs bz0wPD1hJiZhPHQuc2hhcGVbMF0scz0wPD1hKzEmJmErMTx0LnNoYXBlWzBd LGw9TWF0aC5mbG9vcihyKSxjPXItbCx1PTA8PWwmJmw8dC5zaGFwZVsxXSxo PTA8PWwrMSYmbCsxPHQuc2hhcGVbMV0sZj1NYXRoLmZsb29yKG4pLHA9bi1m LGQ9MDw9ZiYmZjx0LnNoYXBlWzJdLGc9MDw9ZisxJiZmKzE8dC5zaGFwZVsy XSx2PW8mJnUmJmQ/dC5nZXQoYSxsLGYpOjAsbT1vJiZoJiZkP3QuZ2V0KGEs bCsxLGYpOjAseT1zJiZ1JiZkP3QuZ2V0KGErMSxsLGYpOjAseD1zJiZoJiZk P3QuZ2V0KGErMSxsKzEsZik6MCxiPW8mJnUmJmc/dC5nZXQoYSxsLGYrMSk6 MCxfPW8mJmgmJmc/dC5nZXQoYSxsKzEsZisxKTowO3JldHVybigxLXApKigo MS1jKSooKDEtaSkqditpKnkpK2MqKCgxLWkpKm0raSp4KSkrcCooKDEtYykq KCgxLWkpKmIraSoocyYmdSYmZz90LmdldChhKzEsbCxmKzEpOjApKStjKigo MS1pKSpfK2kqKHMmJmgmJmc/dC5nZXQoYSsxLGwrMSxmKzEpOjApKSl9ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3N3aXRjaCh0LnNoYXBlLmxlbmd0 aCl7Y2FzZSAwOnJldHVybiAwO2Nhc2UgMTpyZXR1cm4gbih0LGUpO2Nhc2Ug MjpyZXR1cm4gYSh0LGUscik7Y2FzZSAzOnJldHVybiBpKHQsZSxyLG8pO2Rl ZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlLHIsbj0wfHQuc2hhcGUu bGVuZ3RoLGE9bmV3IEFycmF5KG4pLGk9bmV3IEFycmF5KG4pLG89bmV3IEFy cmF5KG4pLHM9bmV3IEFycmF5KG4pO2ZvcihlPTA7ZTxuOysrZSlyPSthcmd1 bWVudHNbZSsxXSxhW2VdPU1hdGguZmxvb3IociksaVtlXT1yLWFbZV0sb1tl XT0wPD1hW2VdJiZhW2VdPHQuc2hhcGVbZV0sc1tlXT0wPD1hW2VdKzEmJmFb ZV0rMTx0LnNoYXBlW2VdO3ZhciBsLGMsdSxoPTA7dDpmb3IoZT0wO2U8MTw8 bjsrK2Upe2ZvcihjPTEsdT10Lm9mZnNldCxsPTA7bDxuOysrbClpZihlJjE8 PGwpe2lmKCFzW2xdKWNvbnRpbnVlIHQ7Yyo9aVtsXSx1Kz10LnN0cmlkZVts XSooYVtsXSsxKX1lbHNle2lmKCFvW2xdKWNvbnRpbnVlIHQ7Yyo9MS1pW2xd LHUrPXQuc3RyaWRlW2xdKmFbbF19aCs9Yyp0LmRhdGFbdV19cmV0dXJuIGh9 LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX0sZS5leHBvcnRzLmQxPW4sZS5l eHBvcnRzLmQyPWEsZS5leHBvcnRzLmQzPWl9LHt9XSw0NDY6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiY3dpc2UtY29tcGlsZXIi KSxhPXtib2R5OiIiLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltd fTtmdW5jdGlvbiBpKHQpe2lmKCF0KXJldHVybiBhO2Zvcih2YXIgZT0wO2U8 dC5hcmdzLmxlbmd0aDsrK2Upe3ZhciByPXQuYXJnc1tlXTt0LmFyZ3NbZV09 MD09PWU/e25hbWU6cixsdmFsdWU6ITAscnZhbHVlOiEhdC5ydmFsdWUsY291 bnQ6dC5jb3VudHx8MX06e25hbWU6cixsdmFsdWU6ITEscnZhbHVlOiEwLGNv dW50OjF9fXJldHVybiB0LnRoaXNWYXJzfHwodC50aGlzVmFycz1bXSksdC5s b2NhbFZhcnN8fCh0LmxvY2FsVmFycz1bXSksdH1mdW5jdGlvbiBvKHQpe2Zv cih2YXIgZT1bXSxyPTA7cjx0LmFyZ3MubGVuZ3RoOysrcillLnB1c2goImEi K3IpO3JldHVybiBuZXcgRnVuY3Rpb24oIlAiLFsicmV0dXJuIGZ1bmN0aW9u ICIsdC5mdW5jTmFtZSwiX25kYXJyYXlvcHMoIixlLmpvaW4oIiwiKSwiKSB7 UCgiLGUuam9pbigiLCIpLCIpO3JldHVybiBhMH0iXS5qb2luKCIiKSkoZnVu Y3Rpb24odCl7cmV0dXJuIG4oe2FyZ3M6dC5hcmdzLHByZTppKHQucHJlKSxi b2R5OmkodC5ib2R5KSxwb3N0OmkodC5wcm9jKSxmdW5jTmFtZTp0LmZ1bmNO YW1lfSl9KHQpKX12YXIgcz17YWRkOiIrIixzdWI6Ii0iLG11bDoiKiIsZGl2 OiIvIixtb2Q6IiUiLGJhbmQ6IiYiLGJvcjoifCIsYnhvcjoiXiIsbHNoaWZ0 OiI8PCIscnNoaWZ0OiI+PiIscnJzaGlmdDoiPj4+In07IWZ1bmN0aW9uKCl7 Zm9yKHZhciB0IGluIHMpe3ZhciBlPXNbdF07clt0XT1vKHthcmdzOlsiYXJy YXkiLCJhcnJheSIsImFycmF5Il0sYm9keTp7YXJnczpbImEiLCJiIiwiYyJd LGJvZHk6ImE9YiIrZSsiYyJ9LGZ1bmNOYW1lOnR9KSxyW3QrImVxIl09byh7 YXJnczpbImFycmF5IiwiYXJyYXkiXSxib2R5OnthcmdzOlsiYSIsImIiXSxi b2R5OiJhIitlKyI9YiJ9LHJ2YWx1ZTohMCxmdW5jTmFtZTp0KyJlcSJ9KSxy W3QrInMiXT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSIsInNjYWxhciJdLGJv ZHk6e2FyZ3M6WyJhIiwiYiIsInMiXSxib2R5OiJhPWIiK2UrInMifSxmdW5j TmFtZTp0KyJzIn0pLHJbdCsic2VxIl09byh7YXJnczpbImFycmF5Iiwic2Nh bGFyIl0sYm9keTp7YXJnczpbImEiLCJzIl0sYm9keToiYSIrZSsiPXMifSxy dmFsdWU6ITAsZnVuY05hbWU6dCsic2VxIn0pfX0oKTt2YXIgbD17bm90OiIh Iixibm90OiJ+IixuZWc6Ii0iLHJlY2lwOiIxLjAvIn07IWZ1bmN0aW9uKCl7 Zm9yKHZhciB0IGluIGwpe3ZhciBlPWxbdF07clt0XT1vKHthcmdzOlsiYXJy YXkiLCJhcnJheSJdLGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJvZHk6ImE9Iitl KyJiIn0sZnVuY05hbWU6dH0pLHJbdCsiZXEiXT1vKHthcmdzOlsiYXJyYXki XSxib2R5OnthcmdzOlsiYSJdLGJvZHk6ImE9IitlKyJhIn0scnZhbHVlOiEw LGNvdW50OjIsZnVuY05hbWU6dCsiZXEifSl9fSgpO3ZhciBjPXthbmQ6IiYm IixvcjoifHwiLGVxOiI9PT0iLG5lcToiIT09IixsdDoiPCIsZ3Q6Ij4iLGxl cToiPD0iLGdlcToiPj0ifTshZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gYyl7 dmFyIGU9Y1t0XTtyW3RdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5IiwiYXJy YXkiXSxib2R5OnthcmdzOlsiYSIsImIiLCJjIl0sYm9keToiYT1iIitlKyJj In0sZnVuY05hbWU6dH0pLHJbdCsicyJdPW8oe2FyZ3M6WyJhcnJheSIsImFy cmF5Iiwic2NhbGFyIl0sYm9keTp7YXJnczpbImEiLCJiIiwicyJdLGJvZHk6 ImE9YiIrZSsicyJ9LGZ1bmNOYW1lOnQrInMifSksclt0KyJlcSJdPW8oe2Fy Z3M6WyJhcnJheSIsImFycmF5Il0sYm9keTp7YXJnczpbImEiLCJiIl0sYm9k eToiYT1hIitlKyJiIn0scnZhbHVlOiEwLGNvdW50OjIsZnVuY05hbWU6dCsi ZXEifSksclt0KyJzZXEiXT1vKHthcmdzOlsiYXJyYXkiLCJzY2FsYXIiXSxi b2R5OnthcmdzOlsiYSIsInMiXSxib2R5OiJhPWEiK2UrInMifSxydmFsdWU6 ITAsY291bnQ6MixmdW5jTmFtZTp0KyJzZXEifSl9fSgpO3ZhciB1PVsiYWJz IiwiYWNvcyIsImFzaW4iLCJhdGFuIiwiY2VpbCIsImNvcyIsImV4cCIsImZs b29yIiwibG9nIiwicm91bmQiLCJzaW4iLCJzcXJ0IiwidGFuIl07IWZ1bmN0 aW9uKCl7Zm9yKHZhciB0PTA7dDx1Lmxlbmd0aDsrK3Qpe3ZhciBlPXVbdF07 cltlXT1vKHthcmdzOlsiYXJyYXkiLCJhcnJheSJdLHByZTp7YXJnczpbXSxi b2R5OiJ0aGlzX2Y9TWF0aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9k eTp7YXJnczpbImEiLCJiIl0sYm9keToiYT10aGlzX2YoYikiLHRoaXNWYXJz OlsidGhpc19mIl19LGZ1bmNOYW1lOmV9KSxyW2UrImVxIl09byh7YXJnczpb ImFycmF5Il0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0 aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSJdLGJvZHk6ImE9 dGhpc19mKGEpIix0aGlzVmFyczpbInRoaXNfZiJdfSxydmFsdWU6ITAsY291 bnQ6MixmdW5jTmFtZTplKyJlcSJ9KX19KCk7dmFyIGg9WyJtYXgiLCJtaW4i LCJhdGFuMiIsInBvdyJdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8aC5s ZW5ndGg7Kyt0KXt2YXIgZT1oW3RdO3JbZV09byh7YXJnczpbImFycmF5Iiwi YXJyYXkiLCJhcnJheSJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0 aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJnczpbImEiLCJi IiwiYyJdLGJvZHk6ImE9dGhpc19mKGIsYykiLHRoaXNWYXJzOlsidGhpc19m Il19LGZ1bmNOYW1lOmV9KSxyW2UrInMiXT1vKHthcmdzOlsiYXJyYXkiLCJh cnJheSIsInNjYWxhciJdLHByZTp7YXJnczpbXSxib2R5OiJ0aGlzX2Y9TWF0 aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJnczpbImEiLCJi IiwiYyJdLGJvZHk6ImE9dGhpc19mKGIsYykiLHRoaXNWYXJzOlsidGhpc19m Il19LGZ1bmNOYW1lOmUrInMifSkscltlKyJlcSJdPW8oe2FyZ3M6WyJhcnJh eSIsImFycmF5Il0scHJlOnthcmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIr ZSx0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSIsImIiXSxi b2R5OiJhPXRoaXNfZihhLGIpIix0aGlzVmFyczpbInRoaXNfZiJdfSxydmFs dWU6ITAsY291bnQ6MixmdW5jTmFtZTplKyJlcSJ9KSxyW2UrInNlcSJdPW8o e2FyZ3M6WyJhcnJheSIsInNjYWxhciJdLHByZTp7YXJnczpbXSxib2R5OiJ0 aGlzX2Y9TWF0aC4iK2UsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sYm9keTp7YXJn czpbImEiLCJiIl0sYm9keToiYT10aGlzX2YoYSxiKSIsdGhpc1ZhcnM6WyJ0 aGlzX2YiXX0scnZhbHVlOiEwLGNvdW50OjIsZnVuY05hbWU6ZSsic2VxIn0p fX0oKTt2YXIgZj1bImF0YW4yIiwicG93Il07IWZ1bmN0aW9uKCl7Zm9yKHZh ciB0PTA7dDxmLmxlbmd0aDsrK3Qpe3ZhciBlPWZbdF07cltlKyJvcCJdPW8o e2FyZ3M6WyJhcnJheSIsImFycmF5IiwiYXJyYXkiXSxwcmU6e2FyZ3M6W10s Ym9keToidGhpc19mPU1hdGguIitlLHRoaXNWYXJzOlsidGhpc19mIl19LGJv ZHk6e2FyZ3M6WyJhIiwiYiIsImMiXSxib2R5OiJhPXRoaXNfZihjLGIpIix0 aGlzVmFyczpbInRoaXNfZiJdfSxmdW5jTmFtZTplKyJvcCJ9KSxyW2UrIm9w cyJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Iiwic2NhbGFyIl0scHJlOnth cmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNf ZiJdfSxib2R5OnthcmdzOlsiYSIsImIiLCJjIl0sYm9keToiYT10aGlzX2Yo YyxiKSIsdGhpc1ZhcnM6WyJ0aGlzX2YiXX0sZnVuY05hbWU6ZSsib3BzIn0p LHJbZSsib3BlcSJdPW8oe2FyZ3M6WyJhcnJheSIsImFycmF5Il0scHJlOnth cmdzOltdLGJvZHk6InRoaXNfZj1NYXRoLiIrZSx0aGlzVmFyczpbInRoaXNf ZiJdfSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPXRoaXNfZihiLGEp Iix0aGlzVmFyczpbInRoaXNfZiJdfSxydmFsdWU6ITAsY291bnQ6MixmdW5j TmFtZTplKyJvcGVxIn0pLHJbZSsib3BzZXEiXT1vKHthcmdzOlsiYXJyYXki LCJzY2FsYXIiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGguIitl LHRoaXNWYXJzOlsidGhpc19mIl19LGJvZHk6e2FyZ3M6WyJhIiwiYiJdLGJv ZHk6ImE9dGhpc19mKGIsYSkiLHRoaXNWYXJzOlsidGhpc19mIl19LHJ2YWx1 ZTohMCxjb3VudDoyLGZ1bmNOYW1lOmUrIm9wc2VxIn0pfX0oKSxyLmFueT1u KHthcmdzOlsiYXJyYXkiXSxwcmU6YSxib2R5OnthcmdzOlt7bmFtZToiYSIs bHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfV0sYm9keToiaWYoYSl7cmV0 dXJuIHRydWV9Iixsb2NhbFZhcnM6W10sdGhpc1ZhcnM6W119LHBvc3Q6e2Fy Z3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOltdLGJvZHk6InJldHVybiBm YWxzZSJ9LGZ1bmNOYW1lOiJhbnkifSksci5hbGw9bih7YXJnczpbImFycmF5 Il0scHJlOmEsYm9keTp7YXJnczpbe25hbWU6IngiLGx2YWx1ZTohMSxydmFs dWU6ITAsY291bnQ6MX1dLGJvZHk6ImlmKCF4KXtyZXR1cm4gZmFsc2V9Iixs b2NhbFZhcnM6W10sdGhpc1ZhcnM6W119LHBvc3Q6e2FyZ3M6W10sbG9jYWxW YXJzOltdLHRoaXNWYXJzOltdLGJvZHk6InJldHVybiB0cnVlIn0sZnVuY05h bWU6ImFsbCJ9KSxyLnN1bT1uKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6 W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToidGhp c19zPTAifSxib2R5OnthcmdzOlt7bmFtZToiYSIsbHZhbHVlOiExLHJ2YWx1 ZTohMCxjb3VudDoxfV0sYm9keToidGhpc19zKz1hIixsb2NhbFZhcnM6W10s dGhpc1ZhcnM6WyJ0aGlzX3MiXX0scG9zdDp7YXJnczpbXSxsb2NhbFZhcnM6 W10sdGhpc1ZhcnM6WyJ0aGlzX3MiXSxib2R5OiJyZXR1cm4gdGhpc19zIn0s ZnVuY05hbWU6InN1bSJ9KSxyLnByb2Q9bih7YXJnczpbImFycmF5Il0scHJl OnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFyczpbInRoaXNfcyJdLGJv ZHk6InRoaXNfcz0xIn0sYm9keTp7YXJnczpbe25hbWU6ImEiLGx2YWx1ZToh MSxydmFsdWU6ITAsY291bnQ6MX1dLGJvZHk6InRoaXNfcyo9YSIsbG9jYWxW YXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl19LHBvc3Q6e2FyZ3M6W10sbG9j YWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToicmV0dXJuIHRo aXNfcyJ9LGZ1bmNOYW1lOiJwcm9kIn0pLHIubm9ybTJzcXVhcmVkPW4oe2Fy Z3M6WyJhcnJheSJdLHByZTp7YXJnczpbXSxsb2NhbFZhcnM6W10sdGhpc1Zh cnM6WyJ0aGlzX3MiXSxib2R5OiJ0aGlzX3M9MCJ9LGJvZHk6e2FyZ3M6W3tu YW1lOiJhIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9XSxib2R5OiJ0 aGlzX3MrPWEqYSIsbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl19 LHBvc3Q6e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19z Il0sYm9keToicmV0dXJuIHRoaXNfcyJ9LGZ1bmNOYW1lOiJub3JtMnNxdWFy ZWQifSksci5ub3JtMj1uKHthcmdzOlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10s bG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9keToidGhpc19z PTAifSxib2R5OnthcmdzOlt7bmFtZToiYSIsbHZhbHVlOiExLHJ2YWx1ZToh MCxjb3VudDoyfV0sYm9keToidGhpc19zKz1hKmEiLGxvY2FsVmFyczpbXSx0 aGlzVmFyczpbInRoaXNfcyJdfSxwb3N0OnthcmdzOltdLGxvY2FsVmFyczpb XSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InJldHVybiBNYXRoLnNxcnQo dGhpc19zKSJ9LGZ1bmNOYW1lOiJub3JtMiJ9KSxyLm5vcm1pbmY9bih7YXJn czpbImFycmF5Il0scHJlOnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlzVmFy czpbInRoaXNfcyJdLGJvZHk6InRoaXNfcz0wIn0sYm9keTp7YXJnczpbe25h bWU6ImEiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6NH1dLGJvZHk6Imlm KC1hPnRoaXNfcyl7dGhpc19zPS1hfWVsc2UgaWYoYT50aGlzX3Mpe3RoaXNf cz1hfSIsbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl19LHBvc3Q6 e2FyZ3M6W10sbG9jYWxWYXJzOltdLHRoaXNWYXJzOlsidGhpc19zIl0sYm9k eToicmV0dXJuIHRoaXNfcyJ9LGZ1bmNOYW1lOiJub3JtaW5mIn0pLHIubm9y bTE9bih7YXJnczpbImFycmF5Il0scHJlOnthcmdzOltdLGxvY2FsVmFyczpb XSx0aGlzVmFyczpbInRoaXNfcyJdLGJvZHk6InRoaXNfcz0wIn0sYm9keTp7 YXJnczpbe25hbWU6ImEiLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6M31d LGJvZHk6InRoaXNfcys9YTwwPy1hOmEiLGxvY2FsVmFyczpbXSx0aGlzVmFy czpbInRoaXNfcyJdfSxwb3N0OnthcmdzOltdLGxvY2FsVmFyczpbXSx0aGlz VmFyczpbInRoaXNfcyJdLGJvZHk6InJldHVybiB0aGlzX3MifSxmdW5jTmFt ZToibm9ybTEifSksci5zdXA9bih7YXJnczpbImFycmF5Il0scHJlOntib2R5 OiJ0aGlzX2g9LUluZmluaXR5IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19o Il0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJpZihfaW5saW5lXzFfYXJn MF8+dGhpc19oKXRoaXNfaD1faW5saW5lXzFfYXJnMF8iLGFyZ3M6W3tuYW1l OiJfaW5saW5lXzFfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6 Mn1dLHRoaXNWYXJzOlsidGhpc19oIl0sbG9jYWxWYXJzOltdfSxwb3N0Onti b2R5OiJyZXR1cm4gdGhpc19oIixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19o Il0sbG9jYWxWYXJzOltdfX0pLHIuaW5mPW4oe2FyZ3M6WyJhcnJheSJdLHBy ZTp7Ym9keToidGhpc19oPUluZmluaXR5IixhcmdzOltdLHRoaXNWYXJzOlsi dGhpc19oIl0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJpZihfaW5saW5l XzFfYXJnMF88dGhpc19oKXRoaXNfaD1faW5saW5lXzFfYXJnMF8iLGFyZ3M6 W3tuYW1lOiJfaW5saW5lXzFfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITAs Y291bnQ6Mn1dLHRoaXNWYXJzOlsidGhpc19oIl0sbG9jYWxWYXJzOltdfSxw b3N0Ontib2R5OiJyZXR1cm4gdGhpc19oIixhcmdzOltdLHRoaXNWYXJzOlsi dGhpc19oIl0sbG9jYWxWYXJzOltdfX0pLHIuYXJnbWluPW4oe2FyZ3M6WyJp bmRleCIsImFycmF5Iiwic2hhcGUiXSxwcmU6e2JvZHk6Int0aGlzX3Y9SW5m aW5pdHk7dGhpc19pPV9pbmxpbmVfMF9hcmcyXy5zbGljZSgwKX0iLGFyZ3M6 W3tuYW1lOiJfaW5saW5lXzBfYXJnMF8iLGx2YWx1ZTohMSxydmFsdWU6ITEs Y291bnQ6MH0se25hbWU6Il9pbmxpbmVfMF9hcmcxXyIsbHZhbHVlOiExLHJ2 YWx1ZTohMSxjb3VudDowfSx7bmFtZToiX2lubGluZV8wX2FyZzJfIixsdmFs dWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFyczpbInRoaXNfaSIs InRoaXNfdiJdLGxvY2FsVmFyczpbXX0sYm9keTp7Ym9keToie2lmKF9pbmxp bmVfMV9hcmcxXzx0aGlzX3Ype3RoaXNfdj1faW5saW5lXzFfYXJnMV87Zm9y KHZhciBfaW5saW5lXzFfaz0wO19pbmxpbmVfMV9rPF9pbmxpbmVfMV9hcmcw Xy5sZW5ndGg7KytfaW5saW5lXzFfayl7dGhpc19pW19pbmxpbmVfMV9rXT1f aW5saW5lXzFfYXJnMF9bX2lubGluZV8xX2tdfX19IixhcmdzOlt7bmFtZToi X2lubGluZV8xX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9 LHtuYW1lOiJfaW5saW5lXzFfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITAs Y291bnQ6Mn1dLHRoaXNWYXJzOlsidGhpc19pIiwidGhpc192Il0sbG9jYWxW YXJzOlsiX2lubGluZV8xX2siXX0scG9zdDp7Ym9keToie3JldHVybiB0aGlz X2l9IixhcmdzOltdLHRoaXNWYXJzOlsidGhpc19pIl0sbG9jYWxWYXJzOltd fX0pLHIuYXJnbWF4PW4oe2FyZ3M6WyJpbmRleCIsImFycmF5Iiwic2hhcGUi XSxwcmU6e2JvZHk6Int0aGlzX3Y9LUluZmluaXR5O3RoaXNfaT1faW5saW5l XzBfYXJnMl8uc2xpY2UoMCl9IixhcmdzOlt7bmFtZToiX2lubGluZV8wX2Fy ZzBfIixsdmFsdWU6ITEscnZhbHVlOiExLGNvdW50OjB9LHtuYW1lOiJfaW5s aW5lXzBfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITEsY291bnQ6MH0se25h bWU6Il9pbmxpbmVfMF9hcmcyXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3Vu dDoxfV0sdGhpc1ZhcnM6WyJ0aGlzX2kiLCJ0aGlzX3YiXSxsb2NhbFZhcnM6 W119LGJvZHk6e2JvZHk6IntpZihfaW5saW5lXzFfYXJnMV8+dGhpc192KXt0 aGlzX3Y9X2lubGluZV8xX2FyZzFfO2Zvcih2YXIgX2lubGluZV8xX2s9MDtf aW5saW5lXzFfazxfaW5saW5lXzFfYXJnMF8ubGVuZ3RoOysrX2lubGluZV8x X2spe3RoaXNfaVtfaW5saW5lXzFfa109X2lubGluZV8xX2FyZzBfW19pbmxp bmVfMV9rXX19fSIsYXJnczpbe25hbWU6Il9pbmxpbmVfMV9hcmcwXyIsbHZh bHVlOiExLHJ2YWx1ZTohMCxjb3VudDoyfSx7bmFtZToiX2lubGluZV8xX2Fy ZzFfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjJ9XSx0aGlzVmFyczpb InRoaXNfaSIsInRoaXNfdiJdLGxvY2FsVmFyczpbIl9pbmxpbmVfMV9rIl19 LHBvc3Q6e2JvZHk6IntyZXR1cm4gdGhpc19pfSIsYXJnczpbXSx0aGlzVmFy czpbInRoaXNfaSJdLGxvY2FsVmFyczpbXX19KSxyLnJhbmRvbT1vKHthcmdz OlsiYXJyYXkiXSxwcmU6e2FyZ3M6W10sYm9keToidGhpc19mPU1hdGgucmFu ZG9tIix0aGlzVmFyczpbInRoaXNfZiJdfSxib2R5OnthcmdzOlsiYSJdLGJv ZHk6ImE9dGhpc19mKCkiLHRoaXNWYXJzOlsidGhpc19mIl19LGZ1bmNOYW1l OiJyYW5kb20ifSksci5hc3NpZ249byh7YXJnczpbImFycmF5IiwiYXJyYXki XSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPWIifSxmdW5jTmFtZToi YXNzaWduIn0pLHIuYXNzaWducz1vKHthcmdzOlsiYXJyYXkiLCJzY2FsYXIi XSxib2R5OnthcmdzOlsiYSIsImIiXSxib2R5OiJhPWIifSxmdW5jTmFtZToi YXNzaWducyJ9KSxyLmVxdWFscz1uKHthcmdzOlsiYXJyYXkiLCJhcnJheSJd LHByZTphLGJvZHk6e2FyZ3M6W3tuYW1lOiJ4IixsdmFsdWU6ITEscnZhbHVl OiEwLGNvdW50OjF9LHtuYW1lOiJ5IixsdmFsdWU6ITEscnZhbHVlOiEwLGNv dW50OjF9XSxib2R5OiJpZih4IT09eSl7cmV0dXJuIGZhbHNlfSIsbG9jYWxW YXJzOltdLHRoaXNWYXJzOltdfSxwb3N0OnthcmdzOltdLGxvY2FsVmFyczpb XSx0aGlzVmFyczpbXSxib2R5OiJyZXR1cm4gdHJ1ZSJ9LGZ1bmNOYW1lOiJl cXVhbHMifSl9LHsiY3dpc2UtY29tcGlsZXIiOjE0OH1dLDQ0NzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJuZGFycmF5IiksYT10 KCIuL2RvQ29udmVydC5qcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zv cih2YXIgcj1bXSxpPXQsbz0xO0FycmF5LmlzQXJyYXkoaSk7KXIucHVzaChp Lmxlbmd0aCksbyo9aS5sZW5ndGgsaT1pWzBdO3JldHVybiAwPT09ci5sZW5n dGg/bigpOihlfHwoZT1uKG5ldyBGbG9hdDY0QXJyYXkobykscikpLGEoZSx0 KSxlKX19LHsiLi9kb0NvbnZlcnQuanMiOjQ0OCxuZGFycmF5OjQ1Mn1dLDQ0 ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCJjd2lzZS1jb21waWxl ciIpKHthcmdzOlsiYXJyYXkiLCJzY2FsYXIiLCJpbmRleCJdLHByZTp7Ym9k eToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJzOltdfSxib2R5 Ontib2R5OiJ7XG52YXIgX2lubGluZV8xX3Y9X2lubGluZV8xX2FyZzFfLF9p bmxpbmVfMV9pXG5mb3IoX2lubGluZV8xX2k9MDtfaW5saW5lXzFfaTxfaW5s aW5lXzFfYXJnMl8ubGVuZ3RoLTE7KytfaW5saW5lXzFfaSkge1xuX2lubGlu ZV8xX3Y9X2lubGluZV8xX3ZbX2lubGluZV8xX2FyZzJfW19pbmxpbmVfMV9p XV1cbn1cbl9pbmxpbmVfMV9hcmcwXz1faW5saW5lXzFfdltfaW5saW5lXzFf YXJnMl9bX2lubGluZV8xX2FyZzJfLmxlbmd0aC0xXV1cbn0iLGFyZ3M6W3tu YW1lOiJfaW5saW5lXzFfYXJnMF8iLGx2YWx1ZTohMCxydmFsdWU6ITEsY291 bnQ6MX0se25hbWU6Il9pbmxpbmVfMV9hcmcxXyIsbHZhbHVlOiExLHJ2YWx1 ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xX2FyZzJfIixsdmFsdWU6 ITEscnZhbHVlOiEwLGNvdW50OjR9XSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6 WyJfaW5saW5lXzFfaSIsIl9pbmxpbmVfMV92Il19LHBvc3Q6e2JvZHk6Int9 IixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0sZnVuY05hbWU6 ImNvbnZlcnQiLGJsb2NrU2l6ZTo2NH0pfSx7ImN3aXNlLWNvbXBpbGVyIjox NDh9XSw0NDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgidHlwZWRhcnJheS1wb29sIiksYT0zMjtmdW5jdGlvbiBpKHQpe3N3aXRj aCh0KXtjYXNlInVpbnQ4IjpyZXR1cm5bbi5tYWxsb2NVaW50OCxuLmZyZWVV aW50OF07Y2FzZSJ1aW50MTYiOnJldHVybltuLm1hbGxvY1VpbnQxNixuLmZy ZWVVaW50MTZdO2Nhc2UidWludDMyIjpyZXR1cm5bbi5tYWxsb2NVaW50MzIs bi5mcmVlVWludDMyXTtjYXNlImludDgiOnJldHVybltuLm1hbGxvY0ludDgs bi5mcmVlSW50OF07Y2FzZSJpbnQxNiI6cmV0dXJuW24ubWFsbG9jSW50MTYs bi5mcmVlSW50MTZdO2Nhc2UiaW50MzIiOnJldHVybltuLm1hbGxvY0ludDMy LG4uZnJlZUludDMyXTtjYXNlImZsb2F0MzIiOnJldHVybltuLm1hbGxvY0Zs b2F0LG4uZnJlZUZsb2F0XTtjYXNlImZsb2F0NjQiOnJldHVybltuLm1hbGxv Y0RvdWJsZSxuLmZyZWVEb3VibGVdO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1 bmN0aW9uIG8odCl7Zm9yKHZhciBlPVtdLHI9MDtyPHQ7KytyKWUucHVzaCgi cyIrcik7Zm9yKHI9MDtyPHQ7KytyKWUucHVzaCgibiIrcik7Zm9yKHI9MTty PHQ7KytyKWUucHVzaCgiZCIrcik7Zm9yKHI9MTtyPHQ7KytyKWUucHVzaCgi ZSIrcik7Zm9yKHI9MTtyPHQ7KytyKWUucHVzaCgiZiIrcik7cmV0dXJuIGV9 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9WyIndXNlIHN0cmljdCci XSxuPVsibmRhcnJheVNvcnRXcmFwcGVyIix0LmpvaW4oImQiKSxlXS5qb2lu KCIiKTtyLnB1c2goWyJmdW5jdGlvbiAiLG4sIigiLFsiYXJyYXkiXS5qb2lu KCIsIiksIil7Il0uam9pbigiIikpO2Zvcih2YXIgcz1bImRhdGE9YXJyYXku ZGF0YSxvZmZzZXQ9YXJyYXkub2Zmc2V0fDAsc2hhcGU9YXJyYXkuc2hhcGUs c3RyaWRlPWFycmF5LnN0cmlkZSJdLGw9MDtsPHQubGVuZ3RoOysrbClzLnB1 c2goWyJzIixsLCI9c3RyaWRlWyIsbCwiXXwwLG4iLGwsIj1zaGFwZVsiLGws Il18MCJdLmpvaW4oIiIpKTt2YXIgYz1uZXcgQXJyYXkodC5sZW5ndGgpLHU9 W107Zm9yKGw9MDtsPHQubGVuZ3RoOysrbCkwIT09KHA9dFtsXSkmJigwPT09 dS5sZW5ndGg/Y1twXT0iMSI6Y1twXT11LmpvaW4oIioiKSx1LnB1c2goIm4i K3ApKTt2YXIgaD0tMSxmPS0xO2ZvcihsPTA7bDx0Lmxlbmd0aDsrK2wpe3Zh ciBwLGQ9dFtsXTswIT09ZCYmKGg+MD9zLnB1c2goWyJkIixkLCI9cyIsZCwi LWQiLGgsIipuIixoXS5qb2luKCIiKSk6cy5wdXNoKFsiZCIsZCwiPXMiLGRd LmpvaW4oIiIpKSxoPWQpLDAhPShwPXQubGVuZ3RoLTEtbCkmJihmPjA/cy5w dXNoKFsiZSIscCwiPXMiLHAsIi1lIixmLCIqbiIsZiwiLGYiLHAsIj0iLGNb cF0sIi1mIixmLCIqbiIsZl0uam9pbigiIikpOnMucHVzaChbImUiLHAsIj1z IixwLCIsZiIscCwiPSIsY1twXV0uam9pbigiIikpLGY9cCl9ci5wdXNoKCJ2 YXIgIitzLmpvaW4oIiwiKSk7dmFyIGc9WyIwIiwibjAtMSIsImRhdGEiLCJv ZmZzZXQiXS5jb25jYXQobyh0Lmxlbmd0aCkpO3IucHVzaChbImlmKG4wPD0i LGEsIil7IiwiaW5zZXJ0aW9uU29ydCgiLGcuam9pbigiLCIpLCIpfWVsc2V7 IiwicXVpY2tTb3J0KCIsZy5qb2luKCIsIiksIil9Il0uam9pbigiIikpLHIu cHVzaCgifXJldHVybiAiK24pO3ZhciB2PW5ldyBGdW5jdGlvbigiaW5zZXJ0 aW9uU29ydCIsInF1aWNrU29ydCIsci5qb2luKCJcbiIpKSxtPWZ1bmN0aW9u KHQsZSl7dmFyIHI9WyIndXNlIHN0cmljdCciXSxuPVsibmRhcnJheUluc2Vy dGlvblNvcnQiLHQuam9pbigiZCIpLGVdLmpvaW4oIiIpLGE9WyJsZWZ0Iiwi cmlnaHQiLCJkYXRhIiwib2Zmc2V0Il0uY29uY2F0KG8odC5sZW5ndGgpKSxz PWkoZSksbD1bImksaixjcHRyLHB0cj1sZWZ0KnMwK29mZnNldCJdO2lmKHQu bGVuZ3RoPjEpe2Zvcih2YXIgYz1bXSx1PTE7dTx0Lmxlbmd0aDsrK3UpbC5w dXNoKCJpIit1KSxjLnB1c2goIm4iK3UpO3M/bC5wdXNoKCJzY3JhdGNoPW1h bGxvYygiK2Muam9pbigiKiIpKyIpIik6bC5wdXNoKCJzY3JhdGNoPW5ldyBB cnJheSgiK2Muam9pbigiKiIpKyIpIiksbC5wdXNoKCJkcHRyIiwic3B0ciIs ImEiLCJiIil9ZWxzZSBsLnB1c2goInNjcmF0Y2giKTtmdW5jdGlvbiBoKHQp e3JldHVybiJnZW5lcmljIj09PWU/WyJkYXRhLmdldCgiLHQsIikiXS5qb2lu KCIiKTpbImRhdGFbIix0LCJdIl0uam9pbigiIil9ZnVuY3Rpb24gZih0LHIp e3JldHVybiJnZW5lcmljIj09PWU/WyJkYXRhLnNldCgiLHQsIiwiLHIsIiki XS5qb2luKCIiKTpbImRhdGFbIix0LCJdPSIscl0uam9pbigiIil9aWYoci5w dXNoKFsiZnVuY3Rpb24gIixuLCIoIixhLmpvaW4oIiwiKSwiKXt2YXIgIixs LmpvaW4oIiwiKV0uam9pbigiIiksImZvcihpPWxlZnQrMTtpPD1yaWdodDsr K2kpeyIsImo9aTtwdHIrPXMwIiwiY3B0cj1wdHIiKSx0Lmxlbmd0aD4xKXtm b3Ioci5wdXNoKCJkcHRyPTA7c3B0cj1wdHIiKSx1PXQubGVuZ3RoLTE7dT49 MDstLXUpMCE9PShwPXRbdV0pJiZyLnB1c2goWyJmb3IoaSIscCwiPTA7aSIs cCwiPG4iLHAsIjsrK2kiLHAsIil7Il0uam9pbigiIikpO2ZvcihyLnB1c2go InNjcmF0Y2hbZHB0cisrXT0iLGgoInNwdHIiKSksdT0wO3U8dC5sZW5ndGg7 Kyt1KTAhPT0ocD10W3VdKSYmci5wdXNoKCJzcHRyKz1kIitwLCJ9Iik7Zm9y KHIucHVzaCgiX19nOndoaWxlKGotLVx4M2VsZWZ0KXsiLCJkcHRyPTAiLCJz cHRyPWNwdHItczAiKSx1PTE7dTx0Lmxlbmd0aDsrK3UpMT09PXUmJnIucHVz aCgiX19sOiIpLHIucHVzaChbImZvcihpIix1LCI9MDtpIix1LCI8biIsdSwi OysraSIsdSwiKXsiXS5qb2luKCIiKSk7Zm9yKHIucHVzaChbImE9IixoKCJz cHRyIiksIlxuYj1zY3JhdGNoW2RwdHJdXG5pZihhPGIpe2JyZWFrIF9fZ31c bmlmKGE+Yil7YnJlYWsgX19sfSJdLmpvaW4oIiIpKSx1PXQubGVuZ3RoLTE7 dT49MTstLXUpci5wdXNoKCJzcHRyKz1lIit1LCJkcHRyKz1mIit1LCJ9Iik7 Zm9yKHIucHVzaCgiZHB0cj1jcHRyO3NwdHI9Y3B0ci1zMCIpLHU9dC5sZW5n dGgtMTt1Pj0wOy0tdSkwIT09KHA9dFt1XSkmJnIucHVzaChbImZvcihpIixw LCI9MDtpIixwLCI8biIscCwiOysraSIscCwiKXsiXS5qb2luKCIiKSk7Zm9y KHIucHVzaChmKCJkcHRyIixoKCJzcHRyIikpKSx1PTA7dTx0Lmxlbmd0aDsr K3UpMCE9PShwPXRbdV0pJiZyLnB1c2goWyJkcHRyKz1kIixwLCI7c3B0cis9 ZCIscF0uam9pbigiIiksIn0iKTtmb3Ioci5wdXNoKCJjcHRyLT1zMFxufSIp LHIucHVzaCgiZHB0cj1jcHRyO3NwdHI9MCIpLHU9dC5sZW5ndGgtMTt1Pj0w Oy0tdSkwIT09KHA9dFt1XSkmJnIucHVzaChbImZvcihpIixwLCI9MDtpIixw LCI8biIscCwiOysraSIscCwiKXsiXS5qb2luKCIiKSk7Zm9yKHIucHVzaChm KCJkcHRyIiwic2NyYXRjaFtzcHRyKytdIikpLHU9MDt1PHQubGVuZ3RoOysr dSl7dmFyIHA7MCE9PShwPXRbdV0pJiZyLnB1c2goImRwdHIrPWQiK3AsIn0i KX19ZWxzZSByLnB1c2goInNjcmF0Y2g9IitoKCJwdHIiKSwid2hpbGUoKGot LVx4M2VsZWZ0KSYmKCIraCgiY3B0ci1zMCIpKyI+c2NyYXRjaCkpeyIsZigi Y3B0ciIsaCgiY3B0ci1zMCIpKSwiY3B0ci09czAiLCJ9IixmKCJjcHRyIiwi c2NyYXRjaCIpKTtyZXR1cm4gci5wdXNoKCJ9IiksdC5sZW5ndGg+MSYmcyYm ci5wdXNoKCJmcmVlKHNjcmF0Y2gpIiksci5wdXNoKCJ9IHJldHVybiAiK24p LHM/bmV3IEZ1bmN0aW9uKCJtYWxsb2MiLCJmcmVlIixyLmpvaW4oIlxuIikp KHNbMF0sc1sxXSk6bmV3IEZ1bmN0aW9uKHIuam9pbigiXG4iKSkoKX0odCxl KSx5PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1bIid1c2Ugc3RyaWN0JyJdLHM9 WyJuZGFycmF5UXVpY2tTb3J0Iix0LmpvaW4oImQiKSxlXS5qb2luKCIiKSxs PVsibGVmdCIsInJpZ2h0IiwiZGF0YSIsIm9mZnNldCJdLmNvbmNhdChvKHQu bGVuZ3RoKSksYz1pKGUpLHU9MDtuLnB1c2goWyJmdW5jdGlvbiAiLHMsIigi LGwuam9pbigiLCIpLCIpeyJdLmpvaW4oIiIpKTt2YXIgaD1bInNpeHRoPSgo cmlnaHQtbGVmdCsxKS82KXwwIiwiaW5kZXgxPWxlZnQrc2l4dGgiLCJpbmRl eDU9cmlnaHQtc2l4dGgiLCJpbmRleDM9KGxlZnQrcmlnaHQpPj4xIiwiaW5k ZXgyPWluZGV4My1zaXh0aCIsImluZGV4ND1pbmRleDMrc2l4dGgiLCJlbDE9 aW5kZXgxIiwiZWwyPWluZGV4MiIsImVsMz1pbmRleDMiLCJlbDQ9aW5kZXg0 IiwiZWw1PWluZGV4NSIsImxlc3M9bGVmdCsxIiwiZ3JlYXQ9cmlnaHQtMSIs InBpdm90c19hcmVfZXF1YWw9dHJ1ZSIsInRtcCIsInRtcDAiLCJ4IiwieSIs InoiLCJrIiwicHRyMCIsInB0cjEiLCJwdHIyIiwiY29tcF9waXZvdDE9MCIs ImNvbXBfcGl2b3QyPTAiLCJjb21wPTAiXTtpZih0Lmxlbmd0aD4xKXtmb3Io dmFyIGY9W10scD0xO3A8dC5sZW5ndGg7KytwKWYucHVzaCgibiIrcCksaC5w dXNoKCJpIitwKTtmb3IocD0wO3A8ODsrK3ApaC5wdXNoKCJiX3B0ciIrcCk7 aC5wdXNoKCJwdHIzIiwicHRyNCIsInB0cjUiLCJwdHI2IiwicHRyNyIsInBp dm90X3B0ciIsInB0cl9zaGlmdCIsImVsZW1lbnRTaXplPSIrZi5qb2luKCIq IikpLGM/aC5wdXNoKCJwaXZvdDE9bWFsbG9jKGVsZW1lbnRTaXplKSIsInBp dm90Mj1tYWxsb2MoZWxlbWVudFNpemUpIik6aC5wdXNoKCJwaXZvdDE9bmV3 IEFycmF5KGVsZW1lbnRTaXplKSxwaXZvdDI9bmV3IEFycmF5KGVsZW1lbnRT aXplKSIpfWVsc2UgaC5wdXNoKCJwaXZvdDEiLCJwaXZvdDIiKTtmdW5jdGlv biBkKHQpe3JldHVyblsiKG9mZnNldCsiLHQsIipzMCkiXS5qb2luKCIiKX1m dW5jdGlvbiBnKHQpe3JldHVybiJnZW5lcmljIj09PWU/WyJkYXRhLmdldCgi LHQsIikiXS5qb2luKCIiKTpbImRhdGFbIix0LCJdIl0uam9pbigiIil9ZnVu Y3Rpb24gdih0LHIpe3JldHVybiJnZW5lcmljIj09PWU/WyJkYXRhLnNldCgi LHQsIiwiLHIsIikiXS5qb2luKCIiKTpbImRhdGFbIix0LCJdPSIscl0uam9p bigiIil9ZnVuY3Rpb24gbShlLHIsYSl7aWYoMT09PWUubGVuZ3RoKW4ucHVz aCgicHRyMD0iK2QoZVswXSkpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0 aDsrK2kpbi5wdXNoKFsiYl9wdHIiLGksIj1zMCoiLGVbaV1dLmpvaW4oIiIp KTtmb3IociYmbi5wdXNoKCJwaXZvdF9wdHI9MCIpLG4ucHVzaCgicHRyX3No aWZ0PW9mZnNldCIpLGk9dC5sZW5ndGgtMTtpPj0wOy0taSkwIT09KG89dFtp XSkmJm4ucHVzaChbImZvcihpIixvLCI9MDtpIixvLCI8biIsbywiOysraSIs bywiKXsiXS5qb2luKCIiKSk7aWYoZS5sZW5ndGg+MSlmb3IoaT0wO2k8ZS5s ZW5ndGg7KytpKW4ucHVzaChbInB0ciIsaSwiPWJfcHRyIixpLCIrcHRyX3No aWZ0Il0uam9pbigiIikpO2ZvcihuLnB1c2goYSksciYmbi5wdXNoKCIrK3Bp dm90X3B0ciIpLGk9MDtpPHQubGVuZ3RoOysraSl7dmFyIG87MCE9PShvPXRb aV0pJiYoZS5sZW5ndGg+MT9uLnB1c2goInB0cl9zaGlmdCs9ZCIrbyk6bi5w dXNoKCJwdHIwKz1kIitvKSxuLnB1c2goIn0iKSl9fWZ1bmN0aW9uIHkoZSxy LGEsaSl7aWYoMT09PXIubGVuZ3RoKW4ucHVzaCgicHRyMD0iK2QoclswXSkp O2Vsc2V7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDsrK28pbi5wdXNoKFsiYl9w dHIiLG8sIj1zMCoiLHJbb11dLmpvaW4oIiIpKTtuLnB1c2goInB0cl9zaGlm dD1vZmZzZXQiKX1mb3IoYSYmbi5wdXNoKCJwaXZvdF9wdHI9MCIpLGUmJm4u cHVzaChlKyI6Iiksbz0xO288dC5sZW5ndGg7KytvKW4ucHVzaChbImZvcihp IixvLCI9MDtpIixvLCI8biIsbywiOysraSIsbywiKXsiXS5qb2luKCIiKSk7 aWYoci5sZW5ndGg+MSlmb3Iobz0wO288ci5sZW5ndGg7KytvKW4ucHVzaChb InB0ciIsbywiPWJfcHRyIixvLCIrcHRyX3NoaWZ0Il0uam9pbigiIikpO2Zv cihuLnB1c2goaSksbz10Lmxlbmd0aC0xO28+PTE7LS1vKWEmJm4ucHVzaCgi cGl2b3RfcHRyKz1mIitvKSxyLmxlbmd0aD4xP24ucHVzaCgicHRyX3NoaWZ0 Kz1lIitvKTpuLnB1c2goInB0cjArPWUiK28pLG4ucHVzaCgifSIpfWZ1bmN0 aW9uIHgoKXt0Lmxlbmd0aD4xJiZjJiZuLnB1c2goImZyZWUocGl2b3QxKSIs ImZyZWUocGl2b3QyKSIpfWZ1bmN0aW9uIGIoZSxyKXt2YXIgYT0iZWwiK2Us aT0iZWwiK3I7aWYodC5sZW5ndGg+MSl7dmFyIG89Il9fbCIrICsrdTt5KG8s W2EsaV0sITEsWyJjb21wPSIsZygicHRyMCIpLCItIixnKCJwdHIxIiksIlxu IiwiaWYoY29tcD4wKXt0bXAwPSIsYSwiOyIsYSwiPSIsaSwiOyIsaSwiPXRt cDA7YnJlYWsgIixvLCJ9XG4iLCJpZihjb21wPDApe2JyZWFrICIsbywifSJd LmpvaW4oIiIpKX1lbHNlIG4ucHVzaChbImlmKCIsZyhkKGEpKSwiPiIsZyhk KGkpKSwiKXt0bXAwPSIsYSwiOyIsYSwiPSIsaSwiOyIsaSwiPXRtcDB9Il0u am9pbigiIikpfWZ1bmN0aW9uIF8oZSxyKXt0Lmxlbmd0aD4xP20oW2Uscl0s ITEsdigicHRyMCIsZygicHRyMSIpKSk6bi5wdXNoKHYoZChlKSxnKGQocikp KSl9ZnVuY3Rpb24gdyhlLHIsYSl7aWYodC5sZW5ndGg+MSl7dmFyIGk9Il9f bCIrICsrdTt5KGksW3JdLCEwLFtlLCI9IixnKCJwdHIwIiksIi1waXZvdCIs YSwiW3Bpdm90X3B0cl1cbiIsImlmKCIsZSwiIT09MCl7YnJlYWsgIixpLCJ9 Il0uam9pbigiIikpfWVsc2Ugbi5wdXNoKFtlLCI9IixnKGQocikpLCItcGl2 b3QiLGFdLmpvaW4oIiIpKX1mdW5jdGlvbiBrKGUscil7dC5sZW5ndGg+MT9t KFtlLHJdLCExLFsidG1wPSIsZygicHRyMCIpLCJcbiIsdigicHRyMCIsZygi cHRyMSIpKSwiXG4iLHYoInB0cjEiLCJ0bXAiKV0uam9pbigiIikpOm4ucHVz aChbInB0cjA9IixkKGUpLCJcbiIsInB0cjE9IixkKHIpLCJcbiIsInRtcD0i LGcoInB0cjAiKSwiXG4iLHYoInB0cjAiLGcoInB0cjEiKSksIlxuIix2KCJw dHIxIiwidG1wIildLmpvaW4oIiIpKX1mdW5jdGlvbiBUKGUscixhKXt0Lmxl bmd0aD4xPyhtKFtlLHIsYV0sITEsWyJ0bXA9IixnKCJwdHIwIiksIlxuIix2 KCJwdHIwIixnKCJwdHIxIikpLCJcbiIsdigicHRyMSIsZygicHRyMiIpKSwi XG4iLHYoInB0cjIiLCJ0bXAiKV0uam9pbigiIikpLG4ucHVzaCgiKysiK3Is Ii0tIithKSk6bi5wdXNoKFsicHRyMD0iLGQoZSksIlxuIiwicHRyMT0iLGQo ciksIlxuIiwicHRyMj0iLGQoYSksIlxuIiwiKysiLHIsIlxuIiwiLS0iLGEs IlxuIiwidG1wPSIsZygicHRyMCIpLCJcbiIsdigicHRyMCIsZygicHRyMSIp KSwiXG4iLHYoInB0cjEiLGcoInB0cjIiKSksIlxuIix2KCJwdHIyIiwidG1w IildLmpvaW4oIiIpKX1mdW5jdGlvbiBNKHQsZSl7ayh0LGUpLG4ucHVzaCgi LS0iK2UpfWZ1bmN0aW9uIEEoZSxyLGEpe3QubGVuZ3RoPjE/bShbZSxyXSwh MCxbdigicHRyMCIsZygicHRyMSIpKSwiXG4iLHYoInB0cjEiLFsicGl2b3Qi LGEsIltwaXZvdF9wdHJdIl0uam9pbigiIikpXS5qb2luKCIiKSk6bi5wdXNo KHYoZChlKSxnKGQocikpKSx2KGQociksInBpdm90IithKSl9ZnVuY3Rpb24g UyhlLHIpe24ucHVzaChbImlmKCgiLHIsIi0iLGUsIik8PSIsYSwiKXtcbiIs Imluc2VydGlvblNvcnQoIixlLCIsIixyLCIsZGF0YSxvZmZzZXQsIixvKHQu bGVuZ3RoKS5qb2luKCIsIiksIilcbiIsIn1lbHNle1xuIixzLCIoIixlLCIs IixyLCIsZGF0YSxvZmZzZXQsIixvKHQubGVuZ3RoKS5qb2luKCIsIiksIilc biIsIn0iXS5qb2luKCIiKSl9ZnVuY3Rpb24gRShlLHIsYSl7dC5sZW5ndGg+ MT8obi5wdXNoKFsiX19sIiwrK3UsIjp3aGlsZSh0cnVlKXsiXS5qb2luKCIi KSksbShbZV0sITAsWyJpZigiLGcoInB0cjAiKSwiIT09cGl2b3QiLHIsIltw aXZvdF9wdHJdKXticmVhayBfX2wiLHUsIn0iXS5qb2luKCIiKSksbi5wdXNo KGEsIn0iKSk6bi5wdXNoKFsid2hpbGUoIixnKGQoZSkpLCI9PT1waXZvdCIs ciwiKXsiLGEsIn0iXS5qb2luKCIiKSl9cmV0dXJuIG4ucHVzaCgidmFyICIr aC5qb2luKCIsIikpLGIoMSwyKSxiKDQsNSksYigxLDMpLGIoMiwzKSxiKDEs NCksYigzLDQpLGIoMiw1KSxiKDIsMyksYig0LDUpLHQubGVuZ3RoPjE/bShb ImVsMSIsImVsMiIsImVsMyIsImVsNCIsImVsNSIsImluZGV4MSIsImluZGV4 MyIsImluZGV4NSJdLCEwLFsicGl2b3QxW3Bpdm90X3B0cl09IixnKCJwdHIx IiksIlxuIiwicGl2b3QyW3Bpdm90X3B0cl09IixnKCJwdHIzIiksIlxuIiwi cGl2b3RzX2FyZV9lcXVhbD1waXZvdHNfYXJlX2VxdWFsJiYocGl2b3QxW3Bp dm90X3B0cl09PT1waXZvdDJbcGl2b3RfcHRyXSlcbiIsIng9IixnKCJwdHIw IiksIlxuIiwieT0iLGcoInB0cjIiKSwiXG4iLCJ6PSIsZygicHRyNCIpLCJc biIsdigicHRyNSIsIngiKSwiXG4iLHYoInB0cjYiLCJ5IiksIlxuIix2KCJw dHI3IiwieiIpXS5qb2luKCIiKSk6bi5wdXNoKFsicGl2b3QxPSIsZyhkKCJl bDIiKSksIlxuIiwicGl2b3QyPSIsZyhkKCJlbDQiKSksIlxuIiwicGl2b3Rz X2FyZV9lcXVhbD1waXZvdDE9PT1waXZvdDJcbiIsIng9IixnKGQoImVsMSIp KSwiXG4iLCJ5PSIsZyhkKCJlbDMiKSksIlxuIiwiej0iLGcoZCgiZWw1Iikp LCJcbiIsdihkKCJpbmRleDEiKSwieCIpLCJcbiIsdihkKCJpbmRleDMiKSwi eSIpLCJcbiIsdihkKCJpbmRleDUiKSwieiIpXS5qb2luKCIiKSksXygiaW5k ZXgyIiwibGVmdCIpLF8oImluZGV4NCIsInJpZ2h0Iiksbi5wdXNoKCJpZihw aXZvdHNfYXJlX2VxdWFsKXsiKSxuLnB1c2goImZvcihrPWxlc3M7azw9Z3Jl YXQ7KytrKXsiKSx3KCJjb21wIiwiayIsMSksbi5wdXNoKCJpZihjb21wPT09 MCl7Y29udGludWV9Iiksbi5wdXNoKCJpZihjb21wPDApeyIpLG4ucHVzaCgi aWYoayE9PWxlc3MpeyIpLGsoImsiLCJsZXNzIiksbi5wdXNoKCJ9Iiksbi5w dXNoKCIrK2xlc3MiKSxuLnB1c2goIn1lbHNleyIpLG4ucHVzaCgid2hpbGUo dHJ1ZSl7IiksdygiY29tcCIsImdyZWF0IiwxKSxuLnB1c2goImlmKGNvbXA+ MCl7Iiksbi5wdXNoKCJncmVhdC0tIiksbi5wdXNoKCJ9ZWxzZSBpZihjb21w PDApeyIpLFQoImsiLCJsZXNzIiwiZ3JlYXQiKSxuLnB1c2goImJyZWFrIiks bi5wdXNoKCJ9ZWxzZXsiKSxNKCJrIiwiZ3JlYXQiKSxuLnB1c2goImJyZWFr Iiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJ9Iiksbi5wdXNo KCJ9Iiksbi5wdXNoKCJ9ZWxzZXsiKSxuLnB1c2goImZvcihrPWxlc3M7azw9 Z3JlYXQ7KytrKXsiKSx3KCJjb21wX3Bpdm90MSIsImsiLDEpLG4ucHVzaCgi aWYoY29tcF9waXZvdDE8MCl7Iiksbi5wdXNoKCJpZihrIT09bGVzcyl7Iiks aygiayIsImxlc3MiKSxuLnB1c2goIn0iKSxuLnB1c2goIisrbGVzcyIpLG4u cHVzaCgifWVsc2V7IiksdygiY29tcF9waXZvdDIiLCJrIiwyKSxuLnB1c2go ImlmKGNvbXBfcGl2b3QyPjApeyIpLG4ucHVzaCgid2hpbGUodHJ1ZSl7Iiks dygiY29tcCIsImdyZWF0IiwyKSxuLnB1c2goImlmKGNvbXA+MCl7Iiksbi5w dXNoKCJpZigtLWdyZWF0PGspe2JyZWFrfSIpLG4ucHVzaCgiY29udGludWUi KSxuLnB1c2goIn1lbHNleyIpLHcoImNvbXAiLCJncmVhdCIsMSksbi5wdXNo KCJpZihjb21wPDApeyIpLFQoImsiLCJsZXNzIiwiZ3JlYXQiKSxuLnB1c2go In1lbHNleyIpLE0oImsiLCJncmVhdCIpLG4ucHVzaCgifSIpLG4ucHVzaCgi YnJlYWsiKSxuLnB1c2goIn0iKSxuLnB1c2goIn0iKSxuLnB1c2goIn0iKSxu LnB1c2goIn0iKSxuLnB1c2goIn0iKSxuLnB1c2goIn0iKSxBKCJsZWZ0Iiwi KGxlc3MtMSkiLDEpLEEoInJpZ2h0IiwiKGdyZWF0KzEpIiwyKSxTKCJsZWZ0 IiwiKGxlc3MtMikiKSxTKCIoZ3JlYXQrMikiLCJyaWdodCIpLG4ucHVzaCgi aWYocGl2b3RzX2FyZV9lcXVhbCl7IikseCgpLG4ucHVzaCgicmV0dXJuIiks bi5wdXNoKCJ9Iiksbi5wdXNoKCJpZihsZXNzPGluZGV4MSYmZ3JlYXQ+aW5k ZXg1KXsiKSxFKCJsZXNzIiwxLCIrK2xlc3MiKSxFKCJncmVhdCIsMiwiLS1n cmVhdCIpLG4ucHVzaCgiZm9yKGs9bGVzcztrPD1ncmVhdDsrK2speyIpLHco ImNvbXBfcGl2b3QxIiwiayIsMSksbi5wdXNoKCJpZihjb21wX3Bpdm90MT09 PTApeyIpLG4ucHVzaCgiaWYoayE9PWxlc3MpeyIpLGsoImsiLCJsZXNzIiks bi5wdXNoKCJ9Iiksbi5wdXNoKCIrK2xlc3MiKSxuLnB1c2goIn1lbHNleyIp LHcoImNvbXBfcGl2b3QyIiwiayIsMiksbi5wdXNoKCJpZihjb21wX3Bpdm90 Mj09PTApeyIpLG4ucHVzaCgid2hpbGUodHJ1ZSl7IiksdygiY29tcCIsImdy ZWF0IiwyKSxuLnB1c2goImlmKGNvbXA9PT0wKXsiKSxuLnB1c2goImlmKC0t Z3JlYXQ8ayl7YnJlYWt9Iiksbi5wdXNoKCJjb250aW51ZSIpLG4ucHVzaCgi fWVsc2V7IiksdygiY29tcCIsImdyZWF0IiwxKSxuLnB1c2goImlmKGNvbXA8 MCl7IiksVCgiayIsImxlc3MiLCJncmVhdCIpLG4ucHVzaCgifWVsc2V7Iiks TSgiayIsImdyZWF0Iiksbi5wdXNoKCJ9Iiksbi5wdXNoKCJicmVhayIpLG4u cHVzaCgifSIpLG4ucHVzaCgifSIpLG4ucHVzaCgifSIpLG4ucHVzaCgifSIp LG4ucHVzaCgifSIpLG4ucHVzaCgifSIpLHgoKSxTKCJsZXNzIiwiZ3JlYXQi KSxuLnB1c2goIn1yZXR1cm4gIitzKSx0Lmxlbmd0aD4xJiZjP25ldyBGdW5j dGlvbigiaW5zZXJ0aW9uU29ydCIsIm1hbGxvYyIsImZyZWUiLG4uam9pbigi XG4iKSkocixjWzBdLGNbMV0pOm5ldyBGdW5jdGlvbigiaW5zZXJ0aW9uU29y dCIsbi5qb2luKCJcbiIpKShyKX0odCxlLG0pO3JldHVybiB2KG0seSl9fSx7 InR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sNDUwOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL2NvbXBpbGVfc29ydC5qcyIp LGE9e307ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQub3JkZXIscj10 LmR0eXBlLGk9W2Uscl0uam9pbigiOiIpLG89YVtpXTtyZXR1cm4gb3x8KGFb aV09bz1uKGUscikpLG8odCksdH19LHsiLi9saWIvY29tcGlsZV9zb3J0Lmpz Ijo0NDl9XSw0NTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgibmRhcnJheS1saW5lYXItaW50ZXJwb2xhdGUiKSxhPXQoImN3aXNl L2xpYi93cmFwcGVyIikoe2FyZ3M6WyJpbmRleCIsImFycmF5Iiwic2NhbGFy Iiwic2NhbGFyIiwic2NhbGFyIl0scHJlOntib2R5OiJ7dGhpc193YXJwZWQ9 bmV3IEFycmF5KF9pbmxpbmVfM19hcmc0Xyl9IixhcmdzOlt7bmFtZToiX2lu bGluZV8zX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiExLGNvdW50OjB9LHtu YW1lOiJfaW5saW5lXzNfYXJnMV8iLGx2YWx1ZTohMSxydmFsdWU6ITEsY291 bnQ6MH0se25hbWU6Il9pbmxpbmVfM19hcmcyXyIsbHZhbHVlOiExLHJ2YWx1 ZTohMSxjb3VudDowfSx7bmFtZToiX2lubGluZV8zX2FyZzNfIixsdmFsdWU6 ITEscnZhbHVlOiExLGNvdW50OjB9LHtuYW1lOiJfaW5saW5lXzNfYXJnNF8i LGx2YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX1dLHRoaXNWYXJzOlsidGhp c193YXJwZWQiXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6IntfaW5saW5l XzRfYXJnMl8odGhpc193YXJwZWQsX2lubGluZV80X2FyZzBfKSxfaW5saW5l XzRfYXJnMV89X2lubGluZV80X2FyZzNfLmFwcGx5KHZvaWQgMCx0aGlzX3dh cnBlZCl9IixhcmdzOlt7bmFtZToiX2lubGluZV80X2FyZzBfIixsdmFsdWU6 ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzRfYXJnMV8i LGx2YWx1ZTohMCxydmFsdWU6ITEsY291bnQ6MX0se25hbWU6Il9pbmxpbmVf NF9hcmcyXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToi X2lubGluZV80X2FyZzNfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9 LHtuYW1lOiJfaW5saW5lXzRfYXJnNF8iLGx2YWx1ZTohMSxydmFsdWU6ITEs Y291bnQ6MH1dLHRoaXNWYXJzOlsidGhpc193YXJwZWQiXSxsb2NhbFZhcnM6 W119LHBvc3Q6e2JvZHk6Int9IixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2Fs VmFyczpbXX0sZGVidWc6ITEsZnVuY05hbWU6IndhcnBORCIsYmxvY2tTaXpl OjY0fSksaT10KCJjd2lzZS9saWIvd3JhcHBlciIpKHthcmdzOlsiaW5kZXgi LCJhcnJheSIsInNjYWxhciIsInNjYWxhciIsInNjYWxhciJdLHByZTp7Ym9k eToie3RoaXNfd2FycGVkPVswXX0iLGFyZ3M6W10sdGhpc1ZhcnM6WyJ0aGlz X3dhcnBlZCJdLGxvY2FsVmFyczpbXX0sYm9keTp7Ym9keToie19pbmxpbmVf N19hcmcyXyh0aGlzX3dhcnBlZCxfaW5saW5lXzdfYXJnMF8pLF9pbmxpbmVf N19hcmcxXz1faW5saW5lXzdfYXJnM18oX2lubGluZV83X2FyZzRfLHRoaXNf d2FycGVkWzBdKX0iLGFyZ3M6W3tuYW1lOiJfaW5saW5lXzdfYXJnMF8iLGx2 YWx1ZTohMSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfN19h cmcxXyIsbHZhbHVlOiEwLHJ2YWx1ZTohMSxjb3VudDoxfSx7bmFtZToiX2lu bGluZV83X2FyZzJfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtu YW1lOiJfaW5saW5lXzdfYXJnM18iLGx2YWx1ZTohMSxydmFsdWU6ITAsY291 bnQ6MX0se25hbWU6Il9pbmxpbmVfN19hcmc0XyIsbHZhbHVlOiExLHJ2YWx1 ZTohMCxjb3VudDoxfV0sdGhpc1ZhcnM6WyJ0aGlzX3dhcnBlZCJdLGxvY2Fs VmFyczpbXX0scG9zdDp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10s bG9jYWxWYXJzOltdfSxkZWJ1ZzohMSxmdW5jTmFtZToid2FycDFEIixibG9j a1NpemU6NjR9KSxvPXQoImN3aXNlL2xpYi93cmFwcGVyIikoe2FyZ3M6WyJp bmRleCIsImFycmF5Iiwic2NhbGFyIiwic2NhbGFyIiwic2NhbGFyIl0scHJl Ontib2R5OiJ7dGhpc193YXJwZWQ9WzAsMF19IixhcmdzOltdLHRoaXNWYXJz OlsidGhpc193YXJwZWQiXSxsb2NhbFZhcnM6W119LGJvZHk6e2JvZHk6Intf aW5saW5lXzEwX2FyZzJfKHRoaXNfd2FycGVkLF9pbmxpbmVfMTBfYXJnMF8p LF9pbmxpbmVfMTBfYXJnMV89X2lubGluZV8xMF9hcmczXyhfaW5saW5lXzEw X2FyZzRfLHRoaXNfd2FycGVkWzBdLHRoaXNfd2FycGVkWzFdKX0iLGFyZ3M6 W3tuYW1lOiJfaW5saW5lXzEwX2FyZzBfIixsdmFsdWU6ITEscnZhbHVlOiEw LGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEwX2FyZzFfIixsdmFsdWU6ITAs cnZhbHVlOiExLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEwX2FyZzJfIixs dmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzEw X2FyZzNfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9LHtuYW1lOiJf aW5saW5lXzEwX2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9 XSx0aGlzVmFyczpbInRoaXNfd2FycGVkIl0sbG9jYWxWYXJzOltdfSxwb3N0 Ontib2R5OiJ7fSIsYXJnczpbXSx0aGlzVmFyczpbXSxsb2NhbFZhcnM6W119 LGRlYnVnOiExLGZ1bmNOYW1lOiJ3YXJwMkQiLGJsb2NrU2l6ZTo2NH0pLHM9 dCgiY3dpc2UvbGliL3dyYXBwZXIiKSh7YXJnczpbImluZGV4IiwiYXJyYXki LCJzY2FsYXIiLCJzY2FsYXIiLCJzY2FsYXIiXSxwcmU6e2JvZHk6Int0aGlz X3dhcnBlZD1bMCwwLDBdfSIsYXJnczpbXSx0aGlzVmFyczpbInRoaXNfd2Fy cGVkIl0sbG9jYWxWYXJzOltdfSxib2R5Ontib2R5OiJ7X2lubGluZV8xM19h cmcyXyh0aGlzX3dhcnBlZCxfaW5saW5lXzEzX2FyZzBfKSxfaW5saW5lXzEz X2FyZzFfPV9pbmxpbmVfMTNfYXJnM18oX2lubGluZV8xM19hcmc0Xyx0aGlz X3dhcnBlZFswXSx0aGlzX3dhcnBlZFsxXSx0aGlzX3dhcnBlZFsyXSl9Iixh cmdzOlt7bmFtZToiX2lubGluZV8xM19hcmcwXyIsbHZhbHVlOiExLHJ2YWx1 ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xM19hcmcxXyIsbHZhbHVl OiEwLHJ2YWx1ZTohMSxjb3VudDoxfSx7bmFtZToiX2lubGluZV8xM19hcmcy XyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFtZToiX2lubGlu ZV8xM19hcmczXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoxfSx7bmFt ZToiX2lubGluZV8xM19hcmc0XyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3Vu dDoxfV0sdGhpc1ZhcnM6WyJ0aGlzX3dhcnBlZCJdLGxvY2FsVmFyczpbXX0s cG9zdDp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJz OltdfSxkZWJ1ZzohMSxmdW5jTmFtZToid2FycDNEIixibG9ja1NpemU6NjR9 KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3N3aXRjaChlLnNoYXBlLmxl bmd0aCl7Y2FzZSAxOmkodCxyLG4uZDEsZSk7YnJlYWs7Y2FzZSAyOm8odCxy LG4uZDIsZSk7YnJlYWs7Y2FzZSAzOnModCxyLG4uZDMsZSk7YnJlYWs7ZGVm YXVsdDphKHQscixuLmJpbmQodm9pZCAwLGUpLGUuc2hhcGUubGVuZ3RoKX1y ZXR1cm4gdH19LHsiY3dpc2UvbGliL3dyYXBwZXIiOjE1MSwibmRhcnJheS1s aW5lYXItaW50ZXJwb2xhdGUiOjQ0NX1dLDQ1MjpbZnVuY3Rpb24odCxlLHIp e3ZhciBuPXQoImlvdGEtYXJyYXkiKSxhPXQoImlzLWJ1ZmZlciIpLGk9InVu ZGVmaW5lZCIhPXR5cGVvZiBGbG9hdDY0QXJyYXk7ZnVuY3Rpb24gbyh0LGUp e3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24gcygpe3ZhciB0LGU9dGhpcy5z dHJpZGUscj1uZXcgQXJyYXkoZS5sZW5ndGgpO2Zvcih0PTA7dDxyLmxlbmd0 aDsrK3Qpclt0XT1bTWF0aC5hYnMoZVt0XSksdF07ci5zb3J0KG8pO3ZhciBu PW5ldyBBcnJheShyLmxlbmd0aCk7Zm9yKHQ9MDt0PG4ubGVuZ3RoOysrdClu W3RdPXJbdF1bMV07cmV0dXJuIG59ZnVuY3Rpb24gbCh0LGUpe3ZhciByPVsi VmlldyIsZSwiZCIsdF0uam9pbigiIik7ZTwwJiYocj0iVmlld19OaWwiK3Qp O3ZhciBhPSJnZW5lcmljIj09PXQ7aWYoLTE9PT1lKXt2YXIgaT0iZnVuY3Rp b24gIityKyIoYSl7dGhpcy5kYXRhPWE7fTt2YXIgcHJvdG89IityKyIucHJv dG90eXBlO3Byb3RvLmR0eXBlPSciK3QrIic7cHJvdG8uaW5kZXg9ZnVuY3Rp b24oKXtyZXR1cm4gLTF9O3Byb3RvLnNpemU9MDtwcm90by5kaW1lbnNpb249 LTE7cHJvdG8uc2hhcGU9cHJvdG8uc3RyaWRlPXByb3RvLm9yZGVyPVtdO3By b3RvLmxvPXByb3RvLmhpPXByb3RvLnRyYW5zcG9zZT1wcm90by5zdGVwPWZ1 bmN0aW9uKCl7cmV0dXJuIG5ldyAiK3IrIih0aGlzLmRhdGEpO307cHJvdG8u Z2V0PXByb3RvLnNldD1mdW5jdGlvbigpe307cHJvdG8ucGljaz1mdW5jdGlv bigpe3JldHVybiBudWxsfTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0XyIr cisiKGEpe3JldHVybiBuZXcgIityKyIoYSk7fSI7cmV0dXJuIG5ldyBGdW5j dGlvbihpKSgpfWlmKDA9PT1lKXtpPSJmdW5jdGlvbiAiK3IrIihhLGQpIHt0 aGlzLmRhdGEgPSBhO3RoaXMub2Zmc2V0ID0gZH07dmFyIHByb3RvPSIrcisi LnByb3RvdHlwZTtwcm90by5kdHlwZT0nIit0KyInO3Byb3RvLmluZGV4PWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0fTtwcm90by5kaW1lbnNpb249 MDtwcm90by5zaXplPTE7cHJvdG8uc2hhcGU9cHJvdG8uc3RyaWRlPXByb3Rv Lm9yZGVyPVtdO3Byb3RvLmxvPXByb3RvLmhpPXByb3RvLnRyYW5zcG9zZT1w cm90by5zdGVwPWZ1bmN0aW9uICIrcisiX2NvcHkoKSB7cmV0dXJuIG5ldyAi K3IrIih0aGlzLmRhdGEsdGhpcy5vZmZzZXQpfTtwcm90by5waWNrPWZ1bmN0 aW9uICIrcisiX3BpY2soKXtyZXR1cm4gVHJpdmlhbEFycmF5KHRoaXMuZGF0 YSk7fTtwcm90by52YWx1ZU9mPXByb3RvLmdldD1mdW5jdGlvbiAiK3IrIl9n ZXQoKXtyZXR1cm4gIisoYT8idGhpcy5kYXRhLmdldCh0aGlzLm9mZnNldCki OiJ0aGlzLmRhdGFbdGhpcy5vZmZzZXRdIikrIn07cHJvdG8uc2V0PWZ1bmN0 aW9uICIrcisiX3NldCh2KXtyZXR1cm4gIisoYT8idGhpcy5kYXRhLnNldCh0 aGlzLm9mZnNldCx2KSI6InRoaXMuZGF0YVt0aGlzLm9mZnNldF09diIpKyJ9 O3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RfIityKyIoYSxiLGMsZCl7cmV0 dXJuIG5ldyAiK3IrIihhLGQpfSI7cmV0dXJuIG5ldyBGdW5jdGlvbigiVHJp dmlhbEFycmF5IixpKShjW3RdWzBdKX1pPVsiJ3VzZSBzdHJpY3QnIl07dmFy IG89bihlKSxsPW8ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJpIit0fSksdT0i dGhpcy5vZmZzZXQrIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4idGhpcy5z dHJpZGVbIit0KyJdKmkiK3R9KS5qb2luKCIrIiksaD1vLm1hcChmdW5jdGlv bih0KXtyZXR1cm4iYiIrdH0pLmpvaW4oIiwiKSxmPW8ubWFwKGZ1bmN0aW9u KHQpe3JldHVybiJjIit0fSkuam9pbigiLCIpO2kucHVzaCgiZnVuY3Rpb24g IityKyIoYSwiK2grIiwiK2YrIixkKXt0aGlzLmRhdGE9YSIsInRoaXMuc2hh cGU9WyIraCsiXSIsInRoaXMuc3RyaWRlPVsiK2YrIl0iLCJ0aGlzLm9mZnNl dD1kfDB9IiwidmFyIHByb3RvPSIrcisiLnByb3RvdHlwZSIsInByb3RvLmR0 eXBlPSciK3QrIiciLCJwcm90by5kaW1lbnNpb249IitlKSxpLnB1c2goIk9i amVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywnc2l6ZScse2dldDpmdW5jdGlv biAiK3IrIl9zaXplKCl7cmV0dXJuICIrby5tYXAoZnVuY3Rpb24odCl7cmV0 dXJuInRoaXMuc2hhcGVbIit0KyJdIn0pLmpvaW4oIioiKSwifX0pIiksMT09 PWU/aS5wdXNoKCJwcm90by5vcmRlcj1bMF0iKTooaS5wdXNoKCJPYmplY3Qu ZGVmaW5lUHJvcGVydHkocHJvdG8sJ29yZGVyJyx7Z2V0OiIpLGU8ND8oaS5w dXNoKCJmdW5jdGlvbiAiK3IrIl9vcmRlcigpeyIpLDI9PT1lP2kucHVzaCgi cmV0dXJuIChNYXRoLmFicyh0aGlzLnN0cmlkZVswXSk+TWF0aC5hYnModGhp cy5zdHJpZGVbMV0pKT9bMSwwXTpbMCwxXX19KSIpOjM9PT1lJiZpLnB1c2go InZhciBzMD1NYXRoLmFicyh0aGlzLnN0cmlkZVswXSksczE9TWF0aC5hYnMo dGhpcy5zdHJpZGVbMV0pLHMyPU1hdGguYWJzKHRoaXMuc3RyaWRlWzJdKTtp ZihzMD5zMSl7aWYoczE+czIpe3JldHVybiBbMiwxLDBdO31lbHNlIGlmKHMw PnMyKXtyZXR1cm4gWzEsMiwwXTt9ZWxzZXtyZXR1cm4gWzEsMCwyXTt9fWVs c2UgaWYoczA+czIpe3JldHVybiBbMiwwLDFdO31lbHNlIGlmKHMyPnMxKXty ZXR1cm4gWzAsMSwyXTt9ZWxzZXtyZXR1cm4gWzAsMiwxXTt9fX0pIikpOmku cHVzaCgiT1JERVJ9KSIpKSxpLnB1c2goInByb3RvLnNldD1mdW5jdGlvbiAi K3IrIl9zZXQoIitsLmpvaW4oIiwiKSsiLHYpeyIpLGE/aS5wdXNoKCJyZXR1 cm4gdGhpcy5kYXRhLnNldCgiK3UrIix2KX0iKTppLnB1c2goInJldHVybiB0 aGlzLmRhdGFbIit1KyJdPXZ9IiksaS5wdXNoKCJwcm90by5nZXQ9ZnVuY3Rp b24gIityKyJfZ2V0KCIrbC5qb2luKCIsIikrIil7IiksYT9pLnB1c2goInJl dHVybiB0aGlzLmRhdGEuZ2V0KCIrdSsiKX0iKTppLnB1c2goInJldHVybiB0 aGlzLmRhdGFbIit1KyJdfSIpLGkucHVzaCgicHJvdG8uaW5kZXg9ZnVuY3Rp b24gIityKyJfaW5kZXgoIixsLmpvaW4oKSwiKXtyZXR1cm4gIit1KyJ9Iiks aS5wdXNoKCJwcm90by5oaT1mdW5jdGlvbiAiK3IrIl9oaSgiK2wuam9pbigi LCIpKyIpe3JldHVybiBuZXcgIityKyIodGhpcy5kYXRhLCIrby5tYXAoZnVu Y3Rpb24odCl7cmV0dXJuWyIodHlwZW9mIGkiLHQsIiE9PSdudW1iZXInfHxp Iix0LCI8MCk/dGhpcy5zaGFwZVsiLHQsIl06aSIsdCwifDAiXS5qb2luKCIi KX0pLmpvaW4oIiwiKSsiLCIrby5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInRo aXMuc3RyaWRlWyIrdCsiXSJ9KS5qb2luKCIsIikrIix0aGlzLm9mZnNldCl9 Iik7dmFyIHA9by5tYXAoZnVuY3Rpb24odCl7cmV0dXJuImEiK3QrIj10aGlz LnNoYXBlWyIrdCsiXSJ9KSxkPW8ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJj Iit0KyI9dGhpcy5zdHJpZGVbIit0KyJdIn0pO2kucHVzaCgicHJvdG8ubG89 ZnVuY3Rpb24gIityKyJfbG8oIitsLmpvaW4oIiwiKSsiKXt2YXIgYj10aGlz Lm9mZnNldCxkPTAsIitwLmpvaW4oIiwiKSsiLCIrZC5qb2luKCIsIikpO2Zv cih2YXIgZz0wO2c8ZTsrK2cpaS5wdXNoKCJpZih0eXBlb2YgaSIrZysiPT09 J251bWJlcicmJmkiK2crIj49MCl7ZD1pIitnKyJ8MDtiKz1jIitnKyIqZDth IitnKyItPWR9Iik7aS5wdXNoKCJyZXR1cm4gbmV3ICIrcisiKHRoaXMuZGF0 YSwiK28ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJhIit0fSkuam9pbigiLCIp KyIsIitvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iYyIrdH0pLmpvaW4oIiwi KSsiLGIpfSIpLGkucHVzaCgicHJvdG8uc3RlcD1mdW5jdGlvbiAiK3IrIl9z dGVwKCIrbC5qb2luKCIsIikrIil7dmFyICIrby5tYXAoZnVuY3Rpb24odCl7 cmV0dXJuImEiK3QrIj10aGlzLnNoYXBlWyIrdCsiXSJ9KS5qb2luKCIsIikr IiwiK28ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJiIit0KyI9dGhpcy5zdHJp ZGVbIit0KyJdIn0pLmpvaW4oIiwiKSsiLGM9dGhpcy5vZmZzZXQsZD0wLGNl aWw9TWF0aC5jZWlsIik7Zm9yKGc9MDtnPGU7KytnKWkucHVzaCgiaWYodHlw ZW9mIGkiK2crIj09PSdudW1iZXInKXtkPWkiK2crInwwO2lmKGQ8MCl7Yys9 YiIrZysiKihhIitnKyItMSk7YSIrZysiPWNlaWwoLWEiK2crIi9kKX1lbHNl e2EiK2crIj1jZWlsKGEiK2crIi9kKX1iIitnKyIqPWR9Iik7aS5wdXNoKCJy ZXR1cm4gbmV3ICIrcisiKHRoaXMuZGF0YSwiK28ubWFwKGZ1bmN0aW9uKHQp e3JldHVybiJhIit0fSkuam9pbigiLCIpKyIsIitvLm1hcChmdW5jdGlvbih0 KXtyZXR1cm4iYiIrdH0pLmpvaW4oIiwiKSsiLGMpfSIpO3ZhciB2PW5ldyBB cnJheShlKSxtPW5ldyBBcnJheShlKTtmb3IoZz0wO2c8ZTsrK2cpdltnXT0i YVtpIitnKyJdIixtW2ddPSJiW2kiK2crIl0iO2kucHVzaCgicHJvdG8udHJh bnNwb3NlPWZ1bmN0aW9uICIrcisiX3RyYW5zcG9zZSgiK2wrIil7IitsLm1h cChmdW5jdGlvbih0LGUpe3JldHVybiB0KyI9KCIrdCsiPT09dW5kZWZpbmVk PyIrZSsiOiIrdCsifDApIn0pLmpvaW4oIjsiKSwidmFyIGE9dGhpcy5zaGFw ZSxiPXRoaXMuc3RyaWRlO3JldHVybiBuZXcgIityKyIodGhpcy5kYXRhLCIr di5qb2luKCIsIikrIiwiK20uam9pbigiLCIpKyIsdGhpcy5vZmZzZXQpfSIp LGkucHVzaCgicHJvdG8ucGljaz1mdW5jdGlvbiAiK3IrIl9waWNrKCIrbCsi KXt2YXIgYT1bXSxiPVtdLGM9dGhpcy5vZmZzZXQiKTtmb3IoZz0wO2c8ZTsr K2cpaS5wdXNoKCJpZih0eXBlb2YgaSIrZysiPT09J251bWJlcicmJmkiK2cr Ij49MCl7Yz0oYyt0aGlzLnN0cmlkZVsiK2crIl0qaSIrZysiKXwwfWVsc2V7 YS5wdXNoKHRoaXMuc2hhcGVbIitnKyJdKTtiLnB1c2godGhpcy5zdHJpZGVb IitnKyJdKX0iKTtyZXR1cm4gaS5wdXNoKCJ2YXIgY3Rvcj1DVE9SX0xJU1Rb YS5sZW5ndGgrMV07cmV0dXJuIGN0b3IodGhpcy5kYXRhLGEsYixjKX0iKSxp LnB1c2goInJldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RfIityKyIoZGF0YSxz aGFwZSxzdHJpZGUsb2Zmc2V0KXtyZXR1cm4gbmV3ICIrcisiKGRhdGEsIitv Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4ic2hhcGVbIit0KyJdIn0pLmpvaW4o IiwiKSsiLCIrby5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInN0cmlkZVsiK3Qr Il0ifSkuam9pbigiLCIpKyIsb2Zmc2V0KX0iKSxuZXcgRnVuY3Rpb24oIkNU T1JfTElTVCIsIk9SREVSIixpLmpvaW4oIlxuIikpKGNbdF0scyl9dmFyIGM9 e2Zsb2F0MzI6W10sZmxvYXQ2NDpbXSxpbnQ4OltdLGludDE2OltdLGludDMy OltdLHVpbnQ4OltdLHVpbnQxNjpbXSx1aW50MzI6W10sYXJyYXk6W10sdWlu dDhfY2xhbXBlZDpbXSxidWZmZXI6W10sZ2VuZXJpYzpbXX07ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHZvaWQgMD09PXQpcmV0dXJuKDAsYy5h cnJheVswXSkoW10pOyJudW1iZXIiPT10eXBlb2YgdCYmKHQ9W3RdKSx2b2lk IDA9PT1lJiYoZT1bdC5sZW5ndGhdKTt2YXIgbz1lLmxlbmd0aDtpZih2b2lk IDA9PT1yKXtyPW5ldyBBcnJheShvKTtmb3IodmFyIHM9by0xLHU9MTtzPj0w Oy0tcylyW3NdPXUsdSo9ZVtzXX1pZih2b2lkIDA9PT1uKWZvcihuPTAscz0w O3M8bzsrK3MpcltzXTwwJiYobi09KGVbc10tMSkqcltzXSk7Zm9yKHZhciBo PWZ1bmN0aW9uKHQpe2lmKGEodCkpcmV0dXJuImJ1ZmZlciI7aWYoaSlzd2l0 Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltv YmplY3QgRmxvYXQ2NEFycmF5XSI6cmV0dXJuImZsb2F0NjQiO2Nhc2UiW29i amVjdCBGbG9hdDMyQXJyYXldIjpyZXR1cm4iZmxvYXQzMiI7Y2FzZSJbb2Jq ZWN0IEludDhBcnJheV0iOnJldHVybiJpbnQ4IjtjYXNlIltvYmplY3QgSW50 MTZBcnJheV0iOnJldHVybiJpbnQxNiI7Y2FzZSJbb2JqZWN0IEludDMyQXJy YXldIjpyZXR1cm4iaW50MzIiO2Nhc2UiW29iamVjdCBVaW50OEFycmF5XSI6 cmV0dXJuInVpbnQ4IjtjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpyZXR1 cm4idWludDE2IjtjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4i dWludDMyIjtjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpyZXR1 cm4idWludDhfY2xhbXBlZCJ9cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImFy cmF5IjoiZ2VuZXJpYyJ9KHQpLGY9Y1toXTtmLmxlbmd0aDw9bysxOylmLnB1 c2gobChoLGYubGVuZ3RoLTEpKTtyZXR1cm4oMCxmW28rMV0pKHQsZSxyLG4p fX0seyJpb3RhLWFycmF5Ijo0MTgsImlzLWJ1ZmZlciI6NDIwfV0sNDUzOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImRvdWJsZS1i aXRzIiksYT1NYXRoLnBvdygyLC0xMDc0KSxpPS0xPj4+MDtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlKXtpZihpc05hTih0KXx8aXNOYU4oZSkpcmV0dXJuIE5h TjtpZih0PT09ZSlyZXR1cm4gdDtpZigwPT09dClyZXR1cm4gZTwwPy1hOmE7 dmFyIHI9bi5oaSh0KSxvPW4ubG8odCk7ZT50PT10PjA/bz09PWk/KHIrPTEs bz0wKTpvKz0xOjA9PT1vPyhvPWksci09MSk6by09MTtyZXR1cm4gbi5wYWNr KG8scil9fSx7ImRvdWJsZS1iaXRzIjoxNjl9XSw0NTQ6W2Z1bmN0aW9uKHQs ZSxyKXt2YXIgbj1NYXRoLlBJLGE9YygxMjApO2Z1bmN0aW9uIGkodCxlLHIs bil7cmV0dXJuWyJDIix0LGUscixuLHIsbl19ZnVuY3Rpb24gbyh0LGUscixu LGEsaSl7cmV0dXJuWyJDIix0LzMrMi8zKnIsZS8zKzIvMypuLGEvMysyLzMq cixpLzMrMi8zKm4sYSxpXX1mdW5jdGlvbiBzKHQsZSxyLGksbyxjLHUsaCxm LHApe2lmKHApaz1wWzBdLFQ9cFsxXSxfPXBbMl0sdz1wWzNdO2Vsc2V7dmFy IGQ9bCh0LGUsLW8pO3Q9ZC54LGU9ZC55O3ZhciBnPSh0LShoPShkPWwoaCxm LC1vKSkueCkpLzIsdj0oZS0oZj1kLnkpKS8yLG09ZypnLyhyKnIpK3Yqdi8o aSppKTttPjEmJihyKj1tPU1hdGguc3FydChtKSxpKj1tKTt2YXIgeT1yKnIs eD1pKmksYj0oYz09dT8tMToxKSpNYXRoLnNxcnQoTWF0aC5hYnMoKHkqeC15 KnYqdi14KmcqZykvKHkqdip2K3gqZypnKSkpO2I9PTEvMCYmKGI9MSk7dmFy IF89YipyKnYvaSsodCtoKS8yLHc9YiotaSpnL3IrKGUrZikvMixrPU1hdGgu YXNpbigoKGUtdykvaSkudG9GaXhlZCg5KSksVD1NYXRoLmFzaW4oKChmLXcp L2kpLnRvRml4ZWQoOSkpOyhrPXQ8Xz9uLWs6ayk8MCYmKGs9MipuK2spLChU PWg8Xz9uLVQ6VCk8MCYmKFQ9MipuK1QpLHUmJms+VCYmKGstPTIqbiksIXUm JlQ+ayYmKFQtPTIqbil9aWYoTWF0aC5hYnMoVC1rKT5hKXt2YXIgTT1ULEE9 aCxTPWY7VD1rK2EqKHUmJlQ+az8xOi0xKTt2YXIgRT1zKGg9XytyKk1hdGgu Y29zKFQpLGY9dytpKk1hdGguc2luKFQpLHIsaSxvLDAsdSxBLFMsW1QsTSxf LHddKX12YXIgTD1NYXRoLnRhbigoVC1rKS80KSxDPTQvMypyKkwsUD00LzMq aSpMLE89WzIqdC0odCtDKk1hdGguc2luKGspKSwyKmUtKGUtUCpNYXRoLmNv cyhrKSksaCtDKk1hdGguc2luKFQpLGYtUCpNYXRoLmNvcyhUKSxoLGZdO2lm KHApcmV0dXJuIE87RSYmKE89Ty5jb25jYXQoRSkpO2Zvcih2YXIgej0wO3o8 Ty5sZW5ndGg7KXt2YXIgST1sKE9bel0sT1t6KzFdLG8pO09beisrXT1JLngs T1t6KytdPUkueX1yZXR1cm4gT31mdW5jdGlvbiBsKHQsZSxyKXtyZXR1cm57 eDp0Kk1hdGguY29zKHIpLWUqTWF0aC5zaW4ocikseTp0Kk1hdGguc2luKHIp K2UqTWF0aC5jb3Mocil9fWZ1bmN0aW9uIGModCl7cmV0dXJuIHQqKG4vMTgw KX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9W10sbj0wLGE9 MCxsPTAsdT0wLGg9bnVsbCxmPW51bGwscD0wLGQ9MCxnPTAsdj10Lmxlbmd0 aDtnPHY7ZysrKXt2YXIgbT10W2ddLHk9bVswXTtzd2l0Y2goeSl7Y2FzZSJN IjpsPW1bMV0sdT1tWzJdO2JyZWFrO2Nhc2UiQSI6KG09cyhwLGQsbVsxXSxt WzJdLGMobVszXSksbVs0XSxtWzVdLG1bNl0sbVs3XSkpLnVuc2hpZnQoIkMi KSxtLmxlbmd0aD43JiYoci5wdXNoKG0uc3BsaWNlKDAsNykpLG0udW5zaGlm dCgiQyIpKTticmVhaztjYXNlIlMiOnZhciB4PXAsYj1kOyJDIiE9ZSYmIlMi IT1lfHwoeCs9eC1uLGIrPWItYSksbT1bIkMiLHgsYixtWzFdLG1bMl0sbVsz XSxtWzRdXTticmVhaztjYXNlIlQiOiJRIj09ZXx8IlQiPT1lPyhoPTIqcC1o LGY9MipkLWYpOihoPXAsZj1kKSxtPW8ocCxkLGgsZixtWzFdLG1bMl0pO2Jy ZWFrO2Nhc2UiUSI6aD1tWzFdLGY9bVsyXSxtPW8ocCxkLG1bMV0sbVsyXSxt WzNdLG1bNF0pO2JyZWFrO2Nhc2UiTCI6bT1pKHAsZCxtWzFdLG1bMl0pO2Jy ZWFrO2Nhc2UiSCI6bT1pKHAsZCxtWzFdLGQpO2JyZWFrO2Nhc2UiViI6bT1p KHAsZCxwLG1bMV0pO2JyZWFrO2Nhc2UiWiI6bT1pKHAsZCxsLHUpfWU9eSxw PW1bbS5sZW5ndGgtMl0sZD1tW20ubGVuZ3RoLTFdLG0ubGVuZ3RoPjQ/KG49 bVttLmxlbmd0aC00XSxhPW1bbS5sZW5ndGgtM10pOihuPXAsYT1kKSxyLnB1 c2gobSl9cmV0dXJuIHJ9fSx7fV0sNDU1OltmdW5jdGlvbih0LGUscil7ci52 ZXJ0ZXhOb3JtYWxzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ZS5sZW5n dGgsYT1uZXcgQXJyYXkobiksaT12b2lkIDA9PT1yPzFlLTY6cixvPTA7bzxu OysrbylhW29dPVswLDAsMF07Zm9yKG89MDtvPHQubGVuZ3RoOysrbylmb3Io dmFyIHM9dFtvXSxsPTAsYz1zW3MubGVuZ3RoLTFdLHU9c1swXSxoPTA7aDxz Lmxlbmd0aDsrK2gpe2w9YyxjPXUsdT1zWyhoKzEpJXMubGVuZ3RoXTtmb3Io dmFyIGY9ZVtsXSxwPWVbY10sZD1lW3VdLGc9bmV3IEFycmF5KDMpLHY9MCxt PW5ldyBBcnJheSgzKSx5PTAseD0wO3g8MzsrK3gpZ1t4XT1mW3hdLXBbeF0s dis9Z1t4XSpnW3hdLG1beF09ZFt4XS1wW3hdLHkrPW1beF0qbVt4XTtpZih2 Knk+aSl7dmFyIGI9YVtjXSxfPTEvTWF0aC5zcXJ0KHYqeSk7Zm9yKHg9MDt4 PDM7Kyt4KXt2YXIgdz0oeCsxKSUzLGs9KHgrMiklMztiW3hdKz1fKihtW3dd Kmdba10tbVtrXSpnW3ddKX19fWZvcihvPTA7bzxuOysrbyl7Yj1hW29dO3Zh ciBUPTA7Zm9yKHg9MDt4PDM7Kyt4KVQrPWJbeF0qYlt4XTtpZihUPmkpZm9y KF89MS9NYXRoLnNxcnQoVCkseD0wO3g8MzsrK3gpYlt4XSo9XztlbHNlIGZv cih4PTA7eDwzOysreCliW3hdPTB9cmV0dXJuIGF9LHIuZmFjZU5vcm1hbHM9 ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj10Lmxlbmd0aCxhPW5ldyBBcnJh eShuKSxpPXZvaWQgMD09PXI/MWUtNjpyLG89MDtvPG47KytvKXtmb3IodmFy IHM9dFtvXSxsPW5ldyBBcnJheSgzKSxjPTA7YzwzOysrYylsW2NdPWVbc1tj XV07dmFyIHU9bmV3IEFycmF5KDMpLGg9bmV3IEFycmF5KDMpO2ZvcihjPTA7 YzwzOysrYyl1W2NdPWxbMV1bY10tbFswXVtjXSxoW2NdPWxbMl1bY10tbFsw XVtjXTt2YXIgZj1uZXcgQXJyYXkoMykscD0wO2ZvcihjPTA7YzwzOysrYyl7 dmFyIGQ9KGMrMSklMyxnPShjKzIpJTM7ZltjXT11W2RdKmhbZ10tdVtnXSpo W2RdLHArPWZbY10qZltjXX1wPXA+aT8xL01hdGguc3FydChwKTowO2Zvcihj PTA7YzwzOysrYylmW2NdKj1wO2Fbb109Zn1yZXR1cm4gYX19LHt9XSw0NTY6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49T2JqZWN0Lmdl dE93blByb3BlcnR5U3ltYm9scyxhPU9iamVjdC5wcm90b3R5cGUuaGFzT3du UHJvcGVydHksaT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJh YmxlO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2ln bilyZXR1cm4hMTt2YXIgdD1uZXcgU3RyaW5nKCJhYmMiKTtpZih0WzVdPSJk ZSIsIjUiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModClbMF0pcmV0 dXJuITE7Zm9yKHZhciBlPXt9LHI9MDtyPDEwO3IrKyllWyJfIitTdHJpbmcu ZnJvbUNoYXJDb2RlKHIpXT1yO2lmKCIwMTIzNDU2Nzg5IiE9PU9iamVjdC5n ZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4g ZVt0XX0pLmpvaW4oIiIpKXJldHVybiExO3ZhciBuPXt9O3JldHVybiJhYmNk ZWZnaGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24o dCl7blt0XT10fSksImFiY2RlZmdoaWprbG1ub3BxcnN0Ij09PU9iamVjdC5r ZXlzKE9iamVjdC5hc3NpZ24oe30sbikpLmpvaW4oIiIpfWNhdGNoKHQpe3Jl dHVybiExfX0oKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKHQsZSl7Zm9yKHZh ciByLG8scz1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IG5ldyBUeXBl RXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51 bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdCh0KX0odCksbD0xO2w8 YXJndW1lbnRzLmxlbmd0aDtsKyspe2Zvcih2YXIgYyBpbiByPU9iamVjdChh cmd1bWVudHNbbF0pKWEuY2FsbChyLGMpJiYoc1tjXT1yW2NdKTtpZihuKXtv PW4ocik7Zm9yKHZhciB1PTA7dTxvLmxlbmd0aDt1KyspaS5jYWxsKHIsb1t1 XSkmJihzW29bdV1dPXJbb1t1XV0pfX1yZXR1cm4gc319LHt9XSw0NTc6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyLG4sYSxpLG8scyxsLGMpe3ZhciB1PWUraStjO2lmKGg+MCl7dmFy IGg9TWF0aC5zcXJ0KHUrMSk7dFswXT0uNSooby1sKS9oLHRbMV09LjUqKHMt bikvaCx0WzJdPS41KihyLWkpL2gsdFszXT0uNSpofWVsc2V7dmFyIGY9TWF0 aC5tYXgoZSxpLGMpLGg9TWF0aC5zcXJ0KDIqZi11KzEpO2U+PWY/KHRbMF09 LjUqaCx0WzFdPS41KihhK3IpL2gsdFsyXT0uNSoocytuKS9oLHRbM109LjUq KG8tbCkvaCk6aT49Zj8odFswXT0uNSoocithKS9oLHRbMV09LjUqaCx0WzJd PS41KihsK28pL2gsdFszXT0uNSoocy1uKS9oKToodFswXT0uNSoobitzKS9o LHRbMV09LjUqKG8rbCkvaCx0WzJdPS41KmgsdFszXT0uNSooci1hKS9oKX1y ZXR1cm4gdH19LHt9XSw0NTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPSh0PXR8fHt9KS5jZW50 ZXJ8fFswLDAsMF0scj10LnJvdGF0aW9ufHxbMCwwLDAsMV0sbj10LnJhZGl1 c3x8MTtlPVtdLnNsaWNlLmNhbGwoZSwwLDMpLHUocj1bXS5zbGljZS5jYWxs KHIsMCw0KSxyKTt2YXIgYT1uZXcgaChyLGUsTWF0aC5sb2cobikpO2Euc2V0 RGlzdGFuY2VMaW1pdHModC56b29tTWluLHQuem9vbU1heCksKCJleWUiaW4g dHx8InVwImluIHQpJiZhLmxvb2tBdCgwLHQuZXllLHQuY2VudGVyLHQudXAp O3JldHVybiBhfTt2YXIgbj10KCJmaWx0ZXJlZC12ZWN0b3IiKSxhPXQoImds LW1hdDQvbG9va0F0IiksaT10KCJnbC1tYXQ0L2Zyb21RdWF0Iiksbz10KCJn bC1tYXQ0L2ludmVydCIpLHM9dCgiLi9saWIvcXVhdEZyb21GcmFtZSIpO2Z1 bmN0aW9uIGwodCxlLHIpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3codCwy KStNYXRoLnBvdyhlLDIpK01hdGgucG93KHIsMikpfWZ1bmN0aW9uIGModCxl LHIsbil7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyh0LDIpK01hdGgucG93 KGUsMikrTWF0aC5wb3cociwyKStNYXRoLnBvdyhuLDIpKX1mdW5jdGlvbiB1 KHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0sYT1lWzJdLGk9ZVszXSxvPWMocixu LGEsaSk7bz4xZS02Pyh0WzBdPXIvbyx0WzFdPW4vbyx0WzJdPWEvbyx0WzNd PWkvbyk6KHRbMF09dFsxXT10WzJdPTAsdFszXT0xKX1mdW5jdGlvbiBoKHQs ZSxyKXt0aGlzLnJhZGl1cz1uKFtyXSksdGhpcy5jZW50ZXI9bihlKSx0aGlz LnJvdGF0aW9uPW4odCksdGhpcy5jb21wdXRlZFJhZGl1cz10aGlzLnJhZGl1 cy5jdXJ2ZSgwKSx0aGlzLmNvbXB1dGVkQ2VudGVyPXRoaXMuY2VudGVyLmN1 cnZlKDApLHRoaXMuY29tcHV0ZWRSb3RhdGlvbj10aGlzLnJvdGF0aW9uLmN1 cnZlKDApLHRoaXMuY29tcHV0ZWRVcD1bLjEsMCwwXSx0aGlzLmNvbXB1dGVk RXllPVsuMSwwLDBdLHRoaXMuY29tcHV0ZWRNYXRyaXg9Wy4xLDAsMCwwLDAs MCwwLDAsMCwwLDAsMCwwLDAsMCwwXSx0aGlzLnJlY2FsY01hdHJpeCgwKX12 YXIgZj1oLnByb3RvdHlwZTtmLmxhc3RUPWZ1bmN0aW9uKCl7cmV0dXJuIE1h dGgubWF4KHRoaXMucmFkaXVzLmxhc3RUKCksdGhpcy5jZW50ZXIubGFzdFQo KSx0aGlzLnJvdGF0aW9uLmxhc3RUKCkpfSxmLnJlY2FsY01hdHJpeD1mdW5j dGlvbih0KXt0aGlzLnJhZGl1cy5jdXJ2ZSh0KSx0aGlzLmNlbnRlci5jdXJ2 ZSh0KSx0aGlzLnJvdGF0aW9uLmN1cnZlKHQpO3ZhciBlPXRoaXMuY29tcHV0 ZWRSb3RhdGlvbjt1KGUsZSk7dmFyIHI9dGhpcy5jb21wdXRlZE1hdHJpeDtp KHIsZSk7dmFyIG49dGhpcy5jb21wdXRlZENlbnRlcixhPXRoaXMuY29tcHV0 ZWRFeWUsbz10aGlzLmNvbXB1dGVkVXAscz1NYXRoLmV4cCh0aGlzLmNvbXB1 dGVkUmFkaXVzWzBdKTthWzBdPW5bMF0rcypyWzJdLGFbMV09blsxXStzKnJb Nl0sYVsyXT1uWzJdK3MqclsxMF0sb1swXT1yWzFdLG9bMV09cls1XSxvWzJd PXJbOV07Zm9yKHZhciBsPTA7bDwzOysrbCl7Zm9yKHZhciBjPTAsaD0wO2g8 MzsrK2gpYys9cltsKzQqaF0qYVtoXTtyWzEyK2xdPS1jfX0sZi5nZXRNYXRy aXg9ZnVuY3Rpb24odCxlKXt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgcj10 aGlzLmNvbXB1dGVkTWF0cml4O2lmKGUpe2Zvcih2YXIgbj0wO248MTY7Kytu KWVbbl09cltuXTtyZXR1cm4gZX1yZXR1cm4gcn0sZi5pZGxlPWZ1bmN0aW9u KHQpe3RoaXMuY2VudGVyLmlkbGUodCksdGhpcy5yYWRpdXMuaWRsZSh0KSx0 aGlzLnJvdGF0aW9uLmlkbGUodCl9LGYuZmx1c2g9ZnVuY3Rpb24odCl7dGhp cy5jZW50ZXIuZmx1c2godCksdGhpcy5yYWRpdXMuZmx1c2godCksdGhpcy5y b3RhdGlvbi5mbHVzaCh0KX0sZi5wYW49ZnVuY3Rpb24odCxlLHIsbil7ZT1l fHwwLHI9cnx8MCxuPW58fDAsdGhpcy5yZWNhbGNNYXRyaXgodCk7dmFyIGE9 dGhpcy5jb21wdXRlZE1hdHJpeCxpPWFbMV0sbz1hWzVdLHM9YVs5XSxjPWwo aSxvLHMpO2kvPWMsby89YyxzLz1jO3ZhciB1PWFbMF0saD1hWzRdLGY9YVs4 XSxwPXUqaStoKm8rZipzLGQ9bCh1LT1pKnAsaC09bypwLGYtPXMqcCk7dS89 ZCxoLz1kLGYvPWQ7dmFyIGc9YVsyXSx2PWFbNl0sbT1hWzEwXSx5PWcqaSt2 Km8rbSpzLHg9Zyp1K3YqaCttKmYsYj1sKGctPXkqaSt4KnUsdi09eSpvK3gq aCxtLT15KnMreCpmKTtnLz1iLHYvPWIsbS89Yjt2YXIgXz11KmUraSpyLHc9 aCplK28qcixrPWYqZStzKnI7dGhpcy5jZW50ZXIubW92ZSh0LF8sdyxrKTt2 YXIgVD1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKTtUPU1hdGgu bWF4KDFlLTQsVCtuKSx0aGlzLnJhZGl1cy5zZXQodCxNYXRoLmxvZyhUKSl9 LGYucm90YXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMucmVjYWxjTWF0cml4 KHQpLGU9ZXx8MCxyPXJ8fDA7dmFyIGE9dGhpcy5jb21wdXRlZE1hdHJpeCxp PWFbMF0sbz1hWzRdLHM9YVs4XSx1PWFbMV0saD1hWzVdLGY9YVs5XSxwPWFb Ml0sZD1hWzZdLGc9YVsxMF0sdj1lKmkrcip1LG09ZSpvK3IqaCx5PWUqcyty KmYseD0tKGQqeS1nKm0pLGI9LShnKnYtcCp5KSxfPS0ocCptLWQqdiksdz1N YXRoLnNxcnQoTWF0aC5tYXgoMCwxLU1hdGgucG93KHgsMiktTWF0aC5wb3co YiwyKS1NYXRoLnBvdyhfLDIpKSksaz1jKHgsYixfLHcpO2s+MWUtNj8oeC89 ayxiLz1rLF8vPWssdy89ayk6KHg9Yj1fPTAsdz0xKTt2YXIgVD10aGlzLmNv bXB1dGVkUm90YXRpb24sTT1UWzBdLEE9VFsxXSxTPVRbMl0sRT1UWzNdLEw9 TSp3K0UqeCtBKl8tUypiLEM9QSp3K0UqYitTKngtTSpfLFA9Uyp3K0UqXytN KmItQSp4LE89RSp3LU0qeC1BKmItUypfO2lmKG4pe3g9cCxiPWQsXz1nO3Zh ciB6PU1hdGguc2luKG4pL2woeCxiLF8pO3gqPXosYio9eixfKj16LE89Tyoo dz1NYXRoLmNvcyhlKSktKEw9TCp3K08qeCtDKl8tUCpiKSp4LShDPUMqdytP KmIrUCp4LUwqXykqYi0oUD1QKncrTypfK0wqYi1DKngpKl99dmFyIEk9YyhM LEMsUCxPKTtJPjFlLTY/KEwvPUksQy89SSxQLz1JLE8vPUkpOihMPUM9UD0w LE89MSksdGhpcy5yb3RhdGlvbi5zZXQodCxMLEMsUCxPKX0sZi5sb29rQXQ9 ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5yZWNhbGNNYXRyaXgodCkscj1yfHx0 aGlzLmNvbXB1dGVkQ2VudGVyLGU9ZXx8dGhpcy5jb21wdXRlZEV5ZSxuPW58 fHRoaXMuY29tcHV0ZWRVcDt2YXIgaT10aGlzLmNvbXB1dGVkTWF0cml4O2Eo aSxlLHIsbik7dmFyIG89dGhpcy5jb21wdXRlZFJvdGF0aW9uO3MobyxpWzBd LGlbMV0saVsyXSxpWzRdLGlbNV0saVs2XSxpWzhdLGlbOV0saVsxMF0pLHUo byxvKSx0aGlzLnJvdGF0aW9uLnNldCh0LG9bMF0sb1sxXSxvWzJdLG9bM10p O2Zvcih2YXIgbD0wLGM9MDtjPDM7KytjKWwrPU1hdGgucG93KHJbY10tZVtj XSwyKTt0aGlzLnJhZGl1cy5zZXQodCwuNSpNYXRoLmxvZyhNYXRoLm1heChs LDFlLTYpKSksdGhpcy5jZW50ZXIuc2V0KHQsclswXSxyWzFdLHJbMl0pfSxm LnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUscixuKXt0aGlzLmNlbnRlci5tb3Zl KHQsZXx8MCxyfHwwLG58fDApfSxmLnNldE1hdHJpeD1mdW5jdGlvbih0LGUp e3ZhciByPXRoaXMuY29tcHV0ZWRSb3RhdGlvbjtzKHIsZVswXSxlWzFdLGVb Ml0sZVs0XSxlWzVdLGVbNl0sZVs4XSxlWzldLGVbMTBdKSx1KHIsciksdGhp cy5yb3RhdGlvbi5zZXQodCxyWzBdLHJbMV0sclsyXSxyWzNdKTt2YXIgbj10 aGlzLmNvbXB1dGVkTWF0cml4O28obixlKTt2YXIgYT1uWzE1XTtpZihNYXRo LmFicyhhKT4xZS02KXt2YXIgaT1uWzEyXS9hLGw9blsxM10vYSxjPW5bMTRd L2E7dGhpcy5yZWNhbGNNYXRyaXgodCk7dmFyIGg9TWF0aC5leHAodGhpcy5j b21wdXRlZFJhZGl1c1swXSk7dGhpcy5jZW50ZXIuc2V0KHQsaS1uWzJdKmgs bC1uWzZdKmgsYy1uWzEwXSpoKSx0aGlzLnJhZGl1cy5pZGxlKHQpfWVsc2Ug dGhpcy5jZW50ZXIuaWRsZSh0KSx0aGlzLnJhZGl1cy5pZGxlKHQpfSxmLnNl dERpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7ZT4wJiZ0aGlzLnJhZGl1cy5zZXQo dCxNYXRoLmxvZyhlKSl9LGYuc2V0RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24o dCxlKXt0PXQ+MD9NYXRoLmxvZyh0KTotMS8wLGU9ZT4wP01hdGgubG9nKGUp OjEvMCxlPU1hdGgubWF4KGUsdCksdGhpcy5yYWRpdXMuYm91bmRzWzBdWzBd PXQsdGhpcy5yYWRpdXMuYm91bmRzWzFdWzBdPWV9LGYuZ2V0RGlzdGFuY2VM aW1pdHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yYWRpdXMuYm91bmRzO3Jl dHVybiB0Pyh0WzBdPU1hdGguZXhwKGVbMF1bMF0pLHRbMV09TWF0aC5leHAo ZVsxXVswXSksdCk6W01hdGguZXhwKGVbMF1bMF0pLE1hdGguZXhwKGVbMV1b MF0pXX0sZi50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWNhbGNN YXRyaXgodGhpcy5sYXN0VCgpKSx7Y2VudGVyOnRoaXMuY29tcHV0ZWRDZW50 ZXIuc2xpY2UoKSxyb3RhdGlvbjp0aGlzLmNvbXB1dGVkUm90YXRpb24uc2xp Y2UoKSxkaXN0YW5jZTpNYXRoLmxvZyh0aGlzLmNvbXB1dGVkUmFkaXVzWzBd KSx6b29tTWluOnRoaXMucmFkaXVzLmJvdW5kc1swXVswXSx6b29tTWF4OnRo aXMucmFkaXVzLmJvdW5kc1sxXVswXX19LGYuZnJvbUpTT049ZnVuY3Rpb24o dCl7dmFyIGU9dGhpcy5sYXN0VCgpLHI9dC5jZW50ZXI7ciYmdGhpcy5jZW50 ZXIuc2V0KGUsclswXSxyWzFdLHJbMl0pO3ZhciBuPXQucm90YXRpb247biYm dGhpcy5yb3RhdGlvbi5zZXQoZSxuWzBdLG5bMV0sblsyXSxuWzNdKTt2YXIg YT10LmRpc3RhbmNlO2EmJmE+MCYmdGhpcy5yYWRpdXMuc2V0KGUsTWF0aC5s b2coYSkpLHRoaXMuc2V0RGlzdGFuY2VMaW1pdHModC56b29tTWluLHQuem9v bU1heCl9fSx7Ii4vbGliL3F1YXRGcm9tRnJhbWUiOjQ1NywiZmlsdGVyZWQt dmVjdG9yIjoyMjksImdsLW1hdDQvZnJvbVF1YXQiOjI2NSwiZ2wtbWF0NC9p bnZlcnQiOjI2OCwiZ2wtbWF0NC9sb29rQXQiOjI2OX1dLDQ1OTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJyZXBlYXQtc3RyaW5n Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbihyPSJ1bmRl ZmluZWQiIT10eXBlb2Ygcj9yKyIiOiIgIixlKSt0fX0seyJyZXBlYXQtc3Ry aW5nIjo1MDJ9XSw0NjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZnVuY3Rpb24gbih0LGUpe2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm5b dF07dmFyIHI9W3RdOyJzdHJpbmciPT10eXBlb2YgZXx8QXJyYXkuaXNBcnJh eShlKT9lPXticmFja2V0czplfTplfHwoZT17fSk7dmFyIG49ZS5icmFja2V0 cz9BcnJheS5pc0FycmF5KGUuYnJhY2tldHMpP2UuYnJhY2tldHM6W2UuYnJh Y2tldHNdOlsie30iLCJbXSIsIigpIl0sYT1lLmVzY2FwZXx8Il9fXyIsaT0h IWUuZmxhdDtuLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9bmV3IFJlZ0V4 cChbIlxcIix0WzBdLCJbXlxcIix0WzBdLCJcXCIsdFsxXSwiXSpcXCIsdFsx XV0uam9pbigiIikpLG49W107ZnVuY3Rpb24gaShlLGksbyl7dmFyIHM9ci5w dXNoKGUuc2xpY2UodFswXS5sZW5ndGgsLXRbMV0ubGVuZ3RoKSktMTtyZXR1 cm4gbi5wdXNoKHMpLGErcythfXIuZm9yRWFjaChmdW5jdGlvbih0LG4pe2Zv cih2YXIgYSxvPTA7dCE9YTspaWYoYT10LHQ9dC5yZXBsYWNlKGUsaSksbysr PjFlNCl0aHJvdyBFcnJvcigiUmVmZXJlbmNlcyBoYXZlIGNpcmN1bGFyIGRl cGVuZGVuY3kuIFBsZWFzZSwgY2hlY2sgdGhlbS4iKTtyW25dPXR9KSxuPW4u cmV2ZXJzZSgpLHI9ci5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG4uZm9yRWFj aChmdW5jdGlvbihyKXtlPWUucmVwbGFjZShuZXcgUmVnRXhwKCIoXFwiK2Er cisiXFwiK2ErIikiLCJnIiksdFswXSsiJDEiK3RbMV0pfSksZX0pfSk7dmFy IG89bmV3IFJlZ0V4cCgiXFwiK2ErIihbMC05XSspXFwiK2EpO3JldHVybiBp P3I6ZnVuY3Rpb24gdChlLHIsbil7Zm9yKHZhciBhLGk9W10scz0wO2E9by5l eGVjKGUpOyl7aWYocysrPjFlNCl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVm ZXJlbmNlcyBpbiBwYXJlbnRoZXNpcyIpO2kucHVzaChlLnNsaWNlKDAsYS5p bmRleCkpLGkucHVzaCh0KHJbYVsxXV0scikpLGU9ZS5zbGljZShhLmluZGV4 K2FbMF0ubGVuZ3RoKX1yZXR1cm4gaS5wdXNoKGUpLGl9KHJbMF0scil9ZnVu Y3Rpb24gYSh0LGUpe2lmKGUmJmUuZmxhdCl7dmFyIHIsbj1lJiZlLmVzY2Fw ZXx8Il9fXyIsYT10WzBdO2lmKCFhKXJldHVybiIiO2Zvcih2YXIgaT1uZXcg UmVnRXhwKCJcXCIrbisiKFswLTldKylcXCIrbiksbz0wO2EhPXI7KXtpZihv Kys+MWU0KXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2VzIGluICIr dCk7cj1hLGE9YS5yZXBsYWNlKGkscyl9cmV0dXJuIGF9cmV0dXJuIHQucmVk dWNlKGZ1bmN0aW9uIHQoZSxyKXtyZXR1cm4gQXJyYXkuaXNBcnJheShyKSYm KHI9ci5yZWR1Y2UodCwiIikpLGUrcn0sIiIpO2Z1bmN0aW9uIHMoZSxyKXtp ZihudWxsPT10W3JdKXRocm93IEVycm9yKCJSZWZlcmVuY2UgIityKyJpcyB1 bmRlZmluZWQiKTtyZXR1cm4gdFtyXX19ZnVuY3Rpb24gaSh0LGUpe3JldHVy biBBcnJheS5pc0FycmF5KHQpP2EodCxlKTpuKHQsZSl9aS5wYXJzZT1uLGku c3RyaW5naWZ5PWEsZS5leHBvcnRzPWl9LHt9XSw0NjE6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicGljay1ieS1hbGlhcyIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTthcmd1bWVudHMubGVuZ3RoPjEm Jih0PWFyZ3VtZW50cyk7InN0cmluZyI9PXR5cGVvZiB0P3Q9dC5zcGxpdCgv XHMvKS5tYXAocGFyc2VGbG9hdCk6Im51bWJlciI9PXR5cGVvZiB0JiYodD1b dF0pO3QubGVuZ3RoJiYibnVtYmVyIj09dHlwZW9mIHRbMF0/ZT0xPT09dC5s ZW5ndGg/e3dpZHRoOnRbMF0saGVpZ2h0OnRbMF0seDowLHk6MH06Mj09PXQu bGVuZ3RoP3t3aWR0aDp0WzBdLGhlaWdodDp0WzFdLHg6MCx5OjB9Ont4OnRb MF0seTp0WzFdLHdpZHRoOnRbMl0tdFswXXx8MCxoZWlnaHQ6dFszXS10WzFd fHwwfTp0JiYodD1uKHQse2xlZnQ6InggbCBsZWZ0IExlZnQiLHRvcDoieSB0 IHRvcCBUb3AiLHdpZHRoOiJ3IHdpZHRoIFcgV2lkdGgiLGhlaWdodDoiaCBo ZWlnaHQgVyBXaWR0aCIsYm90dG9tOiJiIGJvdHRvbSBCb3R0b20iLHJpZ2h0 OiJyIHJpZ2h0IFJpZ2h0In0pLGU9e3g6dC5sZWZ0fHwwLHk6dC50b3B8fDB9 LG51bGw9PXQud2lkdGg/dC5yaWdodD9lLndpZHRoPXQucmlnaHQtZS54OmUu d2lkdGg9MDplLndpZHRoPXQud2lkdGgsbnVsbD09dC5oZWlnaHQ/dC5ib3R0 b20/ZS5oZWlnaHQ9dC5ib3R0b20tZS55OmUuaGVpZ2h0PTA6ZS5oZWlnaHQ9 dC5oZWlnaHQpO3JldHVybiBlfX0seyJwaWNrLWJ5LWFsaWFzIjo0Njd9XSw0 NjI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFy IGU9W107cmV0dXJuIHQucmVwbGFjZShhLGZ1bmN0aW9uKHQscixhKXt2YXIg bz1yLnRvTG93ZXJDYXNlKCk7Zm9yKGE9ZnVuY3Rpb24odCl7dmFyIGU9dC5t YXRjaChpKTtyZXR1cm4gZT9lLm1hcChOdW1iZXIpOltdfShhKSwibSI9PW8m JmEubGVuZ3RoPjImJihlLnB1c2goW3JdLmNvbmNhdChhLnNwbGljZSgwLDIp KSksbz0ibCIscj0ibSI9PXI/ImwiOiJMIik7Oyl7aWYoYS5sZW5ndGg9PW5b b10pcmV0dXJuIGEudW5zaGlmdChyKSxlLnB1c2goYSk7aWYoYS5sZW5ndGg8 bltvXSl0aHJvdyBuZXcgRXJyb3IoIm1hbGZvcm1lZCBwYXRoIGRhdGEiKTtl LnB1c2goW3JdLmNvbmNhdChhLnNwbGljZSgwLG5bb10pKSl9fSksZX07dmFy IG49e2E6NyxjOjYsaDoxLGw6MixtOjIscTo0LHM6NCx0OjIsdjoxLHo6MH0s YT0vKFthc3R2enFtaGxjXSkoW15hc3R2enFtaGxjXSopL2dpO3ZhciBpPS8t P1swLTldKlwuP1swLTldKyg/OmVbLStdP1xkKyk/L2dpfSx7fV0sNDYzOltm dW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZXx8KGU9 WzAsIiJdKSx0PVN0cmluZyh0KTt2YXIgcj1wYXJzZUZsb2F0KHQsMTApO3Jl dHVybiBlWzBdPXIsZVsxXT10Lm1hdGNoKC9bXGQuXC1cK10qXHMqKC4qKS8p WzFdfHwiIixlfX0se31dLDQ2NDpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlv bih0KXsoZnVuY3Rpb24oKXt2YXIgcixuLGEsaSxvLHM7InVuZGVmaW5lZCIh PXR5cGVvZiBwZXJmb3JtYW5jZSYmbnVsbCE9PXBlcmZvcm1hbmNlJiZwZXJm b3JtYW5jZS5ub3c/ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHBlcmZv cm1hbmNlLm5vdygpfToidW5kZWZpbmVkIiE9dHlwZW9mIHQmJm51bGwhPT10 JiZ0LmhydGltZT8oZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuKHIoKS1v KS8xZTZ9LG49dC5ocnRpbWUsaT0ocj1mdW5jdGlvbigpe3ZhciB0O3JldHVy biAxZTkqKHQ9bigpKVswXSt0WzFdfSkoKSxzPTFlOSp0LnVwdGltZSgpLG89 aS1zKTpEYXRlLm5vdz8oZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIERh dGUubm93KCktYX0sYT1EYXRlLm5vdygpKTooZS5leHBvcnRzPWZ1bmN0aW9u KCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCktYX0sYT0obmV3IERhdGUp LmdldFRpbWUoKSl9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHQoIl9wcm9j ZXNzIikpfSx7X3Byb2Nlc3M6NDg0fV0sNDY1OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Lmxl bmd0aDtpZihlPG4pe2Zvcih2YXIgcj0xLGk9MDtpPGU7KytpKWZvcih2YXIg bz0wO288aTsrK28paWYodFtpXTx0W29dKXI9LXI7ZWxzZSBpZih0W2ldPT09 dFtvXSlyZXR1cm4gMDtyZXR1cm4gcn1mb3IodmFyIHM9YS5tYWxsb2NVaW50 OChlKSxpPTA7aTxlOysraSlzW2ldPTA7Zm9yKHZhciByPTEsaT0wO2k8ZTsr K2kpaWYoIXNbaV0pe3ZhciBsPTE7c1tpXT0xO2Zvcih2YXIgbz10W2ldO28h PT1pO289dFtvXSl7aWYoc1tvXSlyZXR1cm4gYS5mcmVlVWludDgocyksMDts Kz0xLHNbb109MX0xJmx8fChyPS1yKX1yZXR1cm4gYS5mcmVlVWludDgocyks cn07dmFyIG49MzIsYT10KCJ0eXBlZGFycmF5LXBvb2wiKX0seyJ0eXBlZGFy cmF5LXBvb2wiOjU0NH1dLDQ2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCJ0eXBlZGFycmF5LXBvb2wiKSxhPXQoImludmVydC1w ZXJtdXRhdGlvbiIpO3IucmFuaz1mdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0 aDtzd2l0Y2goZSl7Y2FzZSAwOmNhc2UgMTpyZXR1cm4gMDtjYXNlIDI6cmV0 dXJuIHRbMV19dmFyIHIsaSxvLHM9bi5tYWxsb2NVaW50MzIoZSksbD1uLm1h bGxvY1VpbnQzMihlKSxjPTA7Zm9yKGEodCxsKSxvPTA7bzxlOysrbylzW29d PXRbb107Zm9yKG89ZS0xO28+MDstLW8paT1sW29dLHI9c1tvXSxzW29dPXNb aV0sc1tpXT1yLGxbb109bFtyXSxsW3JdPWksYz0oYytyKSpvO3JldHVybiBu LmZyZWVVaW50MzIobCksbi5mcmVlVWludDMyKHMpLGN9LHIudW5yYW5rPWZ1 bmN0aW9uKHQsZSxyKXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiByfHxbXTtj YXNlIDE6cmV0dXJuIHI/KHJbMF09MCxyKTpbMF07Y2FzZSAyOnJldHVybiBy PyhlPyhyWzBdPTAsclsxXT0xKTooclswXT0xLHJbMV09MCkscik6ZT9bMCwx XTpbMSwwXX12YXIgbixhLGksbz0xO2Zvcigocj1yfHxuZXcgQXJyYXkodCkp WzBdPTAsaT0xO2k8dDsrK2kpcltpXT1pLG89byppfDA7Zm9yKGk9dC0xO2k+ MDstLWkpZT1lLShuPWUvb3wwKSpvfDAsbz1vL2l8MCxhPTB8cltpXSxyW2ld PTB8cltuXSxyW25dPTB8YTtyZXR1cm4gcn19LHsiaW52ZXJ0LXBlcm11dGF0 aW9uIjo0MTcsInR5cGVkYXJyYXktcG9vbCI6NTQ0fV0sNDY3OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cil7dmFyIG4saSxvPXt9O2lmKCJzdHJpbmciPT10eXBlb2YgZSYmKGU9YShl KSksQXJyYXkuaXNBcnJheShlKSl7dmFyIHM9e307Zm9yKGk9MDtpPGUubGVu Z3RoO2krKylzW2VbaV1dPSEwO2U9c31mb3IobiBpbiBlKWVbbl09YShlW25d KTt2YXIgbD17fTtmb3IobiBpbiBlKXt2YXIgYz1lW25dO2lmKEFycmF5Lmlz QXJyYXkoYykpZm9yKGk9MDtpPGMubGVuZ3RoO2krKyl7dmFyIHU9Y1tpXTtp ZihyJiYobFt1XT0hMCksdSBpbiB0KXtpZihvW25dPXRbdV0scilmb3IodmFy IGg9aTtoPGMubGVuZ3RoO2grKylsW2NbaF1dPSEwO2JyZWFrfX1lbHNlIG4g aW4gdCYmKGVbbl0mJihvW25dPXRbbl0pLHImJihsW25dPSEwKSl9aWYocilm b3IobiBpbiB0KWxbbl18fChvW25dPXRbbl0pO3JldHVybiBvfTt2YXIgbj17 fTtmdW5jdGlvbiBhKHQpe3JldHVybiBuW3RdP25bdF06KCJzdHJpbmciPT10 eXBlb2YgdCYmKHQ9blt0XT10LnNwbGl0KC9ccyosXHMqfFxzKy8pKSx0KX19 LHt9XSw0Njg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTB8ZS5sZW5ndGgsYT10Lmxl bmd0aCxpPVtuZXcgQXJyYXkociksbmV3IEFycmF5KHIpXSxvPTA7bzxyOysr bylpWzBdW29dPVtdLGlbMV1bb109W107Zm9yKHZhciBvPTA7bzxhOysrbyl7 dmFyIHM9dFtvXTtpWzBdW3NbMF1dLnB1c2gocyksaVsxXVtzWzFdXS5wdXNo KHMpfWZvcih2YXIgbD1bXSxvPTA7bzxyOysrbylpWzBdW29dLmxlbmd0aCtp WzFdW29dLmxlbmd0aD09PTAmJmwucHVzaChbb10pO2Z1bmN0aW9uIGModCxl KXt2YXIgcj1pW2VdW3RbZV1dO3Iuc3BsaWNlKHIuaW5kZXhPZih0KSwxKX1m dW5jdGlvbiB1KHQscixhKXtmb3IodmFyIG8scyxsLHU9MDt1PDI7Kyt1KWlm KGlbdV1bcl0ubGVuZ3RoPjApe289aVt1XVtyXVswXSxsPXU7YnJlYWt9cz1v WzFebF07Zm9yKHZhciBoPTA7aDwyOysraClmb3IodmFyIGY9aVtoXVtyXSxw PTA7cDxmLmxlbmd0aDsrK3Ape3ZhciBkPWZbcF0sZz1kWzFeaF0sdj1uKGVb dF0sZVtyXSxlW3NdLGVbZ10pO3Y+MCYmKG89ZCxzPWcsbD1oKX1yZXR1cm4g YT9zOihvJiZjKG8sbCkscyl9ZnVuY3Rpb24gaCh0LHIpe3ZhciBhPWlbcl1b dF1bMF0sbz1bdF07YyhhLHIpO2Zvcih2YXIgcz1hWzFecl07Oyl7Zm9yKDtz IT09dDspby5wdXNoKHMpLHM9dShvW28ubGVuZ3RoLTJdLHMsITEpO2lmKGlb MF1bdF0ubGVuZ3RoK2lbMV1bdF0ubGVuZ3RoPT09MClicmVhazt2YXIgbD1v W28ubGVuZ3RoLTFdLGg9dCxmPW9bMV0scD11KGwsaCwhMCk7aWYobihlW2xd LGVbaF0sZVtmXSxlW3BdKTwwKWJyZWFrO28ucHVzaCh0KSxzPXUobCxoKX1y ZXR1cm4gb31mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGVbMV09PT1lW2UubGVu Z3RoLTFdfWZvcih2YXIgbz0wO288cjsrK28pZm9yKHZhciBwPTA7cDwyOysr cCl7Zm9yKHZhciBkPVtdO2lbcF1bb10ubGVuZ3RoPjA7KXtpWzBdW29dLmxl bmd0aDt2YXIgZz1oKG8scCk7ZihkLGcpP2QucHVzaC5hcHBseShkLGcpOihk Lmxlbmd0aD4wJiZsLnB1c2goZCksZD1nKX1kLmxlbmd0aD4wJiZsLnB1c2go ZCl9cmV0dXJuIGx9O3ZhciBuPXQoImNvbXBhcmUtYW5nbGUiKX0seyJjb21w YXJlLWFuZ2xlIjoxMjl9XSw0Njk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW4odCxl Lmxlbmd0aCksYT1uZXcgQXJyYXkoZS5sZW5ndGgpLGk9bmV3IEFycmF5KGUu bGVuZ3RoKSxvPVtdLHM9MDtzPGUubGVuZ3RoOysrcyl7dmFyIGw9cltzXS5s ZW5ndGg7aVtzXT1sLGFbc109ITAsbDw9MSYmby5wdXNoKHMpfWZvcig7by5s ZW5ndGg+MDspe3ZhciBjPW8ucG9wKCk7YVtjXT0hMTtmb3IodmFyIHU9cltj XSxzPTA7czx1Lmxlbmd0aDsrK3Mpe3ZhciBoPXVbc107MD09LS1pW2hdJiZv LnB1c2goaCl9fWZvcih2YXIgZj1uZXcgQXJyYXkoZS5sZW5ndGgpLHA9W10s cz0wO3M8ZS5sZW5ndGg7KytzKWlmKGFbc10pe3ZhciBjPXAubGVuZ3RoO2Zb c109YyxwLnB1c2goZVtzXSl9ZWxzZSBmW3NdPS0xO2Zvcih2YXIgZD1bXSxz PTA7czx0Lmxlbmd0aDsrK3Mpe3ZhciBnPXRbc107YVtnWzBdXSYmYVtnWzFd XSYmZC5wdXNoKFtmW2dbMF1dLGZbZ1sxXV1dKX1yZXR1cm5bZCxwXX07dmFy IG49dCgiZWRnZXMtdG8tYWRqYWNlbmN5LWxpc3QiKX0seyJlZGdlcy10by1h ZGphY2VuY3ktbGlzdCI6MTc0fV0sNDcwOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWModCxl KTt0PXJbMF07Zm9yKHZhciBoPShlPXJbMV0pLmxlbmd0aCxmPSh0Lmxlbmd0 aCxuKHQsZS5sZW5ndGgpKSxwPTA7cDxoOysrcClpZihmW3BdLmxlbmd0aCUy PT0xKXRocm93IG5ldyBFcnJvcigicGxhbmFyLWdyYXBoLXRvLXBvbHlsaW5l OiBncmFwaCBtdXN0IGJlIG1hbmlmb2xkIik7dmFyIGQ9YSh0LGUpO2Zvcih2 YXIgZz0oZD1kLmZpbHRlcihmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5n dGgsbj1bMF0sYT0wO2E8cjsrK2Epe3ZhciBpPWVbdFthXV0sbD1lW3RbKGEr MSklcl1dLGM9bygtaVswXSxpWzFdKSx1PW8oLWlbMF0sbFsxXSksaD1vKGxb MF0saVsxXSksZj1vKGxbMF0sbFsxXSk7bj1zKG4scyhzKGMsdSkscyhoLGYp KSl9cmV0dXJuIG5bbi5sZW5ndGgtMV0+MH0pKS5sZW5ndGgsdj1uZXcgQXJy YXkoZyksbT1uZXcgQXJyYXkoZykscD0wO3A8ZzsrK3Ape3ZbcF09cDt2YXIg eT1uZXcgQXJyYXkoZykseD1kW3BdLm1hcChmdW5jdGlvbih0KXtyZXR1cm4g ZVt0XX0pLGI9aShbeF0pLF89MDt0OmZvcih2YXIgdz0wO3c8ZzsrK3cpaWYo eVt3XT0wLHAhPT13KXtmb3IodmFyIGs9ZFt3XSxUPWsubGVuZ3RoLE09MDtN PFQ7KytNKXt2YXIgQT1iKGVba1tNXV0pO2lmKDAhPT1BKXtBPDAmJih5W3dd PTEsXys9MSk7Y29udGludWUgdH19eVt3XT0xLF8rPTF9bVtwXT1bXyxwLHld fW0uc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlWzBdLXRbMF19KTtmb3Io dmFyIHA9MDtwPGc7KytwKWZvcih2YXIgeT1tW3BdLFM9eVsxXSxFPXlbMl0s dz0wO3c8ZzsrK3cpRVt3XSYmKHZbd109Uyk7Zm9yKHZhciBMPWZ1bmN0aW9u KHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj0wO3I8dDsrK3IpZVtyXT1b XTtyZXR1cm4gZX0oZykscD0wO3A8ZzsrK3ApTFtwXS5wdXNoKHZbcF0pLExb dltwXV0ucHVzaChwKTtmb3IodmFyIEM9e30sUD11KGgsITEpLHA9MDtwPGc7 KytwKWZvcih2YXIgaz1kW3BdLFQ9ay5sZW5ndGgsdz0wO3c8VDsrK3cpe3Zh ciBPPWtbd10sej1rWyh3KzEpJVRdLEk9TWF0aC5taW4oTyx6KSsiOiIrTWF0 aC5tYXgoTyx6KTtpZihJIGluIEMpe3ZhciBEPUNbSV07TFtEXS5wdXNoKHAp LExbcF0ucHVzaChEKSxQW09dPVBbel09ITB9ZWxzZSBDW0ldPXB9ZnVuY3Rp b24gUih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj0wO3I8ZTsrK3IpaWYoIVBb dFtyXV0pcmV0dXJuITE7cmV0dXJuITB9Zm9yKHZhciBGPVtdLEI9dShnLC0x KSxwPTA7cDxnOysrcCl2W3BdIT09cHx8UihkW3BdKT9CW3BdPS0xOihGLnB1 c2gocCksQltwXT0wKTt2YXIgcj1bXTtmb3IoO0YubGVuZ3RoPjA7KXt2YXIg Tj1GLnBvcCgpLGo9TFtOXTtsKGosZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1l fSk7dmFyIFYsVT1qLmxlbmd0aCxxPUJbTl07aWYoMD09PXEpe3ZhciBrPWRb Tl07Vj1ba119Zm9yKHZhciBwPTA7cDxVOysrcCl7dmFyIEg9altwXTtpZigh KEJbSF0+PTApJiYoQltIXT0xXnEsRi5wdXNoKEgpLDA9PT1xKSl7dmFyIGs9 ZFtIXTtSKGspfHwoay5yZXZlcnNlKCksVi5wdXNoKGspKX19MD09PXEmJnIu cHVzaChWKX1yZXR1cm4gcn07dmFyIG49dCgiZWRnZXMtdG8tYWRqYWNlbmN5 LWxpc3QiKSxhPXQoInBsYW5hci1kdWFsIiksaT10KCJwb2ludC1pbi1iaWct cG9seWdvbiIpLG89dCgidHdvLXByb2R1Y3QiKSxzPXQoInJvYnVzdC1zdW0i KSxsPXQoInVuaXEiKSxjPXQoIi4vbGliL3RyaW0tbGVhdmVzIik7ZnVuY3Rp b24gdSh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkodCksbj0wO248dDsrK24p cltuXT1lO3JldHVybiByfX0seyIuL2xpYi90cmltLWxlYXZlcyI6NDY5LCJl ZGdlcy10by1hZGphY2VuY3ktbGlzdCI6MTc0LCJwbGFuYXItZHVhbCI6NDY4 LCJwb2ludC1pbi1iaWctcG9seWdvbiI6NDc0LCJyb2J1c3Qtc3VtIjo1MTQs InR3by1wcm9kdWN0Ijo1NDIsdW5pcTo1NDZ9XSw0NzE6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4vcXVhZCIpfSx7Ii4v cXVhZCI6NDczfV0sNDcyOltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRd WzExM11bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7ZHVwOjExM31dLDQ3Mzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaW5hcnkt c2VhcmNoLWJvdW5kcyIpLGE9dCgiY2xhbXAiKSxpPXQoInBhcnNlLXJlY3Qi KSxvPXQoImFycmF5LWJvdW5kcyIpLHM9dCgicGljay1ieS1hbGlhcyIpLGw9 dCgiZGVmaW5lZCIpLGM9dCgiZmxhdHRlbi12ZXJ0ZXgtZGF0YSIpLHU9dCgi aXMtb2JqIiksaD10KCJkdHlwZSIpLGY9dCgibWF0aC1sb2cyIikscD0xMDcz NzQxODI0O2Z1bmN0aW9uIGQodCxlKXtmb3IodmFyIHI9ZVswXSxuPWVbMV0s aT0xLyhlWzJdLXIpLG89MS8oZVszXS1uKSxzPW5ldyBBcnJheSh0Lmxlbmd0 aCksbD0wLGM9dC5sZW5ndGgvMjtsPGM7bCsrKXNbMipsXT1hKCh0WzIqbF0t cikqaSwwLDEpLHNbMipsKzFdPWEoKHRbMipsKzFdLW4pKm8sMCwxKTtyZXR1 cm4gc31lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwoZT17fSksdD1jKHQs ImZsb2F0NjQiKSxlPXMoZSx7Ym91bmRzOiJyYW5nZSBib3VuZHMgZGF0YUJv eCBkYXRhYm94IixtYXhEZXB0aDoiZGVwdGggbWF4RGVwdGggbWF4ZGVwdGgg bGV2ZWwgbWF4TGV2ZWwgbWF4bGV2ZWwgbGV2ZWxzIixkdHlwZToidHlwZSBk dHlwZSBmb3JtYXQgb3V0IGRzdCBvdXRwdXQgZGVzdGluYXRpb24ifSk7dmFy IHI9bChlLm1heERlcHRoLDI1NSksYT1sKGUuYm91bmRzLG8odCwyKSk7YVsw XT09PWFbMl0mJmFbMl0rKyxhWzFdPT09YVszXSYmYVszXSsrO3ZhciBnLHY9 ZCh0LGEpLG09dC5sZW5ndGg+Pj4xO2UuZHR5cGV8fChlLmR0eXBlPSJhcnJh eSIpLCJzdHJpbmciPT10eXBlb2YgZS5kdHlwZT9nPW5ldyhoKGUuZHR5cGUp KShtKTplLmR0eXBlJiYoZz1lLmR0eXBlLEFycmF5LmlzQXJyYXkoZykmJihn Lmxlbmd0aD1tKSk7Zm9yKHZhciB5PTA7eTxtOysreSlnW3ldPXk7dmFyIHg9 W10sYj1bXSxfPVtdLHc9W107IWZ1bmN0aW9uIHQoZSxuLGEsaSxvLHMpe2lm KCFpLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbD14W29dfHwoeFtvXT1bXSk7 dmFyIGM9X1tvXXx8KF9bb109W10pO3ZhciB1PWJbb118fChiW29dPVtdKTt2 YXIgaD1sLmxlbmd0aDtvKys7aWYobz5yfHxzPnApe2Zvcih2YXIgZj0wO2Y8 aS5sZW5ndGg7ZisrKWwucHVzaChpW2ZdKSxjLnB1c2gocyksdS5wdXNoKG51 bGwsbnVsbCxudWxsLG51bGwpO3JldHVybiBofWwucHVzaChpWzBdKTtjLnB1 c2gocyk7aWYoaS5sZW5ndGg8PTEpcmV0dXJuIHUucHVzaChudWxsLG51bGws bnVsbCxudWxsKSxoO3ZhciBkPS41KmE7dmFyIGc9ZStkLG09bitkO3ZhciB5 PVtdLHc9W10saz1bXSxUPVtdO2Zvcih2YXIgTT0xLEE9aS5sZW5ndGg7TTxB O00rKyl7dmFyIFM9aVtNXSxFPXZbMipTXSxMPXZbMipTKzFdO0U8Zz9MPG0/ eS5wdXNoKFMpOncucHVzaChTKTpMPG0/ay5wdXNoKFMpOlQucHVzaChTKX1z PDw9Mjt1LnB1c2godChlLG4sZCx5LG8scyksdChlLG0sZCx3LG8scysxKSx0 KGcsbixkLGssbyxzKzIpLHQoZyxtLGQsVCxvLHMrMykpO3JldHVybiBofSgw LDAsMSxnLDAsMSk7Zm9yKHZhciBrPTAsVD0wO1Q8eC5sZW5ndGg7VCsrKXt2 YXIgTT14W1RdO2lmKGcuc2V0KWcuc2V0KE0sayk7ZWxzZSBmb3IodmFyIEE9 MCxTPU0ubGVuZ3RoO0E8UztBKyspZ1tBK2tdPU1bQV07dmFyIEU9ayt4W1Rd Lmxlbmd0aDt3W1RdPVtrLEVdLGs9RX1yZXR1cm4gZy5yYW5nZT1mdW5jdGlv bigpe3ZhciBlLHI9W10sbz1hcmd1bWVudHMubGVuZ3RoO2Zvcig7by0tOyly W29dPWFyZ3VtZW50c1tvXTtpZih1KHJbci5sZW5ndGgtMV0pKXt2YXIgYz1y LnBvcCgpO3IubGVuZ3RofHxudWxsPT1jLngmJm51bGw9PWMubCYmbnVsbD09 Yy5sZWZ0fHwocj1bY10sZT17fSksZT1zKGMse2xldmVsOiJsZXZlbCBtYXhM ZXZlbCIsZDoiZCBkaWFtIGRpYW1ldGVyIHIgcmFkaXVzIHB4IHB4U2l6ZSBw aXhlbCBwaXhlbFNpemUgbWF4RCBzaXplIG1pblNpemUiLGxvZDoibG9kIGRl dGFpbHMgcmFuZ2VzIG9mZnNldHMifSl9ZWxzZSBlPXt9O3IubGVuZ3RofHwo cj1hKTt2YXIgaD1pLmFwcGx5KHZvaWQgMCxyKSxwPVtNYXRoLm1pbihoLngs aC54K2gud2lkdGgpLE1hdGgubWluKGgueSxoLnkraC5oZWlnaHQpLE1hdGgu bWF4KGgueCxoLngraC53aWR0aCksTWF0aC5tYXgoaC55LGgueStoLmhlaWdo dCldLGc9cFswXSx2PXBbMV0sbT1wWzJdLHk9cFszXSxrPWQoW2csdixtLHld LGEpLFQ9a1swXSxNPWtbMV0sQT1rWzJdLFM9a1szXSxFPWwoZS5sZXZlbCx4 Lmxlbmd0aCk7aWYobnVsbCE9ZS5kKXt2YXIgQzsibnVtYmVyIj09dHlwZW9m IGUuZD9DPVtlLmQsZS5kXTplLmQubGVuZ3RoJiYoQz1lLmQpLEU9TWF0aC5t aW4oTWF0aC5tYXgoTWF0aC5jZWlsKC1mKE1hdGguYWJzKENbMF0pLyhhWzJd LWFbMF0pKSksTWF0aC5jZWlsKC1mKE1hdGguYWJzKENbMV0pLyhhWzNdLWFb MV0pKSkpLEUpfWlmKEU9TWF0aC5taW4oRSx4Lmxlbmd0aCksZS5sb2QpcmV0 dXJuIGZ1bmN0aW9uKHQsZSxyLGEsaSl7Zm9yKHZhciBvPVtdLHM9MDtzPGk7 cysrKXt2YXIgbD1fW3NdLGM9d1tzXVswXSx1PUwodCxlLHMpLGg9TChyLGEs cyksZj1uLmdlKGwsdSkscD1uLmd0KGwsaCxmLGwubGVuZ3RoLTEpO29bc109 W2YrYyxwK2NdfXJldHVybiBvfShULE0sQSxTLEUpO3ZhciBQPVtdO3JldHVy biBmdW5jdGlvbiBlKHIsbixhLGksbyxzKXtpZihudWxsIT09byYmbnVsbCE9 PXMpe3ZhciBsPXIrYSxjPW4rYTtpZighKFQ+bHx8TT5jfHxBPHJ8fFM8bnx8 aT49RXx8bz09PXMpKXt2YXIgdT14W2ldO3ZvaWQgMD09PXMmJihzPXUubGVu Z3RoKTtmb3IodmFyIGg9bztoPHM7aCsrKXt2YXIgZj11W2hdLHA9dFsyKmZd LGQ9dFsyKmYrMV07cD49ZyYmcDw9bSYmZD49diYmZDw9eSYmUC5wdXNoKGYp fXZhciBfPWJbaV0sdz1fWzQqbyswXSxrPV9bNCpvKzFdLEw9X1s0Km8rMl0s Qz1fWzQqbyszXSxPPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW51bGwsbj0w O251bGw9PT1yOylpZihyPXRbNCplK25dLCsrbj50Lmxlbmd0aClyZXR1cm4g bnVsbDtyZXR1cm4gcn0oXyxvKzEpLHo9LjUqYSxJPWkrMTtlKHIsbix6LEks dyxrfHxMfHxDfHxPKSxlKHIsbit6LHosSSxrLEx8fEN8fE8pLGUocit6LG4s eixJLEwsQ3x8TyksZShyK3osbit6LHosSSxDLE8pfX19KDAsMCwxLDAsMCwx KSxQfSxnO2Z1bmN0aW9uIEwodCxlLHIpe2Zvcih2YXIgbj0xLGE9LjUsaT0u NSxvPS41LHM9MDtzPHI7cysrKW48PD0yLG4rPXQ8YT9lPGk/MDoxOmU8aT8y OjMsbyo9LjUsYSs9dDxhPy1vOm8saSs9ZTxpPy1vOm87cmV0dXJuIG59fX0s eyJhcnJheS1ib3VuZHMiOjY4LCJiaW5hcnktc2VhcmNoLWJvdW5kcyI6NDcy LGNsYW1wOjExNyxkZWZpbmVkOjE2NixkdHlwZToxNzEsImZsYXR0ZW4tdmVy dGV4LWRhdGEiOjIzMCwiaXMtb2JqIjo0MjMsIm1hdGgtbG9nMiI6NDM0LCJw YXJzZS1yZWN0Ijo0NjEsInBpY2stYnktYWxpYXMiOjQ2N31dLDQ3NDpbZnVu Y3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9 dC5sZW5ndGgscj1bXSxpPVtdLHM9MDtzPGU7KytzKWZvcih2YXIgdT10W3Nd LGg9dS5sZW5ndGgsZj1oLTEscD0wO3A8aDtmPXArKyl7dmFyIGQ9dVtmXSxn PXVbcF07ZFswXT09PWdbMF0/aS5wdXNoKFtkLGddKTpyLnB1c2goW2QsZ10p fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gMD09PWkubGVuZ3RoP2M6KHY9bChp KSxmdW5jdGlvbih0KXtyZXR1cm4gdih0WzBdLHRbMV0pPzA6MX0pO3ZhciB2 O3ZhciBtPWEocikseT1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihy KXt2YXIgYT1vLmxlKGUsclswXSk7aWYoYTwwKXJldHVybiAxO3ZhciBpPXRb YV07aWYoIWkpe2lmKCEoYT4wJiZlW2FdPT09clswXSkpcmV0dXJuIDE7aT10 W2EtMV19Zm9yKHZhciBzPTE7aTspe3ZhciBsPWkua2V5LGM9bihyLGxbMF0s bFsxXSk7aWYobFswXVswXTxsWzFdWzBdKWlmKGM8MClpPWkubGVmdDtlbHNl e2lmKCEoYz4wKSlyZXR1cm4gMDtzPS0xLGk9aS5yaWdodH1lbHNlIGlmKGM+ MClpPWkubGVmdDtlbHNle2lmKCEoYzwwKSlyZXR1cm4gMDtzPTEsaT1pLnJp Z2h0fX1yZXR1cm4gc319KG0uc2xhYnMsbS5jb29yZGluYXRlcyk7cmV0dXJu IDA9PT1pLmxlbmd0aD95OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9u KHIpe3JldHVybiB0KHJbMF0sclsxXSk/MDplKHIpfX0obChpKSx5KX07dmFy IG49dCgicm9idXN0LW9yaWVudGF0aW9uIilbM10sYT10KCJzbGFiLWRlY29t cG9zaXRpb24iKSxpPXQoImludGVydmFsLXRyZWUtMWQiKSxvPXQoImJpbmFy eS1zZWFyY2gtYm91bmRzIik7ZnVuY3Rpb24gcygpe3JldHVybiEwfWZ1bmN0 aW9uIGwodCl7Zm9yKHZhciBlPXt9LHI9MDtyPHQubGVuZ3RoOysrcil7dmFy IG49dFtyXSxhPW5bMF1bMF0sbz1uWzBdWzFdLGw9blsxXVsxXSxjPVtNYXRo Lm1pbihvLGwpLE1hdGgubWF4KG8sbCldO2EgaW4gZT9lW2FdLnB1c2goYyk6 ZVthXT1bY119dmFyIHU9e30saD1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8 aC5sZW5ndGg7KytyKXt2YXIgZj1lW2hbcl1dO3VbaFtyXV09aShmKX1yZXR1 cm4gZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG49dFtl XTtyZXR1cm4hIW4mJiEhbi5xdWVyeVBvaW50KHIscyl9fSh1KX1mdW5jdGlv biBjKHQpe3JldHVybiAxfX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6OTMs ImludGVydmFsLXRyZWUtMWQiOjQxNiwicm9idXN0LW9yaWVudGF0aW9uIjo1 MDksInNsYWItZGVjb21wb3NpdGlvbiI6NTI1fV0sNDc1OltmdW5jdGlvbih0 LGUscil7dmFyIG4sYT10KCIuL2xpYi9idWlsZC1sb2ciKSxpPXQoIi4vbGli L2Vwc2lsb24iKSxvPXQoIi4vbGliL2ludGVyc2VjdGVyIikscz10KCIuL2xp Yi9zZWdtZW50LWNoYWluZXIiKSxsPXQoIi4vbGliL3NlZ21lbnQtc2VsZWN0 b3IiKSxjPXQoIi4vbGliL2dlb2pzb24iKSx1PSExLGg9aSgpO2Z1bmN0aW9u IGYodCxlLHIpe3ZhciBhPW4uc2VnbWVudHModCksaT1uLnNlZ21lbnRzKGUp LG89cihuLmNvbWJpbmUoYSxpKSk7cmV0dXJuIG4ucG9seWdvbihvKX1uPXti dWlsZExvZzpmdW5jdGlvbih0KXtyZXR1cm4hMD09PXQ/dT1hKCk6ITE9PT10 JiYodT0hMSksITEhPT11JiZ1Lmxpc3R9LGVwc2lsb246ZnVuY3Rpb24odCl7 cmV0dXJuIGguZXBzaWxvbih0KX0sc2VnbWVudHM6ZnVuY3Rpb24odCl7dmFy IGU9byghMCxoLHUpO3JldHVybiB0LnJlZ2lvbnMuZm9yRWFjaChlLmFkZFJl Z2lvbikse3NlZ21lbnRzOmUuY2FsY3VsYXRlKHQuaW52ZXJ0ZWQpLGludmVy dGVkOnQuaW52ZXJ0ZWR9fSxjb21iaW5lOmZ1bmN0aW9uKHQsZSl7cmV0dXJu e2NvbWJpbmVkOm8oITEsaCx1KS5jYWxjdWxhdGUodC5zZWdtZW50cyx0Lmlu dmVydGVkLGUuc2VnbWVudHMsZS5pbnZlcnRlZCksaW52ZXJ0ZWQxOnQuaW52 ZXJ0ZWQsaW52ZXJ0ZWQyOmUuaW52ZXJ0ZWR9fSxzZWxlY3RVbmlvbjpmdW5j dGlvbih0KXtyZXR1cm57c2VnbWVudHM6bC51bmlvbih0LmNvbWJpbmVkLHUp LGludmVydGVkOnQuaW52ZXJ0ZWQxfHx0LmludmVydGVkMn19LHNlbGVjdElu dGVyc2VjdDpmdW5jdGlvbih0KXtyZXR1cm57c2VnbWVudHM6bC5pbnRlcnNl Y3QodC5jb21iaW5lZCx1KSxpbnZlcnRlZDp0LmludmVydGVkMSYmdC5pbnZl cnRlZDJ9fSxzZWxlY3REaWZmZXJlbmNlOmZ1bmN0aW9uKHQpe3JldHVybntz ZWdtZW50czpsLmRpZmZlcmVuY2UodC5jb21iaW5lZCx1KSxpbnZlcnRlZDp0 LmludmVydGVkMSYmIXQuaW52ZXJ0ZWQyfX0sc2VsZWN0RGlmZmVyZW5jZVJl djpmdW5jdGlvbih0KXtyZXR1cm57c2VnbWVudHM6bC5kaWZmZXJlbmNlUmV2 KHQuY29tYmluZWQsdSksaW52ZXJ0ZWQ6IXQuaW52ZXJ0ZWQxJiZ0LmludmVy dGVkMn19LHNlbGVjdFhvcjpmdW5jdGlvbih0KXtyZXR1cm57c2VnbWVudHM6 bC54b3IodC5jb21iaW5lZCx1KSxpbnZlcnRlZDp0LmludmVydGVkMSE9PXQu aW52ZXJ0ZWQyfX0scG9seWdvbjpmdW5jdGlvbih0KXtyZXR1cm57cmVnaW9u czpzKHQuc2VnbWVudHMsaCx1KSxpbnZlcnRlZDp0LmludmVydGVkfX0scG9s eWdvbkZyb21HZW9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBjLnRvUG9seWdv bihuLHQpfSxwb2x5Z29uVG9HZW9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBj LmZyb21Qb2x5Z29uKG4saCx0KX0sdW5pb246ZnVuY3Rpb24odCxlKXtyZXR1 cm4gZih0LGUsbi5zZWxlY3RVbmlvbil9LGludGVyc2VjdDpmdW5jdGlvbih0 LGUpe3JldHVybiBmKHQsZSxuLnNlbGVjdEludGVyc2VjdCl9LGRpZmZlcmVu Y2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZih0LGUsbi5zZWxlY3REaWZmZXJl bmNlKX0sZGlmZmVyZW5jZVJldjpmdW5jdGlvbih0LGUpe3JldHVybiBmKHQs ZSxuLnNlbGVjdERpZmZlcmVuY2VSZXYpfSx4b3I6ZnVuY3Rpb24odCxlKXty ZXR1cm4gZih0LGUsbi5zZWxlY3RYb3IpfX0sIm9iamVjdCI9PXR5cGVvZiB3 aW5kb3cmJih3aW5kb3cuUG9seUJvb2w9biksZS5leHBvcnRzPW59LHsiLi9s aWIvYnVpbGQtbG9nIjo0NzYsIi4vbGliL2Vwc2lsb24iOjQ3NywiLi9saWIv Z2VvanNvbiI6NDc4LCIuL2xpYi9pbnRlcnNlY3RlciI6NDc5LCIuL2xpYi9z ZWdtZW50LWNoYWluZXIiOjQ4MSwiLi9saWIvc2VnbWVudC1zZWxlY3RvciI6 NDgyfV0sNDc2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9u KCl7dmFyIHQsZT0wLHI9ITE7ZnVuY3Rpb24gbihlLHIpe3JldHVybiB0Lmxp c3QucHVzaCh7dHlwZTplLGRhdGE6cj9KU09OLnBhcnNlKEpTT04uc3RyaW5n aWZ5KHIpKTp2b2lkIDB9KSx0fXJldHVybiB0PXtsaXN0OltdLHNlZ21lbnRJ ZDpmdW5jdGlvbigpe3JldHVybiBlKyt9LGNoZWNrSW50ZXJzZWN0aW9uOmZ1 bmN0aW9uKHQsZSl7cmV0dXJuIG4oImNoZWNrIix7c2VnMTp0LHNlZzI6ZX0p fSxzZWdtZW50Q2hvcDpmdW5jdGlvbih0LGUpe3JldHVybiBuKCJkaXZfc2Vn Iix7c2VnOnQscHQ6ZX0pLG4oImNob3AiLHtzZWc6dCxwdDplfSl9LHN0YXR1 c1JlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gbigicG9wX3NlZyIse3NlZzp0 fSl9LHNlZ21lbnRVcGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIG4oInNlZ191 cGRhdGUiLHtzZWc6dH0pfSxzZWdtZW50TmV3OmZ1bmN0aW9uKHQsZSl7cmV0 dXJuIG4oIm5ld19zZWciLHtzZWc6dCxwcmltYXJ5OmV9KX0sc2VnbWVudFJl bW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gbigicmVtX3NlZyIse3NlZzp0fSl9 LHRlbXBTdGF0dXM6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuKCJ0ZW1wX3N0 YXR1cyIse3NlZzp0LGFib3ZlOmUsYmVsb3c6cn0pfSxyZXdpbmQ6ZnVuY3Rp b24odCl7cmV0dXJuIG4oInJld2luZCIse3NlZzp0fSl9LHN0YXR1czpmdW5j dGlvbih0LGUscil7cmV0dXJuIG4oInN0YXR1cyIse3NlZzp0LGFib3ZlOmUs YmVsb3c6cn0pfSx2ZXJ0OmZ1bmN0aW9uKGUpe3JldHVybiBlPT09cj90Oihy PWUsbigidmVydCIse3g6ZX0pKX0sbG9nOmZ1bmN0aW9uKHQpe3JldHVybiJz dHJpbmciIT10eXBlb2YgdCYmKHQ9SlNPTi5zdHJpbmdpZnkodCwhMSwiICAi KSksbigibG9nIix7dHh0OnR9KX0scmVzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g bigicmVzZXQiKX0sc2VsZWN0ZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4oInNl bGVjdGVkIix7c2Vnczp0fSl9LGNoYWluU3RhcnQ6ZnVuY3Rpb24odCl7cmV0 dXJuIG4oImNoYWluX3N0YXJ0Iix7c2VnOnR9KX0sY2hhaW5SZW1vdmVIZWFk OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oImNoYWluX3JlbV9oZWFkIix7aW5k ZXg6dCxwdDplfSl9LGNoYWluUmVtb3ZlVGFpbDpmdW5jdGlvbih0LGUpe3Jl dHVybiBuKCJjaGFpbl9yZW1fdGFpbCIse2luZGV4OnQscHQ6ZX0pfSxjaGFp bk5ldzpmdW5jdGlvbih0LGUpe3JldHVybiBuKCJjaGFpbl9uZXciLHtwdDE6 dCxwdDI6ZX0pfSxjaGFpbk1hdGNoOmZ1bmN0aW9uKHQpe3JldHVybiBuKCJj aGFpbl9tYXRjaCIse2luZGV4OnR9KX0sY2hhaW5DbG9zZTpmdW5jdGlvbih0 KXtyZXR1cm4gbigiY2hhaW5fY2xvc2UiLHtpbmRleDp0fSl9LGNoYWluQWRk SGVhZDpmdW5jdGlvbih0LGUpe3JldHVybiBuKCJjaGFpbl9hZGRfaGVhZCIs e2luZGV4OnQscHQ6ZX0pfSxjaGFpbkFkZFRhaWw6ZnVuY3Rpb24odCxlKXty ZXR1cm4gbigiY2hhaW5fYWRkX3RhaWwiLHtpbmRleDp0LHB0OmV9KX0sY2hh aW5Db25uZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oImNoYWluX2NvbiIs e2luZGV4MTp0LGluZGV4MjplfSl9LGNoYWluUmV2ZXJzZTpmdW5jdGlvbih0 KXtyZXR1cm4gbigiY2hhaW5fcmV2Iix7aW5kZXg6dH0pfSxjaGFpbkpvaW46 ZnVuY3Rpb24odCxlKXtyZXR1cm4gbigiY2hhaW5fam9pbiIse2luZGV4MTp0 LGluZGV4MjplfSl9LGRvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbigiZG9uZSIp fX19fSx7fV0sNDc3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQpeyJudW1iZXIiIT10eXBlb2YgdCYmKHQ9MWUtMTApO3ZhciBlPXtl cHNpbG9uOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYm KHQ9ZSksdH0scG9pbnRBYm92ZU9yT25MaW5lOmZ1bmN0aW9uKGUscixuKXt2 YXIgYT1yWzBdLGk9clsxXSxvPW5bMF0scz1uWzFdLGw9ZVswXTtyZXR1cm4o by1hKSooZVsxXS1pKS0ocy1pKSoobC1hKT49LXR9LHBvaW50QmV0d2Vlbjpm dW5jdGlvbihlLHIsbil7dmFyIGE9ZVsxXS1yWzFdLGk9blswXS1yWzBdLG89 ZVswXS1yWzBdLHM9blsxXS1yWzFdLGw9byppK2EqcztyZXR1cm4hKGw8dHx8 bC0oaSppK3Mqcyk+LXQpfSxwb2ludHNTYW1lWDpmdW5jdGlvbihlLHIpe3Jl dHVybiBNYXRoLmFicyhlWzBdLXJbMF0pPHR9LHBvaW50c1NhbWVZOmZ1bmN0 aW9uKGUscil7cmV0dXJuIE1hdGguYWJzKGVbMV0tclsxXSk8dH0scG9pbnRz U2FtZTpmdW5jdGlvbih0LHIpe3JldHVybiBlLnBvaW50c1NhbWVYKHQscikm JmUucG9pbnRzU2FtZVkodCxyKX0scG9pbnRzQ29tcGFyZTpmdW5jdGlvbih0 LHIpe3JldHVybiBlLnBvaW50c1NhbWVYKHQscik/ZS5wb2ludHNTYW1lWSh0 LHIpPzA6dFsxXTxyWzFdPy0xOjE6dFswXTxyWzBdPy0xOjF9LHBvaW50c0Nv bGxpbmVhcjpmdW5jdGlvbihlLHIsbil7dmFyIGE9ZVswXS1yWzBdLGk9ZVsx XS1yWzFdLG89clswXS1uWzBdLHM9clsxXS1uWzFdO3JldHVybiBNYXRoLmFi cyhhKnMtbyppKTx0fSxsaW5lc0ludGVyc2VjdDpmdW5jdGlvbihlLHIsbixh KXt2YXIgaT1yWzBdLWVbMF0sbz1yWzFdLWVbMV0scz1hWzBdLW5bMF0sbD1h WzFdLW5bMV0sYz1pKmwtbypzO2lmKE1hdGguYWJzKGMpPHQpcmV0dXJuITE7 dmFyIHU9ZVswXS1uWzBdLGg9ZVsxXS1uWzFdLGY9KHMqaC1sKnUpL2MscD0o aSpoLW8qdSkvYyxkPXthbG9uZ0E6MCxhbG9uZ0I6MCxwdDpbZVswXStmKmks ZVsxXStmKm9dfTtyZXR1cm4gZC5hbG9uZ0E9Zjw9LXQ/LTI6Zjx0Py0xOmYt MTw9LXQ/MDpmLTE8dD8xOjIsZC5hbG9uZ0I9cDw9LXQ/LTI6cDx0Py0xOnAt MTw9LXQ/MDpwLTE8dD8xOjIsZH0scG9pbnRJbnNpZGVSZWdpb246ZnVuY3Rp b24oZSxyKXtmb3IodmFyIG49ZVswXSxhPWVbMV0saT1yW3IubGVuZ3RoLTFd WzBdLG89cltyLmxlbmd0aC0xXVsxXSxzPSExLGw9MDtsPHIubGVuZ3RoO2wr Kyl7dmFyIGM9cltsXVswXSx1PXJbbF1bMV07dS1hPnQhPW8tYT50JiYoaS1j KSooYS11KS8oby11KStjLW4+dCYmKHM9IXMpLGk9YyxvPXV9cmV0dXJuIHN9 fTtyZXR1cm4gZX19LHt9XSw0Nzg6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj17 dG9Qb2x5Z29uOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihlKXtpZihlLmxl bmd0aDw9MClyZXR1cm4gdC5zZWdtZW50cyh7aW52ZXJ0ZWQ6ITEscmVnaW9u czpbXX0pO2Z1bmN0aW9uIHIoZSl7dmFyIHI9ZS5zbGljZSgwLGUubGVuZ3Ro LTEpO3JldHVybiB0LnNlZ21lbnRzKHtpbnZlcnRlZDohMSxyZWdpb25zOlty XX0pfWZvcih2YXIgbj1yKGVbMF0pLGE9MTthPGUubGVuZ3RoO2ErKyluPXQu c2VsZWN0RGlmZmVyZW5jZSh0LmNvbWJpbmUobixyKGVbYV0pKSk7cmV0dXJu IG59aWYoIlBvbHlnb24iPT09ZS50eXBlKXJldHVybiB0LnBvbHlnb24ocihl LmNvb3JkaW5hdGVzKSk7aWYoIk11bHRpUG9seWdvbiI9PT1lLnR5cGUpe2Zv cih2YXIgbj10LnNlZ21lbnRzKHtpbnZlcnRlZDohMSxyZWdpb25zOltdfSks YT0wO2E8ZS5jb29yZGluYXRlcy5sZW5ndGg7YSsrKW49dC5zZWxlY3RVbmlv bih0LmNvbWJpbmUobixyKGUuY29vcmRpbmF0ZXNbYV0pKSk7cmV0dXJuIHQu cG9seWdvbihuKX10aHJvdyBuZXcgRXJyb3IoIlBvbHlCb29sOiBDYW5ub3Qg Y29udmVydCBHZW9KU09OIG9iamVjdCB0byBQb2x5Qm9vbCBwb2x5Z29uIil9 LGZyb21Qb2x5Z29uOmZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQscil7 cmV0dXJuIGUucG9pbnRJbnNpZGVSZWdpb24oWy41Kih0WzBdWzBdK3RbMV1b MF0pLC41Kih0WzBdWzFdK3RbMV1bMV0pXSxyKX1mdW5jdGlvbiBhKHQpe3Jl dHVybntyZWdpb246dCxjaGlsZHJlbjpbXX19cj10LnBvbHlnb24odC5zZWdt ZW50cyhyKSk7dmFyIGk9YShudWxsKTtmdW5jdGlvbiBvKHQsZSl7Zm9yKHZh ciByPTA7cjx0LmNoaWxkcmVuLmxlbmd0aDtyKyspe2lmKG4oZSwocz10LmNo aWxkcmVuW3JdKS5yZWdpb24pKXJldHVybiB2b2lkIG8ocyxlKX12YXIgaT1h KGUpO2ZvcihyPTA7cjx0LmNoaWxkcmVuLmxlbmd0aDtyKyspe3ZhciBzO24o KHM9dC5jaGlsZHJlbltyXSkucmVnaW9uLGUpJiYoaS5jaGlsZHJlbi5wdXNo KHMpLHQuY2hpbGRyZW4uc3BsaWNlKHIsMSksci0tKX10LmNoaWxkcmVuLnB1 c2goaSl9Zm9yKHZhciBzPTA7czxyLnJlZ2lvbnMubGVuZ3RoO3MrKyl7dmFy IGw9ci5yZWdpb25zW3NdO2wubGVuZ3RoPDN8fG8oaSxsKX1mdW5jdGlvbiBj KHQsZSl7Zm9yKHZhciByPTAsbj10W3QubGVuZ3RoLTFdWzBdLGE9dFt0Lmxl bmd0aC0xXVsxXSxpPVtdLG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHM9dFtv XVswXSxsPXRbb11bMV07aS5wdXNoKFtzLGxdKSxyKz1sKm4tcyphLG49cyxh PWx9cmV0dXJuIHI8MCE9PWUmJmkucmV2ZXJzZSgpLGkucHVzaChbaVswXVsw XSxpWzBdWzFdXSksaX12YXIgdT1bXTtmdW5jdGlvbiBoKHQpe3ZhciBlPVtj KHQucmVnaW9uLCExKV07dS5wdXNoKGUpO2Zvcih2YXIgcj0wO3I8dC5jaGls ZHJlbi5sZW5ndGg7cisrKWUucHVzaChmKHQuY2hpbGRyZW5bcl0pKX1mdW5j dGlvbiBmKHQpe2Zvcih2YXIgZT0wO2U8dC5jaGlsZHJlbi5sZW5ndGg7ZSsr KWgodC5jaGlsZHJlbltlXSk7cmV0dXJuIGModC5yZWdpb24sITApfWZvcihz PTA7czxpLmNoaWxkcmVuLmxlbmd0aDtzKyspaChpLmNoaWxkcmVuW3NdKTty ZXR1cm4gdS5sZW5ndGg8PTA/e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVz OltdfToxPT11Lmxlbmd0aD97dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6 dVswXX06e3R5cGU6Ik11bHRpUG9seWdvbiIsY29vcmRpbmF0ZXM6dX19fTtl LmV4cG9ydHM9bn0se31dLDQ3OTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQo Ii4vbGlua2VkLWxpc3QiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1 bmN0aW9uIGEodCxlLG4pe3JldHVybntpZDpyP3Iuc2VnbWVudElkKCk6LTEs c3RhcnQ6dCxlbmQ6ZSxteUZpbGw6e2Fib3ZlOm4ubXlGaWxsLmFib3ZlLGJl bG93Om4ubXlGaWxsLmJlbG93fSxvdGhlckZpbGw6bnVsbH19dmFyIGk9bi5j cmVhdGUoKTtmdW5jdGlvbiBvKHQscil7aS5pbnNlcnRCZWZvcmUodCxmdW5j dGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCxyLG4sYSxpLG8pe3ZhciBzPWUu cG9pbnRzQ29tcGFyZShyLGkpO3JldHVybiAwIT09cz9zOmUucG9pbnRzU2Ft ZShuLG8pPzA6dCE9PWE/dD8xOi0xOmUucG9pbnRBYm92ZU9yT25MaW5lKG4s YT9pOm8sYT9vOmkpPzE6LTF9KHQuaXNTdGFydCx0LnB0LHIsbi5pc1N0YXJ0 LG4ucHQsbi5vdGhlci5wdCk8MH0pfWZ1bmN0aW9uIHModCxlKXt2YXIgcj1m dW5jdGlvbih0LGUpe3ZhciByPW4ubm9kZSh7aXNTdGFydDohMCxwdDp0LnN0 YXJ0LHNlZzp0LHByaW1hcnk6ZSxvdGhlcjpudWxsLHN0YXR1czpudWxsfSk7 cmV0dXJuIG8ocix0LmVuZCkscn0odCxlKTtyZXR1cm4gZnVuY3Rpb24odCxl LHIpe3ZhciBhPW4ubm9kZSh7aXNTdGFydDohMSxwdDplLmVuZCxzZWc6ZSxw cmltYXJ5OnIsb3RoZXI6dCxzdGF0dXM6bnVsbH0pO3Qub3RoZXI9YSxvKGEs dC5wdCl9KHIsdCxlKSxyfWZ1bmN0aW9uIGwodCxlKXt2YXIgbj1hKGUsdC5z ZWcuZW5kLHQuc2VnKTtyZXR1cm4gZnVuY3Rpb24odCxlKXtyJiZyLnNlZ21l bnRDaG9wKHQuc2VnLGUpLHQub3RoZXIucmVtb3ZlKCksdC5zZWcuZW5kPWUs dC5vdGhlci5wdD1lLG8odC5vdGhlcix0LnB0KX0odCxlKSxzKG4sdC5wcmlt YXJ5KX1mdW5jdGlvbiBjKGEsbyl7dmFyIHM9bi5jcmVhdGUoKTtmdW5jdGlv biBjKHQpe3JldHVybiBzLmZpbmRUcmFuc2l0aW9uKGZ1bmN0aW9uKHIpe3Zh ciBuLGEsaSxvLHMsbDtyZXR1cm4gbj10LGE9ci5ldixpPW4uc2VnLnN0YXJ0 LG89bi5zZWcuZW5kLHM9YS5zZWcuc3RhcnQsbD1hLnNlZy5lbmQsKGUucG9p bnRzQ29sbGluZWFyKGkscyxsKT9lLnBvaW50c0NvbGxpbmVhcihvLHMsbCk/ MTplLnBvaW50QWJvdmVPck9uTGluZShvLHMsbCk/MTotMTplLnBvaW50QWJv dmVPck9uTGluZShpLHMsbCk/MTotMSk+MH0pfWZ1bmN0aW9uIHUodCxuKXt2 YXIgYT10LnNlZyxpPW4uc2VnLG89YS5zdGFydCxzPWEuZW5kLGM9aS5zdGFy dCx1PWkuZW5kO3ImJnIuY2hlY2tJbnRlcnNlY3Rpb24oYSxpKTt2YXIgaD1l LmxpbmVzSW50ZXJzZWN0KG8scyxjLHUpO2lmKCExPT09aCl7aWYoIWUucG9p bnRzQ29sbGluZWFyKG8scyxjKSlyZXR1cm4hMTtpZihlLnBvaW50c1NhbWUo byx1KXx8ZS5wb2ludHNTYW1lKHMsYykpcmV0dXJuITE7dmFyIGY9ZS5wb2lu dHNTYW1lKG8sYykscD1lLnBvaW50c1NhbWUocyx1KTtpZihmJiZwKXJldHVy biBuO3ZhciBkPSFmJiZlLnBvaW50QmV0d2VlbihvLGMsdSksZz0hcCYmZS5w b2ludEJldHdlZW4ocyxjLHUpO2lmKGYpcmV0dXJuIGc/bChuLHMpOmwodCx1 KSxuO2QmJihwfHwoZz9sKG4scyk6bCh0LHUpKSxsKG4sbykpfWVsc2UgMD09 PWguYWxvbmdBJiYoLTE9PT1oLmFsb25nQj9sKHQsYyk6MD09PWguYWxvbmdC P2wodCxoLnB0KToxPT09aC5hbG9uZ0ImJmwodCx1KSksMD09PWguYWxvbmdC JiYoLTE9PT1oLmFsb25nQT9sKG4sbyk6MD09PWguYWxvbmdBP2wobixoLnB0 KToxPT09aC5hbG9uZ0EmJmwobixzKSk7cmV0dXJuITF9Zm9yKHZhciBoPVtd OyFpLmlzRW1wdHkoKTspe3ZhciBmPWkuZ2V0SGVhZCgpO2lmKHImJnIudmVy dChmLnB0WzBdKSxmLmlzU3RhcnQpe3ImJnIuc2VnbWVudE5ldyhmLnNlZyxm LnByaW1hcnkpO3ZhciBwPWMoZiksZD1wLmJlZm9yZT9wLmJlZm9yZS5ldjpu dWxsLGc9cC5hZnRlcj9wLmFmdGVyLmV2Om51bGw7ZnVuY3Rpb24gdigpe2lm KGQpe3ZhciB0PXUoZixkKTtpZih0KXJldHVybiB0fXJldHVybiEhZyYmdShm LGcpfXImJnIudGVtcFN0YXR1cyhmLnNlZywhIWQmJmQuc2VnLCEhZyYmZy5z ZWcpO3ZhciBtLHkseD12KCk7aWYoeCl0Pyh5PW51bGw9PT1mLnNlZy5teUZp bGwuYmVsb3d8fGYuc2VnLm15RmlsbC5hYm92ZSE9PWYuc2VnLm15RmlsbC5i ZWxvdykmJih4LnNlZy5teUZpbGwuYWJvdmU9IXguc2VnLm15RmlsbC5hYm92 ZSk6eC5zZWcub3RoZXJGaWxsPWYuc2VnLm15RmlsbCxyJiZyLnNlZ21lbnRV cGRhdGUoeC5zZWcpLGYub3RoZXIucmVtb3ZlKCksZi5yZW1vdmUoKTtpZihp LmdldEhlYWQoKSE9PWYpe3ImJnIucmV3aW5kKGYuc2VnKTtjb250aW51ZX10 Pyh5PW51bGw9PT1mLnNlZy5teUZpbGwuYmVsb3d8fGYuc2VnLm15RmlsbC5h Ym92ZSE9PWYuc2VnLm15RmlsbC5iZWxvdyxmLnNlZy5teUZpbGwuYmVsb3c9 Zz9nLnNlZy5teUZpbGwuYWJvdmU6YSxmLnNlZy5teUZpbGwuYWJvdmU9eT8h Zi5zZWcubXlGaWxsLmJlbG93OmYuc2VnLm15RmlsbC5iZWxvdyk6bnVsbD09 PWYuc2VnLm90aGVyRmlsbCYmKG09Zz9mLnByaW1hcnk9PT1nLnByaW1hcnk/ Zy5zZWcub3RoZXJGaWxsLmFib3ZlOmcuc2VnLm15RmlsbC5hYm92ZTpmLnBy aW1hcnk/bzphLGYuc2VnLm90aGVyRmlsbD17YWJvdmU6bSxiZWxvdzptfSks ciYmci5zdGF0dXMoZi5zZWcsISFkJiZkLnNlZywhIWcmJmcuc2VnKSxmLm90 aGVyLnN0YXR1cz1wLmluc2VydChuLm5vZGUoe2V2OmZ9KSl9ZWxzZXt2YXIg Yj1mLnN0YXR1cztpZihudWxsPT09Yil0aHJvdyBuZXcgRXJyb3IoIlBvbHlC b29sOiBaZXJvLWxlbmd0aCBzZWdtZW50IGRldGVjdGVkOyB5b3VyIGVwc2ls b24gaXMgcHJvYmFibHkgdG9vIHNtYWxsIG9yIHRvbyBsYXJnZSIpO2lmKHMu ZXhpc3RzKGIucHJldikmJnMuZXhpc3RzKGIubmV4dCkmJnUoYi5wcmV2LmV2 LGIubmV4dC5ldiksciYmci5zdGF0dXNSZW1vdmUoYi5ldi5zZWcpLGIucmVt b3ZlKCksIWYucHJpbWFyeSl7dmFyIF89Zi5zZWcubXlGaWxsO2Yuc2VnLm15 RmlsbD1mLnNlZy5vdGhlckZpbGwsZi5zZWcub3RoZXJGaWxsPV99aC5wdXNo KGYuc2VnKX1pLmdldEhlYWQoKS5yZW1vdmUoKX1yZXR1cm4gciYmci5kb25l KCksaH1yZXR1cm4gdD97YWRkUmVnaW9uOmZ1bmN0aW9uKHQpe2Zvcih2YXIg bixhLGksbz10W3QubGVuZ3RoLTFdLGw9MDtsPHQubGVuZ3RoO2wrKyl7bj1v LG89dFtsXTt2YXIgYz1lLnBvaW50c0NvbXBhcmUobixvKTswIT09YyYmcygo YT1jPDA/bjpvLGk9YzwwP286bix7aWQ6cj9yLnNlZ21lbnRJZCgpOi0xLHN0 YXJ0OmEsZW5kOmksbXlGaWxsOnthYm92ZTpudWxsLGJlbG93Om51bGx9LG90 aGVyRmlsbDpudWxsfSksITApfX0sY2FsY3VsYXRlOmZ1bmN0aW9uKHQpe3Jl dHVybiBjKHQsITEpfX06e2NhbGN1bGF0ZTpmdW5jdGlvbih0LGUscixuKXty ZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3MoYSh0LnN0YXJ0LHQuZW5k LHQpLCEwKX0pLHIuZm9yRWFjaChmdW5jdGlvbih0KXtzKGEodC5zdGFydCx0 LmVuZCx0KSwhMSl9KSxjKGUsbil9fX19LHsiLi9saW5rZWQtbGlzdCI6NDgw fV0sNDgwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXtjcmVhdGU6ZnVu Y3Rpb24oKXt2YXIgdD17cm9vdDp7cm9vdDohMCxuZXh0Om51bGx9LGV4aXN0 czpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJmUhPT10LnJvb3R9LGlz RW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PXQucm9vdC5uZXh0fSxn ZXRIZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIHQucm9vdC5uZXh0fSxpbnNlcnRC ZWZvcmU6ZnVuY3Rpb24oZSxyKXtmb3IodmFyIG49dC5yb290LGE9dC5yb290 Lm5leHQ7bnVsbCE9PWE7KXtpZihyKGEpKXJldHVybiBlLnByZXY9YS5wcmV2 LGUubmV4dD1hLGEucHJldi5uZXh0PWUsdm9pZChhLnByZXY9ZSk7bj1hLGE9 YS5uZXh0fW4ubmV4dD1lLGUucHJldj1uLGUubmV4dD1udWxsfSxmaW5kVHJh bnNpdGlvbjpmdW5jdGlvbihlKXtmb3IodmFyIHI9dC5yb290LG49dC5yb290 Lm5leHQ7bnVsbCE9PW4mJiFlKG4pOylyPW4sbj1uLm5leHQ7cmV0dXJue2Jl Zm9yZTpyPT09dC5yb290P251bGw6cixhZnRlcjpuLGluc2VydDpmdW5jdGlv bih0KXtyZXR1cm4gdC5wcmV2PXIsdC5uZXh0PW4sci5uZXh0PXQsbnVsbCE9 PW4mJihuLnByZXY9dCksdH19fX07cmV0dXJuIHR9LG5vZGU6ZnVuY3Rpb24o dCl7cmV0dXJuIHQucHJldj1udWxsLHQubmV4dD1udWxsLHQucmVtb3ZlPWZ1 bmN0aW9uKCl7dC5wcmV2Lm5leHQ9dC5uZXh0LHQubmV4dCYmKHQubmV4dC5w cmV2PXQucHJldiksdC5wcmV2PW51bGwsdC5uZXh0PW51bGx9LHR9fX0se31d LDQ4MTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cil7dmFyIG49W10sYT1bXTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQp e3ZhciBpPXQuc3RhcnQsbz10LmVuZDtpZihlLnBvaW50c1NhbWUoaSxvKSlj b25zb2xlLndhcm4oIlBvbHlCb29sOiBXYXJuaW5nOiBaZXJvLWxlbmd0aCBz ZWdtZW50IGRldGVjdGVkOyB5b3VyIGVwc2lsb24gaXMgcHJvYmFibHkgdG9v IHNtYWxsIG9yIHRvbyBsYXJnZSIpO2Vsc2V7ciYmci5jaGFpblN0YXJ0KHQp O2Zvcih2YXIgcz17aW5kZXg6MCxtYXRjaGVzX2hlYWQ6ITEsbWF0Y2hlc19w dDE6ITF9LGw9e2luZGV4OjAsbWF0Y2hlc19oZWFkOiExLG1hdGNoZXNfcHQx OiExfSxjPXMsdT0wO3U8bi5sZW5ndGg7dSsrKXt2YXIgaD0odj1uW3VdKVsw XSxmPSh2WzFdLHZbdi5sZW5ndGgtMV0pO2lmKHZbdi5sZW5ndGgtMl0sZS5w b2ludHNTYW1lKGgsaSkpe2lmKFQodSwhMCwhMCkpYnJlYWt9ZWxzZSBpZihl LnBvaW50c1NhbWUoaCxvKSl7aWYoVCh1LCEwLCExKSlicmVha31lbHNlIGlm KGUucG9pbnRzU2FtZShmLGkpKXtpZihUKHUsITEsITApKWJyZWFrfWVsc2Ug aWYoZS5wb2ludHNTYW1lKGYsbykmJlQodSwhMSwhMSkpYnJlYWt9aWYoYz09 PXMpcmV0dXJuIG4ucHVzaChbaSxvXSksdm9pZChyJiZyLmNoYWluTmV3KGks bykpO2lmKGM9PT1sKXtyJiZyLmNoYWluTWF0Y2gocy5pbmRleCk7dmFyIHA9 cy5pbmRleCxkPXMubWF0Y2hlc19wdDE/bzppLGc9cy5tYXRjaGVzX2hlYWQs dj1uW3BdLG09Zz92WzBdOnZbdi5sZW5ndGgtMV0seT1nP3ZbMV06dlt2Lmxl bmd0aC0yXSx4PWc/dlt2Lmxlbmd0aC0xXTp2WzBdLGI9Zz92W3YubGVuZ3Ro LTJdOnZbMV07cmV0dXJuIGUucG9pbnRzQ29sbGluZWFyKHksbSxkKSYmKGc/ KHImJnIuY2hhaW5SZW1vdmVIZWFkKHMuaW5kZXgsZCksdi5zaGlmdCgpKToo ciYmci5jaGFpblJlbW92ZVRhaWwocy5pbmRleCxkKSx2LnBvcCgpKSxtPXkp LGUucG9pbnRzU2FtZSh4LGQpPyhuLnNwbGljZShwLDEpLGUucG9pbnRzQ29s bGluZWFyKGIseCxtKSYmKGc/KHImJnIuY2hhaW5SZW1vdmVUYWlsKHMuaW5k ZXgsbSksdi5wb3AoKSk6KHImJnIuY2hhaW5SZW1vdmVIZWFkKHMuaW5kZXgs bSksdi5zaGlmdCgpKSksciYmci5jaGFpbkNsb3NlKHMuaW5kZXgpLHZvaWQg YS5wdXNoKHYpKTp2b2lkKGc/KHImJnIuY2hhaW5BZGRIZWFkKHMuaW5kZXgs ZCksdi51bnNoaWZ0KGQpKToociYmci5jaGFpbkFkZFRhaWwocy5pbmRleCxk KSx2LnB1c2goZCkpKX12YXIgXz1zLmluZGV4LHc9bC5pbmRleDtyJiZyLmNo YWluQ29ubmVjdChfLHcpO3ZhciBrPW5bX10ubGVuZ3RoPG5bd10ubGVuZ3Ro O3MubWF0Y2hlc19oZWFkP2wubWF0Y2hlc19oZWFkP2s/KE0oXyksQShfLHcp KTooTSh3KSxBKHcsXykpOkEodyxfKTpsLm1hdGNoZXNfaGVhZD9BKF8sdyk6 az8oTShfKSxBKHcsXykpOihNKHcpLEEoXyx3KSl9ZnVuY3Rpb24gVCh0LGUs cil7cmV0dXJuIGMuaW5kZXg9dCxjLm1hdGNoZXNfaGVhZD1lLGMubWF0Y2hl c19wdDE9cixjPT09cz8oYz1sLCExKTooYz1udWxsLCEwKX1mdW5jdGlvbiBN KHQpe3ImJnIuY2hhaW5SZXZlcnNlKHQpLG5bdF0ucmV2ZXJzZSgpfWZ1bmN0 aW9uIEEodCxhKXt2YXIgaT1uW3RdLG89blthXSxzPWlbaS5sZW5ndGgtMV0s bD1pW2kubGVuZ3RoLTJdLGM9b1swXSx1PW9bMV07ZS5wb2ludHNDb2xsaW5l YXIobCxzLGMpJiYociYmci5jaGFpblJlbW92ZVRhaWwodCxzKSxpLnBvcCgp LHM9bCksZS5wb2ludHNDb2xsaW5lYXIocyxjLHUpJiYociYmci5jaGFpblJl bW92ZUhlYWQoYSxjKSxvLnNoaWZ0KCkpLHImJnIuY2hhaW5Kb2luKHQsYSks blt0XT1pLmNvbmNhdChvKSxuLnNwbGljZShhLDEpfX0pLGF9fSx7fV0sNDgy OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscil7dmFyIG49W107 cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgYT0odC5teUZpbGwu YWJvdmU/ODowKSsodC5teUZpbGwuYmVsb3c/NDowKSsodC5vdGhlckZpbGwm JnQub3RoZXJGaWxsLmFib3ZlPzI6MCkrKHQub3RoZXJGaWxsJiZ0Lm90aGVy RmlsbC5iZWxvdz8xOjApOzAhPT1lW2FdJiZuLnB1c2goe2lkOnI/ci5zZWdt ZW50SWQoKTotMSxzdGFydDp0LnN0YXJ0LGVuZDp0LmVuZCxteUZpbGw6e2Fi b3ZlOjE9PT1lW2FdLGJlbG93OjI9PT1lW2FdfSxvdGhlckZpbGw6bnVsbH0p fSksciYmci5zZWxlY3RlZChuKSxufXZhciBhPXt1bmlvbjpmdW5jdGlvbih0 LGUpe3JldHVybiBuKHQsWzAsMiwxLDAsMiwyLDAsMCwxLDAsMSwwLDAsMCww LDBdLGUpfSxpbnRlcnNlY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LFsw LDAsMCwwLDAsMiwwLDIsMCwwLDEsMSwwLDIsMSwwXSxlKX0sZGlmZmVyZW5j ZTpmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsWzAsMCwwLDAsMiwwLDIsMCwx LDEsMCwwLDAsMSwyLDBdLGUpfSxkaWZmZXJlbmNlUmV2OmZ1bmN0aW9uKHQs ZSl7cmV0dXJuIG4odCxbMCwyLDEsMCwwLDAsMSwxLDAsMiwwLDIsMCwwLDAs MF0sZSl9LHhvcjpmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsWzAsMiwxLDAs MiwwLDAsMSwxLDAsMCwyLDAsMSwyLDBdLGUpfX07ZS5leHBvcnRzPWF9LHt9 XSw0ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49bmV3 IEZsb2F0NjRBcnJheSg0KSxhPW5ldyBGbG9hdDY0QXJyYXkoNCksaT1uZXcg RmxvYXQ2NEFycmF5KDQpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvLHMp e24ubGVuZ3RoPG8ubGVuZ3RoJiYobj1uZXcgRmxvYXQ2NEFycmF5KG8ubGVu Z3RoKSxhPW5ldyBGbG9hdDY0QXJyYXkoby5sZW5ndGgpLGk9bmV3IEZsb2F0 NjRBcnJheShvLmxlbmd0aCkpO2Zvcih2YXIgbD0wO2w8by5sZW5ndGg7Kyts KW5bbF09dFtsXS1vW2xdLGFbbF09ZVtsXS10W2xdLGlbbF09cltsXS10W2xd O3ZhciBjPTAsdT0wLGg9MCxmPTAscD0wLGQ9MDtmb3IobD0wO2w8by5sZW5n dGg7KytsKXt2YXIgZz1hW2xdLHY9aVtsXSxtPW5bbF07Yys9ZypnLHUrPWcq dixoKz12KnYsZis9bSpnLHArPW0qdixkKz1tKm19dmFyIHkseCxiLF8sdyxr PU1hdGguYWJzKGMqaC11KnUpLFQ9dSpwLWgqZixNPXUqZi1jKnA7aWYoVCtN PD1rKWlmKFQ8MClNPDAmJmY8MD8oTT0wLC1mPj1jPyhUPTEseT1jKzIqZitk KTp5PWYqKFQ9LWYvYykrZCk6KFQ9MCxwPj0wPyhNPTAseT1kKTotcD49aD8o TT0xLHk9aCsyKnArZCk6eT1wKihNPS1wL2gpK2QpO2Vsc2UgaWYoTTwwKU09 MCxmPj0wPyhUPTAseT1kKTotZj49Yz8oVD0xLHk9YysyKmYrZCk6eT1mKihU PS1mL2MpK2Q7ZWxzZXt2YXIgQT0xL2s7eT0oVCo9QSkqKGMqVCt1KihNKj1B KSsyKmYpK00qKHUqVCtoKk0rMipwKStkfWVsc2UgVDwwPyhiPWgrcCk+KHg9 dStmKT8oXz1iLXgpPj0odz1jLTIqdStoKT8oVD0xLE09MCx5PWMrMipmK2Qp Onk9KFQ9Xy93KSooYypUK3UqKE09MS1UKSsyKmYpK00qKHUqVCtoKk0rMipw KStkOihUPTAsYjw9MD8oTT0xLHk9aCsyKnArZCk6cD49MD8oTT0wLHk9ZCk6 eT1wKihNPS1wL2gpK2QpOk08MD8oYj1jK2YpPih4PXUrcCk/KF89Yi14KT49 KHc9Yy0yKnUraCk/KE09MSxUPTAseT1oKzIqcCtkKTp5PShUPTEtKE09Xy93 KSkqKGMqVCt1Kk0rMipmKStNKih1KlQraCpNKzIqcCkrZDooTT0wLGI8PTA/ KFQ9MSx5PWMrMipmK2QpOmY+PTA/KFQ9MCx5PWQpOnk9ZiooVD0tZi9jKStk KTooXz1oK3AtdS1mKTw9MD8oVD0wLE09MSx5PWgrMipwK2QpOl8+PSh3PWMt Mip1K2gpPyhUPTEsTT0wLHk9YysyKmYrZCk6eT0oVD1fL3cpKihjKlQrdSoo TT0xLVQpKzIqZikrTSoodSpUK2gqTSsyKnApK2Q7dmFyIFM9MS1ULU07Zm9y KGw9MDtsPG8ubGVuZ3RoOysrbClzW2xdPVMqdFtsXStUKmVbbF0rTSpyW2xd O3JldHVybiB5PDA/MDp5fX0se31dLDQ4NDpbZnVuY3Rpb24odCxlLHIpe3Zh ciBuLGEsaT1lLmV4cG9ydHM9e307ZnVuY3Rpb24gbygpe3Rocm93IG5ldyBF cnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0 aW9uIHMoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90 IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIGwodCl7aWYobj09PXNldFRpbWVv dXQpcmV0dXJuIHNldFRpbWVvdXQodCwwKTtpZigobj09PW98fCFuKSYmc2V0 VGltZW91dClyZXR1cm4gbj1zZXRUaW1lb3V0LHNldFRpbWVvdXQodCwwKTt0 cnl7cmV0dXJuIG4odCwwKX1jYXRjaChlKXt0cnl7cmV0dXJuIG4uY2FsbChu dWxsLHQsMCl9Y2F0Y2goZSl7cmV0dXJuIG4uY2FsbCh0aGlzLHQsMCl9fX0h ZnVuY3Rpb24oKXt0cnl7bj0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91 dD9zZXRUaW1lb3V0Om99Y2F0Y2godCl7bj1vfXRyeXthPSJmdW5jdGlvbiI9 PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnN9Y2F0Y2godCl7 YT1zfX0oKTt2YXIgYyx1PVtdLGg9ITEsZj0tMTtmdW5jdGlvbiBwKCl7aCYm YyYmKGg9ITEsYy5sZW5ndGg/dT1jLmNvbmNhdCh1KTpmPS0xLHUubGVuZ3Ro JiZkKCkpfWZ1bmN0aW9uIGQoKXtpZighaCl7dmFyIHQ9bChwKTtoPSEwO2Zv cih2YXIgZT11Lmxlbmd0aDtlOyl7Zm9yKGM9dSx1PVtdOysrZjxlOyljJiZj W2ZdLnJ1bigpO2Y9LTEsZT11Lmxlbmd0aH1jPW51bGwsaD0hMSxmdW5jdGlv bih0KXtpZihhPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQo dCk7aWYoKGE9PT1zfHwhYSkmJmNsZWFyVGltZW91dClyZXR1cm4gYT1jbGVh clRpbWVvdXQsY2xlYXJUaW1lb3V0KHQpO3RyeXthKHQpfWNhdGNoKGUpe3Ry eXtyZXR1cm4gYS5jYWxsKG51bGwsdCl9Y2F0Y2goZSl7cmV0dXJuIGEuY2Fs bCh0aGlzLHQpfX19KHQpfX1mdW5jdGlvbiBnKHQsZSl7dGhpcy5mdW49dCx0 aGlzLmFycmF5PWV9ZnVuY3Rpb24gdigpe31pLm5leHRUaWNrPWZ1bmN0aW9u KHQpe3ZhciBlPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFy Z3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5n dGg7cisrKWVbci0xXT1hcmd1bWVudHNbcl07dS5wdXNoKG5ldyBnKHQsZSkp LDEhPT11Lmxlbmd0aHx8aHx8bChkKX0sZy5wcm90b3R5cGUucnVuPWZ1bmN0 aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0saS50aXRs ZT0iYnJvd3NlciIsaS5icm93c2VyPSEwLGkuZW52PXt9LGkuYXJndj1bXSxp LnZlcnNpb249IiIsaS52ZXJzaW9ucz17fSxpLm9uPXYsaS5hZGRMaXN0ZW5l cj12LGkub25jZT12LGkub2ZmPXYsaS5yZW1vdmVMaXN0ZW5lcj12LGkucmVt b3ZlQWxsTGlzdGVuZXJzPXYsaS5lbWl0PXYsaS5wcmVwZW5kTGlzdGVuZXI9 dixpLnByZXBlbmRPbmNlTGlzdGVuZXI9dixpLmxpc3RlbmVycz1mdW5jdGlv bih0KXtyZXR1cm5bXX0saS5iaW5kaW5nPWZ1bmN0aW9uKHQpe3Rocm93IG5l dyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0s aS5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGkuY2hkaXI9ZnVuY3Rpb24o dCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBw b3J0ZWQiKX0saS51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0se31dLDQ4 NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCJnbC1xdWF0L3NsZXJw Iil9LHsiZ2wtcXVhdC9zbGVycCI6Mjk2fV0sNDg2OltmdW5jdGlvbih0LGUs cil7KGZ1bmN0aW9uKHIpe2Zvcih2YXIgbj10KCJwZXJmb3JtYW5jZS1ub3ci KSxhPSJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93P3I6d2luZG93LGk9WyJt b3oiLCJ3ZWJraXQiXSxvPSJBbmltYXRpb25GcmFtZSIscz1hWyJyZXF1ZXN0 IitvXSxsPWFbImNhbmNlbCIrb118fGFbImNhbmNlbFJlcXVlc3QiK29dLGM9 MDshcyYmYzxpLmxlbmd0aDtjKyspcz1hW2lbY10rIlJlcXVlc3QiK29dLGw9 YVtpW2NdKyJDYW5jZWwiK29dfHxhW2lbY10rIkNhbmNlbFJlcXVlc3QiK29d O2lmKCFzfHwhbCl7dmFyIHU9MCxoPTAsZj1bXTtzPWZ1bmN0aW9uKHQpe2lm KDA9PT1mLmxlbmd0aCl7dmFyIGU9bigpLHI9TWF0aC5tYXgoMCwxZTMvNjAt KGUtdSkpO3U9citlLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdD1mLnNs aWNlKDApO2YubGVuZ3RoPTA7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKysp aWYoIXRbZV0uY2FuY2VsbGVkKXRyeXt0W2VdLmNhbGxiYWNrKHUpfWNhdGNo KHQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyB0fSwwKX19LE1hdGgu cm91bmQocikpfXJldHVybiBmLnB1c2goe2hhbmRsZTorK2gsY2FsbGJhY2s6 dCxjYW5jZWxsZWQ6ITF9KSxofSxsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0w O2U8Zi5sZW5ndGg7ZSsrKWZbZV0uaGFuZGxlPT09dCYmKGZbZV0uY2FuY2Vs bGVkPSEwKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBzLmNhbGwo YSx0KX0sZS5leHBvcnRzLmNhbmNlbD1mdW5jdGlvbigpe2wuYXBwbHkoYSxh cmd1bWVudHMpfSxlLmV4cG9ydHMucG9seWZpbGw9ZnVuY3Rpb24odCl7dHx8 KHQ9YSksdC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9cyx0LmNhbmNlbEFuaW1h dGlvbkZyYW1lPWx9fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2Yg Z2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoi dW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7InBlcmZv cm1hbmNlLW5vdyI6NDY0fV0sNDg3OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoImJpZy1yYXQvYWRkIik7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLGE9bmV3IEFycmF5KHIpLGk9 MDtpPHI7KytpKWFbaV09bih0W2ldLGVbaV0pO3JldHVybiBhfX0seyJiaWct cmF0L2FkZCI6Nzd9XSw0ODg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXko dC5sZW5ndGgpLHI9MDtyPHQubGVuZ3RoOysrcillW3JdPW4odFtyXSk7cmV0 dXJuIGV9O3ZhciBuPXQoImJpZy1yYXQiKX0seyJiaWctcmF0Ijo4MH1dLDQ4 OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaWct cmF0IiksYT10KCJiaWctcmF0L211bCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe2Zvcih2YXIgcj1uKGUpLGk9dC5sZW5ndGgsbz1uZXcgQXJyYXkoaSks cz0wO3M8aTsrK3Mpb1tzXT1hKHRbc10scik7cmV0dXJuIG99fSx7ImJpZy1y YXQiOjgwLCJiaWctcmF0L211bCI6ODl9XSw0OTA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiYmlnLXJhdC9zdWIiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsYT1uZXcgQXJy YXkociksaT0wO2k8cjsrK2kpYVtpXT1uKHRbaV0sZVtpXSk7cmV0dXJuIGF9 fSx7ImJpZy1yYXQvc3ViIjo5MX1dLDQ5MTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJjb21wYXJlLWNlbGwiKSxhPXQoImNvbXBh cmUtb3JpZW50ZWQtY2VsbCIpLGk9dCgiY2VsbC1vcmllbnRhdGlvbiIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0KXt0LnNvcnQoYSk7Zm9yKHZhciBlPXQubGVu Z3RoLHI9MCxvPTA7bzxlOysrbyl7dmFyIHM9dFtvXSxsPWkocyk7aWYoMCE9 PWwpe2lmKHI+MCl7dmFyIGM9dFtyLTFdO2lmKDA9PT1uKHMsYykmJmkoYykh PT1sKXtyLT0xO2NvbnRpbnVlfX10W3IrK109c319cmV0dXJuIHQubGVuZ3Ro PXIsdH19LHsiY2VsbC1vcmllbnRhdGlvbiI6MTE0LCJjb21wYXJlLWNlbGwi OjEzMCwiY29tcGFyZS1vcmllbnRlZC1jZWxsIjoxMzF9XSw0OTI6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYXJyYXktYm91bmRz IiksYT10KCJjb2xvci1ub3JtYWxpemUiKSxpPXQoInVwZGF0ZS1kaWZmIiks bz10KCJwaWNrLWJ5LWFsaWFzIikscz10KCJvYmplY3QtYXNzaWduIiksbD10 KCJmbGF0dGVuLXZlcnRleC1kYXRhIiksYz10KCJ0by1mbG9hdDMyIiksdT1j LmZsb2F0MzIsaD1jLmZyYWN0MzI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 ImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGV8fChlPXt9KSxlLnJlZ2w9dCk6ZT10 O2UubGVuZ3RoJiYoZS5wb3NpdGlvbnM9ZSk7aWYoISh0PWUucmVnbCkuaGFz RXh0ZW5zaW9uKCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpdGhyb3cgRXJy b3IoInJlZ2wtZXJyb3IyZDogYEFOR0xFX2luc3RhbmNlZF9hcnJheXNgIGV4 dGVuc2lvbiBzaG91bGQgYmUgZW5hYmxlZCIpO3ZhciByLGMscCxkLGcsdixt PXQuX2dsLHk9e2NvbG9yOiJibGFjayIsY2FwU2l6ZTo1LGxpbmVXaWR0aDox LG9wYWNpdHk6MSx2aWV3cG9ydDpudWxsLHJhbmdlOm51bGwsb2Zmc2V0OjAs Y291bnQ6MCxib3VuZHM6bnVsbCxwb3NpdGlvbnM6W10sZXJyb3JzOltdfSx4 PVtdO3JldHVybiBkPXQuYnVmZmVyKHt1c2FnZToiZHluYW1pYyIsdHlwZToi dWludDgiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9KSxjPXQuYnVmZmVyKHt1 c2FnZToiZHluYW1pYyIsdHlwZToiZmxvYXQiLGRhdGE6bmV3IFVpbnQ4QXJy YXkoMCl9KSxwPXQuYnVmZmVyKHt1c2FnZToiZHluYW1pYyIsdHlwZToiZmxv YXQiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9KSxnPXQuYnVmZmVyKHt1c2Fn ZToiZHluYW1pYyIsdHlwZToiZmxvYXQiLGRhdGE6bmV3IFVpbnQ4QXJyYXko MCl9KSx2PXQuYnVmZmVyKHt1c2FnZToic3RhdGljIix0eXBlOiJmbG9hdCIs ZGF0YTpmfSksayhlKSxyPXQoe3ZlcnQ6IlxuXHRcdHByZWNpc2lvbiBoaWdo cCBmbG9hdDtcblxuXHRcdGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uLCBwb3Np dGlvbkZyYWN0O1xuXHRcdGF0dHJpYnV0ZSB2ZWM0IGVycm9yO1xuXHRcdGF0 dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuXG5cdFx0YXR0cmlidXRlIHZlYzIgZGly ZWN0aW9uLCBsaW5lT2Zmc2V0LCBjYXBPZmZzZXQ7XG5cblx0XHR1bmlmb3Jt IHZlYzQgdmlld3BvcnQ7XG5cdFx0dW5pZm9ybSBmbG9hdCBsaW5lV2lkdGgs IGNhcFNpemU7XG5cdFx0dW5pZm9ybSB2ZWMyIHNjYWxlLCBzY2FsZUZyYWN0 LCB0cmFuc2xhdGUsIHRyYW5zbGF0ZUZyYWN0O1xuXG5cdFx0dmFyeWluZyB2 ZWM0IGZyYWdDb2xvcjtcblxuXHRcdHZvaWQgbWFpbigpIHtcblx0XHRcdGZy YWdDb2xvciA9IGNvbG9yIC8gMjU1LjtcblxuXHRcdFx0dmVjMiBwaXhlbE9m ZnNldCA9IGxpbmVXaWR0aCAqIGxpbmVPZmZzZXQgKyAoY2FwU2l6ZSArIGxp bmVXaWR0aCkgKiBjYXBPZmZzZXQ7XG5cblx0XHRcdHZlYzIgZHh5ID0gLXN0 ZXAoLjUsIGRpcmVjdGlvbi54eSkgKiBlcnJvci54eiArIHN0ZXAoZGlyZWN0 aW9uLnh5LCB2ZWMyKC0uNSkpICogZXJyb3IueXc7XG5cblx0XHRcdHZlYzIg cG9zaXRpb24gPSBwb3NpdGlvbiArIGR4eTtcblxuXHRcdFx0dmVjMiBwb3Mg PSAocG9zaXRpb24gKyB0cmFuc2xhdGUpICogc2NhbGVcblx0XHRcdFx0KyAo cG9zaXRpb25GcmFjdCArIHRyYW5zbGF0ZUZyYWN0KSAqIHNjYWxlXG5cdFx0 XHRcdCsgKHBvc2l0aW9uICsgdHJhbnNsYXRlKSAqIHNjYWxlRnJhY3Rcblx0 XHRcdFx0KyAocG9zaXRpb25GcmFjdCArIHRyYW5zbGF0ZUZyYWN0KSAqIHNj YWxlRnJhY3Q7XG5cblx0XHRcdHBvcyArPSBwaXhlbE9mZnNldCAvIHZpZXdw b3J0Lnp3O1xuXG5cdFx0XHRnbF9Qb3NpdGlvbiA9IHZlYzQocG9zICogMi4g LSAxLiwgMCwgMSk7XG5cdFx0fVxuXHRcdCIsZnJhZzoiXG5cdFx0cHJlY2lz aW9uIGhpZ2hwIGZsb2F0O1xuXG5cdFx0dmFyeWluZyB2ZWM0IGZyYWdDb2xv cjtcblxuXHRcdHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxuXHRcdHZvaWQg bWFpbigpIHtcblx0XHRcdGdsX0ZyYWdDb2xvciA9IGZyYWdDb2xvcjtcblx0 XHRcdGdsX0ZyYWdDb2xvci5hICo9IG9wYWNpdHk7XG5cdFx0fVxuXHRcdCIs dW5pZm9ybXM6e3JhbmdlOnQucHJvcCgicmFuZ2UiKSxsaW5lV2lkdGg6dC5w cm9wKCJsaW5lV2lkdGgiKSxjYXBTaXplOnQucHJvcCgiY2FwU2l6ZSIpLG9w YWNpdHk6dC5wcm9wKCJvcGFjaXR5Iiksc2NhbGU6dC5wcm9wKCJzY2FsZSIp LHRyYW5zbGF0ZTp0LnByb3AoInRyYW5zbGF0ZSIpLHNjYWxlRnJhY3Q6dC5w cm9wKCJzY2FsZUZyYWN0IiksdHJhbnNsYXRlRnJhY3Q6dC5wcm9wKCJ0cmFu c2xhdGVGcmFjdCIpLHZpZXdwb3J0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuW2Uu dmlld3BvcnQueCxlLnZpZXdwb3J0LnksdC52aWV3cG9ydFdpZHRoLHQudmll d3BvcnRIZWlnaHRdfX0sYXR0cmlidXRlczp7Y29sb3I6e2J1ZmZlcjpkLG9m ZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiA0KmUub2Zmc2V0fSxkaXZpc29y OjF9LHBvc2l0aW9uOntidWZmZXI6YyxvZmZzZXQ6ZnVuY3Rpb24odCxlKXty ZXR1cm4gOCplLm9mZnNldH0sZGl2aXNvcjoxfSxwb3NpdGlvbkZyYWN0Onti dWZmZXI6cCxvZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gOCplLm9mZnNl dH0sZGl2aXNvcjoxfSxlcnJvcjp7YnVmZmVyOmcsb2Zmc2V0OmZ1bmN0aW9u KHQsZSl7cmV0dXJuIDE2KmUub2Zmc2V0fSxkaXZpc29yOjF9LGRpcmVjdGlv bjp7YnVmZmVyOnYsc3RyaWRlOjI0LG9mZnNldDowfSxsaW5lT2Zmc2V0Onti dWZmZXI6dixzdHJpZGU6MjQsb2Zmc2V0Ojh9LGNhcE9mZnNldDp7YnVmZmVy OnYsc3RyaWRlOjI0LG9mZnNldDoxNn19LHByaW1pdGl2ZToidHJpYW5nbGVz IixibGVuZDp7ZW5hYmxlOiEwLGNvbG9yOlswLDAsMCwwXSxlcXVhdGlvbjp7 cmdiOiJhZGQiLGFscGhhOiJhZGQifSxmdW5jOntzcmNSR0I6InNyYyBhbHBo YSIsZHN0UkdCOiJvbmUgbWludXMgc3JjIGFscGhhIixzcmNBbHBoYToib25l IG1pbnVzIGRzdCBhbHBoYSIsZHN0QWxwaGE6Im9uZSJ9fSxkZXB0aDp7ZW5h YmxlOiExfSxzY2lzc29yOntlbmFibGU6ITAsYm94OnQucHJvcCgidmlld3Bv cnQiKX0sdmlld3BvcnQ6dC5wcm9wKCJ2aWV3cG9ydCIpLHN0ZW5jaWw6ITEs aW5zdGFuY2VzOnQucHJvcCgiY291bnQiKSxjb3VudDpmLmxlbmd0aH0pLHMo Yix7dXBkYXRlOmssZHJhdzpfLGRlc3Ryb3k6VCxyZWdsOnQsZ2w6bSxjYW52 YXM6bS5jYW52YXMsZ3JvdXBzOnh9KSxiO2Z1bmN0aW9uIGIodCl7dD9rKHQp Om51bGw9PT10JiZUKCksXygpfWZ1bmN0aW9uIF8oZSl7aWYoIm51bWJlciI9 PXR5cGVvZiBlKXJldHVybiB3KGUpO2UmJiFBcnJheS5pc0FycmF5KGUpJiYo ZT1bZV0pLHQuX3JlZnJlc2goKSx4LmZvckVhY2goZnVuY3Rpb24odCxyKXt0 JiYoZSYmKGVbcl0/dC5kcmF3PSEwOnQuZHJhdz0hMSksdC5kcmF3P3cocik6 dC5kcmF3PSEwKX0pfWZ1bmN0aW9uIHcodCl7Im51bWJlciI9PXR5cGVvZiB0 JiYodD14W3RdKSxudWxsIT10JiZ0JiZ0LmNvdW50JiZ0LmNvbG9yJiZ0Lm9w YWNpdHkmJnQucG9zaXRpb25zJiZ0LnBvc2l0aW9ucy5sZW5ndGg+MSYmKHQu c2NhbGVSYXRpbz1bdC5zY2FsZVswXSp0LnZpZXdwb3J0LndpZHRoLHQuc2Nh bGVbMV0qdC52aWV3cG9ydC5oZWlnaHRdLHIodCksdC5hZnRlciYmdC5hZnRl cih0KSl9ZnVuY3Rpb24gayh0KXtpZih0KXtudWxsIT10Lmxlbmd0aD8ibnVt YmVyIj09dHlwZW9mIHRbMF0mJih0PVt7cG9zaXRpb25zOnR9XSk6QXJyYXku aXNBcnJheSh0KXx8KHQ9W3RdKTt2YXIgZT0wLHI9MDtpZihiLmdyb3Vwcz14 PXQubWFwKGZ1bmN0aW9uKHQsYyl7dmFyIHU9eFtjXTtyZXR1cm4gdD8oImZ1 bmN0aW9uIj09dHlwZW9mIHQ/dD17YWZ0ZXI6dH06Im51bWJlciI9PXR5cGVv ZiB0WzBdJiYodD17cG9zaXRpb25zOnR9KSx0PW8odCx7Y29sb3I6ImNvbG9y IGNvbG9ycyBmaWxsIixjYXBTaXplOiJjYXBTaXplIGNhcCBjYXBzaXplIGNh cC1zaXplIixsaW5lV2lkdGg6ImxpbmVXaWR0aCBsaW5lLXdpZHRoIHdpZHRo IGxpbmUgdGhpY2tuZXNzIixvcGFjaXR5OiJvcGFjaXR5IGFscGhhIixyYW5n ZToicmFuZ2UgZGF0YUJveCIsdmlld3BvcnQ6InZpZXdwb3J0IHZpZXdCb3gi LGVycm9yczoiZXJyb3JzIGVycm9yIixwb3NpdGlvbnM6InBvc2l0aW9ucyBw b3NpdGlvbiBkYXRhIHBvaW50cyJ9KSx1fHwoeFtjXT11PXtpZDpjLHNjYWxl Om51bGwsdHJhbnNsYXRlOm51bGwsc2NhbGVGcmFjdDpudWxsLHRyYW5zbGF0 ZUZyYWN0Om51bGwsZHJhdzohMH0sdD1zKHt9LHksdCkpLGkodSx0LFt7bGlu ZVdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybi41Kit0fSxjYXBTaXplOmZ1bmN0 aW9uKHQpe3JldHVybi41Kit0fSxvcGFjaXR5OnBhcnNlRmxvYXQsZXJyb3Jz OmZ1bmN0aW9uKHQpe3JldHVybiB0PWwodCkscis9dC5sZW5ndGgsdH0scG9z aXRpb25zOmZ1bmN0aW9uKHQscil7cmV0dXJuIHQ9bCh0LCJmbG9hdDY0Iiks ci5jb3VudD1NYXRoLmZsb29yKHQubGVuZ3RoLzIpLHIuYm91bmRzPW4odCwy KSxyLm9mZnNldD1lLGUrPXIuY291bnQsdH19LHtjb2xvcjpmdW5jdGlvbih0 LGUpe3ZhciByPWUuY291bnQ7aWYodHx8KHQ9InRyYW5zcGFyZW50IiksIUFy cmF5LmlzQXJyYXkodCl8fCJudW1iZXIiPT10eXBlb2YgdFswXSl7dmFyIG49 dDt0PUFycmF5KHIpO2Zvcih2YXIgaT0wO2k8cjtpKyspdFtpXT1ufWlmKHQu bGVuZ3RoPHIpdGhyb3cgRXJyb3IoIk5vdCBlbm91Z2ggY29sb3JzIik7Zm9y KHZhciBvPW5ldyBVaW50OEFycmF5KDQqcikscz0wO3M8cjtzKyspe3ZhciBs PWEodFtzXSwidWludDgiKTtvLnNldChsLDQqcyl9cmV0dXJuIG99LHJhbmdl OmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lLmJvdW5kcztyZXR1cm4gdHx8KHQ9 biksZS5zY2FsZT1bMS8odFsyXS10WzBdKSwxLyh0WzNdLXRbMV0pXSxlLnRy YW5zbGF0ZT1bLXRbMF0sLXRbMV1dLGUuc2NhbGVGcmFjdD1oKGUuc2NhbGUp LGUudHJhbnNsYXRlRnJhY3Q9aChlLnRyYW5zbGF0ZSksdH0sdmlld3BvcnQ6 ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ZT17 eDp0WzBdLHk6dFsxXSx3aWR0aDp0WzJdLXRbMF0saGVpZ2h0OnRbM10tdFsx XX06dD8oZT17eDp0Lnh8fHQubGVmdHx8MCx5OnQueXx8dC50b3B8fDB9LHQu cmlnaHQ/ZS53aWR0aD10LnJpZ2h0LWUueDplLndpZHRoPXQud3x8dC53aWR0 aHx8MCx0LmJvdHRvbT9lLmhlaWdodD10LmJvdHRvbS1lLnk6ZS5oZWlnaHQ9 dC5ofHx0LmhlaWdodHx8MCk6ZT17eDowLHk6MCx3aWR0aDptLmRyYXdpbmdC dWZmZXJXaWR0aCxoZWlnaHQ6bS5kcmF3aW5nQnVmZmVySGVpZ2h0fSxlfX1d KSx1KTp1fSksZXx8cil7dmFyIGY9eC5yZWR1Y2UoZnVuY3Rpb24odCxlLHIp e3JldHVybiB0KyhlP2UuY291bnQ6MCl9LDApLHY9bmV3IEZsb2F0NjRBcnJh eSgyKmYpLF89bmV3IFVpbnQ4QXJyYXkoNCpmKSx3PW5ldyBGbG9hdDMyQXJy YXkoNCpmKTt4LmZvckVhY2goZnVuY3Rpb24odCxlKXtpZih0KXt2YXIgcj10 LnBvc2l0aW9ucyxuPXQuY291bnQsYT10Lm9mZnNldCxpPXQuY29sb3Isbz10 LmVycm9ycztuJiYoXy5zZXQoaSw0KmEpLHcuc2V0KG8sNCphKSx2LnNldChy LDIqYSkpfX0pLGModSh2KSkscChoKHYpKSxkKF8pLGcodyl9fX1mdW5jdGlv biBUKCl7Yy5kZXN0cm95KCkscC5kZXN0cm95KCksZC5kZXN0cm95KCksZy5k ZXN0cm95KCksdi5kZXN0cm95KCl9fTt2YXIgZj1bWzEsMCwwLDEsMCwwXSxb MSwwLDAsLTEsMCwwXSxbLTEsMCwwLC0xLDAsMF0sWy0xLDAsMCwtMSwwLDBd LFstMSwwLDAsMSwwLDBdLFsxLDAsMCwxLDAsMF0sWzEsMCwtMSwwLDAsMV0s WzEsMCwtMSwwLDAsLTFdLFsxLDAsMSwwLDAsLTFdLFsxLDAsMSwwLDAsLTFd LFsxLDAsMSwwLDAsMV0sWzEsMCwtMSwwLDAsMV0sWy0xLDAsLTEsMCwwLDFd LFstMSwwLC0xLDAsMCwtMV0sWy0xLDAsMSwwLDAsLTFdLFstMSwwLDEsMCww LC0xXSxbLTEsMCwxLDAsMCwxXSxbLTEsMCwtMSwwLDAsMV0sWzAsMSwxLDAs MCwwXSxbMCwxLC0xLDAsMCwwXSxbMCwtMSwtMSwwLDAsMF0sWzAsLTEsLTEs MCwwLDBdLFswLDEsMSwwLDAsMF0sWzAsLTEsMSwwLDAsMF0sWzAsMSwwLC0x LDEsMF0sWzAsMSwwLC0xLC0xLDBdLFswLDEsMCwxLC0xLDBdLFswLDEsMCwx LDEsMF0sWzAsMSwwLC0xLDEsMF0sWzAsMSwwLDEsLTEsMF0sWzAsLTEsMCwt MSwxLDBdLFswLC0xLDAsLTEsLTEsMF0sWzAsLTEsMCwxLC0xLDBdLFswLC0x LDAsMSwxLDBdLFswLC0xLDAsLTEsMSwwXSxbMCwtMSwwLDEsLTEsMF1dfSx7 ImFycmF5LWJvdW5kcyI6NjgsImNvbG9yLW5vcm1hbGl6ZSI6MTIyLCJmbGF0 dGVuLXZlcnRleC1kYXRhIjoyMzAsIm9iamVjdC1hc3NpZ24iOjQ1NiwicGlj ay1ieS1hbGlhcyI6NDY3LCJ0by1mbG9hdDMyIjo1MzcsInVwZGF0ZS1kaWZm Ijo1NDh9XSw0OTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiY29sb3Itbm9ybWFsaXplIiksYT10KCJhcnJheS1ib3VuZHMiKSxp PXQoIm9iamVjdC1hc3NpZ24iKSxvPXQoImdsc2xpZnkiKSxzPXQoInBpY2st YnktYWxpYXMiKSxsPXQoImZsYXR0ZW4tdmVydGV4LWRhdGEiKSxjPXQoImVh cmN1dCIpLHU9dCgiYXJyYXktbm9ybWFsaXplIiksaD10KCJ0by1mbG9hdDMy IiksZj1oLmZsb2F0MzIscD1oLmZyYWN0MzIsZD10KCJlczYtd2Vhay1tYXAi KSxnPXQoInBhcnNlLXJlY3QiKTtmdW5jdGlvbiB2KHQsZSl7aWYoISh0aGlz IGluc3RhbmNlb2YgdikpcmV0dXJuIG5ldyB2KHQsZSk7aWYoImZ1bmN0aW9u Ij09dHlwZW9mIHQ/KGV8fChlPXt9KSxlLnJlZ2w9dCk6ZT10LGUubGVuZ3Ro JiYoZS5wb3NpdGlvbnM9ZSksISh0PWUucmVnbCkuaGFzRXh0ZW5zaW9uKCJB TkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpdGhyb3cgRXJyb3IoInJlZ2wtZXJy b3IyZDogYEFOR0xFX2luc3RhbmNlZF9hcnJheXNgIGV4dGVuc2lvbiBzaG91 bGQgYmUgZW5hYmxlZCIpO3RoaXMuZ2w9dC5fZ2wsdGhpcy5yZWdsPXQsdGhp cy5wYXNzZXM9W10sdGhpcy5zaGFkZXJzPXYuc2hhZGVycy5oYXModCk/di5z aGFkZXJzLmdldCh0KTp2LnNoYWRlcnMuc2V0KHQsdi5jcmVhdGVTaGFkZXJz KHQpKS5nZXQodCksdGhpcy51cGRhdGUoZSl9ZS5leHBvcnRzPXYsdi5kYXNo TXVsdD0yLHYubWF4UGF0dGVybkxlbmd0aD0yNTYsdi5wcmVjaXNpb25UaHJl c2hvbGQ9M2U2LHYubWF4UG9pbnRzPTFlNCx2Lm1heExpbmVzPTIwNDgsdi5z aGFkZXJzPW5ldyBkLHYuY3JlYXRlU2hhZGVycz1mdW5jdGlvbih0KXt2YXIg ZSxyPXQuYnVmZmVyKHt1c2FnZToic3RhdGljIix0eXBlOiJmbG9hdCIsZGF0 YTpbMCwxLDAsMCwxLDEsMSwwXX0pLG49e3ByaW1pdGl2ZToidHJpYW5nbGUg c3RyaXAiLGluc3RhbmNlczp0LnByb3AoImNvdW50IiksY291bnQ6NCxvZmZz ZXQ6MCx1bmlmb3Jtczp7bWl0ZXJNb2RlOmZ1bmN0aW9uKHQsZSl7cmV0dXJu InJvdW5kIj09PWUuam9pbj8yOjF9LG1pdGVyTGltaXQ6dC5wcm9wKCJtaXRl ckxpbWl0Iiksc2NhbGU6dC5wcm9wKCJzY2FsZSIpLHNjYWxlRnJhY3Q6dC5w cm9wKCJzY2FsZUZyYWN0IiksdHJhbnNsYXRlRnJhY3Q6dC5wcm9wKCJ0cmFu c2xhdGVGcmFjdCIpLHRyYW5zbGF0ZTp0LnByb3AoInRyYW5zbGF0ZSIpLHRo aWNrbmVzczp0LnByb3AoInRoaWNrbmVzcyIpLGRhc2hQYXR0ZXJuOnQucHJv cCgiZGFzaFRleHR1cmUiKSxvcGFjaXR5OnQucHJvcCgib3BhY2l0eSIpLHBp eGVsUmF0aW86dC5jb250ZXh0KCJwaXhlbFJhdGlvIiksaWQ6dC5wcm9wKCJp ZCIpLGRhc2hTaXplOnQucHJvcCgiZGFzaExlbmd0aCIpLHZpZXdwb3J0OmZ1 bmN0aW9uKHQsZSl7cmV0dXJuW2Uudmlld3BvcnQueCxlLnZpZXdwb3J0Lnks dC52aWV3cG9ydFdpZHRoLHQudmlld3BvcnRIZWlnaHRdfSxkZXB0aDp0LnBy b3AoImRlcHRoIil9LGJsZW5kOntlbmFibGU6ITAsY29sb3I6WzAsMCwwLDBd LGVxdWF0aW9uOntyZ2I6ImFkZCIsYWxwaGE6ImFkZCJ9LGZ1bmM6e3NyY1JH Qjoic3JjIGFscGhhIixkc3RSR0I6Im9uZSBtaW51cyBzcmMgYWxwaGEiLHNy Y0FscGhhOiJvbmUgbWludXMgZHN0IGFscGhhIixkc3RBbHBoYToib25lIn19 LGRlcHRoOntlbmFibGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4hZS5vdmVybGF5 fX0sc3RlbmNpbDp7ZW5hYmxlOiExfSxzY2lzc29yOntlbmFibGU6ITAsYm94 OnQucHJvcCgidmlld3BvcnQiKX0sdmlld3BvcnQ6dC5wcm9wKCJ2aWV3cG9y dCIpfSxhPXQoaSh7dmVydDpvKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xu I2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgYUNvb3JkLCBi Q29vcmQsIGFDb29yZEZyYWN0LCBiQ29vcmRGcmFjdDtcbmF0dHJpYnV0ZSB2 ZWM0IGNvbG9yO1xuYXR0cmlidXRlIGZsb2F0IGxpbmVFbmQsIGxpbmVUb3A7 XG5cbnVuaWZvcm0gdmVjMiBzY2FsZSwgc2NhbGVGcmFjdCwgdHJhbnNsYXRl LCB0cmFuc2xhdGVGcmFjdDtcbnVuaWZvcm0gZmxvYXQgdGhpY2tuZXNzLCBw aXhlbFJhdGlvLCBpZCwgZGVwdGg7XG51bmlmb3JtIHZlYzQgdmlld3BvcnQ7 XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52YXJ5aW5nIHZlYzIgdGFu Z2VudDtcblxudmVjMiBwcm9qZWN0KHZlYzIgcG9zaXRpb24sIHZlYzIgcG9z aXRpb25GcmFjdCwgdmVjMiBzY2FsZSwgdmVjMiBzY2FsZUZyYWN0LCB2ZWMy IHRyYW5zbGF0ZSwgdmVjMiB0cmFuc2xhdGVGcmFjdCkge1xuXHQvLyB0aGUg b3JkZXIgaXMgaW1wb3J0YW50XG5cdHJldHVybiBwb3NpdGlvbiAqIHNjYWxl ICsgdHJhbnNsYXRlXG4gICAgICAgKyBwb3NpdGlvbkZyYWN0ICogc2NhbGUg KyB0cmFuc2xhdGVGcmFjdFxuICAgICAgICsgcG9zaXRpb24gKiBzY2FsZUZy YWN0XG4gICAgICAgKyBwb3NpdGlvbkZyYWN0ICogc2NhbGVGcmFjdDtcbn1c blxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBsaW5lU3RhcnQgPSAxLiAtIGxp bmVFbmQ7XG5cdGZsb2F0IGxpbmVPZmZzZXQgPSBsaW5lVG9wICogMi4gLSAx LjtcblxuXHR2ZWMyIGRpZmYgPSAoYkNvb3JkICsgYkNvb3JkRnJhY3QgLSBh Q29vcmQgLSBhQ29vcmRGcmFjdCk7XG5cdHRhbmdlbnQgPSBub3JtYWxpemUo ZGlmZiAqIHNjYWxlICogdmlld3BvcnQuencpO1xuXHR2ZWMyIG5vcm1hbCA9 IHZlYzIoLXRhbmdlbnQueSwgdGFuZ2VudC54KTtcblxuXHR2ZWMyIHBvc2l0 aW9uID0gcHJvamVjdChhQ29vcmQsIGFDb29yZEZyYWN0LCBzY2FsZSwgc2Nh bGVGcmFjdCwgdHJhbnNsYXRlLCB0cmFuc2xhdGVGcmFjdCkgKiBsaW5lU3Rh cnRcblx0XHQrIHByb2plY3QoYkNvb3JkLCBiQ29vcmRGcmFjdCwgc2NhbGUs IHNjYWxlRnJhY3QsIHRyYW5zbGF0ZSwgdHJhbnNsYXRlRnJhY3QpICogbGlu ZUVuZFxuXG5cdFx0KyB0aGlja25lc3MgKiBub3JtYWwgKiAuNSAqIGxpbmVP ZmZzZXQgLyB2aWV3cG9ydC56dztcblxuXHRnbF9Qb3NpdGlvbiA9IHZlYzQo cG9zaXRpb24gKiAyLjAgLSAxLjAsIGRlcHRoLCAxKTtcblxuXHRmcmFnQ29s b3IgPSBjb2xvciAvIDI1NS47XG59XG4iXSksZnJhZzpvKFsicHJlY2lzaW9u IGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSBz YW1wbGVyMkQgZGFzaFBhdHRlcm47XG5cbnVuaWZvcm0gZmxvYXQgZGFzaFNp emUsIHBpeGVsUmF0aW8sIHRoaWNrbmVzcywgb3BhY2l0eSwgaWQ7XG5cbnZh cnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52YXJ5aW5nIHZlYzIgdGFuZ2VudDtc blxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBhbHBoYSA9IDEuO1xuXG5cdGZs b2F0IHQgPSBmcmFjdChkb3QodGFuZ2VudCwgZ2xfRnJhZ0Nvb3JkLnh5KSAv IGRhc2hTaXplKSAqIC41ICsgLjI1O1xuXHRmbG9hdCBkYXNoID0gdGV4dHVy ZTJEKGRhc2hQYXR0ZXJuLCB2ZWMyKHQsIC41KSkucjtcblxuXHRnbF9GcmFn Q29sb3IgPSBmcmFnQ29sb3I7XG5cdGdsX0ZyYWdDb2xvci5hICo9IGFscGhh ICogb3BhY2l0eSAqIGRhc2g7XG59XG4iXSksYXR0cmlidXRlczp7bGluZUVu ZDp7YnVmZmVyOnIsZGl2aXNvcjowLHN0cmlkZTo4LG9mZnNldDowfSxsaW5l VG9wOntidWZmZXI6cixkaXZpc29yOjAsc3RyaWRlOjgsb2Zmc2V0OjR9LGFD b29yZDp7YnVmZmVyOnQucHJvcCgicG9zaXRpb25CdWZmZXIiKSxzdHJpZGU6 OCxvZmZzZXQ6OCxkaXZpc29yOjF9LGJDb29yZDp7YnVmZmVyOnQucHJvcCgi cG9zaXRpb25CdWZmZXIiKSxzdHJpZGU6OCxvZmZzZXQ6MTYsZGl2aXNvcjox fSxhQ29vcmRGcmFjdDp7YnVmZmVyOnQucHJvcCgicG9zaXRpb25GcmFjdEJ1 ZmZlciIpLHN0cmlkZTo4LG9mZnNldDo4LGRpdmlzb3I6MX0sYkNvb3JkRnJh Y3Q6e2J1ZmZlcjp0LnByb3AoInBvc2l0aW9uRnJhY3RCdWZmZXIiKSxzdHJp ZGU6OCxvZmZzZXQ6MTYsZGl2aXNvcjoxfSxjb2xvcjp7YnVmZmVyOnQucHJv cCgiY29sb3JCdWZmZXIiKSxzdHJpZGU6NCxvZmZzZXQ6MCxkaXZpc29yOjF9 fX0sbikpO3RyeXtlPXQoaSh7Y3VsbDp7ZW5hYmxlOiEwLGZhY2U6ImJhY2si fSx2ZXJ0Om8oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdM U0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBhQ29vcmQsIGJDb29yZCwgbmV4 dENvb3JkLCBwcmV2Q29vcmQ7XG5hdHRyaWJ1dGUgdmVjNCBhQ29sb3IsIGJD b2xvcjtcbmF0dHJpYnV0ZSBmbG9hdCBsaW5lRW5kLCBsaW5lVG9wO1xuXG51 bmlmb3JtIHZlYzIgc2NhbGUsIHRyYW5zbGF0ZTtcbnVuaWZvcm0gZmxvYXQg dGhpY2tuZXNzLCBwaXhlbFJhdGlvLCBpZCwgZGVwdGg7XG51bmlmb3JtIHZl YzQgdmlld3BvcnQ7XG51bmlmb3JtIGZsb2F0IG1pdGVyTGltaXQsIG1pdGVy TW9kZTtcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcbnZhcnlpbmcgdmVj NCBzdGFydEN1dG9mZiwgZW5kQ3V0b2ZmO1xudmFyeWluZyB2ZWMyIHRhbmdl bnQ7XG52YXJ5aW5nIHZlYzIgc3RhcnRDb29yZCwgZW5kQ29vcmQ7XG52YXJ5 aW5nIGZsb2F0IGVuYWJsZVN0YXJ0TWl0ZXIsIGVuYWJsZUVuZE1pdGVyO1xu XG5jb25zdCBmbG9hdCBSRVZFUlNFX1RIUkVTSE9MRCA9IC0uODc1O1xuY29u c3QgZmxvYXQgTUlOX0RJRkYgPSAxZS02O1xuXG4vLyBUT0RPOiBwb3NzaWJs ZSBvcHRpbWl6YXRpb25zOiBhdm9pZCBvdmVyY2FsY3VsYXRpbmcgYWxsIGZv ciB2ZXJ0aWNlcyBhbmQgY2FsYyBqdXN0IG9uZSBpbnN0ZWFkXG4vLyBUT0RP OiBwcmVjYWxjdWxhdGUgZG90IHByb2R1Y3RzLCBub3JtYWxpemUgdGhpbmdz IGJlZm9yZWhlYWQgZXRjLlxuLy8gVE9ETzogcmVmYWN0b3IgdG8gcmVjdGFu Z3VsYXIgYWxnb3JpdGhtXG5cbmZsb2F0IGRpc3RUb0xpbmUodmVjMiBwLCB2 ZWMyIGEsIHZlYzIgYikge1xuXHR2ZWMyIGRpZmYgPSBiIC0gYTtcblx0dmVj MiBwZXJwID0gbm9ybWFsaXplKHZlYzIoLWRpZmYueSwgZGlmZi54KSk7XG5c dHJldHVybiBkb3QocCAtIGEsIHBlcnApO1xufVxuXG5ib29sIGlzTmFOKCBm bG9hdCB2YWwgKXtcbiAgcmV0dXJuICggdmFsIDwgMC4wIHx8IDAuMCA8IHZh bCB8fCB2YWwgPT0gMC4wICkgPyBmYWxzZSA6IHRydWU7XG59XG5cbnZvaWQg bWFpbigpIHtcblx0dmVjMiBhQ29vcmQgPSBhQ29vcmQsIGJDb29yZCA9IGJD b29yZCwgcHJldkNvb3JkID0gcHJldkNvb3JkLCBuZXh0Q29vcmQgPSBuZXh0 Q29vcmQ7XG5cbiAgdmVjMiBhZGp1c3RlZFNjYWxlO1xuICBhZGp1c3RlZFNj YWxlLnggPSAoYWJzKHNjYWxlLngpIDwgTUlOX0RJRkYpID8gTUlOX0RJRkYg OiBzY2FsZS54O1xuICBhZGp1c3RlZFNjYWxlLnkgPSAoYWJzKHNjYWxlLnkp IDwgTUlOX0RJRkYpID8gTUlOX0RJRkYgOiBzY2FsZS55O1xuXG4gIHZlYzIg c2NhbGVSYXRpbyA9IGFkanVzdGVkU2NhbGUgKiB2aWV3cG9ydC56dztcblx0 dmVjMiBub3JtYWxXaWR0aCA9IHRoaWNrbmVzcyAvIHNjYWxlUmF0aW87XG5c blx0ZmxvYXQgbGluZVN0YXJ0ID0gMS4gLSBsaW5lRW5kO1xuXHRmbG9hdCBs aW5lQm90ID0gMS4gLSBsaW5lVG9wO1xuXG5cdGZyYWdDb2xvciA9IChsaW5l U3RhcnQgKiBhQ29sb3IgKyBsaW5lRW5kICogYkNvbG9yKSAvIDI1NS47XG5c blx0aWYgKGlzTmFOKGFDb29yZC54KSB8fCBpc05hTihhQ29vcmQueSkgfHwg aXNOYU4oYkNvb3JkLngpIHx8IGlzTmFOKGJDb29yZC55KSkgcmV0dXJuO1xu XG5cdGlmIChhQ29vcmQgPT0gcHJldkNvb3JkKSBwcmV2Q29vcmQgPSBhQ29v cmQgKyBub3JtYWxpemUoYkNvb3JkIC0gYUNvb3JkKTtcblx0aWYgKGJDb29y ZCA9PSBuZXh0Q29vcmQpIG5leHRDb29yZCA9IGJDb29yZCAtIG5vcm1hbGl6 ZShiQ29vcmQgLSBhQ29vcmQpO1xuXG5cdHZlYzIgcHJldkRpZmYgPSBhQ29v cmQgLSBwcmV2Q29vcmQ7XG5cdHZlYzIgY3VyckRpZmYgPSBiQ29vcmQgLSBh Q29vcmQ7XG5cdHZlYzIgbmV4dERpZmYgPSBuZXh0Q29vcmQgLSBiQ29vcmQ7 XG5cblx0dmVjMiBwcmV2VGFuZ2VudCA9IG5vcm1hbGl6ZShwcmV2RGlmZiAq IHNjYWxlUmF0aW8pO1xuXHR2ZWMyIGN1cnJUYW5nZW50ID0gbm9ybWFsaXpl KGN1cnJEaWZmICogc2NhbGVSYXRpbyk7XG5cdHZlYzIgbmV4dFRhbmdlbnQg PSBub3JtYWxpemUobmV4dERpZmYgKiBzY2FsZVJhdGlvKTtcblxuXHR2ZWMy IHByZXZOb3JtYWwgPSB2ZWMyKC1wcmV2VGFuZ2VudC55LCBwcmV2VGFuZ2Vu dC54KTtcblx0dmVjMiBjdXJyTm9ybWFsID0gdmVjMigtY3VyclRhbmdlbnQu eSwgY3VyclRhbmdlbnQueCk7XG5cdHZlYzIgbmV4dE5vcm1hbCA9IHZlYzIo LW5leHRUYW5nZW50LnksIG5leHRUYW5nZW50LngpO1xuXG5cdHZlYzIgc3Rh cnRKb2luRGlyZWN0aW9uID0gbm9ybWFsaXplKHByZXZUYW5nZW50IC0gY3Vy clRhbmdlbnQpO1xuXHR2ZWMyIGVuZEpvaW5EaXJlY3Rpb24gPSBub3JtYWxp emUoY3VyclRhbmdlbnQgLSBuZXh0VGFuZ2VudCk7XG5cblx0Ly8gY29sbGFw c2VkL3VuaWRpcmVjdGlvbmFsIHNlZ21lbnQgY2FzZXNcblx0Ly8gRklYTUU6 IHRoZXJlIHNob3VsZCBiZSBtb3JlIGVsZWdhbnQgc29sdXRpb25cblx0dmVj MiBwcmV2VGFuRGlmZiA9IGFicyhwcmV2VGFuZ2VudCAtIGN1cnJUYW5nZW50 KTtcblx0dmVjMiBuZXh0VGFuRGlmZiA9IGFicyhuZXh0VGFuZ2VudCAtIGN1 cnJUYW5nZW50KTtcblx0aWYgKG1heChwcmV2VGFuRGlmZi54LCBwcmV2VGFu RGlmZi55KSA8IE1JTl9ESUZGKSB7XG5cdFx0c3RhcnRKb2luRGlyZWN0aW9u ID0gY3Vyck5vcm1hbDtcblx0fVxuXHRpZiAobWF4KG5leHRUYW5EaWZmLngs IG5leHRUYW5EaWZmLnkpIDwgTUlOX0RJRkYpIHtcblx0XHRlbmRKb2luRGly ZWN0aW9uID0gY3Vyck5vcm1hbDtcblx0fVxuXHRpZiAoYUNvb3JkID09IGJD b29yZCkge1xuXHRcdGVuZEpvaW5EaXJlY3Rpb24gPSBzdGFydEpvaW5EaXJl Y3Rpb247XG5cdFx0Y3Vyck5vcm1hbCA9IHByZXZOb3JtYWw7XG5cdFx0Y3Vy clRhbmdlbnQgPSBwcmV2VGFuZ2VudDtcblx0fVxuXG5cdHRhbmdlbnQgPSBj dXJyVGFuZ2VudDtcblxuXHQvL2NhbGN1bGF0ZSBqb2luIHNoaWZ0cyByZWxh dGl2ZSB0byBub3JtYWxzXG5cdGZsb2F0IHN0YXJ0Sm9pblNoaWZ0ID0gZG90 KGN1cnJOb3JtYWwsIHN0YXJ0Sm9pbkRpcmVjdGlvbik7XG5cdGZsb2F0IGVu ZEpvaW5TaGlmdCA9IGRvdChjdXJyTm9ybWFsLCBlbmRKb2luRGlyZWN0aW9u KTtcblxuXHRmbG9hdCBzdGFydE1pdGVyUmF0aW8gPSBhYnMoMS4gLyBzdGFy dEpvaW5TaGlmdCk7XG5cdGZsb2F0IGVuZE1pdGVyUmF0aW8gPSBhYnMoMS4g LyBlbmRKb2luU2hpZnQpO1xuXG5cdHZlYzIgc3RhcnRKb2luID0gc3RhcnRK b2luRGlyZWN0aW9uICogc3RhcnRNaXRlclJhdGlvO1xuXHR2ZWMyIGVuZEpv aW4gPSBlbmRKb2luRGlyZWN0aW9uICogZW5kTWl0ZXJSYXRpbztcblxuXHR2 ZWMyIHN0YXJ0VG9wSm9pbiwgc3RhcnRCb3RKb2luLCBlbmRUb3BKb2luLCBl bmRCb3RKb2luO1xuXHRzdGFydFRvcEpvaW4gPSBzaWduKHN0YXJ0Sm9pblNo aWZ0KSAqIHN0YXJ0Sm9pbiAqIC41O1xuXHRzdGFydEJvdEpvaW4gPSAtc3Rh cnRUb3BKb2luO1xuXG5cdGVuZFRvcEpvaW4gPSBzaWduKGVuZEpvaW5TaGlm dCkgKiBlbmRKb2luICogLjU7XG5cdGVuZEJvdEpvaW4gPSAtZW5kVG9wSm9p bjtcblxuXHR2ZWMyIGFUb3BDb29yZCA9IGFDb29yZCArIG5vcm1hbFdpZHRo ICogc3RhcnRUb3BKb2luO1xuXHR2ZWMyIGJUb3BDb29yZCA9IGJDb29yZCAr IG5vcm1hbFdpZHRoICogZW5kVG9wSm9pbjtcblx0dmVjMiBhQm90Q29vcmQg PSBhQ29vcmQgKyBub3JtYWxXaWR0aCAqIHN0YXJ0Qm90Sm9pbjtcblx0dmVj MiBiQm90Q29vcmQgPSBiQ29vcmQgKyBub3JtYWxXaWR0aCAqIGVuZEJvdEpv aW47XG5cblx0Ly9taXRlciBhbnRpLWNsaXBwaW5nXG5cdGZsb2F0IGJhQ2xp cHBpbmcgPSBkaXN0VG9MaW5lKGJDb29yZCwgYUNvb3JkLCBhQm90Q29vcmQp IC8gZG90KG5vcm1hbGl6ZShub3JtYWxXaWR0aCAqIGVuZEJvdEpvaW4pLCBu b3JtYWxpemUobm9ybWFsV2lkdGgueXggKiB2ZWMyKC1zdGFydEJvdEpvaW4u eSwgc3RhcnRCb3RKb2luLngpKSk7XG5cdGZsb2F0IGFiQ2xpcHBpbmcgPSBk aXN0VG9MaW5lKGFDb29yZCwgYkNvb3JkLCBiVG9wQ29vcmQpIC8gZG90KG5v cm1hbGl6ZShub3JtYWxXaWR0aCAqIHN0YXJ0Qm90Sm9pbiksIG5vcm1hbGl6 ZShub3JtYWxXaWR0aC55eCAqIHZlYzIoLWVuZEJvdEpvaW4ueSwgZW5kQm90 Sm9pbi54KSkpO1xuXG5cdC8vcHJldmVudCBjbG9zZSB0byByZXZlcnNlIGRp cmVjdGlvbiBzd2l0Y2hcblx0Ym9vbCBwcmV2UmV2ZXJzZSA9IGRvdChjdXJy VGFuZ2VudCwgcHJldlRhbmdlbnQpIDw9IFJFVkVSU0VfVEhSRVNIT0xEICYm IGFicyhkb3QoY3VyclRhbmdlbnQsIHByZXZOb3JtYWwpKSAqIG1pbihsZW5n dGgocHJldkRpZmYpLCBsZW5ndGgoY3VyckRpZmYpKSA8ICBsZW5ndGgobm9y bWFsV2lkdGggKiBjdXJyTm9ybWFsKTtcblx0Ym9vbCBuZXh0UmV2ZXJzZSA9 IGRvdChjdXJyVGFuZ2VudCwgbmV4dFRhbmdlbnQpIDw9IFJFVkVSU0VfVEhS RVNIT0xEICYmIGFicyhkb3QoY3VyclRhbmdlbnQsIG5leHROb3JtYWwpKSAq IG1pbihsZW5ndGgobmV4dERpZmYpLCBsZW5ndGgoY3VyckRpZmYpKSA8ICBs ZW5ndGgobm9ybWFsV2lkdGggKiBjdXJyTm9ybWFsKTtcblxuXHRpZiAocHJl dlJldmVyc2UpIHtcblx0XHQvL21ha2Ugam9pbiByZWN0YW5ndWxhclxuXHRc dHZlYzIgbWl0ZXJTaGlmdCA9IG5vcm1hbFdpZHRoICogc3RhcnRKb2luRGly ZWN0aW9uICogbWl0ZXJMaW1pdCAqIC41O1xuXHRcdGZsb2F0IG5vcm1hbEFk anVzdCA9IDEuIC0gbWluKG1pdGVyTGltaXQgLyBzdGFydE1pdGVyUmF0aW8s IDEuKTtcblx0XHRhQm90Q29vcmQgPSBhQ29vcmQgKyBtaXRlclNoaWZ0IC0g bm9ybWFsQWRqdXN0ICogbm9ybWFsV2lkdGggKiBjdXJyTm9ybWFsICogLjU7 XG5cdFx0YVRvcENvb3JkID0gYUNvb3JkICsgbWl0ZXJTaGlmdCArIG5vcm1h bEFkanVzdCAqIG5vcm1hbFdpZHRoICogY3Vyck5vcm1hbCAqIC41O1xuXHR9 XG5cdGVsc2UgaWYgKCFuZXh0UmV2ZXJzZSAmJiBiYUNsaXBwaW5nID4gMC4g JiYgYmFDbGlwcGluZyA8IGxlbmd0aChub3JtYWxXaWR0aCAqIGVuZEJvdEpv aW4pKSB7XG5cdFx0Ly9oYW5kbGUgbWl0ZXIgY2xpcHBpbmdcblx0XHRiVG9w Q29vcmQgLT0gbm9ybWFsV2lkdGggKiBlbmRUb3BKb2luO1xuXHRcdGJUb3BD b29yZCArPSBub3JtYWxpemUoZW5kVG9wSm9pbiAqIG5vcm1hbFdpZHRoKSAq IGJhQ2xpcHBpbmc7XG5cdH1cblxuXHRpZiAobmV4dFJldmVyc2UpIHtcblx0 XHQvL21ha2Ugam9pbiByZWN0YW5ndWxhclxuXHRcdHZlYzIgbWl0ZXJTaGlm dCA9IG5vcm1hbFdpZHRoICogZW5kSm9pbkRpcmVjdGlvbiAqIG1pdGVyTGlt aXQgKiAuNTtcblx0XHRmbG9hdCBub3JtYWxBZGp1c3QgPSAxLiAtIG1pbiht aXRlckxpbWl0IC8gZW5kTWl0ZXJSYXRpbywgMS4pO1xuXHRcdGJCb3RDb29y ZCA9IGJDb29yZCArIG1pdGVyU2hpZnQgLSBub3JtYWxBZGp1c3QgKiBub3Jt YWxXaWR0aCAqIGN1cnJOb3JtYWwgKiAuNTtcblx0XHRiVG9wQ29vcmQgPSBi Q29vcmQgKyBtaXRlclNoaWZ0ICsgbm9ybWFsQWRqdXN0ICogbm9ybWFsV2lk dGggKiBjdXJyTm9ybWFsICogLjU7XG5cdH1cblx0ZWxzZSBpZiAoIXByZXZS ZXZlcnNlICYmIGFiQ2xpcHBpbmcgPiAwLiAmJiBhYkNsaXBwaW5nIDwgbGVu Z3RoKG5vcm1hbFdpZHRoICogc3RhcnRCb3RKb2luKSkge1xuXHRcdC8vaGFu ZGxlIG1pdGVyIGNsaXBwaW5nXG5cdFx0YUJvdENvb3JkIC09IG5vcm1hbFdp ZHRoICogc3RhcnRCb3RKb2luO1xuXHRcdGFCb3RDb29yZCArPSBub3JtYWxp emUoc3RhcnRCb3RKb2luICogbm9ybWFsV2lkdGgpICogYWJDbGlwcGluZztc blx0fVxuXG5cdHZlYzIgYVRvcFBvc2l0aW9uID0gKGFUb3BDb29yZCkgKiBh ZGp1c3RlZFNjYWxlICsgdHJhbnNsYXRlO1xuXHR2ZWMyIGFCb3RQb3NpdGlv biA9IChhQm90Q29vcmQpICogYWRqdXN0ZWRTY2FsZSArIHRyYW5zbGF0ZTtc blxuXHR2ZWMyIGJUb3BQb3NpdGlvbiA9IChiVG9wQ29vcmQpICogYWRqdXN0 ZWRTY2FsZSArIHRyYW5zbGF0ZTtcblx0dmVjMiBiQm90UG9zaXRpb24gPSAo YkJvdENvb3JkKSAqIGFkanVzdGVkU2NhbGUgKyB0cmFuc2xhdGU7XG5cblx0 Ly9wb3NpdGlvbiBpcyBub3JtYWxpemVkIDAuLjEgY29vcmQgb24gdGhlIHNj cmVlblxuXHR2ZWMyIHBvc2l0aW9uID0gKGFUb3BQb3NpdGlvbiAqIGxpbmVU b3AgKyBhQm90UG9zaXRpb24gKiBsaW5lQm90KSAqIGxpbmVTdGFydCArIChi VG9wUG9zaXRpb24gKiBsaW5lVG9wICsgYkJvdFBvc2l0aW9uICogbGluZUJv dCkgKiBsaW5lRW5kO1xuXG5cdHN0YXJ0Q29vcmQgPSBhQ29vcmQgKiBzY2Fs ZVJhdGlvICsgdHJhbnNsYXRlICogdmlld3BvcnQuencgKyB2aWV3cG9ydC54 eTtcblx0ZW5kQ29vcmQgPSBiQ29vcmQgKiBzY2FsZVJhdGlvICsgdHJhbnNs YXRlICogdmlld3BvcnQuencgKyB2aWV3cG9ydC54eTtcblxuXHRnbF9Qb3Np dGlvbiA9IHZlYzQocG9zaXRpb24gICogMi4wIC0gMS4wLCBkZXB0aCwgMSk7 XG5cblx0ZW5hYmxlU3RhcnRNaXRlciA9IHN0ZXAoZG90KGN1cnJUYW5nZW50 LCBwcmV2VGFuZ2VudCksIC41KTtcblx0ZW5hYmxlRW5kTWl0ZXIgPSBzdGVw KGRvdChjdXJyVGFuZ2VudCwgbmV4dFRhbmdlbnQpLCAuNSk7XG5cblx0Ly9i ZXZlbCBtaXRlciBjdXRvZmZzXG5cdGlmIChtaXRlck1vZGUgPT0gMS4pIHtc blx0XHRpZiAoZW5hYmxlU3RhcnRNaXRlciA9PSAxLikge1xuXHRcdFx0dmVj MiBzdGFydE1pdGVyV2lkdGggPSB2ZWMyKHN0YXJ0Sm9pbkRpcmVjdGlvbikg KiB0aGlja25lc3MgKiBtaXRlckxpbWl0ICogLjU7XG5cdFx0XHRzdGFydEN1 dG9mZiA9IHZlYzQoYUNvb3JkLCBhQ29vcmQpO1xuXHRcdFx0c3RhcnRDdXRv ZmYuencgKz0gdmVjMigtc3RhcnRKb2luRGlyZWN0aW9uLnksIHN0YXJ0Sm9p bkRpcmVjdGlvbi54KSAvIHNjYWxlUmF0aW87XG5cdFx0XHRzdGFydEN1dG9m ZiA9IHN0YXJ0Q3V0b2ZmICogc2NhbGVSYXRpby54eXh5ICsgdHJhbnNsYXRl Lnh5eHkgKiB2aWV3cG9ydC56d3p3O1xuXHRcdFx0c3RhcnRDdXRvZmYgKz0g dmlld3BvcnQueHl4eTtcblx0XHRcdHN0YXJ0Q3V0b2ZmICs9IHN0YXJ0TWl0 ZXJXaWR0aC54eXh5O1xuXHRcdH1cblxuXHRcdGlmIChlbmFibGVFbmRNaXRl ciA9PSAxLikge1xuXHRcdFx0dmVjMiBlbmRNaXRlcldpZHRoID0gdmVjMihl bmRKb2luRGlyZWN0aW9uKSAqIHRoaWNrbmVzcyAqIG1pdGVyTGltaXQgKiAu NTtcblx0XHRcdGVuZEN1dG9mZiA9IHZlYzQoYkNvb3JkLCBiQ29vcmQpO1xu XHRcdFx0ZW5kQ3V0b2ZmLnp3ICs9IHZlYzIoLWVuZEpvaW5EaXJlY3Rpb24u eSwgZW5kSm9pbkRpcmVjdGlvbi54KSAgLyBzY2FsZVJhdGlvO1xuXHRcdFx0 ZW5kQ3V0b2ZmID0gZW5kQ3V0b2ZmICogc2NhbGVSYXRpby54eXh5ICsgdHJh bnNsYXRlLnh5eHkgKiB2aWV3cG9ydC56d3p3O1xuXHRcdFx0ZW5kQ3V0b2Zm ICs9IHZpZXdwb3J0Lnh5eHk7XG5cdFx0XHRlbmRDdXRvZmYgKz0gZW5kTWl0 ZXJXaWR0aC54eXh5O1xuXHRcdH1cblx0fVxuXG5cdC8vcm91bmQgbWl0ZXIg Y3V0b2Zmc1xuXHRlbHNlIGlmIChtaXRlck1vZGUgPT0gMi4pIHtcblx0XHRp ZiAoZW5hYmxlU3RhcnRNaXRlciA9PSAxLikge1xuXHRcdFx0dmVjMiBzdGFy dE1pdGVyV2lkdGggPSB2ZWMyKHN0YXJ0Sm9pbkRpcmVjdGlvbikgKiB0aGlj a25lc3MgKiBhYnMoZG90KHN0YXJ0Sm9pbkRpcmVjdGlvbiwgY3Vyck5vcm1h bCkpICogLjU7XG5cdFx0XHRzdGFydEN1dG9mZiA9IHZlYzQoYUNvb3JkLCBh Q29vcmQpO1xuXHRcdFx0c3RhcnRDdXRvZmYuencgKz0gdmVjMigtc3RhcnRK b2luRGlyZWN0aW9uLnksIHN0YXJ0Sm9pbkRpcmVjdGlvbi54KSAvIHNjYWxl UmF0aW87XG5cdFx0XHRzdGFydEN1dG9mZiA9IHN0YXJ0Q3V0b2ZmICogc2Nh bGVSYXRpby54eXh5ICsgdHJhbnNsYXRlLnh5eHkgKiB2aWV3cG9ydC56d3p3 O1xuXHRcdFx0c3RhcnRDdXRvZmYgKz0gdmlld3BvcnQueHl4eTtcblx0XHRc dHN0YXJ0Q3V0b2ZmICs9IHN0YXJ0TWl0ZXJXaWR0aC54eXh5O1xuXHRcdH1c blxuXHRcdGlmIChlbmFibGVFbmRNaXRlciA9PSAxLikge1xuXHRcdFx0dmVj MiBlbmRNaXRlcldpZHRoID0gdmVjMihlbmRKb2luRGlyZWN0aW9uKSAqIHRo aWNrbmVzcyAqIGFicyhkb3QoZW5kSm9pbkRpcmVjdGlvbiwgY3Vyck5vcm1h bCkpICogLjU7XG5cdFx0XHRlbmRDdXRvZmYgPSB2ZWM0KGJDb29yZCwgYkNv b3JkKTtcblx0XHRcdGVuZEN1dG9mZi56dyArPSB2ZWMyKC1lbmRKb2luRGly ZWN0aW9uLnksIGVuZEpvaW5EaXJlY3Rpb24ueCkgIC8gc2NhbGVSYXRpbztc blx0XHRcdGVuZEN1dG9mZiA9IGVuZEN1dG9mZiAqIHNjYWxlUmF0aW8ueHl4 eSArIHRyYW5zbGF0ZS54eXh5ICogdmlld3BvcnQuend6dztcblx0XHRcdGVu ZEN1dG9mZiArPSB2aWV3cG9ydC54eXh5O1xuXHRcdFx0ZW5kQ3V0b2ZmICs9 IGVuZE1pdGVyV2lkdGgueHl4eTtcblx0XHR9XG5cdH1cbn1cbiJdKSxmcmFn Om8oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkg MVxuXG51bmlmb3JtIHNhbXBsZXIyRCBkYXNoUGF0dGVybjtcbnVuaWZvcm0g ZmxvYXQgZGFzaFNpemUsIHBpeGVsUmF0aW8sIHRoaWNrbmVzcywgb3BhY2l0 eSwgaWQsIG1pdGVyTW9kZTtcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtc bnZhcnlpbmcgdmVjMiB0YW5nZW50O1xudmFyeWluZyB2ZWM0IHN0YXJ0Q3V0 b2ZmLCBlbmRDdXRvZmY7XG52YXJ5aW5nIHZlYzIgc3RhcnRDb29yZCwgZW5k Q29vcmQ7XG52YXJ5aW5nIGZsb2F0IGVuYWJsZVN0YXJ0TWl0ZXIsIGVuYWJs ZUVuZE1pdGVyO1xuXG5mbG9hdCBkaXN0VG9MaW5lKHZlYzIgcCwgdmVjMiBh LCB2ZWMyIGIpIHtcblx0dmVjMiBkaWZmID0gYiAtIGE7XG5cdHZlYzIgcGVy cCA9IG5vcm1hbGl6ZSh2ZWMyKC1kaWZmLnksIGRpZmYueCkpO1xuXHRyZXR1 cm4gZG90KHAgLSBhLCBwZXJwKTtcbn1cblxudm9pZCBtYWluKCkge1xuXHRm bG9hdCBhbHBoYSA9IDEuLCBkaXN0VG9TdGFydCwgZGlzdFRvRW5kO1xuXHRm bG9hdCBjdXRvZmYgPSB0aGlja25lc3MgKiAuNTtcblxuXHQvL2JldmVsIG1p dGVyXG5cdGlmIChtaXRlck1vZGUgPT0gMS4pIHtcblx0XHRpZiAoZW5hYmxl U3RhcnRNaXRlciA9PSAxLikge1xuXHRcdFx0ZGlzdFRvU3RhcnQgPSBkaXN0 VG9MaW5lKGdsX0ZyYWdDb29yZC54eSwgc3RhcnRDdXRvZmYueHksIHN0YXJ0 Q3V0b2ZmLnp3KTtcblx0XHRcdGlmIChkaXN0VG9TdGFydCA8IC0xLikge1xu XHRcdFx0XHRkaXNjYXJkO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5c dFx0XHRhbHBoYSAqPSBtaW4obWF4KGRpc3RUb1N0YXJ0ICsgMS4sIDAuKSwg MS4pO1xuXHRcdH1cblxuXHRcdGlmIChlbmFibGVFbmRNaXRlciA9PSAxLikg e1xuXHRcdFx0ZGlzdFRvRW5kID0gZGlzdFRvTGluZShnbF9GcmFnQ29vcmQu eHksIGVuZEN1dG9mZi54eSwgZW5kQ3V0b2ZmLnp3KTtcblx0XHRcdGlmIChk aXN0VG9FbmQgPCAtMS4pIHtcblx0XHRcdFx0ZGlzY2FyZDtcblx0XHRcdFx0 cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0YWxwaGEgKj0gbWluKG1heChkaXN0 VG9FbmQgKyAxLiwgMC4pLCAxLik7XG5cdFx0fVxuXHR9XG5cblx0Ly8gcm91 bmQgbWl0ZXJcblx0ZWxzZSBpZiAobWl0ZXJNb2RlID09IDIuKSB7XG5cdFx0 aWYgKGVuYWJsZVN0YXJ0TWl0ZXIgPT0gMS4pIHtcblx0XHRcdGRpc3RUb1N0 YXJ0ID0gZGlzdFRvTGluZShnbF9GcmFnQ29vcmQueHksIHN0YXJ0Q3V0b2Zm Lnh5LCBzdGFydEN1dG9mZi56dyk7XG5cdFx0XHRpZiAoZGlzdFRvU3RhcnQg PCAwLikge1xuXHRcdFx0XHRmbG9hdCByYWRpdXMgPSBsZW5ndGgoZ2xfRnJh Z0Nvb3JkLnh5IC0gc3RhcnRDb29yZCk7XG5cblx0XHRcdFx0aWYocmFkaXVz ID4gY3V0b2ZmICsgLjUpIHtcblx0XHRcdFx0XHRkaXNjYXJkO1xuXHRcdFx0 XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGFscGhhIC09IHNt b290aHN0ZXAoY3V0b2ZmIC0gLjUsIGN1dG9mZiArIC41LCByYWRpdXMpO1xu XHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChlbmFibGVFbmRNaXRlciA9PSAx Likge1xuXHRcdFx0ZGlzdFRvRW5kID0gZGlzdFRvTGluZShnbF9GcmFnQ29v cmQueHksIGVuZEN1dG9mZi54eSwgZW5kQ3V0b2ZmLnp3KTtcblx0XHRcdGlm IChkaXN0VG9FbmQgPCAwLikge1xuXHRcdFx0XHRmbG9hdCByYWRpdXMgPSBs ZW5ndGgoZ2xfRnJhZ0Nvb3JkLnh5IC0gZW5kQ29vcmQpO1xuXG5cdFx0XHRc dGlmKHJhZGl1cyA+IGN1dG9mZiArIC41KSB7XG5cdFx0XHRcdFx0ZGlzY2Fy ZDtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRh bHBoYSAtPSBzbW9vdGhzdGVwKGN1dG9mZiAtIC41LCBjdXRvZmYgKyAuNSwg cmFkaXVzKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmbG9hdCB0ID0g ZnJhY3QoZG90KHRhbmdlbnQsIGdsX0ZyYWdDb29yZC54eSkgLyBkYXNoU2l6 ZSkgKiAuNSArIC4yNTtcblx0ZmxvYXQgZGFzaCA9IHRleHR1cmUyRChkYXNo UGF0dGVybiwgdmVjMih0LCAuNSkpLnI7XG5cblx0Z2xfRnJhZ0NvbG9yID0g ZnJhZ0NvbG9yO1xuXHRnbF9GcmFnQ29sb3IuYSAqPSBhbHBoYSAqIG9wYWNp dHkgKiBkYXNoO1xufVxuIl0pLGF0dHJpYnV0ZXM6e2xpbmVFbmQ6e2J1ZmZl cjpyLGRpdmlzb3I6MCxzdHJpZGU6OCxvZmZzZXQ6MH0sbGluZVRvcDp7YnVm ZmVyOnIsZGl2aXNvcjowLHN0cmlkZTo4LG9mZnNldDo0fSxhQ29sb3I6e2J1 ZmZlcjp0LnByb3AoImNvbG9yQnVmZmVyIiksc3RyaWRlOjQsb2Zmc2V0OjAs ZGl2aXNvcjoxfSxiQ29sb3I6e2J1ZmZlcjp0LnByb3AoImNvbG9yQnVmZmVy Iiksc3RyaWRlOjQsb2Zmc2V0OjQsZGl2aXNvcjoxfSxwcmV2Q29vcmQ6e2J1 ZmZlcjp0LnByb3AoInBvc2l0aW9uQnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0 OjAsZGl2aXNvcjoxfSxhQ29vcmQ6e2J1ZmZlcjp0LnByb3AoInBvc2l0aW9u QnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0OjgsZGl2aXNvcjoxfSxiQ29vcmQ6 e2J1ZmZlcjp0LnByb3AoInBvc2l0aW9uQnVmZmVyIiksc3RyaWRlOjgsb2Zm c2V0OjE2LGRpdmlzb3I6MX0sbmV4dENvb3JkOntidWZmZXI6dC5wcm9wKCJw b3NpdGlvbkJ1ZmZlciIpLHN0cmlkZTo4LG9mZnNldDoyNCxkaXZpc29yOjF9 fX0sbikpfWNhdGNoKHQpe2U9YX1yZXR1cm57ZmlsbDp0KHtwcmltaXRpdmU6 InRyaWFuZ2xlIixlbGVtZW50czpmdW5jdGlvbih0LGUpe3JldHVybiBlLnRy aWFuZ2xlc30sb2Zmc2V0OjAsdmVydDpvKFsicHJlY2lzaW9uIGhpZ2hwIGZs b2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgcG9z aXRpb24sIHBvc2l0aW9uRnJhY3Q7XG5cbnVuaWZvcm0gdmVjNCBjb2xvcjtc bnVuaWZvcm0gdmVjMiBzY2FsZSwgc2NhbGVGcmFjdCwgdHJhbnNsYXRlLCB0 cmFuc2xhdGVGcmFjdDtcbnVuaWZvcm0gZmxvYXQgcGl4ZWxSYXRpbywgaWQ7 XG51bmlmb3JtIHZlYzQgdmlld3BvcnQ7XG51bmlmb3JtIGZsb2F0IG9wYWNp dHk7XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbmNvbnN0IGZsb2F0 IE1BWF9MSU5FUyA9IDI1Ni47XG5cbnZvaWQgbWFpbigpIHtcblx0ZmxvYXQg ZGVwdGggPSAoTUFYX0xJTkVTIC0gNC4gLSBpZCkgLyAoTUFYX0xJTkVTKTtc blxuXHR2ZWMyIHBvc2l0aW9uID0gcG9zaXRpb24gKiBzY2FsZSArIHRyYW5z bGF0ZVxuICAgICAgICsgcG9zaXRpb25GcmFjdCAqIHNjYWxlICsgdHJhbnNs YXRlRnJhY3RcbiAgICAgICArIHBvc2l0aW9uICogc2NhbGVGcmFjdFxuICAg ICAgICsgcG9zaXRpb25GcmFjdCAqIHNjYWxlRnJhY3Q7XG5cblx0Z2xfUG9z aXRpb24gPSB2ZWM0KHBvc2l0aW9uICogMi4wIC0gMS4wLCBkZXB0aCwgMSk7 XG5cblx0ZnJhZ0NvbG9yID0gY29sb3IgLyAyNTUuO1xuXHRmcmFnQ29sb3Iu YSAqPSBvcGFjaXR5O1xufVxuIl0pLGZyYWc6byhbInByZWNpc2lvbiBoaWdo cCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZhcnlpbmcgdmVjNCBm cmFnQ29sb3I7XG5cbnZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0g ZnJhZ0NvbG9yO1xufVxuIl0pLHVuaWZvcm1zOntzY2FsZTp0LnByb3AoInNj YWxlIiksY29sb3I6dC5wcm9wKCJmaWxsIiksc2NhbGVGcmFjdDp0LnByb3Ao InNjYWxlRnJhY3QiKSx0cmFuc2xhdGVGcmFjdDp0LnByb3AoInRyYW5zbGF0 ZUZyYWN0IiksdHJhbnNsYXRlOnQucHJvcCgidHJhbnNsYXRlIiksb3BhY2l0 eTp0LnByb3AoIm9wYWNpdHkiKSxwaXhlbFJhdGlvOnQuY29udGV4dCgicGl4 ZWxSYXRpbyIpLGlkOnQucHJvcCgiaWQiKSx2aWV3cG9ydDpmdW5jdGlvbih0 LGUpe3JldHVybltlLnZpZXdwb3J0LngsZS52aWV3cG9ydC55LHQudmlld3Bv cnRXaWR0aCx0LnZpZXdwb3J0SGVpZ2h0XX19LGF0dHJpYnV0ZXM6e3Bvc2l0 aW9uOntidWZmZXI6dC5wcm9wKCJwb3NpdGlvbkJ1ZmZlciIpLHN0cmlkZTo4 LG9mZnNldDo4fSxwb3NpdGlvbkZyYWN0OntidWZmZXI6dC5wcm9wKCJwb3Np dGlvbkZyYWN0QnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0Ojh9fSxibGVuZDpu LmJsZW5kLGRlcHRoOntlbmFibGU6ITF9LHNjaXNzb3I6bi5zY2lzc29yLHN0 ZW5jaWw6bi5zdGVuY2lsLHZpZXdwb3J0Om4udmlld3BvcnR9KSxyZWN0OmEs bWl0ZXI6ZX19LHYuZGVmYXVsdHM9e2Rhc2hlczpudWxsLGpvaW46Im1pdGVy IixtaXRlckxpbWl0OjEsdGhpY2tuZXNzOjEwLGNhcDoic3F1YXJlIixjb2xv cjoiYmxhY2siLG9wYWNpdHk6MSxvdmVybGF5OiExLHZpZXdwb3J0Om51bGws cmFuZ2U6bnVsbCxjbG9zZTohMSxmaWxsOm51bGx9LHYucHJvdG90eXBlLnJl bmRlcj1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPVtdLHI9YXJndW1lbnRzLmxl bmd0aDtyLS07KWVbcl09YXJndW1lbnRzW3JdO2UubGVuZ3RoJiYodD10aGlz KS51cGRhdGUuYXBwbHkodCxlKSx0aGlzLmRyYXcoKX0sdi5wcm90b3R5cGUu ZHJhdz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W10scj1hcmd1bWVu dHMubGVuZ3RoO3ItLTspZVtyXT1hcmd1bWVudHNbcl07cmV0dXJuKGUubGVu Z3RoP2U6dGhpcy5wYXNzZXMpLmZvckVhY2goZnVuY3Rpb24oZSxyKXt2YXIg bjtpZihlJiZBcnJheS5pc0FycmF5KGUpKXJldHVybihuPXQpLmRyYXcuYXBw bHkobixlKTsibnVtYmVyIj09dHlwZW9mIGUmJihlPXQucGFzc2VzW2VdKSxl JiZlLmNvdW50PjEmJmUub3BhY2l0eSYmKHQucmVnbC5fcmVmcmVzaCgpLGUu ZmlsbCYmZS50cmlhbmdsZXMmJmUudHJpYW5nbGVzLmxlbmd0aD4yJiZ0LnNo YWRlcnMuZmlsbChlKSxlLnRoaWNrbmVzcyYmKGUuc2NhbGVbMF0qZS52aWV3 cG9ydC53aWR0aD52LnByZWNpc2lvblRocmVzaG9sZHx8ZS5zY2FsZVsxXSpl LnZpZXdwb3J0LmhlaWdodD52LnByZWNpc2lvblRocmVzaG9sZD90LnNoYWRl cnMucmVjdChlKToicmVjdCI9PT1lLmpvaW58fCFlLmpvaW4mJihlLnRoaWNr bmVzczw9Mnx8ZS5jb3VudD49di5tYXhQb2ludHMpP3Quc2hhZGVycy5yZWN0 KGUpOnQuc2hhZGVycy5taXRlcihlKSkpfSksdGhpc30sdi5wcm90b3R5cGUu dXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodCl7bnVsbCE9dC5s ZW5ndGg/Im51bWJlciI9PXR5cGVvZiB0WzBdJiYodD1be3Bvc2l0aW9uczp0 fV0pOkFycmF5LmlzQXJyYXkodCl8fCh0PVt0XSk7dmFyIHI9dGhpcy5yZWds LG89dGhpcy5nbDtpZih0LmZvckVhY2goZnVuY3Rpb24odCxoKXt2YXIgZD1l LnBhc3Nlc1toXTtpZih2b2lkIDAhPT10KWlmKG51bGwhPT10KXtpZigibnVt YmVyIj09dHlwZW9mIHRbMF0mJih0PXtwb3NpdGlvbnM6dH0pLHQ9cyh0LHtw b3NpdGlvbnM6InBvc2l0aW9ucyBwb2ludHMgZGF0YSBjb29yZHMiLHRoaWNr bmVzczoidGhpY2tuZXNzIGxpbmVXaWR0aCBsaW5lV2lkdGhzIGxpbmUtd2lk dGggbGluZXdpZHRoIHdpZHRoIHN0cm9rZS13aWR0aCBzdHJva2V3aWR0aCBz dHJva2VXaWR0aCIsam9pbjoibGluZUpvaW4gbGluZWpvaW4gam9pbiB0eXBl IG1vZGUiLG1pdGVyTGltaXQ6Im1pdGVybGltaXQgbWl0ZXJMaW1pdCIsZGFz aGVzOiJkYXNoIGRhc2hlcyBkYXNoYXJyYXkgZGFzaC1hcnJheSBkYXNoQXJy YXkiLGNvbG9yOiJjb2xvciBjb2xvdXIgc3Ryb2tlIGNvbG9ycyBjb2xvdXJz IHN0cm9rZS1jb2xvciBzdHJva2VDb2xvciIsZmlsbDoiZmlsbCBmaWxsLWNv bG9yIGZpbGxDb2xvciIsb3BhY2l0eToiYWxwaGEgb3BhY2l0eSIsb3Zlcmxh eToib3ZlcmxheSBjcmVhc2Ugb3ZlcmxhcCBpbnRlcnNlY3QiLGNsb3NlOiJj bG9zZWQgY2xvc2UgY2xvc2VkLXBhdGggY2xvc2VQYXRoIixyYW5nZToicmFu Z2UgZGF0YUJveCIsdmlld3BvcnQ6InZpZXdwb3J0IHZpZXdCb3giLGhvbGU6 ImhvbGVzIGhvbGUgaG9sbG93In0pLGR8fChlLnBhc3Nlc1toXT1kPXtpZDpo LHNjYWxlOm51bGwsc2NhbGVGcmFjdDpudWxsLHRyYW5zbGF0ZTpudWxsLHRy YW5zbGF0ZUZyYWN0Om51bGwsY291bnQ6MCxob2xlOltdLGRlcHRoOjAsZGFz aExlbmd0aDoxLGRhc2hUZXh0dXJlOnIudGV4dHVyZSh7Y2hhbm5lbHM6MSxk YXRhOm5ldyBVaW50OEFycmF5KFsyNTVdKSx3aWR0aDoxLGhlaWdodDoxLG1h ZzoibGluZWFyIixtaW46ImxpbmVhciJ9KSxjb2xvckJ1ZmZlcjpyLmJ1ZmZl cih7dXNhZ2U6ImR5bmFtaWMiLHR5cGU6InVpbnQ4IixkYXRhOm5ldyBVaW50 OEFycmF5fSkscG9zaXRpb25CdWZmZXI6ci5idWZmZXIoe3VzYWdlOiJkeW5h bWljIix0eXBlOiJmbG9hdCIsZGF0YTpuZXcgVWludDhBcnJheX0pLHBvc2l0 aW9uRnJhY3RCdWZmZXI6ci5idWZmZXIoe3VzYWdlOiJkeW5hbWljIix0eXBl OiJmbG9hdCIsZGF0YTpuZXcgVWludDhBcnJheX0pfSx0PWkoe30sdi5kZWZh dWx0cyx0KSksbnVsbCE9dC50aGlja25lc3MmJihkLnRoaWNrbmVzcz1wYXJz ZUZsb2F0KHQudGhpY2tuZXNzKSksbnVsbCE9dC5vcGFjaXR5JiYoZC5vcGFj aXR5PXBhcnNlRmxvYXQodC5vcGFjaXR5KSksbnVsbCE9dC5taXRlckxpbWl0 JiYoZC5taXRlckxpbWl0PXBhcnNlRmxvYXQodC5taXRlckxpbWl0KSksbnVs bCE9dC5vdmVybGF5JiYoZC5vdmVybGF5PSEhdC5vdmVybGF5LGg8di5tYXhM aW5lcyYmKGQuZGVwdGg9Mioodi5tYXhMaW5lcy0xLWgldi5tYXhMaW5lcykv di5tYXhMaW5lcy0xKSksbnVsbCE9dC5qb2luJiYoZC5qb2luPXQuam9pbiks bnVsbCE9dC5ob2xlJiYoZC5ob2xlPXQuaG9sZSksbnVsbCE9dC5maWxsJiYo ZC5maWxsPXQuZmlsbD9uKHQuZmlsbCwidWludDgiKTpudWxsKSxudWxsIT10 LnZpZXdwb3J0JiYoZC52aWV3cG9ydD1nKHQudmlld3BvcnQpKSxkLnZpZXdw b3J0fHwoZC52aWV3cG9ydD1nKFtvLmRyYXdpbmdCdWZmZXJXaWR0aCxvLmRy YXdpbmdCdWZmZXJIZWlnaHRdKSksbnVsbCE9dC5jbG9zZSYmKGQuY2xvc2U9 dC5jbG9zZSksbnVsbD09PXQucG9zaXRpb25zJiYodC5wb3NpdGlvbnM9W10p LHQucG9zaXRpb25zKXt2YXIgbSx5O2lmKHQucG9zaXRpb25zLngmJnQucG9z aXRpb25zLnkpe3ZhciB4PXQucG9zaXRpb25zLngsYj10LnBvc2l0aW9ucy55 O3k9ZC5jb3VudD1NYXRoLm1heCh4Lmxlbmd0aCxiLmxlbmd0aCksbT1uZXcg RmxvYXQ2NEFycmF5KDIqeSk7Zm9yKHZhciBfPTA7Xzx5O18rKyltWzIqX109 eFtfXSxtWzIqXysxXT1iW19dfWVsc2UgbT1sKHQucG9zaXRpb25zLCJmbG9h dDY0IikseT1kLmNvdW50PU1hdGguZmxvb3IobS5sZW5ndGgvMik7dmFyIHc9 ZC5ib3VuZHM9YShtLDIpO2lmKGQuZmlsbCl7Zm9yKHZhciBrPVtdLFQ9e30s TT0wLEE9MCxTPTAsRT1kLmNvdW50O0E8RTtBKyspe3ZhciBMPW1bMipBXSxD PW1bMipBKzFdO2lzTmFOKEwpfHxpc05hTihDKXx8bnVsbD09THx8bnVsbD09 Qz8oTD1tWzIqTV0sQz1tWzIqTSsxXSxUW0FdPU0pOk09QSxrW1MrK109TCxr W1MrK109Q31mb3IodmFyIFA9YyhrLGQuaG9sZXx8W10pLE89MCx6PVAubGVu Z3RoO088ejtPKyspbnVsbCE9VFtQW09dXSYmKFBbT109VFtQW09dXSk7ZC50 cmlhbmdsZXM9UH12YXIgST1uZXcgRmxvYXQ2NEFycmF5KG0pO3UoSSwyLHcp O3ZhciBEPW5ldyBGbG9hdDY0QXJyYXkoMip5KzYpO2QuY2xvc2U/bVswXT09 PW1bMip5LTJdJiZtWzFdPT09bVsyKnktMV0/KERbMF09SVsyKnktNF0sRFsx XT1JWzIqeS0zXSk6KERbMF09SVsyKnktMl0sRFsxXT1JWzIqeS0xXSk6KERb MF09SVswXSxEWzFdPUlbMV0pLEQuc2V0KEksMiksZC5jbG9zZT9tWzBdPT09 bVsyKnktMl0mJm1bMV09PT1tWzIqeS0xXT8oRFsyKnkrMl09SVsyXSxEWzIq eSszXT1JWzNdLGQuY291bnQtPTEpOihEWzIqeSsyXT1JWzBdLERbMip5KzNd PUlbMV0sRFsyKnkrNF09SVsyXSxEWzIqeSs1XT1JWzNdKTooRFsyKnkrMl09 SVsyKnktMl0sRFsyKnkrM109SVsyKnktMV0sRFsyKnkrNF09SVsyKnktMl0s RFsyKnkrNV09SVsyKnktMV0pLGQucG9zaXRpb25CdWZmZXIoZihEKSksZC5w b3NpdGlvbkZyYWN0QnVmZmVyKHAoRCkpfWlmKHQucmFuZ2U/ZC5yYW5nZT10 LnJhbmdlOmQucmFuZ2V8fChkLnJhbmdlPWQuYm91bmRzKSwodC5yYW5nZXx8 dC5wb3NpdGlvbnMpJiZkLmNvdW50KXt2YXIgUj1kLmJvdW5kcyxGPVJbMl0t UlswXSxCPVJbM10tUlsxXSxOPWQucmFuZ2VbMl0tZC5yYW5nZVswXSxqPWQu cmFuZ2VbM10tZC5yYW5nZVsxXTtkLnNjYWxlPVtGL04sQi9qXSxkLnRyYW5z bGF0ZT1bLWQucmFuZ2VbMF0vTitSWzBdL058fDAsLWQucmFuZ2VbMV0vaitS WzFdL2p8fDBdLGQuc2NhbGVGcmFjdD1wKGQuc2NhbGUpLGQudHJhbnNsYXRl RnJhY3Q9cChkLnRyYW5zbGF0ZSl9aWYodC5kYXNoZXMpe3ZhciBWLFU9MDtp ZighdC5kYXNoZXN8fHQuZGFzaGVzLmxlbmd0aDwyKVU9MSxWPW5ldyBVaW50 OEFycmF5KFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSk7ZWxz ZXtVPTA7Zm9yKHZhciBxPTA7cTx0LmRhc2hlcy5sZW5ndGg7KytxKVUrPXQu ZGFzaGVzW3FdO1Y9bmV3IFVpbnQ4QXJyYXkoVSp2LmRhc2hNdWx0KTtmb3Io dmFyIEg9MCxHPTI1NSxZPTA7WTwyO1krKylmb3IodmFyIFc9MDtXPHQuZGFz aGVzLmxlbmd0aDsrK1cpe2Zvcih2YXIgWD0wLFo9dC5kYXNoZXNbV10qdi5k YXNoTXVsdCouNTtYPFo7KytYKVZbSCsrXT1HO0dePTI1NX19ZC5kYXNoTGVu Z3RoPVUsZC5kYXNoVGV4dHVyZSh7Y2hhbm5lbHM6MSxkYXRhOlYsd2lkdGg6 Vi5sZW5ndGgsaGVpZ2h0OjEsbWFnOiJsaW5lYXIiLG1pbjoibGluZWFyIn0s MCwwKX1pZih0LmNvbG9yKXt2YXIgSj1kLmNvdW50LEs9dC5jb2xvcjtLfHwo Sz0idHJhbnNwYXJlbnQiKTt2YXIgUT1uZXcgVWludDhBcnJheSg0KkorNCk7 aWYoQXJyYXkuaXNBcnJheShLKSYmIm51bWJlciIhPXR5cGVvZiBLWzBdKXtm b3IodmFyICQ9MDskPEo7JCsrKXt2YXIgdHQ9bihLWyRdLCJ1aW50OCIpO1Eu c2V0KHR0LDQqJCl9US5zZXQobihLWzBdLCJ1aW50OCIpLDQqSil9ZWxzZSBm b3IodmFyIGV0PW4oSywidWludDgiKSxydD0wO3J0PEorMTtydCsrKVEuc2V0 KGV0LDQqcnQpO2QuY29sb3JCdWZmZXIoe3VzYWdlOiJkeW5hbWljIix0eXBl OiJ1aW50OCIsZGF0YTpRfSl9fWVsc2UgZS5wYXNzZXNbaF09bnVsbH0pLHQu bGVuZ3RoPHRoaXMucGFzc2VzLmxlbmd0aCl7Zm9yKHZhciBoPXQubGVuZ3Ro O2g8dGhpcy5wYXNzZXMubGVuZ3RoO2grKyl7dmFyIGQ9ZS5wYXNzZXNbaF07 ZCYmKGQuY29sb3JCdWZmZXIuZGVzdHJveSgpLGQucG9zaXRpb25CdWZmZXIu ZGVzdHJveSgpLGQuZGFzaFRleHR1cmUuZGVzdHJveSgpKX10aGlzLnBhc3Nl cy5sZW5ndGg9dC5sZW5ndGh9Zm9yKHZhciBtPVtdLHk9MDt5PHRoaXMucGFz c2VzLmxlbmd0aDt5KyspbnVsbCE9PWUucGFzc2VzW3ldJiZtLnB1c2goZS5w YXNzZXNbeV0pO3JldHVybiB0aGlzLnBhc3Nlcz1tLHRoaXN9fSx2LnByb3Rv dHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFzc2VzLmZv ckVhY2goZnVuY3Rpb24odCl7dC5jb2xvckJ1ZmZlci5kZXN0cm95KCksdC5w b3NpdGlvbkJ1ZmZlci5kZXN0cm95KCksdC5kYXNoVGV4dHVyZS5kZXN0cm95 KCl9KSx0aGlzLnBhc3Nlcy5sZW5ndGg9MCx0aGlzfX0seyJhcnJheS1ib3Vu ZHMiOjY4LCJhcnJheS1ub3JtYWxpemUiOjQ5NCwiY29sb3Itbm9ybWFsaXpl IjoxMjIsZWFyY3V0OjE3MywiZXM2LXdlYWstbWFwIjo0OTUsImZsYXR0ZW4t dmVydGV4LWRhdGEiOjIzMCxnbHNsaWZ5OjQxMSwib2JqZWN0LWFzc2lnbiI6 NDU2LCJwYXJzZS1yZWN0Ijo0NjEsInBpY2stYnktYWxpYXMiOjQ2NywidG8t ZmxvYXQzMiI6NTM3fV0sNDk0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoImFycmF5LWJvdW5kcyIpO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscil7aWYoIXR8fG51bGw9PXQubGVuZ3RoKXRocm93IEVycm9yKCJB cmd1bWVudCBzaG91bGQgYmUgYW4gYXJyYXkiKTtudWxsPT1lJiYoZT0xKTtu dWxsPT1yJiYocj1uKHQsZSkpO2Zvcih2YXIgYT0wO2E8ZTthKyspe3ZhciBp PXJbZSthXSxvPXJbYV0scz1hLGw9dC5sZW5ndGg7aWYoaT09PTEvMCYmbz09 PS0xLzApZm9yKHM9YTtzPGw7cys9ZSl0W3NdPXRbc109PT1pPzE6dFtzXT09 PW8/MDouNTtlbHNlIGlmKGk9PT0xLzApZm9yKHM9YTtzPGw7cys9ZSl0W3Nd PXRbc109PT1pPzE6MDtlbHNlIGlmKG89PT0tMS8wKWZvcihzPWE7czxsO3Mr PWUpdFtzXT10W3NdPT09bz8wOjE7ZWxzZXt2YXIgYz1pLW87Zm9yKHM9YTtz PGw7cys9ZSlpc05hTih0W3NdKXx8KHRbc109MD09PWM/LjU6KHRbc10tbykv Yyl9fXJldHVybiB0fX0seyJhcnJheS1ib3VuZHMiOjY4fV0sNDk1OltmdW5j dGlvbih0LGUscil7YXJndW1lbnRzWzRdWzMyMF1bMF0uYXBwbHkocixhcmd1 bWVudHMpfSx7Ii4vaXMtaW1wbGVtZW50ZWQiOjQ5NiwiLi9wb2x5ZmlsbCI6 NDk4LGR1cDozMjB9XSw0OTY6W2Z1bmN0aW9uKHQsZSxyKXthcmd1bWVudHNb NF1bMzIxXVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHtkdXA6MzIxfV0sNDk3 OltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzMyMl1bMF0uYXBwbHko cixhcmd1bWVudHMpfSx7ZHVwOjMyMn1dLDQ5ODpbZnVuY3Rpb24odCxlLHIp e2FyZ3VtZW50c1s0XVszMjNdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0seyIu L2lzLW5hdGl2ZS1pbXBsZW1lbnRlZCI6NDk3LGQ6MTUzLGR1cDozMjMsImVz NS1leHQvb2JqZWN0L2lzLXZhbHVlIjoxOTcsImVzNS1leHQvb2JqZWN0L3Nl dC1wcm90b3R5cGUtb2YiOjIwMywiZXM1LWV4dC9vYmplY3QvdmFsaWQtb2Jq ZWN0IjoyMDcsImVzNS1leHQvb2JqZWN0L3ZhbGlkLXZhbHVlIjoyMDgsImVz NS1leHQvc3RyaW5nL3JhbmRvbS11bmlxIjoyMTMsImVzNi1pdGVyYXRvci9m b3Itb2YiOjIxNSwiZXM2LWl0ZXJhdG9yL2dldCI6MjE2LCJlczYtc3ltYm9s IjoyMjJ9XSw0OTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVu Y3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0Fy cmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgcj1bXSxu PSEwLGE9ITEsaT12b2lkIDA7dHJ5e2Zvcih2YXIgbyxzPXRbU3ltYm9sLml0 ZXJhdG9yXSgpOyEobj0obz1zLm5leHQoKSkuZG9uZSkmJihyLnB1c2goby52 YWx1ZSksIWV8fHIubGVuZ3RoIT09ZSk7bj0hMCk7fWNhdGNoKHQpe2E9ITAs aT10fWZpbmFsbHl7dHJ5e258fG51bGw9PXMucmV0dXJufHxzLnJldHVybigp fWZpbmFsbHl7aWYoYSl0aHJvdyBpfX1yZXR1cm4gcn0odCxlKXx8ZnVuY3Rp b24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8g ZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rp b24gYSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0 KSl7Zm9yKHZhciBlPTAscj1uZXcgQXJyYXkodC5sZW5ndGgpO2U8dC5sZW5n dGg7ZSsrKXJbZV09dFtlXTtyZXR1cm4gcn19KHQpfHxmdW5jdGlvbih0KXtp ZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpfHwiW29iamVjdCBBcmd1 bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSly ZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3 IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRl cmFibGUgaW5zdGFuY2UiKX0oKX12YXIgaT10KCJjb2xvci1ub3JtYWxpemUi KSxvPXQoImFycmF5LWJvdW5kcyIpLHM9dCgiY29sb3ItaWQiKSxsPXQoInBv aW50LWNsdXN0ZXIiKSxjPXQoIm9iamVjdC1hc3NpZ24iKSx1PXQoImdsc2xp ZnkiKSxoPXQoInBpY2stYnktYWxpYXMiKSxmPXQoInVwZGF0ZS1kaWZmIiks cD10KCJmbGF0dGVuLXZlcnRleC1kYXRhIiksZD10KCJpcy1pZXhwbG9yZXIi KSxnPXQoInRvLWZsb2F0MzIiKSx2PXQoInBhcnNlLXJlY3QiKSxtPXk7ZnVu Y3Rpb24geSh0LGUpe3ZhciByPXRoaXM7aWYoISh0aGlzIGluc3RhbmNlb2Yg eSkpcmV0dXJuIG5ldyB5KHQsZSk7ImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGV8 fChlPXt9KSxlLnJlZ2w9dCk6KGU9dCx0PW51bGwpLGUmJmUubGVuZ3RoJiYo ZS5wb3NpdGlvbnM9ZSk7dmFyIG4sYT0odD1lLnJlZ2wpLl9nbCxpPVtdO3Ro aXMudG9vTWFueUNvbG9ycz1kLG49dC50ZXh0dXJlKHtkYXRhOm5ldyBVaW50 OEFycmF5KDEwMjApLHdpZHRoOjI1NSxoZWlnaHQ6MSx0eXBlOiJ1aW50OCIs Zm9ybWF0OiJyZ2JhIix3cmFwUzoiY2xhbXAiLHdyYXBUOiJjbGFtcCIsbWFn OiJuZWFyZXN0IixtaW46Im5lYXJlc3QifSksYyh0aGlzLHtyZWdsOnQsZ2w6 YSxncm91cHM6W10sbWFya2VyQ2FjaGU6W251bGxdLG1hcmtlclRleHR1cmVz OltudWxsXSxwYWxldHRlOmkscGFsZXR0ZUlkczp7fSxwYWxldHRlVGV4dHVy ZTpuLG1heENvbG9yczoyNTUsbWF4U2l6ZToxMDAsY2FudmFzOmEuY2FudmFz fSksdGhpcy51cGRhdGUoZSk7dmFyIG89e3VuaWZvcm1zOntwaXhlbFJhdGlv OnQuY29udGV4dCgicGl4ZWxSYXRpbyIpLHBhbGV0dGU6bixwYWxldHRlU2l6 ZTpmdW5jdGlvbih0LGUpe3JldHVybltyLnRvb01hbnlDb2xvcnM/MDoyNTUs bi5oZWlnaHRdfSxzY2FsZTp0LnByb3AoInNjYWxlIiksc2NhbGVGcmFjdDp0 LnByb3AoInNjYWxlRnJhY3QiKSx0cmFuc2xhdGU6dC5wcm9wKCJ0cmFuc2xh dGUiKSx0cmFuc2xhdGVGcmFjdDp0LnByb3AoInRyYW5zbGF0ZUZyYWN0Iiks b3BhY2l0eTp0LnByb3AoIm9wYWNpdHkiKSxtYXJrZXI6dC5wcm9wKCJtYXJr ZXJUZXh0dXJlIil9LGF0dHJpYnV0ZXM6e3g6ZnVuY3Rpb24odCxlKXtyZXR1 cm4gZS54QXR0cnx8e2J1ZmZlcjplLnBvc2l0aW9uQnVmZmVyLHN0cmlkZTo4 LG9mZnNldDowfX0seTpmdW5jdGlvbih0LGUpe3JldHVybiBlLnlBdHRyfHx7 YnVmZmVyOmUucG9zaXRpb25CdWZmZXIsc3RyaWRlOjgsb2Zmc2V0OjR9fSx4 RnJhY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54QXR0cj97Y29uc3RhbnQ6 WzAsMF19OntidWZmZXI6ZS5wb3NpdGlvbkZyYWN0QnVmZmVyLHN0cmlkZTo4 LG9mZnNldDowfX0seUZyYWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueUF0 dHI/e2NvbnN0YW50OlswLDBdfTp7YnVmZmVyOmUucG9zaXRpb25GcmFjdEJ1 ZmZlcixzdHJpZGU6OCxvZmZzZXQ6NH19LHNpemU6ZnVuY3Rpb24odCxlKXty ZXR1cm4gZS5zaXplLmxlbmd0aD97YnVmZmVyOmUuc2l6ZUJ1ZmZlcixzdHJp ZGU6MixvZmZzZXQ6MH06e2NvbnN0YW50OltNYXRoLnJvdW5kKDI1NSplLnNp emUvci5tYXhTaXplKV19fSxib3JkZXJTaXplOmZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGUuYm9yZGVyU2l6ZS5sZW5ndGg/e2J1ZmZlcjplLnNpemVCdWZmZXIs c3RyaWRlOjIsb2Zmc2V0OjF9Ontjb25zdGFudDpbTWF0aC5yb3VuZCgyNTUq ZS5ib3JkZXJTaXplL3IubWF4U2l6ZSldfX0sY29sb3JJZDpmdW5jdGlvbih0 LGUpe3JldHVybiBlLmNvbG9yLmxlbmd0aD97YnVmZmVyOmUuY29sb3JCdWZm ZXIsc3RyaWRlOnIudG9vTWFueUNvbG9ycz84OjQsb2Zmc2V0OjB9Ontjb25z dGFudDpyLnRvb01hbnlDb2xvcnM/aS5zbGljZSg0KmUuY29sb3IsNCplLmNv bG9yKzQpOltlLmNvbG9yXX19LGJvcmRlckNvbG9ySWQ6ZnVuY3Rpb24odCxl KXtyZXR1cm4gZS5ib3JkZXJDb2xvci5sZW5ndGg/e2J1ZmZlcjplLmNvbG9y QnVmZmVyLHN0cmlkZTpyLnRvb01hbnlDb2xvcnM/ODo0LG9mZnNldDpyLnRv b01hbnlDb2xvcnM/NDoyfTp7Y29uc3RhbnQ6ci50b29NYW55Q29sb3JzP2ku c2xpY2UoNCplLmJvcmRlckNvbG9yLDQqZS5ib3JkZXJDb2xvcis0KTpbZS5i b3JkZXJDb2xvcl19fSxpc0FjdGl2ZTpmdW5jdGlvbih0LGUpe3JldHVybiEw PT09ZS5hY3RpdmF0aW9uP3tjb25zdGFudDpbMV19OmUuYWN0aXZhdGlvbj9l LmFjdGl2YXRpb246e2NvbnN0YW50OlswXX19fSxibGVuZDp7ZW5hYmxlOiEw LGNvbG9yOlswLDAsMCwxXSxmdW5jOntzcmNSR0I6InNyYyBhbHBoYSIsZHN0 UkdCOiJvbmUgbWludXMgc3JjIGFscGhhIixzcmNBbHBoYToib25lIG1pbnVz IGRzdCBhbHBoYSIsZHN0QWxwaGE6Im9uZSJ9fSxzY2lzc29yOntlbmFibGU6 ITAsYm94OnQucHJvcCgidmlld3BvcnQiKX0sdmlld3BvcnQ6dC5wcm9wKCJ2 aWV3cG9ydCIpLHN0ZW5jaWw6e2VuYWJsZTohMX0sZGVwdGg6e2VuYWJsZToh MX0sZWxlbWVudHM6dC5wcm9wKCJlbGVtZW50cyIpLGNvdW50OnQucHJvcCgi Y291bnQiKSxvZmZzZXQ6dC5wcm9wKCJvZmZzZXQiKSxwcmltaXRpdmU6InBv aW50cyJ9LHM9Yyh7fSxvKTtzLmZyYWc9dShbInByZWNpc2lvbiBoaWdocCBm bG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZhcnlpbmcgdmVjNCBmcmFn Q29sb3IsIGZyYWdCb3JkZXJDb2xvcjtcbnZhcnlpbmcgZmxvYXQgZnJhZ1dp ZHRoLCBmcmFnQm9yZGVyQ29sb3JMZXZlbCwgZnJhZ0NvbG9yTGV2ZWw7XG5c bnVuaWZvcm0gc2FtcGxlcjJEIG1hcmtlcjtcbnVuaWZvcm0gZmxvYXQgcGl4 ZWxSYXRpbywgb3BhY2l0eTtcblxuZmxvYXQgc21vb3RoU3RlcChmbG9hdCB4 LCBmbG9hdCB5KSB7XG4gIHJldHVybiAxLjAgLyAoMS4wICsgZXhwKDUwLjAq KHggLSB5KSkpO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IGRpc3Qg PSB0ZXh0dXJlMkQobWFya2VyLCBnbF9Qb2ludENvb3JkKS5yLCBkZWx0YSA9 IGZyYWdXaWR0aDtcblxuICAvLyBtYXgtZGlzdGFuY2UgYWxwaGFcbiAgaWYg KGRpc3QgPCAwLjAwMykgZGlzY2FyZDtcblxuICAvLyBudWxsLWJvcmRlciBj YXNlXG4gIGlmIChmcmFnQm9yZGVyQ29sb3JMZXZlbCA9PSBmcmFnQ29sb3JM ZXZlbCB8fCBmcmFnQm9yZGVyQ29sb3IuYSA9PSAwLikge1xuICAgIGZsb2F0 IGNvbG9yQW10ID0gc21vb3Roc3RlcCguNSAtIGRlbHRhLCAuNSArIGRlbHRh LCBkaXN0KTtcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZyYWdDb2xvci5y Z2IsIGNvbG9yQW10ICogZnJhZ0NvbG9yLmEgKiBvcGFjaXR5KTtcbiAgfVxu ICBlbHNlIHtcbiAgICBmbG9hdCBib3JkZXJDb2xvckFtdCA9IHNtb290aHN0 ZXAoZnJhZ0JvcmRlckNvbG9yTGV2ZWwgLSBkZWx0YSwgZnJhZ0JvcmRlckNv bG9yTGV2ZWwgKyBkZWx0YSwgZGlzdCk7XG4gICAgZmxvYXQgY29sb3JBbXQg PSBzbW9vdGhzdGVwKGZyYWdDb2xvckxldmVsIC0gZGVsdGEsIGZyYWdDb2xv ckxldmVsICsgZGVsdGEsIGRpc3QpO1xuXG4gICAgdmVjNCBjb2xvciA9IGZy YWdCb3JkZXJDb2xvcjtcbiAgICBjb2xvci5hICo9IGJvcmRlckNvbG9yQW10 O1xuICAgIGNvbG9yID0gbWl4KGNvbG9yLCBmcmFnQ29sb3IsIGNvbG9yQW10 KTtcbiAgICBjb2xvci5hICo9IG9wYWNpdHk7XG5cbiAgICBnbF9GcmFnQ29s b3IgPSBjb2xvcjtcbiAgfVxuXG59XG4iXSkscy52ZXJ0PXUoWyJwcmVjaXNp b24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1 dGUgZmxvYXQgeCwgeSwgeEZyYWN0LCB5RnJhY3Q7XG5hdHRyaWJ1dGUgZmxv YXQgc2l6ZSwgYm9yZGVyU2l6ZTtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9ySWQs IGJvcmRlckNvbG9ySWQ7XG5hdHRyaWJ1dGUgZmxvYXQgaXNBY3RpdmU7XG5c bnVuaWZvcm0gdmVjMiBzY2FsZSwgc2NhbGVGcmFjdCwgdHJhbnNsYXRlLCB0 cmFuc2xhdGVGcmFjdCwgcGFsZXR0ZVNpemU7XG51bmlmb3JtIGZsb2F0IHBp eGVsUmF0aW87XG51bmlmb3JtIHNhbXBsZXIyRCBwYWxldHRlO1xuXG5jb25z dCBmbG9hdCBtYXhTaXplID0gMTAwLjtcbmNvbnN0IGZsb2F0IGJvcmRlckxl dmVsID0gLjU7XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3IsIGZyYWdCb3Jk ZXJDb2xvcjtcbnZhcnlpbmcgZmxvYXQgZnJhZ1BvaW50U2l6ZSwgZnJhZ0Jv cmRlclJhZGl1cywgZnJhZ1dpZHRoLCBmcmFnQm9yZGVyQ29sb3JMZXZlbCwg ZnJhZ0NvbG9yTGV2ZWw7XG5cbmJvb2wgaXNEaXJlY3QgPSAocGFsZXR0ZVNp emUueCA8IDEuKTtcblxudmVjNCBnZXRDb2xvcih2ZWM0IGlkKSB7XG4gIHJl dHVybiBpc0RpcmVjdCA/IGlkIC8gMjU1LiA6IHRleHR1cmUyRChwYWxldHRl LFxuICAgIHZlYzIoXG4gICAgICAoaWQueCArIC41KSAvIHBhbGV0dGVTaXpl LngsXG4gICAgICAoaWQueSArIC41KSAvIHBhbGV0dGVTaXplLnlcbiAgICAp XG4gICk7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKGlzQWN0aXZlID09 IDAuKSByZXR1cm47XG5cbiAgdmVjMiBwb3NpdGlvbiA9IHZlYzIoeCwgeSk7 XG4gIHZlYzIgcG9zaXRpb25GcmFjdCA9IHZlYzIoeEZyYWN0LCB5RnJhY3Qp O1xuXG4gIHZlYzQgY29sb3IgPSBnZXRDb2xvcihjb2xvcklkKTtcbiAgdmVj NCBib3JkZXJDb2xvciA9IGdldENvbG9yKGJvcmRlckNvbG9ySWQpO1xuXG4g IGZsb2F0IHNpemUgPSBzaXplICogbWF4U2l6ZSAvIDI1NS47XG4gIGZsb2F0 IGJvcmRlclNpemUgPSBib3JkZXJTaXplICogbWF4U2l6ZSAvIDI1NS47XG5c biAgZ2xfUG9pbnRTaXplID0gMi4gKiBzaXplICogcGl4ZWxSYXRpbztcbiAg ZnJhZ1BvaW50U2l6ZSA9IHNpemUgKiBwaXhlbFJhdGlvO1xuXG4gIHZlYzIg cG9zID0gKHBvc2l0aW9uICsgdHJhbnNsYXRlKSAqIHNjYWxlXG4gICAgICAr IChwb3NpdGlvbkZyYWN0ICsgdHJhbnNsYXRlRnJhY3QpICogc2NhbGVcbiAg ICAgICsgKHBvc2l0aW9uICsgdHJhbnNsYXRlKSAqIHNjYWxlRnJhY3RcbiAg ICAgICsgKHBvc2l0aW9uRnJhY3QgKyB0cmFuc2xhdGVGcmFjdCkgKiBzY2Fs ZUZyYWN0O1xuXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MgKiAyLiAtIDEu LCAwLCAxKTtcblxuICBmcmFnQ29sb3IgPSBjb2xvcjtcbiAgZnJhZ0JvcmRl ckNvbG9yID0gYm9yZGVyQ29sb3I7XG4gIGZyYWdXaWR0aCA9IDEuIC8gZ2xf UG9pbnRTaXplO1xuXG4gIGZyYWdCb3JkZXJDb2xvckxldmVsID0gY2xhbXAo Ym9yZGVyTGV2ZWwgLSBib3JkZXJMZXZlbCAqIGJvcmRlclNpemUgLyBzaXpl LCAwLiwgMS4pO1xuICBmcmFnQ29sb3JMZXZlbCA9IGNsYW1wKGJvcmRlckxl dmVsICsgKDEuIC0gYm9yZGVyTGV2ZWwpICogYm9yZGVyU2l6ZSAvIHNpemUs IDAuLCAxLik7XG59Il0pLHRoaXMuZHJhd01hcmtlcj10KHMpO3ZhciBsPWMo e30sbyk7bC5mcmFnPXUoWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVm aW5lIEdMU0xJRlkgMVxuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yLCBmcmFn Qm9yZGVyQ29sb3I7XG5cbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlp bmcgZmxvYXQgZnJhZ0JvcmRlclJhZGl1cywgZnJhZ1dpZHRoO1xuXG5mbG9h dCBzbW9vdGhTdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQg eCkge1xuXHRmbG9hdCB0O1xuXHR0ID0gY2xhbXAoKHggLSBlZGdlMCkgLyAo ZWRnZTEgLSBlZGdlMCksIDAuMCwgMS4wKTtcblx0cmV0dXJuIHQgKiB0ICog KDMuMCAtIDIuMCAqIHQpO1xufVxuXG52b2lkIG1haW4oKSB7XG5cdGZsb2F0 IHJhZGl1cywgYWxwaGEgPSAxLjAsIGRlbHRhID0gZnJhZ1dpZHRoO1xuXG5c dHJhZGl1cyA9IGxlbmd0aCgyLjAgKiBnbF9Qb2ludENvb3JkLnh5IC0gMS4w KTtcblxuXHRpZiAocmFkaXVzID4gMS4wICsgZGVsdGEpIHtcblx0XHRkaXNj YXJkO1xuXHR9XG5cblx0YWxwaGEgLT0gc21vb3Roc3RlcCgxLjAgLSBkZWx0 YSwgMS4wICsgZGVsdGEsIHJhZGl1cyk7XG5cblx0ZmxvYXQgYm9yZGVyUmFk aXVzID0gZnJhZ0JvcmRlclJhZGl1cztcblx0ZmxvYXQgcmF0aW8gPSBzbW9v dGhzdGVwKGJvcmRlclJhZGl1cyAtIGRlbHRhLCBib3JkZXJSYWRpdXMgKyBk ZWx0YSwgcmFkaXVzKTtcblx0dmVjNCBjb2xvciA9IG1peChmcmFnQ29sb3Is IGZyYWdCb3JkZXJDb2xvciwgcmF0aW8pO1xuXHRjb2xvci5hICo9IGFscGhh ICogb3BhY2l0eTtcblx0Z2xfRnJhZ0NvbG9yID0gY29sb3I7XG59XG4iXSks bC52ZXJ0PXUoWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdM U0xJRlkgMVxuXG5hdHRyaWJ1dGUgZmxvYXQgeCwgeSwgeEZyYWN0LCB5RnJh Y3Q7XG5hdHRyaWJ1dGUgZmxvYXQgc2l6ZSwgYm9yZGVyU2l6ZTtcbmF0dHJp YnV0ZSB2ZWM0IGNvbG9ySWQsIGJvcmRlckNvbG9ySWQ7XG5hdHRyaWJ1dGUg ZmxvYXQgaXNBY3RpdmU7XG5cbnVuaWZvcm0gdmVjMiBzY2FsZSwgc2NhbGVG cmFjdCwgdHJhbnNsYXRlLCB0cmFuc2xhdGVGcmFjdDtcbnVuaWZvcm0gZmxv YXQgcGl4ZWxSYXRpbztcbnVuaWZvcm0gc2FtcGxlcjJEIHBhbGV0dGU7XG51 bmlmb3JtIHZlYzIgcGFsZXR0ZVNpemU7XG5cbmNvbnN0IGZsb2F0IG1heFNp emUgPSAxMDAuO1xuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yLCBmcmFnQm9y ZGVyQ29sb3I7XG52YXJ5aW5nIGZsb2F0IGZyYWdCb3JkZXJSYWRpdXMsIGZy YWdXaWR0aDtcblxuYm9vbCBpc0RpcmVjdCA9IChwYWxldHRlU2l6ZS54IDwg MS4pO1xuXG52ZWM0IGdldENvbG9yKHZlYzQgaWQpIHtcbiAgcmV0dXJuIGlz RGlyZWN0ID8gaWQgLyAyNTUuIDogdGV4dHVyZTJEKHBhbGV0dGUsXG4gICAg dmVjMihcbiAgICAgIChpZC54ICsgLjUpIC8gcGFsZXR0ZVNpemUueCxcbiAg ICAgIChpZC55ICsgLjUpIC8gcGFsZXR0ZVNpemUueVxuICAgIClcbiAgKTtc bn1cblxudm9pZCBtYWluKCkge1xuICAvLyBpZ25vcmUgaW5hY3RpdmUgcG9p bnRzXG4gIGlmIChpc0FjdGl2ZSA9PSAwLikgcmV0dXJuO1xuXG4gIHZlYzIg cG9zaXRpb24gPSB2ZWMyKHgsIHkpO1xuICB2ZWMyIHBvc2l0aW9uRnJhY3Qg PSB2ZWMyKHhGcmFjdCwgeUZyYWN0KTtcblxuICB2ZWM0IGNvbG9yID0gZ2V0 Q29sb3IoY29sb3JJZCk7XG4gIHZlYzQgYm9yZGVyQ29sb3IgPSBnZXRDb2xv cihib3JkZXJDb2xvcklkKTtcblxuICBmbG9hdCBzaXplID0gc2l6ZSAqIG1h eFNpemUgLyAyNTUuO1xuICBmbG9hdCBib3JkZXJTaXplID0gYm9yZGVyU2l6 ZSAqIG1heFNpemUgLyAyNTUuO1xuXG4gIGdsX1BvaW50U2l6ZSA9IChzaXpl ICsgYm9yZGVyU2l6ZSkgKiBwaXhlbFJhdGlvO1xuXG4gIHZlYzIgcG9zID0g KHBvc2l0aW9uICsgdHJhbnNsYXRlKSAqIHNjYWxlXG4gICAgICArIChwb3Np dGlvbkZyYWN0ICsgdHJhbnNsYXRlRnJhY3QpICogc2NhbGVcbiAgICAgICsg KHBvc2l0aW9uICsgdHJhbnNsYXRlKSAqIHNjYWxlRnJhY3RcbiAgICAgICsg KHBvc2l0aW9uRnJhY3QgKyB0cmFuc2xhdGVGcmFjdCkgKiBzY2FsZUZyYWN0 O1xuXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MgKiAyLiAtIDEuLCAwLCAx KTtcblxuICBmcmFnQm9yZGVyUmFkaXVzID0gMS4gLSAyLiAqIGJvcmRlclNp emUgLyAoc2l6ZSArIGJvcmRlclNpemUpO1xuICBmcmFnQ29sb3IgPSBjb2xv cjtcbiAgZnJhZ0JvcmRlckNvbG9yID0gYm9yZGVyQ29sb3IuYSA9PSAwLiB8 fCBib3JkZXJTaXplID09IDAuID8gdmVjNChjb2xvci5yZ2IsIDAuKSA6IGJv cmRlckNvbG9yO1xuICBmcmFnV2lkdGggPSAxLiAvIGdsX1BvaW50U2l6ZTtc bn1cbiJdKSxkJiYobC5mcmFnPWwuZnJhZy5yZXBsYWNlKCJzbW9vdGhzdGVw Iiwic21vb3RoU3RlcCIpLHMuZnJhZz1zLmZyYWcucmVwbGFjZSgic21vb3Ro c3RlcCIsInNtb290aFN0ZXAiKSksdGhpcy5kcmF3Q2lyY2xlPXQobCl9eS5k ZWZhdWx0cz17Y29sb3I6ImJsYWNrIixib3JkZXJDb2xvcjoidHJhbnNwYXJl bnQiLGJvcmRlclNpemU6MCxzaXplOjEyLG9wYWNpdHk6MSxtYXJrZXI6dm9p ZCAwLHZpZXdwb3J0Om51bGwscmFuZ2U6bnVsbCxwaXhlbFNpemU6bnVsbCxj b3VudDowLG9mZnNldDowLGJvdW5kczpudWxsLHBvc2l0aW9uczpbXSxzbmFw OjFlNH0seS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGgmJnRoaXMudXBkYXRlLmFwcGx5KHRoaXMsYXJndW1l bnRzKSx0aGlzLmRyYXcoKSx0aGlzfSx5LnByb3RvdHlwZS5kcmF3PWZ1bmN0 aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3 IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3ZhciBh PXRoaXMuZ3JvdXBzO2lmKDE9PT1yLmxlbmd0aCYmQXJyYXkuaXNBcnJheShy WzBdKSYmKG51bGw9PT1yWzBdWzBdfHxBcnJheS5pc0FycmF5KHJbMF1bMF0p KSYmKHI9clswXSksdGhpcy5yZWdsLl9yZWZyZXNoKCksci5sZW5ndGgpZm9y KHZhciBpPTA7aTxyLmxlbmd0aDtpKyspdGhpcy5kcmF3SXRlbShpLHJbaV0p O2Vsc2UgYS5mb3JFYWNoKGZ1bmN0aW9uKGUscil7dC5kcmF3SXRlbShyKX0p O3JldHVybiB0aGlzfSx5LnByb3RvdHlwZS5kcmF3SXRlbT1mdW5jdGlvbih0 LGUpe3ZhciByPXRoaXMuZ3JvdXBzLG49clt0XTtpZigibnVtYmVyIj09dHlw ZW9mIGUmJih0PWUsbj1yW2VdLGU9bnVsbCksbiYmbi5jb3VudCYmbi5vcGFj aXR5KXtuLmFjdGl2YXRpb25bMF0mJnRoaXMuZHJhd0NpcmNsZSh0aGlzLmdl dE1hcmtlckRyYXdPcHRpb25zKDAsbixlKSk7Zm9yKHZhciBpPVtdLG89MTtv PG4uYWN0aXZhdGlvbi5sZW5ndGg7bysrKW4uYWN0aXZhdGlvbltvXSYmKCEw PT09bi5hY3RpdmF0aW9uW29dfHxuLmFjdGl2YXRpb25bb10uZGF0YS5sZW5n dGgpJiZpLnB1c2guYXBwbHkoaSxhKHRoaXMuZ2V0TWFya2VyRHJhd09wdGlv bnMobyxuLGUpKSk7aS5sZW5ndGgmJnRoaXMuZHJhd01hcmtlcihpKX19LHku cHJvdG90eXBlLmdldE1hcmtlckRyYXdPcHRpb25zPWZ1bmN0aW9uKHQsZSxy KXt2YXIgYT1lLnJhbmdlLGk9ZS50cmVlLG89ZS52aWV3cG9ydCxzPWUuYWN0 aXZhdGlvbixsPWUuc2VsZWN0aW9uQnVmZmVyLHU9ZS5jb3VudDt0aGlzLnJl Z2w7aWYoIWkpcmV0dXJuIHI/W2Moe30sZSx7bWFya2VyVGV4dHVyZTp0aGlz Lm1hcmtlclRleHR1cmVzW3RdLGFjdGl2YXRpb246c1t0XSxjb3VudDpyLmxl bmd0aCxlbGVtZW50czpyLG9mZnNldDowfSldOltjKHt9LGUse21hcmtlclRl eHR1cmU6dGhpcy5tYXJrZXJUZXh0dXJlc1t0XSxhY3RpdmF0aW9uOnNbdF0s b2Zmc2V0OjB9KV07dmFyIGg9W10sZj1pLnJhbmdlKGEse2xvZDohMCxweDpb KGFbMl0tYVswXSkvby53aWR0aCwoYVszXS1hWzFdKS9vLmhlaWdodF19KTtp ZihyKXtmb3IodmFyIHA9c1t0XS5kYXRhLGQ9bmV3IFVpbnQ4QXJyYXkodSks Zz0wO2c8ci5sZW5ndGg7ZysrKXt2YXIgdj1yW2ddO2Rbdl09cD9wW3ZdOjF9 bC5zdWJkYXRhKGQpfWZvcih2YXIgbT1mLmxlbmd0aDttLS07KXt2YXIgeT1u KGZbbV0sMikseD15WzBdLGI9eVsxXTtoLnB1c2goYyh7fSxlLHttYXJrZXJU ZXh0dXJlOnRoaXMubWFya2VyVGV4dHVyZXNbdF0sYWN0aXZhdGlvbjpyP2w6 c1t0XSxvZmZzZXQ6eCxjb3VudDpiLXh9KSl9cmV0dXJuIGh9LHkucHJvdG90 eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9YXJndW1l bnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFy Z3VtZW50c1tuXTtpZihyLmxlbmd0aCl7MT09PXIubGVuZ3RoJiZBcnJheS5p c0FycmF5KHJbMF0pJiYocj1yWzBdKTt2YXIgYT10aGlzLmdyb3VwcyxpPXRo aXMuZ2wscz10aGlzLnJlZ2wsdT10aGlzLm1heFNpemUsZD10aGlzLm1heENv bG9ycyxtPXRoaXMucGFsZXR0ZTt0aGlzLmdyb3Vwcz1hPXIubWFwKGZ1bmN0 aW9uKGUscil7dmFyIG49YVtyXTtpZih2b2lkIDA9PT1lKXJldHVybiBuO251 bGw9PT1lP2U9e3Bvc2l0aW9uczpudWxsfToiZnVuY3Rpb24iPT10eXBlb2Yg ZT9lPXtvbmRyYXc6ZX06Im51bWJlciI9PXR5cGVvZiBlWzBdJiYoZT17cG9z aXRpb25zOmV9KSxudWxsPT09KGU9aChlLHtwb3NpdGlvbnM6InBvc2l0aW9u cyBkYXRhIHBvaW50cyIsc25hcDoic25hcCBjbHVzdGVyIGxvZCB0cmVlIixz aXplOiJzaXplcyBzaXplIHJhZGl1cyIsYm9yZGVyU2l6ZToiYm9yZGVyU2l6 ZXMgYm9yZGVyU2l6ZSBib3JkZXItc2l6ZSBib3JkZXJzaXplIGJvcmRlcldp ZHRoIGJvcmRlcldpZHRocyBib3JkZXItd2lkdGggYm9yZGVyd2lkdGggc3Ry b2tlLXdpZHRoIHN0cm9rZVdpZHRoIHN0cm9rZXdpZHRoIG91dGxpbmUiLGNv bG9yOiJjb2xvcnMgY29sb3IgZmlsbCBmaWxsLWNvbG9yIGZpbGxDb2xvciIs Ym9yZGVyQ29sb3I6ImJvcmRlckNvbG9ycyBib3JkZXJDb2xvciBzdHJva2Ug c3Ryb2tlLWNvbG9yIHN0cm9rZUNvbG9yIixtYXJrZXI6Im1hcmtlcnMgbWFy a2VyIHNoYXBlIixyYW5nZToicmFuZ2UgZGF0YUJveCBkYXRhYm94Iix2aWV3 cG9ydDoidmlld3BvcnQgdmlld1BvcnQgdmlld0JveCB2aWV3Ym94IixvcGFj aXR5OiJvcGFjaXR5IGFscGhhIHRyYW5zcGFyZW5jeSIsYm91bmRzOiJib3Vu ZCBib3VuZHMgYm91bmRhcmllcyBsaW1pdHMiLHRvb01hbnlDb2xvcnM6InRv b01hbnlDb2xvcnMgcGFsZXR0ZSBwYWxldHRlTW9kZSBvcHRpbWl6ZVBhbGV0 dGUgZW5hYmxlUGFsZXR0ZSJ9KSkucG9zaXRpb25zJiYoZS5wb3NpdGlvbnM9 W10pLG51bGwhPWUudG9vTWFueUNvbG9ycyYmKHQudG9vTWFueUNvbG9ycz1l LnRvb01hbnlDb2xvcnMpLG58fChhW3JdPW49e2lkOnIsc2NhbGU6bnVsbCx0 cmFuc2xhdGU6bnVsbCxzY2FsZUZyYWN0Om51bGwsdHJhbnNsYXRlRnJhY3Q6 bnVsbCxhY3RpdmF0aW9uOltdLHNlbGVjdGlvbkJ1ZmZlcjpzLmJ1ZmZlcih7 ZGF0YTpuZXcgVWludDhBcnJheSgwKSx1c2FnZToic3RyZWFtIix0eXBlOiJ1 aW50OCJ9KSxzaXplQnVmZmVyOnMuYnVmZmVyKHtkYXRhOm5ldyBVaW50OEFy cmF5KDApLHVzYWdlOiJkeW5hbWljIix0eXBlOiJ1aW50OCJ9KSxjb2xvckJ1 ZmZlcjpzLmJ1ZmZlcih7ZGF0YTpuZXcgVWludDhBcnJheSgwKSx1c2FnZToi ZHluYW1pYyIsdHlwZToidWludDgifSkscG9zaXRpb25CdWZmZXI6cy5idWZm ZXIoe2RhdGE6bmV3IFVpbnQ4QXJyYXkoMCksdXNhZ2U6ImR5bmFtaWMiLHR5 cGU6ImZsb2F0In0pLHBvc2l0aW9uRnJhY3RCdWZmZXI6cy5idWZmZXIoe2Rh dGE6bmV3IFVpbnQ4QXJyYXkoMCksdXNhZ2U6ImR5bmFtaWMiLHR5cGU6ImZs b2F0In0pfSxlPWMoe30seS5kZWZhdWx0cyxlKSksIWUucG9zaXRpb25zfHwi bWFya2VyImluIGV8fChlLm1hcmtlcj1uLm1hcmtlcixkZWxldGUgbi5tYXJr ZXIpLCFlLm1hcmtlcnx8InBvc2l0aW9ucyJpbiBlfHwoZS5wb3NpdGlvbnM9 bi5wb3NpdGlvbnMsZGVsZXRlIG4ucG9zaXRpb25zKTt2YXIgeD0wLGI9MDtp ZihmKG4sZSxbe3NuYXA6ITAsc2l6ZTpmdW5jdGlvbih0LGUpe3JldHVybiBu dWxsPT10JiYodD15LmRlZmF1bHRzLnNpemUpLHgrPXQmJnQubGVuZ3RoPzE6 MCx0fSxib3JkZXJTaXplOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQm Jih0PXkuZGVmYXVsdHMuYm9yZGVyU2l6ZSkseCs9dCYmdC5sZW5ndGg/MTow LHR9LG9wYWNpdHk6cGFyc2VGbG9hdCxjb2xvcjpmdW5jdGlvbihlLHIpe3Jl dHVybiBudWxsPT1lJiYoZT15LmRlZmF1bHRzLmNvbG9yKSxlPXQudXBkYXRl Q29sb3IoZSksYisrLGV9LGJvcmRlckNvbG9yOmZ1bmN0aW9uKGUscil7cmV0 dXJuIG51bGw9PWUmJihlPXkuZGVmYXVsdHMuYm9yZGVyQ29sb3IpLGU9dC51 cGRhdGVDb2xvcihlKSxiKyssZX0sYm91bmRzOmZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4icmFuZ2UiaW4gcnx8KHIucmFuZ2U9bnVsbCksdH0scG9zaXRpb25z OmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lLnNuYXAsYT1lLnBvc2l0aW9uQnVm ZmVyLGk9ZS5wb3NpdGlvbkZyYWN0QnVmZmVyLGM9ZS5zZWxlY3Rpb25CdWZm ZXI7aWYodC54fHx0LnkpcmV0dXJuIHQueC5sZW5ndGg/ZS54QXR0cj17YnVm ZmVyOnMuYnVmZmVyKHQueCksb2Zmc2V0OjAsc3RyaWRlOjQsY291bnQ6dC54 Lmxlbmd0aH06ZS54QXR0cj17YnVmZmVyOnQueC5idWZmZXIsb2Zmc2V0OjQq dC54Lm9mZnNldHx8MCxzdHJpZGU6NCoodC54LnN0cmlkZXx8MSksY291bnQ6 dC54LmNvdW50fSx0LnkubGVuZ3RoP2UueUF0dHI9e2J1ZmZlcjpzLmJ1ZmZl cih0LnkpLG9mZnNldDowLHN0cmlkZTo0LGNvdW50OnQueS5sZW5ndGh9OmUu eUF0dHI9e2J1ZmZlcjp0LnkuYnVmZmVyLG9mZnNldDo0KnQueS5vZmZzZXR8 fDAsc3RyaWRlOjQqKHQueS5zdHJpZGV8fDEpLGNvdW50OnQueS5jb3VudH0s ZS5jb3VudD1NYXRoLm1heChlLnhBdHRyLmNvdW50LGUueUF0dHIuY291bnQp LHQ7dD1wKHQsImZsb2F0NjQiKTt2YXIgdT1lLmNvdW50PU1hdGguZmxvb3Io dC5sZW5ndGgvMiksaD1lLmJvdW5kcz11P28odCwyKTpudWxsO2lmKHIucmFu Z2V8fGUucmFuZ2V8fChkZWxldGUgZS5yYW5nZSxyLnJhbmdlPWgpLHIubWFy a2VyfHxlLm1hcmtlcnx8KGRlbGV0ZSBlLm1hcmtlcixyLm1hcmtlcj1udWxs KSxuJiYoITA9PT1ufHx1Pm4pP2UudHJlZT1sKHQse2JvdW5kczpofSk6biYm bi5sZW5ndGgmJihlLnRyZWU9biksZS50cmVlKXt2YXIgZj17cHJpbWl0aXZl OiJwb2ludHMiLHVzYWdlOiJzdGF0aWMiLGRhdGE6ZS50cmVlLHR5cGU6InVp bnQzMiJ9O2UuZWxlbWVudHM/ZS5lbGVtZW50cyhmKTplLmVsZW1lbnRzPXMu ZWxlbWVudHMoZil9cmV0dXJuIGEoe2RhdGE6Zy5mbG9hdCh0KSx1c2FnZToi ZHluYW1pYyJ9KSxpKHtkYXRhOmcuZnJhY3QodCksdXNhZ2U6ImR5bmFtaWMi fSksYyh7ZGF0YTpuZXcgVWludDhBcnJheSh1KSx0eXBlOiJ1aW50OCIsdXNh Z2U6InN0cmVhbSJ9KSx0fX0se21hcmtlcjpmdW5jdGlvbihlLHIsbil7dmFy IGE9ci5hY3RpdmF0aW9uO2lmKGEuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1 cm4gdCYmdC5kZXN0cm95JiZ0LmRlc3Ryb3koKX0pLGEubGVuZ3RoPTAsZSYm Im51bWJlciIhPXR5cGVvZiBlWzBdKXtmb3IodmFyIGk9W10sbz0wLGw9TWF0 aC5taW4oZS5sZW5ndGgsci5jb3VudCk7bzxsO28rKyl7dmFyIGM9dC5hZGRN YXJrZXIoZVtvXSk7aVtjXXx8KGlbY109bmV3IFVpbnQ4QXJyYXkoci5jb3Vu dCkpLGlbY11bb109MX1mb3IodmFyIHU9MDt1PGkubGVuZ3RoO3UrKylpZihp W3VdKXt2YXIgaD17ZGF0YTppW3VdLHR5cGU6InVpbnQ4Iix1c2FnZToic3Rh dGljIn07YVt1XT9hW3VdKGgpOmFbdV09cy5idWZmZXIoaCksYVt1XS5kYXRh PWlbdV19fWVsc2V7YVt0LmFkZE1hcmtlcihlKV09ITB9cmV0dXJuIGV9LHJh bmdlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lLmJvdW5kcztpZihuKXJldHVy biB0fHwodD1uKSxlLnNjYWxlPVsxLyh0WzJdLXRbMF0pLDEvKHRbM10tdFsx XSldLGUudHJhbnNsYXRlPVstdFswXSwtdFsxXV0sZS5zY2FsZUZyYWN0PWcu ZnJhY3QoZS5zY2FsZSksZS50cmFuc2xhdGVGcmFjdD1nLmZyYWN0KGUudHJh bnNsYXRlKSx0fSx2aWV3cG9ydDpmdW5jdGlvbih0KXtyZXR1cm4gdih0fHxb aS5kcmF3aW5nQnVmZmVyV2lkdGgsaS5kcmF3aW5nQnVmZmVySGVpZ2h0XSl9 fV0pLHgpe3ZhciBfPW4sdz1fLmNvdW50LGs9Xy5zaXplLFQ9Xy5ib3JkZXJT aXplLE09Xy5zaXplQnVmZmVyLEE9bmV3IFVpbnQ4QXJyYXkoMip3KTtpZihr Lmxlbmd0aHx8VC5sZW5ndGgpZm9yKHZhciBTPTA7Uzx3O1MrKylBWzIqU109 TWF0aC5yb3VuZCgyNTUqKG51bGw9PWtbU10/azprW1NdKS91KSxBWzIqUysx XT1NYXRoLnJvdW5kKDI1NSoobnVsbD09VFtTXT9UOlRbU10pL3UpO00oe2Rh dGE6QSx1c2FnZToiZHluYW1pYyJ9KX1pZihiKXt2YXIgRSxMPW4sQz1MLmNv dW50LFA9TC5jb2xvcixPPUwuYm9yZGVyQ29sb3Isej1MLmNvbG9yQnVmZmVy O2lmKHQudG9vTWFueUNvbG9ycyl7aWYoUC5sZW5ndGh8fE8ubGVuZ3RoKXtF PW5ldyBVaW50OEFycmF5KDgqQyk7Zm9yKHZhciBJPTA7STxDO0krKyl7dmFy IEQ9UFtJXTtFWzgqSV09bVs0KkRdLEVbOCpJKzFdPW1bNCpEKzFdLEVbOCpJ KzJdPW1bNCpEKzJdLEVbOCpJKzNdPW1bNCpEKzNdO3ZhciBSPU9bSV07RVs4 KkkrNF09bVs0KlJdLEVbOCpJKzVdPW1bNCpSKzFdLEVbOCpJKzZdPW1bNCpS KzJdLEVbOCpJKzddPW1bNCpSKzNdfX19ZWxzZSBpZihQLmxlbmd0aHx8Ty5s ZW5ndGgpe0U9bmV3IFVpbnQ4QXJyYXkoNCpDKzIpO2Zvcih2YXIgRj0wO0Y8 QztGKyspbnVsbCE9UFtGXSYmKEVbNCpGXT1QW0ZdJWQsRVs0KkYrMV09TWF0 aC5mbG9vcihQW0ZdL2QpKSxudWxsIT1PW0ZdJiYoRVs0KkYrMl09T1tGXSVk LEVbNCpGKzNdPU1hdGguZmxvb3IoT1tGXS9kKSl9eih7ZGF0YTpFfHxuZXcg VWludDhBcnJheSgwKSx0eXBlOiJ1aW50OCIsdXNhZ2U6ImR5bmFtaWMifSl9 cmV0dXJuIG59KX19LHkucHJvdG90eXBlLmFkZE1hcmtlcj1mdW5jdGlvbih0 KXt2YXIgZSxyPXRoaXMubWFya2VyVGV4dHVyZXMsbj10aGlzLnJlZ2wsYT10 aGlzLm1hcmtlckNhY2hlLGk9bnVsbD09dD8wOmEuaW5kZXhPZih0KTtpZihp Pj0wKXJldHVybiBpO2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0IGlu c3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpZT10O2Vsc2V7ZT1uZXcgVWlu dDhBcnJheSh0Lmxlbmd0aCk7Zm9yKHZhciBvPTAscz10Lmxlbmd0aDtvPHM7 bysrKWVbb109MjU1KnRbb119dmFyIGw9TWF0aC5mbG9vcihNYXRoLnNxcnQo ZS5sZW5ndGgpKTtyZXR1cm4gaT1yLmxlbmd0aCxhLnB1c2godCksci5wdXNo KG4udGV4dHVyZSh7Y2hhbm5lbHM6MSxkYXRhOmUscmFkaXVzOmwsbWFnOiJs aW5lYXIiLG1pbjoibGluZWFyIn0pKSxpfSx5LnByb3RvdHlwZS51cGRhdGVD b2xvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBhbGV0dGVJZHMscj10aGlz LnBhbGV0dGUsbj10aGlzLm1heENvbG9ycztBcnJheS5pc0FycmF5KHQpfHwo dD1bdF0pO3ZhciBhPVtdO2lmKCJudW1iZXIiPT10eXBlb2YgdFswXSl7dmFy IG89W107aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGw9MDtsPHQubGVu Z3RoO2wrPTQpby5wdXNoKHQuc2xpY2UobCxsKzQpKTtlbHNlIGZvcih2YXIg Yz0wO2M8dC5sZW5ndGg7Yys9NClvLnB1c2godC5zdWJhcnJheShjLGMrNCkp O3Q9b31mb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIGg9dFt1XTto PWkoaCwidWludDgiKTt2YXIgZj1zKGgsITEpO2lmKG51bGw9PWVbZl0pe3Zh ciBwPXIubGVuZ3RoO2VbZl09TWF0aC5mbG9vcihwLzQpLHJbcF09aFswXSxy W3ArMV09aFsxXSxyW3ArMl09aFsyXSxyW3ArM109aFszXX1hW3VdPWVbZl19 cmV0dXJuIXRoaXMudG9vTWFueUNvbG9ycyYmci5sZW5ndGg+NCpuJiYodGhp cy50b29NYW55Q29sb3JzPSEwKSx0aGlzLnVwZGF0ZVBhbGV0dGUociksMT09 PWEubGVuZ3RoP2FbMF06YX0seS5wcm90b3R5cGUudXBkYXRlUGFsZXR0ZT1m dW5jdGlvbih0KXtpZighdGhpcy50b29NYW55Q29sb3JzKXt2YXIgZT10aGlz Lm1heENvbG9ycyxyPXRoaXMucGFsZXR0ZVRleHR1cmUsbj1NYXRoLmNlaWwo LjI1KnQubGVuZ3RoL2UpO2lmKG4+MSlmb3IodmFyIGE9LjI1Kih0PXQuc2xp Y2UoKSkubGVuZ3RoJWU7YTxuKmU7YSsrKXQucHVzaCgwLDAsMCwwKTtyLmhl aWdodDxuJiZyLnJlc2l6ZShlLG4pLHIuc3ViaW1hZ2Uoe3dpZHRoOk1hdGgu bWluKC4yNSp0Lmxlbmd0aCxlKSxoZWlnaHQ6bixkYXRhOnR9LDAsMCl9fSx5 LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ3Jv dXBzLmZvckVhY2goZnVuY3Rpb24odCl7dC5zaXplQnVmZmVyLmRlc3Ryb3ko KSx0LnBvc2l0aW9uQnVmZmVyLmRlc3Ryb3koKSx0LnBvc2l0aW9uRnJhY3RC dWZmZXIuZGVzdHJveSgpLHQuY29sb3JCdWZmZXIuZGVzdHJveSgpLHQuYWN0 aXZhdGlvbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LmRlc3Ry b3kmJnQuZGVzdHJveSgpfSksdC5zZWxlY3Rpb25CdWZmZXIuZGVzdHJveSgp LHQuZWxlbWVudHMmJnQuZWxlbWVudHMuZGVzdHJveSgpfSksdGhpcy5ncm91 cHMubGVuZ3RoPTAsdGhpcy5wYWxldHRlVGV4dHVyZS5kZXN0cm95KCksdGhp cy5tYXJrZXJUZXh0dXJlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0 JiZ0LmRlc3Ryb3kmJnQuZGVzdHJveSgpfSksdGhpc307dmFyIHg9dCgib2Jq ZWN0LWFzc2lnbiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW5l dyBtKHQsZSksbj1yLnJlbmRlci5iaW5kKHIpO3JldHVybiB4KG4se3JlbmRl cjpuLHVwZGF0ZTpyLnVwZGF0ZS5iaW5kKHIpLGRyYXc6ci5kcmF3LmJpbmQo ciksZGVzdHJveTpyLmRlc3Ryb3kuYmluZChyKSxyZWdsOnIucmVnbCxnbDpy LmdsLGNhbnZhczpyLmdsLmNhbnZhcyxncm91cHM6ci5ncm91cHMsbWFya2Vy czpyLm1hcmtlckNhY2hlLHBhbGV0dGU6ci5wYWxldHRlfSksbn19LHsiYXJy YXktYm91bmRzIjo2OCwiY29sb3ItaWQiOjEyMCwiY29sb3Itbm9ybWFsaXpl IjoxMjIsImZsYXR0ZW4tdmVydGV4LWRhdGEiOjIzMCxnbHNsaWZ5OjQxMSwi aXMtaWV4cGxvcmVyIjo0MjEsIm9iamVjdC1hc3NpZ24iOjQ1NiwicGFyc2Ut cmVjdCI6NDYxLCJwaWNrLWJ5LWFsaWFzIjo0NjcsInBvaW50LWNsdXN0ZXIi OjQ3MSwidG8tZmxvYXQzMiI6NTM3LCJ1cGRhdGUtZGlmZiI6NTQ4fV0sNTAw OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInJlZ2wt c2NhdHRlcjJkIiksYT10KCJwaWNrLWJ5LWFsaWFzIiksaT10KCJhcnJheS1i b3VuZHMiKSxvPXQoInJhZiIpLHM9dCgiYXJyYXktcmFuZ2UiKSxsPXQoInBh cnNlLXJlY3QiKSxjPXQoImZsYXR0ZW4tdmVydGV4LWRhdGEiKTtmdW5jdGlv biB1KHQsZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgdSkpcmV0dXJuIG5ldyB1 KHQsZSk7dGhpcy50cmFjZXM9W10sdGhpcy5wYXNzZXM9e30sdGhpcy5yZWds PXQsdGhpcy5zY2F0dGVyPW4odCksdGhpcy5jYW52YXM9dGhpcy5zY2F0dGVy LmNhbnZhc31mdW5jdGlvbiBoKHQsZSxyKXtyZXR1cm4obnVsbCE9dC5pZD90 LmlkOnQpPDwxNnwoMjU1JmUpPDw4fDI1NSZyfWZ1bmN0aW9uIGYodCxlLHIp e3ZhciBuLGEsaSxvLHM9dFtlXSxsPXRbcl07cmV0dXJuIHMubGVuZ3RoPjI/ KHNbMF0sc1syXSxuPXNbMV0sYT1zWzNdKTpzLmxlbmd0aD8obj1zWzBdLGE9 c1sxXSk6KHMueCxuPXMueSxzLngrcy53aWR0aCxhPXMueStzLmhlaWdodCks bC5sZW5ndGg+Mj8oaT1sWzBdLG89bFsyXSxsWzFdLGxbM10pOmwubGVuZ3Ro PyhpPWxbMF0sbz1sWzFdKTooaT1sLngsbC55LG89bC54K2wud2lkdGgsbC55 K2wuaGVpZ2h0KSxbaSxuLG8sYV19ZnVuY3Rpb24gcCh0KXtpZigibnVtYmVy Ij09dHlwZW9mIHQpcmV0dXJuW3QsdCx0LHRdO2lmKDI9PT10Lmxlbmd0aCly ZXR1cm5bdFswXSx0WzFdLHRbMF0sdFsxXV07dmFyIGU9bCh0KTtyZXR1cm5b ZS54LGUueSxlLngrZS53aWR0aCxlLnkrZS5oZWlnaHRdfWUuZXhwb3J0cz11 LHUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRo aXMscj1bXSxuPWFyZ3VtZW50cy5sZW5ndGg7bi0tOylyW25dPWFyZ3VtZW50 c1tuXTtyZXR1cm4gci5sZW5ndGgmJih0PXRoaXMpLnVwZGF0ZS5hcHBseSh0 LHIpLHRoaXMucmVnbC5hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl cj90aGlzLmRyYXcoKToodGhpcy5kaXJ0eT9udWxsPT10aGlzLnBsYW5uZWQm Jih0aGlzLnBsYW5uZWQ9byhmdW5jdGlvbigpe2UuZHJhdygpLGUuZGlydHk9 ITAsZS5wbGFubmVkPW51bGx9KSk6KHRoaXMuZHJhdygpLHRoaXMuZGlydHk9 ITAsbyhmdW5jdGlvbigpe2UuZGlydHk9ITF9KSksdGhpcyl9LHUucHJvdG90 eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPVtdLHI9YXJndW1l bnRzLmxlbmd0aDtyLS07KWVbcl09YXJndW1lbnRzW3JdO2lmKGUubGVuZ3Ro KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLnVwZGF0ZUl0ZW0o bixlW25dKTt0aGlzLnRyYWNlcz10aGlzLnRyYWNlcy5maWx0ZXIoQm9vbGVh bik7Zm9yKHZhciBhPVtdLGk9MCxvPTA7bzx0aGlzLnRyYWNlcy5sZW5ndGg7 bysrKXtmb3IodmFyIHM9dGhpcy50cmFjZXNbb10sbD10aGlzLnRyYWNlc1tv XS5wYXNzZXMsYz0wO2M8bC5sZW5ndGg7YysrKWEucHVzaCh0aGlzLnBhc3Nl c1tsW2NdXSk7cy5wYXNzT2Zmc2V0PWksaSs9cy5wYXNzZXMubGVuZ3RofXJl dHVybih0PXRoaXMuc2NhdHRlcikudXBkYXRlLmFwcGx5KHQsYSksdGhpc319 LHUucHJvdG90eXBlLnVwZGF0ZUl0ZW09ZnVuY3Rpb24odCxlKXt2YXIgcj10 aGlzLnJlZ2w7aWYobnVsbD09PWUpcmV0dXJuIHRoaXMudHJhY2VzW3RdPW51 bGwsdGhpcztpZighZSlyZXR1cm4gdGhpczt2YXIgbixvPWEoZSx7ZGF0YToi ZGF0YSBpdGVtcyBjb2x1bW5zIHJvd3MgdmFsdWVzIGRpbWVuc2lvbnMgc2Ft cGxlcyB4IixzbmFwOiJzbmFwIGNsdXN0ZXIiLHNpemU6InNpemVzIHNpemUg cmFkaXVzIixjb2xvcjoiY29sb3JzIGNvbG9yIGZpbGwgZmlsbC1jb2xvciBm aWxsQ29sb3IiLG9wYWNpdHk6Im9wYWNpdHkgYWxwaGEgdHJhbnNwYXJlbmN5 IG9wYXF1ZSIsYm9yZGVyU2l6ZToiYm9yZGVyU2l6ZXMgYm9yZGVyU2l6ZSBi b3JkZXItc2l6ZSBib3JkZXJzaXplIGJvcmRlcldpZHRoIGJvcmRlcldpZHRo cyBib3JkZXItd2lkdGggYm9yZGVyd2lkdGggc3Ryb2tlLXdpZHRoIHN0cm9r ZVdpZHRoIHN0cm9rZXdpZHRoIG91dGxpbmUiLGJvcmRlckNvbG9yOiJib3Jk ZXJDb2xvcnMgYm9yZGVyQ29sb3IgYm9yZGVyY29sb3Igc3Ryb2tlIHN0cm9r ZS1jb2xvciBzdHJva2VDb2xvciIsbWFya2VyOiJtYXJrZXJzIG1hcmtlciBz aGFwZSIscmFuZ2U6InJhbmdlIHJhbmdlcyBkYXRhYm94IGRhdGFCb3giLHZp ZXdwb3J0OiJ2aWV3cG9ydCB2aWV3Qm94IHZpZXdib3giLGRvbWFpbjoiZG9t YWluIGRvbWFpbnMgYXJlYSBhcmVhcyIscGFkZGluZzoicGFkIHBhZGRpbmcg cGFkZGluZ3MgcGFkcyBtYXJnaW4gbWFyZ2lucyIsdHJhbnNwb3NlOiJ0cmFu c3Bvc2UgdHJhbnNwb3NlZCIsZGlhZ29uYWw6ImRpYWdvbmFsIGRpYWcgc2hv d0RpYWdvbmFsIix1cHBlcjoidXBwZXIgdXAgdG9wIHVwcGVyaGFsZiB1cHBl ckhhbGYgc2hvd3VwcGVyaGFsZiBzaG93VXBwZXIgc2hvd1VwcGVySGFsZiIs bG93ZXI6Imxvd2VyIGxvdyBib3R0b20gbG93ZXJoYWxmIGxvd2VySGFsZiBz aG93bG93ZXJoYWxmIHNob3dMb3dlckhhbGYgc2hvd0xvd2VyIn0pLHM9dGhp cy50cmFjZXNbdF18fCh0aGlzLnRyYWNlc1t0XT17aWQ6dCxidWZmZXI6ci5i dWZmZXIoe3VzYWdlOiJkeW5hbWljIix0eXBlOiJmbG9hdCIsZGF0YTpuZXcg VWludDhBcnJheX0pLGNvbG9yOiJibGFjayIsbWFya2VyOm51bGwsc2l6ZTox Mixib3JkZXJDb2xvcjoidHJhbnNwYXJlbnQiLGJvcmRlclNpemU6MSx2aWV3 cG9ydDpsKFtyLl9nbC5kcmF3aW5nQnVmZmVyV2lkdGgsci5fZ2wuZHJhd2lu Z0J1ZmZlckhlaWdodF0pLHBhZGRpbmc6WzAsMCwwLDBdLG9wYWNpdHk6MSxk aWFnb25hbDohMCx1cHBlcjohMCxsb3dlcjohMH0pO2lmKG51bGwhPW8uY29s b3ImJihzLmNvbG9yPW8uY29sb3IpLG51bGwhPW8uc2l6ZSYmKHMuc2l6ZT1v LnNpemUpLG51bGwhPW8ubWFya2VyJiYocy5tYXJrZXI9by5tYXJrZXIpLG51 bGwhPW8uYm9yZGVyQ29sb3ImJihzLmJvcmRlckNvbG9yPW8uYm9yZGVyQ29s b3IpLG51bGwhPW8uYm9yZGVyU2l6ZSYmKHMuYm9yZGVyU2l6ZT1vLmJvcmRl clNpemUpLG51bGwhPW8ub3BhY2l0eSYmKHMub3BhY2l0eT1vLm9wYWNpdHkp LG8udmlld3BvcnQmJihzLnZpZXdwb3J0PWwoby52aWV3cG9ydCkpLG51bGwh PW8uZGlhZ29uYWwmJihzLmRpYWdvbmFsPW8uZGlhZ29uYWwpLG51bGwhPW8u dXBwZXImJihzLnVwcGVyPW8udXBwZXIpLG51bGwhPW8ubG93ZXImJihzLmxv d2VyPW8ubG93ZXIpLG8uZGF0YSl7cy5idWZmZXIoYyhvLmRhdGEpKSxzLmNv bHVtbnM9by5kYXRhLmxlbmd0aCxzLmNvdW50PW8uZGF0YVswXS5sZW5ndGgs cy5ib3VuZHM9W107Zm9yKHZhciB1PTA7dTxzLmNvbHVtbnM7dSsrKXMuYm91 bmRzW3VdPWkoby5kYXRhW3VdLDEpfW8ucmFuZ2UmJihzLnJhbmdlPW8ucmFu Z2Usbj1zLnJhbmdlJiYibnVtYmVyIiE9dHlwZW9mIHMucmFuZ2VbMF0pLG8u ZG9tYWluJiYocy5kb21haW49by5kb21haW4pO3ZhciBkPSExO251bGwhPW8u cGFkZGluZyYmKEFycmF5LmlzQXJyYXkoby5wYWRkaW5nKSYmby5wYWRkaW5n Lmxlbmd0aD09PXMuY29sdW1ucyYmIm51bWJlciI9PXR5cGVvZiBvLnBhZGRp bmdbby5wYWRkaW5nLmxlbmd0aC0xXT8ocy5wYWRkaW5nPW8ucGFkZGluZy5t YXAocCksZD0hMCk6cy5wYWRkaW5nPXAoby5wYWRkaW5nKSk7dmFyIGc9cy5j b2x1bW5zLHY9cy5jb3VudCxtPXMudmlld3BvcnQud2lkdGgseT1zLnZpZXdw b3J0LmhlaWdodCx4PXMudmlld3BvcnQueCxiPXMudmlld3BvcnQueSxfPW0v Zyx3PXkvZztzLnBhc3Nlcz1bXTtmb3IodmFyIGs9MDtrPGc7aysrKWZvcih2 YXIgVD0wO1Q8ZztUKyspaWYoKHMuZGlhZ29uYWx8fFQhPT1rKSYmKHMudXBw ZXJ8fCEoaz5UKSkmJihzLmxvd2VyfHwhKGs8VCkpKXt2YXIgTT1oKHMuaWQs ayxUKSxBPXRoaXMucGFzc2VzW01dfHwodGhpcy5wYXNzZXNbTV09e30pO2lm KG8uZGF0YSYmKG8udHJhbnNwb3NlP0EucG9zaXRpb25zPXt4OntidWZmZXI6 cy5idWZmZXIsb2Zmc2V0OlQsY291bnQ6dixzdHJpZGU6Z30seTp7YnVmZmVy OnMuYnVmZmVyLG9mZnNldDprLGNvdW50OnYsc3RyaWRlOmd9fTpBLnBvc2l0 aW9ucz17eDp7YnVmZmVyOnMuYnVmZmVyLG9mZnNldDpUKnYsY291bnQ6dn0s eTp7YnVmZmVyOnMuYnVmZmVyLG9mZnNldDprKnYsY291bnQ6dn19LEEuYm91 bmRzPWYocy5ib3VuZHMsayxUKSksby5kb21haW58fG8udmlld3BvcnR8fG8u ZGF0YSl7dmFyIFM9ZD9mKHMucGFkZGluZyxrLFQpOnMucGFkZGluZztpZihz LmRvbWFpbil7dmFyIEU9ZihzLmRvbWFpbixrLFQpLEw9RVswXSxDPUVbMV0s UD1FWzJdLE89RVszXTtBLnZpZXdwb3J0PVt4K0wqbStTWzBdLGIrQyp5K1Nb MV0seCtQKm0tU1syXSxiK08qeS1TWzNdXX1lbHNlIEEudmlld3BvcnQ9W3gr VCpfK18qU1swXSxiK2sqdyt3KlNbMV0seCsoVCsxKSpfLV8qU1syXSxiKyhr KzEpKnctdypTWzNdXX1vLmNvbG9yJiYoQS5jb2xvcj1zLmNvbG9yKSxvLnNp emUmJihBLnNpemU9cy5zaXplKSxvLm1hcmtlciYmKEEubWFya2VyPXMubWFy a2VyKSxvLmJvcmRlclNpemUmJihBLmJvcmRlclNpemU9cy5ib3JkZXJTaXpl KSxvLmJvcmRlckNvbG9yJiYoQS5ib3JkZXJDb2xvcj1zLmJvcmRlckNvbG9y KSxvLm9wYWNpdHkmJihBLm9wYWNpdHk9cy5vcGFjaXR5KSxvLnJhbmdlJiYo QS5yYW5nZT1uP2Yocy5yYW5nZSxrLFQpOnMucmFuZ2V8fEEuYm91bmRzKSxz LnBhc3Nlcy5wdXNoKE0pfXJldHVybiB0aGlzfSx1LnByb3RvdHlwZS5kcmF3 PWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9W10scj1hcmd1bWVudHMubGVuZ3Ro O3ItLTspZVtyXT1hcmd1bWVudHNbcl07aWYoZS5sZW5ndGgpe2Zvcih2YXIg bj1bXSxhPTA7YTxlLmxlbmd0aDthKyspaWYoIm51bWJlciI9PXR5cGVvZiBl W2FdKXt2YXIgaT10aGlzLnRyYWNlc1tlW2FdXSxvPWkucGFzc2VzLGw9aS5w YXNzT2Zmc2V0O24ucHVzaC5hcHBseShuLHMobCxsK28ubGVuZ3RoKSl9ZWxz ZSBpZihlW2FdLmxlbmd0aCl7dmFyIGM9ZVthXSx1PXRoaXMudHJhY2VzW2Fd LGg9dS5wYXNzZXMsZj11LnBhc3NPZmZzZXQ7aD1oLm1hcChmdW5jdGlvbih0 LGUpe25bZitlXT1jfSl9KHQ9dGhpcy5zY2F0dGVyKS5kcmF3LmFwcGx5KHQs bil9ZWxzZSB0aGlzLnNjYXR0ZXIuZHJhdygpO3JldHVybiB0aGlzfSx1LnBy b3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhY2Vz LmZvckVhY2goZnVuY3Rpb24odCl7dC5idWZmZXImJnQuYnVmZmVyLmRlc3Ry b3kmJnQuYnVmZmVyLmRlc3Ryb3koKX0pLHRoaXMudHJhY2VzPW51bGwsdGhp cy5wYXNzZXM9bnVsbCx0aGlzLnNjYXR0ZXIuZGVzdHJveSgpLHRoaXN9fSx7 ImFycmF5LWJvdW5kcyI6NjgsImFycmF5LXJhbmdlIjo2OSwiZmxhdHRlbi12 ZXJ0ZXgtZGF0YSI6MjMwLCJwYXJzZS1yZWN0Ijo0NjEsInBpY2stYnktYWxp YXMiOjQ2NyxyYWY6NDg2LCJyZWdsLXNjYXR0ZXIyZCI6NDk5fV0sNTAxOltm dW5jdGlvbih0LGUscil7dmFyIG4sYTtuPXRoaXMsYT1mdW5jdGlvbigpe2Z1 bmN0aW9uIHQodCxlKXt0aGlzLmlkPVYrKyx0aGlzLnR5cGU9dCx0aGlzLmRh dGE9ZX1mdW5jdGlvbiBlKHQpe3JldHVybiJbIitmdW5jdGlvbiB0KGUpe2lm KDA9PT1lLmxlbmd0aClyZXR1cm5bXTt2YXIgcj1lLmNoYXJBdCgwKSxuPWUu Y2hhckF0KGUubGVuZ3RoLTEpO2lmKDE8ZS5sZW5ndGgmJnI9PT1uJiYoJyIn PT09cnx8IiciPT09cikpcmV0dXJuWyciJytlLnN1YnN0cigxLGUubGVuZ3Ro LTIpLnJlcGxhY2UoL1xcL2csIlxcXFwiKS5yZXBsYWNlKC8iL2csJ1xcIicp KyciJ107aWYocj0vXFsoZmFsc2V8dHJ1ZXxudWxsfFxkK3wnW14nXSonfCJb XiJdKiIpXF0vLmV4ZWMoZSkpcmV0dXJuIHQoZS5zdWJzdHIoMCxyLmluZGV4 KSkuY29uY2F0KHQoclsxXSkpLmNvbmNhdCh0KGUuc3Vic3RyKHIuaW5kZXgr clswXS5sZW5ndGgpKSk7aWYoMT09PShyPWUuc3BsaXQoIi4iKSkubGVuZ3Ro KXJldHVyblsnIicrZS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgv Ii9nLCdcXCInKSsnIiddO2ZvcihlPVtdLG49MDtuPHIubGVuZ3RoOysrbill PWUuY29uY2F0KHQocltuXSkpO3JldHVybiBlfSh0KS5qb2luKCJdWyIpKyJd In1mdW5jdGlvbiByKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnNw bGl0KCk6dH1mdW5jdGlvbiBuKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2Yg dD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpOnR9ZnVuY3Rpb24gYSh0KXt2 YXIgZSxhLGksbyxzPXR8fHt9O3Q9e307dmFyIGw9W10sYz1bXSx1PSJ1bmRl ZmluZWQiPT10eXBlb2Ygd2luZG93PzE6d2luZG93LmRldmljZVBpeGVsUmF0 aW8saD0hMSxmPWZ1bmN0aW9uKHQpe30scD1mdW5jdGlvbigpe307aWYoInN0 cmluZyI9PXR5cGVvZiBzP2U9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzKToi b2JqZWN0Ij09dHlwZW9mIHMmJigic3RyaW5nIj09dHlwZW9mIHMubm9kZU5h bWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLmFwcGVuZENoaWxkJiYiZnVuY3Rp b24iPT10eXBlb2Ygcy5nZXRCb3VuZGluZ0NsaWVudFJlY3Q/ZT1zOiJmdW5j dGlvbiI9PXR5cGVvZiBzLmRyYXdBcnJheXN8fCJmdW5jdGlvbiI9PXR5cGVv ZiBzLmRyYXdFbGVtZW50cz9pPShvPXMpLmNhbnZhczooImdsImluIHM/bz1z LmdsOiJjYW52YXMiaW4gcz9pPW4ocy5jYW52YXMpOiJjb250YWluZXIiaW4g cyYmKGE9bihzLmNvbnRhaW5lcikpLCJhdHRyaWJ1dGVzImluIHMmJih0PXMu YXR0cmlidXRlcyksImV4dGVuc2lvbnMiaW4gcyYmKGw9cihzLmV4dGVuc2lv bnMpKSwib3B0aW9uYWxFeHRlbnNpb25zImluIHMmJihjPXIocy5vcHRpb25h bEV4dGVuc2lvbnMpKSwib25Eb25lImluIHMmJihmPXMub25Eb25lKSwicHJv ZmlsZSJpbiBzJiYoaD0hIXMucHJvZmlsZSksInBpeGVsUmF0aW8iaW4gcyYm KHU9K3MucGl4ZWxSYXRpbykpKSxlJiYoImNhbnZhcyI9PT1lLm5vZGVOYW1l LnRvTG93ZXJDYXNlKCk/aT1lOmE9ZSksIW8pe2lmKCFpKXtpZighKGU9ZnVu Y3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXt2YXIgZT13aW5kb3cuaW5uZXJX aWR0aCxuPXdpbmRvdy5pbm5lckhlaWdodDt0IT09ZG9jdW1lbnQuYm9keSYm KGU9KG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkucmlnaHQtbi5sZWZ0 LG49bi5ib3R0b20tbi50b3ApLGEud2lkdGg9ciplLGEuaGVpZ2h0PXIqbixq KGEuc3R5bGUse3dpZHRoOmUrInB4IixoZWlnaHQ6bisicHgifSl9dmFyIGE9 ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIGooYS5z dHlsZSx7Ym9yZGVyOjAsbWFyZ2luOjAscGFkZGluZzowLHRvcDowLGxlZnQ6 MH0pLHQuYXBwZW5kQ2hpbGQoYSksdD09PWRvY3VtZW50LmJvZHkmJihhLnN0 eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaih0LnN0eWxlLHttYXJnaW46MCxw YWRkaW5nOjB9KSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIs biwhMSksbigpLHtjYW52YXM6YSxvbkRlc3Ryb3k6ZnVuY3Rpb24oKXt3aW5k b3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixuKSx0LnJlbW92ZUNo aWxkKGEpfX19KGF8fGRvY3VtZW50LmJvZHksMCx1KSkpcmV0dXJuIG51bGw7 aT1lLmNhbnZhcyxwPWUub25EZXN0cm95fW89ZnVuY3Rpb24odCxlKXtmdW5j dGlvbiByKHIpe3RyeXtyZXR1cm4gdC5nZXRDb250ZXh0KHIsZSl9Y2F0Y2go dCl7cmV0dXJuIG51bGx9fXJldHVybiByKCJ3ZWJnbCIpfHxyKCJleHBlcmlt ZW50YWwtd2ViZ2wiKXx8cigid2ViZ2wtZXhwZXJpbWVudGFsIil9KGksdCl9 cmV0dXJuIG8/e2dsOm8sY2FudmFzOmksY29udGFpbmVyOmEsZXh0ZW5zaW9u czpsLG9wdGlvbmFsRXh0ZW5zaW9uczpjLHBpeGVsUmF0aW86dSxwcm9maWxl Omgsb25Eb25lOmYsb25EZXN0cm95OnB9OihwKCksZigid2ViZ2wgbm90IHN1 cHBvcnRlZCwgdHJ5IHVwZ3JhZGluZyB5b3VyIGJyb3dzZXIgb3IgZ3JhcGhp Y3MgZHJpdmVycyBodHRwOi8vZ2V0LndlYmdsLm9yZyIpLG51bGwpfWZ1bmN0 aW9uIGkodCxlKXtmb3IodmFyIHI9QXJyYXkodCksbj0wO248dDsrK24pcltu XT1lKG4pO3JldHVybiByfWZ1bmN0aW9uIG8odCl7dmFyIGUscjtyZXR1cm4g ZT0oNjU1MzU8dCk8PDQsZXw9cj0oMjU1PCh0Pj4+PWUpKTw8MywoZXw9cj0o MTU8KHQ+Pj49cikpPDwyKXwocj0oMzwodD4+Pj1yKSk8PDEpfHQ+Pj5yPj4x fWZ1bmN0aW9uIHMoKXtmdW5jdGlvbiB0KHQpe3Q6e2Zvcih2YXIgZT0xNjsy Njg0MzU0NTY+PWU7ZSo9MTYpaWYodDw9ZSl7dD1lO2JyZWFrIHR9dD0wfXJl dHVybiAwPChlPXJbbyh0KT4+Ml0pLmxlbmd0aD9lLnBvcCgpOm5ldyBBcnJh eUJ1ZmZlcih0KX1mdW5jdGlvbiBlKHQpe3Jbbyh0LmJ5dGVMZW5ndGgpPj4y XS5wdXNoKHQpfXZhciByPWkoOCxmdW5jdGlvbigpe3JldHVybltdfSk7cmV0 dXJue2FsbG9jOnQsZnJlZTplLGFsbG9jVHlwZTpmdW5jdGlvbihlLHIpe3Zh ciBuPW51bGw7c3dpdGNoKGUpe2Nhc2UgNTEyMDpuPW5ldyBJbnQ4QXJyYXko dChyKSwwLHIpO2JyZWFrO2Nhc2UgNTEyMTpuPW5ldyBVaW50OEFycmF5KHQo ciksMCxyKTticmVhaztjYXNlIDUxMjI6bj1uZXcgSW50MTZBcnJheSh0KDIq ciksMCxyKTticmVhaztjYXNlIDUxMjM6bj1uZXcgVWludDE2QXJyYXkodCgy KnIpLDAscik7YnJlYWs7Y2FzZSA1MTI0Om49bmV3IEludDMyQXJyYXkodCg0 KnIpLDAscik7YnJlYWs7Y2FzZSA1MTI1Om49bmV3IFVpbnQzMkFycmF5KHQo NCpyKSwwLHIpO2JyZWFrO2Nhc2UgNTEyNjpuPW5ldyBGbG9hdDMyQXJyYXko dCg0KnIpLDAscik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4g bi5sZW5ndGghPT1yP24uc3ViYXJyYXkoMCxyKTpufSxmcmVlVHlwZTpmdW5j dGlvbih0KXtlKHQuYnVmZmVyKX19fWZ1bmN0aW9uIGwodCl7cmV0dXJuISF0 JiYib2JqZWN0Ij09dHlwZW9mIHQmJkFycmF5LmlzQXJyYXkodC5zaGFwZSkm JkFycmF5LmlzQXJyYXkodC5zdHJpZGUpJiYibnVtYmVyIj09dHlwZW9mIHQu b2Zmc2V0JiZ0LnNoYXBlLmxlbmd0aD09PXQuc3RyaWRlLmxlbmd0aCYmKEFy cmF5LmlzQXJyYXkodC5kYXRhKXx8Vyh0LmRhdGEpKX1mdW5jdGlvbiBjKHQs ZSxyLG4sYSxpKXtmb3IodmFyIG89MDtvPGU7KytvKWZvcih2YXIgcz10W29d LGw9MDtsPHI7KytsKWZvcih2YXIgYz1zW2xdLHU9MDt1PG47Kyt1KWFbaSsr XT1jW3VdfWZ1bmN0aW9uIHUodCl7cmV0dXJuIDB8SltPYmplY3QucHJvdG90 eXBlLnRvU3RyaW5nLmNhbGwodCldfWZ1bmN0aW9uIGgodCxlKXtmb3IodmFy IHI9MDtyPGUubGVuZ3RoOysrcil0W3JdPWVbcl19ZnVuY3Rpb24gZih0LGUs cixuLGEsaSxvKXtmb3IodmFyIHM9MCxsPTA7bDxyOysrbClmb3IodmFyIGM9 MDtjPG47KytjKXRbcysrXT1lW2EqbCtpKmMrb119ZnVuY3Rpb24gcCh0LGUs cixuKXtmdW5jdGlvbiBhKGUpe3RoaXMuaWQ9YysrLHRoaXMuYnVmZmVyPXQu Y3JlYXRlQnVmZmVyKCksdGhpcy50eXBlPWUsdGhpcy51c2FnZT0zNTA0NCx0 aGlzLmJ5dGVMZW5ndGg9MCx0aGlzLmRpbWVuc2lvbj0xLHRoaXMuZHR5cGU9 NTEyMSx0aGlzLnBlcnNpc3RlbnREYXRhPW51bGwsci5wcm9maWxlJiYodGhp cy5zdGF0cz17c2l6ZTowfSl9ZnVuY3Rpb24gaShlLHIsbil7ZS5ieXRlTGVu Z3RoPXIuYnl0ZUxlbmd0aCx0LmJ1ZmZlckRhdGEoZS50eXBlLHIsbil9ZnVu Y3Rpb24gbyh0LGUscixuLGEsbyl7aWYodC51c2FnZT1yLEFycmF5LmlzQXJy YXkoZSkpe2lmKHQuZHR5cGU9bnx8NTEyNiwwPGUubGVuZ3RoKWlmKEFycmF5 LmlzQXJyYXkoZVswXSkpe2E9dHQoZSk7Zm9yKHZhciBzPW49MTtzPGEubGVu Z3RoOysrcyluKj1hW3NdO3QuZGltZW5zaW9uPW4saSh0LGU9JChlLGEsdC5k dHlwZSksciksbz90LnBlcnNpc3RlbnREYXRhPWU6Ry5mcmVlVHlwZShlKX1l bHNlIm51bWJlciI9PXR5cGVvZiBlWzBdPyh0LmRpbWVuc2lvbj1hLGgoYT1H LmFsbG9jVHlwZSh0LmR0eXBlLGUubGVuZ3RoKSxlKSxpKHQsYSxyKSxvP3Qu cGVyc2lzdGVudERhdGE9YTpHLmZyZWVUeXBlKGEpKTpXKGVbMF0pJiYodC5k aW1lbnNpb249ZVswXS5sZW5ndGgsdC5kdHlwZT1ufHx1KGVbMF0pfHw1MTI2 LGkodCxlPSQoZSxbZS5sZW5ndGgsZVswXS5sZW5ndGhdLHQuZHR5cGUpLHIp LG8/dC5wZXJzaXN0ZW50RGF0YT1lOkcuZnJlZVR5cGUoZSkpfWVsc2UgaWYo VyhlKSl0LmR0eXBlPW58fHUoZSksdC5kaW1lbnNpb249YSxpKHQsZSxyKSxv JiYodC5wZXJzaXN0ZW50RGF0YT1uZXcgVWludDhBcnJheShuZXcgVWludDhB cnJheShlLmJ1ZmZlcikpKTtlbHNlIGlmKGwoZSkpe2E9ZS5zaGFwZTt2YXIg Yz1lLnN0cmlkZSxwPShzPWUub2Zmc2V0LDApLGQ9MCxnPTAsdj0wOzE9PT1h Lmxlbmd0aD8ocD1hWzBdLGQ9MSxnPWNbMF0sdj0wKToyPT09YS5sZW5ndGgm JihwPWFbMF0sZD1hWzFdLGc9Y1swXSx2PWNbMV0pLHQuZHR5cGU9bnx8dShl LmRhdGEpfHw1MTI2LHQuZGltZW5zaW9uPWQsZihhPUcuYWxsb2NUeXBlKHQu ZHR5cGUscCpkKSxlLmRhdGEscCxkLGcsdixzKSxpKHQsYSxyKSxvP3QucGVy c2lzdGVudERhdGE9YTpHLmZyZWVUeXBlKGEpfX1mdW5jdGlvbiBzKHIpe2Uu YnVmZmVyQ291bnQtLTtmb3IodmFyIGE9MDthPG4uc3RhdGUubGVuZ3RoOysr YSl7dmFyIGk9bi5zdGF0ZVthXTtpLmJ1ZmZlcj09PXImJih0LmRpc2FibGVW ZXJ0ZXhBdHRyaWJBcnJheShhKSxpLmJ1ZmZlcj1udWxsKX10LmRlbGV0ZUJ1 ZmZlcihyLmJ1ZmZlciksci5idWZmZXI9bnVsbCxkZWxldGUgcFtyLmlkXX12 YXIgYz0wLHA9e307YS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe3QuYmlu ZEJ1ZmZlcih0aGlzLnR5cGUsdGhpcy5idWZmZXIpfSxhLnByb3RvdHlwZS5k ZXN0cm95PWZ1bmN0aW9uKCl7cyh0aGlzKX07dmFyIGQ9W107cmV0dXJuIHIu cHJvZmlsZSYmKGUuZ2V0VG90YWxCdWZmZXJTaXplPWZ1bmN0aW9uKCl7dmFy IHQ9MDtyZXR1cm4gT2JqZWN0LmtleXMocCkuZm9yRWFjaChmdW5jdGlvbihl KXt0Kz1wW2VdLnN0YXRzLnNpemV9KSx0fSkse2NyZWF0ZTpmdW5jdGlvbihu LGksYyxkKXtmdW5jdGlvbiBnKGUpe3ZhciBuPTM1MDQ0LGE9bnVsbCxpPTAs cz0wLGM9MTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKXx8VyhlKXx8bChlKT9h PWU6Im51bWJlciI9PXR5cGVvZiBlP2k9MHxlOmUmJigiZGF0YSJpbiBlJiYo YT1lLmRhdGEpLCJ1c2FnZSJpbiBlJiYobj1RW2UudXNhZ2VdKSwidHlwZSJp biBlJiYocz1LW2UudHlwZV0pLCJkaW1lbnNpb24iaW4gZSYmKGM9MHxlLmRp bWVuc2lvbiksImxlbmd0aCJpbiBlJiYoaT0wfGUubGVuZ3RoKSksdi5iaW5k KCksYT9vKHYsYSxuLHMsYyxkKTooaSYmdC5idWZmZXJEYXRhKHYudHlwZSxp LG4pLHYuZHR5cGU9c3x8NTEyMSx2LnVzYWdlPW4sdi5kaW1lbnNpb249Yyx2 LmJ5dGVMZW5ndGg9aSksci5wcm9maWxlJiYodi5zdGF0cy5zaXplPXYuYnl0 ZUxlbmd0aCpldFt2LmR0eXBlXSksZ31lLmJ1ZmZlckNvdW50Kys7dmFyIHY9 bmV3IGEoaSk7cmV0dXJuIHBbdi5pZF09dixjfHxnKG4pLGcuX3JlZ2xUeXBl PSJidWZmZXIiLGcuX2J1ZmZlcj12LGcuc3ViZGF0YT1mdW5jdGlvbihlLHIp e3ZhciBuLGE9MHwocnx8MCk7aWYodi5iaW5kKCksVyhlKSl0LmJ1ZmZlclN1 YkRhdGEodi50eXBlLGEsZSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtp ZigwPGUubGVuZ3RoKWlmKCJudW1iZXIiPT10eXBlb2YgZVswXSl7dmFyIGk9 Ry5hbGxvY1R5cGUodi5kdHlwZSxlLmxlbmd0aCk7aChpLGUpLHQuYnVmZmVy U3ViRGF0YSh2LnR5cGUsYSxpKSxHLmZyZWVUeXBlKGkpfWVsc2UoQXJyYXku aXNBcnJheShlWzBdKXx8VyhlWzBdKSkmJihuPXR0KGUpLGk9JChlLG4sdi5k dHlwZSksdC5idWZmZXJTdWJEYXRhKHYudHlwZSxhLGkpLEcuZnJlZVR5cGUo aSkpfWVsc2UgaWYobChlKSl7bj1lLnNoYXBlO3ZhciBvPWUuc3RyaWRlLHM9 aT0wLGM9MCxwPTA7MT09PW4ubGVuZ3RoPyhpPW5bMF0scz0xLGM9b1swXSxw PTApOjI9PT1uLmxlbmd0aCYmKGk9blswXSxzPW5bMV0sYz1vWzBdLHA9b1sx XSksbj1BcnJheS5pc0FycmF5KGUuZGF0YSk/di5kdHlwZTp1KGUuZGF0YSks ZihuPUcuYWxsb2NUeXBlKG4saSpzKSxlLmRhdGEsaSxzLGMscCxlLm9mZnNl dCksdC5idWZmZXJTdWJEYXRhKHYudHlwZSxhLG4pLEcuZnJlZVR5cGUobil9 cmV0dXJuIGd9LHIucHJvZmlsZSYmKGcuc3RhdHM9di5zdGF0cyksZy5kZXN0 cm95PWZ1bmN0aW9uKCl7cyh2KX0sZ30sY3JlYXRlU3RyZWFtOmZ1bmN0aW9u KHQsZSl7dmFyIHI9ZC5wb3AoKTtyZXR1cm4gcnx8KHI9bmV3IGEodCkpLHIu YmluZCgpLG8ocixlLDM1MDQwLDAsMSwhMSkscn0sZGVzdHJveVN0cmVhbTpm dW5jdGlvbih0KXtkLnB1c2godCl9LGNsZWFyOmZ1bmN0aW9uKCl7WChwKS5m b3JFYWNoKHMpLGQuZm9yRWFjaChzKX0sZ2V0QnVmZmVyOmZ1bmN0aW9uKHQp e3JldHVybiB0JiZ0Ll9idWZmZXIgaW5zdGFuY2VvZiBhP3QuX2J1ZmZlcjpu dWxsfSxyZXN0b3JlOmZ1bmN0aW9uKCl7WChwKS5mb3JFYWNoKGZ1bmN0aW9u KGUpe2UuYnVmZmVyPXQuY3JlYXRlQnVmZmVyKCksdC5iaW5kQnVmZmVyKGUu dHlwZSxlLmJ1ZmZlciksdC5idWZmZXJEYXRhKGUudHlwZSxlLnBlcnNpc3Rl bnREYXRhfHxlLmJ5dGVMZW5ndGgsZS51c2FnZSl9KX0sX2luaXRCdWZmZXI6 b319ZnVuY3Rpb24gZCh0LGUscixuKXtmdW5jdGlvbiBhKHQpe3RoaXMuaWQ9 YysrLHNbdGhpcy5pZF09dGhpcyx0aGlzLmJ1ZmZlcj10LHRoaXMucHJpbVR5 cGU9NCx0aGlzLnR5cGU9dGhpcy52ZXJ0Q291bnQ9MH1mdW5jdGlvbiBpKG4s YSxpLG8scyxjLHUpe2lmKG4uYnVmZmVyLmJpbmQoKSxhKXt2YXIgaD11O3V8 fFcoYSkmJighbChhKXx8VyhhLmRhdGEpKXx8KGg9ZS5vZXNfZWxlbWVudF9p bmRleF91aW50PzUxMjU6NTEyMyksci5faW5pdEJ1ZmZlcihuLmJ1ZmZlcixh LGksaCwzKX1lbHNlIHQuYnVmZmVyRGF0YSgzNDk2MyxjLGkpLG4uYnVmZmVy LmR0eXBlPWh8fDUxMjEsbi5idWZmZXIudXNhZ2U9aSxuLmJ1ZmZlci5kaW1l bnNpb249MyxuLmJ1ZmZlci5ieXRlTGVuZ3RoPWM7aWYoaD11LCF1KXtzd2l0 Y2gobi5idWZmZXIuZHR5cGUpe2Nhc2UgNTEyMTpjYXNlIDUxMjA6aD01MTIx O2JyZWFrO2Nhc2UgNTEyMzpjYXNlIDUxMjI6aD01MTIzO2JyZWFrO2Nhc2Ug NTEyNTpjYXNlIDUxMjQ6aD01MTI1fW4uYnVmZmVyLmR0eXBlPWh9bi50eXBl PWgsMD4oYT1zKSYmKGE9bi5idWZmZXIuYnl0ZUxlbmd0aCw1MTIzPT09aD9h Pj49MTo1MTI1PT09aCYmKGE+Pj0yKSksbi52ZXJ0Q291bnQ9YSxhPW8sMD5v JiYoYT00LDE9PT0obz1uLmJ1ZmZlci5kaW1lbnNpb24pJiYoYT0wKSwyPT09 byYmKGE9MSksMz09PW8mJihhPTQpKSxuLnByaW1UeXBlPWF9ZnVuY3Rpb24g byh0KXtuLmVsZW1lbnRzQ291bnQtLSxkZWxldGUgc1t0LmlkXSx0LmJ1ZmZl ci5kZXN0cm95KCksdC5idWZmZXI9bnVsbH12YXIgcz17fSxjPTAsdT17dWlu dDg6NTEyMSx1aW50MTY6NTEyM307ZS5vZXNfZWxlbWVudF9pbmRleF91aW50 JiYodS51aW50MzI9NTEyNSksYS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigp e3RoaXMuYnVmZmVyLmJpbmQoKX07dmFyIGg9W107cmV0dXJue2NyZWF0ZTpm dW5jdGlvbih0LGUpe2Z1bmN0aW9uIHModCl7aWYodClpZigibnVtYmVyIj09 dHlwZW9mIHQpYyh0KSxoLnByaW1UeXBlPTQsaC52ZXJ0Q291bnQ9MHx0LGgu dHlwZT01MTIxO2Vsc2V7dmFyIGU9bnVsbCxyPTM1MDQ0LG49LTEsYT0tMSxv PTAsZj0wO0FycmF5LmlzQXJyYXkodCl8fFcodCl8fGwodCk/ZT10OigiZGF0 YSJpbiB0JiYoZT10LmRhdGEpLCJ1c2FnZSJpbiB0JiYocj1RW3QudXNhZ2Vd KSwicHJpbWl0aXZlImluIHQmJihuPXJ0W3QucHJpbWl0aXZlXSksImNvdW50 ImluIHQmJihhPTB8dC5jb3VudCksInR5cGUiaW4gdCYmKGY9dVt0LnR5cGVd KSwibGVuZ3RoImluIHQ/bz0wfHQubGVuZ3RoOihvPWEsNTEyMz09PWZ8fDUx MjI9PT1mP28qPTI6NTEyNSE9PWYmJjUxMjQhPT1mfHwobyo9NCkpKSxpKGgs ZSxyLG4sYSxvLGYpfWVsc2UgYygpLGgucHJpbVR5cGU9NCxoLnZlcnRDb3Vu dD0wLGgudHlwZT01MTIxO3JldHVybiBzfXZhciBjPXIuY3JlYXRlKG51bGws MzQ5NjMsITApLGg9bmV3IGEoYy5fYnVmZmVyKTtyZXR1cm4gbi5lbGVtZW50 c0NvdW50Kysscyh0KSxzLl9yZWdsVHlwZT0iZWxlbWVudHMiLHMuX2VsZW1l bnRzPWgscy5zdWJkYXRhPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGMuc3ViZGF0 YSh0LGUpLHN9LHMuZGVzdHJveT1mdW5jdGlvbigpe28oaCl9LHN9LGNyZWF0 ZVN0cmVhbTpmdW5jdGlvbih0KXt2YXIgZT1oLnBvcCgpO3JldHVybiBlfHwo ZT1uZXcgYShyLmNyZWF0ZShudWxsLDM0OTYzLCEwLCExKS5fYnVmZmVyKSks aShlLHQsMzUwNDAsLTEsLTEsMCwwKSxlfSxkZXN0cm95U3RyZWFtOmZ1bmN0 aW9uKHQpe2gucHVzaCh0KX0sZ2V0RWxlbWVudHM6ZnVuY3Rpb24odCl7cmV0 dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuX2VsZW1lbnRzIGluc3RhbmNl b2YgYT90Ll9lbGVtZW50czpudWxsfSxjbGVhcjpmdW5jdGlvbigpe1gocyku Zm9yRWFjaChvKX19fWZ1bmN0aW9uIGcodCl7Zm9yKHZhciBlPUcuYWxsb2NU eXBlKDUxMjMsdC5sZW5ndGgpLHI9MDtyPHQubGVuZ3RoOysrcilpZihpc05h Tih0W3JdKSllW3JdPTY1NTM1O2Vsc2UgaWYoMS8wPT09dFtyXSllW3JdPTMx NzQ0O2Vsc2UgaWYoLTEvMD09PXRbcl0pZVtyXT02NDUxMjtlbHNle250WzBd PXRbcl07dmFyIG49KGk9YXRbMF0pPj4+MzE8PDE1LGE9KGk8PDE+Pj4yNCkt MTI3LGk9aT4+MTMmMTAyMztlW3JdPS0yND5hP246LTE0PmE/bisoaSsxMDI0 Pj4tMTQtYSk6MTU8YT9uKzMxNzQ0Om4rKGErMTU8PDEwKStpfXJldHVybiBl fWZ1bmN0aW9uIHYodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl8fFcodCl9 ZnVuY3Rpb24gbSh0KXtyZXR1cm4iW29iamVjdCAiK3QrIl0ifWZ1bmN0aW9u IHkodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJigwPT09dC5sZW5ndGh8 fCJudW1iZXIiPT10eXBlb2YgdFswXSl9ZnVuY3Rpb24geCh0KXtyZXR1cm4h KCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGh8fCF2KHRbMF0pKX1m dW5jdGlvbiBiKHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n LmNhbGwodCl9ZnVuY3Rpb24gXyh0KXtpZighdClyZXR1cm4hMTt2YXIgZT1i KHQpO3JldHVybiAwPD1wdC5pbmRleE9mKGUpfHwoeSh0KXx8eCh0KXx8bCh0 KSl9ZnVuY3Rpb24gdyh0LGUpezM2MTkzPT09dC50eXBlPyh0LmRhdGE9Zyhl KSxHLmZyZWVUeXBlKGUpKTp0LmRhdGE9ZX1mdW5jdGlvbiBrKHQsZSxyLG4s YSxpKXtpZih0PSJ1bmRlZmluZWQiIT10eXBlb2YgZ3RbdF0/Z3RbdF06c3Rb dF0qZHRbZV0saSYmKHQqPTYpLGEpe2ZvcihuPTA7MTw9cjspbis9dCpyKnIs ci89MjtyZXR1cm4gbn1yZXR1cm4gdCpyKm59ZnVuY3Rpb24gVCh0LGUscixu LGEsaSxvKXtmdW5jdGlvbiBzKCl7dGhpcy5mb3JtYXQ9dGhpcy5pbnRlcm5h bGZvcm1hdD02NDA4LHRoaXMudHlwZT01MTIxLHRoaXMuZmxpcFk9dGhpcy5w cmVtdWx0aXBseUFscGhhPXRoaXMuY29tcHJlc3NlZD0hMSx0aGlzLnVucGFj a0FsaWdubWVudD0xLHRoaXMuY29sb3JTcGFjZT0zNzQ0NCx0aGlzLmNoYW5u ZWxzPXRoaXMuaGVpZ2h0PXRoaXMud2lkdGg9MH1mdW5jdGlvbiBjKHQsZSl7 dC5pbnRlcm5hbGZvcm1hdD1lLmludGVybmFsZm9ybWF0LHQuZm9ybWF0PWUu Zm9ybWF0LHQudHlwZT1lLnR5cGUsdC5jb21wcmVzc2VkPWUuY29tcHJlc3Nl ZCx0LnByZW11bHRpcGx5QWxwaGE9ZS5wcmVtdWx0aXBseUFscGhhLHQuZmxp cFk9ZS5mbGlwWSx0LnVucGFja0FsaWdubWVudD1lLnVucGFja0FsaWdubWVu dCx0LmNvbG9yU3BhY2U9ZS5jb2xvclNwYWNlLHQud2lkdGg9ZS53aWR0aCx0 LmhlaWdodD1lLmhlaWdodCx0LmNoYW5uZWxzPWUuY2hhbm5lbHN9ZnVuY3Rp b24gdSh0LGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZSYmZSl7InByZW11bHRp cGx5QWxwaGEiaW4gZSYmKHQucHJlbXVsdGlwbHlBbHBoYT1lLnByZW11bHRp cGx5QWxwaGEpLCJmbGlwWSJpbiBlJiYodC5mbGlwWT1lLmZsaXBZKSwiYWxp Z25tZW50ImluIGUmJih0LnVucGFja0FsaWdubWVudD1lLmFsaWdubWVudCks ImNvbG9yU3BhY2UiaW4gZSYmKHQuY29sb3JTcGFjZT1xW2UuY29sb3JTcGFj ZV0pLCJ0eXBlImluIGUmJih0LnR5cGU9SFtlLnR5cGVdKTt2YXIgcj10Lndp ZHRoLG49dC5oZWlnaHQsYT10LmNoYW5uZWxzLGk9ITE7InNoYXBlImluIGU/ KHI9ZS5zaGFwZVswXSxuPWUuc2hhcGVbMV0sMz09PWUuc2hhcGUubGVuZ3Ro JiYoYT1lLnNoYXBlWzJdLGk9ITApKTooInJhZGl1cyJpbiBlJiYocj1uPWUu cmFkaXVzKSwid2lkdGgiaW4gZSYmKHI9ZS53aWR0aCksImhlaWdodCJpbiBl JiYobj1lLmhlaWdodCksImNoYW5uZWxzImluIGUmJihhPWUuY2hhbm5lbHMs aT0hMCkpLHQud2lkdGg9MHxyLHQuaGVpZ2h0PTB8bix0LmNoYW5uZWxzPTB8 YSxyPSExLCJmb3JtYXQiaW4gZSYmKHI9ZS5mb3JtYXQsbj10LmludGVybmFs Zm9ybWF0PVlbcl0sdC5mb3JtYXQ9cHRbbl0sciBpbiBIJiYhKCJ0eXBlImlu IGUpJiYodC50eXBlPUhbcl0pLHIgaW4gSyYmKHQuY29tcHJlc3NlZD0hMCks cj0hMCksIWkmJnI/dC5jaGFubmVscz1zdFt0LmZvcm1hdF06aSYmIXImJnQu Y2hhbm5lbHMhPT1vdFt0LmZvcm1hdF0mJih0LmZvcm1hdD10LmludGVybmFs Zm9ybWF0PW90W3QuY2hhbm5lbHNdKX19ZnVuY3Rpb24gaChlKXt0LnBpeGVs U3RvcmVpKDM3NDQwLGUuZmxpcFkpLHQucGl4ZWxTdG9yZWkoMzc0NDEsZS5w cmVtdWx0aXBseUFscGhhKSx0LnBpeGVsU3RvcmVpKDM3NDQzLGUuY29sb3JT cGFjZSksdC5waXhlbFN0b3JlaSgzMzE3LGUudW5wYWNrQWxpZ25tZW50KX1m dW5jdGlvbiBmKCl7cy5jYWxsKHRoaXMpLHRoaXMueU9mZnNldD10aGlzLnhP ZmZzZXQ9MCx0aGlzLmRhdGE9bnVsbCx0aGlzLm5lZWRzRnJlZT0hMSx0aGlz LmVsZW1lbnQ9bnVsbCx0aGlzLm5lZWRzQ29weT0hMX1mdW5jdGlvbiBwKHQs ZSl7dmFyIHI9bnVsbDtpZihfKGUpP3I9ZTplJiYodSh0LGUpLCJ4ImluIGUm Jih0LnhPZmZzZXQ9MHxlLngpLCJ5ImluIGUmJih0LnlPZmZzZXQ9MHxlLnkp LF8oZS5kYXRhKSYmKHI9ZS5kYXRhKSksZS5jb3B5KXt2YXIgbj1hLnZpZXdw b3J0V2lkdGgsaT1hLnZpZXdwb3J0SGVpZ2h0O3Qud2lkdGg9dC53aWR0aHx8 bi10LnhPZmZzZXQsdC5oZWlnaHQ9dC5oZWlnaHR8fGktdC55T2Zmc2V0LHQu bmVlZHNDb3B5PSEwfWVsc2UgaWYocil7aWYoVyhyKSl0LmNoYW5uZWxzPXQu Y2hhbm5lbHN8fDQsdC5kYXRhPXIsInR5cGUiaW4gZXx8NTEyMSE9PXQudHlw ZXx8KHQudHlwZT0wfEpbT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs KHIpXSk7ZWxzZSBpZih5KHIpKXtzd2l0Y2godC5jaGFubmVscz10LmNoYW5u ZWxzfHw0LGk9KG49cikubGVuZ3RoLHQudHlwZSl7Y2FzZSA1MTIxOmNhc2Ug NTEyMzpjYXNlIDUxMjU6Y2FzZSA1MTI2OihpPUcuYWxsb2NUeXBlKHQudHlw ZSxpKSkuc2V0KG4pLHQuZGF0YT1pO2JyZWFrO2Nhc2UgMzYxOTM6dC5kYXRh PWcobil9dC5hbGlnbm1lbnQ9MSx0Lm5lZWRzRnJlZT0hMH1lbHNlIGlmKGwo cikpe249ci5kYXRhLEFycmF5LmlzQXJyYXkobil8fDUxMjEhPT10LnR5cGV8 fCh0LnR5cGU9MHxKW09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChu KV0pO2k9ci5zaGFwZTt2YXIgbyxzLGMsaCxmPXIuc3RyaWRlOzM9PT1pLmxl bmd0aD8oYz1pWzJdLGg9ZlsyXSk6aD1jPTEsbz1pWzBdLHM9aVsxXSxpPWZb MF0sZj1mWzFdLHQuYWxpZ25tZW50PTEsdC53aWR0aD1vLHQuaGVpZ2h0PXMs dC5jaGFubmVscz1jLHQuZm9ybWF0PXQuaW50ZXJuYWxmb3JtYXQ9b3RbY10s dC5uZWVkc0ZyZWU9ITAsbz1oLHI9ci5vZmZzZXQsYz10LndpZHRoLGg9dC5o ZWlnaHQscz10LmNoYW5uZWxzO2Zvcih2YXIgcD1HLmFsbG9jVHlwZSgzNjE5 Mz09PXQudHlwZT81MTI2OnQudHlwZSxjKmgqcyksZD0wLG09MDttPGg7Kytt KWZvcih2YXIgaz0wO2s8YzsrK2spZm9yKHZhciBUPTA7VDxzOysrVClwW2Qr K109bltpKmsrZiptK28qVCtyXTt3KHQscCl9ZWxzZSBpZihiKHIpPT09bHR8 fGIocik9PT1jdCliKHIpPT09bHQ/dC5lbGVtZW50PXI6dC5lbGVtZW50PXIu Y2FudmFzLHQud2lkdGg9dC5lbGVtZW50LndpZHRoLHQuaGVpZ2h0PXQuZWxl bWVudC5oZWlnaHQsdC5jaGFubmVscz00O2Vsc2UgaWYoYihyKT09PXV0KXQu ZWxlbWVudD1yLHQud2lkdGg9ci53aWR0aCx0LmhlaWdodD1yLmhlaWdodCx0 LmNoYW5uZWxzPTQ7ZWxzZSBpZihiKHIpPT09aHQpdC5lbGVtZW50PXIsdC53 aWR0aD1yLm5hdHVyYWxXaWR0aCx0LmhlaWdodD1yLm5hdHVyYWxIZWlnaHQs dC5jaGFubmVscz00O2Vsc2UgaWYoYihyKT09PWZ0KXQuZWxlbWVudD1yLHQu d2lkdGg9ci52aWRlb1dpZHRoLHQuaGVpZ2h0PXIudmlkZW9IZWlnaHQsdC5j aGFubmVscz00O2Vsc2UgaWYoeChyKSl7Zm9yKG49dC53aWR0aHx8clswXS5s ZW5ndGgsaT10LmhlaWdodHx8ci5sZW5ndGgsZj10LmNoYW5uZWxzLGY9dihy WzBdWzBdKT9mfHxyWzBdWzBdLmxlbmd0aDpmfHwxLG89Wi5zaGFwZShyKSxj PTEsaD0wO2g8by5sZW5ndGg7KytoKWMqPW9baF07Yz1HLmFsbG9jVHlwZSgz NjE5Mz09PXQudHlwZT81MTI2OnQudHlwZSxjKSxaLmZsYXR0ZW4ocixvLCIi LGMpLHcodCxjKSx0LmFsaWdubWVudD0xLHQud2lkdGg9bix0LmhlaWdodD1p LHQuY2hhbm5lbHM9Zix0LmZvcm1hdD10LmludGVybmFsZm9ybWF0PW90W2Zd LHQubmVlZHNGcmVlPSEwfX1lbHNlIHQud2lkdGg9dC53aWR0aHx8MSx0Lmhl aWdodD10LmhlaWdodHx8MSx0LmNoYW5uZWxzPXQuY2hhbm5lbHN8fDR9ZnVu Y3Rpb24gZChlLHIsYSxpLG8pe3ZhciBzPWUuZWxlbWVudCxsPWUuZGF0YSxj PWUuaW50ZXJuYWxmb3JtYXQsdT1lLmZvcm1hdCxmPWUudHlwZSxwPWUud2lk dGgsZD1lLmhlaWdodDtoKGUpLHM/dC50ZXhTdWJJbWFnZTJEKHIsbyxhLGks dSxmLHMpOmUuY29tcHJlc3NlZD90LmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE KHIsbyxhLGksYyxwLGQsbCk6ZS5uZWVkc0NvcHk/KG4oKSx0LmNvcHlUZXhT dWJJbWFnZTJEKHIsbyxhLGksZS54T2Zmc2V0LGUueU9mZnNldCxwLGQpKTp0 LnRleFN1YkltYWdlMkQocixvLGEsaSxwLGQsdSxmLGwpfWZ1bmN0aW9uIG0o KXtyZXR1cm4gZHQucG9wKCl8fG5ldyBmfWZ1bmN0aW9uIFQodCl7dC5uZWVk c0ZyZWUmJkcuZnJlZVR5cGUodC5kYXRhKSxmLmNhbGwodCksZHQucHVzaCh0 KX1mdW5jdGlvbiBNKCl7cy5jYWxsKHRoaXMpLHRoaXMuZ2VuTWlwbWFwcz0h MSx0aGlzLm1pcG1hcEhpbnQ9NDM1Mix0aGlzLm1pcG1hc2s9MCx0aGlzLmlt YWdlcz1BcnJheSgxNil9ZnVuY3Rpb24gQSh0LGUscil7dmFyIG49dC5pbWFn ZXNbMF09bSgpO3QubWlwbWFzaz0xLG4ud2lkdGg9dC53aWR0aD1lLG4uaGVp Z2h0PXQuaGVpZ2h0PXIsbi5jaGFubmVscz10LmNoYW5uZWxzPTR9ZnVuY3Rp b24gUyh0LGUpe3ZhciByPW51bGw7aWYoXyhlKSljKHI9dC5pbWFnZXNbMF09 bSgpLHQpLHAocixlKSx0Lm1pcG1hc2s9MTtlbHNlIGlmKHUodCxlKSxBcnJh eS5pc0FycmF5KGUubWlwbWFwKSlmb3IodmFyIG49ZS5taXBtYXAsYT0wO2E8 bi5sZW5ndGg7KythKWMocj10LmltYWdlc1thXT1tKCksdCksci53aWR0aD4+ PWEsci5oZWlnaHQ+Pj1hLHAocixuW2FdKSx0Lm1pcG1hc2t8PTE8PGE7ZWxz ZSBjKHI9dC5pbWFnZXNbMF09bSgpLHQpLHAocixlKSx0Lm1pcG1hc2s9MTtj KHQsdC5pbWFnZXNbMF0pfWZ1bmN0aW9uIEUoZSxyKXtmb3IodmFyIGE9ZS5p bWFnZXMsaT0wO2k8YS5sZW5ndGgmJmFbaV07KytpKXt2YXIgbz1hW2ldLHM9 cixsPWksYz1vLmVsZW1lbnQsdT1vLmRhdGEsZj1vLmludGVybmFsZm9ybWF0 LHA9by5mb3JtYXQsZD1vLnR5cGUsZz1vLndpZHRoLHY9by5oZWlnaHQsbT1v LmNoYW5uZWxzO2gobyksYz90LnRleEltYWdlMkQocyxsLHAscCxkLGMpOm8u Y29tcHJlc3NlZD90LmNvbXByZXNzZWRUZXhJbWFnZTJEKHMsbCxmLGcsdiww LHUpOm8ubmVlZHNDb3B5PyhuKCksdC5jb3B5VGV4SW1hZ2UyRChzLGwscCxv LnhPZmZzZXQsby55T2Zmc2V0LGcsdiwwKSk6KChvPSF1KSYmKHU9Ry56ZXJv LmFsbG9jVHlwZShkLGcqdiptKSksdC50ZXhJbWFnZTJEKHMsbCxwLGcsdiww LHAsZCx1KSxvJiZ1JiZHLnplcm8uZnJlZVR5cGUodSkpfX1mdW5jdGlvbiBM KCl7dmFyIHQ9Z3QucG9wKCl8fG5ldyBNO3MuY2FsbCh0KTtmb3IodmFyIGU9 dC5taXBtYXNrPTA7MTY+ZTsrK2UpdC5pbWFnZXNbZV09bnVsbDtyZXR1cm4g dH1mdW5jdGlvbiBDKHQpe2Zvcih2YXIgZT10LmltYWdlcyxyPTA7cjxlLmxl bmd0aDsrK3IpZVtyXSYmVChlW3JdKSxlW3JdPW51bGw7Z3QucHVzaCh0KX1m dW5jdGlvbiBQKCl7dGhpcy5tYWdGaWx0ZXI9dGhpcy5taW5GaWx0ZXI9OTcy OCx0aGlzLndyYXBUPXRoaXMud3JhcFM9MzMwNzEsdGhpcy5hbmlzb3Ryb3Bp Yz0xLHRoaXMuZ2VuTWlwbWFwcz0hMSx0aGlzLm1pcG1hcEhpbnQ9NDM1Mn1m dW5jdGlvbiBPKHQsZSl7Im1pbiJpbiBlJiYodC5taW5GaWx0ZXI9VVtlLm1p bl0sMDw9aXQuaW5kZXhPZih0Lm1pbkZpbHRlcikmJiEoImZhY2VzImluIGUp JiYodC5nZW5NaXBtYXBzPSEwKSksIm1hZyJpbiBlJiYodC5tYWdGaWx0ZXI9 VltlLm1hZ10pO3ZhciByPXQud3JhcFMsbj10LndyYXBUO2lmKCJ3cmFwImlu IGUpe3ZhciBhPWUud3JhcDsic3RyaW5nIj09dHlwZW9mIGE/cj1uPU5bYV06 QXJyYXkuaXNBcnJheShhKSYmKHI9TlthWzBdXSxuPU5bYVsxXV0pfWVsc2Ui d3JhcFMiaW4gZSYmKHI9TltlLndyYXBTXSksIndyYXBUImluIGUmJihuPU5b ZS53cmFwVF0pO2lmKHQud3JhcFM9cix0LndyYXBUPW4sImFuaXNvdHJvcGlj ImluIGUmJih0LmFuaXNvdHJvcGljPWUuYW5pc290cm9waWMpLCJtaXBtYXAi aW4gZSl7c3dpdGNoKHI9ITEsdHlwZW9mIGUubWlwbWFwKXtjYXNlInN0cmlu ZyI6dC5taXBtYXBIaW50PUJbZS5taXBtYXBdLHI9dC5nZW5NaXBtYXBzPSEw O2JyZWFrO2Nhc2UiYm9vbGVhbiI6cj10Lmdlbk1pcG1hcHM9ZS5taXBtYXA7 YnJlYWs7Y2FzZSJvYmplY3QiOnQuZ2VuTWlwbWFwcz0hMSxyPSEwfSFyfHwi bWluImluIGV8fCh0Lm1pbkZpbHRlcj05OTg0KX19ZnVuY3Rpb24geihyLG4p e3QudGV4UGFyYW1ldGVyaShuLDEwMjQxLHIubWluRmlsdGVyKSx0LnRleFBh cmFtZXRlcmkobiwxMDI0MCxyLm1hZ0ZpbHRlciksdC50ZXhQYXJhbWV0ZXJp KG4sMTAyNDIsci53cmFwUyksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsci53 cmFwVCksZS5leHRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMmJnQudGV4 UGFyYW1ldGVyaShuLDM0MDQ2LHIuYW5pc290cm9waWMpLHIuZ2VuTWlwbWFw cyYmKHQuaGludCgzMzE3MCxyLm1pcG1hcEhpbnQpLHQuZ2VuZXJhdGVNaXBt YXAobikpfWZ1bmN0aW9uIEkoZSl7cy5jYWxsKHRoaXMpLHRoaXMubWlwbWFz az0wLHRoaXMuaW50ZXJuYWxmb3JtYXQ9NjQwOCx0aGlzLmlkPXZ0KyssdGhp cy5yZWZDb3VudD0xLHRoaXMudGFyZ2V0PWUsdGhpcy50ZXh0dXJlPXQuY3Jl YXRlVGV4dHVyZSgpLHRoaXMudW5pdD0tMSx0aGlzLmJpbmRDb3VudD0wLHRo aXMudGV4SW5mbz1uZXcgUCxvLnByb2ZpbGUmJih0aGlzLnN0YXRzPXtzaXpl OjB9KX1mdW5jdGlvbiBEKGUpe3QuYWN0aXZlVGV4dHVyZSgzMzk4NCksdC5i aW5kVGV4dHVyZShlLnRhcmdldCxlLnRleHR1cmUpfWZ1bmN0aW9uIFIoKXt2 YXIgZT14dFswXTtlP3QuYmluZFRleHR1cmUoZS50YXJnZXQsZS50ZXh0dXJl KTp0LmJpbmRUZXh0dXJlKDM1NTMsbnVsbCl9ZnVuY3Rpb24gRihlKXt2YXIg cj1lLnRleHR1cmUsbj1lLnVuaXQsYT1lLnRhcmdldDswPD1uJiYodC5hY3Rp dmVUZXh0dXJlKDMzOTg0K24pLHQuYmluZFRleHR1cmUoYSxudWxsKSx4dFtu XT1udWxsKSx0LmRlbGV0ZVRleHR1cmUociksZS50ZXh0dXJlPW51bGwsZS5w YXJhbXM9bnVsbCxlLnBpeGVscz1udWxsLGUucmVmQ291bnQ9MCxkZWxldGUg bXRbZS5pZF0saS50ZXh0dXJlQ291bnQtLX12YXIgQj17ImRvbid0IGNhcmUi OjQzNTIsImRvbnQgY2FyZSI6NDM1MixuaWNlOjQzNTQsZmFzdDo0MzUzfSxO PXtyZXBlYXQ6MTA0OTcsY2xhbXA6MzMwNzEsbWlycm9yOjMzNjQ4fSxWPXtu ZWFyZXN0Ojk3MjgsbGluZWFyOjk3Mjl9LFU9aih7bWlwbWFwOjk5ODcsIm5l YXJlc3QgbWlwbWFwIG5lYXJlc3QiOjk5ODQsImxpbmVhciBtaXBtYXAgbmVh cmVzdCI6OTk4NSwibmVhcmVzdCBtaXBtYXAgbGluZWFyIjo5OTg2LCJsaW5l YXIgbWlwbWFwIGxpbmVhciI6OTk4N30sVikscT17bm9uZTowLGJyb3dzZXI6 Mzc0NDR9LEg9e3VpbnQ4OjUxMjEscmdiYTQ6MzI4MTkscmdiNTY1OjMzNjM1 LCJyZ2I1IGExIjozMjgyMH0sWT17YWxwaGE6NjQwNixsdW1pbmFuY2U6NjQw OSwibHVtaW5hbmNlIGFscGhhIjo2NDEwLHJnYjo2NDA3LHJnYmE6NjQwOCxy Z2JhNDozMjg1NCwicmdiNSBhMSI6MzI4NTUscmdiNTY1OjM2MTk0fSxLPXt9 O2UuZXh0X3NyZ2ImJihZLnNyZ2I9MzU5MDQsWS5zcmdiYT0zNTkwNiksZS5v ZXNfdGV4dHVyZV9mbG9hdCYmKEguZmxvYXQzMj1ILmZsb2F0PTUxMjYpLGUu b2VzX3RleHR1cmVfaGFsZl9mbG9hdCYmKEguZmxvYXQxNj1IWyJoYWxmIGZs b2F0Il09MzYxOTMpLGUud2ViZ2xfZGVwdGhfdGV4dHVyZSYmKGooWSx7ZGVw dGg6NjQwMiwiZGVwdGggc3RlbmNpbCI6MzQwNDF9KSxqKEgse3VpbnQxNjo1 MTIzLHVpbnQzMjo1MTI1LCJkZXB0aCBzdGVuY2lsIjozNDA0Mn0pKSxlLndl YmdsX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJiZqKEsseyJyZ2IgczN0YyBk eHQxIjozMzc3NiwicmdiYSBzM3RjIGR4dDEiOjMzNzc3LCJyZ2JhIHMzdGMg ZHh0MyI6MzM3NzgsInJnYmEgczN0YyBkeHQ1IjozMzc3OX0pLGUud2ViZ2xf Y29tcHJlc3NlZF90ZXh0dXJlX2F0YyYmaihLLHsicmdiIGF0YyI6MzU5ODYs InJnYmEgYXRjIGV4cGxpY2l0IGFscGhhIjozNTk4NywicmdiYSBhdGMgaW50 ZXJwb2xhdGVkIGFscGhhIjozNDc5OH0pLGUud2ViZ2xfY29tcHJlc3NlZF90 ZXh0dXJlX3B2cnRjJiZqKEsseyJyZ2IgcHZydGMgNGJwcHYxIjozNTg0MCwi cmdiIHB2cnRjIDJicHB2MSI6MzU4NDEsInJnYmEgcHZydGMgNGJwcHYxIjoz NTg0MiwicmdiYSBwdnJ0YyAyYnBwdjEiOjM1ODQzfSksZS53ZWJnbF9jb21w cmVzc2VkX3RleHR1cmVfZXRjMSYmKEtbInJnYiBldGMxIl09MzYxOTYpO3Zh ciBRPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuZ2V0UGFyYW1ldGVy KDM0NDY3KSk7T2JqZWN0LmtleXMoSykuZm9yRWFjaChmdW5jdGlvbih0KXt2 YXIgZT1LW3RdOzA8PVEuaW5kZXhPZihlKSYmKFlbdF09ZSl9KTt2YXIgJD1P YmplY3Qua2V5cyhZKTtyLnRleHR1cmVGb3JtYXRzPSQ7dmFyIHR0PVtdO09i amVjdC5rZXlzKFkpLmZvckVhY2goZnVuY3Rpb24odCl7dHRbWVt0XV09dH0p O3ZhciBldD1bXTtPYmplY3Qua2V5cyhIKS5mb3JFYWNoKGZ1bmN0aW9uKHQp e2V0W0hbdF1dPXR9KTt2YXIgcnQ9W107T2JqZWN0LmtleXMoVikuZm9yRWFj aChmdW5jdGlvbih0KXtydFtWW3RdXT10fSk7dmFyIG50PVtdO09iamVjdC5r ZXlzKFUpLmZvckVhY2goZnVuY3Rpb24odCl7bnRbVVt0XV09dH0pO3ZhciBh dD1bXTtPYmplY3Qua2V5cyhOKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2F0W05b dF1dPXR9KTt2YXIgcHQ9JC5yZWR1Y2UoZnVuY3Rpb24odCxlKXt2YXIgcj1Z W2VdO3JldHVybiA2NDA5PT09cnx8NjQwNj09PXJ8fDY0MDk9PT1yfHw2NDEw PT09cnx8NjQwMj09PXJ8fDM0MDQxPT09cj90W3JdPXI6MzI4NTU9PT1yfHww PD1lLmluZGV4T2YoInJnYmEiKT90W3JdPTY0MDg6dFtyXT02NDA3LHR9LHt9 KSxkdD1bXSxndD1bXSx2dD0wLG10PXt9LHl0PXIubWF4VGV4dHVyZVVuaXRz LHh0PUFycmF5KHl0KS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pO3Jl dHVybiBqKEkucHJvdG90eXBlLHtiaW5kOmZ1bmN0aW9uKCl7dGhpcy5iaW5k Q291bnQrPTE7dmFyIGU9dGhpcy51bml0O2lmKDA+ZSl7Zm9yKHZhciByPTA7 cjx5dDsrK3Ipe3ZhciBuPXh0W3JdO2lmKG4pe2lmKDA8bi5iaW5kQ291bnQp Y29udGludWU7bi51bml0PS0xfXh0W3JdPXRoaXMsZT1yO2JyZWFrfW8ucHJv ZmlsZSYmaS5tYXhUZXh0dXJlVW5pdHM8ZSsxJiYoaS5tYXhUZXh0dXJlVW5p dHM9ZSsxKSx0aGlzLnVuaXQ9ZSx0LmFjdGl2ZVRleHR1cmUoMzM5ODQrZSks dC5iaW5kVGV4dHVyZSh0aGlzLnRhcmdldCx0aGlzLnRleHR1cmUpfXJldHVy biBlfSx1bmJpbmQ6ZnVuY3Rpb24oKXstLXRoaXMuYmluZENvdW50fSxkZWNS ZWY6ZnVuY3Rpb24oKXswPj0tLXRoaXMucmVmQ291bnQmJkYodGhpcyl9fSks by5wcm9maWxlJiYoaS5nZXRUb3RhbFRleHR1cmVTaXplPWZ1bmN0aW9uKCl7 dmFyIHQ9MDtyZXR1cm4gT2JqZWN0LmtleXMobXQpLmZvckVhY2goZnVuY3Rp b24oZSl7dCs9bXRbZV0uc3RhdHMuc2l6ZX0pLHR9KSx7Y3JlYXRlMkQ6ZnVu Y3Rpb24oZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9YS50ZXhJbmZvO1Au Y2FsbChyKTt2YXIgaT1MKCk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P0Eo aSwwfHQsIm51bWJlciI9PXR5cGVvZiBlPzB8ZTowfHQpOnQ/KE8ocix0KSxT KGksdCkpOkEoaSwxLDEpLHIuZ2VuTWlwbWFwcyYmKGkubWlwbWFzaz0oaS53 aWR0aDw8MSktMSksYS5taXBtYXNrPWkubWlwbWFzayxjKGEsaSksYS5pbnRl cm5hbGZvcm1hdD1pLmludGVybmFsZm9ybWF0LG4ud2lkdGg9aS53aWR0aCxu LmhlaWdodD1pLmhlaWdodCxEKGEpLEUoaSwzNTUzKSx6KHIsMzU1MyksUigp LEMoaSksby5wcm9maWxlJiYoYS5zdGF0cy5zaXplPWsoYS5pbnRlcm5hbGZv cm1hdCxhLnR5cGUsaS53aWR0aCxpLmhlaWdodCxyLmdlbk1pcG1hcHMsITEp KSxuLmZvcm1hdD10dFthLmludGVybmFsZm9ybWF0XSxuLnR5cGU9ZXRbYS50 eXBlXSxuLm1hZz1ydFtyLm1hZ0ZpbHRlcl0sbi5taW49bnRbci5taW5GaWx0 ZXJdLG4ud3JhcFM9YXRbci53cmFwU10sbi53cmFwVD1hdFtyLndyYXBUXSxu fXZhciBhPW5ldyBJKDM1NTMpO3JldHVybiBtdFthLmlkXT1hLGkudGV4dHVy ZUNvdW50KyssbihlLHIpLG4uc3ViaW1hZ2U9ZnVuY3Rpb24odCxlLHIsaSl7 ZXw9MCxyfD0wLGl8PTA7dmFyIG89bSgpO3JldHVybiBjKG8sYSksby53aWR0 aD0wLG8uaGVpZ2h0PTAscChvLHQpLG8ud2lkdGg9by53aWR0aHx8KGEud2lk dGg+PmkpLWUsby5oZWlnaHQ9by5oZWlnaHR8fChhLmhlaWdodD4+aSktcixE KGEpLGQobywzNTUzLGUscixpKSxSKCksVChvKSxufSxuLnJlc2l6ZT1mdW5j dGlvbihlLHIpe3ZhciBpPTB8ZSxzPTB8cnx8aTtpZihpPT09YS53aWR0aCYm cz09PWEuaGVpZ2h0KXJldHVybiBuO24ud2lkdGg9YS53aWR0aD1pLG4uaGVp Z2h0PWEuaGVpZ2h0PXMsRChhKTtmb3IodmFyIGwsYz1hLmNoYW5uZWxzLHU9 YS50eXBlLGg9MDthLm1pcG1hc2s+Pmg7KytoKXt2YXIgZj1pPj5oLHA9cz4+ aDtpZighZnx8IXApYnJlYWs7bD1HLnplcm8uYWxsb2NUeXBlKHUsZipwKmMp LHQudGV4SW1hZ2UyRCgzNTUzLGgsYS5mb3JtYXQsZixwLDAsYS5mb3JtYXQs YS50eXBlLGwpLGwmJkcuemVyby5mcmVlVHlwZShsKX1yZXR1cm4gUigpLG8u cHJvZmlsZSYmKGEuc3RhdHMuc2l6ZT1rKGEuaW50ZXJuYWxmb3JtYXQsYS50 eXBlLGkscywhMSwhMSkpLG59LG4uX3JlZ2xUeXBlPSJ0ZXh0dXJlMmQiLG4u X3RleHR1cmU9YSxvLnByb2ZpbGUmJihuLnN0YXRzPWEuc3RhdHMpLG4uZGVz dHJveT1mdW5jdGlvbigpe2EuZGVjUmVmKCl9LG59LGNyZWF0ZUN1YmU6ZnVu Y3Rpb24oZSxyLG4sYSxzLGwpe2Z1bmN0aW9uIGgodCxlLHIsbixhLGkpe3Zh ciBzLGw9Zi50ZXhJbmZvO2ZvcihQLmNhbGwobCkscz0wOzY+czsrK3MpZ1tz XT1MKCk7aWYoIm51bWJlciIhPXR5cGVvZiB0JiZ0KXtpZigib2JqZWN0Ij09 dHlwZW9mIHQpaWYoZSlTKGdbMF0sdCksUyhnWzFdLGUpLFMoZ1syXSxyKSxT KGdbM10sbiksUyhnWzRdLGEpLFMoZ1s1XSxpKTtlbHNlIGlmKE8obCx0KSx1 KGYsdCksImZhY2VzImluIHQpZm9yKHQ9dC5mYWNlcyxzPTA7Nj5zOysrcylj KGdbc10sZiksUyhnW3NdLHRbc10pO2Vsc2UgZm9yKHM9MDs2PnM7KytzKVMo Z1tzXSx0KX1lbHNlIGZvcih0PTB8dHx8MSxzPTA7Nj5zOysrcylBKGdbc10s dCx0KTtmb3IoYyhmLGdbMF0pLGYubWlwbWFzaz1sLmdlbk1pcG1hcHM/KGdb MF0ud2lkdGg8PDEpLTE6Z1swXS5taXBtYXNrLGYuaW50ZXJuYWxmb3JtYXQ9 Z1swXS5pbnRlcm5hbGZvcm1hdCxoLndpZHRoPWdbMF0ud2lkdGgsaC5oZWln aHQ9Z1swXS5oZWlnaHQsRChmKSxzPTA7Nj5zOysrcylFKGdbc10sMzQwNjkr cyk7Zm9yKHoobCwzNDA2NyksUigpLG8ucHJvZmlsZSYmKGYuc3RhdHMuc2l6 ZT1rKGYuaW50ZXJuYWxmb3JtYXQsZi50eXBlLGgud2lkdGgsaC5oZWlnaHQs bC5nZW5NaXBtYXBzLCEwKSksaC5mb3JtYXQ9dHRbZi5pbnRlcm5hbGZvcm1h dF0saC50eXBlPWV0W2YudHlwZV0saC5tYWc9cnRbbC5tYWdGaWx0ZXJdLGgu bWluPW50W2wubWluRmlsdGVyXSxoLndyYXBTPWF0W2wud3JhcFNdLGgud3Jh cFQ9YXRbbC53cmFwVF0scz0wOzY+czsrK3MpQyhnW3NdKTtyZXR1cm4gaH12 YXIgZj1uZXcgSSgzNDA2Nyk7bXRbZi5pZF09ZixpLmN1YmVDb3VudCsrO3Zh ciBnPUFycmF5KDYpO3JldHVybiBoKGUscixuLGEscyxsKSxoLnN1YmltYWdl PWZ1bmN0aW9uKHQsZSxyLG4sYSl7cnw9MCxufD0wLGF8PTA7dmFyIGk9bSgp O3JldHVybiBjKGksZiksaS53aWR0aD0wLGkuaGVpZ2h0PTAscChpLGUpLGku d2lkdGg9aS53aWR0aHx8KGYud2lkdGg+PmEpLXIsaS5oZWlnaHQ9aS5oZWln aHR8fChmLmhlaWdodD4+YSktbixEKGYpLGQoaSwzNDA2OSt0LHIsbixhKSxS KCksVChpKSxofSxoLnJlc2l6ZT1mdW5jdGlvbihlKXtpZigoZXw9MCkhPT1m LndpZHRoKXtoLndpZHRoPWYud2lkdGg9ZSxoLmhlaWdodD1mLmhlaWdodD1l LEQoZik7Zm9yKHZhciByPTA7Nj5yOysrcilmb3IodmFyIG49MDtmLm1pcG1h c2s+Pm47KytuKXQudGV4SW1hZ2UyRCgzNDA2OStyLG4sZi5mb3JtYXQsZT4+ bixlPj5uLDAsZi5mb3JtYXQsZi50eXBlLG51bGwpO3JldHVybiBSKCksby5w cm9maWxlJiYoZi5zdGF0cy5zaXplPWsoZi5pbnRlcm5hbGZvcm1hdCxmLnR5 cGUsaC53aWR0aCxoLmhlaWdodCwhMSwhMCkpLGh9fSxoLl9yZWdsVHlwZT0i dGV4dHVyZUN1YmUiLGguX3RleHR1cmU9ZixvLnByb2ZpbGUmJihoLnN0YXRz PWYuc3RhdHMpLGguZGVzdHJveT1mdW5jdGlvbigpe2YuZGVjUmVmKCl9LGh9 LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx5dDsrK2UpdC5hY3Rp dmVUZXh0dXJlKDMzOTg0K2UpLHQuYmluZFRleHR1cmUoMzU1MyxudWxsKSx4 dFtlXT1udWxsO1gobXQpLmZvckVhY2goRiksaS5jdWJlQ291bnQ9MCxpLnRl eHR1cmVDb3VudD0wfSxnZXRUZXh0dXJlOmZ1bmN0aW9uKHQpe3JldHVybiBu dWxsfSxyZXN0b3JlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx5dDsrK2Up e3ZhciByPXh0W2VdO3ImJihyLmJpbmRDb3VudD0wLHIudW5pdD0tMSx4dFtl XT1udWxsKX1YKG10KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UudGV4dHVyZT10 LmNyZWF0ZVRleHR1cmUoKSx0LmJpbmRUZXh0dXJlKGUudGFyZ2V0LGUudGV4 dHVyZSk7Zm9yKHZhciByPTA7MzI+cjsrK3IpaWYoMCE9KGUubWlwbWFzayYx PDxyKSlpZigzNTUzPT09ZS50YXJnZXQpdC50ZXhJbWFnZTJEKDM1NTMscixl LmludGVybmFsZm9ybWF0LGUud2lkdGg+PnIsZS5oZWlnaHQ+PnIsMCxlLmlu dGVybmFsZm9ybWF0LGUudHlwZSxudWxsKTtlbHNlIGZvcih2YXIgbj0wOzY+ bjsrK24pdC50ZXhJbWFnZTJEKDM0MDY5K24scixlLmludGVybmFsZm9ybWF0 LGUud2lkdGg+PnIsZS5oZWlnaHQ+PnIsMCxlLmludGVybmFsZm9ybWF0LGUu dHlwZSxudWxsKTt6KGUudGV4SW5mbyxlLnRhcmdldCl9KX19fWZ1bmN0aW9u IE0odCxlLHIsbixhLGkpe2Z1bmN0aW9uIG8odCxlLHIpe3RoaXMudGFyZ2V0 PXQsdGhpcy50ZXh0dXJlPWUsdGhpcy5yZW5kZXJidWZmZXI9cjt2YXIgbj10 PTA7ZT8odD1lLndpZHRoLG49ZS5oZWlnaHQpOnImJih0PXIud2lkdGgsbj1y LmhlaWdodCksdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PW59ZnVuY3Rpb24g cyh0KXt0JiYodC50ZXh0dXJlJiZ0LnRleHR1cmUuX3RleHR1cmUuZGVjUmVm KCksdC5yZW5kZXJidWZmZXImJnQucmVuZGVyYnVmZmVyLl9yZW5kZXJidWZm ZXIuZGVjUmVmKCkpfWZ1bmN0aW9uIGwodCxlLHIpe3QmJih0LnRleHR1cmU/ dC50ZXh0dXJlLl90ZXh0dXJlLnJlZkNvdW50Kz0xOnQucmVuZGVyYnVmZmVy Ll9yZW5kZXJidWZmZXIucmVmQ291bnQrPTEpfWZ1bmN0aW9uIGMoZSxyKXty JiYoci50ZXh0dXJlP3QuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsZSxy LnRhcmdldCxyLnRleHR1cmUuX3RleHR1cmUudGV4dHVyZSwwKTp0LmZyYW1l YnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLGUsMzYxNjEsci5yZW5kZXJidWZm ZXIuX3JlbmRlcmJ1ZmZlci5yZW5kZXJidWZmZXIpKX1mdW5jdGlvbiB1KHQp e3ZhciBlPTM1NTMscj1udWxsLG49bnVsbCxhPXQ7cmV0dXJuIm9iamVjdCI9 PXR5cGVvZiB0JiYoYT10LmRhdGEsInRhcmdldCJpbiB0JiYoZT0wfHQudGFy Z2V0KSksInRleHR1cmUyZCI9PT0odD1hLl9yZWdsVHlwZSk/cj1hOiJ0ZXh0 dXJlQ3ViZSI9PT10P3I9YToicmVuZGVyYnVmZmVyIj09PXQmJihuPWEsZT0z NjE2MSksbmV3IG8oZSxyLG4pfWZ1bmN0aW9uIGgodCxlLHIsaSxzKXtyZXR1 cm4gcj8oKHQ9bi5jcmVhdGUyRCh7d2lkdGg6dCxoZWlnaHQ6ZSxmb3JtYXQ6 aSx0eXBlOnN9KSkuX3RleHR1cmUucmVmQ291bnQ9MCxuZXcgbygzNTUzLHQs bnVsbCkpOigodD1hLmNyZWF0ZSh7d2lkdGg6dCxoZWlnaHQ6ZSxmb3JtYXQ6 aX0pKS5fcmVuZGVyYnVmZmVyLnJlZkNvdW50PTAsbmV3IG8oMzYxNjEsbnVs bCx0KSl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gdCYmKHQudGV4dHVyZXx8dC5y ZW5kZXJidWZmZXIpfWZ1bmN0aW9uIHAodCxlLHIpe3QmJih0LnRleHR1cmU/ dC50ZXh0dXJlLnJlc2l6ZShlLHIpOnQucmVuZGVyYnVmZmVyJiZ0LnJlbmRl cmJ1ZmZlci5yZXNpemUoZSxyKSx0LndpZHRoPWUsdC5oZWlnaHQ9cil9ZnVu Y3Rpb24gZCgpe3RoaXMuaWQ9aysrLFRbdGhpcy5pZF09dGhpcyx0aGlzLmZy YW1lYnVmZmVyPXQuY3JlYXRlRnJhbWVidWZmZXIoKSx0aGlzLmhlaWdodD10 aGlzLndpZHRoPTAsdGhpcy5jb2xvckF0dGFjaG1lbnRzPVtdLHRoaXMuZGVw dGhTdGVuY2lsQXR0YWNobWVudD10aGlzLnN0ZW5jaWxBdHRhY2htZW50PXRo aXMuZGVwdGhBdHRhY2htZW50PW51bGx9ZnVuY3Rpb24gZyh0KXt0LmNvbG9y QXR0YWNobWVudHMuZm9yRWFjaChzKSxzKHQuZGVwdGhBdHRhY2htZW50KSxz KHQuc3RlbmNpbEF0dGFjaG1lbnQpLHModC5kZXB0aFN0ZW5jaWxBdHRhY2ht ZW50KX1mdW5jdGlvbiB2KGUpe3QuZGVsZXRlRnJhbWVidWZmZXIoZS5mcmFt ZWJ1ZmZlciksZS5mcmFtZWJ1ZmZlcj1udWxsLGkuZnJhbWVidWZmZXJDb3Vu dC0tLGRlbGV0ZSBUW2UuaWRdfWZ1bmN0aW9uIG0oZSl7dmFyIG47dC5iaW5k RnJhbWVidWZmZXIoMzYxNjAsZS5mcmFtZWJ1ZmZlcik7dmFyIGE9ZS5jb2xv ckF0dGFjaG1lbnRzO2ZvcihuPTA7bjxhLmxlbmd0aDsrK24pYygzNjA2NCtu LGFbbl0pO2ZvcihuPWEubGVuZ3RoO248ci5tYXhDb2xvckF0dGFjaG1lbnRz Oysrbil0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0K24sMzU1 MyxudWxsLDApO3QuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzMzMDYs MzU1MyxudWxsLDApLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYw OTYsMzU1MyxudWxsLDApLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAs MzYxMjgsMzU1MyxudWxsLDApLGMoMzYwOTYsZS5kZXB0aEF0dGFjaG1lbnQp LGMoMzYxMjgsZS5zdGVuY2lsQXR0YWNobWVudCksYygzMzMwNixlLmRlcHRo U3RlbmNpbEF0dGFjaG1lbnQpLHQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygz NjE2MCksdC5pc0NvbnRleHRMb3N0KCksdC5iaW5kRnJhbWVidWZmZXIoMzYx NjAseC5uZXh0P3gubmV4dC5mcmFtZWJ1ZmZlcjpudWxsKSx4LmN1cj14Lm5l eHQsdC5nZXRFcnJvcigpfWZ1bmN0aW9uIHkodCxlKXtmdW5jdGlvbiByKHQs ZSl7dmFyIGEsaT0wLG89MCxzPSEwLGM9ITA7YT1udWxsO3ZhciBwPSEwLGQ9 InJnYmEiLHY9InVpbnQ4Iix5PTEseD1udWxsLHc9bnVsbCxrPW51bGwsVD0h MTsibnVtYmVyIj09dHlwZW9mIHQ/KGk9MHx0LG89MHxlfHxpKTp0Pygic2hh cGUiaW4gdD8oaT0obz10LnNoYXBlKVswXSxvPW9bMV0pOigicmFkaXVzImlu IHQmJihpPW89dC5yYWRpdXMpLCJ3aWR0aCJpbiB0JiYoaT10LndpZHRoKSwi aGVpZ2h0ImluIHQmJihvPXQuaGVpZ2h0KSksKCJjb2xvciJpbiB0fHwiY29s b3JzImluIHQpJiYoYT10LmNvbG9yfHx0LmNvbG9ycyxBcnJheS5pc0FycmF5 KGEpKSxhfHwoImNvbG9yQ291bnQiaW4gdCYmKHk9MHx0LmNvbG9yQ291bnQp LCJjb2xvclRleHR1cmUiaW4gdCYmKHA9ISF0LmNvbG9yVGV4dHVyZSxkPSJy Z2JhNCIpLCJjb2xvclR5cGUiaW4gdCYmKHY9dC5jb2xvclR5cGUsIXApJiYo ImhhbGYgZmxvYXQiPT09dnx8ImZsb2F0MTYiPT09dj9kPSJyZ2JhMTZmIjoi ZmxvYXQiIT09diYmImZsb2F0MzIiIT09dnx8KGQ9InJnYmEzMmYiKSksImNv bG9yRm9ybWF0ImluIHQmJihkPXQuY29sb3JGb3JtYXQsMDw9Yi5pbmRleE9m KGQpP3A9ITA6MDw9Xy5pbmRleE9mKGQpJiYocD0hMSkpKSwoImRlcHRoVGV4 dHVyZSJpbiB0fHwiZGVwdGhTdGVuY2lsVGV4dHVyZSJpbiB0KSYmKFQ9ISgh dC5kZXB0aFRleHR1cmUmJiF0LmRlcHRoU3RlbmNpbFRleHR1cmUpKSwiZGVw dGgiaW4gdCYmKCJib29sZWFuIj09dHlwZW9mIHQuZGVwdGg/cz10LmRlcHRo Oih4PXQuZGVwdGgsYz0hMSkpLCJzdGVuY2lsImluIHQmJigiYm9vbGVhbiI9 PXR5cGVvZiB0LnN0ZW5jaWw/Yz10LnN0ZW5jaWw6KHc9dC5zdGVuY2lsLHM9 ITEpKSwiZGVwdGhTdGVuY2lsImluIHQmJigiYm9vbGVhbiI9PXR5cGVvZiB0 LmRlcHRoU3RlbmNpbD9zPWM9dC5kZXB0aFN0ZW5jaWw6KGs9dC5kZXB0aFN0 ZW5jaWwsYz1zPSExKSkpOmk9bz0xO3ZhciBNPW51bGwsQT1udWxsLFM9bnVs bCxFPW51bGw7aWYoQXJyYXkuaXNBcnJheShhKSlNPWEubWFwKHUpO2Vsc2Ug aWYoYSlNPVt1KGEpXTtlbHNlIGZvcihNPUFycmF5KHkpLGE9MDthPHk7Kyth KU1bYV09aChpLG8scCxkLHYpO2ZvcihpPWl8fE1bMF0ud2lkdGgsbz1vfHxN WzBdLmhlaWdodCx4P0E9dSh4KTpzJiYhYyYmKEE9aChpLG8sVCwiZGVwdGgi LCJ1aW50MzIiKSksdz9TPXUodyk6YyYmIXMmJihTPWgoaSxvLCExLCJzdGVu Y2lsIiwidWludDgiKSksaz9FPXUoayk6IXgmJiF3JiZjJiZzJiYoRT1oKGks byxULCJkZXB0aCBzdGVuY2lsIiwiZGVwdGggc3RlbmNpbCIpKSxzPW51bGws YT0wO2E8TS5sZW5ndGg7KythKWwoTVthXSksTVthXSYmTVthXS50ZXh0dXJl JiYoYz15dFtNW2FdLnRleHR1cmUuX3RleHR1cmUuZm9ybWF0XSp4dFtNW2Fd LnRleHR1cmUuX3RleHR1cmUudHlwZV0sbnVsbD09PXMmJihzPWMpKTtyZXR1 cm4gbChBKSxsKFMpLGwoRSksZyhuKSxuLndpZHRoPWksbi5oZWlnaHQ9byxu LmNvbG9yQXR0YWNobWVudHM9TSxuLmRlcHRoQXR0YWNobWVudD1BLG4uc3Rl bmNpbEF0dGFjaG1lbnQ9UyxuLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ9RSxy LmNvbG9yPU0ubWFwKGYpLHIuZGVwdGg9ZihBKSxyLnN0ZW5jaWw9ZihTKSxy LmRlcHRoU3RlbmNpbD1mKEUpLHIud2lkdGg9bi53aWR0aCxyLmhlaWdodD1u LmhlaWdodCxtKG4pLHJ9dmFyIG49bmV3IGQ7cmV0dXJuIGkuZnJhbWVidWZm ZXJDb3VudCsrLHIodCxlKSxqKHIse3Jlc2l6ZTpmdW5jdGlvbih0LGUpe3Zh ciBhPU1hdGgubWF4KDB8dCwxKSxpPU1hdGgubWF4KDB8ZXx8YSwxKTtpZihh PT09bi53aWR0aCYmaT09PW4uaGVpZ2h0KXJldHVybiByO2Zvcih2YXIgbz1u LmNvbG9yQXR0YWNobWVudHMscz0wO3M8by5sZW5ndGg7KytzKXAob1tzXSxh LGkpO3JldHVybiBwKG4uZGVwdGhBdHRhY2htZW50LGEsaSkscChuLnN0ZW5j aWxBdHRhY2htZW50LGEsaSkscChuLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQs YSxpKSxuLndpZHRoPXIud2lkdGg9YSxuLmhlaWdodD1yLmhlaWdodD1pLG0o bikscn0sX3JlZ2xUeXBlOiJmcmFtZWJ1ZmZlciIsX2ZyYW1lYnVmZmVyOm4s ZGVzdHJveTpmdW5jdGlvbigpe3YobiksZyhuKX0sdXNlOmZ1bmN0aW9uKHQp e3guc2V0RkJPKHtmcmFtZWJ1ZmZlcjpyfSx0KX19KX12YXIgeD17Y3VyOm51 bGwsbmV4dDpudWxsLGRpcnR5OiExLHNldEZCTzpudWxsfSxiPVsicmdiYSJd LF89WyJyZ2JhNCIsInJnYjU2NSIsInJnYjUgYTEiXTtlLmV4dF9zcmdiJiZf LnB1c2goInNyZ2JhIiksZS5leHRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQm Jl8ucHVzaCgicmdiYTE2ZiIsInJnYjE2ZiIpLGUud2ViZ2xfY29sb3JfYnVm ZmVyX2Zsb2F0JiZfLnB1c2goInJnYmEzMmYiKTt2YXIgdz1bInVpbnQ4Il07 ZS5vZXNfdGV4dHVyZV9oYWxmX2Zsb2F0JiZ3LnB1c2goImhhbGYgZmxvYXQi LCJmbG9hdDE2IiksZS5vZXNfdGV4dHVyZV9mbG9hdCYmdy5wdXNoKCJmbG9h dCIsImZsb2F0MzIiKTt2YXIgaz0wLFQ9e307cmV0dXJuIGooeCx7Z2V0RnJh bWVidWZmZXI6ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9m IHQmJiJmcmFtZWJ1ZmZlciI9PT10Ll9yZWdsVHlwZSYmKHQ9dC5fZnJhbWVi dWZmZXIpaW5zdGFuY2VvZiBkP3Q6bnVsbH0sY3JlYXRlOnksY3JlYXRlQ3Vi ZTpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3ZhciBhLGk9e2NvbG9yOm51 bGx9LG89MCxzPW51bGw7YT0icmdiYSI7dmFyIGw9InVpbnQ4IixjPTE7aWYo Im51bWJlciI9PXR5cGVvZiB0P289MHx0OnQ/KCJzaGFwZSJpbiB0P289dC5z aGFwZVswXTooInJhZGl1cyJpbiB0JiYobz0wfHQucmFkaXVzKSwid2lkdGgi aW4gdD9vPTB8dC53aWR0aDoiaGVpZ2h0ImluIHQmJihvPTB8dC5oZWlnaHQp KSwoImNvbG9yImluIHR8fCJjb2xvcnMiaW4gdCkmJihzPXQuY29sb3J8fHQu Y29sb3JzLEFycmF5LmlzQXJyYXkocykpLHN8fCgiY29sb3JDb3VudCJpbiB0 JiYoYz0wfHQuY29sb3JDb3VudCksImNvbG9yVHlwZSJpbiB0JiYobD10LmNv bG9yVHlwZSksImNvbG9yRm9ybWF0ImluIHQmJihhPXQuY29sb3JGb3JtYXQp KSwiZGVwdGgiaW4gdCYmKGkuZGVwdGg9dC5kZXB0aCksInN0ZW5jaWwiaW4g dCYmKGkuc3RlbmNpbD10LnN0ZW5jaWwpLCJkZXB0aFN0ZW5jaWwiaW4gdCYm KGkuZGVwdGhTdGVuY2lsPXQuZGVwdGhTdGVuY2lsKSk6bz0xLHMpaWYoQXJy YXkuaXNBcnJheShzKSlmb3IodD1bXSxhPTA7YTxzLmxlbmd0aDsrK2EpdFth XT1zW2FdO2Vsc2UgdD1bc107ZWxzZSBmb3IodD1BcnJheShjKSxzPXtyYWRp dXM6byxmb3JtYXQ6YSx0eXBlOmx9LGE9MDthPGM7KythKXRbYV09bi5jcmVh dGVDdWJlKHMpO2ZvcihpLmNvbG9yPUFycmF5KHQubGVuZ3RoKSxhPTA7YTx0 Lmxlbmd0aDsrK2EpYz10W2FdLG89b3x8Yy53aWR0aCxpLmNvbG9yW2FdPXt0 YXJnZXQ6MzQwNjksZGF0YTp0W2FdfTtmb3IoYT0wOzY+YTsrK2Epe2Zvcihj PTA7Yzx0Lmxlbmd0aDsrK2MpaS5jb2xvcltjXS50YXJnZXQ9MzQwNjkrYTsw PGEmJihpLmRlcHRoPXJbMF0uZGVwdGgsaS5zdGVuY2lsPXJbMF0uc3RlbmNp bCxpLmRlcHRoU3RlbmNpbD1yWzBdLmRlcHRoU3RlbmNpbCksclthXT9yW2Fd KGkpOnJbYV09eShpKX1yZXR1cm4gaihlLHt3aWR0aDpvLGhlaWdodDpvLGNv bG9yOnR9KX12YXIgcj1BcnJheSg2KTtyZXR1cm4gZSh0KSxqKGUse2ZhY2Vz OnIscmVzaXplOmZ1bmN0aW9uKHQpe3ZhciBuPTB8dDtpZihuPT09ZS53aWR0 aClyZXR1cm4gZTt2YXIgYT1lLmNvbG9yO2Zvcih0PTA7dDxhLmxlbmd0aDsr K3QpYVt0XS5yZXNpemUobik7Zm9yKHQ9MDs2PnQ7Kyt0KXJbdF0ucmVzaXpl KG4pO3JldHVybiBlLndpZHRoPWUuaGVpZ2h0PW4sZX0sX3JlZ2xUeXBlOiJm cmFtZWJ1ZmZlckN1YmUiLGRlc3Ryb3k6ZnVuY3Rpb24oKXtyLmZvckVhY2go ZnVuY3Rpb24odCl7dC5kZXN0cm95KCl9KX19KX0sY2xlYXI6ZnVuY3Rpb24o KXtYKFQpLmZvckVhY2godil9LHJlc3RvcmU6ZnVuY3Rpb24oKXt4LmN1cj1u dWxsLHgubmV4dD1udWxsLHguZGlydHk9ITAsWChUKS5mb3JFYWNoKGZ1bmN0 aW9uKGUpe2UuZnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLG0o ZSl9KX19KX1mdW5jdGlvbiBBKCl7dGhpcy53PXRoaXMuej10aGlzLnk9dGhp cy54PXRoaXMuc3RhdGU9MCx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuc2l6ZT0w LHRoaXMubm9ybWFsaXplZD0hMSx0aGlzLnR5cGU9NTEyNix0aGlzLmRpdmlz b3I9dGhpcy5zdHJpZGU9dGhpcy5vZmZzZXQ9MH1mdW5jdGlvbiBTKHQsZSxy LG4pe2Z1bmN0aW9uIGEodCxlLHIsbil7dGhpcy5uYW1lPXQsdGhpcy5pZD1l LHRoaXMubG9jYXRpb249cix0aGlzLmluZm89bn1mdW5jdGlvbiBpKHQsZSl7 Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpaWYodFtyXS5pZD09PWUuaWQp cmV0dXJuIHZvaWQodFtyXS5sb2NhdGlvbj1lLmxvY2F0aW9uKTt0LnB1c2go ZSl9ZnVuY3Rpb24gbyhyLG4sYSl7aWYoIShvPShhPTM1NjMyPT09cj9jOnUp W25dKSl7dmFyIGk9ZS5zdHIobiksbz10LmNyZWF0ZVNoYWRlcihyKTt0LnNo YWRlclNvdXJjZShvLGkpLHQuY29tcGlsZVNoYWRlcihvKSxhW25dPW99cmV0 dXJuIG99ZnVuY3Rpb24gcyh0LGUpe3RoaXMuaWQ9cCsrLHRoaXMuZnJhZ0lk PXQsdGhpcy52ZXJ0SWQ9ZSx0aGlzLnByb2dyYW09bnVsbCx0aGlzLnVuaWZv cm1zPVtdLHRoaXMuYXR0cmlidXRlcz1bXSxuLnByb2ZpbGUmJih0aGlzLnN0 YXRzPXt1bmlmb3Jtc0NvdW50OjAsYXR0cmlidXRlc0NvdW50OjB9KX1mdW5j dGlvbiBsKHIscyl7dmFyIGwsYztsPW8oMzU2MzIsci5mcmFnSWQpLGM9bygz NTYzMyxyLnZlcnRJZCk7dmFyIHU9ci5wcm9ncmFtPXQuY3JlYXRlUHJvZ3Jh bSgpO3QuYXR0YWNoU2hhZGVyKHUsbCksdC5hdHRhY2hTaGFkZXIodSxjKSx0 LmxpbmtQcm9ncmFtKHUpO3ZhciBoPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcih1 LDM1NzE4KTtuLnByb2ZpbGUmJihyLnN0YXRzLnVuaWZvcm1zQ291bnQ9aCk7 dmFyIGY9ci51bmlmb3Jtcztmb3IobD0wO2w8aDsrK2wpaWYoYz10LmdldEFj dGl2ZVVuaWZvcm0odSxsKSlpZigxPGMuc2l6ZSlmb3IodmFyIHA9MDtwPGMu c2l6ZTsrK3Ape3ZhciBkPWMubmFtZS5yZXBsYWNlKCJbMF0iLCJbIitwKyJd Iik7aShmLG5ldyBhKGQsZS5pZChkKSx0LmdldFVuaWZvcm1Mb2NhdGlvbih1 LGQpLGMpKX1lbHNlIGkoZixuZXcgYShjLm5hbWUsZS5pZChjLm5hbWUpLHQu Z2V0VW5pZm9ybUxvY2F0aW9uKHUsYy5uYW1lKSxjKSk7Zm9yKGg9dC5nZXRQ cm9ncmFtUGFyYW1ldGVyKHUsMzU3MjEpLG4ucHJvZmlsZSYmKHIuc3RhdHMu YXR0cmlidXRlc0NvdW50PWgpLGY9ci5hdHRyaWJ1dGVzLGw9MDtsPGg7Kyts KShjPXQuZ2V0QWN0aXZlQXR0cmliKHUsbCkpJiZpKGYsbmV3IGEoYy5uYW1l LGUuaWQoYy5uYW1lKSx0LmdldEF0dHJpYkxvY2F0aW9uKHUsYy5uYW1lKSxj KSl9dmFyIGM9e30sdT17fSxoPXt9LGY9W10scD0wO3JldHVybiBuLnByb2Zp bGUmJihyLmdldE1heFVuaWZvcm1zQ291bnQ9ZnVuY3Rpb24oKXt2YXIgdD0w O3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zdGF0cy51bmlmb3Jt c0NvdW50PnQmJih0PWUuc3RhdHMudW5pZm9ybXNDb3VudCl9KSx0fSxyLmdl dE1heEF0dHJpYnV0ZXNDb3VudD1mdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJu IGYuZm9yRWFjaChmdW5jdGlvbihlKXtlLnN0YXRzLmF0dHJpYnV0ZXNDb3Vu dD50JiYodD1lLnN0YXRzLmF0dHJpYnV0ZXNDb3VudCl9KSx0fSkse2NsZWFy OmZ1bmN0aW9uKCl7dmFyIGU9dC5kZWxldGVTaGFkZXIuYmluZCh0KTtYKGMp LmZvckVhY2goZSksYz17fSxYKHUpLmZvckVhY2goZSksdT17fSxmLmZvckVh Y2goZnVuY3Rpb24oZSl7dC5kZWxldGVQcm9ncmFtKGUucHJvZ3JhbSl9KSxm Lmxlbmd0aD0wLGg9e30sci5zaGFkZXJDb3VudD0wfSxwcm9ncmFtOmZ1bmN0 aW9uKHQsZSxuKXt2YXIgYT1oW2VdO2F8fChhPWhbZV09e30pO3ZhciBpPWFb dF07cmV0dXJuIGl8fChpPW5ldyBzKGUsdCksci5zaGFkZXJDb3VudCsrLGwo aSksYVt0XT1pLGYucHVzaChpKSksaX0scmVzdG9yZTpmdW5jdGlvbigpe2M9 e30sdT17fTtmb3IodmFyIHQ9MDt0PGYubGVuZ3RoOysrdClsKGZbdF0pfSxz aGFkZXI6byxmcmFnOi0xLHZlcnQ6LTF9fWZ1bmN0aW9uIEUodCxlLHIsbixh LGksbyl7ZnVuY3Rpb24gcyhhKXt2YXIgaTtpPW51bGw9PT1lLm5leHQ/NTEy MTplLm5leHQuY29sb3JBdHRhY2htZW50c1swXS50ZXh0dXJlLl90ZXh0dXJl LnR5cGU7dmFyIG89MCxzPTAsbD1uLmZyYW1lYnVmZmVyV2lkdGgsYz1uLmZy YW1lYnVmZmVySGVpZ2h0LHU9bnVsbDtyZXR1cm4gVyhhKT91PWE6YSYmKG89 MHxhLngscz0wfGEueSxsPTB8KGEud2lkdGh8fG4uZnJhbWVidWZmZXJXaWR0 aC1vKSxjPTB8KGEuaGVpZ2h0fHxuLmZyYW1lYnVmZmVySGVpZ2h0LXMpLHU9 YS5kYXRhfHxudWxsKSxyKCksYT1sKmMqNCx1fHwoNTEyMT09PWk/dT1uZXcg VWludDhBcnJheShhKTo1MTI2PT09aSYmKHU9dXx8bmV3IEZsb2F0MzJBcnJh eShhKSkpLHQucGl4ZWxTdG9yZWkoMzMzMyw0KSx0LnJlYWRQaXhlbHMobyxz LGwsYyw2NDA4LGksdSksdX1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQm JiJmcmFtZWJ1ZmZlciJpbiB0P2Z1bmN0aW9uKHQpe3ZhciByO3JldHVybiBl LnNldEZCTyh7ZnJhbWVidWZmZXI6dC5mcmFtZWJ1ZmZlcn0sZnVuY3Rpb24o KXtyPXModCl9KSxyfSh0KTpzKHQpfX1mdW5jdGlvbiBMKHQpe3JldHVybiBB cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KX1mdW5jdGlvbiBDKHQpe3Jl dHVybiBMKHQpLmpvaW4oIiIpfWZ1bmN0aW9uIFAoKXtmdW5jdGlvbiB0KCl7 dmFyIHQ9W10sZT1bXTtyZXR1cm4gaihmdW5jdGlvbigpe3QucHVzaC5hcHBs eSh0LEwoYXJndW1lbnRzKSl9LHtkZWY6ZnVuY3Rpb24oKXt2YXIgbj0idiIr cisrO3JldHVybiBlLnB1c2gobiksMDxhcmd1bWVudHMubGVuZ3RoJiYodC5w dXNoKG4sIj0iKSx0LnB1c2guYXBwbHkodCxMKGFyZ3VtZW50cykpLHQucHVz aCgiOyIpKSxufSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBDKFswPGUu bGVuZ3RoPyJ2YXIgIitlKyI7IjoiIixDKHQpXSl9fSl9ZnVuY3Rpb24gZSgp e2Z1bmN0aW9uIGUodCxlKXtuKHQsZSwiPSIsci5kZWYodCxlKSwiOyIpfXZh ciByPXQoKSxuPXQoKSxhPXIudG9TdHJpbmcsaT1uLnRvU3RyaW5nO3JldHVy biBqKGZ1bmN0aW9uKCl7ci5hcHBseShyLEwoYXJndW1lbnRzKSl9LHtkZWY6 ci5kZWYsZW50cnk6cixleGl0Om4sc2F2ZTplLHNldDpmdW5jdGlvbih0LG4s YSl7ZSh0LG4pLHIodCxuLCI9IixhLCI7Iil9LHRvU3RyaW5nOmZ1bmN0aW9u KCl7cmV0dXJuIGEoKStpKCl9fSl9dmFyIHI9MCxuPVtdLGE9W10saT10KCks bz17fTtyZXR1cm57Z2xvYmFsOmksbGluazpmdW5jdGlvbih0KXtmb3IodmFy IGU9MDtlPGEubGVuZ3RoOysrZSlpZihhW2VdPT09dClyZXR1cm4gbltlXTty ZXR1cm4gZT0iZyIrcisrLG4ucHVzaChlKSxhLnB1c2godCksZX0sYmxvY2s6 dCxwcm9jOmZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3ZhciB0PSJhIith Lmxlbmd0aDtyZXR1cm4gYS5wdXNoKHQpLHR9dmFyIGE9W107cj1yfHwwO2Zv cih2YXIgaT0wO2k8cjsrK2kpbigpO3ZhciBzPShpPWUoKSkudG9TdHJpbmc7 cmV0dXJuIG9bdF09aihpLHthcmc6bix0b1N0cmluZzpmdW5jdGlvbigpe3Jl dHVybiBDKFsiZnVuY3Rpb24oIixhLmpvaW4oKSwiKXsiLHMoKSwifSJdKX19 KX0sc2NvcGU6ZSxjb25kOmZ1bmN0aW9uKCl7dmFyIHQ9Qyhhcmd1bWVudHMp LHI9ZSgpLG49ZSgpLGE9ci50b1N0cmluZyxpPW4udG9TdHJpbmc7cmV0dXJu IGoocix7dGhlbjpmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHIsTChhcmd1 bWVudHMpKSx0aGlzfSxlbHNlOmZ1bmN0aW9uKCl7cmV0dXJuIG4uYXBwbHko bixMKGFyZ3VtZW50cykpLHRoaXN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFy IGU9aSgpO3JldHVybiBlJiYoZT0iZWxzZXsiK2UrIn0iKSxDKFsiaWYoIix0 LCIpeyIsYSgpLCJ9IixlXSl9fSl9LGNvbXBpbGU6ZnVuY3Rpb24oKXt2YXIg dD1bJyJ1c2Ugc3RyaWN0IjsnLGksInJldHVybiB7Il07T2JqZWN0LmtleXMo bykuZm9yRWFjaChmdW5jdGlvbihlKXt0LnB1c2goJyInLGUsJyI6JyxvW2Vd LnRvU3RyaW5nKCksIiwiKX0pLHQucHVzaCgifSIpO3ZhciBlPUModCkucmVw bGFjZSgvOy9nLCI7XG4iKS5yZXBsYWNlKC99L2csIn1cbiIpLnJlcGxhY2Uo L3svZywie1xuIik7cmV0dXJuIEZ1bmN0aW9uLmFwcGx5KG51bGwsbi5jb25j YXQoZSkpLmFwcGx5KG51bGwsYSl9fX1mdW5jdGlvbiBPKHQpe3JldHVybiBB cnJheS5pc0FycmF5KHQpfHxXKHQpfHxsKHQpfWZ1bmN0aW9uIHoodCl7cmV0 dXJuIHQuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiJ2aWV3cG9ydCI9PT10 Py0xOiJ2aWV3cG9ydCI9PT1lPzE6dDxlPy0xOjF9KX1mdW5jdGlvbiBJKHQs ZSxyLG4pe3RoaXMudGhpc0RlcD10LHRoaXMuY29udGV4dERlcD1lLHRoaXMu cHJvcERlcD1yLHRoaXMuYXBwZW5kPW59ZnVuY3Rpb24gRCh0KXtyZXR1cm4g dCYmISh0LnRoaXNEZXB8fHQuY29udGV4dERlcHx8dC5wcm9wRGVwKX1mdW5j dGlvbiBSKHQpe3JldHVybiBuZXcgSSghMSwhMSwhMSx0KX1mdW5jdGlvbiBG KHQsZSl7dmFyIHI9dC50eXBlO3JldHVybiAwPT09cj9uZXcgSSghMCwxPD0o cj10LmRhdGEubGVuZ3RoKSwyPD1yLGUpOjQ9PT1yP25ldyBJKChyPXQuZGF0 YSkudGhpc0RlcCxyLmNvbnRleHREZXAsci5wcm9wRGVwLGUpOm5ldyBJKDM9 PT1yLDI9PT1yLDE9PT1yLGUpfWZ1bmN0aW9uIEIodCxlLHIsbixhLG8scyxs LGMsdSxoLGYscCxkLGcpe2Z1bmN0aW9uIG0odCl7cmV0dXJuIHQucmVwbGFj ZSgiLiIsIl8iKX1mdW5jdGlvbiB5KHQsZSxyKXt2YXIgbj1tKHQpO250LnB1 c2godCksZXRbbl09dHRbbl09ISFyLGF0W25dPWV9ZnVuY3Rpb24geCh0LGUs cil7dmFyIG49bSh0KTtudC5wdXNoKHQpLEFycmF5LmlzQXJyYXkocik/KHR0 W25dPXIuc2xpY2UoKSxldFtuXT1yLnNsaWNlKCkpOnR0W25dPWV0W25dPXIs aXRbbl09ZX1mdW5jdGlvbiBiKCl7dmFyIHQ9UCgpLHI9dC5saW5rLG49dC5n bG9iYWw7dC5pZD1sdCsrLHQuYmF0Y2hJZD0iMCI7dmFyIGE9cihvdCksaT10 LnNoYXJlZD17cHJvcHM6ImEwIn07T2JqZWN0LmtleXMob3QpLmZvckVhY2go ZnVuY3Rpb24odCl7aVt0XT1uLmRlZihhLCIuIix0KX0pO3ZhciBvPXQubmV4 dD17fSxzPXQuY3VycmVudD17fTtPYmplY3Qua2V5cyhpdCkuZm9yRWFjaChm dW5jdGlvbih0KXtBcnJheS5pc0FycmF5KHR0W3RdKSYmKG9bdF09bi5kZWYo aS5uZXh0LCIuIix0KSxzW3RdPW4uZGVmKGkuY3VycmVudCwiLiIsdCkpfSk7 dmFyIGw9dC5jb25zdGFudHM9e307T2JqZWN0LmtleXMoc3QpLmZvckVhY2go ZnVuY3Rpb24odCl7bFt0XT1uLmRlZihKU09OLnN0cmluZ2lmeShzdFt0XSkp fSksdC5pbnZva2U9ZnVuY3Rpb24oZSxuKXtzd2l0Y2gobi50eXBlKXtjYXNl IDA6dmFyIGE9WyJ0aGlzIixpLmNvbnRleHQsaS5wcm9wcyx0LmJhdGNoSWRd O3JldHVybiBlLmRlZihyKG4uZGF0YSksIi5jYWxsKCIsYS5zbGljZSgwLE1h dGgubWF4KG4uZGF0YS5sZW5ndGgrMSw0KSksIikiKTtjYXNlIDE6cmV0dXJu IGUuZGVmKGkucHJvcHMsbi5kYXRhKTtjYXNlIDI6cmV0dXJuIGUuZGVmKGku Y29udGV4dCxuLmRhdGEpO2Nhc2UgMzpyZXR1cm4gZS5kZWYoInRoaXMiLG4u ZGF0YSk7Y2FzZSA0OnJldHVybiBuLmRhdGEuYXBwZW5kKHQsZSksbi5kYXRh LnJlZn19LHQuYXR0cmliQ2FjaGU9e307dmFyIGM9e307cmV0dXJuIHQuc2Nv cGVBdHRyaWI9ZnVuY3Rpb24odCl7aWYoKHQ9ZS5pZCh0KSlpbiBjKXJldHVy biBjW3RdO3ZhciBuPXUuc2NvcGVbdF07cmV0dXJuIG58fChuPXUuc2NvcGVb dF09bmV3IFopLGNbdF09cihuKX0sdH1mdW5jdGlvbiBfKHQsZSl7dmFyIHI9 dC5zdGF0aWMsbj10LmR5bmFtaWM7aWYoImZyYW1lYnVmZmVyImluIHIpe3Zh ciBhPXIuZnJhbWVidWZmZXI7cmV0dXJuIGE/KGE9bC5nZXRGcmFtZWJ1ZmZl cihhKSxSKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5saW5rKGEpLG49dC5zaGFy ZWQ7cmV0dXJuIGUuc2V0KG4uZnJhbWVidWZmZXIsIi5uZXh0IixyKSxuPW4u Y29udGV4dCxlLnNldChuLCIuZnJhbWVidWZmZXJXaWR0aCIscisiLndpZHRo IiksZS5zZXQobiwiLmZyYW1lYnVmZmVySGVpZ2h0IixyKyIuaGVpZ2h0Iiks cn0pKTpSKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5zaGFyZWQ7cmV0dXJuIGUu c2V0KHIuZnJhbWVidWZmZXIsIi5uZXh0IiwibnVsbCIpLHI9ci5jb250ZXh0 LGUuc2V0KHIsIi5mcmFtZWJ1ZmZlcldpZHRoIixyKyIuZHJhd2luZ0J1ZmZl cldpZHRoIiksZS5zZXQociwiLmZyYW1lYnVmZmVySGVpZ2h0IixyKyIuZHJh d2luZ0J1ZmZlckhlaWdodCIpLCJudWxsIn0pfWlmKCJmcmFtZWJ1ZmZlciJp biBuKXt2YXIgaT1uLmZyYW1lYnVmZmVyO3JldHVybiBGKGksZnVuY3Rpb24o dCxlKXt2YXIgcj10Lmludm9rZShlLGkpLG49dC5zaGFyZWQsYT1uLmZyYW1l YnVmZmVyO3I9ZS5kZWYoYSwiLmdldEZyYW1lYnVmZmVyKCIsciwiKSIpO3Jl dHVybiBlLnNldChhLCIubmV4dCIsciksbj1uLmNvbnRleHQsZS5zZXQobiwi LmZyYW1lYnVmZmVyV2lkdGgiLHIrIj8iK3IrIi53aWR0aDoiK24rIi5kcmF3 aW5nQnVmZmVyV2lkdGgiKSxlLnNldChuLCIuZnJhbWVidWZmZXJIZWlnaHQi LHIrIj8iK3IrIi5oZWlnaHQ6IituKyIuZHJhd2luZ0J1ZmZlckhlaWdodCIp LHJ9KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB3KHQpe2Z1bmN0aW9uIHIodCl7 aWYodCBpbiBuKXt2YXIgcj1lLmlkKG5bdF0pO3JldHVybih0PVIoZnVuY3Rp b24oKXtyZXR1cm4gcn0pKS5pZD1yLHR9aWYodCBpbiBhKXt2YXIgaT1hW3Rd O3JldHVybiBGKGksZnVuY3Rpb24odCxlKXt2YXIgcj10Lmludm9rZShlLGkp O3JldHVybiBlLmRlZih0LnNoYXJlZC5zdHJpbmdzLCIuaWQoIixyLCIpIil9 KX1yZXR1cm4gbnVsbH12YXIgbj10LnN0YXRpYyxhPXQuZHluYW1pYyxpPXIo ImZyYWciKSxvPXIoInZlcnQiKSxzPW51bGw7cmV0dXJuIEQoaSkmJkQobyk/ KHM9aC5wcm9ncmFtKG8uaWQsaS5pZCksdD1SKGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHQubGluayhzKX0pKTp0PW5ldyBJKGkmJmkudGhpc0RlcHx8byYmby50 aGlzRGVwLGkmJmkuY29udGV4dERlcHx8byYmby5jb250ZXh0RGVwLGkmJmku cHJvcERlcHx8byYmby5wcm9wRGVwLGZ1bmN0aW9uKHQsZSl7dmFyIHIsbixh PXQuc2hhcmVkLnNoYWRlcjtyZXR1cm4gcj1pP2kuYXBwZW5kKHQsZSk6ZS5k ZWYoYSwiLiIsImZyYWciKSxuPW8/by5hcHBlbmQodCxlKTplLmRlZihhLCIu IiwidmVydCIpLGUuZGVmKGErIi5wcm9ncmFtKCIrbisiLCIrcisiKSIpfSks e2ZyYWc6aSx2ZXJ0Om8scHJvZ1Zhcjp0LHByb2dyYW06c319ZnVuY3Rpb24g ayh0LGUpe2Z1bmN0aW9uIHIodCxlKXtpZih0IGluIG4pe3ZhciByPTB8blt0 XTtyZXR1cm4gUihmdW5jdGlvbih0LG4pe3JldHVybiBlJiYodC5PRkZTRVQ9 cikscn0pfWlmKHQgaW4gYSl7dmFyIG89YVt0XTtyZXR1cm4gRihvLGZ1bmN0 aW9uKHQscil7dmFyIG49dC5pbnZva2UocixvKTtyZXR1cm4gZSYmKHQuT0ZG U0VUPW4pLG59KX1yZXR1cm4gZSYmaT9SKGZ1bmN0aW9uKHQsZSl7cmV0dXJu IHQuT0ZGU0VUPSIwIiwwfSk6bnVsbH12YXIgbj10LnN0YXRpYyxhPXQuZHlu YW1pYyxpPWZ1bmN0aW9uKCl7aWYoImVsZW1lbnRzImluIG4pe3ZhciB0PW4u ZWxlbWVudHM7Tyh0KT90PW8uZ2V0RWxlbWVudHMoby5jcmVhdGUodCwhMCkp OnQmJih0PW8uZ2V0RWxlbWVudHModCkpO3ZhciBlPVIoZnVuY3Rpb24oZSxy KXtpZih0KXt2YXIgbj1lLmxpbmsodCk7cmV0dXJuIGUuRUxFTUVOVFM9bn1y ZXR1cm4gZS5FTEVNRU5UUz1udWxsfSk7cmV0dXJuIGUudmFsdWU9dCxlfWlm KCJlbGVtZW50cyJpbiBhKXt2YXIgcj1hLmVsZW1lbnRzO3JldHVybiBGKHIs ZnVuY3Rpb24odCxlKXt2YXIgbj0oYT10LnNoYXJlZCkuaXNCdWZmZXJBcmdz LGE9YS5lbGVtZW50cyxpPXQuaW52b2tlKGUsciksbz1lLmRlZigibnVsbCIp O249ZS5kZWYobiwiKCIsaSwiKSIpLGk9dC5jb25kKG4pLnRoZW4obywiPSIs YSwiLmNyZWF0ZVN0cmVhbSgiLGksIik7IikuZWxzZShvLCI9IixhLCIuZ2V0 RWxlbWVudHMoIixpLCIpOyIpO3JldHVybiBlLmVudHJ5KGkpLGUuZXhpdCh0 LmNvbmQobikudGhlbihhLCIuZGVzdHJveVN0cmVhbSgiLG8sIik7IikpLHQu RUxFTUVOVFM9b30pfXJldHVybiBudWxsfSgpLHM9cigib2Zmc2V0IiwhMCk7 cmV0dXJue2VsZW1lbnRzOmkscHJpbWl0aXZlOmZ1bmN0aW9uKCl7aWYoInBy aW1pdGl2ZSJpbiBuKXt2YXIgdD1uLnByaW1pdGl2ZTtyZXR1cm4gUihmdW5j dGlvbihlLHIpe3JldHVybiBydFt0XX0pfWlmKCJwcmltaXRpdmUiaW4gYSl7 dmFyIGU9YS5wcmltaXRpdmU7cmV0dXJuIEYoZSxmdW5jdGlvbih0LHIpe3Zh ciBuPXQuY29uc3RhbnRzLnByaW1UeXBlcyxhPXQuaW52b2tlKHIsZSk7cmV0 dXJuIHIuZGVmKG4sIlsiLGEsIl0iKX0pfXJldHVybiBpP0QoaSk/aS52YWx1 ZT9SKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZGVmKHQuRUxFTUVOVFMsIi5w cmltVHlwZSIpfSk6UihmdW5jdGlvbigpe3JldHVybiA0fSk6bmV3IEkoaS50 aGlzRGVwLGkuY29udGV4dERlcCxpLnByb3BEZXAsZnVuY3Rpb24odCxlKXt2 YXIgcj10LkVMRU1FTlRTO3JldHVybiBlLmRlZihyLCI/IixyLCIucHJpbVR5 cGU6Iiw0KX0pOm51bGx9KCksY291bnQ6ZnVuY3Rpb24oKXtpZigiY291bnQi aW4gbil7dmFyIHQ9MHxuLmNvdW50O3JldHVybiBSKGZ1bmN0aW9uKCl7cmV0 dXJuIHR9KX1pZigiY291bnQiaW4gYSl7dmFyIGU9YS5jb3VudDtyZXR1cm4g RihlLGZ1bmN0aW9uKHQscil7cmV0dXJuIHQuaW52b2tlKHIsZSl9KX1yZXR1 cm4gaT9EKGkpP2k/cz9uZXcgSShzLnRoaXNEZXAscy5jb250ZXh0RGVwLHMu cHJvcERlcCxmdW5jdGlvbih0LGUpe3JldHVybiBlLmRlZih0LkVMRU1FTlRT LCIudmVydENvdW50LSIsdC5PRkZTRVQpfSk6UihmdW5jdGlvbih0LGUpe3Jl dHVybiBlLmRlZih0LkVMRU1FTlRTLCIudmVydENvdW50Iil9KTpSKGZ1bmN0 aW9uKCl7cmV0dXJuLTF9KTpuZXcgSShpLnRoaXNEZXB8fHMudGhpc0RlcCxp LmNvbnRleHREZXB8fHMuY29udGV4dERlcCxpLnByb3BEZXB8fHMucHJvcERl cCxmdW5jdGlvbih0LGUpe3ZhciByPXQuRUxFTUVOVFM7cmV0dXJuIHQuT0ZG U0VUP2UuZGVmKHIsIj8iLHIsIi52ZXJ0Q291bnQtIix0Lk9GRlNFVCwiOi0x Iik6ZS5kZWYociwiPyIsciwiLnZlcnRDb3VudDotMSIpfSk6bnVsbH0oKSxp bnN0YW5jZXM6cigiaW5zdGFuY2VzIiwhMSksb2Zmc2V0OnN9fWZ1bmN0aW9u IFQodCxyKXt2YXIgbj10LnN0YXRpYyxpPXQuZHluYW1pYyxvPXt9O3JldHVy biBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPW5b dF0saT1lLmlkKHQpLHM9bmV3IFo7aWYoTyhyKSlzLnN0YXRlPTEscy5idWZm ZXI9YS5nZXRCdWZmZXIoYS5jcmVhdGUociwzNDk2MiwhMSwhMCkpLHMudHlw ZT0wO2Vsc2UgaWYoYz1hLmdldEJ1ZmZlcihyKSlzLnN0YXRlPTEscy5idWZm ZXI9YyxzLnR5cGU9MDtlbHNlIGlmKCJjb25zdGFudCJpbiByKXt2YXIgbD1y LmNvbnN0YW50O3MuYnVmZmVyPSJudWxsIixzLnN0YXRlPTIsIm51bWJlciI9 PXR5cGVvZiBsP3MueD1sOmJ0LmZvckVhY2goZnVuY3Rpb24odCxlKXtlPGwu bGVuZ3RoJiYoc1t0XT1sW2VdKX0pfWVsc2V7dmFyIGM9TyhyLmJ1ZmZlcik/ YS5nZXRCdWZmZXIoYS5jcmVhdGUoci5idWZmZXIsMzQ5NjIsITEsITApKTph LmdldEJ1ZmZlcihyLmJ1ZmZlciksdT0wfHIub2Zmc2V0LGg9MHxyLnN0cmlk ZSxmPTB8ci5zaXplLHA9ISFyLm5vcm1hbGl6ZWQsZD0wOyJ0eXBlImluIHIm JihkPUtbci50eXBlXSkscj0wfHIuZGl2aXNvcixzLmJ1ZmZlcj1jLHMuc3Rh dGU9MSxzLnNpemU9ZixzLm5vcm1hbGl6ZWQ9cCxzLnR5cGU9ZHx8Yy5kdHlw ZSxzLm9mZnNldD11LHMuc3RyaWRlPWgscy5kaXZpc29yPXJ9b1t0XT1SKGZ1 bmN0aW9uKHQsZSl7dmFyIHI9dC5hdHRyaWJDYWNoZTtpZihpIGluIHIpcmV0 dXJuIHJbaV07dmFyIG49e2lzU3RyZWFtOiExfTtyZXR1cm4gT2JqZWN0Lmtl eXMocykuZm9yRWFjaChmdW5jdGlvbih0KXtuW3RdPXNbdF19KSxzLmJ1ZmZl ciYmKG4uYnVmZmVyPXQubGluayhzLmJ1ZmZlciksbi50eXBlPW4udHlwZXx8 bi5idWZmZXIrIi5kdHlwZSIpLHJbaV09bn0pfSksT2JqZWN0LmtleXMoaSku Zm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1pW3RdO29bdF09RihlLGZ1bmN0 aW9uKHQscil7ZnVuY3Rpb24gbih0KXtyKGxbdF0sIj0iLGEsIi4iLHQsInww OyIpfXZhciBhPXQuaW52b2tlKHIsZSksaT10LnNoYXJlZCxvPWkuaXNCdWZm ZXJBcmdzLHM9aS5idWZmZXIsbD17aXNTdHJlYW06ci5kZWYoITEpfSxjPW5l dyBaO2Muc3RhdGU9MSxPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGZ1bmN0aW9u KHQpe2xbdF09ci5kZWYoIiIrY1t0XSl9KTt2YXIgdT1sLmJ1ZmZlcixoPWwu dHlwZTtyZXR1cm4gcigiaWYoIixvLCIoIixhLCIpKXsiLGwuaXNTdHJlYW0s Ij10cnVlOyIsdSwiPSIscywiLmNyZWF0ZVN0cmVhbSgiLDM0OTYyLCIsIixh LCIpOyIsaCwiPSIsdSwiLmR0eXBlOyIsIn1lbHNleyIsdSwiPSIscywiLmdl dEJ1ZmZlcigiLGEsIik7IiwiaWYoIix1LCIpeyIsaCwiPSIsdSwiLmR0eXBl OyIsJ31lbHNlIGlmKCJjb25zdGFudCIgaW4gJyxhLCIpeyIsbC5zdGF0ZSwi PSIsMiwiOyIsImlmKHR5cGVvZiAiK2ErJy5jb25zdGFudCA9PT0gIm51bWJl ciIpeycsbFtidFswXV0sIj0iLGEsIi5jb25zdGFudDsiLGJ0LnNsaWNlKDEp Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbFt0XX0pLmpvaW4oIj0iKSwiPTA7 IiwifWVsc2V7IixidC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gbFt0XSsi PSIrYSsiLmNvbnN0YW50Lmxlbmd0aD4iK2UrIj8iK2ErIi5jb25zdGFudFsi K2UrIl06MDsifSkuam9pbigiIiksIn19ZWxzZXsiLCJpZigiLG8sIigiLGEs Ii5idWZmZXIpKXsiLHUsIj0iLHMsIi5jcmVhdGVTdHJlYW0oIiwzNDk2Miwi LCIsYSwiLmJ1ZmZlcik7IiwifWVsc2V7Iix1LCI9IixzLCIuZ2V0QnVmZmVy KCIsYSwiLmJ1ZmZlcik7IiwifSIsaCwnPSJ0eXBlIiBpbiAnLGEsIj8iLGku Z2xUeXBlcywiWyIsYSwiLnR5cGVdOiIsdSwiLmR0eXBlOyIsbC5ub3JtYWxp emVkLCI9ISEiLGEsIi5ub3JtYWxpemVkOyIpLG4oInNpemUiKSxuKCJvZmZz ZXQiKSxuKCJzdHJpZGUiKSxuKCJkaXZpc29yIikscigifX0iKSxyLmV4aXQo ImlmKCIsbC5pc1N0cmVhbSwiKXsiLHMsIi5kZXN0cm95U3RyZWFtKCIsdSwi KTsiLCJ9IiksbH0pfSksb31mdW5jdGlvbiBNKHQsZSxyLG4sYSl7dmFyIG89 Xyh0KSxzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe2lmKHQgaW4g YSl7dmFyIHI9YVt0XTt0PSEwO3ZhciBuLG8scz0wfHIueCxsPTB8ci55O3Jl dHVybiJ3aWR0aCJpbiByP249MHxyLndpZHRoOnQ9ITEsImhlaWdodCJpbiBy P289MHxyLmhlaWdodDp0PSExLG5ldyBJKCF0JiZlJiZlLnRoaXNEZXAsIXQm JmUmJmUuY29udGV4dERlcCwhdCYmZSYmZS5wcm9wRGVwLGZ1bmN0aW9uKHQs ZSl7dmFyIGE9dC5zaGFyZWQuY29udGV4dCxpPW47IndpZHRoImluIHJ8fChp PWUuZGVmKGEsIi4iLCJmcmFtZWJ1ZmZlcldpZHRoIiwiLSIscykpO3ZhciBj PW87cmV0dXJuImhlaWdodCJpbiByfHwoYz1lLmRlZihhLCIuIiwiZnJhbWVi dWZmZXJIZWlnaHQiLCItIixsKSksW3MsbCxpLGNdfSl9aWYodCBpbiBpKXt2 YXIgYz1pW3RdO3JldHVybiB0PUYoYyxmdW5jdGlvbih0LGUpe3ZhciByPXQu aW52b2tlKGUsYyksbj10LnNoYXJlZC5jb250ZXh0LGE9ZS5kZWYociwiLnh8 MCIpLGk9ZS5kZWYociwiLnl8MCIpO3JldHVyblthLGksZS5kZWYoJyJ3aWR0 aCIgaW4gJyxyLCI/IixyLCIud2lkdGh8MDoiLCIoIixuLCIuIiwiZnJhbWVi dWZmZXJXaWR0aCIsIi0iLGEsIikiKSxyPWUuZGVmKCciaGVpZ2h0IiBpbiAn LHIsIj8iLHIsIi5oZWlnaHR8MDoiLCIoIixuLCIuIiwiZnJhbWVidWZmZXJI ZWlnaHQiLCItIixpLCIpIildfSksZSYmKHQudGhpc0RlcD10LnRoaXNEZXB8 fGUudGhpc0RlcCx0LmNvbnRleHREZXA9dC5jb250ZXh0RGVwfHxlLmNvbnRl eHREZXAsdC5wcm9wRGVwPXQucHJvcERlcHx8ZS5wcm9wRGVwKSx0fXJldHVy biBlP25ldyBJKGUudGhpc0RlcCxlLmNvbnRleHREZXAsZS5wcm9wRGVwLGZ1 bmN0aW9uKHQsZSl7dmFyIHI9dC5zaGFyZWQuY29udGV4dDtyZXR1cm5bMCww LGUuZGVmKHIsIi4iLCJmcmFtZWJ1ZmZlcldpZHRoIiksZS5kZWYociwiLiIs ImZyYW1lYnVmZmVySGVpZ2h0IildfSk6bnVsbH12YXIgYT10LnN0YXRpYyxp PXQuZHluYW1pYztpZih0PW4oInZpZXdwb3J0Iikpe3ZhciBvPXQ7dD1uZXcg SSh0LnRoaXNEZXAsdC5jb250ZXh0RGVwLHQucHJvcERlcCxmdW5jdGlvbih0 LGUpe3ZhciByPW8uYXBwZW5kKHQsZSksbj10LnNoYXJlZC5jb250ZXh0O3Jl dHVybiBlLnNldChuLCIudmlld3BvcnRXaWR0aCIsclsyXSksZS5zZXQobiwi LnZpZXdwb3J0SGVpZ2h0IixyWzNdKSxyfSl9cmV0dXJue3ZpZXdwb3J0OnQs c2Npc3Nvcl9ib3g6bigic2Npc3Nvci5ib3giKX19KHQsbyksbD1rKHQpLGM9 ZnVuY3Rpb24odCxlKXt2YXIgcj10LnN0YXRpYyxuPXQuZHluYW1pYyxhPXt9 O3JldHVybiBudC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxp KXtpZih0IGluIHIpe3ZhciBzPWUoclt0XSk7YVtvXT1SKGZ1bmN0aW9uKCl7 cmV0dXJuIHN9KX1lbHNlIGlmKHQgaW4gbil7dmFyIGw9blt0XTthW29dPUYo bCxmdW5jdGlvbih0LGUpe3JldHVybiBpKHQsZSx0Lmludm9rZShlLGwpKX0p fX12YXIgbz1tKHQpO3N3aXRjaCh0KXtjYXNlImN1bGwuZW5hYmxlIjpjYXNl ImJsZW5kLmVuYWJsZSI6Y2FzZSJkaXRoZXIiOmNhc2Uic3RlbmNpbC5lbmFi bGUiOmNhc2UiZGVwdGguZW5hYmxlIjpjYXNlInNjaXNzb3IuZW5hYmxlIjpj YXNlInBvbHlnb25PZmZzZXQuZW5hYmxlIjpjYXNlInNhbXBsZS5hbHBoYSI6 Y2FzZSJzYW1wbGUuZW5hYmxlIjpjYXNlImRlcHRoLm1hc2siOnJldHVybiBl KGZ1bmN0aW9uKHQpe3JldHVybiB0fSxmdW5jdGlvbih0LGUscil7cmV0dXJu IHJ9KTtjYXNlImRlcHRoLmZ1bmMiOnJldHVybiBlKGZ1bmN0aW9uKHQpe3Jl dHVybiBrdFt0XX0sZnVuY3Rpb24odCxlLHIpe3JldHVybiBlLmRlZih0LmNv bnN0YW50cy5jb21wYXJlRnVuY3MsIlsiLHIsIl0iKX0pO2Nhc2UiZGVwdGgu cmFuZ2UiOnJldHVybiBlKGZ1bmN0aW9uKHQpe3JldHVybiB0fSxmdW5jdGlv bih0LGUscil7cmV0dXJuW2UuZGVmKCIrIixyLCJbMF0iKSxlPWUuZGVmKCIr IixyLCJbMV0iKV19KTtjYXNlImJsZW5kLmZ1bmMiOnJldHVybiBlKGZ1bmN0 aW9uKHQpe3JldHVyblt3dFsic3JjUkdCImluIHQ/dC5zcmNSR0I6dC5zcmNd LHd0WyJkc3RSR0IiaW4gdD90LmRzdFJHQjp0LmRzdF0sd3RbInNyY0FscGhh ImluIHQ/dC5zcmNBbHBoYTp0LnNyY10sd3RbImRzdEFscGhhImluIHQ/dC5k c3RBbHBoYTp0LmRzdF1dfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0 LG4pe3JldHVybiBlLmRlZignIicsdCxuLCciIGluICcsciwiPyIsciwiLiIs dCxuLCI6IixyLCIuIix0KX10PXQuY29uc3RhbnRzLmJsZW5kRnVuY3M7dmFy IGE9bigic3JjIiwiUkdCIiksaT1uKCJkc3QiLCJSR0IiKSxvPShhPWUuZGVm KHQsIlsiLGEsIl0iKSxlLmRlZih0LCJbIixuKCJzcmMiLCJBbHBoYSIpLCJd IikpO3JldHVyblthLGk9ZS5kZWYodCwiWyIsaSwiXSIpLG8sdD1lLmRlZih0 LCJbIixuKCJkc3QiLCJBbHBoYSIpLCJdIildfSk7Y2FzZSJibGVuZC5lcXVh dGlvbiI6cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5 cGVvZiB0P1tKW3RdLEpbdF1dOiJvYmplY3QiPT10eXBlb2YgdD9bSlt0LnJn Yl0sSlt0LmFscGhhXV06dm9pZCAwfSxmdW5jdGlvbih0LGUscil7dmFyIG49 dC5jb25zdGFudHMuYmxlbmRFcXVhdGlvbnMsYT1lLmRlZigpLGk9ZS5kZWYo KTtyZXR1cm4odD10LmNvbmQoInR5cGVvZiAiLHIsJz09PSJzdHJpbmciJykp LnRoZW4oYSwiPSIsaSwiPSIsbiwiWyIsciwiXTsiKSx0LmVsc2UoYSwiPSIs biwiWyIsciwiLnJnYl07IixpLCI9IixuLCJbIixyLCIuYWxwaGFdOyIpLGUo dCksW2EsaV19KTtjYXNlImJsZW5kLmNvbG9yIjpyZXR1cm4gZShmdW5jdGlv bih0KXtyZXR1cm4gaSg0LGZ1bmN0aW9uKGUpe3JldHVybit0W2VdfSl9LGZ1 bmN0aW9uKHQsZSxyKXtyZXR1cm4gaSg0LGZ1bmN0aW9uKHQpe3JldHVybiBl LmRlZigiKyIsciwiWyIsdCwiXSIpfSl9KTtjYXNlInN0ZW5jaWwubWFzayI6 cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuIDB8dH0sZnVuY3Rpb24odCxl LHIpe3JldHVybiBlLmRlZihyLCJ8MCIpfSk7Y2FzZSJzdGVuY2lsLmZ1bmMi OnJldHVybiBlKGZ1bmN0aW9uKHQpe3JldHVybltrdFt0LmNtcHx8ImtlZXAi XSx0LnJlZnx8MCwibWFzayJpbiB0P3QubWFzazotMV19LGZ1bmN0aW9uKHQs ZSxyKXtyZXR1cm5bdD1lLmRlZignImNtcCIgaW4gJyxyLCI/Iix0LmNvbnN0 YW50cy5jb21wYXJlRnVuY3MsIlsiLHIsIi5jbXBdIiwiOiIsNzY4MCksZS5k ZWYociwiLnJlZnwwIiksZT1lLmRlZignIm1hc2siIGluICcsciwiPyIsciwi Lm1hc2t8MDotMSIpXX0pO2Nhc2Uic3RlbmNpbC5vcEZyb250IjpjYXNlInN0 ZW5jaWwub3BCYWNrIjpyZXR1cm4gZShmdW5jdGlvbihlKXtyZXR1cm5bInN0 ZW5jaWwub3BCYWNrIj09PXQ/MTAyOToxMDI4LFR0W2UuZmFpbHx8ImtlZXAi XSxUdFtlLnpmYWlsfHwia2VlcCJdLFR0W2UuenBhc3N8fCJrZWVwIl1dfSxm dW5jdGlvbihlLHIsbil7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gci5kZWYoJyIn LHQsJyIgaW4gJyxuLCI/IixpLCJbIixuLCIuIix0LCJdOiIsNzY4MCl9dmFy IGk9ZS5jb25zdGFudHMuc3RlbmNpbE9wcztyZXR1cm5bInN0ZW5jaWwub3BC YWNrIj09PXQ/MTAyOToxMDI4LGEoImZhaWwiKSxhKCJ6ZmFpbCIpLGEoInpw YXNzIildfSk7Y2FzZSJwb2x5Z29uT2Zmc2V0Lm9mZnNldCI6cmV0dXJuIGUo ZnVuY3Rpb24odCl7cmV0dXJuWzB8dC5mYWN0b3IsMHx0LnVuaXRzXX0sZnVu Y3Rpb24odCxlLHIpe3JldHVybltlLmRlZihyLCIuZmFjdG9yfDAiKSxlPWUu ZGVmKHIsIi51bml0c3wwIildfSk7Y2FzZSJjdWxsLmZhY2UiOnJldHVybiBl KGZ1bmN0aW9uKHQpe3ZhciBlPTA7cmV0dXJuImZyb250Ij09PXQ/ZT0xMDI4 OiJiYWNrIj09PXQmJihlPTEwMjkpLGV9LGZ1bmN0aW9uKHQsZSxyKXtyZXR1 cm4gZS5kZWYociwnPT09ImZyb250Ij8nLDEwMjgsIjoiLDEwMjkpfSk7Y2Fz ZSJsaW5lV2lkdGgiOnJldHVybiBlKGZ1bmN0aW9uKHQpe3JldHVybiB0fSxm dW5jdGlvbih0LGUscil7cmV0dXJuIHJ9KTtjYXNlImZyb250RmFjZSI6cmV0 dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuIE10W3RdfSxmdW5jdGlvbih0LGUs cil7cmV0dXJuIGUuZGVmKHIrJz09PSJjdyI/MjMwNDoyMzA1Jyl9KTtjYXNl ImNvbG9yTWFzayI6cmV0dXJuIGUoZnVuY3Rpb24odCl7cmV0dXJuIHQubWFw KGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pfSxmdW5jdGlvbih0LGUscil7cmV0 dXJuIGkoNCxmdW5jdGlvbih0KXtyZXR1cm4iISEiK3IrIlsiK3QrIl0ifSl9 KTtjYXNlInNhbXBsZS5jb3ZlcmFnZSI6cmV0dXJuIGUoZnVuY3Rpb24odCl7 cmV0dXJuWyJ2YWx1ZSJpbiB0P3QudmFsdWU6MSwhIXQuaW52ZXJ0XX0sZnVu Y3Rpb24odCxlLHIpe3JldHVybltlLmRlZignInZhbHVlIiBpbiAnLHIsIj8r IixyLCIudmFsdWU6MSIpLGU9ZS5kZWYoIiEhIixyLCIuaW52ZXJ0IildfSl9 fSksYX0odCksdT13KHQpLGg9cy52aWV3cG9ydDtyZXR1cm4gaCYmKGMudmll d3BvcnQ9aCksKHM9c1toPW0oInNjaXNzb3IuYm94IildKSYmKGNbaF09cyks KG89e2ZyYW1lYnVmZmVyOm8sZHJhdzpsLHNoYWRlcjp1LHN0YXRlOmMsZGly dHk6cz0wPE9iamVjdC5rZXlzKGMpLmxlbmd0aH0pLnByb2ZpbGU9ZnVuY3Rp b24odCl7dmFyIGUscj10LnN0YXRpYztpZih0PXQuZHluYW1pYywicHJvZmls ZSJpbiByKXt2YXIgbj0hIXIucHJvZmlsZTsoZT1SKGZ1bmN0aW9uKHQsZSl7 cmV0dXJuIG59KSkuZW5hYmxlPW59ZWxzZSBpZigicHJvZmlsZSJpbiB0KXt2 YXIgYT10LnByb2ZpbGU7ZT1GKGEsZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5p bnZva2UoZSxhKX0pfXJldHVybiBlfSh0KSxvLnVuaWZvcm1zPWZ1bmN0aW9u KHQsZSl7dmFyIHI9dC5zdGF0aWMsbj10LmR5bmFtaWMsYT17fTtyZXR1cm4g T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZSxuPXJb dF07aWYoIm51bWJlciI9PXR5cGVvZiBufHwiYm9vbGVhbiI9PXR5cGVvZiBu KWU9UihmdW5jdGlvbigpe3JldHVybiBufSk7ZWxzZSBpZigiZnVuY3Rpb24i PT10eXBlb2Ygbil7dmFyIG89bi5fcmVnbFR5cGU7InRleHR1cmUyZCI9PT1v fHwidGV4dHVyZUN1YmUiPT09bz9lPVIoZnVuY3Rpb24odCl7cmV0dXJuIHQu bGluayhuKX0pOiJmcmFtZWJ1ZmZlciIhPT1vJiYiZnJhbWVidWZmZXJDdWJl IiE9PW98fChlPVIoZnVuY3Rpb24odCl7cmV0dXJuIHQubGluayhuLmNvbG9y WzBdKX0pKX1lbHNlIHYobikmJihlPVIoZnVuY3Rpb24odCl7cmV0dXJuIHQu Z2xvYmFsLmRlZigiWyIsaShuLmxlbmd0aCxmdW5jdGlvbih0KXtyZXR1cm4g blt0XX0pLCJdIil9KSk7ZS52YWx1ZT1uLGFbdF09ZX0pLE9iamVjdC5rZXlz KG4pLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9blt0XTthW3RdPUYoZSxm dW5jdGlvbih0LHIpe3JldHVybiB0Lmludm9rZShyLGUpfSl9KSxhfShyKSxv LmF0dHJpYnV0ZXM9VChlKSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7dmFyIGU9 dC5zdGF0aWMscj10LmR5bmFtaWMsbj17fTtyZXR1cm4gT2JqZWN0LmtleXMo ZSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcj1lW3RdO25bdF09UihmdW5j dGlvbih0LGUpe3JldHVybiJudW1iZXIiPT10eXBlb2Ygcnx8ImJvb2xlYW4i PT10eXBlb2Ygcj8iIityOnQubGluayhyKX0pfSksT2JqZWN0LmtleXMociku Zm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1yW3RdO25bdF09RihlLGZ1bmN0 aW9uKHQscil7cmV0dXJuIHQuaW52b2tlKHIsZSl9KX0pLG59KG4pLG99ZnVu Y3Rpb24gQSh0LGUscil7dmFyIG49dC5zaGFyZWQuY29udGV4dCxhPXQuc2Nv cGUoKTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2Uuc2F2 ZShuLCIuIitpKSxhKG4sIi4iLGksIj0iLHJbaV0uYXBwZW5kKHQsZSksIjsi KX0pLGUoYSl9ZnVuY3Rpb24gUyh0LGUscixuKXt2YXIgYSxpPShzPXQuc2hh cmVkKS5nbCxvPXMuZnJhbWVidWZmZXI7JCYmKGE9ZS5kZWYocy5leHRlbnNp b25zLCIud2ViZ2xfZHJhd19idWZmZXJzIikpO3ZhciBzPShsPXQuY29uc3Rh bnRzKS5kcmF3QnVmZmVyLGw9bC5iYWNrQnVmZmVyO3Q9cj9yLmFwcGVuZCh0 LGUpOmUuZGVmKG8sIi5uZXh0Iiksbnx8ZSgiaWYoIix0LCIhPT0iLG8sIi5j dXIpeyIpLGUoImlmKCIsdCwiKXsiLGksIi5iaW5kRnJhbWVidWZmZXIoIiwz NjE2MCwiLCIsdCwiLmZyYW1lYnVmZmVyKTsiKSwkJiZlKGEsIi5kcmF3QnVm ZmVyc1dFQkdMKCIscywiWyIsdCwiLmNvbG9yQXR0YWNobWVudHMubGVuZ3Ro XSk7IiksZSgifWVsc2V7IixpLCIuYmluZEZyYW1lYnVmZmVyKCIsMzYxNjAs IixudWxsKTsiKSwkJiZlKGEsIi5kcmF3QnVmZmVyc1dFQkdMKCIsbCwiKTsi KSxlKCJ9IixvLCIuY3VyPSIsdCwiOyIpLG58fGUoIn0iKX1mdW5jdGlvbiBF KHQsZSxyKXt2YXIgbj10LnNoYXJlZCxhPW4uZ2wsbz10LmN1cnJlbnQscz10 Lm5leHQsbD1uLmN1cnJlbnQsYz1uLm5leHQsdT10LmNvbmQobCwiLmRpcnR5 Iik7bnQuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbixoO2lmKCEoKGU9bShl KSlpbiByLnN0YXRlKSlpZihlIGluIHMpe249c1tlXSxoPW9bZV07dmFyIGY9 aSh0dFtlXS5sZW5ndGgsZnVuY3Rpb24odCl7cmV0dXJuIHUuZGVmKG4sIlsi LHQsIl0iKX0pO3UodC5jb25kKGYubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJu IHQrIiE9PSIraCsiWyIrZSsiXSJ9KS5qb2luKCJ8fCIpKS50aGVuKGEsIi4i LGl0W2VdLCIoIixmLCIpOyIsZi5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4g aCsiWyIrZSsiXT0iK3R9KS5qb2luKCI7IiksIjsiKSl9ZWxzZSBuPXUuZGVm KGMsIi4iLGUpLGY9dC5jb25kKG4sIiE9PSIsbCwiLiIsZSksdShmKSxlIGlu IGF0P2YodC5jb25kKG4pLnRoZW4oYSwiLmVuYWJsZSgiLGF0W2VdLCIpOyIp LmVsc2UoYSwiLmRpc2FibGUoIixhdFtlXSwiKTsiKSxsLCIuIixlLCI9Iixu LCI7Iik6ZihhLCIuIixpdFtlXSwiKCIsbiwiKTsiLGwsIi4iLGUsIj0iLG4s IjsiKX0pLDA9PT1PYmplY3Qua2V5cyhyLnN0YXRlKS5sZW5ndGgmJnUobCwi LmRpcnR5PWZhbHNlOyIpLGUodSl9ZnVuY3Rpb24gTCh0LGUscixuKXt2YXIg YT10LnNoYXJlZCxpPXQuY3VycmVudCxvPWEuY3VycmVudCxzPWEuZ2w7eihP YmplY3Qua2V5cyhyKSkuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgbD1yW2Fd O2lmKCFufHxuKGwpKXt2YXIgYz1sLmFwcGVuZCh0LGUpO2lmKGF0W2FdKXt2 YXIgdT1hdFthXTtEKGwpP2UocyxjPyIuZW5hYmxlKCI6Ii5kaXNhYmxlKCIs dSwiKTsiKTplKHQuY29uZChjKS50aGVuKHMsIi5lbmFibGUoIix1LCIpOyIp LmVsc2UocywiLmRpc2FibGUoIix1LCIpOyIpKSxlKG8sIi4iLGEsIj0iLGMs IjsiKX1lbHNlIGlmKHYoYykpe3ZhciBoPWlbYV07ZShzLCIuIixpdFthXSwi KCIsYywiKTsiLGMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGgrIlsiK2Ur Il09Iit0fSkuam9pbigiOyIpLCI7Iil9ZWxzZSBlKHMsIi4iLGl0W2FdLCIo IixjLCIpOyIsbywiLiIsYSwiPSIsYywiOyIpfX0pfWZ1bmN0aW9uIEModCxl KXtRJiYodC5pbnN0YW5jaW5nPWUuZGVmKHQuc2hhcmVkLmV4dGVuc2lvbnMs Ii5hbmdsZV9pbnN0YW5jZWRfYXJyYXlzIikpfWZ1bmN0aW9uIEIodCxlLHIs bixhKXtmdW5jdGlvbiBpKCl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBw ZXJmb3JtYW5jZT8iRGF0ZS5ub3coKSI6InBlcmZvcm1hbmNlLm5vdygpIn1m dW5jdGlvbiBvKHQpe3QoYz1lLmRlZigpLCI9IixpKCksIjsiKSwic3RyaW5n Ij09dHlwZW9mIGE/dChmLCIuY291bnQrPSIsYSwiOyIpOnQoZiwiLmNvdW50 Kys7IiksZCYmKG4/dCh1PWUuZGVmKCksIj0iLGcsIi5nZXROdW1QZW5kaW5n UXVlcmllcygpOyIpOnQoZywiLmJlZ2luUXVlcnkoIixmLCIpOyIpKX1mdW5j dGlvbiBzKHQpe3QoZiwiLmNwdVRpbWUrPSIsaSgpLCItIixjLCI7IiksZCYm KG4/dChnLCIucHVzaFNjb3BlU3RhdHMoIix1LCIsIixnLCIuZ2V0TnVtUGVu ZGluZ1F1ZXJpZXMoKSwiLGYsIik7Iik6dChnLCIuZW5kUXVlcnkoKTsiKSl9 ZnVuY3Rpb24gbCh0KXt2YXIgcj1lLmRlZihwLCIucHJvZmlsZSIpO2UocCwi LnByb2ZpbGU9Iix0LCI7IiksZS5leGl0KHAsIi5wcm9maWxlPSIsciwiOyIp fXZhciBjLHUsaD10LnNoYXJlZCxmPXQuc3RhdHMscD1oLmN1cnJlbnQsZz1o LnRpbWVyO2lmKHI9ci5wcm9maWxlKXtpZihEKHIpKXJldHVybiB2b2lkKHIu ZW5hYmxlPyhvKGUpLHMoZS5leGl0KSxsKCJ0cnVlIikpOmwoImZhbHNlIikp O2wocj1yLmFwcGVuZCh0LGUpKX1lbHNlIHI9ZS5kZWYocCwiLnByb2ZpbGUi KTtvKGg9dC5ibG9jaygpKSxlKCJpZigiLHIsIil7IixoLCJ9Iikscyh0PXQu YmxvY2soKSksZS5leGl0KCJpZigiLHIsIil7Iix0LCJ9Iil9ZnVuY3Rpb24g Tih0LGUscixuLGEpe2Z1bmN0aW9uIGkocixuLGEpe2Z1bmN0aW9uIGkoKXtl KCJpZighIix1LCIuYnVmZmVyKXsiLGwsIi5lbmFibGVWZXJ0ZXhBdHRyaWJB cnJheSgiLGMsIik7fSIpO3ZhciByLGk9YS50eXBlO3I9YS5zaXplP2UuZGVm KGEuc2l6ZSwifHwiLG4pOm4sZSgiaWYoIix1LCIudHlwZSE9PSIsaSwifHwi LHUsIi5zaXplIT09IixyLCJ8fCIscC5tYXAoZnVuY3Rpb24odCl7cmV0dXJu IHUrIi4iK3QrIiE9PSIrYVt0XX0pLmpvaW4oInx8IiksIil7IixsLCIuYmlu ZEJ1ZmZlcigiLDM0OTYyLCIsIixoLCIuYnVmZmVyKTsiLGwsIi52ZXJ0ZXhB dHRyaWJQb2ludGVyKCIsW2MscixpLGEubm9ybWFsaXplZCxhLnN0cmlkZSxh Lm9mZnNldF0sIik7Iix1LCIudHlwZT0iLGksIjsiLHUsIi5zaXplPSIsciwi OyIscC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHUrIi4iK3QrIj0iK2FbdF0r IjsifSkuam9pbigiIiksIn0iKSxRJiYoaT1hLmRpdmlzb3IsZSgiaWYoIix1 LCIuZGl2aXNvciE9PSIsaSwiKXsiLHQuaW5zdGFuY2luZywiLnZlcnRleEF0 dHJpYkRpdmlzb3JBTkdMRSgiLFtjLGldLCIpOyIsdSwiLmRpdmlzb3I9Iixp LCI7fSIpKX1mdW5jdGlvbiBzKCl7ZSgiaWYoIix1LCIuYnVmZmVyKXsiLGws Ii5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoIixjLCIpOyIsIn1pZigiLGJ0 Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB1KyIuIit0KyIhPT0iK2ZbZV19 KS5qb2luKCJ8fCIpLCIpeyIsbCwiLnZlcnRleEF0dHJpYjRmKCIsYywiLCIs ZiwiKTsiLGJ0Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB1KyIuIit0KyI9 IitmW2VdKyI7In0pLmpvaW4oIiIpLCJ9Iil9dmFyIGw9by5nbCxjPWUuZGVm KHIsIi5sb2NhdGlvbiIpLHU9ZS5kZWYoby5hdHRyaWJ1dGVzLCJbIixjLCJd Iik7cj1hLnN0YXRlO3ZhciBoPWEuYnVmZmVyLGY9W2EueCxhLnksYS56LGEu d10scD1bImJ1ZmZlciIsIm5vcm1hbGl6ZWQiLCJvZmZzZXQiLCJzdHJpZGUi XTsxPT09cj9pKCk6Mj09PXI/cygpOihlKCJpZigiLHIsIj09PSIsMSwiKXsi KSxpKCksZSgifWVsc2V7IikscygpLGUoIn0iKSl9dmFyIG89dC5zaGFyZWQ7 bi5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBvLHM9bi5uYW1lLGw9ci5hdHRy aWJ1dGVzW3NdO2lmKGwpe2lmKCFhKGwpKXJldHVybjtvPWwuYXBwZW5kKHQs ZSl9ZWxzZXtpZighYShBdCkpcmV0dXJuO3ZhciBjPXQuc2NvcGVBdHRyaWIo cyk7bz17fSxPYmplY3Qua2V5cyhuZXcgWikuZm9yRWFjaChmdW5jdGlvbih0 KXtvW3RdPWUuZGVmKGMsIi4iLHQpfSl9aSh0LmxpbmsobiksZnVuY3Rpb24o dCl7c3dpdGNoKHQpe2Nhc2UgMzU2NjQ6Y2FzZSAzNTY2NzpjYXNlIDM1Njcx OnJldHVybiAyO2Nhc2UgMzU2NjU6Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJl dHVybiAzO2Nhc2UgMzU2NjY6Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVy biA0O2RlZmF1bHQ6cmV0dXJuIDF9fShuLmluZm8udHlwZSksbyl9KX1mdW5j dGlvbiBqKHQscixuLGEsbyl7Zm9yKHZhciBzLGw9dC5zaGFyZWQsYz1sLmds LHU9MDt1PGEubGVuZ3RoOysrdSl7dmFyIGgsZj0oZz1hW3VdKS5uYW1lLHA9 Zy5pbmZvLnR5cGUsZD1uLnVuaWZvcm1zW2ZdLGc9dC5saW5rKGcpKyIubG9j YXRpb24iO2lmKGQpe2lmKCFvKGQpKWNvbnRpbnVlO2lmKEQoZCkpe2lmKGY9 ZC52YWx1ZSwzNTY3OD09PXB8fDM1NjgwPT09cClyKGMsIi51bmlmb3JtMWko IixnLCIsIiwocD10LmxpbmsoZi5fdGV4dHVyZXx8Zi5jb2xvclswXS5fdGV4 dHVyZSkpKyIuYmluZCgpKTsiKSxyLmV4aXQocCwiLnVuYmluZCgpOyIpO2Vs c2UgaWYoMzU2NzQ9PT1wfHwzNTY3NT09PXB8fDM1Njc2PT09cClkPTIsMzU2 NzU9PT1wP2Q9MzozNTY3Nj09PXAmJihkPTQpLHIoYywiLnVuaWZvcm1NYXRy aXgiLGQsImZ2KCIsZywiLGZhbHNlLCIsZj10Lmdsb2JhbC5kZWYoIm5ldyBG bG9hdDMyQXJyYXkoWyIrQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZikr Il0pIiksIik7Iik7ZWxzZXtzd2l0Y2gocCl7Y2FzZSA1MTI2OnM9IjFmIjti cmVhaztjYXNlIDM1NjY0OnM9IjJmIjticmVhaztjYXNlIDM1NjY1OnM9IjNm IjticmVhaztjYXNlIDM1NjY2OnM9IjRmIjticmVhaztjYXNlIDM1NjcwOmNh c2UgNTEyNDpzPSIxaSI7YnJlYWs7Y2FzZSAzNTY3MTpjYXNlIDM1NjY3OnM9 IjJpIjticmVhaztjYXNlIDM1NjcyOmNhc2UgMzU2Njg6cz0iM2kiO2JyZWFr O2Nhc2UgMzU2NzM6cz0iNGkiO2JyZWFrO2Nhc2UgMzU2Njk6cz0iNGkifXIo YywiLnVuaWZvcm0iLHMsIigiLGcsIiwiLHYoZik/QXJyYXkucHJvdG90eXBl LnNsaWNlLmNhbGwoZik6ZiwiKTsiKX1jb250aW51ZX1oPWQuYXBwZW5kKHQs cil9ZWxzZXtpZighbyhBdCkpY29udGludWU7aD1yLmRlZihsLnVuaWZvcm1z LCJbIixlLmlkKGYpLCJdIil9c3dpdGNoKDM1Njc4PT09cD9yKCJpZigiLGgs IiYmIixoLCcuX3JlZ2xUeXBlPT09ImZyYW1lYnVmZmVyIil7JyxoLCI9Iixo LCIuY29sb3JbMF07IiwifSIpOjM1NjgwPT09cCYmcigiaWYoIixoLCImJiIs aCwnLl9yZWdsVHlwZT09PSJmcmFtZWJ1ZmZlckN1YmUiKXsnLGgsIj0iLGgs Ii5jb2xvclswXTsiLCJ9IiksZj0xLHApe2Nhc2UgMzU2Nzg6Y2FzZSAzNTY4 MDpwPXIuZGVmKGgsIi5fdGV4dHVyZSIpLHIoYywiLnVuaWZvcm0xaSgiLGcs IiwiLHAsIi5iaW5kKCkpOyIpLHIuZXhpdChwLCIudW5iaW5kKCk7Iik7Y29u dGludWU7Y2FzZSA1MTI0OmNhc2UgMzU2NzA6cz0iMWkiO2JyZWFrO2Nhc2Ug MzU2Njc6Y2FzZSAzNTY3MTpzPSIyaSIsZj0yO2JyZWFrO2Nhc2UgMzU2Njg6 Y2FzZSAzNTY3MjpzPSIzaSIsZj0zO2JyZWFrO2Nhc2UgMzU2Njk6Y2FzZSAz NTY3MzpzPSI0aSIsZj00O2JyZWFrO2Nhc2UgNTEyNjpzPSIxZiI7YnJlYWs7 Y2FzZSAzNTY2NDpzPSIyZiIsZj0yO2JyZWFrO2Nhc2UgMzU2NjU6cz0iM2Yi LGY9MzticmVhaztjYXNlIDM1NjY2OnM9IjRmIixmPTQ7YnJlYWs7Y2FzZSAz NTY3NDpzPSJNYXRyaXgyZnYiO2JyZWFrO2Nhc2UgMzU2NzU6cz0iTWF0cml4 M2Z2IjticmVhaztjYXNlIDM1Njc2OnM9Ik1hdHJpeDRmdiJ9aWYocihjLCIu dW5pZm9ybSIscywiKCIsZywiLCIpLCJNIj09PXMuY2hhckF0KDApKXtnPU1h dGgucG93KHAtMzU2NzQrMiwyKTt2YXIgbT10Lmdsb2JhbC5kZWYoIm5ldyBG bG9hdDMyQXJyYXkoIixnLCIpIik7cigiZmFsc2UsKEFycmF5LmlzQXJyYXko IixoLCIpfHwiLGgsIiBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSk/IixoLCI6 KCIsaShnLGZ1bmN0aW9uKHQpe3JldHVybiBtKyJbIit0KyJdPSIraCsiWyIr dCsiXSJ9KSwiLCIsbSwiKSIpfWVsc2UgcigxPGY/aShmLGZ1bmN0aW9uKHQp e3JldHVybiBoKyJbIit0KyJdIn0pOmgpO3IoIik7Iil9fWZ1bmN0aW9uIFYo dCxlLHIsbil7ZnVuY3Rpb24gYShhKXt2YXIgaT1mW2FdO3JldHVybiBpP2ku Y29udGV4dERlcCYmbi5jb250ZXh0RHluYW1pY3x8aS5wcm9wRGVwP2kuYXBw ZW5kKHQscik6aS5hcHBlbmQodCxlKTplLmRlZihoLCIuIixhKX1mdW5jdGlv biBpKCl7ZnVuY3Rpb24gdCgpe3IobCwiLmRyYXdFbGVtZW50c0luc3RhbmNl ZEFOR0xFKCIsW2QsdixtLGcrIjw8KCgiK20rIi01MTIxKT4+MSkiLHNdLCIp OyIpfWZ1bmN0aW9uIGUoKXtyKGwsIi5kcmF3QXJyYXlzSW5zdGFuY2VkQU5H TEUoIixbZCxnLHYsc10sIik7Iil9cD95P3QoKToocigiaWYoIixwLCIpeyIp LHQoKSxyKCJ9ZWxzZXsiKSxlKCkscigifSIpKTplKCl9ZnVuY3Rpb24gbygp e2Z1bmN0aW9uIHQoKXtyKHUrIi5kcmF3RWxlbWVudHMoIitbZCx2LG0sZysi PDwoKCIrbSsiLTUxMjEpPj4xKSJdKyIpOyIpfWZ1bmN0aW9uIGUoKXtyKHUr Ii5kcmF3QXJyYXlzKCIrW2QsZyx2XSsiKTsiKX1wP3k/dCgpOihyKCJpZigi LHAsIil7IiksdCgpLHIoIn1lbHNleyIpLGUoKSxyKCJ9IikpOmUoKX12YXIg cyxsLGM9dC5zaGFyZWQsdT1jLmdsLGg9Yy5kcmF3LGY9bi5kcmF3LHA9ZnVu Y3Rpb24oKXt2YXIgYT1mLmVsZW1lbnRzLGk9ZTtyZXR1cm4gYT8oKGEuY29u dGV4dERlcCYmbi5jb250ZXh0RHluYW1pY3x8YS5wcm9wRGVwKSYmKGk9ciks YT1hLmFwcGVuZCh0LGkpKTphPWkuZGVmKGgsIi4iLCJlbGVtZW50cyIpLGEm JmkoImlmKCIrYSsiKSIrdSsiLmJpbmRCdWZmZXIoMzQ5NjMsIithKyIuYnVm ZmVyLmJ1ZmZlcik7IiksYX0oKSxkPWEoInByaW1pdGl2ZSIpLGc9YSgib2Zm c2V0Iiksdj1mdW5jdGlvbigpe3ZhciBhPWYuY291bnQsaT1lO3JldHVybiBh PygoYS5jb250ZXh0RGVwJiZuLmNvbnRleHREeW5hbWljfHxhLnByb3BEZXAp JiYoaT1yKSxhPWEuYXBwZW5kKHQsaSkpOmE9aS5kZWYoaCwiLiIsImNvdW50 IiksYX0oKTtpZigibnVtYmVyIj09dHlwZW9mIHYpe2lmKDA9PT12KXJldHVy bn1lbHNlIHIoImlmKCIsdiwiKXsiKSxyLmV4aXQoIn0iKTtRJiYocz1hKCJp bnN0YW5jZXMiKSxsPXQuaW5zdGFuY2luZyk7dmFyIG09cCsiLnR5cGUiLHk9 Zi5lbGVtZW50cyYmRChmLmVsZW1lbnRzKTtRJiYoIm51bWJlciIhPXR5cGVv ZiBzfHwwPD1zKT8ic3RyaW5nIj09dHlwZW9mIHM/KHIoImlmKCIscywiPjAp eyIpLGkoKSxyKCJ9ZWxzZSBpZigiLHMsIjwwKXsiKSxvKCkscigifSIpKTpp KCk6bygpfWZ1bmN0aW9uIHEodCxlLHIsbixhKXtyZXR1cm4gYT0oZT1iKCkp LnByb2MoImJvZHkiLGEpLFEmJihlLmluc3RhbmNpbmc9YS5kZWYoZS5zaGFy ZWQuZXh0ZW5zaW9ucywiLmFuZ2xlX2luc3RhbmNlZF9hcnJheXMiKSksdChl LGEscixuKSxlLmNvbXBpbGUoKS5ib2R5fWZ1bmN0aW9uIEgodCxlLHIsbil7 Qyh0LGUpLE4odCxlLHIsbi5hdHRyaWJ1dGVzLGZ1bmN0aW9uKCl7cmV0dXJu ITB9KSxqKHQsZSxyLG4udW5pZm9ybXMsZnVuY3Rpb24oKXtyZXR1cm4hMH0p LFYodCxlLGUscil9ZnVuY3Rpb24gRyh0LGUscixuKXtmdW5jdGlvbiBhKCl7 cmV0dXJuITB9dC5iYXRjaElkPSJhMSIsQyh0LGUpLE4odCxlLHIsbi5hdHRy aWJ1dGVzLGEpLGoodCxlLHIsbi51bmlmb3JtcyxhKSxWKHQsZSxlLHIpfWZ1 bmN0aW9uIFkodCxlLHIsbil7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdC5jb250 ZXh0RGVwJiZvfHx0LnByb3BEZXB9ZnVuY3Rpb24gaSh0KXtyZXR1cm4hYSh0 KX1DKHQsZSk7dmFyIG89ci5jb250ZXh0RGVwLHM9ZS5kZWYoKSxsPWUuZGVm KCk7dC5zaGFyZWQucHJvcHM9bCx0LmJhdGNoSWQ9czt2YXIgYz10LnNjb3Bl KCksdT10LnNjb3BlKCk7ZShjLmVudHJ5LCJmb3IoIixzLCI9MDsiLHMsIjwi LCJhMSIsIjsrKyIscywiKXsiLGwsIj0iLCJhMCIsIlsiLHMsIl07Iix1LCJ9 IixjLmV4aXQpLHIubmVlZHNDb250ZXh0JiZBKHQsdSxyLmNvbnRleHQpLHIu bmVlZHNGcmFtZWJ1ZmZlciYmUyh0LHUsci5mcmFtZWJ1ZmZlciksTCh0LHUs ci5zdGF0ZSxhKSxyLnByb2ZpbGUmJmEoci5wcm9maWxlKSYmQih0LHUsciwh MSwhMCksbj8oTih0LGMscixuLmF0dHJpYnV0ZXMsaSksTih0LHUscixuLmF0 dHJpYnV0ZXMsYSksaih0LGMscixuLnVuaWZvcm1zLGkpLGoodCx1LHIsbi51 bmlmb3JtcyxhKSxWKHQsYyx1LHIpKTooZT10Lmdsb2JhbC5kZWYoInt9Iiks bj1yLnNoYWRlci5wcm9nVmFyLmFwcGVuZCh0LHUpLGw9dS5kZWYobiwiLmlk IiksYz11LmRlZihlLCJbIixsLCJdIiksdSh0LnNoYXJlZC5nbCwiLnVzZVBy b2dyYW0oIixuLCIucHJvZ3JhbSk7IiwiaWYoISIsYywiKXsiLGMsIj0iLGUs IlsiLGwsIl09Iix0LmxpbmsoZnVuY3Rpb24oZSl7cmV0dXJuIHEoRyx0LHIs ZSwyKX0pLCIoIixuLCIpO30iLGMsIi5jYWxsKHRoaXMsYTBbIixzLCJdLCIs cywiKTsiKSl9ZnVuY3Rpb24gVyh0LHIpe2Z1bmN0aW9uIG4oZSl7dmFyIG49 ci5zaGFkZXJbZV07biYmYS5zZXQoaS5zaGFkZXIsIi4iK2Usbi5hcHBlbmQo dCxhKSl9dmFyIGE9dC5wcm9jKCJzY29wZSIsMyk7dC5iYXRjaElkPSJhMiI7 dmFyIGk9dC5zaGFyZWQsbz1pLmN1cnJlbnQ7QSh0LGEsci5jb250ZXh0KSxy LmZyYW1lYnVmZmVyJiZyLmZyYW1lYnVmZmVyLmFwcGVuZCh0LGEpLHooT2Jq ZWN0LmtleXMoci5zdGF0ZSkpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49 ci5zdGF0ZVtlXS5hcHBlbmQodCxhKTt2KG4pP24uZm9yRWFjaChmdW5jdGlv bihyLG4pe2Euc2V0KHQubmV4dFtlXSwiWyIrbisiXSIscil9KTphLnNldChp Lm5leHQsIi4iK2Usbil9KSxCKHQsYSxyLCEwLCEwKSxbImVsZW1lbnRzIiwi b2Zmc2V0IiwiY291bnQiLCJpbnN0YW5jZXMiLCJwcmltaXRpdmUiXS5mb3JF YWNoKGZ1bmN0aW9uKGUpe3ZhciBuPXIuZHJhd1tlXTtuJiZhLnNldChpLmRy YXcsIi4iK2UsIiIrbi5hcHBlbmQodCxhKSl9KSxPYmplY3Qua2V5cyhyLnVu aWZvcm1zKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2Euc2V0KGkudW5pZm9ybXMs IlsiK2UuaWQobikrIl0iLHIudW5pZm9ybXNbbl0uYXBwZW5kKHQsYSkpfSks T2JqZWN0LmtleXMoci5hdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGUp e3ZhciBuPXIuYXR0cmlidXRlc1tlXS5hcHBlbmQodCxhKSxpPXQuc2NvcGVB dHRyaWIoZSk7T2JqZWN0LmtleXMobmV3IFopLmZvckVhY2goZnVuY3Rpb24o dCl7YS5zZXQoaSwiLiIrdCxuW3RdKX0pfSksbigidmVydCIpLG4oImZyYWci KSwwPE9iamVjdC5rZXlzKHIuc3RhdGUpLmxlbmd0aCYmKGEobywiLmRpcnR5 PXRydWU7IiksYS5leGl0KG8sIi5kaXJ0eT10cnVlOyIpKSxhKCJhMSgiLHQu c2hhcmVkLmNvbnRleHQsIixhMCwiLHQuYmF0Y2hJZCwiKTsiKX1mdW5jdGlv biBYKHQsZSxyKXt2YXIgbj1lLnN0YXRpY1tyXTtpZihuJiZmdW5jdGlvbih0 KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJiF2KHQpKXtmb3IodmFyIGU9T2Jq ZWN0LmtleXModCkscj0wO3I8ZS5sZW5ndGg7KytyKWlmKFUuaXNEeW5hbWlj KHRbZVtyXV0pKXJldHVybiEwO3JldHVybiExfX0obikpe3ZhciBhPXQuZ2xv YmFsLGk9T2JqZWN0LmtleXMobiksbz0hMSxzPSExLGw9ITEsYz10Lmdsb2Jh bC5kZWYoInt9Iik7aS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByPW5bZV07 aWYoVS5pc0R5bmFtaWMocikpImZ1bmN0aW9uIj09dHlwZW9mIHImJihyPW5b ZV09VS51bmJveChyKSksZT1GKHIsbnVsbCksbz1vfHxlLnRoaXNEZXAsbD1s fHxlLnByb3BEZXAscz1zfHxlLmNvbnRleHREZXA7ZWxzZXtzd2l0Y2goYShj LCIuIixlLCI9IiksdHlwZW9mIHIpe2Nhc2UibnVtYmVyIjphKHIpO2JyZWFr O2Nhc2Uic3RyaW5nIjphKCciJyxyLCciJyk7YnJlYWs7Y2FzZSJvYmplY3Qi OkFycmF5LmlzQXJyYXkocikmJmEoIlsiLHIuam9pbigpLCJdIik7YnJlYWs7 ZGVmYXVsdDphKHQubGluayhyKSl9YSgiOyIpfX0pLGUuZHluYW1pY1tyXT1u ZXcgVS5EeW5hbWljVmFyaWFibGUoNCx7dGhpc0RlcDpvLGNvbnRleHREZXA6 cyxwcm9wRGVwOmwscmVmOmMsYXBwZW5kOmZ1bmN0aW9uKHQsZSl7aS5mb3JF YWNoKGZ1bmN0aW9uKHIpe3ZhciBhPW5bcl07VS5pc0R5bmFtaWMoYSkmJihh PXQuaW52b2tlKGUsYSksZShjLCIuIixyLCI9IixhLCI7IikpfSl9fSksZGVs ZXRlIGUuc3RhdGljW3JdfX12YXIgWj11LlJlY29yZCxKPXthZGQ6MzI3NzQs c3VidHJhY3Q6MzI3NzgsInJldmVyc2Ugc3VidHJhY3QiOjMyNzc5fTtyLmV4 dF9ibGVuZF9taW5tYXgmJihKLm1pbj0zMjc3NSxKLm1heD0zMjc3Nik7dmFy IFE9ci5hbmdsZV9pbnN0YW5jZWRfYXJyYXlzLCQ9ci53ZWJnbF9kcmF3X2J1 ZmZlcnMsdHQ9e2RpcnR5OiEwLHByb2ZpbGU6Zy5wcm9maWxlfSxldD17fSxu dD1bXSxhdD17fSxpdD17fTt5KCJkaXRoZXIiLDMwMjQpLHkoImJsZW5kLmVu YWJsZSIsMzA0MikseCgiYmxlbmQuY29sb3IiLCJibGVuZENvbG9yIixbMCww LDAsMF0pLHgoImJsZW5kLmVxdWF0aW9uIiwiYmxlbmRFcXVhdGlvblNlcGFy YXRlIixbMzI3NzQsMzI3NzRdKSx4KCJibGVuZC5mdW5jIiwiYmxlbmRGdW5j U2VwYXJhdGUiLFsxLDAsMSwwXSkseSgiZGVwdGguZW5hYmxlIiwyOTI5LCEw KSx4KCJkZXB0aC5mdW5jIiwiZGVwdGhGdW5jIiw1MTMpLHgoImRlcHRoLnJh bmdlIiwiZGVwdGhSYW5nZSIsWzAsMV0pLHgoImRlcHRoLm1hc2siLCJkZXB0 aE1hc2siLCEwKSx4KCJjb2xvck1hc2siLCJjb2xvck1hc2siLFshMCwhMCwh MCwhMF0pLHkoImN1bGwuZW5hYmxlIiwyODg0KSx4KCJjdWxsLmZhY2UiLCJj dWxsRmFjZSIsMTAyOSkseCgiZnJvbnRGYWNlIiwiZnJvbnRGYWNlIiwyMzA1 KSx4KCJsaW5lV2lkdGgiLCJsaW5lV2lkdGgiLDEpLHkoInBvbHlnb25PZmZz ZXQuZW5hYmxlIiwzMjgyMykseCgicG9seWdvbk9mZnNldC5vZmZzZXQiLCJw b2x5Z29uT2Zmc2V0IixbMCwwXSkseSgic2FtcGxlLmFscGhhIiwzMjkyNiks eSgic2FtcGxlLmVuYWJsZSIsMzI5MjgpLHgoInNhbXBsZS5jb3ZlcmFnZSIs InNhbXBsZUNvdmVyYWdlIixbMSwhMV0pLHkoInN0ZW5jaWwuZW5hYmxlIiwy OTYwKSx4KCJzdGVuY2lsLm1hc2siLCJzdGVuY2lsTWFzayIsLTEpLHgoInN0 ZW5jaWwuZnVuYyIsInN0ZW5jaWxGdW5jIixbNTE5LDAsLTFdKSx4KCJzdGVu Y2lsLm9wRnJvbnQiLCJzdGVuY2lsT3BTZXBhcmF0ZSIsWzEwMjgsNzY4MCw3 NjgwLDc2ODBdKSx4KCJzdGVuY2lsLm9wQmFjayIsInN0ZW5jaWxPcFNlcGFy YXRlIixbMTAyOSw3NjgwLDc2ODAsNzY4MF0pLHkoInNjaXNzb3IuZW5hYmxl IiwzMDg5KSx4KCJzY2lzc29yLmJveCIsInNjaXNzb3IiLFswLDAsdC5kcmF3 aW5nQnVmZmVyV2lkdGgsdC5kcmF3aW5nQnVmZmVySGVpZ2h0XSkseCgidmll d3BvcnQiLCJ2aWV3cG9ydCIsWzAsMCx0LmRyYXdpbmdCdWZmZXJXaWR0aCx0 LmRyYXdpbmdCdWZmZXJIZWlnaHRdKTt2YXIgb3Q9e2dsOnQsY29udGV4dDpw LHN0cmluZ3M6ZSxuZXh0OmV0LGN1cnJlbnQ6dHQsZHJhdzpmLGVsZW1lbnRz Om8sYnVmZmVyOmEsc2hhZGVyOmgsYXR0cmlidXRlczp1LnN0YXRlLHVuaWZv cm1zOmMsZnJhbWVidWZmZXI6bCxleHRlbnNpb25zOnIsdGltZXI6ZCxpc0J1 ZmZlckFyZ3M6T30sc3Q9e3ByaW1UeXBlczpydCxjb21wYXJlRnVuY3M6a3Qs YmxlbmRGdW5jczp3dCxibGVuZEVxdWF0aW9uczpKLHN0ZW5jaWxPcHM6VHQs Z2xUeXBlczpLLG9yaWVudGF0aW9uVHlwZTpNdH07JCYmKHN0LmJhY2tCdWZm ZXI9WzEwMjldLHN0LmRyYXdCdWZmZXI9aShuLm1heERyYXdidWZmZXJzLGZ1 bmN0aW9uKHQpe3JldHVybiAwPT09dD9bMF06aSh0LGZ1bmN0aW9uKHQpe3Jl dHVybiAzNjA2NCt0fSl9KSk7dmFyIGx0PTA7cmV0dXJue25leHQ6ZXQsY3Vy cmVudDp0dCxwcm9jczpmdW5jdGlvbigpe3ZhciB0PWIoKSxlPXQucHJvYygi cG9sbCIpLHI9dC5wcm9jKCJyZWZyZXNoIiksYT10LmJsb2NrKCk7ZShhKSxy KGEpO3ZhciBvLHM9dC5zaGFyZWQsbD1zLmdsLGM9cy5uZXh0LHU9cy5jdXJy ZW50O2EodSwiLmRpcnR5PWZhbHNlOyIpLFModCxlKSxTKHQscixudWxsLCEw KSxRJiYobz10LmxpbmsoUSkpO2Zvcih2YXIgaD0wO2g8bi5tYXhBdHRyaWJ1 dGVzOysraCl7dmFyIGY9ci5kZWYocy5hdHRyaWJ1dGVzLCJbIixoLCJdIiks cD10LmNvbmQoZiwiLmJ1ZmZlciIpO3AudGhlbihsLCIuZW5hYmxlVmVydGV4 QXR0cmliQXJyYXkoIixoLCIpOyIsbCwiLmJpbmRCdWZmZXIoIiwzNDk2Miwi LCIsZiwiLmJ1ZmZlci5idWZmZXIpOyIsbCwiLnZlcnRleEF0dHJpYlBvaW50 ZXIoIixoLCIsIixmLCIuc2l6ZSwiLGYsIi50eXBlLCIsZiwiLm5vcm1hbGl6 ZWQsIixmLCIuc3RyaWRlLCIsZiwiLm9mZnNldCk7IikuZWxzZShsLCIuZGlz YWJsZVZlcnRleEF0dHJpYkFycmF5KCIsaCwiKTsiLGwsIi52ZXJ0ZXhBdHRy aWI0ZigiLGgsIiwiLGYsIi54LCIsZiwiLnksIixmLCIueiwiLGYsIi53KTsi LGYsIi5idWZmZXI9bnVsbDsiKSxyKHApLFEmJnIobywiLnZlcnRleEF0dHJp YkRpdmlzb3JBTkdMRSgiLGgsIiwiLGYsIi5kaXZpc29yKTsiKX1yZXR1cm4g T2JqZWN0LmtleXMoYXQpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIGk9YXRb bl0sbz1hLmRlZihjLCIuIixuKSxzPXQuYmxvY2soKTtzKCJpZigiLG8sIil7 IixsLCIuZW5hYmxlKCIsaSwiKX1lbHNleyIsbCwiLmRpc2FibGUoIixpLCIp fSIsdSwiLiIsbiwiPSIsbywiOyIpLHIocyksZSgiaWYoIixvLCIhPT0iLHUs Ii4iLG4sIil7IixzLCJ9Iil9KSxPYmplY3Qua2V5cyhpdCkuZm9yRWFjaChm dW5jdGlvbihuKXt2YXIgbyxzLGg9aXRbbl0sZj10dFtuXSxwPXQuYmxvY2so KTtwKGwsIi4iLGgsIigiKSx2KGYpPyhoPWYubGVuZ3RoLG89dC5nbG9iYWwu ZGVmKGMsIi4iLG4pLHM9dC5nbG9iYWwuZGVmKHUsIi4iLG4pLHAoaShoLGZ1 bmN0aW9uKHQpe3JldHVybiBvKyJbIit0KyJdIn0pLCIpOyIsaShoLGZ1bmN0 aW9uKHQpe3JldHVybiBzKyJbIit0KyJdPSIrbysiWyIrdCsiXTsifSkuam9p bigiIikpLGUoImlmKCIsaShoLGZ1bmN0aW9uKHQpe3JldHVybiBvKyJbIit0 KyJdIT09IitzKyJbIit0KyJdIn0pLmpvaW4oInx8IiksIil7IixwLCJ9Iikp OihvPWEuZGVmKGMsIi4iLG4pLHM9YS5kZWYodSwiLiIsbikscChvLCIpOyIs dSwiLiIsbiwiPSIsbywiOyIpLGUoImlmKCIsbywiIT09IixzLCIpeyIscCwi fSIpKSxyKHApfSksdC5jb21waWxlKCl9KCksY29tcGlsZTpmdW5jdGlvbih0 LGUscixuLGEpe3ZhciBpPWIoKTtyZXR1cm4gaS5zdGF0cz1pLmxpbmsoYSks T2JqZWN0LmtleXMoZS5zdGF0aWMpLmZvckVhY2goZnVuY3Rpb24odCl7WChp LGUsdCl9KSxfdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe1goaSx0LGUpfSkscj1N KHQsZSxyLG4pLGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5wcm9jKCJkcmF3Iiwx KTtDKHQsciksQSh0LHIsZS5jb250ZXh0KSxTKHQscixlLmZyYW1lYnVmZmVy KSxFKHQscixlKSxMKHQscixlLnN0YXRlKSxCKHQscixlLCExLCEwKTt2YXIg bj1lLnNoYWRlci5wcm9nVmFyLmFwcGVuZCh0LHIpO2lmKHIodC5zaGFyZWQu Z2wsIi51c2VQcm9ncmFtKCIsbiwiLnByb2dyYW0pOyIpLGUuc2hhZGVyLnBy b2dyYW0pSCh0LHIsZSxlLnNoYWRlci5wcm9ncmFtKTtlbHNle3ZhciBhPXQu Z2xvYmFsLmRlZigie30iKSxpPXIuZGVmKG4sIi5pZCIpLG89ci5kZWYoYSwi WyIsaSwiXSIpO3IodC5jb25kKG8pLnRoZW4obywiLmNhbGwodGhpcyxhMCk7 IikuZWxzZShvLCI9IixhLCJbIixpLCJdPSIsdC5saW5rKGZ1bmN0aW9uKHIp e3JldHVybiBxKEgsdCxlLHIsMSl9KSwiKCIsbiwiKTsiLG8sIi5jYWxsKHRo aXMsYTApOyIpKX0wPE9iamVjdC5rZXlzKGUuc3RhdGUpLmxlbmd0aCYmcih0 LnNoYXJlZC5jdXJyZW50LCIuZGlydHk9dHJ1ZTsiKX0oaSxyKSxXKGksciks ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQpe3JldHVybiB0LmNvbnRleHRE ZXAmJmF8fHQucHJvcERlcH12YXIgbj10LnByb2MoImJhdGNoIiwyKTt0LmJh dGNoSWQ9IjAiLEModCxuKTt2YXIgYT0hMSxpPSEwO09iamVjdC5rZXlzKGUu Y29udGV4dCkuZm9yRWFjaChmdW5jdGlvbih0KXthPWF8fGUuY29udGV4dFt0 XS5wcm9wRGVwfSksYXx8KEEodCxuLGUuY29udGV4dCksaT0hMSk7dmFyIG89 ITE7aWYoKHM9ZS5mcmFtZWJ1ZmZlcik/KHMucHJvcERlcD9hPW89ITA6cy5j b250ZXh0RGVwJiZhJiYobz0hMCksb3x8Uyh0LG4scykpOlModCxuLG51bGwp LGUuc3RhdGUudmlld3BvcnQmJmUuc3RhdGUudmlld3BvcnQucHJvcERlcCYm KGE9ITApLEUodCxuLGUpLEwodCxuLGUuc3RhdGUsZnVuY3Rpb24odCl7cmV0 dXJuIXIodCl9KSxlLnByb2ZpbGUmJnIoZS5wcm9maWxlKXx8Qih0LG4sZSwh MSwiYTEiKSxlLmNvbnRleHREZXA9YSxlLm5lZWRzQ29udGV4dD1pLGUubmVl ZHNGcmFtZWJ1ZmZlcj1vLChpPWUuc2hhZGVyLnByb2dWYXIpLmNvbnRleHRE ZXAmJmF8fGkucHJvcERlcClZKHQsbixlLG51bGwpO2Vsc2UgaWYoaT1pLmFw cGVuZCh0LG4pLG4odC5zaGFyZWQuZ2wsIi51c2VQcm9ncmFtKCIsaSwiLnBy b2dyYW0pOyIpLGUuc2hhZGVyLnByb2dyYW0pWSh0LG4sZSxlLnNoYWRlci5w cm9ncmFtKTtlbHNle3ZhciBzPXQuZ2xvYmFsLmRlZigie30iKSxsPShvPW4u ZGVmKGksIi5pZCIpLG4uZGVmKHMsIlsiLG8sIl0iKSk7bih0LmNvbmQobCku dGhlbihsLCIuY2FsbCh0aGlzLGEwLGExKTsiKS5lbHNlKGwsIj0iLHMsIlsi LG8sIl09Iix0LmxpbmsoZnVuY3Rpb24ocil7cmV0dXJuIHEoWSx0LGUsciwy KX0pLCIoIixpLCIpOyIsbCwiLmNhbGwodGhpcyxhMCxhMSk7IikpfTA8T2Jq ZWN0LmtleXMoZS5zdGF0ZSkubGVuZ3RoJiZuKHQuc2hhcmVkLmN1cnJlbnQs Ii5kaXJ0eT10cnVlOyIpfShpLHIpLGkuY29tcGlsZSgpfX19ZnVuY3Rpb24g Tih0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKWlmKHRbcl09PT1l KXJldHVybiByO3JldHVybi0xfXZhciBqPWZ1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPU9iamVjdC5rZXlzKGUpLG49MDtuPHIubGVuZ3RoOysrbil0W3Jbbl1d PWVbcltuXV07cmV0dXJuIHR9LFY9MCxVPXtEeW5hbWljVmFyaWFibGU6dCxk ZWZpbmU6ZnVuY3Rpb24ocixuKXtyZXR1cm4gbmV3IHQocixlKG4rIiIpKX0s aXNEeW5hbWljOmZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVv ZiBlJiYhZS5fcmVnbFR5cGV8fGUgaW5zdGFuY2VvZiB0fSx1bmJveDpmdW5j dGlvbihlLHIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP25ldyB0KDAs ZSk6ZX0sYWNjZXNzb3I6ZX0scT17bmV4dDoiZnVuY3Rpb24iPT10eXBlb2Yg cmVxdWVzdEFuaW1hdGlvbkZyYW1lP2Z1bmN0aW9uKHQpe3JldHVybiByZXF1 ZXN0QW5pbWF0aW9uRnJhbWUodCl9OmZ1bmN0aW9uKHQpe3JldHVybiBzZXRU aW1lb3V0KHQsMTYpfSxjYW5jZWw6ImZ1bmN0aW9uIj09dHlwZW9mIGNhbmNl bEFuaW1hdGlvbkZyYW1lP2Z1bmN0aW9uKHQpe3JldHVybiBjYW5jZWxBbmlt YXRpb25GcmFtZSh0KX06Y2xlYXJUaW1lb3V0fSxIPSJ1bmRlZmluZWQiIT10 eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9mdW5jdGlvbigp e3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX06ZnVuY3Rpb24oKXtyZXR1cm4r bmV3IERhdGV9LEc9cygpO0cuemVybz1zKCk7dmFyIFk9ZnVuY3Rpb24odCxl KXt2YXIgcj0xO2UuZXh0X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljJiYo cj10LmdldFBhcmFtZXRlcigzNDA0NykpO3ZhciBuPTEsYT0xO2Uud2ViZ2xf ZHJhd19idWZmZXJzJiYobj10LmdldFBhcmFtZXRlcigzNDg1MiksYT10Lmdl dFBhcmFtZXRlcigzNjA2MykpO3ZhciBpPSEhZS5vZXNfdGV4dHVyZV9mbG9h dDtpZihpKXtpPXQuY3JlYXRlVGV4dHVyZSgpLHQuYmluZFRleHR1cmUoMzU1 MyxpKSx0LnRleEltYWdlMkQoMzU1MywwLDY0MDgsMSwxLDAsNjQwOCw1MTI2 LG51bGwpO3ZhciBvPXQuY3JlYXRlRnJhbWVidWZmZXIoKTtpZih0LmJpbmRG cmFtZWJ1ZmZlcigzNjE2MCxvKSx0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2 MTYwLDM2MDY0LDM1NTMsaSwwKSx0LmJpbmRUZXh0dXJlKDM1NTMsbnVsbCks MzYwNTMhPT10LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoMzYxNjApKWk9ITE7 ZWxzZXt0LnZpZXdwb3J0KDAsMCwxLDEpLHQuY2xlYXJDb2xvcigxLDAsMCwx KSx0LmNsZWFyKDE2Mzg0KTt2YXIgcz1HLmFsbG9jVHlwZSg1MTI2LDQpO3Qu cmVhZFBpeGVscygwLDAsMSwxLDY0MDgsNTEyNixzKSx0LmdldEVycm9yKCk/ aT0hMToodC5kZWxldGVGcmFtZWJ1ZmZlcihvKSx0LmRlbGV0ZVRleHR1cmUo aSksaT0xPT09c1swXSksRy5mcmVlVHlwZShzKX19cmV0dXJuIHM9ITAsInVu ZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJigvTVNJRS8udGVzdChuYXZp Z2F0b3IudXNlckFnZW50KXx8L1RyaWRlbnRcLy8udGVzdChuYXZpZ2F0b3Iu YXBwVmVyc2lvbil8fC9FZGdlLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQp KXx8KHM9dC5jcmVhdGVUZXh0dXJlKCksbz1HLmFsbG9jVHlwZSg1MTIxLDM2 KSx0LmFjdGl2ZVRleHR1cmUoMzM5ODQpLHQuYmluZFRleHR1cmUoMzQwNjcs cyksdC50ZXhJbWFnZTJEKDM0MDY5LDAsNjQwOCwzLDMsMCw2NDA4LDUxMjEs byksRy5mcmVlVHlwZShvKSx0LmJpbmRUZXh0dXJlKDM0MDY3LG51bGwpLHQu ZGVsZXRlVGV4dHVyZShzKSxzPSF0LmdldEVycm9yKCkpLHtjb2xvckJpdHM6 W3QuZ2V0UGFyYW1ldGVyKDM0MTApLHQuZ2V0UGFyYW1ldGVyKDM0MTEpLHQu Z2V0UGFyYW1ldGVyKDM0MTIpLHQuZ2V0UGFyYW1ldGVyKDM0MTMpXSxkZXB0 aEJpdHM6dC5nZXRQYXJhbWV0ZXIoMzQxNCksc3RlbmNpbEJpdHM6dC5nZXRQ YXJhbWV0ZXIoMzQxNSksc3VicGl4ZWxCaXRzOnQuZ2V0UGFyYW1ldGVyKDM0 MDgpLGV4dGVuc2lvbnM6T2JqZWN0LmtleXMoZSkuZmlsdGVyKGZ1bmN0aW9u KHQpe3JldHVybiEhZVt0XX0pLG1heEFuaXNvdHJvcGljOnIsbWF4RHJhd2J1 ZmZlcnM6bixtYXhDb2xvckF0dGFjaG1lbnRzOmEscG9pbnRTaXplRGltczp0 LmdldFBhcmFtZXRlcigzMzkwMSksbGluZVdpZHRoRGltczp0LmdldFBhcmFt ZXRlcigzMzkwMiksbWF4Vmlld3BvcnREaW1zOnQuZ2V0UGFyYW1ldGVyKDMz ODYpLG1heENvbWJpbmVkVGV4dHVyZVVuaXRzOnQuZ2V0UGFyYW1ldGVyKDM1 NjYxKSxtYXhDdWJlTWFwU2l6ZTp0LmdldFBhcmFtZXRlcigzNDA3NiksbWF4 UmVuZGVyYnVmZmVyU2l6ZTp0LmdldFBhcmFtZXRlcigzNDAyNCksbWF4VGV4 dHVyZVVuaXRzOnQuZ2V0UGFyYW1ldGVyKDM0OTMwKSxtYXhUZXh0dXJlU2l6 ZTp0LmdldFBhcmFtZXRlcigzMzc5KSxtYXhBdHRyaWJ1dGVzOnQuZ2V0UGFy YW1ldGVyKDM0OTIxKSxtYXhWZXJ0ZXhVbmlmb3Jtczp0LmdldFBhcmFtZXRl cigzNjM0NyksbWF4VmVydGV4VGV4dHVyZVVuaXRzOnQuZ2V0UGFyYW1ldGVy KDM1NjYwKSxtYXhWYXJ5aW5nVmVjdG9yczp0LmdldFBhcmFtZXRlcigzNjM0 OCksbWF4RnJhZ21lbnRVbmlmb3Jtczp0LmdldFBhcmFtZXRlcigzNjM0OSks Z2xzbDp0LmdldFBhcmFtZXRlcigzNTcyNCkscmVuZGVyZXI6dC5nZXRQYXJh bWV0ZXIoNzkzNyksdmVuZG9yOnQuZ2V0UGFyYW1ldGVyKDc5MzYpLHZlcnNp b246dC5nZXRQYXJhbWV0ZXIoNzkzOCkscmVhZEZsb2F0OmksbnBvdFRleHR1 cmVDdWJlOnN9fSxXPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2Yg VWludDhBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHx0IGluc3Rh bmNlb2YgVWludDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fHQg aW5zdGFuY2VvZiBJbnQxNkFycmF5fHx0IGluc3RhbmNlb2YgSW50MzJBcnJh eXx8dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZs b2F0NjRBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fSxY PWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoZnVuY3Rp b24oZSl7cmV0dXJuIHRbZV19KX0sWj17c2hhcGU6ZnVuY3Rpb24odCl7Zm9y KHZhciBlPVtdO3QubGVuZ3RoO3Q9dFswXSllLnB1c2godC5sZW5ndGgpO3Jl dHVybiBlfSxmbGF0dGVuOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPTE7aWYo ZS5sZW5ndGgpZm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpYSo9ZVtpXTtl bHNlIGE9MDtzd2l0Y2gocj1ufHxHLmFsbG9jVHlwZShyLGEpLGUubGVuZ3Ro KXtjYXNlIDA6YnJlYWs7Y2FzZSAxOmZvcihuPWVbMF0sZT0wO2U8bjsrK2Up cltlXT10W2VdO2JyZWFrO2Nhc2UgMjpmb3Iobj1lWzBdLGU9ZVsxXSxpPWE9 MDtpPG47KytpKWZvcih2YXIgbz10W2ldLHM9MDtzPGU7KytzKXJbYSsrXT1v W3NdO2JyZWFrO2Nhc2UgMzpjKHQsZVswXSxlWzFdLGVbMl0sciwwKTticmVh aztkZWZhdWx0OiFmdW5jdGlvbiB0KGUscixuLGEsaSl7Zm9yKHZhciBvPTEs cz1uKzE7czxyLmxlbmd0aDsrK3Mpbyo9cltzXTt2YXIgbD1yW25dO2lmKDQ9 PXIubGVuZ3RoLW4pe3ZhciB1PXJbbisxXSxoPXJbbisyXTtmb3Iocj1yW24r M10scz0wO3M8bDsrK3MpYyhlW3NdLHUsaCxyLGEsaSksaSs9b31lbHNlIGZv cihzPTA7czxsOysrcyl0KGVbc10scixuKzEsYSxpKSxpKz1vfSh0LGUsMCxy LDApfXJldHVybiByfX0sSj17IltvYmplY3QgSW50OEFycmF5XSI6NTEyMCwi W29iamVjdCBJbnQxNkFycmF5XSI6NTEyMiwiW29iamVjdCBJbnQzMkFycmF5 XSI6NTEyNCwiW29iamVjdCBVaW50OEFycmF5XSI6NTEyMSwiW29iamVjdCBV aW50OENsYW1wZWRBcnJheV0iOjUxMjEsIltvYmplY3QgVWludDE2QXJyYXld Ijo1MTIzLCJbb2JqZWN0IFVpbnQzMkFycmF5XSI6NTEyNSwiW29iamVjdCBG bG9hdDMyQXJyYXldIjo1MTI2LCJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOjUx MjEsIltvYmplY3QgQXJyYXlCdWZmZXJdIjo1MTIxfSxLPXtpbnQ4OjUxMjAs aW50MTY6NTEyMixpbnQzMjo1MTI0LHVpbnQ4OjUxMjEsdWludDE2OjUxMjMs dWludDMyOjUxMjUsZmxvYXQ6NTEyNixmbG9hdDMyOjUxMjZ9LFE9e2R5bmFt aWM6MzUwNDgsc3RyZWFtOjM1MDQwLHN0YXRpYzozNTA0NH0sJD1aLmZsYXR0 ZW4sdHQ9Wi5zaGFwZSxldD1bXTtldFs1MTIwXT0xLGV0WzUxMjJdPTIsZXRb NTEyNF09NCxldFs1MTIxXT0xLGV0WzUxMjNdPTIsZXRbNTEyNV09NCxldFs1 MTI2XT00O3ZhciBydD17cG9pbnRzOjAscG9pbnQ6MCxsaW5lczoxLGxpbmU6 MSx0cmlhbmdsZXM6NCx0cmlhbmdsZTo0LCJsaW5lIGxvb3AiOjIsImxpbmUg c3RyaXAiOjMsInRyaWFuZ2xlIHN0cmlwIjo1LCJ0cmlhbmdsZSBmYW4iOjZ9 LG50PW5ldyBGbG9hdDMyQXJyYXkoMSksYXQ9bmV3IFVpbnQzMkFycmF5KG50 LmJ1ZmZlciksaXQ9Wzk5ODQsOTk4Niw5OTg1LDk5ODddLG90PVswLDY0MDks NjQxMCw2NDA3LDY0MDhdLHN0PXt9O3N0WzY0MDldPXN0WzY0MDZdPXN0WzY0 MDJdPTEsc3RbMzQwNDFdPXN0WzY0MTBdPTIsc3RbNjQwN109c3RbMzU5MDRd PTMsc3RbNjQwOF09c3RbMzU5MDZdPTQ7dmFyIGx0PW0oIkhUTUxDYW52YXNF bGVtZW50IiksY3Q9bSgiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIiksdXQ9 bSgiSW1hZ2VCaXRtYXAiKSxodD1tKCJIVE1MSW1hZ2VFbGVtZW50IiksZnQ9 bSgiSFRNTFZpZGVvRWxlbWVudCIpLHB0PU9iamVjdC5rZXlzKEopLmNvbmNh dChbbHQsY3QsdXQsaHQsZnRdKSxkdD1bXTtkdFs1MTIxXT0xLGR0WzUxMjZd PTQsZHRbMzYxOTNdPTIsZHRbNTEyM109MixkdFs1MTI1XT00O3ZhciBndD1b XTtndFszMjg1NF09MixndFszMjg1NV09MixndFszNjE5NF09MixndFszNDA0 MV09NCxndFszMzc3Nl09LjUsZ3RbMzM3NzddPS41LGd0WzMzNzc4XT0xLGd0 WzMzNzc5XT0xLGd0WzM1OTg2XT0uNSxndFszNTk4N109MSxndFszNDc5OF09 MSxndFszNTg0MF09LjUsZ3RbMzU4NDFdPS4yNSxndFszNTg0Ml09LjUsZ3Rb MzU4NDNdPS4yNSxndFszNjE5Nl09LjU7dmFyIHZ0PVtdO3Z0WzMyODU0XT0y LHZ0WzMyODU1XT0yLHZ0WzM2MTk0XT0yLHZ0WzMzMTg5XT0yLHZ0WzM2MTY4 XT0xLHZ0WzM0MDQxXT00LHZ0WzM1OTA3XT00LHZ0WzM0ODM2XT0xNix2dFsz NDg0Ml09OCx2dFszNDg0M109Njt2YXIgbXQ9ZnVuY3Rpb24odCxlLHIsbixh KXtmdW5jdGlvbiBpKHQpe3RoaXMuaWQ9YysrLHRoaXMucmVmQ291bnQ9MSx0 aGlzLnJlbmRlcmJ1ZmZlcj10LHRoaXMuZm9ybWF0PTMyODU0LHRoaXMuaGVp Z2h0PXRoaXMud2lkdGg9MCxhLnByb2ZpbGUmJih0aGlzLnN0YXRzPXtzaXpl OjB9KX1mdW5jdGlvbiBvKGUpe3ZhciByPWUucmVuZGVyYnVmZmVyO3QuYmlu ZFJlbmRlcmJ1ZmZlcigzNjE2MSxudWxsKSx0LmRlbGV0ZVJlbmRlcmJ1ZmZl cihyKSxlLnJlbmRlcmJ1ZmZlcj1udWxsLGUucmVmQ291bnQ9MCxkZWxldGUg dVtlLmlkXSxuLnJlbmRlcmJ1ZmZlckNvdW50LS19dmFyIHM9e3JnYmE0OjMy ODU0LHJnYjU2NTozNjE5NCwicmdiNSBhMSI6MzI4NTUsZGVwdGg6MzMxODks c3RlbmNpbDozNjE2OCwiZGVwdGggc3RlbmNpbCI6MzQwNDF9O2UuZXh0X3Ny Z2ImJihzLnNyZ2JhPTM1OTA3KSxlLmV4dF9jb2xvcl9idWZmZXJfaGFsZl9m bG9hdCYmKHMucmdiYTE2Zj0zNDg0MixzLnJnYjE2Zj0zNDg0MyksZS53ZWJn bF9jb2xvcl9idWZmZXJfZmxvYXQmJihzLnJnYmEzMmY9MzQ4MzYpO3ZhciBs PVtdO09iamVjdC5rZXlzKHMpLmZvckVhY2goZnVuY3Rpb24odCl7bFtzW3Rd XT10fSk7dmFyIGM9MCx1PXt9O3JldHVybiBpLnByb3RvdHlwZS5kZWNSZWY9 ZnVuY3Rpb24oKXswPj0tLXRoaXMucmVmQ291bnQmJm8odGhpcyl9LGEucHJv ZmlsZSYmKG4uZ2V0VG90YWxSZW5kZXJidWZmZXJTaXplPWZ1bmN0aW9uKCl7 dmFyIHQ9MDtyZXR1cm4gT2JqZWN0LmtleXModSkuZm9yRWFjaChmdW5jdGlv bihlKXt0Kz11W2VdLnN0YXRzLnNpemV9KSx0fSkse2NyZWF0ZTpmdW5jdGlv bihlLHIpe2Z1bmN0aW9uIG8oZSxyKXt2YXIgbj0wLGk9MCx1PTMyODU0O2lm KCJvYmplY3QiPT10eXBlb2YgZSYmZT8oInNoYXBlImluIGU/KG49MHwoaT1l LnNoYXBlKVswXSxpPTB8aVsxXSk6KCJyYWRpdXMiaW4gZSYmKG49aT0wfGUu cmFkaXVzKSwid2lkdGgiaW4gZSYmKG49MHxlLndpZHRoKSwiaGVpZ2h0Imlu IGUmJihpPTB8ZS5oZWlnaHQpKSwiZm9ybWF0ImluIGUmJih1PXNbZS5mb3Jt YXRdKSk6Im51bWJlciI9PXR5cGVvZiBlPyhuPTB8ZSxpPSJudW1iZXIiPT10 eXBlb2Ygcj8wfHI6bik6ZXx8KG49aT0xKSxuIT09Yy53aWR0aHx8aSE9PWMu aGVpZ2h0fHx1IT09Yy5mb3JtYXQpcmV0dXJuIG8ud2lkdGg9Yy53aWR0aD1u LG8uaGVpZ2h0PWMuaGVpZ2h0PWksYy5mb3JtYXQ9dSx0LmJpbmRSZW5kZXJi dWZmZXIoMzYxNjEsYy5yZW5kZXJidWZmZXIpLHQucmVuZGVyYnVmZmVyU3Rv cmFnZSgzNjE2MSx1LG4saSksYS5wcm9maWxlJiYoYy5zdGF0cy5zaXplPXZ0 W2MuZm9ybWF0XSpjLndpZHRoKmMuaGVpZ2h0KSxvLmZvcm1hdD1sW2MuZm9y bWF0XSxvfXZhciBjPW5ldyBpKHQuY3JlYXRlUmVuZGVyYnVmZmVyKCkpO3Jl dHVybiB1W2MuaWRdPWMsbi5yZW5kZXJidWZmZXJDb3VudCsrLG8oZSxyKSxv LnJlc2l6ZT1mdW5jdGlvbihlLHIpe3ZhciBuPTB8ZSxpPTB8cnx8bjtyZXR1 cm4gbj09PWMud2lkdGgmJmk9PT1jLmhlaWdodD9vOihvLndpZHRoPWMud2lk dGg9bixvLmhlaWdodD1jLmhlaWdodD1pLHQuYmluZFJlbmRlcmJ1ZmZlcigz NjE2MSxjLnJlbmRlcmJ1ZmZlciksdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2 MTYxLGMuZm9ybWF0LG4saSksYS5wcm9maWxlJiYoYy5zdGF0cy5zaXplPXZ0 W2MuZm9ybWF0XSpjLndpZHRoKmMuaGVpZ2h0KSxvKX0sby5fcmVnbFR5cGU9 InJlbmRlcmJ1ZmZlciIsby5fcmVuZGVyYnVmZmVyPWMsYS5wcm9maWxlJiYo by5zdGF0cz1jLnN0YXRzKSxvLmRlc3Ryb3k9ZnVuY3Rpb24oKXtjLmRlY1Jl ZigpfSxvfSxjbGVhcjpmdW5jdGlvbigpe1godSkuZm9yRWFjaChvKX0scmVz dG9yZTpmdW5jdGlvbigpe1godSkuZm9yRWFjaChmdW5jdGlvbihlKXtlLnJl bmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRl cmJ1ZmZlcigzNjE2MSxlLnJlbmRlcmJ1ZmZlciksdC5yZW5kZXJidWZmZXJT dG9yYWdlKDM2MTYxLGUuZm9ybWF0LGUud2lkdGgsZS5oZWlnaHQpfSksdC5i aW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfX19LHl0PVtdO3l0WzY0MDhd PTQseXRbNjQwN109Mzt2YXIgeHQ9W107eHRbNTEyMV09MSx4dFs1MTI2XT00 LHh0WzM2MTkzXT0yO3ZhciBidD1bIngiLCJ5IiwieiIsInciXSxfdD0iYmxl bmQuZnVuYyBibGVuZC5lcXVhdGlvbiBzdGVuY2lsLmZ1bmMgc3RlbmNpbC5v cEZyb250IHN0ZW5jaWwub3BCYWNrIHNhbXBsZS5jb3ZlcmFnZSB2aWV3cG9y dCBzY2lzc29yLmJveCBwb2x5Z29uT2Zmc2V0Lm9mZnNldCIuc3BsaXQoIiAi KSx3dD17MDowLDE6MSx6ZXJvOjAsb25lOjEsInNyYyBjb2xvciI6NzY4LCJv bmUgbWludXMgc3JjIGNvbG9yIjo3NjksInNyYyBhbHBoYSI6NzcwLCJvbmUg bWludXMgc3JjIGFscGhhIjo3NzEsImRzdCBjb2xvciI6Nzc0LCJvbmUgbWlu dXMgZHN0IGNvbG9yIjo3NzUsImRzdCBhbHBoYSI6NzcyLCJvbmUgbWludXMg ZHN0IGFscGhhIjo3NzMsImNvbnN0YW50IGNvbG9yIjozMjc2OSwib25lIG1p bnVzIGNvbnN0YW50IGNvbG9yIjozMjc3MCwiY29uc3RhbnQgYWxwaGEiOjMy NzcxLCJvbmUgbWludXMgY29uc3RhbnQgYWxwaGEiOjMyNzcyLCJzcmMgYWxw aGEgc2F0dXJhdGUiOjc3Nn0sa3Q9e25ldmVyOjUxMixsZXNzOjUxMywiPCI6 NTEzLGVxdWFsOjUxNCwiPSI6NTE0LCI9PSI6NTE0LCI9PT0iOjUxNCxsZXF1 YWw6NTE1LCI8PSI6NTE1LGdyZWF0ZXI6NTE2LCI+Ijo1MTYsbm90ZXF1YWw6 NTE3LCIhPSI6NTE3LCIhPT0iOjUxNyxnZXF1YWw6NTE4LCI+PSI6NTE4LGFs d2F5czo1MTl9LFR0PXswOjAsemVybzowLGtlZXA6NzY4MCxyZXBsYWNlOjc2 ODEsaW5jcmVtZW50Ojc2ODIsZGVjcmVtZW50Ojc2ODMsImluY3JlbWVudCB3 cmFwIjozNDA1NSwiZGVjcmVtZW50IHdyYXAiOjM0MDU2LGludmVydDo1Mzg2 fSxNdD17Y3c6MjMwNCxjY3c6MjMwNX0sQXQ9bmV3IEkoITEsITEsITEsZnVu Y3Rpb24oKXt9KTtyZXR1cm4gZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe2lm KDA9PT1aLmxlbmd0aCl3JiZ3LnVwZGF0ZSgpLCQ9bnVsbDtlbHNleyQ9cS5u ZXh0KGUpLGgoKTtmb3IodmFyIHQ9Wi5sZW5ndGgtMTswPD10Oy0tdCl7dmFy IHI9Wlt0XTtyJiZyKFAsbnVsbCwwKX12LmZsdXNoKCksdyYmdy51cGRhdGUo KX19ZnVuY3Rpb24gcigpeyEkJiYwPFoubGVuZ3RoJiYoJD1xLm5leHQoZSkp fWZ1bmN0aW9uIG4oKXskJiYocS5jYW5jZWwoZSksJD1udWxsKX1mdW5jdGlv biBpKHQpe3QucHJldmVudERlZmF1bHQoKSxuKCksSi5mb3JFYWNoKGZ1bmN0 aW9uKHQpe3QoKX0pfWZ1bmN0aW9uIG8odCl7di5nZXRFcnJvcigpLHkucmVz dG9yZSgpLEQucmVzdG9yZSgpLHoucmVzdG9yZSgpLFIucmVzdG9yZSgpLEYu cmVzdG9yZSgpLFYucmVzdG9yZSgpLHcmJncucmVzdG9yZSgpLEcucHJvY3Mu cmVmcmVzaCgpLHIoKSxLLmZvckVhY2goZnVuY3Rpb24odCl7dCgpfSl9ZnVu Y3Rpb24gcyh0KXtmdW5jdGlvbiBlKHQpe3ZhciBlPXt9LHI9e307cmV0dXJu IE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIGE9dFtu XTtVLmlzRHluYW1pYyhhKT9yW25dPVUudW5ib3goYSxuKTplW25dPWF9KSx7 ZHluYW1pYzpyLHN0YXRpYzplfX12YXIgcj1lKHQuY29udGV4dHx8e30pLG49 ZSh0LnVuaWZvcm1zfHx7fSksYT1lKHQuYXR0cmlidXRlc3x8e30pLGk9ZShm dW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2lmKHQgaW4gcil7dmFyIGU9clt0 XTtkZWxldGUgclt0XSxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9u KG4pe3JbdCsiLiIrbl09ZVtuXX0pfX12YXIgcj1qKHt9LHQpO3JldHVybiBk ZWxldGUgci51bmlmb3JtcyxkZWxldGUgci5hdHRyaWJ1dGVzLGRlbGV0ZSBy LmNvbnRleHQsInN0ZW5jaWwiaW4gciYmci5zdGVuY2lsLm9wJiYoci5zdGVu Y2lsLm9wQmFjaz1yLnN0ZW5jaWwub3BGcm9udD1yLnN0ZW5jaWwub3AsZGVs ZXRlIHIuc3RlbmNpbC5vcCksZSgiYmxlbmQiKSxlKCJkZXB0aCIpLGUoImN1 bGwiKSxlKCJzdGVuY2lsIiksZSgicG9seWdvbk9mZnNldCIpLGUoInNjaXNz b3IiKSxlKCJzYW1wbGUiKSxyfSh0KSk7dD17Z3B1VGltZTowLGNwdVRpbWU6 MCxjb3VudDowfTt2YXIgbz0ocj1HLmNvbXBpbGUoaSxhLG4scix0KSkuZHJh dyxzPXIuYmF0Y2gsbD1yLnNjb3BlLGM9W107cmV0dXJuIGooZnVuY3Rpb24o dCxlKXt2YXIgcjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gbC5j YWxsKHRoaXMsbnVsbCx0LDApO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKWlm KCJudW1iZXIiPT10eXBlb2YgdClmb3Iocj0wO3I8dDsrK3IpbC5jYWxsKHRo aXMsbnVsbCxlLHIpO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJu IGwuY2FsbCh0aGlzLHQsZSwwKTtmb3Iocj0wO3I8dC5sZW5ndGg7KytyKWwu Y2FsbCh0aGlzLHRbcl0sZSxyKX1lbHNlIGlmKCJudW1iZXIiPT10eXBlb2Yg dCl7aWYoMDx0KXJldHVybiBzLmNhbGwodGhpcyxmdW5jdGlvbih0KXtmb3Io O2MubGVuZ3RoPHQ7KWMucHVzaChudWxsKTtyZXR1cm4gY30oMHx0KSwwfHQp fWVsc2V7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIG8uY2FsbCh0aGlz LHQpO2lmKHQubGVuZ3RoKXJldHVybiBzLmNhbGwodGhpcyx0LHQubGVuZ3Ro KX19LHtzdGF0czp0fSl9ZnVuY3Rpb24gbCh0LGUpe3ZhciByPTA7Ry5wcm9j cy5wb2xsKCk7dmFyIG49ZS5jb2xvcjtuJiYodi5jbGVhckNvbG9yKCtuWzBd fHwwLCtuWzFdfHwwLCtuWzJdfHwwLCtuWzNdfHwwKSxyfD0xNjM4NCksImRl cHRoImluIGUmJih2LmNsZWFyRGVwdGgoK2UuZGVwdGgpLHJ8PTI1NiksInN0 ZW5jaWwiaW4gZSYmKHYuY2xlYXJTdGVuY2lsKDB8ZS5zdGVuY2lsKSxyfD0x MDI0KSx2LmNsZWFyKHIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIFoucHVzaCh0 KSxyKCkse2NhbmNlbDpmdW5jdGlvbigpe3ZhciBlPU4oWix0KTtaW2VdPWZ1 bmN0aW9uIHQoKXt2YXIgZT1OKFosdCk7WltlXT1aW1oubGVuZ3RoLTFdLC0t Wi5sZW5ndGgsMD49Wi5sZW5ndGgmJm4oKX19fX1mdW5jdGlvbiB1KCl7dmFy IHQ9Vy52aWV3cG9ydCxlPVcuc2Npc3Nvcl9ib3g7dFswXT10WzFdPWVbMF09 ZVsxXT0wLFAudmlld3BvcnRXaWR0aD1QLmZyYW1lYnVmZmVyV2lkdGg9UC5k cmF3aW5nQnVmZmVyV2lkdGg9dFsyXT1lWzJdPXYuZHJhd2luZ0J1ZmZlcldp ZHRoLFAudmlld3BvcnRIZWlnaHQ9UC5mcmFtZWJ1ZmZlckhlaWdodD1QLmRy YXdpbmdCdWZmZXJIZWlnaHQ9dFszXT1lWzNdPXYuZHJhd2luZ0J1ZmZlckhl aWdodH1mdW5jdGlvbiBoKCl7UC50aWNrKz0xLFAudGltZT1nKCksdSgpLEcu cHJvY3MucG9sbCgpfWZ1bmN0aW9uIGYoKXt1KCksRy5wcm9jcy5yZWZyZXNo KCksdyYmdy51cGRhdGUoKX1mdW5jdGlvbiBnKCl7cmV0dXJuKEgoKS1rKS8x ZTN9aWYoISh0PWEodCkpKXJldHVybiBudWxsO3ZhciB2PXQuZ2wsbT12Lmdl dENvbnRleHRBdHRyaWJ1dGVzKCk7di5pc0NvbnRleHRMb3N0KCk7dmFyIHk9 ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKGUpe3ZhciByO2U9ZS50b0xvd2Vy Q2FzZSgpO3RyeXtyPW5bZV09dC5nZXRFeHRlbnNpb24oZSl9Y2F0Y2godCl7 fXJldHVybiEhcn1mb3IodmFyIG49e30sYT0wO2E8ZS5leHRlbnNpb25zLmxl bmd0aDsrK2Epe3ZhciBpPWUuZXh0ZW5zaW9uc1thXTtpZighcihpKSlyZXR1 cm4gZS5vbkRlc3Ryb3koKSxlLm9uRG9uZSgnIicraSsnIiBleHRlbnNpb24g aXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBXZWJHTCBjb250ZXh0 LCB0cnkgdXBncmFkaW5nIHlvdXIgc3lzdGVtIG9yIGEgZGlmZmVyZW50IGJy b3dzZXInKSxudWxsfXJldHVybiBlLm9wdGlvbmFsRXh0ZW5zaW9ucy5mb3JF YWNoKHIpLHtleHRlbnNpb25zOm4scmVzdG9yZTpmdW5jdGlvbigpe09iamVj dC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24odCl7aWYoblt0XSYmIXIodCkp dGhyb3cgRXJyb3IoIihyZWdsKTogZXJyb3IgcmVzdG9yaW5nIGV4dGVuc2lv biAiK3QpfSl9fX0odix0KTtpZigheSlyZXR1cm4gbnVsbDt2YXIgeD1mdW5j dGlvbigpe3ZhciB0PXsiIjowfSxlPVsiIl07cmV0dXJue2lkOmZ1bmN0aW9u KHIpe3ZhciBuPXRbcl07cmV0dXJuIG58fChuPXRbcl09ZS5sZW5ndGgsZS5w dXNoKHIpLG4pfSxzdHI6ZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19fX0oKSxi PXtidWZmZXJDb3VudDowLGVsZW1lbnRzQ291bnQ6MCxmcmFtZWJ1ZmZlckNv dW50OjAsc2hhZGVyQ291bnQ6MCx0ZXh0dXJlQ291bnQ6MCxjdWJlQ291bnQ6 MCxyZW5kZXJidWZmZXJDb3VudDowLG1heFRleHR1cmVVbml0czowfSxfPXku ZXh0ZW5zaW9ucyx3PWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMu ZW5kUXVlcnlJbmRleD10aGlzLnN0YXJ0UXVlcnlJbmRleD0tMSx0aGlzLnN1 bT0wLHRoaXMuc3RhdHM9bnVsbH1mdW5jdGlvbiBuKHQsZSxuKXt2YXIgYT1v LnBvcCgpfHxuZXcgcjthLnN0YXJ0UXVlcnlJbmRleD10LGEuZW5kUXVlcnlJ bmRleD1lLGEuc3VtPTAsYS5zdGF0cz1uLHMucHVzaChhKX1pZighZS5leHRf ZGlzam9pbnRfdGltZXJfcXVlcnkpcmV0dXJuIG51bGw7dmFyIGE9W10saT1b XSxvPVtdLHM9W10sbD1bXSxjPVtdO3JldHVybntiZWdpblF1ZXJ5OmZ1bmN0 aW9uKHQpe3ZhciByPWEucG9wKCl8fGUuZXh0X2Rpc2pvaW50X3RpbWVyX3F1 ZXJ5LmNyZWF0ZVF1ZXJ5RVhUKCk7ZS5leHRfZGlzam9pbnRfdGltZXJfcXVl cnkuYmVnaW5RdWVyeUVYVCgzNTAwNyxyKSxpLnB1c2gociksbihpLmxlbmd0 aC0xLGkubGVuZ3RoLHQpfSxlbmRRdWVyeTpmdW5jdGlvbigpe2UuZXh0X2Rp c2pvaW50X3RpbWVyX3F1ZXJ5LmVuZFF1ZXJ5RVhUKDM1MDA3KX0scHVzaFNj b3BlU3RhdHM6bix1cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdCxyO2lmKDAhPT0o dD1pLmxlbmd0aCkpe2MubGVuZ3RoPU1hdGgubWF4KGMubGVuZ3RoLHQrMSks bC5sZW5ndGg9TWF0aC5tYXgobC5sZW5ndGgsdCsxKSxsWzBdPTA7dmFyIG49 Y1swXT0wO2ZvcihyPXQ9MDtyPGkubGVuZ3RoOysrcil7dmFyIHU9aVtyXTtl LmV4dF9kaXNqb2ludF90aW1lcl9xdWVyeS5nZXRRdWVyeU9iamVjdEVYVCh1 LDM0OTE5KT8obis9ZS5leHRfZGlzam9pbnRfdGltZXJfcXVlcnkuZ2V0UXVl cnlPYmplY3RFWFQodSwzNDkxOCksYS5wdXNoKHUpKTppW3QrK109dSxsW3Ir MV09bixjW3IrMV09dH1mb3IoaS5sZW5ndGg9dCxyPXQ9MDtyPHMubGVuZ3Ro Oysrcil7dmFyIGg9KG49c1tyXSkuc3RhcnRRdWVyeUluZGV4O3U9bi5lbmRR dWVyeUluZGV4LG4uc3VtKz1sW3VdLWxbaF0saD1jW2hdLCh1PWNbdV0pPT09 aD8obi5zdGF0cy5ncHVUaW1lKz1uLnN1bS8xZTYsby5wdXNoKG4pKToobi5z dGFydFF1ZXJ5SW5kZXg9aCxuLmVuZFF1ZXJ5SW5kZXg9dSxzW3QrK109bil9 cy5sZW5ndGg9dH19LGdldE51bVBlbmRpbmdRdWVyaWVzOmZ1bmN0aW9uKCl7 cmV0dXJuIGkubGVuZ3RofSxjbGVhcjpmdW5jdGlvbigpe2EucHVzaC5hcHBs eShhLGkpO2Zvcih2YXIgdD0wO3Q8YS5sZW5ndGg7dCsrKWUuZXh0X2Rpc2pv aW50X3RpbWVyX3F1ZXJ5LmRlbGV0ZVF1ZXJ5RVhUKGFbdF0pO2kubGVuZ3Ro PTAsYS5sZW5ndGg9MH0scmVzdG9yZTpmdW5jdGlvbigpe2kubGVuZ3RoPTAs YS5sZW5ndGg9MH19fSgwLF8pLGs9SCgpLEw9di5kcmF3aW5nQnVmZmVyV2lk dGgsQz12LmRyYXdpbmdCdWZmZXJIZWlnaHQsUD17dGljazowLHRpbWU6MCx2 aWV3cG9ydFdpZHRoOkwsdmlld3BvcnRIZWlnaHQ6QyxmcmFtZWJ1ZmZlcldp ZHRoOkwsZnJhbWVidWZmZXJIZWlnaHQ6QyxkcmF3aW5nQnVmZmVyV2lkdGg6 TCxkcmF3aW5nQnVmZmVySGVpZ2h0OkMscGl4ZWxSYXRpbzp0LnBpeGVsUmF0 aW99LE89WSh2LF8pLHo9KEw9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHQ9ci5t YXhBdHRyaWJ1dGVzLGU9QXJyYXkodCkscj0wO3I8dDsrK3IpZVtyXT1uZXcg QTtyZXR1cm57UmVjb3JkOkEsc2NvcGU6e30sc3RhdGU6ZX19KHYsXyxPKSxw KHYsYix0LEwpKSxJPWQodixfLHosYiksRD1TKHYseCxiLHQpLFI9VCh2LF8s TyxmdW5jdGlvbigpe0cucHJvY3MucG9sbCgpfSxQLGIsdCksRj1tdCh2LF8s MCxiLHQpLFY9TSh2LF8sTyxSLEYsYiksRz1CKHYseCxfLE8seixJLDAsVix7 fSxMLEQse2VsZW1lbnRzOm51bGwscHJpbWl0aXZlOjQsY291bnQ6LTEsb2Zm c2V0OjAsaW5zdGFuY2VzOi0xfSxQLHcsdCksVz0oeD1FKHYsVixHLnByb2Nz LnBvbGwsUCksRy5uZXh0KSxYPXYuY2FudmFzLFo9W10sSj1bXSxLPVtdLFE9 W3Qub25EZXN0cm95XSwkPW51bGw7WCYmKFguYWRkRXZlbnRMaXN0ZW5lcigi d2ViZ2xjb250ZXh0bG9zdCIsaSwhMSksWC5hZGRFdmVudExpc3RlbmVyKCJ3 ZWJnbGNvbnRleHRyZXN0b3JlZCIsbywhMSkpO3ZhciB0dD1WLnNldEZCTz1z KHtmcmFtZWJ1ZmZlcjpVLmRlZmluZS5jYWxsKG51bGwsMSwiZnJhbWVidWZm ZXIiKX0pO3JldHVybiBmKCksbT1qKHMse2NsZWFyOmZ1bmN0aW9uKHQpe2lm KCJmcmFtZWJ1ZmZlciJpbiB0KWlmKHQuZnJhbWVidWZmZXImJiJmcmFtZWJ1 ZmZlckN1YmUiPT09dC5mcmFtZWJ1ZmZlcl9yZWdsVHlwZSlmb3IodmFyIGU9 MDs2PmU7KytlKXR0KGooe2ZyYW1lYnVmZmVyOnQuZnJhbWVidWZmZXIuZmFj ZXNbZV19LHQpLGwpO2Vsc2UgdHQodCxsKTtlbHNlIGwoMCx0KX0scHJvcDpV LmRlZmluZS5iaW5kKG51bGwsMSksY29udGV4dDpVLmRlZmluZS5iaW5kKG51 bGwsMiksdGhpczpVLmRlZmluZS5iaW5kKG51bGwsMyksZHJhdzpzKHt9KSxi dWZmZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHouY3JlYXRlKHQsMzQ5NjIsITEs ITEpfSxlbGVtZW50czpmdW5jdGlvbih0KXtyZXR1cm4gSS5jcmVhdGUodCwh MSl9LHRleHR1cmU6Ui5jcmVhdGUyRCxjdWJlOlIuY3JlYXRlQ3ViZSxyZW5k ZXJidWZmZXI6Ri5jcmVhdGUsZnJhbWVidWZmZXI6Vi5jcmVhdGUsZnJhbWVi dWZmZXJDdWJlOlYuY3JlYXRlQ3ViZSxhdHRyaWJ1dGVzOm0sZnJhbWU6Yyxv bjpmdW5jdGlvbih0LGUpe3ZhciByO3N3aXRjaCh0KXtjYXNlImZyYW1lIjpy ZXR1cm4gYyhlKTtjYXNlImxvc3QiOnI9SjticmVhaztjYXNlInJlc3RvcmUi OnI9SzticmVhaztjYXNlImRlc3Ryb3kiOnI9UX1yZXR1cm4gci5wdXNoKGUp LHtjYW5jZWw6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoOysr dClpZihyW3RdPT09ZSl7clt0XT1yW3IubGVuZ3RoLTFdLHIucG9wKCk7YnJl YWt9fX19LGxpbWl0czpPLGhhc0V4dGVuc2lvbjpmdW5jdGlvbih0KXtyZXR1 cm4gMDw9Ty5leHRlbnNpb25zLmluZGV4T2YodC50b0xvd2VyQ2FzZSgpKX0s cmVhZDp4LGRlc3Ryb3k6ZnVuY3Rpb24oKXtaLmxlbmd0aD0wLG4oKSxYJiYo WC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixpKSxY LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixv KSksRC5jbGVhcigpLFYuY2xlYXIoKSxGLmNsZWFyKCksUi5jbGVhcigpLEku Y2xlYXIoKSx6LmNsZWFyKCksdyYmdy5jbGVhcigpLFEuZm9yRWFjaChmdW5j dGlvbih0KXt0KCl9KX0sX2dsOnYsX3JlZnJlc2g6Zixwb2xsOmZ1bmN0aW9u KCl7aCgpLHcmJncudXBkYXRlKCl9LG5vdzpnLHN0YXRzOmJ9KSx0Lm9uRG9u ZShudWxsLG0pLG19fSwib2JqZWN0Ij09dHlwZW9mIHImJiJ1bmRlZmluZWQi IT10eXBlb2YgZT9lLmV4cG9ydHM9YSgpOm4uY3JlYXRlUkVHTD1hKCl9LHt9 XSw1MDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4sYT0i IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZigic3RyaW5nIiE9dHlwZW9m IHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhwZWN0ZWQgYSBzdHJpbmciKTtp ZigxPT09ZSlyZXR1cm4gdDtpZigyPT09ZSlyZXR1cm4gdCt0O3ZhciByPXQu bGVuZ3RoKmU7aWYobiE9PXR8fCJ1bmRlZmluZWQiPT10eXBlb2YgbiluPXQs YT0iIjtlbHNlIGlmKGEubGVuZ3RoPj1yKXJldHVybiBhLnN1YnN0cigwLHIp O2Zvcig7cj5hLmxlbmd0aCYmZT4xOykxJmUmJihhKz10KSxlPj49MSx0Kz10 O3JldHVybiBhPShhKz10KS5zdWJzdHIoMCxyKX19LHt9XSw1MDM6W2Z1bmN0 aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZS5leHBvcnRzPXQucGVyZm9ybWFu Y2UmJnQucGVyZm9ybWFuY2Uubm93P2Z1bmN0aW9uKCl7cmV0dXJuIHBlcmZv cm1hbmNlLm5vdygpfTpEYXRlLm5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4rbmV3 IERhdGV9fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFs P2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZp bmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7fV0sNTA0OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0 KXtmb3IodmFyIGU9dC5sZW5ndGgscj10W3QubGVuZ3RoLTFdLG49ZSxhPWUt MjthPj0wOy0tYSl7dmFyIGk9cixvPXRbYV0scz0ocj1pK28pLWksbD1vLXM7 bCYmKHRbLS1uXT1yLHI9bCl9Zm9yKHZhciBjPTAsYT1uO2E8ZTsrK2Epe3Zh ciBpPXRbYV0sbz1yLHM9KHI9aStvKS1pLGw9by1zO2wmJih0W2MrK109bCl9 cmV0dXJuIHRbYysrXT1yLHQubGVuZ3RoPWMsdH19LHt9XSw1MDU6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgidHdvLXByb2R1Y3Qi KSxhPXQoInJvYnVzdC1zdW0iKSxpPXQoInJvYnVzdC1zY2FsZSIpLG89dCgi cm9idXN0LWNvbXByZXNzIikscz02O2Z1bmN0aW9uIGwodCxlKXtmb3IodmFy IHI9bmV3IEFycmF5KHQubGVuZ3RoLTEpLG49MTtuPHQubGVuZ3RoOysrbilm b3IodmFyIGE9cltuLTFdPW5ldyBBcnJheSh0Lmxlbmd0aC0xKSxpPTAsbz0w O2k8dC5sZW5ndGg7KytpKWkhPT1lJiYoYVtvKytdPXRbbl1baV0pO3JldHVy biByfWZ1bmN0aW9uIGModCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxyPTA7 cjx0Oysrcil7ZVtyXT1uZXcgQXJyYXkodCk7Zm9yKHZhciBuPTA7bjx0Oysr billW3JdW25dPVsibVsiLHIsIl1bIixuLCJdIl0uam9pbigiIil9cmV0dXJu IGV9ZnVuY3Rpb24gdSh0KXtpZigyPT09dC5sZW5ndGgpcmV0dXJuWyJzdW0o cHJvZCgiLHRbMF1bMF0sIiwiLHRbMV1bMV0sIikscHJvZCgtIix0WzBdWzFd LCIsIix0WzFdWzBdLCIpKSJdLmpvaW4oIiIpO2Zvcih2YXIgZT1bXSxyPTA7 cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKFsic2NhbGUoIix1KGwodCxyKSksIiwi LChuPXIsMSZuPyItIjoiIiksdFswXVtyXSwiKSJdLmpvaW4oIiIpKTtyZXR1 cm4gZnVuY3Rpb24gdChlKXtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIGVbMF07 aWYoMj09PWUubGVuZ3RoKXJldHVyblsic3VtKCIsZVswXSwiLCIsZVsxXSwi KSJdLmpvaW4oIiIpO3ZhciByPWUubGVuZ3RoPj4xO3JldHVyblsic3VtKCIs dChlLnNsaWNlKDAscikpLCIsIix0KGUuc2xpY2UocikpLCIpIl0uam9pbigi Iil9KGUpO3ZhciBufWZ1bmN0aW9uIGgodCl7cmV0dXJuIG5ldyBGdW5jdGlv bigic3VtIiwic2NhbGUiLCJwcm9kIiwiY29tcHJlc3MiLFsiZnVuY3Rpb24g cm9idXN0RGV0ZXJtaW5hbnQiLHQsIihtKXtyZXR1cm4gY29tcHJlc3MoIix1 KGModCkpLCIpfTtyZXR1cm4gcm9idXN0RGV0ZXJtaW5hbnQiLHRdLmpvaW4o IiIpKShhLGksbixvKX12YXIgZj1bZnVuY3Rpb24oKXtyZXR1cm5bMF19LGZ1 bmN0aW9uKHQpe3JldHVyblt0WzBdWzBdXX1dOyFmdW5jdGlvbigpe2Zvcig7 Zi5sZW5ndGg8czspZi5wdXNoKGgoZi5sZW5ndGgpKTtmb3IodmFyIHQ9W10s cj1bImZ1bmN0aW9uIHJvYnVzdERldGVybWluYW50KG0pe3N3aXRjaChtLmxl bmd0aCl7Il0sbj0wO248czsrK24pdC5wdXNoKCJkZXQiK24pLHIucHVzaCgi Y2FzZSAiLG4sIjpyZXR1cm4gZGV0IixuLCIobSk7Iik7ci5wdXNoKCJ9dmFy IGRldD1DQUNIRVttLmxlbmd0aF07aWYoIWRldClkZXQ9Q0FDSEVbbS5sZW5n dGhdPWdlbihtLmxlbmd0aCk7cmV0dXJuIGRldChtKTt9cmV0dXJuIHJvYnVz dERldGVybWluYW50IiksdC5wdXNoKCJDQUNIRSIsImdlbiIsci5qb2luKCIi KSk7dmFyIGE9RnVuY3Rpb24uYXBwbHkodm9pZCAwLHQpO2ZvcihlLmV4cG9y dHM9YS5hcHBseSh2b2lkIDAsZi5jb25jYXQoW2YsaF0pKSxuPTA7bjxmLmxl bmd0aDsrK24pZS5leHBvcnRzW25dPWZbbl19KCl9LHsicm9idXN0LWNvbXBy ZXNzIjo1MDQsInJvYnVzdC1zY2FsZSI6NTExLCJyb2J1c3Qtc3VtIjo1MTQs InR3by1wcm9kdWN0Ijo1NDJ9XSw1MDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgidHdvLXByb2R1Y3QiKSxhPXQoInJvYnVzdC1z dW0iKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bih0WzBd LGVbMF0pLGk9MTtpPHQubGVuZ3RoOysraSlyPWEocixuKHRbaV0sZVtpXSkp O3JldHVybiByfX0seyJyb2J1c3Qtc3VtIjo1MTQsInR3by1wcm9kdWN0Ijo1 NDJ9XSw1MDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgidHdvLXByb2R1Y3QiKSxhPXQoInJvYnVzdC1zdW0iKSxpPXQoInJvYnVz dC1zdWJ0cmFjdCIpLG89dCgicm9idXN0LXNjYWxlIikscz02O2Z1bmN0aW9u IGwodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQubGVuZ3RoLTEpLG49MTtu PHQubGVuZ3RoOysrbilmb3IodmFyIGE9cltuLTFdPW5ldyBBcnJheSh0Lmxl bmd0aC0xKSxpPTAsbz0wO2k8dC5sZW5ndGg7KytpKWkhPT1lJiYoYVtvKytd PXRbbl1baV0pO3JldHVybiByfWZ1bmN0aW9uIGModCl7aWYoMT09PXQubGVu Z3RoKXJldHVybiB0WzBdO2lmKDI9PT10Lmxlbmd0aClyZXR1cm5bInN1bSgi LHRbMF0sIiwiLHRbMV0sIikiXS5qb2luKCIiKTt2YXIgZT10Lmxlbmd0aD4+ MTtyZXR1cm5bInN1bSgiLGModC5zbGljZSgwLGUpKSwiLCIsYyh0LnNsaWNl KGUpKSwiKSJdLmpvaW4oIiIpfWZ1bmN0aW9uIHUodCxlKXtpZigibSI9PT10 LmNoYXJBdCgwKSl7aWYoInciPT09ZS5jaGFyQXQoMCkpe3ZhciByPXQuc3Bs aXQoIlsiKTtyZXR1cm5bInciLGUuc3Vic3RyKDEpLCJtIixyWzBdLnN1YnN0 cigxKV0uam9pbigiIil9cmV0dXJuWyJwcm9kKCIsdCwiLCIsZSwiKSJdLmpv aW4oIiIpfXJldHVybiB1KGUsdCl9ZnVuY3Rpb24gaCh0KXtpZigyPT09dC5s ZW5ndGgpcmV0dXJuW1siZGlmZigiLHUodFswXVswXSx0WzFdWzFdKSwiLCIs dSh0WzFdWzBdLHRbMF1bMV0pLCIpIl0uam9pbigiIildO2Zvcih2YXIgZT1b XSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKFsic2NhbGUoIixjKGgobCh0 LHIpKSksIiwiLChuPXIsITAmbj8iLSI6IiIpLHRbMF1bcl0sIikiXS5qb2lu KCIiKSk7cmV0dXJuIGU7dmFyIG59ZnVuY3Rpb24gZih0LGUpe2Zvcih2YXIg cj1bXSxuPTA7bjxlLTI7KytuKXIucHVzaChbInByb2QobSIsdCwiWyIsbiwi XSxtIix0LCJbIixuLCJdKSJdLmpvaW4oIiIpKTtyZXR1cm4gYyhyKX1mdW5j dGlvbiBwKHQpe2Zvcih2YXIgZT1bXSxyPVtdLHM9ZnVuY3Rpb24odCl7Zm9y KHZhciBlPW5ldyBBcnJheSh0KSxyPTA7cjx0Oysrcil7ZVtyXT1uZXcgQXJy YXkodCk7Zm9yKHZhciBuPTA7bjx0OysrbillW3JdW25dPVsibSIsbiwiWyIs dC1yLTIsIl0iXS5qb2luKCIiKX1yZXR1cm4gZX0odCksdT0wO3U8dDsrK3Up c1swXVt1XT0iMSIsc1t0LTFdW3VdPSJ3Iit1O2Zvcih1PTA7dTx0OysrdSkw PT0oMSZ1KT9lLnB1c2guYXBwbHkoZSxoKGwocyx1KSkpOnIucHVzaC5hcHBs eShyLGgobChzLHUpKSk7dmFyIHA9YyhlKSxkPWMociksZz0iZXhhY3RJblNw aGVyZSIrdCx2PVtdO2Zvcih1PTA7dTx0OysrdSl2LnB1c2goIm0iK3UpO3Zh ciBtPVsiZnVuY3Rpb24gIixnLCIoIix2LmpvaW4oKSwiKXsiXTtmb3IodT0w O3U8dDsrK3Upe20ucHVzaCgidmFyIHciLHUsIj0iLGYodSx0KSwiOyIpO2Zv cih2YXIgeT0wO3k8dDsrK3kpeSE9PXUmJm0ucHVzaCgidmFyIHciLHUsIm0i LHksIj1zY2FsZSh3Iix1LCIsbSIseSwiWzBdKTsiKX1yZXR1cm4gbS5wdXNo KCJ2YXIgcD0iLHAsIixuPSIsZCwiLGQ9ZGlmZihwLG4pO3JldHVybiBkW2Qu bGVuZ3RoLTFdO31yZXR1cm4gIixnKSxuZXcgRnVuY3Rpb24oInN1bSIsImRp ZmYiLCJwcm9kIiwic2NhbGUiLG0uam9pbigiIikpKGEsaSxuLG8pfXZhciBk PVtmdW5jdGlvbigpe3JldHVybiAwfSxmdW5jdGlvbigpe3JldHVybiAwfSxm dW5jdGlvbigpe3JldHVybiAwfV07ZnVuY3Rpb24gZyh0KXt2YXIgZT1kW3Qu bGVuZ3RoXTtyZXR1cm4gZXx8KGU9ZFt0Lmxlbmd0aF09cCh0Lmxlbmd0aCkp LGUuYXBwbHkodm9pZCAwLHQpfSFmdW5jdGlvbigpe2Zvcig7ZC5sZW5ndGg8 PXM7KWQucHVzaChwKGQubGVuZ3RoKSk7Zm9yKHZhciB0PVtdLHI9WyJzbG93 Il0sbj0wO248PXM7KytuKXQucHVzaCgiYSIrbiksci5wdXNoKCJvIituKTt2 YXIgYT1bImZ1bmN0aW9uIHRlc3RJblNwaGVyZSgiLHQuam9pbigpLCIpe3N3 aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6Y2FzZSAxOnJldHVybiAw OyJdO2ZvcihuPTI7bjw9czsrK24pYS5wdXNoKCJjYXNlICIsbiwiOnJldHVy biBvIixuLCIoIix0LnNsaWNlKDAsbikuam9pbigpLCIpOyIpO2EucHVzaCgi fXZhciBzPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtmb3IodmFyIGk9 MDtpPGFyZ3VtZW50cy5sZW5ndGg7KytpKXtzW2ldPWFyZ3VtZW50c1tpXX07 cmV0dXJuIHNsb3cocyk7fXJldHVybiB0ZXN0SW5TcGhlcmUiKSxyLnB1c2go YS5qb2luKCIiKSk7dmFyIGk9RnVuY3Rpb24uYXBwbHkodm9pZCAwLHIpO2Zv cihlLmV4cG9ydHM9aS5hcHBseSh2b2lkIDAsW2ddLmNvbmNhdChkKSksbj0w O248PXM7KytuKWUuZXhwb3J0c1tuXT1kW25dfSgpfSx7InJvYnVzdC1zY2Fs ZSI6NTExLCJyb2J1c3Qtc3VidHJhY3QiOjUxMywicm9idXN0LXN1bSI6NTE0 LCJ0d28tcHJvZHVjdCI6NTQyfV0sNTA4OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoInJvYnVzdC1kZXRlcm1pbmFudCIpLGE9Njtm dW5jdGlvbiBpKHQpe2Zvcih2YXIgZT0icm9idXN0TGluZWFyU29sdmUiK3Qr ImQiLHI9WyJmdW5jdGlvbiAiLGUsIihBLGIpe3JldHVybiBbIl0sYT0wO2E8 dDsrK2Epe3IucHVzaCgiZGV0KFsiKTtmb3IodmFyIGk9MDtpPHQ7KytpKXtp PjAmJnIucHVzaCgiLCIpLHIucHVzaCgiWyIpO2Zvcih2YXIgbz0wO288dDsr K28pbz4wJiZyLnB1c2goIiwiKSxvPT09YT9yLnB1c2goIitiWyIsaSwiXSIp OnIucHVzaCgiK0FbIixpLCJdWyIsbywiXSIpO3IucHVzaCgiXSIpfXIucHVz aCgiXSksIil9ci5wdXNoKCJkZXQoQSldfXJldHVybiAiLGUpO3ZhciBzPW5l dyBGdW5jdGlvbigiZGV0IixyLmpvaW4oIiIpKTtyZXR1cm4gcyh0PDY/blt0 XTpuKX12YXIgbz1bZnVuY3Rpb24oKXtyZXR1cm5bMF19LGZ1bmN0aW9uKHQs ZSl7cmV0dXJuW1tlWzBdXSxbdFswXVswXV1dfV07IWZ1bmN0aW9uKCl7Zm9y KDtvLmxlbmd0aDxhOylvLnB1c2goaShvLmxlbmd0aCkpO2Zvcih2YXIgdD1b XSxyPVsiZnVuY3Rpb24gZGlzcGF0Y2hMaW5lYXJTb2x2ZShBLGIpe3N3aXRj aChBLmxlbmd0aCl7Il0sbj0wO248YTsrK24pdC5wdXNoKCJzIituKSxyLnB1 c2goImNhc2UgIixuLCI6cmV0dXJuIHMiLG4sIihBLGIpOyIpO3IucHVzaCgi fXZhciBzPUNBQ0hFW0EubGVuZ3RoXTtpZighcylzPUNBQ0hFW0EubGVuZ3Ro XT1nKEEubGVuZ3RoKTtyZXR1cm4gcyhBLGIpfXJldHVybiBkaXNwYXRjaExp bmVhclNvbHZlIiksdC5wdXNoKCJDQUNIRSIsImciLHIuam9pbigiIikpO3Zh ciBzPUZ1bmN0aW9uLmFwcGx5KHZvaWQgMCx0KTtmb3IoZS5leHBvcnRzPXMu YXBwbHkodm9pZCAwLG8uY29uY2F0KFtvLGldKSksbj0wO248YTsrK24pZS5l eHBvcnRzW25dPW9bbl19KCl9LHsicm9idXN0LWRldGVybWluYW50Ijo1MDV9 XSw1MDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi dHdvLXByb2R1Y3QiKSxhPXQoInJvYnVzdC1zdW0iKSxpPXQoInJvYnVzdC1z Y2FsZSIpLG89dCgicm9idXN0LXN1YnRyYWN0Iikscz01O2Z1bmN0aW9uIGwo dCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQubGVuZ3RoLTEpLG49MTtuPHQu bGVuZ3RoOysrbilmb3IodmFyIGE9cltuLTFdPW5ldyBBcnJheSh0Lmxlbmd0 aC0xKSxpPTAsbz0wO2k8dC5sZW5ndGg7KytpKWkhPT1lJiYoYVtvKytdPXRb bl1baV0pO3JldHVybiByfWZ1bmN0aW9uIGModCl7aWYoMT09PXQubGVuZ3Ro KXJldHVybiB0WzBdO2lmKDI9PT10Lmxlbmd0aClyZXR1cm5bInN1bSgiLHRb MF0sIiwiLHRbMV0sIikiXS5qb2luKCIiKTt2YXIgZT10Lmxlbmd0aD4+MTty ZXR1cm5bInN1bSgiLGModC5zbGljZSgwLGUpKSwiLCIsYyh0LnNsaWNlKGUp KSwiKSJdLmpvaW4oIiIpfWZ1bmN0aW9uIHUodCl7aWYoMj09PXQubGVuZ3Ro KXJldHVybltbInN1bShwcm9kKCIsdFswXVswXSwiLCIsdFsxXVsxXSwiKSxw cm9kKC0iLHRbMF1bMV0sIiwiLHRbMV1bMF0sIikpIl0uam9pbigiIildO2Zv cih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKFsic2NhbGUo IixjKHUobCh0LHIpKSksIiwiLChuPXIsMSZuPyItIjoiIiksdFswXVtyXSwi KSJdLmpvaW4oIiIpKTtyZXR1cm4gZTt2YXIgbn1mdW5jdGlvbiBoKHQpe2Zv cih2YXIgZT1bXSxyPVtdLHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBB cnJheSh0KSxyPTA7cjx0Oysrcil7ZVtyXT1uZXcgQXJyYXkodCk7Zm9yKHZh ciBuPTA7bjx0OysrbillW3JdW25dPVsibSIsbiwiWyIsdC1yLTEsIl0iXS5q b2luKCIiKX1yZXR1cm4gZX0odCksaD1bXSxmPTA7Zjx0OysrZikwPT0oMSZm KT9lLnB1c2guYXBwbHkoZSx1KGwocyxmKSkpOnIucHVzaC5hcHBseShyLHUo bChzLGYpKSksaC5wdXNoKCJtIitmKTt2YXIgcD1jKGUpLGQ9YyhyKSxnPSJv cmllbnRhdGlvbiIrdCsiRXhhY3QiLHY9WyJmdW5jdGlvbiAiLGcsIigiLGgu am9pbigpLCIpe3ZhciBwPSIscCwiLG49IixkLCIsZD1zdWIocCxuKTtyZXR1 cm4gZFtkLmxlbmd0aC0xXTt9O3JldHVybiAiLGddLmpvaW4oIiIpO3JldHVy biBuZXcgRnVuY3Rpb24oInN1bSIsInByb2QiLCJzY2FsZSIsInN1YiIsdiko YSxuLGksbyl9dmFyIGY9aCgzKSxwPWgoNCksZD1bZnVuY3Rpb24oKXtyZXR1 cm4gMH0sZnVuY3Rpb24oKXtyZXR1cm4gMH0sZnVuY3Rpb24odCxlKXtyZXR1 cm4gZVswXS10WzBdfSxmdW5jdGlvbih0LGUscil7dmFyIG4sYT0odFsxXS1y WzFdKSooZVswXS1yWzBdKSxpPSh0WzBdLXJbMF0pKihlWzFdLXJbMV0pLG89 YS1pO2lmKGE+MCl7aWYoaTw9MClyZXR1cm4gbztuPWEraX1lbHNle2lmKCEo YTwwKSlyZXR1cm4gbztpZihpPj0wKXJldHVybiBvO249LShhK2kpfXZhciBz PTMuMzMwNjY5MDczODc1NDcxNmUtMTYqbjtyZXR1cm4gbz49c3x8bzw9LXM/ bzpmKHQsZSxyKX0sZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dFswXS1uWzBd LGk9ZVswXS1uWzBdLG89clswXS1uWzBdLHM9dFsxXS1uWzFdLGw9ZVsxXS1u WzFdLGM9clsxXS1uWzFdLHU9dFsyXS1uWzJdLGg9ZVsyXS1uWzJdLGY9clsy XS1uWzJdLGQ9aSpjLGc9bypsLHY9bypzLG09YSpjLHk9YSpsLHg9aSpzLGI9 dSooZC1nKStoKih2LW0pK2YqKHkteCksXz03Ljc3MTU2MTE3MjM3NjEwM2Ut MTYqKChNYXRoLmFicyhkKStNYXRoLmFicyhnKSkqTWF0aC5hYnModSkrKE1h dGguYWJzKHYpK01hdGguYWJzKG0pKSpNYXRoLmFicyhoKSsoTWF0aC5hYnMo eSkrTWF0aC5hYnMoeCkpKk1hdGguYWJzKGYpKTtyZXR1cm4gYj5ffHwtYj5f P2I6cCh0LGUscixuKX1dO2Z1bmN0aW9uIGcodCl7dmFyIGU9ZFt0Lmxlbmd0 aF07cmV0dXJuIGV8fChlPWRbdC5sZW5ndGhdPWgodC5sZW5ndGgpKSxlLmFw cGx5KHZvaWQgMCx0KX0hZnVuY3Rpb24oKXtmb3IoO2QubGVuZ3RoPD1zOylk LnB1c2goaChkLmxlbmd0aCkpO2Zvcih2YXIgdD1bXSxyPVsic2xvdyJdLG49 MDtuPD1zOysrbil0LnB1c2goImEiK24pLHIucHVzaCgibyIrbik7dmFyIGE9 WyJmdW5jdGlvbiBnZXRPcmllbnRhdGlvbigiLHQuam9pbigpLCIpe3N3aXRj aChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6Y2FzZSAxOnJldHVybiAwOyJd O2ZvcihuPTI7bjw9czsrK24pYS5wdXNoKCJjYXNlICIsbiwiOnJldHVybiBv IixuLCIoIix0LnNsaWNlKDAsbikuam9pbigpLCIpOyIpO2EucHVzaCgifXZh ciBzPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtmb3IodmFyIGk9MDtp PGFyZ3VtZW50cy5sZW5ndGg7KytpKXtzW2ldPWFyZ3VtZW50c1tpXX07cmV0 dXJuIHNsb3cocyk7fXJldHVybiBnZXRPcmllbnRhdGlvbiIpLHIucHVzaChh LmpvaW4oIiIpKTt2YXIgaT1GdW5jdGlvbi5hcHBseSh2b2lkIDAscik7Zm9y KGUuZXhwb3J0cz1pLmFwcGx5KHZvaWQgMCxbZ10uY29uY2F0KGQpKSxuPTA7 bjw9czsrK24pZS5leHBvcnRzW25dPWRbbl19KCl9LHsicm9idXN0LXNjYWxl Ijo1MTEsInJvYnVzdC1zdWJ0cmFjdCI6NTEzLCJyb2J1c3Qtc3VtIjo1MTQs InR3by1wcm9kdWN0Ijo1NDJ9XSw1MTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgicm9idXN0LXN1bSIpLGE9dCgicm9idXN0LXNj YWxlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoMT09PXQubGVuZ3Ro KXJldHVybiBhKGUsdFswXSk7aWYoMT09PWUubGVuZ3RoKXJldHVybiBhKHQs ZVswXSk7aWYoMD09PXQubGVuZ3RofHwwPT09ZS5sZW5ndGgpcmV0dXJuWzBd O3ZhciByPVswXTtpZih0Lmxlbmd0aDxlLmxlbmd0aClmb3IodmFyIGk9MDtp PHQubGVuZ3RoOysraSlyPW4ocixhKGUsdFtpXSkpO2Vsc2UgZm9yKHZhciBp PTA7aTxlLmxlbmd0aDsrK2kpcj1uKHIsYSh0LGVbaV0pKTtyZXR1cm4gcn19 LHsicm9idXN0LXNjYWxlIjo1MTEsInJvYnVzdC1zdW0iOjUxNH1dLDUxMTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0d28tcHJv ZHVjdCIpLGE9dCgidHdvLXN1bSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e3ZhciByPXQubGVuZ3RoO2lmKDE9PT1yKXt2YXIgaT1uKHRbMF0sZSk7cmV0 dXJuIGlbMF0/aTpbaVsxXV19dmFyIG89bmV3IEFycmF5KDIqcikscz1bLjEs LjFdLGw9Wy4xLC4xXSxjPTA7bih0WzBdLGUscyksc1swXSYmKG9bYysrXT1z WzBdKTtmb3IodmFyIHU9MTt1PHI7Kyt1KXtuKHRbdV0sZSxsKTt2YXIgaD1z WzFdO2EoaCxsWzBdLHMpLHNbMF0mJihvW2MrK109c1swXSk7dmFyIGY9bFsx XSxwPXNbMV0sZD1mK3AsZz1kLWYsdj1wLWc7c1sxXT1kLHYmJihvW2MrK109 dil9c1sxXSYmKG9bYysrXT1zWzFdKTswPT09YyYmKG9bYysrXT0wKTtyZXR1 cm4gby5sZW5ndGg9YyxvfX0seyJ0d28tcHJvZHVjdCI6NTQyLCJ0d28tc3Vt Ijo1NDN9XSw1MTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpPW4odCxyLGEpLG89bihl LHIsYSk7aWYoaT4wJiZvPjB8fGk8MCYmbzwwKXJldHVybiExO3ZhciBzPW4o cix0LGUpLGw9bihhLHQsZSk7aWYocz4wJiZsPjB8fHM8MCYmbDwwKXJldHVy biExO2lmKDA9PT1pJiYwPT09byYmMD09PXMmJjA9PT1sKXJldHVybiBmdW5j dGlvbih0LGUscixuKXtmb3IodmFyIGE9MDthPDI7KythKXt2YXIgaT10W2Fd LG89ZVthXSxzPU1hdGgubWluKGksbyksbD1NYXRoLm1heChpLG8pLGM9clth XSx1PW5bYV0saD1NYXRoLm1pbihjLHUpLGY9TWF0aC5tYXgoYyx1KTtpZihm PHN8fGw8aClyZXR1cm4hMX1yZXR1cm4hMH0odCxlLHIsYSk7cmV0dXJuITB9 O3ZhciBuPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpWzNdfSx7InJvYnVzdC1v cmllbnRhdGlvbiI6NTA5fV0sNTEzOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPTB8dC5sZW5n dGgsbj0wfGUubGVuZ3RoO2lmKDE9PT1yJiYxPT09bilyZXR1cm4gZnVuY3Rp b24odCxlKXt2YXIgcj10K2Usbj1yLXQsYT10LShyLW4pKyhlLW4pO2lmKGEp cmV0dXJuW2Escl07cmV0dXJuW3JdfSh0WzBdLC1lWzBdKTt2YXIgYSxpLG89 bmV3IEFycmF5KHIrbikscz0wLGw9MCxjPTAsdT1NYXRoLmFicyxoPXRbbF0s Zj11KGgpLHA9LWVbY10sZD11KHApO2Y8ZD8oaT1oLChsKz0xKTxyJiYoaD10 W2xdLGY9dShoKSkpOihpPXAsKGMrPTEpPG4mJihwPS1lW2NdLGQ9dShwKSkp O2w8ciYmZjxkfHxjPj1uPyhhPWgsKGwrPTEpPHImJihoPXRbbF0sZj11KGgp KSk6KGE9cCwoYys9MSk8biYmKHA9LWVbY10sZD11KHApKSk7dmFyIGcsdixt PWEraSx5PW0tYSx4PWkteSxiPXgsXz1tO2Zvcig7bDxyJiZjPG47KWY8ZD8o YT1oLChsKz0xKTxyJiYoaD10W2xdLGY9dShoKSkpOihhPXAsKGMrPTEpPG4m JihwPS1lW2NdLGQ9dShwKSkpLCh4PShpPWIpLSh5PShtPWEraSktYSkpJiYo b1tzKytdPXgpLGI9Xy0oKGc9XyttKS0odj1nLV8pKSsobS12KSxfPWc7Zm9y KDtsPHI7KSh4PShpPWIpLSh5PShtPShhPWgpK2kpLWEpKSYmKG9bcysrXT14 KSxiPV8tKChnPV8rbSktKHY9Zy1fKSkrKG0tdiksXz1nLChsKz0xKTxyJiYo aD10W2xdKTtmb3IoO2M8bjspKHg9KGk9YiktKHk9KG09KGE9cCkraSktYSkp JiYob1tzKytdPXgpLGI9Xy0oKGc9XyttKS0odj1nLV8pKSsobS12KSxfPWcs KGMrPTEpPG4mJihwPS1lW2NdKTtiJiYob1tzKytdPWIpO18mJihvW3MrK109 Xyk7c3x8KG9bcysrXT0wKTtyZXR1cm4gby5sZW5ndGg9cyxvfX0se31dLDUx NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXt2YXIgcj0wfHQubGVuZ3RoLG49MHxlLmxlbmd0aDtpZigx PT09ciYmMT09PW4pcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9dCtlLG49 ci10LGE9dC0oci1uKSsoZS1uKTtpZihhKXJldHVyblthLHJdO3JldHVyblty XX0odFswXSxlWzBdKTt2YXIgYSxpLG89bmV3IEFycmF5KHIrbikscz0wLGw9 MCxjPTAsdT1NYXRoLmFicyxoPXRbbF0sZj11KGgpLHA9ZVtjXSxkPXUocCk7 ZjxkPyhpPWgsKGwrPTEpPHImJihoPXRbbF0sZj11KGgpKSk6KGk9cCwoYys9 MSk8biYmKHA9ZVtjXSxkPXUocCkpKTtsPHImJmY8ZHx8Yz49bj8oYT1oLChs Kz0xKTxyJiYoaD10W2xdLGY9dShoKSkpOihhPXAsKGMrPTEpPG4mJihwPWVb Y10sZD11KHApKSk7dmFyIGcsdixtPWEraSx5PW0tYSx4PWkteSxiPXgsXz1t O2Zvcig7bDxyJiZjPG47KWY8ZD8oYT1oLChsKz0xKTxyJiYoaD10W2xdLGY9 dShoKSkpOihhPXAsKGMrPTEpPG4mJihwPWVbY10sZD11KHApKSksKHg9KGk9 YiktKHk9KG09YStpKS1hKSkmJihvW3MrK109eCksYj1fLSgoZz1fK20pLSh2 PWctXykpKyhtLXYpLF89Zztmb3IoO2w8cjspKHg9KGk9YiktKHk9KG09KGE9 aCkraSktYSkpJiYob1tzKytdPXgpLGI9Xy0oKGc9XyttKS0odj1nLV8pKSso bS12KSxfPWcsKGwrPTEpPHImJihoPXRbbF0pO2Zvcig7YzxuOykoeD0oaT1i KS0oeT0obT0oYT1wKStpKS1hKSkmJihvW3MrK109eCksYj1fLSgoZz1fK20p LSh2PWctXykpKyhtLXYpLF89ZywoYys9MSk8biYmKHA9ZVtjXSk7YiYmKG9b cysrXT1iKTtfJiYob1tzKytdPV8pO3N8fChvW3MrK109MCk7cmV0dXJuIG8u bGVuZ3RoPXMsb319LHt9XSw1MTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PDA/LTE6dD4w PzE6MH19LHt9XSw1MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhKG4odCkpfTt2YXIgbj10 KCJib3VuZGFyeS1jZWxscyIpLGE9dCgicmVkdWNlLXNpbXBsaWNpYWwtY29t cGxleCIpfSx7ImJvdW5kYXJ5LWNlbGxzIjo5NywicmVkdWNlLXNpbXBsaWNp YWwtY29tcGxleCI6NDkxfV0sNTE3OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtyPXJ8fDAsInVu ZGVmaW5lZCI9PXR5cGVvZiBzJiYocz1mdW5jdGlvbih0KXtmb3IodmFyIGU9 dC5sZW5ndGgscj0wLG49MDtuPGU7KytuKXI9MHxNYXRoLm1heChyLHRbbl0u bGVuZ3RoKTtyZXR1cm4gci0xfSh0KSk7aWYoMD09PXQubGVuZ3RofHxzPDEp cmV0dXJue2NlbGxzOltdLHZlcnRleElkczpbXSx2ZXJ0ZXhXZWlnaHRzOltd fTt2YXIgbD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPWEu bWFsbG9jVWludDgociksaT0wO2k8cjsrK2kpbltpXT10W2ldPGV8MDtyZXR1 cm4gbn0oZSwrciksYz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0 aCxvPWUqKGUrMSkvMipyfDAscz1hLm1hbGxvY1VpbnQzMigyKm8pLGw9MCxj PTA7YzxyOysrYylmb3IodmFyIHU9dFtjXSxlPXUubGVuZ3RoLGg9MDtoPGU7 KytoKWZvcih2YXIgZj0wO2Y8aDsrK2Ype3ZhciBwPXVbZl0sZD11W2hdO3Nb bCsrXT0wfE1hdGgubWluKHAsZCksc1tsKytdPTB8TWF0aC5tYXgocCxkKX1p KG4ocyxbbC8yfDAsMl0pKTtmb3IodmFyIGc9MixjPTI7YzxsO2MrPTIpc1tj LTJdPT09c1tjXSYmc1tjLTFdPT09c1tjKzFdfHwoc1tnKytdPXNbY10sc1tn KytdPXNbYysxXSk7cmV0dXJuIG4ocyxbZy8yfDAsMl0pfSh0LHMpLHU9ZnVu Y3Rpb24odCxlLHIsaSl7Zm9yKHZhciBvPXQuZGF0YSxzPXQuc2hhcGVbMF0s bD1hLm1hbGxvY0RvdWJsZShzKSxjPTAsdT0wO3U8czsrK3Upe3ZhciBoPW9b Mip1XSxmPW9bMip1KzFdO2lmKHJbaF0hPT1yW2ZdKXt2YXIgcD1lW2hdLGQ9 ZVtmXTtvWzIqY109aCxvWzIqYysxXT1mLGxbYysrXT0oZC1pKS8oZC1wKX19 cmV0dXJuIHQuc2hhcGVbMF09YyxuKGwsW2NdKX0oYyxlLGwsK3IpLGg9ZnVu Y3Rpb24odCxlKXt2YXIgcj1hLm1hbGxvY0ludDMyKDIqZSksbj10LnNoYXBl WzBdLGk9dC5kYXRhO3JbMF09MDtmb3IodmFyIG89MCxzPTA7czxuOysrcyl7 dmFyIGw9aVsyKnNdO2lmKGwhPT1vKXtmb3IoclsyKm8rMV09czsrK288bDsp clsyKm9dPXMsclsyKm8rMV09cztyWzIqb109c319clsyKm8rMV09bjtmb3Io OysrbzxlOylyWzIqb109clsyKm8rMV09bjtyZXR1cm4gcn0oYywwfGUubGVu Z3RoKSxmPW8ocykodCxjLmRhdGEsaCxsKSxwPWZ1bmN0aW9uKHQpe2Zvcih2 YXIgZT0wfHQuc2hhcGVbMF0scj10LmRhdGEsbj1uZXcgQXJyYXkoZSksYT0w O2E8ZTsrK2EpblthXT1bclsyKmFdLHJbMiphKzFdXTtyZXR1cm4gbn0oYyks ZD1bXS5zbGljZS5jYWxsKHUuZGF0YSwwLHUuc2hhcGVbMF0pO3JldHVybiBh LmZyZWUobCksYS5mcmVlKGMuZGF0YSksYS5mcmVlKHUuZGF0YSksYS5mcmVl KGgpLHtjZWxsczpmLHZlcnRleElkczpwLHZlcnRleFdlaWdodHM6ZH19O3Zh ciBuPXQoIm5kYXJyYXkiKSxhPXQoInR5cGVkYXJyYXktcG9vbCIpLGk9dCgi bmRhcnJheS1zb3J0Iiksbz10KCIuL2xpYi9jb2RlZ2VuIil9LHsiLi9saWIv Y29kZWdlbiI6NTE4LG5kYXJyYXk6NDUyLCJuZGFycmF5LXNvcnQiOjQ1MCwi dHlwZWRhcnJheS1wb29sIjo1NDR9XSw1MTg6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWlbdF07 ZXx8KGU9aVt0XT1mdW5jdGlvbih0KXt2YXIgZT0wLHI9bmV3IEFycmF5KHQr MSk7clswXT1bW11dO2Zvcih2YXIgaT0xO2k8PXQ7KytpKWZvcih2YXIgbz1y W2ldPWEoaSkscz0wO3M8by5sZW5ndGg7KytzKWU9TWF0aC5tYXgoZSxvW2ld Lmxlbmd0aCk7dmFyIGw9WyJmdW5jdGlvbiBCKEMsRSxpLGopeyIsInZhciBh PU1hdGgubWluKGksail8MCxiPU1hdGgubWF4KGksail8MCxsPUNbMiphXSxo PUNbMiphKzFdOyIsIndoaWxlKGw8aCl7IiwidmFyIG09KGwraCk+PjEsdj1F WzIqbSsxXTsiLCJpZih2PT09Yil7cmV0dXJuIG19IiwiaWYoYjx2KXtoPW19 ZWxzZXtsPW0rMX0iLCJ9IiwicmV0dXJuIGw7IiwifTsiLCJmdW5jdGlvbiBn ZXRDb250b3VyIix0LCJkKEYsRSxDLFMpeyIsInZhciBuPUYubGVuZ3RoLFI9 W107IiwiZm9yKHZhciBpPTA7aTxuOysraSl7dmFyIGM9RltpXSxsPWMubGVu Z3RoOyJdO2Z1bmN0aW9uIGModCl7aWYoISh0Lmxlbmd0aDw9MCkpe2wucHVz aCgiUi5wdXNoKCIpO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7KytlKXt2YXIg cj10W2VdO2U+MCYmbC5wdXNoKCIsIiksbC5wdXNoKCJbIik7Zm9yKHZhciBu PTA7bjxyLmxlbmd0aDsrK24pe3ZhciBhPXJbbl07bj4wJiZsLnB1c2goIiwi KSxsLnB1c2goIkIoQyxFLGNbIixhWzBdLCJdLGNbIixhWzFdLCJdKSIpfWwu cHVzaCgiXSIpfWwucHVzaCgiKTsiKX19Zm9yKHZhciBpPXQrMTtpPjE7LS1p KXtpPHQrMSYmbC5wdXNoKCJlbHNlICIpLGwucHVzaCgiaWYobD09PSIsaSwi KXsiKTtmb3IodmFyIHU9W10scz0wO3M8aTsrK3MpdS5wdXNoKCIoU1tjWyIr cysiXV08PCIrcysiKSIpO2wucHVzaCgidmFyIE09Iix1LmpvaW4oIisiKSwi O2lmKE09PT0wfHxNPT09IiwoMTw8aSktMSwiKXtjb250aW51ZX1zd2l0Y2go TSl7Iik7Zm9yKHZhciBvPXJbaS0xXSxzPTA7czxvLmxlbmd0aDsrK3MpbC5w dXNoKCJjYXNlICIscywiOiIpLGMob1tzXSksbC5wdXNoKCJicmVhazsiKTts LnB1c2goIn19Iil9cmV0dXJuIGwucHVzaCgifXJldHVybiBSO307cmV0dXJu IGdldENvbnRvdXIiLHQsImQiKSxuZXcgRnVuY3Rpb24oInBvb2wiLGwuam9p bigiIikpKG4pfSh0KSk7cmV0dXJuIGV9O3ZhciBuPXQoInR5cGVkYXJyYXkt cG9vbCIpLGE9dCgibWFyY2hpbmctc2ltcGxleC10YWJsZSIpLGk9e319LHsi bWFyY2hpbmctc2ltcGxleC10YWJsZSI6NDI5LCJ0eXBlZGFycmF5LXBvb2wi OjU0NH1dLDUxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJiaXQtdHdpZGRsZSIpLGE9dCgidW5pb24tZmluZCIpO2Z1bmN0aW9u IGkodCxlKXt2YXIgcj10Lmxlbmd0aCxuPXQubGVuZ3RoLWUubGVuZ3RoLGE9 TWF0aC5taW47aWYobilyZXR1cm4gbjtzd2l0Y2gocil7Y2FzZSAwOnJldHVy biAwO2Nhc2UgMTpyZXR1cm4gdFswXS1lWzBdO2Nhc2UgMjpyZXR1cm4ocz10 WzBdK3RbMV0tZVswXS1lWzFdKXx8YSh0WzBdLHRbMV0pLWEoZVswXSxlWzFd KTtjYXNlIDM6dmFyIGk9dFswXSt0WzFdLG89ZVswXStlWzFdO2lmKHM9aSt0 WzJdLShvK2VbMl0pKXJldHVybiBzO3ZhciBzLGw9YSh0WzBdLHRbMV0pLGM9 YShlWzBdLGVbMV0pO3JldHVybihzPWEobCx0WzJdKS1hKGMsZVsyXSkpfHxh KGwrdFsyXSxpKS1hKGMrZVsyXSxvKTtkZWZhdWx0OnZhciB1PXQuc2xpY2Uo MCk7dS5zb3J0KCk7dmFyIGg9ZS5zbGljZSgwKTtoLnNvcnQoKTtmb3IodmFy IGY9MDtmPHI7KytmKWlmKG49dVtmXS1oW2ZdKXJldHVybiBuO3JldHVybiAw fX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGkodFswXSxlWzBdKX1mdW5jdGlv biBzKHQsZSl7aWYoZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49bmV3IEFycmF5 KHIpLGE9MDthPHI7KythKW5bYV09W3RbYV0sZVthXV07bi5zb3J0KG8pO2Zv cihhPTA7YTxyOysrYSl0W2FdPW5bYV1bMF0sZVthXT1uW2FdWzFdO3JldHVy biB0fXJldHVybiB0LnNvcnQoaSksdH1mdW5jdGlvbiBsKHQpe2lmKDA9PT10 Lmxlbmd0aClyZXR1cm5bXTtmb3IodmFyIGU9MSxyPXQubGVuZ3RoLG49MTtu PHI7KytuKXt2YXIgYT10W25dO2lmKGkoYSx0W24tMV0pKXtpZihuPT09ZSl7 ZSsrO2NvbnRpbnVlfXRbZSsrXT1hfX1yZXR1cm4gdC5sZW5ndGg9ZSx0fWZ1 bmN0aW9uIGModCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLTEsYT0tMTty PD1uOyl7dmFyIG89cituPj4xLHM9aSh0W29dLGUpO3M8PTA/KDA9PT1zJiYo YT1vKSxyPW8rMSk6cz4wJiYobj1vLTEpfXJldHVybiBhfWZ1bmN0aW9uIHUo dCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KHQubGVuZ3RoKSxhPTAsbz1yLmxl bmd0aDthPG87KythKXJbYV09W107Zm9yKHZhciBzPVtdLGw9KGE9MCxlLmxl bmd0aCk7YTxsOysrYSlmb3IodmFyIHU9ZVthXSxoPXUubGVuZ3RoLGY9MSxw PTE8PGg7ZjxwOysrZil7cy5sZW5ndGg9bi5wb3BDb3VudChmKTtmb3IodmFy IGQ9MCxnPTA7ZzxoOysrZylmJjE8PGcmJihzW2QrK109dVtnXSk7dmFyIHY9 Yyh0LHMpO2lmKCEodjwwKSlmb3IoO3JbdisrXS5wdXNoKGEpLCEodj49dC5s ZW5ndGh8fDAhPT1pKHRbdl0scykpOyk7fXJldHVybiByfWZ1bmN0aW9uIGgo dCxlKXtpZihlPDApcmV0dXJuW107Zm9yKHZhciByPVtdLGE9KDE8PGUrMSkt MSxpPTA7aTx0Lmxlbmd0aDsrK2kpZm9yKHZhciBvPXRbaV0sbD1hO2w8MTw8 by5sZW5ndGg7bD1uLm5leHRDb21iaW5hdGlvbihsKSl7Zm9yKHZhciBjPW5l dyBBcnJheShlKzEpLHU9MCxoPTA7aDxvLmxlbmd0aDsrK2gpbCYxPDxoJiYo Y1t1KytdPW9baF0pO3IucHVzaChjKX1yZXR1cm4gcyhyKX1yLmRpbWVuc2lv bj1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPU1hdGgubWF4LG49MCxhPXQu bGVuZ3RoO248YTsrK24pZT1yKGUsdFtuXS5sZW5ndGgpO3JldHVybiBlLTF9 LHIuY291bnRWZXJ0aWNlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9LTEscj1N YXRoLm1heCxuPTAsYT10Lmxlbmd0aDtuPGE7KytuKWZvcih2YXIgaT10W25d LG89MCxzPWkubGVuZ3RoO288czsrK28pZT1yKGUsaVtvXSk7cmV0dXJuIGUr MX0sci5jbG9uZUNlbGxzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJy YXkodC5sZW5ndGgpLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3IpZVtyXT10W3Jd LnNsaWNlKDApO3JldHVybiBlfSxyLmNvbXBhcmVDZWxscz1pLHIubm9ybWFs aXplPXMsci51bmlxdWU9bCxyLmZpbmRDZWxsPWMsci5pbmNpZGVuY2U9dSxy LmR1YWw9ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm4gdShsKGgodCwwKSks dCk7Zm9yKHZhciByPW5ldyBBcnJheShlKSxuPTA7bjxlOysrbilyW25dPVtd O249MDtmb3IodmFyIGE9dC5sZW5ndGg7bjxhOysrbilmb3IodmFyIGk9dFtu XSxvPTAscz1pLmxlbmd0aDtvPHM7KytvKXJbaVtvXV0ucHVzaChuKTtyZXR1 cm4gcn0sci5leHBsb2RlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPTAs bj10Lmxlbmd0aDtyPG47KytyKWZvcih2YXIgYT10W3JdLGk9MHxhLmxlbmd0 aCxvPTEsbD0xPDxpO288bDsrK28pe2Zvcih2YXIgYz1bXSx1PTA7dTxpOysr dSlvPj4+dSYxJiZjLnB1c2goYVt1XSk7ZS5wdXNoKGMpfXJldHVybiBzKGUp fSxyLnNrZWxldG9uPWgsci5ib3VuZGFyeT1mdW5jdGlvbih0KXtmb3IodmFy IGU9W10scj0wLG49dC5sZW5ndGg7cjxuOysrcilmb3IodmFyIGE9dFtyXSxp PTAsbz1hLmxlbmd0aDtpPG87KytpKXtmb3IodmFyIGw9bmV3IEFycmF5KGEu bGVuZ3RoLTEpLGM9MCx1PTA7YzxvOysrYyljIT09aSYmKGxbdSsrXT1hW2Nd KTtlLnB1c2gobCl9cmV0dXJuIHMoZSl9LHIuY29ubmVjdGVkQ29tcG9uZW50 cz1mdW5jdGlvbih0LGUpe3JldHVybiBlP2Z1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPW5ldyBhKGUpLG49MDtuPHQubGVuZ3RoOysrbilmb3IodmFyIGk9dFtu XSxvPTA7bzxpLmxlbmd0aDsrK28pZm9yKHZhciBzPW8rMTtzPGkubGVuZ3Ro OysrcylyLmxpbmsoaVtvXSxpW3NdKTt2YXIgbD1bXSxjPXIucmFua3M7Zm9y KG49MDtuPGMubGVuZ3RoOysrbiljW25dPS0xO2ZvcihuPTA7bjx0Lmxlbmd0 aDsrK24pe3ZhciB1PXIuZmluZCh0W25dWzBdKTtjW3VdPDA/KGNbdV09bC5s ZW5ndGgsbC5wdXNoKFt0W25dLnNsaWNlKDApXSkpOmxbY1t1XV0ucHVzaCh0 W25dLnNsaWNlKDApKX1yZXR1cm4gbH0odCxlKTpmdW5jdGlvbih0KXtmb3Io dmFyIGU9bChzKGgodCwwKSkpLHI9bmV3IGEoZS5sZW5ndGgpLG49MDtuPHQu bGVuZ3RoOysrbilmb3IodmFyIGk9dFtuXSxvPTA7bzxpLmxlbmd0aDsrK28p Zm9yKHZhciB1PWMoZSxbaVtvXV0pLGY9bysxO2Y8aS5sZW5ndGg7KytmKXIu bGluayh1LGMoZSxbaVtmXV0pKTt2YXIgcD1bXSxkPXIucmFua3M7Zm9yKG49 MDtuPGQubGVuZ3RoOysrbilkW25dPS0xO2ZvcihuPTA7bjx0Lmxlbmd0aDsr K24pe3ZhciBnPXIuZmluZChjKGUsW3Rbbl1bMF1dKSk7ZFtnXTwwPyhkW2dd PXAubGVuZ3RoLHAucHVzaChbdFtuXS5zbGljZSgwKV0pKTpwW2RbZ11dLnB1 c2godFtuXS5zbGljZSgwKSl9cmV0dXJuIHB9KHQpfX0seyJiaXQtdHdpZGRs ZSI6OTQsInVuaW9uLWZpbmQiOjU0NX1dLDUyMDpbZnVuY3Rpb24odCxlLHIp e2FyZ3VtZW50c1s0XVs5NF1bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7ZHVw Ojk0fV0sNTIxOltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzUxOV1b MF0uYXBwbHkocixhcmd1bWVudHMpfSx7ImJpdC10d2lkZGxlIjo1MjAsZHVw OjUxOSwidW5pb24tZmluZCI6NTIyfV0sNTIyOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dGhpcy5yb290cz1uZXcgQXJy YXkodCksdGhpcy5yYW5rcz1uZXcgQXJyYXkodCk7Zm9yKHZhciBlPTA7ZTx0 OysrZSl0aGlzLnJvb3RzW2VdPWUsdGhpcy5yYW5rc1tlXT0wfWUuZXhwb3J0 cz1uLG4ucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlz LnJvb3RzLmxlbmd0aH0sbi5wcm90b3R5cGUubWFrZVNldD1mdW5jdGlvbigp e3ZhciB0PXRoaXMucm9vdHMubGVuZ3RoO3JldHVybiB0aGlzLnJvb3RzLnB1 c2godCksdGhpcy5yYW5rcy5wdXNoKDApLHR9LG4ucHJvdG90eXBlLmZpbmQ9 ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMucm9vdHM7ZVt0XSE9PXQ7KXt2 YXIgcj1lW3RdO2VbdF09ZVtyXSx0PXJ9cmV0dXJuIHR9LG4ucHJvdG90eXBl Lmxpbms9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmZpbmQodCksbj10aGlz LmZpbmQoZSk7aWYociE9PW4pe3ZhciBhPXRoaXMucmFua3MsaT10aGlzLnJv b3RzLG89YVtyXSxzPWFbbl07bzxzP2lbcl09bjpzPG8/aVtuXT1yOihpW25d PXIsKythW3JdKX19fSx7fV0sNTIzOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBpPWUu bGVuZ3RoLG89dC5sZW5ndGgscz1uZXcgQXJyYXkoaSksbD1uZXcgQXJyYXko aSksYz1uZXcgQXJyYXkoaSksdT1uZXcgQXJyYXkoaSksaD0wO2g8aTsrK2gp c1toXT1sW2hdPS0xLGNbaF09MS8wLHVbaF09ITE7Zm9yKHZhciBoPTA7aDxv OysraCl7dmFyIGY9dFtoXTtpZigyIT09Zi5sZW5ndGgpdGhyb3cgbmV3IEVy cm9yKCJJbnB1dCBtdXN0IGJlIGEgZ3JhcGgiKTt2YXIgcD1mWzFdLGQ9Zlsw XTstMSE9PWxbZF0/bFtkXT0tMjpsW2RdPXAsLTEhPT1zW3BdP3NbcF09LTI6 c1twXT1kfWZ1bmN0aW9uIGcodCl7aWYodVt0XSlyZXR1cm4gMS8wO3ZhciBy LGEsaSxvLGMsaD1zW3RdLGY9bFt0XTtyZXR1cm4gaDwwfHxmPDA/MS8wOihy PWVbdF0sYT1lW2hdLGk9ZVtmXSxvPU1hdGguYWJzKG4ocixhLGkpKSxjPU1h dGguc3FydChNYXRoLnBvdyhhWzBdLWlbMF0sMikrTWF0aC5wb3coYVsxXS1p WzFdLDIpKSxvL2MpfWZ1bmN0aW9uIHYodCxlKXt2YXIgcj1UW3RdLG49VFtl XTtUW3RdPW4sVFtlXT1yLE1bcl09ZSxNW25dPXR9ZnVuY3Rpb24gbSh0KXty ZXR1cm4gY1tUW3RdXX1mdW5jdGlvbiB5KHQpe3JldHVybiAxJnQ/dC0xPj4x Oih0Pj4xKS0xfWZ1bmN0aW9uIHgodCl7Zm9yKHZhciBlPW0odCk7Oyl7dmFy IHI9ZSxuPTIqdCsxLGE9MioodCsxKSxpPXQ7aWYobjxTKXt2YXIgbz1tKG4p O288ciYmKGk9bixyPW8pfWlmKGE8Uyl7dmFyIHM9bShhKTtzPHImJihpPWEp fWlmKGk9PT10KXJldHVybiB0O3YodCxpKSx0PWl9fWZ1bmN0aW9uIGIodCl7 Zm9yKHZhciBlPW0odCk7dD4wOyl7dmFyIHI9eSh0KTtpZihyPj0wKXt2YXIg bj1tKHIpO2lmKGU8bil7dih0LHIpLHQ9cjtjb250aW51ZX19cmV0dXJuIHR9 fWZ1bmN0aW9uIF8oKXtpZihTPjApe3ZhciB0PVRbMF07cmV0dXJuIHYoMCxT LTEpLFMtPTEseCgwKSx0fXJldHVybi0xfWZ1bmN0aW9uIHcodCxlKXt2YXIg cj1UW3RdO3JldHVybiBjW3JdPT09ZT90OihjW3JdPS0xLzAsYih0KSxfKCks Y1tyXT1lLGIoKFMrPTEpLTEpKX1mdW5jdGlvbiBrKHQpe2lmKCF1W3RdKXt1 W3RdPSEwO3ZhciBlPXNbdF0scj1sW3RdO3Nbcl0+PTAmJihzW3JdPWUpLGxb ZV0+PTAmJihsW2VdPXIpLE1bZV0+PTAmJncoTVtlXSxnKGUpKSxNW3JdPj0w JiZ3KE1bcl0sZyhyKSl9fWZvcih2YXIgVD1bXSxNPW5ldyBBcnJheShpKSxo PTA7aDxpOysraCl7dmFyIEE9Y1toXT1nKGgpO0E8MS8wPyhNW2hdPVQubGVu Z3RoLFQucHVzaChoKSk6TVtoXT0tMX1mb3IodmFyIFM9VC5sZW5ndGgsaD1T Pj4xO2g+PTA7LS1oKXgoaCk7Zm9yKDs7KXt2YXIgRT1fKCk7aWYoRTwwfHxj W0VdPnIpYnJlYWs7ayhFKX1mb3IodmFyIEw9W10saD0wO2g8aTsrK2gpdVto XXx8KE1baF09TC5sZW5ndGgsTC5wdXNoKGVbaF0uc2xpY2UoKSkpO0wubGVu Z3RoO2Z1bmN0aW9uIEModCxlKXtpZih0W2VdPDApcmV0dXJuIGU7dmFyIHI9 ZSxuPWU7ZG97dmFyIGE9dFtuXTtpZighdVtuXXx8YTwwfHxhPT09bilicmVh aztpZihhPXRbbj1hXSwhdVtuXXx8YTwwfHxhPT09bilicmVhaztuPWEscj10 W3JdfXdoaWxlKHIhPT1uKTtmb3IodmFyIGk9ZTtpIT09bjtpPXRbaV0pdFtp XT1uO3JldHVybiBufXZhciBQPVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rp b24odCl7dmFyIGU9QyhzLHRbMF0pLHI9QyhsLHRbMV0pO2lmKGU+PTAmJnI+ PTAmJmUhPT1yKXt2YXIgbj1NW2VdLGE9TVtyXTtuIT09YSYmUC5wdXNoKFtu LGFdKX19KSxhLnVuaXF1ZShhLm5vcm1hbGl6ZShQKSkse3Bvc2l0aW9uczpM LGVkZ2VzOlB9fTt2YXIgbj10KCJyb2J1c3Qtb3JpZW50YXRpb24iKSxhPXQo InNpbXBsaWNpYWwtY29tcGxleCIpfSx7InJvYnVzdC1vcmllbnRhdGlvbiI6 NTA5LCJzaW1wbGljaWFsLWNvbXBsZXgiOjUyMX1dLDUyNDpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcixpLG8scztpZihlWzBdWzBdPGVbMV1bMF0pcj1lWzBdLGk9ZVsxXTtl bHNle2lmKCEoZVswXVswXT5lWzFdWzBdKSlyZXR1cm4gYShlLHQpO3I9ZVsx XSxpPWVbMF19aWYodFswXVswXTx0WzFdWzBdKW89dFswXSxzPXRbMV07ZWxz ZXtpZighKHRbMF1bMF0+dFsxXVswXSkpcmV0dXJuLWEodCxlKTtvPXRbMV0s cz10WzBdfXZhciBsPW4ocixpLHMpLGM9bihyLGksbyk7aWYobDwwKXtpZihj PD0wKXJldHVybiBsfWVsc2UgaWYobD4wKXtpZihjPj0wKXJldHVybiBsfWVs c2UgaWYoYylyZXR1cm4gYztpZihsPW4ocyxvLGkpLGM9bihzLG8sciksbDww KXtpZihjPD0wKXJldHVybiBsfWVsc2UgaWYobD4wKXtpZihjPj0wKXJldHVy biBsfWVsc2UgaWYoYylyZXR1cm4gYztyZXR1cm4gaVswXS1zWzBdfTt2YXIg bj10KCJyb2J1c3Qtb3JpZW50YXRpb24iKTtmdW5jdGlvbiBhKHQsZSl7dmFy IHIsYSxpLG87aWYoZVswXVswXTxlWzFdWzBdKXI9ZVswXSxhPWVbMV07ZWxz ZXtpZighKGVbMF1bMF0+ZVsxXVswXSkpe3ZhciBzPU1hdGgubWluKHRbMF1b MV0sdFsxXVsxXSksbD1NYXRoLm1heCh0WzBdWzFdLHRbMV1bMV0pLGM9TWF0 aC5taW4oZVswXVsxXSxlWzFdWzFdKSx1PU1hdGgubWF4KGVbMF1bMV0sZVsx XVsxXSk7cmV0dXJuIGw8Yz9sLWM6cz51P3MtdTpsLXV9cj1lWzFdLGE9ZVsw XX10WzBdWzFdPHRbMV1bMV0/KGk9dFswXSxvPXRbMV0pOihpPXRbMV0sbz10 WzBdKTt2YXIgaD1uKGEscixpKTtyZXR1cm4gaHx8KChoPW4oYSxyLG8pKXx8 by1hKX19LHsicm9idXN0LW9yaWVudGF0aW9uIjo1MDl9XSw1MjU6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQp e2Zvcih2YXIgZT10Lmxlbmd0aCxyPTIqZSxuPW5ldyBBcnJheShyKSxpPTA7 aTxlOysraSl7dmFyIGw9dFtpXSxjPWxbMF1bMF08bFsxXVswXTtuWzIqaV09 bmV3IGgobFswXVswXSxsLGMsaSksblsyKmkrMV09bmV3IGgobFsxXVswXSxs LCFjLGkpfW4uc29ydChmdW5jdGlvbih0LGUpe3ZhciByPXQueC1lLng7cmV0 dXJuIHJ8fCgocj10LmNyZWF0ZS1lLmNyZWF0ZSl8fE1hdGgubWluKHQuc2Vn bWVudFswXVsxXSx0LnNlZ21lbnRbMV1bMV0pLU1hdGgubWluKGUuc2VnbWVu dFswXVsxXSxlLnNlZ21lbnRbMV1bMV0pKX0pO2Zvcih2YXIgZj1hKG8pLHA9 W10sZD1bXSxnPVtdLGk9MDtpPHI7KXtmb3IodmFyIHY9bltpXS54LG09W107 aTxyOyl7dmFyIHk9bltpXTtpZih5LnghPT12KWJyZWFrO2krPTEseS5zZWdt ZW50WzBdWzBdPT09eS54JiZ5LnNlZ21lbnRbMV1bMF09PT15Lng/eS5jcmVh dGUmJih5LnNlZ21lbnRbMF1bMV08eS5zZWdtZW50WzFdWzFdPyhtLnB1c2go bmV3IHUoeS5zZWdtZW50WzBdWzFdLHkuaW5kZXgsITAsITApKSxtLnB1c2go bmV3IHUoeS5zZWdtZW50WzFdWzFdLHkuaW5kZXgsITEsITEpKSk6KG0ucHVz aChuZXcgdSh5LnNlZ21lbnRbMV1bMV0seS5pbmRleCwhMCwhMSkpLG0ucHVz aChuZXcgdSh5LnNlZ21lbnRbMF1bMV0seS5pbmRleCwhMSwhMCkpKSk6Zj15 LmNyZWF0ZT9mLmluc2VydCh5LnNlZ21lbnQseS5pbmRleCk6Zi5yZW1vdmUo eS5zZWdtZW50KX1wLnB1c2goZi5yb290KSxkLnB1c2godiksZy5wdXNoKG0p fXJldHVybiBuZXcgcyhwLGQsZyl9O3ZhciBuPXQoImJpbmFyeS1zZWFyY2gt Ym91bmRzIiksYT10KCJmdW5jdGlvbmFsLXJlZC1ibGFjay10cmVlIiksaT10 KCJyb2J1c3Qtb3JpZW50YXRpb24iKSxvPXQoIi4vbGliL29yZGVyLXNlZ21l bnRzIik7ZnVuY3Rpb24gcyh0LGUscil7dGhpcy5zbGFicz10LHRoaXMuY29v cmRpbmF0ZXM9ZSx0aGlzLmhvcml6b250YWw9cn1mdW5jdGlvbiBsKHQsZSl7 cmV0dXJuIHQueS1lfWZ1bmN0aW9uIGModCxlKXtmb3IodmFyIHI9bnVsbDt0 Oyl7dmFyIG4sYSxvPXQua2V5O29bMF1bMF08b1sxXVswXT8obj1vWzBdLGE9 b1sxXSk6KG49b1sxXSxhPW9bMF0pO3ZhciBzPWkobixhLGUpO2lmKHM8MCl0 PXQubGVmdDtlbHNlIGlmKHM+MClpZihlWzBdIT09b1sxXVswXSlyPXQsdD10 LnJpZ2h0O2Vsc2V7aWYobD1jKHQucmlnaHQsZSkpcmV0dXJuIGw7dD10Lmxl ZnR9ZWxzZXtpZihlWzBdIT09b1sxXVswXSlyZXR1cm4gdDt2YXIgbDtpZihs PWModC5yaWdodCxlKSlyZXR1cm4gbDt0PXQubGVmdH19cmV0dXJuIHJ9ZnVu Y3Rpb24gdSh0LGUscixuKXt0aGlzLnk9dCx0aGlzLmluZGV4PWUsdGhpcy5z dGFydD1yLHRoaXMuY2xvc2VkPW59ZnVuY3Rpb24gaCh0LGUscixuKXt0aGlz Lng9dCx0aGlzLnNlZ21lbnQ9ZSx0aGlzLmNyZWF0ZT1yLHRoaXMuaW5kZXg9 bn1zLnByb3RvdHlwZS5jYXN0VXA9ZnVuY3Rpb24odCl7dmFyIGU9bi5sZSh0 aGlzLmNvb3JkaW5hdGVzLHRbMF0pO2lmKGU8MClyZXR1cm4tMTt0aGlzLnNs YWJzW2VdO3ZhciByPWModGhpcy5zbGFic1tlXSx0KSxhPS0xO2lmKHImJihh PXIudmFsdWUpLHRoaXMuY29vcmRpbmF0ZXNbZV09PT10WzBdKXt2YXIgcz1u dWxsO2lmKHImJihzPXIua2V5KSxlPjApe3ZhciB1PWModGhpcy5zbGFic1tl LTFdLHQpO3UmJihzP28odS5rZXkscyk+MCYmKHM9dS5rZXksYT11LnZhbHVl KTooYT11LnZhbHVlLHM9dS5rZXkpKX12YXIgaD10aGlzLmhvcml6b250YWxb ZV07aWYoaC5sZW5ndGg+MCl7dmFyIGY9bi5nZShoLHRbMV0sbCk7aWYoZjxo Lmxlbmd0aCl7dmFyIHA9aFtmXTtpZih0WzFdPT09cC55KXtpZihwLmNsb3Nl ZClyZXR1cm4gcC5pbmRleDtmb3IoO2Y8aC5sZW5ndGgtMSYmaFtmKzFdLnk9 PT10WzFdOylpZigocD1oW2YrPTFdKS5jbG9zZWQpcmV0dXJuIHAuaW5kZXg7 aWYocC55PT09dFsxXSYmIXAuc3RhcnQpe2lmKChmKz0xKT49aC5sZW5ndGgp cmV0dXJuIGE7cD1oW2ZdfX1pZihwLnN0YXJ0KWlmKHMpe3ZhciBkPWkoc1sw XSxzWzFdLFt0WzBdLHAueV0pO3NbMF1bMF0+c1sxXVswXSYmKGQ9LWQpLGQ+ MCYmKGE9cC5pbmRleCl9ZWxzZSBhPXAuaW5kZXg7ZWxzZSBwLnkhPT10WzFd JiYoYT1wLmluZGV4KX19fXJldHVybiBhfX0seyIuL2xpYi9vcmRlci1zZWdt ZW50cyI6NTI0LCJiaW5hcnktc2VhcmNoLWJvdW5kcyI6OTMsImZ1bmN0aW9u YWwtcmVkLWJsYWNrLXRyZWUiOjIzMywicm9idXN0LW9yaWVudGF0aW9uIjo1 MDl9XSw1MjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgicm9idXN0LWRvdC1wcm9kdWN0IiksYT10KCJyb2J1c3Qtc3VtIik7ZnVu Y3Rpb24gaSh0LGUpe3ZhciByPWEobih0LGUpLFtlW2UubGVuZ3RoLTFdXSk7 cmV0dXJuIHJbci5sZW5ndGgtMV19ZnVuY3Rpb24gbyh0LGUscixuKXt2YXIg YT0tZS8obi1lKTthPDA/YT0wOmE+MSYmKGE9MSk7Zm9yKHZhciBpPTEtYSxv PXQubGVuZ3RoLHM9bmV3IEFycmF5KG8pLGw9MDtsPG87KytsKXNbbF09YSp0 W2xdK2kqcltsXTtyZXR1cm4gc31lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtm b3IodmFyIHI9W10sbj1bXSxhPWkodFt0Lmxlbmd0aC0xXSxlKSxzPXRbdC5s ZW5ndGgtMV0sbD10WzBdLGM9MDtjPHQubGVuZ3RoOysrYyxzPWwpe3ZhciB1 PWkobD10W2NdLGUpO2lmKGE8MCYmdT4wfHxhPjAmJnU8MCl7dmFyIGg9byhz LHUsbCxhKTtyLnB1c2goaCksbi5wdXNoKGguc2xpY2UoKSl9dTwwP24ucHVz aChsLnNsaWNlKCkpOnU+MD9yLnB1c2gobC5zbGljZSgpKTooci5wdXNoKGwu c2xpY2UoKSksbi5wdXNoKGwuc2xpY2UoKSkpLGE9dX1yZXR1cm57cG9zaXRp dmU6cixuZWdhdGl2ZTpufX0sZS5leHBvcnRzLnBvc2l0aXZlPWZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByPVtdLG49aSh0W3QubGVuZ3RoLTFdLGUpLGE9dFt0 Lmxlbmd0aC0xXSxzPXRbMF0sbD0wO2w8dC5sZW5ndGg7KytsLGE9cyl7dmFy IGM9aShzPXRbbF0sZSk7KG48MCYmYz4wfHxuPjAmJmM8MCkmJnIucHVzaChv KGEsYyxzLG4pKSxjPj0wJiZyLnB1c2gocy5zbGljZSgpKSxuPWN9cmV0dXJu IHJ9LGUuZXhwb3J0cy5uZWdhdGl2ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIg cj1bXSxuPWkodFt0Lmxlbmd0aC0xXSxlKSxhPXRbdC5sZW5ndGgtMV0scz10 WzBdLGw9MDtsPHQubGVuZ3RoOysrbCxhPXMpe3ZhciBjPWkocz10W2xdLGUp OyhuPDAmJmM+MHx8bj4wJiZjPDApJiZyLnB1c2gobyhhLGMscyxuKSksYzw9 MCYmci5wdXNoKHMuc2xpY2UoKSksbj1jfXJldHVybiByfX0seyJyb2J1c3Qt ZG90LXByb2R1Y3QiOjUwNiwicm9idXN0LXN1bSI6NTE0fV0sNTI3OltmdW5j dGlvbih0LGUscil7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PXtu b3Rfc3RyaW5nOi9bXnNdLyxub3RfYm9vbDovW150XS8sbm90X3R5cGU6L1te VF0vLG5vdF9wcmltaXRpdmU6L1tedl0vLG51bWJlcjovW2RpZWZnXS8sbnVt ZXJpY19hcmc6L1tiY2RpZWZndXhYXS8sanNvbjovW2pdLyxub3RfanNvbjov W15qXS8sdGV4dDovXlteXHgyNV0rLyxtb2R1bG86L15ceDI1ezJ9LyxwbGFj ZWhvbGRlcjovXlx4MjUoPzooWzEtOV1cZCopXCR8XCgoW14pXSspXCkpPyhc Kyk/KDB8J1teJF0pPygtKT8oXGQrKT8oPzpcLihcZCspKT8oW2ItZ2lqb3N0 VHV2eFhdKS8sa2V5Oi9eKFthLXpfXVthLXpfXGRdKikvaSxrZXlfYWNjZXNz Oi9eXC4oW2Etel9dW2Etel9cZF0qKS9pLGluZGV4X2FjY2VzczovXlxbKFxk KylcXS8sc2lnbjovXlsrLV0vfTtmdW5jdGlvbiBlKHIpe3JldHVybiBmdW5j dGlvbihyLG4pe3ZhciBhLGksbyxzLGwsYyx1LGgsZixwPTEsZD1yLmxlbmd0 aCxnPSIiO2ZvcihpPTA7aTxkO2krKylpZigic3RyaW5nIj09dHlwZW9mIHJb aV0pZys9cltpXTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgcltpXSl7aWYo KHM9cltpXSkua2V5cylmb3IoYT1uW3BdLG89MDtvPHMua2V5cy5sZW5ndGg7 bysrKXtpZihudWxsPT1hKXRocm93IG5ldyBFcnJvcihlKCdbc3ByaW50Zl0g Q2Fubm90IGFjY2VzcyBwcm9wZXJ0eSAiJXMiIG9mIHVuZGVmaW5lZCB2YWx1 ZSAiJXMiJyxzLmtleXNbb10scy5rZXlzW28tMV0pKTthPWFbcy5rZXlzW29d XX1lbHNlIGE9cy5wYXJhbV9ubz9uW3MucGFyYW1fbm9dOm5bcCsrXTtpZih0 Lm5vdF90eXBlLnRlc3Qocy50eXBlKSYmdC5ub3RfcHJpbWl0aXZlLnRlc3Qo cy50eXBlKSYmYSBpbnN0YW5jZW9mIEZ1bmN0aW9uJiYoYT1hKCkpLHQubnVt ZXJpY19hcmcudGVzdChzLnR5cGUpJiYibnVtYmVyIiE9dHlwZW9mIGEmJmlz TmFOKGEpKXRocm93IG5ldyBUeXBlRXJyb3IoZSgiW3NwcmludGZdIGV4cGVj dGluZyBudW1iZXIgYnV0IGZvdW5kICVUIixhKSk7c3dpdGNoKHQubnVtYmVy LnRlc3Qocy50eXBlKSYmKGg9YT49MCkscy50eXBlKXtjYXNlImIiOmE9cGFy c2VJbnQoYSwxMCkudG9TdHJpbmcoMik7YnJlYWs7Y2FzZSJjIjphPVN0cmlu Zy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYSwxMCkpO2JyZWFrO2Nhc2UiZCI6 Y2FzZSJpIjphPXBhcnNlSW50KGEsMTApO2JyZWFrO2Nhc2UiaiI6YT1KU09O LnN0cmluZ2lmeShhLG51bGwscy53aWR0aD9wYXJzZUludChzLndpZHRoKTow KTticmVhaztjYXNlImUiOmE9cy5wcmVjaXNpb24/cGFyc2VGbG9hdChhKS50 b0V4cG9uZW50aWFsKHMucHJlY2lzaW9uKTpwYXJzZUZsb2F0KGEpLnRvRXhw b25lbnRpYWwoKTticmVhaztjYXNlImYiOmE9cy5wcmVjaXNpb24/cGFyc2VG bG9hdChhKS50b0ZpeGVkKHMucHJlY2lzaW9uKTpwYXJzZUZsb2F0KGEpO2Jy ZWFrO2Nhc2UiZyI6YT1zLnByZWNpc2lvbj9TdHJpbmcoTnVtYmVyKGEudG9Q cmVjaXNpb24ocy5wcmVjaXNpb24pKSk6cGFyc2VGbG9hdChhKTticmVhaztj YXNlIm8iOmE9KHBhcnNlSW50KGEsMTApPj4+MCkudG9TdHJpbmcoOCk7YnJl YWs7Y2FzZSJzIjphPVN0cmluZyhhKSxhPXMucHJlY2lzaW9uP2Euc3Vic3Ry aW5nKDAscy5wcmVjaXNpb24pOmE7YnJlYWs7Y2FzZSJ0IjphPVN0cmluZygh IWEpLGE9cy5wcmVjaXNpb24/YS5zdWJzdHJpbmcoMCxzLnByZWNpc2lvbik6 YTticmVhaztjYXNlIlQiOmE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j YWxsKGEpLnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCksYT1zLnByZWNpc2lv bj9hLnN1YnN0cmluZygwLHMucHJlY2lzaW9uKTphO2JyZWFrO2Nhc2UidSI6 YT1wYXJzZUludChhLDEwKT4+PjA7YnJlYWs7Y2FzZSJ2IjphPWEudmFsdWVP ZigpLGE9cy5wcmVjaXNpb24/YS5zdWJzdHJpbmcoMCxzLnByZWNpc2lvbik6 YTticmVhaztjYXNlIngiOmE9KHBhcnNlSW50KGEsMTApPj4+MCkudG9TdHJp bmcoMTYpO2JyZWFrO2Nhc2UiWCI6YT0ocGFyc2VJbnQoYSwxMCk+Pj4wKS50 b1N0cmluZygxNikudG9VcHBlckNhc2UoKX10Lmpzb24udGVzdChzLnR5cGUp P2crPWE6KCF0Lm51bWJlci50ZXN0KHMudHlwZSl8fGgmJiFzLnNpZ24/Zj0i IjooZj1oPyIrIjoiLSIsYT1hLnRvU3RyaW5nKCkucmVwbGFjZSh0LnNpZ24s IiIpKSxjPXMucGFkX2NoYXI/IjAiPT09cy5wYWRfY2hhcj8iMCI6cy5wYWRf Y2hhci5jaGFyQXQoMSk6IiAiLHU9cy53aWR0aC0oZithKS5sZW5ndGgsbD1z LndpZHRoJiZ1PjA/Yy5yZXBlYXQodSk6IiIsZys9cy5hbGlnbj9mK2ErbDoi MCI9PT1jP2YrbCthOmwrZithKX1yZXR1cm4gZ30oZnVuY3Rpb24oZSl7aWYo YVtlXSlyZXR1cm4gYVtlXTt2YXIgcixuPWUsaT1bXSxvPTA7Zm9yKDtuOyl7 aWYobnVsbCE9PShyPXQudGV4dC5leGVjKG4pKSlpLnB1c2goclswXSk7ZWxz ZSBpZihudWxsIT09KHI9dC5tb2R1bG8uZXhlYyhuKSkpaS5wdXNoKCIlIik7 ZWxzZXtpZihudWxsPT09KHI9dC5wbGFjZWhvbGRlci5leGVjKG4pKSl0aHJv dyBuZXcgU3ludGF4RXJyb3IoIltzcHJpbnRmXSB1bmV4cGVjdGVkIHBsYWNl aG9sZGVyIik7aWYoclsyXSl7b3w9MTt2YXIgcz1bXSxsPXJbMl0sYz1bXTtp ZihudWxsPT09KGM9dC5rZXkuZXhlYyhsKSkpdGhyb3cgbmV3IFN5bnRheEVy cm9yKCJbc3ByaW50Zl0gZmFpbGVkIHRvIHBhcnNlIG5hbWVkIGFyZ3VtZW50 IGtleSIpO2ZvcihzLnB1c2goY1sxXSk7IiIhPT0obD1sLnN1YnN0cmluZyhj WzBdLmxlbmd0aCkpOylpZihudWxsIT09KGM9dC5rZXlfYWNjZXNzLmV4ZWMo bCkpKXMucHVzaChjWzFdKTtlbHNle2lmKG51bGw9PT0oYz10LmluZGV4X2Fj Y2Vzcy5leGVjKGwpKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIltzcHJpbnRm XSBmYWlsZWQgdG8gcGFyc2UgbmFtZWQgYXJndW1lbnQga2V5Iik7cy5wdXNo KGNbMV0pfXJbMl09c31lbHNlIG98PTI7aWYoMz09PW8pdGhyb3cgbmV3IEVy cm9yKCJbc3ByaW50Zl0gbWl4aW5nIHBvc2l0aW9uYWwgYW5kIG5hbWVkIHBs YWNlaG9sZGVycyBpcyBub3QgKHlldCkgc3VwcG9ydGVkIik7aS5wdXNoKHtw bGFjZWhvbGRlcjpyWzBdLHBhcmFtX25vOnJbMV0sa2V5czpyWzJdLHNpZ246 clszXSxwYWRfY2hhcjpyWzRdLGFsaWduOnJbNV0sd2lkdGg6cls2XSxwcmVj aXNpb246cls3XSx0eXBlOnJbOF19KX1uPW4uc3Vic3RyaW5nKHJbMF0ubGVu Z3RoKX1yZXR1cm4gYVtlXT1pfShyKSxhcmd1bWVudHMpfWZ1bmN0aW9uIG4o dCxyKXtyZXR1cm4gZS5hcHBseShudWxsLFt0XS5jb25jYXQocnx8W10pKX12 YXIgYT1PYmplY3QuY3JlYXRlKG51bGwpOyJ1bmRlZmluZWQiIT10eXBlb2Yg ciYmKHIuc3ByaW50Zj1lLHIudnNwcmludGY9biksInVuZGVmaW5lZCIhPXR5 cGVvZiB3aW5kb3cmJih3aW5kb3cuc3ByaW50Zj1lLHdpbmRvdy52c3ByaW50 Zj1uKX0oKX0se31dLDUyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJwYXJlbnRoZXNpcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7aWYobnVsbD09dCl0aHJvdyBFcnJvcigiRmlyc3QgYXJndW1lbnQg c2hvdWxkIGJlIGEgc3RyaW5nIik7aWYobnVsbD09ZSl0aHJvdyBFcnJvcigi U2VwYXJhdG9yIHNob3VsZCBiZSBhIHN0cmluZyBvciBhIFJlZ0V4cCIpO3I/ KCJzdHJpbmciPT10eXBlb2Ygcnx8QXJyYXkuaXNBcnJheShyKSkmJihyPXtp Z25vcmU6cn0pOnI9e30sbnVsbD09ci5lc2NhcGUmJihyLmVzY2FwZT0hMCks bnVsbD09ci5pZ25vcmU/ci5pZ25vcmU9WyJbXSIsIigpIiwie30iLCI8PiIs JyIiJywiJyciLCJgYCIsIlx1MjAxY1x1MjAxZCIsIlx4YWJceGJiIl06KCJz dHJpbmciPT10eXBlb2Ygci5pZ25vcmUmJihyLmlnbm9yZT1bci5pZ25vcmVd KSxyLmlnbm9yZT1yLmlnbm9yZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIDE9 PT10Lmxlbmd0aCYmKHQrPXQpLHR9KSk7dmFyIGE9bi5wYXJzZSh0LHtmbGF0 OiEwLGJyYWNrZXRzOnIuaWdub3JlfSksaT1hWzBdLnNwbGl0KGUpO2lmKHIu ZXNjYXBlKXtmb3IodmFyIG89W10scz0wO3M8aS5sZW5ndGg7cysrKXt2YXIg bD1pW3NdLGM9aVtzKzFdOyJcXCI9PT1sW2wubGVuZ3RoLTFdJiYiXFwiIT09 bFtsLmxlbmd0aC0yXT8oby5wdXNoKGwrZStjKSxzKyspOm8ucHVzaChsKX1p PW99Zm9yKHM9MDtzPGkubGVuZ3RoO3MrKylhWzBdPWlbc10saVtzXT1uLnN0 cmluZ2lmeShhLHtmbGF0OiEwfSk7cmV0dXJuIGl9fSx7cGFyZW50aGVzaXM6 NDYwfV0sNTI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJy YXkoZSksbj1uZXcgQXJyYXkoZSksYT1uZXcgQXJyYXkoZSksaT1uZXcgQXJy YXkoZSksbz1uZXcgQXJyYXkoZSkscz1uZXcgQXJyYXkoZSksbD0wO2w8ZTsr K2wpcltsXT0tMSxuW2xdPTAsYVtsXT0hMSxpW2xdPTAsb1tsXT0tMSxzW2xd PVtdO3ZhciBjLHU9MCxoPVtdLGY9W107ZnVuY3Rpb24gcChlKXt2YXIgbD1b ZV0sYz1bZV07Zm9yKHJbZV09bltlXT11LGFbZV09ITAsdSs9MTtjLmxlbmd0 aD4wOyl7ZT1jW2MubGVuZ3RoLTFdO3ZhciBwPXRbZV07aWYoaVtlXTxwLmxl bmd0aCl7Zm9yKHZhciBkPWlbZV07ZDxwLmxlbmd0aDsrK2Qpe3ZhciBnPXBb ZF07aWYocltnXTwwKXtyW2ddPW5bZ109dSxhW2ddPSEwLHUrPTEsbC5wdXNo KGcpLGMucHVzaChnKTticmVha31hW2ddJiYobltlXT0wfE1hdGgubWluKG5b ZV0sbltnXSkpLG9bZ10+PTAmJnNbZV0ucHVzaChvW2ddKX1pW2VdPWR9ZWxz ZXtpZihuW2VdPT09cltlXSl7Zm9yKHZhciB2PVtdLG09W10seT0wLGQ9bC5s ZW5ndGgtMTtkPj0wOy0tZCl7dmFyIHg9bFtkXTtpZihhW3hdPSExLHYucHVz aCh4KSxtLnB1c2goc1t4XSkseSs9c1t4XS5sZW5ndGgsb1t4XT1oLmxlbmd0 aCx4PT09ZSl7bC5sZW5ndGg9ZDticmVha319aC5wdXNoKHYpO2Zvcih2YXIg Yj1uZXcgQXJyYXkoeSksZD0wO2Q8bS5sZW5ndGg7ZCsrKWZvcih2YXIgXz0w O188bVtkXS5sZW5ndGg7XysrKWJbLS15XT1tW2RdW19dO2YucHVzaChiKX1j LnBvcCgpfX19Zm9yKHZhciBsPTA7bDxlOysrbClyW2xdPDAmJnAobCk7Zm9y KHZhciBsPTA7bDxmLmxlbmd0aDtsKyspe3ZhciBkPWZbbF07aWYoMCE9PWQu bGVuZ3RoKXtkLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSksYz1b ZFswXV07Zm9yKHZhciBnPTE7ZzxkLmxlbmd0aDtnKyspZFtnXSE9PWRbZy0x XSYmYy5wdXNoKGRbZ10pO2ZbbF09Y319cmV0dXJue2NvbXBvbmVudHM6aCxh ZGphY2VuY3lMaXN0OmZ9fX0se31dLDUzMDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZih0LmRpbWVu c2lvbjw9MClyZXR1cm57cG9zaXRpb25zOltdLGNlbGxzOltdfTtpZigxPT09 dC5kaW1lbnNpb24pcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWko dCxlKSxuPXIubGVuZ3RoLGE9bmV3IEFycmF5KG4pLG89bmV3IEFycmF5KG4p LHM9MDtzPG47KytzKWFbc109W3Jbc11dLG9bc109W3NdO3JldHVybntwb3Np dGlvbnM6YSxjZWxsczpvfX0odCxlKTt2YXIgcj10Lm9yZGVyLmpvaW4oKSsi LSIrdC5kdHlwZSxzPW9bcl0sZT0rZXx8MDtzfHwocz1vW3JdPWZ1bmN0aW9u KHQsZSl7dmFyIHI9dC5sZW5ndGgsaT1bIid1c2Ugc3RyaWN0JzsiXSxvPSJz dXJmYWNlTmV0cyIrdC5qb2luKCJfIikrImQiK2U7aS5wdXNoKCJ2YXIgY29u dG91cj1nZW5Db250b3VyKHsiLCJvcmRlcjpbIix0LmpvaW4oKSwiXSwiLCJz Y2FsYXJBcmd1bWVudHM6IDMsIiwicGhhc2U6ZnVuY3Rpb24gcGhhc2VGdW5j KHAsYSxiLGMpIHsgcmV0dXJuIChwID4gYyl8MCB9LCIpLCJnZW5lcmljIj09 PWUmJmkucHVzaCgiZ2V0dGVyczpbMF0sIik7Zm9yKHZhciBzPVtdLGw9W10s Yz0wO2M8cjsrK2Mpcy5wdXNoKCJkIitjKSxsLnB1c2goImQiK2MpO2Zvcih2 YXIgYz0wO2M8MTw8cjsrK2Mpcy5wdXNoKCJ2IitjKSxsLnB1c2goInYiK2Mp O2Zvcih2YXIgYz0wO2M8MTw8cjsrK2Mpcy5wdXNoKCJwIitjKSxsLnB1c2go InAiK2MpO3MucHVzaCgiYSIsImIiLCJjIiksbC5wdXNoKCJhIiwiYyIpLGku cHVzaCgidmVydGV4OmZ1bmN0aW9uIHZlcnRleEZ1bmMoIixzLmpvaW4oKSwi KXsiKTtmb3IodmFyIHU9W10sYz0wO2M8MTw8cjsrK2MpdS5wdXNoKCIocCIr YysiPDwiK2MrIikiKTtpLnB1c2goInZhciBtPSgiLHUuam9pbigiKyIpLCIp fDA7aWYobT09PTB8fG09PT0iLCgxPDwoMTw8cikpLTEsIil7cmV0dXJufSIp O3ZhciBoPVtdLGY9W107MTw8KDE8PHIpPD0xMjg/KGkucHVzaCgic3dpdGNo KG0peyIpLGY9aSk6aS5wdXNoKCJzd2l0Y2gobT4+PjcpeyIpO2Zvcih2YXIg Yz0wO2M8MTw8KDE8PHIpOysrYyl7aWYoMTw8KDE8PHIpPjEyOCYmYyUxMjg9 PTApe2gubGVuZ3RoPjAmJmYucHVzaCgifX0iKTt2YXIgcD0idkV4dHJhIito Lmxlbmd0aDtpLnB1c2goImNhc2UgIixjPj4+NywiOiIscCwiKG0mMHg3Ziwi LGwuam9pbigpLCIpO2JyZWFrOyIpLGY9WyJmdW5jdGlvbiAiLHAsIihtLCIs bC5qb2luKCksIil7c3dpdGNoKG0peyJdLGgucHVzaChmKX1mLnB1c2goImNh c2UgIiwxMjcmYywiOiIpO2Zvcih2YXIgZD1uZXcgQXJyYXkociksZz1uZXcg QXJyYXkociksdj1uZXcgQXJyYXkociksbT1uZXcgQXJyYXkocikseT0wLHg9 MDt4PHI7Kyt4KWRbeF09W10sZ1t4XT1bXSx2W3hdPTAsbVt4XT0wO2Zvcih2 YXIgeD0wO3g8MTw8cjsrK3gpZm9yKHZhciBiPTA7YjxyOysrYil7dmFyIF89 eF4xPDxiO2lmKCEoXz54KSYmIShjJjE8PF8pIT0hKGMmMTw8eCkpe3ZhciB3 PTE7YyYxPDxfP2dbYl0ucHVzaCgidiIrXysiLXYiK3gpOihnW2JdLnB1c2go InYiK3grIi12IitfKSx3PS13KSx3PDA/KGRbYl0ucHVzaCgiLXYiK3grIi12 IitfKSx2W2JdKz0yKTooZFtiXS5wdXNoKCJ2Iit4KyIrdiIrXyksdltiXS09 MikseSs9MTtmb3IodmFyIGs9MDtrPHI7KytrKWshPT1iJiYoXyYxPDxrP21b a10rPTE6bVtrXS09MSl9fWZvcih2YXIgVD1bXSxiPTA7YjxyOysrYilpZigw PT09ZFtiXS5sZW5ndGgpVC5wdXNoKCJkIitiKyItMC41Iik7ZWxzZXt2YXIg TT0iIjt2W2JdPDA/TT12W2JdKyIqYyI6dltiXT4wJiYoTT0iKyIrdltiXSsi KmMiKTt2YXIgQT1kW2JdLmxlbmd0aC95Ki41LFM9LjUrbVtiXS95Ki41O1Qu cHVzaCgiZCIrYisiLSIrUysiLSIrQSsiKigiK2RbYl0uam9pbigiKyIpK00r IikvKCIrZ1tiXS5qb2luKCIrIikrIikiKX1mLnB1c2goImEucHVzaChbIixU LmpvaW4oKSwiXSk7IiwiYnJlYWs7Iil9aS5wdXNoKCJ9fSwiKSxoLmxlbmd0 aD4wJiZmLnB1c2goIn19Iik7Zm9yKHZhciBFPVtdLGM9MDtjPDE8PHItMTsr K2MpRS5wdXNoKCJ2IitjKTtFLnB1c2goImMwIiwiYzEiLCJwMCIsInAxIiwi YSIsImIiLCJjIiksaS5wdXNoKCJjZWxsOmZ1bmN0aW9uIGNlbGxGdW5jKCIs RS5qb2luKCksIil7Iik7dmFyIEw9YShyLTEpO2kucHVzaCgiaWYocDApe2Iu cHVzaCgiLEwubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJbIit0Lm1hcChmdW5j dGlvbih0KXtyZXR1cm4idiIrdH0pKyJdIn0pLmpvaW4oKSwiKX1lbHNle2Iu cHVzaCgiLEwubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPXQuc2xpY2UoKTtyZXR1 cm4gZS5yZXZlcnNlKCksIlsiK2UubWFwKGZ1bmN0aW9uKHQpe3JldHVybiJ2 Iit0fSkrIl0ifSkuam9pbigpLCIpfX19KTtmdW5jdGlvbiAiLG8sIihhcnJh eSxsZXZlbCl7dmFyIHZlcnRzPVtdLGNlbGxzPVtdO2NvbnRvdXIoYXJyYXks dmVydHMsY2VsbHMsbGV2ZWwpO3JldHVybiB7cG9zaXRpb25zOnZlcnRzLGNl bGxzOmNlbGxzfTt9IHJldHVybiAiLG8sIjsiKTtmb3IodmFyIGM9MDtjPGgu bGVuZ3RoOysrYylpLnB1c2goaFtjXS5qb2luKCIiKSk7cmV0dXJuIG5ldyBG dW5jdGlvbigiZ2VuQ29udG91ciIsaS5qb2luKCIiKSkobil9KHQub3JkZXIs dC5kdHlwZSkpO3JldHVybiBzKHQsZSl9O3ZhciBuPXQoIm5kYXJyYXktZXh0 cmFjdC1jb250b3VyIiksYT10KCJ0cmlhbmd1bGF0ZS1oeXBlcmN1YmUiKSxp PXQoInplcm8tY3Jvc3NpbmdzIik7dmFyIG89e319LHsibmRhcnJheS1leHRy YWN0LWNvbnRvdXIiOjQ0MSwidHJpYW5ndWxhdGUtaHlwZXJjdWJlIjo1NDAs Inplcm8tY3Jvc3NpbmdzIjo1NzN9XSw1MzE6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9fZXNNb2R1 bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0 aW9uKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdDtpZihTeW1i b2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKXJldHVybiBmdW5jdGlvbih0LGUp e3ZhciByPVtdLG49ITAsYT0hMSxpPXZvaWQgMDt0cnl7Zm9yKHZhciBvLHM9 dFtTeW1ib2wuaXRlcmF0b3JdKCk7IShuPShvPXMubmV4dCgpKS5kb25lKSYm KHIucHVzaChvLnZhbHVlKSwhZXx8ci5sZW5ndGghPT1lKTtuPSEwKTt9Y2F0 Y2godCl7YT0hMCxpPXR9ZmluYWxseXt0cnl7IW4mJnMucmV0dXJuJiZzLnJl dHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBpfX1yZXR1cm4gcn0odCxlKTt0 aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1 Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9fSgpLGE9MipNYXRoLlBJ LGk9ZnVuY3Rpb24odCxlLHIsbixhLGksbyl7dmFyIHM9dC54LGw9dC55O3Jl dHVybnt4Om4qKHMqPWUpLWEqKGwqPXIpK2kseTphKnMrbipsK299fSxvPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9LjU1MTkxNTAyNDQ5NCooZTwwPy0xOjEpLG49 TWF0aC5jb3ModCksYT1NYXRoLnNpbih0KSxpPU1hdGguY29zKHQrZSksbz1N YXRoLnNpbih0K2UpO3JldHVyblt7eDpuLWEqcix5OmErbipyfSx7eDppK28q cix5Om8taSpyfSx7eDppLHk6b31dfSxzPWZ1bmN0aW9uKHQsZSxyLG4pe3Zh ciBhPXQqbi1lKnI8MD8tMToxLGk9KHQqcitlKm4pLyhNYXRoLnNxcnQodCp0 K2UqZSkqTWF0aC5zcXJ0KHQqdCtlKmUpKTtyZXR1cm4gaT4xJiYoaT0xKSxp PC0xJiYoaT0tMSksYSpNYXRoLmFjb3MoaSl9O3IuZGVmYXVsdD1mdW5jdGlv bih0KXt2YXIgZT10LnB4LHI9dC5weSxsPXQuY3gsYz10LmN5LHU9dC5yeCxo PXQucnksZj10LnhBeGlzUm90YXRpb24scD12b2lkIDA9PT1mPzA6ZixkPXQu bGFyZ2VBcmNGbGFnLGc9dm9pZCAwPT09ZD8wOmQsdj10LnN3ZWVwRmxhZyxt PXZvaWQgMD09PXY/MDp2LHk9W107aWYoMD09PXV8fDA9PT1oKXJldHVybltd O3ZhciB4PU1hdGguc2luKHAqYS8zNjApLGI9TWF0aC5jb3MocCphLzM2MCks Xz1iKihlLWwpLzIreCooci1jKS8yLHc9LXgqKGUtbCkvMitiKihyLWMpLzI7 aWYoMD09PV8mJjA9PT13KXJldHVybltdO3U9TWF0aC5hYnModSksaD1NYXRo LmFicyhoKTt2YXIgaz1NYXRoLnBvdyhfLDIpL01hdGgucG93KHUsMikrTWF0 aC5wb3codywyKS9NYXRoLnBvdyhoLDIpO2s+MSYmKHUqPU1hdGguc3FydChr KSxoKj1NYXRoLnNxcnQoaykpO3ZhciBUPWZ1bmN0aW9uKHQsZSxyLG4saSxv LGwsYyx1LGgsZixwKXt2YXIgZD1NYXRoLnBvdyhpLDIpLGc9TWF0aC5wb3co bywyKSx2PU1hdGgucG93KGYsMiksbT1NYXRoLnBvdyhwLDIpLHk9ZCpnLWQq bS1nKnY7eTwwJiYoeT0wKSx5Lz1kKm0rZyp2O3ZhciB4PSh5PU1hdGguc3Fy dCh5KSoobD09PWM/LTE6MSkpKmkvbypwLGI9eSotby9pKmYsXz1oKngtdSpi Kyh0K3IpLzIsdz11KngraCpiKyhlK24pLzIsaz0oZi14KS9pLFQ9KHAtYikv byxNPSgtZi14KS9pLEE9KC1wLWIpL28sUz1zKDEsMCxrLFQpLEU9cyhrLFQs TSxBKTtyZXR1cm4gMD09PWMmJkU+MCYmKEUtPWEpLDE9PT1jJiZFPDAmJihF Kz1hKSxbXyx3LFMsRV19KGUscixsLGMsdSxoLGcsbSx4LGIsXyx3KSxNPW4o VCw0KSxBPU1bMF0sUz1NWzFdLEU9TVsyXSxMPU1bM10sQz1NYXRoLmFicyhM KS8oYS80KTtNYXRoLmFicygxLUMpPDFlLTcmJihDPTEpO3ZhciBQPU1hdGgu bWF4KE1hdGguY2VpbChDKSwxKTtMLz1QO2Zvcih2YXIgTz0wO088UDtPKysp eS5wdXNoKG8oRSxMKSksRSs9TDtyZXR1cm4geS5tYXAoZnVuY3Rpb24odCl7 dmFyIGU9aSh0WzBdLHUsaCxiLHgsQSxTKSxyPWUueCxuPWUueSxhPWkodFsx XSx1LGgsYix4LEEsUyksbz1hLngscz1hLnksbD1pKHRbMl0sdSxoLGIseCxB LFMpO3JldHVybnt4MTpyLHkxOm4seDI6byx5MjpzLHg6bC54LHk6bC55fX0p fSxlLmV4cG9ydHM9ci5kZWZhdWx0fSx7fV0sNTMyOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInBhcnNlLXN2Zy1wYXRoIiksYT10 KCJhYnMtc3ZnLXBhdGgiKSxpPXQoIm5vcm1hbGl6ZS1zdmctcGF0aCIpLG89 dCgiaXMtc3ZnLXBhdGgiKSxzPXQoImFzc2VydCIpO2UuZXhwb3J0cz1mdW5j dGlvbih0KXtBcnJheS5pc0FycmF5KHQpJiYxPT09dC5sZW5ndGgmJiJzdHJp bmciPT10eXBlb2YgdFswXSYmKHQ9dFswXSk7InN0cmluZyI9PXR5cGVvZiB0 JiYocyhvKHQpLCJTdHJpbmcgaXMgbm90IGFuIFNWRyBwYXRoLiIpLHQ9bih0 KSk7aWYocyhBcnJheS5pc0FycmF5KHQpLCJBcmd1bWVudCBzaG91bGQgYmUg YSBzdHJpbmcgb3IgYW4gYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4iKSx0PWEo dCksISh0PWkodCkpLmxlbmd0aClyZXR1cm5bMCwwLDAsMF07Zm9yKHZhciBl PVsxLzAsMS8wLC0xLzAsLTEvMF0scj0wLGw9dC5sZW5ndGg7cjxsO3IrKylm b3IodmFyIGM9dFtyXS5zbGljZSgxKSx1PTA7dTxjLmxlbmd0aDt1Kz0yKWNb dSswXTxlWzBdJiYoZVswXT1jW3UrMF0pLGNbdSsxXTxlWzFdJiYoZVsxXT1j W3UrMV0pLGNbdSswXT5lWzJdJiYoZVsyXT1jW3UrMF0pLGNbdSsxXT5lWzNd JiYoZVszXT1jW3UrMV0pO3JldHVybiBlfX0seyJhYnMtc3ZnLXBhdGgiOjYz LGFzc2VydDo3MCwiaXMtc3ZnLXBhdGgiOjQyNiwibm9ybWFsaXplLXN2Zy1w YXRoIjo1MzMsInBhcnNlLXN2Zy1wYXRoIjo0NjJ9XSw1MzM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zv cih2YXIgZSxyPVtdLG89MCxzPTAsbD0wLGM9MCx1PW51bGwsaD1udWxsLGY9 MCxwPTAsZD0wLGc9dC5sZW5ndGg7ZDxnO2QrKyl7dmFyIHY9dFtkXSxtPXZb MF07c3dpdGNoKG0pe2Nhc2UiTSI6bD12WzFdLGM9dlsyXTticmVhaztjYXNl IkEiOnZhciB5PW4oe3B4OmYscHk6cCxjeDp2WzZdLGN5OnZbN10scng6dlsx XSxyeTp2WzJdLHhBeGlzUm90YXRpb246dlszXSxsYXJnZUFyY0ZsYWc6dls0 XSxzd2VlcEZsYWc6dls1XX0pO2lmKCF5Lmxlbmd0aCljb250aW51ZTtmb3Io dmFyIHgsYj0wO2I8eS5sZW5ndGg7YisrKXg9eVtiXSx2PVsiQyIseC54MSx4 LnkxLHgueDIseC55Mix4LngseC55XSxiPHkubGVuZ3RoLTEmJnIucHVzaCh2 KTticmVhaztjYXNlIlMiOnZhciBfPWYsdz1wOyJDIiE9ZSYmIlMiIT1lfHwo Xys9Xy1vLHcrPXctcyksdj1bIkMiLF8sdyx2WzFdLHZbMl0sdlszXSx2WzRd XTticmVhaztjYXNlIlQiOiJRIj09ZXx8IlQiPT1lPyh1PTIqZi11LGg9Mipw LWgpOih1PWYsaD1wKSx2PWkoZixwLHUsaCx2WzFdLHZbMl0pO2JyZWFrO2Nh c2UiUSI6dT12WzFdLGg9dlsyXSx2PWkoZixwLHZbMV0sdlsyXSx2WzNdLHZb NF0pO2JyZWFrO2Nhc2UiTCI6dj1hKGYscCx2WzFdLHZbMl0pO2JyZWFrO2Nh c2UiSCI6dj1hKGYscCx2WzFdLHApO2JyZWFrO2Nhc2UiViI6dj1hKGYscCxm LHZbMV0pO2JyZWFrO2Nhc2UiWiI6dj1hKGYscCxsLGMpfWU9bSxmPXZbdi5s ZW5ndGgtMl0scD12W3YubGVuZ3RoLTFdLHYubGVuZ3RoPjQ/KG89dlt2Lmxl bmd0aC00XSxzPXZbdi5sZW5ndGgtM10pOihvPWYscz1wKSxyLnB1c2godil9 cmV0dXJuIHJ9O3ZhciBuPXQoInN2Zy1hcmMtdG8tY3ViaWMtYmV6aWVyIik7 ZnVuY3Rpb24gYSh0LGUscixuKXtyZXR1cm5bIkMiLHQsZSxyLG4scixuXX1m dW5jdGlvbiBpKHQsZSxyLG4sYSxpKXtyZXR1cm5bIkMiLHQvMysyLzMqcixl LzMrMi8zKm4sYS8zKzIvMypyLGkvMysyLzMqbixhLGldfX0seyJzdmctYXJj LXRvLWN1YmljLWJlemllciI6NTMxfV0sNTM0OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuLGE9dCgic3ZnLXBhdGgtYm91bmRzIiksaT10 KCJwYXJzZS1zdmctcGF0aCIpLG89dCgiZHJhdy1zdmctcGF0aCIpLHM9dCgi aXMtc3ZnLXBhdGgiKSxsPXQoImJpdG1hcC1zZGYiKSxjPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHU9Yy5nZXRDb250ZXh0KCIyZCIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFzKHQpKXRocm93IEVycm9yKCJB cmd1bWVudCBzaG91bGQgYmUgdmFsaWQgc3ZnIHBhdGggc3RyaW5nIik7ZXx8 KGU9e30pO3ZhciByLGg7ZS5zaGFwZT8ocj1lLnNoYXBlWzBdLGg9ZS5zaGFw ZVsxXSk6KHI9Yy53aWR0aD1lLnd8fGUud2lkdGh8fDIwMCxoPWMuaGVpZ2h0 PWUuaHx8ZS5oZWlnaHR8fDIwMCk7dmFyIGY9TWF0aC5taW4ocixoKSxwPWUu c3Ryb2tlfHwwLGQ9ZS52aWV3Ym94fHxlLnZpZXdCb3h8fGEodCksZz1bci8o ZFsyXS1kWzBdKSxoLyhkWzNdLWRbMV0pXSx2PU1hdGgubWluKGdbMF18fDAs Z1sxXXx8MCkvMjt1LmZpbGxTdHlsZT0iYmxhY2siLHUuZmlsbFJlY3QoMCww LHIsaCksdS5maWxsU3R5bGU9IndoaXRlIixwJiYoIm51bWJlciIhPXR5cGVv ZiBwJiYocD0xKSx1LnN0cm9rZVN0eWxlPXA+MD8id2hpdGUiOiJibGFjayIs dS5saW5lV2lkdGg9TWF0aC5hYnMocCkpO2lmKHUudHJhbnNsYXRlKC41KnIs LjUqaCksdS5zY2FsZSh2LHYpLGZ1bmN0aW9uKCl7aWYobnVsbCE9bilyZXR1 cm4gbjt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5n ZXRDb250ZXh0KCIyZCIpO2lmKHQuY2FudmFzLndpZHRoPXQuY2FudmFzLmhl aWdodD0xLCF3aW5kb3cuUGF0aDJEKXJldHVybiBuPSExO3ZhciBlPW5ldyBQ YXRoMkQoIk0wLDBoMXYxaC0xdi0xWiIpO3QuZmlsbFN0eWxlPSJibGFjayIs dC5maWxsKGUpO3ZhciByPXQuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpO3JldHVy biBuPXImJnIuZGF0YSYmMjU1PT09ci5kYXRhWzNdfSgpKXt2YXIgbT1uZXcg UGF0aDJEKHQpO3UuZmlsbChtKSxwJiZ1LnN0cm9rZShtKX1lbHNle3ZhciB5 PWkodCk7byh1LHkpLHUuZmlsbCgpLHAmJnUuc3Ryb2tlKCl9cmV0dXJuIHUu c2V0VHJhbnNmb3JtKDEsMCwwLDEsMCwwKSxsKHUse2N1dG9mZjpudWxsIT1l LmN1dG9mZj9lLmN1dG9mZjouNSxyYWRpdXM6bnVsbCE9ZS5yYWRpdXM/ZS5y YWRpdXM6LjUqZn0pfX0seyJiaXRtYXAtc2RmIjo5NSwiZHJhdy1zdmctcGF0 aCI6MTcwLCJpcy1zdmctcGF0aCI6NDI2LCJwYXJzZS1zdmctcGF0aCI6NDYy LCJzdmctcGF0aC1ib3VuZHMiOjUzMn1dLDUzNTpbZnVuY3Rpb24odCxlLHIp eyhmdW5jdGlvbihyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9u IHQoZSxyLGEpe3ZhciBhPWF8fHt9O3ZhciBvPWlbZV07b3x8KG89aVtlXT17 IiAiOntkYXRhOm5ldyBGbG9hdDMyQXJyYXkoMCksc2hhcGU6LjJ9fSk7dmFy IHM9b1tyXTtpZighcylpZihyLmxlbmd0aDw9MXx8IS9cZC8udGVzdChyKSlz PW9bcl09ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY2VsbHMscj10LnBvc2l0 aW9ucyxuPW5ldyBGbG9hdDMyQXJyYXkoNiplLmxlbmd0aCksYT0wLGk9MCxv PTA7bzxlLmxlbmd0aDsrK28pZm9yKHZhciBzPWVbb10sbD0wO2w8MzsrK2wp e3ZhciBjPXJbc1tsXV07blthKytdPWNbMF0sblthKytdPWNbMV0rMS40LGk9 TWF0aC5tYXgoY1swXSxpKX1yZXR1cm57ZGF0YTpuLHNoYXBlOml9fShuKHIs e3RyaWFuZ2xlczohMCxmb250OmUsdGV4dEFsaWduOmEudGV4dEFsaWdufHwi bGVmdCIsdGV4dEJhc2VsaW5lOiJhbHBoYWJldGljIixzdHlsZXRhZ3M6e2Jy ZWFrbGluZXM6ITAsYm9sZHM6ITAsaXRhbGljczohMCxzdWJzY3JpcHRzOiEw LHN1cGVyc2NyaXB0czohMH19KSk7ZWxzZXtmb3IodmFyIGw9ci5zcGxpdCgv KFxkfFxzKS8pLGM9bmV3IEFycmF5KGwubGVuZ3RoKSx1PTAsaD0wLGY9MDtm PGwubGVuZ3RoOysrZiljW2ZdPXQoZSxsW2ZdKSx1Kz1jW2ZdLmRhdGEubGVu Z3RoLGgrPWNbZl0uc2hhcGUsZj4wJiYoaCs9LjAyKTtmb3IodmFyIHA9bmV3 IEZsb2F0MzJBcnJheSh1KSxkPTAsZz0tLjUqaCxmPTA7ZjxjLmxlbmd0aDsr K2Ype2Zvcih2YXIgdj1jW2ZdLmRhdGEsbT0wO208di5sZW5ndGg7bSs9Milw W2QrK109dlttXStnLHBbZCsrXT12W20rMV07Zys9Y1tmXS5zaGFwZSsuMDJ9 cz1vW3JdPXtkYXRhOnAsc2hhcGU6aH19cmV0dXJuIHN9O3ZhciBuPXQoInZl Y3Rvcml6ZS10ZXh0IiksYT13aW5kb3d8fHIuZ2xvYmFsfHx7fSxpPWEuX19U RVhUX0NBQ0hFfHx7fTthLl9fVEVYVF9DQUNIRT17fX0pLmNhbGwodGhpcyx0 KCJfcHJvY2VzcyIpKX0se19wcm9jZXNzOjQ4NCwidmVjdG9yaXplLXRleHQi OjU0OX1dLDUzNjpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbih0KXt2YXIg cj0vXlxzKy8sbj0vXHMrJC8sYT0wLGk9dC5yb3VuZCxvPXQubWluLHM9dC5t YXgsbD10LnJhbmRvbTtmdW5jdGlvbiBjKGUsbCl7aWYobD1sfHx7fSwoZT1l fHwiIilpbnN0YW5jZW9mIGMpcmV0dXJuIGU7aWYoISh0aGlzIGluc3RhbmNl b2YgYykpcmV0dXJuIG5ldyBjKGUsbCk7dmFyIHU9ZnVuY3Rpb24oZSl7dmFy IGE9e3I6MCxnOjAsYjowfSxpPTEsbD1udWxsLGM9bnVsbCx1PW51bGwsaD0h MSxmPSExOyJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZnVuY3Rpb24odCl7dD10 LnJlcGxhY2UociwiIikucmVwbGFjZShuLCIiKS50b0xvd2VyQ2FzZSgpO3Zh ciBlLGE9ITE7aWYoU1t0XSl0PVNbdF0sYT0hMDtlbHNlIGlmKCJ0cmFuc3Bh cmVudCI9PXQpcmV0dXJue3I6MCxnOjAsYjowLGE6MCxmb3JtYXQ6Im5hbWUi fTtpZihlPWoucmdiLmV4ZWModCkpcmV0dXJue3I6ZVsxXSxnOmVbMl0sYjpl WzNdfTtpZihlPWoucmdiYS5leGVjKHQpKXJldHVybntyOmVbMV0sZzplWzJd LGI6ZVszXSxhOmVbNF19O2lmKGU9ai5oc2wuZXhlYyh0KSlyZXR1cm57aDpl WzFdLHM6ZVsyXSxsOmVbM119O2lmKGU9ai5oc2xhLmV4ZWModCkpcmV0dXJu e2g6ZVsxXSxzOmVbMl0sbDplWzNdLGE6ZVs0XX07aWYoZT1qLmhzdi5leGVj KHQpKXJldHVybntoOmVbMV0sczplWzJdLHY6ZVszXX07aWYoZT1qLmhzdmEu ZXhlYyh0KSlyZXR1cm57aDplWzFdLHM6ZVsyXSx2OmVbM10sYTplWzRdfTtp ZihlPWouaGV4OC5leGVjKHQpKXJldHVybntyOk8oZVsxXSksZzpPKGVbMl0p LGI6TyhlWzNdKSxhOlIoZVs0XSksZm9ybWF0OmE/Im5hbWUiOiJoZXg4In07 aWYoZT1qLmhleDYuZXhlYyh0KSlyZXR1cm57cjpPKGVbMV0pLGc6TyhlWzJd KSxiOk8oZVszXSksZm9ybWF0OmE/Im5hbWUiOiJoZXgifTtpZihlPWouaGV4 NC5leGVjKHQpKXJldHVybntyOk8oZVsxXSsiIitlWzFdKSxnOk8oZVsyXSsi IitlWzJdKSxiOk8oZVszXSsiIitlWzNdKSxhOlIoZVs0XSsiIitlWzRdKSxm b3JtYXQ6YT8ibmFtZSI6ImhleDgifTtpZihlPWouaGV4My5leGVjKHQpKXJl dHVybntyOk8oZVsxXSsiIitlWzFdKSxnOk8oZVsyXSsiIitlWzJdKSxiOk8o ZVszXSsiIitlWzNdKSxmb3JtYXQ6YT8ibmFtZSI6ImhleCJ9O3JldHVybiEx fShlKSk7Im9iamVjdCI9PXR5cGVvZiBlJiYoVihlLnIpJiZWKGUuZykmJlYo ZS5iKT8ocD1lLnIsZD1lLmcsZz1lLmIsYT17cjoyNTUqQyhwLDI1NSksZzoy NTUqQyhkLDI1NSksYjoyNTUqQyhnLDI1NSl9LGg9ITAsZj0iJSI9PT1TdHJp bmcoZS5yKS5zdWJzdHIoLTEpPyJwcmdiIjoicmdiIik6VihlLmgpJiZWKGUu cykmJlYoZS52KT8obD1JKGUucyksYz1JKGUudiksYT1mdW5jdGlvbihlLHIs bil7ZT02KkMoZSwzNjApLHI9QyhyLDEwMCksbj1DKG4sMTAwKTt2YXIgYT10 LmZsb29yKGUpLGk9ZS1hLG89biooMS1yKSxzPW4qKDEtaSpyKSxsPW4qKDEt KDEtaSkqciksYz1hJTY7cmV0dXJue3I6MjU1KltuLHMsbyxvLGwsbl1bY10s ZzoyNTUqW2wsbixuLHMsbyxvXVtjXSxiOjI1NSpbbyxvLGwsbixuLHNdW2Nd fX0oZS5oLGwsYyksaD0hMCxmPSJoc3YiKTpWKGUuaCkmJlYoZS5zKSYmVihl LmwpJiYobD1JKGUucyksdT1JKGUubCksYT1mdW5jdGlvbih0LGUscil7dmFy IG4sYSxpO2Z1bmN0aW9uIG8odCxlLHIpe3JldHVybiByPDAmJihyKz0xKSxy PjEmJihyLT0xKSxyPDEvNj90KzYqKGUtdCkqcjpyPC41P2U6cjwyLzM/dCso ZS10KSooMi8zLXIpKjY6dH1pZih0PUModCwzNjApLGU9QyhlLDEwMCkscj1D KHIsMTAwKSwwPT09ZSluPWE9aT1yO2Vsc2V7dmFyIHM9cjwuNT9yKigxK2Up OnIrZS1yKmUsbD0yKnItcztuPW8obCxzLHQrMS8zKSxhPW8obCxzLHQpLGk9 byhsLHMsdC0xLzMpfXJldHVybntyOjI1NSpuLGc6MjU1KmEsYjoyNTUqaX19 KGUuaCxsLHUpLGg9ITAsZj0iaHNsIiksZS5oYXNPd25Qcm9wZXJ0eSgiYSIp JiYoaT1lLmEpKTt2YXIgcCxkLGc7cmV0dXJuIGk9TChpKSx7b2s6aCxmb3Jt YXQ6ZS5mb3JtYXR8fGYscjpvKDI1NSxzKGEuciwwKSksZzpvKDI1NSxzKGEu ZywwKSksYjpvKDI1NSxzKGEuYiwwKSksYTppfX0oZSk7dGhpcy5fb3JpZ2lu YWxJbnB1dD1lLHRoaXMuX3I9dS5yLHRoaXMuX2c9dS5nLHRoaXMuX2I9dS5i LHRoaXMuX2E9dS5hLHRoaXMuX3JvdW5kQT1pKDEwMCp0aGlzLl9hKS8xMDAs dGhpcy5fZm9ybWF0PWwuZm9ybWF0fHx1LmZvcm1hdCx0aGlzLl9ncmFkaWVu dFR5cGU9bC5ncmFkaWVudFR5cGUsdGhpcy5fcjwxJiYodGhpcy5fcj1pKHRo aXMuX3IpKSx0aGlzLl9nPDEmJih0aGlzLl9nPWkodGhpcy5fZykpLHRoaXMu X2I8MSYmKHRoaXMuX2I9aSh0aGlzLl9iKSksdGhpcy5fb2s9dS5vayx0aGlz Ll90Y19pZD1hKyt9ZnVuY3Rpb24gdSh0LGUscil7dD1DKHQsMjU1KSxlPUMo ZSwyNTUpLHI9QyhyLDI1NSk7dmFyIG4sYSxpPXModCxlLHIpLGw9byh0LGUs ciksYz0oaStsKS8yO2lmKGk9PWwpbj1hPTA7ZWxzZXt2YXIgdT1pLWw7c3dp dGNoKGE9Yz4uNT91LygyLWktbCk6dS8oaStsKSxpKXtjYXNlIHQ6bj0oZS1y KS91KyhlPHI/NjowKTticmVhaztjYXNlIGU6bj0oci10KS91KzI7YnJlYWs7 Y2FzZSByOm49KHQtZSkvdSs0fW4vPTZ9cmV0dXJue2g6bixzOmEsbDpjfX1m dW5jdGlvbiBoKHQsZSxyKXt0PUModCwyNTUpLGU9QyhlLDI1NSkscj1DKHIs MjU1KTt2YXIgbixhLGk9cyh0LGUsciksbD1vKHQsZSxyKSxjPWksdT1pLWw7 aWYoYT0wPT09aT8wOnUvaSxpPT1sKW49MDtlbHNle3N3aXRjaChpKXtjYXNl IHQ6bj0oZS1yKS91KyhlPHI/NjowKTticmVhaztjYXNlIGU6bj0oci10KS91 KzI7YnJlYWs7Y2FzZSByOm49KHQtZSkvdSs0fW4vPTZ9cmV0dXJue2g6bixz OmEsdjpjfX1mdW5jdGlvbiBmKHQsZSxyLG4pe3ZhciBhPVt6KGkodCkudG9T dHJpbmcoMTYpKSx6KGkoZSkudG9TdHJpbmcoMTYpKSx6KGkocikudG9TdHJp bmcoMTYpKV07cmV0dXJuIG4mJmFbMF0uY2hhckF0KDApPT1hWzBdLmNoYXJB dCgxKSYmYVsxXS5jaGFyQXQoMCk9PWFbMV0uY2hhckF0KDEpJiZhWzJdLmNo YXJBdCgwKT09YVsyXS5jaGFyQXQoMSk/YVswXS5jaGFyQXQoMCkrYVsxXS5j aGFyQXQoMCkrYVsyXS5jaGFyQXQoMCk6YS5qb2luKCIiKX1mdW5jdGlvbiBw KHQsZSxyLG4pe3JldHVyblt6KEQobikpLHooaSh0KS50b1N0cmluZygxNikp LHooaShlKS50b1N0cmluZygxNikpLHooaShyKS50b1N0cmluZygxNikpXS5q b2luKCIiKX1mdW5jdGlvbiBkKHQsZSl7ZT0wPT09ZT8wOmV8fDEwO3ZhciBy PWModCkudG9Ic2woKTtyZXR1cm4gci5zLT1lLzEwMCxyLnM9UChyLnMpLGMo cil9ZnVuY3Rpb24gZyh0LGUpe2U9MD09PWU/MDplfHwxMDt2YXIgcj1jKHQp LnRvSHNsKCk7cmV0dXJuIHIucys9ZS8xMDAsci5zPVAoci5zKSxjKHIpfWZ1 bmN0aW9uIHYodCl7cmV0dXJuIGModCkuZGVzYXR1cmF0ZSgxMDApfWZ1bmN0 aW9uIG0odCxlKXtlPTA9PT1lPzA6ZXx8MTA7dmFyIHI9Yyh0KS50b0hzbCgp O3JldHVybiByLmwrPWUvMTAwLHIubD1QKHIubCksYyhyKX1mdW5jdGlvbiB5 KHQsZSl7ZT0wPT09ZT8wOmV8fDEwO3ZhciByPWModCkudG9SZ2IoKTtyZXR1 cm4gci5yPXMoMCxvKDI1NSxyLnItaSgtZS8xMDAqMjU1KSkpLHIuZz1zKDAs bygyNTUsci5nLWkoLWUvMTAwKjI1NSkpKSxyLmI9cygwLG8oMjU1LHIuYi1p KC1lLzEwMCoyNTUpKSksYyhyKX1mdW5jdGlvbiB4KHQsZSl7ZT0wPT09ZT8w OmV8fDEwO3ZhciByPWModCkudG9Ic2woKTtyZXR1cm4gci5sLT1lLzEwMCxy Lmw9UChyLmwpLGMocil9ZnVuY3Rpb24gYih0LGUpe3ZhciByPWModCkudG9I c2woKSxuPShyLmgrZSklMzYwO3JldHVybiByLmg9bjwwPzM2MCtuOm4sYyhy KX1mdW5jdGlvbiBfKHQpe3ZhciBlPWModCkudG9Ic2woKTtyZXR1cm4gZS5o PShlLmgrMTgwKSUzNjAsYyhlKX1mdW5jdGlvbiB3KHQpe3ZhciBlPWModCku dG9Ic2woKSxyPWUuaDtyZXR1cm5bYyh0KSxjKHtoOihyKzEyMCklMzYwLHM6 ZS5zLGw6ZS5sfSksYyh7aDoocisyNDApJTM2MCxzOmUucyxsOmUubH0pXX1m dW5jdGlvbiBrKHQpe3ZhciBlPWModCkudG9Ic2woKSxyPWUuaDtyZXR1cm5b Yyh0KSxjKHtoOihyKzkwKSUzNjAsczplLnMsbDplLmx9KSxjKHtoOihyKzE4 MCklMzYwLHM6ZS5zLGw6ZS5sfSksYyh7aDoocisyNzApJTM2MCxzOmUucyxs OmUubH0pXX1mdW5jdGlvbiBUKHQpe3ZhciBlPWModCkudG9Ic2woKSxyPWUu aDtyZXR1cm5bYyh0KSxjKHtoOihyKzcyKSUzNjAsczplLnMsbDplLmx9KSxj KHtoOihyKzIxNiklMzYwLHM6ZS5zLGw6ZS5sfSldfWZ1bmN0aW9uIE0odCxl LHIpe2U9ZXx8NixyPXJ8fDMwO3ZhciBuPWModCkudG9Ic2woKSxhPTM2MC9y LGk9W2ModCldO2ZvcihuLmg9KG4uaC0oYSplPj4xKSs3MjApJTM2MDstLWU7 KW4uaD0obi5oK2EpJTM2MCxpLnB1c2goYyhuKSk7cmV0dXJuIGl9ZnVuY3Rp b24gQSh0LGUpe2U9ZXx8Njtmb3IodmFyIHI9Yyh0KS50b0hzdigpLG49ci5o LGE9ci5zLGk9ci52LG89W10scz0xL2U7ZS0tOylvLnB1c2goYyh7aDpuLHM6 YSx2Oml9KSksaT0oaStzKSUxO3JldHVybiBvfWMucHJvdG90eXBlPXtpc0Rh cms6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCk8MTI4 fSxpc0xpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNEYXJrKCl9LGlz VmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2t9LGdldE9yaWdpbmFs SW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxJbnB1dH0s Z2V0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1hdH0sZ2V0 QWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYX0sZ2V0QnJpZ2h0bmVz czpmdW5jdGlvbigpe3ZhciB0PXRoaXMudG9SZ2IoKTtyZXR1cm4oMjk5KnQu cis1ODcqdC5nKzExNCp0LmIpLzFlM30sZ2V0THVtaW5hbmNlOmZ1bmN0aW9u KCl7dmFyIGUscixuLGE9dGhpcy50b1JnYigpO3JldHVybiBlPWEuci8yNTUs cj1hLmcvMjU1LG49YS5iLzI1NSwuMjEyNiooZTw9LjAzOTI4P2UvMTIuOTI6 dC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KSkrLjcxNTIqKHI8PS4wMzkyOD9y LzEyLjkyOnQucG93KChyKy4wNTUpLzEuMDU1LDIuNCkpKy4wNzIyKihuPD0u MDM5Mjg/bi8xMi45Mjp0LnBvdygobisuMDU1KS8xLjA1NSwyLjQpKX0sc2V0 QWxwaGE6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2E9TCh0KSx0aGlzLl9y b3VuZEE9aSgxMDAqdGhpcy5fYSkvMTAwLHRoaXN9LHRvSHN2OmZ1bmN0aW9u KCl7dmFyIHQ9aCh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6 MzYwKnQuaCxzOnQucyx2OnQudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpm dW5jdGlvbigpe3ZhciB0PWgodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLGU9 aSgzNjAqdC5oKSxyPWkoMTAwKnQucyksbj1pKDEwMCp0LnYpO3JldHVybiAx PT10aGlzLl9hPyJoc3YoIitlKyIsICIrcisiJSwgIituKyIlKSI6ImhzdmEo IitlKyIsICIrcisiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRv SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dSh0aGlzLl9yLHRoaXMuX2csdGhpcy5f Yik7cmV0dXJue2g6MzYwKnQuaCxzOnQucyxsOnQubCxhOnRoaXMuX2F9fSx0 b0hzbFN0cmluZzpmdW5jdGlvbigpe3ZhciB0PXUodGhpcy5fcix0aGlzLl9n LHRoaXMuX2IpLGU9aSgzNjAqdC5oKSxyPWkoMTAwKnQucyksbj1pKDEwMCp0 LmwpO3JldHVybiAxPT10aGlzLl9hPyJoc2woIitlKyIsICIrcisiJSwgIitu KyIlKSI6ImhzbGEoIitlKyIsICIrcisiJSwgIituKyIlLCAiK3RoaXMuX3Jv dW5kQSsiKSJ9LHRvSGV4OmZ1bmN0aW9uKHQpe3JldHVybiBmKHRoaXMuX3Is dGhpcy5fZyx0aGlzLl9iLHQpfSx0b0hleFN0cmluZzpmdW5jdGlvbih0KXty ZXR1cm4iIyIrdGhpcy50b0hleCh0KX0sdG9IZXg4OmZ1bmN0aW9uKHQpe3Jl dHVybiBmdW5jdGlvbih0LGUscixuLGEpe3ZhciBvPVt6KGkodCkudG9TdHJp bmcoMTYpKSx6KGkoZSkudG9TdHJpbmcoMTYpKSx6KGkocikudG9TdHJpbmco MTYpKSx6KEQobikpXTtpZihhJiZvWzBdLmNoYXJBdCgwKT09b1swXS5jaGFy QXQoMSkmJm9bMV0uY2hhckF0KDApPT1vWzFdLmNoYXJBdCgxKSYmb1syXS5j aGFyQXQoMCk9PW9bMl0uY2hhckF0KDEpJiZvWzNdLmNoYXJBdCgwKT09b1sz XS5jaGFyQXQoMSkpcmV0dXJuIG9bMF0uY2hhckF0KDApK29bMV0uY2hhckF0 KDApK29bMl0uY2hhckF0KDApK29bM10uY2hhckF0KDApO3JldHVybiBvLmpv aW4oIiIpfSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hLHQpfSx0 b0hleDhTdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIiMiK3RoaXMudG9IZXg4 KHQpfSx0b1JnYjpmdW5jdGlvbigpe3JldHVybntyOmkodGhpcy5fciksZzpp KHRoaXMuX2cpLGI6aSh0aGlzLl9iKSxhOnRoaXMuX2F9fSx0b1JnYlN0cmlu ZzpmdW5jdGlvbigpe3JldHVybiAxPT10aGlzLl9hPyJyZ2IoIitpKHRoaXMu X3IpKyIsICIraSh0aGlzLl9nKSsiLCAiK2kodGhpcy5fYikrIikiOiJyZ2Jh KCIraSh0aGlzLl9yKSsiLCAiK2kodGhpcy5fZykrIiwgIitpKHRoaXMuX2Ip KyIsICIrdGhpcy5fcm91bmRBKyIpIn0sdG9QZXJjZW50YWdlUmdiOmZ1bmN0 aW9uKCl7cmV0dXJue3I6aSgxMDAqQyh0aGlzLl9yLDI1NSkpKyIlIixnOmko MTAwKkModGhpcy5fZywyNTUpKSsiJSIsYjppKDEwMCpDKHRoaXMuX2IsMjU1 KSkrIiUiLGE6dGhpcy5fYX19LHRvUGVyY2VudGFnZVJnYlN0cmluZzpmdW5j dGlvbigpe3JldHVybiAxPT10aGlzLl9hPyJyZ2IoIitpKDEwMCpDKHRoaXMu X3IsMjU1KSkrIiUsICIraSgxMDAqQyh0aGlzLl9nLDI1NSkpKyIlLCAiK2ko MTAwKkModGhpcy5fYiwyNTUpKSsiJSkiOiJyZ2JhKCIraSgxMDAqQyh0aGlz Ll9yLDI1NSkpKyIlLCAiK2koMTAwKkModGhpcy5fZywyNTUpKSsiJSwgIitp KDEwMCpDKHRoaXMuX2IsMjU1KSkrIiUsICIrdGhpcy5fcm91bmRBKyIpIn0s dG9OYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9hPyJ0cmFuc3Bh cmVudCI6ISh0aGlzLl9hPDEpJiYoRVtmKHRoaXMuX3IsdGhpcy5fZyx0aGlz Ll9iLCEwKV18fCExKX0sdG9GaWx0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9IiMi K3AodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSkscj1lLG49dGhp cy5fZ3JhZGllbnRUeXBlPyJHcmFkaWVudFR5cGUgPSAxLCAiOiIiO2lmKHQp e3ZhciBhPWModCk7cj0iIyIrcChhLl9yLGEuX2csYS5fYixhLl9hKX1yZXR1 cm4icHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50 KCIrbisic3RhcnRDb2xvcnN0cj0iK2UrIixlbmRDb2xvcnN0cj0iK3IrIiki fSx0b1N0cmluZzpmdW5jdGlvbih0KXt2YXIgZT0hIXQ7dD10fHx0aGlzLl9m b3JtYXQ7dmFyIHI9ITEsbj10aGlzLl9hPDEmJnRoaXMuX2E+PTA7cmV0dXJu IGV8fCFufHwiaGV4IiE9PXQmJiJoZXg2IiE9PXQmJiJoZXgzIiE9PXQmJiJo ZXg0IiE9PXQmJiJoZXg4IiE9PXQmJiJuYW1lIiE9PXQ/KCJyZ2IiPT09dCYm KHI9dGhpcy50b1JnYlN0cmluZygpKSwicHJnYiI9PT10JiYocj10aGlzLnRv UGVyY2VudGFnZVJnYlN0cmluZygpKSwiaGV4IiE9PXQmJiJoZXg2IiE9PXR8 fChyPXRoaXMudG9IZXhTdHJpbmcoKSksImhleDMiPT09dCYmKHI9dGhpcy50 b0hleFN0cmluZyghMCkpLCJoZXg0Ij09PXQmJihyPXRoaXMudG9IZXg4U3Ry aW5nKCEwKSksImhleDgiPT09dCYmKHI9dGhpcy50b0hleDhTdHJpbmcoKSks Im5hbWUiPT09dCYmKHI9dGhpcy50b05hbWUoKSksImhzbCI9PT10JiYocj10 aGlzLnRvSHNsU3RyaW5nKCkpLCJoc3YiPT09dCYmKHI9dGhpcy50b0hzdlN0 cmluZygpKSxyfHx0aGlzLnRvSGV4U3RyaW5nKCkpOiJuYW1lIj09PXQmJjA9 PT10aGlzLl9hP3RoaXMudG9OYW1lKCk6dGhpcy50b1JnYlN0cmluZygpfSxj bG9uZTpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMudG9TdHJpbmcoKSl9LF9h cHBseU1vZGlmaWNhdGlvbjpmdW5jdGlvbih0LGUpe3ZhciByPXQuYXBwbHko bnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwoZSkpKTtyZXR1cm4g dGhpcy5fcj1yLl9yLHRoaXMuX2c9ci5fZyx0aGlzLl9iPXIuX2IsdGhpcy5z ZXRBbHBoYShyLl9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKG0sYXJndW1lbnRzKX0sYnJpZ2h0 ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24o eSxhcmd1bWVudHMpfSxkYXJrZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f YXBwbHlNb2RpZmljYXRpb24oeCxhcmd1bWVudHMpfSxkZXNhdHVyYXRlOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGQsYXJn dW1lbnRzKX0sc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBw bHlNb2RpZmljYXRpb24oZyxhcmd1bWVudHMpfSxncmV5c2NhbGU6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24odixhcmd1bWVu dHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZp Y2F0aW9uKGIsYXJndW1lbnRzKX0sX2FwcGx5Q29tYmluYXRpb246ZnVuY3Rp b24odCxlKXtyZXR1cm4gdC5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoW10u c2xpY2UuY2FsbChlKSkpfSxhbmFsb2dvdXM6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fYXBwbHlDb21iaW5hdGlvbihNLGFyZ3VtZW50cyl9LGNvbXBsZW1l bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihf LGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0aWM6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fYXBwbHlDb21iaW5hdGlvbihBLGFyZ3VtZW50cyl9LHNwbGl0Y29t cGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0 aW9uKFQsYXJndW1lbnRzKX0sdHJpYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fYXBwbHlDb21iaW5hdGlvbih3LGFyZ3VtZW50cyl9LHRldHJhZDpmdW5j dGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKGssYXJndW1l bnRzKX19LGMuZnJvbVJhdGlvPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCI9 PXR5cGVvZiB0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blBy b3BlcnR5KG4pJiYocltuXT0iYSI9PT1uP3Rbbl06SSh0W25dKSk7dD1yfXJl dHVybiBjKHQsZSl9LGMuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuISgh dHx8IWUpJiZjKHQpLnRvUmdiU3RyaW5nKCk9PWMoZSkudG9SZ2JTdHJpbmco KX0sYy5yYW5kb209ZnVuY3Rpb24oKXtyZXR1cm4gYy5mcm9tUmF0aW8oe3I6 bCgpLGc6bCgpLGI6bCgpfSl9LGMubWl4PWZ1bmN0aW9uKHQsZSxyKXtyPTA9 PT1yPzA6cnx8NTA7dmFyIG49Yyh0KS50b1JnYigpLGE9YyhlKS50b1JnYigp LGk9ci8xMDA7cmV0dXJuIGMoe3I6KGEuci1uLnIpKmkrbi5yLGc6KGEuZy1u LmcpKmkrbi5nLGI6KGEuYi1uLmIpKmkrbi5iLGE6KGEuYS1uLmEpKmkrbi5h fSl9LGMucmVhZGFiaWxpdHk9ZnVuY3Rpb24oZSxyKXt2YXIgbj1jKGUpLGE9 YyhyKTtyZXR1cm4odC5tYXgobi5nZXRMdW1pbmFuY2UoKSxhLmdldEx1bWlu YW5jZSgpKSsuMDUpLyh0Lm1pbihuLmdldEx1bWluYW5jZSgpLGEuZ2V0THVt aW5hbmNlKCkpKy4wNSl9LGMuaXNSZWFkYWJsZT1mdW5jdGlvbih0LGUscil7 dmFyIG4sYSxpPWMucmVhZGFiaWxpdHkodCxlKTtzd2l0Y2goYT0hMSwobj1m dW5jdGlvbih0KXt2YXIgZSxyO2U9KCh0PXR8fHtsZXZlbDoiQUEiLHNpemU6 InNtYWxsIn0pLmxldmVsfHwiQUEiKS50b1VwcGVyQ2FzZSgpLHI9KHQuc2l6 ZXx8InNtYWxsIikudG9Mb3dlckNhc2UoKSwiQUEiIT09ZSYmIkFBQSIhPT1l JiYoZT0iQUEiKTsic21hbGwiIT09ciYmImxhcmdlIiE9PXImJihyPSJzbWFs bCIpO3JldHVybntsZXZlbDplLHNpemU6cn19KHIpKS5sZXZlbCtuLnNpemUp e2Nhc2UiQUFzbWFsbCI6Y2FzZSJBQUFsYXJnZSI6YT1pPj00LjU7YnJlYWs7 Y2FzZSJBQWxhcmdlIjphPWk+PTM7YnJlYWs7Y2FzZSJBQUFzbWFsbCI6YT1p Pj03fXJldHVybiBhfSxjLm1vc3RSZWFkYWJsZT1mdW5jdGlvbih0LGUscil7 dmFyIG4sYSxpLG8scz1udWxsLGw9MDthPShyPXJ8fHt9KS5pbmNsdWRlRmFs bGJhY2tDb2xvcnMsaT1yLmxldmVsLG89ci5zaXplO2Zvcih2YXIgdT0wO3U8 ZS5sZW5ndGg7dSsrKShuPWMucmVhZGFiaWxpdHkodCxlW3VdKSk+bCYmKGw9 bixzPWMoZVt1XSkpO3JldHVybiBjLmlzUmVhZGFibGUodCxzLHtsZXZlbDpp LHNpemU6b30pfHwhYT9zOihyLmluY2x1ZGVGYWxsYmFja0NvbG9ycz0hMSxj Lm1vc3RSZWFkYWJsZSh0LFsiI2ZmZiIsIiMwMDAiXSxyKSl9O3ZhciBTPWMu bmFtZXM9e2FsaWNlYmx1ZToiZjBmOGZmIixhbnRpcXVld2hpdGU6ImZhZWJk NyIsYXF1YToiMGZmIixhcXVhbWFyaW5lOiI3ZmZmZDQiLGF6dXJlOiJmMGZm ZmYiLGJlaWdlOiJmNWY1ZGMiLGJpc3F1ZToiZmZlNGM0IixibGFjazoiMDAw IixibGFuY2hlZGFsbW9uZDoiZmZlYmNkIixibHVlOiIwMGYiLGJsdWV2aW9s ZXQ6IjhhMmJlMiIsYnJvd246ImE1MmEyYSIsYnVybHl3b29kOiJkZWI4ODci LGJ1cm50c2llbm5hOiJlYTdlNWQiLGNhZGV0Ymx1ZToiNWY5ZWEwIixjaGFy dHJldXNlOiI3ZmZmMDAiLGNob2NvbGF0ZToiZDI2OTFlIixjb3JhbDoiZmY3 ZjUwIixjb3JuZmxvd2VyYmx1ZToiNjQ5NWVkIixjb3Juc2lsazoiZmZmOGRj Iixjcmltc29uOiJkYzE0M2MiLGN5YW46IjBmZiIsZGFya2JsdWU6IjAwMDA4 YiIsZGFya2N5YW46IjAwOGI4YiIsZGFya2dvbGRlbnJvZDoiYjg4NjBiIixk YXJrZ3JheToiYTlhOWE5IixkYXJrZ3JlZW46IjAwNjQwMCIsZGFya2dyZXk6 ImE5YTlhOSIsZGFya2toYWtpOiJiZGI3NmIiLGRhcmttYWdlbnRhOiI4YjAw OGIiLGRhcmtvbGl2ZWdyZWVuOiI1NTZiMmYiLGRhcmtvcmFuZ2U6ImZmOGMw MCIsZGFya29yY2hpZDoiOTkzMmNjIixkYXJrcmVkOiI4YjAwMDAiLGRhcmtz YWxtb246ImU5OTY3YSIsZGFya3NlYWdyZWVuOiI4ZmJjOGYiLGRhcmtzbGF0 ZWJsdWU6IjQ4M2Q4YiIsZGFya3NsYXRlZ3JheToiMmY0ZjRmIixkYXJrc2xh dGVncmV5OiIyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IjAwY2VkMSIsZGFya3Zp b2xldDoiOTQwMGQzIixkZWVwcGluazoiZmYxNDkzIixkZWVwc2t5Ymx1ZToi MDBiZmZmIixkaW1ncmF5OiI2OTY5NjkiLGRpbWdyZXk6IjY5Njk2OSIsZG9k Z2VyYmx1ZToiMWU5MGZmIixmaXJlYnJpY2s6ImIyMjIyMiIsZmxvcmFsd2hp dGU6ImZmZmFmMCIsZm9yZXN0Z3JlZW46IjIyOGIyMiIsZnVjaHNpYToiZjBm IixnYWluc2Jvcm86ImRjZGNkYyIsZ2hvc3R3aGl0ZToiZjhmOGZmIixnb2xk OiJmZmQ3MDAiLGdvbGRlbnJvZDoiZGFhNTIwIixncmF5OiI4MDgwODAiLGdy ZWVuOiIwMDgwMDAiLGdyZWVueWVsbG93OiJhZGZmMmYiLGdyZXk6IjgwODA4 MCIsaG9uZXlkZXc6ImYwZmZmMCIsaG90cGluazoiZmY2OWI0IixpbmRpYW5y ZWQ6ImNkNWM1YyIsaW5kaWdvOiI0YjAwODIiLGl2b3J5OiJmZmZmZjAiLGto YWtpOiJmMGU2OGMiLGxhdmVuZGVyOiJlNmU2ZmEiLGxhdmVuZGVyYmx1c2g6 ImZmZjBmNSIsbGF3bmdyZWVuOiI3Y2ZjMDAiLGxlbW9uY2hpZmZvbjoiZmZm YWNkIixsaWdodGJsdWU6ImFkZDhlNiIsbGlnaHRjb3JhbDoiZjA4MDgwIixs aWdodGN5YW46ImUwZmZmZiIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6ImZhZmFk MiIsbGlnaHRncmF5OiJkM2QzZDMiLGxpZ2h0Z3JlZW46IjkwZWU5MCIsbGln aHRncmV5OiJkM2QzZDMiLGxpZ2h0cGluazoiZmZiNmMxIixsaWdodHNhbG1v bjoiZmZhMDdhIixsaWdodHNlYWdyZWVuOiIyMGIyYWEiLGxpZ2h0c2t5Ymx1 ZToiODdjZWZhIixsaWdodHNsYXRlZ3JheToiNzg5IixsaWdodHNsYXRlZ3Jl eToiNzg5IixsaWdodHN0ZWVsYmx1ZToiYjBjNGRlIixsaWdodHllbGxvdzoi ZmZmZmUwIixsaW1lOiIwZjAiLGxpbWVncmVlbjoiMzJjZDMyIixsaW5lbjoi ZmFmMGU2IixtYWdlbnRhOiJmMGYiLG1hcm9vbjoiODAwMDAwIixtZWRpdW1h cXVhbWFyaW5lOiI2NmNkYWEiLG1lZGl1bWJsdWU6IjAwMDBjZCIsbWVkaXVt b3JjaGlkOiJiYTU1ZDMiLG1lZGl1bXB1cnBsZToiOTM3MGRiIixtZWRpdW1z ZWFncmVlbjoiM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IjdiNjhlZSIsbWVk aXVtc3ByaW5nZ3JlZW46IjAwZmE5YSIsbWVkaXVtdHVycXVvaXNlOiI0OGQx Y2MiLG1lZGl1bXZpb2xldHJlZDoiYzcxNTg1IixtaWRuaWdodGJsdWU6IjE5 MTk3MCIsbWludGNyZWFtOiJmNWZmZmEiLG1pc3R5cm9zZToiZmZlNGUxIixt b2NjYXNpbjoiZmZlNGI1IixuYXZham93aGl0ZToiZmZkZWFkIixuYXZ5OiIw MDAwODAiLG9sZGxhY2U6ImZkZjVlNiIsb2xpdmU6IjgwODAwMCIsb2xpdmVk cmFiOiI2YjhlMjMiLG9yYW5nZToiZmZhNTAwIixvcmFuZ2VyZWQ6ImZmNDUw MCIsb3JjaGlkOiJkYTcwZDYiLHBhbGVnb2xkZW5yb2Q6ImVlZThhYSIscGFs ZWdyZWVuOiI5OGZiOTgiLHBhbGV0dXJxdW9pc2U6ImFmZWVlZSIscGFsZXZp b2xldHJlZDoiZGI3MDkzIixwYXBheWF3aGlwOiJmZmVmZDUiLHBlYWNocHVm ZjoiZmZkYWI5IixwZXJ1OiJjZDg1M2YiLHBpbms6ImZmYzBjYiIscGx1bToi ZGRhMGRkIixwb3dkZXJibHVlOiJiMGUwZTYiLHB1cnBsZToiODAwMDgwIixy ZWJlY2NhcHVycGxlOiI2NjMzOTkiLHJlZDoiZjAwIixyb3N5YnJvd246ImJj OGY4ZiIscm95YWxibHVlOiI0MTY5ZTEiLHNhZGRsZWJyb3duOiI4YjQ1MTMi LHNhbG1vbjoiZmE4MDcyIixzYW5keWJyb3duOiJmNGE0NjAiLHNlYWdyZWVu OiIyZThiNTciLHNlYXNoZWxsOiJmZmY1ZWUiLHNpZW5uYToiYTA1MjJkIixz aWx2ZXI6ImMwYzBjMCIsc2t5Ymx1ZToiODdjZWViIixzbGF0ZWJsdWU6IjZh NWFjZCIsc2xhdGVncmF5OiI3MDgwOTAiLHNsYXRlZ3JleToiNzA4MDkwIixz bm93OiJmZmZhZmEiLHNwcmluZ2dyZWVuOiIwMGZmN2YiLHN0ZWVsYmx1ZToi NDY4MmI0Iix0YW46ImQyYjQ4YyIsdGVhbDoiMDA4MDgwIix0aGlzdGxlOiJk OGJmZDgiLHRvbWF0bzoiZmY2MzQ3Iix0dXJxdW9pc2U6IjQwZTBkMCIsdmlv bGV0OiJlZTgyZWUiLHdoZWF0OiJmNWRlYjMiLHdoaXRlOiJmZmYiLHdoaXRl c21va2U6ImY1ZjVmNSIseWVsbG93OiJmZjAiLHllbGxvd2dyZWVuOiI5YWNk MzIifSxFPWMuaGV4TmFtZXM9ZnVuY3Rpb24odCl7dmFyIGU9e307Zm9yKHZh ciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbdFtyXV09cik7cmV0 dXJuIGV9KFMpO2Z1bmN0aW9uIEwodCl7cmV0dXJuIHQ9cGFyc2VGbG9hdCh0 KSwoaXNOYU4odCl8fHQ8MHx8dD4xKSYmKHQ9MSksdH1mdW5jdGlvbiBDKGUs cil7KGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmLTEh PXQuaW5kZXhPZigiLiIpJiYxPT09cGFyc2VGbG9hdCh0KX0pKGUpJiYoZT0i MTAwJSIpO3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBl b2YgdCYmLTEhPXQuaW5kZXhPZigiJSIpfShlKTtyZXR1cm4gZT1vKHIscygw LHBhcnNlRmxvYXQoZSkpKSxuJiYoZT1wYXJzZUludChlKnIsMTApLzEwMCks dC5hYnMoZS1yKTwxZS02PzE6ZSVyL3BhcnNlRmxvYXQocil9ZnVuY3Rpb24g UCh0KXtyZXR1cm4gbygxLHMoMCx0KSl9ZnVuY3Rpb24gTyh0KXtyZXR1cm4g cGFyc2VJbnQodCwxNil9ZnVuY3Rpb24geih0KXtyZXR1cm4gMT09dC5sZW5n dGg/IjAiK3Q6IiIrdH1mdW5jdGlvbiBJKHQpe3JldHVybiB0PD0xJiYodD0x MDAqdCsiJSIpLHR9ZnVuY3Rpb24gRChlKXtyZXR1cm4gdC5yb3VuZCgyNTUq cGFyc2VGbG9hdChlKSkudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFIodCl7cmV0 dXJuIE8odCkvMjU1fXZhciBGLEIsTixqPShCPSJbXFxzfFxcKF0rKCIrKEY9 Iig/OlstXFwrXT9cXGQqXFwuXFxkKyU/KXwoPzpbLVxcK10/XFxkKyU/KSIp KyIpWyx8XFxzXSsoIitGKyIpWyx8XFxzXSsoIitGKyIpXFxzKlxcKT8iLE49 IltcXHN8XFwoXSsoIitGKyIpWyx8XFxzXSsoIitGKyIpWyx8XFxzXSsoIitG KyIpWyx8XFxzXSsoIitGKyIpXFxzKlxcKT8iLHtDU1NfVU5JVDpuZXcgUmVn RXhwKEYpLHJnYjpuZXcgUmVnRXhwKCJyZ2IiK0IpLHJnYmE6bmV3IFJlZ0V4 cCgicmdiYSIrTiksaHNsOm5ldyBSZWdFeHAoImhzbCIrQiksaHNsYTpuZXcg UmVnRXhwKCJoc2xhIitOKSxoc3Y6bmV3IFJlZ0V4cCgiaHN2IitCKSxoc3Zh Om5ldyBSZWdFeHAoImhzdmEiK04pLGhleDM6L14jPyhbMC05YS1mQS1GXXsx fSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDY6L14j PyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZd ezJ9KSQvLGhleDQ6L14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17 MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg4Oi9e Iz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1G XXsyfSkoWzAtOWEtZkEtRl17Mn0pJC99KTtmdW5jdGlvbiBWKHQpe3JldHVy biEhai5DU1NfVU5JVC5leGVjKHQpfSJ1bmRlZmluZWQiIT10eXBlb2YgZSYm ZS5leHBvcnRzP2UuZXhwb3J0cz1jOndpbmRvdy50aW55Y29sb3I9Y30oTWF0 aCl9LHt9XSw1Mzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPWEsZS5leHBvcnRzLmZsb2F0MzI9ZS5leHBvcnRzLmZsb2F0PWEs ZS5leHBvcnRzLmZyYWN0MzI9ZS5leHBvcnRzLmZyYWN0PWZ1bmN0aW9uKHQp e2lmKHQubGVuZ3RoKXtmb3IodmFyIGU9YSh0KSxyPTAsbj1lLmxlbmd0aDty PG47cisrKWVbcl09dFtyXS1lW3JdO3JldHVybiBlfXJldHVybiBhKHQtYSh0 KSl9O3ZhciBuPW5ldyBGbG9hdDMyQXJyYXkoMSk7ZnVuY3Rpb24gYSh0KXtp Zih0Lmxlbmd0aCl7aWYodCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSlyZXR1 cm4gdDt2YXIgZT1uZXcgRmxvYXQzMkFycmF5KHQpO3JldHVybiBlLnNldCh0 KSxlfXJldHVybiBuWzBdPXQsblswXX19LHt9XSw1Mzg6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicGFyc2UtdW5pdCIpO2UuZXhw b3J0cz1vO3ZhciBhPTk2O2Z1bmN0aW9uIGkodCxlKXt2YXIgcj1uKGdldENv bXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShlKSk7cmV0dXJuIHJb MF0qbyhyWzFdLHQpfWZ1bmN0aW9uIG8odCxlKXtzd2l0Y2goZT1lfHxkb2N1 bWVudC5ib2R5LHQ9KHR8fCJweCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLGUh PT13aW5kb3cmJmUhPT1kb2N1bWVudHx8KGU9ZG9jdW1lbnQuYm9keSksdCl7 Y2FzZSIlIjpyZXR1cm4gZS5jbGllbnRIZWlnaHQvMTAwO2Nhc2UiY2giOmNh c2UiZXgiOnJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImRpdiIpO3Iuc3R5bGVbImZvbnQtc2l6ZSJdPSIxMjgi K3QsZS5hcHBlbmRDaGlsZChyKTt2YXIgbj1pKHIsImZvbnQtc2l6ZSIpLzEy ODtyZXR1cm4gZS5yZW1vdmVDaGlsZChyKSxufSh0LGUpO2Nhc2UiZW0iOnJl dHVybiBpKGUsImZvbnQtc2l6ZSIpO2Nhc2UicmVtIjpyZXR1cm4gaShkb2N1 bWVudC5ib2R5LCJmb250LXNpemUiKTtjYXNlInZ3IjpyZXR1cm4gd2luZG93 LmlubmVyV2lkdGgvMTAwO2Nhc2UidmgiOnJldHVybiB3aW5kb3cuaW5uZXJI ZWlnaHQvMTAwO2Nhc2Uidm1pbiI6cmV0dXJuIE1hdGgubWluKHdpbmRvdy5p bm5lcldpZHRoLHdpbmRvdy5pbm5lckhlaWdodCkvMTAwO2Nhc2Uidm1heCI6 cmV0dXJuIE1hdGgubWF4KHdpbmRvdy5pbm5lcldpZHRoLHdpbmRvdy5pbm5l ckhlaWdodCkvMTAwO2Nhc2UiaW4iOnJldHVybiBhO2Nhc2UiY20iOnJldHVy biBhLzIuNTQ7Y2FzZSJtbSI6cmV0dXJuIGEvMjUuNDtjYXNlInB0IjpyZXR1 cm4gYS83MjtjYXNlInBjIjpyZXR1cm4gYS82fXJldHVybiAxfX0seyJwYXJz ZS11bml0Ijo0NjN9XSw1Mzk6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbjtuPXRo aXMsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPWZ1bmN0aW9uKHQp e3JldHVybiB0fSxyPWZ1bmN0aW9uKHQpe2lmKG51bGw9PShyPXQudHJhbnNm b3JtKSlyZXR1cm4gZTt2YXIgcixuLGEsaT1yLnNjYWxlWzBdLG89ci5zY2Fs ZVsxXSxzPXIudHJhbnNsYXRlWzBdLGw9ci50cmFuc2xhdGVbMV07cmV0dXJu IGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fChuPWE9MCksdFswXT0obis9dFsw XSkqaStzLHRbMV09KGErPXRbMV0pKm8rbCx0fX0sbj1mdW5jdGlvbih0KXt2 YXIgZT10LmJib3g7ZnVuY3Rpb24gbih0KXtsWzBdPXRbMF0sbFsxXT10WzFd LHMobCksbFswXTxjJiYoYz1sWzBdKSxsWzBdPmgmJihoPWxbMF0pLGxbMV08 dSYmKHU9bFsxXSksbFsxXT5mJiYoZj1sWzFdKX1mdW5jdGlvbiBhKHQpe3N3 aXRjaCh0LnR5cGUpe2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjp0Lmdlb21l dHJpZXMuZm9yRWFjaChhKTticmVhaztjYXNlIlBvaW50IjpuKHQuY29vcmRp bmF0ZXMpO2JyZWFrO2Nhc2UiTXVsdGlQb2ludCI6dC5jb29yZGluYXRlcy5m b3JFYWNoKG4pfX1pZighZSl7dmFyIGksbyxzPXIodCksbD1uZXcgQXJyYXko MiksYz0xLzAsdT1jLGg9LWMsZj0tYztmb3IobyBpbiB0LmFyY3MuZm9yRWFj aChmdW5jdGlvbih0KXtmb3IodmFyIGU9LTEscj10Lmxlbmd0aDsrK2U8cjsp aT10W2VdLGxbMF09aVswXSxsWzFdPWlbMV0scyhsLGUpLGxbMF08YyYmKGM9 bFswXSksbFswXT5oJiYoaD1sWzBdKSxsWzFdPHUmJih1PWxbMV0pLGxbMV0+ ZiYmKGY9bFsxXSl9KSx0Lm9iamVjdHMpYSh0Lm9iamVjdHNbb10pO2U9dC5i Ym94PVtjLHUsaCxmXX1yZXR1cm4gZX0sYT1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgcixuPXQubGVuZ3RoLGE9bi1lO2E8LS1uOylyPXRbYV0sdFthKytdPXRb bl0sdFtuXT1yfTtmdW5jdGlvbiBpKHQsZSl7dmFyIHI9ZS5pZCxuPWUuYmJv eCxhPW51bGw9PWUucHJvcGVydGllcz97fTplLnByb3BlcnRpZXMsaT1vKHQs ZSk7cmV0dXJuIG51bGw9PXImJm51bGw9PW4/e3R5cGU6IkZlYXR1cmUiLHBy b3BlcnRpZXM6YSxnZW9tZXRyeTppfTpudWxsPT1uP3t0eXBlOiJGZWF0dXJl IixpZDpyLHByb3BlcnRpZXM6YSxnZW9tZXRyeTppfTp7dHlwZToiRmVhdHVy ZSIsaWQ6cixiYm94Om4scHJvcGVydGllczphLGdlb21ldHJ5Oml9fWZ1bmN0 aW9uIG8odCxlKXt2YXIgbj1yKHQpLGk9dC5hcmNzO2Z1bmN0aW9uIG8odCxl KXtlLmxlbmd0aCYmZS5wb3AoKTtmb3IodmFyIHI9aVt0PDA/fnQ6dF0sbz0w LHM9ci5sZW5ndGg7bzxzOysrbyllLnB1c2gobihyW29dLnNsaWNlKCksbykp O3Q8MCYmYShlLHMpfWZ1bmN0aW9uIHModCl7cmV0dXJuIG4odC5zbGljZSgp KX1mdW5jdGlvbiBsKHQpe2Zvcih2YXIgZT1bXSxyPTAsbj10Lmxlbmd0aDty PG47KytyKW8odFtyXSxlKTtyZXR1cm4gZS5sZW5ndGg8MiYmZS5wdXNoKGVb MF0uc2xpY2UoKSksZX1mdW5jdGlvbiBjKHQpe2Zvcih2YXIgZT1sKHQpO2Uu bGVuZ3RoPDQ7KWUucHVzaChlWzBdLnNsaWNlKCkpO3JldHVybiBlfWZ1bmN0 aW9uIHUodCl7cmV0dXJuIHQubWFwKGMpfXJldHVybiBmdW5jdGlvbiB0KGUp e3ZhciByLG49ZS50eXBlO3N3aXRjaChuKXtjYXNlIkdlb21ldHJ5Q29sbGVj dGlvbiI6cmV0dXJue3R5cGU6bixnZW9tZXRyaWVzOmUuZ2VvbWV0cmllcy5t YXAodCl9O2Nhc2UiUG9pbnQiOnI9cyhlLmNvb3JkaW5hdGVzKTticmVhaztj YXNlIk11bHRpUG9pbnQiOnI9ZS5jb29yZGluYXRlcy5tYXAocyk7YnJlYWs7 Y2FzZSJMaW5lU3RyaW5nIjpyPWwoZS5hcmNzKTticmVhaztjYXNlIk11bHRp TGluZVN0cmluZyI6cj1lLmFyY3MubWFwKGwpO2JyZWFrO2Nhc2UiUG9seWdv biI6cj11KGUuYXJjcyk7YnJlYWs7Y2FzZSJNdWx0aVBvbHlnb24iOnI9ZS5h cmNzLm1hcCh1KTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfXJldHVybnt0 eXBlOm4sY29vcmRpbmF0ZXM6cn19KGUpfXZhciBzPWZ1bmN0aW9uKHQsZSl7 dmFyIHI9e30sbj17fSxhPXt9LGk9W10sbz0tMTtmdW5jdGlvbiBzKHQsZSl7 Zm9yKHZhciBuIGluIHQpe3ZhciBhPXRbbl07ZGVsZXRlIGVbYS5zdGFydF0s ZGVsZXRlIGEuc3RhcnQsZGVsZXRlIGEuZW5kLGEuZm9yRWFjaChmdW5jdGlv bih0KXtyW3Q8MD9+dDp0XT0xfSksaS5wdXNoKGEpfX1yZXR1cm4gZS5mb3JF YWNoKGZ1bmN0aW9uKHIsbil7dmFyIGEsaT10LmFyY3NbcjwwP35yOnJdO2ku bGVuZ3RoPDMmJiFpWzFdWzBdJiYhaVsxXVsxXSYmKGE9ZVsrK29dLGVbb109 cixlW25dPWEpfSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByLGksbz1m dW5jdGlvbihlKXt2YXIgcixuPXQuYXJjc1tlPDA/fmU6ZV0sYT1uWzBdO3Qu dHJhbnNmb3JtPyhyPVswLDBdLG4uZm9yRWFjaChmdW5jdGlvbih0KXtyWzBd Kz10WzBdLHJbMV0rPXRbMV19KSk6cj1uW24ubGVuZ3RoLTFdO3JldHVybiBl PDA/W3IsYV06W2Escl19KGUpLHM9b1swXSxsPW9bMV07aWYocj1hW3NdKWlm KGRlbGV0ZSBhW3IuZW5kXSxyLnB1c2goZSksci5lbmQ9bCxpPW5bbF0pe2Rl bGV0ZSBuW2kuc3RhcnRdO3ZhciBjPWk9PT1yP3I6ci5jb25jYXQoaSk7bltj LnN0YXJ0PXIuc3RhcnRdPWFbYy5lbmQ9aS5lbmRdPWN9ZWxzZSBuW3Iuc3Rh cnRdPWFbci5lbmRdPXI7ZWxzZSBpZihyPW5bbF0paWYoZGVsZXRlIG5bci5z dGFydF0sci51bnNoaWZ0KGUpLHIuc3RhcnQ9cyxpPWFbc10pe2RlbGV0ZSBh W2kuZW5kXTt2YXIgdT1pPT09cj9yOmkuY29uY2F0KHIpO25bdS5zdGFydD1p LnN0YXJ0XT1hW3UuZW5kPXIuZW5kXT11fWVsc2UgbltyLnN0YXJ0XT1hW3Iu ZW5kXT1yO2Vsc2Ugblsocj1bZV0pLnN0YXJ0PXNdPWFbci5lbmQ9bF09cn0p LHMoYSxuKSxzKG4sYSksZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JbdDwwP350 OnRdfHxpLnB1c2goW3RdKX0pLGl9O2Z1bmN0aW9uIGwodCxlLHIpe3ZhciBu LGEsaTtpZihhcmd1bWVudHMubGVuZ3RoPjEpbj1mdW5jdGlvbih0LGUscil7 dmFyIG4sYT1bXSxpPVtdO2Z1bmN0aW9uIG8odCl7dmFyIGU9dDwwP350OnQ7 KGlbZV18fChpW2VdPVtdKSkucHVzaCh7aTp0LGc6bn0pfWZ1bmN0aW9uIHMo dCl7dC5mb3JFYWNoKG8pfWZ1bmN0aW9uIGwodCl7dC5mb3JFYWNoKHMpfXJl dHVybiBmdW5jdGlvbiB0KGUpe3N3aXRjaChuPWUsZS50eXBlKXtjYXNlIkdl b21ldHJ5Q29sbGVjdGlvbiI6ZS5nZW9tZXRyaWVzLmZvckVhY2godCk7YnJl YWs7Y2FzZSJMaW5lU3RyaW5nIjpzKGUuYXJjcyk7YnJlYWs7Y2FzZSJNdWx0 aUxpbmVTdHJpbmciOmNhc2UiUG9seWdvbiI6bChlLmFyY3MpO2JyZWFrO2Nh c2UiTXVsdGlQb2x5Z29uIjplLmFyY3MuZm9yRWFjaChsKX19KGUpLGkuZm9y RWFjaChudWxsPT1yP2Z1bmN0aW9uKHQpe2EucHVzaCh0WzBdLmkpfTpmdW5j dGlvbih0KXtyKHRbMF0uZyx0W3QubGVuZ3RoLTFdLmcpJiZhLnB1c2godFsw XS5pKX0pLGF9KDAsZSxyKTtlbHNlIGZvcihhPTAsbj1uZXcgQXJyYXkoaT10 LmFyY3MubGVuZ3RoKTthPGk7KythKW5bYV09YTtyZXR1cm57dHlwZToiTXVs dGlMaW5lU3RyaW5nIixhcmNzOnModCxuKX19ZnVuY3Rpb24gYyh0LGUpe3Zh ciByPXt9LG49W10sYT1bXTtmdW5jdGlvbiBpKHQpe3QuZm9yRWFjaChmdW5j dGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7KHJbZT1lPDA/fmU6ZV18 fChyW2VdPVtdKSkucHVzaCh0KX0pfSksbi5wdXNoKHQpfWZ1bmN0aW9uIGwo ZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPS0xLG49dC5sZW5n dGgsYT10W24tMV0saT0wOysrcjxuOyllPWEsYT10W3JdLGkrPWVbMF0qYVsx XS1lWzFdKmFbMF07cmV0dXJuIE1hdGguYWJzKGkpfShvKHQse3R5cGU6IlBv bHlnb24iLGFyY3M6W2VdfSkuY29vcmRpbmF0ZXNbMF0pfXJldHVybiBlLmZv ckVhY2goZnVuY3Rpb24gdChlKXtzd2l0Y2goZS50eXBlKXtjYXNlIkdlb21l dHJ5Q29sbGVjdGlvbiI6ZS5nZW9tZXRyaWVzLmZvckVhY2godCk7YnJlYWs7 Y2FzZSJQb2x5Z29uIjppKGUuYXJjcyk7YnJlYWs7Y2FzZSJNdWx0aVBvbHln b24iOmUuYXJjcy5mb3JFYWNoKGkpfX0pLG4uZm9yRWFjaChmdW5jdGlvbih0 KXtpZighdC5fKXt2YXIgZT1bXSxuPVt0XTtmb3IodC5fPTEsYS5wdXNoKGUp O3Q9bi5wb3AoKTspZS5wdXNoKHQpLHQuZm9yRWFjaChmdW5jdGlvbih0KXt0 LmZvckVhY2goZnVuY3Rpb24odCl7clt0PDA/fnQ6dF0uZm9yRWFjaChmdW5j dGlvbih0KXt0Ll98fCh0Ll89MSxuLnB1c2godCkpfSl9KX0pfX0pLG4uZm9y RWFjaChmdW5jdGlvbih0KXtkZWxldGUgdC5ffSkse3R5cGU6Ik11bHRpUG9s eWdvbiIsYXJjczphLm1hcChmdW5jdGlvbihlKXt2YXIgbixhPVtdO2lmKGUu Zm9yRWFjaChmdW5jdGlvbih0KXt0LmZvckVhY2goZnVuY3Rpb24odCl7dC5m b3JFYWNoKGZ1bmN0aW9uKHQpe3JbdDwwP350OnRdLmxlbmd0aDwyJiZhLnB1 c2godCl9KX0pfSksKG49KGE9cyh0LGEpKS5sZW5ndGgpPjEpZm9yKHZhciBp LG8sYz0xLHU9bChhWzBdKTtjPG47KytjKShpPWwoYVtjXSkpPnUmJihvPWFb MF0sYVswXT1hW2NdLGFbY109byx1PWkpO3JldHVybiBhfSl9fXZhciB1PWZ1 bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47KXt2YXIg YT1yK24+Pj4xO3RbYV08ZT9yPWErMTpuPWF9cmV0dXJuIHJ9O3QuYmJveD1u LHQuZmVhdHVyZT1mdW5jdGlvbih0LGUpe3JldHVybiJHZW9tZXRyeUNvbGxl Y3Rpb24iPT09ZS50eXBlP3t0eXBlOiJGZWF0dXJlQ29sbGVjdGlvbiIsZmVh dHVyZXM6ZS5nZW9tZXRyaWVzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gaSh0 LGUpfSl9OmkodCxlKX0sdC5tZXNoPWZ1bmN0aW9uKHQpe3JldHVybiBvKHQs bC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSx0Lm1lc2hBcmNzPWwsdC5tZXJn ZT1mdW5jdGlvbih0KXtyZXR1cm4gbyh0LGMuYXBwbHkodGhpcyxhcmd1bWVu dHMpKX0sdC5tZXJnZUFyY3M9Yyx0Lm5laWdoYm9ycz1mdW5jdGlvbih0KXt2 YXIgZT17fSxyPXQubWFwKGZ1bmN0aW9uKCl7cmV0dXJuW119KTtmdW5jdGlv biBuKHQscil7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Q8MCYmKHQ9fnQpO3Zh ciBuPWVbdF07bj9uLnB1c2gocik6ZVt0XT1bcl19KX1mdW5jdGlvbiBhKHQs ZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe24odCxlKX0pfXZhciBpPXtMaW5l U3RyaW5nOm4sTXVsdGlMaW5lU3RyaW5nOmEsUG9seWdvbjphLE11bHRpUG9s eWdvbjpmdW5jdGlvbih0LGUpe3QuZm9yRWFjaChmdW5jdGlvbih0KXthKHQs ZSl9KX19O2Zvcih2YXIgbyBpbiB0LmZvckVhY2goZnVuY3Rpb24gdChlLHIp eyJHZW9tZXRyeUNvbGxlY3Rpb24iPT09ZS50eXBlP2UuZ2VvbWV0cmllcy5m b3JFYWNoKGZ1bmN0aW9uKGUpe3QoZSxyKX0pOmUudHlwZSBpbiBpJiZpW2Uu dHlwZV0oZS5hcmNzLHIpfSksZSlmb3IodmFyIHM9ZVtvXSxsPXMubGVuZ3Ro LGM9MDtjPGw7KytjKWZvcih2YXIgaD1jKzE7aDxsOysraCl7dmFyIGYscD1z W2NdLGQ9c1toXTsoZj1yW3BdKVtvPXUoZixkKV0hPT1kJiZmLnNwbGljZShv LDAsZCksKGY9cltkXSlbbz11KGYscCldIT09cCYmZi5zcGxpY2UobywwLHAp fXJldHVybiByfSx0LnF1YW50aXplPWZ1bmN0aW9uKHQsZSl7aWYoISgoZT1N YXRoLmZsb29yKGUpKT49MikpdGhyb3cgbmV3IEVycm9yKCJuIG11c3QgYmUg XHUyMjY1MiIpO2lmKHQudHJhbnNmb3JtKXRocm93IG5ldyBFcnJvcigiYWxy ZWFkeSBxdWFudGl6ZWQiKTt2YXIgcixhPW4odCksaT1hWzBdLG89KGFbMl0t aSkvKGUtMSl8fDEscz1hWzFdLGw9KGFbM10tcykvKGUtMSl8fDE7ZnVuY3Rp b24gYyh0KXt0WzBdPU1hdGgucm91bmQoKHRbMF0taSkvbyksdFsxXT1NYXRo LnJvdW5kKCh0WzFdLXMpL2wpfWZ1bmN0aW9uIHUodCl7c3dpdGNoKHQudHlw ZSl7Y2FzZSJHZW9tZXRyeUNvbGxlY3Rpb24iOnQuZ2VvbWV0cmllcy5mb3JF YWNoKHUpO2JyZWFrO2Nhc2UiUG9pbnQiOmModC5jb29yZGluYXRlcyk7YnJl YWs7Y2FzZSJNdWx0aVBvaW50Ijp0LmNvb3JkaW5hdGVzLmZvckVhY2goYyl9 fWZvcihyIGluIHQuYXJjcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIg ZSxyLG4sYT0xLGM9MSx1PXQubGVuZ3RoLGg9dFswXSxmPWhbMF09TWF0aC5y b3VuZCgoaFswXS1pKS9vKSxwPWhbMV09TWF0aC5yb3VuZCgoaFsxXS1zKS9s KTthPHU7KythKWg9dFthXSxyPU1hdGgucm91bmQoKGhbMF0taSkvbyksbj1N YXRoLnJvdW5kKChoWzFdLXMpL2wpLHI9PT1mJiZuPT09cHx8KChlPXRbYysr XSlbMF09ci1mLGY9cixlWzFdPW4tcCxwPW4pO2M8MiYmKChlPXRbYysrXSlb MF09MCxlWzFdPTApLHQubGVuZ3RoPWN9KSx0Lm9iamVjdHMpdSh0Lm9iamVj dHNbcl0pO3JldHVybiB0LnRyYW5zZm9ybT17c2NhbGU6W28sbF0sdHJhbnNs YXRlOltpLHNdfSx0fSx0LnRyYW5zZm9ybT1yLHQudW50cmFuc2Zvcm09ZnVu Y3Rpb24odCl7aWYobnVsbD09KHI9dC50cmFuc2Zvcm0pKXJldHVybiBlO3Zh ciByLG4sYSxpPXIuc2NhbGVbMF0sbz1yLnNjYWxlWzFdLHM9ci50cmFuc2xh dGVbMF0sbD1yLnRyYW5zbGF0ZVsxXTtyZXR1cm4gZnVuY3Rpb24odCxlKXtl fHwobj1hPTApO3ZhciByPU1hdGgucm91bmQoKHRbMF0tcykvaSksYz1NYXRo LnJvdW5kKCh0WzFdLWwpL28pO3JldHVybiB0WzBdPXItbixuPXIsdFsxXT1j LWEsYT1jLHR9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVs ZSIse3ZhbHVlOiEwfSl9KCJvYmplY3QiPT10eXBlb2YgciYmInVuZGVmaW5l ZCIhPXR5cGVvZiBlP3I6bi50b3BvanNvbj1uLnRvcG9qc29ufHx7fSl9LHt9 XSw1NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PWZ1bmN0aW9uKHQpe2lmKHQ8MClyZXR1cm5bXTtpZigwPT09dClyZXR1cm5b WzBdXTtmb3IodmFyIGU9MHxNYXRoLnJvdW5kKGkodCsxKSkscj1bXSxvPTA7 bzxlOysrbyl7Zm9yKHZhciBzPW4udW5yYW5rKHQsbyksbD1bMF0sYz0wLHU9 MDt1PHMubGVuZ3RoOysrdSljKz0xPDxzW3VdLGwucHVzaChjKTthKHMpPDEm JihsWzBdPWMsbFt0XT0wKSxyLnB1c2gobCl9cmV0dXJuIHJ9O3ZhciBuPXQo InBlcm11dGF0aW9uLXJhbmsiKSxhPXQoInBlcm11dGF0aW9uLXBhcml0eSIp LGk9dCgiZ2FtbWEiKX0se2dhbW1hOjIzNCwicGVybXV0YXRpb24tcGFyaXR5 Ijo0NjUsInBlcm11dGF0aW9uLXJhbmsiOjQ2Nn1dLDU0MTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFy IGU9KHQ9dHx8e30pLmNlbnRlcnx8WzAsMCwwXSxyPXQudXB8fFswLDEsMF0s bj10LnJpZ2h0fHxoKHIpLGE9dC5yYWRpdXN8fDEsaT10LnRoZXRhfHwwLHU9 dC5waGl8fDA7aWYoZT1bXS5zbGljZS5jYWxsKGUsMCwzKSxyPVtdLnNsaWNl LmNhbGwociwwLDMpLHMocixyKSxuPVtdLnNsaWNlLmNhbGwobiwwLDMpLHMo bixuKSwiZXllImluIHQpe3ZhciBwPXQuZXllLGQ9W3BbMF0tZVswXSxwWzFd LWVbMV0scFsyXS1lWzJdXTtvKG4sZCxyKSxjKG5bMF0sblsxXSxuWzJdKTwx ZS02P249aChyKTpzKG4sbiksYT1jKGRbMF0sZFsxXSxkWzJdKTt2YXIgZz1s KHIsZCkvYSx2PWwobixkKS9hO3U9TWF0aC5hY29zKGcpLGk9TWF0aC5hY29z KHYpfXJldHVybiBhPU1hdGgubG9nKGEpLG5ldyBmKHQuem9vbU1pbix0Lnpv b21NYXgsZSxyLG4sYSxpLHUpfTt2YXIgbj10KCJmaWx0ZXJlZC12ZWN0b3Ii KSxhPXQoImdsLW1hdDQvaW52ZXJ0IiksaT10KCJnbC1tYXQ0L3JvdGF0ZSIp LG89dCgiZ2wtdmVjMy9jcm9zcyIpLHM9dCgiZ2wtdmVjMy9ub3JtYWxpemUi KSxsPXQoImdsLXZlYzMvZG90Iik7ZnVuY3Rpb24gYyh0LGUscil7cmV0dXJu IE1hdGguc3FydChNYXRoLnBvdyh0LDIpK01hdGgucG93KGUsMikrTWF0aC5w b3cociwyKSl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gTWF0aC5taW4oMSxNYXRo Lm1heCgtMSx0KSl9ZnVuY3Rpb24gaCh0KXt2YXIgZT1NYXRoLmFicyh0WzBd KSxyPU1hdGguYWJzKHRbMV0pLG49TWF0aC5hYnModFsyXSksYT1bMCwwLDBd O2U+TWF0aC5tYXgocixuKT9hWzJdPTE6cj5NYXRoLm1heChlLG4pP2FbMF09 MTphWzFdPTE7Zm9yKHZhciBpPTAsbz0wLGw9MDtsPDM7KytsKWkrPXRbbF0q dFtsXSxvKz1hW2xdKnRbbF07Zm9yKGw9MDtsPDM7KytsKWFbbF0tPW8vaSp0 W2xdO3JldHVybiBzKGEsYSksYX1mdW5jdGlvbiBmKHQsZSxyLGEsaSxvLHMs bCl7dGhpcy5jZW50ZXI9bihyKSx0aGlzLnVwPW4oYSksdGhpcy5yaWdodD1u KGkpLHRoaXMucmFkaXVzPW4oW29dKSx0aGlzLmFuZ2xlPW4oW3MsbF0pLHRo aXMuYW5nbGUuYm91bmRzPVtbLTEvMCwtTWF0aC5QSS8yXSxbMS8wLE1hdGgu UEkvMl1dLHRoaXMuc2V0RGlzdGFuY2VMaW1pdHModCxlKSx0aGlzLmNvbXB1 dGVkQ2VudGVyPXRoaXMuY2VudGVyLmN1cnZlKDApLHRoaXMuY29tcHV0ZWRV cD10aGlzLnVwLmN1cnZlKDApLHRoaXMuY29tcHV0ZWRSaWdodD10aGlzLnJp Z2h0LmN1cnZlKDApLHRoaXMuY29tcHV0ZWRSYWRpdXM9dGhpcy5yYWRpdXMu Y3VydmUoMCksdGhpcy5jb21wdXRlZEFuZ2xlPXRoaXMuYW5nbGUuY3VydmUo MCksdGhpcy5jb21wdXRlZFRvd2FyZD1bMCwwLDBdLHRoaXMuY29tcHV0ZWRF eWU9WzAsMCwwXSx0aGlzLmNvbXB1dGVkTWF0cml4PW5ldyBBcnJheSgxNik7 Zm9yKHZhciBjPTA7YzwxNjsrK2MpdGhpcy5jb21wdXRlZE1hdHJpeFtjXT0u NTt0aGlzLnJlY2FsY01hdHJpeCgwKX12YXIgcD1mLnByb3RvdHlwZTtwLnNl dERpc3RhbmNlTGltaXRzPWZ1bmN0aW9uKHQsZSl7dD10PjA/TWF0aC5sb2co dCk6LTEvMCxlPWU+MD9NYXRoLmxvZyhlKToxLzAsZT1NYXRoLm1heChlLHQp LHRoaXMucmFkaXVzLmJvdW5kc1swXVswXT10LHRoaXMucmFkaXVzLmJvdW5k c1sxXVswXT1lfSxwLmdldERpc3RhbmNlTGltaXRzPWZ1bmN0aW9uKHQpe3Zh ciBlPXRoaXMucmFkaXVzLmJvdW5kc1swXTtyZXR1cm4gdD8odFswXT1NYXRo LmV4cChlWzBdWzBdKSx0WzFdPU1hdGguZXhwKGVbMV1bMF0pLHQpOltNYXRo LmV4cChlWzBdWzBdKSxNYXRoLmV4cChlWzFdWzBdKV19LHAucmVjYWxjTWF0 cml4PWZ1bmN0aW9uKHQpe3RoaXMuY2VudGVyLmN1cnZlKHQpLHRoaXMudXAu Y3VydmUodCksdGhpcy5yaWdodC5jdXJ2ZSh0KSx0aGlzLnJhZGl1cy5jdXJ2 ZSh0KSx0aGlzLmFuZ2xlLmN1cnZlKHQpO2Zvcih2YXIgZT10aGlzLmNvbXB1 dGVkVXAscj10aGlzLmNvbXB1dGVkUmlnaHQsbj0wLGE9MCxpPTA7aTwzOysr aSlhKz1lW2ldKnJbaV0sbis9ZVtpXSplW2ldO3ZhciBsPU1hdGguc3FydChu KSx1PTA7Zm9yKGk9MDtpPDM7KytpKXJbaV0tPWVbaV0qYS9uLHUrPXJbaV0q cltpXSxlW2ldLz1sO3ZhciBoPU1hdGguc3FydCh1KTtmb3IoaT0wO2k8Mzsr K2kpcltpXS89aDt2YXIgZj10aGlzLmNvbXB1dGVkVG93YXJkO28oZixlLHIp LHMoZixmKTt2YXIgcD1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBd KSxkPXRoaXMuY29tcHV0ZWRBbmdsZVswXSxnPXRoaXMuY29tcHV0ZWRBbmds ZVsxXSx2PU1hdGguY29zKGQpLG09TWF0aC5zaW4oZCkseT1NYXRoLmNvcyhn KSx4PU1hdGguc2luKGcpLGI9dGhpcy5jb21wdXRlZENlbnRlcixfPXYqeSx3 PW0qeSxrPXgsVD0tdip4LE09LW0qeCxBPXksUz10aGlzLmNvbXB1dGVkRXll LEU9dGhpcy5jb21wdXRlZE1hdHJpeDtmb3IoaT0wO2k8MzsrK2kpe3ZhciBM PV8qcltpXSt3KmZbaV0rayplW2ldO0VbNCppKzFdPVQqcltpXStNKmZbaV0r QSplW2ldLEVbNCppKzJdPUwsRVs0KmkrM109MH12YXIgQz1FWzFdLFA9RVs1 XSxPPUVbOV0sej1FWzJdLEk9RVs2XSxEPUVbMTBdLFI9UCpELU8qSSxGPU8q ei1DKkQsQj1DKkktUCp6LE49YyhSLEYsQik7Ui89TixGLz1OLEIvPU4sRVsw XT1SLEVbNF09RixFWzhdPUI7Zm9yKGk9MDtpPDM7KytpKVNbaV09YltpXStF WzIrNCppXSpwO2ZvcihpPTA7aTwzOysraSl7dT0wO2Zvcih2YXIgaj0wO2o8 MzsrK2opdSs9RVtpKzQqal0qU1tqXTtFWzEyK2ldPS11fUVbMTVdPTF9LHAu Z2V0TWF0cml4PWZ1bmN0aW9uKHQsZSl7dGhpcy5yZWNhbGNNYXRyaXgodCk7 dmFyIHI9dGhpcy5jb21wdXRlZE1hdHJpeDtpZihlKXtmb3IodmFyIG49MDtu PDE2OysrbillW25dPXJbbl07cmV0dXJuIGV9cmV0dXJuIHJ9O3ZhciBkPVsw LDAsMF07cC5yb3RhdGU9ZnVuY3Rpb24odCxlLHIsbil7aWYodGhpcy5hbmds ZS5tb3ZlKHQsZSxyKSxuKXt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgYT10 aGlzLmNvbXB1dGVkTWF0cml4O2RbMF09YVsyXSxkWzFdPWFbNl0sZFsyXT1h WzEwXTtmb3IodmFyIG89dGhpcy5jb21wdXRlZFVwLHM9dGhpcy5jb21wdXRl ZFJpZ2h0LGw9dGhpcy5jb21wdXRlZFRvd2FyZCxjPTA7YzwzOysrYylhWzQq Y109b1tjXSxhWzQqYysxXT1zW2NdLGFbNCpjKzJdPWxbY107aShhLGEsbixk KTtmb3IoYz0wO2M8MzsrK2Mpb1tjXT1hWzQqY10sc1tjXT1hWzQqYysxXTt0 aGlzLnVwLnNldCh0LG9bMF0sb1sxXSxvWzJdKSx0aGlzLnJpZ2h0LnNldCh0 LHNbMF0sc1sxXSxzWzJdKX19LHAucGFuPWZ1bmN0aW9uKHQsZSxyLG4pe2U9 ZXx8MCxyPXJ8fDAsbj1ufHwwLHRoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBh PXRoaXMuY29tcHV0ZWRNYXRyaXgsaT0oTWF0aC5leHAodGhpcy5jb21wdXRl ZFJhZGl1c1swXSksYVsxXSksbz1hWzVdLHM9YVs5XSxsPWMoaSxvLHMpO2kv PWwsby89bCxzLz1sO3ZhciB1PWFbMF0saD1hWzRdLGY9YVs4XSxwPXUqaSto Km8rZipzLGQ9Yyh1LT1pKnAsaC09bypwLGYtPXMqcCksZz0odS89ZCkqZStp KnIsdj0oaC89ZCkqZStvKnIsbT0oZi89ZCkqZStzKnI7dGhpcy5jZW50ZXIu bW92ZSh0LGcsdixtKTt2YXIgeT1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFk aXVzWzBdKTt5PU1hdGgubWF4KDFlLTQseStuKSx0aGlzLnJhZGl1cy5zZXQo dCxNYXRoLmxvZyh5KSl9LHAudHJhbnNsYXRlPWZ1bmN0aW9uKHQsZSxyLG4p e3RoaXMuY2VudGVyLm1vdmUodCxlfHwwLHJ8fDAsbnx8MCl9LHAuc2V0TWF0 cml4PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPTE7Im51bWJlciI9PXR5cGVv ZiByJiYoaT0wfHIpLChpPDB8fGk+MykmJihpPTEpO3ZhciBvPShpKzIpJTM7 ZXx8KHRoaXMucmVjYWxjTWF0cml4KHQpLGU9dGhpcy5jb21wdXRlZE1hdHJp eCk7dmFyIHM9ZVtpXSxsPWVbaSs0XSxoPWVbaSs4XTtpZihuKXt2YXIgZj1N YXRoLmFicyhzKSxwPU1hdGguYWJzKGwpLGQ9TWF0aC5hYnMoaCksZz1NYXRo Lm1heChmLHAsZCk7Zj09PWc/KHM9czwwPy0xOjEsbD1oPTApOmQ9PT1nPyho PWg8MD8tMToxLHM9bD0wKToobD1sPDA/LTE6MSxzPWg9MCl9ZWxzZXt2YXIg dj1jKHMsbCxoKTtzLz12LGwvPXYsaC89dn12YXIgbSx5LHg9ZVtvXSxiPWVb bys0XSxfPWVbbys4XSx3PXgqcytiKmwrXypoLGs9Yyh4LT1zKncsYi09bCp3 LF8tPWgqdyksVD1sKihfLz1rKS1oKihiLz1rKSxNPWgqKHgvPWspLXMqXyxB PXMqYi1sKngsUz1jKFQsTSxBKTtpZihULz1TLE0vPVMsQS89Uyx0aGlzLmNl bnRlci5qdW1wKHQsSCxHLFkpLHRoaXMucmFkaXVzLmlkbGUodCksdGhpcy51 cC5qdW1wKHQscyxsLGgpLHRoaXMucmlnaHQuanVtcCh0LHgsYixfKSwyPT09 aSl7dmFyIEU9ZVsxXSxMPWVbNV0sQz1lWzldLFA9RSp4K0wqYitDKl8sTz1F KlQrTCpNK0MqQTttPVI8MD8tTWF0aC5QSS8yOk1hdGguUEkvMix5PU1hdGgu YXRhbjIoTyxQKX1lbHNle3ZhciB6PWVbMl0sST1lWzZdLEQ9ZVsxMF0sUj16 KnMrSSpsK0QqaCxGPXoqeCtJKmIrRCpfLEI9eipUK0kqTStEKkE7bT1NYXRo LmFzaW4odShSKSkseT1NYXRoLmF0YW4yKEIsRil9dGhpcy5hbmdsZS5qdW1w KHQseSxtKSx0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgTj1lWzJdLGo9ZVs2 XSxWPWVbMTBdLFU9dGhpcy5jb21wdXRlZE1hdHJpeDthKFUsZSk7dmFyIHE9 VVsxNV0sSD1VWzEyXS9xLEc9VVsxM10vcSxZPVVbMTRdL3EsVz1NYXRoLmV4 cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKTt0aGlzLmNlbnRlci5qdW1wKHQs SC1OKlcsRy1qKlcsWS1WKlcpfSxwLmxhc3RUPWZ1bmN0aW9uKCl7cmV0dXJu IE1hdGgubWF4KHRoaXMuY2VudGVyLmxhc3RUKCksdGhpcy51cC5sYXN0VCgp LHRoaXMucmlnaHQubGFzdFQoKSx0aGlzLnJhZGl1cy5sYXN0VCgpLHRoaXMu YW5nbGUubGFzdFQoKSl9LHAuaWRsZT1mdW5jdGlvbih0KXt0aGlzLmNlbnRl ci5pZGxlKHQpLHRoaXMudXAuaWRsZSh0KSx0aGlzLnJpZ2h0LmlkbGUodCks dGhpcy5yYWRpdXMuaWRsZSh0KSx0aGlzLmFuZ2xlLmlkbGUodCl9LHAuZmx1 c2g9ZnVuY3Rpb24odCl7dGhpcy5jZW50ZXIuZmx1c2godCksdGhpcy51cC5m bHVzaCh0KSx0aGlzLnJpZ2h0LmZsdXNoKHQpLHRoaXMucmFkaXVzLmZsdXNo KHQpLHRoaXMuYW5nbGUuZmx1c2godCl9LHAuc2V0RGlzdGFuY2U9ZnVuY3Rp b24odCxlKXtlPjAmJnRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKGUpKX0s cC5sb29rQXQ9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5yZWNhbGNNYXRyaXgo dCksZT1lfHx0aGlzLmNvbXB1dGVkRXllLHI9cnx8dGhpcy5jb21wdXRlZENl bnRlcjt2YXIgYT0obj1ufHx0aGlzLmNvbXB1dGVkVXApWzBdLGk9blsxXSxv PW5bMl0scz1jKGEsaSxvKTtpZighKHM8MWUtNikpe2EvPXMsaS89cyxvLz1z O3ZhciBsPWVbMF0tclswXSxoPWVbMV0tclsxXSxmPWVbMl0tclsyXSxwPWMo bCxoLGYpO2lmKCEocDwxZS02KSl7bC89cCxoLz1wLGYvPXA7dmFyIGQ9dGhp cy5jb21wdXRlZFJpZ2h0LGc9ZFswXSx2PWRbMV0sbT1kWzJdLHk9YSpnK2kq ditvKm0seD1jKGctPXkqYSx2LT15KmksbS09eSpvKTtpZighKHg8LjAxJiYo eD1jKGc9aSpmLW8qaCx2PW8qbC1hKmYsbT1hKmgtaSpsKSk8MWUtNikpe2cv PXgsdi89eCxtLz14LHRoaXMudXAuc2V0KHQsYSxpLG8pLHRoaXMucmlnaHQu c2V0KHQsZyx2LG0pLHRoaXMuY2VudGVyLnNldCh0LHJbMF0sclsxXSxyWzJd KSx0aGlzLnJhZGl1cy5zZXQodCxNYXRoLmxvZyhwKSk7dmFyIGI9aSptLW8q dixfPW8qZy1hKm0sdz1hKnYtaSpnLGs9YyhiLF8sdyksVD1hKmwraSpoK28q ZixNPWcqbCt2KmgrbSpmLEE9KGIvPWspKmwrKF8vPWspKmgrKHcvPWspKmYs Uz1NYXRoLmFzaW4odShUKSksRT1NYXRoLmF0YW4yKEEsTSksTD10aGlzLmFu Z2xlLl9zdGF0ZSxDPUxbTC5sZW5ndGgtMV0sUD1MW0wubGVuZ3RoLTJdO0Ml PTIqTWF0aC5QSTt2YXIgTz1NYXRoLmFicyhDKzIqTWF0aC5QSS1FKSx6PU1h dGguYWJzKEMtRSksST1NYXRoLmFicyhDLTIqTWF0aC5QSS1FKTtPPHomJihD Kz0yKk1hdGguUEkpLEk8eiYmKEMtPTIqTWF0aC5QSSksdGhpcy5hbmdsZS5q dW1wKHRoaXMuYW5nbGUubGFzdFQoKSxDLFApLHRoaXMuYW5nbGUuc2V0KHQs RSxTKX19fX19LHsiZmlsdGVyZWQtdmVjdG9yIjoyMjksImdsLW1hdDQvaW52 ZXJ0IjoyNjgsImdsLW1hdDQvcm90YXRlIjoyNzMsImdsLXZlYzMvY3Jvc3Mi OjMzNiwiZ2wtdmVjMy9kb3QiOjM0MSwiZ2wtdmVjMy9ub3JtYWxpemUiOjM1 OH1dLDU0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXQqZSxpPW4qdCxvPWktKGktdCks cz10LW8sbD1uKmUsYz1sLShsLWUpLHU9ZS1jLGg9cyp1LShhLW8qYy1zKmMt byp1KTtpZihyKXJldHVybiByWzBdPWgsclsxXT1hLHI7cmV0dXJuW2gsYV19 O3ZhciBuPSsoTWF0aC5wb3coMiwyNykrMSl9LHt9XSw1NDM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy KXt2YXIgbj10K2UsYT1uLXQsaT1lLWEsbz10LShuLWEpO2lmKHIpcmV0dXJu IHJbMF09bytpLHJbMV09bixyO3JldHVybltvK2ksbl19fSx7fV0sNTQ0Oltm dW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUsbil7InVzZSBzdHJpY3QiO3Zh ciBhPXQoImJpdC10d2lkZGxlIiksaT10KCJkdXAiKTtlLl9fVFlQRURBUlJB WV9QT09MfHwoZS5fX1RZUEVEQVJSQVlfUE9PTD17VUlOVDg6aShbMzIsMF0p LFVJTlQxNjppKFszMiwwXSksVUlOVDMyOmkoWzMyLDBdKSxJTlQ4OmkoWzMy LDBdKSxJTlQxNjppKFszMiwwXSksSU5UMzI6aShbMzIsMF0pLEZMT0FUOmko WzMyLDBdKSxET1VCTEU6aShbMzIsMF0pLERBVEE6aShbMzIsMF0pLFVJTlQ4 QzppKFszMiwwXSksQlVGRkVSOmkoWzMyLDBdKX0pO3ZhciBvPSJ1bmRlZmlu ZWQiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkscz1lLl9fVFlQRURBUlJB WV9QT09MO3MuVUlOVDhDfHwocy5VSU5UOEM9aShbMzIsMF0pKSxzLkJVRkZF Unx8KHMuQlVGRkVSPWkoWzMyLDBdKSk7dmFyIGw9cy5EQVRBLGM9cy5CVUZG RVI7ZnVuY3Rpb24gdSh0KXtpZih0KXt2YXIgZT10Lmxlbmd0aHx8dC5ieXRl TGVuZ3RoLHI9YS5sb2cyKGUpO2xbcl0ucHVzaCh0KX19ZnVuY3Rpb24gaCh0 KXt0PWEubmV4dFBvdzIodCk7dmFyIGU9YS5sb2cyKHQpLHI9bFtlXTtyZXR1 cm4gci5sZW5ndGg+MD9yLnBvcCgpOm5ldyBBcnJheUJ1ZmZlcih0KX1mdW5j dGlvbiBmKHQpe3JldHVybiBuZXcgVWludDhBcnJheShoKHQpLDAsdCl9ZnVu Y3Rpb24gcCh0KXtyZXR1cm4gbmV3IFVpbnQxNkFycmF5KGgoMip0KSwwLHQp fWZ1bmN0aW9uIGQodCl7cmV0dXJuIG5ldyBVaW50MzJBcnJheShoKDQqdCks MCx0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBuZXcgSW50OEFycmF5KGgodCks MCx0KX1mdW5jdGlvbiB2KHQpe3JldHVybiBuZXcgSW50MTZBcnJheShoKDIq dCksMCx0KX1mdW5jdGlvbiBtKHQpe3JldHVybiBuZXcgSW50MzJBcnJheSho KDQqdCksMCx0KX1mdW5jdGlvbiB5KHQpe3JldHVybiBuZXcgRmxvYXQzMkFy cmF5KGgoNCp0KSwwLHQpfWZ1bmN0aW9uIHgodCl7cmV0dXJuIG5ldyBGbG9h dDY0QXJyYXkoaCg4KnQpLDAsdCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbz9u ZXcgVWludDhDbGFtcGVkQXJyYXkoaCh0KSwwLHQpOmYodCl9ZnVuY3Rpb24g Xyh0KXtyZXR1cm4gbmV3IERhdGFWaWV3KGgodCksMCx0KX1mdW5jdGlvbiB3 KHQpe3Q9YS5uZXh0UG93Mih0KTt2YXIgZT1hLmxvZzIodCkscj1jW2VdO3Jl dHVybiByLmxlbmd0aD4wP3IucG9wKCk6bmV3IG4odCl9ci5mcmVlPWZ1bmN0 aW9uKHQpe2lmKG4uaXNCdWZmZXIodCkpY1thLmxvZzIodC5sZW5ndGgpXS5w dXNoKHQpO2Vsc2V7aWYoIltvYmplY3QgQXJyYXlCdWZmZXJdIiE9PU9iamVj dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSYmKHQ9dC5idWZmZXIpLCF0 KXJldHVybjt2YXIgZT10Lmxlbmd0aHx8dC5ieXRlTGVuZ3RoLHI9MHxhLmxv ZzIoZSk7bFtyXS5wdXNoKHQpfX0sci5mcmVlVWludDg9ci5mcmVlVWludDE2 PXIuZnJlZVVpbnQzMj1yLmZyZWVJbnQ4PXIuZnJlZUludDE2PXIuZnJlZUlu dDMyPXIuZnJlZUZsb2F0MzI9ci5mcmVlRmxvYXQ9ci5mcmVlRmxvYXQ2ND1y LmZyZWVEb3VibGU9ci5mcmVlVWludDhDbGFtcGVkPXIuZnJlZURhdGFWaWV3 PWZ1bmN0aW9uKHQpe3UodC5idWZmZXIpfSxyLmZyZWVBcnJheUJ1ZmZlcj11 LHIuZnJlZUJ1ZmZlcj1mdW5jdGlvbih0KXtjW2EubG9nMih0Lmxlbmd0aCld LnB1c2godCl9LHIubWFsbG9jPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09 ZXx8ImFycmF5YnVmZmVyIj09PWUpcmV0dXJuIGgodCk7c3dpdGNoKGUpe2Nh c2UidWludDgiOnJldHVybiBmKHQpO2Nhc2UidWludDE2IjpyZXR1cm4gcCh0 KTtjYXNlInVpbnQzMiI6cmV0dXJuIGQodCk7Y2FzZSJpbnQ4IjpyZXR1cm4g Zyh0KTtjYXNlImludDE2IjpyZXR1cm4gdih0KTtjYXNlImludDMyIjpyZXR1 cm4gbSh0KTtjYXNlImZsb2F0IjpjYXNlImZsb2F0MzIiOnJldHVybiB5KHQp O2Nhc2UiZG91YmxlIjpjYXNlImZsb2F0NjQiOnJldHVybiB4KHQpO2Nhc2Ui dWludDhfY2xhbXBlZCI6cmV0dXJuIGIodCk7Y2FzZSJidWZmZXIiOnJldHVy biB3KHQpO2Nhc2UiZGF0YSI6Y2FzZSJkYXRhdmlldyI6cmV0dXJuIF8odCk7 ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0sci5tYWxsb2NBcnJh eUJ1ZmZlcj1oLHIubWFsbG9jVWludDg9ZixyLm1hbGxvY1VpbnQxNj1wLHIu bWFsbG9jVWludDMyPWQsci5tYWxsb2NJbnQ4PWcsci5tYWxsb2NJbnQxNj12 LHIubWFsbG9jSW50MzI9bSxyLm1hbGxvY0Zsb2F0MzI9ci5tYWxsb2NGbG9h dD15LHIubWFsbG9jRmxvYXQ2ND1yLm1hbGxvY0RvdWJsZT14LHIubWFsbG9j VWludDhDbGFtcGVkPWIsci5tYWxsb2NEYXRhVmlldz1fLHIubWFsbG9jQnVm ZmVyPXcsci5jbGVhckNhY2hlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDwz MjsrK3Qpcy5VSU5UOFt0XS5sZW5ndGg9MCxzLlVJTlQxNlt0XS5sZW5ndGg9 MCxzLlVJTlQzMlt0XS5sZW5ndGg9MCxzLklOVDhbdF0ubGVuZ3RoPTAscy5J TlQxNlt0XS5sZW5ndGg9MCxzLklOVDMyW3RdLmxlbmd0aD0wLHMuRkxPQVRb dF0ubGVuZ3RoPTAscy5ET1VCTEVbdF0ubGVuZ3RoPTAscy5VSU5UOENbdF0u bGVuZ3RoPTAsbFt0XS5sZW5ndGg9MCxjW3RdLmxlbmd0aD0wfX0pLmNhbGwo dGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVm aW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3 aW5kb3c/d2luZG93Ont9LHQoImJ1ZmZlciIpLkJ1ZmZlcil9LHsiYml0LXR3 aWRkbGUiOjk0LGJ1ZmZlcjoxMDcsZHVwOjE3Mn1dLDU0NTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3RoaXMucm9vdHM9 bmV3IEFycmF5KHQpLHRoaXMucmFua3M9bmV3IEFycmF5KHQpO2Zvcih2YXIg ZT0wO2U8dDsrK2UpdGhpcy5yb290c1tlXT1lLHRoaXMucmFua3NbZV09MH1l LmV4cG9ydHM9bjt2YXIgYT1uLnByb3RvdHlwZTtPYmplY3QuZGVmaW5lUHJv cGVydHkoYSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu cm9vdHMubGVuZ3RofX0pLGEubWFrZVNldD1mdW5jdGlvbigpe3ZhciB0PXRo aXMucm9vdHMubGVuZ3RoO3JldHVybiB0aGlzLnJvb3RzLnB1c2godCksdGhp cy5yYW5rcy5wdXNoKDApLHR9LGEuZmluZD1mdW5jdGlvbih0KXtmb3IodmFy IGU9dCxyPXRoaXMucm9vdHM7clt0XSE9PXQ7KXQ9clt0XTtmb3IoO3JbZV0h PT10Oyl7dmFyIG49cltlXTtyW2VdPXQsZT1ufXJldHVybiB0fSxhLmxpbms9 ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmZpbmQodCksbj10aGlzLmZpbmQo ZSk7aWYociE9PW4pe3ZhciBhPXRoaXMucmFua3MsaT10aGlzLnJvb3RzLG89 YVtyXSxzPWFbbl07bzxzP2lbcl09bjpzPG8/aVtuXT1yOihpW25dPXIsKyth W3JdKX19fSx7fV0sNTQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIDA9PT10Lmxlbmd0 aD90OmU/KHJ8fHQuc29ydChlKSxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0x LG49dC5sZW5ndGgsYT10WzBdLGk9dFswXSxvPTE7bzxuOysrbylpZihpPWEs ZShhPXRbb10saSkpe2lmKG89PT1yKXtyKys7Y29udGludWV9dFtyKytdPWF9 cmV0dXJuIHQubGVuZ3RoPXIsdH0odCxlKSk6KHJ8fHQuc29ydCgpLGZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT0xLHI9dC5sZW5ndGgsbj10WzBdLGE9dFswXSxp PTE7aTxyOysraSxhPW4paWYoYT1uLChuPXRbaV0pIT09YSl7aWYoaT09PWUp e2UrKztjb250aW51ZX10W2UrK109bn1yZXR1cm4gdC5sZW5ndGg9ZSx0fSh0 KSl9fSx7fV0sNTQ3OltmdW5jdGlvbih0LGUscil7dmFyIG49L1tcJ1wiXS87 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PyhuLnRlc3QodC5jaGFy QXQoMCkpJiYodD10LnN1YnN0cigxKSksbi50ZXN0KHQuY2hhckF0KHQubGVu Z3RoLTEpKSYmKHQ9dC5zdWJzdHIoMCx0Lmxlbmd0aC0xKSksdCk6IiJ9fSx7 fV0sNTQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscil7QXJyYXkuaXNBcnJheShyKXx8KHI9W10uc2xp Y2UuY2FsbChhcmd1bWVudHMsMikpO2Zvcih2YXIgbj0wLGE9ci5sZW5ndGg7 bjxhO24rKyl7dmFyIGk9cltuXTtmb3IodmFyIG8gaW4gaSlpZigodm9pZCAw PT09ZVtvXXx8QXJyYXkuaXNBcnJheShlW29dKXx8dFtvXSE9PWVbb10pJiZv IGluIGUpe3ZhciBzO2lmKCEwPT09aVtvXSlzPWVbb107ZWxzZXtpZighMT09 PWlbb10pY29udGludWU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGlbb10mJnZv aWQgMD09PShzPWlbb10oZVtvXSx0LGUpKSljb250aW51ZX10W29dPXN9fXJl dHVybiB0fX0se31dLDU0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIGUm Jm51bGwhPT1lfHwoZT17fSk7cmV0dXJuIG4odCxlLmNhbnZhc3x8YSxlLmNv bnRleHR8fGksZSl9O3ZhciBuPXQoIi4vbGliL3Z0ZXh0IiksYT1udWxsLGk9 bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoKGE9ZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikpLndpZHRoPTgxOTIsYS5oZWln aHQ9MTAyNCxpPWEuZ2V0Q29udGV4dCgiMmQiKSl9LHsiLi9saWIvdnRleHQi OjU1MH1dLDU1MDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscixuKXt2YXIgaT02NCxvPTEuMjUscz17YnJlYWtsaW5lczohMSxi b2xkczohMSxpdGFsaWNzOiExLHN1YnNjcmlwdHM6ITEsc3VwZXJzY3JpcHRz OiExfTtuJiYobi5zaXplJiZuLnNpemU+MCYmKGk9bi5zaXplKSxuLmxpbmVT cGFjaW5nJiZuLmxpbmVTcGFjaW5nPjAmJihvPW4ubGluZVNwYWNpbmcpLG4u c3R5bGV0YWdzJiZuLnN0eWxldGFncy5icmVha2xpbmVzJiYocy5icmVha2xp bmVzPSEhbi5zdHlsZXRhZ3MuYnJlYWtsaW5lcyksbi5zdHlsZXRhZ3MmJm4u c3R5bGV0YWdzLmJvbGRzJiYocy5ib2xkcz0hIW4uc3R5bGV0YWdzLmJvbGRz KSxuLnN0eWxldGFncyYmbi5zdHlsZXRhZ3MuaXRhbGljcyYmKHMuaXRhbGlj cz0hIW4uc3R5bGV0YWdzLml0YWxpY3MpLG4uc3R5bGV0YWdzJiZuLnN0eWxl dGFncy5zdWJzY3JpcHRzJiYocy5zdWJzY3JpcHRzPSEhbi5zdHlsZXRhZ3Mu c3Vic2NyaXB0cyksbi5zdHlsZXRhZ3MmJm4uc3R5bGV0YWdzLnN1cGVyc2Ny aXB0cyYmKHMuc3VwZXJzY3JpcHRzPSEhbi5zdHlsZXRhZ3Muc3VwZXJzY3Jp cHRzKSk7cmV0dXJuIHIuZm9udD1bbi5mb250U3R5bGUsbi5mb250VmFyaWFu dCxuLmZvbnRXZWlnaHQsaSsicHgiLG4uZm9udF0uZmlsdGVyKGZ1bmN0aW9u KHQpe3JldHVybiB0fSkuam9pbigiICIpLHIudGV4dEFsaWduPSJzdGFydCIs ci50ZXh0QmFzZWxpbmU9ImFscGhhYmV0aWMiLHIuZGlyZWN0aW9uPSJsdHIi LHcoZnVuY3Rpb24odCxlLHIsbixpLG8pe3I9ci5yZXBsYWNlKC9cbi9nLCIi KSxyPSEwPT09by5icmVha2xpbmVzP3IucmVwbGFjZSgvXDxiclw+L2csIlxu Iik6ci5yZXBsYWNlKC9cPGJyXD4vZywiICIpO3ZhciBzPSIiLGw9W107Zm9y KGs9MDtrPHIubGVuZ3RoOysraylsW2tdPXM7ITA9PT1vLmJvbGRzJiYobD14 KGMsdSxyLGwpKSwhMD09PW8uaXRhbGljcyYmKGw9eChoLGYscixsKSksITA9 PT1vLnN1cGVyc2NyaXB0cyYmKGw9eChwLGcscixsKSksITA9PT1vLnN1YnNj cmlwdHMmJihsPXgodix5LHIsbCkpO3ZhciBiPVtdLF89IiI7Zm9yKGs9MDtr PHIubGVuZ3RoOysrayludWxsIT09bFtrXSYmKF8rPXJba10sYi5wdXNoKGxb a10pKTt2YXIgdyxrLFQsTSxBLFM9Xy5zcGxpdCgiXG4iKSxFPVMubGVuZ3Ro LEw9TWF0aC5yb3VuZChpKm4pLEM9bixQPTIqbixPPTAsej1FKkwrUDt0Lmhl aWdodDx6JiYodC5oZWlnaHQ9eiksZS5maWxsU3R5bGU9IiMwMDAiLGUuZmls bFJlY3QoMCwwLHQud2lkdGgsdC5oZWlnaHQpLGUuZmlsbFN0eWxlPSIjZmZm Ijt2YXIgST0wLEQ9IiI7ZnVuY3Rpb24gUigpe2lmKCIiIT09RCl7dmFyIHQ9 ZS5tZWFzdXJlVGV4dChEKS53aWR0aDtlLmZpbGxUZXh0KEQsQytULFArTSks VCs9dH19ZnVuY3Rpb24gRigpe3JldHVybiBNYXRoLnJvdW5kKEEpKyJweCAi fWZ1bmN0aW9uIEIodCxyKXt2YXIgbj0iIitlLmZvbnQ7aWYoITA9PT1vLnN1 YnNjcmlwdHMpe3ZhciBhPXQuaW5kZXhPZihtKSxpPXIuaW5kZXhPZihtKSxz PWE+LTE/cGFyc2VJbnQodFsxK2FdKTowLGw9aT4tMT9wYXJzZUludChyWzEr aV0pOjA7cyE9PWwmJihuPW4ucmVwbGFjZShGKCksIj9weCAiKSxBKj1NYXRo LnBvdyguNzUsbC1zKSxuPW4ucmVwbGFjZSgiP3B4ICIsRigpKSksTSs9LjI1 KkwqKGwtcyl9aWYoITA9PT1vLnN1cGVyc2NyaXB0cyl7dmFyIGM9dC5pbmRl eE9mKGQpLGg9ci5pbmRleE9mKGQpLHA9Yz4tMT9wYXJzZUludCh0WzErY10p OjAsZz1oPi0xP3BhcnNlSW50KHJbMStoXSk6MDtwIT09ZyYmKG49bi5yZXBs YWNlKEYoKSwiP3B4ICIpLEEqPU1hdGgucG93KC43NSxnLXApLG49bi5yZXBs YWNlKCI/cHggIixGKCkpKSxNLT0uMjUqTCooZy1wKX1pZighMD09PW8uYm9s ZHMpe3ZhciB2PXQuaW5kZXhPZih1KT4tMSx5PXIuaW5kZXhPZih1KT4tMTsh diYmeSYmKG49eD9uLnJlcGxhY2UoIml0YWxpYyAiLCJpdGFsaWMgYm9sZCAi KToiYm9sZCAiK24pLHYmJiF5JiYobj1uLnJlcGxhY2UoImJvbGQgIiwiIikp fWlmKCEwPT09by5pdGFsaWNzKXt2YXIgeD10LmluZGV4T2YoZik+LTEsYj1y LmluZGV4T2YoZik+LTE7IXgmJmImJihuPSJpdGFsaWMgIituKSx4JiYhYiYm KG49bi5yZXBsYWNlKCJpdGFsaWMgIiwiIikpfWUuZm9udD1ufWZvcih3PTA7 dzxFOysrdyl7dmFyIE49U1t3XSsiXG4iO2ZvcihUPTAsTT13KkwsQT1uLEQ9 IiIsaz0wO2s8Ti5sZW5ndGg7KytrKXt2YXIgaj1rK0k8Yi5sZW5ndGg/Yltr K0ldOmJbYi5sZW5ndGgtMV07cz09PWo/RCs9TltrXTooUigpLEQ9TltrXSx2 b2lkIDAhPT1qJiYoQihzLGopLHM9aikpfVIoKSxJKz1OLmxlbmd0aDt2YXIg Vj0wfE1hdGgucm91bmQoVCsyKkMpO088ViYmKE89Vil9dmFyIFU9TyxxPVAr TCpFO3JldHVybiBhKGUuZ2V0SW1hZ2VEYXRhKDAsMCxVLHEpLmRhdGEsW3Es VSw0XSkucGljaygtMSwtMSwwKS50cmFuc3Bvc2UoMSwwKX0oZSxyLHQsaSxv LHMpLG4saSl9LGUuZXhwb3J0cy5wcm9jZXNzUGl4ZWxzPXc7dmFyIG49dCgi c3VyZmFjZS1uZXRzIiksYT10KCJuZGFycmF5IiksaT10KCJzaW1wbGlmeS1w bGFuYXItZ3JhcGgiKSxvPXQoImNsZWFuLXBzbGciKSxzPXQoImNkdDJkIiks bD10KCJwbGFuYXItZ3JhcGgtdG8tcG9seWxpbmUiKSxjPSJiIix1PSJifCIs aD0iaSIsZj0iaXwiLHA9InN1cCIsZD0iKyIsZz0iKzEiLHY9InN1YiIsbT0i LSIseT0iLTEiO2Z1bmN0aW9uIHgodCxlLHIsbil7Zm9yKHZhciBhPSI8Iit0 KyI+IixpPSI8LyIrdCsiPiIsbz1hLmxlbmd0aCxzPWkubGVuZ3RoLGw9ZVsw XT09PWR8fGVbMF09PT1tLGM9MCx1PS1zO2M+LTEmJi0xIT09KGM9ci5pbmRl eE9mKGEsYykpJiYtMSE9PSh1PXIuaW5kZXhPZihpLGMrbykpJiYhKHU8PWMp Oyl7Zm9yKHZhciBoPWM7aDx1K3M7KytoKWlmKGg8YytvfHxoPj11KW5baF09 bnVsbCxyPXIuc3Vic3RyKDAsaCkrIiAiK3Iuc3Vic3RyKGgrMSk7ZWxzZSBp ZihudWxsIT09bltoXSl7dmFyIGY9bltoXS5pbmRleE9mKGVbMF0pOy0xPT09 Zj9uW2hdKz1lOmwmJihuW2hdPW5baF0uc3Vic3RyKDAsZisxKSsoMStwYXJz ZUludChuW2hdW2YrMV0pKStuW2hdLnN1YnN0cihmKzIpKX12YXIgcD1jK28s Zz1yLnN1YnN0cihwLHUtcCkuaW5kZXhPZihhKTtjPS0xIT09Zz9nOnUrc31y ZXR1cm4gbn1mdW5jdGlvbiBiKHQsZSl7dmFyIHI9bih0LDEyOCk7cmV0dXJu IGU/aShyLmNlbGxzLHIucG9zaXRpb25zLC4yNSk6e2VkZ2VzOnIuY2VsbHMs cG9zaXRpb25zOnIucG9zaXRpb25zfX1mdW5jdGlvbiBfKHQsZSxyLG4pe3Zh ciBhPWIodCxuKSxpPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ZS50ZXh0 QWxpZ258fCJzdGFydCIsYT1lLnRleHRCYXNlbGluZXx8ImFscGhhYmV0aWMi LGk9WzE8PDMwLDE8PDMwXSxvPVswLDBdLHM9dC5sZW5ndGgsbD0wO2w8czsr K2wpZm9yKHZhciBjPXRbbF0sdT0wO3U8MjsrK3UpaVt1XT0wfE1hdGgubWlu KGlbdV0sY1t1XSksb1t1XT0wfE1hdGgubWF4KG9bdV0sY1t1XSk7dmFyIGg9 MDtzd2l0Y2gobil7Y2FzZSJjZW50ZXIiOmg9LS41KihpWzBdK29bMF0pO2Jy ZWFrO2Nhc2UicmlnaHQiOmNhc2UiZW5kIjpoPS1vWzBdO2JyZWFrO2Nhc2Ui bGVmdCI6Y2FzZSJzdGFydCI6aD0taVswXTticmVhaztkZWZhdWx0OnRocm93 IG5ldyBFcnJvcigidmVjdG9yaXplLXRleHQ6IFVucmVjb2duaXplZCB0ZXh0 QWxpZ246ICciK24rIiciKX12YXIgZj0wO3N3aXRjaChhKXtjYXNlImhhbmdp bmciOmNhc2UidG9wIjpmPS1pWzFdO2JyZWFrO2Nhc2UibWlkZGxlIjpmPS0u NSooaVsxXStvWzFdKTticmVhaztjYXNlImFscGhhYmV0aWMiOmNhc2UiaWRl b2dyYXBoaWMiOmY9LTMqcjticmVhaztjYXNlImJvdHRvbSI6Zj0tb1sxXTti cmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidmVjdG9yaXplLXRleHQ6 IFVucmVjb2dpbml6ZWQgdGV4dEJhc2VsaW5lOiAnIithKyInIil9dmFyIHA9 MS9yO3JldHVybiJsaW5lSGVpZ2h0ImluIGU/cCo9K2UubGluZUhlaWdodDoi d2lkdGgiaW4gZT9wPWUud2lkdGgvKG9bMF0taVswXSk6ImhlaWdodCJpbiBl JiYocD1lLmhlaWdodC8ob1sxXS1pWzFdKSksdC5tYXAoZnVuY3Rpb24odCl7 cmV0dXJuW3AqKHRbMF0raCkscCoodFsxXStmKV19KX0oYS5wb3NpdGlvbnMs ZSxyKSxjPWEuZWRnZXMsdT0iY2N3Ij09PWUub3JpZW50YXRpb247aWYobyhp LGMpLGUucG9seWdvbnN8fGUucG9seWdvbnx8ZS5wb2x5bGluZSl7Zm9yKHZh ciBoPWwoYyxpKSxmPW5ldyBBcnJheShoLmxlbmd0aCkscD0wO3A8aC5sZW5n dGg7KytwKXtmb3IodmFyIGQ9aFtwXSxnPW5ldyBBcnJheShkLmxlbmd0aCks dj0wO3Y8ZC5sZW5ndGg7Kyt2KXtmb3IodmFyIG09ZFt2XSx5PW5ldyBBcnJh eShtLmxlbmd0aCkseD0wO3g8bS5sZW5ndGg7Kyt4KXlbeF09aVttW3hdXS5z bGljZSgpO3UmJnkucmV2ZXJzZSgpLGdbdl09eX1mW3BdPWd9cmV0dXJuIGZ9 cmV0dXJuIGUudHJpYW5nbGVzfHxlLnRyaWFuZ3VsYXRlfHxlLnRyaWFuZ2xl P3tjZWxsczpzKGksYyx7ZGVsYXVuYXk6ITEsZXh0ZXJpb3I6ITEsaW50ZXJp b3I6ITB9KSxwb3NpdGlvbnM6aX06e2VkZ2VzOmMscG9zaXRpb25zOml9fWZ1 bmN0aW9uIHcodCxlLHIpe3RyeXtyZXR1cm4gXyh0LGUsciwhMCl9Y2F0Y2go dCl7fXRyeXtyZXR1cm4gXyh0LGUsciwhMSl9Y2F0Y2godCl7fXJldHVybiBl LnBvbHlnb25zfHxlLnBvbHlsaW5lfHxlLnBvbHlnb24/W106ZS50cmlhbmds ZXN8fGUudHJpYW5ndWxhdGV8fGUudHJpYW5nbGU/e2NlbGxzOltdLHBvc2l0 aW9uczpbXX06e2VkZ2VzOltdLHBvc2l0aW9uczpbXX19fSx7Y2R0MmQ6MTA4 LCJjbGVhbi1wc2xnIjoxMTgsbmRhcnJheTo0NTIsInBsYW5hci1ncmFwaC10 by1wb2x5bGluZSI6NDcwLCJzaW1wbGlmeS1wbGFuYXItZ3JhcGgiOjUyMywi c3VyZmFjZS1uZXRzIjo1MzB9XSw1NTE6W2Z1bmN0aW9uKHQsZSxyKXshZnVu Y3Rpb24oKXsidXNlIHN0cmljdCI7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBz ZXN8fCFzZXMub2t8fHNlcy5vaygpKXsidW5kZWZpbmVkIiE9dHlwZW9mIHNl cyYmKHNlcy53ZWFrTWFwUGVybWl0SG9zdE9iamVjdHM9dik7dmFyIHQ9ITE7 aWYoImZ1bmN0aW9uIj09dHlwZW9mIFdlYWtNYXApe3ZhciByPVdlYWtNYXA7 aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9GaXJlZm94Ly50 ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKTtlbHNle3ZhciBuPW5ldyByLGE9 T2JqZWN0LmZyZWV6ZSh7fSk7aWYobi5zZXQoYSwxKSwxPT09bi5nZXQoYSkp cmV0dXJuIHZvaWQoZS5leHBvcnRzPVdlYWtNYXApO3Q9ITB9fU9iamVjdC5w cm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGk9T2JqZWN0LmdldE93blBy b3BlcnR5TmFtZXMsbz1PYmplY3QuZGVmaW5lUHJvcGVydHkscz1PYmplY3Qu aXNFeHRlbnNpYmxlLGw9IndlYWttYXA6IixjPWwrImlkZW50OiIrTWF0aC5y YW5kb20oKSsiX19fIjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byYm ImZ1bmN0aW9uIj09dHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMmJiJm dW5jdGlvbiI9PXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlw ZW9mIFVpbnQ4QXJyYXkpe3ZhciB1PW5ldyBBcnJheUJ1ZmZlcigyNSksaD1u ZXcgVWludDhBcnJheSh1KTtjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGgpLGM9 bCsicmFuZDoiK0FycmF5LnByb3RvdHlwZS5tYXAuY2FsbChoLGZ1bmN0aW9u KHQpe3JldHVybih0JTM2KS50b1N0cmluZygzNil9KS5qb2luKCIiKSsiX19f In1pZihvKE9iamVjdCwiZ2V0T3duUHJvcGVydHlOYW1lcyIse3ZhbHVlOmZ1 bmN0aW9uKHQpe3JldHVybiBpKHQpLmZpbHRlcihtKX19KSwiZ2V0UHJvcGVy dHlOYW1lcyJpbiBPYmplY3Qpe3ZhciBmPU9iamVjdC5nZXRQcm9wZXJ0eU5h bWVzO28oT2JqZWN0LCJnZXRQcm9wZXJ0eU5hbWVzIix7dmFsdWU6ZnVuY3Rp b24odCl7cmV0dXJuIGYodCkuZmlsdGVyKG0pfX0pfSFmdW5jdGlvbigpe3Zh ciB0PU9iamVjdC5mcmVlemU7byhPYmplY3QsImZyZWV6ZSIse3ZhbHVlOmZ1 bmN0aW9uKGUpe3JldHVybiB5KGUpLHQoZSl9fSk7dmFyIGU9T2JqZWN0LnNl YWw7byhPYmplY3QsInNlYWwiLHt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4g eSh0KSxlKHQpfX0pO3ZhciByPU9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztv KE9iamVjdCwicHJldmVudEV4dGVuc2lvbnMiLHt2YWx1ZTpmdW5jdGlvbih0 KXtyZXR1cm4geSh0KSxyKHQpfX0pfSgpO3ZhciBwPSExLGQ9MCxnPWZ1bmN0 aW9uKCl7dGhpcyBpbnN0YW5jZW9mIGd8fGIoKTt2YXIgdD1bXSxlPVtdLHI9 ZCsrO3JldHVybiBPYmplY3QuY3JlYXRlKGcucHJvdG90eXBlLHtnZXRfX186 e3ZhbHVlOngoZnVuY3Rpb24obixhKXt2YXIgaSxvPXkobik7cmV0dXJuIG8/ ciBpbiBvP29bcl06YTooaT10LmluZGV4T2YobikpPj0wP2VbaV06YX0pfSxo YXNfX186e3ZhbHVlOngoZnVuY3Rpb24oZSl7dmFyIG49eShlKTtyZXR1cm4g bj9yIGluIG46dC5pbmRleE9mKGUpPj0wfSl9LHNldF9fXzp7dmFsdWU6eChm dW5jdGlvbihuLGEpe3ZhciBpLG89eShuKTtyZXR1cm4gbz9vW3JdPWE6KGk9 dC5pbmRleE9mKG4pKT49MD9lW2ldPWE6KGk9dC5sZW5ndGgsZVtpXT1hLHRb aV09biksdGhpc30pfSxkZWxldGVfX186e3ZhbHVlOngoZnVuY3Rpb24obil7 dmFyIGEsaSxvPXkobik7cmV0dXJuIG8/ciBpbiBvJiZkZWxldGUgb1tyXToh KChhPXQuaW5kZXhPZihuKSk8MHx8KGk9dC5sZW5ndGgtMSx0W2FdPXZvaWQg MCxlW2FdPWVbaV0sdFthXT10W2ldLHQubGVuZ3RoPWksZS5sZW5ndGg9aSww KSl9KX19KX07Zy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShPYmplY3QucHJv dG90eXBlLHtnZXQ6e3ZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMu Z2V0X19fKHQsZSl9LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0saGFz Ont2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNfX18odCl9LHdy aXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sc2V0Ont2YWx1ZTpmdW5jdGlv bih0LGUpe3JldHVybiB0aGlzLnNldF9fXyh0LGUpfSx3cml0YWJsZTohMCxj b25maWd1cmFibGU6ITB9LGRlbGV0ZTp7dmFsdWU6ZnVuY3Rpb24odCl7cmV0 dXJuIHRoaXMuZGVsZXRlX19fKHQpfSx3cml0YWJsZTohMCxjb25maWd1cmFi bGU6ITB9fSksImZ1bmN0aW9uIj09dHlwZW9mIHI/ZnVuY3Rpb24oKXtmdW5j dGlvbiBuKCl7dGhpcyBpbnN0YW5jZW9mIGd8fGIoKTt2YXIgZSxuPW5ldyBy LGE9dm9pZCAwLGk9ITE7cmV0dXJuIGU9dD9mdW5jdGlvbih0LGUpe3JldHVy biBuLnNldCh0LGUpLG4uaGFzKHQpfHwoYXx8KGE9bmV3IGcpLGEuc2V0KHQs ZSkpLHRoaXN9OmZ1bmN0aW9uKHQsZSl7aWYoaSl0cnl7bi5zZXQodCxlKX1j YXRjaChyKXthfHwoYT1uZXcgZyksYS5zZXRfX18odCxlKX1lbHNlIG4uc2V0 KHQsZSk7cmV0dXJuIHRoaXN9LE9iamVjdC5jcmVhdGUoZy5wcm90b3R5cGUs e2dldF9fXzp7dmFsdWU6eChmdW5jdGlvbih0LGUpe3JldHVybiBhP24uaGFz KHQpP24uZ2V0KHQpOmEuZ2V0X19fKHQsZSk6bi5nZXQodCxlKX0pfSxoYXNf X186e3ZhbHVlOngoZnVuY3Rpb24odCl7cmV0dXJuIG4uaGFzKHQpfHwhIWEm JmEuaGFzX19fKHQpfSl9LHNldF9fXzp7dmFsdWU6eChlKX0sZGVsZXRlX19f Ont2YWx1ZTp4KGZ1bmN0aW9uKHQpe3ZhciBlPSEhbi5kZWxldGUodCk7cmV0 dXJuIGEmJmEuZGVsZXRlX19fKHQpfHxlfSl9LHBlcm1pdEhvc3RPYmplY3Rz X19fOnt2YWx1ZTp4KGZ1bmN0aW9uKHQpe2lmKHQhPT12KXRocm93IG5ldyBF cnJvcigiYm9ndXMgY2FsbCB0byBwZXJtaXRIb3N0T2JqZWN0c19fXyIpO2k9 ITB9KX19KX10JiYidW5kZWZpbmVkIiE9dHlwZW9mIFByb3h5JiYoUHJveHk9 dm9pZCAwKSxuLnByb3RvdHlwZT1nLnByb3RvdHlwZSxlLmV4cG9ydHM9bixP YmplY3QuZGVmaW5lUHJvcGVydHkoV2Vha01hcC5wcm90b3R5cGUsImNvbnN0 cnVjdG9yIix7dmFsdWU6V2Vha01hcCxlbnVtZXJhYmxlOiExLGNvbmZpZ3Vy YWJsZTohMCx3cml0YWJsZTohMH0pfSgpOigidW5kZWZpbmVkIiE9dHlwZW9m IFByb3h5JiYoUHJveHk9dm9pZCAwKSxlLmV4cG9ydHM9Zyl9ZnVuY3Rpb24g dih0KXt0LnBlcm1pdEhvc3RPYmplY3RzX19fJiZ0LnBlcm1pdEhvc3RPYmpl Y3RzX19fKHYpfWZ1bmN0aW9uIG0odCl7cmV0dXJuISh0LnN1YnN0cigwLGwu bGVuZ3RoKT09bCYmIl9fXyI9PT10LnN1YnN0cih0Lmxlbmd0aC0zKSl9ZnVu Y3Rpb24geSh0KXtpZih0IT09T2JqZWN0KHQpKXRocm93IG5ldyBUeXBlRXJy b3IoIk5vdCBhbiBvYmplY3Q6ICIrdCk7dmFyIGU9dFtjXTtpZihlJiZlLmtl eT09PXQpcmV0dXJuIGU7aWYocyh0KSl7ZT17a2V5OnR9O3RyeXtyZXR1cm4g byh0LGMse3ZhbHVlOmUsd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMSxjb25m aWd1cmFibGU6ITF9KSxlfWNhdGNoKHQpe3JldHVybn19fWZ1bmN0aW9uIHgo dCl7cmV0dXJuIHQucHJvdG90eXBlPW51bGwsT2JqZWN0LmZyZWV6ZSh0KX1m dW5jdGlvbiBiKCl7cHx8InVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlfHwo cD0hMCxjb25zb2xlLndhcm4oIldlYWtNYXAgc2hvdWxkIGJlIGludm9rZWQg YXMgbmV3IFdlYWtNYXAoKSwgbm90IFdlYWtNYXAoKS4gVGhpcyB3aWxsIGJl IGFuIGVycm9yIGluIHRoZSBmdXR1cmUuIikpfX0oKX0se31dLDU1MjpbZnVu Y3Rpb24odCxlLHIpe3ZhciBuPXQoIi4vaGlkZGVuLXN0b3JlLmpzIik7ZS5l eHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKGUp e2lmKCgib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKSYmImZ1bmN0aW9u IiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJXZWFrbWFwLXNoaW06IEtl eSBtdXN0IGJlIG9iamVjdCIpO3ZhciByPWUudmFsdWVPZih0KTtyZXR1cm4g ciYmci5pZGVudGl0eT09PXQ/cjpuKGUsdCl9fX0seyIuL2hpZGRlbi1zdG9y ZS5qcyI6NTUzfV0sNTUzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9e2lkZW50aXR5OmV9LG49dC52YWx1ZU9mO3Jl dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmFsdWVPZiIse3ZhbHVl OmZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZT9uLmFwcGx5KHRoaXMsYXJndW1l bnRzKTpyfSx3cml0YWJsZTohMH0pLHJ9fSx7fV0sNTU0OltmdW5jdGlvbih0 LGUscil7dmFyIG49dCgiLi9jcmVhdGUtc3RvcmUuanMiKTtlLmV4cG9ydHM9 ZnVuY3Rpb24oKXt2YXIgdD1uKCk7cmV0dXJue2dldDpmdW5jdGlvbihlLHIp e3ZhciBuPXQoZSk7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkoInZhbHVlIik/ bi52YWx1ZTpyfSxzZXQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdChlKS52YWx1 ZT1yLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4idmFsdWUiaW4gdChl KX0sZGVsZXRlOmZ1bmN0aW9uKGUpe3JldHVybiBkZWxldGUgdChlKS52YWx1 ZX19fX0seyIuL2NyZWF0ZS1zdG9yZS5qcyI6NTUyfV0sNTU1OltmdW5jdGlv bih0LGUscil7dmFyIG49dCgiZ2V0LWNhbnZhcy1jb250ZXh0Iik7ZS5leHBv cnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuKCJ3ZWJnbCIsdCl9fSx7ImdldC1j YW52YXMtY29udGV4dCI6MjM1fV0sNTU2OltmdW5jdGlvbih0LGUscil7dmFy IG49dCgiLi4vbWFpbiIpLGE9dCgib2JqZWN0LWFzc2lnbiIpLGk9bi5pbnN0 YW5jZSgpO2Z1bmN0aW9uIG8odCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFs T3B0aW9uc1t0fHwiIl18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXX1vLnBy b3RvdHlwZT1uZXcgbi5iYXNlQ2FsZW5kYXIsYShvLnByb3RvdHlwZSx7bmFt ZToiQ2hpbmVzZSIsamRFcG9jaDoxNzIxNDI1LjUsaGFzWWVhclplcm86ITEs bWluTW9udGg6MCxmaXJzdE1vbnRoOjAsbWluRGF5OjEscmVnaW9uYWxPcHRp b25zOnsiIjp7bmFtZToiQ2hpbmVzZSIsZXBvY2hzOlsiQkVDIiwiRUMiXSxt b250aE51bWJlcnM6ZnVuY3Rpb24odCxlKXtpZigic3RyaW5nIj09dHlwZW9m IHQpe3ZhciByPXQubWF0Y2gobCk7cmV0dXJuIHI/clswXToiIn12YXIgbj10 aGlzLl92YWxpZGF0ZVllYXIodCksYT10Lm1vbnRoKCksaT0iIit0aGlzLnRv Q2hpbmVzZU1vbnRoKG4sYSk7cmV0dXJuIGUmJmkubGVuZ3RoPDImJihpPSIw IitpKSx0aGlzLmlzSW50ZXJjYWxhcnlNb250aChuLGEpJiYoaSs9ImkiKSxp fSxtb250aE5hbWVzOmZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2Yg dCl7dmFyIGU9dC5tYXRjaChjKTtyZXR1cm4gZT9lWzBdOiIifXZhciByPXRo aXMuX3ZhbGlkYXRlWWVhcih0KSxuPXQubW9udGgoKSxhPVsiXHU0ZTAwXHU2 NzA4IiwiXHU0ZThjXHU2NzA4IiwiXHU0ZTA5XHU2NzA4IiwiXHU1NmRiXHU2 NzA4IiwiXHU0ZTk0XHU2NzA4IiwiXHU1MTZkXHU2NzA4IiwiXHU0ZTAzXHU2 NzA4IiwiXHU1MTZiXHU2NzA4IiwiXHU0ZTVkXHU2NzA4IiwiXHU1MzQxXHU2 NzA4IiwiXHU1MzQxXHU0ZTAwXHU2NzA4IiwiXHU1MzQxXHU0ZThjXHU2NzA4 Il1bdGhpcy50b0NoaW5lc2VNb250aChyLG4pLTFdO3JldHVybiB0aGlzLmlz SW50ZXJjYWxhcnlNb250aChyLG4pJiYoYT0iXHU5NWYwIithKSxhfSxtb250 aE5hbWVzU2hvcnQ6ZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0 KXt2YXIgZT10Lm1hdGNoKHUpO3JldHVybiBlP2VbMF06IiJ9dmFyIHI9dGhp cy5fdmFsaWRhdGVZZWFyKHQpLG49dC5tb250aCgpLGE9WyJcdTRlMDAiLCJc dTRlOGMiLCJcdTRlMDkiLCJcdTU2ZGIiLCJcdTRlOTQiLCJcdTUxNmQiLCJc dTRlMDMiLCJcdTUxNmIiLCJcdTRlNWQiLCJcdTUzNDEiLCJcdTUzNDFcdTRl MDAiLCJcdTUzNDFcdTRlOGMiXVt0aGlzLnRvQ2hpbmVzZU1vbnRoKHIsbikt MV07cmV0dXJuIHRoaXMuaXNJbnRlcmNhbGFyeU1vbnRoKHIsbikmJihhPSJc dTk1ZjAiK2EpLGF9LHBhcnNlTW9udGg6ZnVuY3Rpb24odCxlKXt0PXRoaXMu X3ZhbGlkYXRlWWVhcih0KTt2YXIgcixuPXBhcnNlSW50KGUpO2lmKGlzTmFO KG4pKSJcdTk1ZjAiPT09ZVswXSYmKHI9ITAsZT1lLnN1YnN0cmluZygxKSks Ilx1NjcwOCI9PT1lW2UubGVuZ3RoLTFdJiYoZT1lLnN1YnN0cmluZygwLGUu bGVuZ3RoLTEpKSxuPTErWyJcdTRlMDAiLCJcdTRlOGMiLCJcdTRlMDkiLCJc dTU2ZGIiLCJcdTRlOTQiLCJcdTUxNmQiLCJcdTRlMDMiLCJcdTUxNmIiLCJc dTRlNWQiLCJcdTUzNDEiLCJcdTUzNDFcdTRlMDAiLCJcdTUzNDFcdTRlOGMi XS5pbmRleE9mKGUpO2Vsc2V7dmFyIGE9ZVtlLmxlbmd0aC0xXTtyPSJpIj09 PWF8fCJJIj09PWF9cmV0dXJuIHRoaXMudG9Nb250aEluZGV4KHQsbixyKX0s ZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVz ZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheU5hbWVz U2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJT YXQiXSxkYXlOYW1lc01pbjpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJG ciIsIlNhIl0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoieXl5eS9tbS9kZCIs Zmlyc3REYXk6MSxpc1JUTDohMX19LF92YWxpZGF0ZVllYXI6ZnVuY3Rpb24o dCxlKXtpZih0LnllYXImJih0PXQueWVhcigpKSwibnVtYmVyIiE9dHlwZW9m IHR8fHQ8MTg4OHx8dD4yMTExKXRocm93IGUucmVwbGFjZSgvXHswXH0vLHRo aXMubG9jYWwubmFtZSk7cmV0dXJuIHR9LHRvTW9udGhJbmRleDpmdW5jdGlv bih0LGUscil7dmFyIGE9dGhpcy5pbnRlcmNhbGFyeU1vbnRoKHQpO2lmKHIm JmUhPT1hfHxlPDF8fGU+MTIpdGhyb3cgbi5sb2NhbC5pbnZhbGlkTW9udGgu cmVwbGFjZSgvXHswXH0vLHRoaXMubG9jYWwubmFtZSk7cmV0dXJuIGE/IXIm JmU8PWE/ZS0xOmU6ZS0xfSx0b0NoaW5lc2VNb250aDpmdW5jdGlvbih0LGUp e3QueWVhciYmKGU9KHQ9dC55ZWFyKCkpLm1vbnRoKCkpO3ZhciByPXRoaXMu aW50ZXJjYWxhcnlNb250aCh0KTtpZihlPDB8fGU+KHI/MTI6MTEpKXRocm93 IG4ubG9jYWwuaW52YWxpZE1vbnRoLnJlcGxhY2UoL1x7MFx9Lyx0aGlzLmxv Y2FsLm5hbWUpO3JldHVybiByP2U8cj9lKzE6ZTplKzF9LGludGVyY2FsYXJ5 TW9udGg6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dGhpcy5fdmFsaWRhdGVZZWFy KHQpLGhbdC1oWzBdXT4+MTN9LGlzSW50ZXJjYWxhcnlNb250aDpmdW5jdGlv bih0LGUpe3QueWVhciYmKGU9KHQ9dC55ZWFyKCkpLm1vbnRoKCkpO3ZhciBy PXRoaXMuaW50ZXJjYWxhcnlNb250aCh0KTtyZXR1cm4hIXImJnI9PT1lfSxs ZWFwWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXRoaXMuaW50ZXJjYWxh cnlNb250aCh0KX0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIGEs bz10aGlzLl92YWxpZGF0ZVllYXIodCxuLmxvY2FsLmludmFsaWR5ZWFyKSxz PWZbby1mWzBdXSxsPXM+PjkmNDA5NSxjPXM+PjUmMTUsdT0zMSZzOyhhPWku bmV3RGF0ZShsLGMsdSkpLmFkZCg0LShhLmRheU9mV2VlaygpfHw3KSwiZCIp O3ZhciBoPXRoaXMudG9KRCh0LGUsciktYS50b0pEKCk7cmV0dXJuIDErTWF0 aC5mbG9vcihoLzcpfSxtb250aHNJblllYXI6ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMubGVhcFllYXIodCk/MTM6MTJ9LGRheXNJbk1vbnRoOmZ1bmN0aW9u KHQsZSl7dC55ZWFyJiYoZT10Lm1vbnRoKCksdD10LnllYXIoKSksdD10aGlz Ll92YWxpZGF0ZVllYXIodCk7dmFyIHI9aFt0LWhbMF1dO2lmKGU+KHI+PjEz PzEyOjExKSl0aHJvdyBuLmxvY2FsLmludmFsaWRNb250aC5yZXBsYWNlKC9c ezBcfS8sdGhpcy5sb2NhbC5uYW1lKTtyZXR1cm4gciYxPDwxMi1lPzMwOjI5 fSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odGhpcy5kYXlPZldl ZWsodCxlLHIpfHw3KTw2fSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10 aGlzLl92YWxpZGF0ZSh0LHMscixuLmxvY2FsLmludmFsaWREYXRlKTt0PXRo aXMuX3ZhbGlkYXRlWWVhcihhLnllYXIoKSksZT1hLm1vbnRoKCkscj1hLmRh eSgpO3ZhciBvPXRoaXMuaXNJbnRlcmNhbGFyeU1vbnRoKHQsZSkscz10aGlz LnRvQ2hpbmVzZU1vbnRoKHQsZSksbD1mdW5jdGlvbih0LGUscixuLGEpe3Zh ciBpLG8scztpZigib2JqZWN0Ij09dHlwZW9mIHQpbz10LGk9ZXx8e307ZWxz ZXt2YXIgbD0ibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTE4ODgmJnQ8PTIxMTE7 aWYoIWwpdGhyb3cgbmV3IEVycm9yKCJMdW5hciB5ZWFyIG91dHNpZGUgcmFu Z2UgMTg4OC0yMTExIik7dmFyIGM9Im51bWJlciI9PXR5cGVvZiBlJiZlPj0x JiZlPD0xMjtpZighYyl0aHJvdyBuZXcgRXJyb3IoIkx1bmFyIG1vbnRoIG91 dHNpZGUgcmFuZ2UgMSAtIDEyIik7dmFyIHUscD0ibnVtYmVyIj09dHlwZW9m IHImJnI+PTEmJnI8PTMwO2lmKCFwKXRocm93IG5ldyBFcnJvcigiTHVuYXIg ZGF5IG91dHNpZGUgcmFuZ2UgMSAtIDMwIik7Im9iamVjdCI9PXR5cGVvZiBu Pyh1PSExLGk9bik6KHU9ISFuLGk9YXx8e30pLG89e3llYXI6dCxtb250aDpl LGRheTpyLGlzSW50ZXJjYWxhcnk6dX19cz1vLmRheS0xO3ZhciBkLGc9aFtv LnllYXItaFswXV0sdj1nPj4xMztkPXY/by5tb250aD52P28ubW9udGg6by5p c0ludGVyY2FsYXJ5P28ubW9udGg6by5tb250aC0xOm8ubW9udGgtMTtmb3Io dmFyIG09MDttPGQ7bSsrKXt2YXIgeT1nJjE8PDEyLW0/MzA6Mjk7cys9eX12 YXIgeD1mW28ueWVhci1mWzBdXSxiPW5ldyBEYXRlKHg+PjkmNDA5NSwoeD4+ NSYxNSktMSwoMzEmeCkrcyk7cmV0dXJuIGkueWVhcj1iLmdldEZ1bGxZZWFy KCksaS5tb250aD0xK2IuZ2V0TW9udGgoKSxpLmRheT1iLmdldERhdGUoKSxp fSh0LHMscixvKTtyZXR1cm4gaS50b0pEKGwueWVhcixsLm1vbnRoLGwuZGF5 KX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3ZhciBlPWkuZnJvbUpEKHQpLHI9ZnVu Y3Rpb24odCxlLHIsbil7dmFyIGEsaTtpZigib2JqZWN0Ij09dHlwZW9mIHQp YT10LGk9ZXx8e307ZWxzZXt2YXIgbz0ibnVtYmVyIj09dHlwZW9mIHQmJnQ+ PTE4ODgmJnQ8PTIxMTE7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJTb2xhciB5 ZWFyIG91dHNpZGUgcmFuZ2UgMTg4OC0yMTExIik7dmFyIHM9Im51bWJlciI9 PXR5cGVvZiBlJiZlPj0xJiZlPD0xMjtpZighcyl0aHJvdyBuZXcgRXJyb3Io IlNvbGFyIG1vbnRoIG91dHNpZGUgcmFuZ2UgMSAtIDEyIik7dmFyIGw9Im51 bWJlciI9PXR5cGVvZiByJiZyPj0xJiZyPD0zMTtpZighbCl0aHJvdyBuZXcg RXJyb3IoIlNvbGFyIGRheSBvdXRzaWRlIHJhbmdlIDEgLSAzMSIpO2E9e3ll YXI6dCxtb250aDplLGRheTpyfSxpPW58fHt9fXZhciBjPWZbYS55ZWFyLWZb MF1dLHU9YS55ZWFyPDw5fGEubW9udGg8PDV8YS5kYXk7aS55ZWFyPXU+PWM/ YS55ZWFyOmEueWVhci0xLGM9ZltpLnllYXItZlswXV07dmFyIHAsZD1uZXcg RGF0ZShjPj45JjQwOTUsKGM+PjUmMTUpLTEsMzEmYyksZz1uZXcgRGF0ZShh LnllYXIsYS5tb250aC0xLGEuZGF5KTtwPU1hdGgucm91bmQoKGctZCkvODY0 ZTUpO3ZhciB2LG09aFtpLnllYXItaFswXV07Zm9yKHY9MDt2PDEzO3YrKyl7 dmFyIHk9bSYxPDwxMi12PzMwOjI5O2lmKHA8eSlicmVhaztwLT15fXZhciB4 PW0+PjEzOyF4fHx2PHg/KGkuaXNJbnRlcmNhbGFyeT0hMSxpLm1vbnRoPTEr dik6dj09PXg/KGkuaXNJbnRlcmNhbGFyeT0hMCxpLm1vbnRoPXYpOihpLmlz SW50ZXJjYWxhcnk9ITEsaS5tb250aD12KTtyZXR1cm4gaS5kYXk9MStwLGl9 KGUueWVhcigpLGUubW9udGgoKSxlLmRheSgpKSxuPXRoaXMudG9Nb250aElu ZGV4KHIueWVhcixyLm1vbnRoLHIuaXNJbnRlcmNhbGFyeSk7cmV0dXJuIHRo aXMubmV3RGF0ZShyLnllYXIsbixyLmRheSl9LGZyb21TdHJpbmc6ZnVuY3Rp b24odCl7dmFyIGU9dC5tYXRjaChzKSxyPXRoaXMuX3ZhbGlkYXRlWWVhcigr ZVsxXSksbj0rZVsyXSxhPSEhZVszXSxpPXRoaXMudG9Nb250aEluZGV4KHIs bixhKSxvPStlWzRdO3JldHVybiB0aGlzLm5ld0RhdGUocixpLG8pfSxhZGQ6 ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQueWVhcigpLGE9dC5tb250aCgpLGk9 dGhpcy5pc0ludGVyY2FsYXJ5TW9udGgobixhKSxzPXRoaXMudG9DaGluZXNl TW9udGgobixhKSxsPU9iamVjdC5nZXRQcm90b3R5cGVPZihvLnByb3RvdHlw ZSkuYWRkLmNhbGwodGhpcyx0LGUscik7aWYoInkiPT09cil7dmFyIGM9bC55 ZWFyKCksdT1sLm1vbnRoKCksaD10aGlzLmlzSW50ZXJjYWxhcnlNb250aChj LHMpLGY9aSYmaD90aGlzLnRvTW9udGhJbmRleChjLHMsITApOnRoaXMudG9N b250aEluZGV4KGMscywhMSk7ZiE9PXUmJmwubW9udGgoZil9cmV0dXJuIGx9 fSk7dmFyIHM9L15ccyooLT9cZFxkXGRcZHxcZFxkKVstL10oXGQ/XGQpKFtp SV0/KVstL10oXGQ/XGQpL20sbD0vXlxkP1xkW2lJXT8vbSxjPS9eXHU5NWYw P1x1NTM0MT9bXHU0ZTAwXHU0ZThjXHU0ZTA5XHU1NmRiXHU0ZTk0XHU1MTZk XHU0ZTAzXHU1MTZiXHU0ZTVkXT9cdTY3MDgvbSx1PS9eXHU5NWYwP1x1NTM0 MT9bXHU0ZTAwXHU0ZThjXHU0ZTA5XHU1NmRiXHU0ZTk0XHU1MTZkXHU0ZTAz XHU1MTZiXHU0ZTVkXT8vbTtuLmNhbGVuZGFycy5jaGluZXNlPW87dmFyIGg9 WzE4ODcsNTc4MCw1ODAyLDE5MTU3LDI3NDIsNTAzNTksMTE5OCwyNjQ2LDQ2 Mzc4LDc0NjYsMzQxMiwzMDEyMiw1NDgyLDY3OTQ5LDIzOTYsNTI5NCw0MzU5 Nyw2NzMyLDY5NTQsMzYxODEsMjc3Miw0OTU0LDE4NzgxLDIzOTYsNTQ0Mjcs NTI3NCw2NzMwLDQ3NzgxLDU4MDAsNjg2OCwyMTIxMCw0NzkwLDU5NzAzLDIz NTAsNTI3MCw0NjY2NywzNDAyLDM0OTYsMzgzMjUsMTM4OCw0NzgyLDE4NzM1 LDIzNTAsNTIzNzQsNjgwNCw3NDk4LDQ0NDU3LDI5MDYsMTM4OCwyOTI5NCw0 NzAwLDYzNzg5LDY0NDIsNjgwNCw1NjEzOCw1ODAyLDI3NzIsMzgyMzUsMTIx MCw0Njk4LDIyODI3LDU0MTgsNjMxMjUsMzQ3Niw1ODAyLDQzNzAxLDI0ODQs NTMwMiwyNzIyMywyNjQ2LDcwOTU0LDc0NjYsMzQxMiw1NDY5OCw1NDgyLDI0 MTIsMzgwNjIsNTI5NCwyNjM2LDMyMDM4LDY5NTQsNjAyNDUsMjc3Miw0ODI2 LDQzMzU3LDIzOTQsNTI3NCwzOTUwMSw2NzMwLDcyMzU3LDU4MDAsNTg0NCw1 Mzk3OCw0NzkwLDIzNTgsMzgwMzksNTI3MCw4NzYyNywzNDAyLDM0OTYsNTQ3 MDgsNTQ4NCw0NzgyLDQzMzExLDIzNTAsMzIyMiwyNzk3OCw3NDk4LDY4OTY1 LDI5MDQsNTQ4NCw0NTY3Nyw0NzAwLDY0NDQsMzk1NzMsNjgwNCw2OTg2LDE5 Mjg1LDI3NzIsNjI4MTEsMTIxMCw0Njk4LDQ3NDAzLDU0MTgsNTc4MCwzODU3 MCw1NTQ2LDc2NDY5LDI0MjAsNTMwMiw1MTc5OSwyNjQ2LDU0MTQsMzY1MDEs MzQxMiw1NTQ2LDE4ODY5LDI0MTIsNTQ0NDYsNTI3Niw2NzMyLDQ4NDIyLDY4 MjIsMjkwMCwyODAxMCw0ODI2LDkyNTA5LDIzOTQsNTI3NCw1NTg4Myw2NzMw LDY4MjAsNDc5NTYsNTgxMiwyNzc4LDE4Nzc5LDIzNTgsNjI2MTUsNTI3MCw1 NDUwLDQ2NzU3LDM0OTIsNTU1NiwyNzMxOCw0NzE4LDY3ODg3LDIzNTAsMzIy Miw1MjU1NCw3NDk4LDM0MjgsMzgyNTIsNTQ2OCw0NzAwLDMxMDIyLDY0NDQs NjQxNDksNjgwNCw2OTg2LDQzODYxLDI3NzIsNTMzOCwzNTQyMSwyNjUwLDcw OTU1LDU0MTgsNTc4MCw1NDk1NCw1NTQ2LDI3NDAsMzgwNzQsNTMwMiwyNjQ2 LDI5OTkxLDMzNjYsNjEwMTEsMzQxMiw1NTQ2LDQzNDQ1LDI0MTIsNTI5NCwz NTQwNiw2NzMyLDcyOTk4LDY4MjAsNjk5Niw1MjU4NiwyNzc4LDIzOTYsMzgw NDUsNTI3NCw2Njk4LDIzMzMzLDY4MjAsNjQzMzgsNTgxMiwyNzQ2LDQzMzU1 LDIzNTgsNTI3MCwzOTQ5OSw1NDUwLDc5NTI1LDM0OTIsNTU0OF0sZj1bMTg4 Nyw5NjY3MzIsOTY3MjMxLDk2NzczMyw5NjgyNjUsOTY4NzY2LDk2OTI5Nyw5 Njk3OTgsOTcwMjk4LDk3MDgyOSw5NzEzMzAsOTcxODMwLDk3MjM2Miw5NzI4 NjMsOTczMzk1LDk3Mzg5Niw5NzQzOTcsOTc0OTI4LDk3NTQyOCw5NzU5Mjks OTc2NDYxLDk3Njk2Miw5Nzc0NjIsOTc3OTk0LDk3ODQ5NCw5NzkwMjYsOTc5 NTI2LDk4MDAyNiw5ODA1NTgsOTgxMDU5LDk4MTU1OSw5ODIwOTEsOTgyNTkz LDk4MzEyNCw5ODM2MjQsOTg0MTI0LDk4NDY1Niw5ODUxNTcsOTg1NjU2LDk4 NjE4OSw5ODY2OTAsOTg3MTkxLDk4NzcyMiw5ODgyMjIsOTg4NzUzLDk4OTI1 NCw5ODk3NTQsOTkwMjg2LDk5MDc4OCw5OTEyODgsOTkxODE5LDk5MjMxOSw5 OTI4NTEsOTkzMzUyLDk5Mzg1MSw5OTQzODMsOTk0ODg1LDk5NTM4NSw5OTU5 MTcsOTk2NDE4LDk5NjkxOCw5OTc0NTAsOTk3OTQ5LDk5ODQ4MSw5OTg5ODIs OTk5NDgzLDEwMDAwMTQsMTAwMDUxNSwxMDAxMDE2LDEwMDE1NDgsMTAwMjA0 NywxMDAyNTc4LDEwMDMwODAsMTAwMzU4MCwxMDA0MTExLDEwMDQ2MTMsMTAw NTExMywxMDA1NjQ1LDEwMDYxNDYsMTAwNjY0NSwxMDA3MTc3LDEwMDc2Nzgs MTAwODIwOSwxMDA4NzEwLDEwMDkyMTEsMTAwOTc0MywxMDEwMjQzLDEwMTA3 NDMsMTAxMTI3NSwxMDExNzc1LDEwMTIzMDYsMTAxMjgwNywxMDEzMzA4LDEw MTM4NDAsMTAxNDM0MSwxMDE0ODQxLDEwMTUzNzMsMTAxNTg3NCwxMDE2NDA0 LDEwMTY5MDUsMTAxNzQwNSwxMDE3OTM3LDEwMTg0MzgsMTAxODkzOSwxMDE5 NDcxLDEwMTk5NzIsMTAyMDQ3MSwxMDIxMDAyLDEwMjE1MDMsMTAyMjAzNSwx MDIyNTM1LDEwMjMwMzYsMTAyMzU2OCwxMDI0MDY5LDEwMjQ1NjgsMTAyNTEw MCwxMDI1NjAxLDEwMjYxMDIsMTAyNjYzMywxMDI3MTMzLDEwMjc2NjYsMTAy ODE2NywxMDI4NjY2LDEwMjkxOTgsMTAyOTY5OSwxMDMwMTk5LDEwMzA3MzAs MTAzMTIzMSwxMDMxNzYzLDEwMzIyNjQsMTAzMjc2NCwxMDMzMjk2LDEwMzM3 OTcsMTAzNDI5NywxMDM0ODI4LDEwMzUzMjksMTAzNTgzMCwxMDM2MzYyLDEw MzY4NjEsMTAzNzM5MywxMDM3ODk0LDEwMzgzOTQsMTAzODkyNSwxMDM5NDI3 LDEwMzk5MjcsMTA0MDQ1OSwxMDQwOTU5LDEwNDE0OTEsMTA0MTk5MiwxMDQy NDkyLDEwNDMwMjMsMTA0MzUyNCwxMDQ0MDI0LDEwNDQ1NTYsMTA0NTA1Nywx MDQ1NTU4LDEwNDYwOTAsMTA0NjU5MCwxMDQ3MTIxLDEwNDc2MjIsMTA0ODEy MiwxMDQ4NjU0LDEwNDkxNTQsMTA0OTY1NSwxMDUwMTg3LDEwNTA2ODksMTA1 MTIxOSwxMDUxNzIwLDEwNTIyMjAsMTA1Mjc1MSwxMDUzMjUyLDEwNTM3NTIs MTA1NDI4NCwxMDU0Nzg2LDEwNTUyODUsMTA1NTgxNywxMDU2MzE3LDEwNTY4 NDksMTA1NzM0OSwxMDU3ODUwLDEwNTgzODIsMTA1ODg4MywxMDU5MzgzLDEw NTk5MTUsMTA2MDQxNSwxMDYwOTQ3LDEwNjE0NDcsMTA2MTk0NywxMDYyNDc5 LDEwNjI5ODEsMTA2MzQ4MCwxMDY0MDEyLDEwNjQ1MTQsMTA2NTAxNCwxMDY1 NTQ1LDEwNjYwNDUsMTA2NjU3NywxMDY3MDc4LDEwNjc1NzgsMTA2ODExMCwx MDY4NjExLDEwNjkxMTIsMTA2OTY0MiwxMDcwMTQyLDEwNzA2NzQsMTA3MTE3 NSwxMDcxNjc1LDEwNzIyMDcsMTA3MjcwOSwxMDczMjA5LDEwNzM3NDAsMTA3 NDI0MSwxMDc0NzQxLDEwNzUyNzMsMTA3NTc3MywxMDc2MzA1LDEwNzY4MDcs MTA3NzMwOCwxMDc3ODM5LDEwNzgzNDAsMTA3ODg0MCwxMDc5MzcyLDEwNzk4 NzEsMTA4MDQwMywxMDgwOTA0XX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1h c3NpZ24iOjQ1Nn1dLDU1NzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4u L21haW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3Ro aXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJl Z2lvbmFsT3B0aW9uc1siIl19aS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVu ZGFyLGEoaS5wcm90b3R5cGUse25hbWU6IkNvcHRpYyIsamRFcG9jaDoxODI1 MDI5LjUsZGF5c1Blck1vbnRoOlszMCwzMCwzMCwzMCwzMCwzMCwzMCwzMCwz MCwzMCwzMCwzMCw1XSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZpcnN0 TW9udGg6MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJD b3B0aWMiLGVwb2NoczpbIkJBTSIsIkFNIl0sbW9udGhOYW1lczpbIlRob3V0 IiwiUGFvcGkiLCJIYXRob3IiLCJLb2lhayIsIlRvYmkiLCJNZXNoaXIiLCJQ YXJlbWhhdCIsIlBhcmVtb3VkZSIsIlBhc2hvbnMiLCJQYW9uaSIsIkVwaXAi LCJNZXNvcmkiLCJQaSBLb2dpIEVuYXZvdCJdLG1vbnRoTmFtZXNTaG9ydDpb IlRobyIsIlBhbyIsIkhhdGgiLCJLb2kiLCJUb2IiLCJNZXNoIiwiUGF0Iiwi UGFkIiwiUGFzaCIsIlBhbyIsIkVwaSIsIk1lc28iLCJQaUsiXSxkYXlOYW1l czpbIlRreXJpYWthIiwiUGVzbmF1IiwiUHNob21lbnQiLCJQZWZ0b291Iiwi UHRpb3UiLCJQc29vdSIsIlBzYWJiYXRvbiJdLGRheU5hbWVzU2hvcnQ6WyJU a3kiLCJQZXMiLCJQc2giLCJQZWYiLCJQdGkiLCJQc28iLCJQc2EiXSxkYXlO YW1lc01pbjpbIlRrIiwiUGVzIiwiUHNoIiwiUGVmIiwiUHQiLCJQc28iLCJQ c2EiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJkZC9tbS95eXl5IixmaXJz dERheTowLGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4u bG9jYWwuaW52YWxpZFllYXIpO3JldHVybih0PWUueWVhcigpKyhlLnllYXIo KTwwPzE6MCkpJTQ9PTN8fHQlND09LTF9LG1vbnRoc0luWWVhcjpmdW5jdGlv bih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRo aXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXJ8fG4ucmVnaW9uYWxPcHRp b25zWyIiXS5pbnZhbGlkWWVhciksMTN9LHdlZWtPZlllYXI6ZnVuY3Rpb24o dCxlLHIpe3ZhciBuPXRoaXMubmV3RGF0ZSh0LGUscik7cmV0dXJuIG4uYWRk KC1uLmRheU9mV2VlaygpLCJkIiksTWF0aC5mbG9vcigobi5kYXlPZlllYXIo KS0xKS83KSsxfSxkYXlzSW5Nb250aDpmdW5jdGlvbih0LGUpe3ZhciByPXRo aXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRN b250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1vbnRoW3IubW9udGgoKS0xXSso MTM9PT1yLm1vbnRoKCkmJnRoaXMubGVhcFllYXIoci55ZWFyKCkpPzE6MCl9 LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybih0aGlzLmRheU9mV2Vl ayh0LGUscil8fDcpPDZ9LHRvSkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRo aXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERhdGUpO3JldHVy bih0PWEueWVhcigpKTwwJiZ0KyssYS5kYXkoKSszMCooYS5tb250aCgpLTEp KzM2NSoodC0xKStNYXRoLmZsb29yKHQvNCkrdGhpcy5qZEVwb2NoLTF9LGZy b21KRDpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmZsb29yKHQpKy41LXRoaXMu amRFcG9jaCxyPU1hdGguZmxvb3IoKGUtTWF0aC5mbG9vcigoZSszNjYpLzE0 NjEpKS8zNjUpKzE7cjw9MCYmci0tLGU9TWF0aC5mbG9vcih0KSsuNS10aGlz Lm5ld0RhdGUociwxLDEpLnRvSkQoKTt2YXIgbj1NYXRoLmZsb29yKGUvMzAp KzEsYT1lLTMwKihuLTEpKzE7cmV0dXJuIHRoaXMubmV3RGF0ZShyLG4sYSl9 fSksbi5jYWxlbmRhcnMuY29wdGljPWl9LHsiLi4vbWFpbiI6NTcwLCJvYmpl Y3QtYXNzaWduIjo0NTZ9XSw1NTg6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10 KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWduIik7ZnVuY3Rpb24gaSh0 KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhp cy5yZWdpb25hbE9wdGlvbnNbIiJdfWkucHJvdG90eXBlPW5ldyBuLmJhc2VD YWxlbmRhcixhKGkucHJvdG90eXBlLHtuYW1lOiJEaXNjd29ybGQiLGpkRXBv Y2g6MTcyMTQyNS41LGRheXNQZXJNb250aDpbMTYsMzIsMzIsMzIsMzIsMzIs MzIsMzIsMzIsMzIsMzIsMzIsMzJdLGhhc1llYXJaZXJvOiExLG1pbk1vbnRo OjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6 e25hbWU6IkRpc2N3b3JsZCIsZXBvY2hzOlsiQlVDIiwiVUMiXSxtb250aE5h bWVzOlsiSWNrIiwiT2ZmbGUiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwi LCJNYXkiLCJKdW5lIiwiR3J1bmUiLCJBdWd1c3QiLCJTcHVuZSIsIlNla3Rv YmVyIiwiRW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIklj ayIsIk9mZiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkdydSIs IkF1ZyIsIlNwdSIsIlNlayIsIkVtYiIsIkRlYyJdLGRheU5hbWVzOlsiU3Vu ZGF5IiwiT2N0ZWRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXki LCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9y dDpbIlN1biIsIk9jdCIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIs IlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJPYyIsIk1vIiwiVHUiLCJXZSIs IlRoIiwiRnIiLCJTYSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6Inl5eXkv bW0vZGQiLGZpcnN0RGF5OjIsaXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlv bih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRo aXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpLCExfSxtb250aHNJblll YXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5t aW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKSwxM30s ZGF5c0luWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUo dCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFll YXIpLDQwMH0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhp cy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoLW4uZGF5T2ZXZWVrKCks ImQiKSxNYXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzgpKzF9LGRheXNJ bk1vbnRoOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxl LHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhp cy5kYXlzUGVyTW9udGhbci5tb250aCgpLTFdfSxkYXlzSW5XZWVrOmZ1bmN0 aW9uKCl7cmV0dXJuIDh9LGRheU9mV2VlazpmdW5jdGlvbih0LGUscil7cmV0 dXJuKHRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERhdGUp LmRheSgpKzEpJTh9LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRo aXMuZGF5T2ZXZWVrKHQsZSxyKTtyZXR1cm4gbj49MiYmbjw9Nn0sZXh0cmFJ bmZvOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUs cixuLmxvY2FsLmludmFsaWREYXRlKTtyZXR1cm57Y2VudHVyeTpvW01hdGgu Zmxvb3IoKGEueWVhcigpLTEpLzEwMCkrMV18fCIifX0sdG9KRDpmdW5jdGlv bih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5p bnZhbGlkRGF0ZSk7cmV0dXJuIHQ9YS55ZWFyKCkrKGEueWVhcigpPDA/MTow KSxlPWEubW9udGgoKSwocj1hLmRheSgpKSsoZT4xPzE2OjApKyhlPjI/MzIq KGUtMik6MCkrNDAwKih0LTEpK3RoaXMuamRFcG9jaC0xfSxmcm9tSkQ6ZnVu Y3Rpb24odCl7dD1NYXRoLmZsb29yKHQrLjUpLU1hdGguZmxvb3IodGhpcy5q ZEVwb2NoKS0xO3ZhciBlPU1hdGguZmxvb3IodC80MDApKzE7dC09NDAwKihl LTEpLHQrPXQ+MTU/MTY6MDt2YXIgcj1NYXRoLmZsb29yKHQvMzIpKzEsbj10 LTMyKihyLTEpKzE7cmV0dXJuIHRoaXMubmV3RGF0ZShlPD0wP2UtMTplLHIs bil9fSk7dmFyIG89ezIwOiJGcnVpdGJhdCIsMjE6IkFuY2hvdnkifTtuLmNh bGVuZGFycy5kaXNjd29ybGQ9aX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1h c3NpZ24iOjQ1Nn1dLDU1OTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4u L21haW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3Ro aXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJl Z2lvbmFsT3B0aW9uc1siIl19aS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVu ZGFyLGEoaS5wcm90b3R5cGUse25hbWU6IkV0aGlvcGlhbiIsamRFcG9jaDox NzI0MjIwLjUsZGF5c1Blck1vbnRoOlszMCwzMCwzMCwzMCwzMCwzMCwzMCwz MCwzMCwzMCwzMCwzMCw1XSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZp cnN0TW9udGg6MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1l OiJFdGhpb3BpYW4iLGVwb2NoczpbIkJFRSIsIkVFIl0sbW9udGhOYW1lczpb Ik1lc2tlcmVtIiwiVGlrZW1ldCIsIkhpZGFyIiwiVGFoZXNhcyIsIlRpciIs Illla2F0aXQiLCJNZWdhYml0IiwiTWlhemlhIiwiR2VuYm90IiwiU2VuZSIs IkhhbWxlIiwiTmVoYXNlIiwiUGFndW1lIl0sbW9udGhOYW1lc1Nob3J0Olsi TWVzIiwiVGlrIiwiSGlkIiwiVGFoIiwiVGlyIiwiWWVrIiwiTWVnIiwiTWlh IiwiR2VuIiwiU2VuIiwiSGFtIiwiTmVoIiwiUGFnIl0sZGF5TmFtZXM6WyJF aHVkIiwiU2Vnbm8iLCJNYWtzZWdubyIsIklyb2IiLCJIYW11cyIsIkFyYiIs IktpZGFtZSJdLGRheU5hbWVzU2hvcnQ6WyJFaHUiLCJTZWciLCJNYWsiLCJJ cm8iLCJIYW0iLCJBcmIiLCJLaWQiXSxkYXlOYW1lc01pbjpbIkVoIiwiU2Ui LCJNYSIsIklyIiwiSGEiLCJBciIsIktpIl0sZGlnaXRzOm51bGwsZGF0ZUZv cm1hdDoiZGQvbW0veXl5eSIsZmlyc3REYXk6MCxpc1JUTDohMX19LGxlYXBZ ZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5t aW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKTtyZXR1 cm4odD1lLnllYXIoKSsoZS55ZWFyKCk8MD8xOjApKSU0PT0zfHx0JTQ9PS0x fSxtb250aHNJblllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlk YXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFs aWRZZWFyfHxuLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZFllYXIpLDEz fSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0Rh dGUodCxlLHIpO3JldHVybiBuLmFkZCgtbi5kYXlPZldlZWsoKSwiZCIpLE1h dGguZmxvb3IoKG4uZGF5T2ZZZWFyKCktMSkvNykrMX0sZGF5c0luTW9udGg6 ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5t aW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQ ZXJNb250aFtyLm1vbnRoKCktMV0rKDEzPT09ci5tb250aCgpJiZ0aGlzLmxl YXBZZWFyKHIueWVhcigpKT8xOjApfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4odGhpcy5kYXlPZldlZWsodCxlLHIpfHw3KTw2fSx0b0pEOmZ1 bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxv Y2FsLmludmFsaWREYXRlKTtyZXR1cm4odD1hLnllYXIoKSk8MCYmdCsrLGEu ZGF5KCkrMzAqKGEubW9udGgoKS0xKSszNjUqKHQtMSkrTWF0aC5mbG9vcih0 LzQpK3RoaXMuamRFcG9jaC0xfSxmcm9tSkQ6ZnVuY3Rpb24odCl7dmFyIGU9 TWF0aC5mbG9vcih0KSsuNS10aGlzLmpkRXBvY2gscj1NYXRoLmZsb29yKChl LU1hdGguZmxvb3IoKGUrMzY2KS8xNDYxKSkvMzY1KSsxO3I8PTAmJnItLSxl PU1hdGguZmxvb3IodCkrLjUtdGhpcy5uZXdEYXRlKHIsMSwxKS50b0pEKCk7 dmFyIG49TWF0aC5mbG9vcihlLzMwKSsxLGE9ZS0zMCoobi0xKSsxO3JldHVy biB0aGlzLm5ld0RhdGUocixuLGEpfX0pLG4uY2FsZW5kYXJzLmV0aGlvcGlh bj1pfSx7Ii4uL21haW4iOjU3MCwib2JqZWN0LWFzc2lnbiI6NDU2fV0sNTYw OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGE9dCgib2Jq ZWN0LWFzc2lnbiIpO2Z1bmN0aW9uIGkodCl7dGhpcy5sb2NhbD10aGlzLnJl Z2lvbmFsT3B0aW9uc1t0fHwiIl18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIi XX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHQtZSpNYXRoLmZsb29yKHQvZSl9 aS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGEoaS5wcm90b3R5cGUs e25hbWU6IkhlYnJldyIsamRFcG9jaDozNDc5OTUuNSxkYXlzUGVyTW9udGg6 WzMwLDI5LDMwLDI5LDMwLDI5LDMwLDI5LDMwLDI5LDMwLDI5LDI5XSxoYXNZ ZWFyWmVybzohMSxtaW5Nb250aDoxLGZpcnN0TW9udGg6NyxtaW5EYXk6MSxy ZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJIZWJyZXciLGVwb2NoczpbIkJB TSIsIkFNIl0sbW9udGhOYW1lczpbIk5pc2FuIiwiSXlhciIsIlNpdmFuIiwi VGFtbXV6IiwiQXYiLCJFbHVsIiwiVGlzaHJlaSIsIkNoZXNodmFuIiwiS2lz bGV2IiwiVGV2ZXQiLCJTaGV2YXQiLCJBZGFyIiwiQWRhciBJSSJdLG1vbnRo TmFtZXNTaG9ydDpbIk5pcyIsIkl5YSIsIlNpdiIsIlRhbSIsIkF2IiwiRWx1 IiwiVGlzIiwiQ2hlIiwiS2lzIiwiVGV2IiwiU2hlIiwiQWRhIiwiQWQyIl0s ZGF5TmFtZXM6WyJZb20gUmlzaG9uIiwiWW9tIFNoZW5pIiwiWW9tIFNobGlz aGkiLCJZb20gUmV2aSdpIiwiWW9tIENoYW1pc2hpIiwiWW9tIFNoaXNoaSIs IllvbSBTaGFiYmF0Il0sZGF5TmFtZXNTaG9ydDpbIlJpcyIsIlNoZSIsIlNo bCIsIlJldiIsIkNoYSIsIlNoaSIsIlNoYSJdLGRheU5hbWVzTWluOlsiUmki LCJTaGUiLCJTaGwiLCJSZSIsIkNoIiwiU2hpIiwiU2hhIl0sZGlnaXRzOm51 bGwsZGF0ZUZvcm1hdDoiZGQvbW0veXl5eSIsZmlyc3REYXk6MCxpc1JUTDoh MX19LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlkYXRl KHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZ ZWFyKTtyZXR1cm4gdGhpcy5fbGVhcFllYXIoZS55ZWFyKCkpfSxfbGVhcFll YXI6ZnVuY3Rpb24odCl7cmV0dXJuIG8oNyoodD10PDA/dCsxOnQpKzEsMTkp PDd9LG1vbnRoc0luWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFs aWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52 YWxpZFllYXIpLHRoaXMuX2xlYXBZZWFyKHQueWVhcj90LnllYXIoKTp0KT8x MzoxMn0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5u ZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoLW4uZGF5T2ZXZWVrKCksImQi KSxNYXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJblll YXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dGhpcy5fdmFsaWRhdGUodCx0aGlz Lm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpLnll YXIoKSx0aGlzLnRvSkQoLTE9PT10PzE6dCsxLDcsMSktdGhpcy50b0pEKHQs NywxKX0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC55ZWFy JiYoZT10Lm1vbnRoKCksdD10LnllYXIoKSksdGhpcy5fdmFsaWRhdGUodCxl LHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKSwxMj09PWUmJnRo aXMubGVhcFllYXIodCk/MzA6OD09PWUmJjU9PT1vKHRoaXMuZGF5c0luWWVh cih0KSwxMCk/MzA6OT09PWUmJjM9PT1vKHRoaXMuZGF5c0luWWVhcih0KSwx MCk/Mjk6dGhpcy5kYXlzUGVyTW9udGhbZS0xXX0sd2Vla0RheTpmdW5jdGlv bih0LGUscil7cmV0dXJuIDYhPT10aGlzLmRheU9mV2Vlayh0LGUscil9LGV4 dHJhSW5mbzpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUo dCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7cmV0dXJue3llYXJUeXBlOih0 aGlzLmxlYXBZZWFyKGEpPyJlbWJvbGlzbWljIjoiY29tbW9uIikrIiAiK1si ZGVmaWNpZW50IiwicmVndWxhciIsImNvbXBsZXRlIl1bdGhpcy5kYXlzSW5Z ZWFyKGEpJTEwLTNdfX0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhp cy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7dD1hLnll YXIoKSxlPWEubW9udGgoKSxyPWEuZGF5KCk7dmFyIGk9dDw9MD90KzE6dCxv PXRoaXMuamRFcG9jaCt0aGlzLl9kZWxheTEoaSkrdGhpcy5fZGVsYXkyKGkp K3IrMTtpZihlPDcpe2Zvcih2YXIgcz03O3M8PXRoaXMubW9udGhzSW5ZZWFy KHQpO3MrKylvKz10aGlzLmRheXNJbk1vbnRoKHQscyk7Zm9yKHM9MTtzPGU7 cysrKW8rPXRoaXMuZGF5c0luTW9udGgodCxzKX1lbHNlIGZvcihzPTc7czxl O3MrKylvKz10aGlzLmRheXNJbk1vbnRoKHQscyk7cmV0dXJuIG99LF9kZWxh eTE6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5mbG9vcigoMjM1KnQtMjM0KS8x OSkscj0xMjA4NCsxMzc1MyplLG49MjkqZStNYXRoLmZsb29yKHIvMjU5MjAp O3JldHVybiBvKDMqKG4rMSksNyk8MyYmbisrLG59LF9kZWxheTI6ZnVuY3Rp b24odCl7dmFyIGU9dGhpcy5fZGVsYXkxKHQtMSkscj10aGlzLl9kZWxheTEo dCk7cmV0dXJuIHRoaXMuX2RlbGF5MSh0KzEpLXI9PTM1Nj8yOnItZT09Mzgy PzE6MH0sZnJvbUpEOmZ1bmN0aW9uKHQpe3Q9TWF0aC5mbG9vcih0KSsuNTtm b3IodmFyIGU9TWF0aC5mbG9vcig5ODQ5NioodC10aGlzLmpkRXBvY2gpLzM1 OTc1MzUxKS0xO3Q+PXRoaXMudG9KRCgtMT09PWU/MTplKzEsNywxKTspZSsr O2Zvcih2YXIgcj10PHRoaXMudG9KRChlLDEsMSk/NzoxO3Q+dGhpcy50b0pE KGUscix0aGlzLmRheXNJbk1vbnRoKGUscikpOylyKys7dmFyIG49dC10aGlz LnRvSkQoZSxyLDEpKzE7cmV0dXJuIHRoaXMubmV3RGF0ZShlLHIsbil9fSks bi5jYWxlbmRhcnMuaGVicmV3PWl9LHsiLi4vbWFpbiI6NTcwLCJvYmplY3Qt YXNzaWduIjo0NTZ9XSw1NjE6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIu Li9tYWluIiksYT10KCJvYmplY3QtYXNzaWduIik7ZnVuY3Rpb24gaSh0KXt0 aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhpcy5y ZWdpb25hbE9wdGlvbnNbIiJdfWkucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxl bmRhcixhKGkucHJvdG90eXBlLHtuYW1lOiJJc2xhbWljIixqZEVwb2NoOjE5 NDg0MzkuNSxkYXlzUGVyTW9udGg6WzMwLDI5LDMwLDI5LDMwLDI5LDMwLDI5 LDMwLDI5LDMwLDI5XSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZpcnN0 TW9udGg6MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJJ c2xhbWljIixlcG9jaHM6WyJCSCIsIkFIIl0sbW9udGhOYW1lczpbIk11aGFy cmFtIiwiU2FmYXIiLCJSYWJpJyBhbC1hd3dhbCIsIlJhYmknIGFsLXRoYW5p IiwiSnVtYWRhIGFsLWF3d2FsIiwiSnVtYWRhIGFsLXRoYW5pIiwiUmFqYWIi LCJTaGEnYWJhbiIsIlJhbWFkYW4iLCJTaGF3d2FsIiwiRGh1IGFsLVFpJ2Rh aCIsIkRodSBhbC1IaWpqYWgiXSxtb250aE5hbWVzU2hvcnQ6WyJNdWgiLCJT YWYiLCJSYWIxIiwiUmFiMiIsIkp1bTEiLCJKdW0yIiwiUmFqIiwiU2hhJyIs IlJhbSIsIlNoYXciLCJEaHVRIiwiRGh1SCJdLGRheU5hbWVzOlsiWWF3bSBh bC1haGFkIiwiWWF3bSBhbC1pdGhuYXluIiwiWWF3bSBhdGgtdGh1bGFhdGhh YSciLCJZYXdtIGFsLWFyYmknYWEnIiwiWWF3bSBhbC1raGFtXHUwMTJicyIs Illhd20gYWwtanVtJ2EiLCJZYXdtIGFzLXNhYnQiXSxkYXlOYW1lc1Nob3J0 OlsiQWhhIiwiSXRoIiwiVGh1IiwiQXJiIiwiS2hhIiwiSnVtIiwiU2FiIl0s ZGF5TmFtZXNNaW46WyJBaCIsIkl0IiwiVGgiLCJBciIsIktoIiwiSnUiLCJT YSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6Inl5eXkvbW0vZGQiLGZpcnN0 RGF5OjYsaXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4o MTEqdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5 LG4ubG9jYWwuaW52YWxpZFllYXIpLnllYXIoKSsxNCklMzA8MTF9LHdlZWtP ZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubmV3RGF0ZSh0LGUs cik7cmV0dXJuIG4uYWRkKC1uLmRheU9mV2VlaygpLCJkIiksTWF0aC5mbG9v cigobi5kYXlPZlllYXIoKS0xKS83KSsxfSxkYXlzSW5ZZWFyOmZ1bmN0aW9u KHQpe3JldHVybiB0aGlzLmxlYXBZZWFyKHQpPzM1NTozNTR9LGRheXNJbk1v bnRoOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRo aXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5k YXlzUGVyTW9udGhbci5tb250aCgpLTFdKygxMj09PXIubW9udGgoKSYmdGhp cy5sZWFwWWVhcihyLnllYXIoKSk/MTowKX0sd2Vla0RheTpmdW5jdGlvbih0 LGUscil7cmV0dXJuIDUhPT10aGlzLmRheU9mV2Vlayh0LGUscil9LHRvSkQ6 ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4u bG9jYWwuaW52YWxpZERhdGUpO3JldHVybiB0PWEueWVhcigpLGU9YS5tb250 aCgpLHQ9dDw9MD90KzE6dCwocj1hLmRheSgpKStNYXRoLmNlaWwoMjkuNSoo ZS0xKSkrMzU0Kih0LTEpK01hdGguZmxvb3IoKDMrMTEqdCkvMzApK3RoaXMu amRFcG9jaC0xfSxmcm9tSkQ6ZnVuY3Rpb24odCl7dD1NYXRoLmZsb29yKHQp Ky41O3ZhciBlPU1hdGguZmxvb3IoKDMwKih0LXRoaXMuamRFcG9jaCkrMTA2 NDYpLzEwNjMxKTtlPWU8PTA/ZS0xOmU7dmFyIHI9TWF0aC5taW4oMTIsTWF0 aC5jZWlsKCh0LTI5LXRoaXMudG9KRChlLDEsMSkpLzI5LjUpKzEpLG49dC10 aGlzLnRvSkQoZSxyLDEpKzE7cmV0dXJuIHRoaXMubmV3RGF0ZShlLHIsbil9 fSksbi5jYWxlbmRhcnMuaXNsYW1pYz1pfSx7Ii4uL21haW4iOjU3MCwib2Jq ZWN0LWFzc2lnbiI6NDU2fV0sNTYyOltmdW5jdGlvbih0LGUscil7dmFyIG49 dCgiLi4vbWFpbiIpLGE9dCgib2JqZWN0LWFzc2lnbiIpO2Z1bmN0aW9uIGko dCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0fHwiIl18fHRo aXMucmVnaW9uYWxPcHRpb25zWyIiXX1pLnByb3RvdHlwZT1uZXcgbi5iYXNl Q2FsZW5kYXIsYShpLnByb3RvdHlwZSx7bmFtZToiSnVsaWFuIixqZEVwb2No OjE3MjE0MjMuNSxkYXlzUGVyTW9udGg6WzMxLDI4LDMxLDMwLDMxLDMwLDMx LDMxLDMwLDMxLDMwLDMxXSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZp cnN0TW9udGg6MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1l OiJKdWxpYW4iLGVwb2NoczpbIkJDIiwiQUQiXSxtb250aE5hbWVzOlsiSmFu dWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUi LCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVt YmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIi LCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJP Y3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIs IlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNh dHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldl ZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIs IlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSxkaWdpdHM6bnVsbCxkYXRlRm9y bWF0OiJtbS9kZC95eXl5IixmaXJzdERheTowLGlzUlRMOiExfX0sbGVhcFll YXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1p bk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpO3JldHVy bih0PWUueWVhcigpPDA/ZS55ZWFyKCkrMTplLnllYXIoKSklND09MH0sd2Vl a09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRlKHQs ZSxyKTtyZXR1cm4gbi5hZGQoNC0obi5kYXlPZldlZWsoKXx8NyksImQiKSxN YXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJbk1vbnRo OmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMu bWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5kYXlz UGVyTW9udGhbci5tb250aCgpLTFdKygyPT09ci5tb250aCgpJiZ0aGlzLmxl YXBZZWFyKHIueWVhcigpKT8xOjApfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4odGhpcy5kYXlPZldlZWsodCxlLHIpfHw3KTw2fSx0b0pEOmZ1 bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxv Y2FsLmludmFsaWREYXRlKTtyZXR1cm4gdD1hLnllYXIoKSxlPWEubW9udGgo KSxyPWEuZGF5KCksdDwwJiZ0KyssZTw9MiYmKHQtLSxlKz0xMiksTWF0aC5m bG9vcigzNjUuMjUqKHQrNDcxNikpK01hdGguZmxvb3IoMzAuNjAwMSooZSsx KSkrci0xNTI0LjV9LGZyb21KRDpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmZs b29yKHQrLjUpKzE1MjQscj1NYXRoLmZsb29yKChlLTEyMi4xKS8zNjUuMjUp LG49TWF0aC5mbG9vcigzNjUuMjUqciksYT1NYXRoLmZsb29yKChlLW4pLzMw LjYwMDEpLGk9YS1NYXRoLmZsb29yKGE8MTQ/MToxMyksbz1yLU1hdGguZmxv b3IoaT4yPzQ3MTY6NDcxNSkscz1lLW4tTWF0aC5mbG9vcigzMC42MDAxKmEp O3JldHVybiBvPD0wJiZvLS0sdGhpcy5uZXdEYXRlKG8saSxzKX19KSxuLmNh bGVuZGFycy5qdWxpYW49aX0seyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3Np Z24iOjQ1Nn1dLDU2MzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21h aW4iKSxhPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3RoaXMu bG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lv bmFsT3B0aW9uc1siIl19ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0LWUqTWF0 aC5mbG9vcih0L2UpfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbyh0LTEsZSkr MX1pLnByb3RvdHlwZT1uZXcgbi5iYXNlQ2FsZW5kYXIsYShpLnByb3RvdHlw ZSx7bmFtZToiTWF5YW4iLGpkRXBvY2g6NTg0MjgyLjUsaGFzWWVhclplcm86 ITAsbWluTW9udGg6MCxmaXJzdE1vbnRoOjAsbWluRGF5OjAscmVnaW9uYWxP cHRpb25zOnsiIjp7bmFtZToiTWF5YW4iLGVwb2NoczpbIiIsIiJdLG1vbnRo TmFtZXM6WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5 IiwiMTAiLCIxMSIsIjEyIiwiMTMiLCIxNCIsIjE1IiwiMTYiLCIxNyJdLG1v bnRoTmFtZXNTaG9ydDpbIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3 IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiIs IjE3Il0sZGF5TmFtZXM6WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2Iiwi NyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiLCIxNCIsIjE1IiwiMTYi LCIxNyIsIjE4IiwiMTkiXSxkYXlOYW1lc1Nob3J0OlsiMCIsIjEiLCIyIiwi MyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEz IiwiMTQiLCIxNSIsIjE2IiwiMTciLCIxOCIsIjE5Il0sZGF5TmFtZXNNaW46 WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAi LCIxMSIsIjEyIiwiMTMiLCIxNCIsIjE1IiwiMTYiLCIxNyIsIjE4IiwiMTki XSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJZWVlZLm0uZCIsZmlyc3REYXk6 MCxpc1JUTDohMSxoYWFiTW9udGhzOlsiUG9wIiwiVW8iLCJaaXAiLCJab3R6 IiwiVHplYyIsIlh1bCIsIllheGtpbiIsIk1vbCIsIkNoZW4iLCJZYXgiLCJa YWMiLCJDZWgiLCJNYWMiLCJLYW5raW4iLCJNdWFuIiwiUGF4IiwiS2F5YWIi LCJDdW1rdSIsIlVheWViIl0sdHpvbGtpbk1vbnRoczpbIkltaXgiLCJJayIs IkFrYmFsIiwiS2FuIiwiQ2hpY2NoYW4iLCJDaW1pIiwiTWFuaWsiLCJMYW1h dCIsIk11bHVjIiwiT2MiLCJDaHVlbiIsIkViIiwiQmVuIiwiSXgiLCJNZW4i LCJDaWIiLCJDYWJhbiIsIkV0em5hYiIsIkNhdWFjIiwiQWhhdSJdfX0sbGVh cFllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhp cy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKSwh MX0sZm9ybWF0WWVhcjpmdW5jdGlvbih0KXt0PXRoaXMuX3ZhbGlkYXRlKHQs dGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFy KS55ZWFyKCk7dmFyIGU9TWF0aC5mbG9vcih0LzQwMCk7cmV0dXJuIHQlPTQw MCx0Kz10PDA/NDAwOjAsZSsiLiIrTWF0aC5mbG9vcih0LzIwKSsiLiIrdCUy MH0sZm9yWWVhcjpmdW5jdGlvbih0KXtpZigodD10LnNwbGl0KCIuIikpLmxl bmd0aDwzKXRocm93IkludmFsaWQgTWF5YW4geWVhciI7Zm9yKHZhciBlPTAs cj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj1wYXJzZUludCh0W3JdLDEwKTtp ZihNYXRoLmFicyhuKT4xOXx8cj4wJiZuPDApdGhyb3ciSW52YWxpZCBNYXlh biB5ZWFyIjtlPTIwKmUrbn1yZXR1cm4gZX0sbW9udGhzSW5ZZWFyOmZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgs dGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhciksMTh9LHdlZWtPZlll YXI6ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LGUs cixuLmxvY2FsLmludmFsaWREYXRlKSwwfSxkYXlzSW5ZZWFyOmZ1bmN0aW9u KHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhp cy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhciksMzYwfSxkYXlzSW5Nb250 aDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LGUsdGhp cy5taW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpLDIwfSxkYXlzSW5XZWVr OmZ1bmN0aW9uKCl7cmV0dXJuIDV9LGRheU9mV2VlazpmdW5jdGlvbih0LGUs cil7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxp ZERhdGUpLmRheSgpfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSksITB9 LGV4dHJhSW5mbzpmdW5jdGlvbih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRh dGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSkudG9KRCgpLGk9dGhpcy5f dG9IYWFiKGEpLG89dGhpcy5fdG9Uem9sa2luKGEpO3JldHVybntoYWFiTW9u dGhOYW1lOnRoaXMubG9jYWwuaGFhYk1vbnRoc1tpWzBdLTFdLGhhYWJNb250 aDppWzBdLGhhYWJEYXk6aVsxXSx0em9sa2luRGF5TmFtZTp0aGlzLmxvY2Fs LnR6b2xraW5Nb250aHNbb1swXS0xXSx0em9sa2luRGF5Om9bMF0sdHpvbGtp blRyZWNlbmE6b1sxXX19LF90b0hhYWI6ZnVuY3Rpb24odCl7dmFyIGU9bygo dC09dGhpcy5qZEVwb2NoKSs4KzM0MCwzNjUpO3JldHVybltNYXRoLmZsb29y KGUvMjApKzEsbyhlLDIwKV19LF90b1R6b2xraW46ZnVuY3Rpb24odCl7cmV0 dXJuW3MoKHQtPXRoaXMuamRFcG9jaCkrMjAsMjApLHModCs0LDEzKV19LHRv SkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsZSxy LG4ubG9jYWwuaW52YWxpZERhdGUpO3JldHVybiBhLmRheSgpKzIwKmEubW9u dGgoKSszNjAqYS55ZWFyKCkrdGhpcy5qZEVwb2NofSxmcm9tSkQ6ZnVuY3Rp b24odCl7dD1NYXRoLmZsb29yKHQpKy41LXRoaXMuamRFcG9jaDt2YXIgZT1N YXRoLmZsb29yKHQvMzYwKTt0JT0zNjAsdCs9dDwwPzM2MDowO3ZhciByPU1h dGguZmxvb3IodC8yMCksbj10JTIwO3JldHVybiB0aGlzLm5ld0RhdGUoZSxy LG4pfX0pLG4uY2FsZW5kYXJzLm1heWFuPWl9LHsiLi4vbWFpbiI6NTcwLCJv YmplY3QtYXNzaWduIjo0NTZ9XSw1NjQ6W2Z1bmN0aW9uKHQsZSxyKXt2YXIg bj10KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWduIik7ZnVuY3Rpb24g aSh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8 dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfWkucHJvdG90eXBlPW5ldyBuLmJh c2VDYWxlbmRhcjt2YXIgbz1uLmluc3RhbmNlKCJncmVnb3JpYW4iKTthKGku cHJvdG90eXBlLHtuYW1lOiJOYW5ha3NoYWhpIixqZEVwb2NoOjIyNTc2NzMu NSxkYXlzUGVyTW9udGg6WzMxLDMxLDMxLDMxLDMxLDMwLDMwLDMwLDMwLDMw LDMwLDMwXSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZpcnN0TW9udGg6 MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJOYW5ha3No YWhpIixlcG9jaHM6WyJCTiIsIkFOIl0sbW9udGhOYW1lczpbIkNoZXQiLCJW YWlzYWtoIiwiSmV0aCIsIkhhcmgiLCJTYXdhbiIsIkJoYWRvbiIsIkFzc3Ui LCJLYXRhayIsIk1hZ2hhciIsIlBvaCIsIk1hZ2giLCJQaGFndW4iXSxtb250 aE5hbWVzU2hvcnQ6WyJDaGUiLCJWYWkiLCJKZXQiLCJIYXIiLCJTYXciLCJC aGEiLCJBc3MiLCJLYXQiLCJNZ3IiLCJQb2giLCJNZ2giLCJQaGEiXSxkYXlO YW1lczpbIlNvbXZhYXIiLCJNYW5nYWx2YXIiLCJCdWRodmFhciIsIlZlZXJ2 YWFyIiwiU2h1a2FydmFhciIsIlNhbmljaGFydmFhciIsIkV0dmFhciJdLGRh eU5hbWVzU2hvcnQ6WyJTb20iLCJNYW5nYWwiLCJCdWRoIiwiVmVlciIsIlNo dWthciIsIlNhbmljaGFyIiwiRXQiXSxkYXlOYW1lc01pbjpbIlNvIiwiTWEi LCJCdSIsIlZlIiwiU2giLCJTYSIsIkV0Il0sZGlnaXRzOm51bGwsZGF0ZUZv cm1hdDoiZGQtbW0teXl5eSIsZmlyc3REYXk6MCxpc1JUTDohMX19LGxlYXBZ ZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5t aW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyfHxuLnJl Z2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZFllYXIpO3JldHVybiBvLmxlYXBZ ZWFyKGUueWVhcigpKyhlLnllYXIoKTwxPzE6MCkrMTQ2OSl9LHdlZWtPZlll YXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubmV3RGF0ZSh0LGUscik7 cmV0dXJuIG4uYWRkKDEtKG4uZGF5T2ZXZWVrKCl8fDcpLCJkIiksTWF0aC5m bG9vcigobi5kYXlPZlllYXIoKS0xKS83KSsxfSxkYXlzSW5Nb250aDpmdW5j dGlvbih0LGUpe3ZhciByPXRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRh eSxuLmxvY2FsLmludmFsaWRNb250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1v bnRoW3IubW9udGgoKS0xXSsoMTI9PT1yLm1vbnRoKCkmJnRoaXMubGVhcFll YXIoci55ZWFyKCkpPzE6MCl9LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3Jl dHVybih0aGlzLmRheU9mV2Vlayh0LGUscil8fDcpPDZ9LHRvSkQ6ZnVuY3Rp b24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwu aW52YWxpZE1vbnRoKTsodD1hLnllYXIoKSk8MCYmdCsrO2Zvcih2YXIgaT1h LmRheSgpLHM9MTtzPGEubW9udGgoKTtzKyspaSs9dGhpcy5kYXlzUGVyTW9u dGhbcy0xXTtyZXR1cm4gaStvLnRvSkQodCsxNDY4LDMsMTMpfSxmcm9tSkQ6 ZnVuY3Rpb24odCl7dD1NYXRoLmZsb29yKHQrLjUpO2Zvcih2YXIgZT1NYXRo LmZsb29yKCh0LSh0aGlzLmpkRXBvY2gtMSkpLzM2Nik7dD49dGhpcy50b0pE KGUrMSwxLDEpOyllKys7Zm9yKHZhciByPXQtTWF0aC5mbG9vcih0aGlzLnRv SkQoZSwxLDEpKy41KSsxLG49MTtyPnRoaXMuZGF5c0luTW9udGgoZSxuKTsp ci09dGhpcy5kYXlzSW5Nb250aChlLG4pLG4rKztyZXR1cm4gdGhpcy5uZXdE YXRlKGUsbixyKX19KSxuLmNhbGVuZGFycy5uYW5ha3NoYWhpPWl9LHsiLi4v bWFpbiI6NTcwLCJvYmplY3QtYXNzaWduIjo0NTZ9XSw1NjU6W2Z1bmN0aW9u KHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWdu Iik7ZnVuY3Rpb24gaSh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRp b25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfWkucHJvdG90 eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixhKGkucHJvdG90eXBlLHtuYW1lOiJO ZXBhbGkiLGpkRXBvY2g6MTcwMDcwOS41LGRheXNQZXJNb250aDpbMzEsMzEs MzIsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLGhhc1llYXJaZXJvOiEx LG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLGRheXNQZXJZZWFy OjM2NSxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJOZXBhbGkiLGVwb2No czpbIkJCUyIsIkFCUyJdLG1vbnRoTmFtZXM6WyJCYWlzYWtoIiwiSmVzdGhh IiwiQXNoYWRoIiwiU2hyYXdhbiIsIkJoYWRyYSIsIkFzaHdpbiIsIkthcnRp ayIsIk1hbmdzaXIiLCJQYXVzaCIsIk1hbmdoIiwiRmFsZ3VuIiwiQ2hhaXRy YSJdLG1vbnRoTmFtZXNTaG9ydDpbIkJhaSIsIkplIiwiQXMiLCJTaHJhIiwi QmhhIiwiQXNoIiwiS2FyIiwiTWFuZyIsIlBhdSIsIk1hIiwiRmFsIiwiQ2hh aSJdLGRheU5hbWVzOlsiQWFpdGFiYWFyIiwiU29tYmFhciIsIk1hbmdsYmFh ciIsIkJ1ZGhhYmFhciIsIkJpaGliYWFyIiwiU2h1a3JhYmFhciIsIlNoYW5p YmFhciJdLGRheU5hbWVzU2hvcnQ6WyJBYWl0YSIsIlNvbSIsIk1hbmdsIiwi QnVkaGEiLCJCaWhpIiwiU2h1a3JhIiwiU2hhbmkiXSxkYXlOYW1lc01pbjpb IkFhaSIsIlNvIiwiTWFuIiwiQnUiLCJCaSIsIlNodSIsIlNoYSJdLGRpZ2l0 czpudWxsLGRhdGVGb3JtYXQ6ImRkL21tL3l5eXkiLGZpcnN0RGF5OjEsaXNS VEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kYXlz SW5ZZWFyKHQpIT09dGhpcy5kYXlzUGVyWWVhcn0sd2Vla09mWWVhcjpmdW5j dGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4g bi5hZGQoLW4uZGF5T2ZXZWVrKCksImQiKSxNYXRoLmZsb29yKChuLmRheU9m WWVhcigpLTEpLzcpKzF9LGRheXNJblllYXI6ZnVuY3Rpb24odCl7aWYodD10 aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5s b2NhbC5pbnZhbGlkWWVhcikueWVhcigpLCJ1bmRlZmluZWQiPT10eXBlb2Yg dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVt0XSlyZXR1cm4gdGhpcy5kYXlz UGVyWWVhcjtmb3IodmFyIGU9MCxyPXRoaXMubWluTW9udGg7cjw9MTI7cisr KWUrPXRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbdF1bcl07cmV0dXJuIGV9 LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueWVhciYmKGU9 dC5tb250aCgpLHQ9dC55ZWFyKCkpLHRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlz Lm1pbkRheSxuLmxvY2FsLmludmFsaWRNb250aCksInVuZGVmaW5lZCI9PXR5 cGVvZiB0aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW3RdP3RoaXMuZGF5c1Bl ck1vbnRoW2UtMV06dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVt0XVtlXX0s d2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0dXJuIDYhPT10aGlzLmRheU9m V2Vlayh0LGUscil9LHRvSkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMu X3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERhdGUpO3Q9YS55ZWFy KCksZT1hLm1vbnRoKCkscj1hLmRheSgpO3ZhciBpPW4uaW5zdGFuY2UoKSxv PTAscz1lLGw9dDt0aGlzLl9jcmVhdGVNaXNzaW5nQ2FsZW5kYXJEYXRhKHQp O3ZhciBjPXQtKHM+OXx8OT09PXMmJnI+PXRoaXMuTkVQQUxJX0NBTEVOREFS X0RBVEFbbF1bMF0/NTY6NTcpO2Zvcig5IT09ZSYmKG89cixzLS0pOzkhPT1z OylzPD0wJiYocz0xMixsLS0pLG8rPXRoaXMuTkVQQUxJX0NBTEVOREFSX0RB VEFbbF1bc10scy0tO3JldHVybiA5PT09ZT8obys9ci10aGlzLk5FUEFMSV9D QUxFTkRBUl9EQVRBW2xdWzBdKTwwJiYobys9aS5kYXlzSW5ZZWFyKGMpKTpv Kz10aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW2xdWzldLXRoaXMuTkVQQUxJ X0NBTEVOREFSX0RBVEFbbF1bMF0saS5uZXdEYXRlKGMsMSwxKS5hZGQobywi ZCIpLnRvSkQoKX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3ZhciBlPW4uaW5zdGFu Y2UoKS5mcm9tSkQodCkscj1lLnllYXIoKSxhPWUuZGF5T2ZZZWFyKCksaT1y KzU2O3RoaXMuX2NyZWF0ZU1pc3NpbmdDYWxlbmRhckRhdGEoaSk7Zm9yKHZh ciBvPTkscz10aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW2ldWzBdLGw9dGhp cy5ORVBBTElfQ0FMRU5EQVJfREFUQVtpXVtvXS1zKzE7YT5sOykrK28+MTIm JihvPTEsaSsrKSxsKz10aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW2ldW29d O3ZhciBjPXRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbaV1bb10tKGwtYSk7 cmV0dXJuIHRoaXMubmV3RGF0ZShpLG8sYyl9LF9jcmVhdGVNaXNzaW5nQ2Fs ZW5kYXJEYXRhOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGF5c1Blck1vbnRo LnNsaWNlKDApO2UudW5zaGlmdCgxNyk7Zm9yKHZhciByPXQtMTtyPHQrMjty KyspInVuZGVmaW5lZCI9PXR5cGVvZiB0aGlzLk5FUEFMSV9DQUxFTkRBUl9E QVRBW3JdJiYodGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVtyXT1lKX0sTkVQ QUxJX0NBTEVOREFSX0RBVEE6ezE5NzA6WzE4LDMxLDMxLDMyLDMxLDMxLDMx LDMwLDI5LDMwLDI5LDMwLDMwXSwxOTcxOlsxOCwzMSwzMSwzMiwzMSwzMiwz MCwzMCwyOSwzMCwyOSwzMCwzMF0sMTk3MjpbMTcsMzEsMzIsMzEsMzIsMzEs MzAsMzAsMzAsMjksMjksMzAsMzBdLDE5NzM6WzE5LDMwLDMyLDMxLDMyLDMx LDMwLDMwLDMwLDI5LDMwLDI5LDMxXSwxOTc0OlsxOSwzMSwzMSwzMiwzMCwz MSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk3NTpbMTgsMzEsMzEsMzIsMzIs MzAsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5NzY6WzE3LDMxLDMyLDMxLDMy LDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwxOTc3OlsxOCwzMSwzMiwzMSwz MiwzMSwzMSwyOSwzMCwyOSwzMCwyOSwzMV0sMTk3ODpbMTgsMzEsMzEsMzIs MzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5Nzk6WzE4LDMxLDMxLDMy LDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTgwOlsxNywzMSwzMiwz MSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMTk4MTpbMTgsMzEsMzEs MzEsMzIsMzEsMzEsMjksMzAsMzAsMjksMzAsMzBdLDE5ODI6WzE4LDMxLDMx LDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTgzOlsxOCwzMSwz MSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMTk4NDpbMTcsMzEs MzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDE5ODU6WzE4LDMx LDMxLDMxLDMyLDMxLDMxLDI5LDMwLDMwLDI5LDMwLDMwXSwxOTg2OlsxOCwz MSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk4NzpbMTgs MzEsMzIsMzEsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDE5ODg6WzE3 LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwxOTg5Olsx OCwzMSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk5MDpb MTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5OTE6 WzE4LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTky OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMTk5 MzpbMTgsMzEsMzEsMzEsMzIsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5 OTQ6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwx OTk1OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMF0s MTk5NjpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFd LDE5OTc6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMw XSwxOTk4OlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwz MF0sMTk5OTpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAs MzFdLDIwMDA6WzE3LDMwLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDI5 LDMxXSwyMDAxOlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwz MCwzMF0sMjAwMjpbMTgsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjks MzAsMzBdLDIwMDM6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5 LDMwLDMxXSwyMDA0OlsxNywzMCwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwz MCwyOSwzMV0sMjAwNTpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAs MjksMzAsMzBdLDIwMDY6WzE4LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDI5LDMw LDI5LDMwLDMwXSwyMDA3OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwy OSwyOSwzMCwzMV0sMjAwODpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAs MzAsMjksMjksMzFdLDIwMDk6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5 LDMwLDI5LDMwLDMwXSwyMDEwOlsxOCwzMSwzMSwzMiwzMiwzMSwzMCwzMCwy OSwzMCwyOSwzMCwzMF0sMjAxMTpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAs MzAsMjksMjksMzAsMzFdLDIwMTI6WzE3LDMxLDMxLDMxLDMyLDMxLDMxLDI5 LDMwLDMwLDI5LDMwLDMwXSwyMDEzOlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwz MCwyOSwzMCwyOSwzMCwzMF0sMjAxNDpbMTgsMzEsMzEsMzIsMzIsMzEsMzAs MzAsMjksMzAsMjksMzAsMzBdLDIwMTU6WzE3LDMxLDMyLDMxLDMyLDMxLDMw LDMwLDMwLDI5LDI5LDMwLDMxXSwyMDE2OlsxNywzMSwzMSwzMSwzMiwzMSwz MSwyOSwzMCwzMCwyOSwzMCwzMF0sMjAxNzpbMTgsMzEsMzEsMzIsMzEsMzEs MzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMTg6WzE4LDMxLDMyLDMxLDMyLDMx LDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDE5OlsxNywzMSwzMiwzMSwzMiwz MSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMjAyMDpbMTcsMzEsMzEsMzEsMzIs MzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMjE6WzE4LDMxLDMxLDMyLDMx LDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDIyOlsxNywzMSwzMiwzMSwz MiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMF0sMjAyMzpbMTcsMzEsMzIsMzEs MzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFdLDIwMjQ6WzE3LDMxLDMxLDMx LDMyLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDI1OlsxOCwzMSwzMSwz MiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjAyNjpbMTcsMzEsMzIs MzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwMjc6WzE3LDMwLDMy LDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDI5LDMxXSwyMDI4OlsxNywzMSwz MSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjAyOTpbMTgsMzEs MzEsMzIsMzEsMzIsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwMzA6WzE3LDMx LDMyLDMxLDMyLDMxLDMwLDMwLDMwLDMwLDMwLDMwLDMxXSwyMDMxOlsxNywz MSwzMiwzMSwzMiwzMSwzMSwzMSwzMSwzMSwzMSwzMSwzMV0sMjAzMjpbMTcs MzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzJdLDIwMzM6WzE4 LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDM0Olsx NywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMjAzNTpb MTcsMzAsMzIsMzEsMzIsMzEsMzEsMjksMzAsMzAsMjksMjksMzFdLDIwMzY6 WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDM3 OlsxOCwzMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjAz ODpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIw Mzk6WzE3LDMxLDMxLDMxLDMyLDMxLDMxLDI5LDMwLDMwLDI5LDMwLDMwXSwy MDQwOlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0s MjA0MTpbMTgsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBd LDIwNDI6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMx XSwyMDQzOlsxNywzMSwzMSwzMSwzMiwzMSwzMSwyOSwzMCwzMCwyOSwzMCwz MF0sMjA0NDpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAs MzBdLDIwNDU6WzE4LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMw LDMwXSwyMDQ2OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwz MCwzMV0sMjA0NzpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMzAsMjksMzAsMjks MzAsMzBdLDIwNDg6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5 LDMwLDMwXSwyMDQ5OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwy OSwzMCwzMF0sMjA1MDpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjks MzAsMjksMzFdLDIwNTE6WzE3LDMxLDMxLDMxLDMyLDMxLDMxLDMwLDI5LDMw LDI5LDMwLDMwXSwyMDUyOlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwz MCwyOSwzMCwzMF0sMjA1MzpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAs MjksMjksMzAsMzBdLDIwNTQ6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMw LDI5LDMwLDI5LDMxXSwyMDU1OlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwy OSwzMCwzMCwyOSwzMF0sMjA1NjpbMTcsMzEsMzEsMzIsMzEsMzIsMzAsMzAs MjksMzAsMjksMzAsMzBdLDIwNTc6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMw LDMwLDI5LDI5LDMwLDMxXSwyMDU4OlsxNywzMCwzMiwzMSwzMiwzMSwzMCwz MCwzMCwyOSwzMCwyOSwzMV0sMjA1OTpbMTcsMzEsMzEsMzIsMzEsMzEsMzEs MzAsMjksMzAsMjksMzAsMzBdLDIwNjA6WzE3LDMxLDMxLDMyLDMyLDMxLDMw LDMwLDI5LDMwLDI5LDMwLDMwXSwyMDYxOlsxNywzMSwzMiwzMSwzMiwzMSwz MCwzMCwzMCwyOSwyOSwzMCwzMV0sMjA2MjpbMTcsMzAsMzIsMzEsMzIsMzEs MzEsMjksMzAsMjksMzAsMjksMzFdLDIwNjM6WzE3LDMxLDMxLDMyLDMxLDMx LDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDY0OlsxNywzMSwzMSwzMiwzMiwz MSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjA2NTpbMTcsMzEsMzIsMzEsMzIs MzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwNjY6WzE3LDMxLDMxLDMxLDMy LDMxLDMxLDI5LDMwLDMwLDI5LDI5LDMxXSwyMDY3OlsxNywzMSwzMSwzMiwz MSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA2ODpbMTcsMzEsMzEsMzIs MzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDIwNjk6WzE3LDMxLDMyLDMx LDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwyMDcwOlsxNywzMSwzMSwz MSwzMiwzMSwzMSwyOSwzMCwzMCwyOSwzMCwzMF0sMjA3MTpbMTcsMzEsMzEs MzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNzI6WzE3LDMxLDMy LDMxLDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDczOlsxNywzMSwz MiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMjA3NDpbMTcsMzEs MzEsMzEsMzIsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNzU6WzE3LDMx LDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDc2OlsxNiwz MSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMF0sMjA3NzpbMTcs MzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFdLDIwNzg6WzE3 LDMxLDMxLDMxLDMyLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDc5Olsx NywzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA4MDpb MTYsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzBdLDIwODE6 WzE3LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDgy OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwzMCwzMF0sMjA4 MzpbMTcsMzEsMzEsMzIsMzEsMzEsMzAsMzAsMzAsMjksMzAsMzAsMzBdLDIw ODQ6WzE3LDMxLDMxLDMyLDMxLDMxLDMwLDMwLDMwLDI5LDMwLDMwLDMwXSwy MDg1OlsxNywzMSwzMiwzMSwzMiwzMSwzMSwzMCwzMCwyOSwzMCwzMCwzMF0s MjA4NjpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMzAsMzBd LDIwODc6WzE2LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDMwLDI5LDMwLDMwLDMw XSwyMDg4OlsxNiwzMCwzMSwzMiwzMiwzMCwzMSwzMCwzMCwyOSwzMCwzMCwz MF0sMjA4OTpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMzAs MzBdLDIwOTA6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDMw LDMwXSwyMDkxOlsxNiwzMSwzMSwzMiwzMSwzMSwzMSwzMCwzMCwyOSwzMCwz MCwzMF0sMjA5MjpbMTYsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMzAsMjksMzAs MzAsMzBdLDIwOTM6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMw LDMwLDMwXSwyMDk0OlsxNywzMSwzMSwzMiwzMSwzMSwzMCwzMCwzMCwyOSwz MCwzMCwzMF0sMjA5NTpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAs MzAsMzAsMzBdLDIwOTY6WzE3LDMwLDMxLDMyLDMyLDMxLDMwLDMwLDI5LDMw LDI5LDMwLDMwXSwyMDk3OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwy OSwzMCwzMCwzMF0sMjA5ODpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMjksMzAs MjksMzAsMzAsMzFdLDIwOTk6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5 LDI5LDMwLDMwLDMwXSwyMTAwOlsxNywzMSwzMiwzMSwzMiwzMCwzMSwzMCwy OSwzMCwyOSwzMCwzMF19fSksbi5jYWxlbmRhcnMubmVwYWxpPWl9LHsiLi4v bWFpbiI6NTcwLCJvYmplY3QtYXNzaWduIjo0NTZ9XSw1NjY6W2Z1bmN0aW9u KHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWdu Iik7ZnVuY3Rpb24gaSh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRp b25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfWZ1bmN0aW9u IG8odCxlKXtyZXR1cm4gdC1lKk1hdGguZmxvb3IodC9lKX1pLnByb3RvdHlw ZT1uZXcgbi5iYXNlQ2FsZW5kYXIsYShpLnByb3RvdHlwZSx7bmFtZToiUGVy c2lhbiIsamRFcG9jaDoxOTQ4MzIwLjUsZGF5c1Blck1vbnRoOlszMSwzMSwz MSwzMSwzMSwzMSwzMCwzMCwzMCwzMCwzMCwyOV0saGFzWWVhclplcm86ITEs bWluTW9udGg6MSxmaXJzdE1vbnRoOjEsbWluRGF5OjEscmVnaW9uYWxPcHRp b25zOnsiIjp7bmFtZToiUGVyc2lhbiIsZXBvY2hzOlsiQlAiLCJBUCJdLG1v bnRoTmFtZXM6WyJGYXJ2YXJkaW4iLCJPcmRpYmVoZXNodCIsIktob3JkYWQi LCJUaXIiLCJNb3JkYWQiLCJTaGFocml2YXIiLCJNZWhyIiwiQWJhbiIsIkF6 YXIiLCJEYXkiLCJCYWhtYW4iLCJFc2ZhbmQiXSxtb250aE5hbWVzU2hvcnQ6 WyJGYXIiLCJPcmQiLCJLaG8iLCJUaXIiLCJNb3IiLCJTaGEiLCJNZWgiLCJB YmEiLCJBemEiLCJEYXkiLCJCYWgiLCJFc2YiXSxkYXlOYW1lczpbIllla3No YW1iZSIsIkRvc2hhbWJlIiwiU2VzaGFtYmUiLCJDaFx4ZTZoYXJzaGFtYmUi LCJQYW5qc2hhbWJlIiwiSm9tJ2UiLCJTaGFtYmUiXSxkYXlOYW1lc1Nob3J0 OlsiWWVrIiwiRG8iLCJTZSIsIkNoXHhlNiIsIlBhbmoiLCJKb20iLCJTaGEi XSxkYXlOYW1lc01pbjpbIlllIiwiRG8iLCJTZSIsIkNoIiwiUGEiLCJKbyIs IlNoIl0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoieXl5eS9tbS9kZCIsZmly c3REYXk6Nixpc1JUTDohMX19LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3ZhciBl PXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxu LmxvY2FsLmludmFsaWRZZWFyKTtyZXR1cm4gNjgyKigoZS55ZWFyKCktKGUu eWVhcigpPjA/NDc0OjQ3MykpJTI4MjArNDc0KzM4KSUyODE2PDY4Mn0sd2Vl a09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRlKHQs ZSxyKTtyZXR1cm4gbi5hZGQoLShuLmRheU9mV2VlaygpKzEpJTcsImQiKSxN YXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJbk1vbnRo OmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMu bWluRGF5LG4ubG9jYWwuaW52YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5kYXlz UGVyTW9udGhbci5tb250aCgpLTFdKygxMj09PXIubW9udGgoKSYmdGhpcy5s ZWFwWWVhcihyLnllYXIoKSk/MTowKX0sd2Vla0RheTpmdW5jdGlvbih0LGUs cil7cmV0dXJuIDUhPT10aGlzLmRheU9mV2Vlayh0LGUscil9LHRvSkQ6ZnVu Y3Rpb24odCxlLHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9j YWwuaW52YWxpZERhdGUpO3Q9YS55ZWFyKCksZT1hLm1vbnRoKCkscj1hLmRh eSgpO3ZhciBpPXQtKHQ+PTA/NDc0OjQ3Mykscz00NzQrbyhpLDI4MjApO3Jl dHVybiByKyhlPD03PzMxKihlLTEpOjMwKihlLTEpKzYpK01hdGguZmxvb3Io KDY4MipzLTExMCkvMjgxNikrMzY1KihzLTEpKzEwMjk5ODMqTWF0aC5mbG9v cihpLzI4MjApK3RoaXMuamRFcG9jaC0xfSxmcm9tSkQ6ZnVuY3Rpb24odCl7 dmFyIGU9KHQ9TWF0aC5mbG9vcih0KSsuNSktdGhpcy50b0pEKDQ3NSwxLDEp LHI9TWF0aC5mbG9vcihlLzEwMjk5ODMpLG49byhlLDEwMjk5ODMpLGE9Mjgy MDtpZigxMDI5OTgyIT09bil7dmFyIGk9TWF0aC5mbG9vcihuLzM2Nikscz1v KG4sMzY2KTthPU1hdGguZmxvb3IoKDIxMzQqaSsyODE2KnMrMjgxNSkvMTAy ODUyMikraSsxfXZhciBsPWErMjgyMCpyKzQ3NDtsPWw8PTA/bC0xOmw7dmFy IGM9dC10aGlzLnRvSkQobCwxLDEpKzEsdT1jPD0xODY/TWF0aC5jZWlsKGMv MzEpOk1hdGguY2VpbCgoYy02KS8zMCksaD10LXRoaXMudG9KRChsLHUsMSkr MTtyZXR1cm4gdGhpcy5uZXdEYXRlKGwsdSxoKX19KSxuLmNhbGVuZGFycy5w ZXJzaWFuPWksbi5jYWxlbmRhcnMuamFsYWxpPWl9LHsiLi4vbWFpbiI6NTcw LCJvYmplY3QtYXNzaWduIjo0NTZ9XSw1Njc6W2Z1bmN0aW9uKHQsZSxyKXt2 YXIgbj10KCIuLi9tYWluIiksYT10KCJvYmplY3QtYXNzaWduIiksaT1uLmlu c3RhbmNlKCk7ZnVuY3Rpb24gbyh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9u YWxPcHRpb25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfW8u cHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixhKG8ucHJvdG90eXBlLHtu YW1lOiJUYWl3YW4iLGpkRXBvY2g6MjQxOTQwMi41LHllYXJzT2Zmc2V0OjE5 MTEsZGF5c1Blck1vbnRoOlszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwz MSwzMCwzMV0saGFzWWVhclplcm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRo OjEsbWluRGF5OjEscmVnaW9uYWxPcHRpb25zOnsiIjp7bmFtZToiVGFpd2Fu IixlcG9jaHM6WyJCUk9DIiwiUk9DIl0sbW9udGhOYW1lczpbIkphbnVhcnki LCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVs eSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIs IkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFy IiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0Iiwi Tm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVz ZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRh eSJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJU aHUiLCJGcmkiLCJTYXQiXSxkYXlOYW1lc01pbjpbIlN1IiwiTW8iLCJUdSIs IldlIiwiVGgiLCJGciIsIlNhIl0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoi eXl5eS9tbS9kZCIsZmlyc3REYXk6MSxpc1JUTDohMX19LGxlYXBZZWFyOmZ1 bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250 aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKTt0PXRoaXMuX3Qy Z1llYXIoZS55ZWFyKCkpO3JldHVybiBpLmxlYXBZZWFyKHQpfSx3ZWVrT2ZZ ZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0ZSh0LHRo aXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcik7 dD10aGlzLl90MmdZZWFyKGEueWVhcigpKTtyZXR1cm4gaS53ZWVrT2ZZZWFy KHQsYS5tb250aCgpLGEuZGF5KCkpfSxkYXlzSW5Nb250aDpmdW5jdGlvbih0 LGUpe3ZhciByPXRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxv Y2FsLmludmFsaWRNb250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1vbnRoW3Iu bW9udGgoKS0xXSsoMj09PXIubW9udGgoKSYmdGhpcy5sZWFwWWVhcihyLnll YXIoKSk/MTowKX0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0dXJuKHRo aXMuZGF5T2ZXZWVrKHQsZSxyKXx8Nyk8Nn0sdG9KRDpmdW5jdGlvbih0LGUs cil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlk RGF0ZSk7dD10aGlzLl90MmdZZWFyKGEueWVhcigpKTtyZXR1cm4gaS50b0pE KHQsYS5tb250aCgpLGEuZGF5KCkpfSxmcm9tSkQ6ZnVuY3Rpb24odCl7dmFy IGU9aS5mcm9tSkQodCkscj10aGlzLl9nMnRZZWFyKGUueWVhcigpKTtyZXR1 cm4gdGhpcy5uZXdEYXRlKHIsZS5tb250aCgpLGUuZGF5KCkpfSxfdDJnWWVh cjpmdW5jdGlvbih0KXtyZXR1cm4gdCt0aGlzLnllYXJzT2Zmc2V0Kyh0Pj0t dGhpcy55ZWFyc09mZnNldCYmdDw9LTE/MTowKX0sX2cydFllYXI6ZnVuY3Rp b24odCl7cmV0dXJuIHQtdGhpcy55ZWFyc09mZnNldC0odD49MSYmdDw9dGhp cy55ZWFyc09mZnNldD8xOjApfX0pLG4uY2FsZW5kYXJzLnRhaXdhbj1vfSx7 Ii4uL21haW4iOjU3MCwib2JqZWN0LWFzc2lnbiI6NDU2fV0sNTY4OltmdW5j dGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGE9dCgib2JqZWN0LWFz c2lnbiIpLGk9bi5pbnN0YW5jZSgpO2Z1bmN0aW9uIG8odCl7dGhpcy5sb2Nh bD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0fHwiIl18fHRoaXMucmVnaW9uYWxP cHRpb25zWyIiXX1vLnByb3RvdHlwZT1uZXcgbi5iYXNlQ2FsZW5kYXIsYShv LnByb3RvdHlwZSx7bmFtZToiVGhhaSIsamRFcG9jaDoxNTIzMDk4LjUseWVh cnNPZmZzZXQ6NTQzLGRheXNQZXJNb250aDpbMzEsMjgsMzEsMzAsMzEsMzAs MzEsMzEsMzAsMzEsMzAsMzFdLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEs Zmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25h bWU6IlRoYWkiLGVwb2NoczpbIkJCRSIsIkJFIl0sbW9udGhOYW1lczpbIkph bnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5l IiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3Zl bWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmVi IiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwi T2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXki LCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJT YXR1cmRheSJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJX ZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxkYXlOYW1lc01pbjpbIlN1IiwiTW8i LCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sZGlnaXRzOm51bGwsZGF0ZUZv cm1hdDoiZGQvbW0veXl5eSIsZmlyc3REYXk6MCxpc1JUTDohMX19LGxlYXBZ ZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5t aW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKTt0PXRo aXMuX3QyZ1llYXIoZS55ZWFyKCkpO3JldHVybiBpLmxlYXBZZWFyKHQpfSx3 ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT10aGlzLl92YWxpZGF0 ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlk WWVhcik7dD10aGlzLl90MmdZZWFyKGEueWVhcigpKTtyZXR1cm4gaS53ZWVr T2ZZZWFyKHQsYS5tb250aCgpLGEuZGF5KCkpfSxkYXlzSW5Nb250aDpmdW5j dGlvbih0LGUpe3ZhciByPXRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRh eSxuLmxvY2FsLmludmFsaWRNb250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1v bnRoW3IubW9udGgoKS0xXSsoMj09PXIubW9udGgoKSYmdGhpcy5sZWFwWWVh cihyLnllYXIoKSk/MTowKX0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0 dXJuKHRoaXMuZGF5T2ZXZWVrKHQsZSxyKXx8Nyk8Nn0sdG9KRDpmdW5jdGlv bih0LGUscil7dmFyIGE9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5p bnZhbGlkRGF0ZSk7dD10aGlzLl90MmdZZWFyKGEueWVhcigpKTtyZXR1cm4g aS50b0pEKHQsYS5tb250aCgpLGEuZGF5KCkpfSxmcm9tSkQ6ZnVuY3Rpb24o dCl7dmFyIGU9aS5mcm9tSkQodCkscj10aGlzLl9nMnRZZWFyKGUueWVhcigp KTtyZXR1cm4gdGhpcy5uZXdEYXRlKHIsZS5tb250aCgpLGUuZGF5KCkpfSxf dDJnWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdC10aGlzLnllYXJzT2Zmc2V0 LSh0Pj0xJiZ0PD10aGlzLnllYXJzT2Zmc2V0PzE6MCl9LF9nMnRZZWFyOmZ1 bmN0aW9uKHQpe3JldHVybiB0K3RoaXMueWVhcnNPZmZzZXQrKHQ+PS10aGlz LnllYXJzT2Zmc2V0JiZ0PD0tMT8xOjApfX0pLG4uY2FsZW5kYXJzLnRoYWk9 b30seyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU2OTpb ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxhPXQoIm9iamVj dC1hc3NpZ24iKTtmdW5jdGlvbiBpKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdp b25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19 aS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGEoaS5wcm90b3R5cGUs e25hbWU6IlVtbUFsUXVyYSIsaGFzWWVhclplcm86ITEsbWluTW9udGg6MSxm aXJzdE1vbnRoOjEsbWluRGF5OjEscmVnaW9uYWxPcHRpb25zOnsiIjp7bmFt ZToiVW1tIGFsLVF1cmEiLGVwb2NoczpbIkJIIiwiQUgiXSxtb250aE5hbWVz OlsiQWwtTXVoYXJyYW0iLCJTYWZhciIsIlJhYmknIGFsLWF3d2FsIiwiUmFi aScgQWwtVGhhbmkiLCJKdW1hZGEgQWwtQXd3YWwiLCJKdW1hZGEgQWwtVGhh bmkiLCJSYWphYiIsIlNoYSdhYmFuIiwiUmFtYWRhbiIsIlNoYXd3YWwiLCJE aHUgYWwtUWknZGFoIiwiRGh1IGFsLUhpamphaCJdLG1vbnRoTmFtZXNTaG9y dDpbIk11aCIsIlNhZiIsIlJhYjEiLCJSYWIyIiwiSnVtMSIsIkp1bTIiLCJS YWoiLCJTaGEnIiwiUmFtIiwiU2hhdyIsIkRodVEiLCJEaHVIIl0sZGF5TmFt ZXM6WyJZYXdtIGFsLUFoYWQiLCJZYXdtIGFsLUl0aG5haW4iLCJZYXdtIGFs LVRoYWxcdTAxMDF0aFx1MDEwMVx1MjAxOSIsIllhd20gYWwtQXJiYVx1MjAx OFx1MDEwMVx1MjAxOSIsIllhd20gYWwtS2hhbVx1MDEyYnMiLCJZYXdtIGFs LUp1bVx1MjAxOGEiLCJZYXdtIGFsLVNhYnQiXSxkYXlOYW1lc01pbjpbIkFo IiwiSXRoIiwiVGgiLCJBciIsIktoIiwiSnUiLCJTYSJdLGRpZ2l0czpudWxs LGRhdGVGb3JtYXQ6Inl5eXkvbW0vZGQiLGZpcnN0RGF5OjYsaXNSVEw6ITB9 fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0ZSh0 LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVh cik7cmV0dXJuIDM1NT09PXRoaXMuZGF5c0luWWVhcihlLnllYXIoKSl9LHdl ZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubmV3RGF0ZSh0 LGUscik7cmV0dXJuIG4uYWRkKC1uLmRheU9mV2VlaygpLCJkIiksTWF0aC5m bG9vcigobi5kYXlPZlllYXIoKS0xKS83KSsxfSxkYXlzSW5ZZWFyOmZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT0wLHI9MTtyPD0xMjtyKyspZSs9dGhpcy5kYXlz SW5Nb250aCh0LHIpO3JldHVybiBlfSxkYXlzSW5Nb250aDpmdW5jdGlvbih0 LGUpe2Zvcih2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXks bi5sb2NhbC5pbnZhbGlkTW9udGgpLnRvSkQoKS0yNGU1Ky41LGE9MCxpPTA7 aTxvLmxlbmd0aDtpKyspe2lmKG9baV0+cilyZXR1cm4gb1thXS1vW2EtMV07 YSsrfXJldHVybiAzMH0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0dXJu IDUhPT10aGlzLmRheU9mV2Vlayh0LGUscil9LHRvSkQ6ZnVuY3Rpb24odCxl LHIpe3ZhciBhPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxp ZERhdGUpLGk9MTIqKGEueWVhcigpLTEpK2EubW9udGgoKS0xNTI5MjtyZXR1 cm4gYS5kYXkoKStvW2ktMV0tMSsyNGU1LS41fSxmcm9tSkQ6ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPXQtMjRlNSsuNSxyPTAsbj0wO248by5sZW5ndGgmJiEo b1tuXT5lKTtuKyspcisrO3ZhciBhPXIrMTUyOTIsaT1NYXRoLmZsb29yKChh LTEpLzEyKSxzPWkrMSxsPWEtMTIqaSxjPWUtb1tyLTFdKzE7cmV0dXJuIHRo aXMubmV3RGF0ZShzLGwsYyl9LGlzVmFsaWQ6ZnVuY3Rpb24odCxlLHIpe3Zh ciBhPW4uYmFzZUNhbGVuZGFyLnByb3RvdHlwZS5pc1ZhbGlkLmFwcGx5KHRo aXMsYXJndW1lbnRzKTtyZXR1cm4gYSYmKGE9KHQ9bnVsbCE9dC55ZWFyP3Qu eWVhcjp0KT49MTI3NiYmdDw9MTUwMCksYX0sX3ZhbGlkYXRlOmZ1bmN0aW9u KHQsZSxyLGEpe3ZhciBpPW4uYmFzZUNhbGVuZGFyLnByb3RvdHlwZS5fdmFs aWRhdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKGkueWVhcjwxMjc2fHxp LnllYXI+MTUwMCl0aHJvdyBhLnJlcGxhY2UoL1x7MFx9Lyx0aGlzLmxvY2Fs Lm5hbWUpO3JldHVybiBpfX0pLG4uY2FsZW5kYXJzLnVtbWFscXVyYT1pO3Zh ciBvPVsyMCw1MCw3OSwxMDksMTM4LDE2OCwxOTcsMjI3LDI1NiwyODYsMzE1 LDM0NSwzNzQsNDA0LDQzMyw0NjMsNDkyLDUyMiw1NTEsNTgxLDYxMSw2NDEs NjcwLDcwMCw3MjksNzU5LDc4OCw4MTgsODQ3LDg3Nyw5MDYsOTM2LDk2NSw5 OTUsMTAyNCwxMDU0LDEwODMsMTExMywxMTQyLDExNzIsMTIwMSwxMjMxLDEy NjAsMTI5MCwxMzIwLDEzNTAsMTM3OSwxNDA5LDE0MzgsMTQ2OCwxNDk3LDE1 MjcsMTU1NiwxNTg2LDE2MTUsMTY0NSwxNjc0LDE3MDQsMTczMywxNzYzLDE3 OTIsMTgyMiwxODUxLDE4ODEsMTkxMCwxOTQwLDE5NjksMTk5OSwyMDI4LDIw NTgsMjA4NywyMTE3LDIxNDYsMjE3NiwyMjA1LDIyMzUsMjI2NCwyMjk0LDIz MjMsMjM1MywyMzgzLDI0MTMsMjQ0MiwyNDcyLDI1MDEsMjUzMSwyNTYwLDI1 OTAsMjYxOSwyNjQ5LDI2NzgsMjcwOCwyNzM3LDI3NjcsMjc5NiwyODI2LDI4 NTUsMjg4NSwyOTE0LDI5NDQsMjk3MywzMDAzLDMwMzIsMzA2MiwzMDkxLDMx MjEsMzE1MCwzMTgwLDMyMDksMzIzOSwzMjY4LDMyOTgsMzMyNywzMzU3LDMz ODYsMzQxNiwzNDQ2LDM0NzYsMzUwNSwzNTM1LDM1NjQsMzU5NCwzNjIzLDM2 NTMsMzY4MiwzNzEyLDM3NDEsMzc3MSwzODAwLDM4MzAsMzg1OSwzODg5LDM5 MTgsMzk0OCwzOTc3LDQwMDcsNDAzNiw0MDY2LDQwOTUsNDEyNSw0MTU1LDQx ODUsNDIxNCw0MjQ0LDQyNzMsNDMwMyw0MzMyLDQzNjIsNDM5MSw0NDIxLDQ0 NTAsNDQ4MCw0NTA5LDQ1MzksNDU2OCw0NTk4LDQ2MjcsNDY1Nyw0Njg2LDQ3 MTYsNDc0NSw0Nzc1LDQ4MDQsNDgzNCw0ODYzLDQ4OTMsNDkyMiw0OTUyLDQ5 ODEsNTAxMSw1MDQwLDUwNzAsNTA5OSw1MTI5LDUxNTgsNTE4OCw1MjE4LDUy NDgsNTI3Nyw1MzA3LDUzMzYsNTM2Niw1Mzk1LDU0MjUsNTQ1NCw1NDg0LDU1 MTMsNTU0Myw1NTcyLDU2MDIsNTYzMSw1NjYxLDU2OTAsNTcyMCw1NzQ5LDU3 NzksNTgwOCw1ODM4LDU4NjcsNTg5Nyw1OTI2LDU5NTYsNTk4NSw2MDE1LDYw NDQsNjA3NCw2MTAzLDYxMzMsNjE2Miw2MTkyLDYyMjEsNjI1MSw2MjgxLDYz MTEsNjM0MCw2MzcwLDYzOTksNjQyOSw2NDU4LDY0ODgsNjUxNyw2NTQ3LDY1 NzYsNjYwNiw2NjM1LDY2NjUsNjY5NCw2NzI0LDY3NTMsNjc4Myw2ODEyLDY4 NDIsNjg3MSw2OTAxLDY5MzAsNjk2MCw2OTg5LDcwMTksNzA0OCw3MDc4LDcx MDcsNzEzNyw3MTY2LDcxOTYsNzIyNSw3MjU1LDcyODQsNzMxNCw3MzQ0LDcz NzQsNzQwMyw3NDMzLDc0NjIsNzQ5Miw3NTIxLDc1NTEsNzU4MCw3NjEwLDc2 MzksNzY2OSw3Njk4LDc3MjgsNzc1Nyw3Nzg3LDc4MTYsNzg0Niw3ODc1LDc5 MDUsNzkzNCw3OTY0LDc5OTMsODAyMyw4MDUzLDgwODMsODExMiw4MTQyLDgx NzEsODIwMSw4MjMwLDgyNjAsODI4OSw4MzE5LDgzNDgsODM3OCw4NDA3LDg0 MzcsODQ2Niw4NDk2LDg1MjUsODU1NSw4NTg0LDg2MTQsODY0Myw4NjczLDg3 MDIsODczMiw4NzYxLDg3OTEsODgyMSw4ODUwLDg4ODAsODkwOSw4OTM4LDg5 NjgsODk5Nyw5MDI3LDkwNTYsOTA4Niw5MTE1LDkxNDUsOTE3NSw5MjA1LDky MzQsOTI2NCw5MjkzLDkzMjIsOTM1Miw5MzgxLDk0MTAsOTQ0MCw5NDcwLDk0 OTksOTUyOSw5NTU5LDk1ODksOTYxOCw5NjQ4LDk2NzcsOTcwNiw5NzM2LDk3 NjUsOTc5NCw5ODI0LDk4NTMsOTg4Myw5OTEzLDk5NDMsOTk3MiwxMDAwMiwx MDAzMiwxMDA2MSwxMDA5MCwxMDEyMCwxMDE0OSwxMDE3OCwxMDIwOCwxMDIz NywxMDI2NywxMDI5NywxMDMyNiwxMDM1NiwxMDM4NiwxMDQxNSwxMDQ0NSwx MDQ3NCwxMDUwNCwxMDUzMywxMDU2MiwxMDU5MiwxMDYyMSwxMDY1MSwxMDY4 MCwxMDcxMCwxMDc0MCwxMDc3MCwxMDc5OSwxMDgyOSwxMDg1OCwxMDg4OCwx MDkxNywxMDk0NywxMDk3NiwxMTAwNSwxMTAzNSwxMTA2NCwxMTA5NCwxMTEy NCwxMTE1MywxMTE4MywxMTIxMywxMTI0MiwxMTI3MiwxMTMwMSwxMTMzMSwx MTM2MCwxMTM4OSwxMTQxOSwxMTQ0OCwxMTQ3OCwxMTUwNywxMTUzNywxMTU2 NywxMTU5NiwxMTYyNiwxMTY1NSwxMTY4NSwxMTcxNSwxMTc0NCwxMTc3NCwx MTgwMywxMTgzMiwxMTg2MiwxMTg5MSwxMTkyMSwxMTk1MCwxMTk4MCwxMjAx MCwxMjAzOSwxMjA2OSwxMjA5OSwxMjEyOCwxMjE1OCwxMjE4NywxMjIxNiwx MjI0NiwxMjI3NSwxMjMwNCwxMjMzNCwxMjM2NCwxMjM5MywxMjQyMywxMjQ1 MywxMjQ4MywxMjUxMiwxMjU0MiwxMjU3MSwxMjYwMCwxMjYzMCwxMjY1OSwx MjY4OCwxMjcxOCwxMjc0NywxMjc3NywxMjgwNywxMjgzNywxMjg2NiwxMjg5 NiwxMjkyNiwxMjk1NSwxMjk4NCwxMzAxNCwxMzA0MywxMzA3MiwxMzEwMiwx MzEzMSwxMzE2MSwxMzE5MSwxMzIyMCwxMzI1MCwxMzI4MCwxMzMxMCwxMzMz OSwxMzM2OCwxMzM5OCwxMzQyNywxMzQ1NiwxMzQ4NiwxMzUxNSwxMzU0NSwx MzU3NCwxMzYwNCwxMzYzNCwxMzY2NCwxMzY5MywxMzcyMywxMzc1MiwxMzc4 MiwxMzgxMSwxMzg0MCwxMzg3MCwxMzg5OSwxMzkyOSwxMzk1OCwxMzk4OCwx NDAxOCwxNDA0NywxNDA3NywxNDEwNywxNDEzNiwxNDE2NiwxNDE5NSwxNDIy NCwxNDI1NCwxNDI4MywxNDMxMywxNDM0MiwxNDM3MiwxNDQwMSwxNDQzMSwx NDQ2MSwxNDQ5MCwxNDUyMCwxNDU1MCwxNDU3OSwxNDYwOSwxNDYzOCwxNDY2 NywxNDY5NywxNDcyNiwxNDc1NiwxNDc4NSwxNDgxNSwxNDg0NCwxNDg3NCwx NDkwNCwxNDkzMywxNDk2MywxNDk5MywxNTAyMSwxNTA1MSwxNTA4MSwxNTEx MCwxNTE0MCwxNTE2OSwxNTE5OSwxNTIyOCwxNTI1OCwxNTI4NywxNTMxNywx NTM0NywxNTM3NywxNTQwNiwxNTQzNiwxNTQ2NSwxNTQ5NCwxNTUyNCwxNTU1 MywxNTU4MiwxNTYxMiwxNTY0MSwxNTY3MSwxNTcwMSwxNTczMSwxNTc2MCwx NTc5MCwxNTgyMCwxNTg0OSwxNTg3OCwxNTkwOCwxNTkzNywxNTk2NiwxNTk5 NiwxNjAyNSwxNjA1NSwxNjA4NSwxNjExNCwxNjE0NCwxNjE3NCwxNjIwNCwx NjIzMywxNjI2MiwxNjI5MiwxNjMyMSwxNjM1MCwxNjM4MCwxNjQwOSwxNjQz OSwxNjQ2OCwxNjQ5OCwxNjUyOCwxNjU1OCwxNjU4NywxNjYxNywxNjY0Niwx NjY3NiwxNjcwNSwxNjczNCwxNjc2NCwxNjc5MywxNjgyMywxNjg1MiwxNjg4 MiwxNjkxMiwxNjk0MSwxNjk3MSwxNzAwMSwxNzAzMCwxNzA2MCwxNzA4OSwx NzExOCwxNzE0OCwxNzE3NywxNzIwNywxNzIzNiwxNzI2NiwxNzI5NSwxNzMy NSwxNzM1NSwxNzM4NCwxNzQxNCwxNzQ0NCwxNzQ3MywxNzUwMiwxNzUzMiwx NzU2MSwxNzU5MSwxNzYyMCwxNzY1MCwxNzY3OSwxNzcwOSwxNzczOCwxNzc2 OCwxNzc5OCwxNzgyNywxNzg1NywxNzg4NiwxNzkxNiwxNzk0NSwxNzk3NSwx ODAwNCwxODAzNCwxODA2MywxODA5MywxODEyMiwxODE1MiwxODE4MSwxODIx MSwxODI0MSwxODI3MCwxODMwMCwxODMzMCwxODM1OSwxODM4OCwxODQxOCwx ODQ0NywxODQ3NiwxODUwNiwxODUzNSwxODU2NSwxODU5NSwxODYyNSwxODY1 NCwxODY4NCwxODcxNCwxODc0MywxODc3MiwxODgwMiwxODgzMSwxODg2MCwx ODg5MCwxODkxOSwxODk0OSwxODk3OSwxOTAwOCwxOTAzOCwxOTA2OCwxOTA5 OCwxOTEyNywxOTE1NiwxOTE4NiwxOTIxNSwxOTI0NCwxOTI3NCwxOTMwMywx OTMzMywxOTM2MiwxOTM5MiwxOTQyMiwxOTQ1MiwxOTQ4MSwxOTUxMSwxOTU0 MCwxOTU3MCwxOTU5OSwxOTYyOCwxOTY1OCwxOTY4NywxOTcxNywxOTc0Niwx OTc3NiwxOTgwNiwxOTgzNiwxOTg2NSwxOTg5NSwxOTkyNCwxOTk1NCwxOTk4 MywyMDAxMiwyMDA0MiwyMDA3MSwyMDEwMSwyMDEzMCwyMDE2MCwyMDE5MCwy MDIxOSwyMDI0OSwyMDI3OSwyMDMwOCwyMDMzOCwyMDM2NywyMDM5NiwyMDQy NiwyMDQ1NSwyMDQ4NSwyMDUxNCwyMDU0NCwyMDU3MywyMDYwMywyMDYzMywy MDY2MiwyMDY5MiwyMDcyMSwyMDc1MSwyMDc4MCwyMDgxMCwyMDgzOSwyMDg2 OSwyMDg5OCwyMDkyOCwyMDk1NywyMDk4NywyMTAxNiwyMTA0NiwyMTA3Niwy MTEwNSwyMTEzNSwyMTE2NCwyMTE5NCwyMTIyMywyMTI1MywyMTI4MiwyMTMx MiwyMTM0MSwyMTM3MSwyMTQwMCwyMTQzMCwyMTQ1OSwyMTQ4OSwyMTUxOSwy MTU0OCwyMTU3OCwyMTYwNywyMTYzNywyMTY2NiwyMTY5NiwyMTcyNSwyMTc1 NCwyMTc4NCwyMTgxMywyMTg0MywyMTg3MywyMTkwMiwyMTkzMiwyMTk2Miwy MTk5MSwyMjAyMSwyMjA1MCwyMjA4MCwyMjEwOSwyMjEzOCwyMjE2OCwyMjE5 NywyMjIyNywyMjI1NiwyMjI4NiwyMjMxNiwyMjM0NiwyMjM3NSwyMjQwNSwy MjQzNCwyMjQ2NCwyMjQ5MywyMjUyMiwyMjU1MiwyMjU4MSwyMjYxMSwyMjY0 MCwyMjY3MCwyMjcwMCwyMjczMCwyMjc1OSwyMjc4OSwyMjgxOCwyMjg0OCwy Mjg3NywyMjkwNiwyMjkzNiwyMjk2NSwyMjk5NCwyMzAyNCwyMzA1NCwyMzA4 MywyMzExMywyMzE0MywyMzE3MywyMzIwMiwyMzIzMiwyMzI2MSwyMzI5MCwy MzMyMCwyMzM0OSwyMzM3OSwyMzQwOCwyMzQzOCwyMzQ2NywyMzQ5NywyMzUy NywyMzU1NiwyMzU4NiwyMzYxNiwyMzY0NSwyMzY3NCwyMzcwNCwyMzczMywy Mzc2MywyMzc5MiwyMzgyMiwyMzg1MSwyMzg4MSwyMzkxMCwyMzk0MCwyMzk3 MCwyMzk5OSwyNDAyOSwyNDA1OCwyNDA4OCwyNDExNywyNDE0NywyNDE3Niwy NDIwNiwyNDIzNSwyNDI2NSwyNDI5NCwyNDMyNCwyNDM1MywyNDM4MywyNDQx MywyNDQ0MiwyNDQ3MiwyNDUwMSwyNDUzMSwyNDU2MCwyNDU5MCwyNDYxOSwy NDY0OCwyNDY3OCwyNDcwNywyNDczNywyNDc2NywyNDc5NiwyNDgyNiwyNDg1 NiwyNDg4NSwyNDkxNSwyNDk0NCwyNDk3NCwyNTAwMywyNTAzMiwyNTA2Miwy NTA5MSwyNTEyMSwyNTE1MCwyNTE4MCwyNTIxMCwyNTI0MCwyNTI2OSwyNTI5 OSwyNTMyOCwyNTM1OCwyNTM4NywyNTQxNiwyNTQ0NiwyNTQ3NSwyNTUwNSwy NTUzNCwyNTU2NCwyNTU5NCwyNTYyNCwyNTY1MywyNTY4MywyNTcxMiwyNTc0 MiwyNTc3MSwyNTgwMCwyNTgzMCwyNTg1OSwyNTg4OCwyNTkxOCwyNTk0OCwy NTk3NywyNjAwNywyNjAzNywyNjA2NywyNjA5NiwyNjEyNiwyNjE1NSwyNjE4 NCwyNjIxNCwyNjI0MywyNjI3MiwyNjMwMiwyNjMzMiwyNjM2MSwyNjM5MSwy NjQyMSwyNjQ1MSwyNjQ4MCwyNjUxMCwyNjUzOSwyNjU2OCwyNjU5OCwyNjYy NywyNjY1NiwyNjY4NiwyNjcxNSwyNjc0NSwyNjc3NSwyNjgwNSwyNjgzNCwy Njg2NCwyNjg5MywyNjkyMywyNjk1MiwyNjk4MiwyNzAxMSwyNzA0MSwyNzA3 MCwyNzA5OSwyNzEyOSwyNzE1OSwyNzE4OCwyNzIxOCwyNzI0OCwyNzI3Nywy NzMwNywyNzMzNiwyNzM2NiwyNzM5NSwyNzQyNSwyNzQ1NCwyNzQ4NCwyNzUx MywyNzU0MiwyNzU3MiwyNzYwMiwyNzYzMSwyNzY2MSwyNzY5MSwyNzcyMCwy Nzc1MCwyNzc3OSwyNzgwOSwyNzgzOCwyNzg2OCwyNzg5NywyNzkyNiwyNzk1 NiwyNzk4NSwyODAxNSwyODA0NSwyODA3NCwyODEwNCwyODEzNCwyODE2Mywy ODE5MywyODIyMiwyODI1MiwyODI4MSwyODMxMCwyODM0MCwyODM2OSwyODM5 OSwyODQyOCwyODQ1OCwyODQ4OCwyODUxNywyODU0NywyODU3NywyODYwNywy ODYzNiwyODY2NSwyODY5NSwyODcyNCwyODc1NCwyODc4MywyODgxMywyODg0 MywyODg3MiwyODkwMSwyODkzMSwyODk2MCwyODk5MCwyOTAxOSwyOTA0OSwy OTA3OCwyOTEwOCwyOTEzNywyOTE2NywyOTE5NiwyOTIyNiwyOTI1NSwyOTI4 NSwyOTMxNSwyOTM0NSwyOTM3NSwyOTQwNCwyOTQzNCwyOTQ2MywyOTQ5Miwy OTUyMiwyOTU1MSwyOTU4MCwyOTYxMCwyOTY0MCwyOTY2OSwyOTY5OSwyOTcy OSwyOTc1OSwyOTc4OCwyOTgxOCwyOTg0NywyOTg3NiwyOTkwNiwyOTkzNSwy OTk2NCwyOTk5NCwzMDAyMywzMDA1MywzMDA4MiwzMDExMiwzMDE0MSwzMDE3 MSwzMDIwMCwzMDIzMCwzMDI1OSwzMDI4OSwzMDMxOCwzMDM0OCwzMDM3OCwz MDQwOCwzMDQzNywzMDQ2NywzMDQ5NiwzMDUyNiwzMDU1NSwzMDU4NSwzMDYx NCwzMDY0NCwzMDY3MywzMDcwMywzMDczMiwzMDc2MiwzMDc5MSwzMDgyMSwz MDg1MCwzMDg4MCwzMDkwOSwzMDkzOSwzMDk2OCwzMDk5OCwzMTAyNywzMTA1 NywzMTA4NiwzMTExNiwzMTE0NSwzMTE3NSwzMTIwNCwzMTIzNCwzMTI2Mywz MTI5MywzMTMyMiwzMTM1MiwzMTM4MSwzMTQxMSwzMTQ0MSwzMTQ3MSwzMTUw MCwzMTUzMCwzMTU1OSwzMTU4OSwzMTYxOCwzMTY0OCwzMTY3NiwzMTcwNiwz MTczNiwzMTc2NiwzMTc5NSwzMTgyNSwzMTg1NCwzMTg4NCwzMTkxMywzMTk0 MywzMTk3MiwzMjAwMiwzMjAzMSwzMjA2MSwzMjA5MCwzMjEyMCwzMjE1MCwz MjE4MCwzMjIwOSwzMjIzOSwzMjI2OCwzMjI5OCwzMjMyNywzMjM1NywzMjM4 NiwzMjQxNiwzMjQ0NSwzMjQ3NSwzMjUwNCwzMjUzNCwzMjU2MywzMjU5Mywz MjYyMiwzMjY1MiwzMjY4MSwzMjcxMSwzMjc0MCwzMjc3MCwzMjc5OSwzMjgy OSwzMjg1OCwzMjg4OCwzMjkxNywzMjk0NywzMjk3NiwzMzAwNiwzMzAzNSwz MzA2NSwzMzA5NCwzMzEyNCwzMzE1MywzMzE4MywzMzIxMywzMzI0MywzMzI3 MiwzMzMwMiwzMzMzMSwzMzM2MSwzMzM5MCwzMzQyMCwzMzQ1MCwzMzQ3OSwz MzUwOSwzMzUzOSwzMzU2OCwzMzU5OCwzMzYyNywzMzY1NywzMzY4NiwzMzcx NiwzMzc0NSwzMzc3NSwzMzgwNCwzMzgzNCwzMzg2MywzMzg5MywzMzkyMiwz Mzk1MiwzMzk4MSwzNDAxMSwzNDA0MCwzNDA2OSwzNDA5OSwzNDEyOCwzNDE1 OCwzNDE4NywzNDIxNywzNDI0NywzNDI3NywzNDMwNiwzNDMzNiwzNDM2NSwz NDM5NSwzNDQyNCwzNDQ1NCwzNDQ4MywzNDUxMiwzNDU0MiwzNDU3MSwzNDYw MSwzNDYzMSwzNDY2MCwzNDY5MCwzNDcxOSwzNDc0OSwzNDc3OCwzNDgwOCwz NDgzNywzNDg2NywzNDg5NiwzNDkyNiwzNDk1NSwzNDk4NSwzNTAxNSwzNTA0 NCwzNTA3NCwzNTEwMywzNTEzMywzNTE2MiwzNTE5MiwzNTIyMiwzNTI1MSwz NTI4MCwzNTMxMCwzNTM0MCwzNTM3MCwzNTM5OSwzNTQyOSwzNTQ1OCwzNTQ4 OCwzNTUxNywzNTU0NywzNTU3NiwzNTYwNSwzNTYzNSwzNTY2NSwzNTY5NCwz NTcyMywzNTc1MywzNTc4MiwzNTgxMSwzNTg0MSwzNTg3MSwzNTkwMSwzNTkz MCwzNTk2MCwzNTk4OSwzNjAxOSwzNjA0OCwzNjA3OCwzNjEwNywzNjEzNiwz NjE2NiwzNjE5NSwzNjIyNSwzNjI1NCwzNjI4NCwzNjMxNCwzNjM0MywzNjM3 MywzNjQwMywzNjQzMywzNjQ2MiwzNjQ5MiwzNjUyMSwzNjU1MSwzNjU4MCwz NjYxMCwzNjYzOSwzNjY2OSwzNjY5OCwzNjcyOCwzNjc1NywzNjc4NiwzNjgx NiwzNjg0NSwzNjg3NSwzNjkwNCwzNjkzNCwzNjk2MywzNjk5MywzNzAyMiwz NzA1MiwzNzA4MSwzNzExMSwzNzE0MSwzNzE3MCwzNzIwMCwzNzIyOSwzNzI1 OSwzNzI4OCwzNzMxOCwzNzM0NywzNzM3NywzNzQwNiwzNzQzNiwzNzQ2NSwz NzQ5NSwzNzUyNCwzNzU1NCwzNzU4NCwzNzYxMywzNzY0MywzNzY3MiwzNzcw MSwzNzczMSwzNzc2MCwzNzc5MCwzNzgxOSwzNzg0OSwzNzg3OCwzNzkwOCwz NzkzOCwzNzk2NywzNzk5NywzODAyNywzODA1NiwzODA4NSwzODExNSwzODE0 NCwzODE3NCwzODIwMywzODIzMywzODI2MiwzODI5MiwzODMyMiwzODM1MSwz ODM4MSwzODQxMCwzODQ0MCwzODQ2OSwzODQ5OSwzODUyOCwzODU1OCwzODU4 NywzODYxNywzODY0NiwzODY3NiwzODcwNSwzODczNSwzODc2NCwzODc5NCwz ODgyMywzODg1MywzODg4MiwzODkxMiwzODk0MSwzODk3MSwzOTAwMSwzOTAz MCwzOTA1OSwzOTA4OSwzOTExOCwzOTE0OCwzOTE3OCwzOTIwOCwzOTIzNywz OTI2NywzOTI5NywzOTMyNiwzOTM1NSwzOTM4NSwzOTQxNCwzOTQ0NCwzOTQ3 MywzOTUwMywzOTUzMiwzOTU2MiwzOTU5MiwzOTYyMSwzOTY1MCwzOTY4MCwz OTcwOSwzOTczOSwzOTc2OCwzOTc5OCwzOTgyNywzOTg1NywzOTg4NiwzOTkx NiwzOTk0NiwzOTk3NSw0MDAwNSw0MDAzNSw0MDA2NCw0MDA5NCw0MDEyMyw0 MDE1Myw0MDE4Miw0MDIxMiw0MDI0MSw0MDI3MSw0MDMwMCw0MDMzMCw0MDM1 OSw0MDM4OSw0MDQxOCw0MDQ0OCw0MDQ3Nyw0MDUwNyw0MDUzNiw0MDU2Niw0 MDU5NSw0MDYyNSw0MDY1NSw0MDY4NSw0MDcxNCw0MDc0NCw0MDc3Myw0MDgw Myw0MDgzMiw0MDg2Miw0MDg5Miw0MDkyMSw0MDk1MSw0MDk4MCw0MTAwOSw0 MTAzOSw0MTA2OCw0MTA5OCw0MTEyNyw0MTE1Nyw0MTE4Niw0MTIxNiw0MTI0 NSw0MTI3NSw0MTMwNCw0MTMzNCw0MTM2NCw0MTM5Myw0MTQyMiw0MTQ1Miw0 MTQ4MSw0MTUxMSw0MTU0MCw0MTU3MCw0MTU5OSw0MTYyOSw0MTY1OCw0MTY4 OCw0MTcxOCw0MTc0OCw0MTc3Nyw0MTgwNyw0MTgzNiw0MTg2NSw0MTg5NCw0 MTkyNCw0MTk1Myw0MTk4Myw0MjAxMiw0MjA0Miw0MjA3Miw0MjEwMiw0MjEz MSw0MjE2MSw0MjE5MCw0MjIyMCw0MjI0OSw0MjI3OSw0MjMwOCw0MjMzNyw0 MjM2Nyw0MjM5Nyw0MjQyNiw0MjQ1Niw0MjQ4NSw0MjUxNSw0MjU0NSw0MjU3 NCw0MjYwNCw0MjYzMyw0MjY2Miw0MjY5Miw0MjcyMSw0Mjc1MSw0Mjc4MCw0 MjgxMCw0MjgzOSw0Mjg2OSw0Mjg5OSw0MjkyOSw0Mjk1OCw0Mjk4OCw0MzAx Nyw0MzA0Niw0MzA3Niw0MzEwNSw0MzEzNSw0MzE2NCw0MzE5NCw0MzIyMyw0 MzI1Myw0MzI4Myw0MzMxMiw0MzM0Miw0MzM3MSw0MzQwMSw0MzQzMCw0MzQ2 MCw0MzQ4OSw0MzUxOSw0MzU0OCw0MzU3OCw0MzYwNyw0MzYzNyw0MzY2Niw0 MzY5Niw0MzcyNiw0Mzc1NSw0Mzc4NSw0MzgxNCw0Mzg0NCw0Mzg3Myw0Mzkw Myw0MzkzMiw0Mzk2Miw0Mzk5MSw0NDAyMSw0NDA1MCw0NDA4MCw0NDEwOSw0 NDEzOSw0NDE2OSw0NDE5OCw0NDIyOCw0NDI1OCw0NDI4Nyw0NDMxNyw0NDM0 Niw0NDM3NSw0NDQwNSw0NDQzNCw0NDQ2NCw0NDQ5Myw0NDUyMyw0NDU1Myw0 NDU4Miw0NDYxMiw0NDY0MSw0NDY3MSw0NDcwMCw0NDczMCw0NDc1OSw0NDc4 OCw0NDgxOCw0NDg0Nyw0NDg3Nyw0NDkwNiw0NDkzNiw0NDk2Niw0NDk5Niw0 NTAyNSw0NTA1NSw0NTA4NCw0NTExNCw0NTE0Myw0NTE3Miw0NTIwMiw0NTIz MSw0NTI2MSw0NTI5MCw0NTMyMCw0NTM1MCw0NTM4MCw0NTQwOSw0NTQzOSw0 NTQ2OCw0NTQ5OCw0NTUyNyw0NTU1Niw0NTU4Niw0NTYxNSw0NTY0NCw0NTY3 NCw0NTcwNCw0NTczMyw0NTc2Myw0NTc5Myw0NTgyMyw0NTg1Miw0NTg4Miw0 NTkxMSw0NTk0MCw0NTk3MCw0NTk5OSw0NjAyOCw0NjA1OCw0NjA4OCw0NjEx Nyw0NjE0Nyw0NjE3Nyw0NjIwNiw0NjIzNiw0NjI2NSw0NjI5NSw0NjMyNCw0 NjM1NCw0NjM4Myw0NjQxMyw0NjQ0Miw0NjQ3Miw0NjUwMSw0NjUzMSw0NjU2 MCw0NjU5MCw0NjYyMCw0NjY0OSw0NjY3OSw0NjcwOCw0NjczOCw0Njc2Nyw0 Njc5Nyw0NjgyNiw0Njg1Niw0Njg4NSw0NjkxNSw0Njk0NCw0Njk3NCw0NzAw Myw0NzAzMyw0NzA2Myw0NzA5Miw0NzEyMiw0NzE1MSw0NzE4MSw0NzIxMCw0 NzI0MCw0NzI2OSw0NzI5OCw0NzMyOCw0NzM1Nyw0NzM4Nyw0NzQxNyw0NzQ0 Niw0NzQ3Niw0NzUwNiw0NzUzNSw0NzU2NSw0NzU5NCw0NzYyNCw0NzY1Myw0 NzY4Miw0NzcxMiw0Nzc0MSw0Nzc3MSw0NzgwMCw0NzgzMCw0Nzg2MCw0Nzg5 MCw0NzkxOSw0Nzk0OSw0Nzk3OCw0ODAwOCw0ODAzNyw0ODA2Niw0ODA5Niw0 ODEyNSw0ODE1NSw0ODE4NCw0ODIxNCw0ODI0NCw0ODI3Myw0ODMwMyw0ODMz Myw0ODM2Miw0ODM5Miw0ODQyMSw0ODQ1MCw0ODQ4MCw0ODUwOSw0ODUzOCw0 ODU2OCw0ODU5OCw0ODYyNyw0ODY1Nyw0ODY4Nyw0ODcxNyw0ODc0Niw0ODc3 Niw0ODgwNSw0ODgzNCw0ODg2NCw0ODg5Myw0ODkyMiw0ODk1Miw0ODk4Miw0 OTAxMSw0OTA0MSw0OTA3MSw0OTEwMCw0OTEzMCw0OTE2MCw0OTE4OSw0OTIx OCw0OTI0OCw0OTI3Nyw0OTMwNiw0OTMzNiw0OTM2NSw0OTM5NSw0OTQyNSw0 OTQ1NSw0OTQ4NCw0OTUxNCw0OTU0Myw0OTU3Myw0OTYwMiw0OTYzMiw0OTY2 MSw0OTY5MCw0OTcyMCw0OTc0OSw0OTc3OSw0OTgwOSw0OTgzOCw0OTg2OCw0 OTg5OCw0OTkyNyw0OTk1Nyw0OTk4Niw1MDAxNiw1MDA0NSw1MDA3NSw1MDEw NCw1MDEzMyw1MDE2Myw1MDE5Miw1MDIyMiw1MDI1Miw1MDI4MSw1MDMxMSw1 MDM0MCw1MDM3MCw1MDQwMCw1MDQyOSw1MDQ1OSw1MDQ4OCw1MDUxOCw1MDU0 Nyw1MDU3Niw1MDYwNiw1MDYzNSw1MDY2NSw1MDY5NCw1MDcyNCw1MDc1NCw1 MDc4NCw1MDgxMyw1MDg0Myw1MDg3Miw1MDkwMiw1MDkzMSw1MDk2MCw1MDk5 MCw1MTAxOSw1MTA0OSw1MTA3OCw1MTEwOCw1MTEzOCw1MTE2Nyw1MTE5Nyw1 MTIyNyw1MTI1Niw1MTI4Niw1MTMxNSw1MTM0NSw1MTM3NCw1MTQwMyw1MTQz Myw1MTQ2Miw1MTQ5Miw1MTUyMiw1MTU1Miw1MTU4Miw1MTYxMSw1MTY0MSw1 MTY3MCw1MTY5OSw1MTcyOSw1MTc1OCw1MTc4Nyw1MTgxNiw1MTg0Niw1MTg3 Niw1MTkwNiw1MTkzNiw1MTk2NSw1MTk5NSw1MjAyNSw1MjA1NCw1MjA4Myw1 MjExMyw1MjE0Miw1MjE3MSw1MjIwMCw1MjIzMCw1MjI2MCw1MjI5MCw1MjMx OSw1MjM0OSw1MjM3OSw1MjQwOCw1MjQzOCw1MjQ2Nyw1MjQ5Nyw1MjUyNiw1 MjU1NSw1MjU4NSw1MjYxNCw1MjY0NCw1MjY3Myw1MjcwMyw1MjczMyw1Mjc2 Miw1Mjc5Miw1MjgyMiw1Mjg1MSw1Mjg4MSw1MjkxMCw1MjkzOSw1Mjk2OSw1 Mjk5OCw1MzAyOCw1MzA1Nyw1MzA4Nyw1MzExNiw1MzE0Niw1MzE3Niw1MzIw NSw1MzIzNSw1MzI2NCw1MzI5NCw1MzMyNCw1MzM1Myw1MzM4Myw1MzQxMiw1 MzQ0MSw1MzQ3MSw1MzUwMCw1MzUzMCw1MzU1OSw1MzU4OSw1MzYxOSw1MzY0 OCw1MzY3OCw1MzcwOCw1MzczNyw1Mzc2Nyw1Mzc5Niw1MzgyNSw1Mzg1NSw1 Mzg4NCw1MzkxMyw1Mzk0Myw1Mzk3Myw1NDAwMyw1NDAzMiw1NDA2Miw1NDA5 Miw1NDEyMSw1NDE1MSw1NDE4MCw1NDIwOSw1NDIzOSw1NDI2OCw1NDI5Nyw1 NDMyNyw1NDM1Nyw1NDM4Nyw1NDQxNiw1NDQ0Niw1NDQ3Niw1NDUwNSw1NDUz NSw1NDU2NCw1NDU5Myw1NDYyMyw1NDY1Miw1NDY4MSw1NDcxMSw1NDc0MSw1 NDc3MCw1NDgwMCw1NDgzMCw1NDg1OSw1NDg4OSw1NDkxOSw1NDk0OCw1NDk3 Nyw1NTAwNyw1NTAzNiw1NTA2Niw1NTA5NSw1NTEyNSw1NTE1NCw1NTE4NCw1 NTIxMyw1NTI0Myw1NTI3Myw1NTMwMiw1NTMzMiw1NTM2MSw1NTM5MSw1NTQy MCw1NTQ1MCw1NTQ3OSw1NTUwOCw1NTUzOCw1NTU2Nyw1NTU5Nyw1NTYyNyw1 NTY1Nyw1NTY4Niw1NTcxNiw1NTc0NSw1NTc3NSw1NTgwNCw1NTgzNCw1NTg2 Myw1NTg5Miw1NTkyMiw1NTk1MSw1NTk4MSw1NjAxMSw1NjA0MCw1NjA3MCw1 NjEwMCw1NjEyOSw1NjE1OSw1NjE4OCw1NjIxOCw1NjI0Nyw1NjI3Niw1NjMw Niw1NjMzNSw1NjM2NSw1NjM5NCw1NjQyNCw1NjQ1NCw1NjQ4Myw1NjUxMyw1 NjU0Myw1NjU3Miw1NjYwMSw1NjYzMSw1NjY2MCw1NjY5MCw1NjcxOSw1Njc0 OSw1Njc3OCw1NjgwOCw1NjgzNyw1Njg2Nyw1Njg5Nyw1NjkyNiw1Njk1Niw1 Njk4NSw1NzAxNSw1NzA0NCw1NzA3NCw1NzEwMyw1NzEzMyw1NzE2Miw1NzE5 Miw1NzIyMSw1NzI1MSw1NzI4MCw1NzMxMCw1NzM0MCw1NzM2OSw1NzM5OSw1 NzQyOSw1NzQ1OCw1NzQ4Nyw1NzUxNyw1NzU0Niw1NzU3Niw1NzYwNSw1NzYz NCw1NzY2NCw1NzY5NCw1NzcyMyw1Nzc1Myw1Nzc4Myw1NzgxMyw1Nzg0Miw1 Nzg3MSw1NzkwMSw1NzkzMCw1Nzk1OSw1Nzk4OSw1ODAxOCw1ODA0OCw1ODA3 Nyw1ODEwNyw1ODEzNyw1ODE2Nyw1ODE5Niw1ODIyNiw1ODI1NSw1ODI4NSw1 ODMxNCw1ODM0Myw1ODM3Myw1ODQwMiw1ODQzMiw1ODQ2MSw1ODQ5MSw1ODUy MSw1ODU1MSw1ODU4MCw1ODYxMCw1ODYzOSw1ODY2OSw1ODY5OCw1ODcyNyw1 ODc1Nyw1ODc4Niw1ODgxNiw1ODg0NSw1ODg3NSw1ODkwNSw1ODkzNCw1ODk2 NCw1ODk5NCw1OTAyMyw1OTA1Myw1OTA4Miw1OTExMSw1OTE0MSw1OTE3MCw1 OTIwMCw1OTIyOSw1OTI1OSw1OTI4OCw1OTMxOCw1OTM0OCw1OTM3Nyw1OTQw Nyw1OTQzNiw1OTQ2Niw1OTQ5NSw1OTUyNSw1OTU1NCw1OTU4NCw1OTYxMyw1 OTY0Myw1OTY3Miw1OTcwMiw1OTczMSw1OTc2MSw1OTc5MSw1OTgyMCw1OTg1 MCw1OTg3OSw1OTkwOSw1OTkzOSw1OTk2OCw1OTk5Nyw2MDAyNyw2MDA1Niw2 MDA4Niw2MDExNSw2MDE0NSw2MDE3NCw2MDIwNCw2MDIzNCw2MDI2NCw2MDI5 Myw2MDMyMyw2MDM1Miw2MDM4MSw2MDQxMSw2MDQ0MCw2MDQ2OSw2MDQ5OSw2 MDUyOCw2MDU1OCw2MDU4OCw2MDYxOCw2MDY0OCw2MDY3Nyw2MDcwNyw2MDcz Niw2MDc2NSw2MDc5NSw2MDgyNCw2MDg1Myw2MDg4Myw2MDkxMiw2MDk0Miw2 MDk3Miw2MTAwMiw2MTAzMSw2MTA2MSw2MTA5MCw2MTEyMCw2MTE0OSw2MTE3 OSw2MTIwOCw2MTIzNyw2MTI2Nyw2MTI5Niw2MTMyNiw2MTM1Niw2MTM4NSw2 MTQxNSw2MTQ0NSw2MTQ3NCw2MTUwNCw2MTUzMyw2MTU2Myw2MTU5Miw2MTYy MSw2MTY1MSw2MTY4MCw2MTcxMCw2MTczOSw2MTc2OSw2MTc5OSw2MTgyOCw2 MTg1OCw2MTg4OCw2MTkxNyw2MTk0Nyw2MTk3Niw2MjAwNiw2MjAzNSw2MjA2 NCw2MjA5NCw2MjEyMyw2MjE1Myw2MjE4Miw2MjIxMiw2MjI0Miw2MjI3MSw2 MjMwMSw2MjMzMSw2MjM2MCw2MjM5MCw2MjQxOSw2MjQ0OCw2MjQ3OCw2MjUw Nyw2MjUzNyw2MjU2Niw2MjU5Niw2MjYyNSw2MjY1NSw2MjY4NSw2MjcxNSw2 Mjc0NCw2Mjc3NCw2MjgwMyw2MjgzMiw2Mjg2Miw2Mjg5MSw2MjkyMSw2Mjk1 MCw2Mjk4MCw2MzAwOSw2MzAzOSw2MzA2OSw2MzA5OSw2MzEyOCw2MzE1Nyw2 MzE4Nyw2MzIxNiw2MzI0Niw2MzI3NSw2MzMwNSw2MzMzNCw2MzM2Myw2MzM5 Myw2MzQyMyw2MzQ1Myw2MzQ4Miw2MzUxMiw2MzU0MSw2MzU3MSw2MzYwMCw2 MzYzMCw2MzY1OSw2MzY4OSw2MzcxOCw2Mzc0Nyw2Mzc3Nyw2MzgwNyw2Mzgz Niw2Mzg2Niw2Mzg5NSw2MzkyNSw2Mzk1NSw2Mzk4NCw2NDAxNCw2NDA0Myw2 NDA3Myw2NDEwMiw2NDEzMSw2NDE2MSw2NDE5MCw2NDIyMCw2NDI0OSw2NDI3 OSw2NDMwOSw2NDMzOSw2NDM2OCw2NDM5OCw2NDQyNyw2NDQ1Nyw2NDQ4Niw2 NDUxNSw2NDU0NSw2NDU3NCw2NDYwMyw2NDYzMyw2NDY2Myw2NDY5Miw2NDcy Miw2NDc1Miw2NDc4Miw2NDgxMSw2NDg0MSw2NDg3MCw2NDg5OSw2NDkyOSw2 NDk1OCw2NDk4Nyw2NTAxNyw2NTA0Nyw2NTA3Niw2NTEwNiw2NTEzNiw2NTE2 Niw2NTE5NSw2NTIyNSw2NTI1NCw2NTI4Myw2NTMxMyw2NTM0Miw2NTM3MSw2 NTQwMSw2NTQzMSw2NTQ2MCw2NTQ5MCw2NTUyMCw2NTU0OSw2NTU3OSw2NTYw OCw2NTYzOCw2NTY2Nyw2NTY5Nyw2NTcyNiw2NTc1NSw2NTc4NSw2NTgxNSw2 NTg0NCw2NTg3NCw2NTkwMyw2NTkzMyw2NTk2Myw2NTk5Miw2NjAyMiw2NjA1 MSw2NjA4MSw2NjExMCw2NjE0MCw2NjE2OSw2NjE5OSw2NjIyOCw2NjI1OCw2 NjI4Nyw2NjMxNyw2NjM0Niw2NjM3Niw2NjQwNSw2NjQzNSw2NjQ2NSw2NjQ5 NCw2NjUyNCw2NjU1Myw2NjU4Myw2NjYxMiw2NjY0MSw2NjY3MSw2NjcwMCw2 NjczMCw2Njc2MCw2Njc4OSw2NjgxOSw2Njg0OSw2Njg3OCw2NjkwOCw2Njkz Nyw2Njk2Nyw2Njk5Niw2NzAyNSw2NzA1NSw2NzA4NCw2NzExNCw2NzE0Myw2 NzE3Myw2NzIwMyw2NzIzMyw2NzI2Miw2NzI5Miw2NzMyMSw2NzM1MSw2NzM4 MCw2NzQwOSw2NzQzOSw2NzQ2OCw2NzQ5Nyw2NzUyNyw2NzU1Nyw2NzU4Nyw2 NzYxNyw2NzY0Niw2NzY3Niw2NzcwNSw2NzczNSw2Nzc2NCw2Nzc5Myw2Nzgy Myw2Nzg1Miw2Nzg4Miw2NzkxMSw2Nzk0MSw2Nzk3MSw2OGUzLDY4MDMwLDY4 MDYwLDY4MDg5LDY4MTE5LDY4MTQ4LDY4MTc3LDY4MjA3LDY4MjM2LDY4MjY2 LDY4Mjk1LDY4MzI1LDY4MzU0LDY4Mzg0LDY4NDE0LDY4NDQzLDY4NDczLDY4 NTAyLDY4NTMyLDY4NTYxLDY4NTkxLDY4NjIwLDY4NjUwLDY4Njc5LDY4NzA4 LDY4NzM4LDY4NzY4LDY4Nzk3LDY4ODI3LDY4ODU3LDY4ODg2LDY4OTE2LDY4 OTQ2LDY4OTc1LDY5MDA0LDY5MDM0LDY5MDYzLDY5MDkyLDY5MTIyLDY5MTUy LDY5MTgxLDY5MjExLDY5MjQwLDY5MjcwLDY5MzAwLDY5MzMwLDY5MzU5LDY5 Mzg4LDY5NDE4LDY5NDQ3LDY5NDc2LDY5NTA2LDY5NTM1LDY5NTY1LDY5NTk1 LDY5NjI0LDY5NjU0LDY5Njg0LDY5NzEzLDY5NzQzLDY5NzcyLDY5ODAyLDY5 ODMxLDY5ODYxLDY5ODkwLDY5OTE5LDY5OTQ5LDY5OTc4LDcwMDA4LDcwMDM4 LDcwMDY3LDcwMDk3LDcwMTI2LDcwMTU2LDcwMTg2LDcwMjE1LDcwMjQ1LDcw Mjc0LDcwMzAzLDcwMzMzLDcwMzYyLDcwMzkyLDcwNDIxLDcwNDUxLDcwNDgx LDcwNTEwLDcwNTQwLDcwNTcwLDcwNTk5LDcwNjI5LDcwNjU4LDcwNjg3LDcw NzE3LDcwNzQ2LDcwNzc2LDcwODA1LDcwODM1LDcwODY0LDcwODk0LDcwOTI0 LDcwOTU0LDcwOTgzLDcxMDEzLDcxMDQyLDcxMDcxLDcxMTAxLDcxMTMwLDcx MTU5LDcxMTg5LDcxMjE4LDcxMjQ4LDcxMjc4LDcxMzA4LDcxMzM3LDcxMzY3 LDcxMzk3LDcxNDI2LDcxNDU1LDcxNDg1LDcxNTE0LDcxNTQzLDcxNTczLDcx NjAyLDcxNjMyLDcxNjYyLDcxNjkxLDcxNzIxLDcxNzUxLDcxNzgxLDcxODEw LDcxODM5LDcxODY5LDcxODk4LDcxOTI3LDcxOTU3LDcxOTg2LDcyMDE2LDcy MDQ2LDcyMDc1LDcyMTA1LDcyMTM1LDcyMTY0LDcyMTk0LDcyMjIzLDcyMjUz LDcyMjgyLDcyMzExLDcyMzQxLDcyMzcwLDcyNDAwLDcyNDI5LDcyNDU5LDcy NDg5LDcyNTE4LDcyNTQ4LDcyNTc3LDcyNjA3LDcyNjM3LDcyNjY2LDcyNjk1 LDcyNzI1LDcyNzU0LDcyNzg0LDcyODEzLDcyODQzLDcyODcyLDcyOTAyLDcy OTMxLDcyOTYxLDcyOTkxLDczMDIwLDczMDUwLDczMDgwLDczMTA5LDczMTM5 LDczMTY4LDczMTk3LDczMjI3LDczMjU2LDczMjg2LDczMzE1LDczMzQ1LDcz Mzc1LDczNDA0LDczNDM0LDczNDY0LDczNDkzLDczNTIzLDczNTUyLDczNTgx LDczNjExLDczNjQwLDczNjY5LDczNjk5LDczNzI5LDczNzU4LDczNzg4LDcz ODE4LDczODQ4LDczODc3LDczOTA3LDczOTM2LDczOTY1LDczOTk1LDc0MDI0 LDc0MDUzLDc0MDgzLDc0MTEzLDc0MTQyLDc0MTcyLDc0MjAyLDc0MjMxLDc0 MjYxLDc0MjkxLDc0MzIwLDc0MzQ5LDc0Mzc5LDc0NDA4LDc0NDM3LDc0NDY3 LDc0NDk3LDc0NTI2LDc0NTU2LDc0NTg2LDc0NjE1LDc0NjQ1LDc0Njc1LDc0 NzA0LDc0NzMzLDc0NzYzLDc0NzkyLDc0ODIyLDc0ODUxLDc0ODgxLDc0OTEw LDc0OTQwLDc0OTY5LDc0OTk5LDc1MDI5LDc1MDU4LDc1MDg4LDc1MTE3LDc1 MTQ3LDc1MTc2LDc1MjA2LDc1MjM1LDc1MjY0LDc1Mjk0LDc1MzIzLDc1MzUz LDc1MzgzLDc1NDEyLDc1NDQyLDc1NDcyLDc1NTAxLDc1NTMxLDc1NTYwLDc1 NTkwLDc1NjE5LDc1NjQ4LDc1Njc4LDc1NzA3LDc1NzM3LDc1NzY2LDc1Nzk2 LDc1ODI2LDc1ODU2LDc1ODg1LDc1OTE1LDc1OTQ0LDc1OTc0LDc2MDAzLDc2 MDMyLDc2MDYyLDc2MDkxLDc2MTIxLDc2MTUwLDc2MTgwLDc2MjEwLDc2MjM5 LDc2MjY5LDc2Mjk5LDc2MzI4LDc2MzU4LDc2Mzg3LDc2NDE2LDc2NDQ2LDc2 NDc1LDc2NTA1LDc2NTM0LDc2NTY0LDc2NTkzLDc2NjIzLDc2NjUzLDc2Njgy LDc2NzEyLDc2NzQxLDc2NzcxLDc2ODAxLDc2ODMwLDc2ODU5LDc2ODg5LDc2 OTE4LDc2OTQ4LDc2OTc3LDc3MDA3LDc3MDM2LDc3MDY2LDc3MDk2LDc3MTI1 LDc3MTU1LDc3MTg1LDc3MjE0LDc3MjQzLDc3MjczLDc3MzAyLDc3MzMyLDc3 MzYxLDc3MzkwLDc3NDIwLDc3NDUwLDc3NDc5LDc3NTA5LDc3NTM5LDc3NTY5 LDc3NTk4LDc3NjI3LDc3NjU3LDc3Njg2LDc3NzE1LDc3NzQ1LDc3Nzc0LDc3 ODA0LDc3ODMzLDc3ODYzLDc3ODkzLDc3OTIzLDc3OTUyLDc3OTgyLDc4MDEx LDc4MDQxLDc4MDcwLDc4MDk5LDc4MTI5LDc4MTU4LDc4MTg4LDc4MjE3LDc4 MjQ3LDc4Mjc3LDc4MzA3LDc4MzM2LDc4MzY2LDc4Mzk1LDc4NDI1LDc4NDU0 LDc4NDgzLDc4NTEzLDc4NTQyLDc4NTcyLDc4NjAxLDc4NjMxLDc4NjYxLDc4 NjkwLDc4NzIwLDc4NzUwLDc4Nzc5LDc4ODA4LDc4ODM4LDc4ODY3LDc4ODk3 LDc4OTI2LDc4OTU2LDc4OTg1LDc5MDE1LDc5MDQ0LDc5MDc0LDc5MTA0LDc5 MTMzLDc5MTYzLDc5MTkyLDc5MjIyLDc5MjUxLDc5MjgxLDc5MzEwLDc5MzQw LDc5MzY5LDc5Mzk5LDc5NDI4LDc5NDU4LDc5NDg3LDc5NTE3LDc5NTQ2LDc5 NTc2LDc5NjA2LDc5NjM1LDc5NjY1LDc5Njk1LDc5NzI0LDc5NzUzLDc5Nzgz LDc5ODEyLDc5ODQxLDc5ODcxLDc5OTAwLDc5OTMwLDc5OTYwLDc5OTkwXX0s eyIuLi9tYWluIjo1NzAsIm9iamVjdC1hc3NpZ24iOjQ1Nn1dLDU3MDpbZnVu Y3Rpb24odCxlLHIpe3ZhciBuPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlv biBhKCl7dGhpcy5yZWdpb25hbE9wdGlvbnM9W10sdGhpcy5yZWdpb25hbE9w dGlvbnNbIiJdPXtpbnZhbGlkQ2FsZW5kYXI6IkNhbGVuZGFyIHswfSBub3Qg Zm91bmQiLGludmFsaWREYXRlOiJJbnZhbGlkIHswfSBkYXRlIixpbnZhbGlk TW9udGg6IkludmFsaWQgezB9IG1vbnRoIixpbnZhbGlkWWVhcjoiSW52YWxp ZCB7MH0geWVhciIsZGlmZmVyZW50Q2FsZW5kYXJzOiJDYW5ub3QgbWl4IHsw fSBhbmQgezF9IGRhdGVzIn0sdGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0 aW9uc1siIl0sdGhpcy5jYWxlbmRhcnM9e30sdGhpcy5fbG9jYWxDYWxzPXt9 fWZ1bmN0aW9uIGkodCxlLHIsbil7aWYodGhpcy5fY2FsZW5kYXI9dCx0aGlz Ll95ZWFyPWUsdGhpcy5fbW9udGg9cix0aGlzLl9kYXk9biwwPT09dGhpcy5f Y2FsZW5kYXIuX3ZhbGlkYXRlTGV2ZWwmJiF0aGlzLl9jYWxlbmRhci5pc1Zh bGlkKHRoaXMuX3llYXIsdGhpcy5fbW9udGgsdGhpcy5fZGF5KSl0aHJvdyhj LmxvY2FsLmludmFsaWREYXRlfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52 YWxpZERhdGUpLnJlcGxhY2UoL1x7MFx9Lyx0aGlzLl9jYWxlbmRhci5sb2Nh bC5uYW1lKX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIjAwMDAwMCIuc3Vic3Ry aW5nKDAsZS0odD0iIit0KS5sZW5ndGgpK3R9ZnVuY3Rpb24gcygpe3RoaXMu c2hvcnRZZWFyQ3V0b2ZmPSIrMTAifWZ1bmN0aW9uIGwodCl7dGhpcy5sb2Nh bD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0XXx8dGhpcy5yZWdpb25hbE9wdGlv bnNbIiJdfW4oYS5wcm90b3R5cGUse2luc3RhbmNlOmZ1bmN0aW9uKHQsZSl7 dD0odHx8ImdyZWdvcmlhbiIpLnRvTG93ZXJDYXNlKCksZT1lfHwiIjt2YXIg cj10aGlzLl9sb2NhbENhbHNbdCsiLSIrZV07aWYoIXImJnRoaXMuY2FsZW5k YXJzW3RdJiYocj1uZXcgdGhpcy5jYWxlbmRhcnNbdF0oZSksdGhpcy5fbG9j YWxDYWxzW3QrIi0iK2VdPXIpLCFyKXRocm93KHRoaXMubG9jYWwuaW52YWxp ZENhbGVuZGFyfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZENh bGVuZGFyKS5yZXBsYWNlKC9cezBcfS8sdCk7cmV0dXJuIHJ9LG5ld0RhdGU6 ZnVuY3Rpb24odCxlLHIsbixhKXtyZXR1cm4obj0obnVsbCE9dCYmdC55ZWFy P3QuY2FsZW5kYXIoKToic3RyaW5nIj09dHlwZW9mIG4/dGhpcy5pbnN0YW5j ZShuLGEpOm4pfHx0aGlzLmluc3RhbmNlKCkpLm5ld0RhdGUodCxlLHIpfSxz dWJzdGl0dXRlRGlnaXRzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihl KXtyZXR1cm4oZSsiIikucmVwbGFjZSgvWzAtOV0vZyxmdW5jdGlvbihlKXty ZXR1cm4gdFtlXX0pfX0sc3Vic3RpdHV0ZUNoaW5lc2VEaWdpdHM6ZnVuY3Rp b24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7Zm9yKHZhciBuPSIiLGE9MDty PjA7KXt2YXIgaT1yJTEwO249KDA9PT1pPyIiOnRbaV0rZVthXSkrbixhKyss cj1NYXRoLmZsb29yKHIvMTApfXJldHVybiAwPT09bi5pbmRleE9mKHRbMV0r ZVsxXSkmJihuPW4uc3Vic3RyKDEpKSxufHx0WzBdfX19KSxuKGkucHJvdG90 eXBlLHtuZXdEYXRlOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fY2Fs ZW5kYXIubmV3RGF0ZShudWxsPT10P3RoaXM6dCxlLHIpfSx5ZWFyOmZ1bmN0 aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl95ZWFy OnRoaXMuc2V0KHQsInkiKX0sbW9udGg6ZnVuY3Rpb24odCl7cmV0dXJuIDA9 PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX21vbnRoOnRoaXMuc2V0KHQsIm0i KX0sZGF5OmZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0 aD90aGlzLl9kYXk6dGhpcy5zZXQodCwiZCIpfSxkYXRlOmZ1bmN0aW9uKHQs ZSxyKXtpZighdGhpcy5fY2FsZW5kYXIuaXNWYWxpZCh0LGUscikpdGhyb3co Yy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmlu dmFsaWREYXRlKS5yZXBsYWNlKC9cezBcfS8sdGhpcy5fY2FsZW5kYXIubG9j YWwubmFtZSk7cmV0dXJuIHRoaXMuX3llYXI9dCx0aGlzLl9tb250aD1lLHRo aXMuX2RheT1yLHRoaXN9LGxlYXBZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX2NhbGVuZGFyLmxlYXBZZWFyKHRoaXMpfSxlcG9jaDpmdW5jdGlvbigp e3JldHVybiB0aGlzLl9jYWxlbmRhci5lcG9jaCh0aGlzKX0sZm9ybWF0WWVh cjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhci5mb3JtYXRZZWFy KHRoaXMpfSxtb250aE9mWWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9j YWxlbmRhci5tb250aE9mWWVhcih0aGlzKX0sd2Vla09mWWVhcjpmdW5jdGlv bigpe3JldHVybiB0aGlzLl9jYWxlbmRhci53ZWVrT2ZZZWFyKHRoaXMpfSxk YXlzSW5ZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRh eXNJblllYXIodGhpcyl9LGRheU9mWWVhcjpmdW5jdGlvbigpe3JldHVybiB0 aGlzLl9jYWxlbmRhci5kYXlPZlllYXIodGhpcyl9LGRheXNJbk1vbnRoOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheXNJbk1vbnRoKHRo aXMpfSxkYXlPZldlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsZW5k YXIuZGF5T2ZXZWVrKHRoaXMpfSx3ZWVrRGF5OmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX2NhbGVuZGFyLndlZWtEYXkodGhpcyl9LGV4dHJhSW5mbzpmdW5j dGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhci5leHRyYUluZm8odGhpcyl9 LGFkZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jYWxlbmRhci5hZGQo dGhpcyx0LGUpfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fY2Fs ZW5kYXIuc2V0KHRoaXMsdCxlKX0sY29tcGFyZVRvOmZ1bmN0aW9uKHQpe2lm KHRoaXMuX2NhbGVuZGFyLm5hbWUhPT10Ll9jYWxlbmRhci5uYW1lKXRocm93 KGMubG9jYWwuZGlmZmVyZW50Q2FsZW5kYXJzfHxjLnJlZ2lvbmFsT3B0aW9u c1siIl0uZGlmZmVyZW50Q2FsZW5kYXJzKS5yZXBsYWNlKC9cezBcfS8sdGhp cy5fY2FsZW5kYXIubG9jYWwubmFtZSkucmVwbGFjZSgvXHsxXH0vLHQuX2Nh bGVuZGFyLmxvY2FsLm5hbWUpO3ZhciBlPXRoaXMuX3llYXIhPT10Ll95ZWFy P3RoaXMuX3llYXItdC5feWVhcjp0aGlzLl9tb250aCE9PXQuX21vbnRoP3Ro aXMubW9udGhPZlllYXIoKS10Lm1vbnRoT2ZZZWFyKCk6dGhpcy5fZGF5LXQu X2RheTtyZXR1cm4gMD09PWU/MDplPDA/LTE6MX0sY2FsZW5kYXI6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXJ9LHRvSkQ6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fY2FsZW5kYXIudG9KRCh0aGlzKX0sZnJvbUpEOmZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLl9jYWxlbmRhci5mcm9tSkQodCl9LHRvSlNE YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLnRvSlNEYXRl KHRoaXMpfSxmcm9tSlNEYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9j YWxlbmRhci5mcm9tSlNEYXRlKHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3Jl dHVybih0aGlzLnllYXIoKTwwPyItIjoiIikrbyhNYXRoLmFicyh0aGlzLnll YXIoKSksNCkrIi0iK28odGhpcy5tb250aCgpLDIpKyItIitvKHRoaXMuZGF5 KCksMil9fSksbihzLnByb3RvdHlwZSx7X3ZhbGlkYXRlTGV2ZWw6MCxuZXdE YXRlOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbnVsbD09dD90aGlzLnRvZGF5 KCk6KHQueWVhciYmKHRoaXMuX3ZhbGlkYXRlKHQsZSxyLGMubG9jYWwuaW52 YWxpZERhdGV8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkRGF0ZSks cj10LmRheSgpLGU9dC5tb250aCgpLHQ9dC55ZWFyKCkpLG5ldyBpKHRoaXMs dCxlLHIpKX0sdG9kYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mcm9tSlNE YXRlKG5ldyBEYXRlKX0sZXBvY2g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu X3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxjLmxvY2Fs LmludmFsaWRZZWFyfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZFll YXIpLnllYXIoKTwwP3RoaXMubG9jYWwuZXBvY2hzWzBdOnRoaXMubG9jYWwu ZXBvY2hzWzFdfSxmb3JtYXRZZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMu X3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxjLmxvY2Fs LmludmFsaWRZZWFyfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZFll YXIpO3JldHVybihlLnllYXIoKTwwPyItIjoiIikrbyhNYXRoLmFicyhlLnll YXIoKSksNCl9LG1vbnRoc0luWWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhp cy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LGMubG9j YWwuaW52YWxpZFllYXJ8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlk WWVhciksMTJ9LG1vbnRoT2ZZZWFyOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhp cy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxpZE1v bnRofHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZE1vbnRoKTtyZXR1 cm4oci5tb250aCgpK3RoaXMubW9udGhzSW5ZZWFyKHIpLXRoaXMuZmlyc3RN b250aCkldGhpcy5tb250aHNJblllYXIocikrdGhpcy5taW5Nb250aH0sZnJv bU1vbnRoT2ZZZWFyOmZ1bmN0aW9uKHQsZSl7dmFyIHI9KGUrdGhpcy5maXJz dE1vbnRoLTIqdGhpcy5taW5Nb250aCkldGhpcy5tb250aHNJblllYXIodCkr dGhpcy5taW5Nb250aDtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCxyLHRoaXMu bWluRGF5LGMubG9jYWwuaW52YWxpZE1vbnRofHxjLnJlZ2lvbmFsT3B0aW9u c1siIl0uaW52YWxpZE1vbnRoKSxyfSxkYXlzSW5ZZWFyOmZ1bmN0aW9uKHQp e3ZhciBlPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1p bkRheSxjLmxvY2FsLmludmFsaWRZZWFyfHxjLnJlZ2lvbmFsT3B0aW9uc1si Il0uaW52YWxpZFllYXIpO3JldHVybiB0aGlzLmxlYXBZZWFyKGUpPzM2Njoz NjV9LGRheU9mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fdmFs aWRhdGUodCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9w dGlvbnNbIiJdLmludmFsaWREYXRlKTtyZXR1cm4gbi50b0pEKCktdGhpcy5u ZXdEYXRlKG4ueWVhcigpLHRoaXMuZnJvbU1vbnRoT2ZZZWFyKG4ueWVhcigp LHRoaXMubWluTW9udGgpLHRoaXMubWluRGF5KS50b0pEKCkrMX0sZGF5c0lu V2VlazpmdW5jdGlvbigpe3JldHVybiA3fSxkYXlPZldlZWs6ZnVuY3Rpb24o dCxlLHIpe3ZhciBuPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLGMubG9jYWwuaW52 YWxpZERhdGV8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkRGF0ZSk7 cmV0dXJuKE1hdGguZmxvb3IodGhpcy50b0pEKG4pKSsyKSV0aGlzLmRheXNJ bldlZWsoKX0sZXh0cmFJbmZvOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhp cy5fdmFsaWRhdGUodCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdp b25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKSx7fX0sYWRkOmZ1bmN0aW9u KHQsZSxyKXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRo LHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxpZERhdGV8fGMucmVnaW9uYWxP cHRpb25zWyIiXS5pbnZhbGlkRGF0ZSksdGhpcy5fY29ycmVjdEFkZCh0LHRo aXMuX2FkZCh0LGUsciksZSxyKX0sX2FkZDpmdW5jdGlvbih0LGUscil7aWYo dGhpcy5fdmFsaWRhdGVMZXZlbCsrLCJkIj09PXJ8fCJ3Ij09PXIpe3ZhciBu PXQudG9KRCgpK2UqKCJ3Ij09PXI/dGhpcy5kYXlzSW5XZWVrKCk6MSksYT10 LmNhbGVuZGFyKCkuZnJvbUpEKG4pO3JldHVybiB0aGlzLl92YWxpZGF0ZUxl dmVsLS0sW2EueWVhcigpLGEubW9udGgoKSxhLmRheSgpXX10cnl7dmFyIGk9 dC55ZWFyKCkrKCJ5Ij09PXI/ZTowKSxvPXQubW9udGhPZlllYXIoKSsoIm0i PT09cj9lOjApO2E9dC5kYXkoKTsieSI9PT1yPyh0Lm1vbnRoKCkhPT10aGlz LmZyb21Nb250aE9mWWVhcihpLG8pJiYobz10aGlzLm5ld0RhdGUoaSx0Lm1v bnRoKCksdGhpcy5taW5EYXkpLm1vbnRoT2ZZZWFyKCkpLG89TWF0aC5taW4o byx0aGlzLm1vbnRoc0luWWVhcihpKSksYT1NYXRoLm1pbihhLHRoaXMuZGF5 c0luTW9udGgoaSx0aGlzLmZyb21Nb250aE9mWWVhcihpLG8pKSkpOiJtIj09 PXImJighZnVuY3Rpb24odCl7Zm9yKDtvPHQubWluTW9udGg7KWktLSxvKz10 Lm1vbnRoc0luWWVhcihpKTtmb3IodmFyIGU9dC5tb250aHNJblllYXIoaSk7 bz5lLTErdC5taW5Nb250aDspaSsrLG8tPWUsZT10Lm1vbnRoc0luWWVhcihp KX0odGhpcyksYT1NYXRoLm1pbihhLHRoaXMuZGF5c0luTW9udGgoaSx0aGlz LmZyb21Nb250aE9mWWVhcihpLG8pKSkpO3ZhciBzPVtpLHRoaXMuZnJvbU1v bnRoT2ZZZWFyKGksbyksYV07cmV0dXJuIHRoaXMuX3ZhbGlkYXRlTGV2ZWwt LSxzfWNhdGNoKHQpe3Rocm93IHRoaXMuX3ZhbGlkYXRlTGV2ZWwtLSx0fX0s X2NvcnJlY3RBZGQ6ZnVuY3Rpb24odCxlLHIsbil7aWYoISh0aGlzLmhhc1ll YXJaZXJvfHwieSIhPT1uJiYibSIhPT1ufHwwIT09ZVswXSYmdC55ZWFyKCk+ MD09ZVswXT4wKSl7dmFyIGE9e3k6WzEsMSwieSJdLG06WzEsdGhpcy5tb250 aHNJblllYXIoLTEpLCJtIl0sdzpbdGhpcy5kYXlzSW5XZWVrKCksdGhpcy5k YXlzSW5ZZWFyKC0xKSwiZCJdLGQ6WzEsdGhpcy5kYXlzSW5ZZWFyKC0xKSwi ZCJdfVtuXSxpPXI8MD8tMToxO2U9dGhpcy5fYWRkKHQsciphWzBdK2kqYVsx XSxhWzJdKX1yZXR1cm4gdC5kYXRlKGVbMF0sZVsxXSxlWzJdKX0sc2V0OmZ1 bmN0aW9uKHQsZSxyKXt0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgs dGhpcy5taW5EYXksYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9w dGlvbnNbIiJdLmludmFsaWREYXRlKTt2YXIgbj0ieSI9PT1yP2U6dC55ZWFy KCksYT0ibSI9PT1yP2U6dC5tb250aCgpLGk9ImQiPT09cj9lOnQuZGF5KCk7 cmV0dXJuInkiIT09ciYmIm0iIT09cnx8KGk9TWF0aC5taW4oaSx0aGlzLmRh eXNJbk1vbnRoKG4sYSkpKSx0LmRhdGUobixhLGkpfSxpc1ZhbGlkOmZ1bmN0 aW9uKHQsZSxyKXt0aGlzLl92YWxpZGF0ZUxldmVsKys7dmFyIG49dGhpcy5o YXNZZWFyWmVyb3x8MCE9PXQ7aWYobil7dmFyIGE9dGhpcy5uZXdEYXRlKHQs ZSx0aGlzLm1pbkRheSk7bj1lPj10aGlzLm1pbk1vbnRoJiZlLXRoaXMubWlu TW9udGg8dGhpcy5tb250aHNJblllYXIoYSkmJnI+PXRoaXMubWluRGF5JiZy LXRoaXMubWluRGF5PHRoaXMuZGF5c0luTW9udGgoYSl9cmV0dXJuIHRoaXMu X3ZhbGlkYXRlTGV2ZWwtLSxufSx0b0pTRGF0ZTpmdW5jdGlvbih0LGUscil7 dmFyIG49dGhpcy5fdmFsaWRhdGUodCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0 ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKTtyZXR1cm4g Yy5pbnN0YW5jZSgpLmZyb21KRCh0aGlzLnRvSkQobikpLnRvSlNEYXRlKCl9 LGZyb21KU0RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZnJvbUpEKGMu aW5zdGFuY2UoKS5mcm9tSlNEYXRlKHQpLnRvSkQoKSl9LF92YWxpZGF0ZTpm dW5jdGlvbih0LGUscixuKXtpZih0LnllYXIpe2lmKDA9PT10aGlzLl92YWxp ZGF0ZUxldmVsJiZ0aGlzLm5hbWUhPT10LmNhbGVuZGFyKCkubmFtZSl0aHJv dyhjLmxvY2FsLmRpZmZlcmVudENhbGVuZGFyc3x8Yy5yZWdpb25hbE9wdGlv bnNbIiJdLmRpZmZlcmVudENhbGVuZGFycykucmVwbGFjZSgvXHswXH0vLHRo aXMubG9jYWwubmFtZSkucmVwbGFjZSgvXHsxXH0vLHQuY2FsZW5kYXIoKS5s b2NhbC5uYW1lKTtyZXR1cm4gdH10cnl7aWYodGhpcy5fdmFsaWRhdGVMZXZl bCsrLDE9PT10aGlzLl92YWxpZGF0ZUxldmVsJiYhdGhpcy5pc1ZhbGlkKHQs ZSxyKSl0aHJvdyBuLnJlcGxhY2UoL1x7MFx9Lyx0aGlzLmxvY2FsLm5hbWUp O3ZhciBhPXRoaXMubmV3RGF0ZSh0LGUscik7cmV0dXJuIHRoaXMuX3ZhbGlk YXRlTGV2ZWwtLSxhfWNhdGNoKHQpe3Rocm93IHRoaXMuX3ZhbGlkYXRlTGV2 ZWwtLSx0fX19KSxsLnByb3RvdHlwZT1uZXcgcyxuKGwucHJvdG90eXBlLHtu YW1lOiJHcmVnb3JpYW4iLGpkRXBvY2g6MTcyMTQyNS41LGRheXNQZXJNb250 aDpbMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLGhhc1ll YXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJl Z2lvbmFsT3B0aW9uczp7IiI6e25hbWU6IkdyZWdvcmlhbiIsZXBvY2hzOlsi QkNFIiwiQ0UiXSxtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5Iiwi TWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0Iiwi U2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxt b250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXki LCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxk YXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNk YXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNT aG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNh dCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZy IiwiU2EiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJtbS9kZC95eXl5Iixm aXJzdERheTowLGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFy IGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5 LGMubG9jYWwuaW52YWxpZFllYXJ8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5p bnZhbGlkWWVhcik7cmV0dXJuKHQ9ZS55ZWFyKCkrKGUueWVhcigpPDA/MTow KSklND09MCYmKHQlMTAwIT0wfHx0JTQwMD09MCl9LHdlZWtPZlllYXI6ZnVu Y3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubmV3RGF0ZSh0LGUscik7cmV0dXJu IG4uYWRkKDQtKG4uZGF5T2ZXZWVrKCl8fDcpLCJkIiksTWF0aC5mbG9vcigo bi5kYXlPZlllYXIoKS0xKS83KSsxfSxkYXlzSW5Nb250aDpmdW5jdGlvbih0 LGUpe3ZhciByPXRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxjLmxv Y2FsLmludmFsaWRNb250aHx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFs aWRNb250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1vbnRoW3IubW9udGgoKS0x XSsoMj09PXIubW9udGgoKSYmdGhpcy5sZWFwWWVhcihyLnllYXIoKSk/MTow KX0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0dXJuKHRoaXMuZGF5T2ZX ZWVrKHQsZSxyKXx8Nyk8Nn0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIG49 dGhpcy5fdmFsaWRhdGUodCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5y ZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKTt0PW4ueWVhcigpLGU9 bi5tb250aCgpLHI9bi5kYXkoKSx0PDAmJnQrKyxlPDMmJihlKz0xMix0LS0p O3ZhciBhPU1hdGguZmxvb3IodC8xMDApLGk9Mi1hK01hdGguZmxvb3IoYS80 KTtyZXR1cm4gTWF0aC5mbG9vcigzNjUuMjUqKHQrNDcxNikpK01hdGguZmxv b3IoMzAuNjAwMSooZSsxKSkrcitpLTE1MjQuNX0sZnJvbUpEOmZ1bmN0aW9u KHQpe3ZhciBlPU1hdGguZmxvb3IodCsuNSkscj1NYXRoLmZsb29yKChlLTE4 NjcyMTYuMjUpLzM2NTI0LjI1KSxuPShyPWUrMStyLU1hdGguZmxvb3Ioci80 KSkrMTUyNCxhPU1hdGguZmxvb3IoKG4tMTIyLjEpLzM2NS4yNSksaT1NYXRo LmZsb29yKDM2NS4yNSphKSxvPU1hdGguZmxvb3IoKG4taSkvMzAuNjAwMSks cz1uLWktTWF0aC5mbG9vcigzMC42MDAxKm8pLGw9by0obz4xMy41PzEzOjEp LGM9YS0obD4yLjU/NDcxNjo0NzE1KTtyZXR1cm4gYzw9MCYmYy0tLHRoaXMu bmV3RGF0ZShjLGwscyl9LHRvSlNEYXRlOmZ1bmN0aW9uKHQsZSxyKXt2YXIg bj10aGlzLl92YWxpZGF0ZSh0LGUscixjLmxvY2FsLmludmFsaWREYXRlfHxj LnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZERhdGUpLGE9bmV3IERhdGUo bi55ZWFyKCksbi5tb250aCgpLTEsbi5kYXkoKSk7cmV0dXJuIGEuc2V0SG91 cnMoMCksYS5zZXRNaW51dGVzKDApLGEuc2V0U2Vjb25kcygwKSxhLnNldE1p bGxpc2Vjb25kcygwKSxhLnNldEhvdXJzKGEuZ2V0SG91cnMoKT4xMj9hLmdl dEhvdXJzKCkrMjowKSxhfSxmcm9tSlNEYXRlOmZ1bmN0aW9uKHQpe3JldHVy biB0aGlzLm5ld0RhdGUodC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSsx LHQuZ2V0RGF0ZSgpKX19KTt2YXIgYz1lLmV4cG9ydHM9bmV3IGE7Yy5jZGF0 ZT1pLGMuYmFzZUNhbGVuZGFyPXMsYy5jYWxlbmRhcnMuZ3JlZ29yaWFuPWx9 LHsib2JqZWN0LWFzc2lnbiI6NDU2fV0sNTcxOltmdW5jdGlvbih0LGUscil7 dmFyIG49dCgib2JqZWN0LWFzc2lnbiIpLGE9dCgiLi9tYWluIik7bihhLnJl Z2lvbmFsT3B0aW9uc1siIl0se2ludmFsaWRBcmd1bWVudHM6IkludmFsaWQg YXJndW1lbnRzIixpbnZhbGlkRm9ybWF0OiJDYW5ub3QgZm9ybWF0IGEgZGF0 ZSBmcm9tIGFub3RoZXIgY2FsZW5kYXIiLG1pc3NpbmdOdW1iZXJBdDoiTWlz c2luZyBudW1iZXIgYXQgcG9zaXRpb24gezB9Iix1bmtub3duTmFtZUF0OiJV bmtub3duIG5hbWUgYXQgcG9zaXRpb24gezB9Iix1bmV4cGVjdGVkTGl0ZXJh bEF0OiJVbmV4cGVjdGVkIGxpdGVyYWwgYXQgcG9zaXRpb24gezB9Iix1bmV4 cGVjdGVkVGV4dDoiQWRkaXRpb25hbCB0ZXh0IGZvdW5kIGF0IGVuZCJ9KSxh LmxvY2FsPWEucmVnaW9uYWxPcHRpb25zWyIiXSxuKGEuY2RhdGUucHJvdG90 eXBlLHtmb3JtYXREYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuInN0cmluZyIh PXR5cGVvZiB0JiYoZT10LHQ9IiIpLHRoaXMuX2NhbGVuZGFyLmZvcm1hdERh dGUodHx8IiIsdGhpcyxlKX19KSxuKGEuYmFzZUNhbGVuZGFyLnByb3RvdHlw ZSx7VU5JWF9FUE9DSDphLmluc3RhbmNlKCkubmV3RGF0ZSgxOTcwLDEsMSku dG9KRCgpLFNFQ1NfUEVSX0RBWTo4NjQwMCxUSUNLU19FUE9DSDphLmluc3Rh bmNlKCkuamRFcG9jaCxUSUNLU19QRVJfREFZOjg2NGU5LEFUT006Inl5eXkt bW0tZGQiLENPT0tJRToiRCwgZGQgTSB5eXl5IixGVUxMOiJERCwgTU0gZCwg eXl5eSIsSVNPXzg2MDE6Inl5eXktbW0tZGQiLEpVTElBTjoiSiIsUkZDXzgy MjoiRCwgZCBNIHl5IixSRkNfODUwOiJERCwgZGQtTS15eSIsUkZDXzEwMzY6 IkQsIGQgTSB5eSIsUkZDXzExMjM6IkQsIGQgTSB5eXl5IixSRkNfMjgyMjoi RCwgZCBNIHl5eXkiLFJTUzoiRCwgZCBNIHl5IixUSUNLUzoiISIsVElNRVNU QU1QOiJAIixXM0M6Inl5eXktbW0tZGQiLGZvcm1hdERhdGU6ZnVuY3Rpb24o dCxlLHIpe2lmKCJzdHJpbmciIT10eXBlb2YgdCYmKHI9ZSxlPXQsdD0iIiks IWUpcmV0dXJuIiI7aWYoZS5jYWxlbmRhcigpIT09dGhpcyl0aHJvdyBhLmxv Y2FsLmludmFsaWRGb3JtYXR8fGEucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZh bGlkRm9ybWF0O3Q9dHx8dGhpcy5sb2NhbC5kYXRlRm9ybWF0O2Zvcih2YXIg bixpLG8scyxsPShyPXJ8fHt9KS5kYXlOYW1lc1Nob3J0fHx0aGlzLmxvY2Fs LmRheU5hbWVzU2hvcnQsYz1yLmRheU5hbWVzfHx0aGlzLmxvY2FsLmRheU5h bWVzLHU9ci5tb250aE51bWJlcnN8fHRoaXMubG9jYWwubW9udGhOdW1iZXJz LGg9ci5tb250aE5hbWVzU2hvcnR8fHRoaXMubG9jYWwubW9udGhOYW1lc1No b3J0LGY9ci5tb250aE5hbWVzfHx0aGlzLmxvY2FsLm1vbnRoTmFtZXMscD0o ci5jYWxjdWxhdGVXZWVrfHx0aGlzLmxvY2FsLmNhbGN1bGF0ZVdlZWssZnVu Y3Rpb24oZSxyKXtmb3IodmFyIG49MTt3K248dC5sZW5ndGgmJnQuY2hhckF0 KHcrbik9PT1lOyluKys7cmV0dXJuIHcrPW4tMSxNYXRoLmZsb29yKG4vKHJ8 fDEpKT4xfSksZD1mdW5jdGlvbih0LGUscixuKXt2YXIgYT0iIitlO2lmKHAo dCxuKSlmb3IoO2EubGVuZ3RoPHI7KWE9IjAiK2E7cmV0dXJuIGF9LGc9dGhp cyx2PWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB1P3Uu Y2FsbChnLHQscCgibSIpKTp4KGQoIm0iLHQubW9udGgoKSwyKSl9LG09ZnVu Y3Rpb24odCxlKXtyZXR1cm4gZT8iZnVuY3Rpb24iPT10eXBlb2YgZj9mLmNh bGwoZyx0KTpmW3QubW9udGgoKS1nLm1pbk1vbnRoXToiZnVuY3Rpb24iPT10 eXBlb2YgaD9oLmNhbGwoZyx0KTpoW3QubW9udGgoKS1nLm1pbk1vbnRoXX0s eT10aGlzLmxvY2FsLmRpZ2l0cyx4PWZ1bmN0aW9uKHQpe3JldHVybiByLmxv Y2FsTnVtYmVycyYmeT95KHQpOnR9LGI9IiIsXz0hMSx3PTA7dzx0Lmxlbmd0 aDt3KyspaWYoXykiJyIhPT10LmNoYXJBdCh3KXx8cCgiJyIpP2IrPXQuY2hh ckF0KHcpOl89ITE7ZWxzZSBzd2l0Y2godC5jaGFyQXQodykpe2Nhc2UiZCI6 Yis9eChkKCJkIixlLmRheSgpLDIpKTticmVhaztjYXNlIkQiOmIrPShuPSJE IixpPWUuZGF5T2ZXZWVrKCksbz1sLHM9YyxwKG4pP3NbaV06b1tpXSk7YnJl YWs7Y2FzZSJvIjpiKz1kKCJvIixlLmRheU9mWWVhcigpLDMpO2JyZWFrO2Nh c2UidyI6Yis9ZCgidyIsZS53ZWVrT2ZZZWFyKCksMik7YnJlYWs7Y2FzZSJt IjpiKz12KGUpO2JyZWFrO2Nhc2UiTSI6Yis9bShlLHAoIk0iKSk7YnJlYWs7 Y2FzZSJ5IjpiKz1wKCJ5IiwyKT9lLnllYXIoKTooZS55ZWFyKCklMTAwPDEw PyIwIjoiIikrZS55ZWFyKCklMTAwO2JyZWFrO2Nhc2UiWSI6cCgiWSIsMiks Yis9ZS5mb3JtYXRZZWFyKCk7YnJlYWs7Y2FzZSJKIjpiKz1lLnRvSkQoKTti cmVhaztjYXNlIkAiOmIrPShlLnRvSkQoKS10aGlzLlVOSVhfRVBPQ0gpKnRo aXMuU0VDU19QRVJfREFZO2JyZWFrO2Nhc2UiISI6Yis9KGUudG9KRCgpLXRo aXMuVElDS1NfRVBPQ0gpKnRoaXMuVElDS1NfUEVSX0RBWTticmVhaztjYXNl IiciOnAoIiciKT9iKz0iJyI6Xz0hMDticmVhaztkZWZhdWx0OmIrPXQuY2hh ckF0KHcpfXJldHVybiBifSxwYXJzZURhdGU6ZnVuY3Rpb24odCxlLHIpe2lm KG51bGw9PWUpdGhyb3cgYS5sb2NhbC5pbnZhbGlkQXJndW1lbnRzfHxhLnJl Z2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZEFyZ3VtZW50cztpZigiIj09PShl PSJvYmplY3QiPT10eXBlb2YgZT9lLnRvU3RyaW5nKCk6ZSsiIikpcmV0dXJu IG51bGw7dD10fHx0aGlzLmxvY2FsLmRhdGVGb3JtYXQ7dmFyIG49KHI9cnx8 e30pLnNob3J0WWVhckN1dG9mZnx8dGhpcy5zaG9ydFllYXJDdXRvZmY7bj0i c3RyaW5nIiE9dHlwZW9mIG4/bjp0aGlzLnRvZGF5KCkueWVhcigpJTEwMCtw YXJzZUludChuLDEwKTtmb3IodmFyIGk9ci5kYXlOYW1lc1Nob3J0fHx0aGlz LmxvY2FsLmRheU5hbWVzU2hvcnQsbz1yLmRheU5hbWVzfHx0aGlzLmxvY2Fs LmRheU5hbWVzLHM9ci5wYXJzZU1vbnRofHx0aGlzLmxvY2FsLnBhcnNlTW9u dGgsbD1yLm1vbnRoTnVtYmVyc3x8dGhpcy5sb2NhbC5tb250aE51bWJlcnMs Yz1yLm1vbnRoTmFtZXNTaG9ydHx8dGhpcy5sb2NhbC5tb250aE5hbWVzU2hv cnQsdT1yLm1vbnRoTmFtZXN8fHRoaXMubG9jYWwubW9udGhOYW1lcyxoPS0x LGY9LTEscD0tMSxkPS0xLGc9LTEsdj0hMSxtPSExLHk9ZnVuY3Rpb24oZSxy KXtmb3IodmFyIG49MTtBK248dC5sZW5ndGgmJnQuY2hhckF0KEErbik9PT1l OyluKys7cmV0dXJuIEErPW4tMSxNYXRoLmZsb29yKG4vKHJ8fDEpKT4xfSx4 PWZ1bmN0aW9uKHQscil7dmFyIG49eSh0LHIpLGk9WzIsMyxuPzQ6MixuPzQ6 MiwxMCwxMSwyMF1bIm95WUpAISIuaW5kZXhPZih0KSsxXSxvPW5ldyBSZWdF eHAoIl4tP1xcZHsxLCIraSsifSIpLHM9ZS5zdWJzdHJpbmcoTSkubWF0Y2go byk7aWYoIXMpdGhyb3coYS5sb2NhbC5taXNzaW5nTnVtYmVyQXR8fGEucmVn aW9uYWxPcHRpb25zWyIiXS5taXNzaW5nTnVtYmVyQXQpLnJlcGxhY2UoL1x7 MFx9LyxNKTtyZXR1cm4gTSs9c1swXS5sZW5ndGgscGFyc2VJbnQoc1swXSwx MCl9LGI9dGhpcyxfPWZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIj09dHlwZW9m IGwpe3koIm0iKTt2YXIgdD1sLmNhbGwoYixlLnN1YnN0cmluZyhNKSk7cmV0 dXJuIE0rPXQubGVuZ3RoLHR9cmV0dXJuIHgoIm0iKX0sdz1mdW5jdGlvbih0 LHIsbixpKXtmb3IodmFyIG89eSh0LGkpP246cixzPTA7czxvLmxlbmd0aDtz KyspaWYoZS5zdWJzdHIoTSxvW3NdLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09 PW9bc10udG9Mb3dlckNhc2UoKSlyZXR1cm4gTSs9b1tzXS5sZW5ndGgscyti Lm1pbk1vbnRoO3Rocm93KGEubG9jYWwudW5rbm93bk5hbWVBdHx8YS5yZWdp b25hbE9wdGlvbnNbIiJdLnVua25vd25OYW1lQXQpLnJlcGxhY2UoL1x7MFx9 LyxNKX0saz1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB1KXt2 YXIgdD15KCJNIik/dS5jYWxsKGIsZS5zdWJzdHJpbmcoTSkpOmMuY2FsbChi LGUuc3Vic3RyaW5nKE0pKTtyZXR1cm4gTSs9dC5sZW5ndGgsdH1yZXR1cm4g dygiTSIsYyx1KX0sVD1mdW5jdGlvbigpe2lmKGUuY2hhckF0KE0pIT09dC5j aGFyQXQoQSkpdGhyb3coYS5sb2NhbC51bmV4cGVjdGVkTGl0ZXJhbEF0fHxh LnJlZ2lvbmFsT3B0aW9uc1siIl0udW5leHBlY3RlZExpdGVyYWxBdCkucmVw bGFjZSgvXHswXH0vLE0pO00rK30sTT0wLEE9MDtBPHQubGVuZ3RoO0ErKylp ZihtKSInIiE9PXQuY2hhckF0KEEpfHx5KCInIik/VCgpOm09ITE7ZWxzZSBz d2l0Y2godC5jaGFyQXQoQSkpe2Nhc2UiZCI6ZD14KCJkIik7YnJlYWs7Y2Fz ZSJEIjp3KCJEIixpLG8pO2JyZWFrO2Nhc2UibyI6Zz14KCJvIik7YnJlYWs7 Y2FzZSJ3Ijp4KCJ3Iik7YnJlYWs7Y2FzZSJtIjpwPV8oKTticmVhaztjYXNl Ik0iOnA9aygpO2JyZWFrO2Nhc2UieSI6dmFyIFM9QTt2PSF5KCJ5IiwyKSxB PVMsZj14KCJ5IiwyKTticmVhaztjYXNlIlkiOmY9eCgiWSIsMik7YnJlYWs7 Y2FzZSJKIjpoPXgoIkoiKSsuNSwiLiI9PT1lLmNoYXJBdChNKSYmKE0rKyx4 KCJKIikpO2JyZWFrO2Nhc2UiQCI6aD14KCJAIikvdGhpcy5TRUNTX1BFUl9E QVkrdGhpcy5VTklYX0VQT0NIO2JyZWFrO2Nhc2UiISI6aD14KCIhIikvdGhp cy5USUNLU19QRVJfREFZK3RoaXMuVElDS1NfRVBPQ0g7YnJlYWs7Y2FzZSIq IjpNPWUubGVuZ3RoO2JyZWFrO2Nhc2UiJyI6eSgiJyIpP1QoKTptPSEwO2Jy ZWFrO2RlZmF1bHQ6VCgpfWlmKE08ZS5sZW5ndGgpdGhyb3cgYS5sb2NhbC51 bmV4cGVjdGVkVGV4dHx8YS5yZWdpb25hbE9wdGlvbnNbIiJdLnVuZXhwZWN0 ZWRUZXh0O2lmKC0xPT09Zj9mPXRoaXMudG9kYXkoKS55ZWFyKCk6ZjwxMDAm JnYmJihmKz0tMT09PW4/MTkwMDp0aGlzLnRvZGF5KCkueWVhcigpLXRoaXMu dG9kYXkoKS55ZWFyKCklMTAwLShmPD1uPzA6MTAwKSksInN0cmluZyI9PXR5 cGVvZiBwJiYocD1zLmNhbGwodGhpcyxmLHApKSxnPi0xKXtwPTEsZD1nO2Zv cih2YXIgRT10aGlzLmRheXNJbk1vbnRoKGYscCk7ZD5FO0U9dGhpcy5kYXlz SW5Nb250aChmLHApKXArKyxkLT1FfXJldHVybiBoPi0xP3RoaXMuZnJvbUpE KGgpOnRoaXMubmV3RGF0ZShmLHAsZCl9LGRldGVybWluZURhdGU6ZnVuY3Rp b24odCxlLHIsbixhKXtyJiYib2JqZWN0IiE9dHlwZW9mIHImJihhPW4sbj1y LHI9bnVsbCksInN0cmluZyIhPXR5cGVvZiBuJiYoYT1uLG49IiIpO3ZhciBp PXRoaXM7cmV0dXJuIGU9ZT9lLm5ld0RhdGUoKTpudWxsLHQ9bnVsbD09dD9l OiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbih0KXt0cnl7cmV0dXJuIGku cGFyc2VEYXRlKG4sdCxhKX1jYXRjaCh0KXt9Zm9yKHZhciBlPSgodD10LnRv TG93ZXJDYXNlKCkpLm1hdGNoKC9eYy8pJiZyP3IubmV3RGF0ZSgpOm51bGwp fHxpLnRvZGF5KCksbz0vKFsrLV0/WzAtOV0rKVxzKihkfHd8bXx5KT8vZyxz PW8uZXhlYyh0KTtzOyllLmFkZChwYXJzZUludChzWzFdLDEwKSxzWzJdfHwi ZCIpLHM9by5leGVjKHQpO3JldHVybiBlfSh0KToibnVtYmVyIj09dHlwZW9m IHQ/aXNOYU4odCl8fHQ9PT0xLzB8fHQ9PT0tMS8wP2U6aS50b2RheSgpLmFk ZCh0LCJkIik6aS5uZXdEYXRlKHQpfX0pfSx7Ii4vbWFpbiI6NTcwLCJvYmpl Y3QtYXNzaWduIjo0NTZ9XSw1NzI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9y dHM9dCgiY3dpc2UtY29tcGlsZXIiKSh7YXJnczpbImFycmF5Iix7b2Zmc2V0 OlsxXSxhcnJheTowfSwic2NhbGFyIiwic2NhbGFyIiwiaW5kZXgiXSxwcmU6 e2JvZHk6Int9IixhcmdzOltdLHRoaXNWYXJzOltdLGxvY2FsVmFyczpbXX0s cG9zdDp7Ym9keToie30iLGFyZ3M6W10sdGhpc1ZhcnM6W10sbG9jYWxWYXJz OltdfSxib2R5Ontib2R5OiJ7XG4gICAgICAgIHZhciBfaW5saW5lXzFfZGEg PSBfaW5saW5lXzFfYXJnMF8gLSBfaW5saW5lXzFfYXJnM19cbiAgICAgICAg dmFyIF9pbmxpbmVfMV9kYiA9IF9pbmxpbmVfMV9hcmcxXyAtIF9pbmxpbmVf MV9hcmczX1xuICAgICAgICBpZigoX2lubGluZV8xX2RhID49IDApICE9PSAo X2lubGluZV8xX2RiID49IDApKSB7XG4gICAgICAgICAgX2lubGluZV8xX2Fy ZzJfLnB1c2goX2lubGluZV8xX2FyZzRfWzBdICsgMC41ICsgMC41ICogKF9p bmxpbmVfMV9kYSArIF9pbmxpbmVfMV9kYikgLyAoX2lubGluZV8xX2RhIC0g X2lubGluZV8xX2RiKSlcbiAgICAgICAgfVxuICAgICAgfSIsYXJnczpbe25h bWU6Il9pbmxpbmVfMV9hcmcwXyIsbHZhbHVlOiExLHJ2YWx1ZTohMCxjb3Vu dDoxfSx7bmFtZToiX2lubGluZV8xX2FyZzFfIixsdmFsdWU6ITEscnZhbHVl OiEwLGNvdW50OjF9LHtuYW1lOiJfaW5saW5lXzFfYXJnMl8iLGx2YWx1ZToh MSxydmFsdWU6ITAsY291bnQ6MX0se25hbWU6Il9pbmxpbmVfMV9hcmczXyIs bHZhbHVlOiExLHJ2YWx1ZTohMCxjb3VudDoyfSx7bmFtZToiX2lubGluZV8x X2FyZzRfIixsdmFsdWU6ITEscnZhbHVlOiEwLGNvdW50OjF9XSx0aGlzVmFy czpbXSxsb2NhbFZhcnM6WyJfaW5saW5lXzFfZGEiLCJfaW5saW5lXzFfZGIi XX0sZnVuY05hbWU6Inplcm9Dcm9zc2luZ3MifSl9LHsiY3dpc2UtY29tcGls ZXIiOjE0OH1dLDU3MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1bXTtyZXR1cm4gZT0rZXx8 MCxuKHQuaGkodC5zaGFwZVswXS0xKSxyLGUpLHJ9O3ZhciBuPXQoIi4vbGli L3pjLWNvcmUiKX0seyIuL2xpYi96Yy1jb3JlIjo1NzJ9XSw1NzQ6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPVt7cGF0aDoiIixi YWNrb2ZmOjB9LHtwYXRoOiJNLTIuNCwtM1YzTDAuNiwwWiIsYmFja29mZjou Nn0se3BhdGg6Ik0tMy43LC0yLjVWMi41TDEuMywwWiIsYmFja29mZjoxLjN9 LHtwYXRoOiJNLTQuNDUsLTNMLTEuNjUsLTAuMlYwLjJMLTQuNDUsM0wxLjU1 LDBaIixiYWNrb2ZmOjEuNTV9LHtwYXRoOiJNLTIuMiwtMi4yTC0wLjIsLTAu MlYwLjJMLTIuMiwyLjJMLTEuNCwzTDEuNiwwTC0xLjQsLTNaIixiYWNrb2Zm OjEuNn0se3BhdGg6Ik0tNC40LC0yLjFMLTAuNiwtMC4yVjAuMkwtNC40LDIu MUwtNCwzTDIsMEwtNCwtM1oiLGJhY2tvZmY6Mn0se3BhdGg6Ik0yLDBBMiwy IDAgMSwxIDAsLTJBMiwyIDAgMCwxIDIsMFoiLGJhY2tvZmY6MCxub1JvdGF0 ZTohMH0se3BhdGg6Ik0yLDJWLTJILTJWMloiLGJhY2tvZmY6MCxub1JvdGF0 ZTohMH1dfSx7fV0sNTc1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4vYXJyb3dfcGF0aHMiKSxhPXQoIi4uLy4uL3Bsb3RzL2Zv bnRfYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2Nv bnN0YW50cyIpLG89dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIp LnRlbXBsYXRlZEFycmF5O2UuZXhwb3J0cz1vKCJhbm5vdGF0aW9uIix7dmlz aWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2Fs YythcnJheWRyYXcifSx0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBl OiJjYWxjK2FycmF5ZHJhdyJ9LHRleHRhbmdsZTp7dmFsVHlwZToiYW5nbGUi LGRmbHQ6MCxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxmb250OmEoe2Vk aXRUeXBlOiJjYWxjK2FycmF5ZHJhdyIsY29sb3JFZGl0VHlwZToiYXJyYXlk cmF3In0pLHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjoxLGRmbHQ6bnVs bCxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxoZWlnaHQ6e3ZhbFR5cGU6 Im51bWJlciIsbWluOjEsZGZsdDpudWxsLGVkaXRUeXBlOiJjYWxjK2FycmF5 ZHJhdyJ9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEs ZGZsdDoxLGVkaXRUeXBlOiJhcnJheWRyYXcifSxhbGlnbjp7dmFsVHlwZToi ZW51bWVyYXRlZCIsdmFsdWVzOlsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0s ZGZsdDoiY2VudGVyIixlZGl0VHlwZToiYXJyYXlkcmF3In0sdmFsaWduOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJtaWRkbGUiLCJi b3R0b20iXSxkZmx0OiJtaWRkbGUiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxi Z2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDoicmdiYSgwLDAsMCwwKSIs ZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJj b2xvciIsZGZsdDoicmdiYSgwLDAsMCwwKSIsZWRpdFR5cGU6ImFycmF5ZHJh dyJ9LGJvcmRlcnBhZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEs ZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sYm9yZGVyd2lkdGg6e3ZhbFR5 cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJjYWxjK2FycmF5 ZHJhdyJ9LHNob3dhcnJvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxl ZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxhcnJvd2NvbG9yOnt2YWxUeXBl OiJjb2xvciIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGFycm93aGVhZDp7dmFs VHlwZToiaW50ZWdlciIsbWluOjAsbWF4Om4ubGVuZ3RoLGRmbHQ6MSxlZGl0 VHlwZToiYXJyYXlkcmF3In0sc3RhcnRhcnJvd2hlYWQ6e3ZhbFR5cGU6Imlu dGVnZXIiLG1pbjowLG1heDpuLmxlbmd0aCxkZmx0OjEsZWRpdFR5cGU6ImFy cmF5ZHJhdyJ9LGFycm93c2lkZTp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdz OlsiZW5kIiwic3RhcnQiXSxleHRyYXM6WyJub25lIl0sZGZsdDoiZW5kIixl ZGl0VHlwZToiYXJyYXlkcmF3In0sYXJyb3dzaXplOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjouMyxkZmx0OjEsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0s c3RhcnRhcnJvd3NpemU6e3ZhbFR5cGU6Im51bWJlciIsbWluOi4zLGRmbHQ6 MSxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxhcnJvd3dpZHRoOnt2YWxU eXBlOiJudW1iZXIiLG1pbjouMSxlZGl0VHlwZToiY2FsYythcnJheWRyYXci fSxzdGFuZG9mZjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsZWRp dFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sc3RhcnRzdGFuZG9mZjp7dmFsVHlw ZToibnVtYmVyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6ImNhbGMrYXJyYXlk cmF3In0sYXg6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMrYXJyYXlk cmF3In0sYXk6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMrYXJyYXlk cmF3In0sYXhyZWY6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGRmbHQ6InBpeGVs Iix2YWx1ZXM6WyJwaXhlbCIsaS5pZFJlZ2V4LngudG9TdHJpbmcoKV0sZWRp dFR5cGU6ImNhbGMifSxheXJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsZGZs dDoicGl4ZWwiLHZhbHVlczpbInBpeGVsIixpLmlkUmVnZXgueS50b1N0cmlu ZygpXSxlZGl0VHlwZToiY2FsYyJ9LHhyZWY6e3ZhbFR5cGU6ImVudW1lcmF0 ZWQiLHZhbHVlczpbInBhcGVyIixpLmlkUmVnZXgueC50b1N0cmluZygpXSxl ZGl0VHlwZToiY2FsYyJ9LHg6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNh bGMrYXJyYXlkcmF3In0seGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsiYXV0byIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRmbHQ6 ImF1dG8iLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHhzaGlmdDp7dmFs VHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3 In0seXJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicGFwZXIi LGkuaWRSZWdleC55LnRvU3RyaW5nKCldLGVkaXRUeXBlOiJjYWxjIn0seTp7 dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx5YW5j aG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9w IiwibWlkZGxlIiwiYm90dG9tIl0sZGZsdDoiYXV0byIsZWRpdFR5cGU6ImNh bGMrYXJyYXlkcmF3In0seXNoaWZ0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6 MCxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxjbGlja3Rvc2hvdzp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlshMSwib25vZmYiLCJvbm91dCJd LGRmbHQ6ITEsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHhjbGljazp7dmFsVHlw ZToiYW55IixlZGl0VHlwZToiYXJyYXlkcmF3In0seWNsaWNrOnt2YWxUeXBl OiJhbnkiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxob3ZlcnRleHQ6e3ZhbFR5 cGU6InN0cmluZyIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGhvdmVybGFiZWw6 e2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToiYXJyYXlkcmF3 In0sYm9yZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToiYXJy YXlkcmF3In0sZm9udDphKHtlZGl0VHlwZToiYXJyYXlkcmF3In0pLGVkaXRU eXBlOiJhcnJheWRyYXcifSxjYXB0dXJlZXZlbnRzOnt2YWxUeXBlOiJib29s ZWFuIixlZGl0VHlwZToiYXJyYXlkcmF3In0sZWRpdFR5cGU6ImNhbGMiLF9k ZXByZWNhdGVkOntyZWY6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNh bGMifX19KX0seyIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUs Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMiOjc3MSwiLi4vLi4v cGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3OTEsIi4vYXJyb3dfcGF0aHMiOjU3 NH1dLDU3NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVz IiksaT10KCIuL2RyYXciKS5kcmF3O2Z1bmN0aW9uIG8odCl7dmFyIGU9dC5f ZnVsbExheW91dDtuLmZpbHRlclZpc2libGUoZS5hbm5vdGF0aW9ucykuZm9y RWFjaChmdW5jdGlvbihlKXt2YXIgcj1hLmdldEZyb21JZCh0LGUueHJlZiks bj1hLmdldEZyb21JZCh0LGUueXJlZik7ZS5fZXh0cmVtZXM9e30sciYmcyhl LHIpLG4mJnMoZSxuKX0pfWZ1bmN0aW9uIHModCxlKXt2YXIgcixuPWUuX2lk LGk9bi5jaGFyQXQoMCksbz10W2ldLHM9dFsiYSIraV0sbD10W2krInJlZiJd LGM9dFsiYSIraSsicmVmIl0sdT10WyJfIitpKyJwYWRwbHVzIl0saD10WyJf IitpKyJwYWRtaW51cyJdLGY9e3g6MSx5Oi0xfVtpXSp0W2krInNoaWZ0Il0s cD0zKnQuYXJyb3dzaXplKnQuYXJyb3d3aWR0aHx8MCxkPXArZixnPXAtZix2 PTMqdC5zdGFydGFycm93c2l6ZSp0LmFycm93d2lkdGh8fDAsbT12K2YseT12 LWY7aWYoYz09PWwpe3ZhciB4PWEuZmluZEV4dHJlbWVzKGUsW2UucjJjKG8p XSx7cHBhZHBsdXM6ZCxwcGFkbWludXM6Z30pLGI9YS5maW5kRXh0cmVtZXMo ZSxbZS5yMmMocyldLHtwcGFkcGx1czpNYXRoLm1heCh1LG0pLHBwYWRtaW51 czpNYXRoLm1heChoLHkpfSk7cj17bWluOlt4Lm1pblswXSxiLm1pblswXV0s bWF4Olt4Lm1heFswXSxiLm1heFswXV19fWVsc2UgbT1zP20rczptLHk9cz95 LXM6eSxyPWEuZmluZEV4dHJlbWVzKGUsW2UucjJjKG8pXSx7cHBhZHBsdXM6 TWF0aC5tYXgodSxkLG0pLHBwYWRtaW51czpNYXRoLm1heChoLGcseSl9KTt0 Ll9leHRyZW1lc1tuXT1yfWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10 Ll9mdWxsTGF5b3V0O2lmKG4uZmlsdGVyVmlzaWJsZShlLmFubm90YXRpb25z KS5sZW5ndGgmJnQuX2Z1bGxEYXRhLmxlbmd0aClyZXR1cm4gbi5zeW5jT3JB c3luYyhbaSxvXSx0KX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIjo3NjUsIi4vZHJhdyI6NTgxfV0sNTc3OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIp LGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL3Bsb3RfYXBpL3Bs b3RfdGVtcGxhdGUiKS5hcnJheUVkaXRvcjtmdW5jdGlvbiBvKHQsZSl7dmFy IHIsbixhLGksbyxsLGMsdT10Ll9mdWxsTGF5b3V0LmFubm90YXRpb25zLGg9 W10sZj1bXSxwPVtdLGQ9KGV8fFtdKS5sZW5ndGg7Zm9yKHI9MDtyPHUubGVu Z3RoO3IrKylpZihpPShhPXVbcl0pLmNsaWNrdG9zaG93KXtmb3Iobj0wO248 ZDtuKyspaWYobD0obz1lW25dKS54YXhpcyxjPW8ueWF4aXMsbC5faWQ9PT1h LnhyZWYmJmMuX2lkPT09YS55cmVmJiZsLmQycihvLngpPT09cyhhLl94Y2xp Y2ssbCkmJmMuZDJyKG8ueSk9PT1zKGEuX3ljbGljayxjKSl7KGEudmlzaWJs ZT8ib25vdXQiPT09aT9mOnA6aCkucHVzaChyKTticmVha31uPT09ZCYmYS52 aXNpYmxlJiYib25vdXQiPT09aSYmZi5wdXNoKHIpfXJldHVybntvbjpoLG9m ZjpmLGV4cGxpY2l0T2ZmOnB9fWZ1bmN0aW9uIHModCxlKXtyZXR1cm4ibG9n Ij09PWUudHlwZT9lLmwycih0KTplLmQycih0KX1lLmV4cG9ydHM9e2hhc0Ns aWNrVG9TaG93OmZ1bmN0aW9uKHQsZSl7dmFyIHI9byh0LGUpO3JldHVybiBy Lm9uLmxlbmd0aD4wfHxyLmV4cGxpY2l0T2ZmLmxlbmd0aD4wfSxvbkNsaWNr OmZ1bmN0aW9uKHQsZSl7dmFyIHIscyxsPW8odCxlKSxjPWwub24sdT1sLm9m Zi5jb25jYXQobC5leHBsaWNpdE9mZiksaD17fSxmPXQuX2Z1bGxMYXlvdXQu YW5ub3RhdGlvbnM7aWYoIWMubGVuZ3RoJiYhdS5sZW5ndGgpcmV0dXJuO2Zv cihyPTA7cjxjLmxlbmd0aDtyKyspKHM9aSh0LmxheW91dCwiYW5ub3RhdGlv bnMiLGZbY1tyXV0pKS5tb2RpZnlJdGVtKCJ2aXNpYmxlIiwhMCksbi5leHRl bmRGbGF0KGgscy5nZXRVcGRhdGVPYmooKSk7Zm9yKHI9MDtyPHUubGVuZ3Ro O3IrKykocz1pKHQubGF5b3V0LCJhbm5vdGF0aW9ucyIsZlt1W3JdXSkpLm1v ZGlmeUl0ZW0oInZpc2libGUiLCExKSxuLmV4dGVuZEZsYXQoaCxzLmdldFVw ZGF0ZU9iaigpKTtyZXR1cm4gYS5jYWxsKCJ1cGRhdGUiLHQse30saCl9fX0s eyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0 ZSI6NzU1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2fV0sNTc4OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgi Li4vY29sb3IiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7aSgib3Bh Y2l0eSIpO3ZhciBvPWkoImJnY29sb3IiKSxzPWkoImJvcmRlcmNvbG9yIiks bD1hLm9wYWNpdHkocyk7aSgiYm9yZGVycGFkIik7dmFyIGM9aSgiYm9yZGVy d2lkdGgiKSx1PWkoInNob3dhcnJvdyIpO2lmKGkoInRleHQiLHU/IiAiOnIu X2RmbHRUaXRsZS5hbm5vdGF0aW9uKSxpKCJ0ZXh0YW5nbGUiKSxuLmNvZXJj ZUZvbnQoaSwiZm9udCIsci5mb250KSxpKCJ3aWR0aCIpLGkoImFsaWduIiks aSgiaGVpZ2h0IikmJmkoInZhbGlnbiIpLHUpe3ZhciBoLGYscD1pKCJhcnJv d3NpZGUiKTstMSE9PXAuaW5kZXhPZigiZW5kIikmJihoPWkoImFycm93aGVh ZCIpLGY9aSgiYXJyb3dzaXplIikpLC0xIT09cC5pbmRleE9mKCJzdGFydCIp JiYoaSgic3RhcnRhcnJvd2hlYWQiLGgpLGkoInN0YXJ0YXJyb3dzaXplIixm KSksaSgiYXJyb3djb2xvciIsbD9lLmJvcmRlcmNvbG9yOmEuZGVmYXVsdExp bmUpLGkoImFycm93d2lkdGgiLDIqKGwmJmN8fDEpKSxpKCJzdGFuZG9mZiIp LGkoInN0YXJ0c3RhbmRvZmYiKX12YXIgZD1pKCJob3ZlcnRleHQiKSxnPXIu aG92ZXJsYWJlbHx8e307aWYoZCl7dmFyIHY9aSgiaG92ZXJsYWJlbC5iZ2Nv bG9yIixnLmJnY29sb3J8fChhLm9wYWNpdHkobyk/YS5yZ2Iobyk6YS5kZWZh dWx0TGluZSkpLG09aSgiaG92ZXJsYWJlbC5ib3JkZXJjb2xvciIsZy5ib3Jk ZXJjb2xvcnx8YS5jb250cmFzdCh2KSk7bi5jb2VyY2VGb250KGksImhvdmVy bGFiZWwuZm9udCIse2ZhbWlseTpnLmZvbnQuZmFtaWx5LHNpemU6Zy5mb250 LnNpemUsY29sb3I6Zy5mb250LmNvbG9yfHxtfSl9aSgiY2FwdHVyZWV2ZW50 cyIsISFkKX19LHsiLi4vLi4vbGliIjo3MTcsIi4uL2NvbG9yIjo1OTJ9XSw1 Nzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFz dC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYi90b19sb2dfcmFuZ2UiKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7ZT1lfHx7fTt2YXIgbz0ibG9n Ij09PXImJiJsaW5lYXIiPT09ZS50eXBlLHM9ImxpbmVhciI9PT1yJiYibG9n Ij09PWUudHlwZTtpZihvfHxzKWZvcih2YXIgbCxjLHU9dC5fZnVsbExheW91 dC5hbm5vdGF0aW9ucyxoPWUuX2lkLmNoYXJBdCgwKSxmPTA7Zjx1Lmxlbmd0 aDtmKyspbD11W2ZdLGM9ImFubm90YXRpb25zWyIrZisiXS4iLGxbaCsicmVm Il09PT1lLl9pZCYmcChoKSxsWyJhIitoKyJyZWYiXT09PWUuX2lkJiZwKCJh IitoKTtmdW5jdGlvbiBwKHQpe3ZhciByPWxbdF0scz1udWxsO3M9bz9hKHIs ZS5yYW5nZSk6TWF0aC5wb3coMTAsciksbihzKXx8KHM9bnVsbCksaShjK3Qs cyl9fX0seyIuLi8uLi9saWIvdG9fbG9nX3JhbmdlIjo3NDMsImZhc3QtaXNu dW1lcmljIjoyMjh9XSw1ODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhlcyIpLGk9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVy X2RlZmF1bHRzIiksbz10KCIuL2NvbW1vbl9kZWZhdWx0cyIpLHM9dCgiLi9h dHRyaWJ1dGVzIik7ZnVuY3Rpb24gbCh0LGUscil7ZnVuY3Rpb24gaShyLGEp e3JldHVybiBuLmNvZXJjZSh0LGUscyxyLGEpfXZhciBsPWkoInZpc2libGUi KSxjPWkoImNsaWNrdG9zaG93Iik7aWYobHx8Yyl7byh0LGUscixpKTtmb3Io dmFyIHU9ZS5zaG93YXJyb3csaD1bIngiLCJ5Il0sZj1bLTEwLC0zMF0scD17 X2Z1bGxMYXlvdXQ6cn0sZD0wO2Q8MjtkKyspe3ZhciBnPWhbZF0sdj1hLmNv ZXJjZVJlZih0LGUscCxnLCIiLCJwYXBlciIpO2lmKCJwYXBlciIhPT12KWEu Z2V0RnJvbUlkKHAsdikuX2FubkluZGljZXMucHVzaChlLl9pbmRleCk7aWYo YS5jb2VyY2VQb3NpdGlvbihlLHAsaSx2LGcsLjUpLHUpe3ZhciBtPSJhIitn LHk9YS5jb2VyY2VSZWYodCxlLHAsbSwicGl4ZWwiKTsicGl4ZWwiIT09eSYm eSE9PXYmJih5PWVbbV09InBpeGVsIik7dmFyIHg9InBpeGVsIj09PXk/Zltk XTouNDthLmNvZXJjZVBvc2l0aW9uKGUscCxpLHksbSx4KX1pKGcrImFuY2hv ciIpLGkoZysic2hpZnQiKX1pZihuLm5vbmVPckFsbCh0LGUsWyJ4IiwieSJd KSx1JiZuLm5vbmVPckFsbCh0LGUsWyJheCIsImF5Il0pLGMpe3ZhciBiPWko InhjbGljayIpLF89aSgieWNsaWNrIik7ZS5feGNsaWNrPXZvaWQgMD09PWI/ ZS54OmEuY2xlYW5Qb3NpdGlvbihiLHAsZS54cmVmKSxlLl95Y2xpY2s9dm9p ZCAwPT09Xz9lLnk6YS5jbGVhblBvc2l0aW9uKF8scCxlLnlyZWYpfX19ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSl7aSh0LGUse25hbWU6ImFubm90YXRpb25z IixoYW5kbGVJdGVtRGVmYXVsdHM6bH0pfX0seyIuLi8uLi9saWIiOjcxNywi Li4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4u Ly4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4vYXR0cmlidXRlcyI6 NTc1LCIuL2NvbW1vbl9kZWZhdWx0cyI6NTc4fV0sNTgxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9y ZWdpc3RyeSIpLGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4uLy4u L2xpYiIpLHM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxsPXQo Ii4uL2NvbG9yIiksYz10KCIuLi9kcmF3aW5nIiksdT10KCIuLi9meCIpLGg9 dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksZj10KCIuLi8uLi9saWIv c2V0Y3Vyc29yIikscD10KCIuLi9kcmFnZWxlbWVudCIpLGQ9dCgiLi4vLi4v cGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLmFycmF5RWRpdG9yLGc9dCgiLi9k cmF3X2Fycm93X2hlYWQiKTtmdW5jdGlvbiB2KHQsZSl7dmFyIHI9dC5fZnVs bExheW91dC5hbm5vdGF0aW9uc1tlXXx8e30sbj1zLmdldEZyb21JZCh0LHIu eHJlZiksYT1zLmdldEZyb21JZCh0LHIueXJlZik7biYmbi5zZXRTY2FsZSgp LGEmJmEuc2V0U2NhbGUoKSxtKHQscixlLCExLG4sYSl9ZnVuY3Rpb24gbSh0 LGUscixpLHMsdil7dmFyIG0seSx4PXQuX2Z1bGxMYXlvdXQsYj10Ll9mdWxs TGF5b3V0Ll9zaXplLF89dC5fY29udGV4dC5lZGl0cztpPyhtPSJhbm5vdGF0 aW9uLSIraSx5PWkrIi5hbm5vdGF0aW9ucyIpOihtPSJhbm5vdGF0aW9uIix5 PSJhbm5vdGF0aW9ucyIpO3ZhciB3PWQodC5sYXlvdXQseSxlKSxrPXcubW9k aWZ5QmFzZSxUPXcubW9kaWZ5SXRlbSxNPXcuZ2V0VXBkYXRlT2JqO3guX2lu Zm9sYXllci5zZWxlY3RBbGwoIi4iK20rJ1tkYXRhLWluZGV4PSInK3IrJyJd JykucmVtb3ZlKCk7dmFyIEE9ImNsaXAiK3guX3VpZCsiX2FubiIrcjtpZihl Ll9pbnB1dCYmITEhPT1lLnZpc2libGUpe3ZhciBTPXt4Ont9LHk6e319LEU9 K2UudGV4dGFuZ2xlfHwwLEw9eC5faW5mb2xheWVyLmFwcGVuZCgiZyIpLmNs YXNzZWQobSwhMCkuYXR0cigiZGF0YS1pbmRleCIsU3RyaW5nKHIpKS5zdHls ZSgib3BhY2l0eSIsZS5vcGFjaXR5KSxDPUwuYXBwZW5kKCJnIikuY2xhc3Nl ZCgiYW5ub3RhdGlvbi10ZXh0LWciLCEwKSxQPV9bZS5zaG93YXJyb3c/ImFu bm90YXRpb25UYWlsIjoiYW5ub3RhdGlvblBvc2l0aW9uIl0sTz1lLmNhcHR1 cmVldmVudHN8fF8uYW5ub3RhdGlvblRleHR8fFAsej1DLmFwcGVuZCgiZyIp LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsTz8iYWxsIjpudWxsKS5jYWxsKGYs InBvaW50ZXIiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dC5fZHJhZ2dpbmc9 ITEsdC5lbWl0KCJwbG90bHlfY2xpY2thbm5vdGF0aW9uIixxKG4uZXZlbnQp KX0pO2UuaG92ZXJ0ZXh0JiZ6Lm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7 dmFyIHI9ZS5ob3ZlcmxhYmVsLG49ci5mb250LGE9dGhpcy5nZXRCb3VuZGlu Z0NsaWVudFJlY3QoKSxpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dS5s b25lSG92ZXIoe3gwOmEubGVmdC1pLmxlZnQseDE6YS5yaWdodC1pLmxlZnQs eTooYS50b3ArYS5ib3R0b20pLzItaS50b3AsdGV4dDplLmhvdmVydGV4dCxj b2xvcjpyLmJnY29sb3IsYm9yZGVyQ29sb3I6ci5ib3JkZXJjb2xvcixmb250 RmFtaWx5Om4uZmFtaWx5LGZvbnRTaXplOm4uc2l6ZSxmb250Q29sb3I6bi5j b2xvcn0se2NvbnRhaW5lcjp4Ll9ob3ZlcmxheWVyLm5vZGUoKSxvdXRlckNv bnRhaW5lcjp4Ll9wYXBlci5ub2RlKCksZ2Q6dH0pfSkub24oIm1vdXNlb3V0 IixmdW5jdGlvbigpe3UubG9uZVVuaG92ZXIoeC5faG92ZXJsYXllci5ub2Rl KCkpfSk7dmFyIEk9ZS5ib3JkZXJ3aWR0aCxEPWUuYm9yZGVycGFkLFI9SStE LEY9ei5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImJnIikuc3R5bGUo InN0cm9rZS13aWR0aCIsSSsicHgiKS5jYWxsKGwuc3Ryb2tlLGUuYm9yZGVy Y29sb3IpLmNhbGwobC5maWxsLGUuYmdjb2xvciksQj1lLndpZHRofHxlLmhl aWdodCxOPXguX3RvcGNsaXBzLnNlbGVjdEFsbCgiIyIrQSkuZGF0YShCP1sw XTpbXSk7Ti5lbnRlcigpLmFwcGVuZCgiY2xpcFBhdGgiKS5jbGFzc2VkKCJh bm5jbGlwIiwhMCkuYXR0cigiaWQiLEEpLmFwcGVuZCgicmVjdCIpLE4uZXhp dCgpLnJlbW92ZSgpO3ZhciBqPWUuZm9udCxWPXguX21ldGE/by50ZW1wbGF0 ZVN0cmluZyhlLnRleHQseC5fbWV0YSk6ZS50ZXh0LFU9ei5hcHBlbmQoInRl eHQiKS5jbGFzc2VkKCJhbm5vdGF0aW9uLXRleHQiLCEwKS50ZXh0KFYpO18u YW5ub3RhdGlvblRleHQ/VS5jYWxsKGgubWFrZUVkaXRhYmxlLHtkZWxlZ2F0 ZTp6LGdkOnR9KS5jYWxsKEgpLm9uKCJlZGl0IixmdW5jdGlvbihyKXtlLnRl eHQ9cix0aGlzLmNhbGwoSCksVCgidGV4dCIscikscyYmcy5hdXRvcmFuZ2Um Jmsocy5fbmFtZSsiLmF1dG9yYW5nZSIsITApLHYmJnYuYXV0b3JhbmdlJiZr KHYuX25hbWUrIi5hdXRvcmFuZ2UiLCEwKSxhLmNhbGwoIl9ndWlSZWxheW91 dCIsdCxNKCkpfSk6VS5jYWxsKEgpfWVsc2Ugbi5zZWxlY3RBbGwoIiMiK0Ep LnJlbW92ZSgpO2Z1bmN0aW9uIHEodCl7dmFyIG49e2luZGV4OnIsYW5ub3Rh dGlvbjplLl9pbnB1dCxmdWxsQW5ub3RhdGlvbjplLGV2ZW50OnR9O3JldHVy biBpJiYobi5zdWJwbG90SWQ9aSksbn1mdW5jdGlvbiBIKHIpe3JldHVybiBy LmNhbGwoYy5mb250LGopLmF0dHIoeyJ0ZXh0LWFuY2hvciI6e2xlZnQ6InN0 YXJ0IixyaWdodDoiZW5kIn1bZS5hbGlnbl18fCJtaWRkbGUifSksaC5jb252 ZXJ0VG9Uc3BhbnMocix0LEcpLHJ9ZnVuY3Rpb24gRygpe3ZhciByPVUuc2Vs ZWN0QWxsKCJhIik7MT09PXIuc2l6ZSgpJiZyLnRleHQoKT09PVUudGV4dCgp JiZ6Lmluc2VydCgiYSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoeyJ4bGluazp4 bGluazpocmVmIjpyLmF0dHIoInhsaW5rOmhyZWYiKSwieGxpbms6eGxpbms6 c2hvdyI6ci5hdHRyKCJ4bGluazpzaG93Iil9KS5zdHlsZSh7Y3Vyc29yOiJw b2ludGVyIn0pLm5vZGUoKS5hcHBlbmRDaGlsZChGLm5vZGUoKSk7dmFyIG49 ei5zZWxlY3QoIi5hbm5vdGF0aW9uLXRleHQtbWF0aC1ncm91cCIpLHU9IW4u ZW1wdHkoKSxkPWMuYkJveCgodT9uOlUpLm5vZGUoKSksbT1kLndpZHRoLHk9 ZC5oZWlnaHQsdz1lLndpZHRofHxtLE89ZS5oZWlnaHR8fHksRD1NYXRoLnJv dW5kKHcrMipSKSxqPU1hdGgucm91bmQoTysyKlIpO2Z1bmN0aW9uIFYodCxl KXtyZXR1cm4iYXV0byI9PT1lJiYoZT10PDEvMz8ibGVmdCI6dD4yLzM/InJp Z2h0IjoiY2VudGVyIikse2NlbnRlcjowLG1pZGRsZTowLGxlZnQ6LjUsYm90 dG9tOi0uNSxyaWdodDotLjUsdG9wOi41fVtlXX1mb3IodmFyIEg9ITEsRz1b IngiLCJ5Il0sWT0wO1k8Ry5sZW5ndGg7WSsrKXt2YXIgVyxYLFosSixLLFE9 R1tZXSwkPWVbUSsicmVmIl18fFEsdHQ9ZVsiYSIrUSsicmVmIl0sZXQ9e3g6 cyx5OnZ9W1FdLHJ0PShFKygieCI9PT1RPzA6LTkwKSkqTWF0aC5QSS8xODAs bnQ9RCpNYXRoLmNvcyhydCksYXQ9aipNYXRoLnNpbihydCksaXQ9TWF0aC5h YnMobnQpK01hdGguYWJzKGF0KSxvdD1lW1ErImFuY2hvciJdLHN0PWVbUSsi c2hpZnQiXSooIngiPT09UT8xOi0xKSxsdD1TW1FdO2lmKGV0KXt2YXIgY3Q9 ZXQucjJmcmFjdGlvbihlW1FdKTsoY3Q8MHx8Y3Q+MSkmJih0dD09PSQ/KChj dD1ldC5yMmZyYWN0aW9uKGVbImEiK1FdKSk8MHx8Y3Q+MSkmJihIPSEwKTpI PSEwKSxXPWV0Ll9vZmZzZXQrZXQucjJwKGVbUV0pLEo9LjV9ZWxzZSJ4Ij09 PVE/KFo9ZVtRXSxXPWIubCtiLncqWik6KFo9MS1lW1FdLFc9Yi50K2IuaCpa KSxKPWUuc2hvd2Fycm93Py41Olo7aWYoZS5zaG93YXJyb3cpe2x0LmhlYWQ9 Vzt2YXIgdXQ9ZVsiYSIrUV07Sz1udCpWKC41LGUueGFuY2hvciktYXQqVigu NSxlLnlhbmNob3IpLHR0PT09JD8obHQudGFpbD1ldC5fb2Zmc2V0K2V0LnIy cCh1dCksWD1LKToobHQudGFpbD1XK3V0LFg9Syt1dCksbHQudGV4dD1sdC50 YWlsK0s7dmFyIGh0PXhbIngiPT09UT8id2lkdGgiOiJoZWlnaHQiXTtpZigi cGFwZXIiPT09JCYmKGx0LmhlYWQ9by5jb25zdHJhaW4obHQuaGVhZCwxLGh0 LTEpKSwicGl4ZWwiPT09dHQpe3ZhciBmdD0tTWF0aC5tYXgobHQudGFpbC0z LGx0LnRleHQpLHB0PU1hdGgubWluKGx0LnRhaWwrMyxsdC50ZXh0KS1odDtm dD4wPyhsdC50YWlsKz1mdCxsdC50ZXh0Kz1mdCk6cHQ+MCYmKGx0LnRhaWwt PXB0LGx0LnRleHQtPXB0KX1sdC50YWlsKz1zdCxsdC5oZWFkKz1zdH1lbHNl IFg9Sz1pdCpWKEosb3QpLGx0LnRleHQ9VytLO2x0LnRleHQrPXN0LEsrPXN0 LFgrPXN0LGVbIl8iK1ErInBhZHBsdXMiXT1pdC8yK1gsZVsiXyIrUSsicGFk bWludXMiXT1pdC8yLVgsZVsiXyIrUSsic2l6ZSJdPWl0LGVbIl8iK1ErInNo aWZ0Il09S31pZihIKXoucmVtb3ZlKCk7ZWxzZXt2YXIgZHQ9MCxndD0wO2lm KCJsZWZ0IiE9PWUuYWxpZ24mJihkdD0ody1tKSooImNlbnRlciI9PT1lLmFs aWduPy41OjEpKSwidG9wIiE9PWUudmFsaWduJiYoZ3Q9KE8teSkqKCJtaWRk bGUiPT09ZS52YWxpZ24/LjU6MSkpLHUpbi5zZWxlY3QoInN2ZyIpLmF0dHIo e3g6UitkdC0xLHk6UitndH0pLmNhbGwoYy5zZXRDbGlwVXJsLEI/QTpudWxs LHQpO2Vsc2V7dmFyIHZ0PVIrZ3QtZC50b3AsbXQ9UitkdC1kLmxlZnQ7VS5j YWxsKGgucG9zaXRpb25UZXh0LG10LHZ0KS5jYWxsKGMuc2V0Q2xpcFVybCxC P0E6bnVsbCx0KX1OLnNlbGVjdCgicmVjdCIpLmNhbGwoYy5zZXRSZWN0LFIs Uix3LE8pLEYuY2FsbChjLnNldFJlY3QsSS8yLEkvMixELUksai1JKSx6LmNh bGwoYy5zZXRUcmFuc2xhdGUsTWF0aC5yb3VuZChTLngudGV4dC1ELzIpLE1h dGgucm91bmQoUy55LnRleHQtai8yKSksQy5hdHRyKHt0cmFuc2Zvcm06InJv dGF0ZSgiK0UrIiwiK1MueC50ZXh0KyIsIitTLnkudGV4dCsiKSJ9KTt2YXIg eXQseHQ9ZnVuY3Rpb24ocixuKXtMLnNlbGVjdEFsbCgiLmFubm90YXRpb24t YXJyb3ctZyIpLnJlbW92ZSgpO3ZhciB1PVMueC5oZWFkLGg9Uy55LmhlYWQs Zj1TLngudGFpbCtyLGQ9Uy55LnRhaWwrbixtPVMueC50ZXh0K3IseT1TLnku dGV4dCtuLHg9by5yb3RhdGlvblhZTWF0cml4KEUsbSx5KSx3PW8uYXBwbHky RFRyYW5zZm9ybSh4KSxBPW8uYXBwbHkyRFRyYW5zZm9ybTIoeCksUD0rRi5h dHRyKCJ3aWR0aCIpLE89K0YuYXR0cigiaGVpZ2h0IiksST1tLS41KlAsRD1J K1AsUj15LS41Kk8sQj1SK08sTj1bW0ksUixJLEJdLFtJLEIsRCxCXSxbRCxC LEQsUl0sW0QsUixJLFJdXS5tYXAoQSk7aWYoIU4ucmVkdWNlKGZ1bmN0aW9u KHQsZSl7cmV0dXJuIHReISFvLnNlZ21lbnRzSW50ZXJzZWN0KHUsaCx1KzFl NixoKzFlNixlWzBdLGVbMV0sZVsyXSxlWzNdKX0sITEpKXtOLmZvckVhY2go ZnVuY3Rpb24odCl7dmFyIGU9by5zZWdtZW50c0ludGVyc2VjdChmLGQsdSxo LHRbMF0sdFsxXSx0WzJdLHRbM10pO2UmJihmPWUueCxkPWUueSl9KTt2YXIg aj1lLmFycm93d2lkdGgsVj1lLmFycm93Y29sb3IsVT1lLmFycm93c2lkZSxx PUwuYXBwZW5kKCJnIikuc3R5bGUoe29wYWNpdHk6bC5vcGFjaXR5KFYpfSku Y2xhc3NlZCgiYW5ub3RhdGlvbi1hcnJvdy1nIiwhMCksSD1xLmFwcGVuZCgi cGF0aCIpLmF0dHIoImQiLCJNIitmKyIsIitkKyJMIit1KyIsIitoKS5zdHls ZSgic3Ryb2tlLXdpZHRoIixqKyJweCIpLmNhbGwobC5zdHJva2UsbC5yZ2Io VikpO2lmKGcoSCxVLGUpLF8uYW5ub3RhdGlvblBvc2l0aW9uJiZILm5vZGUo KS5wYXJlbnROb2RlJiYhaSl7dmFyIEc9dSxZPWg7aWYoZS5zdGFuZG9mZil7 dmFyIFc9TWF0aC5zcXJ0KE1hdGgucG93KHUtZiwyKStNYXRoLnBvdyhoLWQs MikpO0crPWUuc3RhbmRvZmYqKGYtdSkvVyxZKz1lLnN0YW5kb2ZmKihkLWgp L1d9dmFyIFgsWixKPXEuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgiYW5ub3Rh dGlvbi1hcnJvdyIsITApLmNsYXNzZWQoImFubmRyYWciLCEwKS5jbGFzc2Vk KCJjdXJzb3ItbW92ZSIsITApLmF0dHIoe2Q6Ik0zLDNILTNWLTNIM1pNMCww TCIrKGYtRykrIiwiKyhkLVkpLHRyYW5zZm9ybToidHJhbnNsYXRlKCIrRysi LCIrWSsiKSJ9KS5zdHlsZSgic3Ryb2tlLXdpZHRoIixqKzYrInB4IikuY2Fs bChsLnN0cm9rZSwicmdiYSgwLDAsMCwwKSIpLmNhbGwobC5maWxsLCJyZ2Jh KDAsMCwwLDApIik7cC5pbml0KHtlbGVtZW50Okoubm9kZSgpLGdkOnQscHJl cEZuOmZ1bmN0aW9uKCl7dmFyIHQ9Yy5nZXRUcmFuc2xhdGUoeik7WD10Lngs Wj10LnkscyYmcy5hdXRvcmFuZ2UmJmsocy5fbmFtZSsiLmF1dG9yYW5nZSIs ITApLHYmJnYuYXV0b3JhbmdlJiZrKHYuX25hbWUrIi5hdXRvcmFuZ2UiLCEw KX0sbW92ZUZuOmZ1bmN0aW9uKHQscil7dmFyIG49dyhYLFopLGE9blswXSt0 LGk9blsxXStyO3ouY2FsbChjLnNldFRyYW5zbGF0ZSxhLGkpLFQoIngiLHM/ cy5wMnIocy5yMnAoZS54KSt0KTplLngrdC9iLncpLFQoInkiLHY/di5wMnIo di5yMnAoZS55KStyKTplLnktci9iLmgpLGUuYXhyZWY9PT1lLnhyZWYmJlQo ImF4IixzLnAycihzLnIycChlLmF4KSt0KSksZS5heXJlZj09PWUueXJlZiYm VCgiYXkiLHYucDJyKHYucjJwKGUuYXkpK3IpKSxxLmF0dHIoInRyYW5zZm9y bSIsInRyYW5zbGF0ZSgiK3QrIiwiK3IrIikiKSxDLmF0dHIoe3RyYW5zZm9y bToicm90YXRlKCIrRSsiLCIrYSsiLCIraSsiKSJ9KX0sZG9uZUZuOmZ1bmN0 aW9uKCl7YS5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsTSgpKTt2YXIgZT1kb2N1 bWVudC5xdWVyeVNlbGVjdG9yKCIuanMtbm90ZXMtYm94LXBhbmVsIik7ZSYm ZS5yZWRyYXcoZS5zZWxlY3RlZE9iail9fSl9fX07aWYoZS5zaG93YXJyb3cm Jnh0KDAsMCksUClwLmluaXQoe2VsZW1lbnQ6ei5ub2RlKCksZ2Q6dCxwcmVw Rm46ZnVuY3Rpb24oKXt5dD1DLmF0dHIoInRyYW5zZm9ybSIpfSxtb3ZlRm46 ZnVuY3Rpb24odCxyKXt2YXIgbj0icG9pbnRlciI7aWYoZS5zaG93YXJyb3cp ZS5heHJlZj09PWUueHJlZj9UKCJheCIscy5wMnIocy5yMnAoZS5heCkrdCkp OlQoImF4IixlLmF4K3QpLGUuYXlyZWY9PT1lLnlyZWY/VCgiYXkiLHYucDJy KHYucjJwKGUuYXkpK3IpKTpUKCJheSIsZS5heStyKSx4dCh0LHIpO2Vsc2V7 aWYoaSlyZXR1cm47dmFyIGEsbztpZihzKWE9cy5wMnIocy5yMnAoZS54KSt0 KTtlbHNle3ZhciBsPWUuX3hzaXplL2IudyxjPWUueCsoZS5feHNoaWZ0LWUu eHNoaWZ0KS9iLnctbC8yO2E9cC5hbGlnbihjK3QvYi53LGwsMCwxLGUueGFu Y2hvcil9aWYodilvPXYucDJyKHYucjJwKGUueSkrcik7ZWxzZXt2YXIgdT1l Ll95c2l6ZS9iLmgsaD1lLnktKGUuX3lzaGlmdCtlLnlzaGlmdCkvYi5oLXUv MjtvPXAuYWxpZ24oaC1yL2IuaCx1LDAsMSxlLnlhbmNob3IpfVQoIngiLGEp LFQoInkiLG8pLHMmJnZ8fChuPXAuZ2V0Q3Vyc29yKHM/LjU6YSx2Py41Om8s ZS54YW5jaG9yLGUueWFuY2hvcikpfUMuYXR0cih7dHJhbnNmb3JtOiJ0cmFu c2xhdGUoIit0KyIsIityKyIpIit5dH0pLGYoeixuKX0sY2xpY2tGbjpmdW5j dGlvbihyLG4pe2UuY2FwdHVyZWV2ZW50cyYmdC5lbWl0KCJwbG90bHlfY2xp Y2thbm5vdGF0aW9uIixxKG4pKX0sZG9uZUZuOmZ1bmN0aW9uKCl7Zih6KSxh LmNhbGwoIl9ndWlSZWxheW91dCIsdCxNKCkpO3ZhciBlPWRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3IoIi5qcy1ub3Rlcy1ib3gtcGFuZWwiKTtlJiZlLnJlZHJh dyhlLnNlbGVjdGVkT2JqKX19KX19fWUuZXhwb3J0cz17ZHJhdzpmdW5jdGlv bih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2UuX2luZm9sYXllci5zZWxlY3RB bGwoIi5hbm5vdGF0aW9uIikucmVtb3ZlKCk7Zm9yKHZhciByPTA7cjxlLmFu bm90YXRpb25zLmxlbmd0aDtyKyspZS5hbm5vdGF0aW9uc1tyXS52aXNpYmxl JiZ2KHQscik7cmV0dXJuIGkucHJldmlvdXNQcm9taXNlcyh0KX0sZHJhd09u ZTp2LGRyYXdSYXc6bX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9z ZXRjdXJzb3IiOjczNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEs Ii4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vLi4vcGxvdHMvcGxvdHMiOjgy NiwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vY29sb3IiOjU5MiwiLi4vZHJh Z2VsZW1lbnQiOjYxMCwiLi4vZHJhd2luZyI6NjEzLCIuLi9meCI6NjMwLCIu L2RyYXdfYXJyb3dfaGVhZCI6NTgyLGQzOjE2NX1dLDU4MjpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vY29s b3IiKSxpPXQoIi4vYXJyb3dfcGF0aHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIpe3ZhciBvLHMsbCxjLHU9dC5ub2RlKCksaD1pW3IuYXJyb3doZWFk fHwwXSxmPWlbci5zdGFydGFycm93aGVhZHx8MF0scD0oci5hcnJvd3dpZHRo fHwxKSooci5hcnJvd3NpemV8fDEpLGQ9KHIuYXJyb3d3aWR0aHx8MSkqKHIu c3RhcnRhcnJvd3NpemV8fDEpLGc9ZS5pbmRleE9mKCJzdGFydCIpPj0wLHY9 ZS5pbmRleE9mKCJlbmQiKT49MCxtPWguYmFja29mZipwK3Iuc3RhbmRvZmYs eT1mLmJhY2tvZmYqZCtyLnN0YXJ0c3RhbmRvZmY7aWYoImxpbmUiPT09dS5u b2RlTmFtZSl7bz17eDordC5hdHRyKCJ4MSIpLHk6K3QuYXR0cigieTEiKX0s cz17eDordC5hdHRyKCJ4MiIpLHk6K3QuYXR0cigieTIiKX07dmFyIHg9by54 LXMueCxiPW8ueS1zLnk7aWYoYz0obD1NYXRoLmF0YW4yKGIseCkpK01hdGgu UEksbSYmeSYmbSt5Pk1hdGguc3FydCh4KngrYipiKSlyZXR1cm4gdm9pZCBQ KCk7aWYobSl7aWYobSptPngqeCtiKmIpcmV0dXJuIHZvaWQgUCgpO3ZhciBf PW0qTWF0aC5jb3MobCksdz1tKk1hdGguc2luKGwpO3MueCs9XyxzLnkrPXcs dC5hdHRyKHt4MjpzLngseTI6cy55fSl9aWYoeSl7aWYoeSp5PngqeCtiKmIp cmV0dXJuIHZvaWQgUCgpO3ZhciBrPXkqTWF0aC5jb3MobCksVD15Kk1hdGgu c2luKGwpO28ueC09ayxvLnktPVQsdC5hdHRyKHt4MTpvLngseTE6by55fSl9 fWVsc2UgaWYoInBhdGgiPT09dS5ub2RlTmFtZSl7dmFyIE09dS5nZXRUb3Rh bExlbmd0aCgpLEE9IiI7aWYoTTxtK3kpcmV0dXJuIHZvaWQgUCgpO3ZhciBT PXUuZ2V0UG9pbnRBdExlbmd0aCgwKSxFPXUuZ2V0UG9pbnRBdExlbmd0aCgu MSk7bD1NYXRoLmF0YW4yKFMueS1FLnksUy54LUUueCksbz11LmdldFBvaW50 QXRMZW5ndGgoTWF0aC5taW4oeSxNKSksQT0iMHB4LCIreSsicHgsIjt2YXIg TD11LmdldFBvaW50QXRMZW5ndGgoTSksQz11LmdldFBvaW50QXRMZW5ndGgo TS0uMSk7Yz1NYXRoLmF0YW4yKEwueS1DLnksTC54LUMueCkscz11LmdldFBv aW50QXRMZW5ndGgoTWF0aC5tYXgoMCxNLW0pKSxBKz1NLShBP3krbTptKSsi cHgsIitNKyJweCIsdC5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsQSl9ZnVu Y3Rpb24gUCgpe3Quc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIwcHgsMTAw cHgiKX1mdW5jdGlvbiBPKGUsaSxvLHMpe2UucGF0aCYmKGUubm9Sb3RhdGUm JihvPTApLG4uc2VsZWN0KHUucGFyZW50Tm9kZSkuYXBwZW5kKCJwYXRoIiku YXR0cih7Y2xhc3M6dC5hdHRyKCJjbGFzcyIpLGQ6ZS5wYXRoLHRyYW5zZm9y bToidHJhbnNsYXRlKCIraS54KyIsIitpLnkrIikiKyhvPyJyb3RhdGUoIisx ODAqby9NYXRoLlBJKyIpIjoiIikrInNjYWxlKCIrcysiKSJ9KS5zdHlsZSh7 ZmlsbDphLnJnYihyLmFycm93Y29sb3IpLCJzdHJva2Utd2lkdGgiOjB9KSl9 ZyYmTyhmLG8sbCxkKSx2JiZPKGgscyxjLHApfX0seyIuLi9jb2xvciI6NTky LCIuL2Fycm93X3BhdGhzIjo1NzQsZDM6MTY1fV0sNTgzOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vZHJhdyIpLGE9dCgiLi9j bGljayIpO2UuZXhwb3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1l OiJhbm5vdGF0aW9ucyIsbGF5b3V0QXR0cmlidXRlczp0KCIuL2F0dHJpYnV0 ZXMiKSxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksaW5j bHVkZUJhc2VQbG90OnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9pbmNsdWRl X2NvbXBvbmVudHMiKSgiYW5ub3RhdGlvbnMiKSxjYWxjQXV0b3JhbmdlOnQo Ii4vY2FsY19hdXRvcmFuZ2UiKSxkcmF3Om4uZHJhdyxkcmF3T25lOm4uZHJh d09uZSxkcmF3UmF3Om4uZHJhd1JhdyxoYXNDbGlja1RvU2hvdzphLmhhc0Ns aWNrVG9TaG93LG9uQ2xpY2s6YS5vbkNsaWNrLGNvbnZlcnRDb29yZHM6dCgi Li9jb252ZXJ0X2Nvb3JkcyIpfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v aW5jbHVkZV9jb21wb25lbnRzIjo3NzUsIi4vYXR0cmlidXRlcyI6NTc1LCIu L2NhbGNfYXV0b3JhbmdlIjo1NzYsIi4vY2xpY2siOjU3NywiLi9jb252ZXJ0 X2Nvb3JkcyI6NTc5LCIuL2RlZmF1bHRzIjo1ODAsIi4vZHJhdyI6NTgxfV0s NTg0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u L2Fubm90YXRpb25zL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RfYXBp L2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxpPXQoIi4uLy4uL3Bsb3RfYXBp L3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheTtlLmV4cG9ydHM9YShp KCJhbm5vdGF0aW9uIix7dmlzaWJsZTpuLnZpc2libGUseDp7dmFsVHlwZToi YW55In0seTp7dmFsVHlwZToiYW55In0sejp7dmFsVHlwZToiYW55In0sYXg6 e3ZhbFR5cGU6Im51bWJlciJ9LGF5Ont2YWxUeXBlOiJudW1iZXIifSx4YW5j aG9yOm4ueGFuY2hvcix4c2hpZnQ6bi54c2hpZnQseWFuY2hvcjpuLnlhbmNo b3IseXNoaWZ0Om4ueXNoaWZ0LHRleHQ6bi50ZXh0LHRleHRhbmdsZTpuLnRl eHRhbmdsZSxmb250Om4uZm9udCx3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhl aWdodCxvcGFjaXR5Om4ub3BhY2l0eSxhbGlnbjpuLmFsaWduLHZhbGlnbjpu LnZhbGlnbixiZ2NvbG9yOm4uYmdjb2xvcixib3JkZXJjb2xvcjpuLmJvcmRl cmNvbG9yLGJvcmRlcnBhZDpuLmJvcmRlcnBhZCxib3JkZXJ3aWR0aDpuLmJv cmRlcndpZHRoLHNob3dhcnJvdzpuLnNob3dhcnJvdyxhcnJvd2NvbG9yOm4u YXJyb3djb2xvcixhcnJvd2hlYWQ6bi5hcnJvd2hlYWQsc3RhcnRhcnJvd2hl YWQ6bi5zdGFydGFycm93aGVhZCxhcnJvd3NpZGU6bi5hcnJvd3NpZGUsYXJy b3dzaXplOm4uYXJyb3dzaXplLHN0YXJ0YXJyb3dzaXplOm4uc3RhcnRhcnJv d3NpemUsYXJyb3d3aWR0aDpuLmFycm93d2lkdGgsc3RhbmRvZmY6bi5zdGFu ZG9mZixzdGFydHN0YW5kb2ZmOm4uc3RhcnRzdGFuZG9mZixob3ZlcnRleHQ6 bi5ob3ZlcnRleHQsaG92ZXJsYWJlbDpuLmhvdmVybGFiZWwsY2FwdHVyZWV2 ZW50czpuLmNhcHR1cmVldmVudHN9KSwiY2FsYyIsImZyb20tcm9vdCIpfSx7 Ii4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdF9h cGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi9hbm5vdGF0aW9ucy9hdHRyaWJ1 dGVzIjo1NzV9XSw1ODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyIpO2Z1bmN0aW9uIGkodCxlKXt2YXIgcj1lLmZ1bGxTY2VuZUxh eW91dC5kb21haW4saT1lLmZ1bGxMYXlvdXQuX3NpemUsbz17cGRhdGE6bnVs bCx0eXBlOiJsaW5lYXIiLGF1dG9yYW5nZTohMSxyYW5nZTpbLTEvMCwxLzBd fTt0Ll94YT17fSxuLmV4dGVuZEZsYXQodC5feGEsbyksYS5zZXRDb252ZXJ0 KHQuX3hhKSx0Ll94YS5fb2Zmc2V0PWkubCtyLnhbMF0qaS53LHQuX3hhLmwy cD1mdW5jdGlvbigpe3JldHVybi41KigxK3QuX3BkYXRhWzBdL3QuX3BkYXRh WzNdKSppLncqKHIueFsxXS1yLnhbMF0pfSx0Ll95YT17fSxuLmV4dGVuZEZs YXQodC5feWEsbyksYS5zZXRDb252ZXJ0KHQuX3lhKSx0Ll95YS5fb2Zmc2V0 PWkudCsoMS1yLnlbMV0pKmkuaCx0Ll95YS5sMnA9ZnVuY3Rpb24oKXtyZXR1 cm4uNSooMS10Ll9wZGF0YVsxXS90Ll9wZGF0YVszXSkqaS5oKihyLnlbMV0t ci55WzBdKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmZ1 bGxTY2VuZUxheW91dC5hbm5vdGF0aW9ucyxyPTA7cjxlLmxlbmd0aDtyKysp aShlW3JdLHQpO3QuZnVsbExheW91dC5faW5mb2xheWVyLnNlbGVjdEFsbCgi LmFubm90YXRpb24tIit0LmlkKS5yZW1vdmUoKX19LHsiLi4vLi4vbGliIjo3 MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjV9XSw1ODY6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGli IiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4v Li4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbz10KCIuLi9h bm5vdGF0aW9ucy9jb21tb25fZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRl cyIpO2Z1bmN0aW9uIGwodCxlLHIsaSl7ZnVuY3Rpb24gbChyLGEpe3JldHVy biBuLmNvZXJjZSh0LGUscyxyLGEpfWZ1bmN0aW9uIGModCl7dmFyIG49dCsi YXhpcyIsaT17X2Z1bGxMYXlvdXQ6e319O3JldHVybiBpLl9mdWxsTGF5b3V0 W25dPXJbbl0sYS5jb2VyY2VQb3NpdGlvbihlLGksbCx0LHQsLjUpfWwoInZp c2libGUiKSYmKG8odCxlLGkuZnVsbExheW91dCxsKSxjKCJ4IiksYygieSIp LGMoInoiKSxuLm5vbmVPckFsbCh0LGUsWyJ4IiwieSIsInoiXSksZS54cmVm PSJ4IixlLnlyZWY9InkiLGUuenJlZj0ieiIsbCgieGFuY2hvciIpLGwoInlh bmNob3IiKSxsKCJ4c2hpZnQiKSxsKCJ5c2hpZnQiKSxlLnNob3dhcnJvdyYm KGUuYXhyZWY9InBpeGVsIixlLmF5cmVmPSJwaXhlbCIsbCgiYXgiLC0xMCks bCgiYXkiLC0zMCksbi5ub25lT3JBbGwodCxlLFsiYXgiLCJheSJdKSkpfWUu ZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aSh0LGUse25hbWU6ImFubm90YXRp b25zIixoYW5kbGVJdGVtRGVmYXVsdHM6bCxmdWxsTGF5b3V0OnIuZnVsbExh eW91dH0pfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvYXJyYXlf Y29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9heGVzIjo3NjUsIi4uL2Fubm90YXRpb25zL2NvbW1vbl9kZWZhdWx0cyI6 NTc4LCIuL2F0dHJpYnV0ZXMiOjU4NH1dLDU4NzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9hbm5vdGF0aW9ucy9kcmF3Iiku ZHJhd1JhdyxhPXQoIi4uLy4uL3Bsb3RzL2dsM2QvcHJvamVjdCIpLGk9WyJ4 IiwieSIsInoiXTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQu ZnVsbFNjZW5lTGF5b3V0LHI9dC5kYXRhU2NhbGUsbz1lLmFubm90YXRpb25z LHM9MDtzPG8ubGVuZ3RoO3MrKyl7Zm9yKHZhciBsPW9bc10sYz0hMSx1PTA7 dTwzO3UrKyl7dmFyIGg9aVt1XSxmPWxbaF0scD1lW2grImF4aXMiXS5yMmZy YWN0aW9uKGYpO2lmKHA8MHx8cD4xKXtjPSEwO2JyZWFrfX1jP3QuZnVsbExh eW91dC5faW5mb2xheWVyLnNlbGVjdCgiLmFubm90YXRpb24tIit0LmlkKydb ZGF0YS1pbmRleD0iJytzKyciXScpLnJlbW92ZSgpOihsLl9wZGF0YT1hKHQu Z2xwbG90LmNhbWVyYVBhcmFtcyxbZS54YXhpcy5yMmwobC54KSpyWzBdLGUu eWF4aXMucjJsKGwueSkqclsxXSxlLnpheGlzLnIybChsLnopKnJbMl1dKSxu KHQuZ3JhcGhEaXYsbCxzLHQuaWQsbC5feGEsbC5feWEpKX19fSx7Ii4uLy4u L3Bsb3RzL2dsM2QvcHJvamVjdCI6ODE0LCIuLi9hbm5vdGF0aW9ucy9kcmF3 Ijo1ODF9XSw1ODg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIpO2UuZXhw b3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJhbm5vdGF0aW9u czNkIixzY2hlbWE6e3N1YnBsb3RzOntzY2VuZTp7YW5ub3RhdGlvbnM6dCgi Li9hdHRyaWJ1dGVzIil9fX0sbGF5b3V0QXR0cmlidXRlczp0KCIuL2F0dHJp YnV0ZXMiKSxoYW5kbGVEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksaW5jbHVk ZUJhc2VQbG90OmZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5zdWJwbG90c1JlZ2lz dHJ5LmdsM2Q7aWYoIXIpcmV0dXJuO2Zvcih2YXIgaT1yLmF0dHJSZWdleCxv PU9iamVjdC5rZXlzKHQpLHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIGw9b1tz XTtpLnRlc3QobCkmJih0W2xdLmFubm90YXRpb25zfHxbXSkubGVuZ3RoJiYo YS5wdXNoVW5pcXVlKGUuX2Jhc2VQbG90TW9kdWxlcyxyKSxhLnB1c2hVbmlx dWUoZS5fc3VicGxvdHMuZ2wzZCxsKSl9fSxjb252ZXJ0OnQoIi4vY29udmVy dCIpLGRyYXc6dCgiLi9kcmF3Iil9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8u Li9yZWdpc3RyeSI6ODQ2LCIuL2F0dHJpYnV0ZXMiOjU4NCwiLi9jb252ZXJ0 Ijo1ODUsIi4vZGVmYXVsdHMiOjU4NiwiLi9kcmF3Ijo1ODd9XSw1ODk6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIndvcmxk LWNhbGVuZGFycy9kaXN0L21haW4iKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlz dC9wbHVzIiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2No aW5lc2UiKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvY29w dGljIiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2Rpc2N3 b3JsZCIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9ldGhp b3BpYW4iKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvaGVi cmV3IiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2lzbGFt aWMiKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvanVsaWFu IiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL21heWFuIiks dCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL25hbmFrc2hhaGki KSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvbmVwYWxpIiks dCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL3BlcnNpYW4iKSx0 KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvdGFpd2FuIiksdCgi d29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL3RoYWkiKSx0KCJ3b3Js ZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvdW1tYWxxdXJhIil9LHsid29y bGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2NoaW5lc2UiOjU1Niwid29y bGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2NvcHRpYyI6NTU3LCJ3b3Js ZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvZGlzY3dvcmxkIjo1NTgsIndv cmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9ldGhpb3BpYW4iOjU1OSwi d29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2hlYnJldyI6NTYwLCJ3 b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvaXNsYW1pYyI6NTYxLCJ3 b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvanVsaWFuIjo1NjIsIndv cmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9tYXlhbiI6NTYzLCJ3b3Js ZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvbmFuYWtzaGFoaSI6NTY0LCJ3 b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvbmVwYWxpIjo1NjUsIndv cmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9wZXJzaWFuIjo1NjYsIndv cmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy90YWl3YW4iOjU2Nywid29y bGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL3RoYWkiOjU2OCwid29ybGQt Y2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL3VtbWFscXVyYSI6NTY5LCJ3b3Js ZC1jYWxlbmRhcnMvZGlzdC9tYWluIjo1NzAsIndvcmxkLWNhbGVuZGFycy9k aXN0L3BsdXMiOjU3MX1dLDU5MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuL2NhbGVuZGFycyIpLGE9dCgiLi4vLi4vbGliIiks aT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIiksbz1pLkVQT0NISkQs cz1pLk9ORURBWSxsPXt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6T2Jq ZWN0LmtleXMobi5jYWxlbmRhcnMpLGVkaXRUeXBlOiJjYWxjIixkZmx0OiJn cmVnb3JpYW4ifSxjPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXt9O3JldHVy biBpW3JdPWwsYS5jb2VyY2UodCxlLGkscixuKX0sdT0iIyMiLGg9e2Q6ezA6 ImRkIiwiLSI6ImQifSxlOnswOiJkIiwiLSI6ImQifSxhOnswOiJEIiwiLSI6 IkQifSxBOnswOiJERCIsIi0iOiJERCJ9LGo6ezA6Im9vIiwiLSI6Im8ifSxX OnswOiJ3dyIsIi0iOiJ3In0sbTp7MDoibW0iLCItIjoibSJ9LGI6ezA6Ik0i LCItIjoiTSJ9LEI6ezA6Ik1NIiwiLSI6Ik1NIn0seTp7MDoieXkiLCItIjoi eXkifSxZOnswOiJ5eXl5IiwiLSI6Inl5eXkifSxVOnUsdzp1LGM6ezA6IkQg TSBkICVYIHl5eXkiLCItIjoiRCBNIGQgJVggeXl5eSJ9LHg6ezA6Im1tL2Rk L3l5eXkiLCItIjoibW0vZGQveXl5eSJ9fTt2YXIgZj17fTtmdW5jdGlvbiBw KHQpe3ZhciBlPWZbdF07cmV0dXJuIGV8fChlPWZbdF09bi5pbnN0YW5jZSh0 KSl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gYS5leHRlbmRGbGF0KHt9LGwse2Rl c2NyaXB0aW9uOnR9KX1mdW5jdGlvbiBnKHQpe3JldHVybiJTZXRzIHRoZSBj YWxlbmRhciBzeXN0ZW0gdG8gdXNlIHdpdGggYCIrdCsiYCBkYXRlIGRhdGEu In12YXIgdj17eGNhbGVuZGFyOmQoZygieCIpKX0sbT1hLmV4dGVuZEZsYXQo e30sdix7eWNhbGVuZGFyOmQoZygieSIpKX0pLHk9YS5leHRlbmRGbGF0KHt9 LG0se3pjYWxlbmRhcjpkKGcoInoiKSl9KSx4PWQoWyJTZXRzIHRoZSBjYWxl bmRhciBzeXN0ZW0gdG8gdXNlIGZvciBgcmFuZ2VgIGFuZCBgdGljazBgIiwi aWYgdGhpcyBpcyBhIGRhdGUgYXhpcy4gVGhpcyBkb2VzIG5vdCBzZXQgdGhl IGNhbGVuZGFyIGZvciIsImludGVycHJldGluZyBkYXRhIG9uIHRoaXMgYXhp cywgdGhhdCdzIHNwZWNpZmllZCBpbiB0aGUgdHJhY2UiLCJvciB2aWEgdGhl IGdsb2JhbCBgbGF5b3V0LmNhbGVuZGFyYCJdLmpvaW4oIiAiKSk7ZS5leHBv cnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6ImNhbGVuZGFycyIs c2NoZW1hOnt0cmFjZXM6e3NjYXR0ZXI6bSxiYXI6bSxib3g6bSxoZWF0bWFw Om0sY29udG91cjptLGhpc3RvZ3JhbTptLGhpc3RvZ3JhbTJkOm0saGlzdG9n cmFtMmRjb250b3VyOm0sc2NhdHRlcjNkOnksc3VyZmFjZTp5LG1lc2gzZDp5 LHNjYXR0ZXJnbDptLG9obGM6dixjYW5kbGVzdGljazp2fSxsYXlvdXQ6e2Nh bGVuZGFyOmQoWyJTZXRzIHRoZSBkZWZhdWx0IGNhbGVuZGFyIHN5c3RlbSB0 byB1c2UgZm9yIGludGVycHJldGluZyBhbmQiLCJkaXNwbGF5aW5nIGRhdGVz IHRocm91Z2hvdXQgdGhlIHBsb3QuIl0uam9pbigiICIpKX0sc3VicGxvdHM6 e3hheGlzOntjYWxlbmRhcjp4fSx5YXhpczp7Y2FsZW5kYXI6eH0sc2NlbmU6 e3hheGlzOntjYWxlbmRhcjp4fSx5YXhpczp7Y2FsZW5kYXI6eH0semF4aXM6 e2NhbGVuZGFyOnh9fSxwb2xhcjp7cmFkaWFsYXhpczp7Y2FsZW5kYXI6eH19 fSx0cmFuc2Zvcm1zOntmaWx0ZXI6e3ZhbHVlY2FsZW5kYXI6ZChbIlNldHMg dGhlIGNhbGVuZGFyIHN5c3RlbSB0byB1c2UgZm9yIGB2YWx1ZWAsIGlmIGl0 IGlzIGEgZGF0ZS4iXS5qb2luKCIgIikpLHRhcmdldGNhbGVuZGFyOmQoWyJT ZXRzIHRoZSBjYWxlbmRhciBzeXN0ZW0gdG8gdXNlIGZvciBgdGFyZ2V0YCwg aWYgaXQgaXMgYW4iLCJhcnJheSBvZiBkYXRlcy4gSWYgYHRhcmdldGAgaXMg YSBzdHJpbmcgKGVnICp4Kikgd2UgdXNlIHRoZSIsImNvcnJlc3BvbmRpbmcg dHJhY2UgYXR0cmlidXRlIChlZyBgeGNhbGVuZGFyYCkgaWYgaXQgZXhpc3Rz LCIsImV2ZW4gaWYgYHRhcmdldGNhbGVuZGFyYCBpcyBwcm92aWRlZC4iXS5q b2luKCIgIikpfX19LGxheW91dEF0dHJpYnV0ZXM6bCxoYW5kbGVEZWZhdWx0 czpjLGhhbmRsZVRyYWNlRGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIsbil7Zm9y KHZhciBhPTA7YTxyLmxlbmd0aDthKyspYyh0LGUsclthXSsiY2FsZW5kYXIi LG4uY2FsZW5kYXIpfSxDQU5PTklDQUxfU1VOREFZOntjaGluZXNlOiIyMDAw LTAxLTAyIixjb3B0aWM6IjIwMDAtMDEtMDMiLGRpc2N3b3JsZDoiMjAwMC0w MS0wMyIsZXRoaW9waWFuOiIyMDAwLTAxLTA1IixoZWJyZXc6IjUwMDAtMDEt MDEiLGlzbGFtaWM6IjEwMDAtMDEtMDIiLGp1bGlhbjoiMjAwMC0wMS0wMyIs bWF5YW46IjUwMDAtMDEtMDEiLG5hbmFrc2hhaGk6IjEwMDAtMDEtMDUiLG5l cGFsaToiMjAwMC0wMS0wNSIscGVyc2lhbjoiMTAwMC0wMS0wMSIsamFsYWxp OiIxMDAwLTAxLTAxIix0YWl3YW46IjEwMDAtMDEtMDQiLHRoYWk6IjIwMDAt MDEtMDQiLHVtbWFscXVyYToiMTQwMC0wMS0wNiJ9LENBTk9OSUNBTF9USUNL OntjaGluZXNlOiIyMDAwLTAxLTAxIixjb3B0aWM6IjIwMDAtMDEtMDEiLGRp c2N3b3JsZDoiMjAwMC0wMS0wMSIsZXRoaW9waWFuOiIyMDAwLTAxLTAxIixo ZWJyZXc6IjUwMDAtMDEtMDEiLGlzbGFtaWM6IjEwMDAtMDEtMDEiLGp1bGlh bjoiMjAwMC0wMS0wMSIsbWF5YW46IjUwMDAtMDEtMDEiLG5hbmFrc2hhaGk6 IjEwMDAtMDEtMDEiLG5lcGFsaToiMjAwMC0wMS0wMSIscGVyc2lhbjoiMTAw MC0wMS0wMSIsamFsYWxpOiIxMDAwLTAxLTAxIix0YWl3YW46IjEwMDAtMDEt MDEiLHRoYWk6IjIwMDAtMDEtMDEiLHVtbWFscXVyYToiMTQwMC0wMS0wMSJ9 LERGTFRSQU5HRTp7Y2hpbmVzZTpbIjIwMDAtMDEtMDEiLCIyMDAxLTAxLTAx Il0sY29wdGljOlsiMTcwMC0wMS0wMSIsIjE3MDEtMDEtMDEiXSxkaXNjd29y bGQ6WyIxODAwLTAxLTAxIiwiMTgwMS0wMS0wMSJdLGV0aGlvcGlhbjpbIjIw MDAtMDEtMDEiLCIyMDAxLTAxLTAxIl0saGVicmV3OlsiNTcwMC0wMS0wMSIs IjU3MDEtMDEtMDEiXSxpc2xhbWljOlsiMTQwMC0wMS0wMSIsIjE0MDEtMDEt MDEiXSxqdWxpYW46WyIyMDAwLTAxLTAxIiwiMjAwMS0wMS0wMSJdLG1heWFu OlsiNTIwMC0wMS0wMSIsIjUyMDEtMDEtMDEiXSxuYW5ha3NoYWhpOlsiMDUw MC0wMS0wMSIsIjA1MDEtMDEtMDEiXSxuZXBhbGk6WyIyMDAwLTAxLTAxIiwi MjAwMS0wMS0wMSJdLHBlcnNpYW46WyIxNDAwLTAxLTAxIiwiMTQwMS0wMS0w MSJdLGphbGFsaTpbIjE0MDAtMDEtMDEiLCIxNDAxLTAxLTAxIl0sdGFpd2Fu OlsiMDEwMC0wMS0wMSIsIjAxMDEtMDEtMDEiXSx0aGFpOlsiMjUwMC0wMS0w MSIsIjI1MDEtMDEtMDEiXSx1bW1hbHF1cmE6WyIxNDAwLTAxLTAxIiwiMTQw MS0wMS0wMSJdfSxnZXRDYWw6cCx3b3JsZENhbEZtdDpmdW5jdGlvbih0LGUs cil7Zm9yKHZhciBuLGEsaSxsLGMsZj1NYXRoLmZsb29yKChlKy4wNSkvcykr byxkPXAocikuZnJvbUpEKGYpLGc9MDstMSE9PShnPXQuaW5kZXhPZigiJSIs ZykpOykiMCI9PT0obj10LmNoYXJBdChnKzEpKXx8Ii0iPT09bnx8Il8iPT09 bj8oaT0zLGE9dC5jaGFyQXQoZysyKSwiXyI9PT1uJiYobj0iLSIpKTooYT1u LG49IjAiLGk9MiksKGw9aFthXSk/KGM9bD09PXU/dTpkLmZvcm1hdERhdGUo bFtuXSksdD10LnN1YnN0cigwLGcpK2MrdC5zdWJzdHIoZytpKSxnKz1jLmxl bmd0aCk6Zys9aTtyZXR1cm4gdH19fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1l cmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsIi4vY2FsZW5kYXJzIjo1ODl9 XSw1OTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5kZWZhdWx0 cz1bIiMxZjc3YjQiLCIjZmY3ZjBlIiwiIzJjYTAyYyIsIiNkNjI3MjgiLCIj OTQ2N2JkIiwiIzhjNTY0YiIsIiNlMzc3YzIiLCIjN2Y3ZjdmIiwiI2JjYmQy MiIsIiMxN2JlY2YiXSxyLmRlZmF1bHRMaW5lPSIjNDQ0IixyLmxpZ2h0TGlu ZT0iI2VlZSIsci5iYWNrZ3JvdW5kPSIjZmZmIixyLmJvcmRlckxpbmU9IiNC RUM4RDkiLHIubGlnaHRGcmFjdGlvbj0xZTMvMTF9LHt9XSw1OTI6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgidGlueWNvbG9yMiIp LGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPWUuZXhwb3J0cz17fSxvPXQoIi4v YXR0cmlidXRlcyIpO2kuZGVmYXVsdHM9by5kZWZhdWx0czt2YXIgcz1pLmRl ZmF1bHRMaW5lPW8uZGVmYXVsdExpbmU7aS5saWdodExpbmU9by5saWdodExp bmU7dmFyIGw9aS5iYWNrZ3JvdW5kPW8uYmFja2dyb3VuZDtmdW5jdGlvbiBj KHQpe2lmKGEodCl8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDt2YXIg ZT10LnRyaW0oKTtpZigicmdiIiE9PWUuc3Vic3RyKDAsMykpcmV0dXJuIHQ7 dmFyIHI9ZS5tYXRjaCgvXnJnYmE/XHMqXCgoW14oKV0qKVwpJC8pO2lmKCFy KXJldHVybiB0O3ZhciBuPXJbMV0udHJpbSgpLnNwbGl0KC9ccypbXHMsXVxz Ki8pLGk9ImEiPT09ZS5jaGFyQXQoMykmJjQ9PT1uLmxlbmd0aDtpZighaSYm MyE9PW4ubGVuZ3RoKXJldHVybiB0O2Zvcih2YXIgbz0wO288bi5sZW5ndGg7 bysrKXtpZighbltvXS5sZW5ndGgpcmV0dXJuIHQ7aWYobltvXT1OdW1iZXIo bltvXSksIShuW29dPj0wKSlyZXR1cm4gdDtpZigzPT09byluW29dPjEmJihu W29dPTEpO2Vsc2UgaWYobltvXT49MSlyZXR1cm4gdH12YXIgcz1NYXRoLnJv dW5kKDI1NSpuWzBdKSsiLCAiK01hdGgucm91bmQoMjU1Km5bMV0pKyIsICIr TWF0aC5yb3VuZCgyNTUqblsyXSk7cmV0dXJuIGk/InJnYmEoIitzKyIsICIr blszXSsiKSI6InJnYigiK3MrIikifWkudGlueVJHQj1mdW5jdGlvbih0KXt2 YXIgZT10LnRvUmdiKCk7cmV0dXJuInJnYigiK01hdGgucm91bmQoZS5yKSsi LCAiK01hdGgucm91bmQoZS5nKSsiLCAiK01hdGgucm91bmQoZS5iKSsiKSJ9 LGkucmdiPWZ1bmN0aW9uKHQpe3JldHVybiBpLnRpbnlSR0Iobih0KSl9LGku b3BhY2l0eT1mdW5jdGlvbih0KXtyZXR1cm4gdD9uKHQpLmdldEFscGhhKCk6 MH0saS5hZGRPcGFjaXR5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0KS50b1Jn YigpO3JldHVybiJyZ2JhKCIrTWF0aC5yb3VuZChyLnIpKyIsICIrTWF0aC5y b3VuZChyLmcpKyIsICIrTWF0aC5yb3VuZChyLmIpKyIsICIrZSsiKSJ9LGku Y29tYmluZT1mdW5jdGlvbih0LGUpe3ZhciByPW4odCkudG9SZ2IoKTtpZigx PT09ci5hKXJldHVybiBuKHQpLnRvUmdiU3RyaW5nKCk7dmFyIGE9bihlfHxs KS50b1JnYigpLGk9MT09PWEuYT9hOntyOjI1NSooMS1hLmEpK2EuciphLmEs ZzoyNTUqKDEtYS5hKSthLmcqYS5hLGI6MjU1KigxLWEuYSkrYS5iKmEuYX0s bz17cjppLnIqKDEtci5hKStyLnIqci5hLGc6aS5nKigxLXIuYSkrci5nKnIu YSxiOmkuYiooMS1yLmEpK3IuYipyLmF9O3JldHVybiBuKG8pLnRvUmdiU3Ry aW5nKCl9LGkuY29udHJhc3Q9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPW4odCk7 cmV0dXJuIDEhPT1hLmdldEFscGhhKCkmJihhPW4oaS5jb21iaW5lKHQsbCkp KSwoYS5pc0RhcmsoKT9lP2EubGlnaHRlbihlKTpsOnI/YS5kYXJrZW4ocik6 cykudG9TdHJpbmcoKX0saS5zdHJva2U9ZnVuY3Rpb24odCxlKXt2YXIgcj1u KGUpO3Quc3R5bGUoe3N0cm9rZTppLnRpbnlSR0IociksInN0cm9rZS1vcGFj aXR5IjpyLmdldEFscGhhKCl9KX0saS5maWxsPWZ1bmN0aW9uKHQsZSl7dmFy IHI9bihlKTt0LnN0eWxlKHtmaWxsOmkudGlueVJHQihyKSwiZmlsbC1vcGFj aXR5IjpyLmdldEFscGhhKCl9KX0saS5jbGVhbj1mdW5jdGlvbih0KXtpZih0 JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBlLHIsbixhLG89T2JqZWN0Lmtl eXModCk7Zm9yKGU9MDtlPG8ubGVuZ3RoO2UrKylpZihhPXRbbj1vW2VdXSwi Y29sb3IiPT09bi5zdWJzdHIobi5sZW5ndGgtNSkpaWYoQXJyYXkuaXNBcnJh eShhKSlmb3Iocj0wO3I8YS5sZW5ndGg7cisrKWFbcl09YyhhW3JdKTtlbHNl IHRbbl09YyhhKTtlbHNlIGlmKCJjb2xvcnNjYWxlIj09PW4uc3Vic3RyKG4u bGVuZ3RoLTEwKSYmQXJyYXkuaXNBcnJheShhKSlmb3Iocj0wO3I8YS5sZW5n dGg7cisrKUFycmF5LmlzQXJyYXkoYVtyXSkmJihhW3JdWzFdPWMoYVtyXVsx XSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShhKSl7dmFyIHM9YVswXTtpZigh QXJyYXkuaXNBcnJheShzKSYmcyYmIm9iamVjdCI9PXR5cGVvZiBzKWZvcihy PTA7cjxhLmxlbmd0aDtyKyspaS5jbGVhbihhW3JdKX1lbHNlIGEmJiJvYmpl Y3QiPT10eXBlb2YgYSYmaS5jbGVhbihhKX19fSx7Ii4vYXR0cmlidXRlcyI6 NTkxLCJmYXN0LWlzbnVtZXJpYyI6MjI4LHRpbnljb2xvcjI6NTM2fV0sNTkz OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyIpLGE9dCgiLi4v Li4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9saWIvZXh0 ZW5kIikuZXh0ZW5kRmxhdCxvPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlw ZXMiKS5vdmVycmlkZUFsbDtlLmV4cG9ydHM9byh7dGhpY2tuZXNzbW9kZTp7 dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZnJhY3Rpb24iLCJwaXhl bHMiXSxkZmx0OiJwaXhlbHMifSx0aGlja25lc3M6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsZGZsdDozMH0sbGVubW9kZTp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsiZnJhY3Rpb24iLCJwaXhlbHMiXSxkZmx0OiJmcmFjdGlv biJ9LGxlbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9LHg6e3Zh bFR5cGU6Im51bWJlciIsZGZsdDoxLjAyLG1pbjotMixtYXg6M30seGFuY2hv cjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGVmdCIsImNlbnRl ciIsInJpZ2h0Il0sZGZsdDoibGVmdCJ9LHhwYWQ6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsZGZsdDoxMH0seTp7dmFsVHlwZToibnVtYmVyIixkZmx0Oi41 LG1pbjotMixtYXg6M30seWFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsidG9wIiwibWlkZGxlIiwiYm90dG9tIl0sZGZsdDoibWlkZGxl In0seXBhZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwfSxvdXRs aW5lY29sb3I6bi5saW5lY29sb3Isb3V0bGluZXdpZHRoOm4ubGluZXdpZHRo LGJvcmRlcmNvbG9yOm4ubGluZWNvbG9yLGJvcmRlcndpZHRoOnt2YWxUeXBl OiJudW1iZXIiLG1pbjowLGRmbHQ6MH0sYmdjb2xvcjp7dmFsVHlwZToiY29s b3IiLGRmbHQ6InJnYmEoMCwwLDAsMCkifSx0aWNrbW9kZTpuLnRpY2ttb2Rl LG50aWNrczpuLm50aWNrcyx0aWNrMDpuLnRpY2swLGR0aWNrOm4uZHRpY2ss dGlja3ZhbHM6bi50aWNrdmFscyx0aWNrdGV4dDpuLnRpY2t0ZXh0LHRpY2tz Omkoe30sbi50aWNrcyx7ZGZsdDoiIn0pLHRpY2tsZW46bi50aWNrbGVuLHRp Y2t3aWR0aDpuLnRpY2t3aWR0aCx0aWNrY29sb3I6bi50aWNrY29sb3Isc2hv d3RpY2tsYWJlbHM6bi5zaG93dGlja2xhYmVscyx0aWNrZm9udDphKHt9KSx0 aWNrYW5nbGU6bi50aWNrYW5nbGUsdGlja2Zvcm1hdDpuLnRpY2tmb3JtYXQs dGlja2Zvcm1hdHN0b3BzOm4udGlja2Zvcm1hdHN0b3BzLHRpY2twcmVmaXg6 bi50aWNrcHJlZml4LHNob3d0aWNrcHJlZml4Om4uc2hvd3RpY2twcmVmaXgs dGlja3N1ZmZpeDpuLnRpY2tzdWZmaXgsc2hvd3RpY2tzdWZmaXg6bi5zaG93 dGlja3N1ZmZpeCxzZXBhcmF0ZXRob3VzYW5kczpuLnNlcGFyYXRldGhvdXNh bmRzLGV4cG9uZW50Zm9ybWF0Om4uZXhwb25lbnRmb3JtYXQsc2hvd2V4cG9u ZW50Om4uc2hvd2V4cG9uZW50LHRpdGxlOnt0ZXh0Ont2YWxUeXBlOiJzdHJp bmcifSxmb250OmEoe30pLHNpZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbInJpZ2h0IiwidG9wIiwiYm90dG9tIl0sZGZsdDoidG9wIn19LF9k ZXByZWNhdGVkOnt0aXRsZTp7dmFsVHlwZToic3RyaW5nIn0sdGl0bGVmb250 OmEoe30pLHRpdGxlc2lkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVz OlsicmlnaHQiLCJ0b3AiLCJib3R0b20iXSxkZmx0OiJ0b3AifX19LCJjb2xv cmJhcnMiLCJmcm9tLXJvb3QiKX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgs Ii4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIjo3NzcsIi4uLy4uL3Bsb3Rz L2ZvbnRfYXR0cmlidXRlcyI6NzkxfV0sNTk0OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17Y246e2NvbG9yYmFyOiJjb2xvcmJh ciIsY2JiZzoiY2JiZyIsY2JmaWxsOiJjYmZpbGwiLGNiZmlsbHM6ImNiZmls bHMiLGNibGluZToiY2JsaW5lIixjYmxpbmVzOiJjYmxpbmVzIixjYmF4aXM6 ImNiYXhpcyIsY2J0aXRsZXVuc2hpZnQ6ImNidGl0bGV1bnNoaWZ0IixjYnRp dGxlOiJjYnRpdGxlIixjYm91dGxpbmU6ImNib3V0bGluZSIsY3Jpc3A6ImNy aXNwIixqc1BsYWNlaG9sZGVyOiJqcy1wbGFjZWhvbGRlciJ9fX0se31dLDU5 NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKSxhPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxp PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX3ZhbHVlX2RlZmF1bHRz Iiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja19tYXJrX2RlZmF1 bHRzIikscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja19sYWJlbF9k ZWZhdWx0cyIpLGw9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyKXt2YXIgYz1hLm5ld0NvbnRhaW5lcihlLCJjb2xvcmJhciIp LHU9dC5jb2xvcmJhcnx8e307ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBuLmNv ZXJjZSh1LGMsbCx0LGUpfXZhciBmPWgoInRoaWNrbmVzc21vZGUiKTtoKCJ0 aGlja25lc3MiLCJmcmFjdGlvbiI9PT1mPzMwLyhyLndpZHRoLXIubWFyZ2lu Lmwtci5tYXJnaW4ucik6MzApO3ZhciBwPWgoImxlbm1vZGUiKTtoKCJsZW4i LCJmcmFjdGlvbiI9PT1wPzE6ci5oZWlnaHQtci5tYXJnaW4udC1yLm1hcmdp bi5iKSxoKCJ4IiksaCgieGFuY2hvciIpLGgoInhwYWQiKSxoKCJ5IiksaCgi eWFuY2hvciIpLGgoInlwYWQiKSxuLm5vbmVPckFsbCh1LGMsWyJ4IiwieSJd KSxoKCJvdXRsaW5lY29sb3IiKSxoKCJvdXRsaW5ld2lkdGgiKSxoKCJib3Jk ZXJjb2xvciIpLGgoImJvcmRlcndpZHRoIiksaCgiYmdjb2xvciIpLGkodSxj LGgsImxpbmVhciIpO3ZhciBkPXtvdXRlclRpY2tzOiExLGZvbnQ6ci5mb250 fTtzKHUsYyxoLCJsaW5lYXIiLGQpLG8odSxjLGgsImxpbmVhciIsZCksaCgi dGl0bGUudGV4dCIsci5fZGZsdFRpdGxlLmNvbG9yYmFyKSxuLmNvZXJjZUZv bnQoaCwidGl0bGUuZm9udCIsci5mb250KSxoKCJ0aXRsZS5zaWRlIil9fSx7 Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRl Ijo3NTUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1 bHRzIjo3ODQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX21hcmtfZGVm YXVsdHMiOjc4NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVf ZGVmYXVsdHMiOjc4NiwiLi9hdHRyaWJ1dGVzIjo1OTN9XSw1OTY6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoInRp bnljb2xvcjIiKSxpPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIiksbz10KCIuLi8u Li9yZWdpc3RyeSIpLHM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMi KSxsPXQoIi4uL2RyYWdlbGVtZW50IiksYz10KCIuLi8uLi9saWIiKSx1PXQo Ii4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGg9dCgiLi4vLi4vbGli L3NldGN1cnNvciIpLGY9dCgiLi4vZHJhd2luZyIpLHA9dCgiLi4vY29sb3Ii KSxkPXQoIi4uL3RpdGxlcyIpLGc9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0 aWxzIiksdj10KCIuLi9jb2xvcnNjYWxlL2hlbHBlcnMiKS5mbGlwU2NhbGUs bT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19kZWZhdWx0cyIpLHk9 dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3Bvc2l0aW9uX2RlZmF1bHRzIiks eD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMi KSxiPXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKSxfPWIuTElORV9T UEFDSU5HLHc9Yi5GUk9NX1RMLGs9Yi5GUk9NX0JSLFQ9dCgiLi9jb25zdGFu dHMiKS5jbjtlLmV4cG9ydHM9e2RyYXc6ZnVuY3Rpb24odCl7dmFyIGU9dC5f ZnVsbExheW91dC5faW5mb2xheWVyLnNlbGVjdEFsbCgiZy4iK1QuY29sb3Ji YXIpLmRhdGEoZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaT10Ll9mdWxsTGF5 b3V0LG89dC5jYWxjZGF0YSxzPVtdO2Z1bmN0aW9uIGwodCl7cmV0dXJuIHUo dCx7X2ZpbGxjb2xvcjpudWxsLF9saW5lOntjb2xvcjpudWxsLHdpZHRoOm51 bGwsZGFzaDpudWxsfSxfbGV2ZWxzOntzdGFydDpudWxsLGVuZDpudWxsLHNp emU6bnVsbH0sX2ZpbGxsZXZlbHM6bnVsbCxfZmlsbGdyYWRpZW50Om51bGws X3pyYW5nZTpudWxsfSl9ZnVuY3Rpb24gYygpeyJmdW5jdGlvbiI9PXR5cGVv ZiBhLmNhbGM/YS5jYWxjKHQsbixlKTooZS5fZmlsbGdyYWRpZW50PXIucmV2 ZXJzZXNjYWxlP3Yoci5jb2xvcnNjYWxlKTpyLmNvbG9yc2NhbGUsZS5fenJh bmdlPVtyW2EubWluXSxyW2EubWF4XV0pfWZvcih2YXIgaD0wO2g8by5sZW5n dGg7aCsrKXt2YXIgZj1vW2hdLHA9KG49ZlswXS50cmFjZSkuX21vZHVsZS5j b2xvcmJhcjtpZighMD09PW4udmlzaWJsZSYmcClmb3IodmFyIGQ9QXJyYXku aXNBcnJheShwKSxnPWQ/cDpbcF0sbT0wO208Zy5sZW5ndGg7bSsrKXt2YXIg eT0oYT1nW21dKS5jb250YWluZXI7KHI9eT9uW3ldOm4pJiZyLnNob3dzY2Fs ZSYmKChlPWwoci5jb2xvcmJhcikpLl9pZD0iY2IiK24udWlkKyhkJiZ5PyIt Iit5OiIiKSxlLl90cmFjZUluZGV4PW4uaW5kZXgsZS5fcHJvcFByZWZpeD0o eT95KyIuIjoiIikrImNvbG9yYmFyLiIsZS5fbWV0YT1uLl9tZXRhLGMoKSxz LnB1c2goZSkpfX1mb3IodmFyIHggaW4gaS5fY29sb3JBeGVzKWlmKChyPWlb eF0pLnNob3dzY2FsZSl7dmFyIGI9aS5fY29sb3JBeGVzW3hdOyhlPWwoci5j b2xvcmJhcikpLl9pZD0iY2IiK3gsZS5fcHJvcFByZWZpeD14KyIuY29sb3Ji YXIuIixlLl9tZXRhPWkuX21ldGEsYT17bWluOiJjbWluIixtYXg6ImNtYXgi fSwiaGVhdG1hcCIhPT1iWzBdJiYobj1iWzFdLGEuY2FsYz1uLl9tb2R1bGUu Y29sb3JiYXIuY2FsYyksYygpLHMucHVzaChlKX1yZXR1cm4gc30odCksZnVu Y3Rpb24odCl7cmV0dXJuIHQuX2lkfSk7ZS5lbnRlcigpLmFwcGVuZCgiZyIp LmF0dHIoImNsYXNzIixmdW5jdGlvbih0KXtyZXR1cm4gdC5faWR9KS5jbGFz c2VkKFQuY29sb3JiYXIsITApLGUuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1u LnNlbGVjdCh0aGlzKTtjLmVuc3VyZVNpbmdsZShyLCJyZWN0IixULmNiYmcp LGMuZW5zdXJlU2luZ2xlKHIsImciLFQuY2JmaWxscyksYy5lbnN1cmVTaW5n bGUociwiZyIsVC5jYmxpbmVzKSxjLmVuc3VyZVNpbmdsZShyLCJnIixULmNi YXhpcyxmdW5jdGlvbih0KXt0LmNsYXNzZWQoVC5jcmlzcCwhMCl9KSxjLmVu c3VyZVNpbmdsZShyLCJnIixULmNidGl0bGV1bnNoaWZ0LGZ1bmN0aW9uKHQp e3QuYXBwZW5kKCJnIikuY2xhc3NlZChULmNidGl0bGUsITApfSksYy5lbnN1 cmVTaW5nbGUociwicmVjdCIsVC5jYm91dGxpbmUpO3ZhciB2PWZ1bmN0aW9u KHQsZSxyKXt2YXIgbz1yLl9mdWxsTGF5b3V0LGw9by5fc2l6ZSxoPWUuX2Zp bGxjb2xvcix2PWUuX2xpbmUsYj1lLnRpdGxlLE09Yi5zaWRlLEE9ZS5fenJh bmdlfHxuLmV4dGVudCgoImZ1bmN0aW9uIj09dHlwZW9mIGg/aDp2LmNvbG9y KS5kb21haW4oKSksUz0iZnVuY3Rpb24iPT10eXBlb2Ygdi5jb2xvcj92LmNv bG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHYuY29sb3J9LEU9ImZ1bmN0aW9uIj09 dHlwZW9mIGg/aDpmdW5jdGlvbigpe3JldHVybiBofSxMPWUuX2xldmVscyxD PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhLGk9ZS5fbGV2ZWxzLG89W10scz1b XSxsPWkuZW5kK2kuc2l6ZS8xMDAsYz1pLnNpemUsdT0xLjAwMSpyWzBdLS4w MDEqclsxXSxoPTEuMDAxKnJbMV0tLjAwMSpyWzBdO2ZvcihhPTA7YTwxZTUm JihuPWkuc3RhcnQrYSpjLCEoYz4wP24+PWw6bjw9bCkpO2ErKyluPnUmJm48 aCYmby5wdXNoKG4pO2lmKGUuX2ZpbGxncmFkaWVudClzPVswXTtlbHNlIGlm KCJmdW5jdGlvbiI9PXR5cGVvZiBlLl9maWxsY29sb3Ipe3ZhciBmPWUuX2Zp bGxsZXZlbHM7aWYoZilmb3IobD1mLmVuZCtmLnNpemUvMTAwLGM9Zi5zaXpl LGE9MDthPDFlNSYmKG49Zi5zdGFydCthKmMsIShjPjA/bj49bDpuPD1sKSk7 YSsrKW4+clswXSYmbjxyWzFdJiZzLnB1c2gobik7ZWxzZShzPW8ubWFwKGZ1 bmN0aW9uKHQpe3JldHVybiB0LWkuc2l6ZS8yfSkpLnB1c2goc1tzLmxlbmd0 aC0xXStpLnNpemUpfWVsc2UgZS5fZmlsbGNvbG9yJiYic3RyaW5nIj09dHlw ZW9mIGUuX2ZpbGxjb2xvciYmKHM9WzBdKTtyZXR1cm4gaS5zaXplPDAmJihv LnJldmVyc2UoKSxzLnJldmVyc2UoKSkse2xpbmU6byxmaWxsOnN9fSgwLGUs QSksUD1DLmZpbGwsTz1DLmxpbmUsej1NYXRoLnJvdW5kKGUudGhpY2tuZXNz KigiZnJhY3Rpb24iPT09ZS50aGlja25lc3Ntb2RlP2wudzoxKSksST16L2wu dyxEPU1hdGgucm91bmQoZS5sZW4qKCJmcmFjdGlvbiI9PT1lLmxlbm1vZGU/ bC5oOjEpKSxSPUQvbC5oLEY9ZS54cGFkL2wudyxCPShlLmJvcmRlcndpZHRo K2Uub3V0bGluZXdpZHRoKS8yLE49ZS55cGFkL2wuaCxqPU1hdGgucm91bmQo ZS54KmwudytlLnhwYWQpLFY9ZS54LUkqKHttaWRkbGU6LjUscmlnaHQ6MX1b ZS54YW5jaG9yXXx8MCksVT1lLnkrUiooKHt0b3A6LS41LGJvdHRvbTouNX1b ZS55YW5jaG9yXXx8MCktLjUpLHE9TWF0aC5yb3VuZChsLmgqKDEtVSkpLEg9 cS1EO2UuX2xlbkZyYWM9UixlLl90aGlja0ZyYWM9SSxlLl94TGVmdEZyYWM9 VixlLl95Qm90dG9tRnJhYz1VO3ZhciBHPWUuX2F4aXM9ZnVuY3Rpb24odCxl LHIpe3ZhciBuPXQuX2Z1bGxMYXlvdXQsYT17dHlwZToibGluZWFyIixyYW5n ZTpyLHRpY2ttb2RlOmUudGlja21vZGUsbnRpY2tzOmUubnRpY2tzLHRpY2sw OmUudGljazAsZHRpY2s6ZS5kdGljayx0aWNrdmFsczplLnRpY2t2YWxzLHRp Y2t0ZXh0OmUudGlja3RleHQsdGlja3M6ZS50aWNrcyx0aWNrbGVuOmUudGlj a2xlbix0aWNrd2lkdGg6ZS50aWNrd2lkdGgsdGlja2NvbG9yOmUudGlja2Nv bG9yLHNob3d0aWNrbGFiZWxzOmUuc2hvd3RpY2tsYWJlbHMsdGlja2ZvbnQ6 ZS50aWNrZm9udCx0aWNrYW5nbGU6ZS50aWNrYW5nbGUsdGlja2Zvcm1hdDpl LnRpY2tmb3JtYXQsZXhwb25lbnRmb3JtYXQ6ZS5leHBvbmVudGZvcm1hdCxz ZXBhcmF0ZXRob3VzYW5kczplLnNlcGFyYXRldGhvdXNhbmRzLHNob3dleHBv bmVudDplLnNob3dleHBvbmVudCxzaG93dGlja3ByZWZpeDplLnNob3d0aWNr cHJlZml4LHRpY2twcmVmaXg6ZS50aWNrcHJlZml4LHNob3d0aWNrc3VmZml4 OmUuc2hvd3RpY2tzdWZmaXgsdGlja3N1ZmZpeDplLnRpY2tzdWZmaXgsdGl0 bGU6ZS50aXRsZSxzaG93bGluZTohMCxhbmNob3I6ImZyZWUiLHNpZGU6InJp Z2h0Iixwb3NpdGlvbjoxfSxpPXt0eXBlOiJsaW5lYXIiLF9pZDoieSIrZS5f aWR9LG89e2xldHRlcjoieSIsZm9udDpuLmZvbnQsbm9Ib3ZlcjohMCxub1Rp Y2tzb246ITAsY2FsZW5kYXI6bi5jYWxlbmRhcn07ZnVuY3Rpb24gcyh0LGUp e3JldHVybiBjLmNvZXJjZShhLGkseCx0LGUpfXJldHVybiBtKGEsaSxzLG8s bikseShhLGkscyxvKSxpfShyLGUsQSk7aWYoRy5wb3NpdGlvbj1lLngrRitJ LC0xIT09WyJ0b3AiLCJib3R0b20iXS5pbmRleE9mKE0pJiYoRy50aXRsZS5z aWRlPU0sRy50aXRsZXg9ZS54K0YsRy50aXRsZXk9VSsoInRvcCI9PT1iLnNp ZGU/Ui1OOk4pKSx2LmNvbG9yJiYiYXV0byI9PT1lLnRpY2ttb2RlKXtHLnRp Y2ttb2RlPSJsaW5lYXIiLEcudGljazA9TC5zdGFydDt2YXIgWT1MLnNpemUs Vz1jLmNvbnN0cmFpbigocS1IKS81MCw0LDE1KSsxLFg9KEFbMV0tQVswXSkv KChlLm50aWNrc3x8VykqWSk7aWYoWD4xKXt2YXIgWj1NYXRoLnBvdygxMCxN YXRoLmZsb29yKE1hdGgubG9nKFgpL01hdGguTE4xMCkpO1kqPVoqYy5yb3Vu ZFVwKFgvWixbMiw1LDEwXSksKE1hdGguYWJzKEwuc3RhcnQpL0wuc2l6ZSsx ZS02KSUxPDJlLTYmJihHLnRpY2swPTApfUcuZHRpY2s9WX1HLmRvbWFpbj1b VStOLFUrUi1OXSxHLnNldFNjYWxlKCksdC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0 cmFuc2xhdGUoIitNYXRoLnJvdW5kKGwubCkrIiwiK01hdGgucm91bmQobC50 KSsiKSIpO3ZhciBKLEs9dC5zZWxlY3QoIi4iK1QuY2J0aXRsZXVuc2hpZnQp LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtIitNYXRoLnJvdW5kKGwu bCkrIiwtIitNYXRoLnJvdW5kKGwudCkrIikiKSxRPXQuc2VsZWN0KCIuIitU LmNiYXhpcyksJD0wO2Z1bmN0aW9uIHR0KG4sYSl7dmFyIGk9e3Byb3BDb250 YWluZXI6Ryxwcm9wTmFtZTplLl9wcm9wUHJlZml4KyJ0aXRsZSIsdHJhY2VJ bmRleDplLl90cmFjZUluZGV4LF9tZXRhOmUuX21ldGEscGxhY2Vob2xkZXI6 by5fZGZsdFRpdGxlLmNvbG9yYmFyLGNvbnRhaW5lckdyb3VwOnQuc2VsZWN0 KCIuIitULmNidGl0bGUpfSxzPSJoIj09PW4uY2hhckF0KDApP24uc3Vic3Ry KDEpOiJoIituO3Quc2VsZWN0QWxsKCIuIitzKyIsLiIrcysiLW1hdGgtZ3Jv dXAiKS5yZW1vdmUoKSxkLmRyYXcocixuLHUoaSxhfHx7fSkpfXJldHVybiBj LnN5bmNPckFzeW5jKFtpLnByZXZpb3VzUHJvbWlzZXMsZnVuY3Rpb24oKXtp ZigtMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihNKSl7dmFyIHQscj1s LmwrKGUueCtGKSpsLncsbj1HLnRpdGxlLmZvbnQuc2l6ZTt0PSJ0b3AiPT09 TT8oMS0oVStSLU4pKSpsLmgrbC50KzMrLjc1Km46KDEtKFUrTikpKmwuaCts LnQtMy0uMjUqbix0dChHLl9pZCsidGl0bGUiLHthdHRyaWJ1dGVzOnt4OnIs eTp0LCJ0ZXh0LWFuY2hvciI6InN0YXJ0In19KX19LGZ1bmN0aW9uKCl7aWYo LTEhPT1bInRvcCIsImJvdHRvbSJdLmluZGV4T2YoTSkpe3ZhciBpPXQuc2Vs ZWN0KCIuIitULmNidGl0bGUpLG89aS5zZWxlY3QoInRleHQiKSx1PVstZS5v dXRsaW5ld2lkdGgvMixlLm91dGxpbmV3aWR0aC8yXSxoPWkuc2VsZWN0KCIu aCIrRy5faWQrInRpdGxlLW1hdGgtZ3JvdXAiKS5ub2RlKCkscD0xNS42O2lm KG8ubm9kZSgpJiYocD1wYXJzZUludChvLm5vZGUoKS5zdHlsZS5mb250U2l6 ZSwxMCkqXyksaD8oJD1mLmJCb3goaCkuaGVpZ2h0KT5wJiYodVsxXS09KCQt cCkvMik6by5ub2RlKCkmJiFvLmNsYXNzZWQoVC5qc1BsYWNlaG9sZGVyKSYm KCQ9Zi5iQm94KG8ubm9kZSgpKS5oZWlnaHQpLCQpe2lmKCQrPTUsInRvcCI9 PT1NKUcuZG9tYWluWzFdLT0kL2wuaCx1WzFdKj0tMTtlbHNle0cuZG9tYWlu WzBdKz0kL2wuaDt2YXIgZD1nLmxpbmVDb3VudChvKTt1WzFdKz0oMS1kKSpw fWkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdSsiKSIpLEcuc2V0 U2NhbGUoKX19dC5zZWxlY3RBbGwoIi4iK1QuY2JmaWxscysiLC4iK1QuY2Js aW5lcykuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitNYXRoLnJv dW5kKGwuaCooMS1HLmRvbWFpblsxXSkpKyIpIiksUS5hdHRyKCJ0cmFuc2Zv cm0iLCJ0cmFuc2xhdGUoMCwiK01hdGgucm91bmQoLWwudCkrIikiKTt2YXIg bT10LnNlbGVjdCgiLiIrVC5jYmZpbGxzKS5zZWxlY3RBbGwoInJlY3QuIitU LmNiZmlsbCkuZGF0YShQKTttLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xh c3NlZChULmNiZmlsbCwhMCkuc3R5bGUoInN0cm9rZSIsIm5vbmUiKSxtLmV4 aXQoKS5yZW1vdmUoKTt2YXIgeT1BLm1hcChHLmMycCkubWFwKE1hdGgucm91 bmQpLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSk7bS5lYWNoKGZ1 bmN0aW9uKHQsaSl7dmFyIG89WzA9PT1pP0FbMF06KFBbaV0rUFtpLTFdKS8y LGk9PT1QLmxlbmd0aC0xP0FbMV06KFBbaV0rUFtpKzFdKS8yXS5tYXAoRy5j MnApLm1hcChNYXRoLnJvdW5kKTtvWzFdPWMuY29uc3RyYWluKG9bMV0rKG9b MV0+b1swXSk/MTotMSx5WzBdLHlbMV0pO3ZhciBzPW4uc2VsZWN0KHRoaXMp LmF0dHIoe3g6aix3aWR0aDpNYXRoLm1heCh6LDIpLHk6bi5taW4obyksaGVp Z2h0Ok1hdGgubWF4KG4ubWF4KG8pLW4ubWluKG8pLDIpfSk7aWYoZS5fZmls bGdyYWRpZW50KWYuZ3JhZGllbnQocyxyLGUuX2lkLCJ2ZXJ0aWNhbCIsZS5f ZmlsbGdyYWRpZW50LCJmaWxsIik7ZWxzZXt2YXIgbD1FKHQpLnJlcGxhY2Uo ImUtIiwiIik7cy5hdHRyKCJmaWxsIixhKGwpLnRvSGV4U3RyaW5nKCkpfX0p O3ZhciB4PXQuc2VsZWN0KCIuIitULmNibGluZXMpLnNlbGVjdEFsbCgicGF0 aC4iK1QuY2JsaW5lKS5kYXRhKHYuY29sb3ImJnYud2lkdGg/TzpbXSk7eC5l bnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoVC5jYmxpbmUsITApLHgu ZXhpdCgpLnJlbW92ZSgpLHguZWFjaChmdW5jdGlvbih0KXtuLnNlbGVjdCh0 aGlzKS5hdHRyKCJkIiwiTSIraisiLCIrKE1hdGgucm91bmQoRy5jMnAodCkp K3Yud2lkdGgvMiUxKSsiaCIreikuY2FsbChmLmxpbmVHcm91cFN0eWxlLHYu d2lkdGgsUyh0KSx2LmRhc2gpfSksUS5zZWxlY3RBbGwoImcuIitHLl9pZCsi dGljayxwYXRoIikucmVtb3ZlKCk7dmFyIGI9ait6KyhlLm91dGxpbmV3aWR0 aHx8MCkvMi0oIm91dHNpZGUiPT09ZS50aWNrcz8xOjApLHc9cy5jYWxjVGlj a3MoRyksaz1zLm1ha2VUcmFuc0ZuKEcpLEw9cy5nZXRUaWNrU2lnbnMoRylb Ml07cmV0dXJuIHMuZHJhd1RpY2tzKHIsRyx7dmFsczoiaW5zaWRlIj09PUcu dGlja3M/cy5jbGlwRW5kcyhHLHcpOncsbGF5ZXI6USxwYXRoOnMubWFrZVRp Y2tQYXRoKEcsYixMKSx0cmFuc0ZuOmt9KSxzLmRyYXdMYWJlbHMocixHLHt2 YWxzOncsbGF5ZXI6USx0cmFuc0ZuOmssbGFiZWxGbnM6cy5tYWtlTGFiZWxG bnMoRyxiKX0pfSxmdW5jdGlvbigpe2lmKC0xPT09WyJ0b3AiLCJib3R0b20i XS5pbmRleE9mKE0pKXt2YXIgdD1HLnRpdGxlLmZvbnQuc2l6ZSxlPUcuX29m ZnNldCtHLl9sZW5ndGgvMixhPWwubCsoRy5wb3NpdGlvbnx8MCkqbC53Kygi cmlnaHQiPT09Ry5zaWRlPzEwK3QqKEcuc2hvd3RpY2tsYWJlbHM/MTouNSk6 LTEwLXQqKEcuc2hvd3RpY2tsYWJlbHM/LjU6MCkpO3R0KCJoIitHLl9pZCsi dGl0bGUiLHthdm9pZDp7c2VsZWN0aW9uOm4uc2VsZWN0KHIpLnNlbGVjdEFs bCgiZy4iK0cuX2lkKyJ0aWNrIiksc2lkZTpNLG9mZnNldExlZnQ6bC5sLG9m ZnNldFRvcDowLG1heFNoaWZ0Om8ud2lkdGh9LGF0dHJpYnV0ZXM6e3g6YSx5 OmUsInRleHQtYW5jaG9yIjoibWlkZGxlIn0sdHJhbnNmb3JtOntyb3RhdGU6 Ii05MCIsb2Zmc2V0OjB9fSl9fSxpLnByZXZpb3VzUHJvbWlzZXMsZnVuY3Rp b24oKXt2YXIgbj16K2Uub3V0bGluZXdpZHRoLzIrZi5iQm94KFEubm9kZSgp KS53aWR0aDtpZigoSj1LLnNlbGVjdCgidGV4dCIpKS5ub2RlKCkmJiFKLmNs YXNzZWQoVC5qc1BsYWNlaG9sZGVyKSl7dmFyIGEsbz1LLnNlbGVjdCgiLmgi K0cuX2lkKyJ0aXRsZS1tYXRoLWdyb3VwIikubm9kZSgpO2E9byYmLTEhPT1b InRvcCIsImJvdHRvbSJdLmluZGV4T2YoTSk/Zi5iQm94KG8pLndpZHRoOmYu YkJveChLLm5vZGUoKSkucmlnaHQtai1sLmwsbj1NYXRoLm1heChuLGEpfXZh ciBzPTIqZS54cGFkK24rZS5ib3JkZXJ3aWR0aCtlLm91dGxpbmV3aWR0aC8y LGM9cS1IO3Quc2VsZWN0KCIuIitULmNiYmcpLmF0dHIoe3g6ai1lLnhwYWQt KGUuYm9yZGVyd2lkdGgrZS5vdXRsaW5ld2lkdGgpLzIseTpILUIsd2lkdGg6 TWF0aC5tYXgocywyKSxoZWlnaHQ6TWF0aC5tYXgoYysyKkIsMil9KS5jYWxs KHAuZmlsbCxlLmJnY29sb3IpLmNhbGwocC5zdHJva2UsZS5ib3JkZXJjb2xv cikuc3R5bGUoInN0cm9rZS13aWR0aCIsZS5ib3JkZXJ3aWR0aCksdC5zZWxl Y3RBbGwoIi4iK1QuY2JvdXRsaW5lKS5hdHRyKHt4OmoseTpIK2UueXBhZCso InRvcCI9PT1NPyQ6MCksd2lkdGg6TWF0aC5tYXgoeiwyKSxoZWlnaHQ6TWF0 aC5tYXgoYy0yKmUueXBhZC0kLDIpfSkuY2FsbChwLnN0cm9rZSxlLm91dGxp bmVjb2xvcikuc3R5bGUoe2ZpbGw6Im5vbmUiLCJzdHJva2Utd2lkdGgiOmUu b3V0bGluZXdpZHRofSk7dmFyIHU9KHtjZW50ZXI6LjUscmlnaHQ6MX1bZS54 YW5jaG9yXXx8MCkqczt0LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgi KyhsLmwtdSkrIiwiK2wudCsiKSIpO3ZhciBoPXt9LGQ9d1tlLnlhbmNob3Jd LGc9a1tlLnlhbmNob3JdOyJwaXhlbHMiPT09ZS5sZW5tb2RlPyhoLnk9ZS55 LGgudD1jKmQsaC5iPWMqZyk6KGgudD1oLmI9MCxoLnl0PWUueStlLmxlbipk LGgueWI9ZS55LWUubGVuKmcpO3ZhciB2PXdbZS54YW5jaG9yXSxtPWtbZS54 YW5jaG9yXTtpZigicGl4ZWxzIj09PWUudGhpY2tuZXNzbW9kZSloLng9ZS54 LGgubD1zKnYsaC5yPXMqbTtlbHNle3ZhciB5PXMtejtoLmw9eSp2LGgucj15 Km0saC54bD1lLngtZS50aGlja25lc3MqdixoLnhyPWUueCtlLnRoaWNrbmVz cyptfWkuYXV0b01hcmdpbihyLGUuX2lkLGgpfV0scil9KHIsZSx0KTt2JiZ2 LnRoZW4mJih0Ll9wcm9taXNlc3x8W10pLnB1c2godiksdC5fY29udGV4dC5l ZGl0cy5jb2xvcmJhclBvc2l0aW9uJiZmdW5jdGlvbih0LGUscil7dmFyIG4s YSxpLHM9ci5fZnVsbExheW91dC5fc2l6ZTtsLmluaXQoe2VsZW1lbnQ6dC5u b2RlKCksZ2Q6cixwcmVwRm46ZnVuY3Rpb24oKXtuPXQuYXR0cigidHJhbnNm b3JtIiksaCh0KX0sbW92ZUZuOmZ1bmN0aW9uKHIsbyl7dC5hdHRyKCJ0cmFu c2Zvcm0iLG4rIiB0cmFuc2xhdGUoIityKyIsIitvKyIpIiksYT1sLmFsaWdu KGUuX3hMZWZ0RnJhYytyL3MudyxlLl90aGlja0ZyYWMsMCwxLGUueGFuY2hv ciksaT1sLmFsaWduKGUuX3lCb3R0b21GcmFjLW8vcy5oLGUuX2xlbkZyYWMs MCwxLGUueWFuY2hvcik7dmFyIGM9bC5nZXRDdXJzb3IoYSxpLGUueGFuY2hv cixlLnlhbmNob3IpO2godCxjKX0sZG9uZUZuOmZ1bmN0aW9uKCl7aWYoaCh0 KSx2b2lkIDAhPT1hJiZ2b2lkIDAhPT1pKXt2YXIgbj17fTtuW2UuX3Byb3BQ cmVmaXgrIngiXT1hLG5bZS5fcHJvcFByZWZpeCsieSJdPWksdm9pZCAwIT09 ZS5fdHJhY2VJbmRleD9vLmNhbGwoIl9ndWlSZXN0eWxlIixyLG4sZS5fdHJh Y2VJbmRleCk6by5jYWxsKCJfZ3VpUmVsYXlvdXQiLHIsbil9fX0pfShyLGUs dCl9KSxlLmV4aXQoKS5lYWNoKGZ1bmN0aW9uKGUpe2kuYXV0b01hcmdpbih0 LGUuX2lkKX0pLnJlbW92ZSgpLGUub3JkZXIoKX19fSx7Ii4uLy4uL2NvbnN0 YW50cy9hbGlnbm1lbnQiOjY4NiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xp Yi9leHRlbmQiOjcwOCwiLi4vLi4vbGliL3NldGN1cnNvciI6NzM3LCIuLi8u Li9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2F4ZXMiOjc2NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZGVm YXVsdHMiOjc2NywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2xheW91dF9hdHRy aWJ1dGVzIjo3NzcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9wb3NpdGlvbl9k ZWZhdWx0cyI6NzgwLCIuLi8uLi9wbG90cy9wbG90cyI6ODI2LCIuLi8uLi9y ZWdpc3RyeSI6ODQ2LCIuLi9jb2xvciI6NTkyLCIuLi9jb2xvcnNjYWxlL2hl bHBlcnMiOjYwMywiLi4vZHJhZ2VsZW1lbnQiOjYxMCwiLi4vZHJhd2luZyI6 NjEzLCIuLi90aXRsZXMiOjY3OSwiLi9jb25zdGFudHMiOjU5NCxkMzoxNjUs dGlueWNvbG9yMjo1MzZ9XSw1OTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQpe3JldHVybiBuLmlzUGxhaW5PYmplY3QodC5jb2xvcmJhcil9fSx7Ii4u Ly4uL2xpYiI6NzE3fV0sNTk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJj b2xvcmJhciIsYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlE ZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksZHJhdzp0KCIuL2RyYXciKS5kcmF3 LGhhc0NvbG9yYmFyOnQoIi4vaGFzX2NvbG9yYmFyIil9fSx7Ii4vYXR0cmli dXRlcyI6NTkzLCIuL2RlZmF1bHRzIjo1OTUsIi4vZHJhdyI6NTk2LCIuL2hh c19jb2xvcmJhciI6NTk3fV0sNTk5OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uL2NvbG9yYmFyL2F0dHJpYnV0ZXMiKSxhPXQo Ii4uLy4uL2xpYi9yZWdleCIpLmNvdW50ZXIsaT10KCIuL3NjYWxlcy5qcyIp LnNjYWxlcztPYmplY3Qua2V5cyhpKTtmdW5jdGlvbiBvKHQpe3JldHVybiJg Iit0KyJgIn1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0PXR8fCIiO3ZhciBy LHM9KGU9ZXx8e30pLmNMZXR0ZXJ8fCJjIixsPSgib25seUlmTnVtZXJpY2Fs ImluIGU/ZS5vbmx5SWZOdW1lcmljYWw6Qm9vbGVhbih0KSwibm9TY2FsZSJp biBlP2Uubm9TY2FsZToibWFya2VyLmxpbmUiPT09dCksYz0ic2hvd1NjYWxl RGZsdCJpbiBlP2Uuc2hvd1NjYWxlRGZsdDoieiI9PT1zLHU9InN0cmluZyI9 PXR5cGVvZiBlLmNvbG9yc2NhbGVEZmx0P2lbZS5jb2xvcnNjYWxlRGZsdF06 bnVsbCxoPWUuZWRpdFR5cGVPdmVycmlkZXx8IiIsZj10P3QrIi4iOiIiOyJj b2xvckF0dHIiaW4gZT8ocj1lLmNvbG9yQXR0cixlLmNvbG9yQXR0cik6byhm KyhyPXt6OiJ6IixjOiJjb2xvciJ9W3NdKSk7dmFyIHA9cysiYXV0byIsZD1z KyJtaW4iLGc9cysibWF4Iix2PXMrIm1pZCIsbT0obyhmK3ApLG8oZitkKSxv KGYrZykse30pO21bZF09bVtnXT12b2lkIDA7dmFyIHk9e307eVtwXT0hMTt2 YXIgeD17fTtyZXR1cm4iY29sb3IiPT09ciYmKHguY29sb3I9e3ZhbFR5cGU6 ImNvbG9yIixhcnJheU9rOiEwLGVkaXRUeXBlOmh8fCJzdHlsZSJ9LGUuYW5p bSYmKHguY29sb3IuYW5pbT0hMCkpLHhbcF09e3ZhbFR5cGU6ImJvb2xlYW4i LGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMiLGltcGxpZWRFZGl0czptfSx4W2Rd PXt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxlZGl0VHlwZTpofHwicGxv dCIsaW1wbGllZEVkaXRzOnl9LHhbZ109e3ZhbFR5cGU6Im51bWJlciIsZGZs dDpudWxsLGVkaXRUeXBlOmh8fCJwbG90IixpbXBsaWVkRWRpdHM6eX0seFt2 XT17dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGwsZWRpdFR5cGU6ImNhbGMi LGltcGxpZWRFZGl0czptfSx4LmNvbG9yc2NhbGU9e3ZhbFR5cGU6ImNvbG9y c2NhbGUiLGVkaXRUeXBlOiJjYWxjIixkZmx0OnUsaW1wbGllZEVkaXRzOnth dXRvY29sb3JzY2FsZTohMX19LHguYXV0b2NvbG9yc2NhbGU9e3ZhbFR5cGU6 ImJvb2xlYW4iLGRmbHQ6ITEhPT1lLmF1dG9Db2xvckRmbHQsZWRpdFR5cGU6 ImNhbGMiLGltcGxpZWRFZGl0czp7Y29sb3JzY2FsZTp2b2lkIDB9fSx4LnJl dmVyc2VzY2FsZT17dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlw ZToicGxvdCJ9LGx8fCh4LnNob3dzY2FsZT17dmFsVHlwZToiYm9vbGVhbiIs ZGZsdDpjLGVkaXRUeXBlOiJjYWxjIn0seC5jb2xvcmJhcj1uKSxlLm5vQ29s b3JBeGlzfHwoeC5jb2xvcmF4aXM9e3ZhbFR5cGU6InN1YnBsb3RpZCIscmVn ZXg6YSgiY29sb3JheGlzIiksZGZsdDpudWxsLGVkaXRUeXBlOiJjYWxjIn0p LHh9fSx7Ii4uLy4uL2xpYi9yZWdleCI6NzMzLCIuLi9jb2xvcmJhci9hdHRy aWJ1dGVzIjo1OTMsIi4vc2NhbGVzLmpzIjo2MDd9XSw2MDA6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMi KSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi9oZWxwZXJzIikuZXh0cmFjdE9w dHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbyxzPXQuX2Z1bGxM YXlvdXQsbD1yLnZhbHMsYz1yLmNvbnRhaW5lclN0cix1PWM/YS5uZXN0ZWRQ cm9wZXJ0eShlLGMpLmdldCgpOmUsaD1pKHUpLGY9ITEhPT1oLmF1dG8scD1o Lm1pbixkPWgubWF4LGc9aC5taWQsdj1mdW5jdGlvbigpe3JldHVybiBhLmFn Z051bXMoTWF0aC5taW4sbnVsbCxsKX0sbT1mdW5jdGlvbigpe3JldHVybiBh LmFnZ051bXMoTWF0aC5tYXgsbnVsbCxsKX07KHZvaWQgMD09PXA/cD12KCk6 ZiYmKHA9dS5fY29sb3JBeCYmbihwKT9NYXRoLm1pbihwLHYoKSk6digpKSx2 b2lkIDA9PT1kP2Q9bSgpOmYmJihkPXUuX2NvbG9yQXgmJm4oZCk/TWF0aC5t YXgoZCxtKCkpOm0oKSksZiYmdm9pZCAwIT09ZyYmKGQtZz5nLXA/cD1nLShk LWcpOmQtZzxnLXAmJihkPWcrKGctcCkpKSxwPT09ZCYmKHAtPS41LGQrPS41 KSxoLl9zeW5jKCJtaW4iLHApLGguX3N5bmMoIm1heCIsZCksaC5hdXRvY29s b3JzY2FsZSkmJihvPXAqZDwwP3MuY29sb3JzY2FsZS5kaXZlcmdpbmc6cD49 MD9zLmNvbG9yc2NhbGUuc2VxdWVudGlhbDpzLmNvbG9yc2NhbGUuc2VxdWVu dGlhbG1pbnVzLGguX3N5bmMoImNvbG9yc2NhbGUiLG8pKX19LHsiLi4vLi4v bGliIjo3MTcsIi4vaGVscGVycyI6NjAzLCJmYXN0LWlzbnVtZXJpYyI6MjI4 fV0sNjAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL2xpYiIpLGE9dCgiLi9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxp PXQoIi4vaGVscGVycyIpLmV4dHJhY3RPcHRzO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUpe2Z1bmN0aW9uIHIodCxlKXt2YXIgcj10WyJfIitlXTt2b2lkIDAh PT1yJiYodFtlXT1yKX1mdW5jdGlvbiBvKHQsYSl7dmFyIG89YS5jb250YWlu ZXI/bi5uZXN0ZWRQcm9wZXJ0eSh0LGEuY29udGFpbmVyKS5nZXQoKTp0O2lm KG8paWYoby5jb2xvcmF4aXMpby5fY29sb3JBeD1lW28uY29sb3JheGlzXTtl bHNle3ZhciBzPWkobyksbD1zLmF1dG87KGx8fHZvaWQgMD09PXMubWluKSYm cihvLGEubWluKSwobHx8dm9pZCAwPT09cy5tYXgpJiZyKG8sYS5tYXgpLHMu YXV0b2NvbG9yc2NhbGUmJnIobywiY29sb3JzY2FsZSIpfX1mb3IodmFyIHM9 MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGw9dFtzXSxjPWwuX21vZHVsZS5jb2xv cmJhcjtpZihjKWlmKEFycmF5LmlzQXJyYXkoYykpZm9yKHZhciB1PTA7dTxj Lmxlbmd0aDt1KyspbyhsLGNbdV0pO2Vsc2UgbyhsLGMpO2EobCwibWFya2Vy LmxpbmUiKSYmbyhsLHtjb250YWluZXI6Im1hcmtlci5saW5lIixtaW46ImNt aW4iLG1heDoiY21heCJ9KX1mb3IodmFyIGggaW4gZS5fY29sb3JBeGVzKW8o ZVtoXSx7bWluOiJjbWluIixtYXg6ImNtYXgifSl9fSx7Ii4uLy4uL2xpYiI6 NzE3LCIuL2hlbHBlcnMiOjYwM31dLDYwMjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4v Li4vbGliIiksaT10KCIuLi9jb2xvcmJhci9oYXNfY29sb3JiYXIiKSxvPXQo Ii4uL2NvbG9yYmFyL2RlZmF1bHRzIikscz10KCIuL3NjYWxlcyIpLmlzVmFs aWQsbD10KCIuLi8uLi9yZWdpc3RyeSIpLnRyYWNlSXM7ZnVuY3Rpb24gYyh0 LGUpe3ZhciByPWUuc2xpY2UoMCxlLmxlbmd0aC0xKTtyZXR1cm4gZT9hLm5l c3RlZFByb3BlcnR5KHQscikuZ2V0KCl8fHt9OnR9ZS5leHBvcnRzPWZ1bmN0 aW9uIHQoZSxyLHUsaCxmKXt2YXIgcD1mLnByZWZpeCxkPWYuY0xldHRlcixn PSJfbW9kdWxlImluIHIsdj1jKGUscCksbT1jKHIscCkseT1jKHIuX3RlbXBs YXRlfHx7fSxwKXx8e30seD1mdW5jdGlvbigpe3JldHVybiBkZWxldGUgZS5j b2xvcmF4aXMsZGVsZXRlIHIuY29sb3JheGlzLHQoZSxyLHUsaCxmKX07aWYo Zyl7dmFyIGI9dS5fY29sb3JBeGVzfHx7fSxfPWgocCsiY29sb3JheGlzIik7 aWYoXyl7dmFyIHc9bChyLCJjb250b3VyIikmJmEubmVzdGVkUHJvcGVydHko ciwiY29udG91cnMuY29sb3JpbmciKS5nZXQoKXx8ImhlYXRtYXAiLGs9Yltf XTtyZXR1cm4gdm9pZChrPyhrWzJdLnB1c2goeCksa1swXSE9PXcmJihrWzBd PSExLGEud2FybihbIklnbm9yaW5nIGNvbG9yYXhpczoiLF8sInNldHRpbmci LCJhcyBpdCBpcyBsaW5rZWQgdG8gaW5jb21wYXRpYmxlIGNvbG9yc2NhbGVz LiJdLmpvaW4oIiAiKSkpKTpiW19dPVt3LHIsW3hdXSl9fXZhciBUPXZbZCsi bWluIl0sTT12W2QrIm1heCJdLEE9bihUKSYmbihNKSYmVDxNO2gocCtkKyJh dXRvIiwhQSk/aChwK2QrIm1pZCIpOihoKHArZCsibWluIiksaChwK2QrIm1h eCIpKTt2YXIgUyxFLEw9di5jb2xvcnNjYWxlLEM9eS5jb2xvcnNjYWxlOyh2 b2lkIDAhPT1MJiYoUz0hcyhMKSksdm9pZCAwIT09QyYmKFM9IXMoQykpLGgo cCsiYXV0b2NvbG9yc2NhbGUiLFMpLGgocCsiY29sb3JzY2FsZSIpLGgocCsi cmV2ZXJzZXNjYWxlIiksIm1hcmtlci5saW5lLiIhPT1wKSYmKHAmJmcmJihF PWkodikpLGgocCsic2hvd3NjYWxlIixFKSYmKHAmJnkmJihtLl90ZW1wbGF0 ZT15KSxvKHYsbSx1KSkpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVn aXN0cnkiOjg0NiwiLi4vY29sb3JiYXIvZGVmYXVsdHMiOjU5NSwiLi4vY29s b3JiYXIvaGFzX2NvbG9yYmFyIjo1OTcsIi4vc2NhbGVzIjo2MDcsImZhc3Qt aXNudW1lcmljIjoyMjh9XSw2MDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoInRpbnljb2xvcjIiKSxpPXQoImZh c3QtaXNudW1lcmljIiksbz10KCIuLi8uLi9saWIiKSxzPXQoIi4uL2NvbG9y IiksbD10KCIuL3NjYWxlcyIpLmlzVmFsaWQ7dmFyIGM9WyJzaG93c2NhbGUi LCJhdXRvY29sb3JzY2FsZSIsImNvbG9yc2NhbGUiLCJyZXZlcnNlc2NhbGUi LCJjb2xvcmJhciJdLHU9WyJtaW4iLCJtYXgiLCJtaWQiLCJhdXRvIl07ZnVu Y3Rpb24gaCh0KXt2YXIgZSxyLG4sYT10Ll9jb2xvckF4LGk9YXx8dCxvPXt9 O2ZvcihyPTA7cjxjLmxlbmd0aDtyKyspb1tuPWNbcl1dPWlbbl07aWYoYSlm b3IoZT0iYyIscj0wO3I8dS5sZW5ndGg7cisrKW9bbj11W3JdXT1pWyJjIitu XTtlbHNle3ZhciBzO2ZvcihyPTA7cjx1Lmxlbmd0aDtyKyspKHM9ImMiKyhu PXVbcl0pKWluIGk/b1tuXT1pW3NdOihzPSJ6IituKWluIGkmJihvW25dPWlb c10pO2U9cy5jaGFyQXQoMCl9cmV0dXJuIG8uX3N5bmM9ZnVuY3Rpb24odCxy KXt2YXIgbj0tMSE9PXUuaW5kZXhPZih0KT9lK3Q6dDtpW25dPWlbIl8iK25d PXJ9LG99ZnVuY3Rpb24gZih0KXtmb3IodmFyIGU9aCh0KSxyPWUubWluLG49 ZS5tYXgsYT1lLnJldmVyc2VzY2FsZT9wKGUuY29sb3JzY2FsZSk6ZS5jb2xv cnNjYWxlLGk9YS5sZW5ndGgsbz1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXko aSksbD0wO2w8aTtsKyspe3ZhciBjPWFbbF07b1tsXT1yK2NbMF0qKG4tciks c1tsXT1jWzFdfXJldHVybntkb21haW46byxyYW5nZTpzfX1mdW5jdGlvbiBw KHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPWUtMSxh PTA7bj49MDtuLS0sYSsrKXt2YXIgaT10W25dO3JbYV09WzEtaVswXSxpWzFd XX1yZXR1cm4gcn1mdW5jdGlvbiBkKHQsZSl7ZT1lfHx7fTtmb3IodmFyIHI9 dC5kb21haW4sbz10LnJhbmdlLGw9by5sZW5ndGgsYz1uZXcgQXJyYXkobCks dT0wO3U8bDt1Kyspe3ZhciBoPWEob1t1XSkudG9SZ2IoKTtjW3VdPVtoLnIs aC5nLGguYixoLmFdfXZhciBmLHA9bi5zY2FsZS5saW5lYXIoKS5kb21haW4o cikucmFuZ2UoYykuY2xhbXAoITApLGQ9ZS5ub051bWVyaWNDaGVjayx2PWUu cmV0dXJuQXJyYXk7cmV0dXJuKGY9ZCYmdj9wOmQ/ZnVuY3Rpb24odCl7cmV0 dXJuIGcocCh0KSl9OnY/ZnVuY3Rpb24odCl7cmV0dXJuIGkodCk/cCh0KTph KHQpLmlzVmFsaWQoKT90OnMuZGVmYXVsdExpbmV9OmZ1bmN0aW9uKHQpe3Jl dHVybiBpKHQpP2cocCh0KSk6YSh0KS5pc1ZhbGlkKCk/dDpzLmRlZmF1bHRM aW5lfSkuZG9tYWluPXAuZG9tYWluLGYucmFuZ2U9ZnVuY3Rpb24oKXtyZXR1 cm4gb30sZn1mdW5jdGlvbiBnKHQpe3ZhciBlPXtyOnRbMF0sZzp0WzFdLGI6 dFsyXSxhOnRbM119O3JldHVybiBhKGUpLnRvUmdiU3RyaW5nKCl9ZS5leHBv cnRzPXtoYXNDb2xvcnNjYWxlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lP28u bmVzdGVkUHJvcGVydHkodCxlKS5nZXQoKXx8e306dCxhPW5bcnx8ImNvbG9y Il0scz0hMTtpZihvLmlzQXJyYXlPclR5cGVkQXJyYXkoYSkpZm9yKHZhciBj PTA7YzxhLmxlbmd0aDtjKyspaWYoaShhW2NdKSl7cz0hMDticmVha31yZXR1 cm4gby5pc1BsYWluT2JqZWN0KG4pJiYoc3x8ITA9PT1uLnNob3dzY2FsZXx8 aShuLmNtaW4pJiZpKG4uY21heCl8fGwobi5jb2xvcnNjYWxlKXx8by5pc1Bs YWluT2JqZWN0KG4uY29sb3JiYXIpKX0sZXh0cmFjdE9wdHM6aCxleHRyYWN0 U2NhbGU6ZixmbGlwU2NhbGU6cCxtYWtlQ29sb3JTY2FsZUZ1bmM6ZCxtYWtl Q29sb3JTY2FsZUZ1bmNGcm9tVHJhY2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4g ZChmKHQpLGUpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uL2NvbG9yIjo1OTIs Ii4vc2NhbGVzIjo2MDcsZDM6MTY1LCJmYXN0LWlzbnVtZXJpYyI6MjI4LHRp bnljb2xvcjI6NTM2fV0sNjA0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4vc2NhbGVzIiksYT10KCIuL2hlbHBlcnMiKTtlLmV4 cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToiY29sb3JzY2Fs ZSIsYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1 dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlMYXlvdXREZWZh dWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIpLGhhbmRsZURlZmF1bHRzOnQo Ii4vZGVmYXVsdHMiKSxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi9jcm9zc190 cmFjZV9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIiksc2NhbGVzOm4uc2Nh bGVzLGRlZmF1bHRTY2FsZTpuLmRlZmF1bHRTY2FsZSxnZXRTY2FsZTpuLmdl dCxpc1ZhbGlkU2NhbGU6bi5pc1ZhbGlkLGhhc0NvbG9yc2NhbGU6YS5oYXND b2xvcnNjYWxlLGV4dHJhY3RPcHRzOmEuZXh0cmFjdE9wdHMsZXh0cmFjdFNj YWxlOmEuZXh0cmFjdFNjYWxlLGZsaXBTY2FsZTphLmZsaXBTY2FsZSxtYWtl Q29sb3JTY2FsZUZ1bmM6YS5tYWtlQ29sb3JTY2FsZUZ1bmMsbWFrZUNvbG9y U2NhbGVGdW5jRnJvbVRyYWNlOmEubWFrZUNvbG9yU2NhbGVGdW5jRnJvbVRy YWNlfX0seyIuL2F0dHJpYnV0ZXMiOjU5OSwiLi9jYWxjIjo2MDAsIi4vY3Jv c3NfdHJhY2VfZGVmYXVsdHMiOjYwMSwiLi9kZWZhdWx0cyI6NjAyLCIuL2hl bHBlcnMiOjYwMywiLi9sYXlvdXRfYXR0cmlidXRlcyI6NjA1LCIuL2xheW91 dF9kZWZhdWx0cyI6NjA2LCIuL3NjYWxlcyI6NjA3fV0sNjA1OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9leHRl bmQiKS5leHRlbmRGbGF0LGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuL3Nj YWxlcyIpLnNjYWxlcztlLmV4cG9ydHM9e2VkaXRUeXBlOiJjYWxjIixjb2xv cnNjYWxlOntlZGl0VHlwZToiY2FsYyIsc2VxdWVudGlhbDp7dmFsVHlwZToi Y29sb3JzY2FsZSIsZGZsdDppLlJlZHMsZWRpdFR5cGU6ImNhbGMifSxzZXF1 ZW50aWFsbWludXM6e3ZhbFR5cGU6ImNvbG9yc2NhbGUiLGRmbHQ6aS5CbHVl cyxlZGl0VHlwZToiY2FsYyJ9LGRpdmVyZ2luZzp7dmFsVHlwZToiY29sb3Jz Y2FsZSIsZGZsdDppLlJkQnUsZWRpdFR5cGU6ImNhbGMifX0sY29sb3JheGlz Om4oe19pc1N1YnBsb3RPYmo6ITAsZWRpdFR5cGU6ImNhbGMifSxhKCIiLHtj b2xvckF0dHI6ImNvcnJlc3BvbmRpbmcgdHJhY2UgY29sb3IgYXJyYXkocyki LG5vQ29sb3JBeGlzOiEwLHNob3dTY2FsZURmbHQ6ITB9KSl9fSx7Ii4uLy4u L2xpYi9leHRlbmQiOjcwOCwiLi9hdHRyaWJ1dGVzIjo1OTksIi4vc2NhbGVz Ijo2MDd9XSw2MDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3Rl bXBsYXRlIiksaT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksbz10KCIuL2Rl ZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihy LGEpe3JldHVybiBuLmNvZXJjZSh0LGUsaSxyLGEpfXIoImNvbG9yc2NhbGUu c2VxdWVudGlhbCIpLHIoImNvbG9yc2NhbGUuc2VxdWVudGlhbG1pbnVzIiks cigiY29sb3JzY2FsZS5kaXZlcmdpbmciKTt2YXIgcyxsLGM9ZS5fY29sb3JB eGVzO2Z1bmN0aW9uIHUodCxlKXtyZXR1cm4gbi5jb2VyY2UocyxsLGkuY29s b3JheGlzLHQsZSl9Zm9yKHZhciBoIGluIGMpe3ZhciBmPWNbaF07aWYoZlsw XSlzPXRbaF18fHt9LChsPWEubmV3Q29udGFpbmVyKGUsaCwiY29sb3JheGlz IikpLl9uYW1lPWgsbyhzLGwsZSx1LHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9 KTtlbHNle2Zvcih2YXIgcD0wO3A8ZlsyXS5sZW5ndGg7cCsrKWZbMl1bcF0o KTtkZWxldGUgZS5fY29sb3JBeGVzW2hdfX19fSx7Ii4uLy4uL2xpYiI6NzE3 LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4vZGVmYXVs dHMiOjYwMiwiLi9sYXlvdXRfYXR0cmlidXRlcyI6NjA1fV0sNjA3OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInRpbnljb2xvcjIi KSxhPXtHcmV5czpbWzAsInJnYigwLDAsMCkiXSxbMSwicmdiKDI1NSwyNTUs MjU1KSJdXSxZbEduQnU6W1swLCJyZ2IoOCwyOSw4OCkiXSxbLjEyNSwicmdi KDM3LDUyLDE0OCkiXSxbLjI1LCJyZ2IoMzQsOTQsMTY4KSJdLFsuMzc1LCJy Z2IoMjksMTQ1LDE5MikiXSxbLjUsInJnYig2NSwxODIsMTk2KSJdLFsuNjI1 LCJyZ2IoMTI3LDIwNSwxODcpIl0sWy43NSwicmdiKDE5OSwyMzMsMTgwKSJd LFsuODc1LCJyZ2IoMjM3LDI0OCwyMTcpIl0sWzEsInJnYigyNTUsMjU1LDIx NykiXV0sR3JlZW5zOltbMCwicmdiKDAsNjgsMjcpIl0sWy4xMjUsInJnYigw LDEwOSw0NCkiXSxbLjI1LCJyZ2IoMzUsMTM5LDY5KSJdLFsuMzc1LCJyZ2Io NjUsMTcxLDkzKSJdLFsuNSwicmdiKDExNiwxOTYsMTE4KSJdLFsuNjI1LCJy Z2IoMTYxLDIxNywxNTUpIl0sWy43NSwicmdiKDE5OSwyMzMsMTkyKSJdLFsu ODc1LCJyZ2IoMjI5LDI0NSwyMjQpIl0sWzEsInJnYigyNDcsMjUyLDI0NSki XV0sWWxPclJkOltbMCwicmdiKDEyOCwwLDM4KSJdLFsuMTI1LCJyZ2IoMTg5 LDAsMzgpIl0sWy4yNSwicmdiKDIyNywyNiwyOCkiXSxbLjM3NSwicmdiKDI1 Miw3OCw0MikiXSxbLjUsInJnYigyNTMsMTQxLDYwKSJdLFsuNjI1LCJyZ2Io MjU0LDE3OCw3NikiXSxbLjc1LCJyZ2IoMjU0LDIxNywxMTgpIl0sWy44NzUs InJnYigyNTUsMjM3LDE2MCkiXSxbMSwicmdiKDI1NSwyNTUsMjA0KSJdXSxC bHVlcmVkOltbMCwicmdiKDAsMCwyNTUpIl0sWzEsInJnYigyNTUsMCwwKSJd XSxSZEJ1OltbMCwicmdiKDUsMTAsMTcyKSJdLFsuMzUsInJnYigxMDYsMTM3 LDI0NykiXSxbLjUsInJnYigxOTAsMTkwLDE5MCkiXSxbLjYsInJnYigyMjAs MTcwLDEzMikiXSxbLjcsInJnYigyMzAsMTQ1LDkwKSJdLFsxLCJyZ2IoMTc4 LDEwLDI4KSJdXSxSZWRzOltbMCwicmdiKDIyMCwyMjAsMjIwKSJdLFsuMiwi cmdiKDI0NSwxOTUsMTU3KSJdLFsuNCwicmdiKDI0NSwxNjAsMTA1KSJdLFsx LCJyZ2IoMTc4LDEwLDI4KSJdXSxCbHVlczpbWzAsInJnYig1LDEwLDE3Miki XSxbLjM1LCJyZ2IoNDAsNjAsMTkwKSJdLFsuNSwicmdiKDcwLDEwMCwyNDUp Il0sWy42LCJyZ2IoOTAsMTIwLDI0NSkiXSxbLjcsInJnYigxMDYsMTM3LDI0 NykiXSxbMSwicmdiKDIyMCwyMjAsMjIwKSJdXSxQaWNuaWM6W1swLCJyZ2Io MCwwLDI1NSkiXSxbLjEsInJnYig1MSwxNTMsMjU1KSJdLFsuMiwicmdiKDEw MiwyMDQsMjU1KSJdLFsuMywicmdiKDE1MywyMDQsMjU1KSJdLFsuNCwicmdi KDIwNCwyMDQsMjU1KSJdLFsuNSwicmdiKDI1NSwyNTUsMjU1KSJdLFsuNiwi cmdiKDI1NSwyMDQsMjU1KSJdLFsuNywicmdiKDI1NSwxNTMsMjU1KSJdLFsu OCwicmdiKDI1NSwxMDIsMjA0KSJdLFsuOSwicmdiKDI1NSwxMDIsMTAyKSJd LFsxLCJyZ2IoMjU1LDAsMCkiXV0sUmFpbmJvdzpbWzAsInJnYigxNTAsMCw5 MCkiXSxbLjEyNSwicmdiKDAsMCwyMDApIl0sWy4yNSwicmdiKDAsMjUsMjU1 KSJdLFsuMzc1LCJyZ2IoMCwxNTIsMjU1KSJdLFsuNSwicmdiKDQ0LDI1NSwx NTApIl0sWy42MjUsInJnYigxNTEsMjU1LDApIl0sWy43NSwicmdiKDI1NSwy MzQsMCkiXSxbLjg3NSwicmdiKDI1NSwxMTEsMCkiXSxbMSwicmdiKDI1NSww LDApIl1dLFBvcnRsYW5kOltbMCwicmdiKDEyLDUxLDEzMSkiXSxbLjI1LCJy Z2IoMTAsMTM2LDE4NikiXSxbLjUsInJnYigyNDIsMjExLDU2KSJdLFsuNzUs InJnYigyNDIsMTQzLDU2KSJdLFsxLCJyZ2IoMjE3LDMwLDMwKSJdXSxKZXQ6 W1swLCJyZ2IoMCwwLDEzMSkiXSxbLjEyNSwicmdiKDAsNjAsMTcwKSJdLFsu Mzc1LCJyZ2IoNSwyNTUsMjU1KSJdLFsuNjI1LCJyZ2IoMjU1LDI1NSwwKSJd LFsuODc1LCJyZ2IoMjUwLDAsMCkiXSxbMSwicmdiKDEyOCwwLDApIl1dLEhv dDpbWzAsInJnYigwLDAsMCkiXSxbLjMsInJnYigyMzAsMCwwKSJdLFsuNiwi cmdiKDI1NSwyMTAsMCkiXSxbMSwicmdiKDI1NSwyNTUsMjU1KSJdXSxCbGFj a2JvZHk6W1swLCJyZ2IoMCwwLDApIl0sWy4yLCJyZ2IoMjMwLDAsMCkiXSxb LjQsInJnYigyMzAsMjEwLDApIl0sWy43LCJyZ2IoMjU1LDI1NSwyNTUpIl0s WzEsInJnYigxNjAsMjAwLDI1NSkiXV0sRWFydGg6W1swLCJyZ2IoMCwwLDEz MCkiXSxbLjEsInJnYigwLDE4MCwxODApIl0sWy4yLCJyZ2IoNDAsMjEwLDQw KSJdLFsuNCwicmdiKDIzMCwyMzAsNTApIl0sWy42LCJyZ2IoMTIwLDcwLDIw KSJdLFsxLCJyZ2IoMjU1LDI1NSwyNTUpIl1dLEVsZWN0cmljOltbMCwicmdi KDAsMCwwKSJdLFsuMTUsInJnYigzMCwwLDEwMCkiXSxbLjQsInJnYigxMjAs MCwxMDApIl0sWy42LCJyZ2IoMTYwLDkwLDApIl0sWy44LCJyZ2IoMjMwLDIw MCwwKSJdLFsxLCJyZ2IoMjU1LDI1MCwyMjApIl1dLFZpcmlkaXM6W1swLCIj NDQwMTU0Il0sWy4wNjI3NDUwOTgwMzkyMTU2OSwiIzQ4MTg2YSJdLFsuMTI1 NDkwMTk2MDc4NDMxMzcsIiM0NzJkN2IiXSxbLjE4ODIzNTI5NDExNzY0NzA2 LCIjNDI0MDg2Il0sWy4yNTA5ODAzOTIxNTY4NjI3NCwiIzNiNTI4YiJdLFsu MzEzNzI1NDkwMTk2MDc4NCwiIzMzNjM4ZCJdLFsuMzc2NDcwNTg4MjM1Mjk0 MSwiIzJjNzI4ZSJdLFsuNDM5MjE1Njg2Mjc0NTA5OCwiIzI2ODI4ZSJdLFsu NTAxOTYwNzg0MzEzNzI1NSwiIzIxOTE4YyJdLFsuNTY0NzA1ODgyMzUyOTQx MiwiIzFmYTA4OCJdLFsuNjI3NDUwOTgwMzkyMTU2OSwiIzI4YWU4MCJdLFsu NjkwMTk2MDc4NDMxMzcyNSwiIzNmYmM3MyJdLFsuNzUyOTQxMTc2NDcwNTg4 MiwiIzVlYzk2MiJdLFsuODE1Njg2Mjc0NTA5ODAzOSwiIzg0ZDQ0YiJdLFsu ODc4NDMxMzcyNTQ5MDE5NiwiI2FkZGMzMCJdLFsuOTQxMTc2NDcwNTg4MjM1 MywiI2Q4ZTIxOSJdLFsxLCIjZmRlNzI1Il1dLENpdmlkaXM6W1swLCJyZ2Io MCwzMiw3NikiXSxbLjA1ODgyNCwicmdiKDAsNDIsMTAyKSJdLFsuMTE3NjQ3 LCJyZ2IoMCw1MiwxMTApIl0sWy4xNzY0NzEsInJnYigzOSw2MywxMDgpIl0s Wy4yMzUyOTQsInJnYig2MCw3NCwxMDcpIl0sWy4yOTQxMTgsInJnYig3Niw4 NSwxMDcpIl0sWy4zNTI5NDEsInJnYig5MSw5NSwxMDkpIl0sWy40MTE3NjUs InJnYigxMDQsMTA2LDExMikiXSxbLjQ3MDU4OCwicmdiKDExNywxMTcsMTE3 KSJdLFsuNTI5NDEyLCJyZ2IoMTMxLDEyOSwxMjApIl0sWy41ODgyMzUsInJn YigxNDYsMTQwLDEyMCkiXSxbLjY0NzA1OSwicmdiKDE2MSwxNTIsMTE4KSJd LFsuNzA1ODgyLCJyZ2IoMTc2LDE2NSwxMTQpIl0sWy43NjQ3MDYsInJnYigx OTIsMTc3LDEwOSkiXSxbLjgyMzUyOSwicmdiKDIwOSwxOTEsMTAyKSJdLFsu ODgyMzUzLCJyZ2IoMjI1LDIwNCw5MikiXSxbLjk0MTE3NiwicmdiKDI0Mywy MTksNzkpIl0sWzEsInJnYigyNTUsMjMzLDY5KSJdXX0saT1hLlJkQnU7ZnVu Y3Rpb24gbyh0KXt2YXIgZT0wO2lmKCFBcnJheS5pc0FycmF5KHQpfHx0Lmxl bmd0aDwyKXJldHVybiExO2lmKCF0WzBdfHwhdFt0Lmxlbmd0aC0xXSlyZXR1 cm4hMTtpZigwIT0rdFswXVswXXx8MSE9K3RbdC5sZW5ndGgtMV1bMF0pcmV0 dXJuITE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07 aWYoMiE9PWEubGVuZ3RofHwrYVswXTxlfHwhbihhWzFdKS5pc1ZhbGlkKCkp cmV0dXJuITE7ZT0rYVswXX1yZXR1cm4hMH1lLmV4cG9ydHM9e3NjYWxlczph LGRlZmF1bHRTY2FsZTppLGdldDpmdW5jdGlvbih0LGUpe2lmKGV8fChlPWkp LCF0KXJldHVybiBlO2Z1bmN0aW9uIHIoKXt0cnl7dD1hW3RdfHxKU09OLnBh cnNlKHQpfWNhdGNoKHIpe3Q9ZX19cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0 JiYocigpLCJzdHJpbmciPT10eXBlb2YgdCYmcigpKSxvKHQpP3Q6ZX0saXNW YWxpZDpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09YVt0XXx8byh0KX19 fSx7dGlueWNvbG9yMjo1MzZ9XSw2MDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dmFyIGk9 KHQtcikvKG4tciksbz1pK2UvKG4tcikscz0oaStvKS8yO3JldHVybiJsZWZ0 Ij09PWF8fCJib3R0b20iPT09YT9pOiJjZW50ZXIiPT09YXx8Im1pZGRsZSI9 PT1hP3M6InJpZ2h0Ij09PWF8fCJ0b3AiPT09YT9vOmk8Mi8zLXM/aTpvPjQv My1zP286c319LHt9XSw2MDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT1bWyJzdy1yZXNpemUiLCJzLXJl c2l6ZSIsInNlLXJlc2l6ZSJdLFsidy1yZXNpemUiLCJtb3ZlIiwiZS1yZXNp emUiXSxbIm53LXJlc2l6ZSIsIm4tcmVzaXplIiwibmUtcmVzaXplIl1dO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXtyZXR1cm4gdD0ibGVmdCI9PT1y PzA6ImNlbnRlciI9PT1yPzE6InJpZ2h0Ij09PXI/MjpuLmNvbnN0cmFpbihN YXRoLmZsb29yKDMqdCksMCwyKSxlPSJib3R0b20iPT09aT8wOiJtaWRkbGUi PT09aT8xOiJ0b3AiPT09aT8yOm4uY29uc3RyYWluKE1hdGguZmxvb3IoMypl KSwwLDIpLGFbZV1bdF19fSx7Ii4uLy4uL2xpYiI6NzE3fV0sNjEwOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIm1vdXNlLWV2ZW50 LW9mZnNldCIpLGE9dCgiaGFzLWhvdmVyIiksaT10KCJoYXMtcGFzc2l2ZS1l dmVudHMiKSxvPXQoIi4uLy4uL2xpYiIpLnJlbW92ZUVsZW1lbnQscz10KCIu Li8uLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RhbnRzIiksbD1lLmV4cG9ydHM9 e307bC5hbGlnbj10KCIuL2FsaWduIiksbC5nZXRDdXJzb3I9dCgiLi9jdXJz b3IiKTt2YXIgYz10KCIuL3VuaG92ZXIiKTtmdW5jdGlvbiB1KCl7dmFyIHQ9 ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9ImRy YWdjb3ZlciI7dmFyIGU9dC5zdHlsZTtyZXR1cm4gZS5wb3NpdGlvbj0iZml4 ZWQiLGUubGVmdD0wLGUucmlnaHQ9MCxlLnRvcD0wLGUuYm90dG9tPTAsZS56 SW5kZXg9OTk5OTk5OTk5LGUuYmFja2dyb3VuZD0ibm9uZSIsZG9jdW1lbnQu Ym9keS5hcHBlbmRDaGlsZCh0KSx0fWZ1bmN0aW9uIGgodCl7cmV0dXJuIG4o dC5jaGFuZ2VkVG91Y2hlcz90LmNoYW5nZWRUb3VjaGVzWzBdOnQsZG9jdW1l bnQuYm9keSl9bC51bmhvdmVyPWMud3JhcHBlZCxsLnVuaG92ZXJSYXc9Yy5y YXcsbC5pbml0PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixjLGYscCxkLGcsdj10 LmdkLG09MSx5PXYuX2NvbnRleHQuZG91YmxlQ2xpY2tEZWxheSx4PXQuZWxl bWVudDt2Ll9tb3VzZURvd25UaW1lfHwodi5fbW91c2VEb3duVGltZT0wKSx4 LnN0eWxlLnBvaW50ZXJFdmVudHM9ImFsbCIseC5vbm1vdXNlZG93bj1fLGk/ KHguX29udG91Y2hzdGFydCYmeC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3Vj aHN0YXJ0Iix4Ll9vbnRvdWNoc3RhcnQpLHguX29udG91Y2hzdGFydD1fLHgu YWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsXyx7cGFzc2l2ZTohMX0p KTp4Lm9udG91Y2hzdGFydD1fO3ZhciBiPXQuY2xhbXBGbnx8ZnVuY3Rpb24o dCxlLHIpe3JldHVybiBNYXRoLmFicyh0KTxyJiYodD0wKSxNYXRoLmFicyhl KTxyJiYoZT0wKSxbdCxlXX07ZnVuY3Rpb24gXyhpKXt2Ll9kcmFnZ2VkPSEx LHYuX2RyYWdnaW5nPSEwO3ZhciBvPWgoaSk7ZT1vWzBdLHI9b1sxXSxkPWku dGFyZ2V0LHA9aSxnPTI9PT1pLmJ1dHRvbnN8fGkuY3RybEtleSwidW5kZWZp bmVkIj09dHlwZW9mIGkuY2xpZW50WCYmInVuZGVmaW5lZCI9PXR5cGVvZiBp LmNsaWVudFkmJihpLmNsaWVudFg9ZSxpLmNsaWVudFk9ciksKG49KG5ldyBE YXRlKS5nZXRUaW1lKCkpLXYuX21vdXNlRG93blRpbWU8eT9tKz0xOihtPTEs di5fbW91c2VEb3duVGltZT1uKSx0LnByZXBGbiYmdC5wcmVwRm4oaSxlLHIp LGEmJiFnPyhmPXUoKSkuc3R5bGUuY3Vyc29yPXdpbmRvdy5nZXRDb21wdXRl ZFN0eWxlKHgpLmN1cnNvcjphfHwoZj1kb2N1bWVudCxjPXdpbmRvdy5nZXRD b21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuY3Vyc29y LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3I9d2luZG93 LmdldENvbXB1dGVkU3R5bGUoeCkuY3Vyc29yKSxkb2N1bWVudC5hZGRFdmVu dExpc3RlbmVyKCJtb3VzZXVwIixrKSxkb2N1bWVudC5hZGRFdmVudExpc3Rl bmVyKCJ0b3VjaGVuZCIsayksITEhPT10LmRyYWdtb2RlJiYoaS5wcmV2ZW50 RGVmYXVsdCgpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92 ZSIsdyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix3 LHtwYXNzaXZlOiExfSkpfWZ1bmN0aW9uIHcobil7bi5wcmV2ZW50RGVmYXVs dCgpO3ZhciBhPWgobiksaT10Lm1pbkRyYWd8fHMuTUlORFJBRyxvPWIoYVsw XS1lLGFbMV0tcixpKSxjPW9bMF0sdT1vWzFdOyhjfHx1KSYmKHYuX2RyYWdn ZWQ9ITAsbC51bmhvdmVyKHYpKSx2Ll9kcmFnZ2VkJiZ0Lm1vdmVGbiYmIWcm Jih2Ll9kcmFnZGF0YT17ZWxlbWVudDp4LGR4OmMsZHk6dX0sdC5tb3ZlRm4o Yyx1KSl9ZnVuY3Rpb24gayhlKXtpZihkZWxldGUgdi5fZHJhZ2RhdGEsITEh PT10LmRyYWdtb2RlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGRvY3VtZW50LnJl bW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdyksZG9jdW1lbnQucmVt b3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix3KSksZG9jdW1lbnQucmVt b3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsayksZG9jdW1lbnQucmVtb3Zl RXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLGspLGE/byhmKTpjJiYoZi5kb2N1 bWVudEVsZW1lbnQuc3R5bGUuY3Vyc29yPWMsYz1udWxsKSx2Ll9kcmFnZ2lu Zyl7aWYodi5fZHJhZ2dpbmc9ITEsKG5ldyBEYXRlKS5nZXRUaW1lKCktdi5f bW91c2VEb3duVGltZT55JiYobT1NYXRoLm1heChtLTEsMSkpLHYuX2RyYWdn ZWQpdC5kb25lRm4mJnQuZG9uZUZuKCk7ZWxzZSBpZih0LmNsaWNrRm4mJnQu Y2xpY2tGbihtLHApLCFnKXt2YXIgcjt0cnl7cj1uZXcgTW91c2VFdmVudCgi Y2xpY2siLGUpfWNhdGNoKHQpe3ZhciBuPWgoZSk7KHI9ZG9jdW1lbnQuY3Jl YXRlRXZlbnQoIk1vdXNlRXZlbnRzIikpLmluaXRNb3VzZUV2ZW50KCJjbGlj ayIsZS5idWJibGVzLGUuY2FuY2VsYWJsZSxlLnZpZXcsZS5kZXRhaWwsZS5z Y3JlZW5YLGUuc2NyZWVuWSxuWzBdLG5bMV0sZS5jdHJsS2V5LGUuYWx0S2V5 LGUuc2hpZnRLZXksZS5tZXRhS2V5LGUuYnV0dG9uLGUucmVsYXRlZFRhcmdl dCl9ZC5kaXNwYXRjaEV2ZW50KHIpfXYuX2RyYWdnaW5nPSExLHYuX2RyYWdn ZWQ9ITF9ZWxzZSB2Ll9kcmFnZ2VkPSExfX0sbC5jb3ZlclNsaXA9dX0seyIu Li8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50 cyI6NzcxLCIuL2FsaWduIjo2MDgsIi4vY3Vyc29yIjo2MDksIi4vdW5ob3Zl ciI6NjExLCJoYXMtaG92ZXIiOjQxMiwiaGFzLXBhc3NpdmUtZXZlbnRzIjo0 MTMsIm1vdXNlLWV2ZW50LW9mZnNldCI6NDM4fV0sNjExOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9ldmVudHMi KSxhPXQoIi4uLy4uL2xpYi90aHJvdHRsZSIpLGk9dCgiLi4vLi4vbGliL2Rv bSIpLmdldEdyYXBoRGl2LG89dCgiLi4vZngvY29uc3RhbnRzIikscz1lLmV4 cG9ydHM9e307cy53cmFwcGVkPWZ1bmN0aW9uKHQsZSxyKXsodD1pKHQpKS5f ZnVsbExheW91dCYmYS5jbGVhcih0Ll9mdWxsTGF5b3V0Ll91aWQrby5IT1ZF UklEKSxzLnJhdyh0LGUscil9LHMucmF3PWZ1bmN0aW9uKHQsZSl7dmFyIHI9 dC5fZnVsbExheW91dCxhPXQuX2hvdmVyZGF0YTtlfHwoZT17fSksZS50YXJn ZXQmJiExPT09bi50cmlnZ2VySGFuZGxlcih0LCJwbG90bHlfYmVmb3JlaG92 ZXIiLGUpfHwoci5faG92ZXJsYXllci5zZWxlY3RBbGwoImciKS5yZW1vdmUo KSxyLl9ob3ZlcmxheWVyLnNlbGVjdEFsbCgibGluZSIpLnJlbW92ZSgpLHIu X2hvdmVybGF5ZXIuc2VsZWN0QWxsKCJjaXJjbGUiKS5yZW1vdmUoKSx0Ll9o b3ZlcmRhdGE9dm9pZCAwLGUudGFyZ2V0JiZhJiZ0LmVtaXQoInBsb3RseV91 bmhvdmVyIix7ZXZlbnQ6ZSxwb2ludHM6YX0pKX19LHsiLi4vLi4vbGliL2Rv bSI6NzA2LCIuLi8uLi9saWIvZXZlbnRzIjo3MDcsIi4uLy4uL2xpYi90aHJv dHRsZSI6NzQyLCIuLi9meC9jb25zdGFudHMiOjYyNX1dLDYxMjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLmRhc2g9e3ZhbFR5cGU6InN0cmlu ZyIsdmFsdWVzOlsic29saWQiLCJkb3QiLCJkYXNoIiwibG9uZ2Rhc2giLCJk YXNoZG90IiwibG9uZ2Rhc2hkb3QiXSxkZmx0OiJzb2xpZCIsZWRpdFR5cGU6 InN0eWxlIn19LHt9XSw2MTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiZDMiKSxhPXQoImZhc3QtaXNudW1lcmljIiksaT10KCJ0 aW55Y29sb3IyIiksbz10KCIuLi8uLi9yZWdpc3RyeSIpLHM9dCgiLi4vY29s b3IiKSxsPXQoIi4uL2NvbG9yc2NhbGUiKSxjPXQoIi4uLy4uL2xpYiIpLHU9 dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksaD10KCIuLi8uLi9jb25z dGFudHMveG1sbnNfbmFtZXNwYWNlcyIpLGY9dCgiLi4vLi4vY29uc3RhbnRz L2FsaWdubWVudCIpLkxJTkVfU1BBQ0lORyxwPXQoIi4uLy4uL2NvbnN0YW50 cy9pbnRlcmFjdGlvbnMiKS5ERVNFTEVDVERJTSxkPXQoIi4uLy4uL3RyYWNl cy9zY2F0dGVyL3N1YnR5cGVzIiksZz10KCIuLi8uLi90cmFjZXMvc2NhdHRl ci9tYWtlX2J1YmJsZV9zaXplX2Z1bmMiKSx2PXQoIi4uLy4uL2NvbXBvbmVu dHMvZngvaGVscGVycyIpLmFwcGVuZEFycmF5UG9pbnRWYWx1ZSxtPWUuZXhw b3J0cz17fTttLmZvbnQ9ZnVuY3Rpb24odCxlLHIsbil7Yy5pc1BsYWluT2Jq ZWN0KGUpJiYobj1lLmNvbG9yLHI9ZS5zaXplLGU9ZS5mYW1pbHkpLGUmJnQu c3R5bGUoImZvbnQtZmFtaWx5IixlKSxyKzEmJnQuc3R5bGUoImZvbnQtc2l6 ZSIscisicHgiKSxuJiZ0LmNhbGwocy5maWxsLG4pfSxtLnNldFBvc2l0aW9u PWZ1bmN0aW9uKHQsZSxyKXt0LmF0dHIoIngiLGUpLmF0dHIoInkiLHIpfSxt LnNldFNpemU9ZnVuY3Rpb24odCxlLHIpe3QuYXR0cigid2lkdGgiLGUpLmF0 dHIoImhlaWdodCIscil9LG0uc2V0UmVjdD1mdW5jdGlvbih0LGUscixuLGEp e3QuY2FsbChtLnNldFBvc2l0aW9uLGUscikuY2FsbChtLnNldFNpemUsbixh KX0sbS50cmFuc2xhdGVQb2ludD1mdW5jdGlvbih0LGUscixuKXt2YXIgaT1y LmMycCh0LngpLG89bi5jMnAodC55KTtyZXR1cm4hIShhKGkpJiZhKG8pJiZl Lm5vZGUoKSkmJigidGV4dCI9PT1lLm5vZGUoKS5ub2RlTmFtZT9lLmF0dHIo IngiLGkpLmF0dHIoInkiLG8pOmUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNs YXRlKCIraSsiLCIrbysiKSIpLCEwKX0sbS50cmFuc2xhdGVQb2ludHM9ZnVu Y3Rpb24odCxlLHIpe3QuZWFjaChmdW5jdGlvbih0KXt2YXIgYT1uLnNlbGVj dCh0aGlzKTttLnRyYW5zbGF0ZVBvaW50KHQsYSxlLHIpfSl9LG0uaGlkZU91 dHNpZGVSYW5nZVBvaW50PWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtlLmF0dHIo ImRpc3BsYXkiLHIuaXNQdFdpdGhpblJhbmdlKHQsYSkmJm4uaXNQdFdpdGhp blJhbmdlKHQsaSk/bnVsbDoibm9uZSIpfSxtLmhpZGVPdXRzaWRlUmFuZ2VQ b2ludHM9ZnVuY3Rpb24odCxlKXtpZihlLl9oYXNDbGlwT25BeGlzRmFsc2Up e3ZhciByPWUueGF4aXMsYT1lLnlheGlzO3QuZWFjaChmdW5jdGlvbihlKXt2 YXIgaT1lWzBdLnRyYWNlLHM9aS54Y2FsZW5kYXIsbD1pLnljYWxlbmRhcixj PW8udHJhY2VJcyhpLCJiYXItbGlrZSIpPyIuYmFydGV4dCI6Ii5wb2ludCwu dGV4dHBvaW50Ijt0LnNlbGVjdEFsbChjKS5lYWNoKGZ1bmN0aW9uKHQpe20u aGlkZU91dHNpZGVSYW5nZVBvaW50KHQsbi5zZWxlY3QodGhpcykscixhLHMs bCl9KX0pfX0sbS5jcmlzcFJvdW5kPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g ZSYmYShlKT90Ll9jb250ZXh0LnN0YXRpY1Bsb3Q/ZTplPDE/MTpNYXRoLnJv dW5kKGUpOnJ8fDB9LG0uc2luZ2xlTGluZVN0eWxlPWZ1bmN0aW9uKHQsZSxy LG4sYSl7ZS5zdHlsZSgiZmlsbCIsIm5vbmUiKTt2YXIgaT0oKCh0fHxbXSlb MF18fHt9KS50cmFjZXx8e30pLmxpbmV8fHt9LG89cnx8aS53aWR0aHx8MCxs PWF8fGkuZGFzaHx8IiI7cy5zdHJva2UoZSxufHxpLmNvbG9yKSxtLmRhc2hM aW5lKGUsbCxvKX0sbS5saW5lR3JvdXBTdHlsZT1mdW5jdGlvbih0LGUscixh KXt0LnN0eWxlKCJmaWxsIiwibm9uZSIpLmVhY2goZnVuY3Rpb24odCl7dmFy IGk9KCgodHx8W10pWzBdfHx7fSkudHJhY2V8fHt9KS5saW5lfHx7fSxvPWV8 fGkud2lkdGh8fDAsbD1hfHxpLmRhc2h8fCIiO24uc2VsZWN0KHRoaXMpLmNh bGwocy5zdHJva2Uscnx8aS5jb2xvcikuY2FsbChtLmRhc2hMaW5lLGwsbyl9 KX0sbS5kYXNoTGluZT1mdW5jdGlvbih0LGUscil7cj0rcnx8MCxlPW0uZGFz aFN0eWxlKGUsciksdC5zdHlsZSh7InN0cm9rZS1kYXNoYXJyYXkiOmUsInN0 cm9rZS13aWR0aCI6cisicHgifSl9LG0uZGFzaFN0eWxlPWZ1bmN0aW9uKHQs ZSl7ZT0rZXx8MTt2YXIgcj1NYXRoLm1heChlLDMpO3JldHVybiJzb2xpZCI9 PT10P3Q9IiI6ImRvdCI9PT10P3Q9cisicHgsIityKyJweCI6ImRhc2giPT09 dD90PTMqcisicHgsIiszKnIrInB4IjoibG9uZ2Rhc2giPT09dD90PTUqcisi cHgsIis1KnIrInB4IjoiZGFzaGRvdCI9PT10P3Q9MypyKyJweCwiK3IrInB4 LCIrcisicHgsIityKyJweCI6ImxvbmdkYXNoZG90Ij09PXQmJih0PTUqcisi cHgsIisyKnIrInB4LCIrcisicHgsIisyKnIrInB4IiksdH0sbS5zaW5nbGVG aWxsU3R5bGU9ZnVuY3Rpb24odCl7dmFyIGU9KCgobi5zZWxlY3QodC5ub2Rl KCkpLmRhdGEoKVswXXx8W10pWzBdfHx7fSkudHJhY2V8fHt9KS5maWxsY29s b3I7ZSYmdC5jYWxsKHMuZmlsbCxlKX0sbS5maWxsR3JvdXBTdHlsZT1mdW5j dGlvbih0KXt0LnN0eWxlKCJzdHJva2Utd2lkdGgiLDApLmVhY2goZnVuY3Rp b24odCl7dmFyIGU9bi5zZWxlY3QodGhpcyk7dFswXS50cmFjZSYmZS5jYWxs KHMuZmlsbCx0WzBdLnRyYWNlLmZpbGxjb2xvcil9KX07dmFyIHk9dCgiLi9z eW1ib2xfZGVmcyIpO20uc3ltYm9sTmFtZXM9W10sbS5zeW1ib2xGdW5jcz1b XSxtLnN5bWJvbE5lZWRMaW5lcz17fSxtLnN5bWJvbE5vRG90PXt9LG0uc3lt Ym9sTm9GaWxsPXt9LG0uc3ltYm9sTGlzdD1bXSxPYmplY3Qua2V5cyh5KS5m b3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXlbdF0scj1lLm47bS5zeW1ib2xM aXN0LnB1c2gocix0LHIrMTAwLHQrIi1vcGVuIiksbS5zeW1ib2xOYW1lc1ty XT10LG0uc3ltYm9sRnVuY3Nbcl09ZS5mLGUubmVlZExpbmUmJihtLnN5bWJv bE5lZWRMaW5lc1tyXT0hMCksZS5ub0RvdD9tLnN5bWJvbE5vRG90W3JdPSEw Om0uc3ltYm9sTGlzdC5wdXNoKHIrMjAwLHQrIi1kb3QiLHIrMzAwLHQrIi1v cGVuLWRvdCIpLGUubm9GaWxsJiYobS5zeW1ib2xOb0ZpbGxbcl09ITApfSk7 dmFyIHg9bS5zeW1ib2xOYW1lcy5sZW5ndGgsYj0iTTAsMC41TDAuNSwwTDAs LTAuNUwtMC41LDBaIjtmdW5jdGlvbiBfKHQsZSl7dmFyIHI9dCUxMDA7cmV0 dXJuIG0uc3ltYm9sRnVuY3Nbcl0oZSkrKHQ+PTIwMD9iOiIiKX1tLnN5bWJv bE51bWJlcj1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3Zh ciBlPTA7dC5pbmRleE9mKCItb3BlbiIpPjAmJihlPTEwMCx0PXQucmVwbGFj ZSgiLW9wZW4iLCIiKSksdC5pbmRleE9mKCItZG90Iik+MCYmKGUrPTIwMCx0 PXQucmVwbGFjZSgiLWRvdCIsIiIpKSwodD1tLnN5bWJvbE5hbWVzLmluZGV4 T2YodCkpPj0wJiYodCs9ZSl9cmV0dXJuIHQlMTAwPj14fHx0Pj00MDA/MDpN YXRoLmZsb29yKE1hdGgubWF4KHQsMCkpfTt2YXIgdz17eDE6MSx4MjowLHkx OjAseTI6MH0saz17eDE6MCx4MjowLHkxOjEseTI6MH0sVD1uLmZvcm1hdCgi fi4xZiIpLE09e3JhZGlhbDp7bm9kZToicmFkaWFsR3JhZGllbnQifSxyYWRp YWxyZXZlcnNlZDp7bm9kZToicmFkaWFsR3JhZGllbnQiLHJldmVyc2VkOiEw fSxob3Jpem9udGFsOntub2RlOiJsaW5lYXJHcmFkaWVudCIsYXR0cnM6d30s aG9yaXpvbnRhbHJldmVyc2VkOntub2RlOiJsaW5lYXJHcmFkaWVudCIsYXR0 cnM6dyxyZXZlcnNlZDohMH0sdmVydGljYWw6e25vZGU6ImxpbmVhckdyYWRp ZW50IixhdHRyczprfSx2ZXJ0aWNhbHJldmVyc2VkOntub2RlOiJsaW5lYXJH cmFkaWVudCIsYXR0cnM6ayxyZXZlcnNlZDohMH19O20uZ3JhZGllbnQ9ZnVu Y3Rpb24odCxlLHIsYSxvLGwpe2Zvcih2YXIgdT1vLmxlbmd0aCxoPU1bYV0s Zj1uZXcgQXJyYXkodSkscD0wO3A8dTtwKyspaC5yZXZlcnNlZD9mW3UtMS1w XT1bVCgxMDAqKDEtb1twXVswXSkpLG9bcF1bMV1dOmZbcF09W1QoMTAwKm9b cF1bMF0pLG9bcF1bMV1dO3ZhciBkPWUuX2Z1bGxMYXlvdXQsZz0iZyIrZC5f dWlkKyItIityLHY9ZC5fZGVmcy5zZWxlY3QoIi5ncmFkaWVudHMiKS5zZWxl Y3RBbGwoIiMiK2cpLmRhdGEoW2ErZi5qb2luKCI7IildLGMuaWRlbnRpdHkp O3YuZXhpdCgpLnJlbW92ZSgpLHYuZW50ZXIoKS5hcHBlbmQoaC5ub2RlKS5l YWNoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyk7aC5hdHRycyYm dC5hdHRyKGguYXR0cnMpLHQuYXR0cigiaWQiLGcpO3ZhciBlPXQuc2VsZWN0 QWxsKCJzdG9wIikuZGF0YShmKTtlLmV4aXQoKS5yZW1vdmUoKSxlLmVudGVy KCkuYXBwZW5kKCJzdG9wIiksZS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWko dFsxXSk7bi5zZWxlY3QodGhpcykuYXR0cih7b2Zmc2V0OnRbMF0rIiUiLCJz dG9wLWNvbG9yIjpzLnRpbnlSR0IoZSksInN0b3Atb3BhY2l0eSI6ZS5nZXRB bHBoYSgpfSl9KX0pLHQuc3R5bGUobCxEKGcsZSkpLnN0eWxlKGwrIi1vcGFj aXR5IixudWxsKTt2YXIgbT1mdW5jdGlvbih0KXtyZXR1cm4iLiIrdC5hdHRy KCJjbGFzcyIpLnJlcGxhY2UoL1xzL2csIi4iKX0seT1tKG4uc2VsZWN0KHQu bm9kZSgpLnBhcmVudE5vZGUpKSsiPiIrbSh0KTtkLl9ncmFkaWVudFVybFF1 ZXJ5UGFydHNbeV09MX0sbS5pbml0R3JhZGllbnRzPWZ1bmN0aW9uKHQpe3Zh ciBlPXQuX2Z1bGxMYXlvdXQ7Yy5lbnN1cmVTaW5nbGUoZS5fZGVmcywiZyIs ImdyYWRpZW50cyIpLnNlbGVjdEFsbCgibGluZWFyR3JhZGllbnQscmFkaWFs R3JhZGllbnQiKS5yZW1vdmUoKSxlLl9ncmFkaWVudFVybFF1ZXJ5UGFydHM9 e319LG0ucG9pbnRTdHlsZT1mdW5jdGlvbih0LGUscil7aWYodC5zaXplKCkp e3ZhciBhPW0ubWFrZVBvaW50U3R5bGVGbnMoZSk7dC5lYWNoKGZ1bmN0aW9u KHQpe20uc2luZ2xlUG9pbnRTdHlsZSh0LG4uc2VsZWN0KHRoaXMpLGUsYSxy KX0pfX0sbS5zaW5nbGVQb2ludFN0eWxlPWZ1bmN0aW9uKHQsZSxyLG4sYSl7 dmFyIGk9ci5tYXJrZXIsbz1pLmxpbmU7aWYoZS5zdHlsZSgib3BhY2l0eSIs bi5zZWxlY3RlZE9wYWNpdHlGbj9uLnNlbGVjdGVkT3BhY2l0eUZuKHQpOnZv aWQgMD09PXQubW8/aS5vcGFjaXR5OnQubW8pLG4ubXMybXJjKXt2YXIgbDts PSJ2YXJpb3VzIj09PXQubXN8fCJ2YXJpb3VzIj09PWkuc2l6ZT8zOm4ubXMy bXJjKHQubXMpLHQubXJjPWwsbi5zZWxlY3RlZFNpemVGbiYmKGw9dC5tcmM9 bi5zZWxlY3RlZFNpemVGbih0KSk7dmFyIHU9bS5zeW1ib2xOdW1iZXIodC5t eHx8aS5zeW1ib2wpfHwwO3Qub209dSUyMDA+PTEwMCxlLmF0dHIoImQiLF8o dSxsKSl9dmFyIGgsZixwLGQ9ITE7aWYodC5zbylwPW8ub3V0bGllcndpZHRo LGY9by5vdXRsaWVyY29sb3IsaD1pLm91dGxpZXJjb2xvcjtlbHNle3ZhciBn PShvfHx7fSkud2lkdGg7cD0odC5tbHcrMXx8ZysxfHwodC50cmFjZT8odC50 cmFjZS5tYXJrZXIubGluZXx8e30pLndpZHRoOjApKzEpLTF8fDAsZj0ibWxj ImluIHQ/dC5tbGNjPW4ubGluZVNjYWxlKHQubWxjKTpjLmlzQXJyYXlPclR5 cGVkQXJyYXkoby5jb2xvcik/cy5kZWZhdWx0TGluZTpvLmNvbG9yLGMuaXNB cnJheU9yVHlwZWRBcnJheShpLmNvbG9yKSYmKGg9cy5kZWZhdWx0TGluZSxk PSEwKSxoPSJtYyJpbiB0P3QubWNjPW4ubWFya2VyU2NhbGUodC5tYyk6aS5j b2xvcnx8InJnYmEoMCwwLDAsMCkiLG4uc2VsZWN0ZWRDb2xvckZuJiYoaD1u LnNlbGVjdGVkQ29sb3JGbih0KSl9aWYodC5vbSllLmNhbGwocy5zdHJva2Us aCkuc3R5bGUoeyJzdHJva2Utd2lkdGgiOihwfHwxKSsicHgiLGZpbGw6Im5v bmUifSk7ZWxzZXtlLnN0eWxlKCJzdHJva2Utd2lkdGgiLCh0LmlzQmxhbms/ MDpwKSsicHgiKTt2YXIgdj1pLmdyYWRpZW50LHk9dC5tZ3Q7aWYoeT9kPSEw Onk9diYmdi50eXBlLEFycmF5LmlzQXJyYXkoeSkmJih5PXlbMF0sTVt5XXx8 KHk9MCkpLHkmJiJub25lIiE9PXkpe3ZhciB4PXQubWdjO3g/ZD0hMDp4PXYu Y29sb3I7dmFyIGI9ci51aWQ7ZCYmKGIrPSItIit0LmkpLG0uZ3JhZGllbnQo ZSxhLGIseSxbWzAseF0sWzEsaF1dLCJmaWxsIil9ZWxzZSBzLmZpbGwoZSxo KTtwJiZzLnN0cm9rZShlLGYpfX0sbS5tYWtlUG9pbnRTdHlsZUZucz1mdW5j dGlvbih0KXt2YXIgZT17fSxyPXQubWFya2VyO3JldHVybiBlLm1hcmtlclNj YWxlPW0udHJ5Q29sb3JzY2FsZShyLCIiKSxlLmxpbmVTY2FsZT1tLnRyeUNv bG9yc2NhbGUociwibGluZSIpLG8udHJhY2VJcyh0LCJzeW1ib2xzIikmJihl Lm1zMm1yYz1kLmlzQnViYmxlKHQpP2codCk6ZnVuY3Rpb24oKXtyZXR1cm4o ci5zaXplfHw2KS8yfSksdC5zZWxlY3RlZHBvaW50cyYmYy5leHRlbmRGbGF0 KGUsbS5tYWtlU2VsZWN0ZWRQb2ludFN0eWxlRm5zKHQpKSxlfSxtLm1ha2VT ZWxlY3RlZFBvaW50U3R5bGVGbnM9ZnVuY3Rpb24odCl7dmFyIGU9e30scj10 LnNlbGVjdGVkfHx7fSxuPXQudW5zZWxlY3RlZHx8e30sYT10Lm1hcmtlcnx8 e30saT1yLm1hcmtlcnx8e30scz1uLm1hcmtlcnx8e30sbD1hLm9wYWNpdHks dT1pLm9wYWNpdHksaD1zLm9wYWNpdHksZj12b2lkIDAhPT11LGQ9dm9pZCAw IT09aDsoYy5pc0FycmF5T3JUeXBlZEFycmF5KGwpfHxmfHxkKSYmKGUuc2Vs ZWN0ZWRPcGFjaXR5Rm49ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwPT09dC5t bz9hLm9wYWNpdHk6dC5tbztyZXR1cm4gdC5zZWxlY3RlZD9mP3U6ZTpkP2g6 cCplfSk7dmFyIGc9YS5jb2xvcix2PWkuY29sb3IsbT1zLmNvbG9yOyh2fHxt KSYmKGUuc2VsZWN0ZWRDb2xvckZuPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWNj fHxnO3JldHVybiB0LnNlbGVjdGVkP3Z8fGU6bXx8ZX0pO3ZhciB5PWEuc2l6 ZSx4PWkuc2l6ZSxiPXMuc2l6ZSxfPXZvaWQgMCE9PXgsdz12b2lkIDAhPT1i O3JldHVybiBvLnRyYWNlSXModCwic3ltYm9scyIpJiYoX3x8dykmJihlLnNl bGVjdGVkU2l6ZUZuPWZ1bmN0aW9uKHQpe3ZhciBlPXQubXJjfHx5LzI7cmV0 dXJuIHQuc2VsZWN0ZWQ/Xz94LzI6ZTp3P2IvMjplfSksZX0sbS5tYWtlU2Vs ZWN0ZWRUZXh0U3R5bGVGbnM9ZnVuY3Rpb24odCl7dmFyIGU9e30scj10LnNl bGVjdGVkfHx7fSxuPXQudW5zZWxlY3RlZHx8e30sYT10LnRleHRmb250fHx7 fSxpPXIudGV4dGZvbnR8fHt9LG89bi50ZXh0Zm9udHx8e30sbD1hLmNvbG9y LGM9aS5jb2xvcix1PW8uY29sb3I7cmV0dXJuIGUuc2VsZWN0ZWRUZXh0Q29s b3JGbj1mdW5jdGlvbih0KXt2YXIgZT10LnRjfHxsO3JldHVybiB0LnNlbGVj dGVkP2N8fGU6dXx8KGM/ZTpzLmFkZE9wYWNpdHkoZSxwKSl9LGV9LG0uc2Vs ZWN0ZWRQb2ludFN0eWxlPWZ1bmN0aW9uKHQsZSl7aWYodC5zaXplKCkmJmUu c2VsZWN0ZWRwb2ludHMpe3ZhciByPW0ubWFrZVNlbGVjdGVkUG9pbnRTdHls ZUZucyhlKSxhPWUubWFya2VyfHx7fSxpPVtdO3Iuc2VsZWN0ZWRPcGFjaXR5 Rm4mJmkucHVzaChmdW5jdGlvbih0LGUpe3Quc3R5bGUoIm9wYWNpdHkiLHIu c2VsZWN0ZWRPcGFjaXR5Rm4oZSkpfSksci5zZWxlY3RlZENvbG9yRm4mJmku cHVzaChmdW5jdGlvbih0LGUpe3MuZmlsbCh0LHIuc2VsZWN0ZWRDb2xvckZu KGUpKX0pLHIuc2VsZWN0ZWRTaXplRm4mJmkucHVzaChmdW5jdGlvbih0LGUp e3ZhciBuPWUubXh8fGEuc3ltYm9sfHwwLGk9ci5zZWxlY3RlZFNpemVGbihl KTt0LmF0dHIoImQiLF8obS5zeW1ib2xOdW1iZXIobiksaSkpLGUubXJjMj1p fSksaS5sZW5ndGgmJnQuZWFjaChmdW5jdGlvbih0KXtmb3IodmFyIGU9bi5z ZWxlY3QodGhpcykscj0wO3I8aS5sZW5ndGg7cisrKWlbcl0oZSx0KX0pfX0s bS50cnlDb2xvcnNjYWxlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZT9jLm5lc3Rl ZFByb3BlcnR5KHQsZSkuZ2V0KCk6dDtpZihyKXt2YXIgbj1yLmNvbG9yO2lm KChyLmNvbG9yc2NhbGV8fHIuX2NvbG9yQXgpJiZjLmlzQXJyYXlPclR5cGVk QXJyYXkobikpcmV0dXJuIGwubWFrZUNvbG9yU2NhbGVGdW5jRnJvbVRyYWNl KHIpfXJldHVybiBjLmlkZW50aXR5fTt2YXIgQT17c3RhcnQ6MSxlbmQ6LTEs bWlkZGxlOjAsYm90dG9tOjEsdG9wOi0xfTtmdW5jdGlvbiBTKHQsZSxyLGEp e3ZhciBpPW4uc2VsZWN0KHQubm9kZSgpLnBhcmVudE5vZGUpLG89LTEhPT1l LmluZGV4T2YoInRvcCIpPyJ0b3AiOi0xIT09ZS5pbmRleE9mKCJib3R0b20i KT8iYm90dG9tIjoibWlkZGxlIixzPS0xIT09ZS5pbmRleE9mKCJsZWZ0Iik/ ImVuZCI6LTEhPT1lLmluZGV4T2YoInJpZ2h0Iik/InN0YXJ0IjoibWlkZGxl IixsPWE/YS8uOCsxOjAsYz0odS5saW5lQ291bnQodCktMSkqZisxLGg9QVtz XSpsLHA9Ljc1KnIrQVtvXSpsKyhBW29dLTEpKmMqci8yO3QuYXR0cigidGV4 dC1hbmNob3IiLHMpLGkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIr aCsiLCIrcCsiKSIpfWZ1bmN0aW9uIEUodCxlKXt2YXIgcj10LnRzfHxlLnRl eHRmb250LnNpemU7cmV0dXJuIGEocikmJnI+MD9yOjB9bS50ZXh0UG9pbnRT dHlsZT1mdW5jdGlvbih0LGUscil7aWYodC5zaXplKCkpe3ZhciBhO2lmKGUu c2VsZWN0ZWRwb2ludHMpe3ZhciBpPW0ubWFrZVNlbGVjdGVkVGV4dFN0eWxl Rm5zKGUpO2E9aS5zZWxlY3RlZFRleHRDb2xvckZufXZhciBvPWUudGV4dHRl bXBsYXRlLHM9ci5fZnVsbExheW91dDt0LmVhY2goZnVuY3Rpb24odCl7dmFy IGk9bi5zZWxlY3QodGhpcyksbD1vP2MuZXh0cmFjdE9wdGlvbih0LGUsInR4 dCIsInRleHR0ZW1wbGF0ZSIpOmMuZXh0cmFjdE9wdGlvbih0LGUsInR4Iiwi dGV4dCIpO2lmKGx8fDA9PT1sKXtpZihvKXt2YXIgaD1lLl9tb2R1bGUuZm9y bWF0TGFiZWxzP2UuX21vZHVsZS5mb3JtYXRMYWJlbHModCxlLHMpOnt9LGY9 e307dihmLGUsdC5pKTt2YXIgcD1lLl9tZXRhfHx7fTtsPWMudGV4dHRlbXBs YXRlU3RyaW5nKGwsaCxzLl9kM2xvY2FsZSxmLHQscCl9dmFyIGQ9dC50cHx8 ZS50ZXh0cG9zaXRpb24sZz1FKHQsZSkseT1hP2EodCk6dC50Y3x8ZS50ZXh0 Zm9udC5jb2xvcjtpLmNhbGwobS5mb250LHQudGZ8fGUudGV4dGZvbnQuZmFt aWx5LGcseSkudGV4dChsKS5jYWxsKHUuY29udmVydFRvVHNwYW5zLHIpLmNh bGwoUyxkLGcsdC5tcmMpfWVsc2UgaS5yZW1vdmUoKX0pfX0sbS5zZWxlY3Rl ZFRleHRTdHlsZT1mdW5jdGlvbih0LGUpe2lmKHQuc2l6ZSgpJiZlLnNlbGVj dGVkcG9pbnRzKXt2YXIgcj1tLm1ha2VTZWxlY3RlZFRleHRTdHlsZUZucyhl KTt0LmVhY2goZnVuY3Rpb24odCl7dmFyIGE9bi5zZWxlY3QodGhpcyksaT1y LnNlbGVjdGVkVGV4dENvbG9yRm4odCksbz10LnRwfHxlLnRleHRwb3NpdGlv bixsPUUodCxlKTtzLmZpbGwoYSxpKSxTKGEsbyxsLHQubXJjMnx8dC5tcmMp fSl9fTt2YXIgTD0uNTtmdW5jdGlvbiBDKHQsZSxyLGEpe3ZhciBpPXRbMF0t ZVswXSxvPXRbMV0tZVsxXSxzPXJbMF0tZVswXSxsPXJbMV0tZVsxXSxjPU1h dGgucG93KGkqaStvKm8sTC8yKSx1PU1hdGgucG93KHMqcytsKmwsTC8yKSxo PSh1KnUqaS1jKmMqcykqYSxmPSh1KnUqby1jKmMqbCkqYSxwPTMqdSooYyt1 KSxkPTMqYyooYyt1KTtyZXR1cm5bW24ucm91bmQoZVswXSsocCYmaC9wKSwy KSxuLnJvdW5kKGVbMV0rKHAmJmYvcCksMildLFtuLnJvdW5kKGVbMF0tKGQm JmgvZCksMiksbi5yb3VuZChlWzFdLShkJiZmL2QpLDIpXV19bS5zbW9vdGhv cGVuPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8MylyZXR1cm4iTSIrdC5q b2luKCJMIik7dmFyIHIsbj0iTSIrdFswXSxhPVtdO2ZvcihyPTE7cjx0Lmxl bmd0aC0xO3IrKylhLnB1c2goQyh0W3ItMV0sdFtyXSx0W3IrMV0sZSkpO2Zv cihuKz0iUSIrYVswXVswXSsiICIrdFsxXSxyPTI7cjx0Lmxlbmd0aC0xO3Ir KyluKz0iQyIrYVtyLTJdWzFdKyIgIithW3ItMV1bMF0rIiAiK3Rbcl07cmV0 dXJuIG4rPSJRIithW3QubGVuZ3RoLTNdWzFdKyIgIit0W3QubGVuZ3RoLTFd fSxtLnNtb290aGNsb3NlZD1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPDMp cmV0dXJuIk0iK3Quam9pbigiTCIpKyJaIjt2YXIgcixuPSJNIit0WzBdLGE9 dC5sZW5ndGgtMSxpPVtDKHRbYV0sdFswXSx0WzFdLGUpXTtmb3Iocj0xO3I8 YTtyKyspaS5wdXNoKEModFtyLTFdLHRbcl0sdFtyKzFdLGUpKTtmb3IoaS5w dXNoKEModFthLTFdLHRbYV0sdFswXSxlKSkscj0xO3I8PWE7cisrKW4rPSJD IitpW3ItMV1bMV0rIiAiK2lbcl1bMF0rIiAiK3Rbcl07cmV0dXJuIG4rPSJD IitpW2FdWzFdKyIgIitpWzBdWzBdKyIgIit0WzBdKyJaIn07dmFyIFA9e2h2 OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIkgiK24ucm91bmQoZVswXSwyKSsiViIr bi5yb3VuZChlWzFdLDIpfSx2aDpmdW5jdGlvbih0LGUpe3JldHVybiJWIitu LnJvdW5kKGVbMV0sMikrIkgiK24ucm91bmQoZVswXSwyKX0saHZoOmZ1bmN0 aW9uKHQsZSl7cmV0dXJuIkgiK24ucm91bmQoKHRbMF0rZVswXSkvMiwyKSsi ViIrbi5yb3VuZChlWzFdLDIpKyJIIituLnJvdW5kKGVbMF0sMil9LHZodjpm dW5jdGlvbih0LGUpe3JldHVybiJWIituLnJvdW5kKCh0WzFdK2VbMV0pLzIs MikrIkgiK24ucm91bmQoZVswXSwyKSsiViIrbi5yb3VuZChlWzFdLDIpfX0s Tz1mdW5jdGlvbih0LGUpe3JldHVybiJMIituLnJvdW5kKGVbMF0sMikrIiwi K24ucm91bmQoZVsxXSwyKX07bS5zdGVwcz1mdW5jdGlvbih0KXt2YXIgZT1Q W3RdfHxPO3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIHI9Ik0iK24ucm91 bmQodFswXVswXSwyKSsiLCIrbi5yb3VuZCh0WzBdWzFdLDIpLGE9MTthPHQu bGVuZ3RoO2ErKylyKz1lKHRbYS0xXSx0W2FdKTtyZXR1cm4gcn19LG0ubWFr ZVRlc3Rlcj1mdW5jdGlvbigpe3ZhciB0PWMuZW5zdXJlU2luZ2xlQnlJZChu LnNlbGVjdCgiYm9keSIpLCJzdmciLCJqcy1wbG90bHktdGVzdGVyIixmdW5j dGlvbih0KXt0LmF0dHIoaC5zdmdBdHRycykuc3R5bGUoe3Bvc2l0aW9uOiJh YnNvbHV0ZSIsbGVmdDoiLTEwMDAwcHgiLHRvcDoiLTEwMDAwcHgiLHdpZHRo OiI5MDAwcHgiLGhlaWdodDoiOTAwMHB4Iiwiei1pbmRleCI6IjEifSl9KSxl PWMuZW5zdXJlU2luZ2xlKHQsInBhdGgiLCJqcy1yZWZlcmVuY2UtcG9pbnQi LGZ1bmN0aW9uKHQpe3QuYXR0cigiZCIsIk0wLDBIMVYxSDBaIikuc3R5bGUo eyJzdHJva2Utd2lkdGgiOjAsZmlsbDoiYmxhY2sifSl9KTttLnRlc3Rlcj10 LG0udGVzdHJlZj1lfSxtLnNhdmVkQkJveGVzPXt9O3ZhciB6PTA7ZnVuY3Rp b24gSSh0KXt2YXIgZT10LmdldEF0dHJpYnV0ZSgiZGF0YS11bmZvcm1hdHRl ZCIpO2lmKG51bGwhPT1lKXJldHVybiBlK3QuZ2V0QXR0cmlidXRlKCJkYXRh LW1hdGgiKSt0LmdldEF0dHJpYnV0ZSgidGV4dC1hbmNob3IiKSt0LmdldEF0 dHJpYnV0ZSgic3R5bGUiKX1mdW5jdGlvbiBEKHQsZSl7aWYoIXQpcmV0dXJu IG51bGw7dmFyIHI9ZS5fY29udGV4dDtyZXR1cm4idXJsKCciKyhyLl9leHBv cnRlZFBsb3Q/IiI6ci5fYmFzZVVybHx8IiIpKyIjIit0KyInKSJ9bS5iQm94 PWZ1bmN0aW9uKHQsZSxyKXt2YXIgYSxpLG87aWYocnx8KHI9SSh0KSkscil7 aWYoYT1tLnNhdmVkQkJveGVzW3JdKXJldHVybiBjLmV4dGVuZEZsYXQoe30s YSl9ZWxzZSBpZigxPT09dC5jaGlsZE5vZGVzLmxlbmd0aCl7dmFyIHM9dC5j aGlsZE5vZGVzWzBdO2lmKHI9SShzKSl7dmFyIGw9K3MuZ2V0QXR0cmlidXRl KCJ4Iil8fDAsaD0rcy5nZXRBdHRyaWJ1dGUoInkiKXx8MCxmPXMuZ2V0QXR0 cmlidXRlKCJ0cmFuc2Zvcm0iKTtpZighZil7dmFyIHA9bS5iQm94KHMsITEs cik7cmV0dXJuIGwmJihwLmxlZnQrPWwscC5yaWdodCs9bCksaCYmKHAudG9w Kz1oLHAuYm90dG9tKz1oKSxwfWlmKHIrPSJ+IitsKyJ+IitoKyJ+IitmLGE9 bS5zYXZlZEJCb3hlc1tyXSlyZXR1cm4gYy5leHRlbmRGbGF0KHt9LGEpfX1l P2k9dDoobz1tLnRlc3Rlci5ub2RlKCksaT10LmNsb25lTm9kZSghMCksby5h cHBlbmRDaGlsZChpKSksbi5zZWxlY3QoaSkuYXR0cigidHJhbnNmb3JtIixu dWxsKS5jYWxsKHUucG9zaXRpb25UZXh0LDAsMCk7dmFyIGQ9aS5nZXRCb3Vu ZGluZ0NsaWVudFJlY3QoKSxnPW0udGVzdHJlZi5ub2RlKCkuZ2V0Qm91bmRp bmdDbGllbnRSZWN0KCk7ZXx8by5yZW1vdmVDaGlsZChpKTt2YXIgdj17aGVp Z2h0OmQuaGVpZ2h0LHdpZHRoOmQud2lkdGgsbGVmdDpkLmxlZnQtZy5sZWZ0 LHRvcDpkLnRvcC1nLnRvcCxyaWdodDpkLnJpZ2h0LWcubGVmdCxib3R0b206 ZC5ib3R0b20tZy50b3B9O3JldHVybiB6Pj0xZTQmJihtLnNhdmVkQkJveGVz PXt9LHo9MCksciYmKG0uc2F2ZWRCQm94ZXNbcl09dikseisrLGMuZXh0ZW5k RmxhdCh7fSx2KX0sbS5zZXRDbGlwVXJsPWZ1bmN0aW9uKHQsZSxyKXt0LmF0 dHIoImNsaXAtcGF0aCIsRChlLHIpKX0sbS5nZXRUcmFuc2xhdGU9ZnVuY3Rp b24odCl7dmFyIGU9KHRbdC5hdHRyPyJhdHRyIjoiZ2V0QXR0cmlidXRlIl0o InRyYW5zZm9ybSIpfHwiIikucmVwbGFjZSgvLipcYnRyYW5zbGF0ZVwoKC0/ XGQqXC4/XGQqKVteLVxkXSooLT9cZCpcLj9cZCopW15cZF0uKi8sZnVuY3Rp b24odCxlLHIpe3JldHVybltlLHJdLmpvaW4oIiAiKX0pLnNwbGl0KCIgIik7 cmV0dXJue3g6K2VbMF18fDAseTorZVsxXXx8MH19LG0uc2V0VHJhbnNsYXRl PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10LmF0dHI/ImF0dHIiOiJnZXRBdHRy aWJ1dGUiLGE9dC5hdHRyPyJhdHRyIjoic2V0QXR0cmlidXRlIixpPXRbbl0o InRyYW5zZm9ybSIpfHwiIjtyZXR1cm4gZT1lfHwwLHI9cnx8MCxpPWkucmVw bGFjZSgvKFxidHJhbnNsYXRlXCguKj9cKTs/KS8sIiIpLnRyaW0oKSxpPShp Kz0iIHRyYW5zbGF0ZSgiK2UrIiwgIityKyIpIikudHJpbSgpLHRbYV0oInRy YW5zZm9ybSIsaSksaX0sbS5nZXRTY2FsZT1mdW5jdGlvbih0KXt2YXIgZT0o dFt0LmF0dHI/ImF0dHIiOiJnZXRBdHRyaWJ1dGUiXSgidHJhbnNmb3JtIil8 fCIiKS5yZXBsYWNlKC8uKlxic2NhbGVcKChcZCpcLj9cZCopW15cZF0qKFxk KlwuP1xkKilbXlxkXS4qLyxmdW5jdGlvbih0LGUscil7cmV0dXJuW2Uscl0u am9pbigiICIpfSkuc3BsaXQoIiAiKTtyZXR1cm57eDorZVswXXx8MSx5Oitl WzFdfHwxfX0sbS5zZXRTY2FsZT1mdW5jdGlvbih0LGUscil7dmFyIG49dC5h dHRyPyJhdHRyIjoiZ2V0QXR0cmlidXRlIixhPXQuYXR0cj8iYXR0ciI6InNl dEF0dHJpYnV0ZSIsaT10W25dKCJ0cmFuc2Zvcm0iKXx8IiI7cmV0dXJuIGU9 ZXx8MSxyPXJ8fDEsaT1pLnJlcGxhY2UoLyhcYnNjYWxlXCguKj9cKTs/KS8s IiIpLnRyaW0oKSxpPShpKz0iIHNjYWxlKCIrZSsiLCAiK3IrIikiKS50cmlt KCksdFthXSgidHJhbnNmb3JtIixpKSxpfTt2YXIgUj0vXHMqc2MuKi87bS5z ZXRQb2ludEdyb3VwU2NhbGU9ZnVuY3Rpb24odCxlLHIpe2lmKGU9ZXx8MSxy PXJ8fDEsdCl7dmFyIG49MT09PWUmJjE9PT1yPyIiOiIgc2NhbGUoIitlKyIs IityKyIpIjt0LmVhY2goZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5nZXRBdHRy aWJ1dGUoInRyYW5zZm9ybSIpfHwiIikucmVwbGFjZShSLCIiKTt0PSh0Kz1u KS50cmltKCksdGhpcy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCl9KX19 O3ZhciBGPS90cmFuc2xhdGVcKFteKV0qXClccyokLzttLnNldFRleHRQb2lu dHNTY2FsZT1mdW5jdGlvbih0LGUscil7dCYmdC5lYWNoKGZ1bmN0aW9uKCl7 dmFyIHQsYT1uLnNlbGVjdCh0aGlzKSxpPWEuc2VsZWN0KCJ0ZXh0Iik7aWYo aS5ub2RlKCkpe3ZhciBvPXBhcnNlRmxvYXQoaS5hdHRyKCJ4Iil8fDApLHM9 cGFyc2VGbG9hdChpLmF0dHIoInkiKXx8MCksbD0oYS5hdHRyKCJ0cmFuc2Zv cm0iKXx8IiIpLm1hdGNoKEYpO3Q9MT09PWUmJjE9PT1yP1tdOlsidHJhbnNs YXRlKCIrbysiLCIrcysiKSIsInNjYWxlKCIrZSsiLCIrcisiKSIsInRyYW5z bGF0ZSgiKy1vKyIsIistcysiKSJdLGwmJnQucHVzaChsKSxhLmF0dHIoInRy YW5zZm9ybSIsdC5qb2luKCIgIikpfX0pfX0seyIuLi8uLi9jb21wb25lbnRz L2Z4L2hlbHBlcnMiOjYyNywiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6 Njg2LCIuLi8uLi9jb25zdGFudHMvaW50ZXJhY3Rpb25zIjo2OTIsIi4uLy4u L2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4uLy4uL2xpYiI6 NzE3LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcmVn aXN0cnkiOjg0NiwiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvbWFrZV9idWJibGVf c2l6ZV9mdW5jIjoxMTM3LCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBl cyI6MTE0NCwiLi4vY29sb3IiOjU5MiwiLi4vY29sb3JzY2FsZSI6NjA0LCIu L3N5bWJvbF9kZWZzIjo2MTQsZDM6MTY1LCJmYXN0LWlzbnVtZXJpYyI6MjI4 LHRpbnljb2xvcjI6NTM2fV0sNjE0OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoImQzIik7ZS5leHBvcnRzPXtjaXJjbGU6e246MCxm OmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsi LDBBIitlKyIsIitlKyIgMCAxLDEgMCwtIitlKyJBIitlKyIsIitlKyIgMCAw LDEgIitlKyIsMFoifX0sc3F1YXJlOntuOjEsZjpmdW5jdGlvbih0KXt2YXIg ZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0iK2UrIiwiK2UrIkgtIitlKyJWLSIr ZSsiSCIrZSsiWiJ9fSxkaWFtb25kOntuOjIsZjpmdW5jdGlvbih0KXt2YXIg ZT1uLnJvdW5kKDEuMyp0LDIpO3JldHVybiJNIitlKyIsMEwwLCIrZSsiTC0i K2UrIiwwTDAsLSIrZSsiWiJ9fSxjcm9zczp7bjozLGY6ZnVuY3Rpb24odCl7 dmFyIGU9bi5yb3VuZCguNCp0LDIpLHI9bi5yb3VuZCgxLjIqdCwyKTtyZXR1 cm4iTSIrcisiLCIrZSsiSCIrZSsiViIrcisiSC0iK2UrIlYiK2UrIkgtIity KyJWLSIrZSsiSC0iK2UrIlYtIityKyJIIitlKyJWLSIrZSsiSCIrcisiWiJ9 fSx4OntuOjQsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC44KnQvTWF0 aC5zcXJ0KDIpLDIpLHI9ImwiK2UrIiwiK2UsYT0ibCIrZSsiLC0iK2UsaT0i bC0iK2UrIiwtIitlLG89ImwtIitlKyIsIitlO3JldHVybiJNMCwiK2Urcith K2krYStpK28raStvK3IrbytyKyJaIn19LCJ0cmlhbmdsZS11cCI6e246NSxm OmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMip0L01hdGguc3FydCgzKSwy KTtyZXR1cm4iTS0iK2UrIiwiK24ucm91bmQodC8yLDIpKyJIIitlKyJMMCwt IituLnJvdW5kKHQsMikrIloifX0sInRyaWFuZ2xlLWRvd24iOntuOjYsZjpm dW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDIqdC9NYXRoLnNxcnQoMyksMik7 cmV0dXJuIk0tIitlKyIsLSIrbi5yb3VuZCh0LzIsMikrIkgiK2UrIkwwLCIr bi5yb3VuZCh0LDIpKyJaIn19LCJ0cmlhbmdsZS1sZWZ0Ijp7bjo3LGY6ZnVu Y3Rpb24odCl7dmFyIGU9bi5yb3VuZCgyKnQvTWF0aC5zcXJ0KDMpLDIpO3Jl dHVybiJNIituLnJvdW5kKHQvMiwyKSsiLC0iK2UrIlYiK2UrIkwtIituLnJv dW5kKHQsMikrIiwwWiJ9fSwidHJpYW5nbGUtcmlnaHQiOntuOjgsZjpmdW5j dGlvbih0KXt2YXIgZT1uLnJvdW5kKDIqdC9NYXRoLnNxcnQoMyksMik7cmV0 dXJuIk0tIituLnJvdW5kKHQvMiwyKSsiLC0iK2UrIlYiK2UrIkwiK24ucm91 bmQodCwyKSsiLDBaIn19LCJ0cmlhbmdsZS1uZSI6e246OSxmOmZ1bmN0aW9u KHQpe3ZhciBlPW4ucm91bmQoLjYqdCwyKSxyPW4ucm91bmQoMS4yKnQsMik7 cmV0dXJuIk0tIityKyIsLSIrZSsiSCIrZSsiViIrcisiWiJ9fSwidHJpYW5n bGUtc2UiOntuOjEwLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCguNip0 LDIpLHI9bi5yb3VuZCgxLjIqdCwyKTtyZXR1cm4iTSIrZSsiLC0iK3IrIlYi K2UrIkgtIityKyJaIn19LCJ0cmlhbmdsZS1zdyI6e246MTEsZjpmdW5jdGlv bih0KXt2YXIgZT1uLnJvdW5kKC42KnQsMikscj1uLnJvdW5kKDEuMip0LDIp O3JldHVybiJNIityKyIsIitlKyJILSIrZSsiVi0iK3IrIloifX0sInRyaWFu Z2xlLW53Ijp7bjoxMixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjYq dCwyKSxyPW4ucm91bmQoMS4yKnQsMik7cmV0dXJuIk0tIitlKyIsIityKyJW LSIrZSsiSCIrcisiWiJ9fSxwZW50YWdvbjp7bjoxMyxmOmZ1bmN0aW9uKHQp e3ZhciBlPW4ucm91bmQoLjk1MSp0LDIpLHI9bi5yb3VuZCguNTg4KnQsMiks YT1uLnJvdW5kKC10LDIpLGk9bi5yb3VuZCgtLjMwOSp0LDIpO3JldHVybiJN IitlKyIsIitpKyJMIityKyIsIituLnJvdW5kKC44MDkqdCwyKSsiSC0iK3Ir IkwtIitlKyIsIitpKyJMMCwiK2ErIloifX0saGV4YWdvbjp7bjoxNCxmOmZ1 bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKSxyPW4ucm91bmQodC8yLDIp LGE9bi5yb3VuZCh0Kk1hdGguc3FydCgzKS8yLDIpO3JldHVybiJNIithKyIs LSIrcisiViIrcisiTDAsIitlKyJMLSIrYSsiLCIrcisiVi0iK3IrIkwwLC0i K2UrIloifX0saGV4YWdvbjI6e246MTUsZjpmdW5jdGlvbih0KXt2YXIgZT1u LnJvdW5kKHQsMikscj1uLnJvdW5kKHQvMiwyKSxhPW4ucm91bmQodCpNYXRo LnNxcnQoMykvMiwyKTtyZXR1cm4iTS0iK3IrIiwiK2ErIkgiK3IrIkwiK2Ur IiwwTCIrcisiLC0iK2ErIkgtIityKyJMLSIrZSsiLDBaIn19LG9jdGFnb246 e246MTYsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC45MjQqdCwyKSxy PW4ucm91bmQoLjM4Myp0LDIpO3JldHVybiJNLSIrcisiLC0iK2UrIkgiK3Ir IkwiK2UrIiwtIityKyJWIityKyJMIityKyIsIitlKyJILSIrcisiTC0iK2Ur IiwiK3IrIlYtIityKyJaIn19LHN0YXI6e246MTcsZjpmdW5jdGlvbih0KXt2 YXIgZT0xLjQqdCxyPW4ucm91bmQoLjIyNSplLDIpLGE9bi5yb3VuZCguOTUx KmUsMiksaT1uLnJvdW5kKC4zNjMqZSwyKSxvPW4ucm91bmQoLjU4OCplLDIp LHM9bi5yb3VuZCgtZSwyKSxsPW4ucm91bmQoLS4zMDkqZSwyKSxjPW4ucm91 bmQoLjExOCplLDIpLHU9bi5yb3VuZCguODA5KmUsMik7cmV0dXJuIk0iK3Ir IiwiK2wrIkgiK2ErIkwiK2krIiwiK2MrIkwiK28rIiwiK3UrIkwwLCIrbi5y b3VuZCguMzgyKmUsMikrIkwtIitvKyIsIit1KyJMLSIraSsiLCIrYysiTC0i K2ErIiwiK2wrIkgtIityKyJMMCwiK3MrIloifX0saGV4YWdyYW06e246MTgs ZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC42Nip0LDIpLHI9bi5yb3Vu ZCguMzgqdCwyKSxhPW4ucm91bmQoLjc2KnQsMik7cmV0dXJuIk0tIithKyIs MGwtIityKyIsLSIrZSsiaCIrYSsibCIrcisiLC0iK2UrImwiK3IrIiwiK2Ur ImgiK2ErImwtIityKyIsIitlKyJsIityKyIsIitlKyJoLSIrYSsibC0iK3Ir IiwiK2UrImwtIityKyIsLSIrZSsiaC0iK2ErIloifX0sInN0YXItdHJpYW5n bGUtdXAiOntuOjE5LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0Kk1h dGguc3FydCgzKSouOCwyKSxyPW4ucm91bmQoLjgqdCwyKSxhPW4ucm91bmQo MS42KnQsMiksaT1uLnJvdW5kKDQqdCwyKSxvPSJBICIraSsiLCIraSsiIDAg MCAxICI7cmV0dXJuIk0tIitlKyIsIityK28rZSsiLCIrcitvKyIwLC0iK2Er bysiLSIrZSsiLCIrcisiWiJ9fSwic3Rhci10cmlhbmdsZS1kb3duIjp7bjoy MCxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCpNYXRoLnNxcnQoMykq LjgsMikscj1uLnJvdW5kKC44KnQsMiksYT1uLnJvdW5kKDEuNip0LDIpLGk9 bi5yb3VuZCg0KnQsMiksbz0iQSAiK2krIiwiK2krIiAwIDAgMSAiO3JldHVy biJNIitlKyIsLSIrcitvKyItIitlKyIsLSIrcitvKyIwLCIrYStvK2UrIiwt IityKyJaIn19LCJzdGFyLXNxdWFyZSI6e246MjEsZjpmdW5jdGlvbih0KXt2 YXIgZT1uLnJvdW5kKDEuMSp0LDIpLHI9bi5yb3VuZCgyKnQsMiksYT0iQSAi K3IrIiwiK3IrIiAwIDAgMSAiO3JldHVybiJNLSIrZSsiLC0iK2UrYSsiLSIr ZSsiLCIrZSthK2UrIiwiK2UrYStlKyIsLSIrZSthKyItIitlKyIsLSIrZSsi WiJ9fSwic3Rhci1kaWFtb25kIjp7bjoyMixmOmZ1bmN0aW9uKHQpe3ZhciBl PW4ucm91bmQoMS40KnQsMikscj1uLnJvdW5kKDEuOSp0LDIpLGE9IkEgIity KyIsIityKyIgMCAwIDEgIjtyZXR1cm4iTS0iK2UrIiwwIithKyIwLCIrZSth K2UrIiwwIithKyIwLC0iK2UrYSsiLSIrZSsiLDBaIn19LCJkaWFtb25kLXRh bGwiOntuOjIzLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCguNyp0LDIp LHI9bi5yb3VuZCgxLjQqdCwyKTtyZXR1cm4iTTAsIityKyJMIitlKyIsMEww LC0iK3IrIkwtIitlKyIsMFoifX0sImRpYW1vbmQtd2lkZSI6e246MjQsZjpm dW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuNCp0LDIpLHI9bi5yb3VuZCgu Nyp0LDIpO3JldHVybiJNMCwiK3IrIkwiK2UrIiwwTDAsLSIrcisiTC0iK2Ur IiwwWiJ9fSxob3VyZ2xhc3M6e246MjUsZjpmdW5jdGlvbih0KXt2YXIgZT1u LnJvdW5kKHQsMik7cmV0dXJuIk0iK2UrIiwiK2UrIkgtIitlKyJMIitlKyIs LSIrZSsiSC0iK2UrIloifSxub0RvdDohMH0sYm93dGllOntuOjI2LGY6ZnVu Y3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsIitl KyJWLSIrZSsiTC0iK2UrIiwiK2UrIlYtIitlKyJaIn0sbm9Eb3Q6ITB9LCJj aXJjbGUtY3Jvc3MiOntuOjI3LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3Vu ZCh0LDIpO3JldHVybiJNMCwiK2UrIlYtIitlKyJNIitlKyIsMEgtIitlKyJN IitlKyIsMEEiK2UrIiwiK2UrIiAwIDEsMSAwLC0iK2UrIkEiK2UrIiwiK2Ur IiAwIDAsMSAiK2UrIiwwWiJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwiY2ly Y2xlLXgiOntuOjI4LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIp LHI9bi5yb3VuZCh0L01hdGguc3FydCgyKSwyKTtyZXR1cm4iTSIrcisiLCIr cisiTC0iK3IrIiwtIityKyJNIityKyIsLSIrcisiTC0iK3IrIiwiK3IrIk0i K2UrIiwwQSIrZSsiLCIrZSsiIDAgMSwxIDAsLSIrZSsiQSIrZSsiLCIrZSsi IDAgMCwxICIrZSsiLDBaIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJzcXVh cmUtY3Jvc3MiOntuOjI5LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0 LDIpO3JldHVybiJNMCwiK2UrIlYtIitlKyJNIitlKyIsMEgtIitlKyJNIitl KyIsIitlKyJILSIrZSsiVi0iK2UrIkgiK2UrIloifSxuZWVkTGluZTohMCxu b0RvdDohMH0sInNxdWFyZS14Ijp7bjozMCxmOmZ1bmN0aW9uKHQpe3ZhciBl PW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLCIrZSsiTC0iK2UrIiwtIitl KyJNIitlKyIsLSIrZSsiTC0iK2UrIiwiK2UrIk0iK2UrIiwiK2UrIkgtIitl KyJWLSIrZSsiSCIrZSsiWiJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwiZGlh bW9uZC1jcm9zcyI6e246MzEsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5k KDEuMyp0LDIpO3JldHVybiJNIitlKyIsMEwwLCIrZSsiTC0iK2UrIiwwTDAs LSIrZSsiWk0wLC0iK2UrIlYiK2UrIk0tIitlKyIsMEgiK2V9LG5lZWRMaW5l OiEwLG5vRG90OiEwfSwiZGlhbW9uZC14Ijp7bjozMixmOmZ1bmN0aW9uKHQp e3ZhciBlPW4ucm91bmQoMS4zKnQsMikscj1uLnJvdW5kKC42NSp0LDIpO3Jl dHVybiJNIitlKyIsMEwwLCIrZSsiTC0iK2UrIiwwTDAsLSIrZSsiWk0tIity KyIsLSIrcisiTCIrcisiLCIrcisiTS0iK3IrIiwiK3IrIkwiK3IrIiwtIity fSxuZWVkTGluZTohMCxub0RvdDohMH0sImNyb3NzLXRoaW4iOntuOjMzLGY6 ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjQqdCwyKTtyZXR1cm4iTTAs IitlKyJWLSIrZSsiTSIrZSsiLDBILSIrZX0sbmVlZExpbmU6ITAsbm9Eb3Q6 ITAsbm9GaWxsOiEwfSwieC10aGluIjp7bjozNCxmOmZ1bmN0aW9uKHQpe3Zh ciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLCIrZSsiTC0iK2UrIiwt IitlKyJNIitlKyIsLSIrZSsiTC0iK2UrIiwiK2V9LG5lZWRMaW5lOiEwLG5v RG90OiEwLG5vRmlsbDohMH0sYXN0ZXJpc2s6e246MzUsZjpmdW5jdGlvbih0 KXt2YXIgZT1uLnJvdW5kKDEuMip0LDIpLHI9bi5yb3VuZCguODUqdCwyKTty ZXR1cm4iTTAsIitlKyJWLSIrZSsiTSIrZSsiLDBILSIrZSsiTSIrcisiLCIr cisiTC0iK3IrIiwtIityKyJNIityKyIsLSIrcisiTC0iK3IrIiwiK3J9LG5l ZWRMaW5lOiEwLG5vRG90OiEwLG5vRmlsbDohMH0saGFzaDp7bjozNixmOmZ1 bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodC8yLDIpLHI9bi5yb3VuZCh0LDIp O3JldHVybiJNIitlKyIsIityKyJWLSIrcisibS0iK3IrIiwwViIrcisiTSIr cisiLCIrZSsiSC0iK3IrIm0wLC0iK3IrIkgiK3J9LG5lZWRMaW5lOiEwLG5v RmlsbDohMH0sInktdXAiOntuOjM3LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5y b3VuZCgxLjIqdCwyKSxyPW4ucm91bmQoMS42KnQsMiksYT1uLnJvdW5kKC44 KnQsMik7cmV0dXJuIk0tIitlKyIsIithKyJMMCwwTSIrZSsiLCIrYSsiTDAs ME0wLC0iK3IrIkwwLDAifSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6 ITB9LCJ5LWRvd24iOntuOjM4LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3Vu ZCgxLjIqdCwyKSxyPW4ucm91bmQoMS42KnQsMiksYT1uLnJvdW5kKC44KnQs Mik7cmV0dXJuIk0tIitlKyIsLSIrYSsiTDAsME0iK2UrIiwtIithKyJMMCww TTAsIityKyJMMCwwIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITAsbm9GaWxsOiEw fSwieS1sZWZ0Ijp7bjozOSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQo MS4yKnQsMikscj1uLnJvdW5kKDEuNip0LDIpLGE9bi5yb3VuZCguOCp0LDIp O3JldHVybiJNIithKyIsIitlKyJMMCwwTSIrYSsiLC0iK2UrIkwwLDBNLSIr cisiLDBMMCwwIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITAsbm9GaWxsOiEwfSwi eS1yaWdodCI6e246NDAsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEu Mip0LDIpLHI9bi5yb3VuZCgxLjYqdCwyKSxhPW4ucm91bmQoLjgqdCwyKTty ZXR1cm4iTS0iK2ErIiwiK2UrIkwwLDBNLSIrYSsiLC0iK2UrIkwwLDBNIity KyIsMEwwLDAifSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6ITB9LCJs aW5lLWV3Ijp7bjo0MSxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS40 KnQsMik7cmV0dXJuIk0iK2UrIiwwSC0iK2V9LG5lZWRMaW5lOiEwLG5vRG90 OiEwLG5vRmlsbDohMH0sImxpbmUtbnMiOntuOjQyLGY6ZnVuY3Rpb24odCl7 dmFyIGU9bi5yb3VuZCgxLjQqdCwyKTtyZXR1cm4iTTAsIitlKyJWLSIrZX0s bmVlZExpbmU6ITAsbm9Eb3Q6ITAsbm9GaWxsOiEwfSwibGluZS1uZSI6e246 NDMsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0i K2UrIiwtIitlKyJMLSIrZSsiLCIrZX0sbmVlZExpbmU6ITAsbm9Eb3Q6ITAs bm9GaWxsOiEwfSwibGluZS1udyI6e246NDQsZjpmdW5jdGlvbih0KXt2YXIg ZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0iK2UrIiwiK2UrIkwtIitlKyIsLSIr ZX0sbmVlZExpbmU6ITAsbm9Eb3Q6ITAsbm9GaWxsOiEwfX19LHtkMzoxNjV9 XSw2MTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PXt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToiY2FsYyJ9 LHR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInBlcmNlbnQi LCJjb25zdGFudCIsInNxcnQiLCJkYXRhIl0sZWRpdFR5cGU6ImNhbGMifSxz eW1tZXRyaWM6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJjYWxjIn0s YXJyYXk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0s YXJyYXltaW51czp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNh bGMifSx2YWx1ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwLGVk aXRUeXBlOiJjYWxjIn0sdmFsdWVtaW51czp7dmFsVHlwZToibnVtYmVyIixt aW46MCxkZmx0OjEwLGVkaXRUeXBlOiJjYWxjIn0sdHJhY2VyZWY6e3ZhbFR5 cGU6ImludGVnZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToic3R5bGUifSx0 cmFjZXJlZm1pbnVzOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjAs ZWRpdFR5cGU6InN0eWxlIn0sY29weV95c3R5bGU6e3ZhbFR5cGU6ImJvb2xl YW4iLGVkaXRUeXBlOiJwbG90In0sY29weV96c3R5bGU6e3ZhbFR5cGU6ImJv b2xlYW4iLGVkaXRUeXBlOiJzdHlsZSJ9LGNvbG9yOnt2YWxUeXBlOiJjb2xv ciIsZWRpdFR5cGU6InN0eWxlIn0sdGhpY2tuZXNzOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLGRmbHQ6MixlZGl0VHlwZToic3R5bGUifSx3aWR0aDp7dmFs VHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBl OiJjYWxjIixfZGVwcmVjYXRlZDp7b3BhY2l0eTp7dmFsVHlwZToibnVtYmVy IixlZGl0VHlwZToic3R5bGUifX19fSx7fV0sNjE2OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10 KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFu L2F4ZXMiKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi9jb21wdXRlX2Vycm9y Iik7ZnVuY3Rpb24gbCh0LGUscixhKXt2YXIgbD1lWyJlcnJvcl8iK2FdfHx7 fSxjPVtdO2lmKGwudmlzaWJsZSYmLTEhPT1bImxpbmVhciIsImxvZyJdLmlu ZGV4T2Yoci50eXBlKSl7Zm9yKHZhciB1PXMobCksaD0wO2g8dC5sZW5ndGg7 aCsrKXt2YXIgZj10W2hdLHA9Zi5pO2lmKHZvaWQgMD09PXApcD1oO2Vsc2Ug aWYobnVsbD09PXApY29udGludWU7dmFyIGQ9ZlthXTtpZihuKHIuYzJsKGQp KSl7dmFyIGc9dShkLHApO2lmKG4oZ1swXSkmJm4oZ1sxXSkpe3ZhciB2PWZb YSsicyJdPWQtZ1swXSxtPWZbYSsiaCJdPWQrZ1sxXTtjLnB1c2godixtKX19 fXZhciB5PXIuX2lkLHg9ZS5fZXh0cmVtZXNbeV0sYj1pLmZpbmRFeHRyZW1l cyhyLGMsby5leHRlbmRGbGF0KHt0b3plcm86eC5vcHRzLnRvemVyb30se3Bh ZGRlZDohMH0pKTt4Lm1pbj14Lm1pbi5jb25jYXQoYi5taW4pLHgubWF4PXgu bWF4LmNvbmNhdChiLm1heCl9fWUuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3Io dmFyIGU9dC5jYWxjZGF0YSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVb cl0sbz1uWzBdLnRyYWNlO2lmKCEwPT09by52aXNpYmxlJiZhLnRyYWNlSXMo bywiZXJyb3JCYXJzT0siKSl7dmFyIHM9aS5nZXRGcm9tSWQodCxvLnhheGlz KSxjPWkuZ2V0RnJvbUlkKHQsby55YXhpcyk7bChuLG8scywieCIpLGwobixv LGMsInkiKX19fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F4ZXMiOjc2NSwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9jb21w dXRlX2Vycm9yIjo2MTcsImZhc3QtaXNudW1lcmljIjoyMjh9XSw2MTc6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUpe3Jl dHVybiJwZXJjZW50Ij09PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJz KHQqZS8xMDApfToiY29uc3RhbnQiPT09dD9mdW5jdGlvbigpe3JldHVybiBN YXRoLmFicyhlKX06InNxcnQiPT09dD9mdW5jdGlvbih0KXtyZXR1cm4gTWF0 aC5zcXJ0KE1hdGguYWJzKHQpKX06dm9pZCAwfWUuZXhwb3J0cz1mdW5jdGlv bih0KXt2YXIgZT10LnR5cGUscj10LnN5bW1ldHJpYztpZigiZGF0YSI9PT1l KXt2YXIgYT10LmFycmF5fHxbXTtpZihyKXJldHVybiBmdW5jdGlvbih0LGUp e3ZhciByPSthW2VdO3JldHVybltyLHJdfTt2YXIgaT10LmFycmF5bWludXN8 fFtdO3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPSthW2VdLG49K2lbZV07 cmV0dXJuIGlzTmFOKHIpJiZpc05hTihuKT9bTmFOLE5hTl06W258fDAscnx8 MF19fXZhciBvPW4oZSx0LnZhbHVlKSxzPW4oZSx0LnZhbHVlbWludXMpO3Jl dHVybiByfHx2b2lkIDA9PT10LnZhbHVlbWludXM/ZnVuY3Rpb24odCl7dmFy IGU9byh0KTtyZXR1cm5bZSxlXX06ZnVuY3Rpb24odCl7cmV0dXJuW3ModCks byh0KV19fX0se31dLDYxODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vcmVnaXN0 cnkiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vcGxvdF9hcGkvcGxv dF90ZW1wbGF0ZSIpLHM9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyLGwpe3ZhciBjPSJlcnJvcl8iK2wuYXhpcyx1PW8ubmV3 Q29udGFpbmVyKGUsYyksaD10W2NdfHx7fTtmdW5jdGlvbiBmKHQsZSl7cmV0 dXJuIGkuY29lcmNlKGgsdSxzLHQsZSl9aWYoITEhPT1mKCJ2aXNpYmxlIix2 b2lkIDAhPT1oLmFycmF5fHx2b2lkIDAhPT1oLnZhbHVlfHwic3FydCI9PT1o LnR5cGUpKXt2YXIgcD1mKCJ0eXBlIiwiYXJyYXkiaW4gaD8iZGF0YSI6InBl cmNlbnQiKSxkPSEwOyJzcXJ0IiE9PXAmJihkPWYoInN5bW1ldHJpYyIsISgo ImRhdGEiPT09cD8iYXJyYXltaW51cyI6InZhbHVlbWludXMiKWluIGgpKSks ImRhdGEiPT09cD8oZigiYXJyYXkiKSxmKCJ0cmFjZXJlZiIpLGR8fChmKCJh cnJheW1pbnVzIiksZigidHJhY2VyZWZtaW51cyIpKSk6InBlcmNlbnQiIT09 cCYmImNvbnN0YW50IiE9PXB8fChmKCJ2YWx1ZSIpLGR8fGYoInZhbHVlbWlu dXMiKSk7dmFyIGc9ImNvcHlfIitsLmluaGVyaXQrInN0eWxlIjtpZihsLmlu aGVyaXQpKGVbImVycm9yXyIrbC5pbmhlcml0XXx8e30pLnZpc2libGUmJmYo ZywhKGguY29sb3J8fG4oaC50aGlja25lc3MpfHxuKGgud2lkdGgpKSk7bC5p bmhlcml0JiZ1W2ddfHwoZigiY29sb3IiLHIpLGYoInRoaWNrbmVzcyIpLGYo IndpZHRoIixhLnRyYWNlSXMoZSwiZ2wzZCIpPzA6NCkpfX19LHsiLi4vLi4v bGliIjo3MTcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwi Li4vLi4vcmVnaXN0cnkiOjg0NiwiLi9hdHRyaWJ1dGVzIjo2MTUsImZhc3Qt aXNudW1lcmljIjoyMjh9XSw2MTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90X2Fw aS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsaT10KCIuL2F0dHJpYnV0ZXMi KSxvPXtlcnJvcl94Om4uZXh0ZW5kRmxhdCh7fSxpKSxlcnJvcl95Om4uZXh0 ZW5kRmxhdCh7fSxpKX07ZGVsZXRlIG8uZXJyb3JfeC5jb3B5X3pzdHlsZSxk ZWxldGUgby5lcnJvcl95LmNvcHlfenN0eWxlLGRlbGV0ZSBvLmVycm9yX3ku Y29weV95c3R5bGU7dmFyIHM9e2Vycm9yX3g6bi5leHRlbmRGbGF0KHt9LGkp LGVycm9yX3k6bi5leHRlbmRGbGF0KHt9LGkpLGVycm9yX3o6bi5leHRlbmRG bGF0KHt9LGkpfTtkZWxldGUgcy5lcnJvcl94LmNvcHlfeXN0eWxlLGRlbGV0 ZSBzLmVycm9yX3kuY29weV95c3R5bGUsZGVsZXRlIHMuZXJyb3Jfei5jb3B5 X3lzdHlsZSxkZWxldGUgcy5lcnJvcl96LmNvcHlfenN0eWxlLGUuZXhwb3J0 cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJlcnJvcmJhcnMiLHNj aGVtYTp7dHJhY2VzOntzY2F0dGVyOm8sYmFyOm8saGlzdG9ncmFtOm8sc2Nh dHRlcjNkOmEocywiY2FsYyIsIm5lc3RlZCIpLHNjYXR0ZXJnbDphKG8sImNh bGMiLCJuZXN0ZWQiKX19LHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMi KSxjYWxjOnQoIi4vY2FsYyIpLG1ha2VDb21wdXRlRXJyb3I6dCgiLi9jb21w dXRlX2Vycm9yIikscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0eWxl IiksaG92ZXJJbmZvOmZ1bmN0aW9uKHQsZSxyKXsoZS5lcnJvcl95fHx7fSku dmlzaWJsZSYmKHIueWVycj10LnloLXQueSxlLmVycm9yX3kuc3ltbWV0cmlj fHwoci55ZXJybmVnPXQueS10LnlzKSk7KGUuZXJyb3JfeHx8e30pLnZpc2li bGUmJihyLnhlcnI9dC54aC10LngsZS5lcnJvcl94LnN5bW1ldHJpY3x8KHIu eGVycm5lZz10LngtdC54cykpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4u L3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi9hdHRyaWJ1dGVzIjo2MTUs Ii4vY2FsYyI6NjE2LCIuL2NvbXB1dGVfZXJyb3IiOjYxNywiLi9kZWZhdWx0 cyI6NjE4LCIuL3Bsb3QiOjYyMCwiLi9zdHlsZSI6NjIxfV0sNjIwOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJm YXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vZHJhd2luZyIpLG89dCgiLi4vLi4v dHJhY2VzL3NjYXR0ZXIvc3VidHlwZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIscyl7dmFyIGw9ci54YXhpcyxjPXIueWF4aXMsdT1zJiZzLmR1cmF0 aW9uPjA7ZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBoLGY9ZVswXS50cmFjZSxw PWYuZXJyb3JfeHx8e30sZD1mLmVycm9yX3l8fHt9O2YuaWRzJiYoaD1mdW5j dGlvbih0KXtyZXR1cm4gdC5pZH0pO3ZhciBnPW8uaGFzTWFya2VycyhmKSYm Zi5tYXJrZXIubWF4ZGlzcGxheWVkPjA7ZC52aXNpYmxlfHxwLnZpc2libGV8 fChlPVtdKTt2YXIgdj1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuZXJy b3JiYXIiKS5kYXRhKGUsaCk7aWYodi5leGl0KCkucmVtb3ZlKCksZS5sZW5n dGgpe3AudmlzaWJsZXx8di5zZWxlY3RBbGwoInBhdGgueGVycm9yIikucmVt b3ZlKCksZC52aXNpYmxlfHx2LnNlbGVjdEFsbCgicGF0aC55ZXJyb3IiKS5y ZW1vdmUoKSx2LnN0eWxlKCJvcGFjaXR5IiwxKTt2YXIgbT12LmVudGVyKCku YXBwZW5kKCJnIikuY2xhc3NlZCgiZXJyb3JiYXIiLCEwKTt1JiZtLnN0eWxl KCJvcGFjaXR5IiwwKS50cmFuc2l0aW9uKCkuZHVyYXRpb24ocy5kdXJhdGlv bikuc3R5bGUoIm9wYWNpdHkiLDEpLGkuc2V0Q2xpcFVybCh2LHIubGF5ZXJD bGlwSWQsdCksdi5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRo aXMpLHI9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXt4OmUuYzJwKHQueCkseTpy LmMycCh0LnkpfTt2b2lkIDAhPT10LnloJiYobi55aD1yLmMycCh0LnloKSxu LnlzPXIuYzJwKHQueXMpLGEobi55cyl8fChuLm5vWVM9ITAsbi55cz1yLmMy cCh0LnlzLCEwKSkpO3ZvaWQgMCE9PXQueGgmJihuLnhoPWUuYzJwKHQueGgp LG4ueHM9ZS5jMnAodC54cyksYShuLnhzKXx8KG4ubm9YUz0hMCxuLnhzPWUu YzJwKHQueHMsITApKSk7cmV0dXJuIG59KHQsbCxjKTtpZighZ3x8dC52aXMp e3ZhciBpLG89ZS5zZWxlY3QoInBhdGgueWVycm9yIik7aWYoZC52aXNpYmxl JiZhKHIueCkmJmEoci55aCkmJmEoci55cykpe3ZhciBoPWQud2lkdGg7aT0i TSIrKHIueC1oKSsiLCIrci55aCsiaCIrMipoKyJtLSIraCsiLDBWIityLnlz LHIubm9ZU3x8KGkrPSJtLSIraCsiLDBoIisyKmgpLCFvLnNpemUoKT9vPWUu YXBwZW5kKCJwYXRoIikuc3R5bGUoInZlY3Rvci1lZmZlY3QiLCJub24tc2Nh bGluZy1zdHJva2UiKS5jbGFzc2VkKCJ5ZXJyb3IiLCEwKTp1JiYobz1vLnRy YW5zaXRpb24oKS5kdXJhdGlvbihzLmR1cmF0aW9uKS5lYXNlKHMuZWFzaW5n KSksby5hdHRyKCJkIixpKX1lbHNlIG8ucmVtb3ZlKCk7dmFyIGY9ZS5zZWxl Y3QoInBhdGgueGVycm9yIik7aWYocC52aXNpYmxlJiZhKHIueSkmJmEoci54 aCkmJmEoci54cykpe3ZhciB2PShwLmNvcHlfeXN0eWxlP2Q6cCkud2lkdGg7 aT0iTSIrci54aCsiLCIrKHIueS12KSsidiIrMip2KyJtMCwtIit2KyJIIity LnhzLHIubm9YU3x8KGkrPSJtMCwtIit2KyJ2IisyKnYpLCFmLnNpemUoKT9m PWUuYXBwZW5kKCJwYXRoIikuc3R5bGUoInZlY3Rvci1lZmZlY3QiLCJub24t c2NhbGluZy1zdHJva2UiKS5jbGFzc2VkKCJ4ZXJyb3IiLCEwKTp1JiYoZj1m LnRyYW5zaXRpb24oKS5kdXJhdGlvbihzLmR1cmF0aW9uKS5lYXNlKHMuZWFz aW5nKSksZi5hdHRyKCJkIixpKX1lbHNlIGYucmVtb3ZlKCl9fSl9fSl9fSx7 Ii4uLy4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0LCIuLi9kcmF3 aW5nIjo2MTMsZDM6MTY1LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sNjIxOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10 KCIuLi9jb2xvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt0LmVhY2goZnVu Y3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxyPWUuZXJyb3JfeXx8e30saT1l LmVycm9yX3h8fHt9LG89bi5zZWxlY3QodGhpcyk7by5zZWxlY3RBbGwoInBh dGgueWVycm9yIikuc3R5bGUoInN0cm9rZS13aWR0aCIsci50aGlja25lc3Mr InB4IikuY2FsbChhLnN0cm9rZSxyLmNvbG9yKSxpLmNvcHlfeXN0eWxlJiYo aT1yKSxvLnNlbGVjdEFsbCgicGF0aC54ZXJyb3IiKS5zdHlsZSgic3Ryb2tl LXdpZHRoIixpLnRoaWNrbmVzcysicHgiKS5jYWxsKGEuc3Ryb2tlLGkuY29s b3IpfSl9fSx7Ii4uL2NvbG9yIjo1OTIsZDM6MTY1fV0sNjIyOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2Zv bnRfYXR0cmlidXRlcyIpLGE9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLmhv dmVybGFiZWwsaT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtl LmV4cG9ydHM9e2hvdmVybGFiZWw6e2JnY29sb3I6aSh7fSxhLmJnY29sb3Is e2FycmF5T2s6ITB9KSxib3JkZXJjb2xvcjppKHt9LGEuYm9yZGVyY29sb3Is e2FycmF5T2s6ITB9KSxmb250Om4oe2FycmF5T2s6ITAsZWRpdFR5cGU6Im5v bmUifSksYWxpZ246aSh7fSxhLmFsaWduLHthcnJheU9rOiEwfSksbmFtZWxl bmd0aDppKHt9LGEubmFtZWxlbmd0aCx7YXJyYXlPazohMH0pLGVkaXRUeXBl OiJub25lIn19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxv dHMvZm9udF9hdHRyaWJ1dGVzIjo3OTEsIi4vbGF5b3V0X2F0dHJpYnV0ZXMi OjYzMX1dLDYyMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3JlZ2lzdHJ5Iik7ZnVuY3Rp b24gaSh0LGUscixhKXthPWF8fG4uaWRlbnRpdHksQXJyYXkuaXNBcnJheSh0 KSYmKGVbMF1bcl09YSh0KSl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBl PXQuY2FsY2RhdGEscj10Ll9mdWxsTGF5b3V0O2Z1bmN0aW9uIG8odCl7cmV0 dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBuLmNvZXJjZUhvdmVyaW5mbyh7aG92 ZXJpbmZvOmV9LHtfbW9kdWxlOnQuX21vZHVsZX0scil9fWZvcih2YXIgcz0w O3M8ZS5sZW5ndGg7cysrKXt2YXIgbD1lW3NdLGM9bFswXS50cmFjZTtpZigh YS50cmFjZUlzKGMsInBpZS1saWtlIikpe3ZhciB1PWEudHJhY2VJcyhjLCIy ZE1hcCIpP2k6bi5maWxsQXJyYXk7dShjLmhvdmVyaW5mbyxsLCJoaSIsbyhj KSksYy5ob3ZlcnRlbXBsYXRlJiZ1KGMuaG92ZXJ0ZW1wbGF0ZSxsLCJodCIp LGMuaG92ZXJsYWJlbCYmKHUoYy5ob3ZlcmxhYmVsLmJnY29sb3IsbCwiaGJn IiksdShjLmhvdmVybGFiZWwuYm9yZGVyY29sb3IsbCwiaGJjIiksdShjLmhv dmVybGFiZWwuZm9udC5zaXplLGwsImh0cyIpLHUoYy5ob3ZlcmxhYmVsLmZv bnQuY29sb3IsbCwiaHRjIiksdShjLmhvdmVybGFiZWwuZm9udC5mYW1pbHks bCwiaHRmIiksdShjLmhvdmVybGFiZWwubmFtZWxlbmd0aCxsLCJobmwiKSx1 KGMuaG92ZXJsYWJlbC5hbGlnbixsLCJodGEiKSl9fX19LHsiLi4vLi4vbGli Ijo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDZ9XSw2MjQ6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxh PXQoIi4vaG92ZXIiKS5ob3ZlcjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIp e3ZhciBpPW4uZ2V0Q29tcG9uZW50TWV0aG9kKCJhbm5vdGF0aW9ucyIsIm9u Q2xpY2siKSh0LHQuX2hvdmVyZGF0YSk7ZnVuY3Rpb24gbygpe3QuZW1pdCgi cGxvdGx5X2NsaWNrIix7cG9pbnRzOnQuX2hvdmVyZGF0YSxldmVudDplfSl9 dm9pZCAwIT09ciYmYSh0LGUsciwhMCksdC5faG92ZXJkYXRhJiZlJiZlLnRh cmdldCYmKGkmJmkudGhlbj9pLnRoZW4obyk6bygpLGUuc3RvcEltbWVkaWF0 ZVByb3BhZ2F0aW9uJiZlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX19 LHsiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9ob3ZlciI6NjI4fV0sNjI1Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17WUFOR0xF OjYwLEhPVkVSQVJST1dTSVpFOjYsSE9WRVJURVhUUEFEOjMsSE9WRVJGT05U U0laRToxMyxIT1ZFUkZPTlQ6IkFyaWFsLCBzYW5zLXNlcmlmIixIT1ZFUk1J TlRJTUU6NTAsSE9WRVJJRDoiLWhvdmVyIn19LHt9XSw2MjY6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10 KCIuL2F0dHJpYnV0ZXMiKSxpPXQoIi4vaG92ZXJsYWJlbF9kZWZhdWx0cyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXt2YXIgcz1uLmV4dGVuZEZs YXQoe30sby5ob3ZlcmxhYmVsKTtlLmhvdmVydGVtcGxhdGUmJihzLm5hbWVs ZW5ndGg9LTEpLGkodCxlLGZ1bmN0aW9uKHIsaSl7cmV0dXJuIG4uY29lcmNl KHQsZSxhLHIsaSl9LHMpfX0seyIuLi8uLi9saWIiOjcxNywiLi9hdHRyaWJ1 dGVzIjo2MjIsIi4vaG92ZXJsYWJlbF9kZWZhdWx0cyI6NjI5fV0sNjI3Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp YiIpO3IuZ2V0U3VicGxvdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zdWJwbG90 fHx0LnhheGlzK3QueWF4aXN8fHQuZ2VvfSxyLmlzVHJhY2VJblN1YnBsb3Rz PWZ1bmN0aW9uKHQsZSl7aWYoInNwbG9tIj09PXQudHlwZSl7Zm9yKHZhciBu PXQueGF4ZXN8fFtdLGE9dC55YXhlc3x8W10saT0wO2k8bi5sZW5ndGg7aSsr KWZvcih2YXIgbz0wO288YS5sZW5ndGg7bysrKWlmKC0xIT09ZS5pbmRleE9m KG5baV0rYVtvXSkpcmV0dXJuITA7cmV0dXJuITF9cmV0dXJuLTEhPT1lLmlu ZGV4T2Yoci5nZXRTdWJwbG90KHQpKX0sci5mbGF0PWZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByPW5ldyBBcnJheSh0Lmxlbmd0aCksbj0wO248dC5sZW5ndGg7 bisrKXJbbl09ZTtyZXR1cm4gcn0sci5wMmM9ZnVuY3Rpb24odCxlKXtmb3Io dmFyIHI9bmV3IEFycmF5KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKysp cltuXT10W25dLnAyYyhlKTtyZXR1cm4gcn0sci5nZXREaXN0YW5jZUZ1bmN0 aW9uPWZ1bmN0aW9uKHQsZSxuLGEpe3JldHVybiJjbG9zZXN0Ij09PXQ/YXx8 ci5xdWFkcmF0dXJlKGUsbik6IngiPT09dD9lOm59LHIuZ2V0Q2xvc2VzdD1m dW5jdGlvbih0LGUscil7aWYoITEhPT1yLmluZGV4KXIuaW5kZXg+PTAmJnIu aW5kZXg8dC5sZW5ndGg/ci5kaXN0YW5jZT0wOnIuaW5kZXg9ITE7ZWxzZSBm b3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGE9ZSh0W25dKTthPD1y LmRpc3RhbmNlJiYoci5pbmRleD1uLHIuZGlzdGFuY2U9YSl9cmV0dXJuIHJ9 LHIuaW5ib3g9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0KmU8MHx8MD09PXQ/ cjoxLzB9LHIucXVhZHJhdHVyZT1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5j dGlvbihyKXt2YXIgbj10KHIpLGE9ZShyKTtyZXR1cm4gTWF0aC5zcXJ0KG4q bithKmEpfX0sci5tYWtlRXZlbnREYXRhPWZ1bmN0aW9uKHQsZSxuKXt2YXIg YT0iaW5kZXgiaW4gdD90LmluZGV4OnQucG9pbnROdW1iZXIsaT17ZGF0YTpl Ll9pbnB1dCxmdWxsRGF0YTplLGN1cnZlTnVtYmVyOmUuaW5kZXgscG9pbnRO dW1iZXI6YX07aWYoZS5faW5kZXhUb1BvaW50cyl7dmFyIG89ZS5faW5kZXhU b1BvaW50c1thXTsxPT09by5sZW5ndGg/aS5wb2ludEluZGV4PW9bMF06aS5w b2ludEluZGljZXM9b31lbHNlIGkucG9pbnRJbmRleD1hO3JldHVybiBlLl9t b2R1bGUuZXZlbnREYXRhP2k9ZS5fbW9kdWxlLmV2ZW50RGF0YShpLHQsZSxu LGEpOigieFZhbCJpbiB0P2kueD10LnhWYWw6IngiaW4gdCYmKGkueD10Lngp LCJ5VmFsImluIHQ/aS55PXQueVZhbDoieSJpbiB0JiYoaS55PXQueSksdC54 YSYmKGkueGF4aXM9dC54YSksdC55YSYmKGkueWF4aXM9dC55YSksdm9pZCAw IT09dC56TGFiZWxWYWwmJihpLno9dC56TGFiZWxWYWwpKSxyLmFwcGVuZEFy cmF5UG9pbnRWYWx1ZShpLGUsYSksaX0sci5hcHBlbmRBcnJheVBvaW50VmFs dWU9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPWUuX2FycmF5QXR0cnM7aWYoYSlm b3IodmFyIHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGw9YVtzXSxjPWkobCk7 aWYodm9pZCAwPT09dFtjXSl7dmFyIHU9byhuLm5lc3RlZFByb3BlcnR5KGUs bCkuZ2V0KCkscik7dm9pZCAwIT09dSYmKHRbY109dSl9fX0sci5hcHBlbmRB cnJheU11bHRpUG9pbnRWYWx1ZXM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPWUu X2FycmF5QXR0cnM7aWYoYSlmb3IodmFyIHM9MDtzPGEubGVuZ3RoO3MrKyl7 dmFyIGw9YVtzXSxjPWkobCk7aWYodm9pZCAwPT09dFtjXSl7Zm9yKHZhciB1 PW4ubmVzdGVkUHJvcGVydHkoZSxsKS5nZXQoKSxoPW5ldyBBcnJheShyLmxl bmd0aCksZj0wO2Y8ci5sZW5ndGg7ZisrKWhbZl09byh1LHJbZl0pO3RbY109 aH19fTt2YXIgYT17aWRzOiJpZCIsbG9jYXRpb25zOiJsb2NhdGlvbiIsbGFi ZWxzOiJsYWJlbCIsdmFsdWVzOiJ2YWx1ZSIsIm1hcmtlci5jb2xvcnMiOiJj b2xvciIscGFyZW50czoicGFyZW50In07ZnVuY3Rpb24gaSh0KXtyZXR1cm4g YVt0XXx8dH1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXko ZSk/QXJyYXkuaXNBcnJheSh0KSYmQXJyYXkuaXNBcnJheSh0W2VbMF1dKT90 W2VbMF1dW2VbMV1dOnZvaWQgMDp0W2VdfX0seyIuLi8uLi9saWIiOjcxN31d LDYyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJk MyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoInRpbnljb2xvcjIiKSxv PXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vLi4vbGliL2V2ZW50cyIpLGw9dCgi Li4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksYz10KCIuLi8uLi9saWIvb3Zl cnJpZGVfY3Vyc29yIiksdT10KCIuLi9kcmF3aW5nIiksaD10KCIuLi9jb2xv ciIpLGY9dCgiLi4vZHJhZ2VsZW1lbnQiKSxwPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIiksZD10KCIuLi8uLi9yZWdpc3RyeSIpLGc9dCgiLi9o ZWxwZXJzIiksdj10KCIuL2NvbnN0YW50cyIpLG09di5ZQU5HTEUseT1NYXRo LlBJKm0vMTgwLHg9MS9NYXRoLnNpbih5KSxiPU1hdGguY29zKHkpLF89TWF0 aC5zaW4oeSksdz12LkhPVkVSQVJST1dTSVpFLGs9di5IT1ZFUlRFWFRQQUQ7 ci5ob3Zlcj1mdW5jdGlvbih0LGUscixpKXt0PW8uZ2V0R3JhcGhEaXYodCks by50aHJvdHRsZSh0Ll9mdWxsTGF5b3V0Ll91aWQrdi5IT1ZFUklELHYuSE9W RVJNSU5USU1FLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQsZSxyLGkpe3J8fChy PSJ4eSIpO3ZhciBsPUFycmF5LmlzQXJyYXkocik/cjpbcl0sdT10Ll9mdWxs TGF5b3V0LHA9dS5fcGxvdHN8fFtdLHY9cFtyXSxtPXUuX2hhcygiY2FydGVz aWFuIik7aWYodil7dmFyIHk9di5vdmVybGF5cy5tYXAoZnVuY3Rpb24odCl7 cmV0dXJuIHQuaWR9KTtsPWwuY29uY2F0KHkpfWZvcih2YXIgYj1sLmxlbmd0 aCxfPW5ldyBBcnJheShiKSx3PW5ldyBBcnJheShiKSxrPSExLFQ9MDtUPGI7 VCsrKXt2YXIgQz1sW1RdO2lmKHBbQ10paz0hMCxfW1RdPXBbQ10ueGF4aXMs d1tUXT1wW0NdLnlheGlzO2Vsc2V7aWYoIXVbQ118fCF1W0NdLl9zdWJwbG90 KXJldHVybiB2b2lkIG8ud2FybigiVW5yZWNvZ25pemVkIHN1YnBsb3Q6ICIr Qyk7dmFyIFA9dVtDXS5fc3VicGxvdDtfW1RdPVAueGF4aXMsd1tUXT1QLnlh eGlzfX12YXIgTz1lLmhvdmVybW9kZXx8dS5ob3Zlcm1vZGU7TyYmIWsmJihP PSJjbG9zZXN0Iik7aWYoLTE9PT1bIngiLCJ5IiwiY2xvc2VzdCJdLmluZGV4 T2YoTyl8fCF0LmNhbGNkYXRhfHx0LnF1ZXJ5U2VsZWN0b3IoIi56b29tYm94 Iil8fHQuX2RyYWdnaW5nKXJldHVybiBmLnVuaG92ZXJSYXcodCxlKTt2YXIg eixJLEQsUixGLEIsTixqLFYsVSxxLEgsRyxZPS0xPT09dS5ob3ZlcmRpc3Rh bmNlPzEvMDp1LmhvdmVyZGlzdGFuY2UsVz0tMT09PXUuc3Bpa2VkaXN0YW5j ZT8xLzA6dS5zcGlrZWRpc3RhbmNlLFg9W10sWj1bXSxKPXtoTGluZVBvaW50 Om51bGwsdkxpbmVQb2ludDpudWxsfSxLPSExO2lmKEFycmF5LmlzQXJyYXko ZSkpZm9yKE89ImFycmF5IixEPTA7RDxlLmxlbmd0aDtEKyspKEY9dC5jYWxj ZGF0YVtlW0RdLmN1cnZlTnVtYmVyfHwwXSkmJihCPUZbMF0udHJhY2UsInNr aXAiIT09RlswXS50cmFjZS5ob3ZlcmluZm8mJihaLnB1c2goRiksImgiPT09 Qi5vcmllbnRhdGlvbiYmKEs9ITApKSk7ZWxzZXtmb3IoUj0wO1I8dC5jYWxj ZGF0YS5sZW5ndGg7UisrKUY9dC5jYWxjZGF0YVtSXSwic2tpcCIhPT0oQj1G WzBdLnRyYWNlKS5ob3ZlcmluZm8mJmcuaXNUcmFjZUluU3VicGxvdHMoQixs KSYmKFoucHVzaChGKSwiaCI9PT1CLm9yaWVudGF0aW9uJiYoSz0hMCkpO3Zh ciBRLCQsdHQ9IWUudGFyZ2V0O2lmKHR0KVE9InhweCJpbiBlP2UueHB4Ol9b MF0uX2xlbmd0aC8yLCQ9InlweCJpbiBlP2UueXB4OndbMF0uX2xlbmd0aC8y O2Vsc2V7aWYoITE9PT1zLnRyaWdnZXJIYW5kbGVyKHQsInBsb3RseV9iZWZv cmVob3ZlciIsZSkpcmV0dXJuO3ZhciBldD1lLnRhcmdldC5nZXRCb3VuZGlu Z0NsaWVudFJlY3QoKTtpZihRPWUuY2xpZW50WC1ldC5sZWZ0LCQ9ZS5jbGll bnRZLWV0LnRvcCxRPDB8fFE+X1swXS5fbGVuZ3RofHwkPDB8fCQ+d1swXS5f bGVuZ3RoKXJldHVybiBmLnVuaG92ZXJSYXcodCxlKX1pZihlLnBvaW50ZXJY PVErX1swXS5fb2Zmc2V0LGUucG9pbnRlclk9JCt3WzBdLl9vZmZzZXQsej0i eHZhbCJpbiBlP2cuZmxhdChsLGUueHZhbCk6Zy5wMmMoXyxRKSxJPSJ5dmFs ImluIGU/Zy5mbGF0KGwsZS55dmFsKTpnLnAyYyh3LCQpLCFhKHpbMF0pfHwh YShJWzBdKSlyZXR1cm4gby53YXJuKCJGeC5ob3ZlciBmYWlsZWQiLGUsdCks Zi51bmhvdmVyUmF3KHQsZSl9dmFyIHJ0PTEvMDtmb3IoUj0wO1I8Wi5sZW5n dGg7UisrKWlmKChGPVpbUl0pJiZGWzBdJiZGWzBdLnRyYWNlJiYhMD09PShC PUZbMF0udHJhY2UpLnZpc2libGUmJjAhPT1CLl9sZW5ndGgmJi0xPT09WyJj YXJwZXQiLCJjb250b3VyY2FycGV0Il0uaW5kZXhPZihCLl9tb2R1bGUubmFt ZSkpe2lmKCJzcGxvbSI9PT1CLnR5cGU/Tj1sW2o9MF06KE49Zy5nZXRTdWJw bG90KEIpLGo9bC5pbmRleE9mKE4pKSxWPU8sSD17Y2Q6Rix0cmFjZTpCLHhh Ol9bal0seWE6d1tqXSxtYXhIb3ZlckRpc3RhbmNlOlksbWF4U3Bpa2VEaXN0 YW5jZTpXLGluZGV4OiExLGRpc3RhbmNlOk1hdGgubWluKHJ0LFkpLHNwaWtl RGlzdGFuY2U6MS8wLHhTcGlrZTp2b2lkIDAseVNwaWtlOnZvaWQgMCxjb2xv cjpoLmRlZmF1bHRMaW5lLG5hbWU6Qi5uYW1lLHgwOnZvaWQgMCx4MTp2b2lk IDAseTA6dm9pZCAwLHkxOnZvaWQgMCx4TGFiZWxWYWw6dm9pZCAwLHlMYWJl bFZhbDp2b2lkIDAsekxhYmVsVmFsOnZvaWQgMCx0ZXh0OnZvaWQgMH0sdVtO XSYmKEguc3VicGxvdD11W05dLl9zdWJwbG90KSx1Ll9zcGxvbVNjZW5lcyYm dS5fc3Bsb21TY2VuZXNbQi51aWRdJiYoSC5zY2VuZT11Ll9zcGxvbVNjZW5l c1tCLnVpZF0pLEc9WC5sZW5ndGgsImFycmF5Ij09PVYpe3ZhciBudD1lW1Jd OyJwb2ludE51bWJlciJpbiBudD8oSC5pbmRleD1udC5wb2ludE51bWJlcixW PSJjbG9zZXN0Iik6KFY9IiIsInh2YWwiaW4gbnQmJihVPW50Lnh2YWwsVj0i eCIpLCJ5dmFsImluIG50JiYocT1udC55dmFsLFY9Vj8iY2xvc2VzdCI6Inki KSl9ZWxzZSBVPXpbal0scT1JW2pdO2lmKDAhPT1ZKWlmKEIuX21vZHVsZSYm Qi5fbW9kdWxlLmhvdmVyUG9pbnRzKXt2YXIgYXQ9Qi5fbW9kdWxlLmhvdmVy UG9pbnRzKEgsVSxxLFYsdS5faG92ZXJsYXllcik7aWYoYXQpZm9yKHZhciBp dCxvdD0wO290PGF0Lmxlbmd0aDtvdCsrKWl0PWF0W290XSxhKGl0LngwKSYm YShpdC55MCkmJlgucHVzaChTKGl0LE8pKX1lbHNlIG8ubG9nKCJVbnJlY29n bml6ZWQgdHJhY2UgdHlwZSBpbiBob3ZlcjoiLEIpO2lmKCJjbG9zZXN0Ij09 PU8mJlgubGVuZ3RoPkcmJihYLnNwbGljZSgwLEcpLHJ0PVhbMF0uZGlzdGFu Y2UpLG0mJjAhPT1XJiYwPT09WC5sZW5ndGgpe0guZGlzdGFuY2U9VyxILmlu ZGV4PSExO3ZhciBzdD1CLl9tb2R1bGUuaG92ZXJQb2ludHMoSCxVLHEsImNs b3Nlc3QiLHUuX2hvdmVybGF5ZXIpO2lmKHN0JiYoc3Q9c3QuZmlsdGVyKGZ1 bmN0aW9uKHQpe3JldHVybiB0LnNwaWtlRGlzdGFuY2U8PVd9KSksc3QmJnN0 Lmxlbmd0aCl7dmFyIGx0LGN0PXN0LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1 cm4gdC54YS5zaG93c3Bpa2VzfSk7aWYoY3QubGVuZ3RoKXt2YXIgdXQ9Y3Rb MF07YSh1dC54MCkmJmEodXQueTApJiYobHQ9ZHQodXQpLCghSi52TGluZVBv aW50fHxKLnZMaW5lUG9pbnQuc3Bpa2VEaXN0YW5jZT5sdC5zcGlrZURpc3Rh bmNlKSYmKEoudkxpbmVQb2ludD1sdCkpfXZhciBodD1zdC5maWx0ZXIoZnVu Y3Rpb24odCl7cmV0dXJuIHQueWEuc2hvd3NwaWtlc30pO2lmKGh0Lmxlbmd0 aCl7dmFyIGZ0PWh0WzBdO2EoZnQueDApJiZhKGZ0LnkwKSYmKGx0PWR0KGZ0 KSwoIUouaExpbmVQb2ludHx8Si5oTGluZVBvaW50LnNwaWtlRGlzdGFuY2U+ bHQuc3Bpa2VEaXN0YW5jZSkmJihKLmhMaW5lUG9pbnQ9bHQpKX19fX1mdW5j dGlvbiBwdCh0LGUpe2Zvcih2YXIgcixuPW51bGwsYT0xLzAsaT0wO2k8dC5s ZW5ndGg7aSsrKShyPXRbaV0uc3Bpa2VEaXN0YW5jZSk8YSYmcjw9ZSYmKG49 dFtpXSxhPXIpO3JldHVybiBufWZ1bmN0aW9uIGR0KHQpe3JldHVybiB0P3t4 YTp0LnhhLHlhOnQueWEseDp2b2lkIDAhPT10LnhTcGlrZT90LnhTcGlrZToo dC54MCt0LngxKS8yLHk6dm9pZCAwIT09dC55U3Bpa2U/dC55U3Bpa2U6KHQu eTArdC55MSkvMixkaXN0YW5jZTp0LmRpc3RhbmNlLHNwaWtlRGlzdGFuY2U6 dC5zcGlrZURpc3RhbmNlLGN1cnZlTnVtYmVyOnQudHJhY2UuaW5kZXgsY29s b3I6dC5jb2xvcixwb2ludE51bWJlcjp0LmluZGV4fTpudWxsfXZhciBndD17 ZnVsbExheW91dDp1LGNvbnRhaW5lcjp1Ll9ob3ZlcmxheWVyLG91dGVyQ29u dGFpbmVyOnUuX3BhcGVyZGl2LGV2ZW50OmV9LHZ0PXQuX3NwaWtlcG9pbnRz LG10PXt2TGluZVBvaW50OkoudkxpbmVQb2ludCxoTGluZVBvaW50OkouaExp bmVQb2ludH07aWYodC5fc3Bpa2Vwb2ludHM9bXQsbSYmMCE9PVcmJjAhPT1Y Lmxlbmd0aCl7dmFyIHl0PVguZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0 LnlhLnNob3dzcGlrZXN9KSx4dD1wdCh5dCxXKTtKLmhMaW5lUG9pbnQ9ZHQo eHQpO3ZhciBidD1YLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC54YS5z aG93c3Bpa2VzfSksX3Q9cHQoYnQsVyk7Si52TGluZVBvaW50PWR0KF90KX1p ZigwPT09WC5sZW5ndGgpe3ZhciB3dD1mLnVuaG92ZXJSYXcodCxlKTtyZXR1 cm4hbXx8bnVsbD09PUouaExpbmVQb2ludCYmbnVsbD09PUoudkxpbmVQb2lu dHx8TCh2dCkmJkUodCxKLGd0KSx3dH1tJiZMKHZ0KSYmRSh0LEosZ3QpO1gu c29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LmRpc3RhbmNlLWUuZGlzdGFu Y2V9KTt2YXIga3Q9dC5faG92ZXJkYXRhLFR0PVtdO2ZvcihEPTA7RDxYLmxl bmd0aDtEKyspe3ZhciBNdD1YW0RdLEF0PWcubWFrZUV2ZW50RGF0YShNdCxN dC50cmFjZSxNdC5jZCk7aWYoITEhPT1NdC5ob3ZlcnRlbXBsYXRlKXt2YXIg U3Q9ITE7TXQuY2RbTXQuaW5kZXhdJiZNdC5jZFtNdC5pbmRleF0uaHQmJihT dD1NdC5jZFtNdC5pbmRleF0uaHQpLE10LmhvdmVydGVtcGxhdGU9U3R8fE10 LnRyYWNlLmhvdmVydGVtcGxhdGV8fCExfU10LmV2ZW50RGF0YT1bQXRdLFR0 LnB1c2goQXQpfXQuX2hvdmVyZGF0YT1UdDt2YXIgRXQ9InkiPT09TyYmKFou bGVuZ3RoPjF8fFgubGVuZ3RoPjEpfHwiY2xvc2VzdCI9PT1PJiZLJiZYLmxl bmd0aD4xLEx0PWguY29tYmluZSh1LnBsb3RfYmdjb2xvcnx8aC5iYWNrZ3Jv dW5kLHUucGFwZXJfYmdjb2xvciksQ3Q9e2hvdmVybW9kZTpPLHJvdGF0ZUxh YmVsczpFdCxiZ0NvbG9yOkx0LGNvbnRhaW5lcjp1Ll9ob3ZlcmxheWVyLG91 dGVyQ29udGFpbmVyOnUuX3BhcGVyZGl2LGNvbW1vbkxhYmVsT3B0czp1Lmhv dmVybGFiZWwsaG92ZXJkaXN0YW5jZTp1LmhvdmVyZGlzdGFuY2V9LFB0PU0o WCxDdCx0KTtpZihmdW5jdGlvbih0LGUscil7dmFyIG4sYSxpLG8scyxsLGMs dT0wLGg9MSxmPXQuc2l6ZSgpLHA9bmV3IEFycmF5KGYpLGQ9MDtmdW5jdGlv biBnKHQpe3ZhciBlPXRbMF0scj10W3QubGVuZ3RoLTFdO2lmKGE9ZS5wbWlu LWUucG9zLWUuZHArZS5zaXplLGk9ci5wb3Mrci5kcCtyLnNpemUtZS5wbWF4 LGE+LjAxKXtmb3Iocz10Lmxlbmd0aC0xO3M+PTA7cy0tKXRbc10uZHArPWE7 bj0hMX1pZighKGk8LjAxKSl7aWYoYTwtLjAxKXtmb3Iocz10Lmxlbmd0aC0x O3M+PTA7cy0tKXRbc10uZHAtPWk7bj0hMX1pZihuKXt2YXIgYz0wO2Zvcihv PTA7bzx0Lmxlbmd0aDtvKyspKGw9dFtvXSkucG9zK2wuZHArbC5zaXplPmUu cG1heCYmYysrO2ZvcihvPXQubGVuZ3RoLTE7bz49MCYmIShjPD0wKTtvLS0p KGw9dFtvXSkucG9zPmUucG1heC0xJiYobC5kZWw9ITAsYy0tKTtmb3Iobz0w O288dC5sZW5ndGgmJiEoYzw9MCk7bysrKWlmKChsPXRbb10pLnBvczxlLnBt aW4rMSlmb3IobC5kZWw9ITAsYy0tLGk9MipsLnNpemUscz10Lmxlbmd0aC0x O3M+PTA7cy0tKXRbc10uZHAtPWk7Zm9yKG89dC5sZW5ndGgtMTtvPj0wJiYh KGM8PTApO28tLSkobD10W29dKS5wb3MrbC5kcCtsLnNpemU+ZS5wbWF4JiYo bC5kZWw9ITAsYy0tKX19fWZvcih0LmVhY2goZnVuY3Rpb24odCl7dmFyIG49 dFtlXSxhPSJ4Ij09PW4uX2lkLmNoYXJBdCgwKSxpPW4ucmFuZ2U7MD09PWQm JmkmJmlbMF0+aVsxXSE9PWEmJihoPS0xKSxwW2QrK109W3tkYXR1bTp0LHRy YWNlSW5kZXg6dC50cmFjZS5pbmRleCxkcDowLHBvczp0LnBvcyxwb3NyZWY6 dC5wb3NyZWYsc2l6ZTp0LmJ5KihhP3g6MSkvMixwbWluOjAscG1heDphP3Iu d2lkdGg6ci5oZWlnaHR9XX0pLHAuc29ydChmdW5jdGlvbih0LGUpe3JldHVy biB0WzBdLnBvc3JlZi1lWzBdLnBvc3JlZnx8aCooZVswXS50cmFjZUluZGV4 LXRbMF0udHJhY2VJbmRleCl9KTshbiYmdTw9Zjspe2Zvcih1Kyssbj0hMCxv PTA7bzxwLmxlbmd0aC0xOyl7dmFyIHY9cFtvXSxtPXBbbysxXSx5PXZbdi5s ZW5ndGgtMV0sYj1tWzBdO2lmKChhPXkucG9zK3kuZHAreS5zaXplLWIucG9z LWIuZHArYi5zaXplKT4uMDEmJnkucG1pbj09PWIucG1pbiYmeS5wbWF4PT09 Yi5wbWF4KXtmb3Iocz1tLmxlbmd0aC0xO3M+PTA7cy0tKW1bc10uZHArPWE7 Zm9yKHYucHVzaC5hcHBseSh2LG0pLHAuc3BsaWNlKG8rMSwxKSxjPTAscz12 Lmxlbmd0aC0xO3M+PTA7cy0tKWMrPXZbc10uZHA7Zm9yKGk9Yy92Lmxlbmd0 aCxzPXYubGVuZ3RoLTE7cz49MDtzLS0pdltzXS5kcC09aTtuPSExfWVsc2Ug bysrfXAuZm9yRWFjaChnKX1mb3Iobz1wLmxlbmd0aC0xO28+PTA7by0tKXt2 YXIgXz1wW29dO2ZvcihzPV8ubGVuZ3RoLTE7cz49MDtzLS0pe3ZhciB3PV9b c10saz13LmRhdHVtO2sub2Zmc2V0PXcuZHAsay5kZWw9dy5kZWx9fX0oUHQs RXQ/InhhIjoieWEiLHUpLEEoUHQsRXQpLGUudGFyZ2V0JiZlLnRhcmdldC50 YWdOYW1lKXt2YXIgT3Q9ZC5nZXRDb21wb25lbnRNZXRob2QoImFubm90YXRp b25zIiwiaGFzQ2xpY2tUb1Nob3ciKSh0LFR0KTtjKG4uc2VsZWN0KGUudGFy Z2V0KSxPdD8icG9pbnRlciI6IiIpfWlmKCFlLnRhcmdldHx8aXx8IWZ1bmN0 aW9uKHQsZSxyKXtpZighcnx8ci5sZW5ndGghPT10Ll9ob3ZlcmRhdGEubGVu Z3RoKXJldHVybiEwO2Zvcih2YXIgbj1yLmxlbmd0aC0xO24+PTA7bi0tKXt2 YXIgYT1yW25dLGk9dC5faG92ZXJkYXRhW25dO2lmKGEuY3VydmVOdW1iZXIh PT1pLmN1cnZlTnVtYmVyfHxTdHJpbmcoYS5wb2ludE51bWJlcikhPT1TdHJp bmcoaS5wb2ludE51bWJlcil8fFN0cmluZyhhLnBvaW50TnVtYmVycykhPT1T dHJpbmcoaS5wb2ludE51bWJlcnMpKXJldHVybiEwfXJldHVybiExfSh0LDAs a3QpKXJldHVybjtrdCYmdC5lbWl0KCJwbG90bHlfdW5ob3ZlciIse2V2ZW50 OmUscG9pbnRzOmt0fSk7dC5lbWl0KCJwbG90bHlfaG92ZXIiLHtldmVudDpl LHBvaW50czp0Ll9ob3ZlcmRhdGEseGF4ZXM6Xyx5YXhlczp3LHh2YWxzOnos eXZhbHM6SX0pfSh0LGUscixpKX0pfSxyLmxvbmVIb3Zlcj1mdW5jdGlvbih0 LGUpe3ZhciByPSEwO0FycmF5LmlzQXJyYXkodCl8fChyPSExLHQ9W3RdKTt2 YXIgYT10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm57Y29sb3I6dC5jb2xvcnx8 aC5kZWZhdWx0TGluZSx4MDp0LngwfHx0Lnh8fDAseDE6dC54MXx8dC54fHww LHkwOnQueTB8fHQueXx8MCx5MTp0LnkxfHx0Lnl8fDAseExhYmVsOnQueExh YmVsLHlMYWJlbDp0LnlMYWJlbCx6TGFiZWw6dC56TGFiZWwsdGV4dDp0LnRl eHQsbmFtZTp0Lm5hbWUsaWRlYWxBbGlnbjp0LmlkZWFsQWxpZ24sYm9yZGVy Q29sb3I6dC5ib3JkZXJDb2xvcixmb250RmFtaWx5OnQuZm9udEZhbWlseSxm b250U2l6ZTp0LmZvbnRTaXplLGZvbnRDb2xvcjp0LmZvbnRDb2xvcixuYW1l TGVuZ3RoOnQubmFtZUxlbmd0aCx0ZXh0QWxpZ246dC50ZXh0QWxpZ24sdHJh Y2U6dC50cmFjZXx8e2luZGV4OjAsaG92ZXJpbmZvOiIifSx4YTp7X29mZnNl dDowfSx5YTp7X29mZnNldDowfSxpbmRleDowLGhvdmVydGVtcGxhdGU6dC5o b3ZlcnRlbXBsYXRlfHwhMSxldmVudERhdGE6dC5ldmVudERhdGF8fCExLGhv dmVydGVtcGxhdGVMYWJlbHM6dC5ob3ZlcnRlbXBsYXRlTGFiZWxzfHwhMX19 KSxpPW4uc2VsZWN0KGUuY29udGFpbmVyKSxvPWUub3V0ZXJDb250YWluZXI/ bi5zZWxlY3QoZS5vdXRlckNvbnRhaW5lcik6aSxzPXtob3Zlcm1vZGU6ImNs b3Nlc3QiLHJvdGF0ZUxhYmVsczohMSxiZ0NvbG9yOmUuYmdDb2xvcnx8aC5i YWNrZ3JvdW5kLGNvbnRhaW5lcjppLG91dGVyQ29udGFpbmVyOm99LGw9TShh LHMsZS5nZCksYz0wLHU9MDtyZXR1cm4gbC5zb3J0KGZ1bmN0aW9uKHQsZSl7 cmV0dXJuIHQueTAtZS55MH0pLmVhY2goZnVuY3Rpb24odCxyKXt2YXIgbj10 LnkwLXQuYnkvMjt0Lm9mZnNldD1uLTU8Yz9jLW4rNTowLGM9bit0LmJ5K3Qu b2Zmc2V0LHI9PT1lLmFuY2hvckluZGV4JiYodT10Lm9mZnNldCl9KS5lYWNo KGZ1bmN0aW9uKHQpe3Qub2Zmc2V0LT11fSksQShsLHMucm90YXRlTGFiZWxz KSxyP2w6bC5ub2RlKCl9O3ZhciBUPS88ZXh0cmE+KFtcc1xTXSopPFwvZXh0 cmE+LztmdW5jdGlvbiBNKHQsZSxyKXt2YXIgYT1yLl9mdWxsTGF5b3V0LGk9 ZS5ob3Zlcm1vZGUscz1lLnJvdGF0ZUxhYmVscyxjPWUuYmdDb2xvcixmPWUu Y29udGFpbmVyLHA9ZS5vdXRlckNvbnRhaW5lcixkPWUuY29tbW9uTGFiZWxP cHRzfHx7fSxnPWUuZm9udEZhbWlseXx8di5IT1ZFUkZPTlQseT1lLmZvbnRT aXplfHx2LkhPVkVSRk9OVFNJWkUseD10WzBdLGI9eC54YSxfPXgueWEsTT0i eSI9PT1pPyJ5TGFiZWwiOiJ4TGFiZWwiLEE9eFtNXSxTPShTdHJpbmcoQSl8 fCIiKS5zcGxpdCgiICIpWzBdLEU9cC5ub2RlKCkuZ2V0Qm91bmRpbmdDbGll bnRSZWN0KCksTD1FLnRvcCxQPUUud2lkdGgsTz1FLmhlaWdodCx6PXZvaWQg MCE9PUEmJnguZGlzdGFuY2U8PWUuaG92ZXJkaXN0YW5jZSYmKCJ4Ij09PWl8 fCJ5Ij09PWkpO2lmKHope3ZhciBJLEQsUj0hMDtmb3IoST0wO0k8dC5sZW5n dGg7SSsrKWlmKFImJnZvaWQgMD09PXRbSV0uekxhYmVsJiYoUj0hMSksRD10 W0ldLmhvdmVyaW5mb3x8dFtJXS50cmFjZS5ob3ZlcmluZm8pe3ZhciBGPUFy cmF5LmlzQXJyYXkoRCk/RDpELnNwbGl0KCIrIik7aWYoLTE9PT1GLmluZGV4 T2YoImFsbCIpJiYtMT09PUYuaW5kZXhPZihpKSl7ej0hMTticmVha319UiYm KHo9ITEpfXZhciBCPWYuc2VsZWN0QWxsKCJnLmF4aXN0ZXh0IikuZGF0YSh6 P1swXTpbXSk7Qi5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImF4aXN0 ZXh0IiwhMCksQi5leGl0KCkucmVtb3ZlKCksQi5lYWNoKGZ1bmN0aW9uKCl7 dmFyIGU9bi5zZWxlY3QodGhpcykscz1vLmVuc3VyZVNpbmdsZShlLCJwYXRo IiwiIixmdW5jdGlvbih0KXt0LnN0eWxlKHsic3Ryb2tlLXdpZHRoIjoiMXB4 In0pfSksYz1vLmVuc3VyZVNpbmdsZShlLCJ0ZXh0IiwiIixmdW5jdGlvbih0 KXt0LmF0dHIoImRhdGEtbm90ZXgiLDEpfSksZj1kLmJnY29sb3J8fGguZGVm YXVsdExpbmUscD1kLmJvcmRlcmNvbG9yfHxoLmNvbnRyYXN0KGYpLHY9aC5j b250cmFzdChmKSxtPXtmYW1pbHk6ZC5mb250LmZhbWlseXx8ZyxzaXplOmQu Zm9udC5zaXplfHx5LGNvbG9yOmQuZm9udC5jb2xvcnx8dn07cy5zdHlsZSh7 ZmlsbDpmLHN0cm9rZTpwfSksYy50ZXh0KEEpLmNhbGwodS5mb250LG0pLmNh bGwobC5wb3NpdGlvblRleHQsMCwwKS5jYWxsKGwuY29udmVydFRvVHNwYW5z LHIpLGUuYXR0cigidHJhbnNmb3JtIiwiIik7dmFyIFQsRSxDPWMubm9kZSgp LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKCJ4Ij09PWkpe3ZhciBQPSJ0 b3AiPT09Yi5zaWRlPyItIjoiIjtjLmF0dHIoInRleHQtYW5jaG9yIiwibWlk ZGxlIikuY2FsbChsLnBvc2l0aW9uVGV4dCwwLCJ0b3AiPT09Yi5zaWRlP0wt Qy5ib3R0b20tdy1rOkwtQy50b3ArdytrKSxUPWIuX29mZnNldCsoeC54MCt4 LngxKS8yLEU9Xy5fb2Zmc2V0KygidG9wIj09PWIuc2lkZT8wOl8uX2xlbmd0 aCk7dmFyIE89Qy53aWR0aC8yK2s7VDxPPyhUPU8scy5hdHRyKCJkIiwiTS0i KyhPLXcpKyIsMEwtIisoTy0yKncpKyIsIitQK3crIkgiKyhrK0Mud2lkdGgv MikrInYiK1ArKDIqaytDLmhlaWdodCkrIkgtIitPKyJWIitQK3crIloiKSk6 VD5hLndpZHRoLU8/KFQ9YS53aWR0aC1PLHMuYXR0cigiZCIsIk0iKyhPLXcp KyIsMEwiK08rIiwiK1ArdysidiIrUCsoMiprK0MuaGVpZ2h0KSsiSC0iK08r IlYiK1ArdysiSCIrKE8tMip3KSsiWiIpKTpzLmF0dHIoImQiLCJNMCwwTCIr dysiLCIrUCt3KyJIIisoaytDLndpZHRoLzIpKyJ2IitQKygyKmsrQy5oZWln aHQpKyJILSIrKGsrQy53aWR0aC8yKSsiViIrUCt3KyJILSIrdysiWiIpfWVs c2V7dmFyIHosSSxEOyJyaWdodCI9PT1fLnNpZGU/KHo9InN0YXJ0IixJPTEs RD0iIixUPWIuX29mZnNldCtiLl9sZW5ndGgpOih6PSJlbmQiLEk9LTEsRD0i LSIsVD1iLl9vZmZzZXQpLEU9Xy5fb2Zmc2V0Kyh4LnkwK3gueTEpLzIsYy5h dHRyKCJ0ZXh0LWFuY2hvciIseikscy5hdHRyKCJkIiwiTTAsMEwiK0Qrdysi LCIrdysiViIrKGsrQy5oZWlnaHQvMikrImgiK0QrKDIqaytDLndpZHRoKSsi Vi0iKyhrK0MuaGVpZ2h0LzIpKyJIIitEK3crIlYtIit3KyJaIik7dmFyIFIs Rj1DLmhlaWdodC8yLEI9TC1DLnRvcC1GLE49ImNsaXAiK2EuX3VpZCsiY29t bW9ubGFiZWwiK18uX2lkO2lmKFQ8Qy53aWR0aCsyKmsrdyl7Uj0iTS0iKyh3 K2spKyItIitGKyJoLSIrKEMud2lkdGgtaykrIlYiK0YrImgiKyhDLndpZHRo LWspKyJaIjt2YXIgaj1DLndpZHRoLVQraztsLnBvc2l0aW9uVGV4dChjLGos QiksImVuZCI9PT16JiZjLnNlbGVjdEFsbCgidHNwYW4iKS5lYWNoKGZ1bmN0 aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyksZT11LnRlc3Rlci5hcHBlbmQo InRleHQiKS50ZXh0KHQudGV4dCgpKS5jYWxsKHUuZm9udCxtKSxyPWUubm9k ZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO01hdGgucm91bmQoci53aWR0 aCk8TWF0aC5yb3VuZChDLndpZHRoKSYmdC5hdHRyKCJ4IixqLXIud2lkdGgp LGUucmVtb3ZlKCl9KX1lbHNlIGwucG9zaXRpb25UZXh0KGMsSSooayt3KSxC KSxSPW51bGw7dmFyIFY9YS5fdG9wY2xpcHMuc2VsZWN0QWxsKCIjIitOKS5k YXRhKFI/WzBdOltdKTtWLmVudGVyKCkuYXBwZW5kKCJjbGlwUGF0aCIpLmF0 dHIoImlkIixOKS5hcHBlbmQoInBhdGgiKSxWLmV4aXQoKS5yZW1vdmUoKSxW LnNlbGVjdCgicGF0aCIpLmF0dHIoImQiLFIpLHUuc2V0Q2xpcFVybChjLFI/ TjpudWxsLHIpfWUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrVCsi LCIrRSsiKSIpLHQ9dC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQg MCE9PXQuekxhYmVsVmFsfHwodFtNXXx8IiIpLnNwbGl0KCIgIilbMF09PT1T fSl9KTt2YXIgTj1mLnNlbGVjdEFsbCgiZy5ob3ZlcnRleHQiKS5kYXRhKHQs ZnVuY3Rpb24odCl7cmV0dXJuW3QudHJhY2UuaW5kZXgsdC5pbmRleCx0Lngw LHQueTAsdC5uYW1lLHQuYXR0cix0LnhhLHQueWF8fCIiXS5qb2luKCIsIil9 KTtyZXR1cm4gTi5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImhvdmVy dGV4dCIsITApLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlz KTt0LmFwcGVuZCgicmVjdCIpLmNhbGwoaC5maWxsLGguYWRkT3BhY2l0eShj LC44KSksdC5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJuYW1lIiwhMCksdC5h cHBlbmQoInBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwiMXB4IiksdC5h cHBlbmQoInRleHQiKS5jbGFzc2VkKCJudW1zIiwhMCkuY2FsbCh1LmZvbnQs Zyx5KX0pLE4uZXhpdCgpLnJlbW92ZSgpLE4uZWFjaChmdW5jdGlvbih0KXt2 YXIgZT1uLnNlbGVjdCh0aGlzKS5hdHRyKCJ0cmFuc2Zvcm0iLCIiKSxmPSIi LHA9IiIsZD10LmJnY29sb3J8fHQuY29sb3Isdj1oLmNvbWJpbmUoaC5vcGFj aXR5KGQpP2Q6aC5kZWZhdWx0TGluZSxjKSx4PWguY29tYmluZShoLm9wYWNp dHkodC5jb2xvcik/dC5jb2xvcjpoLmRlZmF1bHRMaW5lLGMpLGI9dC5ib3Jk ZXJDb2xvcnx8aC5jb250cmFzdCh2KTt2b2lkIDAhPT10Lm5hbWVPdmVycmlk ZSYmKHQubmFtZT10Lm5hbWVPdmVycmlkZSksdC5uYW1lJiYodC50cmFjZS5f bWV0YSYmKHQubmFtZT1vLnRlbXBsYXRlU3RyaW5nKHQubmFtZSx0LnRyYWNl Ll9tZXRhKSksZj1DKHQubmFtZSx0Lm5hbWVMZW5ndGgpKSx2b2lkIDAhPT10 LnpMYWJlbD8odm9pZCAwIT09dC54TGFiZWwmJihwKz0ieDogIit0LnhMYWJl bCsiPGJyPiIpLHZvaWQgMCE9PXQueUxhYmVsJiYocCs9Ink6ICIrdC55TGFi ZWwrIjxicj4iKSwiY2hvcm9wbGV0aCIhPT10LnRyYWNlLnR5cGUmJiJjaG9y b3BsZXRobWFwYm94IiE9PXQudHJhY2UudHlwZSYmKHArPShwPyJ6OiAiOiIi KSt0LnpMYWJlbCkpOnomJnRbaSsiTGFiZWwiXT09PUE/cD10WygieCI9PT1p PyJ5IjoieCIpKyJMYWJlbCJdfHwiIjp2b2lkIDA9PT10LnhMYWJlbD92b2lk IDAhPT10LnlMYWJlbCYmInNjYXR0ZXJjYXJwZXQiIT09dC50cmFjZS50eXBl JiYocD10LnlMYWJlbCk6cD12b2lkIDA9PT10LnlMYWJlbD90LnhMYWJlbDoi KCIrdC54TGFiZWwrIiwgIit0LnlMYWJlbCsiKSIsIXQudGV4dCYmMCE9PXQu dGV4dHx8QXJyYXkuaXNBcnJheSh0LnRleHQpfHwocCs9KHA/Ijxicj4iOiIi KSt0LnRleHQpLHZvaWQgMCE9PXQuZXh0cmFUZXh0JiYocCs9KHA/Ijxicj4i OiIiKSt0LmV4dHJhVGV4dCksIiIhPT1wfHx0LmhvdmVydGVtcGxhdGV8fCgi Ij09PWYmJmUucmVtb3ZlKCkscD1mKTt2YXIgXz1hLl9kM2xvY2FsZSxNPXQu aG92ZXJ0ZW1wbGF0ZXx8ITEsUz10LmhvdmVydGVtcGxhdGVMYWJlbHN8fHQs RT10LmV2ZW50RGF0YVswXXx8e307TSYmKHA9KHA9by5ob3ZlcnRlbXBsYXRl U3RyaW5nKE0sUyxfLEUsdC50cmFjZS5fbWV0YSkpLnJlcGxhY2UoVCxmdW5j dGlvbihlLHIpe3JldHVybiBmPUMocix0Lm5hbWVMZW5ndGgpLCIifSkpO3Zh ciBJPWUuc2VsZWN0KCJ0ZXh0Lm51bXMiKS5jYWxsKHUuZm9udCx0LmZvbnRG YW1pbHl8fGcsdC5mb250U2l6ZXx8eSx0LmZvbnRDb2xvcnx8YikudGV4dChw KS5hdHRyKCJkYXRhLW5vdGV4IiwxKS5jYWxsKGwucG9zaXRpb25UZXh0LDAs MCkuY2FsbChsLmNvbnZlcnRUb1RzcGFucyxyKSxEPWUuc2VsZWN0KCJ0ZXh0 Lm5hbWUiKSxSPTAsRj0wO2lmKGYmJmYhPT1wKXtELmNhbGwodS5mb250LHQu Zm9udEZhbWlseXx8Zyx0LmZvbnRTaXplfHx5LHgpLnRleHQoZikuYXR0cigi ZGF0YS1ub3RleCIsMSkuY2FsbChsLnBvc2l0aW9uVGV4dCwwLDApLmNhbGwo bC5jb252ZXJ0VG9Uc3BhbnMscik7dmFyIEI9RC5ub2RlKCkuZ2V0Qm91bmRp bmdDbGllbnRSZWN0KCk7Uj1CLndpZHRoKzIqayxGPUIuaGVpZ2h0KzIqa31l bHNlIEQucmVtb3ZlKCksZS5zZWxlY3QoInJlY3QiKS5yZW1vdmUoKTtlLnNl bGVjdCgicGF0aCIpLnN0eWxlKHtmaWxsOnYsc3Ryb2tlOmJ9KTt2YXIgTixq LFY9SS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksVT10LnhhLl9v ZmZzZXQrKHQueDArdC54MSkvMixxPXQueWEuX29mZnNldCsodC55MCt0Lnkx KS8yLEg9TWF0aC5hYnModC54MS10LngwKSxHPU1hdGguYWJzKHQueTEtdC55 MCksWT1WLndpZHRoK3craytSO2lmKHQudHkwPUwtVi50b3AsdC5ieD1WLndp ZHRoKzIqayx0LmJ5PU1hdGgubWF4KFYuaGVpZ2h0KzIqayxGKSx0LmFuY2hv cj0ic3RhcnQiLHQudHh3aWR0aD1WLndpZHRoLHQudHgyd2lkdGg9Uix0Lm9m ZnNldD0wLHMpdC5wb3M9VSxOPXErRy8yK1k8PU8saj1xLUcvMi1ZPj0wLCJ0 b3AiIT09dC5pZGVhbEFsaWduJiZOfHwhaj9OPyhxKz1HLzIsdC5hbmNob3I9 InN0YXJ0Iik6dC5hbmNob3I9Im1pZGRsZSI6KHEtPUcvMix0LmFuY2hvcj0i ZW5kIik7ZWxzZSBpZih0LnBvcz1xLE49VStILzIrWTw9UCxqPVUtSC8yLVk+ PTAsImxlZnQiIT09dC5pZGVhbEFsaWduJiZOfHwhailpZihOKVUrPUgvMix0 LmFuY2hvcj0ic3RhcnQiO2Vsc2V7dC5hbmNob3I9Im1pZGRsZSI7dmFyIFc9 WS8yLFg9VStXLVAsWj1VLVc7WD4wJiYoVS09WCksWjwwJiYoVSs9LVopfWVs c2UgVS09SC8yLHQuYW5jaG9yPSJlbmQiO0kuYXR0cigidGV4dC1hbmNob3Ii LHQuYW5jaG9yKSxSJiZELmF0dHIoInRleHQtYW5jaG9yIix0LmFuY2hvciks ZS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitVKyIsIitxKyIpIiso cz8icm90YXRlKCIrbSsiKSI6IiIpKX0pLE59ZnVuY3Rpb24gQSh0LGUpe3Qu ZWFjaChmdW5jdGlvbih0KXt2YXIgcj1uLnNlbGVjdCh0aGlzKTtpZih0LmRl bClyZXR1cm4gci5yZW1vdmUoKTt2YXIgYT1yLnNlbGVjdCgidGV4dC5udW1z IiksaT10LmFuY2hvcixvPSJlbmQiPT09aT8tMToxLHM9e3N0YXJ0OjEsZW5k Oi0xLG1pZGRsZTowfVtpXSxjPXMqKHcrayksaD1jK3MqKHQudHh3aWR0aCtr KSxmPTAscD10Lm9mZnNldDsibWlkZGxlIj09PWkmJihjLT10LnR4MndpZHRo LzIsaCs9dC50eHdpZHRoLzIrayksZSYmKHAqPS1fLGY9dC5vZmZzZXQqYiks ci5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIiwibWlkZGxlIj09PWk/Ik0tIiso dC5ieC8yK3QudHgyd2lkdGgvMikrIiwiKyhwLXQuYnkvMikrImgiK3QuYngr InYiK3QuYnkrImgtIit0LmJ4KyJaIjoiTTAsMEwiKyhvKncrZikrIiwiKyh3 K3ApKyJ2IisodC5ieS8yLXcpKyJoIitvKnQuYngrInYtIit0LmJ5KyJIIiso byp3K2YpKyJWIisocC13KSsiWiIpO3ZhciBkPWMrZixnPXArdC50eTAtdC5i eS8yK2ssdj10LnRleHRBbGlnbnx8ImF1dG8iOyJhdXRvIiE9PXYmJigibGVm dCI9PT12JiYic3RhcnQiIT09aT8oYS5hdHRyKCJ0ZXh0LWFuY2hvciIsInN0 YXJ0IiksZD0ibWlkZGxlIj09PWk/LXQuYngvMi10LnR4MndpZHRoLzIrazot dC5ieC1rKToicmlnaHQiPT09diYmImVuZCIhPT1pJiYoYS5hdHRyKCJ0ZXh0 LWFuY2hvciIsImVuZCIpLGQ9Im1pZGRsZSI9PT1pP3QuYngvMi10LnR4Mndp ZHRoLzItazp0LmJ4K2spKSxhLmNhbGwobC5wb3NpdGlvblRleHQsZCxnKSx0 LnR4MndpZHRoJiYoci5zZWxlY3QoInRleHQubmFtZSIpLmNhbGwobC5wb3Np dGlvblRleHQsaCtzKmsrZixwK3QudHkwLXQuYnkvMitrKSxyLnNlbGVjdCgi cmVjdCIpLmNhbGwodS5zZXRSZWN0LGgrKHMtMSkqdC50eDJ3aWR0aC8yK2Ys cC10LmJ5LzItMSx0LnR4MndpZHRoLHQuYnkrMikpfSl9ZnVuY3Rpb24gUyh0 LGUpe3ZhciByPXQuaW5kZXgsbj10LnRyYWNlfHx7fSxpPXQuY2RbMF0scz10 LmNkW3JdfHx7fTtmdW5jdGlvbiBsKHQpe3JldHVybiB0fHxhKHQpJiYwPT09 dH12YXIgYz1BcnJheS5pc0FycmF5KHIpP2Z1bmN0aW9uKHQsZSl7dmFyIGE9 by5jYXN0T3B0aW9uKGkscix0KTtyZXR1cm4gbChhKT9hOm8uZXh0cmFjdE9w dGlvbih7fSxuLCIiLGUpfTpmdW5jdGlvbih0LGUpe3JldHVybiBvLmV4dHJh Y3RPcHRpb24ocyxuLHQsZSl9O2Z1bmN0aW9uIHUoZSxyLG4pe3ZhciBhPWMo cixuKTtsKGEpJiYodFtlXT1hKX1pZih1KCJob3ZlcmluZm8iLCJoaSIsImhv dmVyaW5mbyIpLHUoImJnY29sb3IiLCJoYmciLCJob3ZlcmxhYmVsLmJnY29s b3IiKSx1KCJib3JkZXJDb2xvciIsImhiYyIsImhvdmVybGFiZWwuYm9yZGVy Y29sb3IiKSx1KCJmb250RmFtaWx5IiwiaHRmIiwiaG92ZXJsYWJlbC5mb250 LmZhbWlseSIpLHUoImZvbnRTaXplIiwiaHRzIiwiaG92ZXJsYWJlbC5mb250 LnNpemUiKSx1KCJmb250Q29sb3IiLCJodGMiLCJob3ZlcmxhYmVsLmZvbnQu Y29sb3IiKSx1KCJuYW1lTGVuZ3RoIiwiaG5sIiwiaG92ZXJsYWJlbC5uYW1l bGVuZ3RoIiksdSgidGV4dEFsaWduIiwiaHRhIiwiaG92ZXJsYWJlbC5hbGln biIpLHQucG9zcmVmPSJ5Ij09PWV8fCJjbG9zZXN0Ij09PWUmJiJoIj09PW4u b3JpZW50YXRpb24/dC54YS5fb2Zmc2V0Kyh0LngwK3QueDEpLzI6dC55YS5f b2Zmc2V0Kyh0LnkwK3QueTEpLzIsdC54MD1vLmNvbnN0cmFpbih0LngwLDAs dC54YS5fbGVuZ3RoKSx0LngxPW8uY29uc3RyYWluKHQueDEsMCx0LnhhLl9s ZW5ndGgpLHQueTA9by5jb25zdHJhaW4odC55MCwwLHQueWEuX2xlbmd0aCks dC55MT1vLmNvbnN0cmFpbih0LnkxLDAsdC55YS5fbGVuZ3RoKSx2b2lkIDAh PT10LnhMYWJlbFZhbCYmKHQueExhYmVsPSJ4TGFiZWwiaW4gdD90LnhMYWJl bDpwLmhvdmVyTGFiZWxUZXh0KHQueGEsdC54TGFiZWxWYWwpLHQueFZhbD10 LnhhLmMyZCh0LnhMYWJlbFZhbCkpLHZvaWQgMCE9PXQueUxhYmVsVmFsJiYo dC55TGFiZWw9InlMYWJlbCJpbiB0P3QueUxhYmVsOnAuaG92ZXJMYWJlbFRl eHQodC55YSx0LnlMYWJlbFZhbCksdC55VmFsPXQueWEuYzJkKHQueUxhYmVs VmFsKSksdm9pZCAwIT09dC56TGFiZWxWYWwmJnZvaWQgMD09PXQuekxhYmVs JiYodC56TGFiZWw9U3RyaW5nKHQuekxhYmVsVmFsKSksIShpc05hTih0Lnhl cnIpfHwibG9nIj09PXQueGEudHlwZSYmdC54ZXJyPD0wKSl7dmFyIGg9cC50 aWNrVGV4dCh0LnhhLHQueGEuYzJsKHQueGVyciksImhvdmVyIikudGV4dDt2 b2lkIDAhPT10LnhlcnJuZWc/dC54TGFiZWwrPSIgKyIraCsiIC8gLSIrcC50 aWNrVGV4dCh0LnhhLHQueGEuYzJsKHQueGVycm5lZyksImhvdmVyIikudGV4 dDp0LnhMYWJlbCs9IiBceGIxICIraCwieCI9PT1lJiYodC5kaXN0YW5jZSs9 MSl9aWYoIShpc05hTih0LnllcnIpfHwibG9nIj09PXQueWEudHlwZSYmdC55 ZXJyPD0wKSl7dmFyIGY9cC50aWNrVGV4dCh0LnlhLHQueWEuYzJsKHQueWVy ciksImhvdmVyIikudGV4dDt2b2lkIDAhPT10LnllcnJuZWc/dC55TGFiZWwr PSIgKyIrZisiIC8gLSIrcC50aWNrVGV4dCh0LnlhLHQueWEuYzJsKHQueWVy cm5lZyksImhvdmVyIikudGV4dDp0LnlMYWJlbCs9IiBceGIxICIrZiwieSI9 PT1lJiYodC5kaXN0YW5jZSs9MSl9dmFyIGQ9dC5ob3ZlcmluZm98fHQudHJh Y2UuaG92ZXJpbmZvO3JldHVybiBkJiYiYWxsIiE9PWQmJigtMT09PShkPUFy cmF5LmlzQXJyYXkoZCk/ZDpkLnNwbGl0KCIrIikpLmluZGV4T2YoIngiKSYm KHQueExhYmVsPXZvaWQgMCksLTE9PT1kLmluZGV4T2YoInkiKSYmKHQueUxh YmVsPXZvaWQgMCksLTE9PT1kLmluZGV4T2YoInoiKSYmKHQuekxhYmVsPXZv aWQgMCksLTE9PT1kLmluZGV4T2YoInRleHQiKSYmKHQudGV4dD12b2lkIDAp LC0xPT09ZC5pbmRleE9mKCJuYW1lIikmJih0Lm5hbWU9dm9pZCAwKSksdH1m dW5jdGlvbiBFKHQsZSxyKXt2YXIgbixhLG89ci5jb250YWluZXIscz1yLmZ1 bGxMYXlvdXQsbD1zLl9zaXplLGM9ci5ldmVudCxmPSEhZS5oTGluZVBvaW50 LGQ9ISFlLnZMaW5lUG9pbnQ7aWYoby5zZWxlY3RBbGwoIi5zcGlrZWxpbmUi KS5yZW1vdmUoKSxkfHxmKXt2YXIgZz1oLmNvbWJpbmUocy5wbG90X2JnY29s b3Iscy5wYXBlcl9iZ2NvbG9yKTtpZihmKXt2YXIgdixtLHk9ZS5oTGluZVBv aW50O249eSYmeS54YSwiY3Vyc29yIj09PShhPXkmJnkueWEpLnNwaWtlc25h cD8odj1jLnBvaW50ZXJYLG09Yy5wb2ludGVyWSk6KHY9bi5fb2Zmc2V0K3ku eCxtPWEuX29mZnNldCt5LnkpO3ZhciB4LGIsXz1pLnJlYWRhYmlsaXR5KHku Y29sb3IsZyk8MS41P2guY29udHJhc3QoZyk6eS5jb2xvcix3PWEuc3Bpa2Vt b2RlLGs9YS5zcGlrZXRoaWNrbmVzcyxUPWEuc3Bpa2Vjb2xvcnx8XyxNPXAu Z2V0UHhQb3NpdGlvbih0LGEpO2lmKC0xIT09dy5pbmRleE9mKCJ0b2F4aXMi KXx8LTEhPT13LmluZGV4T2YoImFjcm9zcyIpKXtpZigtMSE9PXcuaW5kZXhP ZigidG9heGlzIikmJih4PU0sYj12KSwtMSE9PXcuaW5kZXhPZigiYWNyb3Nz Iikpe3ZhciBBPWEuX2NvdW50ZXJEb21haW5NaW4sUz1hLl9jb3VudGVyRG9t YWluTWF4OyJmcmVlIj09PWEuYW5jaG9yJiYoQT1NYXRoLm1pbihBLGEucG9z aXRpb24pLFM9TWF0aC5tYXgoUyxhLnBvc2l0aW9uKSkseD1sLmwrQSpsLncs Yj1sLmwrUypsLnd9by5pbnNlcnQoImxpbmUiLCI6Zmlyc3QtY2hpbGQiKS5h dHRyKHt4MTp4LHgyOmIseTE6bSx5MjptLCJzdHJva2Utd2lkdGgiOmssc3Ry b2tlOlQsInN0cm9rZS1kYXNoYXJyYXkiOnUuZGFzaFN0eWxlKGEuc3Bpa2Vk YXNoLGspfSkuY2xhc3NlZCgic3Bpa2VsaW5lIiwhMCkuY2xhc3NlZCgiY3Jp c3AiLCEwKSxvLmluc2VydCgibGluZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIo e3gxOngseDI6Yix5MTptLHkyOm0sInN0cm9rZS13aWR0aCI6aysyLHN0cm9r ZTpnfSkuY2xhc3NlZCgic3Bpa2VsaW5lIiwhMCkuY2xhc3NlZCgiY3Jpc3Ai LCEwKX0tMSE9PXcuaW5kZXhPZigibWFya2VyIikmJm8uaW5zZXJ0KCJjaXJj bGUiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKHtjeDpNKygicmlnaHQiIT09YS5z aWRlP2s6LWspLGN5Om0scjprLGZpbGw6VH0pLmNsYXNzZWQoInNwaWtlbGlu ZSIsITApfWlmKGQpe3ZhciBFLEwsQz1lLnZMaW5lUG9pbnQ7bj1DJiZDLnhh LGE9QyYmQy55YSwiY3Vyc29yIj09PW4uc3Bpa2VzbmFwPyhFPWMucG9pbnRl clgsTD1jLnBvaW50ZXJZKTooRT1uLl9vZmZzZXQrQy54LEw9YS5fb2Zmc2V0 K0MueSk7dmFyIFAsTyx6PWkucmVhZGFiaWxpdHkoQy5jb2xvcixnKTwxLjU/ aC5jb250cmFzdChnKTpDLmNvbG9yLEk9bi5zcGlrZW1vZGUsRD1uLnNwaWtl dGhpY2tuZXNzLFI9bi5zcGlrZWNvbG9yfHx6LEY9cC5nZXRQeFBvc2l0aW9u KHQsbik7aWYoLTEhPT1JLmluZGV4T2YoInRvYXhpcyIpfHwtMSE9PUkuaW5k ZXhPZigiYWNyb3NzIikpe2lmKC0xIT09SS5pbmRleE9mKCJ0b2F4aXMiKSYm KFA9RixPPUwpLC0xIT09SS5pbmRleE9mKCJhY3Jvc3MiKSl7dmFyIEI9bi5f Y291bnRlckRvbWFpbk1pbixOPW4uX2NvdW50ZXJEb21haW5NYXg7ImZyZWUi PT09bi5hbmNob3ImJihCPU1hdGgubWluKEIsbi5wb3NpdGlvbiksTj1NYXRo Lm1heChOLG4ucG9zaXRpb24pKSxQPWwudCsoMS1OKSpsLmgsTz1sLnQrKDEt QikqbC5ofW8uaW5zZXJ0KCJsaW5lIiwiOmZpcnN0LWNoaWxkIikuYXR0cih7 eDE6RSx4MjpFLHkxOlAseTI6Tywic3Ryb2tlLXdpZHRoIjpELHN0cm9rZTpS LCJzdHJva2UtZGFzaGFycmF5Ijp1LmRhc2hTdHlsZShuLnNwaWtlZGFzaCxE KX0pLmNsYXNzZWQoInNwaWtlbGluZSIsITApLmNsYXNzZWQoImNyaXNwIiwh MCksby5pbnNlcnQoImxpbmUiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKHt4MTpF LHgyOkUseTE6UCx5MjpPLCJzdHJva2Utd2lkdGgiOkQrMixzdHJva2U6Z30p LmNsYXNzZWQoInNwaWtlbGluZSIsITApLmNsYXNzZWQoImNyaXNwIiwhMCl9 LTEhPT1JLmluZGV4T2YoIm1hcmtlciIpJiZvLmluc2VydCgiY2lyY2xlIiwi OmZpcnN0LWNoaWxkIikuYXR0cih7Y3g6RSxjeTpGLSgidG9wIiE9PW4uc2lk ZT9EOi1EKSxyOkQsZmlsbDpSfSkuY2xhc3NlZCgic3Bpa2VsaW5lIiwhMCl9 fX1mdW5jdGlvbiBMKHQsZSl7cmV0dXJuIWV8fChlLnZMaW5lUG9pbnQhPT10 Ll9zcGlrZXBvaW50cy52TGluZVBvaW50fHxlLmhMaW5lUG9pbnQhPT10Ll9z cGlrZXBvaW50cy5oTGluZVBvaW50KX1mdW5jdGlvbiBDKHQsZSl7cmV0dXJu IGwucGxhaW5UZXh0KHR8fCIiLHtsZW46ZSxhbGxvd2VkVGFnczpbImJyIiwi c3ViIiwic3VwIiwiYiIsImkiLCJlbSJdfSl9fSx7Ii4uLy4uL2xpYiI6NzE3 LCIuLi8uLi9saWIvZXZlbnRzIjo3MDcsIi4uLy4uL2xpYi9vdmVycmlkZV9j dXJzb3IiOjcyOCwiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4u Ly4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3JlZ2lzdHJ5 Ijo4NDYsIi4uL2NvbG9yIjo1OTIsIi4uL2RyYWdlbGVtZW50Ijo2MTAsIi4u L2RyYXdpbmciOjYxMywiLi9jb25zdGFudHMiOjYyNSwiLi9oZWxwZXJzIjo2 MjcsZDM6MTY1LCJmYXN0LWlzbnVtZXJpYyI6MjI4LHRpbnljb2xvcjI6NTM2 fV0sNjI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXtyKCJo b3ZlcmxhYmVsLmJnY29sb3IiLChhPWF8fHt9KS5iZ2NvbG9yKSxyKCJob3Zl cmxhYmVsLmJvcmRlcmNvbG9yIixhLmJvcmRlcmNvbG9yKSxyKCJob3Zlcmxh YmVsLm5hbWVsZW5ndGgiLGEubmFtZWxlbmd0aCksbi5jb2VyY2VGb250KHIs ImhvdmVybGFiZWwuZm9udCIsYS5mb250KSxyKCJob3ZlcmxhYmVsLmFsaWdu IixhLmFsaWduKX19LHsiLi4vLi4vbGliIjo3MTd9XSw2MzA6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4u L2xpYiIpLGk9dCgiLi4vZHJhZ2VsZW1lbnQiKSxvPXQoIi4vaGVscGVycyIp LHM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLGw9dCgiLi9ob3ZlciIpO2Uu ZXhwb3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJmeCIsY29u c3RhbnRzOnQoIi4vY29uc3RhbnRzIiksc2NoZW1hOntsYXlvdXQ6c30sYXR0 cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnMs c3VwcGx5TGF5b3V0R2xvYmFsRGVmYXVsdHM6dCgiLi9sYXlvdXRfZ2xvYmFs X2RlZmF1bHRzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLHN1 cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksY2Fs Yzp0KCIuL2NhbGMiKSxnZXREaXN0YW5jZUZ1bmN0aW9uOm8uZ2V0RGlzdGFu Y2VGdW5jdGlvbixnZXRDbG9zZXN0Om8uZ2V0Q2xvc2VzdCxpbmJveDpvLmlu Ym94LHF1YWRyYXR1cmU6by5xdWFkcmF0dXJlLGFwcGVuZEFycmF5UG9pbnRW YWx1ZTpvLmFwcGVuZEFycmF5UG9pbnRWYWx1ZSxjYXN0SG92ZXJPcHRpb246 ZnVuY3Rpb24odCxlLHIpe3JldHVybiBhLmNhc3RPcHRpb24odCxlLCJob3Zl cmxhYmVsLiIrcil9LGNhc3RIb3ZlcmluZm86ZnVuY3Rpb24odCxlLHIpe3Jl dHVybiBhLmNhc3RPcHRpb24odCxyLCJob3ZlcmluZm8iLGZ1bmN0aW9uKHIp e3JldHVybiBhLmNvZXJjZUhvdmVyaW5mbyh7aG92ZXJpbmZvOnJ9LHtfbW9k dWxlOnQuX21vZHVsZX0sZSl9KX0saG92ZXI6bC5ob3Zlcix1bmhvdmVyOmku dW5ob3Zlcixsb25lSG92ZXI6bC5sb25lSG92ZXIsbG9uZVVuaG92ZXI6ZnVu Y3Rpb24odCl7dmFyIGU9YS5pc0QzU2VsZWN0aW9uKHQpP3Q6bi5zZWxlY3Qo dCk7ZS5zZWxlY3RBbGwoImcuaG92ZXJ0ZXh0IikucmVtb3ZlKCksZS5zZWxl Y3RBbGwoIi5zcGlrZWxpbmUiKS5yZW1vdmUoKX0sY2xpY2s6dCgiLi9jbGlj ayIpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vZHJhZ2VsZW1lbnQiOjYxMCwi Li9hdHRyaWJ1dGVzIjo2MjIsIi4vY2FsYyI6NjIzLCIuL2NsaWNrIjo2MjQs Ii4vY29uc3RhbnRzIjo2MjUsIi4vZGVmYXVsdHMiOjYyNiwiLi9oZWxwZXJz Ijo2MjcsIi4vaG92ZXIiOjYyOCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6NjMx LCIuL2xheW91dF9kZWZhdWx0cyI6NjMyLCIuL2xheW91dF9nbG9iYWxfZGVm YXVsdHMiOjYzMyxkMzoxNjV9XSw2MzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi9jb25zdGFudHMiKSxhPXQoIi4uLy4uL3Bs b3RzL2ZvbnRfYXR0cmlidXRlcyIpKHtlZGl0VHlwZToibm9uZSJ9KTthLmZh bWlseS5kZmx0PW4uSE9WRVJGT05ULGEuc2l6ZS5kZmx0PW4uSE9WRVJGT05U U0laRSxlLmV4cG9ydHM9e2NsaWNrbW9kZTp7dmFsVHlwZToiZmxhZ2xpc3Qi LGZsYWdzOlsiZXZlbnQiLCJzZWxlY3QiXSxkZmx0OiJldmVudCIsZWRpdFR5 cGU6InBsb3QiLGV4dHJhczpbIm5vbmUiXX0sZHJhZ21vZGU6e3ZhbFR5cGU6 ImVudW1lcmF0ZWQiLHZhbHVlczpbInpvb20iLCJwYW4iLCJzZWxlY3QiLCJs YXNzbyIsIm9yYml0IiwidHVybnRhYmxlIiwhMV0sZGZsdDoiem9vbSIsZWRp dFR5cGU6Im1vZGViYXIifSxob3Zlcm1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0 ZWQiLHZhbHVlczpbIngiLCJ5IiwiY2xvc2VzdCIsITFdLGVkaXRUeXBlOiJt b2RlYmFyIn0saG92ZXJkaXN0YW5jZTp7dmFsVHlwZToiaW50ZWdlciIsbWlu Oi0xLGRmbHQ6MjAsZWRpdFR5cGU6Im5vbmUifSxzcGlrZWRpc3RhbmNlOnt2 YWxUeXBlOiJpbnRlZ2VyIixtaW46LTEsZGZsdDoyMCxlZGl0VHlwZToibm9u ZSJ9LGhvdmVybGFiZWw6e2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0 VHlwZToibm9uZSJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRp dFR5cGU6Im5vbmUifSxmb250OmEsYWxpZ246e3ZhbFR5cGU6ImVudW1lcmF0 ZWQiLHZhbHVlczpbImxlZnQiLCJyaWdodCIsImF1dG8iXSxkZmx0OiJhdXRv IixlZGl0VHlwZToibm9uZSJ9LG5hbWVsZW5ndGg6e3ZhbFR5cGU6ImludGVn ZXIiLG1pbjotMSxkZmx0OjE1LGVkaXRUeXBlOiJub25lIn0sZWRpdFR5cGU6 Im5vbmUifSxzZWxlY3RkaXJlY3Rpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQi LHZhbHVlczpbImgiLCJ2IiwiZCIsImFueSJdLGRmbHQ6ImFueSIsZWRpdFR5 cGU6Im5vbmUifX19LHsiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo3 OTEsIi4vY29uc3RhbnRzIjo2MjV9XSw2MzI6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2xheW91 dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5j dGlvbiBpKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9dmFyIG8s cz1pKCJjbGlja21vZGUiKTsic2VsZWN0Ij09PWkoImRyYWdtb2RlIikmJmko InNlbGVjdGRpcmVjdGlvbiIpLGUuX2hhcygiY2FydGVzaWFuIik/cy5pbmRl eE9mKCJzZWxlY3QiKT4tMT9vPSJjbG9zZXN0IjooZS5faXNIb3Jpej1mdW5j dGlvbih0LGUpe2Zvcih2YXIgcj1lLl9zY2F0dGVyU3RhY2tPcHRzfHx7fSxu PTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBhPXRbbl0saT1hLnhheGlzK2EueWF4 aXMsbz1yW2ldfHx7fSxzPW9bYS5zdGFja2dyb3VwXXx8e307aWYoImgiIT09 YS5vcmllbnRhdGlvbiYmImgiIT09cy5vcmllbnRhdGlvbilyZXR1cm4hMX1y ZXR1cm4hMH0ocixlKSxvPWUuX2lzSG9yaXo/InkiOiJ4Iik6bz0iY2xvc2Vz dCIsaSgiaG92ZXJtb2RlIixvKSYmKGkoImhvdmVyZGlzdGFuY2UiKSxpKCJz cGlrZWRpc3RhbmNlIikpO3ZhciBsPWUuX2hhcygibWFwYm94IiksYz1lLl9o YXMoImdlbyIpLHU9ZS5fYmFzZVBsb3RNb2R1bGVzLmxlbmd0aDsiem9vbSI9 PT1lLmRyYWdtb2RlJiYoKGx8fGMpJiYxPT09dXx8bCYmYyYmMj09PXUpJiYo ZS5kcmFnbW9kZT0icGFuIil9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2xheW91 dF9hdHRyaWJ1dGVzIjo2MzF9XSw2MzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuL2hvdmVybGFi ZWxfZGVmYXVsdHMiKSxpPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlKXthKHQsZSxmdW5jdGlvbihyLGEpe3JldHVy biBuLmNvZXJjZSh0LGUsaSxyLGEpfSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIu L2hvdmVybGFiZWxfZGVmYXVsdHMiOjYyOSwiLi9sYXlvdXRfYXR0cmlidXRl cyI6NjMxfV0sNjM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vbGliL3JlZ2V4IikuY291 bnRlcixpPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsbz10 KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RhbnRzIikuaWRSZWdleCxz PXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxsPXtyb3dzOnt2 YWxUeXBlOiJpbnRlZ2VyIixtaW46MSxlZGl0VHlwZToicGxvdCJ9LHJvd29y ZGVyOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AgdG8gYm90 dG9tIiwiYm90dG9tIHRvIHRvcCJdLGRmbHQ6InRvcCB0byBib3R0b20iLGVk aXRUeXBlOiJwbG90In0sY29sdW1uczp7dmFsVHlwZToiaW50ZWdlciIsbWlu OjEsZWRpdFR5cGU6InBsb3QifSxzdWJwbG90czp7dmFsVHlwZToiaW5mb19h cnJheSIsZnJlZUxlbmd0aDohMCxkaW1lbnNpb25zOjIsaXRlbXM6e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbYSgieHkiKS50b1N0cmluZygpLCIi XSxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0seGF4ZXM6e3Zh bFR5cGU6ImluZm9fYXJyYXkiLGZyZWVMZW5ndGg6ITAsaXRlbXM6e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbby54LnRvU3RyaW5nKCksIiJdLGVk aXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSx5YXhlczp7dmFsVHlw ZToiaW5mb19hcnJheSIsZnJlZUxlbmd0aDohMCxpdGVtczp7dmFsVHlwZToi ZW51bWVyYXRlZCIsdmFsdWVzOltvLnkudG9TdHJpbmcoKSwiIl0sZWRpdFR5 cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LHBhdHRlcm46e3ZhbFR5cGU6 ImVudW1lcmF0ZWQiLHZhbHVlczpbImluZGVwZW5kZW50IiwiY291cGxlZCJd LGRmbHQ6ImNvdXBsZWQiLGVkaXRUeXBlOiJwbG90In0seGdhcDp7dmFsVHlw ZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToicGxvdCJ9LHlnYXA6 e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6InBsb3Qi fSxkb21haW46aSh7bmFtZToiZ3JpZCIsZWRpdFR5cGU6InBsb3QiLG5vR3Jp ZENlbGw6ITB9LHt9KSx4c2lkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsiYm90dG9tIiwiYm90dG9tIHBsb3QiLCJ0b3AgcGxvdCIsInRvcCJd LGRmbHQ6ImJvdHRvbSBwbG90IixlZGl0VHlwZToicGxvdCJ9LHlzaWRlOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwibGVmdCBwbG90 IiwicmlnaHQgcGxvdCIsInJpZ2h0Il0sZGZsdDoibGVmdCBwbG90IixlZGl0 VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In07ZnVuY3Rpb24gYyh0LGUs cil7dmFyIG49ZVtyKyJheGVzIl0sYT1PYmplY3Qua2V5cygodC5fc3Bsb21B eGVzfHx7fSlbcl18fHt9KTtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uOmEu bGVuZ3RoP2E6dm9pZCAwfWZ1bmN0aW9uIHUodCxlLHIsbixhLGkpe3ZhciBv PWUodCsiZ2FwIixyKSxzPWUoImRvbWFpbi4iK3QpO2UodCsic2lkZSIsbik7 Zm9yKHZhciBsPW5ldyBBcnJheShhKSxjPXNbMF0sdT0oc1sxXS1jKS8oYS1v KSxoPXUqKDEtbyksZj0wO2Y8YTtmKyspe3ZhciBwPWMrdSpmO2xbaT9hLTEt ZjpmXT1bcCxwK2hdfXJldHVybiBsfWZ1bmN0aW9uIGgodCxlLHIsbixhKXt2 YXIgaSxvPW5ldyBBcnJheShyKTtmdW5jdGlvbiBzKHQscil7LTEhPT1lLmlu ZGV4T2YocikmJnZvaWQgMD09PW5bcl0/KG9bdF09cixuW3JdPXQpOm9bdF09 IiJ9aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoaT0wO2k8cjtpKyspcyhpLHRb aV0pO2Vsc2UgZm9yKHMoMCxhKSxpPTE7aTxyO2krKylzKGksYSsoaSsxKSk7 cmV0dXJuIG99ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5h bWU6ImdyaWQiLHNjaGVtYTp7bGF5b3V0OntncmlkOmx9fSxsYXlvdXRBdHRy aWJ1dGVzOmwsc2l6ZURlZmF1bHRzOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5n cmlkfHx7fSxhPWMoZSxyLCJ4IiksaT1jKGUsciwieSIpO2lmKHQuZ3JpZHx8 YXx8aSl7dmFyIG8saCxmPUFycmF5LmlzQXJyYXkoci5zdWJwbG90cykmJkFy cmF5LmlzQXJyYXkoci5zdWJwbG90c1swXSkscD1BcnJheS5pc0FycmF5KGEp LGQ9QXJyYXkuaXNBcnJheShpKSxnPXAmJmEhPT1yLnhheGVzJiZkJiZpIT09 ci55YXhlcztmPyhvPXIuc3VicGxvdHMubGVuZ3RoLGg9ci5zdWJwbG90c1sw XS5sZW5ndGgpOihkJiYobz1pLmxlbmd0aCkscCYmKGg9YS5sZW5ndGgpKTt2 YXIgdj1zLm5ld0NvbnRhaW5lcihlLCJncmlkIiksbT1UKCJyb3dzIixvKSx5 PVQoImNvbHVtbnMiLGgpO2lmKG0qeT4xKXtmfHxwfHxkfHwiaW5kZXBlbmRl bnQiPT09VCgicGF0dGVybiIpJiYoZj0hMCksdi5faGFzU3VicGxvdEdyaWQ9 Zjt2YXIgeCxiLF89InRvcCB0byBib3R0b20iPT09VCgicm93b3JkZXIiKSx3 PWY/LjI6LjEsaz1mPy4zOi4xO2cmJmUuX3NwbG9tR3JpZERmbHQmJih4PWUu X3NwbG9tR3JpZERmbHQueHNpZGUsYj1lLl9zcGxvbUdyaWREZmx0LnlzaWRl KSx2Ll9kb21haW5zPXt4OnUoIngiLFQsdyx4LHkpLHk6dSgieSIsVCxrLGIs bSxfKX19ZWxzZSBkZWxldGUgZS5ncmlkfWZ1bmN0aW9uIFQodCxlKXtyZXR1 cm4gbi5jb2VyY2Uocix2LGwsdCxlKX19LGNvbnRlbnREZWZhdWx0czpmdW5j dGlvbih0LGUpe3ZhciByPWUuZ3JpZDtpZihyJiZyLl9kb21haW5zKXt2YXIg bixhLGksbyxzLGwsdSxmPXQuZ3JpZHx8e30scD1lLl9zdWJwbG90cyxkPXIu X2hhc1N1YnBsb3RHcmlkLGc9ci5yb3dzLHY9ci5jb2x1bW5zLG09ImluZGVw ZW5kZW50Ij09PXIucGF0dGVybix5PXIuX2F4aXNNYXA9e307aWYoZCl7dmFy IHg9Zi5zdWJwbG90c3x8W107bD1yLnN1YnBsb3RzPW5ldyBBcnJheShnKTt2 YXIgYj0xO2ZvcihuPTA7bjxnO24rKyl7dmFyIF89bFtuXT1uZXcgQXJyYXko diksdz14W25dfHxbXTtmb3IoYT0wO2E8djthKyspaWYobT8ocz0xPT09Yj8i eHkiOiJ4IitiKyJ5IitiLGIrKyk6cz13W2FdLF9bYV09IiIsLTEhPT1wLmNh cnRlc2lhbi5pbmRleE9mKHMpKXtpZih1PXMuaW5kZXhPZigieSIpLGk9cy5z bGljZSgwLHUpLG89cy5zbGljZSh1KSx2b2lkIDAhPT15W2ldJiZ5W2ldIT09 YXx8dm9pZCAwIT09eVtvXSYmeVtvXSE9PW4pY29udGludWU7X1thXT1zLHlb aV09YSx5W29dPW59fX1lbHNle3ZhciBrPWMoZSxmLCJ4IiksVD1jKGUsZiwi eSIpO3IueGF4ZXM9aChrLHAueGF4aXMsdix5LCJ4Iiksci55YXhlcz1oKFQs cC55YXhpcyxnLHksInkiKX12YXIgTT1yLl9hbmNob3JzPXt9LEE9InRvcCB0 byBib3R0b20iPT09ci5yb3dvcmRlcjtmb3IodmFyIFMgaW4geSl7dmFyIEUs TCxDLFA9Uy5jaGFyQXQoMCksTz1yW1ArInNpZGUiXTtpZihPLmxlbmd0aDw4 KU1bU109ImZyZWUiO2Vsc2UgaWYoIngiPT09UCl7aWYoInQiPT09Ty5jaGFy QXQoMCk9PT1BPyhFPTAsTD0xLEM9Zyk6KEU9Zy0xLEw9LTEsQz0tMSksZCl7 dmFyIHo9eVtTXTtmb3Iobj1FO24hPT1DO24rPUwpaWYoKHM9bFtuXVt6XSkm Jih1PXMuaW5kZXhPZigieSIpLHMuc2xpY2UoMCx1KT09PVMpKXtNW1NdPXMu c2xpY2UodSk7YnJlYWt9fWVsc2UgZm9yKG49RTtuIT09QztuKz1MKWlmKG89 ci55YXhlc1tuXSwtMSE9PXAuY2FydGVzaWFuLmluZGV4T2YoUytvKSl7TVtT XT1vO2JyZWFrfX1lbHNlIGlmKCJsIj09PU8uY2hhckF0KDApPyhFPTAsTD0x LEM9dik6KEU9di0xLEw9LTEsQz0tMSksZCl7dmFyIEk9eVtTXTtmb3Iobj1F O24hPT1DO24rPUwpaWYoKHM9bFtJXVtuXSkmJih1PXMuaW5kZXhPZigieSIp LHMuc2xpY2UodSk9PT1TKSl7TVtTXT1zLnNsaWNlKDAsdSk7YnJlYWt9fWVs c2UgZm9yKG49RTtuIT09QztuKz1MKWlmKGk9ci54YXhlc1tuXSwtMSE9PXAu Y2FydGVzaWFuLmluZGV4T2YoaStTKSl7TVtTXT1pO2JyZWFrfX19fX19LHsi Li4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9yZWdleCI6NzMzLCIuLi8uLi9w bG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2NhcnRl c2lhbi9jb25zdGFudHMiOjc3MSwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTB9 XSw2MzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyIpLGE9dCgiLi4vLi4v cGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5O2UuZXhw b3J0cz1hKCJpbWFnZSIse3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRm bHQ6ITAsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHNvdXJjZTp7dmFsVHlwZToi c3RyaW5nIixlZGl0VHlwZToiYXJyYXlkcmF3In0sbGF5ZXI6e3ZhbFR5cGU6 ImVudW1lcmF0ZWQiLHZhbHVlczpbImJlbG93IiwiYWJvdmUiXSxkZmx0OiJh Ym92ZSIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHNpemV4Ont2YWxUeXBlOiJu dW1iZXIiLGRmbHQ6MCxlZGl0VHlwZToiYXJyYXlkcmF3In0sc2l6ZXk6e3Zh bFR5cGU6Im51bWJlciIsZGZsdDowLGVkaXRUeXBlOiJhcnJheWRyYXcifSxz aXppbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZpbGwiLCJj b250YWluIiwic3RyZXRjaCJdLGRmbHQ6ImNvbnRhaW4iLGVkaXRUeXBlOiJh cnJheWRyYXcifSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1h eDoxLGRmbHQ6MSxlZGl0VHlwZToiYXJyYXlkcmF3In0seDp7dmFsVHlwZToi YW55IixkZmx0OjAsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHk6e3ZhbFR5cGU6 ImFueSIsZGZsdDowLGVkaXRUeXBlOiJhcnJheWRyYXcifSx4YW5jaG9yOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwi cmlnaHQiXSxkZmx0OiJsZWZ0IixlZGl0VHlwZToiYXJyYXlkcmF3In0seWFu Y2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidG9wIiwibWlk ZGxlIiwiYm90dG9tIl0sZGZsdDoidG9wIixlZGl0VHlwZToiYXJyYXlkcmF3 In0seHJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicGFwZXIi LG4uaWRSZWdleC54LnRvU3RyaW5nKCldLGRmbHQ6InBhcGVyIixlZGl0VHlw ZToiYXJyYXlkcmF3In0seXJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsicGFwZXIiLG4uaWRSZWdleC55LnRvU3RyaW5nKCldLGRmbHQ6InBh cGVyIixlZGl0VHlwZToiYXJyYXlkcmF3In0sZWRpdFR5cGU6ImFycmF5ZHJh dyJ9KX0seyIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4u Ly4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMiOjc3MX1dLDYzNjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVt ZXJpYyIpLGE9dCgiLi4vLi4vbGliL3RvX2xvZ19yYW5nZSIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixpKXtlPWV8fHt9O3ZhciBvPSJsb2ciPT09ciYm ImxpbmVhciI9PT1lLnR5cGUscz0ibGluZWFyIj09PXImJiJsb2ciPT09ZS50 eXBlO2lmKG98fHMpZm9yKHZhciBsLGMsdT10Ll9mdWxsTGF5b3V0LmltYWdl cyxoPWUuX2lkLmNoYXJBdCgwKSxmPTA7Zjx1Lmxlbmd0aDtmKyspaWYoYz0i aW1hZ2VzWyIrZisiXS4iLChsPXVbZl0pW2grInJlZiJdPT09ZS5faWQpe3Zh ciBwPWxbaF0sZD1sWyJzaXplIitoXSxnPW51bGwsdj1udWxsO2lmKG8pe2c9 YShwLGUucmFuZ2UpO3ZhciBtPWQvTWF0aC5wb3coMTAsZykvMjt2PTIqTWF0 aC5sb2cobStNYXRoLnNxcnQoMSttKm0pKS9NYXRoLkxOMTB9ZWxzZSB2PShn PU1hdGgucG93KDEwLHApKSooTWF0aC5wb3coMTAsZC8yKS1NYXRoLnBvdygx MCwtZC8yKSk7bihnKT9uKHYpfHwodj1udWxsKTooZz1udWxsLHY9bnVsbCks aShjK2gsZyksaShjKyJzaXplIitoLHYpfX19LHsiLi4vLi4vbGliL3RvX2xv Z19yYW5nZSI6NzQzLCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sNjM3OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIp LGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4uLy4u L3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyIpLG89dCgiLi9hdHRy aWJ1dGVzIik7ZnVuY3Rpb24gcyh0LGUscil7ZnVuY3Rpb24gaShyLGEpe3Jl dHVybiBuLmNvZXJjZSh0LGUsbyxyLGEpfXZhciBzPWkoInNvdXJjZSIpO2lm KCFpKCJ2aXNpYmxlIiwhIXMpKXJldHVybiBlO2koImxheWVyIiksaSgieGFu Y2hvciIpLGkoInlhbmNob3IiKSxpKCJzaXpleCIpLGkoInNpemV5IiksaSgi c2l6aW5nIiksaSgib3BhY2l0eSIpO2Zvcih2YXIgbD17X2Z1bGxMYXlvdXQ6 cn0sYz1bIngiLCJ5Il0sdT0wO3U8Mjt1Kyspe3ZhciBoPWNbdV0sZj1hLmNv ZXJjZVJlZih0LGUsbCxoLCJwYXBlciIpO2lmKCJwYXBlciIhPT1mKWEuZ2V0 RnJvbUlkKGwsZikuX2ltZ0luZGljZXMucHVzaChlLl9pbmRleCk7YS5jb2Vy Y2VQb3NpdGlvbihlLGwsaSxmLGgsMCl9cmV0dXJuIGV9ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7aSh0LGUse25hbWU6ImltYWdlcyIsaGFuZGxlSXRlbURl ZmF1bHRzOnN9KX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2Fy cmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NzYxLCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhlcyI6NzY1LCIuL2F0dHJpYnV0ZXMiOjYzNX1dLDYzODpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgi Li4vZHJhd2luZyIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMi KSxvPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIik7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHIscz10Ll9mdWxsTGF5b3V0LGw9 W10sYz17fSx1PVtdO2ZvcihyPTA7cjxzLmltYWdlcy5sZW5ndGg7cisrKXt2 YXIgaD1zLmltYWdlc1tyXTtpZihoLnZpc2libGUpaWYoImJlbG93Ij09PWgu bGF5ZXImJiJwYXBlciIhPT1oLnhyZWYmJiJwYXBlciIhPT1oLnlyZWYpe2U9 aC54cmVmK2gueXJlZjt2YXIgZj1zLl9wbG90c1tlXTtpZighZil7dS5wdXNo KGgpO2NvbnRpbnVlfWYubWFpbnBsb3QmJihlPWYubWFpbnBsb3QuaWQpLGNb ZV18fChjW2VdPVtdKSxjW2VdLnB1c2goaCl9ZWxzZSJhYm92ZSI9PT1oLmxh eWVyP2wucHVzaChoKTp1LnB1c2goaCl9dmFyIHA9e3g6e2xlZnQ6e3Npemlu ZzoieE1pbiIsb2Zmc2V0OjB9LGNlbnRlcjp7c2l6aW5nOiJ4TWlkIixvZmZz ZXQ6LS41fSxyaWdodDp7c2l6aW5nOiJ4TWF4IixvZmZzZXQ6LTF9fSx5Ont0 b3A6e3NpemluZzoiWU1pbiIsb2Zmc2V0OjB9LG1pZGRsZTp7c2l6aW5nOiJZ TWlkIixvZmZzZXQ6LS41fSxib3R0b206e3NpemluZzoiWU1heCIsb2Zmc2V0 Oi0xfX19O2Z1bmN0aW9uIGQoZSl7dmFyIHI9bi5zZWxlY3QodGhpcyk7aWYo dGhpcy5faW1nU3JjIT09ZS5zb3VyY2UpaWYoci5hdHRyKCJ4bWxucyIsby5z dmcpLGUuc291cmNlJiYiZGF0YToiPT09ZS5zb3VyY2Uuc2xpY2UoMCw1KSly LmF0dHIoInhsaW5rOmhyZWYiLGUuc291cmNlKSx0aGlzLl9pbWdTcmM9ZS5z b3VyY2U7ZWxzZXt2YXIgYT1uZXcgUHJvbWlzZShmdW5jdGlvbih0KXt2YXIg bj1uZXcgSW1hZ2U7ZnVuY3Rpb24gYSgpe3IucmVtb3ZlKCksdCgpfXRoaXMu aW1nPW4sbi5zZXRBdHRyaWJ1dGUoImNyb3NzT3JpZ2luIiwiYW5vbnltb3Vz Iiksbi5vbmVycm9yPWEsbi5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtlLndpZHRoPXRoaXMud2lk dGgsZS5oZWlnaHQ9dGhpcy5oZWlnaHQsZS5nZXRDb250ZXh0KCIyZCIpLmRy YXdJbWFnZSh0aGlzLDAsMCk7dmFyIG49ZS50b0RhdGFVUkwoImltYWdlL3Bu ZyIpO3IuYXR0cigieGxpbms6aHJlZiIsbiksdCgpfSxyLm9uKCJlcnJvciIs YSksbi5zcmM9ZS5zb3VyY2UsdGhpcy5faW1nU3JjPWUuc291cmNlfS5iaW5k KHRoaXMpKTt0Ll9wcm9taXNlcy5wdXNoKGEpfX1mdW5jdGlvbiBnKGUpe3Zh ciByPW4uc2VsZWN0KHRoaXMpLG89aS5nZXRGcm9tSWQodCxlLnhyZWYpLGw9 aS5nZXRGcm9tSWQodCxlLnlyZWYpLGM9cy5fc2l6ZSx1PW8/TWF0aC5hYnMo by5sMnAoZS5zaXpleCktby5sMnAoMCkpOmUuc2l6ZXgqYy53LGg9bD9NYXRo LmFicyhsLmwycChlLnNpemV5KS1sLmwycCgwKSk6ZS5zaXpleSpjLmgsZj11 KnAueFtlLnhhbmNob3JdLm9mZnNldCxkPWgqcC55W2UueWFuY2hvcl0ub2Zm c2V0LGc9cC54W2UueGFuY2hvcl0uc2l6aW5nK3AueVtlLnlhbmNob3JdLnNp emluZyx2PShvP28ucjJwKGUueCkrby5fb2Zmc2V0OmUueCpjLncrYy5sKStm LG09KGw/bC5yMnAoZS55KStsLl9vZmZzZXQ6Yy5oLWUueSpjLmgrYy50KStk O3N3aXRjaChlLnNpemluZyl7Y2FzZSJmaWxsIjpnKz0iIHNsaWNlIjticmVh aztjYXNlInN0cmV0Y2giOmc9Im5vbmUifXIuYXR0cih7eDp2LHk6bSx3aWR0 aDp1LGhlaWdodDpoLHByZXNlcnZlQXNwZWN0UmF0aW86ZyxvcGFjaXR5OmUu b3BhY2l0eX0pO3ZhciB5PShvP28uX2lkOiIiKSsobD9sLl9pZDoiIik7YS5z ZXRDbGlwVXJsKHIseT8iY2xpcCIrcy5fdWlkK3k6bnVsbCx0KX12YXIgdj1z Ll9pbWFnZUxvd2VyTGF5ZXIuc2VsZWN0QWxsKCJpbWFnZSIpLmRhdGEodSks bT1zLl9pbWFnZVVwcGVyTGF5ZXIuc2VsZWN0QWxsKCJpbWFnZSIpLmRhdGEo bCk7di5lbnRlcigpLmFwcGVuZCgiaW1hZ2UiKSxtLmVudGVyKCkuYXBwZW5k KCJpbWFnZSIpLHYuZXhpdCgpLnJlbW92ZSgpLG0uZXhpdCgpLnJlbW92ZSgp LHYuZWFjaChmdW5jdGlvbih0KXtkLmJpbmQodGhpcykodCksZy5iaW5kKHRo aXMpKHQpfSksbS5lYWNoKGZ1bmN0aW9uKHQpe2QuYmluZCh0aGlzKSh0KSxn LmJpbmQodGhpcykodCl9KTt2YXIgeT1PYmplY3Qua2V5cyhzLl9wbG90cyk7 Zm9yKHI9MDtyPHkubGVuZ3RoO3IrKyl7ZT15W3JdO3ZhciB4PXMuX3Bsb3Rz W2VdO2lmKHguaW1hZ2VsYXllcil7dmFyIGI9eC5pbWFnZWxheWVyLnNlbGVj dEFsbCgiaW1hZ2UiKS5kYXRhKGNbZV18fFtdKTtiLmVudGVyKCkuYXBwZW5k KCJpbWFnZSIpLGIuZXhpdCgpLnJlbW92ZSgpLGIuZWFjaChmdW5jdGlvbih0 KXtkLmJpbmQodGhpcykodCksZy5iaW5kKHRoaXMpKHQpfSl9fX19LHsiLi4v Li4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiOjY5NCwiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vZHJhd2luZyI6NjEzLGQzOjE2 NX1dLDYzOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToiaW1hZ2VzIixsYXlv dXRBdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERl ZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxpbmNsdWRlQmFzZVBsb3Q6dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2luY2x1ZGVfY29tcG9uZW50cyIpKCJpbWFn ZXMiKSxkcmF3OnQoIi4vZHJhdyIpLGNvbnZlcnRDb29yZHM6dCgiLi9jb252 ZXJ0X2Nvb3JkcyIpfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vaW5jbHVk ZV9jb21wb25lbnRzIjo3NzUsIi4vYXR0cmlidXRlcyI6NjM1LCIuL2NvbnZl cnRfY29vcmRzIjo2MzYsIi4vZGVmYXVsdHMiOjYzNywiLi9kcmF3Ijo2Mzh9 XSw2NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksYT10KCIuLi9jb2xvci9h dHRyaWJ1dGVzIik7ZS5leHBvcnRzPXtiZ2NvbG9yOnt2YWxUeXBlOiJjb2xv ciIsZWRpdFR5cGU6ImxlZ2VuZCJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJj b2xvciIsZGZsdDphLmRlZmF1bHRMaW5lLGVkaXRUeXBlOiJsZWdlbmQifSxi b3JkZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsZWRp dFR5cGU6ImxlZ2VuZCJ9LGZvbnQ6bih7ZWRpdFR5cGU6ImxlZ2VuZCJ9KSxv cmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidiIs ImgiXSxkZmx0OiJ2IixlZGl0VHlwZToibGVnZW5kIn0sdHJhY2VvcmRlcjp7 dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsicmV2ZXJzZWQiLCJncm91cGVk Il0sZXh0cmFzOlsibm9ybWFsIl0sZWRpdFR5cGU6ImxlZ2VuZCJ9LHRyYWNl Z3JvdXBnYXA6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxMCxlZGl0 VHlwZToibGVnZW5kIn0saXRlbXNpemluZzp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsidHJhY2UiLCJjb25zdGFudCJdLGRmbHQ6InRyYWNlIixl ZGl0VHlwZToibGVnZW5kIn0saXRlbWNsaWNrOnt2YWxUeXBlOiJlbnVtZXJh dGVkIix2YWx1ZXM6WyJ0b2dnbGUiLCJ0b2dnbGVvdGhlcnMiLCExXSxkZmx0 OiJ0b2dnbGUiLGVkaXRUeXBlOiJsZWdlbmQifSxpdGVtZG91YmxlY2xpY2s6 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvZ2dsZSIsInRvZ2ds ZW90aGVycyIsITFdLGRmbHQ6InRvZ2dsZW90aGVycyIsZWRpdFR5cGU6Imxl Z2VuZCJ9LHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozLGVkaXRU eXBlOiJsZWdlbmQifSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJhdXRvIiwibGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZGZsdDoi bGVmdCIsZWRpdFR5cGU6ImxlZ2VuZCJ9LHk6e3ZhbFR5cGU6Im51bWJlciIs bWluOi0yLG1heDozLGVkaXRUeXBlOiJsZWdlbmQifSx5YW5jaG9yOnt2YWxU eXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlkZGxl IiwiYm90dG9tIl0sZWRpdFR5cGU6ImxlZ2VuZCJ9LHVpcmV2aXNpb246e3Zh bFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUifSx2YWxpZ246e3ZhbFR5cGU6 ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCIsIm1pZGRsZSIsImJvdHRvbSJd LGRmbHQ6Im1pZGRsZSIsZWRpdFR5cGU6ImxlZ2VuZCJ9LHRpdGxlOnt0ZXh0 Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImxlZ2VuZCJ9 LGZvbnQ6bih7ZWRpdFR5cGU6ImxlZ2VuZCJ9KSxzaWRlOnt2YWxUeXBlOiJl bnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJsZWZ0IiwidG9wIGxlZnQiXSxl ZGl0VHlwZToibGVnZW5kIn0sZWRpdFR5cGU6ImxlZ2VuZCJ9LGVkaXRUeXBl OiJsZWdlbmQifX0seyIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5 MSwiLi4vY29sb3IvYXR0cmlidXRlcyI6NTkxfV0sNjQxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17c2Nyb2xsQmFyV2lkdGg6 NixzY3JvbGxCYXJNaW5IZWlnaHQ6MjAsc2Nyb2xsQmFyQ29sb3I6IiM4MDhC QTQiLHNjcm9sbEJhck1hcmdpbjo0LHNjcm9sbEJhckVudGVyQXR0cnM6e3J4 OjIwLHJ5OjMsd2lkdGg6MCxoZWlnaHQ6MH0sdGl0bGVQYWQ6Mix0ZXh0R2Fw OjQwLGl0ZW1HYXA6NX19LHt9XSw2NDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4u L2xpYiIpLGk9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLG89 dCgiLi9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy9sYXlvdXRfYXR0 cmlidXRlcyIpLGw9dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyKXtmb3IodmFyIGM9dC5sZWdlbmR8fHt9LHU9MCxoPSExLGY9Im5v cm1hbCIscD0wO3A8ci5sZW5ndGg7cCsrKXt2YXIgZD1yW3BdO2QudmlzaWJs ZSYmKChkLnNob3dsZWdlbmR8fGQuX2RmbHRTaG93TGVnZW5kJiYhKGQuX21v ZHVsZSYmZC5fbW9kdWxlLmF0dHJpYnV0ZXMmJmQuX21vZHVsZS5hdHRyaWJ1 dGVzLnNob3dsZWdlbmQmJiExPT09ZC5fbW9kdWxlLmF0dHJpYnV0ZXMuc2hv d2xlZ2VuZC5kZmx0KSkmJih1KyssZC5zaG93bGVnZW5kJiYoaD0hMCwobi50 cmFjZUlzKGQsInBpZS1saWtlIil8fCEwPT09ZC5faW5wdXQuc2hvd2xlZ2Vu ZCkmJnUrKykpLChuLnRyYWNlSXMoZCwiYmFyIikmJiJzdGFjayI9PT1lLmJh cm1vZGV8fC0xIT09WyJ0b25leHR4IiwidG9uZXh0eSJdLmluZGV4T2YoZC5m aWxsKSkmJihmPWwuaXNHcm91cGVkKHt0cmFjZW9yZGVyOmZ9KT8iZ3JvdXBl ZCtyZXZlcnNlZCI6InJldmVyc2VkIiksdm9pZCAwIT09ZC5sZWdlbmRncm91 cCYmIiIhPT1kLmxlZ2VuZGdyb3VwJiYoZj1sLmlzUmV2ZXJzZWQoe3RyYWNl b3JkZXI6Zn0pPyJyZXZlcnNlZCtncm91cGVkIjoiZ3JvdXBlZCIpKX12YXIg Zz1hLmNvZXJjZSh0LGUscywic2hvd2xlZ2VuZCIsaCYmdT4xKTtpZighMSE9 PWd8fGMudWlyZXZpc2lvbil7dmFyIHY9aS5uZXdDb250YWluZXIoZSwibGVn ZW5kIik7aWYoXygidWlyZXZpc2lvbiIsZS51aXJldmlzaW9uKSwhMSE9PWcp e18oImJnY29sb3IiLGUucGFwZXJfYmdjb2xvciksXygiYm9yZGVyY29sb3Ii KSxfKCJib3JkZXJ3aWR0aCIpLGEuY29lcmNlRm9udChfLCJmb250IixlLmZv bnQpO3ZhciBtLHkseCxiPV8oIm9yaWVudGF0aW9uIik7ImgiPT09Yj8obT0w LG4uZ2V0Q29tcG9uZW50TWV0aG9kKCJyYW5nZXNsaWRlciIsImlzVmlzaWJs ZSIpKHQueGF4aXMpPyh5PTEuMSx4PSJib3R0b20iKTooeT0tLjEseD0idG9w IikpOihtPTEuMDIseT0xLHg9ImF1dG8iKSxfKCJ0cmFjZW9yZGVyIixmKSxs LmlzR3JvdXBlZChlLmxlZ2VuZCkmJl8oInRyYWNlZ3JvdXBnYXAiKSxfKCJp dGVtc2l6aW5nIiksXygiaXRlbWNsaWNrIiksXygiaXRlbWRvdWJsZWNsaWNr IiksXygieCIsbSksXygieGFuY2hvciIpLF8oInkiLHkpLF8oInlhbmNob3Ii LHgpLF8oInZhbGlnbiIpLGEubm9uZU9yQWxsKGMsdixbIngiLCJ5Il0pLF8o InRpdGxlLnRleHQiKSYmKF8oInRpdGxlLnNpZGUiLCJoIj09PWI/ImxlZnQi OiJ0b3AiKSxhLmNvZXJjZUZvbnQoXywidGl0bGUuZm9udCIsZS5mb250KSl9 fWZ1bmN0aW9uIF8odCxlKXtyZXR1cm4gYS5jb2VyY2UoYyx2LG8sdCxlKX19 fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBs YXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2xheW91dF9hdHRyaWJ1dGVzIjo4MTcs Ii4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vYXR0cmlidXRlcyI6NjQwLCIuL2hl bHBlcnMiOjY0Nn1dLDY0MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9w bG90cy9wbG90cyIpLG89dCgiLi4vLi4vcmVnaXN0cnkiKSxzPXQoIi4uLy4u L2xpYi9ldmVudHMiKSxsPXQoIi4uL2RyYWdlbGVtZW50IiksYz10KCIuLi9k cmF3aW5nIiksdT10KCIuLi9jb2xvciIpLGg9dCgiLi4vLi4vbGliL3N2Z190 ZXh0X3V0aWxzIiksZj10KCIuL2hhbmRsZV9jbGljayIpLHA9dCgiLi9jb25z dGFudHMiKSxkPXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKSxnPWQu TElORV9TUEFDSU5HLHY9ZC5GUk9NX1RMLG09ZC5GUk9NX0JSLHk9dCgiLi9n ZXRfbGVnZW5kX2RhdGEiKSx4PXQoIi4vc3R5bGUiKSxiPXQoIi4vaGVscGVy cyIpO2Z1bmN0aW9uIF8odCxlLHIsbixhKXt2YXIgaT1yLmRhdGEoKVswXVsw XS50cmFjZSxsPXtldmVudDphLG5vZGU6ci5ub2RlKCksY3VydmVOdW1iZXI6 aS5pbmRleCxleHBhbmRlZEluZGV4OmkuX2V4cGFuZGVkSW5kZXgsZGF0YTp0 LmRhdGEsbGF5b3V0OnQubGF5b3V0LGZyYW1lczp0Ll90cmFuc2l0aW9uRGF0 YS5fZnJhbWVzLGNvbmZpZzp0Ll9jb250ZXh0LGZ1bGxEYXRhOnQuX2Z1bGxE YXRhLGZ1bGxMYXlvdXQ6dC5fZnVsbExheW91dH07aWYoaS5fZ3JvdXAmJihs Lmdyb3VwPWkuX2dyb3VwKSxvLnRyYWNlSXMoaSwicGllLWxpa2UiKSYmKGwu bGFiZWw9ci5kYXR1bSgpWzBdLmxhYmVsKSwhMSE9PXMudHJpZ2dlckhhbmRs ZXIodCwicGxvdGx5X2xlZ2VuZGNsaWNrIixsKSlpZigxPT09billLl9jbGlj a1RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2Yocix0LG4pfSx0Ll9j b250ZXh0LmRvdWJsZUNsaWNrRGVsYXkpO2Vsc2UgaWYoMj09PW4pe2UuX2Ns aWNrVGltZW91dCYmY2xlYXJUaW1lb3V0KGUuX2NsaWNrVGltZW91dCksdC5f bGVnZW5kTW91c2VEb3duVGltZT0wLCExIT09cy50cmlnZ2VySGFuZGxlcih0 LCJwbG90bHlfbGVnZW5kZG91YmxlY2xpY2siLGwpJiZmKHIsdCxuKX19ZnVu Y3Rpb24gdyh0LGUpe3ZhciByPXQuZGF0YSgpWzBdWzBdLG49ZS5fZnVsbExh eW91dC5sZWdlbmQsaT1yLnRyYWNlLHM9by50cmFjZUlzKGksInBpZS1saWtl IiksbD1pLmluZGV4LHU9ZS5fY29udGV4dC5lZGl0cy5sZWdlbmRUZXh0JiYh cyxmPW4uX21heE5hbWVMZW5ndGgsZD1zP3IubGFiZWw6aS5uYW1lO2kuX21l dGEmJihkPWEudGVtcGxhdGVTdHJpbmcoZCxpLl9tZXRhKSk7dmFyIGc9YS5l bnN1cmVTaW5nbGUodCwidGV4dCIsImxlZ2VuZHRleHQiKTtnLmF0dHIoInRl eHQtYW5jaG9yIiwic3RhcnQiKS5jbGFzc2VkKCJ1c2VyLXNlbGVjdC1ub25l IiwhMCkuY2FsbChjLmZvbnQsbi5mb250KS50ZXh0KHU/ayhkLGYpOmQpLGgu cG9zaXRpb25UZXh0KGcscC50ZXh0R2FwLDApLHU/Zy5jYWxsKGgubWFrZUVk aXRhYmxlLHtnZDplLHRleHQ6ZH0pLmNhbGwoTSx0LGUpLm9uKCJlZGl0Iixm dW5jdGlvbihuKXt0aGlzLnRleHQoayhuLGYpKS5jYWxsKE0sdCxlKTt2YXIg aT1yLnRyYWNlLl9mdWxsSW5wdXR8fHt9LHM9e307aWYoby5oYXNUcmFuc2Zv cm0oaSwiZ3JvdXBieSIpKXt2YXIgYz1vLmdldFRyYW5zZm9ybUluZGljZXMo aSwiZ3JvdXBieSIpLHU9Y1tjLmxlbmd0aC0xXSxoPWEua2V5ZWRDb250YWlu ZXIoaSwidHJhbnNmb3Jtc1siK3UrIl0uc3R5bGVzIiwidGFyZ2V0IiwidmFs dWUubmFtZSIpO2guc2V0KHIudHJhY2UuX2dyb3VwLG4pLHM9aC5jb25zdHJ1 Y3RVcGRhdGUoKX1lbHNlIHMubmFtZT1uO3JldHVybiBvLmNhbGwoIl9ndWlS ZXN0eWxlIixlLHMsbCl9KTpNKGcsdCxlKX1mdW5jdGlvbiBrKHQsZSl7dmFy IHI9TWF0aC5tYXgoNCxlKTtpZih0JiZ0LnRyaW0oKS5sZW5ndGg+PXIvMily ZXR1cm4gdDtmb3IodmFyIG49ci0odD10fHwiIikubGVuZ3RoO24+MDtuLS0p dCs9IiAiO3JldHVybiB0fWZ1bmN0aW9uIFQodCxlKXt2YXIgcixpPWUuX2Nv bnRleHQuZG91YmxlQ2xpY2tEZWxheSxvPTEscz1hLmVuc3VyZVNpbmdsZSh0 LCJyZWN0IiwibGVnZW5kdG9nZ2xlIixmdW5jdGlvbih0KXt0LnN0eWxlKCJj dXJzb3IiLCJwb2ludGVyIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwi KS5jYWxsKHUuZmlsbCwicmdiYSgwLDAsMCwwKSIpfSk7cy5vbigibW91c2Vk b3duIixmdW5jdGlvbigpeyhyPShuZXcgRGF0ZSkuZ2V0VGltZSgpKS1lLl9s ZWdlbmRNb3VzZURvd25UaW1lPGk/bys9MToobz0xLGUuX2xlZ2VuZE1vdXNl RG93blRpbWU9cil9KSxzLm9uKCJtb3VzZXVwIixmdW5jdGlvbigpe2lmKCFl Ll9kcmFnZ2VkJiYhZS5fZWRpdGluZyl7dmFyIHI9ZS5fZnVsbExheW91dC5s ZWdlbmQ7KG5ldyBEYXRlKS5nZXRUaW1lKCktZS5fbGVnZW5kTW91c2VEb3du VGltZT5pJiYobz1NYXRoLm1heChvLTEsMSkpLF8oZSxyLHQsbyxuLmV2ZW50 KX19KX1mdW5jdGlvbiBNKHQsZSxyKXtoLmNvbnZlcnRUb1RzcGFucyh0LHIs ZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlKXt2YXIgcj10LmRhdGEoKVswXVsw XTtpZihyJiYhci50cmFjZS5zaG93bGVnZW5kKXJldHVybiB2b2lkIHQucmVt b3ZlKCk7dmFyIG4sYSxpPXQuc2VsZWN0KCJnW2NsYXNzKj1tYXRoLWdyb3Vw XSIpLG89aS5ub2RlKCkscz1lLl9mdWxsTGF5b3V0LmxlZ2VuZC5ib3JkZXJ3 aWR0aCxsPWUuX2Z1bGxMYXlvdXQubGVnZW5kLHU9KHI/bDpsLnRpdGxlKS5m b250LnNpemUqZztpZihvKXt2YXIgZj1jLmJCb3gobyk7bj1mLmhlaWdodCxh PWYud2lkdGgscj9jLnNldFRyYW5zbGF0ZShpLDAsLjI1Km4pOmMuc2V0VHJh bnNsYXRlKGkscywuNzUqbitzKX1lbHNle3ZhciBkPXQuc2VsZWN0KHI/Ii5s ZWdlbmR0ZXh0IjoiLmxlZ2VuZHRpdGxldGV4dCIpLHY9aC5saW5lQ291bnQo ZCksbT1kLm5vZGUoKTtuPXUqdixhPW0/Yy5iQm94KG0pLndpZHRoOjA7dmFy IHk9dSooKHYtMSkvMi0uMyk7cj9oLnBvc2l0aW9uVGV4dChkLHAudGV4dEdh cCwteSk6aC5wb3NpdGlvblRleHQoZCxwLnRpdGxlUGFkK3MsdStzKX1yPyhy LmxpbmVIZWlnaHQ9dSxyLmhlaWdodD1NYXRoLm1heChuLDE2KSszLHIud2lk dGg9YSk6KGwuX3RpdGxlV2lkdGg9YSxsLl90aXRsZUhlaWdodD1uKX0oZSxy KX0pfWZ1bmN0aW9uIEEodCl7cmV0dXJuIGEuaXNSaWdodEFuY2hvcih0KT8i cmlnaHQiOmEuaXNDZW50ZXJBbmNob3IodCk/ImNlbnRlciI6ImxlZnQifWZ1 bmN0aW9uIFModCl7cmV0dXJuIGEuaXNCb3R0b21BbmNob3IodCk/ImJvdHRv bSI6YS5pc01pZGRsZUFuY2hvcih0KT8ibWlkZGxlIjoidG9wIn1lLmV4cG9y dHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPSJsZWdlbmQi K2UuX3VpZDtpZihlLl9pbmZvbGF5ZXImJnQuY2FsY2RhdGEpe3QuX2xlZ2Vu ZE1vdXNlRG93blRpbWV8fCh0Ll9sZWdlbmRNb3VzZURvd25UaW1lPTApO3Zh ciBzPWUubGVnZW5kLGg9ZS5zaG93bGVnZW5kJiZ5KHQuY2FsY2RhdGEscyks Zj1lLmhpZGRlbmxhYmVsc3x8W107aWYoIWUuc2hvd2xlZ2VuZHx8IWgubGVu Z3RoKXJldHVybiBlLl9pbmZvbGF5ZXIuc2VsZWN0QWxsKCIubGVnZW5kIiku cmVtb3ZlKCksZS5fdG9wZGVmcy5zZWxlY3QoIiMiK3IpLnJlbW92ZSgpLGku YXV0b01hcmdpbih0LCJsZWdlbmQiKTt2YXIgZD1hLmVuc3VyZVNpbmdsZShl Ll9pbmZvbGF5ZXIsImciLCJsZWdlbmQiLGZ1bmN0aW9uKHQpe3QuYXR0cigi cG9pbnRlci1ldmVudHMiLCJhbGwiKX0pLGc9YS5lbnN1cmVTaW5nbGVCeUlk KGUuX3RvcGRlZnMsImNsaXBQYXRoIixyLGZ1bmN0aW9uKHQpe3QuYXBwZW5k KCJyZWN0Iil9KSxrPWEuZW5zdXJlU2luZ2xlKGQsInJlY3QiLCJiZyIsZnVu Y3Rpb24odCl7dC5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2Vz Iil9KTtrLmNhbGwodS5zdHJva2Uscy5ib3JkZXJjb2xvcikuY2FsbCh1LmZp bGwscy5iZ2NvbG9yKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixzLmJvcmRlcndp ZHRoKyJweCIpO3ZhciBFPWEuZW5zdXJlU2luZ2xlKGQsImciLCJzY3JvbGxi b3giKSxMPXMudGl0bGU7aWYocy5fdGl0bGVXaWR0aD0wLHMuX3RpdGxlSGVp Z2h0PTAsTC50ZXh0KXt2YXIgQz1hLmVuc3VyZVNpbmdsZShFLCJ0ZXh0Iiwi bGVnZW5kdGl0bGV0ZXh0Iik7Qy5hdHRyKCJ0ZXh0LWFuY2hvciIsInN0YXJ0 IikuY2xhc3NlZCgidXNlci1zZWxlY3Qtbm9uZSIsITApLmNhbGwoYy5mb250 LEwuZm9udCkudGV4dChMLnRleHQpLE0oQyxFLHQpfXZhciBQPWEuZW5zdXJl U2luZ2xlKGQsInJlY3QiLCJzY3JvbGxiYXIiLGZ1bmN0aW9uKHQpe3QuYXR0 cihwLnNjcm9sbEJhckVudGVyQXR0cnMpLmNhbGwodS5maWxsLHAuc2Nyb2xs QmFyQ29sb3IpfSksTz1FLnNlbGVjdEFsbCgiZy5ncm91cHMiKS5kYXRhKGgp O08uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImdyb3VwcyIp LE8uZXhpdCgpLnJlbW92ZSgpO3ZhciB6PU8uc2VsZWN0QWxsKCJnLnRyYWNl cyIpLmRhdGEoYS5pZGVudGl0eSk7ei5lbnRlcigpLmFwcGVuZCgiZyIpLmF0 dHIoImNsYXNzIiwidHJhY2VzIiksei5leGl0KCkucmVtb3ZlKCksei5zdHls ZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZTtyZXR1 cm4gby50cmFjZUlzKGUsInBpZS1saWtlIik/LTEhPT1mLmluZGV4T2YodFsw XS5sYWJlbCk/LjU6MToibGVnZW5kb25seSI9PT1lLnZpc2libGU/LjU6MX0p LmVhY2goZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5jYWxsKHcsdCl9KS5j YWxsKHgsdCkuZWFjaChmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMpLmNhbGwo VCx0KX0pLGEuc3luY09yQXN5bmMoW2kucHJldmlvdXNQcm9taXNlcyxmdW5j dGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUscil7dmFyIGE9dC5fZnVsbExh eW91dCxpPWEubGVnZW5kLG89YS5fc2l6ZSxzPWIuaXNWZXJ0aWNhbChpKSxs PWIuaXNHcm91cGVkKGkpLHU9aS5ib3JkZXJ3aWR0aCxoPTIqdSxmPXAudGV4 dEdhcCxkPXAuaXRlbUdhcCxnPTIqKHUrZCksdj1TKGkpLG09aS55PDB8fDA9 PT1pLnkmJiJ0b3AiPT09dix5PWkueT4xfHwxPT09aS55JiYiYm90dG9tIj09 PXY7aS5fbWF4SGVpZ2h0PU1hdGgubWF4KG18fHk/YS5oZWlnaHQvMjpvLmgs MzApO3ZhciB4PTA7aS5fd2lkdGg9MCxpLl9oZWlnaHQ9MDt2YXIgXz1mdW5j dGlvbih0KXt2YXIgZT0wLHI9MCxuPXQudGl0bGUuc2lkZTtuJiYoLTEhPT1u LmluZGV4T2YoImxlZnQiKSYmKGU9dC5fdGl0bGVXaWR0aCksLTEhPT1uLmlu ZGV4T2YoInRvcCIpJiYocj10Ll90aXRsZUhlaWdodCkpO3JldHVybltlLHJd fShpKTtpZihzKXIuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLmhlaWdo dDtjLnNldFRyYW5zbGF0ZSh0aGlzLHUrX1swXSx1K19bMV0raS5faGVpZ2h0 K2UvMitkKSxpLl9oZWlnaHQrPWUsaS5fd2lkdGg9TWF0aC5tYXgoaS5fd2lk dGgsdFswXS53aWR0aCl9KSx4PWYraS5fd2lkdGgsaS5fd2lkdGgrPWQrZito LGkuX2hlaWdodCs9ZyxsJiYoZS5lYWNoKGZ1bmN0aW9uKHQsZSl7Yy5zZXRU cmFuc2xhdGUodGhpcywwLGUqaS50cmFjZWdyb3VwZ2FwKX0pLGkuX2hlaWdo dCs9KGkuX2xncm91cHNMZW5ndGgtMSkqaS50cmFjZWdyb3VwZ2FwKTtlbHNl e3ZhciB3PUEoaSksaz1pLng8MHx8MD09PWkueCYmInJpZ2h0Ij09PXcsVD1p Lng+MXx8MT09PWkueCYmImxlZnQiPT09dyxNPXl8fG0sRT1hLndpZHRoLzI7 aS5fbWF4V2lkdGg9TWF0aC5tYXgoaz9NJiYibGVmdCI9PT13P28ubCtvLnc6 RTpUP00mJiJyaWdodCI9PT13P28ucitvLnc6RTpvLncsMipmKTt2YXIgTD0w LEM9MDtyLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS53aWR0aCtmO0w9 TWF0aC5tYXgoTCxlKSxDKz1lfSkseD1udWxsO3ZhciBQPTA7aWYobCl7dmFy IE89MCx6PTAsST0wO2UuZWFjaChmdW5jdGlvbigpe3ZhciB0PTAsZT0wO24u c2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy50cmFjZXMiKS5lYWNoKGZ1bmN0 aW9uKHIpe3ZhciBuPXJbMF0uaGVpZ2h0O2Muc2V0VHJhbnNsYXRlKHRoaXMs X1swXSxfWzFdK3UrZCtuLzIrZSksZSs9bix0PU1hdGgubWF4KHQsZityWzBd LndpZHRoKX0pLE89TWF0aC5tYXgoTyxlKTt2YXIgcj10K2Q7cit1K3o+aS5f bWF4V2lkdGgmJihQPU1hdGgubWF4KFAseiksej0wLEkrPU8raS50cmFjZWdy b3VwZ2FwLE89ZSksYy5zZXRUcmFuc2xhdGUodGhpcyx6LEkpLHorPXJ9KSxp Ll93aWR0aD1NYXRoLm1heChQLHopK3UsaS5faGVpZ2h0PUkrTytnfWVsc2V7 dmFyIEQ9ci5zaXplKCksUj1DK2grKEQtMSkqZDxpLl9tYXhXaWR0aCxGPTAs Qj0wLE49MCxqPTA7ci5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0uaGVp Z2h0LHI9Zit0WzBdLndpZHRoLG49KFI/cjpMKStkO24rdStCPmkuX21heFdp ZHRoJiYoUD1NYXRoLm1heChQLGopLEI9MCxOKz1GLGkuX2hlaWdodCs9RixG PTApLGMuc2V0VHJhbnNsYXRlKHRoaXMsX1swXSt1K0IsX1sxXSt1K04rZS8y K2QpLGo9QityK2QsQis9bixGPU1hdGgubWF4KEYsZSl9KSxSPyhpLl93aWR0 aD1CK2gsaS5faGVpZ2h0PUYrZyk6KGkuX3dpZHRoPU1hdGgubWF4KFAsaikr aCxpLl9oZWlnaHQrPUYrZyl9fWkuX3dpZHRoPU1hdGguY2VpbChNYXRoLm1h eChpLl93aWR0aCtfWzBdLGkuX3RpdGxlV2lkdGgrMioodStwLnRpdGxlUGFk KSkpLGkuX2hlaWdodD1NYXRoLmNlaWwoTWF0aC5tYXgoaS5faGVpZ2h0K19b MV0saS5fdGl0bGVIZWlnaHQrMioodStwLml0ZW1HYXApKSksaS5fZWZmSGVp Z2h0PU1hdGgubWluKGkuX2hlaWdodCxpLl9tYXhIZWlnaHQpO3ZhciBWPXQu X2NvbnRleHQuZWRpdHMsVT1WLmxlZ2VuZFRleHR8fFYubGVnZW5kUG9zaXRp b247ci5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLnNl bGVjdCgiLmxlZ2VuZHRvZ2dsZSIpLHI9dFswXS5oZWlnaHQsYT1VP2Y6eHx8 Zit0WzBdLndpZHRoO3N8fChhKz1kLzIpLGMuc2V0UmVjdChlLDAsLXIvMixh LHIpfSl9KHQsTyx6KX0sZnVuY3Rpb24oKXtpZighZnVuY3Rpb24odCl7dmFy IGU9dC5fZnVsbExheW91dC5sZWdlbmQscj1BKGUpLG49UyhlKTtyZXR1cm4g aS5hdXRvTWFyZ2luKHQsImxlZ2VuZCIse3g6ZS54LHk6ZS55LGw6ZS5fd2lk dGgqdltyXSxyOmUuX3dpZHRoKm1bcl0sYjplLl9lZmZIZWlnaHQqbVtuXSx0 OmUuX2VmZkhlaWdodCp2W25dfSl9KHQpKXt2YXIgdSxoLGYseSx4PWUuX3Np emUsYj1zLmJvcmRlcndpZHRoLHc9eC5sK3gudypzLngtdltBKHMpXSpzLl93 aWR0aCxUPXgudCt4LmgqKDEtcy55KS12W1MocyldKnMuX2VmZkhlaWdodDtp ZihlLm1hcmdpbi5hdXRvZXhwYW5kKXt2YXIgTT13LEw9VDt3PWEuY29uc3Ry YWluKHcsMCxlLndpZHRoLXMuX3dpZHRoKSxUPWEuY29uc3RyYWluKFQsMCxl LmhlaWdodC1zLl9lZmZIZWlnaHQpLHchPT1NJiZhLmxvZygiQ29uc3RyYWlu IGxlZ2VuZC54IHRvIG1ha2UgbGVnZW5kIGZpdCBpbnNpZGUgZ3JhcGgiKSxU IT09TCYmYS5sb2coIkNvbnN0cmFpbiBsZWdlbmQueSB0byBtYWtlIGxlZ2Vu ZCBmaXQgaW5zaWRlIGdyYXBoIil9aWYoYy5zZXRUcmFuc2xhdGUoZCx3LFQp LFAub24oIi5kcmFnIixudWxsKSxkLm9uKCJ3aGVlbCIsbnVsbCkscy5faGVp Z2h0PD1zLl9tYXhIZWlnaHR8fHQuX2NvbnRleHQuc3RhdGljUGxvdClrLmF0 dHIoe3dpZHRoOnMuX3dpZHRoLWIsaGVpZ2h0OnMuX2VmZkhlaWdodC1iLHg6 Yi8yLHk6Yi8yfSksYy5zZXRUcmFuc2xhdGUoRSwwLDApLGcuc2VsZWN0KCJy ZWN0IikuYXR0cih7d2lkdGg6cy5fd2lkdGgtMipiLGhlaWdodDpzLl9lZmZI ZWlnaHQtMipiLHg6Yix5OmJ9KSxjLnNldENsaXBVcmwoRSxyLHQpLGMuc2V0 UmVjdChQLDAsMCwwLDApLGRlbGV0ZSBzLl9zY3JvbGxZO2Vsc2V7dmFyIEMs Tyx6LEk9TWF0aC5tYXgocC5zY3JvbGxCYXJNaW5IZWlnaHQscy5fZWZmSGVp Z2h0KnMuX2VmZkhlaWdodC9zLl9oZWlnaHQpLEQ9cy5fZWZmSGVpZ2h0LUkt MipwLnNjcm9sbEJhck1hcmdpbixSPXMuX2hlaWdodC1zLl9lZmZIZWlnaHQs Rj1EL1IsQj1NYXRoLm1pbihzLl9zY3JvbGxZfHwwLFIpO2suYXR0cih7d2lk dGg6cy5fd2lkdGgtMipiK3Auc2Nyb2xsQmFyV2lkdGgrcC5zY3JvbGxCYXJN YXJnaW4saGVpZ2h0OnMuX2VmZkhlaWdodC1iLHg6Yi8yLHk6Yi8yfSksZy5z ZWxlY3QoInJlY3QiKS5hdHRyKHt3aWR0aDpzLl93aWR0aC0yKmIrcC5zY3Jv bGxCYXJXaWR0aCtwLnNjcm9sbEJhck1hcmdpbixoZWlnaHQ6cy5fZWZmSGVp Z2h0LTIqYix4OmIseTpiK0J9KSxjLnNldENsaXBVcmwoRSxyLHQpLFYoQixJ LEYpLGQub24oIndoZWVsIixmdW5jdGlvbigpe1YoQj1hLmNvbnN0cmFpbihz Ll9zY3JvbGxZK24uZXZlbnQuZGVsdGFZL0QqUiwwLFIpLEksRiksMCE9PUIm JkIhPT1SJiZuLmV2ZW50LnByZXZlbnREZWZhdWx0KCl9KTt2YXIgTj1uLmJl aGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixmdW5jdGlvbigpe3ZhciB0 PW4uZXZlbnQuc291cmNlRXZlbnQ7Qz0idG91Y2hzdGFydCI9PT10LnR5cGU/ dC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOnQuY2xpZW50WSx6PUJ9KS5v bigiZHJhZyIsZnVuY3Rpb24oKXt2YXIgdD1uLmV2ZW50LnNvdXJjZUV2ZW50 OzI9PT10LmJ1dHRvbnN8fHQuY3RybEtleXx8KE89InRvdWNobW92ZSI9PT10 LnR5cGU/dC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOnQuY2xpZW50WSxW KEI9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPShyLWUpL0YrdDtyZXR1cm4gYS5j b25zdHJhaW4obiwwLFIpfSh6LEMsTyksSSxGKSl9KTtQLmNhbGwoTik7dmFy IGo9bi5iZWhhdmlvci5kcmFnKCkub24oImRyYWdzdGFydCIsZnVuY3Rpb24o KXt2YXIgdD1uLmV2ZW50LnNvdXJjZUV2ZW50OyJ0b3VjaHN0YXJ0Ij09PXQu dHlwZSYmKEM9dC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZLHo9Qil9KS5v bigiZHJhZyIsZnVuY3Rpb24oKXt2YXIgdD1uLmV2ZW50LnNvdXJjZUV2ZW50 OyJ0b3VjaG1vdmUiPT09dC50eXBlJiYoTz10LmNoYW5nZWRUb3VjaGVzWzBd LmNsaWVudFksVihCPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj0oZS1yKS9GK3Q7 cmV0dXJuIGEuY29uc3RyYWluKG4sMCxSKX0oeixDLE8pLEksRikpfSk7RS5j YWxsKGopfWlmKHQuX2NvbnRleHQuZWRpdHMubGVnZW5kUG9zaXRpb24pZC5j bGFzc2VkKCJjdXJzb3ItbW92ZSIsITApLGwuaW5pdCh7ZWxlbWVudDpkLm5v ZGUoKSxnZDp0LHByZXBGbjpmdW5jdGlvbigpe3ZhciB0PWMuZ2V0VHJhbnNs YXRlKGQpO2Y9dC54LHk9dC55fSxtb3ZlRm46ZnVuY3Rpb24odCxlKXt2YXIg cj1mK3Qsbj15K2U7Yy5zZXRUcmFuc2xhdGUoZCxyLG4pLHU9bC5hbGlnbihy LDAseC5sLHgubCt4Lncscy54YW5jaG9yKSxoPWwuYWxpZ24obiwwLHgudCt4 LmgseC50LHMueWFuY2hvcil9LGRvbmVGbjpmdW5jdGlvbigpe3ZvaWQgMCE9 PXUmJnZvaWQgMCE9PWgmJm8uY2FsbCgiX2d1aVJlbGF5b3V0Iix0LHsibGVn ZW5kLngiOnUsImxlZ2VuZC55IjpofSl9LGNsaWNrRm46ZnVuY3Rpb24ocixu KXt2YXIgYT1lLl9pbmZvbGF5ZXIuc2VsZWN0QWxsKCJnLnRyYWNlcyIpLmZp bHRlcihmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRS ZWN0KCk7cmV0dXJuIG4uY2xpZW50WD49dC5sZWZ0JiZuLmNsaWVudFg8PXQu cmlnaHQmJm4uY2xpZW50WT49dC50b3AmJm4uY2xpZW50WTw9dC5ib3R0b219 KTthLnNpemUoKT4wJiZfKHQsZCxhLHIsbil9fSl9ZnVuY3Rpb24gVihlLHIs bil7cy5fc2Nyb2xsWT10Ll9mdWxsTGF5b3V0LmxlZ2VuZC5fc2Nyb2xsWT1l LGMuc2V0VHJhbnNsYXRlKEUsMCwtZSksYy5zZXRSZWN0KFAscy5fd2lkdGgs cC5zY3JvbGxCYXJNYXJnaW4rZSpuLHAuc2Nyb2xsQmFyV2lkdGgsciksZy5z ZWxlY3QoInJlY3QiKS5hdHRyKCJ5IixiK2UpfX1dLHQpfX19LHsiLi4vLi4v Y29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9saWIiOjcxNywiLi4v Li4vbGliL2V2ZW50cyI6NzA3LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMi Ojc0MSwiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNiwiLi4vLi4vcmVnaXN0cnki Ojg0NiwiLi4vY29sb3IiOjU5MiwiLi4vZHJhZ2VsZW1lbnQiOjYxMCwiLi4v ZHJhd2luZyI6NjEzLCIuL2NvbnN0YW50cyI6NjQxLCIuL2dldF9sZWdlbmRf ZGF0YSI6NjQ0LCIuL2hhbmRsZV9jbGljayI6NjQ1LCIuL2hlbHBlcnMiOjY0 NiwiLi9zdHlsZSI6NjQ4LGQzOjE2NX1dLDY0NDpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgi Li9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsaSxv PXt9LHM9W10sbD0hMSxjPXt9LHU9MCxoPTA7ZnVuY3Rpb24gZih0LHIpe2lm KCIiIT09dCYmYS5pc0dyb3VwZWQoZSkpLTE9PT1zLmluZGV4T2YodCk/KHMu cHVzaCh0KSxsPSEwLG9bdF09W1tyXV0pOm9bdF0ucHVzaChbcl0pO2Vsc2V7 dmFyIG49In5+aSIrdTtzLnB1c2gobiksb1tuXT1bW3JdXSx1Kyt9fWZvcihy PTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBwPXRbcl0sZD1wWzBdLGc9ZC50cmFj ZSx2PWcubGVnZW5kZ3JvdXA7aWYoZy52aXNpYmxlJiZnLnNob3dsZWdlbmQp aWYobi50cmFjZUlzKGcsInBpZS1saWtlIikpZm9yKGNbdl18fChjW3ZdPXt9 KSxpPTA7aTxwLmxlbmd0aDtpKyspe3ZhciBtPXBbaV0ubGFiZWw7Y1t2XVtt XXx8KGYodix7bGFiZWw6bSxjb2xvcjpwW2ldLmNvbG9yLGk6cFtpXS5pLHRy YWNlOmcscHRzOnBbaV0ucHRzfSksY1t2XVttXT0hMCxoPU1hdGgubWF4KGgs KG18fCIiKS5sZW5ndGgpKX1lbHNlIGYodixkKSxoPU1hdGgubWF4KGgsKGcu bmFtZXx8IiIpLmxlbmd0aCl9aWYoIXMubGVuZ3RoKXJldHVybltdO3ZhciB5 LHgsYj1zLmxlbmd0aDtpZihsJiZhLmlzR3JvdXBlZChlKSlmb3IoeD1uZXcg QXJyYXkoYikscj0wO3I8YjtyKyspeT1vW3Nbcl1dLHhbcl09YS5pc1JldmVy c2VkKGUpP3kucmV2ZXJzZSgpOnk7ZWxzZXtmb3IoeD1bbmV3IEFycmF5KGIp XSxyPTA7cjxiO3IrKyl5PW9bc1tyXV1bMF0seFswXVthLmlzUmV2ZXJzZWQo ZSk/Yi1yLTE6cl09eTtiPTF9cmV0dXJuIGUuX2xncm91cHNMZW5ndGg9Yixl Ll9tYXhOYW1lTGVuZ3RoPWgseH19LHsiLi4vLi4vcmVnaXN0cnkiOjg0Niwi Li9oZWxwZXJzIjo2NDZ9XSw2NDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9yZWdpc3Ry eSIpLGk9ITA7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbz1lLl9m dWxsTGF5b3V0O2lmKCFlLl9kcmFnZ2VkJiYhZS5fZWRpdGluZyl7dmFyIHMs bD1vLmxlZ2VuZC5pdGVtY2xpY2ssYz1vLmxlZ2VuZC5pdGVtZG91YmxlY2xp Y2s7aWYoMT09PXImJiJ0b2dnbGUiPT09bCYmInRvZ2dsZW90aGVycyI9PT1j JiZpJiZlLmRhdGEmJmUuX2NvbnRleHQuc2hvd1RpcHM/KG4ubm90aWZpZXIo bi5fKGUsIkRvdWJsZS1jbGljayBvbiBsZWdlbmQgdG8gaXNvbGF0ZSBvbmUg dHJhY2UiKSwibG9uZyIpLGk9ITEpOmk9ITEsMT09PXI/cz1sOjI9PT1yJiYo cz1jKSxzKXt2YXIgdSxoLGYscCxkLGc9by5oaWRkZW5sYWJlbHM/by5oaWRk ZW5sYWJlbHMuc2xpY2UoKTpbXSx2PXQuZGF0YSgpWzBdWzBdLG09ZS5fZnVs bERhdGEseT12LnRyYWNlLHg9eS5sZWdlbmRncm91cCxiPXt9LF89W10sdz1b XSxrPVtdO2lmKGEudHJhY2VJcyh5LCJwaWUtbGlrZSIpKXt2YXIgVD12Lmxh YmVsLE09Zy5pbmRleE9mKFQpOyJ0b2dnbGUiPT09cz8tMT09PU0/Zy5wdXNo KFQpOmcuc3BsaWNlKE0sMSk6InRvZ2dsZW90aGVycyI9PT1zJiYoZz1bXSxl LmNhbGNkYXRhWzBdLmZvckVhY2goZnVuY3Rpb24odCl7VCE9PXQubGFiZWwm JmcucHVzaCh0LmxhYmVsKX0pLGUuX2Z1bGxMYXlvdXQuaGlkZGVubGFiZWxz JiZlLl9mdWxsTGF5b3V0LmhpZGRlbmxhYmVscy5sZW5ndGg9PT1nLmxlbmd0 aCYmLTE9PT1NJiYoZz1bXSkpLGEuY2FsbCgiX2d1aVJlbGF5b3V0IixlLCJo aWRkZW5sYWJlbHMiLGcpfWVsc2V7dmFyIEEsUz14JiZ4Lmxlbmd0aCxFPVtd O2lmKFMpZm9yKHU9MDt1PG0ubGVuZ3RoO3UrKykoQT1tW3VdKS52aXNpYmxl JiZBLmxlZ2VuZGdyb3VwPT09eCYmRS5wdXNoKHUpO2lmKCJ0b2dnbGUiPT09 cyl7dmFyIEw7c3dpdGNoKHkudmlzaWJsZSl7Y2FzZSEwOkw9ImxlZ2VuZG9u bHkiO2JyZWFrO2Nhc2UhMTpMPSExO2JyZWFrO2Nhc2UibGVnZW5kb25seSI6 TD0hMH1pZihTKWZvcih1PTA7dTxtLmxlbmd0aDt1KyspITEhPT1tW3VdLnZp c2libGUmJm1bdV0ubGVnZW5kZ3JvdXA9PT14JiZCKG1bdV0sTCk7ZWxzZSBC KHksTCl9ZWxzZSBpZigidG9nZ2xlb3RoZXJzIj09PXMpe3ZhciBDLFAsTyx6 LEk9ITA7Zm9yKHU9MDt1PG0ubGVuZ3RoO3UrKylpZihDPW1bdV09PT15LE89 ITAhPT1tW3VdLnNob3dsZWdlbmQsIShDfHxPfHwoUD1TJiZtW3VdLmxlZ2Vu ZGdyb3VwPT09eCl8fCEwIT09bVt1XS52aXNpYmxlfHxhLnRyYWNlSXMobVt1 XSwibm90TGVnZW5kSXNvbGF0YWJsZSIpKSl7ST0hMTticmVha31mb3IodT0w O3U8bS5sZW5ndGg7dSsrKWlmKCExIT09bVt1XS52aXNpYmxlJiYhYS50cmFj ZUlzKG1bdV0sIm5vdExlZ2VuZElzb2xhdGFibGUiKSlzd2l0Y2goeS52aXNp YmxlKXtjYXNlImxlZ2VuZG9ubHkiOkIobVt1XSwhMCk7YnJlYWs7Y2FzZSEw Ono9ISFJfHwibGVnZW5kb25seSIsQz1tW3VdPT09eSxPPSEwIT09bVt1XS5z aG93bGVnZW5kJiYhbVt1XS5sZWdlbmRncm91cCxQPUN8fFMmJm1bdV0ubGVn ZW5kZ3JvdXA9PT14LEIobVt1XSwhKCFQJiYhTyl8fHopfX1mb3IodT0wO3U8 dy5sZW5ndGg7dSsrKWlmKGY9d1t1XSl7dmFyIEQ9Zi5jb25zdHJ1Y3RVcGRh dGUoKSxSPU9iamVjdC5rZXlzKEQpO2ZvcihoPTA7aDxSLmxlbmd0aDtoKysp cD1SW2hdLChiW3BdPWJbcF18fFtdKVtrW3VdXT1EW3BdfWZvcihkPU9iamVj dC5rZXlzKGIpLHU9MDt1PGQubGVuZ3RoO3UrKylmb3IocD1kW3VdLGg9MDto PF8ubGVuZ3RoO2grKyliW3BdLmhhc093blByb3BlcnR5KGgpfHwoYltwXVto XT12b2lkIDApO2EuY2FsbCgiX2d1aVJlc3R5bGUiLGUsYixfKX19fWZ1bmN0 aW9uIEYodCxlLHIpe3ZhciBuPV8uaW5kZXhPZih0KSxhPWJbZV07cmV0dXJu IGF8fChhPWJbZV09W10pLC0xPT09Xy5pbmRleE9mKHQpJiYoXy5wdXNoKHQp LG49Xy5sZW5ndGgtMSksYVtuXT1yLG59ZnVuY3Rpb24gQih0LGUpe3ZhciBy PXQuX2Z1bGxJbnB1dDtpZihhLmhhc1RyYW5zZm9ybShyLCJncm91cGJ5Iikp e3ZhciBpPXdbci5pbmRleF07aWYoIWkpe3ZhciBvPWEuZ2V0VHJhbnNmb3Jt SW5kaWNlcyhyLCJncm91cGJ5Iikscz1vW28ubGVuZ3RoLTFdO2k9bi5rZXll ZENvbnRhaW5lcihyLCJ0cmFuc2Zvcm1zWyIrcysiXS5zdHlsZXMiLCJ0YXJn ZXQiLCJ2YWx1ZS52aXNpYmxlIiksd1tyLmluZGV4XT1pfXZhciBsPWkuZ2V0 KHQuX2dyb3VwKTt2b2lkIDA9PT1sJiYobD0hMCksITEhPT1sJiZpLnNldCh0 Ll9ncm91cCxlKSxrW3IuaW5kZXhdPUYoci5pbmRleCwidmlzaWJsZSIsITEh PT1yLnZpc2libGUpfWVsc2V7dmFyIGM9ITEhPT1yLnZpc2libGUmJmU7Rihy LmluZGV4LCJ2aXNpYmxlIixjKX19fX0seyIuLi8uLi9saWIiOjcxNywiLi4v Li4vcmVnaXN0cnkiOjg0Nn1dLDY0NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtyLmlzR3JvdXBlZD1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PSh0 LnRyYWNlb3JkZXJ8fCIiKS5pbmRleE9mKCJncm91cGVkIil9LHIuaXNWZXJ0 aWNhbD1mdW5jdGlvbih0KXtyZXR1cm4iaCIhPT10Lm9yaWVudGF0aW9ufSxy LmlzUmV2ZXJzZWQ9ZnVuY3Rpb24odCl7cmV0dXJuLTEhPT0odC50cmFjZW9y ZGVyfHwiIikuaW5kZXhPZigicmV2ZXJzZWQiKX19LHt9XSw2NDc6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBl OiJjb21wb25lbnQiLG5hbWU6ImxlZ2VuZCIsbGF5b3V0QXR0cmlidXRlczp0 KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2Rl ZmF1bHRzIiksZHJhdzp0KCIuL2RyYXciKSxzdHlsZTp0KCIuL3N0eWxlIil9 fSx7Ii4vYXR0cmlidXRlcyI6NjQwLCIuL2RlZmF1bHRzIjo2NDIsIi4vZHJh dyI6NjQzLCIuL3N0eWxlIjo2NDh9XSw2NDg6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL3JlZ2lzdHJ5 IiksaT10KCIuLi8uLi9saWIiKSxvPXQoIi4uL2RyYXdpbmciKSxzPXQoIi4u L2NvbG9yIiksbD10KCIuLi9jb2xvcnNjYWxlL2hlbHBlcnMiKS5leHRyYWN0 T3B0cyxjPXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIiksdT10 KCIuLi8uLi90cmFjZXMvcGllL3N0eWxlX29uZSIpLGg9dCgiLi4vLi4vdHJh Y2VzL3BpZS9oZWxwZXJzIikuY2FzdE9wdGlvbixmPTEyLHA9NSxkPTIsZz0x MCx2PTU7ZnVuY3Rpb24gbSh0LGUpe3JldHVybihlPyJyYWRpYWwiOiJob3Jp em9udGFsIikrKHQ/IiI6InJldmVyc2VkIil9ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7dmFyIHI9ZS5fZnVsbExheW91dC5sZWdlbmQseT0iY29uc3RhbnQi PT09ci5pdGVtc2l6aW5nLHg9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE7aWYo dCsxKWE9dDtlbHNle2lmKCEoZSYmZS53aWR0aD4wKSlyZXR1cm4gMDthPWUu d2lkdGh9cmV0dXJuIHk/bjpNYXRoLm1pbihhLHIpfTtmdW5jdGlvbiBiKHQs ZSxyKXt2YXIgaT10WzBdLnRyYWNlLG89aS5tYXJrZXJ8fHt9LGw9by5saW5l fHx7fSxjPXI/aS52aXNpYmxlJiZpLnR5cGU9PT1yOmEudHJhY2VJcyhpLCJi YXIiKSx1PW4uc2VsZWN0KGUpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5z ZWxlY3RBbGwoInBhdGgubGVnZW5kIityKS5kYXRhKGM/W3RdOltdKTt1LmVu dGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgibGVnZW5kIityLCEwKS5h dHRyKCJkIiwiTTYsNkgtNlYtNkg2WiIpLmF0dHIoInRyYW5zZm9ybSIsInRy YW5zbGF0ZSgyMCwwKSIpLHUuZXhpdCgpLnJlbW92ZSgpLHUuZWFjaChmdW5j dGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKSxyPXRbMF0sYT14KHIubWx3 LG8ubGluZSx2LGQpO2Uuc3R5bGUoInN0cm9rZS13aWR0aCIsYSsicHgiKS5j YWxsKHMuZmlsbCxyLm1jfHxvLmNvbG9yKSxhJiZzLnN0cm9rZShlLHIubWxj fHxsLmNvbG9yKX0pfWZ1bmN0aW9uIF8odCxlLHIpe3ZhciBvPXRbMF0scz1v LnRyYWNlLGw9cj9zLnZpc2libGUmJnMudHlwZT09PXI6YS50cmFjZUlzKHMs ciksYz1uLnNlbGVjdChlKS5zZWxlY3QoImcubGVnZW5kcG9pbnRzIikuc2Vs ZWN0QWxsKCJwYXRoLmxlZ2VuZCIrcikuZGF0YShsP1t0XTpbXSk7aWYoYy5l bnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImxlZ2VuZCIrciwhMCku YXR0cigiZCIsIk02LDZILTZWLTZINloiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0 cmFuc2xhdGUoMjAsMCkiKSxjLmV4aXQoKS5yZW1vdmUoKSxjLnNpemUoKSl7 dmFyIGY9KHMubWFya2VyfHx7fSkubGluZSxwPXgoaChmLndpZHRoLG8ucHRz KSxmLHYsZCksZz1pLm1pbkV4dGVuZChzLHttYXJrZXI6e2xpbmU6e3dpZHRo OnB9fX0pO2cubWFya2VyLmxpbmUuY29sb3I9Zi5jb2xvcjt2YXIgbT1pLm1p bkV4dGVuZChvLHt0cmFjZTpnfSk7dShjLG0sZyl9fXQuZWFjaChmdW5jdGlv bih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKSxhPWkuZW5zdXJlU2luZ2xlKGUs ImciLCJsYXllcnMiKTthLnN0eWxlKCJvcGFjaXR5Iix0WzBdLnRyYWNlLm9w YWNpdHkpO3ZhciBvPXIudmFsaWduLHM9dFswXS5saW5lSGVpZ2h0LGw9dFsw XS5oZWlnaHQ7aWYoIm1pZGRsZSIhPT1vJiZzJiZsKXt2YXIgYz17dG9wOjEs Ym90dG9tOi0xfVtvXSooLjUqKHMtbCszKSk7YS5hdHRyKCJ0cmFuc2Zvcm0i LCJ0cmFuc2xhdGUoMCwiK2MrIikiKX1lbHNlIGEuYXR0cigidHJhbnNmb3Jt IixudWxsKTthLnNlbGVjdEFsbCgiZy5sZWdlbmRmaWxsIikuZGF0YShbdF0p LmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgibGVnZW5kZmlsbCIsITAp LGEuc2VsZWN0QWxsKCJnLmxlZ2VuZGxpbmVzIikuZGF0YShbdF0pLmVudGVy KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgibGVnZW5kbGluZXMiLCEwKTt2YXIg dT1hLnNlbGVjdEFsbCgiZy5sZWdlbmRzeW1ib2xzIikuZGF0YShbdF0pO3Uu ZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJsZWdlbmRzeW1ib2xzIiwh MCksdS5zZWxlY3RBbGwoImcubGVnZW5kcG9pbnRzIikuZGF0YShbdF0pLmVu dGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgibGVnZW5kcG9pbnRzIiwhMCl9 KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByLGE9dFswXS50cmFjZSxjPVtdO2lm KGEudmlzaWJsZSlzd2l0Y2goYS50eXBlKXtjYXNlImhpc3RvZ3JhbTJkIjpj YXNlImhlYXRtYXAiOmM9W1siTS0xNSwtMlY0SDE1Vi0yWiJdXSxyPSEwO2Jy ZWFrO2Nhc2UiY2hvcm9wbGV0aCI6Y2FzZSJjaG9yb3BsZXRobWFwYm94Ijpj PVtbIk0tNiwtNlY2SDZWLTZaIl1dLHI9ITA7YnJlYWs7Y2FzZSJkZW5zaXR5 bWFwYm94IjpjPVtbIk0tNiwwIGE2LDYgMCAxLDAgMTIsMCBhIDYsNiAwIDEs MCAtMTIsMCJdXSxyPSJyYWRpYWwiO2JyZWFrO2Nhc2UiY29uZSI6Yz1bWyJN LTYsMiBBMiwyIDAgMCwwIC02LDYgVjZMNiw0WiJdLFsiTS02LC02IEEyLDIg MCAwLDAgLTYsLTIgTDYsLTRaIl0sWyJNLTYsLTIgQTIsMiAwIDAsMCAtNiwy IEw2LDBaIl1dLHI9ITE7YnJlYWs7Y2FzZSJzdHJlYW10dWJlIjpjPVtbIk0t NiwyIEEyLDIgMCAwLDAgLTYsNiBINiBBMiwyIDAgMCwxIDYsMiBaIl0sWyJN LTYsLTYgQTIsMiAwIDAsMCAtNiwtMiBINiBBMiwyIDAgMCwxIDYsLTYgWiJd LFsiTS02LC0yIEEyLDIgMCAwLDAgLTYsMiBINiBBMiwyIDAgMCwxIDYsLTIg WiJdXSxyPSExO2JyZWFrO2Nhc2Uic3VyZmFjZSI6Yz1bWyJNLTYsLTYgQTIs MyAwIDAsMCAtNiwwIEg2IEEyLDMgMCAwLDEgNiwtNiBaIl0sWyJNLTYsMSBB MiwzIDAgMCwxIC02LDYgSDYgQTIsMyAwIDAsMCA2LDAgWiJdXSxyPSEwO2Jy ZWFrO2Nhc2UibWVzaDNkIjpjPVtbIk0tNiw2SDBMLTYsLTZaIl0sWyJNNiw2 SDBMNiwtNloiXSxbIk0tNiwtNkg2TDAsNloiXV0scj0hMTticmVhaztjYXNl InZvbHVtZSI6Yz1bWyJNLTYsNkgwTC02LC02WiJdLFsiTTYsNkgwTDYsLTZa Il0sWyJNLTYsLTZINkwwLDZaIl1dLHI9ITA7YnJlYWs7Y2FzZSJpc29zdXJm YWNlIjpjPVtbIk0tNiw2SDBMLTYsLTZaIl0sWyJNNiw2SDBMNiwtNloiXSxb Ik0tNiwtNiBBMTIsMjQgMCAwLDAgNiwtNiBMMCw2WiJdXSxyPSExfXZhciB1 PW4uc2VsZWN0KHRoaXMpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5zZWxl Y3RBbGwoInBhdGgubGVnZW5kM2RhbmRmcmllbmRzIikuZGF0YShjKTt1LmVu dGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgibGVnZW5kM2RhbmRmcmll bmRzIiwhMCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDIwLDApIiku c3R5bGUoInN0cm9rZS1taXRlcmxpbWl0IiwxKSx1LmV4aXQoKS5yZW1vdmUo KSx1LmVhY2goZnVuY3Rpb24odCxjKXt2YXIgdSxoPW4uc2VsZWN0KHRoaXMp LGY9bChhKSxwPWYuY29sb3JzY2FsZSxkPWYucmV2ZXJzZXNjYWxlO2lmKHAp e2lmKCFyKXt2YXIgZz1wLmxlbmd0aDt1PTA9PT1jP3BbZD9nLTE6MF1bMV06 MT09PWM/cFtkPzA6Zy0xXVsxXTpwW01hdGguZmxvb3IoKGctMSkvMildWzFd fX1lbHNle3ZhciB2PWEudmVydGV4Y29sb3J8fGEuZmFjZWNvbG9yfHxhLmNv bG9yO3U9aS5pc0FycmF5T3JUeXBlZEFycmF5KHYpP3ZbY118fHZbMF06dn1o LmF0dHIoImQiLHRbMF0pLHU/aC5jYWxsKHMuZmlsbCx1KTpoLmNhbGwoZnVu Y3Rpb24odCl7aWYodC5zaXplKCkpe3ZhciBuPSJsZWdlbmRmaWxsLSIrYS51 aWQ7by5ncmFkaWVudCh0LGUsbixtKGQsInJhZGlhbCI9PT1yKSxwLCJmaWxs Iil9fSl9KX0pLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxy PVtdO2UudmlzaWJsZSYmIndhdGVyZmFsbCI9PT1lLnR5cGUmJihyPXRbMF0u aGFzVG90YWxzP1tbImluY3JlYXNpbmciLCJNLTYsLTZWNkgwWiJdLFsidG90 YWxzIiwiTTYsNkgwTC02LC02SC0wWiJdLFsiZGVjcmVhc2luZyIsIk02LDZW LTZIMFoiXV06W1siaW5jcmVhc2luZyIsIk0tNiwtNlY2SDZaIl0sWyJkZWNy ZWFzaW5nIiwiTTYsNlYtNkgtNloiXV0pO3ZhciBhPW4uc2VsZWN0KHRoaXMp LnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5zZWxlY3RBbGwoInBhdGgubGVn ZW5kd2F0ZXJmYWxsIikuZGF0YShyKTthLmVudGVyKCkuYXBwZW5kKCJwYXRo IikuY2xhc3NlZCgibGVnZW5kd2F0ZXJmYWxsIiwhMCkuYXR0cigidHJhbnNm b3JtIiwidHJhbnNsYXRlKDIwLDApIikuc3R5bGUoInN0cm9rZS1taXRlcmxp bWl0IiwxKSxhLmV4aXQoKS5yZW1vdmUoKSxhLmVhY2goZnVuY3Rpb24odCl7 dmFyIHI9bi5zZWxlY3QodGhpcyksYT1lW3RbMF1dLm1hcmtlcixpPXgodm9p ZCAwLGEubGluZSx2LGQpO3IuYXR0cigiZCIsdFsxXSkuc3R5bGUoInN0cm9r ZS13aWR0aCIsaSsicHgiKS5jYWxsKHMuZmlsbCxhLmNvbG9yKSxpJiZyLmNh bGwocy5zdHJva2UsYS5saW5lLmNvbG9yKX0pfSkuZWFjaChmdW5jdGlvbih0 KXtiKHQsdGhpcywiZnVubmVsIil9KS5lYWNoKGZ1bmN0aW9uKHQpe2IodCx0 aGlzKX0pLmVhY2goZnVuY3Rpb24odCl7dmFyIHI9dFswXS50cmFjZSxsPW4u c2VsZWN0KHRoaXMpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5zZWxlY3RB bGwoInBhdGgubGVnZW5kYm94IikuZGF0YShyLnZpc2libGUmJmEudHJhY2VJ cyhyLCJib3gtdmlvbGluIik/W3RdOltdKTtsLmVudGVyKCkuYXBwZW5kKCJw YXRoIikuY2xhc3NlZCgibGVnZW5kYm94IiwhMCkuYXR0cigiZCIsIk02LDZI LTZWLTZINloiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMjAsMCki KSxsLmV4aXQoKS5yZW1vdmUoKSxsLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1u LnNlbGVjdCh0aGlzKTtpZigiYWxsIiE9PXIuYm94cG9pbnRzJiYiYWxsIiE9 PXIucG9pbnRzfHwwIT09cy5vcGFjaXR5KHIuZmlsbGNvbG9yKXx8MCE9PXMu b3BhY2l0eSgoci5saW5lfHx7fSkuY29sb3IpKXt2YXIgYT14KHZvaWQgMCxy LmxpbmUsdixkKTt0LnN0eWxlKCJzdHJva2Utd2lkdGgiLGErInB4IikuY2Fs bChzLmZpbGwsci5maWxsY29sb3IpLGEmJnMuc3Ryb2tlKHQsci5saW5lLmNv bG9yKX1lbHNle3ZhciBjPWkubWluRXh0ZW5kKHIse21hcmtlcjp7c2l6ZTp5 P2Y6aS5jb25zdHJhaW4oci5tYXJrZXIuc2l6ZSwyLDE2KSxzaXplcmVmOjEs c2l6ZW1pbjoxLHNpemVtb2RlOiJkaWFtZXRlciJ9fSk7bC5jYWxsKG8ucG9p bnRTdHlsZSxjLGUpfX0pfSkuZWFjaChmdW5jdGlvbih0KXtfKHQsdGhpcywi ZnVubmVsYXJlYSIpfSkuZWFjaChmdW5jdGlvbih0KXtfKHQsdGhpcywicGll Iil9KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByLGEscz10WzBdLHU9cy50cmFj ZSxoPXUudmlzaWJsZSYmdS5maWxsJiYibm9uZSIhPT11LmZpbGwsZj1jLmhh c0xpbmVzKHUpLGQ9dS5jb250b3Vycyx2PSExLHk9ITEsYj1sKHUpLF89Yi5j b2xvcnNjYWxlLHc9Yi5yZXZlcnNlc2NhbGU7aWYoZCl7dmFyIGs9ZC5jb2xv cmluZzsibGluZXMiPT09az92PSEwOmY9Im5vbmUiPT09a3x8ImhlYXRtYXAi PT09a3x8ZC5zaG93bGluZXMsImNvbnN0cmFpbnQiPT09ZC50eXBlP2g9Ij0i IT09ZC5fb3BlcmF0aW9uOiJmaWxsIiE9PWsmJiJoZWF0bWFwIiE9PWt8fCh5 PSEwKX12YXIgVD1jLmhhc01hcmtlcnModSl8fGMuaGFzVGV4dCh1KSxNPWh8 fHksQT1mfHx2LFM9VHx8IU0/Ik01LDAiOkE/Ik01LC0yIjoiTTUsLTMiLEU9 bi5zZWxlY3QodGhpcyksTD1FLnNlbGVjdCgiLmxlZ2VuZGZpbGwiKS5zZWxl Y3RBbGwoInBhdGgiKS5kYXRhKGh8fHk/W3RdOltdKTtpZihMLmVudGVyKCku YXBwZW5kKCJwYXRoIikuY2xhc3NlZCgianMtZmlsbCIsITApLEwuZXhpdCgp LnJlbW92ZSgpLEwuYXR0cigiZCIsUysiaDMwdjZoLTMweiIpLmNhbGwoaD9v LmZpbGxHcm91cFN0eWxlOmZ1bmN0aW9uKHQpe2lmKHQuc2l6ZSgpKXt2YXIg cj0ibGVnZW5kZmlsbC0iK3UudWlkO28uZ3JhZGllbnQodCxlLHIsbSh3KSxf LCJmaWxsIil9fSksZnx8dil7dmFyIEM9eCh2b2lkIDAsdS5saW5lLGcscCk7 YT1pLm1pbkV4dGVuZCh1LHtsaW5lOnt3aWR0aDpDfX0pLHI9W2kubWluRXh0 ZW5kKHMse3RyYWNlOmF9KV19dmFyIFA9RS5zZWxlY3QoIi5sZWdlbmRsaW5l cyIpLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEoZnx8dj9bcl06W10pO1AuZW50 ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJqcy1saW5lIiwhMCksUC5l eGl0KCkucmVtb3ZlKCksUC5hdHRyKCJkIixTKyh2PyJsMzAsMC4wMDAxIjoi aDMwIikpLmNhbGwoZj9vLmxpbmVHcm91cFN0eWxlOmZ1bmN0aW9uKHQpe2lm KHQuc2l6ZSgpKXt2YXIgcj0ibGVnZW5kbGluZS0iK3UudWlkO28ubGluZUdy b3VwU3R5bGUodCksby5ncmFkaWVudCh0LGUscixtKHcpLF8sInN0cm9rZSIp fX0pfSkuZWFjaChmdW5jdGlvbih0KXt2YXIgcixhLHM9dFswXSxsPXMudHJh Y2UsdT1jLmhhc01hcmtlcnMobCksaD1jLmhhc1RleHQobCksZz1jLmhhc0xp bmVzKGwpO2Z1bmN0aW9uIHYodCxlLHIsbil7dmFyIGE9aS5uZXN0ZWRQcm9w ZXJ0eShsLHQpLmdldCgpLG89aS5pc0FycmF5T3JUeXBlZEFycmF5KGEpJiZl P2UoYSk6YTtpZih5JiZvJiZ2b2lkIDAhPT1uJiYobz1uKSxyKXtpZihvPHJb MF0pcmV0dXJuIHJbMF07aWYobz5yWzFdKXJldHVybiByWzFdfXJldHVybiBv fWZ1bmN0aW9uIG0odCl7cmV0dXJuIHRbMF19aWYodXx8aHx8Zyl7dmFyIHg9 e30sYj17fTtpZih1KXt4Lm1jPXYoIm1hcmtlci5jb2xvciIsbSkseC5teD12 KCJtYXJrZXIuc3ltYm9sIixtKSx4Lm1vPXYoIm1hcmtlci5vcGFjaXR5Iixp Lm1lYW4sWy4yLDFdKSx4Lm1sYz12KCJtYXJrZXIubGluZS5jb2xvciIsbSks eC5tbHc9digibWFya2VyLmxpbmUud2lkdGgiLGkubWVhbixbMCw1XSxkKSxi Lm1hcmtlcj17c2l6ZXJlZjoxLHNpemVtaW46MSxzaXplbW9kZToiZGlhbWV0 ZXIifTt2YXIgXz12KCJtYXJrZXIuc2l6ZSIsaS5tZWFuLFsyLDE2XSxmKTt4 Lm1zPV8sYi5tYXJrZXIuc2l6ZT1ffWcmJihiLmxpbmU9e3dpZHRoOnYoImxp bmUud2lkdGgiLG0sWzAsMTBdLHApfSksaCYmKHgudHg9IkFhIix4LnRwPXYo InRleHRwb3NpdGlvbiIsbSkseC50cz0xMCx4LnRjPXYoInRleHRmb250LmNv bG9yIixtKSx4LnRmPXYoInRleHRmb250LmZhbWlseSIsbSkpLHI9W2kubWlu RXh0ZW5kKHMseCldLChhPWkubWluRXh0ZW5kKGwsYikpLnNlbGVjdGVkcG9p bnRzPW51bGwsYS50ZXh0dGVtcGxhdGU9bnVsbH12YXIgdz1uLnNlbGVjdCh0 aGlzKS5zZWxlY3QoImcubGVnZW5kcG9pbnRzIiksaz13LnNlbGVjdEFsbCgi cGF0aC5zY2F0dGVycHRzIikuZGF0YSh1P3I6W10pO2suZW50ZXIoKS5pbnNl cnQoInBhdGgiLCI6Zmlyc3QtY2hpbGQiKS5jbGFzc2VkKCJzY2F0dGVycHRz IiwhMCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDIwLDApIiksay5l eGl0KCkucmVtb3ZlKCksay5jYWxsKG8ucG9pbnRTdHlsZSxhLGUpLHUmJihy WzBdLm1yYz0zKTt2YXIgVD13LnNlbGVjdEFsbCgiZy5wb2ludHRleHQiKS5k YXRhKGg/cjpbXSk7VC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInBv aW50dGV4dCIsITApLmFwcGVuZCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIs InRyYW5zbGF0ZSgyMCwwKSIpLFQuZXhpdCgpLnJlbW92ZSgpLFQuc2VsZWN0 QWxsKCJ0ZXh0IikuY2FsbChvLnRleHRQb2ludFN0eWxlLGEsZSl9KS5lYWNo KGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1uLnNlbGVjdCh0aGlz KS5zZWxlY3QoImcubGVnZW5kcG9pbnRzIikuc2VsZWN0QWxsKCJwYXRoLmxl Z2VuZGNhbmRsZSIpLmRhdGEoZS52aXNpYmxlJiYiY2FuZGxlc3RpY2siPT09 ZS50eXBlP1t0LHRdOltdKTtyLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xh c3NlZCgibGVnZW5kY2FuZGxlIiwhMCkuYXR0cigiZCIsZnVuY3Rpb24odCxl KXtyZXR1cm4gZT8iTS0xNSwwSC04TS04LDZWLTZIOFoiOiJNMTUsMEg4TTgs LTZWNkgtOFoifSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDIwLDAp Iikuc3R5bGUoInN0cm9rZS1taXRlcmxpbWl0IiwxKSxyLmV4aXQoKS5yZW1v dmUoKSxyLmVhY2goZnVuY3Rpb24odCxyKXt2YXIgYT1uLnNlbGVjdCh0aGlz KSxpPWVbcj8iaW5jcmVhc2luZyI6ImRlY3JlYXNpbmciXSxvPXgodm9pZCAw LGkubGluZSx2LGQpO2Euc3R5bGUoInN0cm9rZS13aWR0aCIsbysicHgiKS5j YWxsKHMuZmlsbCxpLmZpbGxjb2xvciksbyYmcy5zdHJva2UoYSxpLmxpbmUu Y29sb3IpfSl9KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Us cj1uLnNlbGVjdCh0aGlzKS5zZWxlY3QoImcubGVnZW5kcG9pbnRzIikuc2Vs ZWN0QWxsKCJwYXRoLmxlZ2VuZG9obGMiKS5kYXRhKGUudmlzaWJsZSYmIm9o bGMiPT09ZS50eXBlP1t0LHRdOltdKTtyLmVudGVyKCkuYXBwZW5kKCJwYXRo IikuY2xhc3NlZCgibGVnZW5kb2hsYyIsITApLmF0dHIoImQiLGZ1bmN0aW9u KHQsZSl7cmV0dXJuIGU/Ik0tMTUsMEgwTS04LC02VjAiOiJNMTUsMEgwTTgs NlYwIn0pLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgyMCwwKSIpLnN0 eWxlKCJzdHJva2UtbWl0ZXJsaW1pdCIsMSksci5leGl0KCkucmVtb3ZlKCks ci5lYWNoKGZ1bmN0aW9uKHQscil7dmFyIGE9bi5zZWxlY3QodGhpcyksaT1l W3I/ImluY3JlYXNpbmciOiJkZWNyZWFzaW5nIl0sbD14KHZvaWQgMCxpLmxp bmUsdixkKTthLnN0eWxlKCJmaWxsIiwibm9uZSIpLmNhbGwoby5kYXNoTGlu ZSxpLmxpbmUuZGFzaCxsKSxsJiZzLnN0cm9rZShhLGkubGluZS5jb2xvcil9 KX0pfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0Niwi Li4vLi4vdHJhY2VzL3BpZS9oZWxwZXJzIjoxMDk5LCIuLi8uLi90cmFjZXMv cGllL3N0eWxlX29uZSI6MTEwNSwiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvc3Vi dHlwZXMiOjExNDQsIi4uL2NvbG9yIjo1OTIsIi4uL2NvbG9yc2NhbGUvaGVs cGVycyI6NjAzLCIuLi9kcmF3aW5nIjo2MTMsZDM6MTY1fV0sNjQ5OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lz dHJ5IiksYT10KCIuLi8uLi9wbG90cy9wbG90cyIpLGk9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4aXNfaWRzIiksbz10KCIuLi8uLi9saWIiKSxzPXQo Ii4uLy4uL2ZvbnRzL3Bsb3RpY29uIiksbD1vLl8sYz1lLmV4cG9ydHM9e307 ZnVuY3Rpb24gdSh0LGUpe3ZhciByLGEsbz1lLmN1cnJlbnRUYXJnZXQscz1v LmdldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIiksbD1vLmdldEF0dHJpYnV0ZSgi ZGF0YS12YWwiKXx8ITAsYz10Ll9mdWxsTGF5b3V0LHU9e30saD1pLmxpc3Qo dCxudWxsLCEwKSxmPWMuX2NhcnRlc2lhblNwaWtlc0VuYWJsZWQ7aWYoInpv b20iPT09cyl7dmFyIHAsZD0iaW4iPT09bD8uNToyLGc9KDErZCkvMix2PSgx LWQpLzI7Zm9yKGE9MDthPGgubGVuZ3RoO2ErKylpZighKHI9aFthXSkuZml4 ZWRyYW5nZSlpZihwPXIuX25hbWUsImF1dG8iPT09bCl1W3ArIi5hdXRvcmFu Z2UiXT0hMDtlbHNlIGlmKCJyZXNldCI9PT1sKXtpZih2b2lkIDA9PT1yLl9y YW5nZUluaXRpYWwpdVtwKyIuYXV0b3JhbmdlIl09ITA7ZWxzZXt2YXIgbT1y Ll9yYW5nZUluaXRpYWwuc2xpY2UoKTt1W3ArIi5yYW5nZVswXSJdPW1bMF0s dVtwKyIucmFuZ2VbMV0iXT1tWzFdfXZvaWQgMCE9PXIuX3Nob3dTcGlrZUlu aXRpYWwmJih1W3ArIi5zaG93c3Bpa2VzIl09ci5fc2hvd1NwaWtlSW5pdGlh bCwib24iIT09Znx8ci5fc2hvd1NwaWtlSW5pdGlhbHx8KGY9Im9mZiIpKX1l bHNle3ZhciB5PVtyLnIybChyLnJhbmdlWzBdKSxyLnIybChyLnJhbmdlWzFd KV0seD1bZyp5WzBdK3YqeVsxXSxnKnlbMV0rdip5WzBdXTt1W3ArIi5yYW5n ZVswXSJdPXIubDJyKHhbMF0pLHVbcCsiLnJhbmdlWzFdIl09ci5sMnIoeFsx XSl9fWVsc2UiaG92ZXJtb2RlIiE9PXN8fCJ4IiE9PWwmJiJ5IiE9PWx8fChs PWMuX2lzSG9yaXo/InkiOiJ4IixvLnNldEF0dHJpYnV0ZSgiZGF0YS12YWwi LGwpKSx1W3NdPWw7Yy5fY2FydGVzaWFuU3Bpa2VzRW5hYmxlZD1mLG4uY2Fs bCgiX2d1aVJlbGF5b3V0Iix0LHUpfWZ1bmN0aW9uIGgodCxlKXtmb3IodmFy IHI9ZS5jdXJyZW50VGFyZ2V0LGE9ci5nZXRBdHRyaWJ1dGUoImRhdGEtYXR0 ciIpLGk9ci5nZXRBdHRyaWJ1dGUoImRhdGEtdmFsIil8fCEwLG89dC5fZnVs bExheW91dC5fc3VicGxvdHMuZ2wzZHx8W10scz17fSxsPWEuc3BsaXQoIi4i KSxjPTA7YzxvLmxlbmd0aDtjKyspc1tvW2NdKyIuIitsWzFdXT1pO3ZhciB1 PSJwYW4iPT09aT9pOiJ6b29tIjtzLmRyYWdtb2RlPXUsbi5jYWxsKCJfZ3Vp UmVsYXlvdXQiLHQscyl9ZnVuY3Rpb24gZih0LGUpe2Zvcih2YXIgcj1lLmN1 cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiKSxhPXQuX2Z1 bGxMYXlvdXQsaT1hLl9zdWJwbG90cy5nbDNkfHxbXSxvPXt9LHM9MDtzPGku bGVuZ3RoO3MrKyl7dmFyIGwsYz1pW3NdLHU9YysiLmNhbWVyYSIsaD1jKyIu YXNwZWN0cmF0aW8iLGY9YVtjXS5fc2NlbmU7InJlc2V0TGFzdFNhdmUiPT09 cj8ob1t1KyIudXAiXT1mLnZpZXdJbml0aWFsLnVwLG9bdSsiLmV5ZSJdPWYu dmlld0luaXRpYWwuZXllLG9bdSsiLmNlbnRlciJdPWYudmlld0luaXRpYWwu Y2VudGVyLGw9ITApOiJyZXNldERlZmF1bHQiPT09ciYmKG9bdSsiLnVwIl09 bnVsbCxvW3UrIi5leWUiXT1udWxsLG9bdSsiLmNlbnRlciJdPW51bGwsbD0h MCksbCYmKG9baCsiLngiXT1mLnZpZXdJbml0aWFsLmFzcGVjdHJhdGlvLngs b1toKyIueSJdPWYudmlld0luaXRpYWwuYXNwZWN0cmF0aW8ueSxvW2grIi56 Il09Zi52aWV3SW5pdGlhbC5hc3BlY3RyYXRpby56KX1uLmNhbGwoIl9ndWlS ZWxheW91dCIsdCxvKX1mdW5jdGlvbiBwKHQsZSl7dmFyIHI9ZS5jdXJyZW50 VGFyZ2V0LG49ci5fcHJldmlvdXNWYWwsYT10Ll9mdWxsTGF5b3V0LGk9YS5f c3VicGxvdHMuZ2wzZHx8W10sbz1bInhheGlzIiwieWF4aXMiLCJ6YXhpcyJd LHM9e30sbD17fTtpZihuKWw9bixyLl9wcmV2aW91c1ZhbD1udWxsO2Vsc2V7 Zm9yKHZhciBjPTA7YzxpLmxlbmd0aDtjKyspe3ZhciB1PWlbY10saD1hW3Vd LGY9dSsiLmhvdmVybW9kZSI7c1tmXT1oLmhvdmVybW9kZSxsW2ZdPSExO2Zv cih2YXIgcD0wO3A8MztwKyspe3ZhciBkPW9bcF0sZz11KyIuIitkKyIuc2hv d3NwaWtlcyI7bFtnXT0hMSxzW2ddPWhbZF0uc2hvd3NwaWtlc319ci5fcHJl dmlvdXNWYWw9c31yZXR1cm4gbH1mdW5jdGlvbiBkKHQsZSl7Zm9yKHZhciBy PWUuY3VycmVudFRhcmdldCxhPXIuZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIi KSxpPXIuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbCIpfHwhMCxvPXQuX2Z1bGxM YXlvdXQscz1vLl9zdWJwbG90cy5nZW98fFtdLGw9MDtsPHMubGVuZ3RoO2wr Kyl7dmFyIGM9c1tsXSx1PW9bY107aWYoInpvb20iPT09YSl7dmFyIGg9dS5w cm9qZWN0aW9uLnNjYWxlLGY9ImluIj09PWk/MipoOi41Kmg7bi5jYWxsKCJf Z3VpUmVsYXlvdXQiLHQsYysiLnByb2plY3Rpb24uc2NhbGUiLGYpfX0icmVz ZXQiPT09YSYmeSh0LCJnZW8iKX1mdW5jdGlvbiBnKHQpe3ZhciBlPXQuX2Z1 bGxMYXlvdXQ7cmV0dXJuIWUuaG92ZXJtb2RlJiYoZS5faGFzKCJjYXJ0ZXNp YW4iKT9lLl9pc0hvcml6PyJ5IjoieCI6ImNsb3Nlc3QiKX1mdW5jdGlvbiB2 KHQpe3ZhciBlPWcodCk7bi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsImhvdmVy bW9kZSIsZSl9ZnVuY3Rpb24gbSh0LGUpe2Zvcih2YXIgcj1lLmN1cnJlbnRU YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbCIpLGE9dC5fZnVsbExheW91 dCxpPWEuX3N1YnBsb3RzLm1hcGJveHx8W10sbz17fSxzPTA7czxpLmxlbmd0 aDtzKyspe3ZhciBsPWlbc10sYz1hW2xdLnpvb20sdT0iaW4iPT09cj8xLjA1 KmM6Yy8xLjA1O29bbCsiLnpvb20iXT11fW4uY2FsbCgiX2d1aVJlbGF5b3V0 Iix0LG8pfWZ1bmN0aW9uIHkodCxlKXtmb3IodmFyIHI9dC5fZnVsbExheW91 dCxhPXIuX3N1YnBsb3RzW2VdfHxbXSxpPXt9LG89MDtvPGEubGVuZ3RoO28r Kylmb3IodmFyIHM9YVtvXSxsPXJbc10uX3N1YnBsb3Qudmlld0luaXRpYWws Yz1PYmplY3Qua2V5cyhsKSx1PTA7dTxjLmxlbmd0aDt1Kyspe3ZhciBoPWNb dV07aVtzKyIuIitoXT1sW2hdfW4uY2FsbCgiX2d1aVJlbGF5b3V0Iix0LGkp fWMudG9JbWFnZT17bmFtZToidG9JbWFnZSIsdGl0bGU6ZnVuY3Rpb24odCl7 dmFyIGU9KHQuX2NvbnRleHQudG9JbWFnZUJ1dHRvbk9wdGlvbnN8fHt9KS5m b3JtYXR8fCJwbmciO3JldHVybiBsKHQsInBuZyI9PT1lPyJEb3dubG9hZCBw bG90IGFzIGEgcG5nIjoiRG93bmxvYWQgcGxvdCIpfSxpY29uOnMuY2FtZXJh LGNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX2NvbnRleHQudG9JbWFnZUJ1 dHRvbk9wdGlvbnMscj17Zm9ybWF0OmUuZm9ybWF0fHwicG5nIn07by5ub3Rp ZmllcihsKHQsIlRha2luZyBzbmFwc2hvdCAtIHRoaXMgbWF5IHRha2UgYSBm ZXcgc2Vjb25kcyIpLCJsb25nIiksInN2ZyIhPT1yLmZvcm1hdCYmby5pc0lF KCkmJihvLm5vdGlmaWVyKGwodCwiSUUgb25seSBzdXBwb3J0cyBzdmcuICBD aGFuZ2luZyBmb3JtYXQgdG8gc3ZnLiIpLCJsb25nIiksci5mb3JtYXQ9InN2 ZyIpLFsiZmlsZW5hbWUiLCJ3aWR0aCIsImhlaWdodCIsInNjYWxlIl0uZm9y RWFjaChmdW5jdGlvbih0KXt0IGluIGUmJihyW3RdPWVbdF0pfSksbi5jYWxs KCJkb3dubG9hZEltYWdlIix0LHIpLnRoZW4oZnVuY3Rpb24oZSl7by5ub3Rp ZmllcihsKHQsIlNuYXBzaG90IHN1Y2NlZWRlZCIpKyIgLSAiK2UsImxvbmci KX0pLmNhdGNoKGZ1bmN0aW9uKCl7by5ub3RpZmllcihsKHQsIlNvcnJ5LCB0 aGVyZSB3YXMgYSBwcm9ibGVtIGRvd25sb2FkaW5nIHlvdXIgc25hcHNob3Qh IiksImxvbmciKX0pfX0sYy5zZW5kRGF0YVRvQ2xvdWQ9e25hbWU6InNlbmRE YXRhVG9DbG91ZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiRWRp dCBpbiBDaGFydCBTdHVkaW8iKX0saWNvbjpzLmRpc2ssY2xpY2s6ZnVuY3Rp b24odCl7YS5zZW5kRGF0YVRvQ2xvdWQodCl9fSxjLmVkaXRJbkNoYXJ0U3R1 ZGlvPXtuYW1lOiJlZGl0SW5DaGFydFN0dWRpbyIsdGl0bGU6ZnVuY3Rpb24o dCl7cmV0dXJuIGwodCwiRWRpdCBpbiBDaGFydCBTdHVkaW8iKX0saWNvbjpz LnBlbmNpbCxjbGljazpmdW5jdGlvbih0KXthLnNlbmREYXRhVG9DbG91ZCh0 KX19LGMuem9vbTJkPXtuYW1lOiJ6b29tMmQiLHRpdGxlOmZ1bmN0aW9uKHQp e3JldHVybiBsKHQsIlpvb20iKX0sYXR0cjoiZHJhZ21vZGUiLHZhbDoiem9v bSIsaWNvbjpzLnpvb21ib3gsY2xpY2s6dX0sYy5wYW4yZD17bmFtZToicGFu MmQiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlBhbiIpfSxhdHRy OiJkcmFnbW9kZSIsdmFsOiJwYW4iLGljb246cy5wYW4sY2xpY2s6dX0sYy5z ZWxlY3QyZD17bmFtZToic2VsZWN0MmQiLHRpdGxlOmZ1bmN0aW9uKHQpe3Jl dHVybiBsKHQsIkJveCBTZWxlY3QiKX0sYXR0cjoiZHJhZ21vZGUiLHZhbDoi c2VsZWN0IixpY29uOnMuc2VsZWN0Ym94LGNsaWNrOnV9LGMubGFzc28yZD17 bmFtZToibGFzc28yZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwi TGFzc28gU2VsZWN0Iil9LGF0dHI6ImRyYWdtb2RlIix2YWw6Imxhc3NvIixp Y29uOnMubGFzc28sY2xpY2s6dX0sYy56b29tSW4yZD17bmFtZToiem9vbUlu MmQiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlpvb20gaW4iKX0s YXR0cjoiem9vbSIsdmFsOiJpbiIsaWNvbjpzLnpvb21fcGx1cyxjbGljazp1 fSxjLnpvb21PdXQyZD17bmFtZToiem9vbU91dDJkIix0aXRsZTpmdW5jdGlv bih0KXtyZXR1cm4gbCh0LCJab29tIG91dCIpfSxhdHRyOiJ6b29tIix2YWw6 Im91dCIsaWNvbjpzLnpvb21fbWludXMsY2xpY2s6dX0sYy5hdXRvU2NhbGUy ZD17bmFtZToiYXV0b1NjYWxlMmQiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVy biBsKHQsIkF1dG9zY2FsZSIpfSxhdHRyOiJ6b29tIix2YWw6ImF1dG8iLGlj b246cy5hdXRvc2NhbGUsY2xpY2s6dX0sYy5yZXNldFNjYWxlMmQ9e25hbWU6 InJlc2V0U2NhbGUyZCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwi UmVzZXQgYXhlcyIpfSxhdHRyOiJ6b29tIix2YWw6InJlc2V0IixpY29uOnMu aG9tZSxjbGljazp1fSxjLmhvdmVyQ2xvc2VzdENhcnRlc2lhbj17bmFtZToi aG92ZXJDbG9zZXN0Q2FydGVzaWFuIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1 cm4gbCh0LCJTaG93IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIpfSxhdHRyOiJo b3Zlcm1vZGUiLHZhbDoiY2xvc2VzdCIsaWNvbjpzLnRvb2x0aXBfYmFzaWMs Z3Jhdml0eToibmUiLGNsaWNrOnV9LGMuaG92ZXJDb21wYXJlQ2FydGVzaWFu PXtuYW1lOiJob3ZlckNvbXBhcmVDYXJ0ZXNpYW4iLHRpdGxlOmZ1bmN0aW9u KHQpe3JldHVybiBsKHQsIkNvbXBhcmUgZGF0YSBvbiBob3ZlciIpfSxhdHRy OiJob3Zlcm1vZGUiLHZhbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5fZnVsbExh eW91dC5faXNIb3Jpej8ieSI6IngifSxpY29uOnMudG9vbHRpcF9jb21wYXJl LGdyYXZpdHk6Im5lIixjbGljazp1fSxjLnpvb20zZD17bmFtZToiem9vbTNk Iix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJab29tIil9LGF0dHI6 InNjZW5lLmRyYWdtb2RlIix2YWw6Inpvb20iLGljb246cy56b29tYm94LGNs aWNrOmh9LGMucGFuM2Q9e25hbWU6InBhbjNkIix0aXRsZTpmdW5jdGlvbih0 KXtyZXR1cm4gbCh0LCJQYW4iKX0sYXR0cjoic2NlbmUuZHJhZ21vZGUiLHZh bDoicGFuIixpY29uOnMucGFuLGNsaWNrOmh9LGMub3JiaXRSb3RhdGlvbj17 bmFtZToib3JiaXRSb3RhdGlvbiIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJu IGwodCwiT3JiaXRhbCByb3RhdGlvbiIpfSxhdHRyOiJzY2VuZS5kcmFnbW9k ZSIsdmFsOiJvcmJpdCIsaWNvbjpzWyIzZF9yb3RhdGUiXSxjbGljazpofSxj LnRhYmxlUm90YXRpb249e25hbWU6InRhYmxlUm90YXRpb24iLHRpdGxlOmZ1 bmN0aW9uKHQpe3JldHVybiBsKHQsIlR1cm50YWJsZSByb3RhdGlvbiIpfSxh dHRyOiJzY2VuZS5kcmFnbW9kZSIsdmFsOiJ0dXJudGFibGUiLGljb246c1si ei1heGlzIl0sY2xpY2s6aH0sYy5yZXNldENhbWVyYURlZmF1bHQzZD17bmFt ZToicmVzZXRDYW1lcmFEZWZhdWx0M2QiLHRpdGxlOmZ1bmN0aW9uKHQpe3Jl dHVybiBsKHQsIlJlc2V0IGNhbWVyYSB0byBkZWZhdWx0Iil9LGF0dHI6InJl c2V0RGVmYXVsdCIsaWNvbjpzLmhvbWUsY2xpY2s6Zn0sYy5yZXNldENhbWVy YUxhc3RTYXZlM2Q9e25hbWU6InJlc2V0Q2FtZXJhTGFzdFNhdmUzZCIsdGl0 bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiUmVzZXQgY2FtZXJhIHRvIGxh c3Qgc2F2ZSIpfSxhdHRyOiJyZXNldExhc3RTYXZlIixpY29uOnMubW92aWUs Y2xpY2s6Zn0sYy5ob3ZlckNsb3Nlc3QzZD17bmFtZToiaG92ZXJDbG9zZXN0 M2QiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQsIlRvZ2dsZSBzaG93 IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIpfSxhdHRyOiJob3Zlcm1vZGUiLHZh bDpudWxsLHRvZ2dsZTohMCxpY29uOnMudG9vbHRpcF9iYXNpYyxncmF2aXR5 OiJuZSIsY2xpY2s6ZnVuY3Rpb24odCxlKXt2YXIgcj1wKHQsZSk7bi5jYWxs KCJfZ3VpUmVsYXlvdXQiLHQscil9fSxjLnpvb21Jbkdlbz17bmFtZToiem9v bUluR2VvIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gbCh0LCJab29tIGlu Iil9LGF0dHI6Inpvb20iLHZhbDoiaW4iLGljb246cy56b29tX3BsdXMsY2xp Y2s6ZH0sYy56b29tT3V0R2VvPXtuYW1lOiJ6b29tT3V0R2VvIix0aXRsZTpm dW5jdGlvbih0KXtyZXR1cm4gbCh0LCJab29tIG91dCIpfSxhdHRyOiJ6b29t Iix2YWw6Im91dCIsaWNvbjpzLnpvb21fbWludXMsY2xpY2s6ZH0sYy5yZXNl dEdlbz17bmFtZToicmVzZXRHZW8iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVy biBsKHQsIlJlc2V0Iil9LGF0dHI6InJlc2V0Iix2YWw6bnVsbCxpY29uOnMu YXV0b3NjYWxlLGNsaWNrOmR9LGMuaG92ZXJDbG9zZXN0R2VvPXtuYW1lOiJo b3ZlckNsb3Nlc3RHZW8iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBsKHQs IlRvZ2dsZSBzaG93IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIpfSxhdHRyOiJo b3Zlcm1vZGUiLHZhbDpudWxsLHRvZ2dsZTohMCxpY29uOnMudG9vbHRpcF9i YXNpYyxncmF2aXR5OiJuZSIsY2xpY2s6dn0sYy5ob3ZlckNsb3Nlc3RHbDJk PXtuYW1lOiJob3ZlckNsb3Nlc3RHbDJkIix0aXRsZTpmdW5jdGlvbih0KXty ZXR1cm4gbCh0LCJUb2dnbGUgc2hvdyBjbG9zZXN0IGRhdGEgb24gaG92ZXIi KX0sYXR0cjoiaG92ZXJtb2RlIix2YWw6bnVsbCx0b2dnbGU6ITAsaWNvbjpz LnRvb2x0aXBfYmFzaWMsZ3Jhdml0eToibmUiLGNsaWNrOnZ9LGMuaG92ZXJD bG9zZXN0UGllPXtuYW1lOiJob3ZlckNsb3Nlc3RQaWUiLHRpdGxlOmZ1bmN0 aW9uKHQpe3JldHVybiBsKHQsIlRvZ2dsZSBzaG93IGNsb3Nlc3QgZGF0YSBv biBob3ZlciIpfSxhdHRyOiJob3Zlcm1vZGUiLHZhbDoiY2xvc2VzdCIsaWNv bjpzLnRvb2x0aXBfYmFzaWMsZ3Jhdml0eToibmUiLGNsaWNrOnZ9LGMucmVz ZXRWaWV3U2Fua2V5PXtuYW1lOiJyZXNldFNhbmtleUdyb3VwIix0aXRsZTpm dW5jdGlvbih0KXtyZXR1cm4gbCh0LCJSZXNldCB2aWV3Iil9LGljb246cy5o b21lLGNsaWNrOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT17Im5vZGUuZ3JvdXBz IjpbXSwibm9kZS54IjpbXSwibm9kZS55IjpbXX0scj0wO3I8dC5fZnVsbERh dGEubGVuZ3RoO3IrKyl7dmFyIGE9dC5fZnVsbERhdGFbcl0uX3ZpZXdJbml0 aWFsO2VbIm5vZGUuZ3JvdXBzIl0ucHVzaChhLm5vZGUuZ3JvdXBzLnNsaWNl KCkpLGVbIm5vZGUueCJdLnB1c2goYS5ub2RlLnguc2xpY2UoKSksZVsibm9k ZS55Il0ucHVzaChhLm5vZGUueS5zbGljZSgpKX1uLmNhbGwoInJlc3R5bGUi LHQsZSl9fSxjLnRvZ2dsZUhvdmVyPXtuYW1lOiJ0b2dnbGVIb3ZlciIsdGl0 bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiVG9nZ2xlIHNob3cgY2xvc2Vz dCBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9kZSIsdmFsOm51bGws dG9nZ2xlOiEwLGljb246cy50b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5lIixj bGljazpmdW5jdGlvbih0LGUpe3ZhciByPXAodCxlKTtyLmhvdmVybW9kZT1n KHQpLG4uY2FsbCgiX2d1aVJlbGF5b3V0Iix0LHIpfX0sYy5yZXNldFZpZXdz PXtuYW1lOiJyZXNldFZpZXdzIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4g bCh0LCJSZXNldCB2aWV3cyIpfSxpY29uOnMuaG9tZSxjbGljazpmdW5jdGlv bih0LGUpe3ZhciByPWUuY3VycmVudFRhcmdldDtyLnNldEF0dHJpYnV0ZSgi ZGF0YS1hdHRyIiwiem9vbSIpLHIuc2V0QXR0cmlidXRlKCJkYXRhLXZhbCIs InJlc2V0IiksdSh0LGUpLHIuc2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiLCJy ZXNldExhc3RTYXZlIiksZih0LGUpLHkodCwiZ2VvIikseSh0LCJtYXBib3gi KX19LGMudG9nZ2xlU3Bpa2VsaW5lcz17bmFtZToidG9nZ2xlU3Bpa2VsaW5l cyIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGwodCwiVG9nZ2xlIFNwaWtl IExpbmVzIil9LGljb246cy5zcGlrZWxpbmUsYXR0cjoiX2NhcnRlc2lhblNw aWtlc0VuYWJsZWQiLHZhbDoib24iLGNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBl PXQuX2Z1bGxMYXlvdXQscj1lLl9jYXJ0ZXNpYW5TcGlrZXNFbmFibGVkO2Uu X2NhcnRlc2lhblNwaWtlc0VuYWJsZWQ9Im9uIj09PXI/Im9mZiI6Im9uIixu LmNhbGwoIl9ndWlSZWxheW91dCIsdCxmdW5jdGlvbih0KXtmb3IodmFyIGU9 Im9uIj09PXQuX2Z1bGxMYXlvdXQuX2NhcnRlc2lhblNwaWtlc0VuYWJsZWQs cj1pLmxpc3QodCxudWxsLCEwKSxuPXt9LGE9MDthPHIubGVuZ3RoO2ErKyl7 dmFyIG89clthXTtuW28uX25hbWUrIi5zaG93c3Bpa2VzIl09ISFlfHxvLl9z aG93U3Bpa2VJbml0aWFsfXJldHVybiBufSh0KSl9fSxjLnJlc2V0Vmlld01h cGJveD17bmFtZToicmVzZXRWaWV3TWFwYm94Iix0aXRsZTpmdW5jdGlvbih0 KXtyZXR1cm4gbCh0LCJSZXNldCB2aWV3Iil9LGF0dHI6InJlc2V0IixpY29u OnMuaG9tZSxjbGljazpmdW5jdGlvbih0KXt5KHQsIm1hcGJveCIpfX0sYy56 b29tSW5NYXBib3g9e25hbWU6Inpvb21Jbk1hcGJveCIsdGl0bGU6ZnVuY3Rp b24odCl7cmV0dXJuIGwodCwiWm9vbSBpbiIpfSxhdHRyOiJ6b29tIix2YWw6 ImluIixpY29uOnMuem9vbV9wbHVzLGNsaWNrOm19LGMuem9vbU91dE1hcGJv eD17bmFtZToiem9vbU91dE1hcGJveCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0 dXJuIGwodCwiWm9vbSBvdXQiKX0sYXR0cjoiem9vbSIsdmFsOiJvdXQiLGlj b246cy56b29tX21pbnVzLGNsaWNrOm19fSx7Ii4uLy4uL2ZvbnRzL3Bsb3Rp Y29uIjo2OTcsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhpc19pZHMiOjc2OCwiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNiwiLi4v Li4vcmVnaXN0cnkiOjg0Nn1dLDY1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtyLm1hbmFnZT10KCIuL21hbmFnZSIpfSx7Ii4vbWFuYWdlIjo2 NTF9XSw2NTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIiksYT10KCIuLi8u Li90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyIpLGk9dCgiLi4vLi4vcmVnaXN0 cnkiKSxvPXQoIi4vbW9kZWJhciIpLHM9dCgiLi9idXR0b25zIik7ZS5leHBv cnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj10Ll9jb250 ZXh0LGw9ZS5fbW9kZUJhcjtpZihyLmRpc3BsYXlNb2RlQmFyfHxyLndhdGVy bWFyayl7aWYoIUFycmF5LmlzQXJyYXkoci5tb2RlQmFyQnV0dG9uc1RvUmVt b3ZlKSl0aHJvdyBuZXcgRXJyb3IoWyIqbW9kZUJhckJ1dHRvbnNUb1JlbW92 ZSogY29uZmlndXJhdGlvbiBvcHRpb25zIiwibXVzdCBiZSBhbiBhcnJheS4i XS5qb2luKCIgIikpO2lmKCFBcnJheS5pc0FycmF5KHIubW9kZUJhckJ1dHRv bnNUb0FkZCkpdGhyb3cgbmV3IEVycm9yKFsiKm1vZGVCYXJCdXR0b25zVG9B ZGQqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsIm11c3QgYmUgYW4gYXJyYXku Il0uam9pbigiICIpKTt2YXIgYyx1PXIubW9kZUJhckJ1dHRvbnM7Yz1BcnJh eS5pc0FycmF5KHUpJiZ1Lmxlbmd0aD9mdW5jdGlvbih0KXtmb3IodmFyIGU9 MDtlPHQubGVuZ3RoO2UrKylmb3IodmFyIHI9dFtlXSxuPTA7bjxyLmxlbmd0 aDtuKyspe3ZhciBhPXJbbl07aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZih2 b2lkIDA9PT1zW2FdKXRocm93IG5ldyBFcnJvcihbIiptb2RlQmFyQnV0dG9u cyogY29uZmlndXJhdGlvbiBvcHRpb25zIiwiaW52YWxpZCBidXR0b24gbmFt ZSJdLmpvaW4oIiAiKSk7dFtlXVtuXT1zW2FdfX1yZXR1cm4gdH0odSk6IXIu ZGlzcGxheU1vZGVCYXImJnIud2F0ZXJtYXJrP1tdOmZ1bmN0aW9uKHQpe3Zh ciBlPXQuX2Z1bGxMYXlvdXQscj10Ll9mdWxsRGF0YSxvPXQuX2NvbnRleHQs bD1vLm1vZGVCYXJCdXR0b25zVG9SZW1vdmUsYz1vLm1vZGVCYXJCdXR0b25z VG9BZGQsdT1lLl9oYXMoImNhcnRlc2lhbiIpLGg9ZS5faGFzKCJnbDNkIiks Zj1lLl9oYXMoImdlbyIpLHA9ZS5faGFzKCJwaWUiKSxkPWUuX2hhcygiZnVu bmVsYXJlYSIpLGc9ZS5faGFzKCJnbDJkIiksdj1lLl9oYXMoInRlcm5hcnki KSxtPWUuX2hhcygibWFwYm94IikseT1lLl9oYXMoInBvbGFyIikseD1lLl9o YXMoInNhbmtleSIpLGI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW4ubGlzdCh7 X2Z1bGxMYXlvdXQ6dH0sbnVsbCwhMCkscj0wO3I8ZS5sZW5ndGg7cisrKWlm KCFlW3JdLmZpeGVkcmFuZ2UpcmV0dXJuITE7cmV0dXJuITB9KGUpLF89W107 ZnVuY3Rpb24gdyh0KXtpZih0Lmxlbmd0aCl7Zm9yKHZhciBlPVtdLHI9MDty PHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTstMT09PWwuaW5kZXhPZihuKSYm ZS5wdXNoKHNbbl0pfV8ucHVzaChlKX19dmFyIGs9WyJ0b0ltYWdlIl07by5z aG93RWRpdEluQ2hhcnRTdHVkaW8/ay5wdXNoKCJlZGl0SW5DaGFydFN0dWRp byIpOm8uc2hvd1NlbmRUb0Nsb3VkJiZrLnB1c2goInNlbmREYXRhVG9DbG91 ZCIpO3coayk7dmFyIFQ9W10sTT1bXSxBPVtdLFM9W107KHV8fGd8fHB8fGR8 fHYpK2YraCttK3k+MT8oTT1bInRvZ2dsZUhvdmVyIl0sQT1bInJlc2V0Vmll d3MiXSk6Zj8oVD1bInpvb21JbkdlbyIsInpvb21PdXRHZW8iXSxNPVsiaG92 ZXJDbG9zZXN0R2VvIl0sQT1bInJlc2V0R2VvIl0pOmg/KE09WyJob3ZlckNs b3Nlc3QzZCJdLEE9WyJyZXNldENhbWVyYURlZmF1bHQzZCIsInJlc2V0Q2Ft ZXJhTGFzdFNhdmUzZCJdKTptPyhUPVsiem9vbUluTWFwYm94Iiwiem9vbU91 dE1hcGJveCJdLE09WyJ0b2dnbGVIb3ZlciJdLEE9WyJyZXNldFZpZXdNYXBi b3giXSk6Zz9NPVsiaG92ZXJDbG9zZXN0R2wyZCJdOnA/TT1bImhvdmVyQ2xv c2VzdFBpZSJdOng/KE09WyJob3ZlckNsb3Nlc3RDYXJ0ZXNpYW4iLCJob3Zl ckNvbXBhcmVDYXJ0ZXNpYW4iXSxBPVsicmVzZXRWaWV3U2Fua2V5Il0pOk09 WyJ0b2dnbGVIb3ZlciJdO3UmJihNPVsidG9nZ2xlU3Bpa2VsaW5lcyIsImhv dmVyQ2xvc2VzdENhcnRlc2lhbiIsImhvdmVyQ29tcGFyZUNhcnRlc2lhbiJd KTsoZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYo IWkudHJhY2VJcyh0W2VdLCJub0hvdmVyIikpcmV0dXJuITE7cmV0dXJuITB9 KShyKSYmKE09W10pOyF1JiYhZ3x8Ynx8KFQ9WyJ6b29tSW4yZCIsInpvb21P dXQyZCIsImF1dG9TY2FsZTJkIl0sInJlc2V0Vmlld3MiIT09QVswXSYmKEE9 WyJyZXNldFNjYWxlMmQiXSkpO2g/Uz1bInpvb20zZCIsInBhbjNkIiwib3Ji aXRSb3RhdGlvbiIsInRhYmxlUm90YXRpb24iXToodXx8ZykmJiFifHx2P1M9 WyJ6b29tMmQiLCJwYW4yZCJdOm18fGY/Uz1bInBhbjJkIl06eSYmKFM9WyJ6 b29tMmQiXSk7KGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0hMSxyPTA7cjx0Lmxl bmd0aCYmIWU7cisrKXt2YXIgbj10W3JdO24uX21vZHVsZSYmbi5fbW9kdWxl LnNlbGVjdFBvaW50cyYmKGkudHJhY2VJcyhuLCJzY2F0dGVyLWxpa2UiKT8o YS5oYXNNYXJrZXJzKG4pfHxhLmhhc1RleHQobikpJiYoZT0hMCk6aS50cmFj ZUlzKG4sImJveC12aW9saW4iKSYmImFsbCIhPT1uLmJveHBvaW50cyYmImFs bCIhPT1uLnBvaW50c3x8KGU9ITApKX1yZXR1cm4gZX0pKHIpJiZTLnB1c2go InNlbGVjdDJkIiwibGFzc28yZCIpO3JldHVybiB3KFMpLHcoVC5jb25jYXQo QSkpLHcoTSksZnVuY3Rpb24odCxlKXtpZihlLmxlbmd0aClpZihBcnJheS5p c0FycmF5KGVbMF0pKWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXQucHVz aChlW3JdKTtlbHNlIHQucHVzaChlKTtyZXR1cm4gdH0oXyxjKX0odCksbD9s LnVwZGF0ZSh0LGMpOmUuX21vZGVCYXI9byh0LGMpfWVsc2UgbCYmKGwuZGVz dHJveSgpLGRlbGV0ZSBlLl9tb2RlQmFyKX19LHsiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4u Ly4uL3RyYWNlcy9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0LCIuL2J1dHRvbnMi OjY0OSwiLi9tb2RlYmFyIjo2NTJ9XSw2NTI6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoImZhc3QtaXNudW1lcmlj IiksaT10KCIuLi8uLi9saWIiKSxvPXQoIi4uLy4uL2ZvbnRzL3Bsb3RpY29u Iikscz1uZXcgRE9NUGFyc2VyO2Z1bmN0aW9uIGwodCl7dGhpcy5jb250YWlu ZXI9dC5jb250YWluZXIsdGhpcy5lbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoImRpdiIpLHRoaXMudXBkYXRlKHQuZ3JhcGhJbmZvLHQuYnV0dG9u cyksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KX12 YXIgYz1sLnByb3RvdHlwZTtjLnVwZGF0ZT1mdW5jdGlvbih0LGUpe3RoaXMu Z3JhcGhJbmZvPXQ7dmFyIHI9dGhpcy5ncmFwaEluZm8uX2NvbnRleHQsbj10 aGlzLmdyYXBoSW5mby5fZnVsbExheW91dCxhPSJtb2RlYmFyLSIrbi5fdWlk O3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImlkIixhKSx0aGlzLl91aWQ9 YSx0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPSJtb2RlYmFyIiwiaG92ZXIiPT09 ci5kaXNwbGF5TW9kZUJhciYmKHRoaXMuZWxlbWVudC5jbGFzc05hbWUrPSIg bW9kZWJhci0taG92ZXIgZWFzZS1iZyIpLCJ2Ij09PW4ubW9kZWJhci5vcmll bnRhdGlvbiYmKHRoaXMuZWxlbWVudC5jbGFzc05hbWUrPSIgdmVydGljYWwi LGU9ZS5yZXZlcnNlKCkpO3ZhciBvPW4ubW9kZWJhcixzPSJob3ZlciI9PT1y LmRpc3BsYXlNb2RlQmFyPyIuanMtcGxvdGx5LXBsb3QgLnBsb3RseTpob3Zl ciAiOiIiO2kuZGVsZXRlUmVsYXRlZFN0eWxlUnVsZShhKSxpLmFkZFJlbGF0 ZWRTdHlsZVJ1bGUoYSxzKyIjIithKyIgLm1vZGViYXItZ3JvdXAiLCJiYWNr Z3JvdW5kLWNvbG9yOiAiK28uYmdjb2xvciksaS5hZGRSZWxhdGVkU3R5bGVS dWxlKGEsIiMiK2ErIiAubW9kZWJhci1idG4gLmljb24gcGF0aCIsImZpbGw6 ICIrby5jb2xvciksaS5hZGRSZWxhdGVkU3R5bGVSdWxlKGEsIiMiK2ErIiAu bW9kZWJhci1idG46aG92ZXIgLmljb24gcGF0aCIsImZpbGw6ICIrby5hY3Rp dmVjb2xvciksaS5hZGRSZWxhdGVkU3R5bGVSdWxlKGEsIiMiK2ErIiAubW9k ZWJhci1idG4uYWN0aXZlIC5pY29uIHBhdGgiLCJmaWxsOiAiK28uYWN0aXZl Y29sb3IpO3ZhciBsPSF0aGlzLmhhc0J1dHRvbnMoZSksYz10aGlzLmhhc0xv Z28hPT1yLmRpc3BsYXlsb2dvLHU9dGhpcy5sb2NhbGUhPT1yLmxvY2FsZTtp Zih0aGlzLmxvY2FsZT1yLmxvY2FsZSwobHx8Y3x8dSkmJih0aGlzLnJlbW92 ZUFsbEJ1dHRvbnMoKSx0aGlzLnVwZGF0ZUJ1dHRvbnMoZSksci53YXRlcm1h cmt8fHIuZGlzcGxheWxvZ28pKXt2YXIgaD10aGlzLmdldExvZ28oKTtyLndh dGVybWFyayYmKGguY2xhc3NOYW1lPWguY2xhc3NOYW1lKyIgd2F0ZXJtYXJr IiksInYiPT09bi5tb2RlYmFyLm9yaWVudGF0aW9uP3RoaXMuZWxlbWVudC5p bnNlcnRCZWZvcmUoaCx0aGlzLmVsZW1lbnQuY2hpbGROb2Rlc1swXSk6dGhp cy5lbGVtZW50LmFwcGVuZENoaWxkKGgpLHRoaXMuaGFzTG9nbz0hMH10aGlz LnVwZGF0ZUFjdGl2ZUJ1dHRvbigpfSxjLnVwZGF0ZUJ1dHRvbnM9ZnVuY3Rp b24odCl7dmFyIGU9dGhpczt0aGlzLmJ1dHRvbnM9dCx0aGlzLmJ1dHRvbkVs ZW1lbnRzPVtdLHRoaXMuYnV0dG9uc05hbWVzPVtdLHRoaXMuYnV0dG9ucy5m b3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByPWUuY3JlYXRlR3JvdXAoKTt0LmZv ckVhY2goZnVuY3Rpb24odCl7dmFyIG49dC5uYW1lO2lmKCFuKXRocm93IG5l dyBFcnJvcigibXVzdCBwcm92aWRlIGJ1dHRvbiAnbmFtZScgaW4gYnV0dG9u IGNvbmZpZyIpO2lmKC0xIT09ZS5idXR0b25zTmFtZXMuaW5kZXhPZihuKSl0 aHJvdyBuZXcgRXJyb3IoImJ1dHRvbiBuYW1lICciK24rIicgaXMgdGFrZW4i KTtlLmJ1dHRvbnNOYW1lcy5wdXNoKG4pO3ZhciBhPWUuY3JlYXRlQnV0dG9u KHQpO2UuYnV0dG9uRWxlbWVudHMucHVzaChhKSxyLmFwcGVuZENoaWxkKGEp fSksZS5lbGVtZW50LmFwcGVuZENoaWxkKHIpfSl9LGMuY3JlYXRlR3JvdXA9 ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi KTtyZXR1cm4gdC5jbGFzc05hbWU9Im1vZGViYXItZ3JvdXAiLHR9LGMuY3Jl YXRlQnV0dG9uPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMscj1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJhIik7ci5zZXRBdHRyaWJ1dGUoInJlbCIsInRvb2x0 aXAiKSxyLmNsYXNzTmFtZT0ibW9kZWJhci1idG4iO3ZhciBhPXQudGl0bGU7 dm9pZCAwPT09YT9hPXQubmFtZToiZnVuY3Rpb24iPT10eXBlb2YgYSYmKGE9 YSh0aGlzLmdyYXBoSW5mbykpLChhfHwwPT09YSkmJnIuc2V0QXR0cmlidXRl KCJkYXRhLXRpdGxlIixhKSx2b2lkIDAhPT10LmF0dHImJnIuc2V0QXR0cmli dXRlKCJkYXRhLWF0dHIiLHQuYXR0cik7dmFyIGk9dC52YWw7aWYodm9pZCAw IT09aSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiYoaT1pKHRoaXMuZ3JhcGhJ bmZvKSksci5zZXRBdHRyaWJ1dGUoImRhdGEtdmFsIixpKSksImZ1bmN0aW9u IiE9dHlwZW9mIHQuY2xpY2spdGhyb3cgbmV3IEVycm9yKCJtdXN0IHByb3Zp ZGUgYnV0dG9uICdjbGljaycgZnVuY3Rpb24gaW4gYnV0dG9uIGNvbmZpZyIp O3IuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKHIpe3QuY2xp Y2soZS5ncmFwaEluZm8sciksZS51cGRhdGVBY3RpdmVCdXR0b24oci5jdXJy ZW50VGFyZ2V0KX0pLHIuc2V0QXR0cmlidXRlKCJkYXRhLXRvZ2dsZSIsdC50 b2dnbGV8fCExKSx0LnRvZ2dsZSYmbi5zZWxlY3QocikuY2xhc3NlZCgiYWN0 aXZlIiwhMCk7dmFyIHM9dC5pY29uO3JldHVybiJmdW5jdGlvbiI9PXR5cGVv ZiBzP3IuYXBwZW5kQ2hpbGQocygpKTpyLmFwcGVuZENoaWxkKHRoaXMuY3Jl YXRlSWNvbihzfHxvLnF1ZXN0aW9uKSksci5zZXRBdHRyaWJ1dGUoImRhdGEt Z3Jhdml0eSIsdC5ncmF2aXR5fHwibiIpLHJ9LGMuY3JlYXRlSWNvbj1mdW5j dGlvbih0KXt2YXIgZSxyPWEodC5oZWlnaHQpP051bWJlcih0LmhlaWdodCk6 dC5hc2NlbnQtdC5kZXNjZW50LG49Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv c3ZnIjtpZih0LnBhdGgpeyhlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhu LCJzdmciKSkuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbMCwwLHQud2lkdGgs cl0uam9pbigiICIpKSxlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJpY29uIik7 dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sInBhdGgiKTtpLnNl dEF0dHJpYnV0ZSgiZCIsdC5wYXRoKSx0LnRyYW5zZm9ybT9pLnNldEF0dHJp YnV0ZSgidHJhbnNmb3JtIix0LnRyYW5zZm9ybSk6dm9pZCAwIT09dC5hc2Nl bnQmJmkuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJtYXRyaXgoMSAwIDAg LTEgMCAiK3QuYXNjZW50KyIpIiksZS5hcHBlbmRDaGlsZChpKX10LnN2ZyYm KGU9cy5wYXJzZUZyb21TdHJpbmcodC5zdmcsImFwcGxpY2F0aW9uL3htbCIp LmNoaWxkTm9kZXNbMF0pO3JldHVybiBlLnNldEF0dHJpYnV0ZSgiaGVpZ2h0 IiwiMWVtIiksZS5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiMWVtIiksZX0sYy51 cGRhdGVBY3RpdmVCdXR0b249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ncmFw aEluZm8uX2Z1bGxMYXlvdXQscj12b2lkIDAhPT10P3QuZ2V0QXR0cmlidXRl KCJkYXRhLWF0dHIiKTpudWxsO3RoaXMuYnV0dG9uRWxlbWVudHMuZm9yRWFj aChmdW5jdGlvbih0KXt2YXIgYT10LmdldEF0dHJpYnV0ZSgiZGF0YS12YWwi KXx8ITAsbz10LmdldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIikscz0idHJ1ZSI9 PT10LmdldEF0dHJpYnV0ZSgiZGF0YS10b2dnbGUiKSxsPW4uc2VsZWN0KHQp O2lmKHMpbz09PXImJmwuY2xhc3NlZCgiYWN0aXZlIiwhbC5jbGFzc2VkKCJh Y3RpdmUiKSk7ZWxzZXt2YXIgYz1udWxsPT09bz9vOmkubmVzdGVkUHJvcGVy dHkoZSxvKS5nZXQoKTtsLmNsYXNzZWQoImFjdGl2ZSIsYz09PWEpfX0pfSxj Lmhhc0J1dHRvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5idXR0b25zO2lm KCFlKXJldHVybiExO2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7 Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3Ipe2lmKHRbcl0ubGVuZ3RoIT09 ZVtyXS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjx0W3JdLmxlbmd0 aDtuKyspaWYodFtyXVtuXS5uYW1lIT09ZVtyXVtuXS5uYW1lKXJldHVybiEx fXJldHVybiEwfSxjLmdldExvZ289ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNy ZWF0ZUdyb3VwKCksZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cmV0 dXJuIGUuaHJlZj0iaHR0cHM6Ly9wbG90Lmx5LyIsZS50YXJnZXQ9Il9ibGFu ayIsZS5zZXRBdHRyaWJ1dGUoImRhdGEtdGl0bGUiLGkuXyh0aGlzLmdyYXBo SW5mbywiUHJvZHVjZWQgd2l0aCBQbG90bHkiKSksZS5jbGFzc05hbWU9Im1v ZGViYXItYnRuIHBsb3RseWpzaWNvbiBtb2RlYmFyLWJ0bi0tbG9nbyIsZS5h cHBlbmRDaGlsZCh0aGlzLmNyZWF0ZUljb24oby5uZXdwbG90bHlsb2dvKSks dC5hcHBlbmRDaGlsZChlKSx0fSxjLnJlbW92ZUFsbEJ1dHRvbnM9ZnVuY3Rp b24oKXtmb3IoO3RoaXMuZWxlbWVudC5maXJzdENoaWxkOyl0aGlzLmVsZW1l bnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpO3RoaXMu aGFzTG9nbz0hMX0sYy5kZXN0cm95PWZ1bmN0aW9uKCl7aS5yZW1vdmVFbGVt ZW50KHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi5tb2RlYmFyIikp LGkuZGVsZXRlUmVsYXRlZFN0eWxlUnVsZSh0aGlzLl91aWQpfSxlLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0LGE9bmV3IGwo e2dyYXBoSW5mbzp0LGNvbnRhaW5lcjpyLl9tb2RlYmFyZGl2Lm5vZGUoKSxi dXR0b25zOmV9KTtyZXR1cm4gci5fcHJpdmF0ZXBsb3QmJm4uc2VsZWN0KGEu ZWxlbWVudCkuYXBwZW5kKCJzcGFuIikuY2xhc3NlZCgiYmFkZ2UtcHJpdmF0 ZSBmbG9hdC0tbGVmdCIsITApLnRleHQoIlBSSVZBVEUiKSxhfX0seyIuLi8u Li9mb250cy9wbG90aWNvbiI6Njk3LCIuLi8uLi9saWIiOjcxNyxkMzoxNjUs ImZhc3QtaXNudW1lcmljIjoyMjh9XSw2NTM6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1 dGVzIiksYT10KCIuLi9jb2xvci9hdHRyaWJ1dGVzIiksaT0oMCx0KCIuLi8u Li9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXkpKCJi dXR0b24iLHt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVk aXRUeXBlOiJwbG90In0sc3RlcDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsibW9udGgiLCJ5ZWFyIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNl Y29uZCIsImFsbCJdLGRmbHQ6Im1vbnRoIixlZGl0VHlwZToicGxvdCJ9LHN0 ZXBtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJiYWNrd2Fy ZCIsInRvZGF0ZSJdLGRmbHQ6ImJhY2t3YXJkIixlZGl0VHlwZToicGxvdCJ9 LGNvdW50Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlw ZToicGxvdCJ9LGxhYmVsOnt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJw bG90In0sZWRpdFR5cGU6InBsb3QifSk7ZS5leHBvcnRzPXt2aXNpYmxlOnt2 YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToicGxvdCJ9LGJ1dHRvbnM6aSx4 Ont2YWxUeXBlOiJudW1iZXIiLG1pbjotMixtYXg6MyxlZGl0VHlwZToicGxv dCJ9LHhhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1 dG8iLCJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxkZmx0OiJsZWZ0IixlZGl0 VHlwZToicGxvdCJ9LHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDoz LGVkaXRUeXBlOiJwbG90In0seWFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsiYXV0byIsInRvcCIsIm1pZGRsZSIsImJvdHRvbSJdLGRm bHQ6ImJvdHRvbSIsZWRpdFR5cGU6InBsb3QifSxmb250Om4oe2VkaXRUeXBl OiJwbG90In0pLGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEubGln aHRMaW5lLGVkaXRUeXBlOiJwbG90In0sYWN0aXZlY29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixlZGl0VHlwZToicGxvdCJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBl OiJjb2xvciIsZGZsdDphLmRlZmF1bHRMaW5lLGVkaXRUeXBlOiJwbG90In0s Ym9yZGVyd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowLGVk aXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifX0seyIuLi8uLi9wbG90 X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0 cmlidXRlcyI6NzkxLCIuLi9jb2xvci9hdHRyaWJ1dGVzIjo1OTF9XSw2NTQ6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXt5UGFk Oi4wMixtaW5CdXR0b25XaWR0aDozMCxyeDozLHJ5OjMsbGlnaHRBbW91bnQ6 MjUsZGFya0Ftb3VudDoxMH19LHt9XSw2NTU6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi9jb2xv ciIpLGk9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLG89dCgi Li4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIikscz10KCIu L2F0dHJpYnV0ZXMiKSxsPXQoIi4vY29uc3RhbnRzIik7ZnVuY3Rpb24gYyh0 LGUscixhKXt2YXIgaT1hLmNhbGVuZGFyO2Z1bmN0aW9uIG8ocixhKXtyZXR1 cm4gbi5jb2VyY2UodCxlLHMuYnV0dG9ucyxyLGEpfWlmKG8oInZpc2libGUi KSl7dmFyIGw9bygic3RlcCIpOyJhbGwiIT09bCYmKCFpfHwiZ3JlZ29yaWFu Ij09PWl8fCJtb250aCIhPT1sJiYieWVhciIhPT1sP28oInN0ZXBtb2RlIik6 ZS5zdGVwbW9kZT0iYmFja3dhcmQiLG8oImNvdW50IikpLG8oImxhYmVsIil9 fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscix1LGgpe3ZhciBmPXQucmFuZ2Vz ZWxlY3Rvcnx8e30scD1pLm5ld0NvbnRhaW5lcihlLCJyYW5nZXNlbGVjdG9y Iik7ZnVuY3Rpb24gZCh0LGUpe3JldHVybiBuLmNvZXJjZShmLHAscyx0LGUp fWlmKGQoInZpc2libGUiLG8oZixwLHtuYW1lOiJidXR0b25zIixoYW5kbGVJ dGVtRGVmYXVsdHM6YyxjYWxlbmRhcjpofSkubGVuZ3RoPjApKXt2YXIgZz1m dW5jdGlvbih0LGUscil7Zm9yKHZhciBuPXIuZmlsdGVyKGZ1bmN0aW9uKHIp e3JldHVybiBlW3JdLmFuY2hvcj09PXQuX2lkfSksYT0wLGk9MDtpPG4ubGVu Z3RoO2krKyl7dmFyIG89ZVtuW2ldXS5kb21haW47byYmKGE9TWF0aC5tYXgo b1sxXSxhKSl9cmV0dXJuW3QuZG9tYWluWzBdLGErbC55UGFkXX0oZSxyLHUp O2QoIngiLGdbMF0pLGQoInkiLGdbMV0pLG4ubm9uZU9yQWxsKHQsZSxbIngi LCJ5Il0pLGQoInhhbmNob3IiKSxkKCJ5YW5jaG9yIiksbi5jb2VyY2VGb250 KGQsImZvbnQiLHIuZm9udCk7dmFyIHY9ZCgiYmdjb2xvciIpO2QoImFjdGl2 ZWNvbG9yIixhLmNvbnRyYXN0KHYsbC5saWdodEFtb3VudCxsLmRhcmtBbW91 bnQpKSxkKCJib3JkZXJjb2xvciIpLGQoImJvcmRlcndpZHRoIil9fX0seyIu Li8uLi9saWIiOjcxNywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6 NzU1LCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2 MSwiLi4vY29sb3IiOjU5MiwiLi9hdHRyaWJ1dGVzIjo2NTMsIi4vY29uc3Rh bnRzIjo2NTR9XSw2NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8u Li9wbG90cy9wbG90cyIpLG89dCgiLi4vY29sb3IiKSxzPXQoIi4uL2RyYXdp bmciKSxsPXQoIi4uLy4uL2xpYiIpLGM9dCgiLi4vLi4vbGliL3N2Z190ZXh0 X3V0aWxzIiksdT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMi KSxoPXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKSxmPWguTElORV9T UEFDSU5HLHA9aC5GUk9NX1RMLGQ9aC5GUk9NX0JSLGc9dCgiLi9jb25zdGFu dHMiKSx2PXQoIi4vZ2V0X3VwZGF0ZV9vYmplY3QiKTtmdW5jdGlvbiBtKHQp e3JldHVybiB0Ll9pZH1mdW5jdGlvbiB5KHQsZSxyKXt2YXIgbj1sLmVuc3Vy ZVNpbmdsZSh0LCJyZWN0Iiwic2VsZWN0b3ItcmVjdCIsZnVuY3Rpb24odCl7 dC5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIil9KTtuLmF0 dHIoe3J4Omcucngscnk6Zy5yeX0pLG4uY2FsbChvLnN0cm9rZSxlLmJvcmRl cmNvbG9yKS5jYWxsKG8uZmlsbCxmdW5jdGlvbih0LGUpe3JldHVybiBlLl9p c0FjdGl2ZXx8ZS5faXNIb3ZlcmVkP3QuYWN0aXZlY29sb3I6dC5iZ2NvbG9y fShlLHIpKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixlLmJvcmRlcndpZHRoKyJw eCIpfWZ1bmN0aW9uIHgodCxlLHIsbil7bC5lbnN1cmVTaW5nbGUodCwidGV4 dCIsInNlbGVjdG9yLXRleHQiLGZ1bmN0aW9uKHQpe3QuY2xhc3NlZCgidXNl ci1zZWxlY3Qtbm9uZSIsITApLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxl Iil9KS5jYWxsKHMuZm9udCxlLmZvbnQpLnRleHQoZnVuY3Rpb24odCxlKXtp Zih0LmxhYmVsKXJldHVybiBlP2wudGVtcGxhdGVTdHJpbmcodC5sYWJlbCxl KTp0LmxhYmVsO3JldHVybiJhbGwiPT09dC5zdGVwPyJhbGwiOnQuY291bnQr dC5zdGVwLmNoYXJBdCgwKX0ocixuLl9mdWxsTGF5b3V0Ll9tZXRhKSkuY2Fs bChmdW5jdGlvbih0KXtjLmNvbnZlcnRUb1RzcGFucyh0LG4pfSl9ZS5leHBv cnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQuX2luZm9sYXll ci5zZWxlY3RBbGwoIi5yYW5nZXNlbGVjdG9yIikuZGF0YShmdW5jdGlvbih0 KXtmb3IodmFyIGU9dS5saXN0KHQsIngiLCEwKSxyPVtdLG49MDtuPGUubGVu Z3RoO24rKyl7dmFyIGE9ZVtuXTthLnJhbmdlc2VsZWN0b3ImJmEucmFuZ2Vz ZWxlY3Rvci52aXNpYmxlJiZyLnB1c2goYSl9cmV0dXJuIHJ9KHQpLG0pO2Uu ZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJyYW5nZXNlbGVjdG9yIiwh MCksZS5leGl0KCkucmVtb3ZlKCksZS5zdHlsZSh7Y3Vyc29yOiJwb2ludGVy IiwicG9pbnRlci1ldmVudHMiOiJhbGwifSksZS5lYWNoKGZ1bmN0aW9uKGUp e3ZhciByPW4uc2VsZWN0KHRoaXMpLG89ZSx1PW8ucmFuZ2VzZWxlY3Rvcixo PXIuc2VsZWN0QWxsKCJnLmJ1dHRvbiIpLmRhdGEobC5maWx0ZXJWaXNpYmxl KHUuYnV0dG9ucykpO2guZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJi dXR0b24iLCEwKSxoLmV4aXQoKS5yZW1vdmUoKSxoLmVhY2goZnVuY3Rpb24o ZSl7dmFyIHI9bi5zZWxlY3QodGhpcyksaT12KG8sZSk7ZS5faXNBY3RpdmU9 ZnVuY3Rpb24odCxlLHIpe2lmKCJhbGwiPT09ZS5zdGVwKXJldHVybiEwPT09 dC5hdXRvcmFuZ2U7dmFyIG49T2JqZWN0LmtleXMocik7cmV0dXJuIHQucmFu Z2VbMF09PT1yW25bMF1dJiZ0LnJhbmdlWzFdPT09cltuWzFdXX0obyxlLGkp LHIuY2FsbCh5LHUsZSksci5jYWxsKHgsdSxlLHQpLHIub24oImNsaWNrIixm dW5jdGlvbigpe3QuX2RyYWdnZWR8fGEuY2FsbCgiX2d1aVJlbGF5b3V0Iix0 LGkpfSksci5vbigibW91c2VvdmVyIixmdW5jdGlvbigpe2UuX2lzSG92ZXJl ZD0hMCxyLmNhbGwoeSx1LGUpfSksci5vbigibW91c2VvdXQiLGZ1bmN0aW9u KCl7ZS5faXNIb3ZlcmVkPSExLHIuY2FsbCh5LHUsZSl9KX0pLGZ1bmN0aW9u KHQsZSxyLGEsbyl7dmFyIHU9MCxoPTAsdj1yLmJvcmRlcndpZHRoO2UuZWFj aChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpLGU9dC5zZWxlY3Qo Ii5zZWxlY3Rvci10ZXh0IiksYT1yLmZvbnQuc2l6ZSpmLGk9TWF0aC5tYXgo YSpjLmxpbmVDb3VudChlKSwxNikrMztoPU1hdGgubWF4KGgsaSl9KSxlLmVh Y2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxlPXQuc2VsZWN0 KCIuc2VsZWN0b3ItcmVjdCIpLGE9dC5zZWxlY3QoIi5zZWxlY3Rvci10ZXh0 IiksaT1hLm5vZGUoKSYmcy5iQm94KGEubm9kZSgpKS53aWR0aCxvPXIuZm9u dC5zaXplKmYsbD1jLmxpbmVDb3VudChhKSxwPU1hdGgubWF4KGkrMTAsZy5t aW5CdXR0b25XaWR0aCk7dC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo Iisodit1KSsiLCIrdisiKSIpLGUuYXR0cih7eDowLHk6MCx3aWR0aDpwLGhl aWdodDpofSksYy5wb3NpdGlvblRleHQoYSxwLzIsaC8yLShsLTEpKm8vMisz KSx1Kz1wKzV9KTt2YXIgbT10Ll9mdWxsTGF5b3V0Ll9zaXplLHk9bS5sK20u dypyLngseD1tLnQrbS5oKigxLXIueSksYj0ibGVmdCI7bC5pc1JpZ2h0QW5j aG9yKHIpJiYoeS09dSxiPSJyaWdodCIpO2wuaXNDZW50ZXJBbmNob3Iocikm Jih5LT11LzIsYj0iY2VudGVyIik7dmFyIF89InRvcCI7bC5pc0JvdHRvbUFu Y2hvcihyKSYmKHgtPWgsXz0iYm90dG9tIik7bC5pc01pZGRsZUFuY2hvcihy KSYmKHgtPWgvMixfPSJtaWRkbGUiKTt1PU1hdGguY2VpbCh1KSxoPU1hdGgu Y2VpbChoKSx5PU1hdGgucm91bmQoeSkseD1NYXRoLnJvdW5kKHgpLGkuYXV0 b01hcmdpbih0LGErIi1yYW5nZS1zZWxlY3RvciIse3g6ci54LHk6ci55LGw6 dSpwW2JdLHI6dSpkW2JdLGI6aCpkW19dLHQ6aCpwW19dfSksby5hdHRyKCJ0 cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit5KyIsIit4KyIpIil9KHQsaCx1LG8u X25hbWUscil9KX19LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2 LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3 NDEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCIuLi8u Li9wbG90cy9wbG90cyI6ODI2LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9j b2xvciI6NTkyLCIuLi9kcmF3aW5nIjo2MTMsIi4vY29uc3RhbnRzIjo2NTQs Ii4vZ2V0X3VwZGF0ZV9vYmplY3QiOjY1NyxkMzoxNjV9XSw2NTc6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9uYW1lLGE9e307aWYoImFsbCI9 PT1lLnN0ZXApYVtyKyIuYXV0b3JhbmdlIl09ITA7ZWxzZXt2YXIgaT1mdW5j dGlvbih0LGUpe3ZhciByLGE9dC5yYW5nZSxpPW5ldyBEYXRlKHQucjJsKGFb MV0pKSxvPWUuc3RlcCxzPWUuY291bnQ7c3dpdGNoKGUuc3RlcG1vZGUpe2Nh c2UiYmFja3dhcmQiOnI9dC5sMnIoK24udGltZVtvXS51dGMub2Zmc2V0KGks LXMpKTticmVhaztjYXNlInRvZGF0ZSI6dmFyIGw9bi50aW1lW29dLnV0Yy5v ZmZzZXQoaSwtcyk7cj10Lmwycigrbi50aW1lW29dLnV0Yy5jZWlsKGwpKX12 YXIgYz1hWzFdO3JldHVybltyLGNdfSh0LGUpO2FbcisiLnJhbmdlWzBdIl09 aVswXSxhW3IrIi5yYW5nZVsxXSJdPWlbMV19cmV0dXJuIGF9fSx7ZDM6MTY1 fV0sNjU4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJyYW5nZXNlbGVjdG9y IixzY2hlbWE6e3N1YnBsb3RzOnt4YXhpczp7cmFuZ2VzZWxlY3Rvcjp0KCIu L2F0dHJpYnV0ZXMiKX19fSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vYXR0cmli dXRlcyIpLGhhbmRsZURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxkcmF3OnQo Ii4vZHJhdyIpfX0seyIuL2F0dHJpYnV0ZXMiOjY1MywiLi9kZWZhdWx0cyI6 NjU1LCIuL2RyYXciOjY1Nn1dLDY1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi9jb2xvci9hdHRyaWJ1dGVzIik7ZS5leHBv cnRzPXtiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmJhY2tncm91 bmQsZWRpdFR5cGU6InBsb3QifSxib3JkZXJjb2xvcjp7dmFsVHlwZToiY29s b3IiLGRmbHQ6bi5kZWZhdWx0TGluZSxlZGl0VHlwZToicGxvdCJ9LGJvcmRl cndpZHRoOnt2YWxUeXBlOiJpbnRlZ2VyIixkZmx0OjAsbWluOjAsZWRpdFR5 cGU6InBsb3QifSxhdXRvcmFuZ2U6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6 ITAsZWRpdFR5cGU6ImNhbGMiLGltcGxpZWRFZGl0czp7InJhbmdlWzBdIjp2 b2lkIDAsInJhbmdlWzFdIjp2b2lkIDB9fSxyYW5nZTp7dmFsVHlwZToiaW5m b19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxj IixpbXBsaWVkRWRpdHM6eyJeYXV0b3JhbmdlIjohMX19LHt2YWxUeXBlOiJh bnkiLGVkaXRUeXBlOiJjYWxjIixpbXBsaWVkRWRpdHM6eyJeYXV0b3Jhbmdl IjohMX19XSxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOnthdXRvcmFu Z2U6ITF9fSx0aGlja25lc3M6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDouMTUs bWluOjAsbWF4OjEsZWRpdFR5cGU6InBsb3QifSx2aXNpYmxlOnt2YWxUeXBl OiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6 ImNhbGMifX0seyIuLi9jb2xvci9hdHRyaWJ1dGVzIjo1OTF9XSw2NjA6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4aXNfaWRzIikubGlzdCxhPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9hdXRvcmFuZ2UiKS5nZXRBdXRvUmFuZ2UsaT10KCIuL2Nv bnN0YW50cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9bih0 LCJ4IiwhMCkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lW3JdLHM9b1tp Lm5hbWVdO3MmJnMudmlzaWJsZSYmcy5hdXRvcmFuZ2UmJihzLl9pbnB1dC5h dXRvcmFuZ2U9ITAscy5faW5wdXQucmFuZ2U9cy5yYW5nZT1hKHQsbykpfX19 LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSI6NzY0LCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi9jb25zdGFudHMi OjY2MX1dLDY2MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9e25hbWU6InJhbmdlc2xpZGVyIixjb250YWluZXJDbGFzc05hbWU6 InJhbmdlc2xpZGVyLWNvbnRhaW5lciIsYmdDbGFzc05hbWU6InJhbmdlc2xp ZGVyLWJnIixyYW5nZVBsb3RDbGFzc05hbWU6InJhbmdlc2xpZGVyLXJhbmdl cGxvdCIsbWFza01pbkNsYXNzTmFtZToicmFuZ2VzbGlkZXItbWFzay1taW4i LG1hc2tNYXhDbGFzc05hbWU6InJhbmdlc2xpZGVyLW1hc2stbWF4IixzbGlk ZUJveENsYXNzTmFtZToicmFuZ2VzbGlkZXItc2xpZGVib3giLGdyYWJiZXJN aW5DbGFzc05hbWU6InJhbmdlc2xpZGVyLWdyYWJiZXItbWluIixncmFiQXJl YU1pbkNsYXNzTmFtZToicmFuZ2VzbGlkZXItZ3JhYmFyZWEtbWluIixoYW5k bGVNaW5DbGFzc05hbWU6InJhbmdlc2xpZGVyLWhhbmRsZS1taW4iLGdyYWJi ZXJNYXhDbGFzc05hbWU6InJhbmdlc2xpZGVyLWdyYWJiZXItbWF4IixncmFi QXJlYU1heENsYXNzTmFtZToicmFuZ2VzbGlkZXItZ3JhYmFyZWEtbWF4Iixo YW5kbGVNYXhDbGFzc05hbWU6InJhbmdlc2xpZGVyLWhhbmRsZS1tYXgiLG1h c2tNaW5PcHBBeGlzQ2xhc3NOYW1lOiJyYW5nZXNsaWRlci1tYXNrLW1pbi1v cHAtYXhpcyIsbWFza01heE9wcEF4aXNDbGFzc05hbWU6InJhbmdlc2xpZGVy LW1hc2stbWF4LW9wcC1heGlzIixtYXNrQ29sb3I6InJnYmEoMCwwLDAsMC40 KSIsbWFza09wcEF4aXNDb2xvcjoicmdiYSgwLDAsMCwwLjIpIixzbGlkZUJv eEZpbGw6InRyYW5zcGFyZW50IixzbGlkZUJveEN1cnNvcjoiZXctcmVzaXpl IixncmFiQXJlYUZpbGw6InRyYW5zcGFyZW50IixncmFiQXJlYUN1cnNvcjoi Y29sLXJlc2l6ZSIsZ3JhYkFyZWFXaWR0aDoxMCxoYW5kbGVXaWR0aDo0LGhh bmRsZVJhZGl1czoxLGhhbmRsZVN0cm9rZVdpZHRoOjEsZXh0cmFQYWQ6MTV9 fSx7fV0sNjYyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1w bGF0ZSIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIiks bz10KCIuL2F0dHJpYnV0ZXMiKSxzPXQoIi4vb3BwYXhpc19hdHRyaWJ1dGVz Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbD10W3JdLGM9ZVty XTtpZihsLnJhbmdlc2xpZGVyfHxlLl9yZXF1ZXN0UmFuZ2VzbGlkZXJbYy5f aWRdKXtuLmlzUGxhaW5PYmplY3QobC5yYW5nZXNsaWRlcil8fChsLnJhbmdl c2xpZGVyPXt9KTt2YXIgdSxoLGY9bC5yYW5nZXNsaWRlcixwPWEubmV3Q29u dGFpbmVyKGMsInJhbmdlc2xpZGVyIik7aWYoXygidmlzaWJsZSIpKXtfKCJi Z2NvbG9yIixlLnBsb3RfYmdjb2xvciksXygiYm9yZGVyY29sb3IiKSxfKCJi b3JkZXJ3aWR0aCIpLF8oInRoaWNrbmVzcyIpLF8oImF1dG9yYW5nZSIsIWMu aXNWYWxpZFJhbmdlKGYucmFuZ2UpKSxfKCJyYW5nZSIpO3ZhciBkPWUuX3N1 YnBsb3RzO2lmKGQpZm9yKHZhciBnPWQuY2FydGVzaWFuLmZpbHRlcihmdW5j dGlvbih0KXtyZXR1cm4gdC5zdWJzdHIoMCx0LmluZGV4T2YoInkiKSk9PT1p Lm5hbWUyaWQocil9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuc3Vic3Ry KHQuaW5kZXhPZigieSIpLHQubGVuZ3RoKX0pLHY9bi5zaW1wbGVNYXAoZyxp LmlkMm5hbWUpLG09MDttPHYubGVuZ3RoO20rKyl7dmFyIHk9dlttXTt1PWZb eV18fHt9LGg9YS5uZXdDb250YWluZXIocCx5LCJ5YXhpcyIpO3ZhciB4LGI9 ZVt5XTt1LnJhbmdlJiZiLmlzVmFsaWRSYW5nZSh1LnJhbmdlKSYmKHg9ImZp eGVkIiksIm1hdGNoIiE9PXcoInJhbmdlbW9kZSIseCkmJncoInJhbmdlIixi LnJhbmdlLnNsaWNlKCkpfXAuX2lucHV0PWZ9fWZ1bmN0aW9uIF8odCxlKXty ZXR1cm4gbi5jb2VyY2UoZixwLG8sdCxlKX1mdW5jdGlvbiB3KHQsZSl7cmV0 dXJuIG4uY29lcmNlKHUsaCxzLHQsZSl9fX0seyIuLi8uLi9saWIiOjcxNywi Li4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi9hdHRyaWJ1dGVzIjo2NTks Ii4vb3BwYXhpc19hdHRyaWJ1dGVzIjo2NjZ9XSw2NjM6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL3Jl Z2lzdHJ5IiksaT10KCIuLi8uLi9wbG90cy9wbG90cyIpLG89dCgiLi4vLi4v bGliIikscz10KCIuLi9kcmF3aW5nIiksbD10KCIuLi9jb2xvciIpLGM9dCgi Li4vdGl0bGVzIiksdT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxoPXQo Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLGY9dCgiLi4vZHJh Z2VsZW1lbnQiKSxwPXQoIi4uLy4uL2xpYi9zZXRjdXJzb3IiKSxkPXQoIi4v Y29uc3RhbnRzIik7ZnVuY3Rpb24gZyh0LGUscixuKXt2YXIgYT1vLmVuc3Vy ZVNpbmdsZSh0LCJyZWN0IixkLmJnQ2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3Qu YXR0cih7eDowLHk6MCwic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9 KX0pLGk9bi5ib3JkZXJ3aWR0aCUyPT0wP24uYm9yZGVyd2lkdGg6bi5ib3Jk ZXJ3aWR0aC0xLGw9LW4uX29mZnNldFNoaWZ0LGM9cy5jcmlzcFJvdW5kKGUs bi5ib3JkZXJ3aWR0aCk7YS5hdHRyKHt3aWR0aDpuLl93aWR0aCtpLGhlaWdo dDpuLl9oZWlnaHQraSx0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK2wrIiwiK2wr IikiLGZpbGw6bi5iZ2NvbG9yLHN0cm9rZTpuLmJvcmRlcmNvbG9yLCJzdHJv a2Utd2lkdGgiOmN9KX1mdW5jdGlvbiB2KHQsZSxyLG4pe3ZhciBhPWUuX2Z1 bGxMYXlvdXQ7by5lbnN1cmVTaW5nbGVCeUlkKGEuX3RvcGRlZnMsImNsaXBQ YXRoIixuLl9jbGlwSWQsZnVuY3Rpb24odCl7dC5hcHBlbmQoInJlY3QiKS5h dHRyKHt4OjAseTowfSl9KS5zZWxlY3QoInJlY3QiKS5hdHRyKHt3aWR0aDpu Ll93aWR0aCxoZWlnaHQ6bi5faGVpZ2h0fSl9ZnVuY3Rpb24gbSh0LGUscixh KXt2YXIgbCxjPWUuY2FsY2RhdGEsZj10LnNlbGVjdEFsbCgiZy4iK2QucmFu Z2VQbG90Q2xhc3NOYW1lKS5kYXRhKHIuX3N1YnBsb3RzV2l0aCxvLmlkZW50 aXR5KTtmLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLGZ1bmN0 aW9uKHQpe3JldHVybiBkLnJhbmdlUGxvdENsYXNzTmFtZSsiICIrdH0pLmNh bGwocy5zZXRDbGlwVXJsLGEuX2NsaXBJZCxlKSxmLm9yZGVyKCksZi5leGl0 KCkucmVtb3ZlKCksZi5lYWNoKGZ1bmN0aW9uKHQsbyl7dmFyIHM9bi5zZWxl Y3QodGhpcyksZj0wPT09byxwPWguZ2V0RnJvbUlkKGUsdCwieSIpLGQ9cC5f bmFtZSxnPWFbZF0sdj17ZGF0YTpbXSxsYXlvdXQ6e3hheGlzOnt0eXBlOnIu dHlwZSxkb21haW46WzAsMV0scmFuZ2U6YS5yYW5nZS5zbGljZSgpLGNhbGVu ZGFyOnIuY2FsZW5kYXJ9LHdpZHRoOmEuX3dpZHRoLGhlaWdodDphLl9oZWln aHQsbWFyZ2luOnt0OjAsYjowLGw6MCxyOjB9fSxfY29udGV4dDplLl9jb250 ZXh0fTt2LmxheW91dFtkXT17dHlwZTpwLnR5cGUsZG9tYWluOlswLDFdLHJh bmdlOiJtYXRjaCIhPT1nLnJhbmdlbW9kZT9nLnJhbmdlLnNsaWNlKCk6cC5y YW5nZS5zbGljZSgpLGNhbGVuZGFyOnAuY2FsZW5kYXJ9LGkuc3VwcGx5RGVm YXVsdHModik7dmFyIG09di5fZnVsbExheW91dC54YXhpcyx5PXYuX2Z1bGxM YXlvdXRbZF07bS5jbGVhckNhbGMoKSxtLnNldFNjYWxlKCkseS5jbGVhckNh bGMoKSx5LnNldFNjYWxlKCk7dmFyIHg9e2lkOnQscGxvdGdyb3VwOnMseGF4 aXM6bSx5YXhpczp5LGlzUmFuZ2VQbG90OiEwfTtmP2w9eDooeC5tYWlucGxv dD0ieHkiLHgubWFpbnBsb3RpbmZvPWwpLHUucmFuZ2VQbG90KGUseCxmdW5j dGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3Zh ciBhPXRbbl0saT1hWzBdLnRyYWNlO2kueGF4aXMraS55YXhpcz09PWUmJnIu cHVzaChhKX1yZXR1cm4gcn0oYyx0KSl9KX1mdW5jdGlvbiB5KHQsZSxyLG4s YSl7KG8uZW5zdXJlU2luZ2xlKHQsInJlY3QiLGQubWFza01pbkNsYXNzTmFt ZSxmdW5jdGlvbih0KXt0LmF0dHIoe3g6MCx5OjAsInNoYXBlLXJlbmRlcmlu ZyI6ImNyaXNwRWRnZXMifSl9KS5hdHRyKCJoZWlnaHQiLG4uX2hlaWdodCku Y2FsbChsLmZpbGwsZC5tYXNrQ29sb3IpLG8uZW5zdXJlU2luZ2xlKHQsInJl Y3QiLGQubWFza01heENsYXNzTmFtZSxmdW5jdGlvbih0KXt0LmF0dHIoe3k6 MCwic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KX0pLmF0dHIoImhl aWdodCIsbi5faGVpZ2h0KS5jYWxsKGwuZmlsbCxkLm1hc2tDb2xvciksIm1h dGNoIiE9PWEucmFuZ2Vtb2RlKSYmKG8uZW5zdXJlU2luZ2xlKHQsInJlY3Qi LGQubWFza01pbk9wcEF4aXNDbGFzc05hbWUsZnVuY3Rpb24odCl7dC5hdHRy KHt5OjAsInNoYXBlLXJlbmRlcmluZyI6ImNyaXNwRWRnZXMifSl9KS5hdHRy KCJ3aWR0aCIsbi5fd2lkdGgpLmNhbGwobC5maWxsLGQubWFza09wcEF4aXND b2xvciksby5lbnN1cmVTaW5nbGUodCwicmVjdCIsZC5tYXNrTWF4T3BwQXhp c0NsYXNzTmFtZSxmdW5jdGlvbih0KXt0LmF0dHIoe3k6MCwic2hhcGUtcmVu ZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KX0pLmF0dHIoIndpZHRoIixuLl93aWR0 aCkuc3R5bGUoImJvcmRlci10b3AiLGQubWFza09wcEJvcmRlcikuY2FsbChs LmZpbGwsZC5tYXNrT3BwQXhpc0NvbG9yKSl9ZnVuY3Rpb24geCh0LGUscixu KXtlLl9jb250ZXh0LnN0YXRpY1Bsb3R8fG8uZW5zdXJlU2luZ2xlKHQsInJl Y3QiLGQuc2xpZGVCb3hDbGFzc05hbWUsZnVuY3Rpb24odCl7dC5hdHRyKHt5 OjAsY3Vyc29yOmQuc2xpZGVCb3hDdXJzb3IsInNoYXBlLXJlbmRlcmluZyI6 ImNyaXNwRWRnZXMifSl9KS5hdHRyKHtoZWlnaHQ6bi5faGVpZ2h0LGZpbGw6 ZC5zbGlkZUJveEZpbGx9KX1mdW5jdGlvbiBiKHQsZSxyLG4pe3ZhciBhPW8u ZW5zdXJlU2luZ2xlKHQsImciLGQuZ3JhYmJlck1pbkNsYXNzTmFtZSksaT1v LmVuc3VyZVNpbmdsZSh0LCJnIixkLmdyYWJiZXJNYXhDbGFzc05hbWUpLHM9 e3g6MCx3aWR0aDpkLmhhbmRsZVdpZHRoLHJ4OmQuaGFuZGxlUmFkaXVzLGZp bGw6bC5iYWNrZ3JvdW5kLHN0cm9rZTpsLmRlZmF1bHRMaW5lLCJzdHJva2Ut d2lkdGgiOmQuaGFuZGxlU3Ryb2tlV2lkdGgsInNoYXBlLXJlbmRlcmluZyI6 ImNyaXNwRWRnZXMifSxjPXt5Ok1hdGgucm91bmQobi5faGVpZ2h0LzQpLGhl aWdodDpNYXRoLnJvdW5kKG4uX2hlaWdodC8yKX07aWYoby5lbnN1cmVTaW5n bGUoYSwicmVjdCIsZC5oYW5kbGVNaW5DbGFzc05hbWUsZnVuY3Rpb24odCl7 dC5hdHRyKHMpfSkuYXR0cihjKSxvLmVuc3VyZVNpbmdsZShpLCJyZWN0Iixk LmhhbmRsZU1heENsYXNzTmFtZSxmdW5jdGlvbih0KXt0LmF0dHIocyl9KS5h dHRyKGMpLCFlLl9jb250ZXh0LnN0YXRpY1Bsb3Qpe3ZhciB1PXt3aWR0aDpk LmdyYWJBcmVhV2lkdGgseDowLHk6MCxmaWxsOmQuZ3JhYkFyZWFGaWxsLGN1 cnNvcjpkLmdyYWJBcmVhQ3Vyc29yfTtvLmVuc3VyZVNpbmdsZShhLCJyZWN0 IixkLmdyYWJBcmVhTWluQ2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3QuYXR0cih1 KX0pLmF0dHIoImhlaWdodCIsbi5faGVpZ2h0KSxvLmVuc3VyZVNpbmdsZShp LCJyZWN0IixkLmdyYWJBcmVhTWF4Q2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3Qu YXR0cih1KX0pLmF0dHIoImhlaWdodCIsbi5faGVpZ2h0KX19ZS5leHBvcnRz PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fcmFu Z2VTbGlkZXJEYXRhLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIHM9cltpXVtk Lm5hbWVdO3MuX2NsaXBJZD1zLl9pZCsiLSIrZS5fdWlkfXZhciBsPWUuX2lu Zm9sYXllci5zZWxlY3RBbGwoImcuIitkLmNvbnRhaW5lckNsYXNzTmFtZSku ZGF0YShyLGZ1bmN0aW9uKHQpe3JldHVybiB0Ll9uYW1lfSk7bC5leGl0KCku ZWFjaChmdW5jdGlvbih0KXt2YXIgcj10W2QubmFtZV07ZS5fdG9wZGVmcy5z ZWxlY3QoIiMiK3IuX2NsaXBJZCkucmVtb3ZlKCl9KS5yZW1vdmUoKSwwIT09 ci5sZW5ndGgmJihsLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChkLmNv bnRhaW5lckNsYXNzTmFtZSwhMCkuYXR0cigicG9pbnRlci1ldmVudHMiLCJh bGwiKSxsLmVhY2goZnVuY3Rpb24ocil7dmFyIGk9bi5zZWxlY3QodGhpcyks cz1yW2QubmFtZV0sbD1lW2guaWQybmFtZShyLmFuY2hvcildLHU9c1toLmlk Mm5hbWUoci5hbmNob3IpXTtpZihzLnJhbmdlKXt2YXIgXyx3PW8uc2ltcGxl TWFwKHMucmFuZ2Usci5yMmwpLGs9by5zaW1wbGVNYXAoci5yYW5nZSxyLnIy bCk7Xz1rWzBdPGtbMV0/W01hdGgubWluKHdbMF0sa1swXSksTWF0aC5tYXgo d1sxXSxrWzFdKV06W01hdGgubWF4KHdbMF0sa1swXSksTWF0aC5taW4od1sx XSxrWzFdKV0scy5yYW5nZT1zLl9pbnB1dC5yYW5nZT1vLnNpbXBsZU1hcChf LHIubDJyKX1yLmNsZWFuUmFuZ2UoInJhbmdlc2xpZGVyLnJhbmdlIik7dmFy IFQ9ZS5fc2l6ZSxNPXIuZG9tYWluO3MuX3dpZHRoPVQudyooTVsxXS1NWzBd KTt2YXIgQT1NYXRoLnJvdW5kKFQubCtULncqTVswXSksUz1NYXRoLnJvdW5k KFQudCtULmgqKDEtci5fY291bnRlckRvbWFpbk1pbikrKCJib3R0b20iPT09 ci5zaWRlP3IuX2RlcHRoOjApK3MuX29mZnNldFNoaWZ0K2QuZXh0cmFQYWQp O2kuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrQSsiLCIrUysiKSIp O3ZhciBFPXIucjJsKHMucmFuZ2VbMF0pLEw9ci5yMmwocy5yYW5nZVsxXSks Qz1MLUU7aWYocy5wMmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQvcy5fd2lkdGgq QytFfSxzLmQycD1mdW5jdGlvbih0KXtyZXR1cm4odC1FKS9DKnMuX3dpZHRo fSxzLl9ybD1bRSxMXSwibWF0Y2giIT09dS5yYW5nZW1vZGUpe3ZhciBQPWwu cjJsKHUucmFuZ2VbMF0pLE89bC5yMmwodS5yYW5nZVsxXSktUDtzLmQycE9w cEF4aXM9ZnVuY3Rpb24odCl7cmV0dXJuKHQtUCkvTypzLl9oZWlnaHR9fWku Y2FsbChnLHQscixzKS5jYWxsKHYsdCxyLHMpLmNhbGwobSx0LHIscykuY2Fs bCh5LHQscixzLHUpLmNhbGwoeCx0LHIscykuY2FsbChiLHQscixzKSxmdW5j dGlvbih0LGUscixpKXt2YXIgcz10LnNlbGVjdCgicmVjdC4iK2Quc2xpZGVC b3hDbGFzc05hbWUpLm5vZGUoKSxsPXQuc2VsZWN0KCJyZWN0LiIrZC5ncmFi QXJlYU1pbkNsYXNzTmFtZSkubm9kZSgpLGM9dC5zZWxlY3QoInJlY3QuIitk LmdyYWJBcmVhTWF4Q2xhc3NOYW1lKS5ub2RlKCk7dC5vbigibW91c2Vkb3du IixmdW5jdGlvbigpe3ZhciB1PW4uZXZlbnQsaD11LnRhcmdldCxkPXUuY2xp ZW50WCxnPWQtdC5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVm dCx2PWkuZDJwKHIuX3JsWzBdKSxtPWkuZDJwKHIuX3JsWzFdKSx5PWYuY292 ZXJTbGlwKCk7ZnVuY3Rpb24geCh0KXt2YXIgdSxmLHgsYj0rdC5jbGllbnRY LWQ7c3dpdGNoKGgpe2Nhc2Ugczp4PSJldy1yZXNpemUiLHU9ditiLGY9bSti O2JyZWFrO2Nhc2UgbDp4PSJjb2wtcmVzaXplIix1PXYrYixmPW07YnJlYWs7 Y2FzZSBjOng9ImNvbC1yZXNpemUiLHU9dixmPW0rYjticmVhaztkZWZhdWx0 Ong9ImV3LXJlc2l6ZSIsdT1nLGY9ZytifWlmKGY8dSl7dmFyIF89ZjtmPXUs dT1ffWkuX3BpeGVsTWluPXUsaS5fcGl4ZWxNYXg9ZixwKG4uc2VsZWN0KHkp LHgpLGZ1bmN0aW9uKHQsZSxyLG4pe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHIu bDJyKG8uY29uc3RyYWluKHQsbi5fcmxbMF0sbi5fcmxbMV0pKX12YXIgcz1p KG4ucDJkKG4uX3BpeGVsTWluKSksbD1pKG4ucDJkKG4uX3BpeGVsTWF4KSk7 d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe2EuY2Fs bCgiX2d1aVJlbGF5b3V0IixlLHIuX25hbWUrIi5yYW5nZSIsW3MsbF0pfSl9 KDAsZSxyLGkpfXkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix4KSx5 LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGZ1bmN0aW9uIHQoKXt5LnJl bW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIseCk7eS5yZW1vdmVFdmVu dExpc3RlbmVyKCJtb3VzZXVwIix0KTtvLnJlbW92ZUVsZW1lbnQoeSl9KX0p fShpLHQscixzKSxmdW5jdGlvbih0LGUscixuLGEsaSl7dmFyIHM9ZC5oYW5k bGVXaWR0aC8yO2Z1bmN0aW9uIGwodCl7cmV0dXJuIG8uY29uc3RyYWluKHQs MCxuLl93aWR0aCl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gby5jb25zdHJhaW4o dCwwLG4uX2hlaWdodCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gby5jb25zdHJh aW4odCwtcyxuLl93aWR0aCtzKX12YXIgaD1sKG4uZDJwKHIuX3JsWzBdKSks Zj1sKG4uZDJwKHIuX3JsWzFdKSk7aWYodC5zZWxlY3QoInJlY3QuIitkLnNs aWRlQm94Q2xhc3NOYW1lKS5hdHRyKCJ4IixoKS5hdHRyKCJ3aWR0aCIsZi1o KSx0LnNlbGVjdCgicmVjdC4iK2QubWFza01pbkNsYXNzTmFtZSkuYXR0cigi d2lkdGgiLGgpLHQuc2VsZWN0KCJyZWN0LiIrZC5tYXNrTWF4Q2xhc3NOYW1l KS5hdHRyKCJ4IixmKS5hdHRyKCJ3aWR0aCIsbi5fd2lkdGgtZiksIm1hdGNo IiE9PWkucmFuZ2Vtb2RlKXt2YXIgcD1uLl9oZWlnaHQtYyhuLmQycE9wcEF4 aXMoYS5fcmxbMV0pKSxnPW4uX2hlaWdodC1jKG4uZDJwT3BwQXhpcyhhLl9y bFswXSkpO3Quc2VsZWN0KCJyZWN0LiIrZC5tYXNrTWluT3BwQXhpc0NsYXNz TmFtZSkuYXR0cigieCIsaCkuYXR0cigiaGVpZ2h0IixwKS5hdHRyKCJ3aWR0 aCIsZi1oKSx0LnNlbGVjdCgicmVjdC4iK2QubWFza01heE9wcEF4aXNDbGFz c05hbWUpLmF0dHIoIngiLGgpLmF0dHIoInkiLGcpLmF0dHIoImhlaWdodCIs bi5faGVpZ2h0LWcpLmF0dHIoIndpZHRoIixmLWgpLHQuc2VsZWN0KCJyZWN0 LiIrZC5zbGlkZUJveENsYXNzTmFtZSkuYXR0cigieSIscCkuYXR0cigiaGVp Z2h0IixnLXApfXZhciB2PU1hdGgucm91bmQodShoLXMpKS0uNSxtPU1hdGgu cm91bmQodShmLXMpKSsuNTt0LnNlbGVjdCgiZy4iK2QuZ3JhYmJlck1pbkNs YXNzTmFtZSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdisiLDAu NSkiKSx0LnNlbGVjdCgiZy4iK2QuZ3JhYmJlck1heENsYXNzTmFtZSkuYXR0 cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbSsiLDAuNSkiKX0oaSwwLHIs cyxsLHUpLCJib3R0b20iPT09ci5zaWRlJiZjLmRyYXcodCxyLl9pZCsidGl0 bGUiLHtwcm9wQ29udGFpbmVyOnIscHJvcE5hbWU6ci5fbmFtZSsiLnRpdGxl IixwbGFjZWhvbGRlcjplLl9kZmx0VGl0bGUueCxhdHRyaWJ1dGVzOnt4OnIu X29mZnNldCtyLl9sZW5ndGgvMix5OlMrcy5faGVpZ2h0K3MuX29mZnNldFNo aWZ0KzEwKzEuNSpyLnRpdGxlLmZvbnQuc2l6ZSwidGV4dC1hbmNob3IiOiJt aWRkbGUifX0pfSkpfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3Nl dGN1cnNvciI6NzM3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3NiwiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4uLy4uL3Bsb3Rz L3Bsb3RzIjo4MjYsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2NvbG9yIjo1 OTIsIi4uL2RyYWdlbGVtZW50Ijo2MTAsIi4uL2RyYXdpbmciOjYxMywiLi4v dGl0bGVzIjo2NzksIi4vY29uc3RhbnRzIjo2NjEsZDM6MTY1fV0sNjY0Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLGE9dCgiLi4vLi4vbGliL3N2Z190 ZXh0X3V0aWxzIiksaT10KCIuL2NvbnN0YW50cyIpLG89dCgiLi4vLi4vY29u c3RhbnRzL2FsaWdubWVudCIpLkxJTkVfU1BBQ0lORyxzPWkubmFtZTtmdW5j dGlvbiBsKHQpe3ZhciBlPXQmJnRbc107cmV0dXJuIGUmJmUudmlzaWJsZX1y LmlzVmlzaWJsZT1sLHIubWFrZURhdGE9ZnVuY3Rpb24odCl7dmFyIGU9bi5s aXN0KHtfZnVsbExheW91dDp0fSwieCIsITApLHI9dC5tYXJnaW4sYT1bXTtp ZighdC5faGFzKCJnbDJkIikpZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKysp e3ZhciBvPWVbaV07aWYobChvKSl7YS5wdXNoKG8pO3ZhciBjPW9bc107Yy5f aWQ9cytvLl9pZCxjLl9oZWlnaHQ9KHQuaGVpZ2h0LXIuYi1yLnQpKmMudGhp Y2tuZXNzLGMuX29mZnNldFNoaWZ0PU1hdGguZmxvb3IoYy5ib3JkZXJ3aWR0 aC8yKX19dC5fcmFuZ2VTbGlkZXJEYXRhPWF9LHIuYXV0b01hcmdpbk9wdHM9 ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0LG49ZVtzXSxsPWUu X2lkLmNoYXJBdCgwKSxjPTAsdT0wOyJib3R0b20iPT09ZS5zaWRlJiYoYz1l Ll9kZXB0aCxlLnRpdGxlLnRleHQhPT1yLl9kZmx0VGl0bGVbbF0mJih1PTEu NSplLnRpdGxlLmZvbnQuc2l6ZSsxMCtuLl9vZmZzZXRTaGlmdCx1Kz0oZS50 aXRsZS50ZXh0Lm1hdGNoKGEuQlJfVEFHX0FMTCl8fFtdKS5sZW5ndGgqZS50 aXRsZS5mb250LnNpemUqbykpO3JldHVybnt4OjAseTplLl9jb3VudGVyRG9t YWluTWluLGw6MCxyOjAsdDowLGI6bi5faGVpZ2h0K2MrTWF0aC5tYXgoci5t YXJnaW4uYix1KSxwYWQ6aS5leHRyYVBhZCsyKm4uX29mZnNldFNoaWZ0fX19 LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9saWIv c3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4 aXNfaWRzIjo3NjgsIi4vY29uc3RhbnRzIjo2NjF9XSw2NjU6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10 KCIuL2F0dHJpYnV0ZXMiKSxpPXQoIi4vb3BwYXhpc19hdHRyaWJ1dGVzIiks bz10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBv bmVudCIsbmFtZToicmFuZ2VzbGlkZXIiLHNjaGVtYTp7c3VicGxvdHM6e3hh eGlzOntyYW5nZXNsaWRlcjpuLmV4dGVuZEZsYXQoe30sYSx7eWF4aXM6aX0p fX19LGxheW91dEF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksaGFuZGxl RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNhbGNBdXRvcmFuZ2U6dCgiLi9j YWxjX2F1dG9yYW5nZSIpLGRyYXc6dCgiLi9kcmF3IiksaXNWaXNpYmxlOm8u aXNWaXNpYmxlLG1ha2VEYXRhOm8ubWFrZURhdGEsYXV0b01hcmdpbk9wdHM6 by5hdXRvTWFyZ2luT3B0c319LHsiLi4vLi4vbGliIjo3MTcsIi4vYXR0cmli dXRlcyI6NjU5LCIuL2NhbGNfYXV0b3JhbmdlIjo2NjAsIi4vZGVmYXVsdHMi OjY2MiwiLi9kcmF3Ijo2NjMsIi4vaGVscGVycyI6NjY0LCIuL29wcGF4aXNf YXR0cmlidXRlcyI6NjY2fV0sNjY2OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz17X2lzU3VicGxvdE9iajohMCxyYW5nZW1vZGU6 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImF1dG8iLCJmaXhlZCIs Im1hdGNoIl0sZGZsdDoibWF0Y2giLGVkaXRUeXBlOiJjYWxjIn0scmFuZ2U6 e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToiYW55Iixl ZGl0VHlwZToicGxvdCJ9LHt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90 In1dLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6ImNhbGMifX0se31dLDY2 NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9h bm5vdGF0aW9ucy9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi90cmFjZXMvc2Nh dHRlci9hdHRyaWJ1dGVzIikubGluZSxpPXQoIi4uL2RyYXdpbmcvYXR0cmli dXRlcyIpLmRhc2gsbz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxh dCxzPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0 ZWRBcnJheTtlLmV4cG9ydHM9cygic2hhcGUiLHt2aXNpYmxlOnt2YWxUeXBl OiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9 LHR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImNpcmNsZSIs InJlY3QiLCJwYXRoIiwibGluZSJdLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJh dyJ9LGxheWVyOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJiZWxv dyIsImFib3ZlIl0sZGZsdDoiYWJvdmUiLGVkaXRUeXBlOiJhcnJheWRyYXci fSx4cmVmOm8oe30sbi54cmVmLHt9KSx4c2l6ZW1vZGU6e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpbInNjYWxlZCIsInBpeGVsIl0sZGZsdDoic2Nh bGVkIixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx4YW5jaG9yOnt2YWxU eXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHgwOnt2YWxU eXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHgxOnt2YWxU eXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHlyZWY6byh7 fSxuLnlyZWYse30pLHlzaXplbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsic2NhbGVkIiwicGl4ZWwiXSxkZmx0OiJzY2FsZWQiLGVkaXRU eXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHlhbmNob3I6e3ZhbFR5cGU6ImFueSIs ZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seTA6e3ZhbFR5cGU6ImFueSIs ZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seTE6e3ZhbFR5cGU6ImFueSIs ZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0scGF0aDp7dmFsVHlwZToic3Ry aW5nIixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxvcGFjaXR5Ont2YWxU eXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MSxlZGl0VHlwZToiYXJy YXlkcmF3In0sbGluZTp7Y29sb3I6byh7fSxhLmNvbG9yLHtlZGl0VHlwZToi YXJyYXlkcmF3In0pLHdpZHRoOm8oe30sYS53aWR0aCx7ZWRpdFR5cGU6ImNh bGMrYXJyYXlkcmF3In0pLGRhc2g6byh7fSxpLHtlZGl0VHlwZToiYXJyYXlk cmF3In0pLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGZpbGxjb2xvcjp7 dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYmEoMCwwLDAsMCkiLGVkaXRUeXBl OiJhcnJheWRyYXcifSxlZGl0VHlwZToiYXJyYXlkcmF3In0pfSx7Ii4uLy4u L2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0 ZSI6NzU1LCIuLi8uLi90cmFjZXMvc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIw LCIuLi9hbm5vdGF0aW9ucy9hdHRyaWJ1dGVzIjo1NzUsIi4uL2RyYXdpbmcv YXR0cmlidXRlcyI6NjEyfV0sNjY4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4vY29uc3RhbnRzIiksbz10KCIuL2hl bHBlcnMiKTtmdW5jdGlvbiBzKHQpe3JldHVybiBjKHQubGluZS53aWR0aCx0 LnhzaXplbW9kZSx0LngwLHQueDEsdC5wYXRoLCExKX1mdW5jdGlvbiBsKHQp e3JldHVybiBjKHQubGluZS53aWR0aCx0LnlzaXplbW9kZSx0LnkwLHQueTEs dC5wYXRoLCEwKX1mdW5jdGlvbiBjKHQsZSxyLGEscyxsKXt2YXIgYz10LzIs dT1sO2lmKCJwaXhlbCI9PT1lKXt2YXIgaD1zP28uZXh0cmFjdFBhdGhDb29y ZHMocyxsP2kucGFyYW1Jc1k6aS5wYXJhbUlzWCk6W3IsYV0sZj1uLmFnZ051 bXMoTWF0aC5tYXgsbnVsbCxoKSxwPW4uYWdnTnVtcyhNYXRoLm1pbixudWxs LGgpLGQ9cDwwP01hdGguYWJzKHApK2M6YyxnPWY+MD9mK2M6YztyZXR1cm57 cHBhZDpjLHBwYWRwbHVzOnU/ZDpnLHBwYWRtaW51czp1P2c6ZH19cmV0dXJu e3BwYWQ6Y319ZnVuY3Rpb24gdSh0LGUscixuLGEpe3ZhciBzPSJjYXRlZ29y eSI9PT10LnR5cGV8fCJtdWx0aWNhdGVnb3J5Ij09PXQudHlwZT90LnIyYzp0 LmQyYztpZih2b2lkIDAhPT1lKXJldHVybltzKGUpLHMocildO2lmKG4pe3Zh ciBsLGMsdSxoLGY9MS8wLHA9LTEvMCxkPW4ubWF0Y2goaS5zZWdtZW50UkUp O2ZvcigiZGF0ZSI9PT10LnR5cGUmJihzPW8uZGVjb2RlRGF0ZShzKSksbD0w O2w8ZC5sZW5ndGg7bCsrKXZvaWQgMCE9PShjPWFbZFtsXS5jaGFyQXQoMCld LmRyYXduKSYmKCEodT1kW2xdLnN1YnN0cigxKS5tYXRjaChpLnBhcmFtUkUp KXx8dS5sZW5ndGg8Y3x8KChoPXModVtjXSkpPGYmJihmPWgpLGg+cCYmKHA9 aCkpKTtyZXR1cm4gcD49Zj9bZixwXTp2b2lkIDB9fWUuZXhwb3J0cz1mdW5j dGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9bi5maWx0ZXJWaXNpYmxl KGUuc2hhcGVzKTtpZihyLmxlbmd0aCYmdC5fZnVsbERhdGEubGVuZ3RoKWZv cih2YXIgbz0wO288ci5sZW5ndGg7bysrKXt2YXIgYyxoLGY9cltvXTtpZihm Ll9leHRyZW1lcz17fSwicGFwZXIiIT09Zi54cmVmKXt2YXIgcD0icGl4ZWwi PT09Zi54c2l6ZW1vZGU/Zi54YW5jaG9yOmYueDAsZD0icGl4ZWwiPT09Zi54 c2l6ZW1vZGU/Zi54YW5jaG9yOmYueDE7KGg9dShjPWEuZ2V0RnJvbUlkKHQs Zi54cmVmKSxwLGQsZi5wYXRoLGkucGFyYW1Jc1gpKSYmKGYuX2V4dHJlbWVz W2MuX2lkXT1hLmZpbmRFeHRyZW1lcyhjLGgscyhmKSkpfWlmKCJwYXBlciIh PT1mLnlyZWYpe3ZhciBnPSJwaXhlbCI9PT1mLnlzaXplbW9kZT9mLnlhbmNo b3I6Zi55MCx2PSJwaXhlbCI9PT1mLnlzaXplbW9kZT9mLnlhbmNob3I6Zi55 MTsoaD11KGM9YS5nZXRGcm9tSWQodCxmLnlyZWYpLGcsdixmLnBhdGgsaS5w YXJhbUlzWSkpJiYoZi5fZXh0cmVtZXNbYy5faWRdPWEuZmluZEV4dHJlbWVz KGMsaCxsKGYpKSl9fX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIjo3NjUsIi4vY29uc3RhbnRzIjo2NjksIi4vaGVs cGVycyI6NjcyfV0sNjY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz17c2VnbWVudFJFOi9bTUxIVlFDVFNaXVteTUxIVlFDVFNa XSovZyxwYXJhbVJFOi9bXlxzLF0rL2cscGFyYW1Jc1g6e006ezA6ITAsZHJh d246MH0sTDp7MDohMCxkcmF3bjowfSxIOnswOiEwLGRyYXduOjB9LFY6e30s UTp7MDohMCwyOiEwLGRyYXduOjJ9LEM6ezA6ITAsMjohMCw0OiEwLGRyYXdu OjR9LFQ6ezA6ITAsZHJhd246MH0sUzp7MDohMCwyOiEwLGRyYXduOjJ9LFo6 e319LHBhcmFtSXNZOntNOnsxOiEwLGRyYXduOjF9LEw6ezE6ITAsZHJhd246 MX0sSDp7fSxWOnswOiEwLGRyYXduOjB9LFE6ezE6ITAsMzohMCxkcmF3bjoz fSxDOnsxOiEwLDM6ITAsNTohMCxkcmF3bjo1fSxUOnsxOiEwLGRyYXduOjF9 LFM6ezE6ITAsMzohMCxkcmF3bjo1fSxaOnt9fSxudW1QYXJhbXM6e006MixM OjIsSDoxLFY6MSxROjQsQzo2LFQ6MixTOjQsWjowfX19LHt9XSw2NzA6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGli IiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4v Li4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbz10KCIuL2F0 dHJpYnV0ZXMiKSxzPXQoIi4vaGVscGVycyIpO2Z1bmN0aW9uIGwodCxlLHIp e2Z1bmN0aW9uIGkocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLG8scixhKX1p ZihpKCJ2aXNpYmxlIikpe2koImxheWVyIiksaSgib3BhY2l0eSIpLGkoImZp bGxjb2xvciIpLGkoImxpbmUuY29sb3IiKSxpKCJsaW5lLndpZHRoIiksaSgi bGluZS5kYXNoIik7Zm9yKHZhciBsPWkoInR5cGUiLHQucGF0aD8icGF0aCI6 InJlY3QiKSxjPWkoInhzaXplbW9kZSIpLHU9aSgieXNpemVtb2RlIiksaD1b IngiLCJ5Il0sZj0wO2Y8MjtmKyspe3ZhciBwLGQsZyx2PWhbZl0sbT12KyJh bmNob3IiLHk9IngiPT09dj9jOnUseD17X2Z1bGxMYXlvdXQ6cn0sYj1hLmNv ZXJjZVJlZih0LGUseCx2LCIiLCJwYXBlciIpO2lmKCJwYXBlciIhPT1iPygo cD1hLmdldEZyb21JZCh4LGIpKS5fc2hhcGVJbmRpY2VzLnB1c2goZS5faW5k ZXgpLGc9cy5yYW5nZVRvU2hhcGVQb3NpdGlvbihwKSxkPXMuc2hhcGVQb3Np dGlvblRvUmFuZ2UocCkpOmQ9Zz1uLmlkZW50aXR5LCJwYXRoIiE9PWwpe3Zh ciBfPXYrIjAiLHc9disiMSIsaz10W19dLFQ9dFt3XTt0W19dPWQodFtfXSwh MCksdFt3XT1kKHRbd10sITApLCJwaXhlbCI9PT15PyhpKF8sMCksaSh3LDEw KSk6KGEuY29lcmNlUG9zaXRpb24oZSx4LGksYixfLC4yNSksYS5jb2VyY2VQ b3NpdGlvbihlLHgsaSxiLHcsLjc1KSksZVtfXT1nKGVbX10pLGVbd109Zyhl W3ddKSx0W19dPWssdFt3XT1UfWlmKCJwaXhlbCI9PT15KXt2YXIgTT10W21d O3RbbV09ZCh0W21dLCEwKSxhLmNvZXJjZVBvc2l0aW9uKGUseCxpLGIsbSwu MjUpLGVbbV09ZyhlW21dKSx0W21dPU19fSJwYXRoIj09PWw/aSgicGF0aCIp Om4ubm9uZU9yQWxsKHQsZSxbIngwIiwieDEiLCJ5MCIsInkxIl0pfX1lLmV4 cG9ydHM9ZnVuY3Rpb24odCxlKXtpKHQsZSx7bmFtZToic2hhcGVzIixoYW5k bGVJdGVtRGVmYXVsdHM6bH0pfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4v cGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4vYXR0cmlidXRlcyI6NjY3LCIu L2hlbHBlcnMiOjY3Mn1dLDY3MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGli IiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4v Y29sb3IiKSxzPXQoIi4uL2RyYXdpbmciKSxsPXQoIi4uLy4uL3Bsb3RfYXBp L3Bsb3RfdGVtcGxhdGUiKS5hcnJheUVkaXRvcixjPXQoIi4uL2RyYWdlbGVt ZW50IiksdT10KCIuLi8uLi9saWIvc2V0Y3Vyc29yIiksaD10KCIuL2NvbnN0 YW50cyIpLGY9dCgiLi9oZWxwZXJzIik7ZnVuY3Rpb24gcCh0LGUpe3QuX2Z1 bGxMYXlvdXQuX3BhcGVyZGl2LnNlbGVjdEFsbCgnLnNoYXBlbGF5ZXIgW2Rh dGEtaW5kZXg9IicrZSsnIl0nKS5yZW1vdmUoKTt2YXIgcj10Ll9mdWxsTGF5 b3V0LnNoYXBlc1tlXXx8e307aWYoci5faW5wdXQmJiExIT09ci52aXNpYmxl KWlmKCJiZWxvdyIhPT1yLmxheWVyKW0odC5fZnVsbExheW91dC5fc2hhcGVV cHBlckxheWVyKTtlbHNlIGlmKCJwYXBlciI9PT1yLnhyZWZ8fCJwYXBlciI9 PT1yLnlyZWYpbSh0Ll9mdWxsTGF5b3V0Ll9zaGFwZUxvd2VyTGF5ZXIpO2Vs c2V7dmFyIHA9dC5fZnVsbExheW91dC5fcGxvdHNbci54cmVmK3IueXJlZl07 aWYocCltKChwLm1haW5wbG90aW5mb3x8cCkuc2hhcGVsYXllcik7ZWxzZSBt KHQuX2Z1bGxMYXlvdXQuX3NoYXBlTG93ZXJMYXllcil9ZnVuY3Rpb24gbShw KXt2YXIgbT17ImRhdGEtaW5kZXgiOmUsImZpbGwtcnVsZSI6ImV2ZW5vZGQi LGQ6Zyh0LHIpfSx5PXIubGluZS53aWR0aD9yLmxpbmUuY29sb3I6InJnYmEo MCwwLDAsMCkiLHg9cC5hcHBlbmQoInBhdGgiKS5hdHRyKG0pLnN0eWxlKCJv cGFjaXR5IixyLm9wYWNpdHkpLmNhbGwoby5zdHJva2UseSkuY2FsbChvLmZp bGwsci5maWxsY29sb3IpLmNhbGwocy5kYXNoTGluZSxyLmxpbmUuZGFzaCxy LmxpbmUud2lkdGgpO2QoeCx0LHIpLHQuX2NvbnRleHQuZWRpdHMuc2hhcGVQ b3NpdGlvbiYmZnVuY3Rpb24odCxlLHIsbyxwKXt2YXIgbSx5LHgsYixfLHcs ayxULE0sQSxTLEUsTCxDLFAsTyx6PTEwLEk9MTAsRD0icGl4ZWwiPT09ci54 c2l6ZW1vZGUsUj0icGl4ZWwiPT09ci55c2l6ZW1vZGUsRj0ibGluZSI9PT1y LnR5cGUsQj0icGF0aCI9PT1yLnR5cGUsTj1sKHQubGF5b3V0LCJzaGFwZXMi LHIpLGo9Ti5tb2RpZnlJdGVtLFY9aS5nZXRGcm9tSWQodCxyLnhyZWYpLFU9 aS5nZXRGcm9tSWQodCxyLnlyZWYpLHE9Zi5nZXREYXRhVG9QaXhlbCh0LFYp LEg9Zi5nZXREYXRhVG9QaXhlbCh0LFUsITApLEc9Zi5nZXRQaXhlbFRvRGF0 YSh0LFYpLFk9Zi5nZXRQaXhlbFRvRGF0YSh0LFUsITApLFc9Rj9mdW5jdGlv bigpe3ZhciB0PU1hdGgubWF4KHIubGluZS53aWR0aCwxMCksbj1wLmFwcGVu ZCgiZyIpLmF0dHIoImRhdGEtaW5kZXgiLG8pO24uYXBwZW5kKCJwYXRoIiku YXR0cigiZCIsZS5hdHRyKCJkIikpLnN0eWxlKHtjdXJzb3I6Im1vdmUiLCJz dHJva2Utd2lkdGgiOnQsInN0cm9rZS1vcGFjaXR5IjoiMCJ9KTt2YXIgYT17 ImZpbGwtb3BhY2l0eSI6IjAifSxpPXQvMj4xMD90LzI6MTA7cmV0dXJuIG4u YXBwZW5kKCJjaXJjbGUiKS5hdHRyKHsiZGF0YS1saW5lLXBvaW50Ijoic3Rh cnQtcG9pbnQiLGN4OkQ/cShyLnhhbmNob3IpK3IueDA6cShyLngwKSxjeTpS P0goci55YW5jaG9yKS1yLnkwOkgoci55MCkscjppfSkuc3R5bGUoYSkuY2xh c3NlZCgiY3Vyc29yLWdyYWIiLCEwKSxuLmFwcGVuZCgiY2lyY2xlIikuYXR0 cih7ImRhdGEtbGluZS1wb2ludCI6ImVuZC1wb2ludCIsY3g6RD9xKHIueGFu Y2hvcikrci54MTpxKHIueDEpLGN5OlI/SChyLnlhbmNob3IpLXIueTE6SChy LnkxKSxyOml9KS5zdHlsZShhKS5jbGFzc2VkKCJjdXJzb3ItZ3JhYiIsITAp LG59KCk6ZSxYPXtlbGVtZW50Olcubm9kZSgpLGdkOnQscHJlcEZuOmZ1bmN0 aW9uKG4pe0QmJihfPXEoci54YW5jaG9yKSk7UiYmKHc9SChyLnlhbmNob3Ip KTsicGF0aCI9PT1yLnR5cGU/UD1yLnBhdGg6KG09RD9yLngwOnEoci54MCks eT1SP3IueTA6SChyLnkwKSx4PUQ/ci54MTpxKHIueDEpLGI9Uj9yLnkxOkgo ci55MSkpO208eD8oTT1tLEw9IngwIixBPXgsQz0ieDEiKTooTT14LEw9Ingx IixBPW0sQz0ieDAiKTshUiYmeTxifHxSJiZ5PmI/KGs9eSxTPSJ5MCIsVD1i LEU9InkxIik6KGs9YixTPSJ5MSIsVD15LEU9InkwIik7WihuKSxRKHAsciks ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUueHJlZixhPWUueXJlZixvPWkuZ2V0 RnJvbUlkKHIsbiksbD1pLmdldEZyb21JZChyLGEpLGM9IiI7InBhcGVyIj09 PW58fG8uYXV0b3JhbmdlfHwoYys9bik7InBhcGVyIj09PWF8fGwuYXV0b3Jh bmdlfHwoYys9YSk7cy5zZXRDbGlwVXJsKHQsYz8iY2xpcCIrci5fZnVsbExh eW91dC5fdWlkK2M6bnVsbCxyKX0oZSxyLHQpLFgubW92ZUZuPSJtb3ZlIj09 PU8/SjpLfSxkb25lRm46ZnVuY3Rpb24oKXt1KGUpLCQocCksZChlLHQsciks bi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsTi5nZXRVcGRhdGVPYmooKSl9LGNs aWNrRm46ZnVuY3Rpb24oKXskKHApfX07ZnVuY3Rpb24gWih0KXtpZihGKU89 InBhdGgiPT09dC50YXJnZXQudGFnTmFtZT8ibW92ZSI6InN0YXJ0LXBvaW50 Ij09PXQudGFyZ2V0LmF0dHJpYnV0ZXNbImRhdGEtbGluZS1wb2ludCJdLnZh bHVlPyJyZXNpemUtb3Zlci1zdGFydC1wb2ludCI6InJlc2l6ZS1vdmVyLWVu ZC1wb2ludCI7ZWxzZXt2YXIgcj1YLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGll bnRSZWN0KCksbj1yLnJpZ2h0LXIubGVmdCxhPXIuYm90dG9tLXIudG9wLGk9 dC5jbGllbnRYLXIubGVmdCxvPXQuY2xpZW50WS1yLnRvcCxzPSFCJiZuPnom JmE+SSYmIXQuc2hpZnRLZXk/Yy5nZXRDdXJzb3IoaS9uLDEtby9hKToibW92 ZSI7dShlLHMpLE89cy5zcGxpdCgiLSIpWzBdfX1mdW5jdGlvbiBKKG4sYSl7 aWYoInBhdGgiPT09ci50eXBlKXt2YXIgaT1mdW5jdGlvbih0KXtyZXR1cm4g dH0sbz1pLHM9aTtEP2ooInhhbmNob3IiLHIueGFuY2hvcj1HKF8rbikpOihv PWZ1bmN0aW9uKHQpe3JldHVybiBHKHEodCkrbil9LFYmJiJkYXRlIj09PVYu dHlwZSYmKG89Zi5lbmNvZGVEYXRlKG8pKSksUj9qKCJ5YW5jaG9yIixyLnlh bmNob3I9WSh3K2EpKToocz1mdW5jdGlvbih0KXtyZXR1cm4gWShIKHQpK2Ep fSxVJiYiZGF0ZSI9PT1VLnR5cGUmJihzPWYuZW5jb2RlRGF0ZShzKSkpLGoo InBhdGgiLHIucGF0aD12KFAsbyxzKSl9ZWxzZSBEP2ooInhhbmNob3IiLHIu eGFuY2hvcj1HKF8rbikpOihqKCJ4MCIsci54MD1HKG0rbikpLGooIngxIixy LngxPUcoeCtuKSkpLFI/aigieWFuY2hvciIsci55YW5jaG9yPVkodythKSk6 KGooInkwIixyLnkwPVkoeSthKSksaigieTEiLHIueTE9WShiK2EpKSk7ZS5h dHRyKCJkIixnKHQscikpLFEocCxyKX1mdW5jdGlvbiBLKG4sYSl7aWYoQil7 dmFyIGk9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LG89aSxzPWk7RD9qKCJ4YW5j aG9yIixyLnhhbmNob3I9RyhfK24pKToobz1mdW5jdGlvbih0KXtyZXR1cm4g RyhxKHQpK24pfSxWJiYiZGF0ZSI9PT1WLnR5cGUmJihvPWYuZW5jb2RlRGF0 ZShvKSkpLFI/aigieWFuY2hvciIsci55YW5jaG9yPVkodythKSk6KHM9ZnVu Y3Rpb24odCl7cmV0dXJuIFkoSCh0KSthKX0sVSYmImRhdGUiPT09VS50eXBl JiYocz1mLmVuY29kZURhdGUocykpKSxqKCJwYXRoIixyLnBhdGg9dihQLG8s cykpfWVsc2UgaWYoRil7aWYoInJlc2l6ZS1vdmVyLXN0YXJ0LXBvaW50Ij09 PU8pe3ZhciBsPW0rbixjPVI/eS1hOnkrYTtqKCJ4MCIsci54MD1EP2w6Ryhs KSksaigieTAiLHIueTA9Uj9jOlkoYykpfWVsc2UgaWYoInJlc2l6ZS1vdmVy LWVuZC1wb2ludCI9PT1PKXt2YXIgdT14K24saD1SP2ItYTpiK2E7aigieDEi LHIueDE9RD91OkcodSkpLGooInkxIixyLnkxPVI/aDpZKGgpKX19ZWxzZXt2 YXIgZD1+Ty5pbmRleE9mKCJuIik/aythOmssTj1+Ty5pbmRleE9mKCJzIik/ VCthOlQsVz1+Ty5pbmRleE9mKCJ3Iik/TStuOk0sWD1+Ty5pbmRleE9mKCJl Iik/QStuOkE7fk8uaW5kZXhPZigibiIpJiZSJiYoZD1rLWEpLH5PLmluZGV4 T2YoInMiKSYmUiYmKE49VC1hKSwoIVImJk4tZD5JfHxSJiZkLU4+SSkmJihq KFMscltTXT1SP2Q6WShkKSksaihFLHJbRV09Uj9OOlkoTikpKSxYLVc+eiYm KGooTCxyW0xdPUQ/VzpHKFcpKSxqKEMscltDXT1EP1g6RyhYKSkpfWUuYXR0 cigiZCIsZyh0LHIpKSxRKHAscil9ZnVuY3Rpb24gUSh0LGUpeyhEfHxSKSYm ZnVuY3Rpb24oKXt2YXIgcj0icGF0aCIhPT1lLnR5cGUsbj10LnNlbGVjdEFs bCgiLnZpc3VhbC1jdWUiKS5kYXRhKFswXSk7bi5lbnRlcigpLmFwcGVuZCgi cGF0aCIpLmF0dHIoe2ZpbGw6IiNmZmYiLCJmaWxsLXJ1bGUiOiJldmVub2Rk IixzdHJva2U6IiMwMDAiLCJzdHJva2Utd2lkdGgiOjF9KS5jbGFzc2VkKCJ2 aXN1YWwtY3VlIiwhMCk7dmFyIGk9cShEP2UueGFuY2hvcjphLm1pZFJhbmdl KHI/W2UueDAsZS54MV06Zi5leHRyYWN0UGF0aENvb3JkcyhlLnBhdGgsaC5w YXJhbUlzWCkpKSxvPUgoUj9lLnlhbmNob3I6YS5taWRSYW5nZShyP1tlLnkw LGUueTFdOmYuZXh0cmFjdFBhdGhDb29yZHMoZS5wYXRoLGgucGFyYW1Jc1kp KSk7aWYoaT1mLnJvdW5kUG9zaXRpb25Gb3JTaGFycFN0cm9rZVJlbmRlcmlu ZyhpLDEpLG89Zi5yb3VuZFBvc2l0aW9uRm9yU2hhcnBTdHJva2VSZW5kZXJp bmcobywxKSxEJiZSKXt2YXIgcz0iTSIrKGktMS0xKSsiLCIrKG8tMS0xKSsi aC04djJoOCB2OGgydi04IGg4di0yaC04IHYtOGgtMiBaIjtuLmF0dHIoImQi LHMpfWVsc2UgaWYoRCl7dmFyIGw9Ik0iKyhpLTEtMSkrIiwiKyhvLTktMSkr InYxOCBoMiB2LTE4IFoiO24uYXR0cigiZCIsbCl9ZWxzZXt2YXIgYz0iTSIr KGktOS0xKSsiLCIrKG8tMS0xKSsiaDE4IHYyIGgtMTggWiI7bi5hdHRyKCJk IixjKX19KCl9ZnVuY3Rpb24gJCh0KXt0LnNlbGVjdEFsbCgiLnZpc3VhbC1j dWUiKS5yZW1vdmUoKX1jLmluaXQoWCksVy5ub2RlKCkub25tb3VzZW1vdmU9 Wn0odCx4LHIsZSxwKX19ZnVuY3Rpb24gZCh0LGUscil7dmFyIG49KHIueHJl ZityLnlyZWYpLnJlcGxhY2UoL3BhcGVyL2csIiIpO3Muc2V0Q2xpcFVybCh0 LG4/ImNsaXAiK2UuX2Z1bGxMYXlvdXQuX3VpZCtuOm51bGwsZSl9ZnVuY3Rp b24gZyh0LGUpe3ZhciByLG4sbyxzLGwsYyx1LHAsZD1lLnR5cGUsZz1pLmdl dEZyb21JZCh0LGUueHJlZiksdj1pLmdldEZyb21JZCh0LGUueXJlZiksbT10 Ll9mdWxsTGF5b3V0Ll9zaXplO2lmKGc/KHI9Zi5zaGFwZVBvc2l0aW9uVG9S YW5nZShnKSxuPWZ1bmN0aW9uKHQpe3JldHVybiBnLl9vZmZzZXQrZy5yMnAo cih0LCEwKSl9KTpuPWZ1bmN0aW9uKHQpe3JldHVybiBtLmwrbS53KnR9LHY/ KG89Zi5zaGFwZVBvc2l0aW9uVG9SYW5nZSh2KSxzPWZ1bmN0aW9uKHQpe3Jl dHVybiB2Ll9vZmZzZXQrdi5yMnAobyh0LCEwKSl9KTpzPWZ1bmN0aW9uKHQp e3JldHVybiBtLnQrbS5oKigxLXQpfSwicGF0aCI9PT1kKXJldHVybiBnJiYi ZGF0ZSI9PT1nLnR5cGUmJihuPWYuZGVjb2RlRGF0ZShuKSksdiYmImRhdGUi PT09di50eXBlJiYocz1mLmRlY29kZURhdGUocykpLGZ1bmN0aW9uKHQsZSxy KXt2YXIgbj10LnBhdGgsaT10LnhzaXplbW9kZSxvPXQueXNpemVtb2RlLHM9 dC54YW5jaG9yLGw9dC55YW5jaG9yO3JldHVybiBuLnJlcGxhY2UoaC5zZWdt ZW50UkUsZnVuY3Rpb24odCl7dmFyIG49MCxjPXQuY2hhckF0KDApLHU9aC5w YXJhbUlzWFtjXSxmPWgucGFyYW1Jc1lbY10scD1oLm51bVBhcmFtc1tjXSxk PXQuc3Vic3RyKDEpLnJlcGxhY2UoaC5wYXJhbVJFLGZ1bmN0aW9uKHQpe3Jl dHVybiB1W25dP3Q9InBpeGVsIj09PWk/ZShzKStOdW1iZXIodCk6ZSh0KTpm W25dJiYodD0icGl4ZWwiPT09bz9yKGwpLU51bWJlcih0KTpyKHQpKSwrK24+ cCYmKHQ9IlgiKSx0fSk7cmV0dXJuIG4+cCYmKGQ9ZC5yZXBsYWNlKC9bXHMs XSpYLiovLCIiKSxhLmxvZygiSWdub3JpbmcgZXh0cmEgcGFyYW1zIGluIHNl Z21lbnQgIit0KSksYytkfSl9KGUsbixzKTtpZigicGl4ZWwiPT09ZS54c2l6 ZW1vZGUpe3ZhciB5PW4oZS54YW5jaG9yKTtsPXkrZS54MCxjPXkrZS54MX1l bHNlIGw9bihlLngwKSxjPW4oZS54MSk7aWYoInBpeGVsIj09PWUueXNpemVt b2RlKXt2YXIgeD1zKGUueWFuY2hvcik7dT14LWUueTAscD14LWUueTF9ZWxz ZSB1PXMoZS55MCkscD1zKGUueTEpO2lmKCJsaW5lIj09PWQpcmV0dXJuIk0i K2wrIiwiK3UrIkwiK2MrIiwiK3A7aWYoInJlY3QiPT09ZClyZXR1cm4iTSIr bCsiLCIrdSsiSCIrYysiViIrcCsiSCIrbCsiWiI7dmFyIGI9KGwrYykvMixf PSh1K3ApLzIsdz1NYXRoLmFicyhiLWwpLGs9TWF0aC5hYnMoXy11KSxUPSJB Iit3KyIsIitrLE09Yit3KyIsIitfO3JldHVybiJNIitNK1QrIiAwIDEsMSAi KyhiKyIsIisoXy1rKSkrVCsiIDAgMCwxICIrTSsiWiJ9ZnVuY3Rpb24gdih0 LGUscil7cmV0dXJuIHQucmVwbGFjZShoLnNlZ21lbnRSRSxmdW5jdGlvbih0 KXt2YXIgbj0wLGE9dC5jaGFyQXQoMCksaT1oLnBhcmFtSXNYW2FdLG89aC5w YXJhbUlzWVthXSxzPWgubnVtUGFyYW1zW2FdO3JldHVybiBhK3Quc3Vic3Ry KDEpLnJlcGxhY2UoaC5wYXJhbVJFLGZ1bmN0aW9uKHQpe3JldHVybiBuPj1z P3Q6KGlbbl0/dD1lKHQpOm9bbl0mJih0PXIodCkpLG4rKyx0KX0pfSl9ZS5l eHBvcnRzPXtkcmF3OmZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7 Zm9yKHZhciByIGluIGUuX3NoYXBlVXBwZXJMYXllci5zZWxlY3RBbGwoInBh dGgiKS5yZW1vdmUoKSxlLl9zaGFwZUxvd2VyTGF5ZXIuc2VsZWN0QWxsKCJw YXRoIikucmVtb3ZlKCksZS5fcGxvdHMpe3ZhciBuPWUuX3Bsb3RzW3JdLnNo YXBlbGF5ZXI7biYmbi5zZWxlY3RBbGwoInBhdGgiKS5yZW1vdmUoKX1mb3Io dmFyIGE9MDthPGUuc2hhcGVzLmxlbmd0aDthKyspZS5zaGFwZXNbYV0udmlz aWJsZSYmcCh0LGEpfSxkcmF3T25lOnB9fSx7Ii4uLy4uL2xpYiI6NzE3LCIu Li8uLi9saWIvc2V0Y3Vyc29yIjo3MzcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3Rf dGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2 NSwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vY29sb3IiOjU5MiwiLi4vZHJh Z2VsZW1lbnQiOjYxMCwiLi4vZHJhd2luZyI6NjEzLCIuL2NvbnN0YW50cyI6 NjY5LCIuL2hlbHBlcnMiOjY3Mn1dLDY3MjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIpLGE9dCgiLi4vLi4v bGliIik7ci5yYW5nZVRvU2hhcGVQb3NpdGlvbj1mdW5jdGlvbih0KXtyZXR1 cm4ibG9nIj09PXQudHlwZT90LnIyZDpmdW5jdGlvbih0KXtyZXR1cm4gdH19 LHIuc2hhcGVQb3NpdGlvblRvUmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuImxv ZyI9PT10LnR5cGU/dC5kMnI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxyLmRl Y29kZURhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVy biBlLnJlcGxhY2UmJihlPWUucmVwbGFjZSgiXyIsIiAiKSksdChlKX19LHIu ZW5jb2RlRGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0 dXJuIHQoZSkucmVwbGFjZSgiICIsIl8iKX19LHIuZXh0cmFjdFBhdGhDb29y ZHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1bXTtyZXR1cm4gdC5tYXRjaChuLnNl Z21lbnRSRSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT1lW3QuY2hhckF0 KDApXS5kcmF3bjtpZih2b2lkIDAhPT1pKXt2YXIgbz10LnN1YnN0cigxKS5t YXRjaChuLnBhcmFtUkUpOyFvfHxvLmxlbmd0aDxpfHxyLnB1c2goYS5jbGVh bk51bWJlcihvW2ldKSl9fSkscn0sci5nZXREYXRhVG9QaXhlbD1mdW5jdGlv bih0LGUsbil7dmFyIGEsaT10Ll9mdWxsTGF5b3V0Ll9zaXplO2lmKGUpe3Zh ciBvPXIuc2hhcGVQb3NpdGlvblRvUmFuZ2UoZSk7YT1mdW5jdGlvbih0KXty ZXR1cm4gZS5fb2Zmc2V0K2UucjJwKG8odCwhMCkpfSwiZGF0ZSI9PT1lLnR5 cGUmJihhPXIuZGVjb2RlRGF0ZShhKSl9ZWxzZSBhPW4/ZnVuY3Rpb24odCl7 cmV0dXJuIGkudCtpLmgqKDEtdCl9OmZ1bmN0aW9uKHQpe3JldHVybiBpLmwr aS53KnR9O3JldHVybiBhfSxyLmdldFBpeGVsVG9EYXRhPWZ1bmN0aW9uKHQs ZSxuKXt2YXIgYSxpPXQuX2Z1bGxMYXlvdXQuX3NpemU7aWYoZSl7dmFyIG89 ci5yYW5nZVRvU2hhcGVQb3NpdGlvbihlKTthPWZ1bmN0aW9uKHQpe3JldHVy biBvKGUucDJyKHQtZS5fb2Zmc2V0KSl9fWVsc2UgYT1uP2Z1bmN0aW9uKHQp e3JldHVybiAxLSh0LWkudCkvaS5ofTpmdW5jdGlvbih0KXtyZXR1cm4odC1p LmwpL2kud307cmV0dXJuIGF9LHIucm91bmRQb3NpdGlvbkZvclNoYXJwU3Ry b2tlUmVuZGVyaW5nPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MT09PU1hdGgucm91 bmQoZSUyKSxuPU1hdGgucm91bmQodCk7cmV0dXJuIHI/bisuNTpufX0seyIu Li8uLi9saWIiOjcxNywiLi9jb25zdGFudHMiOjY2OX1dLDY3MzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2RyYXciKTtlLmV4 cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToic2hhcGVzIixs YXlvdXRBdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseUxheW91 dERlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxpbmNsdWRlQmFzZVBsb3Q6dCgi Li4vLi4vcGxvdHMvY2FydGVzaWFuL2luY2x1ZGVfY29tcG9uZW50cyIpKCJz aGFwZXMiKSxjYWxjQXV0b3JhbmdlOnQoIi4vY2FsY19hdXRvcmFuZ2UiKSxk cmF3Om4uZHJhdyxkcmF3T25lOm4uZHJhd09uZX19LHsiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2luY2x1ZGVfY29tcG9uZW50cyI6Nzc1LCIuL2F0dHJpYnV0 ZXMiOjY2NywiLi9jYWxjX2F1dG9yYW5nZSI6NjY4LCIuL2RlZmF1bHRzIjo2 NzAsIi4vZHJhdyI6NjcxfV0sNjc0OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIp LGE9dCgiLi4vLi4vcGxvdHMvcGFkX2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4u L2xpYi9leHRlbmQiKS5leHRlbmREZWVwQWxsLG89dCgiLi4vLi4vcGxvdF9h cGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLHM9dCgiLi4vLi4vcGxvdHMv YW5pbWF0aW9uX2F0dHJpYnV0ZXMiKSxsPXQoIi4uLy4uL3Bsb3RfYXBpL3Bs b3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheSxjPXQoIi4vY29uc3RhbnRz IiksdT1sKCJzdGVwIix7dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZs dDohMH0sbWV0aG9kOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJy ZXN0eWxlIiwicmVsYXlvdXQiLCJhbmltYXRlIiwidXBkYXRlIiwic2tpcCJd LGRmbHQ6InJlc3R5bGUifSxhcmdzOnt2YWxUeXBlOiJpbmZvX2FycmF5Iixm cmVlTGVuZ3RoOiEwLGl0ZW1zOlt7dmFsVHlwZToiYW55In0se3ZhbFR5cGU6 ImFueSJ9LHt2YWxUeXBlOiJhbnkifV19LGxhYmVsOnt2YWxUeXBlOiJzdHJp bmcifSx2YWx1ZTp7dmFsVHlwZToic3RyaW5nIn0sZXhlY3V0ZTp7dmFsVHlw ZToiYm9vbGVhbiIsZGZsdDohMH19KTtlLmV4cG9ydHM9byhsKCJzbGlkZXIi LHt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxhY3RpdmU6 e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowfSxzdGVwczp1LGxlbm1v ZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZyYWN0aW9uIiwi cGl4ZWxzIl0sZGZsdDoiZnJhY3Rpb24ifSxsZW46e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsZGZsdDoxfSx4Ont2YWxUeXBlOiJudW1iZXIiLG1pbjotMixt YXg6MyxkZmx0OjB9LHBhZDppKGEoe2VkaXRUeXBlOiJhcnJheWRyYXcifSks e30se3Q6e2RmbHQ6MjB9fSkseGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsiYXV0byIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRm bHQ6ImxlZnQifSx5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjotMixtYXg6Myxk Zmx0OjB9LHlhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpb ImF1dG8iLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJ0b3AifSx0 cmFuc2l0aW9uOntkdXJhdGlvbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxk Zmx0OjE1MH0sZWFzaW5nOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6 cy50cmFuc2l0aW9uLmVhc2luZy52YWx1ZXMsZGZsdDoiY3ViaWMtaW4tb3V0 In19LGN1cnJlbnR2YWx1ZTp7dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIs ZGZsdDohMH0seGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVz OlsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZGZsdDoibGVmdCJ9LG9mZnNl dDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEwfSxwcmVmaXg6e3ZhbFR5cGU6 InN0cmluZyJ9LHN1ZmZpeDp7dmFsVHlwZToic3RyaW5nIn0sZm9udDpuKHt9 KX0sZm9udDpuKHt9KSxhY3RpdmViZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIs ZGZsdDpjLmdyaXBCZ0FjdGl2ZUNvbG9yfSxiZ2NvbG9yOnt2YWxUeXBlOiJj b2xvciIsZGZsdDpjLnJhaWxCZ0NvbG9yfSxib3JkZXJjb2xvcjp7dmFsVHlw ZToiY29sb3IiLGRmbHQ6Yy5yYWlsQm9yZGVyQ29sb3J9LGJvcmRlcndpZHRo Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6Yy5yYWlsQm9yZGVyV2lk dGh9LHRpY2tsZW46e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDpjLnRp Y2tMZW5ndGh9LHRpY2tjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6Yy50 aWNrQ29sb3J9LHRpY2t3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxk Zmx0OjF9LG1pbm9ydGlja2xlbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxk Zmx0OmMubWlub3JUaWNrTGVuZ3RofX0pLCJhcnJheWRyYXciLCJmcm9tLXJv b3QiKX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBp L2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0 ZSI6NzU1LCIuLi8uLi9wbG90cy9hbmltYXRpb25fYXR0cmlidXRlcyI6NzYw LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi4vLi4vcGxv dHMvcGFkX2F0dHJpYnV0ZXMiOjgyNSwiLi9jb25zdGFudHMiOjY3NX1dLDY3 NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e25h bWU6InNsaWRlcnMiLGNvbnRhaW5lckNsYXNzTmFtZToic2xpZGVyLWNvbnRh aW5lciIsZ3JvdXBDbGFzc05hbWU6InNsaWRlci1ncm91cCIsaW5wdXRBcmVh Q2xhc3M6InNsaWRlci1pbnB1dC1hcmVhIixyYWlsUmVjdENsYXNzOiJzbGlk ZXItcmFpbC1yZWN0IixyYWlsVG91Y2hSZWN0Q2xhc3M6InNsaWRlci1yYWls LXRvdWNoLXJlY3QiLGdyaXBSZWN0Q2xhc3M6InNsaWRlci1ncmlwLXJlY3Qi LHRpY2tSZWN0Q2xhc3M6InNsaWRlci10aWNrLXJlY3QiLGlucHV0UHJveHlD bGFzczoic2xpZGVyLWlucHV0LXByb3h5IixsYWJlbHNDbGFzczoic2xpZGVy LWxhYmVscyIsbGFiZWxHcm91cENsYXNzOiJzbGlkZXItbGFiZWwtZ3JvdXAi LGxhYmVsQ2xhc3M6InNsaWRlci1sYWJlbCIsY3VycmVudFZhbHVlQ2xhc3M6 InNsaWRlci1jdXJyZW50LXZhbHVlIixyYWlsSGVpZ2h0OjUsbWVudUluZGV4 QXR0ck5hbWU6InNsaWRlci1hY3RpdmUtaW5kZXgiLGF1dG9NYXJnaW5JZFJv b3Q6InNsaWRlci0iLG1pbldpZHRoOjMwLG1pbkhlaWdodDozMCx0ZXh0UGFk WDo0MCxhcnJvd09mZnNldFg6NCxyYWlsUmFkaXVzOjIscmFpbFdpZHRoOjUs cmFpbEJvcmRlcjo0LHJhaWxCb3JkZXJXaWR0aDoxLHJhaWxCb3JkZXJDb2xv cjoiI2JlYzhkOSIscmFpbEJnQ29sb3I6IiNmOGZhZmMiLHJhaWxJbnNldDo4 LHN0ZXBJbnNldDoxMCxncmlwUmFkaXVzOjEwLGdyaXBXaWR0aDoyMCxncmlw SGVpZ2h0OjIwLGdyaXBCb3JkZXI6MjAsZ3JpcEJvcmRlcldpZHRoOjEsZ3Jp cEJvcmRlckNvbG9yOiIjYmVjOGQ5IixncmlwQmdDb2xvcjoiI2Y2ZjhmYSIs Z3JpcEJnQWN0aXZlQ29sb3I6IiNkYmRkZTAiLGxhYmVsUGFkZGluZzo4LGxh YmVsT2Zmc2V0OjAsdGlja1dpZHRoOjEsdGlja0NvbG9yOiIjMzMzIix0aWNr T2Zmc2V0OjI1LHRpY2tMZW5ndGg6NyxtaW5vclRpY2tPZmZzZXQ6MjUsbWlu b3JUaWNrQ29sb3I6IiMzMzMiLG1pbm9yVGlja0xlbmd0aDo0LGN1cnJlbnRW YWx1ZVBhZGRpbmc6OCxjdXJyZW50VmFsdWVJbnNldDowfX0se31dLDY3Njpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9s aWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0 cyIpLGk9dCgiLi9hdHRyaWJ1dGVzIiksbz10KCIuL2NvbnN0YW50cyIpLm5h bWUscz1pLnN0ZXBzO2Z1bmN0aW9uIGwodCxlLHIpe2Z1bmN0aW9uIG8ocixh KXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX1mb3IodmFyIHM9YSh0LGUs e25hbWU6InN0ZXBzIixoYW5kbGVJdGVtRGVmYXVsdHM6Y30pLGw9MCx1PTA7 dTxzLmxlbmd0aDt1Kyspc1t1XS52aXNpYmxlJiZsKys7aWYobDwyP2Uudmlz aWJsZT0hMTpvKCJ2aXNpYmxlIikpe2UuX3N0ZXBDb3VudD1sO3ZhciBoPWUu X3Zpc2libGVTdGVwcz1uLmZpbHRlclZpc2libGUocyk7KHNbbygiYWN0aXZl IildfHx7fSkudmlzaWJsZXx8KGUuYWN0aXZlPWhbMF0uX2luZGV4KSxvKCJ4 IiksbygieSIpLG4ubm9uZU9yQWxsKHQsZSxbIngiLCJ5Il0pLG8oInhhbmNo b3IiKSxvKCJ5YW5jaG9yIiksbygibGVuIiksbygibGVubW9kZSIpLG8oInBh ZC50IiksbygicGFkLnIiKSxvKCJwYWQuYiIpLG8oInBhZC5sIiksbi5jb2Vy Y2VGb250KG8sImZvbnQiLHIuZm9udCksbygiY3VycmVudHZhbHVlLnZpc2li bGUiKSYmKG8oImN1cnJlbnR2YWx1ZS54YW5jaG9yIiksbygiY3VycmVudHZh bHVlLnByZWZpeCIpLG8oImN1cnJlbnR2YWx1ZS5zdWZmaXgiKSxvKCJjdXJy ZW50dmFsdWUub2Zmc2V0Iiksbi5jb2VyY2VGb250KG8sImN1cnJlbnR2YWx1 ZS5mb250IixlLmZvbnQpKSxvKCJ0cmFuc2l0aW9uLmR1cmF0aW9uIiksbygi dHJhbnNpdGlvbi5lYXNpbmciKSxvKCJiZ2NvbG9yIiksbygiYWN0aXZlYmdj b2xvciIpLG8oImJvcmRlcmNvbG9yIiksbygiYm9yZGVyd2lkdGgiKSxvKCJ0 aWNrbGVuIiksbygidGlja3dpZHRoIiksbygidGlja2NvbG9yIiksbygibWlu b3J0aWNrbGVuIil9fWZ1bmN0aW9uIGModCxlKXtmdW5jdGlvbiByKHIsYSl7 cmV0dXJuIG4uY29lcmNlKHQsZSxzLHIsYSl9aWYoInNraXAiPT09dC5tZXRo b2R8fEFycmF5LmlzQXJyYXkodC5hcmdzKT9yKCJ2aXNpYmxlIik6ZS52aXNp YmxlPSExKXtyKCJtZXRob2QiKSxyKCJhcmdzIik7dmFyIGE9cigibGFiZWwi LCJzdGVwLSIrZS5faW5kZXgpO3IoInZhbHVlIixhKSxyKCJleGVjdXRlIil9 fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2EodCxlLHtuYW1lOm8saGFuZGxl SXRlbURlZmF1bHRzOmx9KX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bs b3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NzYxLCIuL2F0dHJpYnV0 ZXMiOjY3NCwiLi9jb25zdGFudHMiOjY3NX1dLDY3NzpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcGxv dHMvcGxvdHMiKSxpPXQoIi4uL2NvbG9yIiksbz10KCIuLi9kcmF3aW5nIiks cz10KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGls cyIpLGM9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLmFycmF5 RWRpdG9yLHU9dCgiLi9jb25zdGFudHMiKSxoPXQoIi4uLy4uL2NvbnN0YW50 cy9hbGlnbm1lbnQiKSxmPWguTElORV9TUEFDSU5HLHA9aC5GUk9NX1RMLGQ9 aC5GUk9NX0JSO2Z1bmN0aW9uIGcodCl7cmV0dXJuIHUuYXV0b01hcmdpbklk Um9vdCt0Ll9pbmRleH1mdW5jdGlvbiB2KHQpe3JldHVybiB0Ll9pbmRleH1m dW5jdGlvbiBtKHQsZSl7dmFyIHI9by50ZXN0ZXIuc2VsZWN0QWxsKCJnLiIr dS5sYWJlbEdyb3VwQ2xhc3MpLmRhdGEoZS5fdmlzaWJsZVN0ZXBzKTtyLmVu dGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCh1LmxhYmVsR3JvdXBDbGFzcywh MCk7dmFyIGk9MCxjPTA7ci5lYWNoKGZ1bmN0aW9uKHQpe3ZhciByPWIobi5z ZWxlY3QodGhpcykse3N0ZXA6dH0sZSkubm9kZSgpO2lmKHIpe3ZhciBhPW8u YkJveChyKTtjPU1hdGgubWF4KGMsYS5oZWlnaHQpLGk9TWF0aC5tYXgoaSxh LndpZHRoKX19KSxyLnJlbW92ZSgpO3ZhciBoPWUuX2RpbXM9e307aC5pbnB1 dEFyZWFXaWR0aD1NYXRoLm1heCh1LnJhaWxXaWR0aCx1LmdyaXBIZWlnaHQp O3ZhciBmPXQuX2Z1bGxMYXlvdXQuX3NpemU7aC5seD1mLmwrZi53KmUueCxo Lmx5PWYudCtmLmgqKDEtZS55KSwiZnJhY3Rpb24iPT09ZS5sZW5tb2RlP2gu b3V0ZXJMZW5ndGg9TWF0aC5yb3VuZChmLncqZS5sZW4pOmgub3V0ZXJMZW5n dGg9ZS5sZW4saC5pbnB1dEFyZWFTdGFydD0wLGguaW5wdXRBcmVhTGVuZ3Ro PU1hdGgucm91bmQoaC5vdXRlckxlbmd0aC1lLnBhZC5sLWUucGFkLnIpO3Zh ciB2PShoLmlucHV0QXJlYUxlbmd0aC0yKnUuc3RlcEluc2V0KS8oZS5fc3Rl cENvdW50LTEpLG09aSt1LmxhYmVsUGFkZGluZztpZihoLmxhYmVsU3RyaWRl PU1hdGgubWF4KDEsTWF0aC5jZWlsKG0vdikpLGgubGFiZWxIZWlnaHQ9Yyxo LmN1cnJlbnRWYWx1ZU1heFdpZHRoPTAsaC5jdXJyZW50VmFsdWVIZWlnaHQ9 MCxoLmN1cnJlbnRWYWx1ZVRvdGFsSGVpZ2h0PTAsaC5jdXJyZW50VmFsdWVN YXhMaW5lcz0xLGUuY3VycmVudHZhbHVlLnZpc2libGUpe3ZhciB4PW8udGVz dGVyLmFwcGVuZCgiZyIpO3IuZWFjaChmdW5jdGlvbih0KXt2YXIgcj15KHgs ZSx0LmxhYmVsKSxuPXIubm9kZSgpJiZvLmJCb3goci5ub2RlKCkpfHx7d2lk dGg6MCxoZWlnaHQ6MH0sYT1sLmxpbmVDb3VudChyKTtoLmN1cnJlbnRWYWx1 ZU1heFdpZHRoPU1hdGgubWF4KGguY3VycmVudFZhbHVlTWF4V2lkdGgsTWF0 aC5jZWlsKG4ud2lkdGgpKSxoLmN1cnJlbnRWYWx1ZUhlaWdodD1NYXRoLm1h eChoLmN1cnJlbnRWYWx1ZUhlaWdodCxNYXRoLmNlaWwobi5oZWlnaHQpKSxo LmN1cnJlbnRWYWx1ZU1heExpbmVzPU1hdGgubWF4KGguY3VycmVudFZhbHVl TWF4TGluZXMsYSl9KSxoLmN1cnJlbnRWYWx1ZVRvdGFsSGVpZ2h0PWguY3Vy cmVudFZhbHVlSGVpZ2h0K2UuY3VycmVudHZhbHVlLm9mZnNldCx4LnJlbW92 ZSgpfWguaGVpZ2h0PWguY3VycmVudFZhbHVlVG90YWxIZWlnaHQrdS50aWNr T2Zmc2V0K2UudGlja2xlbit1LmxhYmVsT2Zmc2V0K2gubGFiZWxIZWlnaHQr ZS5wYWQudCtlLnBhZC5iO3ZhciBfPSJsZWZ0IjtzLmlzUmlnaHRBbmNob3Io ZSkmJihoLmx4LT1oLm91dGVyTGVuZ3RoLF89InJpZ2h0Iikscy5pc0NlbnRl ckFuY2hvcihlKSYmKGgubHgtPWgub3V0ZXJMZW5ndGgvMixfPSJjZW50ZXIi KTt2YXIgdz0idG9wIjtzLmlzQm90dG9tQW5jaG9yKGUpJiYoaC5seS09aC5o ZWlnaHQsdz0iYm90dG9tIikscy5pc01pZGRsZUFuY2hvcihlKSYmKGgubHkt PWguaGVpZ2h0LzIsdz0ibWlkZGxlIiksaC5vdXRlckxlbmd0aD1NYXRoLmNl aWwoaC5vdXRlckxlbmd0aCksaC5oZWlnaHQ9TWF0aC5jZWlsKGguaGVpZ2h0 KSxoLmx4PU1hdGgucm91bmQoaC5seCksaC5seT1NYXRoLnJvdW5kKGgubHkp O3ZhciBrPXt5OmUueSxiOmguaGVpZ2h0KmRbd10sdDpoLmhlaWdodCpwW3dd fTsiZnJhY3Rpb24iPT09ZS5sZW5tb2RlPyhrLmw9MCxrLnhsPWUueC1lLmxl bipwW19dLGsucj0wLGsueHI9ZS54K2UubGVuKmRbX10pOihrLng9ZS54LGsu bD1oLm91dGVyTGVuZ3RoKnBbX10say5yPWgub3V0ZXJMZW5ndGgqZFtfXSks YS5hdXRvTWFyZ2luKHQsZyhlKSxrKX1mdW5jdGlvbiB5KHQsZSxyKXtpZihl LmN1cnJlbnR2YWx1ZS52aXNpYmxlKXt2YXIgbixhLGk9ZS5fZGltcztzd2l0 Y2goZS5jdXJyZW50dmFsdWUueGFuY2hvcil7Y2FzZSJyaWdodCI6bj1pLmlu cHV0QXJlYUxlbmd0aC11LmN1cnJlbnRWYWx1ZUluc2V0LWkuY3VycmVudFZh bHVlTWF4V2lkdGgsYT0ibGVmdCI7YnJlYWs7Y2FzZSJjZW50ZXIiOm49LjUq aS5pbnB1dEFyZWFMZW5ndGgsYT0ibWlkZGxlIjticmVhaztkZWZhdWx0Om49 dS5jdXJyZW50VmFsdWVJbnNldCxhPSJsZWZ0In12YXIgYz1zLmVuc3VyZVNp bmdsZSh0LCJ0ZXh0Iix1LmxhYmVsQ2xhc3MsZnVuY3Rpb24odCl7dC5jbGFz c2VkKCJ1c2VyLXNlbGVjdC1ub25lIiwhMCkuYXR0cih7InRleHQtYW5jaG9y IjphLCJkYXRhLW5vdGV4IjoxfSl9KSxoPWUuY3VycmVudHZhbHVlLnByZWZp eD9lLmN1cnJlbnR2YWx1ZS5wcmVmaXg6IiI7aWYoInN0cmluZyI9PXR5cGVv ZiByKWgrPXI7ZWxzZXt2YXIgcD1lLnN0ZXBzW2UuYWN0aXZlXS5sYWJlbCxk PWUuX2dkLl9mdWxsTGF5b3V0Ll9tZXRhO2QmJihwPXMudGVtcGxhdGVTdHJp bmcocCxkKSksaCs9cH1lLmN1cnJlbnR2YWx1ZS5zdWZmaXgmJihoKz1lLmN1 cnJlbnR2YWx1ZS5zdWZmaXgpLGMuY2FsbChvLmZvbnQsZS5jdXJyZW50dmFs dWUuZm9udCkudGV4dChoKS5jYWxsKGwuY29udmVydFRvVHNwYW5zLGUuX2dk KTt2YXIgZz1sLmxpbmVDb3VudChjKSx2PShpLmN1cnJlbnRWYWx1ZU1heExp bmVzKzEtZykqZS5jdXJyZW50dmFsdWUuZm9udC5zaXplKmY7cmV0dXJuIGwu cG9zaXRpb25UZXh0KGMsbix2KSxjfX1mdW5jdGlvbiB4KHQsZSxyKXtzLmVu c3VyZVNpbmdsZSh0LCJyZWN0Iix1LmdyaXBSZWN0Q2xhc3MsZnVuY3Rpb24o bil7bi5jYWxsKFQsZSx0LHIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFs bCIpfSkuYXR0cih7d2lkdGg6dS5ncmlwV2lkdGgsaGVpZ2h0OnUuZ3JpcEhl aWdodCxyeDp1LmdyaXBSYWRpdXMscnk6dS5ncmlwUmFkaXVzfSkuY2FsbChp LnN0cm9rZSxyLmJvcmRlcmNvbG9yKS5jYWxsKGkuZmlsbCxyLmJnY29sb3Ip LnN0eWxlKCJzdHJva2Utd2lkdGgiLHIuYm9yZGVyd2lkdGgrInB4Iil9ZnVu Y3Rpb24gYih0LGUscil7dmFyIG49cy5lbnN1cmVTaW5nbGUodCwidGV4dCIs dS5sYWJlbENsYXNzLGZ1bmN0aW9uKHQpe3QuY2xhc3NlZCgidXNlci1zZWxl Y3Qtbm9uZSIsITApLmF0dHIoeyJ0ZXh0LWFuY2hvciI6Im1pZGRsZSIsImRh dGEtbm90ZXgiOjF9KX0pLGE9ZS5zdGVwLmxhYmVsLGk9ci5fZ2QuX2Z1bGxM YXlvdXQuX21ldGE7cmV0dXJuIGkmJihhPXMudGVtcGxhdGVTdHJpbmcoYSxp KSksbi5jYWxsKG8uZm9udCxyLmZvbnQpLnRleHQoYSkuY2FsbChsLmNvbnZl cnRUb1RzcGFucyxyLl9nZCksbn1mdW5jdGlvbiBfKHQsZSl7dmFyIHI9cy5l bnN1cmVTaW5nbGUodCwiZyIsdS5sYWJlbHNDbGFzcyksYT1lLl9kaW1zLGk9 ci5zZWxlY3RBbGwoImcuIit1LmxhYmVsR3JvdXBDbGFzcykuZGF0YShhLmxh YmVsU3RlcHMpO2kuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHUubGFi ZWxHcm91cENsYXNzLCEwKSxpLmV4aXQoKS5yZW1vdmUoKSxpLmVhY2goZnVu Y3Rpb24odCl7dmFyIHI9bi5zZWxlY3QodGhpcyk7ci5jYWxsKGIsdCxlKSxv LnNldFRyYW5zbGF0ZShyLFMoZSx0LmZyYWN0aW9uKSx1LnRpY2tPZmZzZXQr ZS50aWNrbGVuK2UuZm9udC5zaXplKmYrdS5sYWJlbE9mZnNldCthLmN1cnJl bnRWYWx1ZVRvdGFsSGVpZ2h0KX0pfWZ1bmN0aW9uIHcodCxlLHIsbixhKXt2 YXIgaT1NYXRoLnJvdW5kKG4qKHIuX3N0ZXBDb3VudC0xKSksbz1yLl92aXNp YmxlU3RlcHNbaV0uX2luZGV4O28hPT1yLmFjdGl2ZSYmayh0LGUscixvLCEw LGEpfWZ1bmN0aW9uIGsodCxlLHIsbixpLG8pe3ZhciBzPXIuYWN0aXZlO3Iu YWN0aXZlPW4sYyh0LmxheW91dCx1Lm5hbWUscikuYXBwbHlVcGRhdGUoImFj dGl2ZSIsbik7dmFyIGw9ci5zdGVwc1tyLmFjdGl2ZV07ZS5jYWxsKEEscixv KSxlLmNhbGwoeSxyKSx0LmVtaXQoInBsb3RseV9zbGlkZXJjaGFuZ2UiLHtz bGlkZXI6cixzdGVwOnIuc3RlcHNbci5hY3RpdmVdLGludGVyYWN0aW9uOmks cHJldmlvdXNBY3RpdmU6c30pLGwmJmwubWV0aG9kJiZpJiYoZS5fbmV4dE1l dGhvZD8oZS5fbmV4dE1ldGhvZC5zdGVwPWwsZS5fbmV4dE1ldGhvZC5kb0Nh bGxiYWNrPWksZS5fbmV4dE1ldGhvZC5kb1RyYW5zaXRpb249byk6KGUuX25l eHRNZXRob2Q9e3N0ZXA6bCxkb0NhbGxiYWNrOmksZG9UcmFuc2l0aW9uOm99 LGUuX25leHRNZXRob2RSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFt ZShmdW5jdGlvbigpe3ZhciByPWUuX25leHRNZXRob2Quc3RlcDtyLm1ldGhv ZCYmKHIuZXhlY3V0ZSYmYS5leGVjdXRlQVBJQ29tbWFuZCh0LHIubWV0aG9k LHIuYXJncyksZS5fbmV4dE1ldGhvZD1udWxsLGUuX25leHRNZXRob2RSYWY9 bnVsbCl9KSkpfWZ1bmN0aW9uIFQodCxlLHIpe3ZhciBhPXIubm9kZSgpLG89 bi5zZWxlY3QoZSk7ZnVuY3Rpb24gcygpe3JldHVybiByLmRhdGEoKVswXX10 Lm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7dmFyIHQ9cygpO2UuZW1pdCgi cGxvdGx5X3NsaWRlcnN0YXJ0Iix7c2xpZGVyOnR9KTt2YXIgbD1yLnNlbGVj dCgiLiIrdS5ncmlwUmVjdENsYXNzKTtuLmV2ZW50LnN0b3BQcm9wYWdhdGlv bigpLG4uZXZlbnQucHJldmVudERlZmF1bHQoKSxsLmNhbGwoaS5maWxsLHQu YWN0aXZlYmdjb2xvcik7dmFyIGM9RSh0LG4ubW91c2UoYSlbMF0pO3coZSxy LHQsYywhMCksdC5fZHJhZ2dpbmc9ITAsby5vbigibW91c2Vtb3ZlIixmdW5j dGlvbigpe3ZhciB0PXMoKSxpPUUodCxuLm1vdXNlKGEpWzBdKTt3KGUscix0 LGksITEpfSksby5vbigibW91c2V1cCIsZnVuY3Rpb24oKXt2YXIgdD1zKCk7 dC5fZHJhZ2dpbmc9ITEsbC5jYWxsKGkuZmlsbCx0LmJnY29sb3IpLG8ub24o Im1vdXNldXAiLG51bGwpLG8ub24oIm1vdXNlbW92ZSIsbnVsbCksZS5lbWl0 KCJwbG90bHlfc2xpZGVyZW5kIix7c2xpZGVyOnQsc3RlcDp0LnN0ZXBzW3Qu YWN0aXZlXX0pfSl9KX1mdW5jdGlvbiBNKHQsZSl7dmFyIHI9dC5zZWxlY3RB bGwoInJlY3QuIit1LnRpY2tSZWN0Q2xhc3MpLmRhdGEoZS5fdmlzaWJsZVN0 ZXBzKSxhPWUuX2RpbXM7ci5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmNsYXNz ZWQodS50aWNrUmVjdENsYXNzLCEwKSxyLmV4aXQoKS5yZW1vdmUoKSxyLmF0 dHIoe3dpZHRoOmUudGlja3dpZHRoKyJweCIsInNoYXBlLXJlbmRlcmluZyI6 ImNyaXNwRWRnZXMifSksci5lYWNoKGZ1bmN0aW9uKHQscil7dmFyIHM9ciVh LmxhYmVsU3RyaWRlPT0wLGw9bi5zZWxlY3QodGhpcyk7bC5hdHRyKHtoZWln aHQ6cz9lLnRpY2tsZW46ZS5taW5vcnRpY2tsZW59KS5jYWxsKGkuZmlsbCxl LnRpY2tjb2xvciksby5zZXRUcmFuc2xhdGUobCxTKGUsci8oZS5fc3RlcENv dW50LTEpKS0uNSplLnRpY2t3aWR0aCwocz91LnRpY2tPZmZzZXQ6dS5taW5v clRpY2tPZmZzZXQpK2EuY3VycmVudFZhbHVlVG90YWxIZWlnaHQpfSl9ZnVu Y3Rpb24gQSh0LGUscil7Zm9yKHZhciBuPXQuc2VsZWN0KCJyZWN0LiIrdS5n cmlwUmVjdENsYXNzKSxhPTAsaT0wO2k8ZS5fc3RlcENvdW50O2krKylpZihl Ll92aXNpYmxlU3RlcHNbaV0uX2luZGV4PT09ZS5hY3RpdmUpe2E9aTticmVh a312YXIgbz1TKGUsYS8oZS5fc3RlcENvdW50LTEpKTtpZighZS5faW52b2tp bmdDb21tYW5kKXt2YXIgcz1uO3ImJmUudHJhbnNpdGlvbi5kdXJhdGlvbj4w JiYocz1zLnRyYW5zaXRpb24oKS5kdXJhdGlvbihlLnRyYW5zaXRpb24uZHVy YXRpb24pLmVhc2UoZS50cmFuc2l0aW9uLmVhc2luZykpLHMuYXR0cigidHJh bnNmb3JtIiwidHJhbnNsYXRlKCIrKG8tLjUqdS5ncmlwV2lkdGgpKyIsIitl Ll9kaW1zLmN1cnJlbnRWYWx1ZVRvdGFsSGVpZ2h0KyIpIil9fWZ1bmN0aW9u IFModCxlKXt2YXIgcj10Ll9kaW1zO3JldHVybiByLmlucHV0QXJlYVN0YXJ0 K3Uuc3RlcEluc2V0KyhyLmlucHV0QXJlYUxlbmd0aC0yKnUuc3RlcEluc2V0 KSpNYXRoLm1pbigxLE1hdGgubWF4KDAsZSkpfWZ1bmN0aW9uIEUodCxlKXt2 YXIgcj10Ll9kaW1zO3JldHVybiBNYXRoLm1pbigxLE1hdGgubWF4KDAsKGUt dS5zdGVwSW5zZXQtci5pbnB1dEFyZWFTdGFydCkvKHIuaW5wdXRBcmVhTGVu Z3RoLTIqdS5zdGVwSW5zZXQtMipyLmlucHV0QXJlYVN0YXJ0KSkpfWZ1bmN0 aW9uIEwodCxlLHIpe3ZhciBuPXIuX2RpbXMsYT1zLmVuc3VyZVNpbmdsZSh0 LCJyZWN0Iix1LnJhaWxUb3VjaFJlY3RDbGFzcyxmdW5jdGlvbihuKXtuLmNh bGwoVCxlLHQscikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIil9KTth LmF0dHIoe3dpZHRoOm4uaW5wdXRBcmVhTGVuZ3RoLGhlaWdodDpNYXRoLm1h eChuLmlucHV0QXJlYVdpZHRoLHUudGlja09mZnNldCtyLnRpY2tsZW4rbi5s YWJlbEhlaWdodCl9KS5jYWxsKGkuZmlsbCxyLmJnY29sb3IpLmF0dHIoIm9w YWNpdHkiLDApLG8uc2V0VHJhbnNsYXRlKGEsMCxuLmN1cnJlbnRWYWx1ZVRv dGFsSGVpZ2h0KX1mdW5jdGlvbiBDKHQsZSl7dmFyIHI9ZS5fZGltcyxuPXIu aW5wdXRBcmVhTGVuZ3RoLTIqdS5yYWlsSW5zZXQsYT1zLmVuc3VyZVNpbmds ZSh0LCJyZWN0Iix1LnJhaWxSZWN0Q2xhc3MpO2EuYXR0cih7d2lkdGg6bixo ZWlnaHQ6dS5yYWlsV2lkdGgscng6dS5yYWlsUmFkaXVzLHJ5OnUucmFpbFJh ZGl1cywic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KS5jYWxsKGku c3Ryb2tlLGUuYm9yZGVyY29sb3IpLmNhbGwoaS5maWxsLGUuYmdjb2xvciku c3R5bGUoInN0cm9rZS13aWR0aCIsZS5ib3JkZXJ3aWR0aCsicHgiKSxvLnNl dFRyYW5zbGF0ZShhLHUucmFpbEluc2V0LC41KihyLmlucHV0QXJlYVdpZHRo LXUucmFpbFdpZHRoKStyLmN1cnJlbnRWYWx1ZVRvdGFsSGVpZ2h0KX1lLmV4 cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPWZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPXRbdS5uYW1lXSxuPVtdLGE9MDthPHIubGVu Z3RoO2ErKyl7dmFyIGk9clthXTtpLnZpc2libGUmJihpLl9nZD1lLG4ucHVz aChpKSl9cmV0dXJuIG59KGUsdCksaT1lLl9pbmZvbGF5ZXIuc2VsZWN0QWxs KCJnLiIrdS5jb250YWluZXJDbGFzc05hbWUpLmRhdGEoci5sZW5ndGg+MD9b MF06W10pO2Z1bmN0aW9uIHMoZSl7ZS5fY29tbWFuZE9ic2VydmVyJiYoZS5f Y29tbWFuZE9ic2VydmVyLnJlbW92ZSgpLGRlbGV0ZSBlLl9jb21tYW5kT2Jz ZXJ2ZXIpLGEuYXV0b01hcmdpbih0LGcoZSkpfWlmKGkuZW50ZXIoKS5hcHBl bmQoImciKS5jbGFzc2VkKHUuY29udGFpbmVyQ2xhc3NOYW1lLCEwKS5zdHls ZSgiY3Vyc29yIiwiZXctcmVzaXplIiksaS5leGl0KCkuZWFjaChmdW5jdGlv bigpe24uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy4iK3UuZ3JvdXBDbGFz c05hbWUpLmVhY2gocyl9KS5yZW1vdmUoKSwwIT09ci5sZW5ndGgpe3ZhciBs PWkuc2VsZWN0QWxsKCJnLiIrdS5ncm91cENsYXNzTmFtZSkuZGF0YShyLHYp O2wuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHUuZ3JvdXBDbGFzc05h bWUsITApLGwuZXhpdCgpLmVhY2gocykucmVtb3ZlKCk7Zm9yKHZhciBjPTA7 YzxyLmxlbmd0aDtjKyspe3ZhciBoPXJbY107bSh0LGgpfWwuZWFjaChmdW5j dGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKTshZnVuY3Rpb24odCl7dmFy IGU9dC5fZGltcztlLmxhYmVsU3RlcHM9W107Zm9yKHZhciByPXQuX3N0ZXBD b3VudCxuPTA7bjxyO24rPWUubGFiZWxTdHJpZGUpZS5sYWJlbFN0ZXBzLnB1 c2goe2ZyYWN0aW9uOm4vKHItMSksc3RlcDp0Ll92aXNpYmxlU3RlcHNbbl19 KX0oZSksYS5tYW5hZ2VDb21tYW5kT2JzZXJ2ZXIodCxlLGUuX3Zpc2libGVT dGVwcyxmdW5jdGlvbihlKXt2YXIgbj1yLmRhdGEoKVswXTtuLmFjdGl2ZSE9 PWUuaW5kZXgmJihuLl9kcmFnZ2luZ3x8ayh0LHIsbixlLmluZGV4LCExLCEw KSl9KSxmdW5jdGlvbih0LGUscil7KHIuc3RlcHNbci5hY3RpdmVdfHx7fSku dmlzaWJsZXx8KHIuYWN0aXZlPXIuX3Zpc2libGVTdGVwc1swXS5faW5kZXgp O2UuY2FsbCh5LHIpLmNhbGwoQyxyKS5jYWxsKF8scikuY2FsbChNLHIpLmNh bGwoTCx0LHIpLmNhbGwoeCx0LHIpO3ZhciBuPXIuX2RpbXM7by5zZXRUcmFu c2xhdGUoZSxuLmx4K3IucGFkLmwsbi5seStyLnBhZC50KSxlLmNhbGwoQSxy LCExKSxlLmNhbGwoeSxyKX0odCxuLnNlbGVjdCh0aGlzKSxlKX0pfX19LHsi Li4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9saWIiOjcx NywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3Rf YXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvcGxvdHMiOjgy NiwiLi4vY29sb3IiOjU5MiwiLi4vZHJhd2luZyI6NjEzLCIuL2NvbnN0YW50 cyI6Njc1LGQzOjE2NX1dLDY3ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIpO2UuZXhwb3J0cz17bW9kdWxl VHlwZToiY29tcG9uZW50IixuYW1lOm4ubmFtZSxsYXlvdXRBdHRyaWJ1dGVz OnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4v ZGVmYXVsdHMiKSxkcmF3OnQoIi4vZHJhdyIpfX0seyIuL2F0dHJpYnV0ZXMi OjY3NCwiLi9jb25zdGFudHMiOjY3NSwiLi9kZWZhdWx0cyI6Njc2LCIuL2Ry YXciOjY3N31dLDY3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4u L3Bsb3RzL3Bsb3RzIiksbz10KCIuLi8uLi9yZWdpc3RyeSIpLHM9dCgiLi4v Li4vbGliIiksbD10KCIuLi9kcmF3aW5nIiksYz10KCIuLi9jb2xvciIpLHU9 dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksaD10KCIuLi8uLi9jb25z dGFudHMvaW50ZXJhY3Rpb25zIiksZj10KCIuLi8uLi9jb25zdGFudHMvYWxp Z25tZW50IikuT1BQT1NJVEVfU0lERSxwPS8gW1hZXVswLTldKiAvO2UuZXhw b3J0cz17ZHJhdzpmdW5jdGlvbih0LGUscil7dmFyIGQsZz1yLnByb3BDb250 YWluZXIsdj1yLnByb3BOYW1lLG09ci5wbGFjZWhvbGRlcix5PXIudHJhY2VJ bmRleCx4PXIuYXZvaWR8fHt9LGI9ci5hdHRyaWJ1dGVzLF89ci50cmFuc2Zv cm0sdz1yLmNvbnRhaW5lckdyb3VwLGs9dC5fZnVsbExheW91dCxUPTEsTT0h MSxBPWcudGl0bGUsUz0oQSYmQS50ZXh0P0EudGV4dDoiIikudHJpbSgpLEU9 QSYmQS5mb250P0EuZm9udDp7fSxMPUUuZmFtaWx5LEM9RS5zaXplLFA9RS5j b2xvcjsidGl0bGUudGV4dCI9PT12P2Q9InRpdGxlVGV4dCI6LTEhPT12Lmlu ZGV4T2YoImF4aXMiKT9kPSJheGlzVGl0bGVUZXh0Ijp2LmluZGV4T2YoITAp JiYoZD0iY29sb3JiYXJUaXRsZVRleHQiKTt2YXIgTz10Ll9jb250ZXh0LmVk aXRzW2RdOyIiPT09Uz9UPTA6Uy5yZXBsYWNlKHAsIiAlICIpPT09bS5yZXBs YWNlKHAsIiAlICIpJiYoVD0uMixNPSEwLE98fChTPSIiKSksci5fbWV0YT9T PXMudGVtcGxhdGVTdHJpbmcoUyxyLl9tZXRhKTprLl9tZXRhJiYoUz1zLnRl bXBsYXRlU3RyaW5nKFMsay5fbWV0YSkpO3ZhciB6PVN8fE87d3x8KHc9cy5l bnN1cmVTaW5nbGUoay5faW5mb2xheWVyLCJnIiwiZy0iK2UpKTt2YXIgST13 LnNlbGVjdEFsbCgidGV4dCIpLmRhdGEoej9bMF06W10pO2lmKEkuZW50ZXIo KS5hcHBlbmQoInRleHQiKSxJLnRleHQoUykuYXR0cigiY2xhc3MiLGUpLEku ZXhpdCgpLnJlbW92ZSgpLCF6KXJldHVybiB3O2Z1bmN0aW9uIEQodCl7cy5z eW5jT3JBc3luYyhbUixGXSx0KX1mdW5jdGlvbiBSKGUpe3ZhciByO3JldHVy biBfPyhyPSIiLF8ucm90YXRlJiYocis9InJvdGF0ZSgiK1tfLnJvdGF0ZSxi LngsYi55XSsiKSIpLF8ub2Zmc2V0JiYocis9InRyYW5zbGF0ZSgwLCAiK18u b2Zmc2V0KyIpIikpOnI9bnVsbCxlLmF0dHIoInRyYW5zZm9ybSIsciksZS5z dHlsZSh7ImZvbnQtZmFtaWx5IjpMLCJmb250LXNpemUiOm4ucm91bmQoQywy KSsicHgiLGZpbGw6Yy5yZ2IoUCksb3BhY2l0eTpUKmMub3BhY2l0eShQKSwi Zm9udC13ZWlnaHQiOmkuZm9udFdlaWdodH0pLmF0dHIoYikuY2FsbCh1LmNv bnZlcnRUb1RzcGFucyx0KSxpLnByZXZpb3VzUHJvbWlzZXModCl9ZnVuY3Rp b24gRih0KXt2YXIgZT1uLnNlbGVjdCh0Lm5vZGUoKS5wYXJlbnROb2RlKTtp Zih4JiZ4LnNlbGVjdGlvbiYmeC5zaWRlJiZTKXtlLmF0dHIoInRyYW5zZm9y bSIsbnVsbCk7dmFyIHI9Zlt4LnNpZGVdLGk9ImxlZnQiPT09eC5zaWRlfHwi dG9wIj09PXguc2lkZT8tMToxLG89YSh4LnBhZCk/eC5wYWQ6MixjPWwuYkJv eChlLm5vZGUoKSksdT17bGVmdDowLHRvcDowLHJpZ2h0Omsud2lkdGgsYm90 dG9tOmsuaGVpZ2h0fSxoPXgubWF4U2hpZnR8fGkqKHVbeC5zaWRlXS1jW3gu c2lkZV0pLHA9MDtpZihoPDApcD1oO2Vsc2V7dmFyIGQ9eC5vZmZzZXRMZWZ0 fHwwLGc9eC5vZmZzZXRUb3B8fDA7Yy5sZWZ0LT1kLGMucmlnaHQtPWQsYy50 b3AtPWcsYy5ib3R0b20tPWcseC5zZWxlY3Rpb24uZWFjaChmdW5jdGlvbigp e3ZhciB0PWwuYkJveCh0aGlzKTtzLmJCb3hJbnRlcnNlY3QoYyx0LG8pJiYo cD1NYXRoLm1heChwLGkqKHRbeC5zaWRlXS1jW3JdKStvKSl9KSxwPU1hdGgu bWluKGgscCl9aWYocD4wfHxoPDApe3ZhciB2PXtsZWZ0OlstcCwwXSxyaWdo dDpbcCwwXSx0b3A6WzAsLXBdLGJvdHRvbTpbMCxwXX1beC5zaWRlXTtlLmF0 dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3YrIikiKX19fXJldHVybiBJ LmNhbGwoRCksTyYmKFM/SS5vbigiLm9wYWNpdHkiLG51bGwpOihUPTAsTT0h MCxJLnRleHQobSkub24oIm1vdXNlb3Zlci5vcGFjaXR5IixmdW5jdGlvbigp e24uc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihoLlNIT1df UExBQ0VIT0xERVIpLnN0eWxlKCJvcGFjaXR5IiwxKX0pLm9uKCJtb3VzZW91 dC5vcGFjaXR5IixmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMpLnRyYW5zaXRp b24oKS5kdXJhdGlvbihoLkhJREVfUExBQ0VIT0xERVIpLnN0eWxlKCJvcGFj aXR5IiwwKX0pKSxJLmNhbGwodS5tYWtlRWRpdGFibGUse2dkOnR9KS5vbigi ZWRpdCIsZnVuY3Rpb24oZSl7dm9pZCAwIT09eT9vLmNhbGwoIl9ndWlSZXN0 eWxlIix0LHYsZSx5KTpvLmNhbGwoIl9ndWlSZWxheW91dCIsdCx2LGUpfSku b24oImNhbmNlbCIsZnVuY3Rpb24oKXt0aGlzLnRleHQodGhpcy5hdHRyKCJk YXRhLXVuZm9ybWF0dGVkIikpLmNhbGwoRCl9KS5vbigiaW5wdXQiLGZ1bmN0 aW9uKHQpe3RoaXMudGV4dCh0fHwiICIpLmNhbGwodS5wb3NpdGlvblRleHQs Yi54LGIueSl9KSksSS5jbGFzc2VkKCJqcy1wbGFjZWhvbGRlciIsTSksd319 fSx7Ii4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjY4NiwiLi4vLi4vY29u c3RhbnRzL2ludGVyYWN0aW9ucyI6NjkyLCIuLi8uLi9saWIiOjcxNywiLi4v Li4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3RzL3Bsb3Rz Ijo4MjYsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2NvbG9yIjo1OTIsIi4u L2RyYXdpbmciOjYxMyxkMzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjh9XSw2 ODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksYT10KCIuLi9jb2xvci9hdHRy aWJ1dGVzIiksaT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxv PXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxz PXQoIi4uLy4uL3Bsb3RzL3BhZF9hdHRyaWJ1dGVzIiksbD10KCIuLi8uLi9w bG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXksYz1sKCJi dXR0b24iLHt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIn0sbWV0aG9kOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyZXN0eWxlIiwicmVsYXlv dXQiLCJhbmltYXRlIiwidXBkYXRlIiwic2tpcCJdLGRmbHQ6InJlc3R5bGUi fSxhcmdzOnt2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGl0 ZW1zOlt7dmFsVHlwZToiYW55In0se3ZhbFR5cGU6ImFueSJ9LHt2YWxUeXBl OiJhbnkifV19LGFyZ3MyOnt2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVu Z3RoOiEwLGl0ZW1zOlt7dmFsVHlwZToiYW55In0se3ZhbFR5cGU6ImFueSJ9 LHt2YWxUeXBlOiJhbnkifV19LGxhYmVsOnt2YWxUeXBlOiJzdHJpbmciLGRm bHQ6IiJ9LGV4ZWN1dGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9fSk7 ZS5leHBvcnRzPW8obCgidXBkYXRlbWVudSIse19hcnJheUF0dHJSZWdleHBz OlsvXnVwZGF0ZW1lbnVzXFsoMHxbMS05XVswLTldKylcXVwuYnV0dG9ucy9d LHZpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4ifSx0eXBlOnt2YWxUeXBlOiJl bnVtZXJhdGVkIix2YWx1ZXM6WyJkcm9wZG93biIsImJ1dHRvbnMiXSxkZmx0 OiJkcm9wZG93biJ9LGRpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsibGVmdCIsInJpZ2h0IiwidXAiLCJkb3duIl0sZGZsdDoiZG93 biJ9LGFjdGl2ZTp7dmFsVHlwZToiaW50ZWdlciIsbWluOi0xLGRmbHQ6MH0s c2hvd2FjdGl2ZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sYnV0dG9u czpjLHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozLGRmbHQ6LS4w NX0seGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0 byIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRmbHQ6InJpZ2h0In0seTp7 dmFsVHlwZToibnVtYmVyIixtaW46LTIsbWF4OjMsZGZsdDoxfSx5YW5jaG9y Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwi bWlkZGxlIiwiYm90dG9tIl0sZGZsdDoidG9wIn0scGFkOmkocyh7ZWRpdFR5 cGU6ImFycmF5ZHJhdyJ9KSx7fSksZm9udDpuKHt9KSxiZ2NvbG9yOnt2YWxU eXBlOiJjb2xvciJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZs dDphLmJvcmRlckxpbmV9LGJvcmRlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIi LG1pbjowLGRmbHQ6MSxlZGl0VHlwZToiYXJyYXlkcmF3In19KSwiYXJyYXlk cmF3IiwiZnJvbS1yb290Iil9LHsiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIu Li8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RfYXBp L3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1 dGVzIjo3OTEsIi4uLy4uL3Bsb3RzL3BhZF9hdHRyaWJ1dGVzIjo4MjUsIi4u L2NvbG9yL2F0dHJpYnV0ZXMiOjU5MX1dLDY4MTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e25hbWU6InVwZGF0ZW1lbnVzIixj b250YWluZXJDbGFzc05hbWU6InVwZGF0ZW1lbnUtY29udGFpbmVyIixoZWFk ZXJHcm91cENsYXNzTmFtZToidXBkYXRlbWVudS1oZWFkZXItZ3JvdXAiLGhl YWRlckNsYXNzTmFtZToidXBkYXRlbWVudS1oZWFkZXIiLGhlYWRlckFycm93 Q2xhc3NOYW1lOiJ1cGRhdGVtZW51LWhlYWRlci1hcnJvdyIsZHJvcGRvd25C dXR0b25Hcm91cENsYXNzTmFtZToidXBkYXRlbWVudS1kcm9wZG93bi1idXR0 b24tZ3JvdXAiLGRyb3Bkb3duQnV0dG9uQ2xhc3NOYW1lOiJ1cGRhdGVtZW51 LWRyb3Bkb3duLWJ1dHRvbiIsYnV0dG9uQ2xhc3NOYW1lOiJ1cGRhdGVtZW51 LWJ1dHRvbiIsaXRlbVJlY3RDbGFzc05hbWU6InVwZGF0ZW1lbnUtaXRlbS1y ZWN0IixpdGVtVGV4dENsYXNzTmFtZToidXBkYXRlbWVudS1pdGVtLXRleHQi LG1lbnVJbmRleEF0dHJOYW1lOiJ1cGRhdGVtZW51LWFjdGl2ZS1pbmRleCIs YXV0b01hcmdpbklkUm9vdDoidXBkYXRlbWVudS0iLGJsYW5rSGVhZGVyT3B0 czp7bGFiZWw6IiAgIn0sbWluV2lkdGg6MzAsbWluSGVpZ2h0OjMwLHRleHRQ YWRYOjI0LGFycm93UGFkWDoxNixyeDoyLHJ5OjIsdGV4dE9mZnNldFg6MTIs dGV4dE9mZnNldFk6MyxhcnJvd09mZnNldFg6NCxnYXBCdXR0b25IZWFkZXI6 NSxnYXBCdXR0b246MixhY3RpdmVDb2xvcjoiI0Y0RkFGRiIsaG92ZXJDb2xv cjoiI0Y0RkFGRiIsYXJyb3dTeW1ib2w6e2xlZnQ6Ilx1MjVjNCIscmlnaHQ6 Ilx1MjViYSIsdXA6Ilx1MjViMiIsZG93bjoiXHUyNWJjIn19fSx7fV0sNjgy OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1 bHRzIiksaT10KCIuL2F0dHJpYnV0ZXMiKSxvPXQoIi4vY29uc3RhbnRzIiku bmFtZSxzPWkuYnV0dG9ucztmdW5jdGlvbiBsKHQsZSxyKXtmdW5jdGlvbiBv KHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9bygidmlzaWJsZSIs YSh0LGUse25hbWU6ImJ1dHRvbnMiLGhhbmRsZUl0ZW1EZWZhdWx0czpjfSku bGVuZ3RoPjApJiYobygiYWN0aXZlIiksbygiZGlyZWN0aW9uIiksbygidHlw ZSIpLG8oInNob3dhY3RpdmUiKSxvKCJ4IiksbygieSIpLG4ubm9uZU9yQWxs KHQsZSxbIngiLCJ5Il0pLG8oInhhbmNob3IiKSxvKCJ5YW5jaG9yIiksbygi cGFkLnQiKSxvKCJwYWQuciIpLG8oInBhZC5iIiksbygicGFkLmwiKSxuLmNv ZXJjZUZvbnQobywiZm9udCIsci5mb250KSxvKCJiZ2NvbG9yIixyLnBhcGVy X2JnY29sb3IpLG8oImJvcmRlcmNvbG9yIiksbygiYm9yZGVyd2lkdGgiKSl9 ZnVuY3Rpb24gYyh0LGUpe2Z1bmN0aW9uIHIocixhKXtyZXR1cm4gbi5jb2Vy Y2UodCxlLHMscixhKX1yKCJ2aXNpYmxlIiwic2tpcCI9PT10Lm1ldGhvZHx8 QXJyYXkuaXNBcnJheSh0LmFyZ3MpKSYmKHIoIm1ldGhvZCIpLHIoImFyZ3Mi KSxyKCJhcmdzMiIpLHIoImxhYmVsIikscigiZXhlY3V0ZSIpKX1lLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXthKHQsZSx7bmFtZTpvLGhhbmRsZUl0ZW1EZWZh dWx0czpsfSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9hcnJh eV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi9hdHRyaWJ1dGVzIjo2ODAs Ii4vY29uc3RhbnRzIjo2ODF9XSw2ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL3Bsb3RzL3Bsb3Rz IiksaT10KCIuLi9jb2xvciIpLG89dCgiLi4vZHJhd2luZyIpLHM9dCgiLi4v Li4vbGliIiksbD10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxjPXQo Ii4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS5hcnJheUVkaXRvcix1 PXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKS5MSU5FX1NQQUNJTkcs aD10KCIuL2NvbnN0YW50cyIpLGY9dCgiLi9zY3JvbGxib3giKTtmdW5jdGlv biBwKHQpe3JldHVybiB0Ll9pbmRleH1mdW5jdGlvbiBkKHQsZSl7cmV0dXJu K3QuYXR0cihoLm1lbnVJbmRleEF0dHJOYW1lKT09PWUuX2luZGV4fWZ1bmN0 aW9uIGcodCxlLHIsbixhLGksbyxzKXtlLmFjdGl2ZT1vLGModC5sYXlvdXQs aC5uYW1lLGUpLmFwcGx5VXBkYXRlKCJhY3RpdmUiLG8pLCJidXR0b25zIj09 PWUudHlwZT9tKHQsbixudWxsLG51bGwsZSk6ImRyb3Bkb3duIj09PWUudHlw ZSYmKGEuYXR0cihoLm1lbnVJbmRleEF0dHJOYW1lLCItMSIpLHYodCxuLGEs aSxlKSxzfHxtKHQsbixhLGksZSkpfWZ1bmN0aW9uIHYodCxlLHIsbixhKXt2 YXIgaT1zLmVuc3VyZVNpbmdsZShlLCJnIixoLmhlYWRlckNsYXNzTmFtZSxm dW5jdGlvbih0KXt0LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpfSks bD1hLl9kaW1zLGM9YS5hY3RpdmUsdT1hLmJ1dHRvbnNbY118fGguYmxhbmtI ZWFkZXJPcHRzLGY9e3k6YS5wYWQudCx5UGFkOjAseDphLnBhZC5sLHhQYWQ6 MCxpbmRleDowfSxwPXt3aWR0aDpsLmhlYWRlcldpZHRoLGhlaWdodDpsLmhl YWRlckhlaWdodH07aS5jYWxsKHksYSx1LHQpLmNhbGwoQSxhLGYscCkscy5l bnN1cmVTaW5nbGUoZSwidGV4dCIsaC5oZWFkZXJBcnJvd0NsYXNzTmFtZSxm dW5jdGlvbih0KXt0LmNsYXNzZWQoInVzZXItc2VsZWN0LW5vbmUiLCEwKS5h dHRyKCJ0ZXh0LWFuY2hvciIsImVuZCIpLmNhbGwoby5mb250LGEuZm9udCku dGV4dChoLmFycm93U3ltYm9sW2EuZGlyZWN0aW9uXSl9KS5hdHRyKHt4Omwu aGVhZGVyV2lkdGgtaC5hcnJvd09mZnNldFgrYS5wYWQubCx5OmwuaGVhZGVy SGVpZ2h0LzIraC50ZXh0T2Zmc2V0WSthLnBhZC50fSksaS5vbigiY2xpY2si LGZ1bmN0aW9uKCl7ci5jYWxsKFMsU3RyaW5nKGQocixhKT8tMTphLl9pbmRl eCkpLG0odCxlLHIsbixhKX0pLGkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24o KXtpLmNhbGwodyl9KSxpLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtpLmNh bGwoayxhKX0pLG8uc2V0VHJhbnNsYXRlKGUsbC5seCxsLmx5KX1mdW5jdGlv biBtKHQsZSxyLGksbyl7cnx8KHI9ZSkuYXR0cigicG9pbnRlci1ldmVudHMi LCJhbGwiKTt2YXIgbD1mdW5jdGlvbih0KXtyZXR1cm4tMT09K3QuYXR0ciho Lm1lbnVJbmRleEF0dHJOYW1lKX0ocikmJiJidXR0b25zIiE9PW8udHlwZT9b XTpvLmJ1dHRvbnMsYz0iZHJvcGRvd24iPT09by50eXBlP2guZHJvcGRvd25C dXR0b25DbGFzc05hbWU6aC5idXR0b25DbGFzc05hbWUsdT1yLnNlbGVjdEFs bCgiZy4iK2MpLmRhdGEocy5maWx0ZXJWaXNpYmxlKGwpKSxmPXUuZW50ZXIo KS5hcHBlbmQoImciKS5jbGFzc2VkKGMsITApLHA9dS5leGl0KCk7ImRyb3Bk b3duIj09PW8udHlwZT8oZi5hdHRyKCJvcGFjaXR5IiwiMCIpLnRyYW5zaXRp b24oKS5hdHRyKCJvcGFjaXR5IiwiMSIpLHAudHJhbnNpdGlvbigpLmF0dHIo Im9wYWNpdHkiLCIwIikucmVtb3ZlKCkpOnAucmVtb3ZlKCk7dmFyIGQ9MCx2 PTAsbT1vLl9kaW1zLHg9LTEhPT1bInVwIiwiZG93biJdLmluZGV4T2Yoby5k aXJlY3Rpb24pOyJkcm9wZG93biI9PT1vLnR5cGUmJih4P3Y9bS5oZWFkZXJI ZWlnaHQraC5nYXBCdXR0b25IZWFkZXI6ZD1tLmhlYWRlcldpZHRoK2guZ2Fw QnV0dG9uSGVhZGVyKSwiZHJvcGRvd24iPT09by50eXBlJiYidXAiPT09by5k aXJlY3Rpb24mJih2PS1oLmdhcEJ1dHRvbkhlYWRlcitoLmdhcEJ1dHRvbi1t Lm9wZW5IZWlnaHQpLCJkcm9wZG93biI9PT1vLnR5cGUmJiJsZWZ0Ij09PW8u ZGlyZWN0aW9uJiYoZD0taC5nYXBCdXR0b25IZWFkZXIraC5nYXBCdXR0b24t bS5vcGVuV2lkdGgpO3ZhciBiPXt4Om0ubHgrZCtvLnBhZC5sLHk6bS5seSt2 K28ucGFkLnQseVBhZDpoLmdhcEJ1dHRvbix4UGFkOmguZ2FwQnV0dG9uLGlu ZGV4OjB9LFQ9e2w6Yi54K28uYm9yZGVyd2lkdGgsdDpiLnkrby5ib3JkZXJ3 aWR0aH07dS5lYWNoKGZ1bmN0aW9uKHMsbCl7dmFyIGM9bi5zZWxlY3QodGhp cyk7Yy5jYWxsKHksbyxzLHQpLmNhbGwoQSxvLGIpLGMub24oImNsaWNrIixm dW5jdGlvbigpe24uZXZlbnQuZGVmYXVsdFByZXZlbnRlZHx8KHMuZXhlY3V0 ZSYmKHMuYXJnczImJm8uYWN0aXZlPT09bD8oZyh0LG8sMCxlLHIsaSwtMSks YS5leGVjdXRlQVBJQ29tbWFuZCh0LHMubWV0aG9kLHMuYXJnczIpKTooZyh0 LG8sMCxlLHIsaSxsKSxhLmV4ZWN1dGVBUElDb21tYW5kKHQscy5tZXRob2Qs cy5hcmdzKSkpLHQuZW1pdCgicGxvdGx5X2J1dHRvbmNsaWNrZWQiLHttZW51 Om8sYnV0dG9uOnMsYWN0aXZlOm8uYWN0aXZlfSkpfSksYy5vbigibW91c2Vv dmVyIixmdW5jdGlvbigpe2MuY2FsbCh3KX0pLGMub24oIm1vdXNlb3V0Iixm dW5jdGlvbigpe2MuY2FsbChrLG8pLHUuY2FsbChfLG8pfSl9KSx1LmNhbGwo XyxvKSx4PyhULnc9TWF0aC5tYXgobS5vcGVuV2lkdGgsbS5oZWFkZXJXaWR0 aCksVC5oPWIueS1ULnQpOihULnc9Yi54LVQubCxULmg9TWF0aC5tYXgobS5v cGVuSGVpZ2h0LG0uaGVhZGVySGVpZ2h0KSksVC5kaXJlY3Rpb249by5kaXJl Y3Rpb24saSYmKHUuc2l6ZSgpP2Z1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIg byxzLGwsYz1hLmRpcmVjdGlvbix1PSJ1cCI9PT1jfHwiZG93biI9PT1jLGY9 YS5fZGltcyxwPWEuYWN0aXZlO2lmKHUpZm9yKHM9MCxsPTA7bDxwO2wrKylz Kz1mLmhlaWdodHNbbF0raC5nYXBCdXR0b247ZWxzZSBmb3Iobz0wLGw9MDts PHA7bCsrKW8rPWYud2lkdGhzW2xdK2guZ2FwQnV0dG9uO24uZW5hYmxlKGks byxzKSxuLmhiYXImJm4uaGJhci5hdHRyKCJvcGFjaXR5IiwiMCIpLnRyYW5z aXRpb24oKS5hdHRyKCJvcGFjaXR5IiwiMSIpO24udmJhciYmbi52YmFyLmF0 dHIoIm9wYWNpdHkiLCIwIikudHJhbnNpdGlvbigpLmF0dHIoIm9wYWNpdHki LCIxIil9KDAsMCwwLGksbyxUKTpmdW5jdGlvbih0KXt2YXIgZT0hIXQuaGJh cixyPSEhdC52YmFyO2UmJnQuaGJhci50cmFuc2l0aW9uKCkuYXR0cigib3Bh Y2l0eSIsIjAiKS5lYWNoKCJlbmQiLGZ1bmN0aW9uKCl7ZT0hMSxyfHx0LmRp c2FibGUoKX0pO3ImJnQudmJhci50cmFuc2l0aW9uKCkuYXR0cigib3BhY2l0 eSIsIjAiKS5lYWNoKCJlbmQiLGZ1bmN0aW9uKCl7cj0hMSxlfHx0LmRpc2Fi bGUoKX0pfShpKSl9ZnVuY3Rpb24geSh0LGUscixuKXt0LmNhbGwoeCxlKS5j YWxsKGIsZSxyLG4pfWZ1bmN0aW9uIHgodCxlKXtzLmVuc3VyZVNpbmdsZSh0 LCJyZWN0IixoLml0ZW1SZWN0Q2xhc3NOYW1lLGZ1bmN0aW9uKHQpe3QuYXR0 cih7cng6aC5yeCxyeTpoLnJ5LCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVk Z2VzIn0pfSkuY2FsbChpLnN0cm9rZSxlLmJvcmRlcmNvbG9yKS5jYWxsKGku ZmlsbCxlLmJnY29sb3IpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGUuYm9yZGVy d2lkdGgrInB4Iil9ZnVuY3Rpb24gYih0LGUscixuKXt2YXIgYT1zLmVuc3Vy ZVNpbmdsZSh0LCJ0ZXh0IixoLml0ZW1UZXh0Q2xhc3NOYW1lLGZ1bmN0aW9u KHQpe3QuY2xhc3NlZCgidXNlci1zZWxlY3Qtbm9uZSIsITApLmF0dHIoeyJ0 ZXh0LWFuY2hvciI6InN0YXJ0IiwiZGF0YS1ub3RleCI6MX0pfSksaT1yLmxh YmVsLGM9bi5fZnVsbExheW91dC5fbWV0YTtjJiYoaT1zLnRlbXBsYXRlU3Ry aW5nKGksYykpLGEuY2FsbChvLmZvbnQsZS5mb250KS50ZXh0KGkpLmNhbGwo bC5jb252ZXJ0VG9Uc3BhbnMsbil9ZnVuY3Rpb24gXyh0LGUpe3ZhciByPWUu YWN0aXZlO3QuZWFjaChmdW5jdGlvbih0LGEpe3ZhciBvPW4uc2VsZWN0KHRo aXMpO2E9PT1yJiZlLnNob3dhY3RpdmUmJm8uc2VsZWN0KCJyZWN0LiIraC5p dGVtUmVjdENsYXNzTmFtZSkuY2FsbChpLmZpbGwsaC5hY3RpdmVDb2xvcil9 KX1mdW5jdGlvbiB3KHQpe3Quc2VsZWN0KCJyZWN0LiIraC5pdGVtUmVjdENs YXNzTmFtZSkuY2FsbChpLmZpbGwsaC5ob3ZlckNvbG9yKX1mdW5jdGlvbiBr KHQsZSl7dC5zZWxlY3QoInJlY3QuIitoLml0ZW1SZWN0Q2xhc3NOYW1lKS5j YWxsKGkuZmlsbCxlLmJnY29sb3IpfWZ1bmN0aW9uIFQodCxlKXt2YXIgcj1l Ll9kaW1zPXt3aWR0aDE6MCxoZWlnaHQxOjAsaGVpZ2h0czpbXSx3aWR0aHM6 W10sdG90YWxXaWR0aDowLHRvdGFsSGVpZ2h0OjAsb3BlbldpZHRoOjAsb3Bl bkhlaWdodDowLGx4OjAsbHk6MH0saT1vLnRlc3Rlci5zZWxlY3RBbGwoImcu IitoLmRyb3Bkb3duQnV0dG9uQ2xhc3NOYW1lKS5kYXRhKHMuZmlsdGVyVmlz aWJsZShlLmJ1dHRvbnMpKTtpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3Nl ZChoLmRyb3Bkb3duQnV0dG9uQ2xhc3NOYW1lLCEwKTt2YXIgYz0tMSE9PVsi dXAiLCJkb3duIl0uaW5kZXhPZihlLmRpcmVjdGlvbik7aS5lYWNoKGZ1bmN0 aW9uKGEsaSl7dmFyIHM9bi5zZWxlY3QodGhpcyk7cy5jYWxsKHksZSxhLHQp O3ZhciBmPXMuc2VsZWN0KCIuIitoLml0ZW1UZXh0Q2xhc3NOYW1lKSxwPWYu bm9kZSgpJiZvLmJCb3goZi5ub2RlKCkpLndpZHRoLGQ9TWF0aC5tYXgocCto LnRleHRQYWRYLGgubWluV2lkdGgpLGc9ZS5mb250LnNpemUqdSx2PWwubGlu ZUNvdW50KGYpLG09TWF0aC5tYXgoZyp2LGgubWluSGVpZ2h0KStoLnRleHRP ZmZzZXRZO209TWF0aC5jZWlsKG0pLGQ9TWF0aC5jZWlsKGQpLHIud2lkdGhz W2ldPWQsci5oZWlnaHRzW2ldPW0sci5oZWlnaHQxPU1hdGgubWF4KHIuaGVp Z2h0MSxtKSxyLndpZHRoMT1NYXRoLm1heChyLndpZHRoMSxkKSxjPyhyLnRv dGFsV2lkdGg9TWF0aC5tYXgoci50b3RhbFdpZHRoLGQpLHIub3BlbldpZHRo PXIudG90YWxXaWR0aCxyLnRvdGFsSGVpZ2h0Kz1tK2guZ2FwQnV0dG9uLHIu b3BlbkhlaWdodCs9bStoLmdhcEJ1dHRvbik6KHIudG90YWxXaWR0aCs9ZCto LmdhcEJ1dHRvbixyLm9wZW5XaWR0aCs9ZCtoLmdhcEJ1dHRvbixyLnRvdGFs SGVpZ2h0PU1hdGgubWF4KHIudG90YWxIZWlnaHQsbSksci5vcGVuSGVpZ2h0 PXIudG90YWxIZWlnaHQpfSksYz9yLnRvdGFsSGVpZ2h0LT1oLmdhcEJ1dHRv bjpyLnRvdGFsV2lkdGgtPWguZ2FwQnV0dG9uLHIuaGVhZGVyV2lkdGg9ci53 aWR0aDEraC5hcnJvd1BhZFgsci5oZWFkZXJIZWlnaHQ9ci5oZWlnaHQxLCJk cm9wZG93biI9PT1lLnR5cGUmJihjPyhyLndpZHRoMSs9aC5hcnJvd1BhZFgs ci50b3RhbEhlaWdodD1yLmhlaWdodDEpOnIudG90YWxXaWR0aD1yLndpZHRo MSxyLnRvdGFsV2lkdGgrPWguYXJyb3dQYWRYKSxpLnJlbW92ZSgpO3ZhciBm PXIudG90YWxXaWR0aCtlLnBhZC5sK2UucGFkLnIscD1yLnRvdGFsSGVpZ2h0 K2UucGFkLnQrZS5wYWQuYixkPXQuX2Z1bGxMYXlvdXQuX3NpemU7ci5seD1k LmwrZC53KmUueCxyLmx5PWQudCtkLmgqKDEtZS55KTt2YXIgZz0ibGVmdCI7 cy5pc1JpZ2h0QW5jaG9yKGUpJiYoci5seC09ZixnPSJyaWdodCIpLHMuaXND ZW50ZXJBbmNob3IoZSkmJihyLmx4LT1mLzIsZz0iY2VudGVyIik7dmFyIHY9 InRvcCI7cy5pc0JvdHRvbUFuY2hvcihlKSYmKHIubHktPXAsdj0iYm90dG9t Iikscy5pc01pZGRsZUFuY2hvcihlKSYmKHIubHktPXAvMix2PSJtaWRkbGUi KSxyLnRvdGFsV2lkdGg9TWF0aC5jZWlsKHIudG90YWxXaWR0aCksci50b3Rh bEhlaWdodD1NYXRoLmNlaWwoci50b3RhbEhlaWdodCksci5seD1NYXRoLnJv dW5kKHIubHgpLHIubHk9TWF0aC5yb3VuZChyLmx5KSxhLmF1dG9NYXJnaW4o dCxNKGUpLHt4OmUueCx5OmUueSxsOmYqKHtyaWdodDoxLGNlbnRlcjouNX1b Z118fDApLHI6Ziooe2xlZnQ6MSxjZW50ZXI6LjV9W2ddfHwwKSxiOnAqKHt0 b3A6MSxtaWRkbGU6LjV9W3ZdfHwwKSx0OnAqKHtib3R0b206MSxtaWRkbGU6 LjV9W3ZdfHwwKX0pfWZ1bmN0aW9uIE0odCl7cmV0dXJuIGguYXV0b01hcmdp bklkUm9vdCt0Ll9pbmRleH1mdW5jdGlvbiBBKHQsZSxyLG4pe249bnx8e307 dmFyIGE9dC5zZWxlY3QoIi4iK2guaXRlbVJlY3RDbGFzc05hbWUpLGk9dC5z ZWxlY3QoIi4iK2guaXRlbVRleHRDbGFzc05hbWUpLHM9ZS5ib3JkZXJ3aWR0 aCxjPXIuaW5kZXgsZj1lLl9kaW1zO28uc2V0VHJhbnNsYXRlKHQscytyLngs cytyLnkpO3ZhciBwPS0xIT09WyJ1cCIsImRvd24iXS5pbmRleE9mKGUuZGly ZWN0aW9uKSxkPW4uaGVpZ2h0fHwocD9mLmhlaWdodHNbY106Zi5oZWlnaHQx KTthLmF0dHIoe3g6MCx5OjAsd2lkdGg6bi53aWR0aHx8KHA/Zi53aWR0aDE6 Zi53aWR0aHNbY10pLGhlaWdodDpkfSk7dmFyIGc9ZS5mb250LnNpemUqdSx2 PShsLmxpbmVDb3VudChpKS0xKSpnLzI7bC5wb3NpdGlvblRleHQoaSxoLnRl eHRPZmZzZXRYLGQvMi12K2gudGV4dE9mZnNldFkpLHA/ci55Kz1mLmhlaWdo dHNbY10rci55UGFkOnIueCs9Zi53aWR0aHNbY10rci54UGFkLHIuaW5kZXgr K31mdW5jdGlvbiBTKHQsZSl7dC5hdHRyKGgubWVudUluZGV4QXR0ck5hbWUs ZXx8Ii0xIikuc2VsZWN0QWxsKCJnLiIraC5kcm9wZG93bkJ1dHRvbkNsYXNz TmFtZSkucmVtb3ZlKCl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQu X2Z1bGxMYXlvdXQscj1zLmZpbHRlclZpc2libGUoZVtoLm5hbWVdKTtmdW5j dGlvbiBpKGUpe2EuYXV0b01hcmdpbih0LE0oZSkpfXZhciBvPWUuX21lbnVs YXllci5zZWxlY3RBbGwoImcuIitoLmNvbnRhaW5lckNsYXNzTmFtZSkuZGF0 YShyLmxlbmd0aD4wP1swXTpbXSk7aWYoby5lbnRlcigpLmFwcGVuZCgiZyIp LmNsYXNzZWQoaC5jb250YWluZXJDbGFzc05hbWUsITApLnN0eWxlKCJjdXJz b3IiLCJwb2ludGVyIiksby5leGl0KCkuZWFjaChmdW5jdGlvbigpe24uc2Vs ZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy4iK2guaGVhZGVyR3JvdXBDbGFzc05h bWUpLmVhY2goaSl9KS5yZW1vdmUoKSwwIT09ci5sZW5ndGgpe3ZhciBsPW8u c2VsZWN0QWxsKCJnLiIraC5oZWFkZXJHcm91cENsYXNzTmFtZSkuZGF0YShy LHApO2wuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKGguaGVhZGVyR3Jv dXBDbGFzc05hbWUsITApO2Zvcih2YXIgYz1zLmVuc3VyZVNpbmdsZShvLCJn IixoLmRyb3Bkb3duQnV0dG9uR3JvdXBDbGFzc05hbWUsZnVuY3Rpb24odCl7 dC5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKX0pLHU9MDt1PHIubGVu Z3RoO3UrKyl7dmFyIHk9clt1XTtUKHQseSl9dmFyIHg9InVwZGF0ZW1lbnVz IitlLl91aWQsYj1uZXcgZih0LGMseCk7bC5lbnRlcigpLnNpemUoKSYmKGMu bm9kZSgpLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoYy5ub2RlKCkpLGMuY2Fs bChTKSksbC5leGl0KCkuZWFjaChmdW5jdGlvbih0KXtjLmNhbGwoUyksaSh0 KX0pLnJlbW92ZSgpLGwuZWFjaChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVj dCh0aGlzKSxpPSJkcm9wZG93biI9PT1lLnR5cGU/YzpudWxsO2EubWFuYWdl Q29tbWFuZE9ic2VydmVyKHQsZSxlLmJ1dHRvbnMsZnVuY3Rpb24obil7Zyh0 LGUsZS5idXR0b25zW24uaW5kZXhdLHIsaSxiLG4uaW5kZXgsITApfSksImRy b3Bkb3duIj09PWUudHlwZT8odih0LHIsYyxiLGUpLGQoYyxlKSYmbSh0LHIs YyxiLGUpKTptKHQscixudWxsLG51bGwsZSl9KX19fSx7Ii4uLy4uL2NvbnN0 YW50cy9hbGlnbm1lbnQiOjY4NiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xp Yi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90X2FwaS9wbG90X3Rl bXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo4MjYsIi4uL2NvbG9y Ijo1OTIsIi4uL2RyYXdpbmciOjYxMywiLi9jb25zdGFudHMiOjY4MSwiLi9z Y3JvbGxib3giOjY4NSxkMzoxNjV9XSw2ODQ6W2Z1bmN0aW9uKHQsZSxyKXth cmd1bWVudHNbNF1bNjc4XVswXS5hcHBseShyLGFyZ3VtZW50cyl9LHsiLi9h dHRyaWJ1dGVzIjo2ODAsIi4vY29uc3RhbnRzIjo2ODEsIi4vZGVmYXVsdHMi OjY4MiwiLi9kcmF3Ijo2ODMsZHVwOjY3OH1dLDY4NTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9czt2YXIgbj10KCJkMyIpLGE9 dCgiLi4vY29sb3IiKSxpPXQoIi4uL2RyYXdpbmciKSxvPXQoIi4uLy4uL2xp YiIpO2Z1bmN0aW9uIHModCxlLHIpe3RoaXMuZ2Q9dCx0aGlzLmNvbnRhaW5l cj1lLHRoaXMuaWQ9cix0aGlzLnBvc2l0aW9uPW51bGwsdGhpcy50cmFuc2xh dGVYPW51bGwsdGhpcy50cmFuc2xhdGVZPW51bGwsdGhpcy5oYmFyPW51bGws dGhpcy52YmFyPW51bGwsdGhpcy5iZz10aGlzLmNvbnRhaW5lci5zZWxlY3RB bGwoInJlY3Quc2Nyb2xsYm94LWJnIikuZGF0YShbMF0pLHRoaXMuYmcuZXhp dCgpLm9uKCIuZHJhZyIsbnVsbCkub24oIndoZWVsIixudWxsKS5yZW1vdmUo KSx0aGlzLmJnLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgic2Ny b2xsYm94LWJnIiwhMCkuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIiku YXR0cih7b3BhY2l0eTowLHg6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH0pfXMu YmFyV2lkdGg9MixzLmJhckxlbmd0aD0yMCxzLmJhclJhZGl1cz0yLHMuYmFy UGFkPTEscy5iYXJDb2xvcj0iIzgwOEJBNCIscy5wcm90b3R5cGUuZW5hYmxl PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbz10aGlzLmdkLl9mdWxsTGF5b3V0LGw9 by53aWR0aCxjPW8uaGVpZ2h0O3RoaXMucG9zaXRpb249dDt2YXIgdSxoLGYs cCxkPXRoaXMucG9zaXRpb24ubCxnPXRoaXMucG9zaXRpb24udyx2PXRoaXMu cG9zaXRpb24udCxtPXRoaXMucG9zaXRpb24uaCx5PXRoaXMucG9zaXRpb24u ZGlyZWN0aW9uLHg9ImRvd24iPT09eSxiPSJsZWZ0Ij09PXksXz0idXAiPT09 eSx3PWcsaz1tO3h8fGJ8fCJyaWdodCI9PT15fHxffHwodGhpcy5wb3NpdGlv bi5kaXJlY3Rpb249ImRvd24iLHg9ITApLHh8fF8/KGg9KHU9ZCkrdyx4Pyhm PXYsaz0ocD1NYXRoLm1pbihmK2ssYykpLWYpOms9KHA9ditrKS0oZj1NYXRo Lm1heChwLWssMCkpKToocD0oZj12KStrLGI/dz0oaD1kK3cpLSh1PU1hdGgu bWF4KGgtdywwKSk6KHU9ZCx3PShoPU1hdGgubWluKHUrdyxsKSktdSkpLHRo aXMuX2JveD17bDp1LHQ6Zix3OncsaDprfTt2YXIgVD1nPncsTT1zLmJhckxl bmd0aCsyKnMuYmFyUGFkLEE9cy5iYXJXaWR0aCsyKnMuYmFyUGFkLFM9ZCxF PXYrbTtFK0E+YyYmKEU9Yy1BKTt2YXIgTD10aGlzLmNvbnRhaW5lci5zZWxl Y3RBbGwoInJlY3Quc2Nyb2xsYmFyLWhvcml6b250YWwiKS5kYXRhKFQ/WzBd OltdKTtMLmV4aXQoKS5vbigiLmRyYWciLG51bGwpLnJlbW92ZSgpLEwuZW50 ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzY3JvbGxiYXItaG9yaXpv bnRhbCIsITApLmNhbGwoYS5maWxsLHMuYmFyQ29sb3IpLFQ/KHRoaXMuaGJh cj1MLmF0dHIoe3J4OnMuYmFyUmFkaXVzLHJ5OnMuYmFyUmFkaXVzLHg6Uyx5 OkUsd2lkdGg6TSxoZWlnaHQ6QX0pLHRoaXMuX2hiYXJYTWluPVMrTS8yLHRo aXMuX2hiYXJUcmFuc2xhdGVNYXg9dy1NKTooZGVsZXRlIHRoaXMuaGJhcixk ZWxldGUgdGhpcy5faGJhclhNaW4sZGVsZXRlIHRoaXMuX2hiYXJUcmFuc2xh dGVNYXgpO3ZhciBDPW0+ayxQPXMuYmFyV2lkdGgrMipzLmJhclBhZCxPPXMu YmFyTGVuZ3RoKzIqcy5iYXJQYWQsej1kK2csST12O3orUD5sJiYoej1sLVAp O3ZhciBEPXRoaXMuY29udGFpbmVyLnNlbGVjdEFsbCgicmVjdC5zY3JvbGxi YXItdmVydGljYWwiKS5kYXRhKEM/WzBdOltdKTtELmV4aXQoKS5vbigiLmRy YWciLG51bGwpLnJlbW92ZSgpLEQuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5j bGFzc2VkKCJzY3JvbGxiYXItdmVydGljYWwiLCEwKS5jYWxsKGEuZmlsbCxz LmJhckNvbG9yKSxDPyh0aGlzLnZiYXI9RC5hdHRyKHtyeDpzLmJhclJhZGl1 cyxyeTpzLmJhclJhZGl1cyx4OnoseTpJLHdpZHRoOlAsaGVpZ2h0Ok99KSx0 aGlzLl92YmFyWU1pbj1JK08vMix0aGlzLl92YmFyVHJhbnNsYXRlTWF4PWst Tyk6KGRlbGV0ZSB0aGlzLnZiYXIsZGVsZXRlIHRoaXMuX3ZiYXJZTWluLGRl bGV0ZSB0aGlzLl92YmFyVHJhbnNsYXRlTWF4KTt2YXIgUj10aGlzLmlkLEY9 dS0uNSxCPUM/aCtQKy41OmgrLjUsTj1mLS41LGo9VD9wK0ErLjU6cCsuNSxW PW8uX3RvcGRlZnMuc2VsZWN0QWxsKCIjIitSKS5kYXRhKFR8fEM/WzBdOltd KTtpZihWLmV4aXQoKS5yZW1vdmUoKSxWLmVudGVyKCkuYXBwZW5kKCJjbGlw UGF0aCIpLmF0dHIoImlkIixSKS5hcHBlbmQoInJlY3QiKSxUfHxDPyh0aGlz Ll9jbGlwUmVjdD1WLnNlbGVjdCgicmVjdCIpLmF0dHIoe3g6TWF0aC5mbG9v cihGKSx5Ok1hdGguZmxvb3IoTiksd2lkdGg6TWF0aC5jZWlsKEIpLU1hdGgu Zmxvb3IoRiksaGVpZ2h0Ok1hdGguY2VpbChqKS1NYXRoLmZsb29yKE4pfSks dGhpcy5jb250YWluZXIuY2FsbChpLnNldENsaXBVcmwsUix0aGlzLmdkKSx0 aGlzLmJnLmF0dHIoe3g6ZCx5OnYsd2lkdGg6ZyxoZWlnaHQ6bX0pKToodGhp cy5iZy5hdHRyKHt3aWR0aDowLGhlaWdodDowfSksdGhpcy5jb250YWluZXIu b24oIndoZWVsIixudWxsKS5vbigiLmRyYWciLG51bGwpLmNhbGwoaS5zZXRD bGlwVXJsLG51bGwpLGRlbGV0ZSB0aGlzLl9jbGlwUmVjdCksVHx8Qyl7dmFy IFU9bi5iZWhhdmlvci5kcmFnKCkub24oImRyYWdzdGFydCIsZnVuY3Rpb24o KXtuLmV2ZW50LnNvdXJjZUV2ZW50LnByZXZlbnREZWZhdWx0KCl9KS5vbigi ZHJhZyIsdGhpcy5fb25Cb3hEcmFnLmJpbmQodGhpcykpO3RoaXMuY29udGFp bmVyLm9uKCJ3aGVlbCIsbnVsbCkub24oIndoZWVsIix0aGlzLl9vbkJveFdo ZWVsLmJpbmQodGhpcykpLm9uKCIuZHJhZyIsbnVsbCkuY2FsbChVKTt2YXIg cT1uLmJlaGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixmdW5jdGlvbigp e24uZXZlbnQuc291cmNlRXZlbnQucHJldmVudERlZmF1bHQoKSxuLmV2ZW50 LnNvdXJjZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24oImRyYWciLHRo aXMuX29uQmFyRHJhZy5iaW5kKHRoaXMpKTtUJiZ0aGlzLmhiYXIub24oIi5k cmFnIixudWxsKS5jYWxsKHEpLEMmJnRoaXMudmJhci5vbigiLmRyYWciLG51 bGwpLmNhbGwocSl9dGhpcy5zZXRUcmFuc2xhdGUoZSxyKX0scy5wcm90b3R5 cGUuZGlzYWJsZT1mdW5jdGlvbigpeyh0aGlzLmhiYXJ8fHRoaXMudmJhcikm Jih0aGlzLmJnLmF0dHIoe3dpZHRoOjAsaGVpZ2h0OjB9KSx0aGlzLmNvbnRh aW5lci5vbigid2hlZWwiLG51bGwpLm9uKCIuZHJhZyIsbnVsbCkuY2FsbChp LnNldENsaXBVcmwsbnVsbCksZGVsZXRlIHRoaXMuX2NsaXBSZWN0KSx0aGlz LmhiYXImJih0aGlzLmhiYXIub24oIi5kcmFnIixudWxsKSx0aGlzLmhiYXIu cmVtb3ZlKCksZGVsZXRlIHRoaXMuaGJhcixkZWxldGUgdGhpcy5faGJhclhN aW4sZGVsZXRlIHRoaXMuX2hiYXJUcmFuc2xhdGVNYXgpLHRoaXMudmJhciYm KHRoaXMudmJhci5vbigiLmRyYWciLG51bGwpLHRoaXMudmJhci5yZW1vdmUo KSxkZWxldGUgdGhpcy52YmFyLGRlbGV0ZSB0aGlzLl92YmFyWU1pbixkZWxl dGUgdGhpcy5fdmJhclRyYW5zbGF0ZU1heCl9LHMucHJvdG90eXBlLl9vbkJv eERyYWc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRyYW5zbGF0ZVgsZT10aGlz LnRyYW5zbGF0ZVk7dGhpcy5oYmFyJiYodC09bi5ldmVudC5keCksdGhpcy52 YmFyJiYoZS09bi5ldmVudC5keSksdGhpcy5zZXRUcmFuc2xhdGUodCxlKX0s cy5wcm90b3R5cGUuX29uQm94V2hlZWw9ZnVuY3Rpb24oKXt2YXIgdD10aGlz LnRyYW5zbGF0ZVgsZT10aGlzLnRyYW5zbGF0ZVk7dGhpcy5oYmFyJiYodCs9 bi5ldmVudC5kZWx0YVkpLHRoaXMudmJhciYmKGUrPW4uZXZlbnQuZGVsdGFZ KSx0aGlzLnNldFRyYW5zbGF0ZSh0LGUpfSxzLnByb3RvdHlwZS5fb25CYXJE cmFnPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50cmFuc2xhdGVYLGU9dGhpcy50 cmFuc2xhdGVZO2lmKHRoaXMuaGJhcil7dmFyIHI9dCt0aGlzLl9oYmFyWE1p bixhPXIrdGhpcy5faGJhclRyYW5zbGF0ZU1heDt0PShvLmNvbnN0cmFpbihu LmV2ZW50LngscixhKS1yKS8oYS1yKSoodGhpcy5wb3NpdGlvbi53LXRoaXMu X2JveC53KX1pZih0aGlzLnZiYXIpe3ZhciBpPWUrdGhpcy5fdmJhcllNaW4s cz1pK3RoaXMuX3ZiYXJUcmFuc2xhdGVNYXg7ZT0oby5jb25zdHJhaW4obi5l dmVudC55LGkscyktaSkvKHMtaSkqKHRoaXMucG9zaXRpb24uaC10aGlzLl9i b3guaCl9dGhpcy5zZXRUcmFuc2xhdGUodCxlKX0scy5wcm90b3R5cGUuc2V0 VHJhbnNsYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5wb3NpdGlvbi53 LXRoaXMuX2JveC53LG49dGhpcy5wb3NpdGlvbi5oLXRoaXMuX2JveC5oO2lm KHQ9by5jb25zdHJhaW4odHx8MCwwLHIpLGU9by5jb25zdHJhaW4oZXx8MCww LG4pLHRoaXMudHJhbnNsYXRlWD10LHRoaXMudHJhbnNsYXRlWT1lLHRoaXMu Y29udGFpbmVyLmNhbGwoaS5zZXRUcmFuc2xhdGUsdGhpcy5fYm94LmwtdGhp cy5wb3NpdGlvbi5sLXQsdGhpcy5fYm94LnQtdGhpcy5wb3NpdGlvbi50LWUp LHRoaXMuX2NsaXBSZWN0JiZ0aGlzLl9jbGlwUmVjdC5hdHRyKHt4Ok1hdGgu Zmxvb3IodGhpcy5wb3NpdGlvbi5sK3QtLjUpLHk6TWF0aC5mbG9vcih0aGlz LnBvc2l0aW9uLnQrZS0uNSl9KSx0aGlzLmhiYXIpe3ZhciBhPXQvcjt0aGlz LmhiYXIuY2FsbChpLnNldFRyYW5zbGF0ZSx0K2EqdGhpcy5faGJhclRyYW5z bGF0ZU1heCxlKX1pZih0aGlzLnZiYXIpe3ZhciBzPWUvbjt0aGlzLnZiYXIu Y2FsbChpLnNldFRyYW5zbGF0ZSx0LGUrcyp0aGlzLl92YmFyVHJhbnNsYXRl TWF4KX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9jb2xvciI6NTkyLCIuLi9k cmF3aW5nIjo2MTMsZDM6MTY1fV0sNjg2OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz17RlJPTV9CTDp7bGVmdDowLGNlbnRlcjou NSxyaWdodDoxLGJvdHRvbTowLG1pZGRsZTouNSx0b3A6MX0sRlJPTV9UTDp7 bGVmdDowLGNlbnRlcjouNSxyaWdodDoxLGJvdHRvbToxLG1pZGRsZTouNSx0 b3A6MH0sRlJPTV9CUjp7bGVmdDoxLGNlbnRlcjouNSxyaWdodDowLGJvdHRv bTowLG1pZGRsZTouNSx0b3A6MX0sTElORV9TUEFDSU5HOjEuMyxDQVBfU0hJ RlQ6LjcsTUlEX1NISUZUOi4zNSxPUFBPU0lURV9TSURFOntsZWZ0OiJyaWdo dCIscmlnaHQ6ImxlZnQiLHRvcDoiYm90dG9tIixib3R0b206InRvcCJ9fX0s e31dLDY4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9e0lOQ1JFQVNJTkc6e0NPTE9SOiIjM0Q5OTcwIixTWU1CT0w6Ilx1MjVi MiJ9LERFQ1JFQVNJTkc6e0NPTE9SOiIjRkY0MTM2IixTWU1CT0w6Ilx1MjVi YyJ9fX0se31dLDY4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtl LmV4cG9ydHM9e0ZPUk1BVF9MSU5LOiJodHRwczovL2dpdGh1Yi5jb20vZDMv ZDMtMy54LWFwaS1yZWZlcmVuY2UvYmxvYi9tYXN0ZXIvRm9ybWF0dGluZy5t ZCNkM19mb3JtYXQiLERBVEVfRk9STUFUX0xJTks6Imh0dHBzOi8vZ2l0aHVi LmNvbS9kMy9kMy0zLngtYXBpLXJlZmVyZW5jZS9ibG9iL21hc3Rlci9UaW1l LUZvcm1hdHRpbmcubWQjZm9ybWF0In19LHt9XSw2ODk6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtDT01QQVJJU09OX09QUzpb Ij0iLCIhPSIsIjwiLCI+PSIsIj4iLCI8PSJdLENPTVBBUklTT05fT1BTMjpb Ij0iLCI8IiwiPj0iLCI+IiwiPD0iXSxJTlRFUlZBTF9PUFM6WyJbXSIsIigp IiwiWykiLCIoXSIsIl1bIiwiKSgiLCJdKCIsIilbIl0sU0VUX09QUzpbInt9 IiwifXsiXSxDT05TVFJBSU5UX1JFRFVDVElPTjp7Ij0iOiI9IiwiPCI6Ijwi LCI8PSI6IjwiLCI+IjoiPiIsIj49IjoiPiIsIltdIjoiW10iLCIoKSI6Iltd IiwiWykiOiJbXSIsIihdIjoiW10iLCJdWyI6Il1bIiwiKSgiOiJdWyIsIl0o IjoiXVsiLCIpWyI6Il1bIn19fSx7fV0sNjkwOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17c29saWQ6W1tdLDBdLGRvdDpbWy41 LDFdLDIwMF0sZGFzaDpbWy41LDFdLDUwXSxsb25nZGFzaDpbWy41LDFdLDEw XSxkYXNoZG90OltbLjUsLjYyNSwuODc1LDFdLDUwXSxsb25nZGFzaGRvdDpb Wy41LC43LC44LDFdLDEwXX19LHt9XSw2OTE6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7ZS5leHBvcnRzPXtjaXJjbGU6Ilx1MjVjZiIsImNpcmNs ZS1vcGVuIjoiXHUyNWNiIixzcXVhcmU6Ilx1MjVhMCIsInNxdWFyZS1vcGVu IjoiXHUyNWExIixkaWFtb25kOiJcdTI1YzYiLCJkaWFtb25kLW9wZW4iOiJc dTI1YzciLGNyb3NzOiIrIix4OiJcdTI3NGMifX0se31dLDY5MjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e1NIT1dfUExBQ0VI T0xERVI6MTAwLEhJREVfUExBQ0VIT0xERVI6MWUzLERFU0VMRUNURElNOi4y fX0se31dLDY5MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9e0JBRE5VTTp2b2lkIDAsRlBfU0FGRTpOdW1iZXIuTUFYX1ZBTFVF LzFlNCxPTkVBVkdZRUFSOjMxNTU3NmU1LE9ORUFWR01PTlRIOjI2Mjk4ZTUs T05FREFZOjg2NGU1LE9ORUhPVVI6MzZlNSxPTkVNSU46NmU0LE9ORVNFQzox ZTMsRVBPQ0hKRDoyNDQwNTg3LjUsQUxNT1NUX0VRVUFMOjEtMWUtNixMT0df Q0xJUDoxMCxNSU5VU19TSUdOOiJcdTIyMTIifX0se31dLDY5NDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLnhtbG5zPSJodHRwOi8vd3d3Lncz Lm9yZy8yMDAwL3htbG5zLyIsci5zdmc9Imh0dHA6Ly93d3cudzMub3JnLzIw MDAvc3ZnIixyLnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r IixyLnN2Z0F0dHJzPXt4bWxuczpyLnN2ZywieG1sbnM6eGxpbmsiOnIueGxp bmt9fSx7fV0sNjk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Iu dmVyc2lvbj0iMS41Mi4yIix0KCJlczYtcHJvbWlzZSIpLnBvbHlmaWxsKCks dCgiLi4vYnVpbGQvcGxvdGNzcyIpLHQoIi4vZm9udHMvbWF0aGpheF9jb25m aWciKSgpO2Zvcih2YXIgbj10KCIuL3JlZ2lzdHJ5IiksYT1yLnJlZ2lzdGVy PW4ucmVnaXN0ZXIsaT10KCIuL3Bsb3RfYXBpIiksbz1PYmplY3Qua2V5cyhp KSxzPTA7czxvLmxlbmd0aDtzKyspe3ZhciBsPW9bc107Il8iIT09bC5jaGFy QXQoMCkmJihyW2xdPWlbbF0pLGEoe21vZHVsZVR5cGU6ImFwaU1ldGhvZCIs bmFtZTpsLGZuOmlbbF19KX1hKHQoIi4vdHJhY2VzL3NjYXR0ZXIiKSksYShb dCgiLi9jb21wb25lbnRzL2Z4IiksdCgiLi9jb21wb25lbnRzL2xlZ2VuZCIp LHQoIi4vY29tcG9uZW50cy9hbm5vdGF0aW9ucyIpLHQoIi4vY29tcG9uZW50 cy9hbm5vdGF0aW9uczNkIiksdCgiLi9jb21wb25lbnRzL3NoYXBlcyIpLHQo Ii4vY29tcG9uZW50cy9pbWFnZXMiKSx0KCIuL2NvbXBvbmVudHMvdXBkYXRl bWVudXMiKSx0KCIuL2NvbXBvbmVudHMvc2xpZGVycyIpLHQoIi4vY29tcG9u ZW50cy9yYW5nZXNsaWRlciIpLHQoIi4vY29tcG9uZW50cy9yYW5nZXNlbGVj dG9yIiksdCgiLi9jb21wb25lbnRzL2dyaWQiKSx0KCIuL2NvbXBvbmVudHMv ZXJyb3JiYXJzIiksdCgiLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSx0KCIu L2NvbXBvbmVudHMvY29sb3JiYXIiKV0pLGEoW3QoIi4vbG9jYWxlLWVuIiks dCgiLi9sb2NhbGUtZW4tdXMiKV0pLHdpbmRvdy5QbG90bHlMb2NhbGVzJiZB cnJheS5pc0FycmF5KHdpbmRvdy5QbG90bHlMb2NhbGVzKSYmKGEod2luZG93 LlBsb3RseUxvY2FsZXMpLGRlbGV0ZSB3aW5kb3cuUGxvdGx5TG9jYWxlcyks ci5JY29ucz10KCIuL2ZvbnRzL3Bsb3RpY29uIiksci5QbG90cz10KCIuL3Bs b3RzL3Bsb3RzIiksci5GeD10KCIuL2NvbXBvbmVudHMvZngiKSxyLlNuYXBz aG90PXQoIi4vc25hcHNob3QiKSxyLlBsb3RTY2hlbWE9dCgiLi9wbG90X2Fw aS9wbG90X3NjaGVtYSIpLHIuUXVldWU9dCgiLi9saWIvcXVldWUiKSxyLmQz PXQoImQzIil9LHsiLi4vYnVpbGQvcGxvdGNzcyI6MSwiLi9jb21wb25lbnRz L2Fubm90YXRpb25zIjo1ODMsIi4vY29tcG9uZW50cy9hbm5vdGF0aW9uczNk Ijo1ODgsIi4vY29tcG9uZW50cy9jb2xvcmJhciI6NTk4LCIuL2NvbXBvbmVu dHMvY29sb3JzY2FsZSI6NjA0LCIuL2NvbXBvbmVudHMvZXJyb3JiYXJzIjo2 MTksIi4vY29tcG9uZW50cy9meCI6NjMwLCIuL2NvbXBvbmVudHMvZ3JpZCI6 NjM0LCIuL2NvbXBvbmVudHMvaW1hZ2VzIjo2MzksIi4vY29tcG9uZW50cy9s ZWdlbmQiOjY0NywiLi9jb21wb25lbnRzL3Jhbmdlc2VsZWN0b3IiOjY1OCwi Li9jb21wb25lbnRzL3Jhbmdlc2xpZGVyIjo2NjUsIi4vY29tcG9uZW50cy9z aGFwZXMiOjY3MywiLi9jb21wb25lbnRzL3NsaWRlcnMiOjY3OCwiLi9jb21w b25lbnRzL3VwZGF0ZW1lbnVzIjo2ODQsIi4vZm9udHMvbWF0aGpheF9jb25m aWciOjY5NiwiLi9mb250cy9wbG90aWNvbiI6Njk3LCIuL2xpYi9xdWV1ZSI6 NzMyLCIuL2xvY2FsZS1lbiI6NzQ2LCIuL2xvY2FsZS1lbi11cyI6NzQ1LCIu L3Bsb3RfYXBpIjo3NTAsIi4vcGxvdF9hcGkvcGxvdF9zY2hlbWEiOjc1NCwi Li9wbG90cy9wbG90cyI6ODI2LCIuL3JlZ2lzdHJ5Ijo4NDYsIi4vc25hcHNo b3QiOjg1MSwiLi90cmFjZXMvc2NhdHRlciI6MTEzMixkMzoxNjUsImVzNi1w cm9taXNlIjoyMjF9XSw2OTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBN YXRoSmF4JiYoImxvY2FsIiE9PSh3aW5kb3cuUGxvdGx5Q29uZmlnfHx7fSku TWF0aEpheENvbmZpZyYmKE1hdGhKYXguSHViLkNvbmZpZyh7bWVzc2FnZVN0 eWxlOiJub25lIixza2lwU3RhcnR1cFR5cGVzZXQ6ITAsZGlzcGxheUFsaWdu OiJsZWZ0Iix0ZXgyamF4OntpbmxpbmVNYXRoOltbIiQiLCIkIl0sWyJcXCgi LCJcXCkiXV19fSksTWF0aEpheC5IdWIuQ29uZmlndXJlZCgpKSl9fSx7fV0s Njk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17 dW5kbzp7d2lkdGg6ODU3LjEsaGVpZ2h0OjFlMyxwYXRoOiJtODU3IDM1MHEw LTg3LTM0LTE2NnQtOTEtMTM3LTEzNy05Mi0xNjYtMzRxLTk2IDAtMTgzIDQx dC0xNDcgMTE0cS00IDYtNCAxM3Q1IDExbDc2IDc3cTYgNSAxNCA1IDktMSAx My03IDQxLTUzIDEwMC04MnQxMjYtMjlxNTggMCAxMTAgMjN0OTIgNjEgNjEg OTEgMjIgMTExLTIyIDExMS02MSA5MS05MiA2MS0xMTAgMjNxLTU1IDAtMTA1 LTIwdC05MC01N2w3Ny03N3ExNy0xNiA4LTM4LTEwLTIzLTMzLTIzaC0yNTBx LTE1IDAtMjUgMTF0LTExIDI1djI1MHEwIDI0IDIyIDMzIDIyIDEwIDM5LThs NzItNzJxNjAgNTcgMTM3IDg4dDE1OSAzMXE4NyAwIDE2Ni0zNHQxMzctOTIg OTEtMTM3IDM0LTE2NnoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAg ODUwKSJ9LGhvbWU6e3dpZHRoOjkyOC42LGhlaWdodDoxZTMscGF0aDoibTc4 NiAyOTZ2LTI2N3EwLTE1LTExLTI2dC0yNS0xMGgtMjE0djIxNGgtMTQzdi0y MTRoLTIxNHEtMTUgMC0yNSAxMHQtMTEgMjZ2MjY3cTAgMSAwIDJ0MCAybDMy MSAyNjQgMzIxLTI2NHExLTEgMS00eiBtMTI0IDM5bC0zNC00MXEtNS01LTEy LTZoLTJxLTcgMC0xMiAzbC0zODYgMzIyLTM4Ni0zMjJxLTctNC0xMy00LTcg Mi0xMiA3bC0zNSA0MXEtNCA1LTMgMTN0NiAxMmw0MDEgMzM0cTE4IDE1IDQy IDE1dDQzLTE1bDEzNi0xMTR2MTA5cTAgOCA1IDEzdDEzIDVoMTA3cTggMCAx My01dDUtMTN2LTIyN2wxMjItMTAycTUtNSA2LTEydC00LTEzeiIsdHJhbnNm b3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0sImNhbWVyYS1yZXRybyI6 e3dpZHRoOjFlMyxoZWlnaHQ6MWUzLHBhdGg6Im01MTggMzg2cTAgOC01IDEz dC0xMyA1cS0zNyAwLTYzLTI3dC0yNi02M3EwLTggNS0xM3QxMy01IDEyIDUg NSAxM3EwIDIzIDE2IDM4dDM4IDE2cTggMCAxMyA1dDUgMTN6IG0xMjUtNzNx MC01OS00Mi0xMDF0LTEwMS00Mi0xMDEgNDItNDIgMTAxIDQyIDEwMSAxMDEg NDIgMTAxLTQyIDQyLTEwMXogbS01NzItMzIwaDg1OHY3MWgtODU4di03MXog bTY0MyAzMjBxMCA4OS02MiAxNTJ0LTE1MiA2Mi0xNTEtNjItNjMtMTUyIDYz LTE1MSAxNTEtNjMgMTUyIDYzIDYyIDE1MXogbS01NzEgMzU4aDIxNHY3Mmgt MjE0di03MnogbS03Mi0xMDdoODU4djE0M2gtNDYybC0zNi03MWgtMzYwdi03 MnogbTkyOSAxNDN2LTcxNHEwLTMwLTIxLTUxdC01MC0yMWgtODU4cS0yOSAw LTUwIDIxdC0yMSA1MXY3MTRxMCAzMCAyMSA1MXQ1MCAyMWg4NThxMjkgMCA1 MC0yMXQyMS01MXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUw KSJ9LHpvb21ib3g6e3dpZHRoOjFlMyxoZWlnaHQ6MWUzLHBhdGg6Im0xMDAw LTI1bC0yNTAgMjUxYzQwIDYzIDYzIDEzOCA2MyAyMTggMCAyMjQtMTgyIDQw Ni00MDcgNDA2LTIyNCAwLTQwNi0xODItNDA2LTQwNnMxODMtNDA2IDQwNy00 MDZjODAgMCAxNTUgMjIgMjE4IDYybDI1MC0yNTAgMTI1IDEyNXogbS04MTIg MjUwbDAgNDM4IDQzNyAwIDAtNDM4LTQzNyAweiBtNjIgMzc1bDMxMyAwIDAt MzEyLTMxMyAwIDAgMzEyeiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEg MCA4NTApIn0scGFuOnt3aWR0aDoxZTMsaGVpZ2h0OjFlMyxwYXRoOiJtMTAw MCAzNTBsLTE4NyAxODggMC0xMjUtMjUwIDAgMCAyNTAgMTI1IDAtMTg4IDE4 Ny0xODctMTg3IDEyNSAwIDAtMjUwLTI1MCAwIDAgMTI1LTE4OC0xODggMTg2 LTE4NyAwIDEyNSAyNTIgMCAwLTI1MC0xMjUgMCAxODctMTg4IDE4OCAxODgt MTI1IDAgMCAyNTAgMjUwIDAgMC0xMjYgMTg3IDE4OHoiLHRyYW5zZm9ybToi bWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHpvb21fcGx1czp7d2lkdGg6ODc1 LGhlaWdodDoxZTMscGF0aDoibTEgNzg3bDAtODc1IDg3NSAwIDAgODc1LTg3 NSAweiBtNjg3LTUwMGwtMTg3IDAgMC0xODctMTI1IDAgMCAxODctMTg4IDAg MCAxMjUgMTg4IDAgMCAxODcgMTI1IDAgMC0xODcgMTg3IDAgMC0xMjV6Iix0 cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSx6b29tX21pbnVz Ont3aWR0aDo4NzUsaGVpZ2h0OjFlMyxwYXRoOiJtMCA3ODhsMC04NzYgODc1 IDAgMCA4NzYtODc1IDB6IG02ODgtNTAwbC01MDAgMCAwIDEyNSA1MDAgMCAw LTEyNXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LGF1 dG9zY2FsZTp7d2lkdGg6MWUzLGhlaWdodDoxZTMscGF0aDoibTI1MCA4NTBs LTE4NyAwLTYzIDAgMC02MiAwLTE4OCA2MyAwIDAgMTg4IDE4NyAwIDAgNjJ6 IG02ODggMGwtMTg4IDAgMC02MiAxODggMCAwLTE4OCA2MiAwIDAgMTg4IDAg NjItNjIgMHogbS04NzUtOTM4bDAgMTg4LTYzIDAgMC0xODggMC02MiA2MyAw IDE4NyAwIDAgNjItMTg3IDB6IG04NzUgMTg4bDAtMTg4LTE4OCAwIDAtNjIg MTg4IDAgNjIgMCAwIDYyIDAgMTg4LTYyIDB6IG0tMTI1IDE4OGwtMSAwLTkz LTk0LTE1NiAxNTYgMTU2IDE1NiA5Mi05MyAyIDAgMCAyNTAtMjUwIDAgMC0y IDkzLTkyLTE1Ni0xNTYtMTU2IDE1NiA5NCA5MiAwIDItMjUwIDAgMC0yNTAg MCAwIDkzIDkzIDE1Ny0xNTYtMTU3LTE1Ni05MyA5NCAwIDAgMC0yNTAgMjUw IDAgMCAwLTk0IDkzIDE1NiAxNTcgMTU2LTE1Ny05My05MyAwIDAgMjUwIDAg MCAyNTB6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSx0 b29sdGlwX2Jhc2ljOnt3aWR0aDoxNTAwLGhlaWdodDoxZTMscGF0aDoibTM3 NSA3MjVsMCAwLTM3NS0zNzUgMzc1LTM3NCAwLTEgMTEyNSAwIDAgNzUwLTEx MjUgMHoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHRv b2x0aXBfY29tcGFyZTp7d2lkdGg6MTEyNSxoZWlnaHQ6MWUzLHBhdGg6Im0x ODcgNzg2bDAgMi0xODctMTg4IDE4OC0xODcgMCAwIDkzNyAwIDAgMzczLTkz OCAweiBtMC00OTlsMCAxLTE4Ny0xODggMTg4LTE4OCAwIDAgOTM3IDAgMCAz NzYtOTM4LTF6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCki fSxwbG90bHlsb2dvOnt3aWR0aDoxNTQyLGhlaWdodDoxZTMscGF0aDoibTAt MTBoMTgydi0xNDBoLTE4MnYxNDB6IG0yMjggMTQ2aDE4M3YtMjg2aC0xODN2 Mjg2eiBtMjI1IDcxNGgxODJ2LTEwMDBoLTE4MnYxMDAweiBtMjI1LTI4NWgx ODJ2LTcxNWgtMTgydjcxNXogbTIyNSAxNDJoMTgzdi04NTdoLTE4M3Y4NTd6 IG0yMzEtNDI4aDE4MnYtNDI5aC0xODJ2NDI5eiBtMjI1LTI5MWgxODN2LTEz OGgtMTgzdjEzOHoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUw KSJ9LCJ6LWF4aXMiOnt3aWR0aDoxZTMsaGVpZ2h0OjFlMyxwYXRoOiJtODMz IDVsLTE3IDEwOHY0MWwtMTMwLTY1IDEzMC02NmMwIDAgMCAzOCAwIDM5IDAt MSAzNi0xNCAzOS0yNSA0LTE1LTYtMjItMTYtMzAtMTUtMTItMzktMTYtNTYt MjAtOTAtMjItMTg3LTIzLTI3OS0yMy0yNjEgMC0zNDEgMzQtMzUzIDU5IDMg NjAgMjI4IDExMCAyMjggMTEwLTE0MC04LTM1MS0zNS0zNTEtMTE2IDAtMTIw IDI5My0xNDIgNDc0LTE0MiAxNTUgMCA0NzcgMjIgNDc3IDE0MiAwIDUwLTc0 IDc5LTE2MyA5NnogbS0zNzQgOTRjLTU4LTUtOTktMjEtOTktNDAgMC0yNCA2 NS00MyAxNDQtNDMgNzkgMCAxNDMgMTkgMTQzIDQzIDAgMTktNDIgMzQtOTgg NDB2MjE2aDg3bC0xMzIgMTM1LTEzMy0xMzVoODh2LTIxNnogbTE2NyA1MTVo LTEzNnYxYzE2IDE2IDMxIDM0IDQ2IDUybDg0IDEwOXY1NGgtMjMwdi03MWgx MjR2LTFjLTE2LTE3LTI4LTMyLTQ0LTUxbC04OS0xMTR2LTUxaDI0NXY3Mnoi LHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LCIzZF9yb3Rh dGUiOnt3aWR0aDoxZTMsaGVpZ2h0OjFlMyxwYXRoOiJtOTIyIDY2MGMtNSA0 LTkgNy0xNCAxMS0zNTkgMjYzLTU4MC0zMS01ODAtMzFsLTEwMiAyOCA1OC00 MDBjMCAxIDEgMSAyIDIgMTE4IDEwOCAzNTEgMjQ5IDM1MSAyNDlzLTYyIDI3 LTEwMCA0MmM4OCA4MyAyMjIgMTgzIDM0NyAxMjIgMTYtOCAzMC0xNyA0NC0y Ny0yIDEtNCAyLTYgNHogbTM2LTMyOWMwIDAgNjQgMjI5LTg4IDI5Ni02MiAy Ny0xMjQgMTQtMTc1LTExIDE1Ny03OCAyMjUtMjA4IDI0OS0yNjYgOC0xOSAx MS0zMSAxMS0zMSAyIDUgNiAxNSAxMSAzMi01LTEzLTgtMjAtOC0yMHogbS03 NzUtMjM5YzcwLTMxIDExNy01MCAxOTgtMzItMTIxIDgwLTE5OSAzNDYtMTk5 IDM0NmwtOTYtMTUtNTgtMTJjMCAwIDU1LTIyNiAxNTUtMjg3eiBtNjAzIDEz M2wtMzE3LTEzOWMwIDAgNC00IDE5LTE0IDctNSAyNC0xNSAyNC0xNXMtMTc3 LTE0Ny0zODkgNGMyMzUtMjg3IDUzNi0xMTIgNTM2LTExMmwzMS0yMiAxMDAg Mjk5LTQtMXogbS0yOTgtMTUzYzYtNCAxNC05IDI0LTE1IDAgMC0xNyAxMC0y NCAxNXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LGNh bWVyYTp7d2lkdGg6MWUzLGhlaWdodDoxZTMscGF0aDoibTUwMCA0NTBjLTgz IDAtMTUwLTY3LTE1MC0xNTAgMC04MyA2Ny0xNTAgMTUwLTE1MCA4MyAwIDE1 MCA2NyAxNTAgMTUwIDAgODMtNjcgMTUwLTE1MCAxNTB6IG00MDAgMTUwaC0x MjBjLTE2IDAtMzQgMTMtMzkgMjlsLTMxIDkzYy02IDE1LTIzIDI4LTQwIDI4 aC0zNDBjLTE2IDAtMzQtMTMtMzktMjhsLTMxLTk0Yy02LTE1LTIzLTI4LTQw LTI4aC0xMjBjLTU1IDAtMTAwLTQ1LTEwMC0xMDB2LTQ1MGMwLTU1IDQ1LTEw MCAxMDAtMTAwaDgwMGM1NSAwIDEwMCA0NSAxMDAgMTAwdjQ1MGMwIDU1LTQ1 IDEwMC0xMDAgMTAweiBtLTQwMC01NTBjLTEzOCAwLTI1MCAxMTItMjUwIDI1 MCAwIDEzOCAxMTIgMjUwIDI1MCAyNTAgMTM4IDAgMjUwLTExMiAyNTAtMjUw IDAtMTM4LTExMi0yNTAtMjUwLTI1MHogbTM2NSAzODBjLTE5IDAtMzUgMTYt MzUgMzUgMCAxOSAxNiAzNSAzNSAzNSAxOSAwIDM1LTE2IDM1LTM1IDAtMTkt MTYtMzUtMzUtMzV6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1 MCkifSxtb3ZpZTp7d2lkdGg6MWUzLGhlaWdodDoxZTMscGF0aDoibTkzOCA0 MTNsLTE4OC0xMjVjMCAzNy0xNyA3MS00NCA5NCA2NCAzOCAxMDcgMTA3IDEw NyAxODcgMCAxMjEtOTggMjE5LTIxOSAyMTktMTIxIDAtMjE5LTk4LTIxOS0y MTkgMC02MSAyNS0xMTcgNjYtMTU2aC0xMTVjMzAgMzMgNDkgNzYgNDkgMTI1 IDAgMTAzLTg0IDE4Ny0xODcgMTg3cy0xODgtODQtMTg4LTE4N2MwLTU3IDI2 LTEwNyA2NS0xNDEtMzgtMjItNjUtNjItNjUtMTA5di0yNTBjMC03MCA1Ni0x MjYgMTI1LTEyNmg1MDBjNjkgMCAxMjUgNTYgMTI1IDEyNmwxODgtMTI2YzM0 IDAgNjIgMjggNjIgNjN2Mzc1YzAgMzUtMjggNjMtNjIgNjN6IG0tNzUwIDBj LTY5IDAtMTI1IDU2LTEyNSAxMjVzNTYgMTI1IDEyNSAxMjUgMTI1LTU2IDEy NS0xMjUtNTYtMTI1LTEyNS0xMjV6IG00MDYtMWMtODcgMC0xNTcgNzAtMTU3 IDE1NyAwIDg2IDcwIDE1NiAxNTcgMTU2czE1Ni03MCAxNTYtMTU2LTcwLTE1 Ny0xNTYtMTU3eiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTAp In0scXVlc3Rpb246e3dpZHRoOjg1Ny4xLGhlaWdodDoxZTMscGF0aDoibTUw MCA4MnYxMDdxMCA4LTUgMTN0LTEzIDVoLTEwN3EtOCAwLTEzLTV0LTUtMTN2 LTEwN3EwLTggNS0xM3QxMy01aDEwN3E4IDAgMTMgNXQ1IDEzeiBtMTQzIDM3 NXEwIDQ5LTMxIDkxdC03NyA2NS05NSAyM3EtMTM2IDAtMjA3LTExOS05LTE0 IDQtMjRsNzQtNTVxNC00IDEwLTQgOSAwIDE0IDcgMzAgMzggNDggNTEgMTkg MTQgNDggMTQgMjcgMCA0OC0xNXQyMS0zM3EwLTIxLTExLTM0dC0zOC0yNXEt MzUtMTYtNjUtNDh0LTI5LTcwdi0yMHEwLTggNS0xM3QxMy01aDEwN3E4IDAg MTMgNXQ1IDEzcTAgMTAgMTIgMjd0MzAgMjhxMTggMTAgMjggMTZ0MjUgMTkg MjUgMjcgMTYgMzQgNyA0NXogbTIxNC0xMDdxMC0xMTctNTctMjE1dC0xNTYt MTU2LTIxNS01OC0yMTYgNTgtMTU1IDE1Ni01OCAyMTUgNTggMjE1IDE1NSAx NTYgMjE2IDU4IDIxNS01OCAxNTYtMTU2IDU3LTIxNXoiLHRyYW5zZm9ybToi bWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LGRpc2s6e3dpZHRoOjg1Ny4xLGhl aWdodDoxZTMscGF0aDoibTIxNC03aDQyOXYyMTRoLTQyOXYtMjE0eiBtNTAw IDBoNzJ2NTAwcTAgOC02IDIxdC0xMSAyMGwtMTU3IDE1NnEtNSA2LTE5IDEy dC0yMiA1di0yMzJxMC0yMi0xNS0zOHQtMzgtMTZoLTMyMnEtMjIgMC0zNyAx NnQtMTYgMzh2MjMyaC03MnYtNzE0aDcydjIzMnEwIDIyIDE2IDM4dDM3IDE2 aDQ2NXEyMiAwIDM4LTE2dDE1LTM4di0yMzJ6IG0tMjE0IDUxOHYxNzhxMCA4 LTUgMTN0LTEzIDVoLTEwN3EtNyAwLTEzLTV0LTUtMTN2LTE3OHEwLTggNS0x M3QxMy01aDEwN3E3IDAgMTMgNXQ1IDEzeiBtMzU3LTE4di01MThxMC0yMi0x NS0zOHQtMzgtMTZoLTc1MHEtMjMgMC0zOCAxNnQtMTYgMzh2NzUwcTAgMjIg MTYgMzh0MzggMTZoNTE3cTIzIDAgNTAtMTJ0NDItMjZsMTU2LTE1N3ExNi0x NSAyNy00MnQxMS00OXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAg ODUwKSJ9LGxhc3NvOnt3aWR0aDoxMDMxLGhlaWdodDoxZTMscGF0aDoibTEw MTggNTM4Yy0zNiAyMDctMjkwIDMzNi01NjggMjg2LTI3Ny00OC00NzMtMjU2 LTQzNi00NjMgMTAtNTcgMzYtMTA4IDc2LTE1MS0xMy02NiAxMS0xMzcgNjgt MTgzIDM0LTI4IDc1LTQxIDExNC00MmwtNTUtNzAgMCAwYy0yLTEtMy0yLTQt My0xMC0xNC04LTM0IDUtNDUgMTQtMTEgMzQtOCA0NSA0IDEgMSAyIDMgMiA1 bDAgMCAxMTMgMTQwYzE2IDExIDMxIDI0IDQ1IDQwIDQgMyA2IDcgOCAxMSA0 OC0zIDEwMCAwIDE1MSA5IDI3OCA0OCA0NzMgMjU1IDQzNiA0NjJ6IG0tNjI0 LTM3OWMtODAgMTQtMTQ5IDQ4LTE5NyA5NiA0MiA0MiAxMDkgNDcgMTU2IDkg MzMtMjYgNDctNjYgNDEtMTA1eiBtLTE4Ny03NGMtMTkgMTYtMzMgMzctMzkg NjAgNTAtMzIgMTA5LTU1IDE3NC02OC00Mi0yNS05NS0yNC0xMzUgOHogbTM2 MCA3NWMtMzQtNy02OS05LTEwMi04IDggNjItMTYgMTI4LTY4IDE3MC03MyA1 OS0xNzUgNTQtMjQ0LTUtOSAyMC0xNiA0MC0yMCA2MS0yOCAxNTkgMTIxIDMx NyAzMzMgMzU0czQwNy02MCA0MzQtMjE3YzI4LTE1OS0xMjEtMzE4LTMzMy0z NTV6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSxzZWxl Y3Rib3g6e3dpZHRoOjFlMyxoZWlnaHQ6MWUzLHBhdGg6Im0wIDg1MGwwLTE0 MyAxNDMgMCAwIDE0My0xNDMgMHogbTI4NiAwbDAtMTQzIDE0MyAwIDAgMTQz LTE0MyAweiBtMjg1IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0yODYg MGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbS04NTctMjg2bDAtMTQzIDE0 MyAwIDAgMTQzLTE0MyAweiBtODU3IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQz IDB6IG0tODU3LTI4NWwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTg1NyAw bDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtLTg1Ny0yODZsMC0xNDMgMTQz IDAgMCAxNDMtMTQzIDB6IG0yODYgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMg MHogbTI4NSAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtMjg2IDBsMC0x NDMgMTQzIDAgMCAxNDMtMTQzIDB6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAg MCAtMSAwIDg1MCkifSxzcGlrZWxpbmU6e3dpZHRoOjFlMyxoZWlnaHQ6MWUz LHBhdGg6Ik01MTIgNDA5YzAtNTctNDYtMTA0LTEwMy0xMDQtNTcgMC0xMDQg NDctMTA0IDEwNCAwIDU3IDQ3IDEwMyAxMDQgMTAzIDU3IDAgMTAzLTQ2IDEw My0xMDN6IG0tMzI3LTM5bDkyIDAgMCA5Mi05MiAweiBtLTE4NSAwbDkyIDAg MCA5Mi05MiAweiBtMzcwLTE4Nmw5MiAwIDAgOTMtOTIgMHogbTAtMTg0bDky IDAgMCA5Mi05MiAweiIsdHJhbnNmb3JtOiJtYXRyaXgoMS41IDAgMCAtMS41 IDAgODUwKSJ9LHBlbmNpbDp7d2lkdGg6MTc5MixoZWlnaHQ6MTc5MixwYXRo OiJNNDkxIDE1MzZsOTEtOTEtMjM1LTIzNS05MSA5MXYxMDdoMTI4djEyOGgx MDd6bTUyMy05MjhxMC0yMi0yMi0yMi0xMCAwLTE3IDdsLTU0MiA1NDJxLTcg Ny03IDE3IDAgMjIgMjIgMjIgMTAgMCAxNy03bDU0Mi01NDJxNy03IDctMTd6 bS01NC0xOTJsNDE2IDQxNi04MzIgODMyaC00MTZ2LTQxNnptNjgzIDk2cTAg NTMtMzcgOTBsLTE2NiAxNjYtNDE2LTQxNiAxNjYtMTY1cTM2LTM4IDkwLTM4 IDUzIDAgOTEgMzhsMjM1IDIzNHEzNyAzOSAzNyA5MXoiLHRyYW5zZm9ybToi bWF0cml4KDEgMCAwIDEgMCAxKSJ9LG5ld3Bsb3RseWxvZ286e25hbWU6Im5l d3Bsb3RseWxvZ28iLHN2ZzoiPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5v cmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMzIgMTMyJz48ZGVmcz48c3R5 bGU+LmNscy0xIHtmaWxsOiAjMTE5ZGZmO30gLmNscy0yIHtmaWxsOiAjMjVm ZWZkO30gLmNscy0zIHtmaWxsOiAjZmZmO308L3N0eWxlPjwvZGVmcz48dGl0 bGU+cGxvdGx5LWxvZ29tYXJrPC90aXRsZT48ZyBpZD0nc3ltYm9sJz48cmVj dCBjbGFzcz0nY2xzLTEnIHdpZHRoPScxMzInIGhlaWdodD0nMTMyJyByeD0n Nicgcnk9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicgY3g9Jzc4JyBjeT0n NTQnIHI9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicgY3g9JzEwMicgY3k9 JzMwJyByPSc2Jy8+PGNpcmNsZSBjbGFzcz0nY2xzLTInIGN4PSc3OCcgY3k9 JzMwJyByPSc2Jy8+PGNpcmNsZSBjbGFzcz0nY2xzLTInIGN4PSc1NCcgY3k9 JzMwJyByPSc2Jy8+PGNpcmNsZSBjbGFzcz0nY2xzLTInIGN4PSczMCcgY3k9 JzMwJyByPSc2Jy8+PGNpcmNsZSBjbGFzcz0nY2xzLTInIGN4PSczMCcgY3k9 JzU0JyByPSc2Jy8+PHBhdGggY2xhc3M9J2Nscy0zJyBkPSdNMzAsNzJhNiw2 LDAsMCwwLTYsNnYyNGE2LDYsMCwwLDAsMTIsMFY3OEE2LDYsMCwwLDAsMzAs NzJaJy8+PHBhdGggY2xhc3M9J2Nscy0zJyBkPSdNNzgsNzJhNiw2LDAsMCww LTYsNnYyNGE2LDYsMCwwLDAsMTIsMFY3OEE2LDYsMCwwLDAsNzgsNzJaJy8+ PHBhdGggY2xhc3M9J2Nscy0zJyBkPSdNNTQsNDhhNiw2LDAsMCwwLTYsNnY0 OGE2LDYsMCwwLDAsMTIsMFY1NEE2LDYsMCwwLDAsNTQsNDhaJy8+PHBhdGgg Y2xhc3M9J2Nscy0zJyBkPSdNMTAyLDQ4YTYsNiwwLDAsMC02LDZ2NDhhNiw2 LDAsMCwwLDEyLDBWNTRBNiw2LDAsMCwwLDEwMiw0OFonLz48L2c+PC9zdmc+ In19fSx7fV0sNjk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Iu aXNMZWZ0QW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiJsZWZ0Ij09PXQueGFu Y2hvcnx8ImF1dG8iPT09dC54YW5jaG9yJiZ0Lng8PTEvM30sci5pc0NlbnRl ckFuY2hvcj1mdW5jdGlvbih0KXtyZXR1cm4iY2VudGVyIj09PXQueGFuY2hv cnx8ImF1dG8iPT09dC54YW5jaG9yJiZ0Lng+MS8zJiZ0Lng8Mi8zfSxyLmlz UmlnaHRBbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuInJpZ2h0Ij09PXQueGFu Y2hvcnx8ImF1dG8iPT09dC54YW5jaG9yJiZ0Lng+PTIvM30sci5pc1RvcEFu Y2hvcj1mdW5jdGlvbih0KXtyZXR1cm4idG9wIj09PXQueWFuY2hvcnx8ImF1 dG8iPT09dC55YW5jaG9yJiZ0Lnk+PTIvM30sci5pc01pZGRsZUFuY2hvcj1m dW5jdGlvbih0KXtyZXR1cm4ibWlkZGxlIj09PXQueWFuY2hvcnx8ImF1dG8i PT09dC55YW5jaG9yJiZ0Lnk+MS8zJiZ0Lnk8Mi8zfSxyLmlzQm90dG9tQW5j aG9yPWZ1bmN0aW9uKHQpe3JldHVybiJib3R0b20iPT09dC55YW5jaG9yfHwi YXV0byI9PT10LnlhbmNob3ImJnQueTw9MS8zfX0se31dLDY5OTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL21vZCIpLGE9bi5t b2QsaT1uLm1vZEhhbGYsbz1NYXRoLlBJLHM9MipvO2Z1bmN0aW9uIGwodCl7 cmV0dXJuIE1hdGguYWJzKHRbMV0tdFswXSk+cy0xZS0xNH1mdW5jdGlvbiBj KHQsZSl7cmV0dXJuIGkoZS10LHMpfWZ1bmN0aW9uIHUodCxlKXtpZihsKGUp KXJldHVybiEwO3ZhciByLG47ZVswXTxlWzFdPyhyPWVbMF0sbj1lWzFdKToo cj1lWzFdLG49ZVswXSksKHI9YShyLHMpKT4obj1hKG4scykpJiYobis9cyk7 dmFyIGk9YSh0LHMpLG89aStzO3JldHVybiBpPj1yJiZpPD1ufHxvPj1yJiZv PD1ufWZ1bmN0aW9uIGgodCxlLHIsbixhLGksYyl7YT1hfHwwLGk9aXx8MDt2 YXIgdSxoLGYscCxkLGc9bChbcixuXSk7ZnVuY3Rpb24gdih0LGUpe3JldHVy blt0Kk1hdGguY29zKGUpK2EsaS10Kk1hdGguc2luKGUpXX1nPyh1PTAsaD1v LGY9cyk6cjxuPyh1PXIsZj1uKToodT1uLGY9ciksdDxlPyhwPXQsZD1lKToo cD1lLGQ9dCk7dmFyIG0seT1NYXRoLmFicyhmLXUpPD1vPzA6MTtmdW5jdGlv biB4KHQsZSxyKXtyZXR1cm4iQSIrW3QsdF0rIiAiK1swLHkscl0rIiAiK3Yo dCxlKX1yZXR1cm4gZz9tPW51bGw9PT1wPyJNIit2KGQsdSkreChkLGgsMCkr eChkLGYsMCkrIloiOiJNIit2KHAsdSkreChwLGgsMCkreChwLGYsMCkrIlpN Iit2KGQsdSkreChkLGgsMSkreChkLGYsMSkrIloiOm51bGw9PT1wPyhtPSJN Iit2KGQsdSkreChkLGYsMCksYyYmKG0rPSJMMCwwWiIpKTptPSJNIit2KHAs dSkrIkwiK3YoZCx1KSt4KGQsZiwwKSsiTCIrdihwLGYpK3gocCx1LDEpKyJa IixtfWUuZXhwb3J0cz17ZGVnMnJhZDpmdW5jdGlvbih0KXtyZXR1cm4gdC8x ODAqb30scmFkMmRlZzpmdW5jdGlvbih0KXtyZXR1cm4gdC9vKjE4MH0sYW5n bGVEZWx0YTpjLGFuZ2xlRGlzdDpmdW5jdGlvbih0LGUpe3JldHVybiBNYXRo LmFicyhjKHQsZSkpfSxpc0Z1bGxDaXJjbGU6bCxpc0FuZ2xlSW5zaWRlU2Vj dG9yOnUsaXNQdEluc2lkZVNlY3RvcjpmdW5jdGlvbih0LGUscixuKXtyZXR1 cm4hIXUoZSxuKSYmKHJbMF08clsxXT8oYT1yWzBdLGk9clsxXSk6KGE9clsx XSxpPXJbMF0pLHQ+PWEmJnQ8PWkpO3ZhciBhLGl9LHBhdGhBcmM6ZnVuY3Rp b24odCxlLHIsbixhKXtyZXR1cm4gaChudWxsLHQsZSxyLG4sYSwwKX0scGF0 aFNlY3RvcjpmdW5jdGlvbih0LGUscixuLGEpe3JldHVybiBoKG51bGwsdCxl LHIsbixhLDEpfSxwYXRoQW5udWx1czpmdW5jdGlvbih0LGUscixuLGEsaSl7 cmV0dXJuIGgodCxlLHIsbixhLGksMSl9fX0seyIuL21vZCI6NzI0fV0sNzAw OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPUFycmF5Lmlz QXJyYXksYT0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJh eUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXI6e2lzVmlldzpmdW5jdGlvbigp e3JldHVybiExfX0saT0idW5kZWZpbmVkIj09dHlwZW9mIERhdGFWaWV3P2Z1 bmN0aW9uKCl7fTpEYXRhVmlldztmdW5jdGlvbiBvKHQpe3JldHVybiBhLmlz Vmlldyh0KSYmISh0IGluc3RhbmNlb2YgaSl9ZnVuY3Rpb24gcyh0KXtyZXR1 cm4gbih0KXx8byh0KX1mdW5jdGlvbiBsKHQsZSxyKXtpZihzKHQpKXtpZihz KHRbMF0pKXtmb3IodmFyIG49cixhPTA7YTx0Lmxlbmd0aDthKyspbj1lKG4s dFthXS5sZW5ndGgpO3JldHVybiBufXJldHVybiB0Lmxlbmd0aH1yZXR1cm4g MH1yLmlzVHlwZWRBcnJheT1vLHIuaXNBcnJheU9yVHlwZWRBcnJheT1zLHIu aXNBcnJheTFEPWZ1bmN0aW9uKHQpe3JldHVybiFzKHRbMF0pfSxyLmVuc3Vy ZUFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCl8fCh0PVtdKSx0Lmxl bmd0aD1lLHR9LHIuY29uY2F0PWZ1bmN0aW9uKCl7dmFyIHQsZSxyLGEsaSxv LHMsbCxjPVtdLHU9ITAsaD0wO2ZvcihyPTA7cjxhcmd1bWVudHMubGVuZ3Ro O3IrKykobz0oYT1hcmd1bWVudHNbcl0pLmxlbmd0aCkmJihlP2MucHVzaChh KTooZT1hLGk9byksbihhKT90PSExOih1PSExLGg/dCE9PWEuY29uc3RydWN0 b3ImJih0PSExKTp0PWEuY29uc3RydWN0b3IpLGgrPW8pO2lmKCFoKXJldHVy bltdO2lmKCFjLmxlbmd0aClyZXR1cm4gZTtpZih1KXJldHVybiBlLmNvbmNh dC5hcHBseShlLGMpO2lmKHQpe2Zvcigocz1uZXcgdChoKSkuc2V0KGUpLHI9 MDtyPGMubGVuZ3RoO3IrKylhPWNbcl0scy5zZXQoYSxpKSxpKz1hLmxlbmd0 aDtyZXR1cm4gc31mb3Iocz1uZXcgQXJyYXkoaCksbD0wO2w8ZS5sZW5ndGg7 bCsrKXNbbF09ZVtsXTtmb3Iocj0wO3I8Yy5sZW5ndGg7cisrKXtmb3IoYT1j W3JdLGw9MDtsPGEubGVuZ3RoO2wrKylzW2krbF09YVtsXTtpKz1sfXJldHVy biBzfSxyLm1heFJvd0xlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gbCh0LE1h dGgubWF4LDApfSxyLm1pblJvd0xlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4g bCh0LE1hdGgubWluLDEvMCl9fSx7fV0sNzAxOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIu Li9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLGk9L15bJyIlLCQjXHMn XSt8WywgXXxbJyIlLCQjXHMnXSskL2c7ZS5leHBvcnRzPWZ1bmN0aW9uKHQp e3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5yZXBsYWNlKGksIiIp KSxuKHQpP051bWJlcih0KTphfX0seyIuLi9jb25zdGFudHMvbnVtZXJpY2Fs Ijo2OTMsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3MDI6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBl PXQuX2Z1bGxMYXlvdXQ7ZS5fZ2xjYW52YXMmJmUuX2dsY2FudmFzLnNpemUo KSYmZS5fZ2xjYW52YXMuZWFjaChmdW5jdGlvbih0KXt0LnJlZ2wmJnQucmVn bC5jbGVhcih7Y29sb3I6ITAsZGVwdGg6ITB9KX0pfX0se31dLDcwMzpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7dC5fcmVzcG9uc2l2ZUNoYXJ0SGFuZGxlciYmKHdpbmRvdy5yZW1vdmVF dmVudExpc3RlbmVyKCJyZXNpemUiLHQuX3Jlc3BvbnNpdmVDaGFydEhhbmRs ZXIpLGRlbGV0ZSB0Ll9yZXNwb25zaXZlQ2hhcnRIYW5kbGVyKX19LHt9XSw3 MDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFz dC1pc251bWVyaWMiKSxhPXQoInRpbnljb2xvcjIiKSxpPXQoIi4uL3Bsb3Rz L2F0dHJpYnV0ZXMiKSxvPXQoIi4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9z Y2FsZXMiKSxzPXQoIi4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiKS5ERVNF TEVDVERJTSxsPXQoIi4vbmVzdGVkX3Byb3BlcnR5IiksYz10KCIuL3JlZ2V4 IikuY291bnRlcix1PXQoIi4vbW9kIikubW9kSGFsZixoPXQoIi4vYXJyYXki KS5pc0FycmF5T3JUeXBlZEFycmF5O2Z1bmN0aW9uIGYodCxlKXt2YXIgbj1y LnZhbE9iamVjdE1ldGFbZS52YWxUeXBlXTtpZihlLmFycmF5T2smJmgodCkp cmV0dXJuITA7aWYobi52YWxpZGF0ZUZ1bmN0aW9uKXJldHVybiBuLnZhbGlk YXRlRnVuY3Rpb24odCxlKTt2YXIgYT17fSxpPWEsbz17c2V0OmZ1bmN0aW9u KHQpe2k9dH19O3JldHVybiBuLmNvZXJjZUZ1bmN0aW9uKHQsbyxhLGUpLGkh PT1hfXIudmFsT2JqZWN0TWV0YT17ZGF0YV9hcnJheTp7Y29lcmNlRnVuY3Rp b246ZnVuY3Rpb24odCxlLHIpe2godCk/ZS5zZXQodCk6dm9pZCAwIT09ciYm ZS5zZXQocil9fSxlbnVtZXJhdGVkOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlv bih0LGUscixuKXtuLmNvZXJjZU51bWJlciYmKHQ9K3QpLC0xPT09bi52YWx1 ZXMuaW5kZXhPZih0KT9lLnNldChyKTplLnNldCh0KX0sdmFsaWRhdGVGdW5j dGlvbjpmdW5jdGlvbih0LGUpe2UuY29lcmNlTnVtYmVyJiYodD0rdCk7Zm9y KHZhciByPWUudmFsdWVzLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGE9U3Ry aW5nKHJbbl0pO2lmKCIvIj09PWEuY2hhckF0KDApJiYiLyI9PT1hLmNoYXJB dChhLmxlbmd0aC0xKSl7aWYobmV3IFJlZ0V4cChhLnN1YnN0cigxLGEubGVu Z3RoLTIpKS50ZXN0KHQpKXJldHVybiEwfWVsc2UgaWYodD09PXJbbl0pcmV0 dXJuITB9cmV0dXJuITF9fSxib29sZWFuOntjb2VyY2VGdW5jdGlvbjpmdW5j dGlvbih0LGUscil7ITA9PT10fHwhMT09PXQ/ZS5zZXQodCk6ZS5zZXQocil9 fSxudW1iZXI6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyLGEpeyFu KHQpfHx2b2lkIDAhPT1hLm1pbiYmdDxhLm1pbnx8dm9pZCAwIT09YS5tYXgm JnQ+YS5tYXg/ZS5zZXQocik6ZS5zZXQoK3QpfX0saW50ZWdlcjp7Y29lcmNl RnVuY3Rpb246ZnVuY3Rpb24odCxlLHIsYSl7dCUxfHwhbih0KXx8dm9pZCAw IT09YS5taW4mJnQ8YS5taW58fHZvaWQgMCE9PWEubWF4JiZ0PmEubWF4P2Uu c2V0KHIpOmUuc2V0KCt0KX19LHN0cmluZzp7Y29lcmNlRnVuY3Rpb246ZnVu Y3Rpb24odCxlLHIsbil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXt2YXIgYT0i bnVtYmVyIj09dHlwZW9mIHQ7ITAhPT1uLnN0cmljdCYmYT9lLnNldChTdHJp bmcodCkpOmUuc2V0KHIpfWVsc2Ugbi5ub0JsYW5rJiYhdD9lLnNldChyKTpl LnNldCh0KX19LGNvbG9yOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUs cil7YSh0KS5pc1ZhbGlkKCk/ZS5zZXQodCk6ZS5zZXQocil9fSxjb2xvcmxp c3Q6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyKXtBcnJheS5pc0Fy cmF5KHQpJiZ0Lmxlbmd0aCYmdC5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4g YSh0KS5pc1ZhbGlkKCl9KT9lLnNldCh0KTplLnNldChyKX19LGNvbG9yc2Nh bGU6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyKXtlLnNldChvLmdl dCh0LHIpKX19LGFuZ2xlOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUs cil7ImF1dG8iPT09dD9lLnNldCgiYXV0byIpOm4odCk/ZS5zZXQodSgrdCwz NjApKTplLnNldChyKX19LHN1YnBsb3RpZDp7Y29lcmNlRnVuY3Rpb246ZnVu Y3Rpb24odCxlLHIsbil7dmFyIGE9bi5yZWdleHx8YyhyKTsic3RyaW5nIj09 dHlwZW9mIHQmJmEudGVzdCh0KT9lLnNldCh0KTplLnNldChyKX0sdmFsaWRh dGVGdW5jdGlvbjpmdW5jdGlvbih0LGUpe3ZhciByPWUuZGZsdDtyZXR1cm4g dD09PXJ8fCJzdHJpbmciPT10eXBlb2YgdCYmISFjKHIpLnRlc3QodCl9fSxm bGFnbGlzdDp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIsbil7aWYo InN0cmluZyI9PXR5cGVvZiB0KWlmKC0xPT09KG4uZXh0cmFzfHxbXSkuaW5k ZXhPZih0KSl7Zm9yKHZhciBhPXQuc3BsaXQoIisiKSxpPTA7aTxhLmxlbmd0 aDspe3ZhciBvPWFbaV07LTE9PT1uLmZsYWdzLmluZGV4T2Yobyl8fGEuaW5k ZXhPZihvKTxpP2Euc3BsaWNlKGksMSk6aSsrfWEubGVuZ3RoP2Uuc2V0KGEu am9pbigiKyIpKTplLnNldChyKX1lbHNlIGUuc2V0KHQpO2Vsc2UgZS5zZXQo cil9fSxhbnk6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyKXt2b2lk IDA9PT10P2Uuc2V0KHIpOmUuc2V0KHQpfX0saW5mb19hcnJheTp7Y29lcmNl RnVuY3Rpb246ZnVuY3Rpb24odCxlLG4sYSl7ZnVuY3Rpb24gaSh0LGUsbil7 dmFyIGEsaT17c2V0OmZ1bmN0aW9uKHQpe2E9dH19O3JldHVybiB2b2lkIDA9 PT1uJiYobj1lLmRmbHQpLHIudmFsT2JqZWN0TWV0YVtlLnZhbFR5cGVdLmNv ZXJjZUZ1bmN0aW9uKHQsaSxuLGUpLGF9dmFyIG89Mj09PWEuZGltZW5zaW9u c3x8IjEtMiI9PT1hLmRpbWVuc2lvbnMmJkFycmF5LmlzQXJyYXkodCkmJkFy cmF5LmlzQXJyYXkodFswXSk7aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIHMs bCxjLHUsaCxmLHA9YS5pdGVtcyxkPVtdLGc9QXJyYXkuaXNBcnJheShwKSx2 PWcmJm8mJkFycmF5LmlzQXJyYXkocFswXSksbT1vJiZnJiYhdix5PWcmJiFt P3AubGVuZ3RoOnQubGVuZ3RoO2lmKG49QXJyYXkuaXNBcnJheShuKT9uOltd LG8pZm9yKHM9MDtzPHk7cysrKWZvcihkW3NdPVtdLGM9QXJyYXkuaXNBcnJh eSh0W3NdKT90W3NdOltdLGg9bT9wLmxlbmd0aDpnP3Bbc10ubGVuZ3RoOmMu bGVuZ3RoLGw9MDtsPGg7bCsrKXU9bT9wW2xdOmc/cFtzXVtsXTpwLHZvaWQg MCE9PShmPWkoY1tsXSx1LChuW3NdfHxbXSlbbF0pKSYmKGRbc11bbF09Zik7 ZWxzZSBmb3Iocz0wO3M8eTtzKyspdm9pZCAwIT09KGY9aSh0W3NdLGc/cFtz XTpwLG5bc10pKSYmKGRbc109Zik7ZS5zZXQoZCl9ZWxzZSBlLnNldChuKX0s dmFsaWRhdGVGdW5jdGlvbjpmdW5jdGlvbih0LGUpe2lmKCFBcnJheS5pc0Fy cmF5KHQpKXJldHVybiExO3ZhciByPWUuaXRlbXMsbj1BcnJheS5pc0FycmF5 KHIpLGE9Mj09PWUuZGltZW5zaW9ucztpZighZS5mcmVlTGVuZ3RoJiZ0Lmxl bmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgaT0wO2k8dC5sZW5n dGg7aSsrKWlmKGEpe2lmKCFBcnJheS5pc0FycmF5KHRbaV0pfHwhZS5mcmVl TGVuZ3RoJiZ0W2ldLmxlbmd0aCE9PXJbaV0ubGVuZ3RoKXJldHVybiExO2Zv cih2YXIgbz0wO288dFtpXS5sZW5ndGg7bysrKWlmKCFmKHRbaV1bb10sbj9y W2ldW29dOnIpKXJldHVybiExfWVsc2UgaWYoIWYodFtpXSxuP3JbaV06cikp cmV0dXJuITE7cmV0dXJuITB9fX0sci5jb2VyY2U9ZnVuY3Rpb24odCxlLG4s YSxpKXt2YXIgbz1sKG4sYSkuZ2V0KCkscz1sKHQsYSksYz1sKGUsYSksdT1z LmdldCgpLHA9ZS5fdGVtcGxhdGU7aWYodm9pZCAwPT09dSYmcCYmKHU9bChw LGEpLmdldCgpLHA9MCksdm9pZCAwPT09aSYmKGk9by5kZmx0KSxvLmFycmF5 T2smJmgodSkpcmV0dXJuIGMuc2V0KHUpLHU7dmFyIGQ9ci52YWxPYmplY3RN ZXRhW28udmFsVHlwZV0uY29lcmNlRnVuY3Rpb247ZCh1LGMsaSxvKTt2YXIg Zz1jLmdldCgpO3JldHVybiBwJiZnPT09aSYmIWYodSxvKSYmKGQodT1sKHAs YSkuZ2V0KCksYyxpLG8pLGc9Yy5nZXQoKSksZ30sci5jb2VyY2UyPWZ1bmN0 aW9uKHQsZSxuLGEsaSl7dmFyIG89bCh0LGEpLHM9ci5jb2VyY2UodCxlLG4s YSxpKSxjPW8uZ2V0KCk7cmV0dXJuIG51bGwhPWMmJnN9LHIuY29lcmNlRm9u dD1mdW5jdGlvbih0LGUscil7dmFyIG49e307cmV0dXJuIHI9cnx8e30sbi5m YW1pbHk9dChlKyIuZmFtaWx5IixyLmZhbWlseSksbi5zaXplPXQoZSsiLnNp emUiLHIuc2l6ZSksbi5jb2xvcj10KGUrIi5jb2xvciIsci5jb2xvciksbn0s ci5jb2VyY2VIb3ZlcmluZm89ZnVuY3Rpb24odCxlLG4pe3ZhciBhLG89ZS5f bW9kdWxlLmF0dHJpYnV0ZXMscz1vLmhvdmVyaW5mbz9vOmksbD1zLmhvdmVy aW5mbztpZigxPT09bi5fZGF0YUxlbmd0aCl7dmFyIGM9ImFsbCI9PT1sLmRm bHQ/bC5mbGFncy5zbGljZSgpOmwuZGZsdC5zcGxpdCgiKyIpO2Muc3BsaWNl KGMuaW5kZXhPZigibmFtZSIpLDEpLGE9Yy5qb2luKCIrIil9cmV0dXJuIHIu Y29lcmNlKHQsZSxzLCJob3ZlcmluZm8iLGEpfSxyLmNvZXJjZVNlbGVjdGlv bk1hcmtlck9wYWNpdHk9ZnVuY3Rpb24odCxlKXtpZih0Lm1hcmtlcil7dmFy IHIsbixhPXQubWFya2VyLm9wYWNpdHk7aWYodm9pZCAwIT09YSloKGEpfHx0 LnNlbGVjdGVkfHx0LnVuc2VsZWN0ZWR8fChyPWEsbj1zKmEpLGUoInNlbGVj dGVkLm1hcmtlci5vcGFjaXR5IixyKSxlKCJ1bnNlbGVjdGVkLm1hcmtlci5v cGFjaXR5IixuKX19LHIudmFsaWRhdGU9Zn0seyIuLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvc2NhbGVzIjo2MDcsIi4uL2NvbnN0YW50cy9pbnRlcmFjdGlv bnMiOjY5MiwiLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuL2FycmF5Ijo3 MDAsIi4vbW9kIjo3MjQsIi4vbmVzdGVkX3Byb3BlcnR5Ijo3MjUsIi4vcmVn ZXgiOjczMywiZmFzdC1pc251bWVyaWMiOjIyOCx0aW55Y29sb3IyOjUzNn1d LDcwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhLGk9 dCgiZDMiKSxvPXQoImZhc3QtaXNudW1lcmljIikscz10KCIuL2xvZ2dlcnMi KSxsPXQoIi4vbW9kIikubW9kLGM9dCgiLi4vY29uc3RhbnRzL251bWVyaWNh bCIpLHU9Yy5CQUROVU0saD1jLk9ORURBWSxmPWMuT05FSE9VUixwPWMuT05F TUlOLGQ9Yy5PTkVTRUMsZz1jLkVQT0NISkQsdj10KCIuLi9yZWdpc3RyeSIp LG09aS50aW1lLmZvcm1hdC51dGMseT0vXlxzKigtP1xkXGRcZFxkfFxkXGQp KC0oXGQ/XGQpKC0oXGQ/XGQpKFsgVHRdKFswMV0/XGR8MlswLTNdKSg6KFsw LTVdXGQpKDooWzAtNV1cZChcLlxkKyk/KSk/KFp8enxbK1wtXVxkXGQ6P1xk XGQpPyk/KT8pPyk/XHMqJC9tLHg9L15ccyooLT9cZFxkXGRcZHxcZFxkKSgt KFxkP1xkaT8pKC0oXGQ/XGQpKFsgVHRdKFswMV0/XGR8MlswLTNdKSg6KFsw LTVdXGQpKDooWzAtNV1cZChcLlxkKyk/KSk/KFp8enxbK1wtXVxkXGQ6P1xk XGQpPyk/KT8pPyk/XHMqJC9tLGI9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigp LTcwO2Z1bmN0aW9uIF8odCl7cmV0dXJuIHQmJnYuY29tcG9uZW50c1JlZ2lz dHJ5LmNhbGVuZGFycyYmInN0cmluZyI9PXR5cGVvZiB0JiYiZ3JlZ29yaWFu IiE9PXR9ZnVuY3Rpb24gdyh0LGUpe3JldHVybiBTdHJpbmcodCtNYXRoLnBv dygxMCxlKSkuc3Vic3RyKDEpfXIuZGF0ZVRpY2swPWZ1bmN0aW9uKHQsZSl7 cmV0dXJuIF8odCk/ZT92LmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJz IiwiQ0FOT05JQ0FMX1NVTkRBWSIpW3RdOnYuZ2V0Q29tcG9uZW50TWV0aG9k KCJjYWxlbmRhcnMiLCJDQU5PTklDQUxfVElDSyIpW3RdOmU/IjIwMDAtMDEt MDIiOiIyMDAwLTAxLTAxIn0sci5kZmx0UmFuZ2U9ZnVuY3Rpb24odCl7cmV0 dXJuIF8odCk/di5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsIkRG TFRSQU5HRSIpW3RdOlsiMjAwMC0wMS0wMSIsIjIwMDEtMDEtMDEiXX0sci5p c0pTRGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQm Jm51bGwhPT10JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5nZXRUaW1lfSxyLmRh dGVUaW1lMm1zPWZ1bmN0aW9uKHQsZSl7aWYoci5pc0pTRGF0ZSh0KSl7dmFy IGk9dC5nZXRUaW1lem9uZU9mZnNldCgpKnAsbz0odC5nZXRVVENNaW51dGVz KCktdC5nZXRNaW51dGVzKCkpKnArKHQuZ2V0VVRDU2Vjb25kcygpLXQuZ2V0 U2Vjb25kcygpKSpkKyh0LmdldFVUQ01pbGxpc2Vjb25kcygpLXQuZ2V0TWls bGlzZWNvbmRzKCkpO2lmKG8pe3ZhciBzPTMqcDtpPWktcy8yK2woby1pK3Mv MixzKX1yZXR1cm4odD1OdW1iZXIodCktaSk+PW4mJnQ8PWE/dDp1fWlmKCJz dHJpbmciIT10eXBlb2YgdCYmIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiB1 O3Q9U3RyaW5nKHQpO3ZhciBjPV8oZSksbT10LmNoYXJBdCgwKTshY3x8Ikci IT09bSYmImciIT09bXx8KHQ9dC5zdWJzdHIoMSksZT0iIik7dmFyIHc9YyYm ImNoaW5lc2UiPT09ZS5zdWJzdHIoMCw3KSxrPXQubWF0Y2godz94OnkpO2lm KCFrKXJldHVybiB1O3ZhciBUPWtbMV0sTT1rWzNdfHwiMSIsQT1OdW1iZXIo a1s1XXx8MSksUz1OdW1iZXIoa1s3XXx8MCksRT1OdW1iZXIoa1s5XXx8MCks TD1OdW1iZXIoa1sxMV18fDApO2lmKGMpe2lmKDI9PT1ULmxlbmd0aClyZXR1 cm4gdTt2YXIgQztUPU51bWJlcihUKTt0cnl7dmFyIFA9di5nZXRDb21wb25l bnRNZXRob2QoImNhbGVuZGFycyIsImdldENhbCIpKGUpO2lmKHcpe3ZhciBP PSJpIj09PU0uY2hhckF0KE0ubGVuZ3RoLTEpO009cGFyc2VJbnQoTSwxMCks Qz1QLm5ld0RhdGUoVCxQLnRvTW9udGhJbmRleChULE0sTyksQSl9ZWxzZSBD PVAubmV3RGF0ZShULE51bWJlcihNKSxBKX1jYXRjaCh0KXtyZXR1cm4gdX1y ZXR1cm4gQz8oQy50b0pEKCktZykqaCtTKmYrRSpwK0wqZDp1fVQ9Mj09PVQu bGVuZ3RoPyhOdW1iZXIoVCkrMmUzLWIpJTEwMCtiOk51bWJlcihUKSxNLT0x O3ZhciB6PW5ldyBEYXRlKERhdGUuVVRDKDJlMyxNLEEsUyxFKSk7cmV0dXJu IHouc2V0VVRDRnVsbFllYXIoVCksei5nZXRVVENNb250aCgpIT09TT91Onou Z2V0VVRDRGF0ZSgpIT09QT91OnouZ2V0VGltZSgpK0wqZH0sbj1yLk1JTl9N Uz1yLmRhdGVUaW1lMm1zKCItOTk5OSIpLGE9ci5NQVhfTVM9ci5kYXRlVGlt ZTJtcygiOTk5OS0xMi0zMSAyMzo1OTo1OS45OTk5Iiksci5pc0RhdGVUaW1l PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZGF0ZVRpbWUybXModCxlKSE9PXV9 O3ZhciBrPTkwKmgsVD0zKmYsTT01KnA7ZnVuY3Rpb24gQSh0LGUscixuLGEp e2lmKChlfHxyfHxufHxhKSYmKHQrPSIgIit3KGUsMikrIjoiK3cociwyKSwo bnx8YSkmJih0Kz0iOiIrdyhuLDIpLGEpKSl7Zm9yKHZhciBpPTQ7YSUxMD09 MDspaS09MSxhLz0xMDt0Kz0iLiIrdyhhLGkpfXJldHVybiB0fXIubXMyRGF0 ZVRpbWU9ZnVuY3Rpb24odCxlLHIpe2lmKCJudW1iZXIiIT10eXBlb2YgdHx8 ISh0Pj1uJiZ0PD1hKSlyZXR1cm4gdTtlfHwoZT0wKTt2YXIgaSxvLHMsYyx5 LHgsYj1NYXRoLmZsb29yKDEwKmwodCsuMDUsMSkpLHc9TWF0aC5yb3VuZCh0 LWIvMTApO2lmKF8ocikpe3ZhciBTPU1hdGguZmxvb3Iody9oKStnLEU9TWF0 aC5mbG9vcihsKHQsaCkpO3RyeXtpPXYuZ2V0Q29tcG9uZW50TWV0aG9kKCJj YWxlbmRhcnMiLCJnZXRDYWwiKShyKS5mcm9tSkQoUykuZm9ybWF0RGF0ZSgi eXl5eS1tbS1kZCIpfWNhdGNoKHQpe2k9bSgiRyVZLSVtLSVkIikobmV3IERh dGUodykpfWlmKCItIj09PWkuY2hhckF0KDApKWZvcig7aS5sZW5ndGg8MTE7 KWk9Ii0wIitpLnN1YnN0cigxKTtlbHNlIGZvcig7aS5sZW5ndGg8MTA7KWk9 IjAiK2k7bz1lPGs/TWF0aC5mbG9vcihFL2YpOjAscz1lPGs/TWF0aC5mbG9v cihFJWYvcCk6MCxjPWU8VD9NYXRoLmZsb29yKEUlcC9kKTowLHk9ZTxNP0Ul ZCoxMCtiOjB9ZWxzZSB4PW5ldyBEYXRlKHcpLGk9bSgiJVktJW0tJWQiKSh4 KSxvPWU8az94LmdldFVUQ0hvdXJzKCk6MCxzPWU8az94LmdldFVUQ01pbnV0 ZXMoKTowLGM9ZTxUP3guZ2V0VVRDU2Vjb25kcygpOjAseT1lPE0/MTAqeC5n ZXRVVENNaWxsaXNlY29uZHMoKStiOjA7cmV0dXJuIEEoaSxvLHMsYyx5KX0s ci5tczJEYXRlVGltZUxvY2FsPWZ1bmN0aW9uKHQpe2lmKCEodD49bitoJiZ0 PD1hLWgpKXJldHVybiB1O3ZhciBlPU1hdGguZmxvb3IoMTAqbCh0Ky4wNSwx KSkscj1uZXcgRGF0ZShNYXRoLnJvdW5kKHQtZS8xMCkpO3JldHVybiBBKGku dGltZS5mb3JtYXQoIiVZLSVtLSVkIikociksci5nZXRIb3VycygpLHIuZ2V0 TWludXRlcygpLHIuZ2V0U2Vjb25kcygpLDEwKnIuZ2V0VVRDTWlsbGlzZWNv bmRzKCkrZSl9LHIuY2xlYW5EYXRlPWZ1bmN0aW9uKHQsZSxuKXtpZih0PT09 dSlyZXR1cm4gZTtpZihyLmlzSlNEYXRlKHQpfHwibnVtYmVyIj09dHlwZW9m IHQmJmlzRmluaXRlKHQpKXtpZihfKG4pKXJldHVybiBzLmVycm9yKCJKUyBE YXRlcyBhbmQgbWlsbGlzZWNvbmRzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCB3 b3JsZCBjYWxlbmRhcnMiLHQpLGU7aWYoISh0PXIubXMyRGF0ZVRpbWVMb2Nh bCgrdCkpJiZ2b2lkIDAhPT1lKXJldHVybiBlfWVsc2UgaWYoIXIuaXNEYXRl VGltZSh0LG4pKXJldHVybiBzLmVycm9yKCJ1bnJlY29nbml6ZWQgZGF0ZSIs dCksZTtyZXR1cm4gdH07dmFyIFM9LyVcZD9mL2c7ZnVuY3Rpb24gRSh0LGUs cixuKXt0PXQucmVwbGFjZShTLGZ1bmN0aW9uKHQpe3ZhciByPU1hdGgubWlu KCt0LmNoYXJBdCgxKXx8Niw2KTtyZXR1cm4oZS8xZTMlMSsyKS50b0ZpeGVk KHIpLnN1YnN0cigyKS5yZXBsYWNlKC8wKyQvLCIiKXx8IjAifSk7dmFyIGE9 bmV3IERhdGUoTWF0aC5mbG9vcihlKy4wNSkpO2lmKF8obikpdHJ5e3Q9di5n ZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsIndvcmxkQ2FsRm10Iiko dCxlLG4pfWNhdGNoKHQpe3JldHVybiJJbnZhbGlkIn1yZXR1cm4gcih0KShh KX12YXIgTD1bNTksNTkuOSw1OS45OSw1OS45OTksNTkuOTk5OV07ci5mb3Jt YXREYXRlPWZ1bmN0aW9uKHQsZSxyLG4sYSxpKXtpZihhPV8oYSkmJmEsIWUp aWYoInkiPT09cillPWkueWVhcjtlbHNlIGlmKCJtIj09PXIpZT1pLm1vbnRo O2Vsc2V7aWYoImQiIT09cilyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj1s KHQrLjA1LGgpLG49dyhNYXRoLmZsb29yKHIvZiksMikrIjoiK3cobChNYXRo LmZsb29yKHIvcCksNjApLDIpO2lmKCJNIiE9PWUpe28oZSl8fChlPTApO3Zh ciBhPSgxMDArTWF0aC5taW4obCh0L2QsNjApLExbZV0pKS50b0ZpeGVkKGUp LnN1YnN0cigxKTtlPjAmJihhPWEucmVwbGFjZSgvMCskLywiIikucmVwbGFj ZSgvW1wuXSQvLCIiKSksbis9IjoiK2F9cmV0dXJuIG59KHQscikrIlxuIitF KGkuZGF5TW9udGhZZWFyLHQsbixhKTtlPWkuZGF5TW9udGgrIlxuIitpLnll YXJ9cmV0dXJuIEUoZSx0LG4sYSl9O3ZhciBDPTMqaDtyLmluY3JlbWVudE1v bnRoPWZ1bmN0aW9uKHQsZSxyKXtyPV8ocikmJnI7dmFyIG49bCh0LGgpO2lm KHQ9TWF0aC5yb3VuZCh0LW4pLHIpdHJ5e3ZhciBhPU1hdGgucm91bmQodC9o KStnLGk9di5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImdldENh bCIpKHIpLG89aS5mcm9tSkQoYSk7cmV0dXJuIGUlMTI/aS5hZGQobyxlLCJt Iik6aS5hZGQobyxlLzEyLCJ5IiksKG8udG9KRCgpLWcpKmgrbn1jYXRjaChl KXtzLmVycm9yKCJpbnZhbGlkIG1zICIrdCsiIGluIGNhbGVuZGFyICIrcil9 dmFyIGM9bmV3IERhdGUodCtDKTtyZXR1cm4gYy5zZXRVVENNb250aChjLmdl dFVUQ01vbnRoKCkrZSkrbi1DfSxyLmZpbmRFeGFjdERhdGVzPWZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByLG4sYT0wLGk9MCxzPTAsbD0wLGM9XyhlKSYmdi5n ZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImdldENhbCIpKGUpLHU9 MDt1PHQubGVuZ3RoO3UrKylpZihuPXRbdV0sbyhuKSl7aWYoIShuJWgpKWlm KGMpdHJ5ezE9PT0ocj1jLmZyb21KRChuL2grZykpLmRheSgpPzE9PT1yLm1v bnRoKCk/YSsrOmkrKzpzKyt9Y2F0Y2godCl7fWVsc2UgMT09PShyPW5ldyBE YXRlKG4pKS5nZXRVVENEYXRlKCk/MD09PXIuZ2V0VVRDTW9udGgoKT9hKys6 aSsrOnMrK31lbHNlIGwrKztzKz1pKz1hO3ZhciBmPXQubGVuZ3RoLWw7cmV0 dXJue2V4YWN0WWVhcnM6YS9mLGV4YWN0TW9udGhzOmkvZixleGFjdERheXM6 cy9mfX19LHsiLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi9yZWdp c3RyeSI6ODQ2LCIuL2xvZ2dlcnMiOjcyMSwiLi9tb2QiOjcyNCxkMzoxNjUs ImZhc3QtaXNudW1lcmljIjoyMjh9XSw3MDY6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4vbG9nZ2VycyIpO2Z1 bmN0aW9uIGkodCl7dmFyIGU9dCYmdC5wYXJlbnROb2RlO2UmJmUucmVtb3Zl Q2hpbGQodCl9ZnVuY3Rpb24gbyh0LGUscil7dmFyIG49InBsb3RseS5qcy1z dHlsZS0iK3QsaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChuKTtpfHwoKGk9 ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSkuc2V0QXR0cmlidXRl KCJpZCIsbiksaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k ZSgiIikpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaSkpO3ZhciBvPWku c2hlZXQ7by5pbnNlcnRSdWxlP28uaW5zZXJ0UnVsZShlKyJ7IityKyJ9Iiww KTpvLmFkZFJ1bGU/by5hZGRSdWxlKGUsciwwKTphLndhcm4oImFkZFN0eWxl UnVsZSBmYWlsZWQiKX1lLmV4cG9ydHM9e2dldEdyYXBoRGl2OmZ1bmN0aW9u KHQpe3ZhciBlO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYobnVsbD09PShl PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpKSl0aHJvdyBuZXcgRXJyb3Io Ik5vIERPTSBlbGVtZW50IHdpdGggaWQgJyIrdCsiJyBleGlzdHMgb24gdGhl IHBhZ2UuIik7cmV0dXJuIGV9aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3Io IkRPTSBlbGVtZW50IHByb3ZpZGVkIGlzIG51bGwgb3IgdW5kZWZpbmVkIik7 cmV0dXJuIHR9LGlzUGxvdERpdjpmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVj dCh0KTtyZXR1cm4gZS5ub2RlKClpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZl LnNpemUoKSYmZS5jbGFzc2VkKCJqcy1wbG90bHktcGxvdCIpfSxyZW1vdmVF bGVtZW50OmksYWRkU3R5bGVSdWxlOmZ1bmN0aW9uKHQsZSl7bygiZ2xvYmFs Iix0LGUpfSxhZGRSZWxhdGVkU3R5bGVSdWxlOm8sZGVsZXRlUmVsYXRlZFN0 eWxlUnVsZTpmdW5jdGlvbih0KXt2YXIgZT0icGxvdGx5LmpzLXN0eWxlLSIr dCxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO3ImJmkocil9fX0seyIu L2xvZ2dlcnMiOjcyMSxkMzoxNjV9XSw3MDc6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiZXZlbnRzIikuRXZlbnRFbWl0dGVyLGE9 e2luaXQ6ZnVuY3Rpb24odCl7aWYodC5fZXYgaW5zdGFuY2VvZiBuKXJldHVy biB0O3ZhciBlPW5ldyBuLHI9bmV3IG47cmV0dXJuIHQuX2V2PWUsdC5faW50 ZXJuYWxFdj1yLHQub249ZS5vbi5iaW5kKGUpLHQub25jZT1lLm9uY2UuYmlu ZChlKSx0LnJlbW92ZUxpc3RlbmVyPWUucmVtb3ZlTGlzdGVuZXIuYmluZChl KSx0LnJlbW92ZUFsbExpc3RlbmVycz1lLnJlbW92ZUFsbExpc3RlbmVycy5i aW5kKGUpLHQuX2ludGVybmFsT249ci5vbi5iaW5kKHIpLHQuX2ludGVybmFs T25jZT1yLm9uY2UuYmluZChyKSx0Ll9yZW1vdmVJbnRlcm5hbExpc3RlbmVy PXIucmVtb3ZlTGlzdGVuZXIuYmluZChyKSx0Ll9yZW1vdmVBbGxJbnRlcm5h bExpc3RlbmVycz1yLnJlbW92ZUFsbExpc3RlbmVycy5iaW5kKHIpLHQuZW1p dD1mdW5jdGlvbihuLGEpeyJ1bmRlZmluZWQiIT10eXBlb2YgalF1ZXJ5JiZq UXVlcnkodCkudHJpZ2dlcihuLGEpLGUuZW1pdChuLGEpLHIuZW1pdChuLGEp fSx0fSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbih0LGUscil7dmFyIG4sYTsi dW5kZWZpbmVkIiE9dHlwZW9mIGpRdWVyeSYmKG49alF1ZXJ5KHQpLnRyaWdn ZXJIYW5kbGVyKGUscikpO3ZhciBpPXQuX2V2O2lmKCFpKXJldHVybiBuO3Zh ciBvLHM9aS5fZXZlbnRzW2VdO2lmKCFzKXJldHVybiBuO2Z1bmN0aW9uIGwo dCl7cmV0dXJuIHQubGlzdGVuZXI/KGkucmVtb3ZlTGlzdGVuZXIoZSx0Lmxp c3RlbmVyKSx0LmZpcmVkP3ZvaWQgMDoodC5maXJlZD0hMCx0Lmxpc3RlbmVy LmFwcGx5KGksW3JdKSkpOnQuYXBwbHkoaSxbcl0pfWZvcihzPUFycmF5Lmlz QXJyYXkocyk/czpbc10sbz0wO288cy5sZW5ndGgtMTtvKyspbChzW29dKTty ZXR1cm4gYT1sKHNbb10pLHZvaWQgMCE9PW4/bjphfSxwdXJnZTpmdW5jdGlv bih0KXtyZXR1cm4gZGVsZXRlIHQuX2V2LGRlbGV0ZSB0Lm9uLGRlbGV0ZSB0 Lm9uY2UsZGVsZXRlIHQucmVtb3ZlTGlzdGVuZXIsZGVsZXRlIHQucmVtb3Zl QWxsTGlzdGVuZXJzLGRlbGV0ZSB0LmVtaXQsZGVsZXRlIHQuX2V2LGRlbGV0 ZSB0Ll9pbnRlcm5hbEV2LGRlbGV0ZSB0Ll9pbnRlcm5hbE9uLGRlbGV0ZSB0 Ll9pbnRlcm5hbE9uY2UsZGVsZXRlIHQuX3JlbW92ZUludGVybmFsTGlzdGVu ZXIsZGVsZXRlIHQuX3JlbW92ZUFsbEludGVybmFsTGlzdGVuZXJzLHR9fTtl LmV4cG9ydHM9YX0se2V2ZW50czoxMDZ9XSw3MDg6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9pc19wbGFpbl9vYmplY3QuanMi KSxhPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gaSh0LGUscixvKXt2YXIgcyxs LGMsdSxoLGYscD10WzBdLGQ9dC5sZW5ndGg7aWYoMj09PWQmJmEocCkmJmEo dFsxXSkmJjA9PT1wLmxlbmd0aCl7aWYoZnVuY3Rpb24odCxlKXt2YXIgcixu O2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe2lmKG51bGwhPT0obj10W3JdKSYm Im9iamVjdCI9PXR5cGVvZiBuKXJldHVybiExO3ZvaWQgMCE9PW4mJihlW3Jd PW4pfXJldHVybiEwfSh0WzFdLHApKXJldHVybiBwO3Auc3BsaWNlKDAscC5s ZW5ndGgpfWZvcih2YXIgZz0xO2c8ZDtnKyspZm9yKGwgaW4gcz10W2ddKWM9 cFtsXSx1PXNbbF0sbyYmYSh1KT9wW2xdPXU6ZSYmdSYmKG4odSl8fChoPWEo dSkpKT8oaD8oaD0hMSxmPWMmJmEoYyk/YzpbXSk6Zj1jJiZuKGMpP2M6e30s cFtsXT1pKFtmLHVdLGUscixvKSk6KCJ1bmRlZmluZWQiIT10eXBlb2YgdXx8 cikmJihwW2xdPXUpO3JldHVybiBwfXIuZXh0ZW5kRmxhdD1mdW5jdGlvbigp e3JldHVybiBpKGFyZ3VtZW50cywhMSwhMSwhMSl9LHIuZXh0ZW5kRGVlcD1m dW5jdGlvbigpe3JldHVybiBpKGFyZ3VtZW50cywhMCwhMSwhMSl9LHIuZXh0 ZW5kRGVlcEFsbD1mdW5jdGlvbigpe3JldHVybiBpKGFyZ3VtZW50cywhMCwh MCwhMSl9LHIuZXh0ZW5kRGVlcE5vQXJyYXlzPWZ1bmN0aW9uKCl7cmV0dXJu IGkoYXJndW1lbnRzLCEwLCExLCEwKX19LHsiLi9pc19wbGFpbl9vYmplY3Qu anMiOjcxOH1dLDcwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtl LmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXt9LHI9W10sbj0wLGE9 MDthPHQubGVuZ3RoO2ErKyl7dmFyIGk9dFthXTsxIT09ZVtpXSYmKGVbaV09 MSxyW24rK109aSl9cmV0dXJuIHJ9fSx7fV0sNzEwOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuITA9PT10LnZp c2libGV9ZnVuY3Rpb24gYSh0KXt2YXIgZT10WzBdLnRyYWNlO3JldHVybiEw PT09ZS52aXNpYmxlJiYwIT09ZS5fbGVuZ3RofWUuZXhwb3J0cz1mdW5jdGlv bih0KXtmb3IodmFyIGUscj0oZT10LEFycmF5LmlzQXJyYXkoZSkmJkFycmF5 LmlzQXJyYXkoZVswXSkmJmVbMF1bMF0mJmVbMF1bMF0udHJhY2U/YTpuKSxp PVtdLG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHM9dFtvXTtyKHMpJiZpLnB1 c2gocyl9cmV0dXJuIGl9fSx7fV0sNzExOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJjb3VudHJ5LXJlZ2V4Iiks aT10KCJAdHVyZi9hcmVhIiksbz10KCJAdHVyZi9jZW50cm9pZCIpLHM9dCgi QHR1cmYvYmJveCIpLGw9dCgiLi9pZGVudGl0eSIpLGM9dCgiLi9sb2dnZXJz IiksdT10KCIuL2lzX3BsYWluX29iamVjdCIpLGg9dCgiLi9uZXN0ZWRfcHJv cGVydHkiKSxmPXQoIi4vcG9seWdvbiIpLHA9T2JqZWN0LmtleXMoYSksZD17 IklTTy0zIjpsLCJVU0Etc3RhdGVzIjpsLCJjb3VudHJ5IG5hbWVzIjpmdW5j dGlvbih0KXtmb3IodmFyIGU9MDtlPHAubGVuZ3RoO2UrKyl7dmFyIHI9cFtl XSxuPW5ldyBSZWdFeHAoYVtyXSk7aWYobi50ZXN0KHQudHJpbSgpLnRvTG93 ZXJDYXNlKCkpKXJldHVybiByfXJldHVybiBjLmxvZygiVW5yZWNvZ25pemVk IGNvdW50cnkgbmFtZTogIit0KyIuIiksITF9fTtmdW5jdGlvbiBnKHQpe3Zh ciBlPXQuZ2VvanNvbixyPXdpbmRvdy5QbG90bHlHZW9Bc3NldHN8fHt9LG49 InN0cmluZyI9PXR5cGVvZiBlP3JbZV06ZTtyZXR1cm4gdShuKT9uOihjLmVy cm9yKCJPb3BzIC4uLiBzb21ldGhpbmcgd2VudCB3cm9uZyB3aGVuIGZldGNo aW5nICIrZSksITEpfWUuZXhwb3J0cz17bG9jYXRpb25Ub0ZlYXR1cmU6ZnVu Y3Rpb24odCxlLHIpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJu ITE7dmFyIG4sYSxpLG89ZFt0XShlKTtpZihvKXtpZigiVVNBLXN0YXRlcyI9 PT10KWZvcihuPVtdLGk9MDtpPHIubGVuZ3RoO2krKykoYT1yW2ldKS5wcm9w ZXJ0aWVzJiZhLnByb3BlcnRpZXMuZ3UmJiJVU0EiPT09YS5wcm9wZXJ0aWVz Lmd1JiZuLnB1c2goYSk7ZWxzZSBuPXI7Zm9yKGk9MDtpPG4ubGVuZ3RoO2kr KylpZigoYT1uW2ldKS5pZD09PW8pcmV0dXJuIGE7Yy5sb2coWyJMb2NhdGlv biB3aXRoIGlkIixvLCJkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgdG9wb2pz b24gZmVhdHVyZSBhdCB0aGlzIHJlc29sdXRpb24uIl0uam9pbigiICIpKX1y ZXR1cm4hMX0sZmVhdHVyZTJwb2x5Z29uczpmdW5jdGlvbih0KXt2YXIgZSxy LG4sYSxpPXQuZ2VvbWV0cnksbz1pLmNvb3JkaW5hdGVzLHM9dC5pZCxsPVtd O2Z1bmN0aW9uIGModCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aC0xO2UrKylp Zih0W2VdWzBdPjAmJnRbZSsxXVswXTwwKXJldHVybiBlO3JldHVybiBudWxs fXN3aXRjaChlPSJSVVMiPT09c3x8IkZKSSI9PT1zP2Z1bmN0aW9uKHQpe3Zh ciBlO2lmKG51bGw9PT1jKHQpKWU9dDtlbHNlIGZvcihlPW5ldyBBcnJheSh0 Lmxlbmd0aCksYT0wO2E8dC5sZW5ndGg7YSsrKWVbYV09W3RbYV1bMF08MD90 W2FdWzBdKzM2MDp0W2FdWzBdLHRbYV1bMV1dO2wucHVzaChmLnRlc3Rlcihl KSl9OiJBVEEiPT09cz9mdW5jdGlvbih0KXt2YXIgZT1jKHQpO2lmKG51bGw9 PT1lKXJldHVybiBsLnB1c2goZi50ZXN0ZXIodCkpO3ZhciByPW5ldyBBcnJh eSh0Lmxlbmd0aCsxKSxuPTA7Zm9yKGE9MDthPHQubGVuZ3RoO2ErKylhPmU/ cltuKytdPVt0W2FdWzBdKzM2MCx0W2FdWzFdXTphPT09ZT8ocltuKytdPXRb YV0scltuKytdPVt0W2FdWzBdLC05MF0pOnJbbisrXT10W2FdO3ZhciBpPWYu dGVzdGVyKHIpO2kucHRzLnBvcCgpLGwucHVzaChpKX06ZnVuY3Rpb24odCl7 bC5wdXNoKGYudGVzdGVyKHQpKX0saS50eXBlKXtjYXNlIk11bHRpUG9seWdv biI6Zm9yKHI9MDtyPG8ubGVuZ3RoO3IrKylmb3Iobj0wO248b1tyXS5sZW5n dGg7bisrKWUob1tyXVtuXSk7YnJlYWs7Y2FzZSJQb2x5Z29uIjpmb3Iocj0w O3I8by5sZW5ndGg7cisrKWUob1tyXSl9cmV0dXJuIGx9LGdldFRyYWNlR2Vv anNvbjpnLGV4dHJhY3RUcmFjZUZlYXR1cmU6ZnVuY3Rpb24odCl7dmFyIGU9 dFswXS50cmFjZSxyPWcoZSk7aWYoIXIpcmV0dXJuITE7dmFyIG4sYT17fSxz PVtdO2ZvcihuPTA7bjxlLl9sZW5ndGg7bisrKXt2YXIgbD10W25dOyhsLmxv Y3x8MD09PWwubG9jKSYmKGFbbC5sb2NdPWwpfWZ1bmN0aW9uIHUodCl7dmFy IHI9aCh0LGUuZmVhdHVyZWlka2V5fHwiaWQiKS5nZXQoKSxuPWFbcl07aWYo bil7dmFyIGw9dC5nZW9tZXRyeTtpZigiUG9seWdvbiI9PT1sLnR5cGV8fCJN dWx0aVBvbHlnb24iPT09bC50eXBlKXt2YXIgdT17dHlwZToiRmVhdHVyZSIs aWQ6cixnZW9tZXRyeTpsLHByb3BlcnRpZXM6e319O3UucHJvcGVydGllcy5j dD1mdW5jdGlvbih0KXt2YXIgZSxyPXQuZ2VvbWV0cnk7aWYoIk11bHRpUG9s eWdvbiI9PT1yLnR5cGUpZm9yKHZhciBuPXIuY29vcmRpbmF0ZXMsYT0wLHM9 MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIGw9e3R5cGU6IlBvbHlnb24iLGNvb3Jk aW5hdGVzOm5bc119LGM9aS5kZWZhdWx0KGwpO2M+YSYmKGE9YyxlPWwpfWVs c2UgZT1yO3JldHVybiBvLmRlZmF1bHQoZSkuZ2VvbWV0cnkuY29vcmRpbmF0 ZXN9KHUpLG4uZkluPXQsbi5mT3V0PXUscy5wdXNoKHUpfWVsc2UgYy5sb2co WyJMb2NhdGlvbiIsbi5sb2MsImRvZXMgbm90IGhhdmUgYSB2YWxpZCBHZW9K U09OIGdlb21ldHJ5LiIsIlRyYWNlcyB3aXRoIGxvY2F0aW9ubW9kZSAqZ2Vv anNvbi1pZCogb25seSBzdXBwb3J0IiwiKlBvbHlnb24qIGFuZCAqTXVsdGlQ b2x5Z29uKiBnZW9tZXRyaWVzLiJdLmpvaW4oIiAiKSl9ZGVsZXRlIGFbcl19 c3dpdGNoKHIudHlwZSl7Y2FzZSJGZWF0dXJlQ29sbGVjdGlvbiI6dmFyIGY9 ci5mZWF0dXJlcztmb3Iobj0wO248Zi5sZW5ndGg7bisrKXUoZltuXSk7YnJl YWs7Y2FzZSJGZWF0dXJlIjp1KHIpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGMu d2FybihbIkludmFsaWQgR2VvSlNPTiB0eXBlIiwoci50eXBlfHwibm9uZSIp KyIuIiwiVHJhY2VzIHdpdGggbG9jYXRpb25tb2RlICpnZW9qc29uLWlkKiBv bmx5IHN1cHBvcnQiLCIqRmVhdHVyZUNvbGxlY3Rpb24qIGFuZCAqRmVhdHVy ZSogdHlwZXMuIl0uam9pbigiICIpKSwhMX1mb3IodmFyIHAgaW4gYSljLmxv ZyhbIkxvY2F0aW9uICoiK3ArIioiLCJkb2VzIG5vdCBoYXZlIGEgbWF0Y2hp bmcgZmVhdHVyZSB3aXRoIGlkLWtleSIsIioiK2UuZmVhdHVyZWlka2V5KyIq LiJdLmpvaW4oIiAiKSk7cmV0dXJuIHN9LGZldGNoVHJhY2VHZW9EYXRhOmZ1 bmN0aW9uKHQpe3ZhciBlPXdpbmRvdy5QbG90bHlHZW9Bc3NldHN8fHt9LHI9 W107ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24o cixhKXtuLmpzb24odCxmdW5jdGlvbihuLGkpe2lmKG4pe2RlbGV0ZSBlW3Rd O3ZhciBvPTQwND09PW4uc3RhdHVzPydHZW9KU09OIGF0IFVSTCAiJyt0Kyci IGRvZXMgbm90IGV4aXN0Lic6IlVuZXhwZWN0ZWQgZXJyb3Igd2hpbGUgZmV0 Y2hpbmcgZnJvbSAiK3Q7cmV0dXJuIGEobmV3IEVycm9yKG8pKX1yZXR1cm4g ZVt0XT1pLHIoaSl9KX0pfWZ1bmN0aW9uIGkodCl7cmV0dXJuIG5ldyBQcm9t aXNlKGZ1bmN0aW9uKHIsbil7dmFyIGE9MCxpPXNldEludGVydmFsKGZ1bmN0 aW9uKCl7cmV0dXJuIGVbdF0mJiJwZW5kaW5nIiE9PWVbdF0/KGNsZWFySW50 ZXJ2YWwoaSkscihlW3RdKSk6YT4xMDA/KGNsZWFySW50ZXJ2YWwoaSksbigi VW5leHBlY3RlZCBlcnJvciB3aGlsZSBmZXRjaGluZyBmcm9tICIrdCkpOnZv aWQgYSsrfSw1MCl9KX1mb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFy IHM9dFtvXVswXS50cmFjZS5nZW9qc29uOyJzdHJpbmciPT10eXBlb2YgcyYm KGVbc10/InBlbmRpbmciPT09ZVtzXSYmci5wdXNoKGkocykpOihlW3NdPSJw ZW5kaW5nIixyLnB1c2goYShzKSkpKX1yZXR1cm4gcn0sY29tcHV0ZUJib3g6 ZnVuY3Rpb24odCl7cmV0dXJuIHMuZGVmYXVsdCh0KX19fSx7Ii4vaWRlbnRp dHkiOjcxNiwiLi9pc19wbGFpbl9vYmplY3QiOjcxOCwiLi9sb2dnZXJzIjo3 MjEsIi4vbmVzdGVkX3Byb3BlcnR5Ijo3MjUsIi4vcG9seWdvbiI6NzI5LCJA dHVyZi9hcmVhIjo1NywiQHR1cmYvYmJveCI6NTgsIkB0dXJmL2NlbnRyb2lk Ijo1OSwiY291bnRyeS1yZWdleCI6MTM2LGQzOjE2NX1dLDcxMjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9jb25zdGFudHMv bnVtZXJpY2FsIikuQkFETlVNO3IuY2FsY1RyYWNlVG9MaW5lQ29vcmRzPWZ1 bmN0aW9uKHQpe2Zvcih2YXIgZT10WzBdLnRyYWNlLmNvbm5lY3RnYXBzLHI9 W10sYT1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBvPXRbaV0ubG9ubGF0 O29bMF0hPT1uP2EucHVzaChvKTohZSYmYS5sZW5ndGg+MCYmKHIucHVzaChh KSxhPVtdKX1yZXR1cm4gYS5sZW5ndGg+MCYmci5wdXNoKGEpLHJ9LHIubWFr ZUxpbmU9ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lmxlbmd0aD97dHlwZToi TGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dFswXX06e3R5cGU6Ik11bHRpTGlu ZVN0cmluZyIsY29vcmRpbmF0ZXM6dH19LHIubWFrZVBvbHlnb249ZnVuY3Rp b24odCl7aWYoMT09PXQubGVuZ3RoKXJldHVybnt0eXBlOiJQb2x5Z29uIixj b29yZGluYXRlczp0fTtmb3IodmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxy PTA7cjx0Lmxlbmd0aDtyKyspZVtyXT1bdFtyXV07cmV0dXJue3R5cGU6Ik11 bHRpUG9seWdvbiIsY29vcmRpbmF0ZXM6ZX19LHIubWFrZUJsYW5rPWZ1bmN0 aW9uKCl7cmV0dXJue3R5cGU6IlBvaW50Iixjb29yZGluYXRlczpbXX19fSx7 Ii4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5M31dLDcxMzpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixhLGksbz10KCIuL21vZCIpLm1v ZDtmdW5jdGlvbiBzKHQsZSxyLG4sYSxpLG8scyl7dmFyIGw9ci10LGM9YS10 LHU9by1hLGg9bi1lLGY9aS1lLHA9cy1pLGQ9bCpwLXUqaDtpZigwPT09ZCly ZXR1cm4gbnVsbDt2YXIgZz0oYypwLXUqZikvZCx2PShjKmgtbCpmKS9kO3Jl dHVybiB2PDB8fHY+MXx8ZzwwfHxnPjE/bnVsbDp7eDp0K2wqZyx5OmUraCpn fX1mdW5jdGlvbiBsKHQsZSxyLG4sYSl7dmFyIGk9bip0K2EqZTtpZihpPDAp cmV0dXJuIG4qbithKmE7aWYoaT5yKXt2YXIgbz1uLXQscz1hLWU7cmV0dXJu IG8qbytzKnN9dmFyIGw9biplLWEqdDtyZXR1cm4gbCpsL3J9ci5zZWdtZW50 c0ludGVyc2VjdD1zLHIuc2VnbWVudERpc3RhbmNlPWZ1bmN0aW9uKHQsZSxy LG4sYSxpLG8sYyl7aWYocyh0LGUscixuLGEsaSxvLGMpKXJldHVybiAwO3Zh ciB1PXItdCxoPW4tZSxmPW8tYSxwPWMtaSxkPXUqdStoKmgsZz1mKmYrcCpw LHY9TWF0aC5taW4obCh1LGgsZCxhLXQsaS1lKSxsKHUsaCxkLG8tdCxjLWUp LGwoZixwLGcsdC1hLGUtaSksbChmLHAsZyxyLWEsbi1pKSk7cmV0dXJuIE1h dGguc3FydCh2KX0sci5nZXRUZXh0TG9jYXRpb249ZnVuY3Rpb24odCxlLHIs cyl7aWYodD09PWEmJnM9PT1pfHwobj17fSxhPXQsaT1zKSxuW3JdKXJldHVy biBuW3JdO3ZhciBsPXQuZ2V0UG9pbnRBdExlbmd0aChvKHItcy8yLGUpKSxj PXQuZ2V0UG9pbnRBdExlbmd0aChvKHIrcy8yLGUpKSx1PU1hdGguYXRhbigo Yy55LWwueSkvKGMueC1sLngpKSxoPXQuZ2V0UG9pbnRBdExlbmd0aChvKHIs ZSkpLGY9e3g6KDQqaC54K2wueCtjLngpLzYseTooNCpoLnkrbC55K2MueSkv Nix0aGV0YTp1fTtyZXR1cm4gbltyXT1mLGZ9LHIuY2xlYXJMb2NhdGlvbkNh Y2hlPWZ1bmN0aW9uKCl7YT1udWxsfSxyLmdldFZpc2libGVTZWdtZW50PWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbixhLGk9ZS5sZWZ0LG89ZS5yaWdodCxzPWUu dG9wLGw9ZS5ib3R0b20sYz0wLHU9dC5nZXRUb3RhbExlbmd0aCgpLGg9dTtm dW5jdGlvbiBmKGUpe3ZhciByPXQuZ2V0UG9pbnRBdExlbmd0aChlKTswPT09 ZT9uPXI6ZT09PXUmJihhPXIpO3ZhciBjPXIueDxpP2ktci54OnIueD5vP3Iu eC1vOjAsaD1yLnk8cz9zLXIueTpyLnk+bD9yLnktbDowO3JldHVybiBNYXRo LnNxcnQoYypjK2gqaCl9Zm9yKHZhciBwPWYoYyk7cDspe2lmKChjKz1wK3Ip PmgpcmV0dXJuO3A9ZihjKX1mb3IocD1mKGgpO3A7KXtpZihjPihoLT1wK3Ip KXJldHVybjtwPWYoaCl9cmV0dXJue21pbjpjLG1heDpoLGxlbjpoLWMsdG90 YWw6dSxpc0Nsb3NlZDowPT09YyYmaD09PXUmJk1hdGguYWJzKG4ueC1hLngp PC4xJiZNYXRoLmFicyhuLnktYS55KTwuMX19LHIuZmluZFBvaW50T25QYXRo PWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgYSxpLG8scz0obj1ufHx7fSku cGF0aExlbmd0aHx8dC5nZXRUb3RhbExlbmd0aCgpLGw9bi50b2xlcmFuY2V8 fC4wMDEsYz1uLml0ZXJhdGlvbkxpbWl0fHwzMCx1PXQuZ2V0UG9pbnRBdExl bmd0aCgwKVtyXT50LmdldFBvaW50QXRMZW5ndGgocylbcl0/LTE6MSxoPTAs Zj0wLHA9cztoPGM7KXtpZihhPShmK3ApLzIsbz0oaT10LmdldFBvaW50QXRM ZW5ndGgoYSkpW3JdLWUsTWF0aC5hYnMobyk8bClyZXR1cm4gaTt1Km8+MD9w PWE6Zj1hLGgrK31yZXR1cm4gaX19LHsiLi9tb2QiOjcyNH1dLDcxNDpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVt ZXJpYyIpLGE9dCgidGlueWNvbG9yMiIpLGk9dCgiY29sb3Itbm9ybWFsaXpl Iiksbz10KCIuLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSxzPXQoIi4uL2Nv bXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLmRlZmF1bHRMaW5lLGw9dCgi Li9hcnJheSIpLmlzQXJyYXlPclR5cGVkQXJyYXksYz1pKHMpLHU9MTtmdW5j dGlvbiBoKHQsZSl7dmFyIHI9dDtyZXR1cm4gclszXSo9ZSxyfWZ1bmN0aW9u IGYodCl7aWYobih0KSlyZXR1cm4gYzt2YXIgZT1pKHQpO3JldHVybiBlLmxl bmd0aD9lOmN9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbih0KT90OnV9ZS5leHBv cnRzPXtmb3JtYXRDb2xvcjpmdW5jdGlvbih0LGUscil7dmFyIG4sYSxzLGQs Zyx2PXQuY29sb3IsbT1sKHYpLHk9bChlKSx4PW8uZXh0cmFjdE9wdHModCks Yj1bXTtpZihuPXZvaWQgMCE9PXguY29sb3JzY2FsZT9vLm1ha2VDb2xvclNj YWxlRnVuY0Zyb21UcmFjZSh0KTpmLGE9bT9mdW5jdGlvbih0LGUpe3JldHVy biB2b2lkIDA9PT10W2VdP2M6aShuKHRbZV0pKX06ZixzPXk/ZnVuY3Rpb24o dCxlKXtyZXR1cm4gdm9pZCAwPT09dFtlXT91OnAodFtlXSl9OnAsbXx8eSlm b3IodmFyIF89MDtfPHI7XysrKWQ9YSh2LF8pLGc9cyhlLF8pLGJbX109aChk LGcpO2Vsc2UgYj1oKGkodiksZSk7cmV0dXJuIGJ9LHBhcnNlQ29sb3JTY2Fs ZTpmdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPTEpO3ZhciByPW8uZXh0 cmFjdE9wdHModCk7cmV0dXJuKHIucmV2ZXJzZXNjYWxlP28uZmxpcFNjYWxl KHIuY29sb3JzY2FsZSk6ci5jb2xvcnNjYWxlKS5tYXAoZnVuY3Rpb24odCl7 dmFyIHI9dFswXSxuPWEodFsxXSkudG9SZ2IoKTtyZXR1cm57aW5kZXg6cixy Z2I6W24ucixuLmcsbi5iLGVdfX0pfX19LHsiLi4vY29tcG9uZW50cy9jb2xv ci9hdHRyaWJ1dGVzIjo1OTEsIi4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6 NjA0LCIuL2FycmF5Ijo3MDAsImNvbG9yLW5vcm1hbGl6ZSI6MTIyLCJmYXN0 LWlzbnVtZXJpYyI6MjI4LHRpbnljb2xvcjI6NTM2fV0sNzE1OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vaWRlbnRpdHkiKTtm dW5jdGlvbiBhKHQpe3JldHVyblt0XX1lLmV4cG9ydHM9e2tleUZ1bjpmdW5j dGlvbih0KXtyZXR1cm4gdC5rZXl9LHJlcGVhdDphLGRlc2NlbmQ6bix3cmFw OmEsdW53cmFwOmZ1bmN0aW9uKHQpe3JldHVybiB0WzBdfX19LHsiLi9pZGVu dGl0eSI6NzE2fV0sNzE2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdH19LHt9XSw3MTc6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQo ImZhc3QtaXNudW1lcmljIiksaT10KCIuLi9jb25zdGFudHMvbnVtZXJpY2Fs Iiksbz1pLkZQX1NBRkUscz1pLkJBRE5VTSxsPWUuZXhwb3J0cz17fTtsLm5l c3RlZFByb3BlcnR5PXQoIi4vbmVzdGVkX3Byb3BlcnR5IiksbC5rZXllZENv bnRhaW5lcj10KCIuL2tleWVkX2NvbnRhaW5lciIpLGwucmVsYXRpdmVBdHRy PXQoIi4vcmVsYXRpdmVfYXR0ciIpLGwuaXNQbGFpbk9iamVjdD10KCIuL2lz X3BsYWluX29iamVjdCIpLGwudG9Mb2dSYW5nZT10KCIuL3RvX2xvZ19yYW5n ZSIpLGwucmVsaW5rUHJpdmF0ZUtleXM9dCgiLi9yZWxpbmtfcHJpdmF0ZSIp O3ZhciBjPXQoIi4vYXJyYXkiKTtsLmlzVHlwZWRBcnJheT1jLmlzVHlwZWRB cnJheSxsLmlzQXJyYXlPclR5cGVkQXJyYXk9Yy5pc0FycmF5T3JUeXBlZEFy cmF5LGwuaXNBcnJheTFEPWMuaXNBcnJheTFELGwuZW5zdXJlQXJyYXk9Yy5l bnN1cmVBcnJheSxsLmNvbmNhdD1jLmNvbmNhdCxsLm1heFJvd0xlbmd0aD1j Lm1heFJvd0xlbmd0aCxsLm1pblJvd0xlbmd0aD1jLm1pblJvd0xlbmd0aDt2 YXIgdT10KCIuL21vZCIpO2wubW9kPXUubW9kLGwubW9kSGFsZj11Lm1vZEhh bGY7dmFyIGg9dCgiLi9jb2VyY2UiKTtsLnZhbE9iamVjdE1ldGE9aC52YWxP YmplY3RNZXRhLGwuY29lcmNlPWguY29lcmNlLGwuY29lcmNlMj1oLmNvZXJj ZTIsbC5jb2VyY2VGb250PWguY29lcmNlRm9udCxsLmNvZXJjZUhvdmVyaW5m bz1oLmNvZXJjZUhvdmVyaW5mbyxsLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9w YWNpdHk9aC5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5LGwudmFsaWRh dGU9aC52YWxpZGF0ZTt2YXIgZj10KCIuL2RhdGVzIik7bC5kYXRlVGltZTJt cz1mLmRhdGVUaW1lMm1zLGwuaXNEYXRlVGltZT1mLmlzRGF0ZVRpbWUsbC5t czJEYXRlVGltZT1mLm1zMkRhdGVUaW1lLGwubXMyRGF0ZVRpbWVMb2NhbD1m Lm1zMkRhdGVUaW1lTG9jYWwsbC5jbGVhbkRhdGU9Zi5jbGVhbkRhdGUsbC5p c0pTRGF0ZT1mLmlzSlNEYXRlLGwuZm9ybWF0RGF0ZT1mLmZvcm1hdERhdGUs bC5pbmNyZW1lbnRNb250aD1mLmluY3JlbWVudE1vbnRoLGwuZGF0ZVRpY2sw PWYuZGF0ZVRpY2swLGwuZGZsdFJhbmdlPWYuZGZsdFJhbmdlLGwuZmluZEV4 YWN0RGF0ZXM9Zi5maW5kRXhhY3REYXRlcyxsLk1JTl9NUz1mLk1JTl9NUyxs Lk1BWF9NUz1mLk1BWF9NUzt2YXIgcD10KCIuL3NlYXJjaCIpO2wuZmluZEJp bj1wLmZpbmRCaW4sbC5zb3J0ZXJBc2M9cC5zb3J0ZXJBc2MsbC5zb3J0ZXJE ZXM9cC5zb3J0ZXJEZXMsbC5kaXN0aW5jdFZhbHM9cC5kaXN0aW5jdFZhbHMs bC5yb3VuZFVwPXAucm91bmRVcCxsLnNvcnQ9cC5zb3J0LGwuZmluZEluZGV4 T2ZNaW49cC5maW5kSW5kZXhPZk1pbjt2YXIgZD10KCIuL3N0YXRzIik7bC5h Z2dOdW1zPWQuYWdnTnVtcyxsLmxlbj1kLmxlbixsLm1lYW49ZC5tZWFuLGwu bWVkaWFuPWQubWVkaWFuLGwubWlkUmFuZ2U9ZC5taWRSYW5nZSxsLnZhcmlh bmNlPWQudmFyaWFuY2UsbC5zdGRldj1kLnN0ZGV2LGwuaW50ZXJwPWQuaW50 ZXJwO3ZhciBnPXQoIi4vbWF0cml4Iik7bC5pbml0MmRBcnJheT1nLmluaXQy ZEFycmF5LGwudHJhbnNwb3NlUmFnZ2VkPWcudHJhbnNwb3NlUmFnZ2VkLGwu ZG90PWcuZG90LGwudHJhbnNsYXRpb25NYXRyaXg9Zy50cmFuc2xhdGlvbk1h dHJpeCxsLnJvdGF0aW9uTWF0cml4PWcucm90YXRpb25NYXRyaXgsbC5yb3Rh dGlvblhZTWF0cml4PWcucm90YXRpb25YWU1hdHJpeCxsLmFwcGx5MkRUcmFu c2Zvcm09Zy5hcHBseTJEVHJhbnNmb3JtLGwuYXBwbHkyRFRyYW5zZm9ybTI9 Zy5hcHBseTJEVHJhbnNmb3JtMjt2YXIgdj10KCIuL2FuZ2xlcyIpO2wuZGVn MnJhZD12LmRlZzJyYWQsbC5yYWQyZGVnPXYucmFkMmRlZyxsLmFuZ2xlRGVs dGE9di5hbmdsZURlbHRhLGwuYW5nbGVEaXN0PXYuYW5nbGVEaXN0LGwuaXNG dWxsQ2lyY2xlPXYuaXNGdWxsQ2lyY2xlLGwuaXNBbmdsZUluc2lkZVNlY3Rv cj12LmlzQW5nbGVJbnNpZGVTZWN0b3IsbC5pc1B0SW5zaWRlU2VjdG9yPXYu aXNQdEluc2lkZVNlY3RvcixsLnBhdGhBcmM9di5wYXRoQXJjLGwucGF0aFNl Y3Rvcj12LnBhdGhTZWN0b3IsbC5wYXRoQW5udWx1cz12LnBhdGhBbm51bHVz O3ZhciBtPXQoIi4vYW5jaG9yX3V0aWxzIik7bC5pc0xlZnRBbmNob3I9bS5p c0xlZnRBbmNob3IsbC5pc0NlbnRlckFuY2hvcj1tLmlzQ2VudGVyQW5jaG9y LGwuaXNSaWdodEFuY2hvcj1tLmlzUmlnaHRBbmNob3IsbC5pc1RvcEFuY2hv cj1tLmlzVG9wQW5jaG9yLGwuaXNNaWRkbGVBbmNob3I9bS5pc01pZGRsZUFu Y2hvcixsLmlzQm90dG9tQW5jaG9yPW0uaXNCb3R0b21BbmNob3I7dmFyIHk9 dCgiLi9nZW9tZXRyeTJkIik7bC5zZWdtZW50c0ludGVyc2VjdD15LnNlZ21l bnRzSW50ZXJzZWN0LGwuc2VnbWVudERpc3RhbmNlPXkuc2VnbWVudERpc3Rh bmNlLGwuZ2V0VGV4dExvY2F0aW9uPXkuZ2V0VGV4dExvY2F0aW9uLGwuY2xl YXJMb2NhdGlvbkNhY2hlPXkuY2xlYXJMb2NhdGlvbkNhY2hlLGwuZ2V0Vmlz aWJsZVNlZ21lbnQ9eS5nZXRWaXNpYmxlU2VnbWVudCxsLmZpbmRQb2ludE9u UGF0aD15LmZpbmRQb2ludE9uUGF0aDt2YXIgeD10KCIuL2V4dGVuZCIpO2wu ZXh0ZW5kRmxhdD14LmV4dGVuZEZsYXQsbC5leHRlbmREZWVwPXguZXh0ZW5k RGVlcCxsLmV4dGVuZERlZXBBbGw9eC5leHRlbmREZWVwQWxsLGwuZXh0ZW5k RGVlcE5vQXJyYXlzPXguZXh0ZW5kRGVlcE5vQXJyYXlzO3ZhciBiPXQoIi4v bG9nZ2VycyIpO2wubG9nPWIubG9nLGwud2Fybj1iLndhcm4sbC5lcnJvcj1i LmVycm9yO3ZhciBfPXQoIi4vcmVnZXgiKTtsLmNvdW50ZXJSZWdleD1fLmNv dW50ZXI7dmFyIHc9dCgiLi90aHJvdHRsZSIpO2wudGhyb3R0bGU9dy50aHJv dHRsZSxsLnRocm90dGxlRG9uZT13LmRvbmUsbC5jbGVhclRocm90dGxlPXcu Y2xlYXI7dmFyIGs9dCgiLi9kb20iKTtmdW5jdGlvbiBUKHQpe3ZhciBlPXt9 O2Zvcih2YXIgciBpbiB0KWZvcih2YXIgbj10W3JdLGE9MDthPG4ubGVuZ3Ro O2ErKyllW25bYV1dPStyO3JldHVybiBlfWwuZ2V0R3JhcGhEaXY9ay5nZXRH cmFwaERpdixsLmlzUGxvdERpdj1rLmlzUGxvdERpdixsLnJlbW92ZUVsZW1l bnQ9ay5yZW1vdmVFbGVtZW50LGwuYWRkU3R5bGVSdWxlPWsuYWRkU3R5bGVS dWxlLGwuYWRkUmVsYXRlZFN0eWxlUnVsZT1rLmFkZFJlbGF0ZWRTdHlsZVJ1 bGUsbC5kZWxldGVSZWxhdGVkU3R5bGVSdWxlPWsuZGVsZXRlUmVsYXRlZFN0 eWxlUnVsZSxsLmNsZWFyUmVzcG9uc2l2ZT10KCIuL2NsZWFyX3Jlc3BvbnNp dmUiKSxsLm1ha2VUcmFjZUdyb3Vwcz10KCIuL21ha2VfdHJhY2VfZ3JvdXBz IiksbC5fPXQoIi4vbG9jYWxpemUiKSxsLm5vdGlmaWVyPXQoIi4vbm90aWZp ZXIiKSxsLmZpbHRlclVuaXF1ZT10KCIuL2ZpbHRlcl91bmlxdWUiKSxsLmZp bHRlclZpc2libGU9dCgiLi9maWx0ZXJfdmlzaWJsZSIpLGwucHVzaFVuaXF1 ZT10KCIuL3B1c2hfdW5pcXVlIiksbC5jbGVhbk51bWJlcj10KCIuL2NsZWFu X251bWJlciIpLGwuZW5zdXJlTnVtYmVyPWZ1bmN0aW9uKHQpe3JldHVybiBh KHQpPyh0PU51bWJlcih0KSk8LW98fHQ+bz9zOmEodCk/TnVtYmVyKHQpOnM6 c30sbC5pc0luZGV4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuISh2b2lkIDAhPT1l JiZ0Pj1lKSYmKGEodCkmJnQ+PTAmJnQlMT09MCl9LGwubm9vcD10KCIuL25v b3AiKSxsLmlkZW50aXR5PXQoIi4vaWRlbnRpdHkiKSxsLnJlcGVhdD1mdW5j dGlvbih0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKysp cltuXT10O3JldHVybiByfSxsLnN3YXBBdHRycz1mdW5jdGlvbih0LGUscixu KXtyfHwocj0ieCIpLG58fChuPSJ5Iik7Zm9yKHZhciBhPTA7YTxlLmxlbmd0 aDthKyspe3ZhciBpPWVbYV0sbz1sLm5lc3RlZFByb3BlcnR5KHQsaS5yZXBs YWNlKCI/IixyKSkscz1sLm5lc3RlZFByb3BlcnR5KHQsaS5yZXBsYWNlKCI/ IixuKSksYz1vLmdldCgpO28uc2V0KHMuZ2V0KCkpLHMuc2V0KGMpfX0sbC5y YWlzZVRvVG9wPWZ1bmN0aW9uKHQpe3QucGFyZW50Tm9kZS5hcHBlbmRDaGls ZCh0KX0sbC5jYW5jZWxUcmFuc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0 LnRyYW5zaXRpb24oKS5kdXJhdGlvbigwKX0sbC5jb25zdHJhaW49ZnVuY3Rp b24odCxlLHIpe3JldHVybiBlPnI/TWF0aC5tYXgocixNYXRoLm1pbihlLHQp KTpNYXRoLm1heChlLE1hdGgubWluKHIsdCkpfSxsLmJCb3hJbnRlcnNlY3Q9 ZnVuY3Rpb24odCxlLHIpe3JldHVybiByPXJ8fDAsdC5sZWZ0PD1lLnJpZ2h0 K3ImJmUubGVmdDw9dC5yaWdodCtyJiZ0LnRvcDw9ZS5ib3R0b20rciYmZS50 b3A8PXQuYm90dG9tK3J9LGwuc2ltcGxlTWFwPWZ1bmN0aW9uKHQsZSxyLG4p e2Zvcih2YXIgYT10Lmxlbmd0aCxpPW5ldyBBcnJheShhKSxvPTA7bzxhO28r KylpW29dPWUodFtvXSxyLG4pO3JldHVybiBpfSxsLnJhbmRzdHI9ZnVuY3Rp b24gdChlLHIsbixhKXtpZihufHwobj0xNiksdm9pZCAwPT09ciYmKHI9MjQp LHI8PTApcmV0dXJuIjAiO3ZhciBpLG8scz1NYXRoLmxvZyhNYXRoLnBvdygy LHIpKS9NYXRoLmxvZyhuKSxjPSIiO2ZvcihpPTI7cz09PTEvMDtpKj0yKXM9 TWF0aC5sb2coTWF0aC5wb3coMixyL2kpKS9NYXRoLmxvZyhuKSppO3ZhciB1 PXMtTWF0aC5mbG9vcihzKTtmb3IoaT0wO2k8TWF0aC5mbG9vcihzKTtpKysp Yz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbikudG9TdHJpbmcobikrYzt1 JiYobz1NYXRoLnBvdyhuLHUpLGM9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgp Km8pLnRvU3RyaW5nKG4pK2MpO3ZhciBoPXBhcnNlSW50KGMsbik7cmV0dXJu IGUmJmVbY118fGghPT0xLzAmJmg+PU1hdGgucG93KDIscik/YT4xMD8obC53 YXJuKCJyYW5kc3RyIGZhaWxlZCB1bmlxdWVuZXNzIiksYyk6dChlLHIsbiwo YXx8MCkrMSk6Y30sbC5PcHRpb25Db250cm9sPWZ1bmN0aW9uKHQsZSl7dHx8 KHQ9e30pLGV8fChlPSJvcHQiKTt2YXIgcj17b3B0aW9uTGlzdDpbXSxfbmV3 b3B0aW9uOmZ1bmN0aW9uKG4pe25bZV09dCxyW24ubmFtZV09bixyLm9wdGlv bkxpc3QucHVzaChuKX19O3JldHVybiByWyJfIitlXT10LHJ9LGwuc21vb3Ro PWZ1bmN0aW9uKHQsZSl7aWYoKGU9TWF0aC5yb3VuZChlKXx8MCk8MilyZXR1 cm4gdDt2YXIgcixuLGEsaSxvPXQubGVuZ3RoLHM9MipvLGw9MiplLTEsYz1u ZXcgQXJyYXkobCksdT1uZXcgQXJyYXkobyk7Zm9yKHI9MDtyPGw7cisrKWNb cl09KDEtTWF0aC5jb3MoTWF0aC5QSSoocisxKS9lKSkvKDIqZSk7Zm9yKHI9 MDtyPG87cisrKXtmb3IoaT0wLG49MDtuPGw7bisrKShhPXIrbisxLWUpPC1v P2EtPXMqTWF0aC5yb3VuZChhL3MpOmE+PXMmJihhLT1zKk1hdGguZmxvb3Io YS9zKSksYTwwP2E9LTEtYTphPj1vJiYoYT1zLTEtYSksaSs9dFthXSpjW25d O3Vbcl09aX1yZXR1cm4gdX0sbC5zeW5jT3JBc3luYz1mdW5jdGlvbih0LGUs cil7dmFyIG47ZnVuY3Rpb24gYSgpe3JldHVybiBsLnN5bmNPckFzeW5jKHQs ZSxyKX1mb3IoO3QubGVuZ3RoOylpZigobj0oMCx0LnNwbGljZSgwLDEpWzBd KShlKSkmJm4udGhlbilyZXR1cm4gbi50aGVuKGEpLnRoZW4odm9pZCAwLGwu cHJvbWlzZUVycm9yKTtyZXR1cm4gciYmcihlKX0sbC5zdHJpcFRyYWlsaW5n U2xhc2g9ZnVuY3Rpb24odCl7cmV0dXJuIi8iPT09dC5zdWJzdHIoLTEpP3Qu c3Vic3RyKDAsdC5sZW5ndGgtMSk6dH0sbC5ub25lT3JBbGw9ZnVuY3Rpb24o dCxlLHIpe2lmKHQpe3ZhciBuLGE9ITEsaT0hMDtmb3Iobj0wO248ci5sZW5n dGg7bisrKW51bGwhPXRbcltuXV0/YT0hMDppPSExO2lmKGEmJiFpKWZvcihu PTA7bjxyLmxlbmd0aDtuKyspdFtyW25dXT1lW3Jbbl1dfX0sbC5tZXJnZUFy cmF5PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPSJmdW5jdGlvbiI9PXR5cGVv ZiBuO2lmKGwuaXNBcnJheU9yVHlwZWRBcnJheSh0KSlmb3IodmFyIGk9TWF0 aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLG89MDtvPGk7bysrKXt2YXIgcz10 W29dO2Vbb11bcl09YT9uKHMpOnN9fSxsLm1lcmdlQXJyYXlDYXN0UG9zaXRp dmU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBsLm1lcmdlQXJyYXkodCxlLHIs ZnVuY3Rpb24odCl7dmFyIGU9K3Q7cmV0dXJuIGlzRmluaXRlKGUpJiZlPjA/ ZTowfSl9LGwuZmlsbEFycmF5PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKG49bnx8 bC5pZGVudGl0eSxsLmlzQXJyYXlPclR5cGVkQXJyYXkodCkpZm9yKHZhciBh PTA7YTxlLmxlbmd0aDthKyspZVthXVtyXT1uKHRbYV0pfSxsLmNhc3RPcHRp b249ZnVuY3Rpb24odCxlLHIsbil7bj1ufHxsLmlkZW50aXR5O3ZhciBhPWwu bmVzdGVkUHJvcGVydHkodCxyKS5nZXQoKTtyZXR1cm4gbC5pc0FycmF5T3JU eXBlZEFycmF5KGEpP0FycmF5LmlzQXJyYXkoZSkmJmwuaXNBcnJheU9yVHlw ZWRBcnJheShhW2VbMF1dKT9uKGFbZVswXV1bZVsxXV0pOm4oYVtlXSk6YX0s bC5leHRyYWN0T3B0aW9uPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHIgaW4gdCly ZXR1cm4gdFtyXTt2YXIgYT1sLm5lc3RlZFByb3BlcnR5KGUsbikuZ2V0KCk7 cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/dm9pZCAwOmF9LGwudGFnU2VsZWN0 ZWQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGEsaT1lLnNlbGVjdGVkcG9pbnRz LG89ZS5faW5kZXhUb1BvaW50cztvJiYobj1UKG8pKTtmb3IodmFyIHM9MDtz PGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtpZihsLmlzSW5kZXgoYyl8fGwu aXNBcnJheU9yVHlwZWRBcnJheShjKSYmbC5pc0luZGV4KGNbMF0pJiZsLmlz SW5kZXgoY1sxXSkpe3ZhciB1PW4/bltjXTpjLGg9cj9yW3VdOnU7dm9pZCAw IT09KGE9aCkmJmE8dC5sZW5ndGgmJih0W2hdLnNlbGVjdGVkPTEpfX19LGwu c2VsSW5kaWNlczJzZWxQb2ludHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5zZWxl Y3RlZHBvaW50cyxyPXQuX2luZGV4VG9Qb2ludHM7aWYocil7Zm9yKHZhciBu PVQociksYT1bXSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07aWYo bC5pc0luZGV4KG8pKXt2YXIgcz1uW29dO2wuaXNJbmRleChzKSYmYS5wdXNo KHMpfX1yZXR1cm4gYX1yZXR1cm4gZX0sbC5nZXRUYXJnZXRBcnJheT1mdW5j dGlvbih0LGUpe3ZhciByPWUudGFyZ2V0O2lmKCJzdHJpbmciPT10eXBlb2Yg ciYmcil7dmFyIG49bC5uZXN0ZWRQcm9wZXJ0eSh0LHIpLmdldCgpO3JldHVy biEhQXJyYXkuaXNBcnJheShuKSYmbn1yZXR1cm4hIUFycmF5LmlzQXJyYXko cikmJnJ9LGwubWluRXh0ZW5kPWZ1bmN0aW9uKHQsZSl7dmFyIHI9e307Im9i amVjdCIhPXR5cGVvZiBlJiYoZT17fSk7dmFyIG4sYSxpLG89T2JqZWN0Lmtl eXModCk7Zm9yKG49MDtuPG8ubGVuZ3RoO24rKylpPXRbYT1vW25dXSwiXyIh PT1hLmNoYXJBdCgwKSYmImZ1bmN0aW9uIiE9dHlwZW9mIGkmJigibW9kdWxl Ij09PWE/clthXT1pOkFycmF5LmlzQXJyYXkoaSk/clthXT0iY29sb3JzY2Fs ZSI9PT1hP2kuc2xpY2UoKTppLnNsaWNlKDAsMyk6bC5pc1R5cGVkQXJyYXko aSk/clthXT1pLnN1YmFycmF5KDAsMyk6clthXT1pJiYib2JqZWN0Ij09dHlw ZW9mIGk/bC5taW5FeHRlbmQodFthXSxlW2FdKTppKTtmb3Iobz1PYmplY3Qu a2V5cyhlKSxuPTA7bjxvLmxlbmd0aDtuKyspIm9iamVjdCI9PXR5cGVvZihp PWVbYT1vW25dXSkmJmEgaW4gciYmIm9iamVjdCI9PXR5cGVvZiByW2FdfHwo clthXT1pKTtyZXR1cm4gcn0sbC50aXRsZUNhc2U9ZnVuY3Rpb24odCl7cmV0 dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSl9LGwu Y29udGFpbnNBbnk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPGUubGVu Z3RoO3IrKylpZigtMSE9PXQuaW5kZXhPZihlW3JdKSlyZXR1cm4hMDtyZXR1 cm4hMX0sbC5pc0lFPWZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5 cGVvZiB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2J9O3ZhciBNPS9NU0lF IFsxLTldXC4vO2wuaXNJRTlvckJlbG93PWZ1bmN0aW9uKCl7cmV0dXJuIGwu aXNJRSgpJiZNLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpfTt2 YXIgQT0vVmVyc2lvblwvW1xkXC5dKy4qU2FmYXJpLztsLmlzU2FmYXJpPWZ1 bmN0aW9uKCl7cmV0dXJuIEEudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJB Z2VudCl9LGwuaXNEM1NlbGVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdCYm ImZ1bmN0aW9uIj09dHlwZW9mIHQuY2xhc3NlZH0sbC5lbnN1cmVTaW5nbGU9 ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dC5zZWxlY3QoZSsocj8iLiIrcjoi IikpO2lmKGEuc2l6ZSgpKXJldHVybiBhO3ZhciBpPXQuYXBwZW5kKGUpO3Jl dHVybiByJiZpLmNsYXNzZWQociwhMCksbiYmaS5jYWxsKG4pLGl9LGwuZW5z dXJlU2luZ2xlQnlJZD1mdW5jdGlvbih0LGUscixuKXt2YXIgYT10LnNlbGVj dChlKyIjIityKTtpZihhLnNpemUoKSlyZXR1cm4gYTt2YXIgaT10LmFwcGVu ZChlKS5hdHRyKCJpZCIscik7cmV0dXJuIG4mJmkuY2FsbChuKSxpfSxsLm9i amVjdEZyb21QYXRoPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49dC5zcGxp dCgiLiIpLGE9cj17fSxpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV0s cz1udWxsLGw9bltpXS5tYXRjaCgvKC4qKVxbKFswLTldKylcXS8pO2w/KG89 bFsxXSxzPWxbMl0scj1yW29dPVtdLGk9PT1uLmxlbmd0aC0xP3Jbc109ZTpy W3NdPXt9LHI9cltzXSk6KGk9PT1uLmxlbmd0aC0xP3Jbb109ZTpyW29dPXt9 LHI9cltvXSl9cmV0dXJuIGF9O3ZhciBTPS9eKFteXFtcLl0rKVwuKC4rKT8v LEU9L14oW15cLl0rKVxbKFswLTldKylcXShcLik/KC4rKT8vO2wuZXhwYW5k T2JqZWN0UGF0aHM9ZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaSxvLHM7aWYo Im9iamVjdCI9PXR5cGVvZiB0JiYhQXJyYXkuaXNBcnJheSh0KSlmb3IociBp biB0KXQuaGFzT3duUHJvcGVydHkocikmJigoZT1yLm1hdGNoKFMpKT8oYT10 W3JdLG49ZVsxXSxkZWxldGUgdFtyXSx0W25dPWwuZXh0ZW5kRGVlcE5vQXJy YXlzKHRbbl18fHt9LGwub2JqZWN0RnJvbVBhdGgocixsLmV4cGFuZE9iamVj dFBhdGhzKGEpKVtuXSkpOihlPXIubWF0Y2goRSkpPyhhPXRbcl0sbj1lWzFd LGk9cGFyc2VJbnQoZVsyXSksZGVsZXRlIHRbcl0sdFtuXT10W25dfHxbXSwi LiI9PT1lWzNdPyhzPWVbNF0sbz10W25dW2ldPXRbbl1baV18fHt9LGwuZXh0 ZW5kRGVlcE5vQXJyYXlzKG8sbC5vYmplY3RGcm9tUGF0aChzLGwuZXhwYW5k T2JqZWN0UGF0aHMoYSkpKSk6dFtuXVtpXT1sLmV4cGFuZE9iamVjdFBhdGhz KGEpKTp0W3JdPWwuZXhwYW5kT2JqZWN0UGF0aHModFtyXSkpO3JldHVybiB0 fSxsLm51bVNlcGFyYXRlPWZ1bmN0aW9uKHQsZSxyKXtpZihyfHwocj0hMSks InN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVy cm9yKCJTZXBhcmF0b3Igc3RyaW5nIHJlcXVpcmVkIGZvciBmb3JtYXR0aW5n ISIpOyJudW1iZXIiPT10eXBlb2YgdCYmKHQ9U3RyaW5nKHQpKTt2YXIgbj0v KFxkKykoXGR7M30pLyxhPWUuY2hhckF0KDApLGk9ZS5jaGFyQXQoMSksbz10 LnNwbGl0KCIuIikscz1vWzBdLGw9by5sZW5ndGg+MT9hK29bMV06IiI7aWYo aSYmKG8ubGVuZ3RoPjF8fHMubGVuZ3RoPjR8fHIpKWZvcig7bi50ZXN0KHMp OylzPXMucmVwbGFjZShuLCIkMSIraSsiJDIiKTtyZXR1cm4gcytsfSxsLlRF TVBMQVRFX1NUUklOR19SRUdFWD0vJXsoW15ccyV7fTpdKikoWzp8XHxdW159 XSopP30vZzt2YXIgTD0vXlx3KiQvO2wudGVtcGxhdGVTdHJpbmc9ZnVuY3Rp b24odCxlKXt2YXIgcj17fTtyZXR1cm4gdC5yZXBsYWNlKGwuVEVNUExBVEVf U1RSSU5HX1JFR0VYLGZ1bmN0aW9uKHQsbil7dmFyIGE7cmV0dXJuIEwudGVz dChuKT9hPWVbbl06KHJbbl09cltuXXx8bC5uZXN0ZWRQcm9wZXJ0eShlLG4p LmdldCxhPXJbbl0oKSksbC5pc1ZhbGlkVGV4dFZhbHVlKGEpP2E6IiJ9KX07 dmFyIEM9e21heDoxMCxjb3VudDowLG5hbWU6ImhvdmVydGVtcGxhdGUifTts LmhvdmVydGVtcGxhdGVTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gei5hcHBs eShDLGFyZ3VtZW50cyl9O3ZhciBQPXttYXg6MTAsY291bnQ6MCxuYW1lOiJ0 ZXh0dGVtcGxhdGUifTtsLnRleHR0ZW1wbGF0ZVN0cmluZz1mdW5jdGlvbigp e3JldHVybiB6LmFwcGx5KFAsYXJndW1lbnRzKX07dmFyIE89L15bOnxcfF0v O2Z1bmN0aW9uIHoodCxlLHIpe3ZhciBhPXRoaXMsaT1hcmd1bWVudHM7ZXx8 KGU9e30pO3ZhciBvPXt9O3JldHVybiB0LnJlcGxhY2UobC5URU1QTEFURV9T VFJJTkdfUkVHRVgsZnVuY3Rpb24odCxzLGMpe3ZhciB1LGgsZixwO2Zvcihm PTM7ZjxpLmxlbmd0aDtmKyspaWYodT1pW2ZdKXtpZih1Lmhhc093blByb3Bl cnR5KHMpKXtoPXVbc107YnJlYWt9aWYoTC50ZXN0KHMpfHwoaD1vW3NdfHxs Lm5lc3RlZFByb3BlcnR5KHUscykuZ2V0KCkpJiYob1tzXT1oKSx2b2lkIDAh PT1oKWJyZWFrfWlmKHZvaWQgMD09PWgmJmEpcmV0dXJuIGEuY291bnQ8YS5t YXgmJihsLndhcm4oIlZhcmlhYmxlICciK3MrIicgaW4gIithLm5hbWUrIiBj b3VsZCBub3QgYmUgZm91bmQhIiksaD10KSxhLmNvdW50PT09YS5tYXgmJmwu d2FybigiVG9vIG1hbnkgIithLm5hbWUrIiB3YXJuaW5ncyAtIGFkZGl0aW9u YWwgd2FybmluZ3Mgd2lsbCBiZSBzdXBwcmVzc2VkIiksYS5jb3VudCsrLHQ7 aWYoYyl7aWYoIjoiPT09Y1swXSYmKGg9KHA9cj9yLm51bWJlckZvcm1hdDpu LmZvcm1hdCkoYy5yZXBsYWNlKE8sIiIpKShoKSksInwiPT09Y1swXSl7cD1y P3IudGltZUZvcm1hdC51dGM6bi50aW1lLmZvcm1hdC51dGM7dmFyIGQ9bC5k YXRlVGltZTJtcyhoKTtoPWwuZm9ybWF0RGF0ZShkLGMucmVwbGFjZShPLCIi KSwhMSxwKX19ZWxzZSBlLmhhc093blByb3BlcnR5KHMrIkxhYmVsIikmJiho PWVbcysiTGFiZWwiXSk7cmV0dXJuIGh9KX1sLnN1YnBsb3RTb3J0PWZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3Ro KSsxLG49MCxhPTAsaT0wO2k8cjtpKyspe3ZhciBvPXQuY2hhckNvZGVBdChp KXx8MCxzPWUuY2hhckNvZGVBdChpKXx8MCxsPW8+PTQ4JiZvPD01NyxjPXM+ PTQ4JiZzPD01NztpZihsJiYobj0xMCpuK28tNDgpLGMmJihhPTEwKmErcy00 OCksIWx8fCFjKXtpZihuIT09YSlyZXR1cm4gbi1hO2lmKG8hPT1zKXJldHVy biBvLXN9fXJldHVybiBhLW59O3ZhciBJPTJlOTtsLnNlZWRQc2V1ZG9SYW5k b209ZnVuY3Rpb24oKXtJPTJlOX0sbC5wc2V1ZG9SYW5kb209ZnVuY3Rpb24o KXt2YXIgdD1JO3JldHVybiBJPSg2OTA2OSpJKzEpJTQyOTQ5NjcyOTYsTWF0 aC5hYnMoSS10KTw0Mjk0OTY3Mjk/bC5wc2V1ZG9SYW5kb20oKTpJLzQyOTQ5 NjcyOTZ9LGwuZmlsbFRleHQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPUFycmF5 LmlzQXJyYXkocik/ZnVuY3Rpb24odCl7ci5wdXNoKHQpfTpmdW5jdGlvbih0 KXtyLnRleHQ9dH0sYT1sLmV4dHJhY3RPcHRpb24odCxlLCJodHgiLCJob3Zl cnRleHQiKTtpZihsLmlzVmFsaWRUZXh0VmFsdWUoYSkpcmV0dXJuIG4oYSk7 dmFyIGk9bC5leHRyYWN0T3B0aW9uKHQsZSwidHgiLCJ0ZXh0Iik7cmV0dXJu IGwuaXNWYWxpZFRleHRWYWx1ZShpKT9uKGkpOnZvaWQgMH0sbC5pc1ZhbGlk VGV4dFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiB0fHwwPT09dH0sbC5mb3Jt YXRQZXJjZW50PWZ1bmN0aW9uKHQsZSl7ZT1lfHwwO2Zvcih2YXIgcj0oTWF0 aC5yb3VuZCgxMDAqdCpNYXRoLnBvdygxMCxlKSkqTWF0aC5wb3coLjEsZSkp LnRvRml4ZWQoZSkrIiUiLG49MDtuPGU7bisrKS0xIT09ci5pbmRleE9mKCIu IikmJihyPShyPXIucmVwbGFjZSgiMCUiLCIlIikpLnJlcGxhY2UoIi4lIiwi JSIpKTtyZXR1cm4gcn0sbC5pc0hpZGRlbj1mdW5jdGlvbih0KXt2YXIgZT13 aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5kaXNwbGF5O3JldHVybiFlfHwi bm9uZSI9PT1lfSxsLmdldFRleHRUcmFuc2Zvcm09ZnVuY3Rpb24odCl7dmFy IGU9dC5ub0NlbnRlcixyPXQudGV4dFgsbj10LnRleHRZLGE9dC50YXJnZXRY LGk9dC50YXJnZXRZLG89dC5hbmNob3JYfHwwLHM9dC5hbmNob3JZfHwwLGw9 dC5yb3RhdGUsYz10LnNjYWxlO3JldHVybiBjP2M+MSYmKGM9MSk6Yz0wLCJ0 cmFuc2xhdGUoIisoYS1jKihyK28pKSsiLCIrKGktYyoobitzKSkrIikiKyhj PDE/InNjYWxlKCIrYysiKSI6IiIpKyhsPyJyb3RhdGUoIitsKyhlPyIiOiIg IityKyIgIituKSsiKSI6IiIpfSxsLmVuc3VyZVVuaWZvcm1Gb250U2l6ZT1m dW5jdGlvbih0LGUpe3ZhciByPWwuZXh0ZW5kRmxhdCh7fSxlKTtyZXR1cm4g ci5zaXplPU1hdGgubWF4KGUuc2l6ZSx0Ll9mdWxsTGF5b3V0LnVuaWZvcm10 ZXh0Lm1pbnNpemV8fDApLHJ9fSx7Ii4uL2NvbnN0YW50cy9udW1lcmljYWwi OjY5MywiLi9hbmNob3JfdXRpbHMiOjY5OCwiLi9hbmdsZXMiOjY5OSwiLi9h cnJheSI6NzAwLCIuL2NsZWFuX251bWJlciI6NzAxLCIuL2NsZWFyX3Jlc3Bv bnNpdmUiOjcwMywiLi9jb2VyY2UiOjcwNCwiLi9kYXRlcyI6NzA1LCIuL2Rv bSI6NzA2LCIuL2V4dGVuZCI6NzA4LCIuL2ZpbHRlcl91bmlxdWUiOjcwOSwi Li9maWx0ZXJfdmlzaWJsZSI6NzEwLCIuL2dlb21ldHJ5MmQiOjcxMywiLi9p ZGVudGl0eSI6NzE2LCIuL2lzX3BsYWluX29iamVjdCI6NzE4LCIuL2tleWVk X2NvbnRhaW5lciI6NzE5LCIuL2xvY2FsaXplIjo3MjAsIi4vbG9nZ2VycyI6 NzIxLCIuL21ha2VfdHJhY2VfZ3JvdXBzIjo3MjIsIi4vbWF0cml4Ijo3MjMs Ii4vbW9kIjo3MjQsIi4vbmVzdGVkX3Byb3BlcnR5Ijo3MjUsIi4vbm9vcCI6 NzI2LCIuL25vdGlmaWVyIjo3MjcsIi4vcHVzaF91bmlxdWUiOjczMSwiLi9y ZWdleCI6NzMzLCIuL3JlbGF0aXZlX2F0dHIiOjczNCwiLi9yZWxpbmtfcHJp dmF0ZSI6NzM1LCIuL3NlYXJjaCI6NzM2LCIuL3N0YXRzIjo3MzksIi4vdGhy b3R0bGUiOjc0MiwiLi90b19sb2dfcmFuZ2UiOjc0MyxkMzoxNjUsImZhc3Qt aXNudW1lcmljIjoyMjh9XSw3MTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB3aW5kb3cmJndp bmRvdy5wcm9jZXNzJiZ3aW5kb3cucHJvY2Vzcy52ZXJzaW9ucz8iW29iamVj dCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0 KToiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJp bmcuY2FsbCh0KSYmT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpPT09T2JqZWN0 LnByb3RvdHlwZX19LHt9XSw3MTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi9uZXN0ZWRfcHJvcGVydHkiKSxhPS9eXHcqJC87 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvLHMsbDtyPXJ8fCJu YW1lIixpPWl8fCJ2YWx1ZSI7dmFyIGM9e307ZSYmZS5sZW5ndGg/KGw9bih0 LGUpLHM9bC5nZXQoKSk6cz10LGU9ZXx8IiI7dmFyIHU9e307aWYocylmb3Io bz0wO288cy5sZW5ndGg7bysrKXVbc1tvXVtyXV09bzt2YXIgaD1hLnRlc3Qo aSksZj17c2V0OmZ1bmN0aW9uKHQsZSl7dmFyIGE9bnVsbD09PWU/NDowO2lm KCFzKXtpZighbHx8ND09PWEpcmV0dXJuO3M9W10sbC5zZXQocyl9dmFyIG89 dVt0XTtpZih2b2lkIDA9PT1vKXtpZig0PT09YSlyZXR1cm47YXw9MyxvPXMu bGVuZ3RoLHVbdF09b31lbHNlIGUhPT0oaD9zW29dW2ldOm4oc1tvXSxpKS5n ZXQoKSkmJihhfD0yKTt2YXIgcD1zW29dPXNbb118fHt9O3JldHVybiBwW3Jd PXQsaD9wW2ldPWU6bihwLGkpLnNldChlKSxudWxsIT09ZSYmKGEmPS01KSxj W29dPWNbb118YSxmfSxnZXQ6ZnVuY3Rpb24odCl7aWYocyl7dmFyIGU9dVt0 XTtyZXR1cm4gdm9pZCAwPT09ZT92b2lkIDA6aD9zW2VdW2ldOm4oc1tlXSxp KS5nZXQoKX19LHJlbmFtZTpmdW5jdGlvbih0LGUpe3ZhciBuPXVbdF07cmV0 dXJuIHZvaWQgMD09PW4/ZjooY1tuXT0xfGNbbl0sdVtlXT1uLGRlbGV0ZSB1 W3RdLHNbbl1bcl09ZSxmKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXVb dF07aWYodm9pZCAwPT09ZSlyZXR1cm4gZjt2YXIgYT1zW2VdO2lmKE9iamVj dC5rZXlzKGEpLmxlbmd0aD4yKXJldHVybiBjW2VdPTJ8Y1tlXSxmLnNldCh0 LG51bGwpO2lmKGgpe2ZvcihvPWU7bzxzLmxlbmd0aDtvKyspY1tvXT0zfGNb b107Zm9yKG89ZTtvPHMubGVuZ3RoO28rKyl1W3Nbb11bcl1dLS07cy5zcGxp Y2UoZSwxKSxkZWxldGUgdVt0XX1lbHNlIG4oYSxpKS5zZXQobnVsbCksY1tl XT02fGNbZV07cmV0dXJuIGZ9LGNvbnN0cnVjdFVwZGF0ZTpmdW5jdGlvbigp e2Zvcih2YXIgdCxhLG89e30sbD1PYmplY3Qua2V5cyhjKSx1PTA7dTxsLmxl bmd0aDt1KyspYT1sW3VdLHQ9ZSsiWyIrYSsiXSIsc1thXT8oMSZjW2FdJiYo b1t0KyIuIityXT1zW2FdW3JdKSwyJmNbYV0mJihvW3QrIi4iK2ldPWg/NCZj W2FdP251bGw6c1thXVtpXTo0JmNbYV0/bnVsbDpuKHNbYV0saSkuZ2V0KCkp KTpvW3RdPW51bGw7cmV0dXJuIG99fTtyZXR1cm4gZn19LHsiLi9uZXN0ZWRf cHJvcGVydHkiOjcyNX1dLDcyMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi9yZWdpc3RyeSIpO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUpe2Zvcih2YXIgcj10Ll9jb250ZXh0LmxvY2FsZSxhPTA7YTwyO2Er Kyl7Zm9yKHZhciBpPXQuX2NvbnRleHQubG9jYWxlcyxvPTA7bzwyO28rKyl7 dmFyIHM9KGlbcl18fHt9KS5kaWN0aW9uYXJ5O2lmKHMpe3ZhciBsPXNbZV07 aWYobClyZXR1cm4gbH1pPW4ubG9jYWxlUmVnaXN0cnl9dmFyIGM9ci5zcGxp dCgiLSIpWzBdO2lmKGM9PT1yKWJyZWFrO3I9Y31yZXR1cm4gZX19LHsiLi4v cmVnaXN0cnkiOjg0Nn1dLDcyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi9wbG90X2FwaS9wbG90X2NvbmZpZyIpLmRmbHRD b25maWcsYT10KCIuL25vdGlmaWVyIiksaT1lLmV4cG9ydHM9e307ZnVuY3Rp b24gbyh0LGUpe2lmKHQmJnQuYXBwbHkpdHJ5e3JldHVybiB2b2lkIHQuYXBw bHkoY29uc29sZSxlKX1jYXRjaCh0KXt9Zm9yKHZhciByPTA7cjxlLmxlbmd0 aDtyKyspdHJ5e3QoZVtyXSl9Y2F0Y2godCl7Y29uc29sZS5sb2coZVtyXSl9 fWkubG9nPWZ1bmN0aW9uKCl7dmFyIHQ7aWYobi5sb2dnaW5nPjEpe3ZhciBl PVsiTE9HOiJdO2Zvcih0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllLnB1 c2goYXJndW1lbnRzW3RdKTtvKGNvbnNvbGUudHJhY2V8fGNvbnNvbGUubG9n LGUpfWlmKG4ubm90aWZ5T25Mb2dnaW5nPjEpe3ZhciByPVtdO2Zvcih0PTA7 dDxhcmd1bWVudHMubGVuZ3RoO3QrKylyLnB1c2goYXJndW1lbnRzW3RdKTth KHIuam9pbigiPGJyPiIpLCJsb25nIil9fSxpLndhcm49ZnVuY3Rpb24oKXt2 YXIgdDtpZihuLmxvZ2dpbmc+MCl7dmFyIGU9WyJXQVJOOiJdO2Zvcih0PTA7 dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllLnB1c2goYXJndW1lbnRzW3RdKTtv KGNvbnNvbGUudHJhY2V8fGNvbnNvbGUubG9nLGUpfWlmKG4ubm90aWZ5T25M b2dnaW5nPjApe3ZhciByPVtdO2Zvcih0PTA7dDxhcmd1bWVudHMubGVuZ3Ro O3QrKylyLnB1c2goYXJndW1lbnRzW3RdKTthKHIuam9pbigiPGJyPiIpLCJz dGljayIpfX0saS5lcnJvcj1mdW5jdGlvbigpe3ZhciB0O2lmKG4ubG9nZ2lu Zz4wKXt2YXIgZT1bIkVSUk9SOiJdO2Zvcih0PTA7dDxhcmd1bWVudHMubGVu Z3RoO3QrKyllLnB1c2goYXJndW1lbnRzW3RdKTtvKGNvbnNvbGUuZXJyb3Is ZSl9aWYobi5ub3RpZnlPbkxvZ2dpbmc+MCl7dmFyIHI9W107Zm9yKHQ9MDt0 PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXIucHVzaChhcmd1bWVudHNbdF0pO2Eo ci5qb2luKCI8YnI+IiksInN0aWNrIil9fX0seyIuLi9wbG90X2FwaS9wbG90 X2NvbmZpZyI6NzUzLCIuL25vdGlmaWVyIjo3Mjd9XSw3MjI6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKTtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXQuc2VsZWN0QWxsKCJnLiIrci5yZXBs YWNlKC9ccy9nLCIuIikpLmRhdGEoZSxmdW5jdGlvbih0KXtyZXR1cm4gdFsw XS50cmFjZS51aWR9KTthLmV4aXQoKS5yZW1vdmUoKSxhLmVudGVyKCkuYXBw ZW5kKCJnIikuYXR0cigiY2xhc3MiLHIpLGEub3JkZXIoKTt2YXIgaT10LmNs YXNzZWQoInJhbmdlcGxvdCIpPyJub2RlUmFuZ2VQbG90MyI6Im5vZGUzIjty ZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKHQpe3RbMF1baV09bi5zZWxlY3QodGhp cyl9KSxhfX0se2QzOjE2NX1dLDcyMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtyLmluaXQyZEFycmF5PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBy PW5ldyBBcnJheSh0KSxuPTA7bjx0O24rKylyW25dPW5ldyBBcnJheShlKTty ZXR1cm4gcn0sci50cmFuc3Bvc2VSYWdnZWQ9ZnVuY3Rpb24odCl7dmFyIGUs cixuPTAsYT10Lmxlbmd0aDtmb3IoZT0wO2U8YTtlKyspbj1NYXRoLm1heChu LHRbZV0ubGVuZ3RoKTt2YXIgaT1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47 ZSsrKWZvcihpW2VdPW5ldyBBcnJheShhKSxyPTA7cjxhO3IrKylpW2VdW3Jd PXRbcl1bZV07cmV0dXJuIGl9LHIuZG90PWZ1bmN0aW9uKHQsZSl7aWYoIXQu bGVuZ3RofHwhZS5sZW5ndGh8fHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJu IG51bGw7dmFyIG4sYSxpPXQubGVuZ3RoO2lmKHRbMF0ubGVuZ3RoKWZvcihu PW5ldyBBcnJheShpKSxhPTA7YTxpO2ErKyluW2FdPXIuZG90KHRbYV0sZSk7 ZWxzZSBpZihlWzBdLmxlbmd0aCl7dmFyIG89ci50cmFuc3Bvc2VSYWdnZWQo ZSk7Zm9yKG49bmV3IEFycmF5KG8ubGVuZ3RoKSxhPTA7YTxvLmxlbmd0aDth KyspblthXT1yLmRvdCh0LG9bYV0pfWVsc2UgZm9yKG49MCxhPTA7YTxpO2Er KyluKz10W2FdKmVbYV07cmV0dXJuIG59LHIudHJhbnNsYXRpb25NYXRyaXg9 ZnVuY3Rpb24odCxlKXtyZXR1cm5bWzEsMCx0XSxbMCwxLGVdLFswLDAsMV1d fSxyLnJvdGF0aW9uTWF0cml4PWZ1bmN0aW9uKHQpe3ZhciBlPXQqTWF0aC5Q SS8xODA7cmV0dXJuW1tNYXRoLmNvcyhlKSwtTWF0aC5zaW4oZSksMF0sW01h dGguc2luKGUpLE1hdGguY29zKGUpLDBdLFswLDAsMV1dfSxyLnJvdGF0aW9u WFlNYXRyaXg9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByLmRvdChyLmRvdChy LnRyYW5zbGF0aW9uTWF0cml4KGUsbiksci5yb3RhdGlvbk1hdHJpeCh0KSks ci50cmFuc2xhdGlvbk1hdHJpeCgtZSwtbikpfSxyLmFwcGx5MkRUcmFuc2Zv cm09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1l bnRzOzM9PT1lLmxlbmd0aCYmKGU9ZVswXSk7dmFyIG49MT09PWFyZ3VtZW50 cy5sZW5ndGg/ZVswXTpbZVswXSxlWzFdXTtyZXR1cm4gci5kb3QodCxbblsw XSxuWzFdLDFdKS5zbGljZSgwLDIpfX0sci5hcHBseTJEVHJhbnNmb3JtMj1m dW5jdGlvbih0KXt2YXIgZT1yLmFwcGx5MkRUcmFuc2Zvcm0odCk7cmV0dXJu IGZ1bmN0aW9uKHQpe3JldHVybiBlKHQuc2xpY2UoMCwyKSkuY29uY2F0KGUo dC5zbGljZSgyLDQpKSl9fX0se31dLDcyNDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZDpmdW5jdGlvbih0LGUpe3ZhciBy PXQlZTtyZXR1cm4gcjwwP3IrZTpyfSxtb2RIYWxmOmZ1bmN0aW9uKHQsZSl7 cmV0dXJuIE1hdGguYWJzKHQpPmUvMj90LU1hdGgucm91bmQodC9lKSplOnR9 fX0se31dLDcyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi9hcnJheSIpLmlzQXJyYXlP clR5cGVkQXJyYXk7ZnVuY3Rpb24gaSh0LGUpe3JldHVybiBmdW5jdGlvbigp e3ZhciByLG4sbyxzLGwsYz10O2ZvcihzPTA7czxlLmxlbmd0aC0xO3MrKyl7 aWYoLTE9PT0ocj1lW3NdKSl7Zm9yKG49ITAsbz1bXSxsPTA7bDxjLmxlbmd0 aDtsKyspb1tsXT1pKGNbbF0sZS5zbGljZShzKzEpKSgpLG9bbF0hPT1vWzBd JiYobj0hMSk7cmV0dXJuIG4/b1swXTpvfWlmKCJudW1iZXIiPT10eXBlb2Yg ciYmIWEoYykpcmV0dXJuO2lmKCJvYmplY3QiIT10eXBlb2YoYz1jW3JdKXx8 bnVsbD09PWMpcmV0dXJufWlmKCJvYmplY3QiPT10eXBlb2YgYyYmbnVsbCE9 PWMmJm51bGwhPT0obz1jW2Vbc11dKSlyZXR1cm4gb319ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7aWYobihlKSllPVN0cmluZyhlKTtlbHNlIGlmKCJzdHJp bmciIT10eXBlb2YgZXx8IlstMV0iPT09ZS5zdWJzdHIoZS5sZW5ndGgtNCkp dGhyb3ciYmFkIHByb3BlcnR5IHN0cmluZyI7Zm9yKHZhciByLGEsbyxzPTAs Yz1lLnNwbGl0KCIuIik7czxjLmxlbmd0aDspe2lmKHI9U3RyaW5nKGNbc10p Lm1hdGNoKC9eKFteXFtcXV0qKSgoXFtcLT9bMC05XSpcXSkrKSQvKSl7aWYo clsxXSljW3NdPXJbMV07ZWxzZXtpZigwIT09cyl0aHJvdyJiYWQgcHJvcGVy dHkgc3RyaW5nIjtjLnNwbGljZSgwLDEpfWZvcihhPXJbMl0uc3Vic3RyKDEs clsyXS5sZW5ndGgtMikuc3BsaXQoIl1bIiksbz0wO288YS5sZW5ndGg7bysr KXMrKyxjLnNwbGljZShzLDAsTnVtYmVyKGFbb10pKX1zKyt9cmV0dXJuIm9i amVjdCIhPXR5cGVvZiB0P2Z1bmN0aW9uKHQsZSxyKXtyZXR1cm57c2V0OmZ1 bmN0aW9uKCl7dGhyb3ciYmFkIGNvbnRhaW5lciJ9LGdldDpmdW5jdGlvbigp e30sYXN0cjplLHBhcnRzOnIsb2JqOnR9fSh0LGUsYyk6e3NldDpsKHQsYyxl KSxnZXQ6aSh0LGMpLGFzdHI6ZSxwYXJ0czpjLG9iajp0fX07dmFyIG89Lyhe fFwuKWFyZ3NcWy87ZnVuY3Rpb24gcyh0LGUpe3JldHVybiB2b2lkIDA9PT10 fHxudWxsPT09dCYmIWUubWF0Y2gobyl9ZnVuY3Rpb24gbCh0LGUscil7cmV0 dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLG8sbD10LGY9IiIscD1bW3QsZl1dLGQ9 cyhuLHIpO2ZvcihvPTA7bzxlLmxlbmd0aC0xO28rKyl7aWYoIm51bWJlciI9 PXR5cGVvZihpPWVbb10pJiYhYShsKSl0aHJvdyJhcnJheSBpbmRleCBidXQg Y29udGFpbmVyIGlzIG5vdCBhbiBhcnJheSI7aWYoLTE9PT1pKXtpZihkPSF1 KGwsZS5zbGljZShvKzEpLG4scikpYnJlYWs7cmV0dXJufWlmKCFoKGwsaSxl W28rMV0sZCkpYnJlYWs7aWYoIm9iamVjdCIhPXR5cGVvZihsPWxbaV0pfHxu dWxsPT09bCl0aHJvdyJjb250YWluZXIgaXMgbm90IGFuIG9iamVjdCI7Zj1j KGYsaSkscC5wdXNoKFtsLGZdKX1pZihkKXtpZihvPT09ZS5sZW5ndGgtMSYm KGRlbGV0ZSBsW2Vbb11dLEFycmF5LmlzQXJyYXkobCkmJitlW29dPT1sLmxl bmd0aC0xKSlmb3IoO2wubGVuZ3RoJiZ2b2lkIDA9PT1sW2wubGVuZ3RoLTFd OylsLnBvcCgpfWVsc2UgbFtlW29dXT1ufX1mdW5jdGlvbiBjKHQsZSl7dmFy IHI9ZTtyZXR1cm4gbihlKT9yPSJbIitlKyJdIjp0JiYocj0iLiIrZSksdCty fWZ1bmN0aW9uIHUodCxlLHIsbil7dmFyIGksbz1hKHIpLGM9ITAsdT1yLGY9 bi5yZXBsYWNlKCItMSIsMCkscD0hbyYmcyhyLGYpLGQ9ZVswXTtmb3IoaT0w O2k8dC5sZW5ndGg7aSsrKWY9bi5yZXBsYWNlKCItMSIsaSksbyYmKHA9cyh1 PXJbaSVyLmxlbmd0aF0sZikpLHAmJihjPSExKSxoKHQsaSxkLHApJiZsKHRb aV0sZSxuLnJlcGxhY2UoIi0xIixpKSkodSk7cmV0dXJuIGN9ZnVuY3Rpb24g aCh0LGUscixuKXtpZih2b2lkIDA9PT10W2VdKXtpZihuKXJldHVybiExO3Rb ZV09Im51bWJlciI9PXR5cGVvZiByP1tdOnt9fXJldHVybiEwfX0seyIuL2Fy cmF5Ijo3MDAsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3MjY6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7fX0s e31dLDcyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPVtdO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe2lmKC0xPT09aS5pbmRleE9mKHQpKXtpLnB1c2godCk7 dmFyIHI9MWUzO2EoZSk/cj1lOiJsb25nIj09PWUmJihyPTNlMyk7dmFyIG89 bi5zZWxlY3QoImJvZHkiKS5zZWxlY3RBbGwoIi5wbG90bHktbm90aWZpZXIi KS5kYXRhKFswXSk7by5lbnRlcigpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgi cGxvdGx5LW5vdGlmaWVyIiwhMCksby5zZWxlY3RBbGwoIi5ub3RpZmllci1u b3RlIikuZGF0YShpKS5lbnRlcigpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgi bm90aWZpZXItbm90ZSIsITApLnN0eWxlKCJvcGFjaXR5IiwwKS5lYWNoKGZ1 bmN0aW9uKHQpe3ZhciBhPW4uc2VsZWN0KHRoaXMpO2EuYXBwZW5kKCJidXR0 b24iKS5jbGFzc2VkKCJub3RpZmllci1jbG9zZSIsITApLmh0bWwoIiZ0aW1l czsiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uKCkuY2Fs bChzKX0pO2Zvcih2YXIgaT1hLmFwcGVuZCgicCIpLG89dC5zcGxpdCgvPGJy XHMqXC8/Pi9nKSxsPTA7bDxvLmxlbmd0aDtsKyspbCYmaS5hcHBlbmQoImJy IiksaS5hcHBlbmQoInNwYW4iKS50ZXh0KG9bbF0pOyJzdGljayI9PT1lP2Eu dHJhbnNpdGlvbigpLmR1cmF0aW9uKDM1MCkuc3R5bGUoIm9wYWNpdHkiLDEp OmEudHJhbnNpdGlvbigpLmR1cmF0aW9uKDcwMCkuc3R5bGUoIm9wYWNpdHki LDEpLnRyYW5zaXRpb24oKS5kZWxheShyKS5jYWxsKHMpfSl9ZnVuY3Rpb24g cyh0KXt0LmR1cmF0aW9uKDcwMCkuc3R5bGUoIm9wYWNpdHkiLDApLmVhY2go ImVuZCIsZnVuY3Rpb24odCl7dmFyIGU9aS5pbmRleE9mKHQpOy0xIT09ZSYm aS5zcGxpY2UoZSwxKSxuLnNlbGVjdCh0aGlzKS5yZW1vdmUoKX0pfX19LHtk MzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3Mjg6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9zZXRjdXJzb3IiKSxhPSJk YXRhLXNhdmVkY3Vyc29yIjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cj10LmF0dHIoYSk7aWYoZSl7aWYoIXIpe2Zvcih2YXIgaT0odC5hdHRyKCJj bGFzcyIpfHwiIikuc3BsaXQoIiAiKSxvPTA7bzxpLmxlbmd0aDtvKyspe3Zh ciBzPWlbb107MD09PXMuaW5kZXhPZigiY3Vyc29yLSIpJiZ0LmF0dHIoYSxz LnN1YnN0cig3KSkuY2xhc3NlZChzLCExKX10LmF0dHIoYSl8fHQuYXR0cihh LCIhISIpfW4odCxlKX1lbHNlIHImJih0LmF0dHIoYSxudWxsKSwiISEiPT09 cj9uKHQpOm4odCxyKSl9fSx7Ii4vc2V0Y3Vyc29yIjo3Mzd9XSw3Mjk6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9tYXRyaXgi KS5kb3QsYT10KCIuLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLGk9 ZS5leHBvcnRzPXt9O2kudGVzdGVyPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5z bGljZSgpLG49clswXVswXSxpPW4sbz1yWzBdWzFdLHM9bztmb3Ioci5wdXNo KHJbMF0pLGU9MTtlPHIubGVuZ3RoO2UrKyluPU1hdGgubWluKG4scltlXVsw XSksaT1NYXRoLm1heChpLHJbZV1bMF0pLG89TWF0aC5taW4obyxyW2VdWzFd KSxzPU1hdGgubWF4KHMscltlXVsxXSk7dmFyIGwsYz0hMTs1PT09ci5sZW5n dGgmJihyWzBdWzBdPT09clsxXVswXT9yWzJdWzBdPT09clszXVswXSYmclsw XVsxXT09PXJbM11bMV0mJnJbMV1bMV09PT1yWzJdWzFdJiYoYz0hMCxsPWZ1 bmN0aW9uKHQpe3JldHVybiB0WzBdPT09clswXVswXX0pOnJbMF1bMV09PT1y WzFdWzFdJiZyWzJdWzFdPT09clszXVsxXSYmclswXVswXT09PXJbM11bMF0m JnJbMV1bMF09PT1yWzJdWzBdJiYoYz0hMCxsPWZ1bmN0aW9uKHQpe3JldHVy biB0WzFdPT09clswXVsxXX0pKTt2YXIgdT0hMCxoPXJbMF07Zm9yKGU9MTtl PHIubGVuZ3RoO2UrKylpZihoWzBdIT09cltlXVswXXx8aFsxXSE9PXJbZV1b MV0pe3U9ITE7YnJlYWt9cmV0dXJue3htaW46bix4bWF4OmkseW1pbjpvLHlt YXg6cyxwdHM6cixjb250YWluczpjP2Z1bmN0aW9uKHQsZSl7dmFyIHI9dFsw XSxjPXRbMV07cmV0dXJuIShyPT09YXx8cjxufHxyPml8fGM9PT1hfHxjPG98 fGM+c3x8ZSYmbCh0KSl9OmZ1bmN0aW9uKHQsZSl7dmFyIGw9dFswXSxjPXRb MV07aWYobD09PWF8fGw8bnx8bD5pfHxjPT09YXx8YzxvfHxjPnMpcmV0dXJu ITE7dmFyIHUsaCxmLHAsZCxnPXIubGVuZ3RoLHY9clswXVswXSxtPXJbMF1b MV0seT0wO2Zvcih1PTE7dTxnO3UrKylpZihoPXYsZj1tLHY9clt1XVswXSxt PXJbdV1bMV0sIShsPChwPU1hdGgubWluKGgsdikpfHxsPk1hdGgubWF4KGgs dil8fGM+TWF0aC5tYXgoZixtKSkpaWYoYzxNYXRoLm1pbihmLG0pKWwhPT1w JiZ5Kys7ZWxzZXtpZihjPT09KGQ9dj09PWg/YzpmKyhsLWgpKihtLWYpLyh2 LWgpKSlyZXR1cm4gMSE9PXV8fCFlO2M8PWQmJmwhPT1wJiZ5Kyt9cmV0dXJu IHklMj09MX0saXNSZWN0OmMsZGVnZW5lcmF0ZTp1fX0saS5pc1NlZ21lbnRC ZW50PWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpLG8scyxsPXRbZV0sYz1bdFty XVswXS1sWzBdLHRbcl1bMV0tbFsxXV0sdT1uKGMsYyksaD1NYXRoLnNxcnQo dSksZj1bLWNbMV0vaCxjWzBdL2hdO2ZvcihpPWUrMTtpPHI7aSsrKWlmKG89 W3RbaV1bMF0tbFswXSx0W2ldWzFdLWxbMV1dLChzPW4obyxjKSk8MHx8cz51 fHxNYXRoLmFicyhuKG8sZikpPmEpcmV0dXJuITA7cmV0dXJuITF9LGkuZmls dGVyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W3RbMF1dLG49MCxhPTA7ZnVuY3Rp b24gbyhvKXt0LnB1c2gobyk7dmFyIHM9ci5sZW5ndGgsbD1uO3Iuc3BsaWNl KGErMSk7Zm9yKHZhciBjPWwrMTtjPHQubGVuZ3RoO2MrKykoYz09PXQubGVu Z3RoLTF8fGkuaXNTZWdtZW50QmVudCh0LGwsYysxLGUpKSYmKHIucHVzaCh0 W2NdKSxyLmxlbmd0aDxzLTImJihuPWMsYT1yLmxlbmd0aC0xKSxsPWMpfXQu bGVuZ3RoPjEmJm8odC5wb3AoKSk7cmV0dXJue2FkZFB0Om8scmF3OnQsZmls dGVyZWQ6cn19fSx7Ii4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi9t YXRyaXgiOjcyM31dLDczMDpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9zaG93X25vX3dlYmdsX21zZyIp LGE9dCgicmVnbCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBpPXQu X2Z1bGxMYXlvdXQsbz0hMDtyZXR1cm4gaS5fZ2xjYW52YXMuZWFjaChmdW5j dGlvbihuKXtpZighbi5yZWdsJiYoIW4ucGlja3x8aS5faGFzKCJwYXJjb29y ZHMiKSkpe3RyeXtuLnJlZ2w9YSh7Y2FudmFzOnRoaXMsYXR0cmlidXRlczp7 YW50aWFsaWFzOiFuLnBpY2sscHJlc2VydmVEcmF3aW5nQnVmZmVyOiEwfSxw aXhlbFJhdGlvOnQuX2NvbnRleHQucGxvdEdsUGl4ZWxSYXRpb3x8ci5kZXZp Y2VQaXhlbFJhdGlvLGV4dGVuc2lvbnM6ZXx8W119KX1jYXRjaCh0KXtvPSEx fW8mJnRoaXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIs ZnVuY3Rpb24oZSl7dCYmdC5lbWl0JiZ0LmVtaXQoInBsb3RseV93ZWJnbGNv bnRleHRsb3N0Iix7ZXZlbnQ6ZSxsYXllcjpuLmtleX0pfSwhMSl9fSksb3x8 bih7Y29udGFpbmVyOmkuX2dsY29udGFpbmVyLm5vZGUoKX0pLG99fSkuY2Fs bCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5k ZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9m IHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vc2hvd19ub193ZWJnbF9tc2ciOjcz OCxyZWdsOjUwMX1dLDczMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihlIGluc3RhbmNlb2YgUmVn RXhwKXtmb3IodmFyIHI9ZS50b1N0cmluZygpLG49MDtuPHQubGVuZ3RoO24r KylpZih0W25daW5zdGFuY2VvZiBSZWdFeHAmJnRbbl0udG9TdHJpbmcoKT09 PXIpcmV0dXJuIHQ7dC5wdXNoKGUpfWVsc2UhZSYmMCE9PWV8fC0xIT09dC5p bmRleE9mKGUpfHx0LnB1c2goZSk7cmV0dXJuIHR9fSx7fV0sNzMyOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGE9 dCgiLi4vcGxvdF9hcGkvcGxvdF9jb25maWciKS5kZmx0Q29uZmlnO3ZhciBp PXthZGQ6ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgbyxzO3QudW5kb1F1ZXVl PXQudW5kb1F1ZXVlfHx7aW5kZXg6MCxxdWV1ZTpbXSxzZXF1ZW5jZTohMX0s cz10LnVuZG9RdWV1ZS5pbmRleCx0LmF1dG9wbGF5P3QudW5kb1F1ZXVlLmlu U2VxdWVuY2V8fCh0LmF1dG9wbGF5PSExKTooIXQudW5kb1F1ZXVlLnNlcXVl bmNlfHx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPyhvPXt1bmRvOntjYWxs czpbXSxhcmdzOltdfSxyZWRvOntjYWxsczpbXSxhcmdzOltdfX0sdC51bmRv UXVldWUucXVldWUuc3BsaWNlKHMsdC51bmRvUXVldWUucXVldWUubGVuZ3Ro LXMsbyksdC51bmRvUXVldWUuaW5kZXgrPTEpOm89dC51bmRvUXVldWUucXVl dWVbcy0xXSx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPSExLG8mJihvLnVu ZG8uY2FsbHMudW5zaGlmdChlKSxvLnVuZG8uYXJncy51bnNoaWZ0KHIpLG8u cmVkby5jYWxscy5wdXNoKG4pLG8ucmVkby5hcmdzLnB1c2goaSkpLHQudW5k b1F1ZXVlLnF1ZXVlLmxlbmd0aD5hLnF1ZXVlTGVuZ3RoJiYodC51bmRvUXVl dWUucXVldWUuc2hpZnQoKSx0LnVuZG9RdWV1ZS5pbmRleC0tKSl9LHN0YXJ0 U2VxdWVuY2U6ZnVuY3Rpb24odCl7dC51bmRvUXVldWU9dC51bmRvUXVldWV8 fHtpbmRleDowLHF1ZXVlOltdLHNlcXVlbmNlOiExfSx0LnVuZG9RdWV1ZS5z ZXF1ZW5jZT0hMCx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPSEwfSxzdG9w U2VxdWVuY2U6ZnVuY3Rpb24odCl7dC51bmRvUXVldWU9dC51bmRvUXVldWV8 fHtpbmRleDowLHF1ZXVlOltdLHNlcXVlbmNlOiExfSx0LnVuZG9RdWV1ZS5z ZXF1ZW5jZT0hMSx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPSExfSx1bmRv OmZ1bmN0aW9uKHQpe3ZhciBlLHI7aWYodC5mcmFtZXdvcmsmJnQuZnJhbWV3 b3JrLmlzUG9sYXIpdC5mcmFtZXdvcmsudW5kbygpO2Vsc2UgaWYoISh2b2lk IDA9PT10LnVuZG9RdWV1ZXx8aXNOYU4odC51bmRvUXVldWUuaW5kZXgpfHx0 LnVuZG9RdWV1ZS5pbmRleDw9MCkpe2Zvcih0LnVuZG9RdWV1ZS5pbmRleC0t LGU9dC51bmRvUXVldWUucXVldWVbdC51bmRvUXVldWUuaW5kZXhdLHQudW5k b1F1ZXVlLmluU2VxdWVuY2U9ITAscj0wO3I8ZS51bmRvLmNhbGxzLmxlbmd0 aDtyKyspaS5wbG90RG8odCxlLnVuZG8uY2FsbHNbcl0sZS51bmRvLmFyZ3Nb cl0pO3QudW5kb1F1ZXVlLmluU2VxdWVuY2U9ITEsdC5hdXRvcGxheT0hMX19 LHJlZG86ZnVuY3Rpb24odCl7dmFyIGUscjtpZih0LmZyYW1ld29yayYmdC5m cmFtZXdvcmsuaXNQb2xhcil0LmZyYW1ld29yay5yZWRvKCk7ZWxzZSBpZigh KHZvaWQgMD09PXQudW5kb1F1ZXVlfHxpc05hTih0LnVuZG9RdWV1ZS5pbmRl eCl8fHQudW5kb1F1ZXVlLmluZGV4Pj10LnVuZG9RdWV1ZS5xdWV1ZS5sZW5n dGgpKXtmb3IoZT10LnVuZG9RdWV1ZS5xdWV1ZVt0LnVuZG9RdWV1ZS5pbmRl eF0sdC51bmRvUXVldWUuaW5TZXF1ZW5jZT0hMCxyPTA7cjxlLnJlZG8uY2Fs bHMubGVuZ3RoO3IrKylpLnBsb3REbyh0LGUucmVkby5jYWxsc1tyXSxlLnJl ZG8uYXJnc1tyXSk7dC51bmRvUXVldWUuaW5TZXF1ZW5jZT0hMSx0LmF1dG9w bGF5PSExLHQudW5kb1F1ZXVlLmluZGV4Kyt9fX07aS5wbG90RG89ZnVuY3Rp b24odCxlLHIpe3QuYXV0b3BsYXk9ITAscj1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgcixhPVtdLGk9MDtpPGUubGVuZ3RoO2krKylyPWVbaV0sYVtpXT1yPT09 dD9yOiJvYmplY3QiPT10eXBlb2Ygcj9BcnJheS5pc0FycmF5KHIpP24uZXh0 ZW5kRGVlcChbXSxyKTpuLmV4dGVuZERlZXBBbGwoe30scik6cjtyZXR1cm4g YX0odCxyKSxlLmFwcGx5KG51bGwscil9LGUuZXhwb3J0cz1pfSx7Ii4uL2xp YiI6NzE3LCIuLi9wbG90X2FwaS9wbG90X2NvbmZpZyI6NzUzfV0sNzMzOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuY291bnRlcj1mdW5jdGlv bih0LGUscixuKXt2YXIgYT0oZXx8IiIpKyhyPyIiOiIkIiksaT0hMT09PW4/ IiI6Il4iO3JldHVybiJ4eSI9PT10P25ldyBSZWdFeHAoaSsieChbMi05XXxb MS05XVswLTldKyk/eShbMi05XXxbMS05XVswLTldKyk/IithKTpuZXcgUmVn RXhwKGkrdCsiKFsyLTldfFsxLTldWzAtOV0rKT8iK2EpfX0se31dLDczNDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0vXiguKikoXC5b XlwuXFtcXV0rfFxbXGRcXSkkLyxhPS9eW15cLlxbXF1dKyQvO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe2Zvcig7ZTspe3ZhciByPXQubWF0Y2gobik7aWYo cil0PXJbMV07ZWxzZXtpZighdC5tYXRjaChhKSl0aHJvdyBuZXcgRXJyb3Io ImJhZCByZWxhdGl2ZUF0dHIgY2FsbDoiK1t0LGVdKTt0PSIifWlmKCJeIiE9 PWUuY2hhckF0KDApKWJyZWFrO2U9ZS5zbGljZSgxKX1yZXR1cm4gdCYmIlsi IT09ZS5jaGFyQXQoMCk/dCsiLiIrZTp0K2V9fSx7fV0sNzM1OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vYXJyYXkiKS5pc0Fy cmF5T3JUeXBlZEFycmF5LGE9dCgiLi9pc19wbGFpbl9vYmplY3QiKTtlLmV4 cG9ydHM9ZnVuY3Rpb24gdChlLHIpe2Zvcih2YXIgaSBpbiByKXt2YXIgbz1y W2ldLHM9ZVtpXTtpZihzIT09bylpZigiXyI9PT1pLmNoYXJBdCgwKXx8ImZ1 bmN0aW9uIj09dHlwZW9mIG8pe2lmKGkgaW4gZSljb250aW51ZTtlW2ldPW99 ZWxzZSBpZihuKG8pJiZuKHMpJiZhKG9bMF0pKXtpZigiY3VzdG9tZGF0YSI9 PT1pfHwiaWRzIj09PWkpY29udGludWU7Zm9yKHZhciBsPU1hdGgubWluKG8u bGVuZ3RoLHMubGVuZ3RoKSxjPTA7YzxsO2MrKylzW2NdIT09b1tjXSYmYShv W2NdKSYmYShzW2NdKSYmdChzW2NdLG9bY10pfWVsc2UgYShvKSYmYShzKSYm KHQocyxvKSxPYmplY3Qua2V5cyhzKS5sZW5ndGh8fGRlbGV0ZSBlW2ldKX19 fSx7Ii4vYXJyYXkiOjcwMCwiLi9pc19wbGFpbl9vYmplY3QiOjcxOH1dLDcz NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0 LWlzbnVtZXJpYyIpLGE9dCgiLi9sb2dnZXJzIiksaT10KCIuL2lkZW50aXR5 Iik7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0PGV9ZnVuY3Rpb24gcyh0LGUp e3JldHVybiB0PD1lfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdD5lfWZ1bmN0 aW9uIGModCxlKXtyZXR1cm4gdD49ZX1yLmZpbmRCaW49ZnVuY3Rpb24odCxl LHIpe2lmKG4oZS5zdGFydCkpcmV0dXJuIHI/TWF0aC5jZWlsKCh0LWUuc3Rh cnQpL2Uuc2l6ZS0xZS05KS0xOk1hdGguZmxvb3IoKHQtZS5zdGFydCkvZS5z aXplKzFlLTkpO3ZhciBpLHUsaD0wLGY9ZS5sZW5ndGgscD0wLGQ9Zj4xPyhl W2YtMV0tZVswXSkvKGYtMSk6MTtmb3IodT1kPj0wP3I/bzpzOnI/YzpsLHQr PTFlLTkqZCoocj8tMToxKSooZD49MD8xOi0xKTtoPGYmJnArKzwxMDA7KXUo ZVtpPU1hdGguZmxvb3IoKGgrZikvMildLHQpP2g9aSsxOmY9aTtyZXR1cm4g cD45MCYmYS5sb2coIkxvbmcgYmluYXJ5IHNlYXJjaC4uLiIpLGgtMX0sci5z b3J0ZXJBc2M9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSxyLnNvcnRlckRl cz1mdW5jdGlvbih0LGUpe3JldHVybiBlLXR9LHIuZGlzdGluY3RWYWxzPWZ1 bmN0aW9uKHQpe3ZhciBlPXQuc2xpY2UoKTtlLnNvcnQoci5zb3J0ZXJBc2Mp O2Zvcih2YXIgbj1lLmxlbmd0aC0xLGE9ZVtuXS1lWzBdfHwxLGk9YS8obnx8 MSkvMWU0LG89W2VbMF1dLHM9MDtzPG47cysrKWVbcysxXT5lW3NdK2kmJihh PU1hdGgubWluKGEsZVtzKzFdLWVbc10pLG8ucHVzaChlW3MrMV0pKTtyZXR1 cm57dmFsczpvLG1pbkRpZmY6YX19LHIucm91bmRVcD1mdW5jdGlvbih0LGUs cil7Zm9yKHZhciBuLGE9MCxpPWUubGVuZ3RoLTEsbz0wLHM9cj8wOjEsbD1y PzE6MCxjPXI/TWF0aC5jZWlsOk1hdGguZmxvb3I7YTxpJiZvKys8MTAwOyll W249YygoYStpKS8yKV08PXQ/YT1uK3M6aT1uLWw7cmV0dXJuIGVbYV19LHIu c29ydD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49MCxhPTE7YTx0Lmxl bmd0aDthKyspe3ZhciBpPWUodFthXSx0W2EtMV0pO2lmKGk8MD9yPTE6aT4w JiYobj0xKSxyJiZuKXJldHVybiB0LnNvcnQoZSl9cmV0dXJuIG4/dDp0LnJl dmVyc2UoKX0sci5maW5kSW5kZXhPZk1pbj1mdW5jdGlvbih0LGUpe2U9ZXx8 aTtmb3IodmFyIHIsbj0xLzAsYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgbz1l KHRbYV0pO288biYmKG49byxyPWEpfXJldHVybiByfX0seyIuL2lkZW50aXR5 Ijo3MTYsIi4vbG9nZ2VycyI6NzIxLCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0s NzM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpeyh0LmF0dHIoImNsYXNzIil8fCIiKS5zcGxpdCgiICIp LmZvckVhY2goZnVuY3Rpb24oZSl7MD09PWUuaW5kZXhPZigiY3Vyc29yLSIp JiZ0LmNsYXNzZWQoZSwhMSl9KSxlJiZ0LmNsYXNzZWQoImN1cnNvci0iK2Us ITApfX0se31dLDczODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi9jb21wb25lbnRzL2NvbG9yIiksYT1mdW5jdGlvbigpe307 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KSJmdW5jdGlv biI9PXR5cGVvZiB0W2VdJiYodFtlXT1hKTt0LmRlc3Ryb3k9ZnVuY3Rpb24o KXt0LmNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQuY29udGFp bmVyKX07dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5j bGFzc05hbWU9Im5vLXdlYmdsIixyLnN0eWxlLmN1cnNvcj0icG9pbnRlciIs ci5zdHlsZS5mb250U2l6ZT0iMjRweCIsci5zdHlsZS5jb2xvcj1uLmRlZmF1 bHRzWzBdLHIuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixyLnN0eWxlLmxl ZnQ9ci5zdHlsZS50b3A9IjBweCIsci5zdHlsZS53aWR0aD1yLnN0eWxlLmhl aWdodD0iMTAwJSIsci5zdHlsZVsiYmFja2dyb3VuZC1jb2xvciJdPW4ubGln aHRMaW5lLHIuc3R5bGVbInotaW5kZXgiXT0zMDt2YXIgaT1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJwIik7cmV0dXJuIGkudGV4dENvbnRlbnQ9IldlYkdM IGlzIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBicm93c2VyIC0gdmlzaXQgaHR0 cHM6Ly9nZXQud2ViZ2wub3JnIGZvciBtb3JlIGluZm8iLGkuc3R5bGUucG9z aXRpb249InJlbGF0aXZlIixpLnN0eWxlLnRvcD0iNTAlIixpLnN0eWxlLmxl ZnQ9IjUwJSIsaS5zdHlsZS5oZWlnaHQ9IjMwJSIsaS5zdHlsZS53aWR0aD0i NTAlIixpLnN0eWxlLm1hcmdpbj0iLTE1JSAwIDAgLTI1JSIsci5hcHBlbmRD aGlsZChpKSx0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChyKSx0LmNvbnRhaW5l ci5zdHlsZS5iYWNrZ3JvdW5kPSIjRkZGRkZGIix0LmNvbnRhaW5lci5vbmNs aWNrPWZ1bmN0aW9uKCl7d2luZG93Lm9wZW4oImh0dHBzOi8vZ2V0LndlYmds Lm9yZyIpfSwhMX19LHsiLi4vY29tcG9uZW50cy9jb2xvciI6NTkyfV0sNzM5 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3Qt aXNudW1lcmljIiksYT10KCIuL2FycmF5IikuaXNBcnJheU9yVHlwZWRBcnJh eTtyLmFnZ051bXM9ZnVuY3Rpb24odCxlLGksbyl7dmFyIHMsbDtpZigoIW98 fG8+aS5sZW5ndGgpJiYobz1pLmxlbmd0aCksbihlKXx8KGU9ITEpLGEoaVsw XSkpe2ZvcihsPW5ldyBBcnJheShvKSxzPTA7czxvO3MrKylsW3NdPXIuYWdn TnVtcyh0LGUsaVtzXSk7aT1sfWZvcihzPTA7czxvO3MrKyluKGUpP24oaVtz XSkmJihlPXQoK2UsK2lbc10pKTplPWlbc107cmV0dXJuIGV9LHIubGVuPWZ1 bmN0aW9uKHQpe3JldHVybiByLmFnZ051bXMoZnVuY3Rpb24odCl7cmV0dXJu IHQrMX0sMCx0KX0sci5tZWFuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fChl PXIubGVuKHQpKSxyLmFnZ051bXMoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtl fSwwLHQpL2V9LHIubWlkUmFuZ2U9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09 dCYmMCE9PXQubGVuZ3RoKXJldHVybihyLmFnZ051bXMoTWF0aC5tYXgsbnVs bCx0KStyLmFnZ051bXMoTWF0aC5taW4sbnVsbCx0KSkvMn0sci52YXJpYW5j ZT1mdW5jdGlvbih0LGUsYSl7cmV0dXJuIGV8fChlPXIubGVuKHQpKSxuKGEp fHwoYT1yLm1lYW4odCxlKSksci5hZ2dOdW1zKGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHQrTWF0aC5wb3coZS1hLDIpfSwwLHQpL2V9LHIuc3RkZXY9ZnVuY3Rp b24odCxlLG4pe3JldHVybiBNYXRoLnNxcnQoci52YXJpYW5jZSh0LGUsbikp fSxyLm1lZGlhbj1mdW5jdGlvbih0KXt2YXIgZT10LnNsaWNlKCkuc29ydCgp O3JldHVybiByLmludGVycChlLC41KX0sci5pbnRlcnA9ZnVuY3Rpb24odCxl KXtpZighbihlKSl0aHJvdyJuIHNob3VsZCBiZSBhIGZpbml0ZSBudW1iZXIi O2lmKChlPWUqdC5sZW5ndGgtLjUpPDApcmV0dXJuIHRbMF07aWYoZT50Lmxl bmd0aC0xKXJldHVybiB0W3QubGVuZ3RoLTFdO3ZhciByPWUlMTtyZXR1cm4g cip0W01hdGguY2VpbChlKV0rKDEtcikqdFtNYXRoLmZsb29yKGUpXX19LHsi Li9hcnJheSI6NzAwLCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sNzQwOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNvbG9yLW5vcm1h bGl6ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD9uKHQpOlsw LDAsMCwxXX19LHsiY29sb3Itbm9ybWFsaXplIjoxMjJ9XSw3NDE6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4u L2xpYiIpLGk9dCgiLi4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKSxv PXQoIi4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKS5MSU5FX1NQQUNJTkc7ZnVu Y3Rpb24gcyh0LGUpe3JldHVybiB0Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVu dFJlY3QoKVtlXX12YXIgbD0vKFteJF0qKShbJF0rW14kXSpbJF0rKShbXiRd KikvO3IuY29udmVydFRvVHNwYW5zPWZ1bmN0aW9uKHQsZSxBKXt2YXIgUz10 LnRleHQoKSxMPSF0LmF0dHIoImRhdGEtbm90ZXgiKSYmInVuZGVmaW5lZCIh PXR5cGVvZiBNYXRoSmF4JiZTLm1hdGNoKGwpLEM9bi5zZWxlY3QodC5ub2Rl KCkucGFyZW50Tm9kZSk7aWYoIUMuZW1wdHkoKSl7dmFyIFA9dC5hdHRyKCJj bGFzcyIpP3QuYXR0cigiY2xhc3MiKS5zcGxpdCgiICIpWzBdOiJ0ZXh0Ijty ZXR1cm4gUCs9Ii1tYXRoIixDLnNlbGVjdEFsbCgic3ZnLiIrUCkucmVtb3Zl KCksQy5zZWxlY3RBbGwoImcuIitQKyItZ3JvdXAiKS5yZW1vdmUoKSx0LnN0 eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKHsiZGF0YS11bmZvcm1hdHRlZCI6 UywiZGF0YS1tYXRoIjoiTiJ9KSxMPyhlJiZlLl9wcm9taXNlc3x8W10pLnB1 c2gobmV3IFByb21pc2UoZnVuY3Rpb24oZSl7dC5zdHlsZSgiZGlzcGxheSIs Im5vbmUiKTt2YXIgcj1wYXJzZUludCh0Lm5vZGUoKS5zdHlsZS5mb250U2l6 ZSwxMCksaT17Zm9udFNpemU6cn07IWZ1bmN0aW9uKHQsZSxyKXt2YXIgaSxv LHMsbDtNYXRoSmF4Lkh1Yi5RdWV1ZShmdW5jdGlvbigpe3JldHVybiBvPWEu ZXh0ZW5kRGVlcEFsbCh7fSxNYXRoSmF4Lkh1Yi5jb25maWcpLHM9TWF0aEph eC5IdWIucHJvY2Vzc1NlY3Rpb25EZWxheSx2b2lkIDAhPT1NYXRoSmF4Lkh1 Yi5wcm9jZXNzU2VjdGlvbkRlbGF5JiYoTWF0aEpheC5IdWIucHJvY2Vzc1Nl Y3Rpb25EZWxheT0wKSxNYXRoSmF4Lkh1Yi5Db25maWcoe21lc3NhZ2VTdHls ZToibm9uZSIsdGV4MmpheDp7aW5saW5lTWF0aDpbWyIkIiwiJCJdLFsiXFwo IiwiXFwpIl1dfSxkaXNwbGF5QWxpZ246ImxlZnQifSl9LGZ1bmN0aW9uKCl7 aWYoIlNWRyIhPT0oaT1NYXRoSmF4Lkh1Yi5jb25maWcubWVudVNldHRpbmdz LnJlbmRlcmVyKSlyZXR1cm4gTWF0aEpheC5IdWIuc2V0UmVuZGVyZXIoIlNW RyIpfSxmdW5jdGlvbigpe3ZhciByPSJtYXRoLW91dHB1dC0iK2EucmFuZHN0 cih7fSw2NCk7cmV0dXJuIGw9bi5zZWxlY3QoImJvZHkiKS5hcHBlbmQoImRp diIpLmF0dHIoe2lkOnJ9KS5zdHlsZSh7dmlzaWJpbGl0eToiaGlkZGVuIixw b3NpdGlvbjoiYWJzb2x1dGUifSkuc3R5bGUoeyJmb250LXNpemUiOmUuZm9u dFNpemUrInB4In0pLnRleHQodC5yZXBsYWNlKGMsIlxcbHQgIikucmVwbGFj ZSh1LCJcXGd0ICIpKSxNYXRoSmF4Lkh1Yi5UeXBlc2V0KGwubm9kZSgpKX0s ZnVuY3Rpb24oKXt2YXIgZT1uLnNlbGVjdCgiYm9keSIpLnNlbGVjdCgiI01h dGhKYXhfU1ZHX2dseXBocyIpO2lmKGwuc2VsZWN0KCIuTWF0aEpheF9TVkci KS5lbXB0eSgpfHwhbC5zZWxlY3QoInN2ZyIpLm5vZGUoKSlhLmxvZygiVGhl cmUgd2FzIGFuIGVycm9yIGluIHRoZSB0ZXggc3ludGF4LiIsdCkscigpO2Vs c2V7dmFyIG89bC5zZWxlY3QoInN2ZyIpLm5vZGUoKS5nZXRCb3VuZGluZ0Ns aWVudFJlY3QoKTtyKGwuc2VsZWN0KCIuTWF0aEpheF9TVkciKSxlLG8pfWlm KGwucmVtb3ZlKCksIlNWRyIhPT1pKXJldHVybiBNYXRoSmF4Lkh1Yi5zZXRS ZW5kZXJlcihpKX0sZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09cyYmKE1h dGhKYXguSHViLnByb2Nlc3NTZWN0aW9uRGVsYXk9cyksTWF0aEpheC5IdWIu Q29uZmlnKG8pfSl9KExbMl0saSxmdW5jdGlvbihuLGEsaSl7Qy5zZWxlY3RB bGwoInN2Zy4iK1ApLnJlbW92ZSgpLEMuc2VsZWN0QWxsKCJnLiIrUCsiLWdy b3VwIikucmVtb3ZlKCk7dmFyIG89biYmbi5zZWxlY3QoInN2ZyIpO2lmKCFv fHwhby5ub2RlKCkpcmV0dXJuIE8oKSx2b2lkIGUoKTt2YXIgbD1DLmFwcGVu ZCgiZyIpLmNsYXNzZWQoUCsiLWdyb3VwIiwhMCkuYXR0cih7InBvaW50ZXIt ZXZlbnRzIjoibm9uZSIsImRhdGEtdW5mb3JtYXR0ZWQiOlMsImRhdGEtbWF0 aCI6IlkifSk7bC5ub2RlKCkuYXBwZW5kQ2hpbGQoby5ub2RlKCkpLGEmJmEu bm9kZSgpJiZvLm5vZGUoKS5pbnNlcnRCZWZvcmUoYS5ub2RlKCkuY2xvbmVO b2RlKCEwKSxvLm5vZGUoKS5maXJzdENoaWxkKSxvLmF0dHIoe2NsYXNzOlAs aGVpZ2h0OmkuaGVpZ2h0LHByZXNlcnZlQXNwZWN0UmF0aW86InhNaW5ZTWlu IG1lZXQifSkuc3R5bGUoe292ZXJmbG93OiJ2aXNpYmxlIiwicG9pbnRlci1l dmVudHMiOiJub25lIn0pO3ZhciBjPXQubm9kZSgpLnN0eWxlLmZpbGx8fCJi bGFjayIsdT1vLnNlbGVjdCgiZyIpO3UuYXR0cih7ZmlsbDpjLHN0cm9rZTpj fSk7dmFyIGg9cyh1LCJ3aWR0aCIpLGY9cyh1LCJoZWlnaHQiKSxwPSt0LmF0 dHIoIngiKS1oKntzdGFydDowLG1pZGRsZTouNSxlbmQ6MX1bdC5hdHRyKCJ0 ZXh0LWFuY2hvciIpfHwic3RhcnQiXSxkPS0ocnx8cyh0LCJoZWlnaHQiKSkv NDsieSI9PT1QWzBdPyhsLmF0dHIoe3RyYW5zZm9ybToicm90YXRlKCIrWy05 MCwrdC5hdHRyKCJ4IiksK3QuYXR0cigieSIpXSsiKSB0cmFuc2xhdGUoIitb LWgvMixkLWYvMl0rIikifSksby5hdHRyKHt4Oit0LmF0dHIoIngiKSx5Oit0 LmF0dHIoInkiKX0pKToibCI9PT1QWzBdP28uYXR0cih7eDp0LmF0dHIoIngi KSx5OmQtZi8yfSk6ImEiPT09UFswXSYmMCE9PVAuaW5kZXhPZigiYXRpdGxl Iik/by5hdHRyKHt4OjAseTpkfSk6by5hdHRyKHt4OnAseTordC5hdHRyKCJ5 IikrZC1mLzJ9KSxBJiZBLmNhbGwodCxsKSxlKGwpfSl9KSk6TygpLHR9ZnVu Y3Rpb24gTygpe0MuZW1wdHkoKXx8KFA9dC5hdHRyKCJjbGFzcyIpKyItbWF0 aCIsQy5zZWxlY3QoInN2Zy4iK1ApLnJlbW92ZSgpKSx0LnRleHQoIiIpLnN0 eWxlKCJ3aGl0ZS1zcGFjZSIsInByZSIpLGZ1bmN0aW9uKHQsZSl7ZT1lLnJl cGxhY2UodiwiICIpO3ZhciByLHM9ITEsbD1bXSxjPS0xO2Z1bmN0aW9uIHUo KXtjKys7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGkuc3ZnLCJ0 c3BhbiIpO24uc2VsZWN0KGUpLmF0dHIoe2NsYXNzOiJsaW5lIixkeTpjKm8r ImVtIn0pLHQuYXBwZW5kQ2hpbGQoZSkscj1lO3ZhciBhPWw7aWYobD1be25v ZGU6ZX1dLGEubGVuZ3RoPjEpZm9yKHZhciBzPTE7czxhLmxlbmd0aDtzKysp QShhW3NdKX1mdW5jdGlvbiBBKHQpe3ZhciBlLGE9dC50eXBlLG89e307aWYo ImEiPT09YSl7ZT0iYSI7dmFyIHM9dC50YXJnZXQsYz10LmhyZWYsdT10LnBv cHVwO2MmJihvPXsieGxpbms6eGxpbms6c2hvdyI6Il9ibGFuayI9PT1zfHwi XyIhPT1zLmNoYXJBdCgwKT8ibmV3IjoicmVwbGFjZSIsdGFyZ2V0OnMsInhs aW5rOnhsaW5rOmhyZWYiOmN9LHUmJihvLm9uY2xpY2s9J3dpbmRvdy5vcGVu KHRoaXMuaHJlZi5iYXNlVmFsLHRoaXMudGFyZ2V0LmJhc2VWYWwsIicrdSsn Iik7cmV0dXJuIGZhbHNlOycpKX1lbHNlIGU9InRzcGFuIjt0LnN0eWxlJiYo by5zdHlsZT10LnN0eWxlKTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50 TlMoaS5zdmcsZSk7aWYoInN1cCI9PT1hfHwic3ViIj09PWEpe1MocixkKSxy LmFwcGVuZENoaWxkKGgpO3ZhciBnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO UyhpLnN2ZywidHNwYW4iKTtTKGcsZCksbi5zZWxlY3QoZykuYXR0cigiZHki LHBbYV0pLG8uZHk9ZlthXSxyLmFwcGVuZENoaWxkKGgpLHIuYXBwZW5kQ2hp bGQoZyl9ZWxzZSByLmFwcGVuZENoaWxkKGgpO24uc2VsZWN0KGgpLmF0dHIo bykscj10Lm5vZGU9aCxsLnB1c2godCl9ZnVuY3Rpb24gUyh0LGUpe3QuYXBw ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkpfWZ1bmN0aW9u IEwodCl7aWYoMSE9PWwubGVuZ3RoKXt2YXIgbj1sLnBvcCgpO3QhPT1uLnR5 cGUmJmEubG9nKCJTdGFydCB0YWcgPCIrbi50eXBlKyI+IGRvZXNudCBtYXRj aCBlbmQgdGFnIDwiK3QrIj4uIFByZXRlbmRpbmcgaXQgZGlkIG1hdGNoLiIs ZSkscj1sW2wubGVuZ3RoLTFdLm5vZGV9ZWxzZSBhLmxvZygiSWdub3Jpbmcg dW5leHBlY3RlZCBlbmQgdGFnIDwvIit0KyI+LiIsZSl9eC50ZXN0KGUpP3Uo KToocj10LGw9W3tub2RlOnR9XSk7Zm9yKHZhciBDPWUuc3BsaXQobSksUD0w O1A8Qy5sZW5ndGg7UCsrKXt2YXIgTz1DW1BdLHo9Ty5tYXRjaCh5KSxJPXom JnpbMl0udG9Mb3dlckNhc2UoKSxEPWhbSV07aWYoImJyIj09PUkpdSgpO2Vs c2UgaWYodm9pZCAwPT09RClTKHIsRShPKSk7ZWxzZSBpZih6WzFdKUwoSSk7 ZWxzZXt2YXIgUj16WzRdLEY9e3R5cGU6SX0sQj1UKFIsYik7aWYoQj8oQj1C LnJlcGxhY2UoTSwiJDEgZmlsbDoiKSxEJiYoQis9IjsiK0QpKTpEJiYoQj1E KSxCJiYoRi5zdHlsZT1CKSwiYSI9PT1JKXtzPSEwO3ZhciBOPVQoUixfKTtp ZihOKXt2YXIgaj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ai5ocmVm PU4sLTEhPT1nLmluZGV4T2Yoai5wcm90b2NvbCkmJihGLmhyZWY9ZW5jb2Rl VVJJKGRlY29kZVVSSShOKSksRi50YXJnZXQ9VChSLHcpfHwiX2JsYW5rIixG LnBvcHVwPVQoUixrKSl9fUEoRil9fXJldHVybiBzfSh0Lm5vZGUoKSxTKSYm dC5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKSxyLnBvc2l0aW9uVGV4 dCh0KSxBJiZBLmNhbGwodCl9fTt2YXIgYz0vKDx8Jmx0O3wmIzYwOykvZyx1 PS8oPnwmZ3Q7fCYjNjI7KS9nO3ZhciBoPXtzdXA6ImZvbnQtc2l6ZTo3MCUi LHN1YjoiZm9udC1zaXplOjcwJSIsYjoiZm9udC13ZWlnaHQ6Ym9sZCIsaToi Zm9udC1zdHlsZTppdGFsaWMiLGE6ImN1cnNvcjpwb2ludGVyIixzcGFuOiIi LGVtOiJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkIn0sZj17 c3ViOiIwLjNlbSIsc3VwOiItMC42ZW0ifSxwPXtzdWI6Ii0wLjIxZW0iLHN1 cDoiMC40MmVtIn0sZD0iXHUyMDBiIixnPVsiaHR0cDoiLCJodHRwczoiLCJt YWlsdG86IiwiIix2b2lkIDAsIjoiXSx2PXIuTkVXTElORVM9LyhcclxuP3xc bikvZyxtPS8oPFtePD5dKj4pLyx5PS88KFwvPykoW14gPl0qKShccysoLiop KT8+L2kseD0vPGJyKFxzKy4qKT8+L2k7ci5CUl9UQUdfQUxMPS88YnIoXHMr LiopPz4vZ2k7dmFyIGI9LyhefFtccyInXSlzdHlsZVxzKj1ccyooIihbXiJd Kik7PyJ8JyhbXiddKik7PycpL2ksXz0vKF58W1xzIiddKWhyZWZccyo9XHMq KCIoW14iXSopInwnKFteJ10qKScpL2ksdz0vKF58W1xzIiddKXRhcmdldFxz Kj1ccyooIihbXiJcc10qKSJ8JyhbXidcc10qKScpL2ksaz0vKF58W1xzIidd KXBvcHVwXHMqPVxzKigiKFtcdz0sXSopInwnKFtcdz0sXSopJykvaTtmdW5j dGlvbiBUKHQsZSl7aWYoIXQpcmV0dXJuIG51bGw7dmFyIHI9dC5tYXRjaChl KSxuPXImJihyWzNdfHxyWzRdKTtyZXR1cm4gbiYmRShuKX12YXIgTT0vKF58 Oylccypjb2xvcjovO3IucGxhaW5UZXh0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPXZvaWQgMCE9PShlPWV8fHt9KS5sZW4mJi0xIT09ZS5sZW4/ZS5sZW46 MS8wLG49dm9pZCAwIT09ZS5hbGxvd2VkVGFncz9lLmFsbG93ZWRUYWdzOlsi YnIiXSxhPSIuLi4iLmxlbmd0aCxpPXQuc3BsaXQobSksbz1bXSxzPSIiLGw9 MCxjPTA7YzxpLmxlbmd0aDtjKyspe3ZhciB1PWlbY10saD11Lm1hdGNoKHkp LGY9aCYmaFsyXS50b0xvd2VyQ2FzZSgpO2lmKGYpLTEhPT1uLmluZGV4T2Yo ZikmJihvLnB1c2godSkscz1mKTtlbHNle3ZhciBwPXUubGVuZ3RoO2lmKGwr cDxyKW8ucHVzaCh1KSxsKz1wO2Vsc2UgaWYobDxyKXt2YXIgZD1yLWw7cyYm KCJiciIhPT1zfHxkPD1hfHxwPD1hKSYmby5wb3AoKSxyPmE/by5wdXNoKHUu c3Vic3RyKDAsZC1hKSsiLi4uIik6by5wdXNoKHUuc3Vic3RyKDAsZCkpO2Jy ZWFrfXM9IiJ9fXJldHVybiBvLmpvaW4oIiIpfTt2YXIgQT17bXU6Ilx1MDNi YyIsYW1wOiImIixsdDoiPCIsZ3Q6Ij4iLG5ic3A6Ilx4YTAiLHRpbWVzOiJc eGQ3IixwbHVzbW46Ilx4YjEiLGRlZzoiXHhiMCJ9LFM9LyYoI1xkK3wjeFtc ZGEtZkEtRl0rfFthLXpdKyk7L2c7ZnVuY3Rpb24gRSh0KXtyZXR1cm4gdC5y ZXBsYWNlKFMsZnVuY3Rpb24odCxlKXtyZXR1cm4oIiMiPT09ZS5jaGFyQXQo MCk/ZnVuY3Rpb24odCl7aWYodD4xMTE0MTExKXJldHVybjt2YXIgZT1TdHJp bmcuZnJvbUNvZGVQb2ludDtpZihlKXJldHVybiBlKHQpO3ZhciByPVN0cmlu Zy5mcm9tQ2hhckNvZGU7cmV0dXJuIHQ8PTY1NTM1P3IodCk6cig1NTIzMiso dD4+MTApLHQlMTAyNCs1NjMyMCl9KCJ4Ij09PWUuY2hhckF0KDEpP3BhcnNl SW50KGUuc3Vic3RyKDIpLDE2KTpwYXJzZUludChlLnN1YnN0cigxKSwxMCkp OkFbZV0pfHx0fSl9ZnVuY3Rpb24gTCh0LGUscil7dmFyIG4sYSxpLG89ci5o b3Jpem9udGFsQWxpZ24scz1yLnZlcnRpY2FsQWxpZ258fCJ0b3AiLGw9dC5u b2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYz1lLm5vZGUoKS5nZXRC b3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gYT0iYm90dG9tIj09PXM/ZnVu Y3Rpb24oKXtyZXR1cm4gbC5ib3R0b20tbi5oZWlnaHR9OiJtaWRkbGUiPT09 cz9mdW5jdGlvbigpe3JldHVybiBsLnRvcCsobC5oZWlnaHQtbi5oZWlnaHQp LzJ9OmZ1bmN0aW9uKCl7cmV0dXJuIGwudG9wfSxpPSJyaWdodCI9PT1vP2Z1 bmN0aW9uKCl7cmV0dXJuIGwucmlnaHQtbi53aWR0aH06ImNlbnRlciI9PT1v P2Z1bmN0aW9uKCl7cmV0dXJuIGwubGVmdCsobC53aWR0aC1uLndpZHRoKS8y fTpmdW5jdGlvbigpe3JldHVybiBsLmxlZnR9LGZ1bmN0aW9uKCl7cmV0dXJu IG49dGhpcy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5z dHlsZSh7dG9wOmEoKS1jLnRvcCsicHgiLGxlZnQ6aSgpLWMubGVmdCsicHgi LCJ6LWluZGV4IjoxZTN9KSx0aGlzfX1yLmNvbnZlcnRFbnRpdGllcz1FLHIu bGluZUNvdW50PWZ1bmN0aW9uKHQpe3JldHVybiB0LnNlbGVjdEFsbCgidHNw YW4ubGluZSIpLnNpemUoKXx8MX0sci5wb3NpdGlvblRleHQ9ZnVuY3Rpb24o dCxlLHIpe3JldHVybiB0LmVhY2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVj dCh0aGlzKTtmdW5jdGlvbiBhKGUscil7cmV0dXJuIHZvaWQgMD09PXI/bnVs bD09PShyPXQuYXR0cihlKSkmJih0LmF0dHIoZSwwKSxyPTApOnQuYXR0cihl LHIpLHJ9dmFyIGk9YSgieCIsZSksbz1hKCJ5IixyKTsidGV4dCI9PT10aGlz Lm5vZGVOYW1lJiZ0LnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLmF0dHIoe3g6 aSx5Om99KX0pfSxyLm1ha2VFZGl0YWJsZT1mdW5jdGlvbih0LGUpe3ZhciBy PWUuZ2QsYT1lLmRlbGVnYXRlLGk9bi5kaXNwYXRjaCgiZWRpdCIsImlucHV0 IiwiY2FuY2VsIiksbz1hfHx0O2lmKHQuc3R5bGUoeyJwb2ludGVyLWV2ZW50 cyI6YT8ibm9uZSI6ImFsbCJ9KSwxIT09dC5zaXplKCkpdGhyb3cgbmV3IEVy cm9yKCJib28iKTtmdW5jdGlvbiBzKCl7IWZ1bmN0aW9uKCl7dmFyIGE9bi5z ZWxlY3Qocikuc2VsZWN0KCIuc3ZnLWNvbnRhaW5lciIpLG89YS5hcHBlbmQo ImRpdiIpLHM9dC5ub2RlKCkuc3R5bGUsYz1wYXJzZUZsb2F0KHMuZm9udFNp emV8fDEyKSx1PWUudGV4dDt2b2lkIDA9PT11JiYodT10LmF0dHIoImRhdGEt dW5mb3JtYXR0ZWQiKSk7by5jbGFzc2VkKCJwbHVnaW4tZWRpdGFibGUgZWRp dGFibGUiLCEwKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRlIiwiZm9udC1m YW1pbHkiOnMuZm9udEZhbWlseXx8IkFyaWFsIiwiZm9udC1zaXplIjpjLGNv bG9yOmUuZmlsbHx8cy5maWxsfHwiYmxhY2siLG9wYWNpdHk6MSwiYmFja2dy b3VuZC1jb2xvciI6ZS5iYWNrZ3JvdW5kfHwidHJhbnNwYXJlbnQiLG91dGxp bmU6IiNmZmZmZmYzMyAxcHggc29saWQiLG1hcmdpbjpbLWMvOCsxLDAsMCwt MV0uam9pbigicHggIikrInB4IixwYWRkaW5nOiIwIiwiYm94LXNpemluZyI6 ImJvcmRlci1ib3gifSkuYXR0cih7Y29udGVudGVkaXRhYmxlOiEwfSkudGV4 dCh1KS5jYWxsKEwodCxhLGUpKS5vbigiYmx1ciIsZnVuY3Rpb24oKXtyLl9l ZGl0aW5nPSExLHQudGV4dCh0aGlzLnRleHRDb250ZW50KS5zdHlsZSh7b3Bh Y2l0eToxfSk7dmFyIGUsYT1uLnNlbGVjdCh0aGlzKS5hdHRyKCJjbGFzcyIp OyhlPWE/Ii4iK2Euc3BsaXQoIiAiKVswXSsiLW1hdGgtZ3JvdXAiOiJbY2xh c3MqPS1tYXRoLWdyb3VwXSIpJiZuLnNlbGVjdCh0Lm5vZGUoKS5wYXJlbnRO b2RlKS5zZWxlY3QoZSkuc3R5bGUoe29wYWNpdHk6MH0pO3ZhciBvPXRoaXMu dGV4dENvbnRlbnQ7bi5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0 aW9uKDApLnJlbW92ZSgpLG4uc2VsZWN0KGRvY3VtZW50KS5vbigibW91c2V1 cCIsbnVsbCksaS5lZGl0LmNhbGwodCxvKX0pLm9uKCJmb2N1cyIsZnVuY3Rp b24oKXt2YXIgdD10aGlzO3IuX2VkaXRpbmc9ITAsbi5zZWxlY3QoZG9jdW1l bnQpLm9uKCJtb3VzZXVwIixmdW5jdGlvbigpe2lmKG4uZXZlbnQudGFyZ2V0 PT09dClyZXR1cm4hMTtkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09by5ub2Rl KCkmJm8ubm9kZSgpLmJsdXIoKX0pfSkub24oImtleXVwIixmdW5jdGlvbigp ezI3PT09bi5ldmVudC53aGljaD8oci5fZWRpdGluZz0hMSx0LnN0eWxlKHtv cGFjaXR5OjF9KSxuLnNlbGVjdCh0aGlzKS5zdHlsZSh7b3BhY2l0eTowfSku b24oImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuITF9KS50cmFuc2l0aW9uKCku cmVtb3ZlKCksaS5jYW5jZWwuY2FsbCh0LHRoaXMudGV4dENvbnRlbnQpKToo aS5pbnB1dC5jYWxsKHQsdGhpcy50ZXh0Q29udGVudCksbi5zZWxlY3QodGhp cykuY2FsbChMKHQsYSxlKSkpfSkub24oImtleWRvd24iLGZ1bmN0aW9uKCl7 MTM9PT1uLmV2ZW50LndoaWNoJiZ0aGlzLmJsdXIoKX0pLmNhbGwobCl9KCks dC5zdHlsZSh7b3BhY2l0eTowfSk7dmFyIGEscz1vLmF0dHIoImNsYXNzIik7 KGE9cz8iLiIrcy5zcGxpdCgiICIpWzBdKyItbWF0aC1ncm91cCI6IltjbGFz cyo9LW1hdGgtZ3JvdXBdIikmJm4uc2VsZWN0KHQubm9kZSgpLnBhcmVudE5v ZGUpLnNlbGVjdChhKS5zdHlsZSh7b3BhY2l0eTowfSl9ZnVuY3Rpb24gbCh0 KXt2YXIgZT10Lm5vZGUoKSxyPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7ci5z ZWxlY3ROb2RlQ29udGVudHMoZSk7dmFyIG49d2luZG93LmdldFNlbGVjdGlv bigpO24ucmVtb3ZlQWxsUmFuZ2VzKCksbi5hZGRSYW5nZShyKSxlLmZvY3Vz KCl9cmV0dXJuIGUuaW1tZWRpYXRlP3MoKTpvLm9uKCJjbGljayIscyksbi5y ZWJpbmQodCxpLCJvbiIpfX0seyIuLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2 ODYsIi4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4uL2xp YiI6NzE3LGQzOjE2NX1dLDc0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj17fTtmdW5jdGlvbiBhKHQpe3QmJm51bGwhPT10LnRpbWVy JiYoY2xlYXJUaW1lb3V0KHQudGltZXIpLHQudGltZXI9bnVsbCl9ci50aHJv dHRsZT1mdW5jdGlvbih0LGUscil7dmFyIGk9blt0XSxvPURhdGUubm93KCk7 aWYoIWkpe2Zvcih2YXIgcyBpbiBuKW5bc10udHM8by02ZTQmJmRlbGV0ZSBu W3NdO2k9blt0XT17dHM6MCx0aW1lcjpudWxsfX1mdW5jdGlvbiBsKCl7cigp LGkudHM9RGF0ZS5ub3coKSxpLm9uRG9uZSYmKGkub25Eb25lKCksaS5vbkRv bmU9bnVsbCl9YShpKSxvPmkudHMrZT9sKCk6aS50aW1lcj1zZXRUaW1lb3V0 KGZ1bmN0aW9uKCl7bCgpLGkudGltZXI9bnVsbH0sZSl9LHIuZG9uZT1mdW5j dGlvbih0KXt2YXIgZT1uW3RdO3JldHVybiBlJiZlLnRpbWVyP25ldyBQcm9t aXNlKGZ1bmN0aW9uKHQpe3ZhciByPWUub25Eb25lO2Uub25Eb25lPWZ1bmN0 aW9uKCl7ciYmcigpLHQoKSxlLm9uRG9uZT1udWxsfX0pOlByb21pc2UucmVz b2x2ZSgpfSxyLmNsZWFyPWZ1bmN0aW9uKHQpe2lmKHQpYShuW3RdKSxkZWxl dGUgblt0XTtlbHNlIGZvcih2YXIgZSBpbiBuKXIuY2xlYXIoZSl9fSx7fV0s NzQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZh c3QtaXNudW1lcmljIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYodD4w KXJldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMTA7dmFyIHI9TWF0aC5sb2co TWF0aC5taW4oZVswXSxlWzFdKSkvTWF0aC5MTjEwO3JldHVybiBuKHIpfHwo cj1NYXRoLmxvZyhNYXRoLm1heChlWzBdLGVbMV0pKS9NYXRoLkxOMTAtNiks cn19LHsiZmFzdC1pc251bWVyaWMiOjIyOH1dLDc0NDpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lLmV4cG9ydHM9e30sYT10KCIuLi9w bG90cy9nZW8vY29uc3RhbnRzIikubG9jYXRpb25tb2RlVG9MYXllcixpPXQo InRvcG9qc29uLWNsaWVudCIpLmZlYXR1cmU7bi5nZXRUb3BvanNvbk5hbWU9 ZnVuY3Rpb24odCl7cmV0dXJuW3Quc2NvcGUucmVwbGFjZSgvIC9nLCItIiks Il8iLHQucmVzb2x1dGlvbi50b1N0cmluZygpLCJtIl0uam9pbigiIil9LG4u Z2V0VG9wb2pzb25QYXRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZSsiLmpz b24ifSxuLmdldFRvcG9qc29uRmVhdHVyZXM9ZnVuY3Rpb24odCxlKXt2YXIg cj1hW3QubG9jYXRpb25tb2RlXSxuPWUub2JqZWN0c1tyXTtyZXR1cm4gaShl LG4pLmZlYXR1cmVzfX0seyIuLi9wbG90cy9nZW8vY29uc3RhbnRzIjo3OTMs InRvcG9qc29uLWNsaWVudCI6NTM5fV0sNzQ1OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToibG9jYWxlIixu YW1lOiJlbi1VUyIsZGljdGlvbmFyeTp7IkNsaWNrIHRvIGVudGVyIENvbG9y c2NhbGUgdGl0bGUiOiJDbGljayB0byBlbnRlciBDb2xvcnNjYWxlIHRpdGxl In0sZm9ybWF0OntkYXRlOiIlbS8lZC8lWSJ9fX0se31dLDc0NjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6 ImxvY2FsZSIsbmFtZToiZW4iLGRpY3Rpb25hcnk6eyJDbGljayB0byBlbnRl ciBDb2xvcnNjYWxlIHRpdGxlIjoiQ2xpY2sgdG8gZW50ZXIgQ29sb3Vyc2Nh bGUgdGl0bGUifSxmb3JtYXQ6e2RheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJU dWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1 cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRo dSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIs Ik1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIs IlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0s c2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJK dW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxwZXJp b2RzOlsiQU0iLCJQTSJdLGRhdGVUaW1lOiIlYSAlYiAlZSAlWCAlWSIsZGF0 ZToiJWQvJW0vJVkiLHRpbWU6IiVIOiVNOiVTIixkZWNpbWFsOiIuIix0aG91 c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSx5ZWFy OiIlWSIsbW9udGg6IiViICVZIixkYXlNb250aDoiJWIgJS1kIixkYXlNb250 aFllYXI6IiViICUtZCwgJVkifX19LHt9XSw3NDc6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcmVnaXN0cnkiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsYT1uLmxheW91dEFycmF5Q29u dGFpbmVycyxpPW4ubGF5b3V0QXJyYXlSZWdleGVzLG89dC5zcGxpdCgiWyIp WzBdLHM9MDtzPGkubGVuZ3RoO3MrKylpZigocj10Lm1hdGNoKGlbc10pKSYm MD09PXIuaW5kZXgpe2U9clswXTticmVha31pZihlfHwoZT1hW2EuaW5kZXhP ZihvKV0pLCFlKXJldHVybiExO3ZhciBsPXQuc3Vic3RyKGUubGVuZ3RoKTty ZXR1cm4gbD8hIShyPWwubWF0Y2goL15cWygwfFsxLTldWzAtOV0qKVxdKFwu KC4rKSk/JC8pKSYme2FycmF5OmUsaW5kZXg6TnVtYmVyKHJbMV0pLHByb3Bl cnR5OnJbM118fCIifTp7YXJyYXk6ZSxpbmRleDoiIixwcm9wZXJ0eToiIn19 fSx7Ii4uL3JlZ2lzdHJ5Ijo4NDZ9XSw3NDg6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliIiksYT1uLmV4dGVuZEZsYXQs aT1uLmlzUGxhaW5PYmplY3Qsbz17dmFsVHlwZToiZmxhZ2xpc3QiLGV4dHJh czpbIm5vbmUiXSxmbGFnczpbImNhbGMiLCJjbGVhckF4aXNUeXBlcyIsInBs b3QiLCJzdHlsZSIsIm1hcmtlclNpemUiLCJjb2xvcmJhcnMiXX0scz17dmFs VHlwZToiZmxhZ2xpc3QiLGV4dHJhczpbIm5vbmUiXSxmbGFnczpbImNhbGMi LCJwbG90IiwibGVnZW5kIiwidGlja3MiLCJheHJhbmdlIiwibGF5b3V0c3R5 bGUiLCJtb2RlYmFyIiwiY2FtZXJhIiwiYXJyYXlkcmF3IiwiY29sb3JiYXJz Il19LGw9by5mbGFncy5zbGljZSgpLmNvbmNhdChbImZ1bGxSZXBsb3QiXSks Yz1zLmZsYWdzLnNsaWNlKCkuY29uY2F0KCJsYXlvdXRSZXBsb3QiKTtmdW5j dGlvbiB1KHQpe2Zvcih2YXIgZT17fSxyPTA7cjx0Lmxlbmd0aDtyKyspZVt0 W3JdXT0hMTtyZXR1cm4gZX1mdW5jdGlvbiBoKHQsZSxyKXt2YXIgbj1hKHt9 LHQpO2Zvcih2YXIgbyBpbiBuKXt2YXIgcz1uW29dO2kocykmJihuW29dPWYo cyxlLHIsbykpfXJldHVybiJmcm9tLXJvb3QiPT09ciYmKG4uZWRpdFR5cGU9 ZSksbn1mdW5jdGlvbiBmKHQsZSxyLG4pe2lmKHQudmFsVHlwZSl7dmFyIGk9 YSh7fSx0KTtpZihpLmVkaXRUeXBlPWUsQXJyYXkuaXNBcnJheSh0Lml0ZW1z KSl7aS5pdGVtcz1uZXcgQXJyYXkodC5pdGVtcy5sZW5ndGgpO2Zvcih2YXIg bz0wO288dC5pdGVtcy5sZW5ndGg7bysrKWkuaXRlbXNbb109Zih0Lml0ZW1z W29dLGUsImZyb20tcm9vdCIpfXJldHVybiBpfXJldHVybiBoKHQsZSwiXyI9 PT1uLmNoYXJBdCgwKT8ibmVzdGVkIjoiZnJvbS1yb290Iil9ZS5leHBvcnRz PXt0cmFjZXM6byxsYXlvdXQ6cyx0cmFjZUZsYWdzOmZ1bmN0aW9uKCl7cmV0 dXJuIHUobCl9LGxheW91dEZsYWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHUoYyl9 LHVwZGF0ZTpmdW5jdGlvbih0LGUpe3ZhciByPWUuZWRpdFR5cGU7aWYociYm Im5vbmUiIT09cilmb3IodmFyIG49ci5zcGxpdCgiKyIpLGE9MDthPG4ubGVu Z3RoO2ErKyl0W25bYV1dPSEwfSxvdmVycmlkZUFsbDpofX0seyIuLi9saWIi OjcxN31dLDc0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiZ2wtbWF0NC9mcm9tUXVhdCIp LGk9dCgiLi4vcmVnaXN0cnkiKSxvPXQoIi4uL2xpYiIpLHM9dCgiLi4vcGxv dHMvcGxvdHMiKSxsPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIp LGM9dCgiLi4vY29tcG9uZW50cy9jb2xvciIpLHU9bC5jbGVhbklkLGg9bC5n ZXRGcm9tVHJhY2UsZj1pLnRyYWNlSXM7ZnVuY3Rpb24gcCh0LGUpe3ZhciBy PXRbZV0sbj1lLmNoYXJBdCgwKTtyJiYicGFwZXIiIT09ciYmKHRbZV09dShy LG4pKX1mdW5jdGlvbiBkKHQpe2Z1bmN0aW9uIGUoZSxyKXt2YXIgbj10W2Vd LGE9dC50aXRsZSYmdC50aXRsZVtyXTtuJiYhYSYmKHQudGl0bGV8fCh0LnRp dGxlPXt9KSx0LnRpdGxlW3JdPXRbZV0sZGVsZXRlIHRbZV0pfXQmJigic3Ry aW5nIiE9dHlwZW9mIHQudGl0bGUmJiJudW1iZXIiIT10eXBlb2YgdC50aXRs ZXx8KHQudGl0bGU9e3RleHQ6dC50aXRsZX0pLGUoInRpdGxlZm9udCIsImZv bnQiKSxlKCJ0aXRsZXBvc2l0aW9uIiwicG9zaXRpb24iKSxlKCJ0aXRsZXNp ZGUiLCJzaWRlIiksZSgidGl0bGVvZmZzZXQiLCJvZmZzZXQiKSl9ZnVuY3Rp b24gZyh0KXtpZighby5pc1BsYWluT2JqZWN0KHQpKXJldHVybiExO3ZhciBl PXQubmFtZTtyZXR1cm4gZGVsZXRlIHQubmFtZSxkZWxldGUgdC5zaG93bGVn ZW5kLCgic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZSkm JlN0cmluZyhlKX1mdW5jdGlvbiB2KHQsZSxyLG4pe2lmKHImJiFuKXJldHVy biB0O2lmKG4mJiFyKXJldHVybiBlO2lmKCF0LnRyaW0oKSlyZXR1cm4gZTtp ZighZS50cmltKCkpcmV0dXJuIHQ7dmFyIGEsaT1NYXRoLm1pbih0Lmxlbmd0 aCxlLmxlbmd0aCk7Zm9yKGE9MDthPGkmJnQuY2hhckF0KGEpPT09ZS5jaGFy QXQoYSk7YSsrKTtyZXR1cm4gdC5zdWJzdHIoMCxhKS50cmltKCl9ZnVuY3Rp b24gbSh0KXt2YXIgZT0ibWlkZGxlIixyPSJjZW50ZXIiO3JldHVybiJzdHJp bmciPT10eXBlb2YgdCYmKC0xIT09dC5pbmRleE9mKCJ0b3AiKT9lPSJ0b3Ai Oi0xIT09dC5pbmRleE9mKCJib3R0b20iKSYmKGU9ImJvdHRvbSIpLC0xIT09 dC5pbmRleE9mKCJsZWZ0Iik/cj0ibGVmdCI6LTEhPT10LmluZGV4T2YoInJp Z2h0IikmJihyPSJyaWdodCIpKSxlKyIgIityfWZ1bmN0aW9uIHkodCxlKXty ZXR1cm4gZSBpbiB0JiYib2JqZWN0Ij09dHlwZW9mIHRbZV0mJjA9PT1PYmpl Y3Qua2V5cyh0W2VdKS5sZW5ndGh9ci5jbGVhclByb21pc2VRdWV1ZT1mdW5j dGlvbih0KXtBcnJheS5pc0FycmF5KHQuX3Byb21pc2VzKSYmdC5fcHJvbWlz ZXMubGVuZ3RoPjAmJm8ubG9nKCJDbGVhcmluZyBwcmV2aW91cyByZWplY3Rl ZCBwcm9taXNlcyBmcm9tIHF1ZXVlLiIpLHQuX3Byb21pc2VzPVtdfSxyLmNs ZWFuTGF5b3V0PWZ1bmN0aW9uKHQpe3ZhciBlLG47dHx8KHQ9e30pLHQueGF4 aXMxJiYodC54YXhpc3x8KHQueGF4aXM9dC54YXhpczEpLGRlbGV0ZSB0Lnhh eGlzMSksdC55YXhpczEmJih0LnlheGlzfHwodC55YXhpcz10LnlheGlzMSks ZGVsZXRlIHQueWF4aXMxKSx0LnNjZW5lMSYmKHQuc2NlbmV8fCh0LnNjZW5l PXQuc2NlbmUxKSxkZWxldGUgdC5zY2VuZTEpO3ZhciBpPShzLnN1YnBsb3Rz UmVnaXN0cnkuY2FydGVzaWFufHx7fSkuYXR0clJlZ2V4LGw9KHMuc3VicGxv dHNSZWdpc3RyeS5wb2xhcnx8e30pLmF0dHJSZWdleCxoPShzLnN1YnBsb3Rz UmVnaXN0cnkudGVybmFyeXx8e30pLmF0dHJSZWdleCxmPShzLnN1YnBsb3Rz UmVnaXN0cnkuZ2wzZHx8e30pLmF0dHJSZWdleCxnPU9iamVjdC5rZXlzKHQp O2ZvcihlPTA7ZTxnLmxlbmd0aDtlKyspe3ZhciB2PWdbZV07aWYoaSYmaS50 ZXN0KHYpKXt2YXIgbT10W3ZdO20uYW5jaG9yJiYiZnJlZSIhPT1tLmFuY2hv ciYmKG0uYW5jaG9yPXUobS5hbmNob3IpKSxtLm92ZXJsYXlpbmcmJihtLm92 ZXJsYXlpbmc9dShtLm92ZXJsYXlpbmcpKSxtLnR5cGV8fChtLmlzZGF0ZT9t LnR5cGU9ImRhdGUiOm0uaXNsb2c/bS50eXBlPSJsb2ciOiExPT09bS5pc2Rh dGUmJiExPT09bS5pc2xvZyYmKG0udHlwZT0ibGluZWFyIikpLCJ3aXRoemVy byIhPT1tLmF1dG9yYW5nZSYmInRvemVybyIhPT1tLmF1dG9yYW5nZXx8KG0u YXV0b3JhbmdlPSEwLG0ucmFuZ2Vtb2RlPSJ0b3plcm8iKSxkZWxldGUgbS5p c2xvZyxkZWxldGUgbS5pc2RhdGUsZGVsZXRlIG0uY2F0ZWdvcmllcyx5KG0s ImRvbWFpbiIpJiZkZWxldGUgbS5kb21haW4sdm9pZCAwIT09bS5hdXRvdGlj ayYmKHZvaWQgMD09PW0udGlja21vZGUmJihtLnRpY2ttb2RlPW0uYXV0b3Rp Y2s/ImF1dG8iOiJsaW5lYXIiKSxkZWxldGUgbS5hdXRvdGljayksZChtKX1l bHNlIGlmKGwmJmwudGVzdCh2KSl7ZCh0W3ZdLnJhZGlhbGF4aXMpfWVsc2Ug aWYoaCYmaC50ZXN0KHYpKXt2YXIgeD10W3ZdO2QoeC5hYXhpcyksZCh4LmJh eGlzKSxkKHguY2F4aXMpfWVsc2UgaWYoZiYmZi50ZXN0KHYpKXt2YXIgYj10 W3ZdLF89Yi5jYW1lcmFwb3NpdGlvbjtpZihBcnJheS5pc0FycmF5KF8pJiY0 PT09X1swXS5sZW5ndGgpe3ZhciB3PV9bMF0saz1fWzFdLFQ9X1syXSxNPWEo W10sdyksQT1bXTtmb3Iobj0wO248MzsrK24pQVtuXT1rW25dK1QqTVsyKzQq bl07Yi5jYW1lcmE9e2V5ZTp7eDpBWzBdLHk6QVsxXSx6OkFbMl19LGNlbnRl cjp7eDprWzBdLHk6a1sxXSx6OmtbMl19LHVwOnt4OjAseTowLHo6MX19LGRl bGV0ZSBiLmNhbWVyYXBvc2l0aW9ufWQoYi54YXhpcyksZChiLnlheGlzKSxk KGIuemF4aXMpfX12YXIgUz1BcnJheS5pc0FycmF5KHQuYW5ub3RhdGlvbnMp P3QuYW5ub3RhdGlvbnMubGVuZ3RoOjA7Zm9yKGU9MDtlPFM7ZSsrKXt2YXIg RT10LmFubm90YXRpb25zW2VdO28uaXNQbGFpbk9iamVjdChFKSYmKEUucmVm JiYoInBhcGVyIj09PUUucmVmPyhFLnhyZWY9InBhcGVyIixFLnlyZWY9InBh cGVyIik6ImRhdGEiPT09RS5yZWYmJihFLnhyZWY9IngiLEUueXJlZj0ieSIp LGRlbGV0ZSBFLnJlZikscChFLCJ4cmVmIikscChFLCJ5cmVmIikpfXZhciBM PUFycmF5LmlzQXJyYXkodC5zaGFwZXMpP3Quc2hhcGVzLmxlbmd0aDowO2Zv cihlPTA7ZTxMO2UrKyl7dmFyIEM9dC5zaGFwZXNbZV07by5pc1BsYWluT2Jq ZWN0KEMpJiYocChDLCJ4cmVmIikscChDLCJ5cmVmIikpfXZhciBQPXQubGVn ZW5kO3JldHVybiBQJiYoUC54PjM/KFAueD0xLjAyLFAueGFuY2hvcj0ibGVm dCIpOlAueDwtMiYmKFAueD0tLjAyLFAueGFuY2hvcj0icmlnaHQiKSxQLnk+ Mz8oUC55PTEuMDIsUC55YW5jaG9yPSJib3R0b20iKTpQLnk8LTImJihQLnk9 LS4wMixQLnlhbmNob3I9InRvcCIpKSxkKHQpLCJyb3RhdGUiPT09dC5kcmFn bW9kZSYmKHQuZHJhZ21vZGU9Im9yYml0IiksYy5jbGVhbih0KSx0LnRlbXBs YXRlJiZ0LnRlbXBsYXRlLmxheW91dCYmci5jbGVhbkxheW91dCh0LnRlbXBs YXRlLmxheW91dCksdH0sci5jbGVhbkRhdGE9ZnVuY3Rpb24odCl7Zm9yKHZh ciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuLGE9dFtlXTtpZigiaGlzdG9n cmFteSI9PT1hLnR5cGUmJiJ4YmlucyJpbiBhJiYhKCJ5YmlucyJpbiBhKSYm KGEueWJpbnM9YS54YmlucyxkZWxldGUgYS54YmlucyksYS5lcnJvcl95JiYi b3BhY2l0eSJpbiBhLmVycm9yX3kpe3ZhciBsPWMuZGVmYXVsdHMsaD1hLmVy cm9yX3kuY29sb3J8fChmKGEsImJhciIpP2MuZGVmYXVsdExpbmU6bFtlJWwu bGVuZ3RoXSk7YS5lcnJvcl95LmNvbG9yPWMuYWRkT3BhY2l0eShjLnJnYiho KSxjLm9wYWNpdHkoaCkqYS5lcnJvcl95Lm9wYWNpdHkpLGRlbGV0ZSBhLmVy cm9yX3kub3BhY2l0eX1pZigiYmFyZGlyImluIGEmJigiaCIhPT1hLmJhcmRp cnx8IWYoYSwiYmFyIikmJiJoaXN0b2dyYW0iIT09YS50eXBlLnN1YnN0cigw LDkpfHwoYS5vcmllbnRhdGlvbj0iaCIsci5zd2FwWFlEYXRhKGEpKSxkZWxl dGUgYS5iYXJkaXIpLCJoaXN0b2dyYW15Ij09PWEudHlwZSYmci5zd2FwWFlE YXRhKGEpLCJoaXN0b2dyYW14IiE9PWEudHlwZSYmImhpc3RvZ3JhbXkiIT09 YS50eXBlfHwoYS50eXBlPSJoaXN0b2dyYW0iKSwic2NsImluIGEmJiEoImNv bG9yc2NhbGUiaW4gYSkmJihhLmNvbG9yc2NhbGU9YS5zY2wsZGVsZXRlIGEu c2NsKSwicmV2ZXJzZXNjbCJpbiBhJiYhKCJyZXZlcnNlc2NhbGUiaW4gYSkm JihhLnJldmVyc2VzY2FsZT1hLnJldmVyc2VzY2wsZGVsZXRlIGEucmV2ZXJz ZXNjbCksYS54YXhpcyYmKGEueGF4aXM9dShhLnhheGlzLCJ4IikpLGEueWF4 aXMmJihhLnlheGlzPXUoYS55YXhpcywieSIpKSxmKGEsImdsM2QiKSYmYS5z Y2VuZSYmKGEuc2NlbmU9cy5zdWJwbG90c1JlZ2lzdHJ5LmdsM2QuY2xlYW5J ZChhLnNjZW5lKSksIWYoYSwicGllLWxpa2UiKSYmIWYoYSwiYmFyLWxpa2Ui KSlpZihBcnJheS5pc0FycmF5KGEudGV4dHBvc2l0aW9uKSlmb3Iobj0wO248 YS50ZXh0cG9zaXRpb24ubGVuZ3RoO24rKylhLnRleHRwb3NpdGlvbltuXT1t KGEudGV4dHBvc2l0aW9uW25dKTtlbHNlIGEudGV4dHBvc2l0aW9uJiYoYS50 ZXh0cG9zaXRpb249bShhLnRleHRwb3NpdGlvbikpO3ZhciBwPWkuZ2V0TW9k dWxlKGEpO2lmKHAmJnAuY29sb3JiYXIpe3ZhciB4PXAuY29sb3JiYXIuY29u dGFpbmVyLGI9eD9hW3hdOmE7YiYmYi5jb2xvcnNjYWxlJiYoIllJR25CdSI9 PT1iLmNvbG9yc2NhbGUmJihiLmNvbG9yc2NhbGU9IllsR25CdSIpLCJZSU9y UmQiPT09Yi5jb2xvcnNjYWxlJiYoYi5jb2xvcnNjYWxlPSJZbE9yUmQiKSl9 aWYoInN1cmZhY2UiPT09YS50eXBlJiZvLmlzUGxhaW5PYmplY3QoYS5jb250 b3Vycykpe3ZhciBfPVsieCIsInkiLCJ6Il07Zm9yKG49MDtuPF8ubGVuZ3Ro O24rKyl7dmFyIHc9YS5jb250b3Vyc1tfW25dXTtvLmlzUGxhaW5PYmplY3Qo dykmJih3LmhpZ2hsaWdodENvbG9yJiYody5oaWdobGlnaHRjb2xvcj13Lmhp Z2hsaWdodENvbG9yLGRlbGV0ZSB3LmhpZ2hsaWdodENvbG9yKSx3LmhpZ2hs aWdodFdpZHRoJiYody5oaWdobGlnaHR3aWR0aD13LmhpZ2hsaWdodFdpZHRo LGRlbGV0ZSB3LmhpZ2hsaWdodFdpZHRoKSl9fWlmKCJjYW5kbGVzdGljayI9 PT1hLnR5cGV8fCJvaGxjIj09PWEudHlwZSl7dmFyIGs9ITEhPT0oYS5pbmNy ZWFzaW5nfHx7fSkuc2hvd2xlZ2VuZCxUPSExIT09KGEuZGVjcmVhc2luZ3x8 e30pLnNob3dsZWdlbmQsTT1nKGEuaW5jcmVhc2luZyksQT1nKGEuZGVjcmVh c2luZyk7aWYoITEhPT1NJiYhMSE9PUEpe3ZhciBTPXYoTSxBLGssVCk7UyYm KGEubmFtZT1TKX1lbHNlIU0mJiFBfHxhLm5hbWV8fChhLm5hbWU9TXx8QSl9 aWYoQXJyYXkuaXNBcnJheShhLnRyYW5zZm9ybXMpKXt2YXIgRT1hLnRyYW5z Zm9ybXM7Zm9yKG49MDtuPEUubGVuZ3RoO24rKyl7dmFyIEw9RVtuXTtpZihv LmlzUGxhaW5PYmplY3QoTCkpc3dpdGNoKEwudHlwZSl7Y2FzZSJmaWx0ZXIi OkwuZmlsdGVyc3JjJiYoTC50YXJnZXQ9TC5maWx0ZXJzcmMsZGVsZXRlIEwu ZmlsdGVyc3JjKSxMLmNhbGVuZGFyJiYoTC52YWx1ZWNhbGVuZGFyfHwoTC52 YWx1ZWNhbGVuZGFyPUwuY2FsZW5kYXIpLGRlbGV0ZSBMLmNhbGVuZGFyKTti cmVhaztjYXNlImdyb3VwYnkiOmlmKEwuc3R5bGVzPUwuc3R5bGVzfHxMLnN0 eWxlLEwuc3R5bGVzJiYhQXJyYXkuaXNBcnJheShMLnN0eWxlcykpe3ZhciBD PUwuc3R5bGVzLFA9T2JqZWN0LmtleXMoQyk7TC5zdHlsZXM9W107Zm9yKHZh ciBPPTA7TzxQLmxlbmd0aDtPKyspTC5zdHlsZXMucHVzaCh7dGFyZ2V0OlBb T10sdmFsdWU6Q1tQW09dXX0pfX19fXkoYSwibGluZSIpJiZkZWxldGUgYS5s aW5lLCJtYXJrZXIiaW4gYSYmKHkoYS5tYXJrZXIsImxpbmUiKSYmZGVsZXRl IGEubWFya2VyLmxpbmUseShhLCJtYXJrZXIiKSYmZGVsZXRlIGEubWFya2Vy KSxjLmNsZWFuKGEpLGEuYXV0b2JpbngmJihkZWxldGUgYS5hdXRvYmlueCxk ZWxldGUgYS54YmlucyksYS5hdXRvYmlueSYmKGRlbGV0ZSBhLmF1dG9iaW55 LGRlbGV0ZSBhLnliaW5zKSxkKGEpLGEuY29sb3JiYXImJmQoYS5jb2xvcmJh ciksYS5tYXJrZXImJmEubWFya2VyLmNvbG9yYmFyJiZkKGEubWFya2VyLmNv bG9yYmFyKSxhLmxpbmUmJmEubGluZS5jb2xvcmJhciYmZChhLmxpbmUuY29s b3JiYXIpLGEuYWF4aXMmJmQoYS5hYXhpcyksYS5iYXhpcyYmZChhLmJheGlz KX19LHIuc3dhcFhZRGF0YT1mdW5jdGlvbih0KXt2YXIgZTtpZihvLnN3YXBB dHRycyh0LFsiPyIsIj8wIiwiZD8iLCI/YmlucyIsIm5iaW5zPyIsImF1dG9i aW4/IiwiP3NyYyIsImVycm9yXz8iXSksQXJyYXkuaXNBcnJheSh0LnopJiZB cnJheS5pc0FycmF5KHQuelswXSkmJih0LnRyYW5zcG9zZT9kZWxldGUgdC50 cmFuc3Bvc2U6dC50cmFuc3Bvc2U9ITApLHQuZXJyb3JfeCYmdC5lcnJvcl95 KXt2YXIgcj10LmVycm9yX3ksbj0iY29weV95c3R5bGUiaW4gcj9yLmNvcHlf eXN0eWxlOiEoci5jb2xvcnx8ci50aGlja25lc3N8fHIud2lkdGgpO28uc3dh cEF0dHJzKHQsWyJlcnJvcl8/LmNvcHlfeXN0eWxlIl0pLG4mJm8uc3dhcEF0 dHJzKHQsWyJlcnJvcl8/LmNvbG9yIiwiZXJyb3JfPy50aGlja25lc3MiLCJl cnJvcl8/LndpZHRoIl0pfWlmKCJzdHJpbmciPT10eXBlb2YgdC5ob3Zlcmlu Zm8pe3ZhciBhPXQuaG92ZXJpbmZvLnNwbGl0KCIrIik7Zm9yKGU9MDtlPGEu bGVuZ3RoO2UrKykieCI9PT1hW2VdP2FbZV09InkiOiJ5Ij09PWFbZV0mJihh W2VdPSJ4Iik7dC5ob3ZlcmluZm89YS5qb2luKCIrIil9fSxyLmNvZXJjZVRy YWNlSW5kaWNlcz1mdW5jdGlvbih0LGUpe2lmKG4oZSkpcmV0dXJuW2VdO2lm KCFBcnJheS5pc0FycmF5KGUpfHwhZS5sZW5ndGgpcmV0dXJuIHQuZGF0YS5t YXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pO2lmKEFycmF5LmlzQXJyYXko ZSkpe2Zvcih2YXIgcj1bXSxhPTA7YTxlLmxlbmd0aDthKyspby5pc0luZGV4 KGVbYV0sdC5kYXRhLmxlbmd0aCk/ci5wdXNoKGVbYV0pOm8ud2FybigidHJh Y2UgaW5kZXggKCIsZVthXSwiKSBpcyBub3QgYSBudW1iZXIgb3IgaXMgb3V0 IG9mIGJvdW5kcyIpO3JldHVybiByfXJldHVybiBlfSxyLm1hbmFnZUFycmF5 Q29udGFpbmVycz1mdW5jdGlvbih0LGUscil7dmFyIGE9dC5vYmosaT10LnBh cnRzLHM9aS5sZW5ndGgsbD1pW3MtMV0sYz1uKGwpO2lmKGMmJm51bGw9PT1l KXt2YXIgdT1pLnNsaWNlKDAscy0xKS5qb2luKCIuIik7by5uZXN0ZWRQcm9w ZXJ0eShhLHUpLmdldCgpLnNwbGljZShsLDEpfWVsc2UgYyYmdm9pZCAwPT09 dC5nZXQoKT8odm9pZCAwPT09dC5nZXQoKSYmKHJbdC5hc3RyXT1udWxsKSx0 LnNldChlKSk6dC5zZXQoZSl9O3ZhciB4PS8oXC5bXlxbXF1cLl0rfFxbW15c W1xdXC5dK1xdKSQvO2Z1bmN0aW9uIGIodCl7dmFyIGU9dC5zZWFyY2goeCk7 aWYoZT4wKXJldHVybiB0LnN1YnN0cigwLGUpfXIuaGFzUGFyZW50PWZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPWIoZSk7cjspe2lmKHIgaW4gdClyZXR1cm4h MDtyPWIocil9cmV0dXJuITF9O3ZhciBfPVsieCIsInkiLCJ6Il07ci5jbGVh ckF4aXNUeXBlcz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPTA7bjxlLmxl bmd0aDtuKyspZm9yKHZhciBhPXQuX2Z1bGxEYXRhW25dLGk9MDtpPDM7aSsr KXt2YXIgcz1oKHQsYSxfW2ldKTtpZihzJiYibG9nIiE9PXMudHlwZSl7dmFy IGw9cy5fbmFtZSxjPXMuX2lkLnN1YnN0cigxKTtpZigic2NlbmUiPT09Yy5z dWJzdHIoMCw1KSl7aWYodm9pZCAwIT09cltjXSljb250aW51ZTtsPWMrIi4i K2x9dmFyIHU9bCsiLnR5cGUiO3ZvaWQgMD09PXJbbF0mJnZvaWQgMD09PXJb dV0mJm8ubmVzdGVkUHJvcGVydHkodC5sYXlvdXQsdSkuc2V0KG51bGwpfX19 fSx7Ii4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vbGliIjo3MTcsIi4u L3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCIuLi9wbG90cy9wbG90 cyI6ODI2LCIuLi9yZWdpc3RyeSI6ODQ2LCJmYXN0LWlzbnVtZXJpYyI6MjI4 LCJnbC1tYXQ0L2Zyb21RdWF0IjoyNjV9XSw3NTA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9wbG90X2FwaSIpO3IucGxvdD1u LnBsb3Qsci5uZXdQbG90PW4ubmV3UGxvdCxyLnJlc3R5bGU9bi5yZXN0eWxl LHIucmVsYXlvdXQ9bi5yZWxheW91dCxyLnJlZHJhdz1uLnJlZHJhdyxyLnVw ZGF0ZT1uLnVwZGF0ZSxyLl9ndWlSZXN0eWxlPW4uX2d1aVJlc3R5bGUsci5f Z3VpUmVsYXlvdXQ9bi5fZ3VpUmVsYXlvdXQsci5fZ3VpVXBkYXRlPW4uX2d1 aVVwZGF0ZSxyLl9zdG9yZURpcmVjdEdVSUVkaXQ9bi5fc3RvcmVEaXJlY3RH VUlFZGl0LHIucmVhY3Q9bi5yZWFjdCxyLmV4dGVuZFRyYWNlcz1uLmV4dGVu ZFRyYWNlcyxyLnByZXBlbmRUcmFjZXM9bi5wcmVwZW5kVHJhY2VzLHIuYWRk VHJhY2VzPW4uYWRkVHJhY2VzLHIuZGVsZXRlVHJhY2VzPW4uZGVsZXRlVHJh Y2VzLHIubW92ZVRyYWNlcz1uLm1vdmVUcmFjZXMsci5wdXJnZT1uLnB1cmdl LHIuYWRkRnJhbWVzPW4uYWRkRnJhbWVzLHIuZGVsZXRlRnJhbWVzPW4uZGVs ZXRlRnJhbWVzLHIuYW5pbWF0ZT1uLmFuaW1hdGUsci5zZXRQbG90Q29uZmln PW4uc2V0UGxvdENvbmZpZyxyLnRvSW1hZ2U9dCgiLi90b19pbWFnZSIpLHIu dmFsaWRhdGU9dCgiLi92YWxpZGF0ZSIpLHIuZG93bmxvYWRJbWFnZT10KCIu Li9zbmFwc2hvdC9kb3dubG9hZCIpO3ZhciBhPXQoIi4vdGVtcGxhdGVfYXBp Iik7ci5tYWtlVGVtcGxhdGU9YS5tYWtlVGVtcGxhdGUsci52YWxpZGF0ZVRl bXBsYXRlPWEudmFsaWRhdGVUZW1wbGF0ZX0seyIuLi9zbmFwc2hvdC9kb3du bG9hZCI6ODQ4LCIuL3Bsb3RfYXBpIjo3NTIsIi4vdGVtcGxhdGVfYXBpIjo3 NTcsIi4vdG9faW1hZ2UiOjc1OCwiLi92YWxpZGF0ZSI6NzU5fV0sNzUxOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYi9p c19wbGFpbl9vYmplY3QiKSxhPXQoIi4uL2xpYi9ub29wIiksaT10KCIuLi9s aWIvbG9nZ2VycyIpLG89dCgiLi4vbGliL3NlYXJjaCIpLnNvcnRlckFzYyxz PXQoIi4uL3JlZ2lzdHJ5Iik7ci5jb250YWluZXJBcnJheU1hdGNoPXQoIi4v Y29udGFpbmVyX2FycmF5X21hdGNoIik7dmFyIGw9ci5pc0FkZFZhbD1mdW5j dGlvbih0KXtyZXR1cm4iYWRkIj09PXR8fG4odCl9LGM9ci5pc1JlbW92ZVZh bD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXR8fCJyZW1vdmUiPT09dH07 ci5hcHBseUNvbnRhaW5lckFycmF5Q2hhbmdlcz1mdW5jdGlvbih0LGUscixu LHUpe3ZhciBoPWUuYXN0cixmPXMuZ2V0Q29tcG9uZW50TWV0aG9kKGgsInN1 cHBseUxheW91dERlZmF1bHRzIikscD1zLmdldENvbXBvbmVudE1ldGhvZCho LCJkcmF3IiksZD1zLmdldENvbXBvbmVudE1ldGhvZChoLCJkcmF3T25lIiks Zz1uLnJlcGxvdHx8bi5yZWNhbGN8fGY9PT1hfHxwPT09YSx2PXQubGF5b3V0 LG09dC5fZnVsbExheW91dDtpZihyWyIiXSl7T2JqZWN0LmtleXMocikubGVu Z3RoPjEmJmkud2FybigiRnVsbCBhcnJheSBlZGl0cyBhcmUgaW5jb21wYXRp YmxlIHdpdGggb3RoZXIgZWRpdHMiLGgpO3ZhciB5PXJbIiJdWyIiXTtpZihj KHkpKWUuc2V0KG51bGwpO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoeSkpcmV0 dXJuIGkud2FybigiVW5yZWNvZ25pemVkIGZ1bGwgYXJyYXkgZWRpdCB2YWx1 ZSIsaCx5KSwhMDtlLnNldCh5KX1yZXR1cm4hZyYmKGYodixtKSxwKHQpLCEw KX12YXIgeCxiLF8sdyxrLFQsTSxBLFM9T2JqZWN0LmtleXMocikubWFwKE51 bWJlcikuc29ydChvKSxFPWUuZ2V0KCksTD1FfHxbXSxDPXUobSxoKS5nZXQo KSxQPVtdLE89LTEsej1MLmxlbmd0aDtmb3IoeD0wO3g8Uy5sZW5ndGg7eCsr KWlmKHc9cltfPVNbeF1dLGs9T2JqZWN0LmtleXModyksVD13WyIiXSxNPWwo VCksXzwwfHxfPkwubGVuZ3RoLShNPzA6MSkpaS53YXJuKCJpbmRleCBvdXQg b2YgcmFuZ2UiLGgsXyk7ZWxzZSBpZih2b2lkIDAhPT1UKWsubGVuZ3RoPjEm Jmkud2FybigiSW5zZXJ0aW9uICYgcmVtb3ZhbCBhcmUgaW5jb21wYXRpYmxl IHdpdGggZWRpdHMgdG8gdGhlIHNhbWUgaW5kZXguIixoLF8pLGMoVCk/UC5w dXNoKF8pOk0/KCJhZGQiPT09VCYmKFQ9e30pLEwuc3BsaWNlKF8sMCxUKSxD JiZDLnNwbGljZShfLDAse30pKTppLndhcm4oIlVucmVjb2duaXplZCBmdWxs IG9iamVjdCBlZGl0IHZhbHVlIixoLF8sVCksLTE9PT1PJiYoTz1fKTtlbHNl IGZvcihiPTA7YjxrLmxlbmd0aDtiKyspQT1oKyJbIitfKyJdLiIsdShMW19d LGtbYl0sQSkuc2V0KHdba1tiXV0pO2Zvcih4PVAubGVuZ3RoLTE7eD49MDt4 LS0pTC5zcGxpY2UoUFt4XSwxKSxDJiZDLnNwbGljZShQW3hdLDEpO2lmKEwu bGVuZ3RoP0V8fGUuc2V0KEwpOmUuc2V0KG51bGwpLGcpcmV0dXJuITE7aWYo Zih2LG0pLGQhPT1hKXt2YXIgSTtpZigtMT09PU8pST1TO2Vsc2V7Zm9yKHo9 TWF0aC5tYXgoTC5sZW5ndGgseiksST1bXSx4PTA7eDxTLmxlbmd0aCYmISgo Xz1TW3hdKT49Tyk7eCsrKUkucHVzaChfKTtmb3IoeD1PO3g8ejt4KyspSS5w dXNoKHgpfWZvcih4PTA7eDxJLmxlbmd0aDt4KyspZCh0LElbeF0pfWVsc2Ug cCh0KTtyZXR1cm4hMH19LHsiLi4vbGliL2lzX3BsYWluX29iamVjdCI6NzE4 LCIuLi9saWIvbG9nZ2VycyI6NzIxLCIuLi9saWIvbm9vcCI6NzI2LCIuLi9s aWIvc2VhcmNoIjo3MzYsIi4uL3JlZ2lzdHJ5Ijo4NDYsIi4vY29udGFpbmVy X2FycmF5X21hdGNoIjo3NDd9XSw3NTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoImZhc3QtaXNudW1lcmljIiks aT10KCJoYXMtaG92ZXIiKSxvPXQoIi4uL2xpYiIpLHM9by5uZXN0ZWRQcm9w ZXJ0eSxsPXQoIi4uL2xpYi9ldmVudHMiKSxjPXQoIi4uL2xpYi9xdWV1ZSIp LHU9dCgiLi4vcmVnaXN0cnkiKSxoPXQoIi4vcGxvdF9zY2hlbWEiKSxmPXQo Ii4uL3Bsb3RzL3Bsb3RzIikscD10KCIuLi9wbG90cy9wb2xhci9sZWdhY3ki KSxkPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksZz10KCIuLi9jb21w b25lbnRzL2RyYXdpbmciKSx2PXQoIi4uL2NvbXBvbmVudHMvY29sb3IiKSxt PXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9ncmFwaF9pbnRlcmFjdCIpLmluaXRJ bnRlcmFjdGlvbnMseT10KCIuLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNl cyIpLHg9dCgiLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksYj10KCIuLi9wbG90 cy9jYXJ0ZXNpYW4vc2VsZWN0IikuY2xlYXJTZWxlY3QsXz10KCIuL3Bsb3Rf Y29uZmlnIikuZGZsdENvbmZpZyx3PXQoIi4vbWFuYWdlX2FycmF5cyIpLGs9 dCgiLi9oZWxwZXJzIiksVD10KCIuL3N1YnJvdXRpbmVzIiksTT10KCIuL2Vk aXRfdHlwZXMiKSxBPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMi KS5BWF9OQU1FX1BBVFRFUk4sUz0wLEU9NTtmdW5jdGlvbiBMKHQpe3ZhciBl PXQuX2Z1bGxMYXlvdXQ7ZS5fcmVkcmF3RnJvbUF1dG9NYXJnaW5Db3VudD9l Ll9yZWRyYXdGcm9tQXV0b01hcmdpbkNvdW50LS06dC5lbWl0KCJwbG90bHlf YWZ0ZXJwbG90Iil9ZnVuY3Rpb24gQyh0LGUpe3RyeXt0Ll9mdWxsTGF5b3V0 Ll9wYXBlci5zdHlsZSgiYmFja2dyb3VuZCIsZSl9Y2F0Y2godCl7by5lcnJv cih0KX19ZnVuY3Rpb24gUCh0LGUpe0ModCx2LmNvbWJpbmUoZSwid2hpdGUi KSl9ZnVuY3Rpb24gTyh0LGUpe2lmKCF0Ll9jb250ZXh0KXt0Ll9jb250ZXh0 PW8uZXh0ZW5kRGVlcCh7fSxfKTt2YXIgcj1uLnNlbGVjdCgiYmFzZSIpO3Qu X2NvbnRleHQuX2Jhc2VVcmw9ci5zaXplKCkmJnIuYXR0cigiaHJlZiIpP3dp bmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCIjIilbMF06IiJ9dmFyIGEscyxs LGM9dC5fY29udGV4dDtpZihlKXtmb3Iocz1PYmplY3Qua2V5cyhlKSxhPTA7 YTxzLmxlbmd0aDthKyspImVkaXRhYmxlIiE9PShsPXNbYV0pJiYiZWRpdHMi IT09bCYmbCBpbiBjJiYoInNldEJhY2tncm91bmQiPT09bCYmIm9wYXF1ZSI9 PT1lW2xdP2NbbF09UDpjW2xdPWVbbF0pO2UucGxvdDNkUGl4ZWxSYXRpbyYm IWMucGxvdEdsUGl4ZWxSYXRpbyYmKGMucGxvdEdsUGl4ZWxSYXRpbz1jLnBs b3QzZFBpeGVsUmF0aW8pO3ZhciB1PWUuZWRpdGFibGU7aWYodm9pZCAwIT09 dSlmb3IoYy5lZGl0YWJsZT11LHM9T2JqZWN0LmtleXMoYy5lZGl0cyksYT0w O2E8cy5sZW5ndGg7YSsrKWMuZWRpdHNbc1thXV09dTtpZihlLmVkaXRzKWZv cihzPU9iamVjdC5rZXlzKGUuZWRpdHMpLGE9MDthPHMubGVuZ3RoO2ErKyko bD1zW2FdKWluIGMuZWRpdHMmJihjLmVkaXRzW2xdPWUuZWRpdHNbbF0pO2Mu X2V4cG9ydGVkUGxvdD1lLl9leHBvcnRlZFBsb3R9Yy5zdGF0aWNQbG90JiYo Yy5lZGl0YWJsZT0hMSxjLmVkaXRzPXt9LGMuYXV0b3NpemFibGU9ITEsYy5z Y3JvbGxab29tPSExLGMuZG91YmxlQ2xpY2s9ITEsYy5zaG93VGlwcz0hMSxj LnNob3dMaW5rPSExLGMuZGlzcGxheU1vZGVCYXI9ITEpLCJob3ZlciIhPT1j LmRpc3BsYXlNb2RlQmFyfHxpfHwoYy5kaXNwbGF5TW9kZUJhcj0hMCksInRy YW5zcGFyZW50IiE9PWMuc2V0QmFja2dyb3VuZCYmImZ1bmN0aW9uIj09dHlw ZW9mIGMuc2V0QmFja2dyb3VuZHx8KGMuc2V0QmFja2dyb3VuZD1DKSxjLl9o YXNaZXJvSGVpZ2h0PWMuX2hhc1plcm9IZWlnaHR8fDA9PT10LmNsaWVudEhl aWdodCxjLl9oYXNaZXJvV2lkdGg9Yy5faGFzWmVyb1dpZHRofHwwPT09dC5j bGllbnRXaWR0aDt2YXIgaD1jLnNjcm9sbFpvb20sZj1jLl9zY3JvbGxab29t PXt9O2lmKCEwPT09aClmLmNhcnRlc2lhbj0xLGYuZ2wzZD0xLGYuZ2VvPTEs Zi5tYXBib3g9MTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgaCl7dmFyIHA9 aC5zcGxpdCgiKyIpO2ZvcihhPTA7YTxwLmxlbmd0aDthKyspZltwW2FdXT0x fWVsc2UhMSE9PWgmJihmLmdsM2Q9MSxmLmdlbz0xLGYubWFwYm94PTEpfWZ1 bmN0aW9uIHoodCxlKXt2YXIgcixuLGE9ZSsxLGk9W107Zm9yKHI9MDtyPHQu bGVuZ3RoO3IrKykobj10W3JdKTwwP2kucHVzaChhK24pOmkucHVzaChuKTty ZXR1cm4gaX1mdW5jdGlvbiBJKHQsZSxyKXt2YXIgbixhO2ZvcihuPTA7bjxl Lmxlbmd0aDtuKyspe2lmKChhPWVbbl0pIT09cGFyc2VJbnQoYSwxMCkpdGhy b3cgbmV3IEVycm9yKCJhbGwgdmFsdWVzIGluICIrcisiIG11c3QgYmUgaW50 ZWdlcnMiKTtpZihhPj10LmRhdGEubGVuZ3RofHxhPC10LmRhdGEubGVuZ3Ro KXRocm93IG5ldyBFcnJvcihyKyIgbXVzdCBiZSB2YWxpZCBpbmRpY2VzIGZv ciBnZC5kYXRhLiIpO2lmKGUuaW5kZXhPZihhLG4rMSk+LTF8fGE+PTAmJmUu aW5kZXhPZigtdC5kYXRhLmxlbmd0aCthKT4tMXx8YTwwJiZlLmluZGV4T2Yo dC5kYXRhLmxlbmd0aCthKT4tMSl0aHJvdyBuZXcgRXJyb3IoImVhY2ggaW5k ZXggaW4gIityKyIgbXVzdCBiZSB1bmlxdWUuIil9fWZ1bmN0aW9uIEQodCxl LHIpe2lmKCFBcnJheS5pc0FycmF5KHQuZGF0YSkpdGhyb3cgbmV3IEVycm9y KCJnZC5kYXRhIG11c3QgYmUgYW4gYXJyYXkuIik7aWYoInVuZGVmaW5lZCI9 PXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiY3VycmVudEluZGljZXMgaXMg YSByZXF1aXJlZCBhcmd1bWVudC4iKTtpZihBcnJheS5pc0FycmF5KGUpfHwo ZT1bZV0pLEkodCxlLCJjdXJyZW50SW5kaWNlcyIpLCJ1bmRlZmluZWQiPT10 eXBlb2Ygcnx8QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKSwidW5kZWZpbmVk IiE9dHlwZW9mIHImJkkodCxyLCJuZXdJbmRpY2VzIiksInVuZGVmaW5lZCIh PXR5cGVvZiByJiZlLmxlbmd0aCE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJv cigiY3VycmVudCBhbmQgbmV3IGluZGljZXMgbXVzdCBiZSBvZiBlcXVhbCBs ZW5ndGguIil9ZnVuY3Rpb24gUih0LGUscixuLGkpeyFmdW5jdGlvbih0LGUs cixuKXt2YXIgYT1vLmlzUGxhaW5PYmplY3Qobik7aWYoIUFycmF5LmlzQXJy YXkodC5kYXRhKSl0aHJvdyBuZXcgRXJyb3IoImdkLmRhdGEgbXVzdCBiZSBh biBhcnJheSIpO2lmKCFvLmlzUGxhaW5PYmplY3QoZSkpdGhyb3cgbmV3IEVy cm9yKCJ1cGRhdGUgbXVzdCBiZSBhIGtleTp2YWx1ZSBvYmplY3QiKTtpZigi dW5kZWZpbmVkIj09dHlwZW9mIHIpdGhyb3cgbmV3IEVycm9yKCJpbmRpY2Vz IG11c3QgYmUgYW4gaW50ZWdlciBvciBhcnJheSBvZiBpbnRlZ2VycyIpO2Zv cih2YXIgaSBpbiBJKHQsciwiaW5kaWNlcyIpLGUpe2lmKCFBcnJheS5pc0Fy cmF5KGVbaV0pfHxlW2ldLmxlbmd0aCE9PXIubGVuZ3RoKXRocm93IG5ldyBF cnJvcigiYXR0cmlidXRlICIraSsiIG11c3QgYmUgYW4gYXJyYXkgb2YgbGVu Z3RoIGVxdWFsIHRvIGluZGljZXMgYXJyYXkgbGVuZ3RoIik7aWYoYSYmKCEo aSBpbiBuKXx8IUFycmF5LmlzQXJyYXkobltpXSl8fG5baV0ubGVuZ3RoIT09 ZVtpXS5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigid2hlbiBtYXhQb2ludHMg aXMgc2V0IGFzIGEga2V5OnZhbHVlIG9iamVjdCBpdCBtdXN0IGNvbnRhaW4g YSAxOjEgY29ycmlzcG9uZGVuY2Ugd2l0aCB0aGUga2V5cyBhbmQgbnVtYmVy IG9mIHRyYWNlcyBpbiB0aGUgdXBkYXRlIG9iamVjdCIpfX0odCxlLHIsbik7 Zm9yKHZhciBsPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpLGwsYyx1LGgsZj1v LmlzUGxhaW5PYmplY3QobikscD1bXTtmb3IodmFyIGQgaW4gQXJyYXkuaXNB cnJheShyKXx8KHI9W3JdKSxyPXoocix0LmRhdGEubGVuZ3RoLTEpLGUpZm9y KHZhciBnPTA7ZzxyLmxlbmd0aDtnKyspe2lmKGk9dC5kYXRhW3JbZ11dLGw9 KGM9cyhpLGQpKS5nZXQoKSx1PWVbZF1bZ10sIW8uaXNBcnJheU9yVHlwZWRB cnJheSh1KSl0aHJvdyBuZXcgRXJyb3IoImF0dHJpYnV0ZTogIitkKyIgaW5k ZXg6ICIrZysiIG11c3QgYmUgYW4gYXJyYXkiKTtpZighby5pc0FycmF5T3JU eXBlZEFycmF5KGwpKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGV4dGVuZCBt aXNzaW5nIG9yIG5vbi1hcnJheSBhdHRyaWJ1dGU6ICIrZCk7aWYobC5jb25z dHJ1Y3RvciE9PXUuY29uc3RydWN0b3IpdGhyb3cgbmV3IEVycm9yKCJjYW5u b3QgZXh0ZW5kIGFycmF5IHdpdGggYW4gYXJyYXkgb2YgYSBkaWZmZXJlbnQg dHlwZTogIitkKTtoPWY/bltkXVtnXTpuLGEoaCl8fChoPS0xKSxwLnB1c2go e3Byb3A6Yyx0YXJnZXQ6bCxpbnNlcnQ6dSxtYXhwOk1hdGguZmxvb3IoaCl9 KX1yZXR1cm4gcH0odCxlLHIsbiksYz17fSx1PXt9LGg9MDtoPGwubGVuZ3Ro O2grKyl7dmFyIGY9bFtoXS5wcm9wLHA9bFtoXS5tYXhwLGQ9aShsW2hdLnRh cmdldCxsW2hdLmluc2VydCxwKTtmLnNldChkWzBdKSxBcnJheS5pc0FycmF5 KGNbZi5hc3RyXSl8fChjW2YuYXN0cl09W10pLGNbZi5hc3RyXS5wdXNoKGRb MV0pLEFycmF5LmlzQXJyYXkodVtmLmFzdHJdKXx8KHVbZi5hc3RyXT1bXSks dVtmLmFzdHJdLnB1c2gobFtoXS50YXJnZXQubGVuZ3RoKX1yZXR1cm57dXBk YXRlOmMsbWF4UG9pbnRzOnV9fWZ1bmN0aW9uIEYodCxlKXt2YXIgcj1uZXcg dC5jb25zdHJ1Y3Rvcih0Lmxlbmd0aCtlLmxlbmd0aCk7cmV0dXJuIHIuc2V0 KHQpLHIuc2V0KGUsdC5sZW5ndGgpLHJ9ZnVuY3Rpb24gQih0LGUsbixhKXt0 PW8uZ2V0R3JhcGhEaXYodCksay5jbGVhclByb21pc2VRdWV1ZSh0KTt2YXIg aT17fTtpZigic3RyaW5nIj09dHlwZW9mIGUpaVtlXT1uO2Vsc2V7aWYoIW8u aXNQbGFpbk9iamVjdChlKSlyZXR1cm4gby53YXJuKCJSZXN0eWxlIGZhaWwu IixlLG4sYSksUHJvbWlzZS5yZWplY3QoKTtpPW8uZXh0ZW5kRmxhdCh7fSxl KSx2b2lkIDA9PT1hJiYoYT1uKX1PYmplY3Qua2V5cyhpKS5sZW5ndGgmJih0 LmNoYW5nZWQ9ITApO3ZhciBzPWsuY29lcmNlVHJhY2VJbmRpY2VzKHQsYSks bD1VKHQsaSxzKSx1PWwuZmxhZ3M7dS5jYWxjJiYodC5jYWxjZGF0YT12b2lk IDApLHUuY2xlYXJBeGlzVHlwZXMmJmsuY2xlYXJBeGlzVHlwZXModCxzLHt9 KTt2YXIgaD1bXTt1LmZ1bGxSZXBsb3Q/aC5wdXNoKHIucGxvdCk6KGgucHVz aChmLnByZXZpb3VzUHJvbWlzZXMpLGYuc3VwcGx5RGVmYXVsdHModCksdS5t YXJrZXJTaXplJiYoZi5kb0NhbGNkYXRhKHQpLFkoaCkpLHUuc3R5bGUmJmgu cHVzaChULmRvVHJhY2VTdHlsZSksdS5jb2xvcmJhcnMmJmgucHVzaChULmRv Q29sb3JCYXJzKSxoLnB1c2goTCkpLGgucHVzaChmLnJlaG92ZXIsZi5yZWRy YWcpLGMuYWRkKHQsQixbdCxsLnVuZG9pdCxsLnRyYWNlc10sQixbdCxsLnJl ZG9pdCxsLnRyYWNlc10pO3ZhciBwPW8uc3luY09yQXN5bmMoaCx0KTtyZXR1 cm4gcCYmcC50aGVufHwocD1Qcm9taXNlLnJlc29sdmUoKSkscC50aGVuKGZ1 bmN0aW9uKCl7cmV0dXJuIHQuZW1pdCgicGxvdGx5X3Jlc3R5bGUiLGwuZXZl bnREYXRhKSx0fSl9ZnVuY3Rpb24gTih0KXtyZXR1cm4gdm9pZCAwPT09dD9u dWxsOnR9ZnVuY3Rpb24gaih0LGUpe3JldHVybiBlP2Z1bmN0aW9uKGUscixu KXt2YXIgYT1zKGUsciksaT1hLnNldDtyZXR1cm4gYS5zZXQ9ZnVuY3Rpb24o ZSl7Vigobnx8IiIpK3IsYS5nZXQoKSxlLHQpLGkoZSl9LGF9OnN9ZnVuY3Rp b24gVih0LGUscixuKXtpZihBcnJheS5pc0FycmF5KGUpfHxBcnJheS5pc0Fy cmF5KHIpKWZvcih2YXIgYT1BcnJheS5pc0FycmF5KGUpP2U6W10saT1BcnJh eS5pc0FycmF5KHIpP3I6W10scz1NYXRoLm1heChhLmxlbmd0aCxpLmxlbmd0 aCksbD0wO2w8cztsKyspVih0KyJbIitsKyJdIixhW2xdLGlbbF0sbik7ZWxz ZSBpZihvLmlzUGxhaW5PYmplY3QoZSl8fG8uaXNQbGFpbk9iamVjdChyKSl7 dmFyIGM9by5pc1BsYWluT2JqZWN0KGUpP2U6e30sdT1vLmlzUGxhaW5PYmpl Y3Qocik/cjp7fSxoPW8uZXh0ZW5kRmxhdCh7fSxjLHUpO2Zvcih2YXIgZiBp biBoKVYodCsiLiIrZixjW2ZdLHVbZl0sbil9ZWxzZSB2b2lkIDA9PT1uW3Rd JiYoblt0XT1OKGUpKX1mdW5jdGlvbiBVKHQsZSxyKXt2YXIgbixhPXQuX2Z1 bGxMYXlvdXQsaT10Ll9mdWxsRGF0YSxsPXQuZGF0YSxjPWEuX2d1aUVkaXRp bmcscD1qKGEuX3ByZUdVSSxjKSxnPW8uZXh0ZW5kRGVlcEFsbCh7fSxlKTtx KGUpO3ZhciB2LG09TS50cmFjZUZsYWdzKCkseT17fSx4PXt9O2Z1bmN0aW9u IGIoKXtyZXR1cm4gci5tYXAoZnVuY3Rpb24oKXt9KX1mdW5jdGlvbiBfKHQp e3ZhciBlPWQuaWQybmFtZSh0KTstMT09PXYuaW5kZXhPZihlKSYmdi5wdXNo KGUpfWZ1bmN0aW9uIHcodCl7cmV0dXJuIkxBWU9VVCIrdCsiLmF1dG9yYW5n ZSJ9ZnVuY3Rpb24gVCh0KXtyZXR1cm4iTEFZT1VUIit0KyIucmFuZ2UifWZ1 bmN0aW9uIEEodCl7Zm9yKHZhciBlPXQ7ZTxpLmxlbmd0aDtlKyspaWYoaVtl XS5faW5wdXQ9PT1sW3RdKXJldHVybiBpW2VdfWZ1bmN0aW9uIFMobixpLG8p e2lmKEFycmF5LmlzQXJyYXkobikpbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe1Mo dCxpLG8pfSk7ZWxzZSBpZighKG4gaW4gZXx8ay5oYXNQYXJlbnQoZSxuKSkp e3ZhciBzO2lmKCJMQVlPVVQiPT09bi5zdWJzdHIoMCw2KSlzPXAodC5sYXlv dXQsbi5yZXBsYWNlKCJMQVlPVVQiLCIiKSk7ZWxzZXt2YXIgdT1yW29dO3M9 aihhLl90cmFjZVByZUdVSVtBKHUpLl9mdWxsSW5wdXQudWlkXSxjKShsW3Vd LG4pfW4gaW4geHx8KHhbbl09YigpKSx2b2lkIDA9PT14W25dW29dJiYoeFtu XVtvXT1OKHMuZ2V0KCkpKSx2b2lkIDAhPT1pJiZzLnNldChpKX19ZnVuY3Rp b24gRSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGlbZV1bdF19fWZ1 bmN0aW9uIEwodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuITE9PT1l P2lbcltuXV1bdF06bnVsbH19Zm9yKHZhciBDIGluIGUpe2lmKGsuaGFzUGFy ZW50KGUsQykpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3Qgc2V0ICIrQysiIGFu ZCBhIHBhcmVudCBhdHRyaWJ1dGUgc2ltdWx0YW5lb3VzbHkiKTt2YXIgUCxP LHosSSxELFIsRj1lW0NdO2lmKCJhdXRvYmlueCIhPT1DJiYiYXV0b2Jpbnki IT09Q3x8KEM9Qy5jaGFyQXQoQy5sZW5ndGgtMSkrImJpbnMiLEY9QXJyYXku aXNBcnJheShGKT9GLm1hcChMKEMpKTohMT09PUY/ci5tYXAoRShDKSk6bnVs bCkseVtDXT1GLCJMQVlPVVQiIT09Qy5zdWJzdHIoMCw2KSl7Zm9yKHhbQ109 YigpLG49MDtuPHIubGVuZ3RoO24rKyl7aWYoUD1sW3Jbbl1dLE89QShyW25d KSxJPSh6PWooYS5fdHJhY2VQcmVHVUlbTy5fZnVsbElucHV0LnVpZF0sYyko UCxDKSkuZ2V0KCksdm9pZCAwIT09KEQ9QXJyYXkuaXNBcnJheShGKT9GW24l Ri5sZW5ndGhdOkYpKXt2YXIgQj16LnBhcnRzW3oucGFydHMubGVuZ3RoLTFd LFY9Qy5zdWJzdHIoMCxDLmxlbmd0aC1CLmxlbmd0aC0xKSxVPVY/VisiLiI6 IiIsSD1WP3MoTyxWKS5nZXQoKTpPO2lmKChSPWguZ2V0VHJhY2VWYWxPYmpl Y3QoTyx6LnBhcnRzKSkmJlIuaW1wbGllZEVkaXRzJiZudWxsIT09RClmb3Io dmFyIEcgaW4gUi5pbXBsaWVkRWRpdHMpUyhvLnJlbGF0aXZlQXR0cihDLEcp LFIuaW1wbGllZEVkaXRzW0ddLG4pO2Vsc2UgaWYoInRoaWNrbmVzc21vZGUi IT09QiYmImxlbm1vZGUiIT09Qnx8ST09PUR8fCJmcmFjdGlvbiIhPT1EJiYi cGl4ZWxzIiE9PUR8fCFIKXtpZigidHlwZSI9PT1DJiYoInBpZSI9PT1EIT0o InBpZSI9PT1JKXx8ImZ1bm5lbGFyZWEiPT09RCE9KCJmdW5uZWxhcmVhIj09 PUkpKSl7dmFyIFk9IngiLFc9InkiOyJiYXIiIT09RCYmImJhciIhPT1JfHwi aCIhPT1QLm9yaWVudGF0aW9ufHwoWT0ieSIsVz0ieCIpLG8uc3dhcEF0dHJz KFAsWyI/IiwiP3NyYyJdLCJsYWJlbHMiLFkpLG8uc3dhcEF0dHJzKFAsWyJk PyIsIj8wIl0sImxhYmVsIixZKSxvLnN3YXBBdHRycyhQLFsiPyIsIj9zcmMi XSwidmFsdWVzIixXKSwicGllIj09PUl8fCJmdW5uZWxhcmVhIj09PUk/KHMo UCwibWFya2VyLmNvbG9yIikuc2V0KHMoUCwibWFya2VyLmNvbG9ycyIpLmdl dCgpKSxhLl9waWVsYXllci5zZWxlY3RBbGwoImcudHJhY2UiKS5yZW1vdmUo KSk6dS50cmFjZUlzKFAsImNhcnRlc2lhbiIpJiZzKFAsIm1hcmtlci5jb2xv cnMiKS5zZXQocyhQLCJtYXJrZXIuY29sb3IiKS5nZXQoKSl9fWVsc2V7dmFy IFg9YS5fc2l6ZSxaPUgub3JpZW50LEo9InRvcCI9PT1afHwiYm90dG9tIj09 PVo7aWYoInRoaWNrbmVzc21vZGUiPT09Qil7dmFyIEs9Sj9YLmg6WC53O1Mo VSsidGhpY2tuZXNzIixILnRoaWNrbmVzcyooImZyYWN0aW9uIj09PUQ/MS9L OkspLG4pfWVsc2V7dmFyIFE9Sj9YLnc6WC5oO1MoVSsibGVuIixILmxlbioo ImZyYWN0aW9uIj09PUQ/MS9ROlEpLG4pfX14W0NdW25dPU4oSSk7aWYoLTEh PT1bInN3YXB4eSIsInN3YXB4eWF4ZXMiLCJvcmllbnRhdGlvbiIsIm9yaWVu dGF0aW9uYXhlcyJdLmluZGV4T2YoQykpe2lmKCJvcmllbnRhdGlvbiI9PT1D KXt6LnNldChEKTt2YXIgJD1QLngmJiFQLnk/ImgiOiJ2IjtpZigoei5nZXQo KXx8JCk9PT1PLm9yaWVudGF0aW9uKWNvbnRpbnVlfWVsc2Uib3JpZW50YXRp b25heGVzIj09PUMmJihQLm9yaWVudGF0aW9uPXt2OiJoIixoOiJ2In1bTy5v cmllbnRhdGlvbl0pO2suc3dhcFhZRGF0YShQKSxtLmNhbGM9bS5jbGVhckF4 aXNUeXBlcz0hMH1lbHNlLTEhPT1mLmRhdGFBcnJheUNvbnRhaW5lcnMuaW5k ZXhPZih6LnBhcnRzWzBdKT8oay5tYW5hZ2VBcnJheUNvbnRhaW5lcnMoeixE LHgpLG0uY2FsYz0hMCk6KFI/Ui5hcnJheU9rJiYhdS50cmFjZUlzKE8sInJl Z2wiKSYmKG8uaXNBcnJheU9yVHlwZWRBcnJheShEKXx8by5pc0FycmF5T3JU eXBlZEFycmF5KEkpKT9tLmNhbGM9ITA6TS51cGRhdGUobSxSKTptLmNhbGM9 ITAsei5zZXQoRCkpfX1pZigtMSE9PVsic3dhcHh5YXhlcyIsIm9yaWVudGF0 aW9uYXhlcyJdLmluZGV4T2YoQykmJmQuc3dhcCh0LHIpLCJvcmllbnRhdGlv bmF4ZXMiPT09Qyl7dmFyIHR0PXModC5sYXlvdXQsImhvdmVybW9kZSIpOyJ4 Ij09PXR0LmdldCgpP3R0LnNldCgieSIpOiJ5Ij09PXR0LmdldCgpJiZ0dC5z ZXQoIngiKX1pZigtMSE9PVsib3JpZW50YXRpb24iLCJ0eXBlIl0uaW5kZXhP ZihDKSl7Zm9yKHY9W10sbj0wO248ci5sZW5ndGg7bisrKXt2YXIgZXQ9bFty W25dXTt1LnRyYWNlSXMoZXQsImNhcnRlc2lhbiIpJiYoXyhldC54YXhpc3x8 IngiKSxfKGV0LnlheGlzfHwieSIpKX1TKHYubWFwKHcpLCEwLDApLFModi5t YXAoVCksWzAsMV0sMCl9fWVsc2Ugej1wKHQubGF5b3V0LEMucmVwbGFjZSgi TEFZT1VUIiwiIikpLHhbQ109W04oei5nZXQoKSldLHouc2V0KEFycmF5Lmlz QXJyYXkoRik/RlswXTpGKSxtLmNhbGM9ITB9cmV0dXJuKG0uY2FsY3x8bS5w bG90KSYmKG0uZnVsbFJlcGxvdD0hMCkse2ZsYWdzOm0sdW5kb2l0OngscmVk b2l0OnksdHJhY2VzOnIsZXZlbnREYXRhOm8uZXh0ZW5kRGVlcE5vQXJyYXlz KFtdLFtnLHJdKX19ZnVuY3Rpb24gcSh0KXt2YXIgZSxyLG4sYT1vLmNvdW50 ZXJSZWdleCgiYXhpcyIsIi50aXRsZSIsITEsITEpLGk9L2NvbG9yYmFyXC50 aXRsZSQvLHM9T2JqZWN0LmtleXModCk7Zm9yKGU9MDtlPHMubGVuZ3RoO2Ur KylyPXNbZV0sbj10W3JdLCJ0aXRsZSIhPT1yJiYhYS50ZXN0KHIpJiYhaS50 ZXN0KHIpfHwic3RyaW5nIiE9dHlwZW9mIG4mJiJudW1iZXIiIT10eXBlb2Yg bj9yLmluZGV4T2YoInRpdGxlZm9udCIpPi0xP2wocixyLnJlcGxhY2UoInRp dGxlZm9udCIsInRpdGxlLmZvbnQiKSk6ci5pbmRleE9mKCJ0aXRsZXBvc2l0 aW9uIik+LTE/bChyLHIucmVwbGFjZSgidGl0bGVwb3NpdGlvbiIsInRpdGxl LnBvc2l0aW9uIikpOnIuaW5kZXhPZigidGl0bGVzaWRlIik+LTE/bChyLHIu cmVwbGFjZSgidGl0bGVzaWRlIiwidGl0bGUuc2lkZSIpKTpyLmluZGV4T2Yo InRpdGxlb2Zmc2V0Iik+LTEmJmwocixyLnJlcGxhY2UoInRpdGxlb2Zmc2V0 IiwidGl0bGUub2Zmc2V0IikpOmwocixyLnJlcGxhY2UoInRpdGxlIiwidGl0 bGUudGV4dCIpKTtmdW5jdGlvbiBsKGUscil7dFtyXT10W2VdLGRlbGV0ZSB0 W2VdfX1mdW5jdGlvbiBIKHQsZSxyKXtpZih0PW8uZ2V0R3JhcGhEaXYodCks ay5jbGVhclByb21pc2VRdWV1ZSh0KSx0LmZyYW1ld29yayYmdC5mcmFtZXdv cmsuaXNQb2xhcilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO3ZhciBuPXt9 O2lmKCJzdHJpbmciPT10eXBlb2YgZSluW2VdPXI7ZWxzZXtpZighby5pc1Bs YWluT2JqZWN0KGUpKXJldHVybiBvLndhcm4oIlJlbGF5b3V0IGZhaWwuIixl LHIpLFByb21pc2UucmVqZWN0KCk7bj1vLmV4dGVuZEZsYXQoe30sZSl9T2Jq ZWN0LmtleXMobikubGVuZ3RoJiYodC5jaGFuZ2VkPSEwKTt2YXIgYT1KKHQs biksaT1hLmZsYWdzO2kuY2FsYyYmKHQuY2FsY2RhdGE9dm9pZCAwKTt2YXIg cz1bZi5wcmV2aW91c1Byb21pc2VzXTtpLmxheW91dFJlcGxvdD9zLnB1c2go VC5sYXlvdXRSZXBsb3QpOk9iamVjdC5rZXlzKG4pLmxlbmd0aCYmKEcodCxp LGEpfHxmLnN1cHBseURlZmF1bHRzKHQpLGkubGVnZW5kJiZzLnB1c2goVC5k b0xlZ2VuZCksaS5sYXlvdXRzdHlsZSYmcy5wdXNoKFQubGF5b3V0U3R5bGVz KSxpLmF4cmFuZ2UmJlkocyxhLnJhbmdlc0FsdGVyZWQpLGkudGlja3MmJnMu cHVzaChULmRvVGlja3NSZWxheW91dCksaS5tb2RlYmFyJiZzLnB1c2goVC5k b01vZGVCYXIpLGkuY2FtZXJhJiZzLnB1c2goVC5kb0NhbWVyYSksaS5jb2xv cmJhcnMmJnMucHVzaChULmRvQ29sb3JCYXJzKSxzLnB1c2goTCkpLHMucHVz aChmLnJlaG92ZXIsZi5yZWRyYWcpLGMuYWRkKHQsSCxbdCxhLnVuZG9pdF0s SCxbdCxhLnJlZG9pdF0pO3ZhciBsPW8uc3luY09yQXN5bmMocyx0KTtyZXR1 cm4gbCYmbC50aGVufHwobD1Qcm9taXNlLnJlc29sdmUodCkpLGwudGhlbihm dW5jdGlvbigpe3JldHVybiB0LmVtaXQoInBsb3RseV9yZWxheW91dCIsYS5l dmVudERhdGEpLHR9KX1mdW5jdGlvbiBHKHQsZSxyKXt2YXIgbj10Ll9mdWxs TGF5b3V0O2lmKCFlLmF4cmFuZ2UpcmV0dXJuITE7Zm9yKHZhciBhIGluIGUp aWYoImF4cmFuZ2UiIT09YSYmZVthXSlyZXR1cm4hMTtmb3IodmFyIGkgaW4g ci5yYW5nZXNBbHRlcmVkKXt2YXIgbz1kLmlkMm5hbWUoaSkscz10LmxheW91 dFtvXSxsPW5bb107aWYobC5hdXRvcmFuZ2U9cy5hdXRvcmFuZ2UsbC5yYW5n ZT1zLnJhbmdlLnNsaWNlKCksbC5jbGVhblJhbmdlKCksbC5fbWF0Y2hHcm91 cClmb3IodmFyIGMgaW4gbC5fbWF0Y2hHcm91cClpZihjIT09aSl7dmFyIHU9 bltkLmlkMm5hbWUoYyldO3UuYXV0b3JhbmdlPWwuYXV0b3JhbmdlLHUucmFu Z2U9bC5yYW5nZS5zbGljZSgpLHUuX2lucHV0LnJhbmdlPWwucmFuZ2Uuc2xp Y2UoKX19cmV0dXJuITB9ZnVuY3Rpb24gWSh0LGUpe3ZhciByPWU/ZnVuY3Rp b24odCl7dmFyIHI9W10sbj0hMDtmb3IodmFyIGEgaW4gZSl7dmFyIGk9ZC5n ZXRGcm9tSWQodCxhKTtpZihyLnB1c2goYSksaS5fbWF0Y2hHcm91cClmb3Io dmFyIG8gaW4gaS5fbWF0Y2hHcm91cCllW29dfHxyLnB1c2gobyk7aS5hdXRv bWFyZ2luJiYobj0hMSl9cmV0dXJuIGQuZHJhdyh0LHIse3NraXBUaXRsZTpu fSl9OmZ1bmN0aW9uKHQpe3JldHVybiBkLmRyYXcodCwicmVkcmF3Iil9O3Qu cHVzaChiLFQuZG9BdXRvUmFuZ2VBbmRDb25zdHJhaW50cyxyLFQuZHJhd0Rh dGEsVC5maW5hbERyYXcpfXZhciBXPS9eW3h5el1heGlzWzAtOV0qXC5yYW5n ZShcW1swfDFdXF0pPyQvLFg9L15beHl6XWF4aXNbMC05XSpcLmF1dG9yYW5n ZSQvLFo9L15beHl6XWF4aXNbMC05XSpcLmRvbWFpbihcW1swfDFdXF0pPyQv O2Z1bmN0aW9uIEoodCxlKXt2YXIgcixuLGEsaT10LmxheW91dCxsPXQuX2Z1 bGxMYXlvdXQsYz1sLl9ndWlFZGl0aW5nLGY9aihsLl9wcmVHVUksYykscD1P YmplY3Qua2V5cyhlKSxnPWQubGlzdCh0KSx2PW8uZXh0ZW5kRGVlcEFsbCh7 fSxlKSxtPXt9O2ZvcihxKGUpLHA9T2JqZWN0LmtleXMoZSksbj0wO248cC5s ZW5ndGg7bisrKWlmKDA9PT1wW25dLmluZGV4T2YoImFsbGF4ZXMiKSl7Zm9y KGE9MDthPGcubGVuZ3RoO2ErKyl7dmFyIHk9Z1thXS5faWQuc3Vic3RyKDEp LHg9LTEhPT15LmluZGV4T2YoInNjZW5lIik/eSsiLiI6IiIsYj1wW25dLnJl cGxhY2UoImFsbGF4ZXMiLHgrZ1thXS5fbmFtZSk7ZVtiXXx8KGVbYl09ZVtw W25dXSl9ZGVsZXRlIGVbcFtuXV19dmFyIF89TS5sYXlvdXRGbGFncygpLFQ9 e30sUz17fTtmdW5jdGlvbiBFKHQscil7aWYoQXJyYXkuaXNBcnJheSh0KSl0 LmZvckVhY2goZnVuY3Rpb24odCl7RSh0LHIpfSk7ZWxzZSBpZighKHQgaW4g ZXx8ay5oYXNQYXJlbnQoZSx0KSkpe3ZhciBuPWYoaSx0KTt0IGluIFN8fChT W3RdPU4obi5nZXQoKSkpLHZvaWQgMCE9PXImJm4uc2V0KHIpfX12YXIgTCxD PXt9O2Z1bmN0aW9uIFAodCl7dmFyIGU9ZC5uYW1lMmlkKHQuc3BsaXQoIi4i KVswXSk7cmV0dXJuIENbZV09MSxlfWZvcih2YXIgTyBpbiBlKXtpZihrLmhh c1BhcmVudChlLE8pKXRocm93IG5ldyBFcnJvcigiY2Fubm90IHNldCAiK08r IiBhbmQgYSBwYXJlbnQgYXR0cmlidXRlIHNpbXVsdGFuZW91c2x5Iik7Zm9y KHZhciB6PWYoaSxPKSxJPWVbT10sRD16LnBhcnRzLmxlbmd0aC0xO0Q+MCYm InN0cmluZyIhPXR5cGVvZiB6LnBhcnRzW0RdOylELS07dmFyIFI9ei5wYXJ0 c1tEXSxGPXoucGFydHNbRC0xXSsiLiIrUixCPXoucGFydHMuc2xpY2UoMCxE KS5qb2luKCIuIiksVj1zKHQubGF5b3V0LEIpLmdldCgpLFU9cyhsLEIpLmdl dCgpLEg9ei5nZXQoKTtpZih2b2lkIDAhPT1JKXtUW09dPUksU1tPXT0icmV2 ZXJzZSI9PT1SP0k6TihIKTt2YXIgRz1oLmdldExheW91dFZhbE9iamVjdChs LHoucGFydHMpO2lmKEcmJkcuaW1wbGllZEVkaXRzJiZudWxsIT09SSlmb3Io dmFyIFkgaW4gRy5pbXBsaWVkRWRpdHMpRShvLnJlbGF0aXZlQXR0cihPLFkp LEcuaW1wbGllZEVkaXRzW1ldKTtpZigtMSE9PVsid2lkdGgiLCJoZWlnaHQi XS5pbmRleE9mKE8pKWlmKEkpe0UoImF1dG9zaXplIixudWxsKTt2YXIgSj0i aGVpZ2h0Ij09PU8/IndpZHRoIjoiaGVpZ2h0IjtFKEosbFtKXSl9ZWxzZSBs W09dPXQuX2luaXRpYWxBdXRvU2l6ZVtPXTtlbHNlIGlmKCJhdXRvc2l6ZSI9 PT1PKUUoIndpZHRoIixJP251bGw6bC53aWR0aCksRSgiaGVpZ2h0IixJP251 bGw6bC5oZWlnaHQpO2Vsc2UgaWYoRi5tYXRjaChXKSlQKEYpLHMobCxCKyIu X2lucHV0UmFuZ2UiKS5zZXQobnVsbCk7ZWxzZSBpZihGLm1hdGNoKFgpKXtQ KEYpLHMobCxCKyIuX2lucHV0UmFuZ2UiKS5zZXQobnVsbCk7dmFyIFE9cyhs LEIpLmdldCgpO1EuX2lucHV0RG9tYWluJiYoUS5faW5wdXQuZG9tYWluPVEu X2lucHV0RG9tYWluLnNsaWNlKCkpfWVsc2UgRi5tYXRjaChaKSYmcyhsLEIr Ii5faW5wdXREb21haW4iKS5zZXQobnVsbCk7aWYoInR5cGUiPT09Uil7dmFy ICQ9Vix0dD0ibGluZWFyIj09PVUudHlwZSYmImxvZyI9PT1JLGV0PSJsb2ci PT09VS50eXBlJiYibGluZWFyIj09PUk7aWYodHR8fGV0KXtpZigkJiYkLnJh bmdlKWlmKFUuYXV0b3JhbmdlKXR0JiYoJC5yYW5nZT0kLnJhbmdlWzFdPiQu cmFuZ2VbMF0/WzEsMl06WzIsMV0pO2Vsc2V7dmFyIHJ0PSQucmFuZ2VbMF0s bnQ9JC5yYW5nZVsxXTt0dD8ocnQ8PTAmJm50PD0wJiZFKEIrIi5hdXRvcmFu Z2UiLCEwKSxydDw9MD9ydD1udC8xZTY6bnQ8PTAmJihudD1ydC8xZTYpLEUo QisiLnJhbmdlWzBdIixNYXRoLmxvZyhydCkvTWF0aC5MTjEwKSxFKEIrIi5y YW5nZVsxXSIsTWF0aC5sb2cobnQpL01hdGguTE4xMCkpOihFKEIrIi5yYW5n ZVswXSIsTWF0aC5wb3coMTAscnQpKSxFKEIrIi5yYW5nZVsxXSIsTWF0aC5w b3coMTAsbnQpKSl9ZWxzZSBFKEIrIi5hdXRvcmFuZ2UiLCEwKTtBcnJheS5p c0FycmF5KGwuX3N1YnBsb3RzLnBvbGFyKSYmbC5fc3VicGxvdHMucG9sYXIu bGVuZ3RoJiZsW3oucGFydHNbMF1dJiYicmFkaWFsYXhpcyI9PT16LnBhcnRz WzFdJiZkZWxldGUgbFt6LnBhcnRzWzBdXS5fc3VicGxvdC52aWV3SW5pdGlh bFsicmFkaWFsYXhpcy5yYW5nZSJdLHUuZ2V0Q29tcG9uZW50TWV0aG9kKCJh bm5vdGF0aW9ucyIsImNvbnZlcnRDb29yZHMiKSh0LFUsSSxFKSx1LmdldENv bXBvbmVudE1ldGhvZCgiaW1hZ2VzIiwiY29udmVydENvb3JkcyIpKHQsVSxJ LEUpfWVsc2UgRShCKyIuYXV0b3JhbmdlIiwhMCksRShCKyIucmFuZ2UiLG51 bGwpO3MobCxCKyIuX2lucHV0UmFuZ2UiKS5zZXQobnVsbCl9ZWxzZSBpZihS Lm1hdGNoKEEpKXt2YXIgYXQ9cyhsLE8pLmdldCgpLGl0PShJfHx7fSkudHlw ZTtpdCYmIi0iIT09aXR8fChpdD0ibGluZWFyIiksdS5nZXRDb21wb25lbnRN ZXRob2QoImFubm90YXRpb25zIiwiY29udmVydENvb3JkcyIpKHQsYXQsaXQs RSksdS5nZXRDb21wb25lbnRNZXRob2QoImltYWdlcyIsImNvbnZlcnRDb29y ZHMiKSh0LGF0LGl0LEUpfXZhciBvdD13LmNvbnRhaW5lckFycmF5TWF0Y2go Tyk7aWYob3Qpe3I9b3QuYXJyYXksbj1vdC5pbmRleDt2YXIgc3Q9b3QucHJv cGVydHksbHQ9R3x8e2VkaXRUeXBlOiJjYWxjIn07IiIhPT1uJiYiIj09PXN0 JiYody5pc0FkZFZhbChJKT9TW09dPW51bGw6dy5pc1JlbW92ZVZhbChJKT9T W09dPShzKGkscikuZ2V0KCl8fFtdKVtuXTpvLndhcm4oInVucmVjb2duaXpl ZCBmdWxsIG9iamVjdCB2YWx1ZSIsZSkpLE0udXBkYXRlKF8sbHQpLG1bcl18 fChtW3JdPXt9KTt2YXIgY3Q9bVtyXVtuXTtjdHx8KGN0PW1bcl1bbl09e30p LGN0W3N0XT1JLGRlbGV0ZSBlW09dfWVsc2UicmV2ZXJzZSI9PT1SPyhWLnJh bmdlP1YucmFuZ2UucmV2ZXJzZSgpOihFKEIrIi5hdXRvcmFuZ2UiLCEwKSxW LnJhbmdlPVsxLDBdKSxVLmF1dG9yYW5nZT9fLmNhbGM9ITA6Xy5wbG90PSEw KToobC5faGFzKCJzY2F0dGVyLWxpa2UiKSYmbC5faGFzKCJyZWdsIikmJiJk cmFnbW9kZSI9PT1PJiYoImxhc3NvIj09PUl8fCJzZWxlY3QiPT09SSkmJiJs YXNzbyIhPT1IJiYic2VsZWN0IiE9PUg/Xy5wbG90PSEwOmwuX2hhcygiZ2wy ZCIpP18ucGxvdD0hMDpHP00udXBkYXRlKF8sRyk6Xy5jYWxjPSEwLHouc2V0 KEkpKX19Zm9yKHIgaW4gbSl7dy5hcHBseUNvbnRhaW5lckFycmF5Q2hhbmdl cyh0LGYoaSxyKSxtW3JdLF8sZil8fChfLnBsb3Q9ITApfXZhciB1dD1sLl9h eGlzQ29uc3RyYWludEdyb3Vwc3x8W107Zm9yKEwgaW4gQylmb3Iobj0wO248 dXQubGVuZ3RoO24rKyl7dmFyIGh0PXV0W25dO2lmKGh0W0xdKWZvcih2YXIg ZnQgaW4gXy5jYWxjPSEwLGh0KUNbZnRdfHwoZC5nZXRGcm9tSWQodCxmdCku X2NvbnN0cmFpbnRTaHJpbmthYmxlPSEwKX1yZXR1cm4oSyh0KXx8ZS5oZWln aHR8fGUud2lkdGgpJiYoXy5wbG90PSEwKSwoXy5wbG90fHxfLmNhbGMpJiYo Xy5sYXlvdXRSZXBsb3Q9ITApLHtmbGFnczpfLHJhbmdlc0FsdGVyZWQ6Qyx1 bmRvaXQ6UyxyZWRvaXQ6VCxldmVudERhdGE6dn19ZnVuY3Rpb24gSyh0KXt2 YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS53aWR0aCxuPWUuaGVpZ2h0O3JldHVy biB0LmxheW91dC5hdXRvc2l6ZSYmZi5wbG90QXV0b1NpemUodCx0LmxheW91 dCxlKSxlLndpZHRoIT09cnx8ZS5oZWlnaHQhPT1ufWZ1bmN0aW9uIFEodCxl LG4sYSl7aWYodD1vLmdldEdyYXBoRGl2KHQpLGsuY2xlYXJQcm9taXNlUXVl dWUodCksdC5mcmFtZXdvcmsmJnQuZnJhbWV3b3JrLmlzUG9sYXIpcmV0dXJu IFByb21pc2UucmVzb2x2ZSh0KTtvLmlzUGxhaW5PYmplY3QoZSl8fChlPXt9 KSxvLmlzUGxhaW5PYmplY3Qobil8fChuPXt9KSxPYmplY3Qua2V5cyhlKS5s ZW5ndGgmJih0LmNoYW5nZWQ9ITApLE9iamVjdC5rZXlzKG4pLmxlbmd0aCYm KHQuY2hhbmdlZD0hMCk7dmFyIGk9ay5jb2VyY2VUcmFjZUluZGljZXModCxh KSxzPVUodCxvLmV4dGVuZEZsYXQoe30sZSksaSksbD1zLmZsYWdzLHU9Sih0 LG8uZXh0ZW5kRmxhdCh7fSxuKSksaD11LmZsYWdzOyhsLmNhbGN8fGguY2Fs YykmJih0LmNhbGNkYXRhPXZvaWQgMCksbC5jbGVhckF4aXNUeXBlcyYmay5j bGVhckF4aXNUeXBlcyh0LGksbik7dmFyIHA9W107aC5sYXlvdXRSZXBsb3Q/ cC5wdXNoKFQubGF5b3V0UmVwbG90KTpsLmZ1bGxSZXBsb3Q/cC5wdXNoKHIu cGxvdCk6KHAucHVzaChmLnByZXZpb3VzUHJvbWlzZXMpLEcodCxoLHUpfHxm LnN1cHBseURlZmF1bHRzKHQpLGwuc3R5bGUmJnAucHVzaChULmRvVHJhY2VT dHlsZSksKGwuY29sb3JiYXJzfHxoLmNvbG9yYmFycykmJnAucHVzaChULmRv Q29sb3JCYXJzKSxoLmxlZ2VuZCYmcC5wdXNoKFQuZG9MZWdlbmQpLGgubGF5 b3V0c3R5bGUmJnAucHVzaChULmxheW91dFN0eWxlcyksaC5heHJhbmdlJiZZ KHAsdS5yYW5nZXNBbHRlcmVkKSxoLnRpY2tzJiZwLnB1c2goVC5kb1RpY2tz UmVsYXlvdXQpLGgubW9kZWJhciYmcC5wdXNoKFQuZG9Nb2RlQmFyKSxoLmNh bWVyYSYmcC5wdXNoKFQuZG9DYW1lcmEpLHAucHVzaChMKSkscC5wdXNoKGYu cmVob3ZlcixmLnJlZHJhZyksYy5hZGQodCxRLFt0LHMudW5kb2l0LHUudW5k b2l0LHMudHJhY2VzXSxRLFt0LHMucmVkb2l0LHUucmVkb2l0LHMudHJhY2Vz XSk7dmFyIGQ9by5zeW5jT3JBc3luYyhwLHQpO3JldHVybiBkJiZkLnRoZW58 fChkPVByb21pc2UucmVzb2x2ZSh0KSksZC50aGVuKGZ1bmN0aW9uKCl7cmV0 dXJuIHQuZW1pdCgicGxvdGx5X3VwZGF0ZSIse2RhdGE6cy5ldmVudERhdGEs bGF5b3V0OnUuZXZlbnREYXRhfSksdH0pfWZ1bmN0aW9uICQodCl7cmV0dXJu IGZ1bmN0aW9uKGUpe2UuX2Z1bGxMYXlvdXQuX2d1aUVkaXRpbmc9ITA7dmFy IHI9dC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIGUuX2Z1bGxMYXlv dXQuX2d1aUVkaXRpbmc9ITEscn19dmFyIHR0PVt7cGF0dGVybjovXmhpZGRl bmxhYmVscy8sYXR0cjoibGVnZW5kLnVpcmV2aXNpb24ifSx7cGF0dGVybjov XigoeHx5KWF4aXNcZCopXC4oKGF1dG8pP3JhbmdlfHRpdGxlXC50ZXh0KS99 LHtwYXR0ZXJuOi9heGlzXGQqXC5zaG93c3Bpa2VzJC8sYXR0cjoibW9kZWJh ci51aXJldmlzaW9uIn0se3BhdHRlcm46Lyhob3ZlcnxkcmFnKW1vZGUkLyxh dHRyOiJtb2RlYmFyLnVpcmV2aXNpb24ifSx7cGF0dGVybjovXihzY2VuZVxk KilcLmNhbWVyYS99LHtwYXR0ZXJuOi9eKGdlb1xkKilcLihwcm9qZWN0aW9u fGNlbnRlcnxmaXRib3VuZHMpL30se3BhdHRlcm46L14odGVybmFyeVxkKlwu W2FiY11heGlzKVwuKG1pbnx0aXRsZVwudGV4dCkkL30se3BhdHRlcm46L14o cG9sYXJcZCpcLnJhZGlhbGF4aXMpXC4oKGF1dG8pP3JhbmdlfGFuZ2xlfHRp dGxlXC50ZXh0KS99LHtwYXR0ZXJuOi9eKHBvbGFyXGQqXC5hbmd1bGFyYXhp cylcLnJvdGF0aW9uL30se3BhdHRlcm46L14obWFwYm94XGQqKVwuKGNlbnRl cnx6b29tfGJlYXJpbmd8cGl0Y2gpL30se3BhdHRlcm46L15sZWdlbmRcLih4 fHkpJC8sYXR0cjoiZWRpdHJldmlzaW9uIn0se3BhdHRlcm46L14oc2hhcGVz fGFubm90YXRpb25zKS8sYXR0cjoiZWRpdHJldmlzaW9uIn0se3BhdHRlcm46 L150aXRsZVwudGV4dCQvLGF0dHI6ImVkaXRyZXZpc2lvbiJ9XSxldD1be3Bh dHRlcm46L15zZWxlY3RlZHBvaW50cyQvLGF0dHI6InNlbGVjdGlvbnJldmlz aW9uIn0se3BhdHRlcm46LyhefHZhbHVlXC4pdmlzaWJsZSQvLGF0dHI6Imxl Z2VuZC51aXJldmlzaW9uIn0se3BhdHRlcm46L15kaW1lbnNpb25zXFtcZCtc XVwuY29uc3RyYWludHJhbmdlL30se3BhdHRlcm46L15ub2RlXC4oeHx5fGdy b3VwcykvfSx7cGF0dGVybjovXmxldmVsJC99LHtwYXR0ZXJuOi8oXnx2YWx1 ZVwuKW5hbWUkL30se3BhdHRlcm46L2NvbG9yYmFyXC50aXRsZVwudGV4dCQv fSx7cGF0dGVybjovY29sb3JiYXJcLih4fHkpJC8sYXR0cjoiZWRpdHJldmlz aW9uIn1dO2Z1bmN0aW9uIHJ0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0 aDtyKyspe3ZhciBuPWVbcl0sYT10Lm1hdGNoKG4ucGF0dGVybik7aWYoYSly ZXR1cm57aGVhZDphWzFdLGF0dHI6bi5hdHRyfX19ZnVuY3Rpb24gbnQodCxl KXt2YXIgcj1zKGUsdCkuZ2V0KCk7aWYodm9pZCAwIT09cilyZXR1cm4gcjt2 YXIgbj10LnNwbGl0KCIuIik7Zm9yKG4ucG9wKCk7bi5sZW5ndGg+MTspaWYo bi5wb3AoKSx2b2lkIDAhPT0ocj1zKGUsbi5qb2luKCIuIikrIi51aXJldmlz aW9uIikuZ2V0KCkpKXJldHVybiByO3JldHVybiBlLnVpcmV2aXNpb259ZnVu Y3Rpb24gYXQodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKylpZihl W3JdLl9mdWxsSW5wdXQudWlkPT09dClyZXR1cm4gcjtyZXR1cm4tMX1mdW5j dGlvbiBpdCh0LGUscil7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYo ZVtuXS51aWQ9PT10KXJldHVybiBuO3JldHVybiFlW3JdfHxlW3JdLnVpZD8t MTpyfWZ1bmN0aW9uIG90KHQsZSl7dmFyIHI9by5pc1BsYWluT2JqZWN0KHQp LG49QXJyYXkuaXNBcnJheSh0KTtyZXR1cm4gcnx8bj8ociYmby5pc1BsYWlu T2JqZWN0KGUpfHxuJiZBcnJheS5pc0FycmF5KGUpKSYmSlNPTi5zdHJpbmdp ZnkodCk9PT1KU09OLnN0cmluZ2lmeShlKTp0PT09ZX1mdW5jdGlvbiBzdCh0 LGUscixuKXt2YXIgYSxpLGwsYz1uLmdldFZhbE9iamVjdCx1PW4uZmxhZ3Ms aD1uLmltbXV0YWJsZSxmPW4uaW5BcnJheSxwPW4uYXJyYXlJbmRleDtmdW5j dGlvbiBkKCl7dmFyIHQ9YS5lZGl0VHlwZTtmJiYtMSE9PXQuaW5kZXhPZigi YXJyYXlkcmF3Iik/by5wdXNoVW5pcXVlKHUuYXJyYXlzW2ZdLHApOihNLnVw ZGF0ZSh1LGEpLCJub25lIiE9PXQmJnUubkNoYW5nZXMrKyxuLnRyYW5zaXRp b24mJmEuYW5pbSYmdS5uQ2hhbmdlc0FuaW0rKywoVy50ZXN0KGwpfHxYLnRl c3QobCkpJiYodS5yYW5nZXNBbHRlcmVkW3JbMF1dPTEpLFoudGVzdChsKSYm cyhlLCJfaW5wdXREb21haW4iKS5zZXQobnVsbCksImRhdGFyZXZpc2lvbiI9 PT1pJiYodS5uZXdEYXRhUmV2aXNpb249MSkpfWZ1bmN0aW9uIGcodCl7cmV0 dXJuImRhdGFfYXJyYXkiPT09dC52YWxUeXBlfHx0LmFycmF5T2t9Zm9yKGkg aW4gdCl7aWYodS5jYWxjJiYhbi50cmFuc2l0aW9uKXJldHVybjt2YXIgdj10 W2ldLG09ZVtpXSx5PXIuY29uY2F0KGkpO2lmKGw9eS5qb2luKCIuIiksIl8i IT09aS5jaGFyQXQoMCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB2JiZ2IT09bSl7 aWYoKCJ0aWNrMCI9PT1pfHwiZHRpY2siPT09aSkmJiJnZW8iIT09clswXSl7 dmFyIHg9ZS50aWNrbW9kZTtpZigiYXV0byI9PT14fHwiYXJyYXkiPT09eHx8 IXgpY29udGludWV9aWYoKCJyYW5nZSIhPT1pfHwhZS5hdXRvcmFuZ2UpJiYo InptaW4iIT09aSYmInptYXgiIT09aXx8ImNvbnRvdXJjYXJwZXQiIT09ZS50 eXBlKSYmKGE9Yyh5KSkmJighYS5fY29tcGFyZUFzSlNPTnx8SlNPTi5zdHJp bmdpZnkodikhPT1KU09OLnN0cmluZ2lmeShtKSkpe3ZhciBiLF89YS52YWxU eXBlLHc9ZyhhKSxrPUFycmF5LmlzQXJyYXkodiksVD1BcnJheS5pc0FycmF5 KG0pO2lmKGsmJlQpe3ZhciBBPSJfaW5wdXRfIitpLFM9dFtBXSxFPWVbQV07 aWYoQXJyYXkuaXNBcnJheShTKSYmUz09PUUpY29udGludWV9aWYodm9pZCAw PT09bSl3JiZrP3UuY2FsYz0hMDpkKCk7ZWxzZSBpZihhLl9pc0xpbmtlZFRv QXJyYXkpe3ZhciBMPVtdLEM9ITE7Znx8KHUuYXJyYXlzW2ldPUwpO3ZhciBQ PU1hdGgubWluKHYubGVuZ3RoLG0ubGVuZ3RoKSxPPU1hdGgubWF4KHYubGVu Z3RoLG0ubGVuZ3RoKTtpZihQIT09Tyl7aWYoImFycmF5ZHJhdyIhPT1hLmVk aXRUeXBlKXtkKCk7Y29udGludWV9Qz0hMH1mb3IoYj0wO2I8UDtiKyspc3Qo dltiXSxtW2JdLHkuY29uY2F0KGIpLG8uZXh0ZW5kRmxhdCh7aW5BcnJheTpp LGFycmF5SW5kZXg6Yn0sbikpO2lmKEMpZm9yKGI9UDtiPE87YisrKUwucHVz aChiKX1lbHNlIV8mJm8uaXNQbGFpbk9iamVjdCh2KT9zdCh2LG0seSxuKTp3 P2smJlQ/KGgmJih1LmNhbGM9ITApLChofHxuLm5ld0RhdGFSZXZpc2lvbikm JmQoKSk6ayE9PVQ/dS5jYWxjPSEwOmQoKTprJiZUJiZ2Lmxlbmd0aD09PW0u bGVuZ3RoJiZTdHJpbmcodik9PT1TdHJpbmcobSl8fGQoKX19fWZvcihpIGlu IGUpaWYoIShpIGluIHR8fCJfIj09PWkuY2hhckF0KDApfHwiZnVuY3Rpb24i PT10eXBlb2YgZVtpXSkpe2lmKGcoYT1jKHIuY29uY2F0KGkpKSkmJkFycmF5 LmlzQXJyYXkoZVtpXSkpcmV0dXJuIHZvaWQodS5jYWxjPSEwKTtkKCl9fWZ1 bmN0aW9uIGx0KHQpe3ZhciBlPW4uc2VsZWN0KHQpLHI9dC5fZnVsbExheW91 dDtpZihyLl9jb250YWluZXI9ZS5zZWxlY3RBbGwoIi5wbG90LWNvbnRhaW5l ciIpLmRhdGEoWzBdKSxyLl9jb250YWluZXIuZW50ZXIoKS5pbnNlcnQoImRp diIsIjpmaXJzdC1jaGlsZCIpLmNsYXNzZWQoInBsb3QtY29udGFpbmVyIiwh MCkuY2xhc3NlZCgicGxvdGx5IiwhMCksci5fcGFwZXJkaXY9ci5fY29udGFp bmVyLnNlbGVjdEFsbCgiLnN2Zy1jb250YWluZXIiKS5kYXRhKFswXSksci5f cGFwZXJkaXYuZW50ZXIoKS5hcHBlbmQoImRpdiIpLmNsYXNzZWQoInN2Zy1j b250YWluZXIiLCEwKS5zdHlsZSgicG9zaXRpb24iLCJyZWxhdGl2ZSIpLHIu X2dsY29udGFpbmVyPXIuX3BhcGVyZGl2LnNlbGVjdEFsbCgiLmdsLWNvbnRh aW5lciIpLmRhdGEoW3t9XSksci5fZ2xjb250YWluZXIuZW50ZXIoKS5hcHBl bmQoImRpdiIpLmNsYXNzZWQoImdsLWNvbnRhaW5lciIsITApLHIuX3BhcGVy ZGl2LnNlbGVjdEFsbCgiLm1haW4tc3ZnIikucmVtb3ZlKCksci5fcGFwZXJk aXYuc2VsZWN0KCIubW9kZWJhci1jb250YWluZXIiKS5yZW1vdmUoKSxyLl9w YXBlcj1yLl9wYXBlcmRpdi5pbnNlcnQoInN2ZyIsIjpmaXJzdC1jaGlsZCIp LmNsYXNzZWQoIm1haW4tc3ZnIiwhMCksci5fdG9wcGFwZXI9ci5fcGFwZXJk aXYuYXBwZW5kKCJzdmciKS5jbGFzc2VkKCJtYWluLXN2ZyIsITApLHIuX21v ZGViYXJkaXY9ci5fcGFwZXJkaXYuYXBwZW5kKCJkaXYiKSxyLl9ob3ZlcnBh cGVyPXIuX3BhcGVyZGl2LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgibWFpbi1z dmciLCEwKSwhci5fdWlkKXt2YXIgYT17fTtuLnNlbGVjdEFsbCgiZGVmcyIp LmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkJiYoYVt0aGlzLmlkLnNwbGl0KCIt IilbMV1dPTEpfSksci5fdWlkPW8ucmFuZHN0cihhKX1yLl9wYXBlcmRpdi5z ZWxlY3RBbGwoIi5tYWluLXN2ZyIpLmF0dHIoeS5zdmdBdHRycyksci5fZGVm cz1yLl9wYXBlci5hcHBlbmQoImRlZnMiKS5hdHRyKCJpZCIsImRlZnMtIity Ll91aWQpLHIuX2NsaXBzPXIuX2RlZnMuYXBwZW5kKCJnIikuY2xhc3NlZCgi Y2xpcHMiLCEwKSxyLl90b3BkZWZzPXIuX3RvcHBhcGVyLmFwcGVuZCgiZGVm cyIpLmF0dHIoImlkIiwidG9wZGVmcy0iK3IuX3VpZCksci5fdG9wY2xpcHM9 ci5fdG9wZGVmcy5hcHBlbmQoImciKS5jbGFzc2VkKCJjbGlwcyIsITApLHIu X2JnTGF5ZXI9ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYmdsYXll ciIsITApLHIuX2RyYWdnZXJzPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNz ZWQoImRyYWdsYXllciIsITApO3ZhciBpPXIuX3BhcGVyLmFwcGVuZCgiZyIp LmNsYXNzZWQoImxheWVyLWJlbG93IiwhMCk7ci5faW1hZ2VMb3dlckxheWVy PWkuYXBwZW5kKCJnIikuY2xhc3NlZCgiaW1hZ2VsYXllciIsITApLHIuX3No YXBlTG93ZXJMYXllcj1pLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNoYXBlbGF5 ZXIiLCEwKSxyLl9jYXJ0ZXNpYW5sYXllcj1yLl9wYXBlci5hcHBlbmQoImci KS5jbGFzc2VkKCJjYXJ0ZXNpYW5sYXllciIsITApLHIuX3BvbGFybGF5ZXI9 ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgicG9sYXJsYXllciIsITAp LHIuX3Rlcm5hcnlsYXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2Vk KCJ0ZXJuYXJ5bGF5ZXIiLCEwKSxyLl9nZW9sYXllcj1yLl9wYXBlci5hcHBl bmQoImciKS5jbGFzc2VkKCJnZW9sYXllciIsITApLHIuX2Z1bm5lbGFyZWFs YXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJmdW5uZWxhcmVh bGF5ZXIiLCEwKSxyLl9waWVsYXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5j bGFzc2VkKCJwaWVsYXllciIsITApLHIuX3RyZWVtYXBsYXllcj1yLl9wYXBl ci5hcHBlbmQoImciKS5jbGFzc2VkKCJ0cmVlbWFwbGF5ZXIiLCEwKSxyLl9z dW5idXJzdGxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoInN1 bmJ1cnN0bGF5ZXIiLCEwKSxyLl9pbmRpY2F0b3JsYXllcj1yLl90b3BwYXBl ci5hcHBlbmQoImciKS5jbGFzc2VkKCJpbmRpY2F0b3JsYXllciIsITApLHIu X2dsaW1hZ2VzPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImdsaW1h Z2VzIiwhMCk7dmFyIHM9ci5fdG9wcGFwZXIuYXBwZW5kKCJnIikuY2xhc3Nl ZCgibGF5ZXItYWJvdmUiLCEwKTtyLl9pbWFnZVVwcGVyTGF5ZXI9cy5hcHBl bmQoImciKS5jbGFzc2VkKCJpbWFnZWxheWVyIiwhMCksci5fc2hhcGVVcHBl ckxheWVyPXMuYXBwZW5kKCJnIikuY2xhc3NlZCgic2hhcGVsYXllciIsITAp LHIuX2luZm9sYXllcj1yLl90b3BwYXBlci5hcHBlbmQoImciKS5jbGFzc2Vk KCJpbmZvbGF5ZXIiLCEwKSxyLl9tZW51bGF5ZXI9ci5fdG9wcGFwZXIuYXBw ZW5kKCJnIikuY2xhc3NlZCgibWVudWxheWVyIiwhMCksci5fem9vbWxheWVy PXIuX3RvcHBhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoInpvb21sYXllciIs ITApLHIuX2hvdmVybGF5ZXI9ci5faG92ZXJwYXBlci5hcHBlbmQoImciKS5j bGFzc2VkKCJob3ZlcmxheWVyIiwhMCksci5fbW9kZWJhcmRpdi5jbGFzc2Vk KCJtb2RlYmFyLWNvbnRhaW5lciIsITApLnN0eWxlKCJwb3NpdGlvbiIsImFi c29sdXRlIikuc3R5bGUoInRvcCIsIjBweCIpLnN0eWxlKCJyaWdodCIsIjBw eCIpLHQuZW1pdCgicGxvdGx5X2ZyYW1ld29yayIpfXIuYW5pbWF0ZT1mdW5j dGlvbih0LGUscil7aWYodD1vLmdldEdyYXBoRGl2KHQpLCFvLmlzUGxvdERp dih0KSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgZWxlbWVudCBpcyBub3QgYSBQ bG90bHkgcGxvdDogIit0KyIuIEl0J3MgbGlrZWx5IHRoYXQgeW91J3ZlIGZh aWxlZCB0byBjcmVhdGUgYSBwbG90IGJlZm9yZSBhbmltYXRpbmcgaXQuIEZv ciBtb3JlIGRldGFpbHMsIHNlZSBodHRwczovL3Bsb3QubHkvamF2YXNjcmlw dC9hbmltYXRpb25zLyIpO3ZhciBuPXQuX3RyYW5zaXRpb25EYXRhO24uX2Zy YW1lUXVldWV8fChuLl9mcmFtZVF1ZXVlPVtdKTt2YXIgYT0ocj1mLnN1cHBs eUFuaW1hdGlvbkRlZmF1bHRzKHIpKS50cmFuc2l0aW9uLGk9ci5mcmFtZTtm dW5jdGlvbiBzKHQpe3JldHVybiBBcnJheS5pc0FycmF5KGEpP3Q+PWEubGVu Z3RoP2FbMF06YVt0XTphfWZ1bmN0aW9uIGwodCl7cmV0dXJuIEFycmF5Lmlz QXJyYXkoaSk/dD49aS5sZW5ndGg/aVswXTppW3RdOml9ZnVuY3Rpb24gYyh0 LGUpe3ZhciByPTA7cmV0dXJuIGZ1bmN0aW9uKCl7aWYodCYmKytyPT09ZSly ZXR1cm4gdCgpfX1yZXR1cm4gdm9pZCAwPT09bi5fZnJhbWVXYWl0aW5nQ250 JiYobi5fZnJhbWVXYWl0aW5nQ250PTApLG5ldyBQcm9taXNlKGZ1bmN0aW9u KGksdSl7ZnVuY3Rpb24gaCgpe24uX2N1cnJlbnRGcmFtZSYmbi5fY3VycmVu dEZyYW1lLm9uQ29tcGxldGUmJm4uX2N1cnJlbnRGcmFtZS5vbkNvbXBsZXRl KCk7dmFyIGU9bi5fY3VycmVudEZyYW1lPW4uX2ZyYW1lUXVldWUuc2hpZnQo KTtpZihlKXt2YXIgcj1lLm5hbWU/ZS5uYW1lLnRvU3RyaW5nKCk6bnVsbDt0 Ll9mdWxsTGF5b3V0Ll9jdXJyZW50RnJhbWU9cixuLl9sYXN0RnJhbWVBdD1E YXRlLm5vdygpLG4uX3RpbWVUb05leHQ9ZS5mcmFtZU9wdHMuZHVyYXRpb24s Zi50cmFuc2l0aW9uKHQsZS5mcmFtZS5kYXRhLGUuZnJhbWUubGF5b3V0LGsu Y29lcmNlVHJhY2VJbmRpY2VzKHQsZS5mcmFtZS50cmFjZXMpLGUuZnJhbWVP cHRzLGUudHJhbnNpdGlvbk9wdHMpLnRoZW4oZnVuY3Rpb24oKXtlLm9uQ29t cGxldGUmJmUub25Db21wbGV0ZSgpfSksdC5lbWl0KCJwbG90bHlfYW5pbWF0 aW5nZnJhbWUiLHtuYW1lOnIsZnJhbWU6ZS5mcmFtZSxhbmltYXRpb246e2Zy YW1lOmUuZnJhbWVPcHRzLHRyYW5zaXRpb246ZS50cmFuc2l0aW9uT3B0c319 KX1lbHNlIHQuZW1pdCgicGxvdGx5X2FuaW1hdGVkIiksd2luZG93LmNhbmNl bEFuaW1hdGlvbkZyYW1lKG4uX2FuaW1hdGlvblJhZiksbi5fYW5pbWF0aW9u UmFmPW51bGx9ZnVuY3Rpb24gcCgpe3QuZW1pdCgicGxvdGx5X2FuaW1hdGlu ZyIpLG4uX2xhc3RGcmFtZUF0PS0xLzAsbi5fdGltZVRvTmV4dD0wLG4uX3J1 bm5pbmdUcmFuc2l0aW9ucz0wLG4uX2N1cnJlbnRGcmFtZT1udWxsO3ZhciBl PWZ1bmN0aW9uKCl7bi5fYW5pbWF0aW9uUmFmPXdpbmRvdy5yZXF1ZXN0QW5p bWF0aW9uRnJhbWUoZSksRGF0ZS5ub3coKS1uLl9sYXN0RnJhbWVBdD5uLl90 aW1lVG9OZXh0JiZoKCl9O2UoKX12YXIgZCxnLHY9MDtmdW5jdGlvbiBtKHQp e3JldHVybiBBcnJheS5pc0FycmF5KGEpP3Y+PWEubGVuZ3RoP3QudHJhbnNp dGlvbk9wdHM9YVt2XTp0LnRyYW5zaXRpb25PcHRzPWFbMF06dC50cmFuc2l0 aW9uT3B0cz1hLHYrKyx0fXZhciB5PVtdLHg9bnVsbD09ZSxiPUFycmF5Lmlz QXJyYXkoZSk7aWYoeHx8Ynx8IW8uaXNQbGFpbk9iamVjdChlKSl7aWYoeHx8 LTEhPT1bInN0cmluZyIsIm51bWJlciJdLmluZGV4T2YodHlwZW9mIGUpKWZv cihkPTA7ZDxuLl9mcmFtZXMubGVuZ3RoO2QrKykoZz1uLl9mcmFtZXNbZF0p JiYoeHx8U3RyaW5nKGcuZ3JvdXApPT09U3RyaW5nKGUpKSYmeS5wdXNoKHt0 eXBlOiJieW5hbWUiLG5hbWU6U3RyaW5nKGcubmFtZSksZGF0YTptKHtuYW1l OmcubmFtZX0pfSk7ZWxzZSBpZihiKWZvcihkPTA7ZDxlLmxlbmd0aDtkKysp e3ZhciBfPWVbZF07LTEhPT1bIm51bWJlciIsInN0cmluZyJdLmluZGV4T2Yo dHlwZW9mIF8pPyhfPVN0cmluZyhfKSx5LnB1c2goe3R5cGU6ImJ5bmFtZSIs bmFtZTpfLGRhdGE6bSh7bmFtZTpffSl9KSk6by5pc1BsYWluT2JqZWN0KF8p JiZ5LnB1c2goe3R5cGU6Im9iamVjdCIsZGF0YTptKG8uZXh0ZW5kRmxhdCh7 fSxfKSl9KX19ZWxzZSB5LnB1c2goe3R5cGU6Im9iamVjdCIsZGF0YTptKG8u ZXh0ZW5kRmxhdCh7fSxlKSl9KTtmb3IoZD0wO2Q8eS5sZW5ndGg7ZCsrKWlm KCJieW5hbWUiPT09KGc9eVtkXSkudHlwZSYmIW4uX2ZyYW1lSGFzaFtnLmRh dGEubmFtZV0pcmV0dXJuIG8ud2FybignYW5pbWF0ZSBmYWlsdXJlOiBmcmFt ZSBub3QgZm91bmQ6ICInK2cuZGF0YS5uYW1lKyciJyksdm9pZCB1KCk7LTEh PT1bIm5leHQiLCJpbW1lZGlhdGUiXS5pbmRleE9mKHIubW9kZSkmJmZ1bmN0 aW9uKCl7aWYoMCE9PW4uX2ZyYW1lUXVldWUubGVuZ3RoKXtmb3IoO24uX2Zy YW1lUXVldWUubGVuZ3RoOyl7dmFyIGU9bi5fZnJhbWVRdWV1ZS5wb3AoKTtl Lm9uSW50ZXJydXB0JiZlLm9uSW50ZXJydXB0KCl9dC5lbWl0KCJwbG90bHlf YW5pbWF0aW9uaW50ZXJydXB0ZWQiLFtdKX19KCksInJldmVyc2UiPT09ci5k aXJlY3Rpb24mJnkucmV2ZXJzZSgpO3ZhciB3PXQuX2Z1bGxMYXlvdXQuX2N1 cnJlbnRGcmFtZTtpZih3JiZyLmZyb21jdXJyZW50KXt2YXIgVD0tMTtmb3Io ZD0wO2Q8eS5sZW5ndGg7ZCsrKWlmKCJieW5hbWUiPT09KGc9eVtkXSkudHlw ZSYmZy5uYW1lPT09dyl7VD1kO2JyZWFrfWlmKFQ+MCYmVDx5Lmxlbmd0aC0x KXt2YXIgTT1bXTtmb3IoZD0wO2Q8eS5sZW5ndGg7ZCsrKWc9eVtkXSwoImJ5 bmFtZSIhPT15W2RdLnR5cGV8fGQ+VCkmJk0ucHVzaChnKTt5PU19fXkubGVu Z3RoPjA/ZnVuY3Rpb24oZSl7aWYoMCE9PWUubGVuZ3RoKXtmb3IodmFyIGE9 MDthPGUubGVuZ3RoO2ErKyl7dmFyIG87bz0iYnluYW1lIj09PWVbYV0udHlw ZT9mLmNvbXB1dGVGcmFtZSh0LGVbYV0ubmFtZSk6ZVthXS5kYXRhO3ZhciBo PWwoYSksZD1zKGEpO2QuZHVyYXRpb249TWF0aC5taW4oZC5kdXJhdGlvbixo LmR1cmF0aW9uKTt2YXIgZz17ZnJhbWU6byxuYW1lOmVbYV0ubmFtZSxmcmFt ZU9wdHM6aCx0cmFuc2l0aW9uT3B0czpkfTthPT09ZS5sZW5ndGgtMSYmKGcu b25Db21wbGV0ZT1jKGksMiksZy5vbkludGVycnVwdD11KSxuLl9mcmFtZVF1 ZXVlLnB1c2goZyl9ImltbWVkaWF0ZSI9PT1yLm1vZGUmJihuLl9sYXN0RnJh bWVBdD0tMS8wKSxuLl9hbmltYXRpb25SYWZ8fHAoKX19KHkpOih0LmVtaXQo InBsb3RseV9hbmltYXRlZCIpLGkoKSl9KX0sci5hZGRGcmFtZXM9ZnVuY3Rp b24odCxlLHIpe2lmKHQ9by5nZXRHcmFwaERpdih0KSxudWxsPT1lKXJldHVy biBQcm9taXNlLnJlc29sdmUoKTtpZighby5pc1Bsb3REaXYodCkpdGhyb3cg bmV3IEVycm9yKCJUaGlzIGVsZW1lbnQgaXMgbm90IGEgUGxvdGx5IHBsb3Q6 ICIrdCsiLiBJdCdzIGxpa2VseSB0aGF0IHlvdSd2ZSBmYWlsZWQgdG8gY3Jl YXRlIGEgcGxvdCBiZWZvcmUgYWRkaW5nIGZyYW1lcy4gRm9yIG1vcmUgZGV0 YWlscywgc2VlIGh0dHBzOi8vcGxvdC5seS9qYXZhc2NyaXB0L2FuaW1hdGlv bnMvIik7dmFyIG4sYSxpLHMsbD10Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVz LHU9dC5fdHJhbnNpdGlvbkRhdGEuX2ZyYW1lSGFzaDtpZighQXJyYXkuaXNB cnJheShlKSl0aHJvdyBuZXcgRXJyb3IoImFkZEZyYW1lcyBmYWlsdXJlOiBm cmFtZUxpc3QgbXVzdCBiZSBhbiBBcnJheSBvZiBmcmFtZSBkZWZpbml0aW9u cyIrZSk7dmFyIGg9bC5sZW5ndGgrMiplLmxlbmd0aCxwPVtdLGQ9e307Zm9y KG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZihvLmlzUGxhaW5PYmplY3QoZVtu XSkpe3ZhciBnPWVbbl0ubmFtZSx2PSh1W2ddfHxkW2ddfHx7fSkubmFtZSxt PWVbbl0ubmFtZSx5PXVbdl18fGRbdl07diYmbSYmIm51bWJlciI9PXR5cGVv ZiBtJiZ5JiZTPEUmJihTKyssby53YXJuKCdhZGRGcmFtZXM6IG92ZXJ3cml0 aW5nIGZyYW1lICInKyh1W3ZdfHxkW3ZdKS5uYW1lKyciIHdpdGggYSBmcmFt ZSB3aG9zZSBuYW1lIG9mIHR5cGUgIm51bWJlciIgYWxzbyBlcXVhdGVzIHRv ICInK3YrJyIuIFRoaXMgaXMgdmFsaWQgYnV0IG1heSBwb3RlbnRpYWxseSBs ZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3Igc2luY2UgYWxsIHBsb3RseS5q cyBmcmFtZSBuYW1lcyBhcmUgc3RvcmVkIGludGVybmFsbHkgYXMgc3RyaW5n cy4nKSxTPT09RSYmby53YXJuKCJhZGRGcmFtZXM6IFRoaXMgQVBJIGNhbGwg aGFzIHlpZWxkZWQgdG9vIG1hbnkgb2YgdGhlc2Ugd2FybmluZ3MuIEZvciB0 aGUgcmVzdCBvZiB0aGlzIGNhbGwsIGZ1cnRoZXIgd2FybmluZ3MgYWJvdXQg bnVtZXJpYyBmcmFtZSBuYW1lcyB3aWxsIGJlIHN1cHByZXNzZWQuIikpLGRb Z109e25hbWU6Z30scC5wdXNoKHtmcmFtZTpmLnN1cHBseUZyYW1lRGVmYXVs dHMoZVtuXSksaW5kZXg6ciYmdm9pZCAwIT09cltuXSYmbnVsbCE9PXJbbl0/ cltuXTpoK259KX1wLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pbmRl eD5lLmluZGV4Py0xOnQuaW5kZXg8ZS5pbmRleD8xOjB9KTt2YXIgeD1bXSxi PVtdLF89bC5sZW5ndGg7Zm9yKG49cC5sZW5ndGgtMTtuPj0wO24tLSl7aWYo Im51bWJlciI9PXR5cGVvZihhPXBbbl0uZnJhbWUpLm5hbWUmJm8ud2Fybigi V2FybmluZzogYWRkRnJhbWVzIGFjY2VwdHMgZnJhbWVzIHdpdGggbnVtZXJp YyBuYW1lcywgYnV0IHRoZSBudW1iZXJzIGFyZWltcGxpY2l0bHkgY2FzdCB0 byBzdHJpbmdzIiksIWEubmFtZSlmb3IoO3VbYS5uYW1lPSJmcmFtZSAiK3Qu X3RyYW5zaXRpb25EYXRhLl9jb3VudGVyKytdOyk7aWYodVthLm5hbWVdKXtm b3IoaT0wO2k8bC5sZW5ndGgmJihsW2ldfHx7fSkubmFtZSE9PWEubmFtZTtp KyspO3gucHVzaCh7dHlwZToicmVwbGFjZSIsaW5kZXg6aSx2YWx1ZTphfSks Yi51bnNoaWZ0KHt0eXBlOiJyZXBsYWNlIixpbmRleDppLHZhbHVlOmxbaV19 KX1lbHNlIHM9TWF0aC5tYXgoMCxNYXRoLm1pbihwW25dLmluZGV4LF8pKSx4 LnB1c2goe3R5cGU6Imluc2VydCIsaW5kZXg6cyx2YWx1ZTphfSksYi51bnNo aWZ0KHt0eXBlOiJkZWxldGUiLGluZGV4OnN9KSxfKyt9dmFyIHc9Zi5tb2Rp ZnlGcmFtZXMsaz1mLm1vZGlmeUZyYW1lcyxUPVt0LGJdLE09W3QseF07cmV0 dXJuIGMmJmMuYWRkKHQsdyxULGssTSksZi5tb2RpZnlGcmFtZXModCx4KX0s ci5kZWxldGVGcmFtZXM9ZnVuY3Rpb24odCxlKXtpZih0PW8uZ2V0R3JhcGhE aXYodCksIW8uaXNQbG90RGl2KHQpKXRocm93IG5ldyBFcnJvcigiVGhpcyBl bGVtZW50IGlzIG5vdCBhIFBsb3RseSBwbG90OiAiK3QpO3ZhciByLG4sYT10 Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVzLGk9W10scz1bXTtpZighZSlmb3Io ZT1bXSxyPTA7cjxhLmxlbmd0aDtyKyspZS5wdXNoKHIpO2ZvcigoZT1lLnNs aWNlKCkpLnNvcnQoKSxyPWUubGVuZ3RoLTE7cj49MDtyLS0pbj1lW3JdLGku cHVzaCh7dHlwZToiZGVsZXRlIixpbmRleDpufSkscy51bnNoaWZ0KHt0eXBl OiJpbnNlcnQiLGluZGV4Om4sdmFsdWU6YVtuXX0pO3ZhciBsPWYubW9kaWZ5 RnJhbWVzLHU9Zi5tb2RpZnlGcmFtZXMsaD1bdCxzXSxwPVt0LGldO3JldHVy biBjJiZjLmFkZCh0LGwsaCx1LHApLGYubW9kaWZ5RnJhbWVzKHQsaSl9LHIu YWRkVHJhY2VzPWZ1bmN0aW9uIHQoZSxuLGEpe2U9by5nZXRHcmFwaERpdihl KTt2YXIgaSxzLGw9W10sdT1yLmRlbGV0ZVRyYWNlcyxoPXQsZj1bZSxsXSxw PVtlLG5dO2ZvcihmdW5jdGlvbih0LGUscil7dmFyIG4sYTtpZighQXJyYXku aXNBcnJheSh0LmRhdGEpKXRocm93IG5ldyBFcnJvcigiZ2QuZGF0YSBtdXN0 IGJlIGFuIGFycmF5LiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZSl0aHJv dyBuZXcgRXJyb3IoInRyYWNlcyBtdXN0IGJlIGRlZmluZWQuIik7Zm9yKEFy cmF5LmlzQXJyYXkoZSl8fChlPVtlXSksbj0wO248ZS5sZW5ndGg7bisrKWlm KCJvYmplY3QiIT10eXBlb2YoYT1lW25dKXx8QXJyYXkuaXNBcnJheShhKXx8 bnVsbD09PWEpdGhyb3cgbmV3IEVycm9yKCJhbGwgdmFsdWVzIGluIHRyYWNl cyBhcnJheSBtdXN0IGJlIG5vbi1hcnJheSBvYmplY3RzIik7aWYoInVuZGVm aW5lZCI9PXR5cGVvZiByfHxBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pLCJ1 bmRlZmluZWQiIT10eXBlb2YgciYmci5sZW5ndGghPT1lLmxlbmd0aCl0aHJv dyBuZXcgRXJyb3IoImlmIGluZGljZXMgaXMgc3BlY2lmaWVkLCB0cmFjZXMu bGVuZ3RoIG11c3QgZXF1YWwgaW5kaWNlcy5sZW5ndGgiKX0oZSxuLGEpLEFy cmF5LmlzQXJyYXkobil8fChuPVtuXSksbj1uLm1hcChmdW5jdGlvbih0KXty ZXR1cm4gby5leHRlbmRGbGF0KHt9LHQpfSksay5jbGVhbkRhdGEobiksaT0w O2k8bi5sZW5ndGg7aSsrKWUuZGF0YS5wdXNoKG5baV0pO2ZvcihpPTA7aTxu Lmxlbmd0aDtpKyspbC5wdXNoKC1uLmxlbmd0aCtpKTtpZigidW5kZWZpbmVk Ij09dHlwZW9mIGEpcmV0dXJuIHM9ci5yZWRyYXcoZSksYy5hZGQoZSx1LGYs aCxwKSxzO0FycmF5LmlzQXJyYXkoYSl8fChhPVthXSk7dHJ5e0QoZSxsLGEp fWNhdGNoKHQpe3Rocm93IGUuZGF0YS5zcGxpY2UoZS5kYXRhLmxlbmd0aC1u Lmxlbmd0aCxuLmxlbmd0aCksdH1yZXR1cm4gYy5zdGFydFNlcXVlbmNlKGUp LGMuYWRkKGUsdSxmLGgscCkscz1yLm1vdmVUcmFjZXMoZSxsLGEpLGMuc3Rv cFNlcXVlbmNlKGUpLHN9LHIuZGVsZXRlVHJhY2VzPWZ1bmN0aW9uIHQoZSxu KXtlPW8uZ2V0R3JhcGhEaXYoZSk7dmFyIGEsaSxzPVtdLGw9ci5hZGRUcmFj ZXMsdT10LGg9W2UscyxuXSxmPVtlLG5dO2lmKCJ1bmRlZmluZWQiPT10eXBl b2Ygbil0aHJvdyBuZXcgRXJyb3IoImluZGljZXMgbXVzdCBiZSBhbiBpbnRl Z2VyIG9yIGFycmF5IG9mIGludGVnZXJzLiIpO2ZvcihBcnJheS5pc0FycmF5 KG4pfHwobj1bbl0pLEkoZSxuLCJpbmRpY2VzIiksKG49eihuLGUuZGF0YS5s ZW5ndGgtMSkpLnNvcnQoby5zb3J0ZXJEZXMpLGE9MDthPG4ubGVuZ3RoO2Er PTEpaT1lLmRhdGEuc3BsaWNlKG5bYV0sMSlbMF0scy5wdXNoKGkpO3ZhciBw PXIucmVkcmF3KGUpO3JldHVybiBjLmFkZChlLGwsaCx1LGYpLHB9LHIuZXh0 ZW5kVHJhY2VzPWZ1bmN0aW9uIHQoZSxuLGEsaSl7dmFyIHM9UihlPW8uZ2V0 R3JhcGhEaXYoZSksbixhLGksZnVuY3Rpb24odCxlLHIpe3ZhciBuLGE7aWYo by5pc1R5cGVkQXJyYXkodCkpaWYocjwwKXt2YXIgaT1uZXcgdC5jb25zdHJ1 Y3RvcigwKSxzPUYodCxlKTtyPDA/KG49cyxhPWkpOihuPWksYT1zKX1lbHNl IGlmKG49bmV3IHQuY29uc3RydWN0b3IociksYT1uZXcgdC5jb25zdHJ1Y3Rv cih0Lmxlbmd0aCtlLmxlbmd0aC1yKSxyPT09ZS5sZW5ndGgpbi5zZXQoZSks YS5zZXQodCk7ZWxzZSBpZihyPGUubGVuZ3RoKXt2YXIgbD1lLmxlbmd0aC1y O24uc2V0KGUuc3ViYXJyYXkobCkpLGEuc2V0KHQpLGEuc2V0KGUuc3ViYXJy YXkoMCxsKSx0Lmxlbmd0aCl9ZWxzZXt2YXIgYz1yLWUubGVuZ3RoLHU9dC5s ZW5ndGgtYztuLnNldCh0LnN1YmFycmF5KHUpKSxuLnNldChlLGMpLGEuc2V0 KHQuc3ViYXJyYXkoMCx1KSl9ZWxzZSBuPXQuY29uY2F0KGUpLGE9cj49MCYm cjxuLmxlbmd0aD9uLnNwbGljZSgwLG4ubGVuZ3RoLXIpOltdO3JldHVybltu LGFdfSksbD1yLnJlZHJhdyhlKSx1PVtlLHMudXBkYXRlLGEscy5tYXhQb2lu dHNdO3JldHVybiBjLmFkZChlLHIucHJlcGVuZFRyYWNlcyx1LHQsYXJndW1l bnRzKSxsfSxyLm1vdmVUcmFjZXM9ZnVuY3Rpb24gdChlLG4sYSl7dmFyIGks cz1bXSxsPVtdLHU9dCxoPXQsZj1bZT1vLmdldEdyYXBoRGl2KGUpLGEsbl0s cD1bZSxuLGFdO2lmKEQoZSxuLGEpLG49QXJyYXkuaXNBcnJheShuKT9uOltu XSwidW5kZWZpbmVkIj09dHlwZW9mIGEpZm9yKGE9W10saT0wO2k8bi5sZW5n dGg7aSsrKWEucHVzaCgtbi5sZW5ndGgraSk7Zm9yKGE9QXJyYXkuaXNBcnJh eShhKT9hOlthXSxuPXoobixlLmRhdGEubGVuZ3RoLTEpLGE9eihhLGUuZGF0 YS5sZW5ndGgtMSksaT0wO2k8ZS5kYXRhLmxlbmd0aDtpKyspLTE9PT1uLmlu ZGV4T2YoaSkmJnMucHVzaChlLmRhdGFbaV0pO2ZvcihpPTA7aTxuLmxlbmd0 aDtpKyspbC5wdXNoKHtuZXdJbmRleDphW2ldLHRyYWNlOmUuZGF0YVtuW2ld XX0pO2ZvcihsLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5uZXdJbmRl eC1lLm5ld0luZGV4fSksaT0wO2k8bC5sZW5ndGg7aSs9MSlzLnNwbGljZShs W2ldLm5ld0luZGV4LDAsbFtpXS50cmFjZSk7ZS5kYXRhPXM7dmFyIGQ9ci5y ZWRyYXcoZSk7cmV0dXJuIGMuYWRkKGUsdSxmLGgscCksZH0sci5wcmVwZW5k VHJhY2VzPWZ1bmN0aW9uIHQoZSxuLGEsaSl7dmFyIHM9UihlPW8uZ2V0R3Jh cGhEaXYoZSksbixhLGksZnVuY3Rpb24odCxlLHIpe3ZhciBuLGE7aWYoby5p c1R5cGVkQXJyYXkodCkpaWYocjw9MCl7dmFyIGk9bmV3IHQuY29uc3RydWN0 b3IoMCkscz1GKGUsdCk7cjwwPyhuPXMsYT1pKToobj1pLGE9cyl9ZWxzZSBp ZihuPW5ldyB0LmNvbnN0cnVjdG9yKHIpLGE9bmV3IHQuY29uc3RydWN0b3Io dC5sZW5ndGgrZS5sZW5ndGgtcikscj09PWUubGVuZ3RoKW4uc2V0KGUpLGEu c2V0KHQpO2Vsc2UgaWYocjxlLmxlbmd0aCl7dmFyIGw9ZS5sZW5ndGgtcjtu LnNldChlLnN1YmFycmF5KDAsbCkpLGEuc2V0KGUuc3ViYXJyYXkobCkpLGEu c2V0KHQsbCl9ZWxzZXt2YXIgYz1yLWUubGVuZ3RoO24uc2V0KGUpLG4uc2V0 KHQuc3ViYXJyYXkoMCxjKSxlLmxlbmd0aCksYS5zZXQodC5zdWJhcnJheShj KSl9ZWxzZSBuPWUuY29uY2F0KHQpLGE9cj49MCYmcjxuLmxlbmd0aD9uLnNw bGljZShyLG4ubGVuZ3RoKTpbXTtyZXR1cm5bbixhXX0pLGw9ci5yZWRyYXco ZSksdT1bZSxzLnVwZGF0ZSxhLHMubWF4UG9pbnRzXTtyZXR1cm4gYy5hZGQo ZSxyLmV4dGVuZFRyYWNlcyx1LHQsYXJndW1lbnRzKSxsfSxyLm5ld1Bsb3Q9 ZnVuY3Rpb24odCxlLG4sYSl7cmV0dXJuIHQ9by5nZXRHcmFwaERpdih0KSxm LmNsZWFuUGxvdChbXSx7fSx0Ll9mdWxsRGF0YXx8W10sdC5fZnVsbExheW91 dHx8e30pLGYucHVyZ2UodCksci5wbG90KHQsZSxuLGEpfSxyLnBsb3Q9ZnVu Y3Rpb24odCxlLGEsaSl7dmFyIHM7aWYodD1vLmdldEdyYXBoRGl2KHQpLGwu aW5pdCh0KSxvLmlzUGxhaW5PYmplY3QoZSkpe3ZhciBjPWU7ZT1jLmRhdGEs YT1jLmxheW91dCxpPWMuY29uZmlnLHM9Yy5mcmFtZXN9aWYoITE9PT1sLnRy aWdnZXJIYW5kbGVyKHQsInBsb3RseV9iZWZvcmVwbG90IixbZSxhLGldKSly ZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtlfHxhfHxvLmlzUGxvdERpdih0KXx8 by53YXJuKCJDYWxsaW5nIFBsb3RseS5wbG90IGFzIGlmIHJlZHJhd2luZyBi dXQgdGhpcyBjb250YWluZXIgZG9lc24ndCB5ZXQgaGF2ZSBhIHBsb3QuIix0 KSxPKHQsaSksYXx8KGE9e30pLG4uc2VsZWN0KHQpLmNsYXNzZWQoImpzLXBs b3RseS1wbG90IiwhMCksZy5tYWtlVGVzdGVyKCksQXJyYXkuaXNBcnJheSh0 Ll9wcm9taXNlcyl8fCh0Ll9wcm9taXNlcz1bXSk7dmFyIGg9MD09PSh0LmRh dGF8fFtdKS5sZW5ndGgmJkFycmF5LmlzQXJyYXkoZSk7QXJyYXkuaXNBcnJh eShlKSYmKGsuY2xlYW5EYXRhKGUpLGg/dC5kYXRhPWU6dC5kYXRhLnB1c2gu YXBwbHkodC5kYXRhLGUpLHQuZW1wdHk9ITEpLHQubGF5b3V0JiYhaHx8KHQu bGF5b3V0PWsuY2xlYW5MYXlvdXQoYSkpLGYuc3VwcGx5RGVmYXVsdHModCk7 dmFyIHY9dC5fZnVsbExheW91dCx5PXYuX2hhcygiY2FydGVzaWFuIik7aWYo IXYuX2hhcygicG9sYXIiKSYmZSYmZVswXSYmZVswXS5yKXJldHVybiBvLmxv ZygiTGVnYWN5IHBvbGFyIGNoYXJ0cyBhcmUgZGVwcmVjYXRlZCEiKSxmdW5j dGlvbih0LGUscil7dmFyIGE9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCIucGxv dC1jb250YWluZXIiKS5kYXRhKFswXSk7YS5lbnRlcigpLmluc2VydCgiZGl2 IiwiOmZpcnN0LWNoaWxkIikuY2xhc3NlZCgicGxvdC1jb250YWluZXIgcGxv dGx5IiwhMCk7dmFyIGk9YS5zZWxlY3RBbGwoIi5zdmctY29udGFpbmVyIiku ZGF0YShbMF0pO2kuZW50ZXIoKS5hcHBlbmQoImRpdiIpLmNsYXNzZWQoInN2 Zy1jb250YWluZXIiLCEwKS5zdHlsZSgicG9zaXRpb24iLCJyZWxhdGl2ZSIp LGkuaHRtbCgiIiksZSYmKHQuZGF0YT1lKSxyJiYodC5sYXlvdXQ9cikscC5t YW5hZ2VyLmZpbGxMYXlvdXQodCksaS5zdHlsZSh7d2lkdGg6dC5fZnVsbExh eW91dC53aWR0aCsicHgiLGhlaWdodDp0Ll9mdWxsTGF5b3V0LmhlaWdodCsi cHgifSksdC5mcmFtZXdvcms9cC5tYW5hZ2VyLmZyYW1ld29yayh0KSx0LmZy YW1ld29yayh7ZGF0YTp0LmRhdGEsbGF5b3V0OnQubGF5b3V0fSxpLm5vZGUo KSksdC5mcmFtZXdvcmsuc2V0VW5kb1BvaW50KCk7dmFyIHM9dC5mcmFtZXdv cmsuc3ZnKCksbD0xLGM9dC5fZnVsbExheW91dC50aXRsZT90Ll9mdWxsTGF5 b3V0LnRpdGxlLnRleHQ6IiI7IiIhPT1jJiZjfHwobD0wKTt2YXIgdT1mdW5j dGlvbigpe3RoaXMuY2FsbCh4LmNvbnZlcnRUb1RzcGFucyx0KX0saD1zLnNl bGVjdCgiLnRpdGxlLWdyb3VwIHRleHQiKS5jYWxsKHUpO2lmKHQuX2NvbnRl eHQuZWRpdHMudGl0bGVUZXh0KXt2YXIgZD1vLl8odCwiQ2xpY2sgdG8gZW50 ZXIgUGxvdCB0aXRsZSIpO2MmJmMhPT1kfHwobD0uMixoLmF0dHIoeyJkYXRh LXVuZm9ybWF0dGVkIjpkfSkudGV4dChkKS5zdHlsZSh7b3BhY2l0eTpsfSku b24oIm1vdXNlb3Zlci5vcGFjaXR5IixmdW5jdGlvbigpe24uc2VsZWN0KHRo aXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbigxMDApLnN0eWxlKCJvcGFjaXR5 IiwxKX0pLm9uKCJtb3VzZW91dC5vcGFjaXR5IixmdW5jdGlvbigpe24uc2Vs ZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbigxZTMpLnN0eWxlKCJv cGFjaXR5IiwwKX0pKTt2YXIgZz1mdW5jdGlvbigpe3RoaXMuY2FsbCh4Lm1h a2VFZGl0YWJsZSx7Z2Q6dH0pLm9uKCJlZGl0IixmdW5jdGlvbihlKXt0LmZy YW1ld29yayh7bGF5b3V0Ont0aXRsZTp7dGV4dDplfX19KSx0aGlzLnRleHQo ZSkuY2FsbCh1KSx0aGlzLmNhbGwoZyl9KS5vbigiY2FuY2VsIixmdW5jdGlv bigpe3ZhciB0PXRoaXMuYXR0cigiZGF0YS11bmZvcm1hdHRlZCIpO3RoaXMu dGV4dCh0KS5jYWxsKHUpfSl9O2guY2FsbChnKX1yZXR1cm4gdC5fY29udGV4 dC5zZXRCYWNrZ3JvdW5kKHQsdC5fZnVsbExheW91dC5wYXBlcl9iZ2NvbG9y KSxmLmFkZExpbmtzKHQpLFByb21pc2UucmVzb2x2ZSgpfSh0LGUsYSk7di5f cmVwbG90dGluZz0hMCxoJiZsdCh0KSx0LmZyYW1ld29yayE9PWx0JiYodC5m cmFtZXdvcms9bHQsbHQodCkpLGcuaW5pdEdyYWRpZW50cyh0KSxoJiZkLnNh dmVTaG93U3Bpa2VJbml0aWFsKHQpO3ZhciBiPSF0LmNhbGNkYXRhfHx0LmNh bGNkYXRhLmxlbmd0aCE9PSh0Ll9mdWxsRGF0YXx8W10pLmxlbmd0aDtiJiZm LmRvQ2FsY2RhdGEodCk7Zm9yKHZhciBfPTA7Xzx0LmNhbGNkYXRhLmxlbmd0 aDtfKyspdC5jYWxjZGF0YVtfXVswXS50cmFjZT10Ll9mdWxsRGF0YVtfXTt0 Ll9jb250ZXh0LnJlc3BvbnNpdmU/dC5fcmVzcG9uc2l2ZUNoYXJ0SGFuZGxl cnx8KHQuX3Jlc3BvbnNpdmVDaGFydEhhbmRsZXI9ZnVuY3Rpb24oKXtvLmlz SGlkZGVuKHQpfHxmLnJlc2l6ZSh0KX0sd2luZG93LmFkZEV2ZW50TGlzdGVu ZXIoInJlc2l6ZSIsdC5fcmVzcG9uc2l2ZUNoYXJ0SGFuZGxlcikpOm8uY2xl YXJSZXNwb25zaXZlKHQpO3ZhciB3PW8uZXh0ZW5kRmxhdCh7fSx2Ll9zaXpl KSxNPTA7ZnVuY3Rpb24gQSgpe2lmKGYuY2xlYXJBdXRvTWFyZ2luSWRzKHQp LFQuZHJhd01hcmdpblB1c2hlcnModCksZC5hbGxvd0F1dG9NYXJnaW4odCks di5faGFzKCJwaWUiKSlmb3IodmFyIGU9dC5fZnVsbERhdGEscj0wO3I8ZS5s ZW5ndGg7cisrKXt2YXIgbj1lW3JdOyJwaWUiPT09bi50eXBlJiZuLmF1dG9t YXJnaW4mJmYuYWxsb3dBdXRvTWFyZ2luKHQsInBpZS4iK24udWlkKyIuYXV0 b21hcmdpbiIpfXJldHVybiBmLmRvQXV0b01hcmdpbih0KSxmLnByZXZpb3Vz UHJvbWlzZXModCl9ZnVuY3Rpb24gUygpe3QuX3RyYW5zaXRpb25pbmd8fChU LmRvQXV0b1JhbmdlQW5kQ29uc3RyYWludHModCksaCYmZC5zYXZlUmFuZ2VJ bml0aWFsKHQpLHUuZ2V0Q29tcG9uZW50TWV0aG9kKCJyYW5nZXNsaWRlciIs ImNhbGNBdXRvcmFuZ2UiKSh0KSl9dmFyIEU9W2YucHJldmlvdXNQcm9taXNl cyxmdW5jdGlvbigpe2lmKHMpcmV0dXJuIHIuYWRkRnJhbWVzKHQscyl9LGZ1 bmN0aW9uIGUoKXtmb3IodmFyIHI9di5fYmFzZVBsb3RNb2R1bGVzLG49MDtu PHIubGVuZ3RoO24rKylyW25dLmRyYXdGcmFtZXdvcmsmJnJbbl0uZHJhd0Zy YW1ld29yayh0KTtpZighdi5fZ2xjYW52YXMmJnYuX2hhcygiZ2wiKSYmKHYu X2dsY2FudmFzPXYuX2dsY29udGFpbmVyLnNlbGVjdEFsbCgiLmdsLWNhbnZh cyIpLmRhdGEoW3trZXk6ImNvbnRleHRMYXllciIsY29udGV4dDohMCxwaWNr OiExfSx7a2V5OiJmb2N1c0xheWVyIixjb250ZXh0OiExLHBpY2s6ITF9LHtr ZXk6InBpY2tMYXllciIsY29udGV4dDohMSxwaWNrOiEwfV0sZnVuY3Rpb24o dCl7cmV0dXJuIHQua2V5fSksdi5fZ2xjYW52YXMuZW50ZXIoKS5hcHBlbmQo ImNhbnZhcyIpLmF0dHIoImNsYXNzIixmdW5jdGlvbih0KXtyZXR1cm4iZ2wt Y2FudmFzIGdsLWNhbnZhcy0iK3Qua2V5LnJlcGxhY2UoIkxheWVyIiwiIil9 KS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsb3Zl cmZsb3c6InZpc2libGUiLCJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSkpLHYu X2dsY2FudmFzKXt2Ll9nbGNhbnZhcy5hdHRyKCJ3aWR0aCIsdi53aWR0aCku YXR0cigiaGVpZ2h0Iix2LmhlaWdodCk7dmFyIGE9di5fZ2xjYW52YXMuZGF0 YSgpWzBdLnJlZ2w7aWYoYSYmKE1hdGguZmxvb3Iodi53aWR0aCkhPT1hLl9n bC5kcmF3aW5nQnVmZmVyV2lkdGh8fE1hdGguZmxvb3Iodi5oZWlnaHQpIT09 YS5fZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCkpe3ZhciBpPSJXZWJHTCBjb250 ZXh0IGJ1ZmZlciBhbmQgY2FudmFzIGRpbWVuc2lvbnMgZG8gbm90IG1hdGNo IGR1ZSB0byBicm93c2VyL1dlYkdMIGJ1Zy4iO2lmKCFNKXJldHVybiBvLmxv ZyhpKyIgQ2xlYXJpbmcgZ3JhcGggYW5kIHBsb3R0aW5nIGFnYWluLiIpLGYu Y2xlYW5QbG90KFtdLHt9LHQuX2Z1bGxEYXRhLHYpLGYuc3VwcGx5RGVmYXVs dHModCksdj10Ll9mdWxsTGF5b3V0LGYuZG9DYWxjZGF0YSh0KSxNKyssZSgp O28uZXJyb3IoaSl9fXJldHVybiJoIj09PXYubW9kZWJhci5vcmllbnRhdGlv bj92Ll9tb2RlYmFyZGl2LnN0eWxlKCJoZWlnaHQiLG51bGwpLnN0eWxlKCJ3 aWR0aCIsIjEwMCUiKTp2Ll9tb2RlYmFyZGl2LnN0eWxlKCJ3aWR0aCIsbnVs bCkuc3R5bGUoImhlaWdodCIsdi5oZWlnaHQrInB4IiksZi5wcmV2aW91c1By b21pc2VzKHQpfSxBLGZ1bmN0aW9uKCl7aWYoZi5kaWRNYXJnaW5DaGFuZ2Uo dyx2Ll9zaXplKSlyZXR1cm4gby5zeW5jT3JBc3luYyhbQSxULmxheW91dFN0 eWxlc10sdCl9XTt5JiZFLnB1c2goZnVuY3Rpb24oKXtpZihiKXJldHVybiBv LnN5bmNPckFzeW5jKFt1LmdldENvbXBvbmVudE1ldGhvZCgic2hhcGVzIiwi Y2FsY0F1dG9yYW5nZSIpLHUuZ2V0Q29tcG9uZW50TWV0aG9kKCJhbm5vdGF0 aW9ucyIsImNhbGNBdXRvcmFuZ2UiKSxTXSx0KTtTKCl9KSxFLnB1c2goVC5s YXlvdXRTdHlsZXMpLHkmJkUucHVzaChmdW5jdGlvbigpe3JldHVybiBkLmRy YXcodCxoPyIiOiJyZWRyYXciKX0pLEUucHVzaChULmRyYXdEYXRhLFQuZmlu YWxEcmF3LG0sZi5hZGRMaW5rcyxmLnJlaG92ZXIsZi5yZWRyYWcsZi5kb0F1 dG9NYXJnaW4sZi5wcmV2aW91c1Byb21pc2VzKTt2YXIgQz1vLnN5bmNPckFz eW5jKEUsdCk7cmV0dXJuIEMmJkMudGhlbnx8KEM9UHJvbWlzZS5yZXNvbHZl KCkpLEMudGhlbihmdW5jdGlvbigpe3JldHVybiBMKHQpLHR9KX0sci5wdXJn ZT1mdW5jdGlvbih0KXt2YXIgZT0odD1vLmdldEdyYXBoRGl2KHQpKS5fZnVs bExheW91dHx8e30scj10Ll9mdWxsRGF0YXx8W107cmV0dXJuIGYuY2xlYW5Q bG90KFtdLHt9LHIsZSksZi5wdXJnZSh0KSxsLnB1cmdlKHQpLGUuX2NvbnRh aW5lciYmZS5fY29udGFpbmVyLnJlbW92ZSgpLGRlbGV0ZSB0Ll9jb250ZXh0 LHR9LHIucmVhY3Q9ZnVuY3Rpb24odCxlLG4sYSl7dmFyIGksbDt0PW8uZ2V0 R3JhcGhEaXYodCksay5jbGVhclByb21pc2VRdWV1ZSh0KTt2YXIgYz10Ll9m dWxsRGF0YSxwPXQuX2Z1bGxMYXlvdXQ7aWYoby5pc1Bsb3REaXYodCkmJmMm JnApe2lmKG8uaXNQbGFpbk9iamVjdChlKSl7dmFyIGQ9ZTtlPWQuZGF0YSxu PWQubGF5b3V0LGE9ZC5jb25maWcsaT1kLmZyYW1lc312YXIgZz0hMTtpZihh KXt2YXIgdj1vLmV4dGVuZERlZXAoe30sdC5fY29udGV4dCk7dC5fY29udGV4 dD12b2lkIDAsTyh0LGEpLGc9ZnVuY3Rpb24gdChlLHIpe3ZhciBuO2Zvcihu IGluIGUpaWYoIl8iIT09bi5jaGFyQXQoMCkpe3ZhciBhPWVbbl0saT1yW25d O2lmKGEhPT1pKWlmKG8uaXNQbGFpbk9iamVjdChhKSYmby5pc1BsYWluT2Jq ZWN0KGkpKXtpZih0KGEsaSkpcmV0dXJuITB9ZWxzZXtpZighQXJyYXkuaXNB cnJheShhKXx8IUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuITA7aWYoYS5sZW5n dGghPT1pLmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIHM9MDtzPGEubGVuZ3Ro O3MrKylpZihhW3NdIT09aVtzXSl7aWYoIW8uaXNQbGFpbk9iamVjdChhW3Nd KXx8IW8uaXNQbGFpbk9iamVjdChpW3NdKSlyZXR1cm4hMDtpZih0KGFbc10s aVtzXSkpcmV0dXJuITB9fX19KHYsdC5fY29udGV4dCl9dC5kYXRhPWV8fFtd LGsuY2xlYW5EYXRhKHQuZGF0YSksdC5sYXlvdXQ9bnx8e30say5jbGVhbkxh eW91dCh0LmxheW91dCksZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaSxsLGMs dSxoLGYscCxkPW4uX3ByZUdVSSxnPVtdLHY9e307Zm9yKGEgaW4gZCl7aWYo dT1ydChhLHR0KSl7aWYoaT11LmF0dHJ8fHUuaGVhZCsiLnVpcmV2aXNpb24i LChjPShsPXMobixpKS5nZXQoKSkmJm50KGksZSkpJiZjPT09bCYmKG51bGw9 PT0oaD1kW2FdKSYmKGg9dm9pZCAwKSxvdChwPShmPXMoZSxhKSkuZ2V0KCks aCkpKXt2b2lkIDA9PT1wJiYiYXV0b3JhbmdlIj09PWEuc3Vic3RyKGEubGVu Z3RoLTkpJiZnLnB1c2goYS5zdWJzdHIoMCxhLmxlbmd0aC0xMCkpLGYuc2V0 KE4ocyhuLGEpLmdldCgpKSk7Y29udGludWV9fWVsc2Ugby53YXJuKCJ1bnJl Y29nbml6ZWQgR1VJIGVkaXQ6ICIrYSk7ZGVsZXRlIGRbYV0sInJhbmdlWyI9 PT1hLnN1YnN0cihhLmxlbmd0aC04LDYpJiYodlthLnN1YnN0cigwLGEubGVu Z3RoLTkpXT0xKX1mb3IodmFyIG09MDttPGcubGVuZ3RoO20rKyl7dmFyIHk9 Z1ttXTtpZih2W3ldKXt2YXIgeD1zKGUseSkuZ2V0KCk7eCYmZGVsZXRlIHgu YXV0b3JhbmdlfX12YXIgYj1uLl90cmFjZVByZUdVSTtmb3IodmFyIF8gaW4g Yil7dmFyIHcsaz1iW19dLFQ9bnVsbDtmb3IoYSBpbiBrKXtpZighVCl7dmFy IE09YXQoXyxyKTtpZihNPDApe2RlbGV0ZSBiW19dO2JyZWFrfXZhciBBPWl0 KF8sdCwodz1yW01dLl9mdWxsSW5wdXQpLmluZGV4KTtpZihBPDApe2RlbGV0 ZSBiW19dO2JyZWFrfVQ9dFtBXX1pZih1PXJ0KGEsZXQpKXtpZih1LmF0dHI/ Yz0obD1zKG4sdS5hdHRyKS5nZXQoKSkmJm50KHUuYXR0cixlKToobD13LnVp cmV2aXNpb24sdm9pZCAwPT09KGM9VC51aXJldmlzaW9uKSYmKGM9ZS51aXJl dmlzaW9uKSksYyYmYz09PWwmJihudWxsPT09KGg9a1thXSkmJihoPXZvaWQg MCksb3QocD0oZj1zKFQsYSkpLmdldCgpLGgpKSl7Zi5zZXQoTihzKHcsYSku Z2V0KCkpKTtjb250aW51ZX19ZWxzZSBvLndhcm4oInVucmVjb2duaXplZCBH VUkgZWRpdDogIithKyIgaW4gdHJhY2UgdWlkICIrXyk7ZGVsZXRlIGtbYV19 fX0odC5kYXRhLHQubGF5b3V0LGMscCksZi5zdXBwbHlEZWZhdWx0cyh0LHtz a2lwVXBkYXRlQ2FsYzohMH0pO3ZhciBtPXQuX2Z1bGxEYXRhLHk9dC5fZnVs bExheW91dCx4PXZvaWQgMD09PXkuZGF0YXJldmlzaW9uLGI9eS50cmFuc2l0 aW9uLF89ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgaT1NLmxheW91dEZsYWdz KCk7cmV0dXJuIGkuYXJyYXlzPXt9LGkucmFuZ2VzQWx0ZXJlZD17fSxpLm5D aGFuZ2VzPTAsaS5uQ2hhbmdlc0FuaW09MCxzdChlLHIsW10se2dldFZhbE9i amVjdDpmdW5jdGlvbih0KXtyZXR1cm4gaC5nZXRMYXlvdXRWYWxPYmplY3Qo cix0KX0sZmxhZ3M6aSxpbW11dGFibGU6bix0cmFuc2l0aW9uOmEsZ2Q6dH0p LChpLnBsb3R8fGkuY2FsYykmJihpLmxheW91dFJlcGxvdD0hMCksYSYmaS5u Q2hhbmdlcyYmaS5uQ2hhbmdlc0FuaW0mJihpLmFuaW09aS5uQ2hhbmdlcz09 PWkubkNoYW5nZXNBbmltPyJhbGwiOiJzb21lIiksaX0odCxwLHkseCxiKSx3 PV8ubmV3RGF0YVJldmlzaW9uLEE9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3Zh ciBvPWUubGVuZ3RoPT09ci5sZW5ndGg7aWYoIWEmJiFvKXJldHVybntmdWxs UmVwbG90OiEwLGNhbGM6ITB9O3ZhciBzLGwsYz1NLnRyYWNlRmxhZ3MoKTtj LmFycmF5cz17fSxjLm5DaGFuZ2VzPTAsYy5uQ2hhbmdlc0FuaW09MDt2YXIg dT17Z2V0VmFsT2JqZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPWguZ2V0VHJhY2VW YWxPYmplY3QobCx0KTtyZXR1cm4hbC5fbW9kdWxlLmFuaW1hdGFibGUmJmUu YW5pbSYmKGUuYW5pbT0hMSksZX0sZmxhZ3M6YyxpbW11dGFibGU6bix0cmFu c2l0aW9uOmEsbmV3RGF0YVJldmlzaW9uOmksZ2Q6dH0scD17fTtmb3Iocz0w O3M8ZS5sZW5ndGg7cysrKWlmKHJbc10pe2lmKGw9cltzXS5fZnVsbElucHV0 LGYuaGFzTWFrZXNEYXRhVHJhbnNmb3JtKGwpJiYobD1yW3NdKSxwW2wudWlk XSljb250aW51ZTtwW2wudWlkXT0xLHN0KGVbc10uX2Z1bGxJbnB1dCxsLFtd LHUpfXJldHVybihjLmNhbGN8fGMucGxvdCkmJihjLmZ1bGxSZXBsb3Q9ITAp LGEmJmMubkNoYW5nZXMmJmMubkNoYW5nZXNBbmltJiYoYy5hbmltPWMubkNo YW5nZXM9PT1jLm5DaGFuZ2VzQW5pbSYmbz8iYWxsIjoic29tZSIpLGN9KHQs YyxtLHgsYix3KTtLKHQpJiYoXy5sYXlvdXRSZXBsb3Q9ITApLEEuY2FsY3x8 Xy5jYWxjP3QuY2FsY2RhdGE9dm9pZCAwOmYuc3VwcGx5RGVmYXVsdHNVcGRh dGVDYWxjKHQuY2FsY2RhdGEsbSk7dmFyIFM9W107aWYoaSYmKHQuX3RyYW5z aXRpb25EYXRhPXt9LGYuY3JlYXRlVHJhbnNpdGlvbkRhdGEodCksUy5wdXNo KGZ1bmN0aW9uKCl7cmV0dXJuIHIuYWRkRnJhbWVzKHQsaSl9KSkseS50cmFu c2l0aW9uJiYhZyYmKEEuYW5pbXx8Xy5hbmltKSlmLmRvQ2FsY2RhdGEodCks VC5kb0F1dG9SYW5nZUFuZENvbnN0cmFpbnRzKHQpLFMucHVzaChmdW5jdGlv bigpe3JldHVybiBmLnRyYW5zaXRpb25Gcm9tUmVhY3QodCxBLF8scCl9KTtl bHNlIGlmKEEuZnVsbFJlcGxvdHx8Xy5sYXlvdXRSZXBsb3R8fGcpdC5fZnVs bExheW91dC5fc2tpcERlZmF1bHRzPSEwLFMucHVzaChyLnBsb3QpO2Vsc2V7 Zm9yKHZhciBFIGluIF8uYXJyYXlzKXt2YXIgQz1fLmFycmF5c1tFXTtpZihD Lmxlbmd0aCl7dmFyIFA9dS5nZXRDb21wb25lbnRNZXRob2QoRSwiZHJhd09u ZSIpO2lmKFAhPT1vLm5vb3ApZm9yKHZhciB6PTA7ejxDLmxlbmd0aDt6Kysp UCh0LENbel0pO2Vsc2V7dmFyIEk9dS5nZXRDb21wb25lbnRNZXRob2QoRSwi ZHJhdyIpO2lmKEk9PT1vLm5vb3ApdGhyb3cgbmV3IEVycm9yKCJjYW5ub3Qg ZHJhdyBjb21wb25lbnRzOiAiK0UpO0kodCl9fX1TLnB1c2goZi5wcmV2aW91 c1Byb21pc2VzKSxBLnN0eWxlJiZTLnB1c2goVC5kb1RyYWNlU3R5bGUpLChB LmNvbG9yYmFyc3x8Xy5jb2xvcmJhcnMpJiZTLnB1c2goVC5kb0NvbG9yQmFy cyksXy5sZWdlbmQmJlMucHVzaChULmRvTGVnZW5kKSxfLmxheW91dHN0eWxl JiZTLnB1c2goVC5sYXlvdXRTdHlsZXMpLF8uYXhyYW5nZSYmWShTKSxfLnRp Y2tzJiZTLnB1c2goVC5kb1RpY2tzUmVsYXlvdXQpLF8ubW9kZWJhciYmUy5w dXNoKFQuZG9Nb2RlQmFyKSxfLmNhbWVyYSYmUy5wdXNoKFQuZG9DYW1lcmEp LFMucHVzaChMKX1TLnB1c2goZi5yZWhvdmVyLGYucmVkcmFnKSwobD1vLnN5 bmNPckFzeW5jKFMsdCkpJiZsLnRoZW58fChsPVByb21pc2UucmVzb2x2ZSh0 KSl9ZWxzZSBsPXIubmV3UGxvdCh0LGUsbixhKTtyZXR1cm4gbC50aGVuKGZ1 bmN0aW9uKCl7cmV0dXJuIHQuZW1pdCgicGxvdGx5X3JlYWN0Iix7ZGF0YTpl LGxheW91dDpufSksdH0pfSxyLnJlZHJhdz1mdW5jdGlvbih0KXtpZih0PW8u Z2V0R3JhcGhEaXYodCksIW8uaXNQbG90RGl2KHQpKXRocm93IG5ldyBFcnJv cigiVGhpcyBlbGVtZW50IGlzIG5vdCBhIFBsb3RseSBwbG90OiAiK3QpO3Jl dHVybiBrLmNsZWFuRGF0YSh0LmRhdGEpLGsuY2xlYW5MYXlvdXQodC5sYXlv dXQpLHQuY2FsY2RhdGE9dm9pZCAwLHIucGxvdCh0KS50aGVuKGZ1bmN0aW9u KCl7cmV0dXJuIHQuZW1pdCgicGxvdGx5X3JlZHJhdyIpLHR9KX0sci5yZWxh eW91dD1ILHIucmVzdHlsZT1CLHIuc2V0UGxvdENvbmZpZz1mdW5jdGlvbih0 KXtyZXR1cm4gby5leHRlbmRGbGF0KF8sdCl9LHIudXBkYXRlPVEsci5fZ3Vp UmVsYXlvdXQ9JChIKSxyLl9ndWlSZXN0eWxlPSQoQiksci5fZ3VpVXBkYXRl PSQoUSksci5fc3RvcmVEaXJlY3RHVUlFZGl0PWZ1bmN0aW9uKHQsZSxyKXtm b3IodmFyIG4gaW4gcilWKG4scyh0LG4pLmdldCgpLHJbbl0sZSl9fSx7Ii4u L2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vY29tcG9uZW50cy9kcmF3aW5n Ijo2MTMsIi4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2OTQsIi4u L2xpYiI6NzE3LCIuLi9saWIvZXZlbnRzIjo3MDcsIi4uL2xpYi9xdWV1ZSI6 NzMyLCIuLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vcGxvdHMvY2Fy dGVzaWFuL2F4ZXMiOjc2NSwiLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50 cyI6NzcxLCIuLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50ZXJhY3QiOjc3 NCwiLi4vcGxvdHMvY2FydGVzaWFuL3NlbGVjdCI6NzgyLCIuLi9wbG90cy9w bG90cyI6ODI2LCIuLi9wbG90cy9wb2xhci9sZWdhY3kiOjgzNCwiLi4vcmVn aXN0cnkiOjg0NiwiLi9lZGl0X3R5cGVzIjo3NDgsIi4vaGVscGVycyI6NzQ5 LCIuL21hbmFnZV9hcnJheXMiOjc1MSwiLi9wbG90X2NvbmZpZyI6NzUzLCIu L3Bsb3Rfc2NoZW1hIjo3NTQsIi4vc3Vicm91dGluZXMiOjc1NixkMzoxNjUs ImZhc3QtaXNudW1lcmljIjoyMjgsImhhcy1ob3ZlciI6NDEyfV0sNzUzOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXtzdGF0aWNQbG90 Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxwbG90bHlTZXJ2ZXJVUkw6 e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiaHR0cHM6Ly9wbG90Lmx5In0sZWRp dGFibGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGVkaXRzOnthbm5v dGF0aW9uUG9zaXRpb246e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGFu bm90YXRpb25UYWlsOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxhbm5v dGF0aW9uVGV4dDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sYXhpc1Rp dGxlVGV4dDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sY29sb3JiYXJQ b3NpdGlvbjp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sY29sb3JiYXJU aXRsZVRleHQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGxlZ2VuZFBv c2l0aW9uOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsZWdlbmRUZXh0 Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxzaGFwZVBvc2l0aW9uOnt2 YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSx0aXRsZVRleHQ6e3ZhbFR5cGU6 ImJvb2xlYW4iLGRmbHQ6ITF9fSxhdXRvc2l6YWJsZTp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMX0scmVzcG9uc2l2ZTp7dmFsVHlwZToiYm9vbGVhbiIs ZGZsdDohMX0sZmlsbEZyYW1lOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEx fSxmcmFtZU1hcmdpbnM6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLG1pbjow LG1heDouNX0sc2Nyb2xsWm9vbTp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdz OlsiY2FydGVzaWFuIiwiZ2wzZCIsImdlbyIsIm1hcGJveCJdLGV4dHJhczpb ITAsITFdLGRmbHQ6ImdsM2QrZ2VvK21hcGJveCJ9LGRvdWJsZUNsaWNrOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyExLCJyZXNldCIsImF1dG9z aXplIiwicmVzZXQrYXV0b3NpemUiXSxkZmx0OiJyZXNldCthdXRvc2l6ZSJ9 LGRvdWJsZUNsaWNrRGVsYXk6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDozMDAs bWluOjB9LHNob3dBeGlzRHJhZ0hhbmRsZXM6e3ZhbFR5cGU6ImJvb2xlYW4i LGRmbHQ6ITB9LHNob3dBeGlzUmFuZ2VFbnRyeUJveGVzOnt2YWxUeXBlOiJi b29sZWFuIixkZmx0OiEwfSxzaG93VGlwczp7dmFsVHlwZToiYm9vbGVhbiIs ZGZsdDohMH0sc2hvd0xpbms6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9 LGxpbmtUZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IkVkaXQgY2hhcnQi LG5vQmxhbms6ITB9LHNlbmREYXRhOnt2YWxUeXBlOiJib29sZWFuIixkZmx0 OiEwfSxzaG93U291cmNlczp7dmFsVHlwZToiYW55IixkZmx0OiExfSxkaXNw bGF5TW9kZUJhcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaG92 ZXIiLCEwLCExXSxkZmx0OiJob3ZlciJ9LHNob3dTZW5kVG9DbG91ZDp7dmFs VHlwZToiYm9vbGVhbiIsZGZsdDohMX0sc2hvd0VkaXRJbkNoYXJ0U3R1ZGlv Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxtb2RlQmFyQnV0dG9uc1Rv UmVtb3ZlOnt2YWxUeXBlOiJhbnkiLGRmbHQ6W119LG1vZGVCYXJCdXR0b25z VG9BZGQ6e3ZhbFR5cGU6ImFueSIsZGZsdDpbXX0sbW9kZUJhckJ1dHRvbnM6 e3ZhbFR5cGU6ImFueSIsZGZsdDohMX0sdG9JbWFnZUJ1dHRvbk9wdGlvbnM6 e3ZhbFR5cGU6ImFueSIsZGZsdDp7fX0sZGlzcGxheWxvZ286e3ZhbFR5cGU6 ImJvb2xlYW4iLGRmbHQ6ITB9LHdhdGVybWFyazp7dmFsVHlwZToiYm9vbGVh biIsZGZsdDohMX0scGxvdEdsUGl4ZWxSYXRpbzp7dmFsVHlwZToibnVtYmVy IixkZmx0OjIsbWluOjEsbWF4OjR9LHNldEJhY2tncm91bmQ6e3ZhbFR5cGU6 ImFueSIsZGZsdDoidHJhbnNwYXJlbnQifSx0b3BvanNvblVSTDp7dmFsVHlw ZToic3RyaW5nIixub0JsYW5rOiEwLGRmbHQ6Imh0dHBzOi8vY2RuLnBsb3Qu bHkvIn0sbWFwYm94QWNjZXNzVG9rZW46e3ZhbFR5cGU6InN0cmluZyIsZGZs dDpudWxsfSxsb2dnaW5nOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxtYXg6 MixkZmx0OjF9LG5vdGlmeU9uTG9nZ2luZzp7dmFsVHlwZToiaW50ZWdlciIs bWluOjAsbWF4OjIsZGZsdDowfSxxdWV1ZUxlbmd0aDp7dmFsVHlwZToiaW50 ZWdlciIsbWluOjAsZGZsdDowfSxnbG9iYWxUcmFuc2Zvcm1zOnt2YWxUeXBl OiJhbnkiLGRmbHQ6W119LGxvY2FsZTp7dmFsVHlwZToic3RyaW5nIixkZmx0 OiJlbi1VUyJ9LGxvY2FsZXM6e3ZhbFR5cGU6ImFueSIsZGZsdDp7fX19LGE9 e307IWZ1bmN0aW9uIHQoZSxyKXtmb3IodmFyIG4gaW4gZSl7dmFyIGE9ZVtu XTthLnZhbFR5cGU/cltuXT1hLmRmbHQ6KHJbbl18fChyW25dPXt9KSx0KGEs cltuXSkpfX0obixhKSxlLmV4cG9ydHM9e2NvbmZpZ0F0dHJpYnV0ZXM6bixk Zmx0Q29uZmlnOmF9fSx7fV0sNzU0OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uL3JlZ2lzdHJ5IiksYT10KCIuLi9saWIiKSxp PXQoIi4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxvPXQoIi4uL3Bsb3RzL2xheW91 dF9hdHRyaWJ1dGVzIikscz10KCIuLi9wbG90cy9mcmFtZV9hdHRyaWJ1dGVz IiksbD10KCIuLi9wbG90cy9hbmltYXRpb25fYXR0cmlidXRlcyIpLGM9dCgi Li9wbG90X2NvbmZpZyIpLmNvbmZpZ0F0dHJpYnV0ZXMsdT10KCIuLi9wbG90 cy9wb2xhci9sZWdhY3kvYXJlYV9hdHRyaWJ1dGVzIiksaD10KCIuLi9wbG90 cy9wb2xhci9sZWdhY3kvYXhpc19hdHRyaWJ1dGVzIiksZj10KCIuL2VkaXRf dHlwZXMiKSxwPWEuZXh0ZW5kRmxhdCxkPWEuZXh0ZW5kRGVlcEFsbCxnPWEu aXNQbGFpbk9iamVjdCx2PWEuaXNBcnJheU9yVHlwZWRBcnJheSxtPWEubmVz dGVkUHJvcGVydHkseT1hLnZhbE9iamVjdE1ldGEseD0iX2lzU3VicGxvdE9i aiIsYj0iX2lzTGlua2VkVG9BcnJheSIsXz1beCxiLCJfYXJyYXlBdHRyUmVn ZXhwcyIsIl9kZXByZWNhdGVkIl07ZnVuY3Rpb24gdyh0LGUscil7aWYoIXQp cmV0dXJuITE7aWYodC5faXNMaW5rZWRUb0FycmF5KWlmKGsoZVtyXSkpcisr O2Vsc2UgaWYocjxlLmxlbmd0aClyZXR1cm4hMTtmb3IoO3I8ZS5sZW5ndGg7 cisrKXt2YXIgbj10W2Vbcl1dO2lmKCFnKG4pKWJyZWFrO2lmKHQ9bixyPT09 ZS5sZW5ndGgtMSlicmVhaztpZih0Ll9pc0xpbmtlZFRvQXJyYXkpe2lmKCFr KGVbKytyXSkpcmV0dXJuITF9ZWxzZSBpZigiaW5mb19hcnJheSI9PT10LnZh bFR5cGUpe3ZhciBhPWVbKytyXTtpZighayhhKSlyZXR1cm4hMTt2YXIgaT10 Lml0ZW1zO2lmKEFycmF5LmlzQXJyYXkoaSkpe2lmKGE+PWkubGVuZ3RoKXJl dHVybiExO2lmKDI9PT10LmRpbWVuc2lvbnMpe2lmKHIrKyxlLmxlbmd0aD09 PXIpcmV0dXJuIHQ7dmFyIG89ZVtyXTtpZighayhvKSlyZXR1cm4hMTt0PWlb YV1bb119ZWxzZSB0PWlbYV19ZWxzZSB0PWl9fXJldHVybiB0fWZ1bmN0aW9u IGsodCl7cmV0dXJuIHQ9PT1NYXRoLnJvdW5kKHQpJiZ0Pj0wfWZ1bmN0aW9u IFQoKXt2YXIgdCxlLHI9e307Zm9yKHQgaW4gZChyLG8pLG4uc3VicGxvdHNS ZWdpc3RyeSl7aWYoKGU9bi5zdWJwbG90c1JlZ2lzdHJ5W3RdKS5sYXlvdXRB dHRyaWJ1dGVzKWlmKEFycmF5LmlzQXJyYXkoZS5hdHRyKSlmb3IodmFyIGE9 MDthPGUuYXR0ci5sZW5ndGg7YSsrKVMocixlLGUuYXR0clthXSk7ZWxzZSBT KHIsZSwic3VicGxvdCI9PT1lLmF0dHI/ZS5uYW1lOmUuYXR0cil9Zm9yKHQg aW4gcj1mdW5jdGlvbih0KXtyZXR1cm4gcCh0LHtyYWRpYWxheGlzOmgucmFk aWFsYXhpcyxhbmd1bGFyYXhpczpoLmFuZ3VsYXJheGlzfSkscCh0LGgubGF5 b3V0KSx0fShyKSxuLmNvbXBvbmVudHNSZWdpc3RyeSl7dmFyIGk9KGU9bi5j b21wb25lbnRzUmVnaXN0cnlbdF0pLnNjaGVtYTtpZihpJiYoaS5zdWJwbG90 c3x8aS5sYXlvdXQpKXt2YXIgcz1pLnN1YnBsb3RzO2lmKHMmJnMueGF4aXMm JiFzLnlheGlzKWZvcih2YXIgbCBpbiBzLnhheGlzKWRlbGV0ZSByLnlheGlz W2xdfWVsc2UiY29sb3JzY2FsZSI9PT1lLm5hbWU/ZChyLGUubGF5b3V0QXR0 cmlidXRlcyk6ZS5sYXlvdXRBdHRyaWJ1dGVzJiZFKHIsZS5sYXlvdXRBdHRy aWJ1dGVzLGUubmFtZSl9cmV0dXJue2xheW91dEF0dHJpYnV0ZXM6QShyKX19 ZnVuY3Rpb24gTSgpe3ZhciB0PXtmcmFtZXM6ZCh7fSxzKX07cmV0dXJuIEEo dCksdC5mcmFtZXN9ZnVuY3Rpb24gQSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7 ci5jcmF3bCh0LGZ1bmN0aW9uKHQsZSxuKXtyLmlzVmFsT2JqZWN0KHQpPyJk YXRhX2FycmF5Ij09PXQudmFsVHlwZT8odC5yb2xlPSJkYXRhIixuW2UrInNy YyJdPXt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJub25lIn0pOiEwPT09 dC5hcnJheU9rJiYobltlKyJzcmMiXT17dmFsVHlwZToic3RyaW5nIixlZGl0 VHlwZToibm9uZSJ9KTpnKHQpJiYodC5yb2xlPSJvYmplY3QiKX0pfSh0KSxm dW5jdGlvbih0KXtyLmNyYXdsKHQsZnVuY3Rpb24odCxlLHIpe2lmKCF0KXJl dHVybjt2YXIgbj10W2JdO2lmKCFuKXJldHVybjtkZWxldGUgdFtiXSxyW2Vd PXtpdGVtczp7fX0scltlXS5pdGVtc1tuXT10LHJbZV0ucm9sZT0ib2JqZWN0 In0pfSh0KSxmdW5jdGlvbih0KXshZnVuY3Rpb24gdChlKXtmb3IodmFyIHIg aW4gZSlpZihnKGVbcl0pKXQoZVtyXSk7ZWxzZSBpZihBcnJheS5pc0FycmF5 KGVbcl0pKWZvcih2YXIgbj0wO248ZVtyXS5sZW5ndGg7bisrKXQoZVtyXVtu XSk7ZWxzZSBlW3JdaW5zdGFuY2VvZiBSZWdFeHAmJihlW3JdPWVbcl0udG9T dHJpbmcoKSl9KHQpfSh0KSx0fWZ1bmN0aW9uIFModCxlLHIpe3ZhciBuPW0o dCxyKSxhPWQoe30sZS5sYXlvdXRBdHRyaWJ1dGVzKTthW3hdPSEwLG4uc2V0 KGEpfWZ1bmN0aW9uIEUodCxlLHIpe3ZhciBuPW0odCxyKTtuLnNldChkKG4u Z2V0KCl8fHt9LGUpKX1yLklTX1NVQlBMT1RfT0JKPXgsci5JU19MSU5LRURf VE9fQVJSQVk9YixyLkRFUFJFQ0FURUQ9Il9kZXByZWNhdGVkIixyLlVOREVS U0NPUkVfQVRUUlM9XyxyLmdldD1mdW5jdGlvbigpe3ZhciB0PXt9O24uYWxs VHlwZXMuY29uY2F0KCJhcmVhIikuZm9yRWFjaChmdW5jdGlvbihlKXt0W2Vd PWZ1bmN0aW9uKHQpe3ZhciBlLGE7ImFyZWEiPT09dD8oZT17YXR0cmlidXRl czp1fSxhPXt9KTooZT1uLm1vZHVsZXNbdF0uX21vZHVsZSxhPWUuYmFzZVBs b3RNb2R1bGUpO3ZhciBvPXt0eXBlOm51bGx9LHM9ZCh7fSxpKSxsPWQoe30s ZS5hdHRyaWJ1dGVzKTtyLmNyYXdsKGwsZnVuY3Rpb24odCxlLHIsbixhKXtt KHMsYSkuc2V0KHZvaWQgMCksdm9pZCAwPT09dCYmbShsLGEpLnNldCh2b2lk IDApfSksZChvLHMpLG4udHJhY2VJcyh0LCJub09wYWNpdHkiKSYmZGVsZXRl IG8ub3BhY2l0eTtuLnRyYWNlSXModCwic2hvd0xlZ2VuZCIpfHwoZGVsZXRl IG8uc2hvd2xlZ2VuZCxkZWxldGUgby5sZWdlbmRncm91cCk7bi50cmFjZUlz KHQsIm5vSG92ZXIiKSYmKGRlbGV0ZSBvLmhvdmVyaW5mbyxkZWxldGUgby5o b3ZlcmxhYmVsKTtlLnNlbGVjdFBvaW50c3x8ZGVsZXRlIG8uc2VsZWN0ZWRw b2ludHM7ZChvLGwpLGEuYXR0cmlidXRlcyYmZChvLGEuYXR0cmlidXRlcyk7 by50eXBlPXQ7dmFyIGM9e21ldGE6ZS5tZXRhfHx7fSxjYXRlZ29yaWVzOmUu Y2F0ZWdvcmllc3x8e30sYW5pbWF0YWJsZTpCb29sZWFuKGUuYW5pbWF0YWJs ZSksdHlwZTp0LGF0dHJpYnV0ZXM6QShvKX07aWYoZS5sYXlvdXRBdHRyaWJ1 dGVzKXt2YXIgaD17fTtkKGgsZS5sYXlvdXRBdHRyaWJ1dGVzKSxjLmxheW91 dEF0dHJpYnV0ZXM9QShoKX1lLmFuaW1hdGFibGV8fHIuY3Jhd2woYyxmdW5j dGlvbih0KXtyLmlzVmFsT2JqZWN0KHQpJiYiYW5pbSJpbiB0JiZkZWxldGUg dC5hbmltfSk7cmV0dXJuIGN9KGUpfSk7dmFyIGU9e307cmV0dXJuIE9iamVj dC5rZXlzKG4udHJhbnNmb3Jtc1JlZ2lzdHJ5KS5mb3JFYWNoKGZ1bmN0aW9u KHQpe2VbdF09ZnVuY3Rpb24odCl7dmFyIGU9bi50cmFuc2Zvcm1zUmVnaXN0 cnlbdF0scj1kKHt9LGUuYXR0cmlidXRlcyk7cmV0dXJuIE9iamVjdC5rZXlz KG4uY29tcG9uZW50c1JlZ2lzdHJ5KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Zh ciBhPW4uY29tcG9uZW50c1JlZ2lzdHJ5W2VdO2Euc2NoZW1hJiZhLnNjaGVt YS50cmFuc2Zvcm1zJiZhLnNjaGVtYS50cmFuc2Zvcm1zW3RdJiZPYmplY3Qu a2V5cyhhLnNjaGVtYS50cmFuc2Zvcm1zW3RdKS5mb3JFYWNoKGZ1bmN0aW9u KGUpe0UocixhLnNjaGVtYS50cmFuc2Zvcm1zW3RdW2VdLGUpfSl9KSx7YXR0 cmlidXRlczpBKHIpfX0odCl9KSx7ZGVmczp7dmFsT2JqZWN0czp5LG1ldGFL ZXlzOl8uY29uY2F0KFsiZGVzY3JpcHRpb24iLCJyb2xlIiwiZWRpdFR5cGUi LCJpbXBsaWVkRWRpdHMiXSksZWRpdFR5cGU6e3RyYWNlczpmLnRyYWNlcyxs YXlvdXQ6Zi5sYXlvdXR9LGltcGxpZWRFZGl0czp7fX0sdHJhY2VzOnQsbGF5 b3V0OlQoKSx0cmFuc2Zvcm1zOmUsZnJhbWVzOk0oKSxhbmltYXRpb246QShs KSxjb25maWc6QShjKX19LHIuY3Jhd2w9ZnVuY3Rpb24odCxlLG4sYSl7dmFy IGk9bnx8MDthPWF8fCIiLE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rp b24obil7dmFyIG89dFtuXTtpZigtMT09PV8uaW5kZXhPZihuKSl7dmFyIHM9 KGE/YSsiLiI6IiIpK247ZShvLG4sdCxpLHMpLHIuaXNWYWxPYmplY3Qobyl8 fGcobykmJiJpbXBsaWVkRWRpdHMiIT09biYmci5jcmF3bChvLGUsaSsxLHMp fX0pfSxyLmlzVmFsT2JqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ2b2lk IDAhPT10LnZhbFR5cGV9LHIuZmluZEFycmF5QXR0cmlidXRlcz1mdW5jdGlv bih0KXt2YXIgZSxuLGE9W10sbz1bXSxzPVtdO2Z1bmN0aW9uIGwodCxyLGks bCl7bz1vLnNsaWNlKDAsbCkuY29uY2F0KFtyXSkscz1zLnNsaWNlKDAsbCku Y29uY2F0KFt0JiZ0Ll9pc0xpbmtlZFRvQXJyYXldKSx0JiYoImRhdGFfYXJy YXkiPT09dC52YWxUeXBlfHwhMD09PXQuYXJyYXlPaykmJiEoImNvbG9yYmFy Ij09PW9bbC0xXSYmKCJ0aWNrdGV4dCI9PT1yfHwidGlja3ZhbHMiPT09cikp JiZmdW5jdGlvbiB0KGUscixpKXt2YXIgbD1lW29bcl1dO3ZhciBjPWkrb1ty XTtpZihyPT09by5sZW5ndGgtMSl2KGwpJiZhLnB1c2gobitjKTtlbHNlIGlm KHNbcl0pe2lmKEFycmF5LmlzQXJyYXkobCkpZm9yKHZhciB1PTA7dTxsLmxl bmd0aDt1KyspZyhsW3VdKSYmdChsW3VdLHIrMSxjKyJbIit1KyJdLiIpfWVs c2UgZyhsKSYmdChsLHIrMSxjKyIuIil9KGUsMCwiIil9ZT10LG49IiIsci5j cmF3bChpLGwpLHQuX21vZHVsZSYmdC5fbW9kdWxlLmF0dHJpYnV0ZXMmJnIu Y3Jhd2wodC5fbW9kdWxlLmF0dHJpYnV0ZXMsbCk7dmFyIGM9dC50cmFuc2Zv cm1zO2lmKGMpZm9yKHZhciB1PTA7dTxjLmxlbmd0aDt1Kyspe3ZhciBoPWNb dV0sZj1oLl9tb2R1bGU7ZiYmKG49InRyYW5zZm9ybXNbIit1KyJdLiIsZT1o LHIuY3Jhd2woZi5hdHRyaWJ1dGVzLGwpKX1yZXR1cm4gYX0sci5nZXRUcmFj ZVZhbE9iamVjdD1mdW5jdGlvbih0LGUpe3ZhciByLGEsbz1lWzBdLHM9MTtp ZigidHJhbnNmb3JtcyI9PT1vKXtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIGku dHJhbnNmb3Jtczt2YXIgbD10LnRyYW5zZm9ybXM7aWYoIUFycmF5LmlzQXJy YXkobCl8fCFsLmxlbmd0aClyZXR1cm4hMTt2YXIgYz1lWzFdO2lmKCFrKGMp fHxjPj1sLmxlbmd0aClyZXR1cm4hMTthPShyPShuLnRyYW5zZm9ybXNSZWdp c3RyeVtsW2NdLnR5cGVdfHx7fSkuYXR0cmlidXRlcykmJnJbZVsyXV0scz0z fWVsc2UgaWYoImFyZWEiPT09dC50eXBlKWE9dVtvXTtlbHNle3ZhciBoPXQu X21vZHVsZTtpZihofHwoaD0obi5tb2R1bGVzW3QudHlwZXx8aS50eXBlLmRm bHRdfHx7fSkuX21vZHVsZSksIWgpcmV0dXJuITE7aWYoIShhPShyPWguYXR0 cmlidXRlcykmJnJbb10pKXt2YXIgZj1oLmJhc2VQbG90TW9kdWxlO2YmJmYu YXR0cmlidXRlcyYmKGE9Zi5hdHRyaWJ1dGVzW29dKX1hfHwoYT1pW29dKX1y ZXR1cm4gdyhhLGUscyl9LHIuZ2V0TGF5b3V0VmFsT2JqZWN0PWZ1bmN0aW9u KHQsZSl7cmV0dXJuIHcoZnVuY3Rpb24odCxlKXt2YXIgcixhLGkscyxsPXQu X2Jhc2VQbG90TW9kdWxlcztpZihsKXt2YXIgYztmb3Iocj0wO3I8bC5sZW5n dGg7cisrKXtpZigoaT1sW3JdKS5hdHRyUmVnZXgmJmkuYXR0clJlZ2V4LnRl c3QoZSkpe2lmKGkubGF5b3V0QXR0ck92ZXJyaWRlcylyZXR1cm4gaS5sYXlv dXRBdHRyT3ZlcnJpZGVzOyFjJiZpLmxheW91dEF0dHJpYnV0ZXMmJihjPWku bGF5b3V0QXR0cmlidXRlcyl9dmFyIHU9aS5iYXNlTGF5b3V0QXR0ck92ZXJy aWRlcztpZih1JiZlIGluIHUpcmV0dXJuIHVbZV19aWYoYylyZXR1cm4gY312 YXIgZj10Ll9tb2R1bGVzO2lmKGYpZm9yKHI9MDtyPGYubGVuZ3RoO3IrKylp Zigocz1mW3JdLmxheW91dEF0dHJpYnV0ZXMpJiZlIGluIHMpcmV0dXJuIHNb ZV07Zm9yKGEgaW4gbi5jb21wb25lbnRzUmVnaXN0cnkpe2lmKCJjb2xvcnNj YWxlIj09PShpPW4uY29tcG9uZW50c1JlZ2lzdHJ5W2FdKS5uYW1lJiYwPT09 ZS5pbmRleE9mKCJjb2xvcmF4aXMiKSlyZXR1cm4gaS5sYXlvdXRBdHRyaWJ1 dGVzW2VdO2lmKCFpLnNjaGVtYSYmZT09PWkubmFtZSlyZXR1cm4gaS5sYXlv dXRBdHRyaWJ1dGVzfWlmKGUgaW4gbylyZXR1cm4gb1tlXTtpZigicmFkaWFs YXhpcyI9PT1lfHwiYW5ndWxhcmF4aXMiPT09ZSlyZXR1cm4gaFtlXTtyZXR1 cm4gaC5sYXlvdXRbZV18fCExfSh0LGVbMF0pLGUsMSl9fSx7Ii4uL2xpYiI6 NzE3LCIuLi9wbG90cy9hbmltYXRpb25fYXR0cmlidXRlcyI6NzYwLCIuLi9w bG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uL3Bsb3RzL2ZyYW1lX2F0dHJpYnV0 ZXMiOjc5MiwiLi4vcGxvdHMvbGF5b3V0X2F0dHJpYnV0ZXMiOjgxNywiLi4v cGxvdHMvcG9sYXIvbGVnYWN5L2FyZWFfYXR0cmlidXRlcyI6ODMyLCIuLi9w bG90cy9wb2xhci9sZWdhY3kvYXhpc19hdHRyaWJ1dGVzIjo4MzMsIi4uL3Jl Z2lzdHJ5Ijo4NDYsIi4vZWRpdF90eXBlcyI6NzQ4LCIuL3Bsb3RfY29uZmln Ijo3NTN9XSw3NTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vbGliIiksYT10KCIuLi9wbG90cy9hdHRyaWJ1dGVzIiksaT0i dGVtcGxhdGVpdGVtbmFtZSIsbz17bmFtZTp7dmFsVHlwZToic3RyaW5nIixl ZGl0VHlwZToibm9uZSJ9fTtmdW5jdGlvbiBzKHQpe3JldHVybiB0JiYic3Ry aW5nIj09dHlwZW9mIHR9ZnVuY3Rpb24gbCh0KXt2YXIgZT10Lmxlbmd0aC0x O3JldHVybiJzIiE9PXQuY2hhckF0KGUpJiZuLndhcm4oImJhZCBhcmd1bWVu dCB0byBhcnJheURlZmF1bHRLZXk6ICIrdCksdC5zdWJzdHIoMCx0Lmxlbmd0 aC0xKSsiZGVmYXVsdHMifW9baV09e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5 cGU6ImNhbGMifSxyLnRlbXBsYXRlZEFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGUuX2lzTGlua2VkVG9BcnJheT10LGUubmFtZT1vLm5hbWUsZVtpXT1v W2ldLGV9LHIudHJhY2VUZW1wbGF0ZXI9ZnVuY3Rpb24odCl7dmFyIGUscixp PXt9O2ZvcihlIGluIHQpcj10W2VdLEFycmF5LmlzQXJyYXkocikmJnIubGVu Z3RoJiYoaVtlXT0wKTtyZXR1cm57bmV3VHJhY2U6ZnVuY3Rpb24obyl7dmFy IHM9e3R5cGU6ZT1uLmNvZXJjZShvLHt9LGEsInR5cGUiKSxfdGVtcGxhdGU6 bnVsbH07aWYoZSBpbiBpKXtyPXRbZV07dmFyIGw9aVtlXSVyLmxlbmd0aDtp W2VdKysscy5fdGVtcGxhdGU9cltsXX1yZXR1cm4gc319fSxyLm5ld0NvbnRh aW5lcj1mdW5jdGlvbih0LGUscil7dmFyIGE9dC5fdGVtcGxhdGUsaT1hJiYo YVtlXXx8ciYmYVtyXSk7cmV0dXJuIG4uaXNQbGFpbk9iamVjdChpKXx8KGk9 bnVsbCksdFtlXT17X3RlbXBsYXRlOml9fSxyLmFycmF5VGVtcGxhdGVyPWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbj10Ll90ZW1wbGF0ZSxhPW4mJm5bbChlKV0s bz1uJiZuW2VdO0FycmF5LmlzQXJyYXkobykmJm8ubGVuZ3RofHwobz1bXSk7 dmFyIGM9e307cmV0dXJue25ld0l0ZW06ZnVuY3Rpb24odCl7dmFyIGU9e25h bWU6dC5uYW1lLF9pbnB1dDp0fSxuPWVbaV09dFtpXTtpZighcyhuKSlyZXR1 cm4gZS5fdGVtcGxhdGU9YSxlO2Zvcih2YXIgbD0wO2w8by5sZW5ndGg7bCsr KXt2YXIgdT1vW2xdO2lmKHUubmFtZT09PW4pcmV0dXJuIGNbbl09MSxlLl90 ZW1wbGF0ZT11LGV9cmV0dXJuIGVbcl09dFtyXXx8ITEsZS5fdGVtcGxhdGU9 ITEsZX0sZGVmYXVsdEl0ZW1zOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9 MDtlPG8ubGVuZ3RoO2UrKyl7dmFyIHI9b1tlXSxuPXIubmFtZTtpZihzKG4p JiYhY1tuXSl7dmFyIGE9e190ZW1wbGF0ZTpyLG5hbWU6bixfaW5wdXQ6e190 ZW1wbGF0ZWl0ZW1uYW1lOm59fTthW2ldPXJbaV0sdC5wdXNoKGEpLGNbbl09 MX19cmV0dXJuIHR9fX0sci5hcnJheURlZmF1bHRLZXk9bCxyLmFycmF5RWRp dG9yPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT0obi5uZXN0ZWRQcm9wZXJ0eSh0 LGUpLmdldCgpfHxbXSkubGVuZ3RoLG89ci5faW5kZXgscz1vPj1hJiYoci5f aW5wdXR8fHt9KS5fdGVtcGxhdGVpdGVtbmFtZTtzJiYobz1hKTt2YXIgbCxj PWUrIlsiK28rIl0iO2Z1bmN0aW9uIHUoKXtsPXt9LHMmJihsW2NdPXt9LGxb Y11baV09cyl9ZnVuY3Rpb24gaCh0LGUpe3M/bi5uZXN0ZWRQcm9wZXJ0eShs W2NdLHQpLnNldChlKTpsW2MrIi4iK3RdPWV9ZnVuY3Rpb24gZigpe3ZhciB0 PWw7cmV0dXJuIHUoKSx0fXJldHVybiB1KCkse21vZGlmeUJhc2U6ZnVuY3Rp b24odCxlKXtsW3RdPWV9LG1vZGlmeUl0ZW06aCxnZXRVcGRhdGVPYmo6Zixh cHBseVVwZGF0ZTpmdW5jdGlvbihlLHIpe2UmJmgoZSxyKTt2YXIgYT1mKCk7 Zm9yKHZhciBpIGluIGEpbi5uZXN0ZWRQcm9wZXJ0eSh0LGkpLnNldChhW2ld KX19fX0seyIuLi9saWIiOjcxNywiLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYy fV0sNzU2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo ImQzIiksYT10KCIuLi9yZWdpc3RyeSIpLGk9dCgiLi4vcGxvdHMvcGxvdHMi KSxvPXQoIi4uL2xpYiIpLHM9dCgiLi4vbGliL2NsZWFyX2dsX2NhbnZhc2Vz IiksbD10KCIuLi9jb21wb25lbnRzL2NvbG9yIiksYz10KCIuLi9jb21wb25l bnRzL2RyYXdpbmciKSx1PXQoIi4uL2NvbXBvbmVudHMvdGl0bGVzIiksaD10 KCIuLi9jb21wb25lbnRzL21vZGViYXIiKSxmPXQoIi4uL3Bsb3RzL2NhcnRl c2lhbi9heGVzIikscD10KCIuLi9jb25zdGFudHMvYWxpZ25tZW50IiksZD10 KCIuLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RyYWludHMiKSxnPWQuZW5mb3Jj ZSx2PWQuY2xlYW4sbT10KCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXV0b3Jhbmdl IikuZG9BdXRvUmFuZ2UseT0ic3RhcnQiLHg9Im1pZGRsZSIsYj0iZW5kIjtm dW5jdGlvbiBfKHQsZSxyKXtmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl7 dmFyIGE9cltuXVswXSxpPXJbbl1bMV07aWYoIShhWzBdPj10WzFdfHxhWzFd PD10WzBdKSYmKGlbMF08ZVsxXSYmaVsxXT5lWzBdKSlyZXR1cm4hMH1yZXR1 cm4hMX1mdW5jdGlvbiB3KHQpe3ZhciBlLGEscyx1LGQsZyx2PXQuX2Z1bGxM YXlvdXQsbT12Ll9zaXplLHk9bS5wLHg9Zi5saXN0KHQsIiIsITApO2lmKHYu X3BhcGVyZGl2LnN0eWxlKHt3aWR0aDp0Ll9jb250ZXh0LnJlc3BvbnNpdmUm JnYuYXV0b3NpemUmJiF0Ll9jb250ZXh0Ll9oYXNaZXJvV2lkdGgmJiF0Lmxh eW91dC53aWR0aD8iMTAwJSI6di53aWR0aCsicHgiLGhlaWdodDp0Ll9jb250 ZXh0LnJlc3BvbnNpdmUmJnYuYXV0b3NpemUmJiF0Ll9jb250ZXh0Ll9oYXNa ZXJvSGVpZ2h0JiYhdC5sYXlvdXQuaGVpZ2h0PyIxMDAlIjp2LmhlaWdodCsi cHgifSkuc2VsZWN0QWxsKCIubWFpbi1zdmciKS5jYWxsKGMuc2V0U2l6ZSx2 LndpZHRoLHYuaGVpZ2h0KSx0Ll9jb250ZXh0LnNldEJhY2tncm91bmQodCx2 LnBhcGVyX2JnY29sb3IpLHIuZHJhd01haW5UaXRsZSh0KSxoLm1hbmFnZSh0 KSwhdi5faGFzKCJjYXJ0ZXNpYW4iKSlyZXR1cm4gaS5wcmV2aW91c1Byb21p c2VzKHQpO2Z1bmN0aW9uIGIodCxlLHIpe3ZhciBuPXQuX2x3LzI7cmV0dXJu IngiPT09dC5faWQuY2hhckF0KDApP2U/InRvcCI9PT1yP2UuX29mZnNldC15 LW46ZS5fb2Zmc2V0K2UuX2xlbmd0aCt5K246bS50K20uaCooMS0odC5wb3Np dGlvbnx8MCkpK24lMTplPyJyaWdodCI9PT1yP2UuX29mZnNldCtlLl9sZW5n dGgreStuOmUuX29mZnNldC15LW46bS5sK20udyoodC5wb3NpdGlvbnx8MCkr biUxfWZvcihlPTA7ZTx4Lmxlbmd0aDtlKyspe3ZhciB3PSh1PXhbZV0pLl9h bmNob3JBeGlzO3UuX2xpbmVwb3NpdGlvbnM9e30sdS5fbHc9Yy5jcmlzcFJv dW5kKHQsdS5saW5ld2lkdGgsMSksdS5fbWFpbkxpbmVQb3NpdGlvbj1iKHUs dyx1LnNpZGUpLHUuX21haW5NaXJyb3JQb3NpdGlvbj11Lm1pcnJvciYmdz9i KHUsdyxwLk9QUE9TSVRFX1NJREVbdS5zaWRlXSk6bnVsbH12YXIgVD1bXSxB PVtdLFM9W10sRT0xPT09bC5vcGFjaXR5KHYucGFwZXJfYmdjb2xvcikmJjE9 PT1sLm9wYWNpdHkodi5wbG90X2JnY29sb3IpJiZ2LnBhcGVyX2JnY29sb3I9 PT12LnBsb3RfYmdjb2xvcjtmb3IoYSBpbiB2Ll9wbG90cylpZigocz12Ll9w bG90c1thXSkubWFpbnBsb3Qpcy5iZyYmcy5iZy5yZW1vdmUoKSxzLmJnPXZv aWQgMDtlbHNle3ZhciBMPXMueGF4aXMuZG9tYWluLEM9cy55YXhpcy5kb21h aW4sUD1zLnBsb3Rncm91cDtpZihfKEwsQyxTKSl7dmFyIE89UC5ub2RlKCks ej1zLmJnPW8uZW5zdXJlU2luZ2xlKFAsInJlY3QiLCJiZyIpO08uaW5zZXJ0 QmVmb3JlKHoubm9kZSgpLE8uY2hpbGROb2Rlc1swXSksQS5wdXNoKGEpfWVs c2UgUC5zZWxlY3QoInJlY3QuYmciKS5yZW1vdmUoKSxTLnB1c2goW0wsQ10p LEV8fChULnB1c2goYSksQS5wdXNoKGEpKX12YXIgSSxELFIsRixCLE4saixW LFUscSxILEcsWSxXPXYuX2JnTGF5ZXIuc2VsZWN0QWxsKCIuYmciKS5kYXRh KFQpO2ZvcihXLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgiYmci LCEwKSxXLmV4aXQoKS5yZW1vdmUoKSxXLmVhY2goZnVuY3Rpb24odCl7di5f cGxvdHNbdF0uYmc9bi5zZWxlY3QodGhpcyl9KSxlPTA7ZTxBLmxlbmd0aDtl Kyspcz12Ll9wbG90c1tBW2VdXSxkPXMueGF4aXMsZz1zLnlheGlzLHMuYmcm JnMuYmcuY2FsbChjLnNldFJlY3QsZC5fb2Zmc2V0LXksZy5fb2Zmc2V0LXks ZC5fbGVuZ3RoKzIqeSxnLl9sZW5ndGgrMip5KS5jYWxsKGwuZmlsbCx2LnBs b3RfYmdjb2xvcikuc3R5bGUoInN0cm9rZS13aWR0aCIsMCk7aWYoIXYuX2hh c09ubHlMYXJnZVNwbG9tcylmb3IoYSBpbiB2Ll9wbG90cyl7cz12Ll9wbG90 c1thXSxkPXMueGF4aXMsZz1zLnlheGlzO3ZhciBYLFosSj1zLmNsaXBJZD0i Y2xpcCIrdi5fdWlkK2ErInBsb3QiLEs9by5lbnN1cmVTaW5nbGVCeUlkKHYu X2NsaXBzLCJjbGlwUGF0aCIsSixmdW5jdGlvbih0KXt0LmNsYXNzZWQoInBs b3RjbGlwIiwhMCkuYXBwZW5kKCJyZWN0Iil9KTtzLmNsaXBSZWN0PUsuc2Vs ZWN0KCJyZWN0IikuYXR0cih7d2lkdGg6ZC5fbGVuZ3RoLGhlaWdodDpnLl9s ZW5ndGh9KSxjLnNldFRyYW5zbGF0ZShzLnBsb3QsZC5fb2Zmc2V0LGcuX29m ZnNldCkscy5faGFzQ2xpcE9uQXhpc0ZhbHNlPyhYPW51bGwsWj1KKTooWD1K LFo9bnVsbCksYy5zZXRDbGlwVXJsKHMucGxvdCxYLHQpLHMubGF5ZXJDbGlw SWQ9Wn1mdW5jdGlvbiBRKHQpe3JldHVybiJNIitJKyIsIit0KyJIIitEfWZ1 bmN0aW9uICQodCl7cmV0dXJuIk0iK2QuX29mZnNldCsiLCIrdCsiaCIrZC5f bGVuZ3RofWZ1bmN0aW9uIHR0KHQpe3JldHVybiJNIit0KyIsIitWKyJWIitq fWZ1bmN0aW9uIGV0KHQpe3JldHVybiJNIit0KyIsIitnLl9vZmZzZXQrInYi K2cuX2xlbmd0aH1mdW5jdGlvbiBydCh0LGUscil7aWYoIXQuc2hvd2xpbmV8 fGEhPT10Ll9tYWluU3VicGxvdClyZXR1cm4iIjtpZighdC5fYW5jaG9yQXhp cylyZXR1cm4gcih0Ll9tYWluTGluZVBvc2l0aW9uKTt2YXIgbj1lKHQuX21h aW5MaW5lUG9zaXRpb24pO3JldHVybiB0Lm1pcnJvciYmKG4rPWUodC5fbWFp bk1pcnJvclBvc2l0aW9uKSksbn1mb3IoYSBpbiB2Ll9wbG90cyl7cz12Ll9w bG90c1thXSxkPXMueGF4aXMsZz1zLnlheGlzO3ZhciBudD0iTTAsMCI7ayhk LGEpJiYoQj1NKGQsImxlZnQiLGcseCksST1kLl9vZmZzZXQtKEI/eStCOjAp LE49TShkLCJyaWdodCIsZyx4KSxEPWQuX29mZnNldCtkLl9sZW5ndGgrKE4/ eStOOjApLFI9YihkLGcsImJvdHRvbSIpLEY9YihkLGcsInRvcCIpLCEoWT0h ZC5fYW5jaG9yQXhpc3x8YSE9PWQuX21haW5TdWJwbG90KXx8ImFsbHRpY2tz IiE9PWQubWlycm9yJiYiYWxsIiE9PWQubWlycm9yfHwoZC5fbGluZXBvc2l0 aW9uc1thXT1bUixGXSksbnQ9cnQoZCxRLCQpLFkmJmQuc2hvd2xpbmUmJigi YWxsIj09PWQubWlycm9yfHwiYWxsdGlja3MiPT09ZC5taXJyb3IpJiYobnQr PVEoUikrUShGKSkscy54bGluZXMuc3R5bGUoInN0cm9rZS13aWR0aCIsZC5f bHcrInB4IikuY2FsbChsLnN0cm9rZSxkLnNob3dsaW5lP2QubGluZWNvbG9y OiJyZ2JhKDAsMCwwLDApIikpLHMueGxpbmVzLmF0dHIoImQiLG50KTt2YXIg YXQ9Ik0wLDAiO2soZyxhKSYmKEg9TShnLCJib3R0b20iLGQseCksaj1nLl9v ZmZzZXQrZy5fbGVuZ3RoKyhIP3k6MCksRz1NKGcsInRvcCIsZCx4KSxWPWcu X29mZnNldC0oRz95OjApLFU9YihnLGQsImxlZnQiKSxxPWIoZyxkLCJyaWdo dCIpLCEoWT0hZy5fYW5jaG9yQXhpc3x8YSE9PWcuX21haW5TdWJwbG90KXx8 ImFsbHRpY2tzIiE9PWcubWlycm9yJiYiYWxsIiE9PWcubWlycm9yfHwoZy5f bGluZXBvc2l0aW9uc1thXT1bVSxxXSksYXQ9cnQoZyx0dCxldCksWSYmZy5z aG93bGluZSYmKCJhbGwiPT09Zy5taXJyb3J8fCJhbGx0aWNrcyI9PT1nLm1p cnJvcikmJihhdCs9dHQoVSkrdHQocSkpLHMueWxpbmVzLnN0eWxlKCJzdHJv a2Utd2lkdGgiLGcuX2x3KyJweCIpLmNhbGwobC5zdHJva2UsZy5zaG93bGlu ZT9nLmxpbmVjb2xvcjoicmdiYSgwLDAsMCwwKSIpKSxzLnlsaW5lcy5hdHRy KCJkIixhdCl9cmV0dXJuIGYubWFrZUNsaXBQYXRocyh0KSxpLnByZXZpb3Vz UHJvbWlzZXModCl9ZnVuY3Rpb24gayh0LGUpe3JldHVybih0LnRpY2tzfHx0 LnNob3dsaW5lKSYmKGU9PT10Ll9tYWluU3VicGxvdHx8ImFsbCI9PT10Lm1p cnJvcnx8ImFsbHRpY2tzIj09PXQubWlycm9yKX1mdW5jdGlvbiBUKHQsZSxy KXtpZighci5zaG93bGluZXx8IXIuX2x3KXJldHVybiExO2lmKCJhbGwiPT09 ci5taXJyb3J8fCJhbGx0aWNrcyI9PT1yLm1pcnJvcilyZXR1cm4hMDt2YXIg bj1yLl9hbmNob3JBeGlzO2lmKCFuKXJldHVybiExO3ZhciBhPXAuRlJPTV9C TFtlXTtyZXR1cm4gci5zaWRlPT09ZT9uLmRvbWFpblthXT09PXQuZG9tYWlu W2FdOnIubWlycm9yJiZuLmRvbWFpblsxLWFdPT09dC5kb21haW5bMS1hXX1m dW5jdGlvbiBNKHQsZSxyLG4pe2lmKFQodCxlLHIpKXJldHVybiByLl9sdztm b3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKyl7dmFyIGk9blthXTtpZihpLl9t YWluQXhpcz09PXIuX21haW5BeGlzJiZUKHQsZSxpKSlyZXR1cm4gaS5fbHd9 cmV0dXJuIDB9ZnVuY3Rpb24gQSh0LGUpe3ZhciByPXQudGl0bGUsbj10Ll9z aXplLGE9MDtzd2l0Y2goZT09PXk/YT1yLnBhZC5sOmU9PT1iJiYoYT0tci5w YWQuciksci54cmVmKXtjYXNlInBhcGVyIjpyZXR1cm4gbi5sK24udypyLngr YTtjYXNlImNvbnRhaW5lciI6ZGVmYXVsdDpyZXR1cm4gdC53aWR0aCpyLngr YX19ZnVuY3Rpb24gUyh0LGUpe3ZhciByPXQudGl0bGUsbj10Ll9zaXplLGE9 MDtpZigiMGVtIiE9PWUmJmU/ZT09PXAuQ0FQX1NISUZUKyJlbSImJihhPXIu cGFkLnQpOmE9LXIucGFkLmIsImF1dG8iPT09ci55KXJldHVybiBuLnQvMjtz d2l0Y2goci55cmVmKXtjYXNlInBhcGVyIjpyZXR1cm4gbi50K24uaC1uLmgq ci55K2E7Y2FzZSJjb250YWluZXIiOmRlZmF1bHQ6cmV0dXJuIHQuaGVpZ2h0 LXQuaGVpZ2h0KnIueSthfX1yLmxheW91dFN0eWxlcz1mdW5jdGlvbih0KXty ZXR1cm4gby5zeW5jT3JBc3luYyhbaS5kb0F1dG9NYXJnaW4sd10sdCl9LHIu ZHJhd01haW5UaXRsZT1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0 LHI9ZnVuY3Rpb24odCl7dmFyIGU9dC50aXRsZSxyPXg7by5pc1JpZ2h0QW5j aG9yKGUpP3I9YjpvLmlzTGVmdEFuY2hvcihlKSYmKHI9eSk7cmV0dXJuIHJ9 KGUpLG49ZnVuY3Rpb24odCl7dmFyIGU9dC50aXRsZSxyPSIwZW0iO28uaXNU b3BBbmNob3IoZSk/cj1wLkNBUF9TSElGVCsiZW0iOm8uaXNNaWRkbGVBbmNo b3IoZSkmJihyPXAuTUlEX1NISUZUKyJlbSIpO3JldHVybiByfShlKTt1LmRy YXcodCwiZ3RpdGxlIix7cHJvcENvbnRhaW5lcjplLHByb3BOYW1lOiJ0aXRs ZS50ZXh0IixwbGFjZWhvbGRlcjplLl9kZmx0VGl0bGUucGxvdCxhdHRyaWJ1 dGVzOnt4OkEoZSxyKSx5OlMoZSxuKSwidGV4dC1hbmNob3IiOnIsZHk6bn19 KX0sci5kb1RyYWNlU3R5bGU9ZnVuY3Rpb24odCl7dmFyIGUsbj10LmNhbGNk YXRhLG89W107Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyl7dmFyIGw9bltlXSxj PWxbMF18fHt9LHU9Yy50cmFjZXx8e30saD11Ll9tb2R1bGV8fHt9LGY9aC5h cnJheXNUb0NhbGNkYXRhO2YmJmYobCx1KTt2YXIgcD1oLmVkaXRTdHlsZTtw JiZvLnB1c2goe2ZuOnAsY2QwOmN9KX1pZihvLmxlbmd0aCl7Zm9yKGU9MDtl PG8ubGVuZ3RoO2UrKyl7dmFyIGQ9b1tlXTtkLmZuKHQsZC5jZDApfXModCks ci5yZWRyYXdSZWdsVHJhY2VzKHQpfXJldHVybiBpLnN0eWxlKHQpLGEuZ2V0 Q29tcG9uZW50TWV0aG9kKCJsZWdlbmQiLCJkcmF3IikodCksaS5wcmV2aW91 c1Byb21pc2VzKHQpfSxyLmRvQ29sb3JCYXJzPWZ1bmN0aW9uKHQpe3JldHVy biBhLmdldENvbXBvbmVudE1ldGhvZCgiY29sb3JiYXIiLCJkcmF3IikodCks aS5wcmV2aW91c1Byb21pc2VzKHQpfSxyLmxheW91dFJlcGxvdD1mdW5jdGlv bih0KXt2YXIgZT10LmxheW91dDtyZXR1cm4gdC5sYXlvdXQ9dm9pZCAwLGEu Y2FsbCgicGxvdCIsdCwiIixlKX0sci5kb0xlZ2VuZD1mdW5jdGlvbih0KXty ZXR1cm4gYS5nZXRDb21wb25lbnRNZXRob2QoImxlZ2VuZCIsImRyYXciKSh0 KSxpLnByZXZpb3VzUHJvbWlzZXModCl9LHIuZG9UaWNrc1JlbGF5b3V0PWZ1 bmN0aW9uKHQpe3JldHVybiBmLmRyYXcodCwicmVkcmF3IiksdC5fZnVsbExh eW91dC5faGFzT25seUxhcmdlU3Bsb21zJiYoYS5zdWJwbG90c1JlZ2lzdHJ5 LnNwbG9tLnVwZGF0ZUdyaWQodCkscyh0KSxyLnJlZHJhd1JlZ2xUcmFjZXMo dCkpLHIuZHJhd01haW5UaXRsZSh0KSxpLnByZXZpb3VzUHJvbWlzZXModCl9 LHIuZG9Nb2RlQmFyPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7 aC5tYW5hZ2UodCk7Zm9yKHZhciByPTA7cjxlLl9iYXNlUGxvdE1vZHVsZXMu bGVuZ3RoO3IrKyl7dmFyIG49ZS5fYmFzZVBsb3RNb2R1bGVzW3JdLnVwZGF0 ZUZ4O24mJm4odCl9cmV0dXJuIGkucHJldmlvdXNQcm9taXNlcyh0KX0sci5k b0NhbWVyYT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5fZnVsbExheW91dCxy PWUuX3N1YnBsb3RzLmdsM2Qsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgYT1l W3Jbbl1dO2EuX3NjZW5lLnNldFZpZXdwb3J0KGEpfX0sci5kcmF3RGF0YT1m dW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O3ModCk7Zm9yKHZhciBu PWUuX2Jhc2VQbG90TW9kdWxlcyxvPTA7bzxuLmxlbmd0aDtvKyspbltvXS5w bG90KHQpO3JldHVybiByLnJlZHJhd1JlZ2xUcmFjZXModCksaS5zdHlsZSh0 KSxhLmdldENvbXBvbmVudE1ldGhvZCgic2hhcGVzIiwiZHJhdyIpKHQpLGEu Z2V0Q29tcG9uZW50TWV0aG9kKCJhbm5vdGF0aW9ucyIsImRyYXciKSh0KSxh LmdldENvbXBvbmVudE1ldGhvZCgiaW1hZ2VzIiwiZHJhdyIpKHQpLGUuX3Jl cGxvdHRpbmc9ITEsaS5wcmV2aW91c1Byb21pc2VzKHQpfSxyLnJlZHJhd1Jl Z2xUcmFjZXM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtpZihl Ll9oYXMoInJlZ2wiKSl7dmFyIHIsbixhPXQuX2Z1bGxEYXRhLGk9W10scz1b XTtmb3IoZS5faGFzT25seUxhcmdlU3Bsb21zJiZlLl9zcGxvbUdyaWQuZHJh dygpLHI9MDtyPGEubGVuZ3RoO3IrKyl7dmFyIGw9YVtyXTshMD09PWwudmlz aWJsZSYmMCE9PWwuX2xlbmd0aCYmKCJzcGxvbSI9PT1sLnR5cGU/ZS5fc3Bs b21TY2VuZXNbbC51aWRdLmRyYXcoKToic2NhdHRlcmdsIj09PWwudHlwZT9v LnB1c2hVbmlxdWUoaSxsLnhheGlzK2wueWF4aXMpOiJzY2F0dGVycG9sYXJn bCI9PT1sLnR5cGUmJm8ucHVzaFVuaXF1ZShzLGwuc3VicGxvdCkpfWZvcihy PTA7cjxpLmxlbmd0aDtyKyspKG49ZS5fcGxvdHNbaVtyXV0pLl9zY2VuZSYm bi5fc2NlbmUuZHJhdygpO2ZvcihyPTA7cjxzLmxlbmd0aDtyKyspKG49ZVtz W3JdXS5fc3VicGxvdCkuX3NjZW5lJiZuLl9zY2VuZS5kcmF3KCl9fSxyLmRv QXV0b1JhbmdlQW5kQ29uc3RyYWludHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBl LHIsbj10Ll9mdWxsTGF5b3V0LGE9Zi5saXN0KHQsIiIsITApLGk9bi5fYXhp c01hdGNoR3JvdXBzfHxbXSxzPXt9LGw9MDtsPGEubGVuZ3RoO2wrKyllPWFb bF0sdih0LGUpLG0odCxlKSxzW2UuX2lkXT0xO2codCk7dDpmb3IodmFyIGM9 MDtjPGkubGVuZ3RoO2MrKyl7dmFyIHUsaD1pW2NdLHA9bnVsbDtmb3IodSBp biBoKWlmKHNbKGU9Zi5nZXRGcm9tSWQodCx1KSkuX2lkXSl7aWYoITE9PT1l LmF1dG9yYW5nZSljb250aW51ZSB0O3I9by5zaW1wbGVNYXAoZS5yYW5nZSxl LnIybCkscD9wWzBdPHBbMV0/KHBbMF09TWF0aC5taW4ocFswXSxyWzBdKSxw WzFdPU1hdGgubWF4KHBbMV0sclsxXSkpOihwWzBdPU1hdGgubWF4KHBbMF0s clswXSkscFsxXT1NYXRoLm1pbihwWzFdLHJbMV0pKTpwPXJ9Zm9yKHUgaW4g aCkoZT1mLmdldEZyb21JZCh0LHUpKS5yYW5nZT1vLnNpbXBsZU1hcChwLGUu bDJyKSxlLl9pbnB1dC5yYW5nZT1lLnJhbmdlLnNsaWNlKCksZS5zZXRTY2Fs ZSgpfX0sci5maW5hbERyYXc9ZnVuY3Rpb24odCl7YS5nZXRDb21wb25lbnRN ZXRob2QoInJhbmdlc2xpZGVyIiwiZHJhdyIpKHQpLGEuZ2V0Q29tcG9uZW50 TWV0aG9kKCJyYW5nZXNlbGVjdG9yIiwiZHJhdyIpKHQpfSxyLmRyYXdNYXJn aW5QdXNoZXJzPWZ1bmN0aW9uKHQpe2EuZ2V0Q29tcG9uZW50TWV0aG9kKCJs ZWdlbmQiLCJkcmF3IikodCksYS5nZXRDb21wb25lbnRNZXRob2QoInJhbmdl c2VsZWN0b3IiLCJkcmF3IikodCksYS5nZXRDb21wb25lbnRNZXRob2QoInNs aWRlcnMiLCJkcmF3IikodCksYS5nZXRDb21wb25lbnRNZXRob2QoInVwZGF0 ZW1lbnVzIiwiZHJhdyIpKHQpLGEuZ2V0Q29tcG9uZW50TWV0aG9kKCJjb2xv cmJhciIsImRyYXciKSh0KX19LHsiLi4vY29tcG9uZW50cy9jb2xvciI6NTky LCIuLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vY29tcG9uZW50cy9t b2RlYmFyIjo2NTAsIi4uL2NvbXBvbmVudHMvdGl0bGVzIjo2NzksIi4uL2Nv bnN0YW50cy9hbGlnbm1lbnQiOjY4NiwiLi4vbGliIjo3MTcsIi4uL2xpYi9j bGVhcl9nbF9jYW52YXNlcyI6NzAyLCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXV0 b3JhbmdlIjo3NjQsIi4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4u L3Bsb3RzL2NhcnRlc2lhbi9jb25zdHJhaW50cyI6NzcyLCIuLi9wbG90cy9w bG90cyI6ODI2LCIuLi9yZWdpc3RyeSI6ODQ2LGQzOjE2NX1dLDc1NzpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxh PW4uaXNQbGFpbk9iamVjdCxpPXQoIi4vcGxvdF9zY2hlbWEiKSxvPXQoIi4u L3Bsb3RzL3Bsb3RzIikscz10KCIuLi9wbG90cy9hdHRyaWJ1dGVzIiksbD10 KCIuL3Bsb3RfdGVtcGxhdGUiKSxjPXQoIi4vcGxvdF9jb25maWciKS5kZmx0 Q29uZmlnO2Z1bmN0aW9uIHUodCxlKXt0PW4uZXh0ZW5kRGVlcCh7fSx0KTt2 YXIgcixpLG89T2JqZWN0LmtleXModCkuc29ydCgpO2Z1bmN0aW9uIHMoZSxy LG4pe2lmKGEocikmJmEoZSkpdShlLHIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJh eShyKSYmQXJyYXkuaXNBcnJheShlKSl7dmFyIG89bC5hcnJheVRlbXBsYXRl cih7X3RlbXBsYXRlOnR9LG4pO2ZvcihpPTA7aTxyLmxlbmd0aDtpKyspe3Zh ciBzPXJbaV0sYz1vLm5ld0l0ZW0ocykuX3RlbXBsYXRlO2MmJnUoYyxzKX12 YXIgaD1vLmRlZmF1bHRJdGVtcygpO2ZvcihpPTA7aTxoLmxlbmd0aDtpKysp ci5wdXNoKGhbaV0uX3RlbXBsYXRlKTtmb3IoaT0wO2k8ci5sZW5ndGg7aSsr KWRlbGV0ZSByW2ldLnRlbXBsYXRlaXRlbW5hbWV9fWZvcihyPTA7cjxvLmxl bmd0aDtyKyspe3ZhciBjPW9bcl0sZj10W2NdO2lmKGMgaW4gZT9zKGYsZVtj XSxjKTplW2NdPWYsaChjKT09PWMpZm9yKHZhciBwIGluIGUpe3ZhciBkPWgo cCk7cD09PWR8fGQhPT1jfHxwIGluIHR8fHMoZixlW3BdLGMpfX19ZnVuY3Rp b24gaCh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bMC05XSskLywiIil9ZnVuY3Rp b24gZih0LGUscixpLG8pe3ZhciBzPW8mJnIobyk7Zm9yKHZhciBjIGluIHQp e3ZhciB1PXRbY10sZD1wKHQsYyxpKSxnPXAodCxjLG8pLHY9cihnKTtpZigh dil7dmFyIG09aChjKTttIT09YyYmKHY9cihnPXAodCxtLG8pKSl9aWYoKCFz fHxzIT09dikmJiEoIXZ8fHYuX25vVGVtcGxhdGluZ3x8ImRhdGFfYXJyYXki PT09di52YWxUeXBlfHx2LmFycmF5T2smJkFycmF5LmlzQXJyYXkodSkpKWlm KCF2LnZhbFR5cGUmJmEodSkpZih1LGUscixkLGcpO2Vsc2UgaWYodi5faXNM aW5rZWRUb0FycmF5JiZBcnJheS5pc0FycmF5KHUpKWZvcih2YXIgeT0hMSx4 PTAsYj17fSxfPTA7Xzx1Lmxlbmd0aDtfKyspe3ZhciB3PXVbX107aWYoYSh3 KSl7dmFyIGs9dy5uYW1lO2lmKGspYltrXXx8KGYodyxlLHIscCh1LHgsZCks cCh1LHgsZykpLHgrKyxiW2tdPTEpO2Vsc2UgaWYoIXkpe3ZhciBUPXAodCxs LmFycmF5RGVmYXVsdEtleShjKSxpKSxNPXAodSx4LGQpO2YodyxlLHIsTSxw KHUseCxnKSk7dmFyIEE9bi5uZXN0ZWRQcm9wZXJ0eShlLE0pO24ubmVzdGVk UHJvcGVydHkoZSxUKS5zZXQoQS5nZXQoKSksQS5zZXQobnVsbCkseT0hMH19 fWVsc2V7bi5uZXN0ZWRQcm9wZXJ0eShlLGQpLnNldCh1KX19fWZ1bmN0aW9u IHAodCxlLHIpe3JldHVybiByP0FycmF5LmlzQXJyYXkodCk/cisiWyIrZSsi XSI6cisiLiIrZTplfWZ1bmN0aW9uIGQodCl7Zm9yKHZhciBlPTA7ZTx0Lmxl bmd0aDtlKyspaWYoYSh0W2VdKSlyZXR1cm4hMH1mdW5jdGlvbiBnKHQpe3Zh ciBlO3N3aXRjaCh0LmNvZGUpe2Nhc2UiZGF0YSI6ZT0iVGhlIHRlbXBsYXRl IGhhcyBubyBrZXkgZGF0YS4iO2JyZWFrO2Nhc2UibGF5b3V0IjplPSJUaGUg dGVtcGxhdGUgaGFzIG5vIGtleSBsYXlvdXQuIjticmVhaztjYXNlIm1pc3Np bmciOmU9dC5wYXRoPyJUaGVyZSBhcmUgbm8gdGVtcGxhdGVzIGZvciBpdGVt ICIrdC5wYXRoKyIgd2l0aCBuYW1lICIrdC50ZW1wbGF0ZWl0ZW1uYW1lOiJU aGVyZSBhcmUgbm8gdGVtcGxhdGVzIGZvciB0cmFjZSAiK3QuaW5kZXgrIiwg b2YgdHlwZSAiK3QudHJhY2VUeXBlKyIuIjticmVhaztjYXNlInVudXNlZCI6 ZT10LnBhdGg/IlRoZSB0ZW1wbGF0ZSBpdGVtIGF0ICIrdC5wYXRoKyIgd2Fz IG5vdCB1c2VkIGluIGNvbnN0cnVjdGluZyB0aGUgcGxvdC4iOnQuZGF0YUNv dW50PyJTb21lIG9mIHRoZSB0ZW1wbGF0ZXMgb2YgdHlwZSAiK3QudHJhY2VU eXBlKyIgd2VyZSBub3QgdXNlZC4gVGhlIHRlbXBsYXRlIGhhcyAiK3QudGVt cGxhdGVDb3VudCsiIHRyYWNlcywgdGhlIGRhdGEgb25seSBoYXMgIit0LmRh dGFDb3VudCsiIG9mIHRoaXMgdHlwZS4iOiJUaGUgdGVtcGxhdGUgaGFzICIr dC50ZW1wbGF0ZUNvdW50KyIgdHJhY2VzIG9mIHR5cGUgIit0LnRyYWNlVHlw ZSsiIGJ1dCB0aGVyZSBhcmUgbm9uZSBpbiB0aGUgZGF0YS4iO2JyZWFrO2Nh c2UicmV1c2VkIjplPSJTb21lIG9mIHRoZSB0ZW1wbGF0ZXMgb2YgdHlwZSAi K3QudHJhY2VUeXBlKyIgd2VyZSB1c2VkIG1vcmUgdGhhbiBvbmNlLiBUaGUg dGVtcGxhdGUgaGFzICIrdC50ZW1wbGF0ZUNvdW50KyIgdHJhY2VzLCB0aGUg ZGF0YSBoYXMgIit0LmRhdGFDb3VudCsiIG9mIHRoaXMgdHlwZS4ifXJldHVy biB0Lm1zZz1lLHR9ci5tYWtlVGVtcGxhdGU9ZnVuY3Rpb24odCl7dD1uLmlz UGxhaW5PYmplY3QodCk/dDpuLmdldEdyYXBoRGl2KHQpLHQ9bi5leHRlbmRE ZWVwKHtfY29udGV4dDpjfSx7ZGF0YTp0LmRhdGEsbGF5b3V0OnQubGF5b3V0 fSksby5zdXBwbHlEZWZhdWx0cyh0KTt2YXIgZT10LmRhdGF8fFtdLHI9dC5s YXlvdXR8fHt9O3IuX2Jhc2VQbG90TW9kdWxlcz10Ll9mdWxsTGF5b3V0Ll9i YXNlUGxvdE1vZHVsZXMsci5fbW9kdWxlcz10Ll9mdWxsTGF5b3V0Ll9tb2R1 bGVzO3ZhciBsPXtkYXRhOnt9LGxheW91dDp7fX07ZS5mb3JFYWNoKGZ1bmN0 aW9uKHQpe3ZhciBlPXt9O2YodCxlLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGku Z2V0VHJhY2VWYWxPYmplY3QodCxuLm5lc3RlZFByb3BlcnR5KHt9LGUpLnBh cnRzKX0uYmluZChudWxsLHQpKTt2YXIgcj1uLmNvZXJjZSh0LHt9LHMsInR5 cGUiKSxhPWwuZGF0YVtyXTthfHwoYT1sLmRhdGFbcl09W10pLGEucHVzaChl KX0pLGYocixsLmxheW91dCxmdW5jdGlvbih0LGUpe3JldHVybiBpLmdldExh eW91dFZhbE9iamVjdCh0LG4ubmVzdGVkUHJvcGVydHkoe30sZSkucGFydHMp fS5iaW5kKG51bGwscikpLGRlbGV0ZSBsLmxheW91dC50ZW1wbGF0ZTt2YXIg aD1yLnRlbXBsYXRlO2lmKGEoaCkpe3ZhciBwLGQsZyx2LG0seSx4PWgubGF5 b3V0O2EoeCkmJnUoeCxsLmxheW91dCk7dmFyIGI9aC5kYXRhO2lmKGEoYikp e2ZvcihkIGluIGwuZGF0YSlpZihnPWJbZF0sQXJyYXkuaXNBcnJheShnKSl7 Zm9yKHk9KG09bC5kYXRhW2RdKS5sZW5ndGgsdj1nLmxlbmd0aCxwPTA7cDx5 O3ArKyl1KGdbcCV2XSxtW3BdKTtmb3IocD15O3A8djtwKyspbS5wdXNoKG4u ZXh0ZW5kRGVlcCh7fSxnW3BdKSl9Zm9yKGQgaW4gYilkIGluIGwuZGF0YXx8 KGwuZGF0YVtkXT1uLmV4dGVuZERlZXAoW10sYltkXSkpfX1yZXR1cm4gbH0s ci52YWxpZGF0ZVRlbXBsYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5leHRl bmREZWVwKHt9LHtfY29udGV4dDpjLGRhdGE6dC5kYXRhLGxheW91dDp0Lmxh eW91dH0pLGk9ci5sYXlvdXR8fHt9O2EoZSl8fChlPWkudGVtcGxhdGV8fHt9 KTt2YXIgcz1lLmxheW91dCxsPWUuZGF0YSx1PVtdO3IubGF5b3V0PWksci5s YXlvdXQudGVtcGxhdGU9ZSxvLnN1cHBseURlZmF1bHRzKHIpO3ZhciBmPXIu X2Z1bGxMYXlvdXQsdj1yLl9mdWxsRGF0YSxtPXt9O2lmKGEocyk/KCFmdW5j dGlvbiB0KGUscil7Zm9yKHZhciBuIGluIGUpaWYoIl8iIT09bi5jaGFyQXQo MCkmJmEoZVtuXSkpe3ZhciBpLG89aChuKSxzPVtdO2ZvcihpPTA7aTxyLmxl bmd0aDtpKyspcy5wdXNoKHAoZSxuLHJbaV0pKSxvIT09biYmcy5wdXNoKHAo ZSxvLHJbaV0pKTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKW1bc1tpXV09MTt0 KGVbbl0scyl9fShmLFsibGF5b3V0Il0pLGZ1bmN0aW9uIHQoZSxyKXtmb3Io dmFyIG4gaW4gZSlpZigtMT09PW4uaW5kZXhPZigiZGVmYXVsdHMiKSYmYShl W25dKSl7dmFyIGk9cChlLG4scik7bVtpXT90KGVbbl0saSk6dS5wdXNoKHtj b2RlOiJ1bnVzZWQiLHBhdGg6aX0pfX0ocywibGF5b3V0IikpOnUucHVzaCh7 Y29kZToibGF5b3V0In0pLGEobCkpe2Zvcih2YXIgeSx4PXt9LGI9MDtiPHYu bGVuZ3RoO2IrKyl7dmFyIF89dltiXTt4W3k9Xy50eXBlXT0oeFt5XXx8MCkr MSxfLl9mdWxsSW5wdXQuX3RlbXBsYXRlfHx1LnB1c2goe2NvZGU6Im1pc3Np bmciLGluZGV4Ol8uX2Z1bGxJbnB1dC5pbmRleCx0cmFjZVR5cGU6eX0pfWZv cih5IGluIGwpe3ZhciB3PWxbeV0ubGVuZ3RoLGs9eFt5XXx8MDt3Pms/dS5w dXNoKHtjb2RlOiJ1bnVzZWQiLHRyYWNlVHlwZTp5LHRlbXBsYXRlQ291bnQ6 dyxkYXRhQ291bnQ6a30pOms+dyYmdS5wdXNoKHtjb2RlOiJyZXVzZWQiLHRy YWNlVHlwZTp5LHRlbXBsYXRlQ291bnQ6dyxkYXRhQ291bnQ6a30pfX1lbHNl IHUucHVzaCh7Y29kZToiZGF0YSJ9KTtpZihmdW5jdGlvbiB0KGUscil7Zm9y KHZhciBuIGluIGUpaWYoIl8iIT09bi5jaGFyQXQoMCkpe3ZhciBpPWVbbl0s bz1wKGUsbixyKTthKGkpPyhBcnJheS5pc0FycmF5KGUpJiYhMT09PWkuX3Rl bXBsYXRlJiZpLnRlbXBsYXRlaXRlbW5hbWUmJnUucHVzaCh7Y29kZToibWlz c2luZyIscGF0aDpvLHRlbXBsYXRlaXRlbW5hbWU6aS50ZW1wbGF0ZWl0ZW1u YW1lfSksdChpLG8pKTpBcnJheS5pc0FycmF5KGkpJiZkKGkpJiZ0KGksbyl9 fSh7ZGF0YTp2LGxheW91dDpmfSwiIiksdS5sZW5ndGgpcmV0dXJuIHUubWFw KGcpfX0seyIuLi9saWIiOjcxNywiLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYy LCIuLi9wbG90cy9wbG90cyI6ODI2LCIuL3Bsb3RfY29uZmlnIjo3NTMsIi4v cGxvdF9zY2hlbWEiOjc1NCwiLi9wbG90X3RlbXBsYXRlIjo3NTV9XSw3NTg6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1p c251bWVyaWMiKSxhPXQoIi4vcGxvdF9hcGkiKSxpPXQoIi4uL2xpYiIpLG89 dCgiLi4vc25hcHNob3QvaGVscGVycyIpLHM9dCgiLi4vc25hcHNob3QvdG9z dmciKSxsPXQoIi4uL3NuYXBzaG90L3N2Z3RvaW1nIiksYz17Zm9ybWF0Ont2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwbmciLCJqcGVnIiwid2Vi cCIsInN2ZyJdLGRmbHQ6InBuZyJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIi LG1pbjoxfSxoZWlnaHQ6e3ZhbFR5cGU6Im51bWJlciIsbWluOjF9LHNjYWxl Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sc2V0QmFja2dyb3Vu ZDp7dmFsVHlwZToiYW55IixkZmx0OiExfSxpbWFnZURhdGFPbmx5Ont2YWxU eXBlOiJib29sZWFuIixkZmx0OiExfX07ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7dmFyIHIsdSxoLGY7ZnVuY3Rpb24gcCh0KXtyZXR1cm4hKHQgaW4gZSl8 fGkudmFsaWRhdGUoZVt0XSxjW3RdKX1pZihlPWV8fHt9LGkuaXNQbGFpbk9i amVjdCh0KT8ocj10LmRhdGF8fFtdLHU9dC5sYXlvdXR8fHt9LGg9dC5jb25m aWd8fHt9LGY9e30pOih0PWkuZ2V0R3JhcGhEaXYodCkscj1pLmV4dGVuZERl ZXAoW10sdC5kYXRhKSx1PWkuZXh0ZW5kRGVlcCh7fSx0LmxheW91dCksaD10 Ll9jb250ZXh0LGY9dC5fZnVsbExheW91dHx8e30pLCFwKCJ3aWR0aCIpJiZu dWxsIT09ZS53aWR0aHx8IXAoImhlaWdodCIpJiZudWxsIT09ZS5oZWlnaHQp dGhyb3cgbmV3IEVycm9yKCJIZWlnaHQgYW5kIHdpZHRoIHNob3VsZCBiZSBw aXhlbCB2YWx1ZXMuIik7aWYoIXAoImZvcm1hdCIpKXRocm93IG5ldyBFcnJv cigiSW1hZ2UgZm9ybWF0IGlzIG5vdCBqcGVnLCBwbmcsIHN2ZyBvciB3ZWJw LiIpO3ZhciBkPXt9O2Z1bmN0aW9uIGcodCxyKXtyZXR1cm4gaS5jb2VyY2Uo ZSxkLGMsdCxyKX12YXIgdj1nKCJmb3JtYXQiKSxtPWcoIndpZHRoIikseT1n KCJoZWlnaHQiKSx4PWcoInNjYWxlIiksYj1nKCJzZXRCYWNrZ3JvdW5kIiks Xz1nKCJpbWFnZURhdGFPbmx5Iiksdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCJkaXYiKTt3LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdy5zdHlsZS5s ZWZ0PSItNTAwMHB4Iixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHcpO3Zh ciBrPWkuZXh0ZW5kRmxhdCh7fSx1KTttP2sud2lkdGg9bTpudWxsPT09ZS53 aWR0aCYmbihmLndpZHRoKSYmKGsud2lkdGg9Zi53aWR0aCkseT9rLmhlaWdo dD15Om51bGw9PT1lLmhlaWdodCYmbihmLmhlaWdodCkmJihrLmhlaWdodD1m LmhlaWdodCk7dmFyIFQ9aS5leHRlbmRGbGF0KHt9LGgse19leHBvcnRlZFBs b3Q6ITAsc3RhdGljUGxvdDohMCxzZXRCYWNrZ3JvdW5kOmJ9KSxNPW8uZ2V0 UmVkcmF3RnVuYyh3KTtmdW5jdGlvbiBBKCl7cmV0dXJuIG5ldyBQcm9taXNl KGZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCxvLmdldERlbGF5KHcuX2Z1bGxM YXlvdXQpKX0pfWZ1bmN0aW9uIFMoKXtyZXR1cm4gbmV3IFByb21pc2UoZnVu Y3Rpb24odCxlKXt2YXIgcj1zKHcsdix4KSxuPXcuX2Z1bGxMYXlvdXQud2lk dGgsYz13Ll9mdWxsTGF5b3V0LmhlaWdodDtpZihhLnB1cmdlKHcpLGRvY3Vt ZW50LmJvZHkucmVtb3ZlQ2hpbGQodyksInN2ZyI9PT12KXJldHVybiB0KF8/ cjpvLmVuY29kZVNWRyhyKSk7dmFyIHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgiY2FudmFzIik7dS5pZD1pLnJhbmRzdHIoKSxsKHtmb3JtYXQ6dix3aWR0 aDpuLGhlaWdodDpjLHNjYWxlOngsY2FudmFzOnUsc3ZnOnIscHJvbWlzZToh MH0pLnRoZW4odCkuY2F0Y2goZSl9KX1yZXR1cm4gbmV3IFByb21pc2UoZnVu Y3Rpb24odCxlKXthLnBsb3QodyxyLGssVCkudGhlbihNKS50aGVuKEEpLnRo ZW4oUykudGhlbihmdW5jdGlvbihlKXt0KGZ1bmN0aW9uKHQpe3JldHVybiBf P3QucmVwbGFjZShvLklNQUdFX1VSTF9QUkVGSVgsIiIpOnR9KGUpKX0pLmNh dGNoKGZ1bmN0aW9uKHQpe2UodCl9KX0pfX0seyIuLi9saWIiOjcxNywiLi4v c25hcHNob3QvaGVscGVycyI6ODUwLCIuLi9zbmFwc2hvdC9zdmd0b2ltZyI6 ODUyLCIuLi9zbmFwc2hvdC90b3N2ZyI6ODU0LCIuL3Bsb3RfYXBpIjo3NTIs ImZhc3QtaXNudW1lcmljIjoyMjh9XSw3NTk6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliIiksYT10KCIuLi9wbG90cy9w bG90cyIpLGk9dCgiLi9wbG90X3NjaGVtYSIpLG89dCgiLi9wbG90X2NvbmZp ZyIpLmRmbHRDb25maWcscz1uLmlzUGxhaW5PYmplY3QsbD1BcnJheS5pc0Fy cmF5LGM9bi5pc0FycmF5T3JUeXBlZEFycmF5O2Z1bmN0aW9uIHUodCxlLHIs YSxpLG8pe289b3x8W107Zm9yKHZhciBoPU9iamVjdC5rZXlzKHQpLGY9MDtm PGgubGVuZ3RoO2YrKyl7dmFyIHY9aFtmXTtpZigidHJhbnNmb3JtcyIhPT12 KXt2YXIgbT1vLnNsaWNlKCk7bS5wdXNoKHYpO3ZhciB5PXRbdl0seD1lW3Zd LGI9ZyhyLHYpLF89KGJ8fHt9KS52YWxUeXBlLHc9ImluZm9fYXJyYXkiPT09 XyxrPSJjb2xvcnNjYWxlIj09PV8sVD0oYnx8e30pLml0ZW1zO2lmKGQocix2 KSlpZihzKHkpJiZzKHgpJiYiYW55IiE9PV8pdSh5LHgsYixhLGksbSk7ZWxz ZSBpZih3JiZsKHkpKXt5Lmxlbmd0aD54Lmxlbmd0aCYmYS5wdXNoKHAoInVu dXNlZCIsaSxtLmNvbmNhdCh4Lmxlbmd0aCkpKTt2YXIgTSxBLFMsRSxMLEM9 eC5sZW5ndGgsUD1BcnJheS5pc0FycmF5KFQpO2lmKFAmJihDPU1hdGgubWlu KEMsVC5sZW5ndGgpKSwyPT09Yi5kaW1lbnNpb25zKWZvcihBPTA7QTxDO0Er KylpZihsKHlbQV0pKXt5W0FdLmxlbmd0aD54W0FdLmxlbmd0aCYmYS5wdXNo KHAoInVudXNlZCIsaSxtLmNvbmNhdChBLHhbQV0ubGVuZ3RoKSkpO3ZhciBP PXhbQV0ubGVuZ3RoO2ZvcihNPTA7TTwoUD9NYXRoLm1pbihPLFRbQV0ubGVu Z3RoKTpPKTtNKyspUz1QP1RbQV1bTV06VCxFPXlbQV1bTV0sTD14W0FdW01d LG4udmFsaWRhdGUoRSxTKT9MIT09RSYmTCE9PStFJiZhLnB1c2gocCgiZHlu YW1pYyIsaSxtLmNvbmNhdChBLE0pLEUsTCkpOmEucHVzaChwKCJ2YWx1ZSIs aSxtLmNvbmNhdChBLE0pLEUpKX1lbHNlIGEucHVzaChwKCJhcnJheSIsaSxt LmNvbmNhdChBKSx5W0FdKSk7ZWxzZSBmb3IoQT0wO0E8QztBKyspUz1QP1Rb QV06VCxFPXlbQV0sTD14W0FdLG4udmFsaWRhdGUoRSxTKT9MIT09RSYmTCE9 PStFJiZhLnB1c2gocCgiZHluYW1pYyIsaSxtLmNvbmNhdChBKSxFLEwpKTph LnB1c2gocCgidmFsdWUiLGksbS5jb25jYXQoQSksRSkpfWVsc2UgaWYoYi5p dGVtcyYmIXcmJmwoeSkpe3ZhciB6LEksRD1UW09iamVjdC5rZXlzKFQpWzBd XSxSPVtdO2Zvcih6PTA7ejx4Lmxlbmd0aDt6Kyspe3ZhciBGPXhbel0uX2lu ZGV4fHx6O2lmKChJPW0uc2xpY2UoKSkucHVzaChGKSxzKHlbRl0pJiZzKHhb el0pKXtSLnB1c2goRik7dmFyIEI9eVtGXSxOPXhbel07cyhCKSYmITEhPT1C LnZpc2libGUmJiExPT09Ti52aXNpYmxlP2EucHVzaChwKCJpbnZpc2libGUi LGksSSkpOnUoQixOLEQsYSxpLEkpfX1mb3Ioej0wO3o8eS5sZW5ndGg7eisr KShJPW0uc2xpY2UoKSkucHVzaCh6KSxzKHlbel0pPy0xPT09Ui5pbmRleE9m KHopJiZhLnB1c2gocCgidW51c2VkIixpLEkpKTphLnB1c2gocCgib2JqZWN0 IixpLEkseVt6XSkpfWVsc2Uhcyh5KSYmcyh4KT9hLnB1c2gocCgib2JqZWN0 IixpLG0seSkpOmMoeSl8fCFjKHgpfHx3fHxrP3YgaW4gZT9uLnZhbGlkYXRl KHksYik/ImVudW1lcmF0ZWQiPT09Yi52YWxUeXBlJiYoYi5jb2VyY2VOdW1i ZXImJnkhPT0reHx8eSE9PXgpJiZhLnB1c2gocCgiZHluYW1pYyIsaSxtLHks eCkpOmEucHVzaChwKCJ2YWx1ZSIsaSxtLHkpKTphLnB1c2gocCgidW51c2Vk IixpLG0seSkpOmEucHVzaChwKCJhcnJheSIsaSxtLHkpKTtlbHNlIGEucHVz aChwKCJzY2hlbWEiLGksbSkpfX1yZXR1cm4gYX1lLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXt2YXIgcixjLGg9aS5nZXQoKSxmPVtdLGQ9e19jb250ZXh0Om4u ZXh0ZW5kRmxhdCh7fSxvKX07bCh0KT8oZC5kYXRhPW4uZXh0ZW5kRGVlcChb XSx0KSxyPXQpOihkLmRhdGE9W10scj1bXSxmLnB1c2gocCgiYXJyYXkiLCJk YXRhIikpKSxzKGUpPyhkLmxheW91dD1uLmV4dGVuZERlZXAoe30sZSksYz1l KTooZC5sYXlvdXQ9e30sYz17fSxhcmd1bWVudHMubGVuZ3RoPjEmJmYucHVz aChwKCJvYmplY3QiLCJsYXlvdXQiKSkpLGEuc3VwcGx5RGVmYXVsdHMoZCk7 Zm9yKHZhciBnPWQuX2Z1bGxEYXRhLHY9ci5sZW5ndGgsbT0wO208djttKysp e3ZhciB5PXJbbV0seD1bImRhdGEiLG1dO2lmKHMoeSkpe3ZhciBiPWdbbV0s Xz1iLnR5cGUsdz1oLnRyYWNlc1tfXS5hdHRyaWJ1dGVzO3cudHlwZT17dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOltfXX0sITE9PT1iLnZpc2libGUm JiExIT09eS52aXNpYmxlJiZmLnB1c2gocCgiaW52aXNpYmxlIix4KSksdSh5 LGIsdyxmLHgpO3ZhciBrPXkudHJhbnNmb3JtcyxUPWIudHJhbnNmb3Jtcztp ZihrKXtsKGspfHxmLnB1c2gocCgiYXJyYXkiLHgsWyJ0cmFuc2Zvcm1zIl0p KSx4LnB1c2goInRyYW5zZm9ybXMiKTtmb3IodmFyIE09MDtNPGsubGVuZ3Ro O00rKyl7dmFyIEE9WyJ0cmFuc2Zvcm1zIixNXSxTPWtbTV0udHlwZTtpZihz KGtbTV0pKXt2YXIgRT1oLnRyYW5zZm9ybXNbU10/aC50cmFuc2Zvcm1zW1Nd LmF0dHJpYnV0ZXM6e307RS50eXBlPXt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6T2JqZWN0LmtleXMoaC50cmFuc2Zvcm1zKX0sdShrW01dLFRbTV0s RSxmLHgsQSl9ZWxzZSBmLnB1c2gocCgib2JqZWN0Iix4LEEpKX19fWVsc2Ug Zi5wdXNoKHAoIm9iamVjdCIseCkpfXJldHVybiB1KGMsZC5fZnVsbExheW91 dCxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmxheW91dC5sYXlvdXRBdHRy aWJ1dGVzLGE9MDthPGUubGVuZ3RoO2ErKyl7dmFyIGk9ZVthXSxvPXQudHJh Y2VzW2kudHlwZV0scz1vLmxheW91dEF0dHJpYnV0ZXM7cyYmKGkuc3VicGxv dD9uLmV4dGVuZEZsYXQocltvLmF0dHJpYnV0ZXMuc3VicGxvdC5kZmx0XSxz KTpuLmV4dGVuZEZsYXQocixzKSl9cmV0dXJuIHJ9KGgsZyksZiwibGF5b3V0 IiksMD09PWYubGVuZ3RoP3ZvaWQgMDpmfTt2YXIgaD17b2JqZWN0OmZ1bmN0 aW9uKHQsZSl7cmV0dXJuKCJsYXlvdXQiPT09dCYmIiI9PT1lPyJUaGUgbGF5 b3V0IGFyZ3VtZW50IjoiZGF0YSI9PT10WzBdJiYiIj09PWU/IlRyYWNlICIr dFsxXSsiIGluIHRoZSBkYXRhIGFyZ3VtZW50IjpmKHQpKyJrZXkgIitlKSsi IG11c3QgYmUgbGlua2VkIHRvIGFuIG9iamVjdCBjb250YWluZXIifSxhcnJh eTpmdW5jdGlvbih0LGUpe3JldHVybigiZGF0YSI9PT10PyJUaGUgZGF0YSBh cmd1bWVudCI6Zih0KSsia2V5ICIrZSkrIiBtdXN0IGJlIGxpbmtlZCB0byBh biBhcnJheSBjb250YWluZXIifSxzY2hlbWE6ZnVuY3Rpb24odCxlKXtyZXR1 cm4gZih0KSsia2V5ICIrZSsiIGlzIG5vdCBwYXJ0IG9mIHRoZSBzY2hlbWEi fSx1bnVzZWQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXMocik/ImNvbnRhaW5l ciI6ImtleSI7cmV0dXJuIGYodCkrbisiICIrZSsiIGRpZCBub3QgZ2V0IGNv ZXJjZWQifSxkeW5hbWljOmZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybltmKHQp KyJrZXkiLGUsIihzZXQgdG8gJyIrcisiJykiLCJnb3QgcmVzZXQgdG8iLCIn IituKyInIiwiZHVyaW5nIGRlZmF1bHRzLiJdLmpvaW4oIiAiKX0saW52aXNp YmxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKGU/Zih0KSsiaXRlbSAiK2U6IlRy YWNlICIrdFsxXSkrIiBnb3QgZGVmYXVsdGVkIHRvIGJlIG5vdCB2aXNpYmxl In0sdmFsdWU6ZnVuY3Rpb24odCxlLHIpe3JldHVybltmKHQpKyJrZXkgIitl LCJpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZSAoIityKyIpIl0uam9pbigi ICIpfX07ZnVuY3Rpb24gZih0KXtyZXR1cm4gbCh0KT8iSW4gZGF0YSB0cmFj ZSAiK3RbMV0rIiwgIjoiSW4gIit0KyIsICJ9ZnVuY3Rpb24gcCh0LGUscixh LGkpe3ZhciBvLHM7cj1yfHwiIixsKGUpPyhvPWVbMF0scz1lWzFdKToobz1l LHM9bnVsbCk7dmFyIGM9ZnVuY3Rpb24odCl7aWYoIWwodCkpcmV0dXJuIFN0 cmluZyh0KTtmb3IodmFyIGU9IiIscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIg bj10W3JdOyJudW1iZXIiPT10eXBlb2Ygbj9lPWUuc3Vic3RyKDAsZS5sZW5n dGgtMSkrIlsiK24rIl0iOmUrPW4scjx0Lmxlbmd0aC0xJiYoZSs9Ii4iKX1y ZXR1cm4gZX0ociksdT1oW3RdKGUsYyxhLGkpO3JldHVybiBuLmxvZyh1KSx7 Y29kZTp0LGNvbnRhaW5lcjpvLHRyYWNlOnMscGF0aDpyLGFzdHI6Yyxtc2c6 dX19ZnVuY3Rpb24gZCh0LGUpe3ZhciByPW0oZSksbj1yLmtleU1pbnVzSWQs YT1yLmlkO3JldHVybiEhKG4gaW4gdCYmdFtuXS5faXNTdWJwbG90T2JqJiZh KXx8ZSBpbiB0fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gZSBpbiB0P3RbZV06 dFttKGUpLmtleU1pbnVzSWRdfXZhciB2PW4uY291bnRlclJlZ2V4KCIoW2Et el0rKSIpO2Z1bmN0aW9uIG0odCl7dmFyIGU9dC5tYXRjaCh2KTtyZXR1cm57 a2V5TWludXNJZDplJiZlWzFdLGlkOmUmJmVbMl19fX0seyIuLi9saWIiOjcx NywiLi4vcGxvdHMvcGxvdHMiOjgyNiwiLi9wbG90X2NvbmZpZyI6NzUzLCIu L3Bsb3Rfc2NoZW1hIjo3NTR9XSw3NjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPXttb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVk IixkZmx0OiJhZnRlcmFsbCIsdmFsdWVzOlsiaW1tZWRpYXRlIiwibmV4dCIs ImFmdGVyYWxsIl19LGRpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsiZm9yd2FyZCIsInJldmVyc2UiXSxkZmx0OiJmb3J3YXJkIn0s ZnJvbWN1cnJlbnQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGZyYW1l OntkdXJhdGlvbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjUwMH0s cmVkcmF3Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfX0sdHJhbnNpdGlv bjp7ZHVyYXRpb246e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDo1MDAs ZWRpdFR5cGU6Im5vbmUifSxlYXNpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQi LGRmbHQ6ImN1YmljLWluLW91dCIsdmFsdWVzOlsibGluZWFyIiwicXVhZCIs ImN1YmljIiwic2luIiwiZXhwIiwiY2lyY2xlIiwiZWxhc3RpYyIsImJhY2si LCJib3VuY2UiLCJsaW5lYXItaW4iLCJxdWFkLWluIiwiY3ViaWMtaW4iLCJz aW4taW4iLCJleHAtaW4iLCJjaXJjbGUtaW4iLCJlbGFzdGljLWluIiwiYmFj ay1pbiIsImJvdW5jZS1pbiIsImxpbmVhci1vdXQiLCJxdWFkLW91dCIsImN1 YmljLW91dCIsInNpbi1vdXQiLCJleHAtb3V0IiwiY2lyY2xlLW91dCIsImVs YXN0aWMtb3V0IiwiYmFjay1vdXQiLCJib3VuY2Utb3V0IiwibGluZWFyLWlu LW91dCIsInF1YWQtaW4tb3V0IiwiY3ViaWMtaW4tb3V0Iiwic2luLWluLW91 dCIsImV4cC1pbi1vdXQiLCJjaXJjbGUtaW4tb3V0IiwiZWxhc3RpYy1pbi1v dXQiLCJiYWNrLWluLW91dCIsImJvdW5jZS1pbi1vdXQiXSxlZGl0VHlwZToi bm9uZSJ9LG9yZGVyaW5nOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6 WyJsYXlvdXQgZmlyc3QiLCJ0cmFjZXMgZmlyc3QiXSxkZmx0OiJsYXlvdXQg Zmlyc3QiLGVkaXRUeXBlOiJub25lIn19fX0se31dLDc2MTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxhPXQoIi4u L3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIpe3ZhciBpLG8scz1yLm5hbWUsbD1yLmluY2x1c2lvbkF0dHJ8fCJ2 aXNpYmxlIixjPWVbc10sdT1uLmlzQXJyYXlPclR5cGVkQXJyYXkodFtzXSk/ dFtzXTpbXSxoPWVbc109W10sZj1hLmFycmF5VGVtcGxhdGVyKGUscyxsKTtm b3IoaT0wO2k8dS5sZW5ndGg7aSsrKXt2YXIgcD11W2ldO24uaXNQbGFpbk9i amVjdChwKT9vPWYubmV3SXRlbShwKToobz1mLm5ld0l0ZW0oe30pKVtsXT0h MSxvLl9pbmRleD1pLCExIT09b1tsXSYmci5oYW5kbGVJdGVtRGVmYXVsdHMo cCxvLGUsciksaC5wdXNoKG8pfXZhciBkPWYuZGVmYXVsdEl0ZW1zKCk7Zm9y KGk9MDtpPGQubGVuZ3RoO2krKykobz1kW2ldKS5faW5kZXg9aC5sZW5ndGgs ci5oYW5kbGVJdGVtRGVmYXVsdHMoe30sbyxlLHIse30pLGgucHVzaChvKTtp ZihuLmlzQXJyYXlPclR5cGVkQXJyYXkoYykpe3ZhciBnPU1hdGgubWluKGMu bGVuZ3RoLGgubGVuZ3RoKTtmb3IoaT0wO2k8ZztpKyspbi5yZWxpbmtQcml2 YXRlS2V5cyhoW2ldLGNbaV0pfXJldHVybiBofX0seyIuLi9saWIiOjcxNywi Li4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1fV0sNzYyOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2NvbXBvbmVudHMv ZngvYXR0cmlidXRlcyIpO2UuZXhwb3J0cz17dHlwZTp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOltdLGRmbHQ6InNjYXR0ZXIiLGVkaXRUeXBlOiJj YWxjK2NsZWFyQXhpc1R5cGVzIixfbm9UZW1wbGF0aW5nOiEwfSx2aXNpYmxl Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCExLCJsZWdlbmRv bmx5Il0sZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LHNob3dsZWdlbmQ6e3Zh bFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InN0eWxlIn0sbGVn ZW5kZ3JvdXA6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToi c3R5bGUifSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDox LGRmbHQ6MSxlZGl0VHlwZToic3R5bGUifSxuYW1lOnt2YWxUeXBlOiJzdHJp bmciLGVkaXRUeXBlOiJzdHlsZSJ9LHVpZDp7dmFsVHlwZToic3RyaW5nIixl ZGl0VHlwZToicGxvdCIsYW5pbTohMH0saWRzOnt2YWxUeXBlOiJkYXRhX2Fy cmF5IixlZGl0VHlwZToiY2FsYyIsYW5pbTohMH0sY3VzdG9tZGF0YTp7dmFs VHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxtZXRhOnt2YWxU eXBlOiJhbnkiLGFycmF5T2s6ITAsZWRpdFR5cGU6InBsb3QifSxzZWxlY3Rl ZHBvaW50czp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LGhvdmVy aW5mbzp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsieCIsInkiLCJ6Iiwi dGV4dCIsIm5hbWUiXSxleHRyYXM6WyJhbGwiLCJub25lIiwic2tpcCJdLGFy cmF5T2s6ITAsZGZsdDoiYWxsIixlZGl0VHlwZToibm9uZSJ9LGhvdmVybGFi ZWw6bi5ob3ZlcmxhYmVsLHN0cmVhbTp7dG9rZW46e3ZhbFR5cGU6InN0cmlu ZyIsbm9CbGFuazohMCxzdHJpY3Q6ITAsZWRpdFR5cGU6ImNhbGMifSxtYXhw b2ludHM6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjFlNCxkZmx0OjUw MCxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sdHJhbnNmb3Jt czp7X2lzTGlua2VkVG9BcnJheToidHJhbnNmb3JtIixlZGl0VHlwZToiY2Fs YyJ9LHVpcmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUi fX19LHsiLi4vY29tcG9uZW50cy9meC9hdHRyaWJ1dGVzIjo2MjJ9XSw3NjM6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXt4YXhp czp7dmFsVHlwZToic3VicGxvdGlkIixkZmx0OiJ4IixlZGl0VHlwZToiY2Fs YytjbGVhckF4aXNUeXBlcyJ9LHlheGlzOnt2YWxUeXBlOiJzdWJwbG90aWQi LGRmbHQ6InkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn19fSx7 fV0sNzY0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo ImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4u L2NvbnN0YW50cy9udW1lcmljYWwiKS5GUF9TQUZFLG89dCgiLi4vLi4vcmVn aXN0cnkiKTtmdW5jdGlvbiBzKHQsZSl7dmFyIHIsbixpPVtdLG89bChlKSxz PWModCxlKSx1PXMubWluLGg9cy5tYXg7aWYoMD09PXUubGVuZ3RofHwwPT09 aC5sZW5ndGgpcmV0dXJuIGEuc2ltcGxlTWFwKGUucmFuZ2UsZS5yMmwpO3Zh ciBmPXVbMF0udmFsLHA9aFswXS52YWw7Zm9yKHI9MTtyPHUubGVuZ3RoJiZm PT09cDtyKyspZj1NYXRoLm1pbihmLHVbcl0udmFsKTtmb3Iocj0xO3I8aC5s ZW5ndGgmJmY9PT1wO3IrKylwPU1hdGgubWF4KHAsaFtyXS52YWwpO3ZhciBk PSExO2lmKGUucmFuZ2Upe3ZhciBnPWEuc2ltcGxlTWFwKGUucmFuZ2UsZS5y MmwpO2Q9Z1sxXTxnWzBdfSJyZXZlcnNlZCI9PT1lLmF1dG9yYW5nZSYmKGQ9 ITAsZS5hdXRvcmFuZ2U9ITApO3ZhciB2LG0seSx4LGIsXyx3PWUucmFuZ2Vt b2RlLGs9InRvemVybyI9PT13LFQ9Im5vbm5lZ2F0aXZlIj09PXcsTT1lLl9s ZW5ndGgsQT1NLzEwLFM9MDtmb3Iocj0wO3I8dS5sZW5ndGg7cisrKWZvcih2 PXVbcl0sbj0wO248aC5sZW5ndGg7bisrKShfPShtPWhbbl0pLnZhbC12LnZh bCk+MCYmKChiPU0tbyh2KS1vKG0pKT5BP18vYj5TJiYoeT12LHg9bSxTPV8v Yik6Xy9NPlMmJih5PXt2YWw6di52YWwscGFkOjB9LHg9e3ZhbDptLnZhbCxw YWQ6MH0sUz1fL00pKTtpZihmPT09cCl7dmFyIEU9Zi0xLEw9ZisxO2lmKGsp aWYoMD09PWYpaT1bMCwxXTtlbHNle3ZhciBDPShmPjA/aDp1KS5yZWR1Y2Uo ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5tYXgodCxvKGUpKX0sMCksUD1m LygxLU1hdGgubWluKC41LEMvTSkpO2k9Zj4wP1swLFBdOltQLDBdfWVsc2Ug aT1UP1tNYXRoLm1heCgwLEUpLE1hdGgubWF4KDEsTCldOltFLExdfWVsc2Ug az8oeS52YWw+PTAmJih5PXt2YWw6MCxwYWQ6MH0pLHgudmFsPD0wJiYoeD17 dmFsOjAscGFkOjB9KSk6VCYmKHkudmFsLVMqbyh5KTwwJiYoeT17dmFsOjAs cGFkOjB9KSx4LnZhbDw9MCYmKHg9e3ZhbDoxLHBhZDowfSkpLFM9KHgudmFs LXkudmFsKS8oTS1vKHkpLW8oeCkpLGk9W3kudmFsLVMqbyh5KSx4LnZhbCtT Km8oeCldO3JldHVybiBkJiZpLnJldmVyc2UoKSxhLnNpbXBsZU1hcChpLGUu bDJyfHxOdW1iZXIpfWZ1bmN0aW9uIGwodCl7dmFyIGU9dC5fbGVuZ3RoLzIw O3JldHVybiJkb21haW4iPT09dC5jb25zdHJhaW4mJnQuX2lucHV0RG9tYWlu JiYoZSo9KHQuX2lucHV0RG9tYWluWzFdLXQuX2lucHV0RG9tYWluWzBdKS8o dC5kb21haW5bMV0tdC5kb21haW5bMF0pKSxmdW5jdGlvbih0KXtyZXR1cm4g dC5wYWQrKHQuZXh0cmFwYWQ/ZTowKX19ZnVuY3Rpb24gYyh0LGUpe3ZhciBy LG4sYSxpPWUuX2lkLG89dC5fZnVsbERhdGEscz10Ll9mdWxsTGF5b3V0LGw9 W10sYz1bXTtmdW5jdGlvbiBmKHQsZSl7Zm9yKHI9MDtyPGUubGVuZ3RoO3Ir Kyl7dmFyIG89dFtlW3JdXSxzPShvLl9leHRyZW1lc3x8e30pW2ldO2lmKCEw PT09by52aXNpYmxlJiZzKXtmb3Iobj0wO248cy5taW4ubGVuZ3RoO24rKylh PXMubWluW25dLHUobCxhLnZhbCxhLnBhZCx7ZXh0cmFwYWQ6YS5leHRyYXBh ZH0pO2ZvcihuPTA7bjxzLm1heC5sZW5ndGg7bisrKWE9cy5tYXhbbl0saChj LGEudmFsLGEucGFkLHtleHRyYXBhZDphLmV4dHJhcGFkfSl9fX1yZXR1cm4g ZihvLGUuX3RyYWNlSW5kaWNlcyksZihzLmFubm90YXRpb25zfHxbXSxlLl9h bm5JbmRpY2VzfHxbXSksZihzLnNoYXBlc3x8W10sZS5fc2hhcGVJbmRpY2Vz fHxbXSkse21pbjpsLG1heDpjfX1mdW5jdGlvbiB1KHQsZSxyLG4pe2YodCxl LHIsbixkKX1mdW5jdGlvbiBoKHQsZSxyLG4pe2YodCxlLHIsbixnKX1mdW5j dGlvbiBmKHQsZSxyLG4sYSl7Zm9yKHZhciBpPW4udG96ZXJvLG89bi5leHRy YXBhZCxzPSEwLGw9MDtsPHQubGVuZ3RoJiZzO2wrKyl7dmFyIGM9dFtsXTtp ZihhKGMudmFsLGUpJiZjLnBhZD49ciYmKGMuZXh0cmFwYWR8fCFvKSl7cz0h MTticmVha31hKGUsYy52YWwpJiZjLnBhZDw9ciYmKG98fCFjLmV4dHJhcGFk KSYmKHQuc3BsaWNlKGwsMSksbC0tKX1pZihzKXt2YXIgdT1pJiYwPT09ZTt0 LnB1c2goe3ZhbDplLHBhZDp1PzA6cixleHRyYXBhZDohdSYmb30pfX1mdW5j dGlvbiBwKHQpe3JldHVybiBuKHQpJiZNYXRoLmFicyh0KTxpfWZ1bmN0aW9u IGQodCxlKXtyZXR1cm4gdDw9ZX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIHQ+ PWV9ZS5leHBvcnRzPXtnZXRBdXRvUmFuZ2U6cyxtYWtlUGFkRm46bCxkb0F1 dG9SYW5nZTpmdW5jdGlvbih0LGUpe2lmKGUuc2V0U2NhbGUoKSxlLmF1dG9y YW5nZSl7ZS5yYW5nZT1zKHQsZSksZS5fcj1lLnJhbmdlLnNsaWNlKCksZS5f cmw9YS5zaW1wbGVNYXAoZS5fcixlLnIybCk7dmFyIHI9ZS5faW5wdXQsbj17 fTtuW2UuX2F0dHIrIi5yYW5nZSJdPWUucmFuZ2UsbltlLl9hdHRyKyIuYXV0 b3JhbmdlIl09ZS5hdXRvcmFuZ2Usby5jYWxsKCJfc3RvcmVEaXJlY3RHVUlF ZGl0Iix0LmxheW91dCx0Ll9mdWxsTGF5b3V0Ll9wcmVHVUksbiksci5yYW5n ZT1lLnJhbmdlLnNsaWNlKCksci5hdXRvcmFuZ2U9ZS5hdXRvcmFuZ2V9dmFy IGk9ZS5fYW5jaG9yQXhpcztpZihpJiZpLnJhbmdlc2xpZGVyKXt2YXIgbD1p LnJhbmdlc2xpZGVyW2UuX25hbWVdO2wmJiJhdXRvIj09PWwucmFuZ2Vtb2Rl JiYobC5yYW5nZT1zKHQsZSkpLGkuX2lucHV0LnJhbmdlc2xpZGVyW2UuX25h bWVdPWEuZXh0ZW5kRmxhdCh7fSxsKX19LGZpbmRFeHRyZW1lczpmdW5jdGlv bih0LGUscil7cnx8KHI9e30pO3QuX218fHQuc2V0U2NhbGUoKTt2YXIgYSxv LHMsbCxjLGYsZCxnLHYsbT1bXSx5PVtdLHg9ZS5sZW5ndGgsYj1yLnBhZGRl ZHx8ITEsXz1yLnRvemVybyYmKCJsaW5lYXIiPT09dC50eXBlfHwiLSI9PT10 LnR5cGUpLHc9ImxvZyI9PT10LnR5cGUsaz0hMSxUPXIudnBhZExpbmVhcml6 ZWR8fCExO2Z1bmN0aW9uIE0odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1 cm4gaz0hMCxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoTnVtYmVyKHRb ZV18fDApLDApfTt2YXIgZT1NYXRoLm1heChOdW1iZXIodHx8MCksMCk7cmV0 dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBBPU0oKHQuX20+MD9yLnBw YWRwbHVzOnIucHBhZG1pbnVzKXx8ci5wcGFkfHwwKSxTPU0oKHQuX20+MD9y LnBwYWRtaW51czpyLnBwYWRwbHVzKXx8ci5wcGFkfHwwKSxFPU0oci52cGFk cGx1c3x8ci52cGFkKSxMPU0oci52cGFkbWludXN8fHIudnBhZCk7aWYoIWsp e2lmKGc9MS8wLHY9LTEvMCx3KWZvcihhPTA7YTx4O2ErKykobz1lW2FdKTxn JiZvPjAmJihnPW8pLG8+diYmbzxpJiYodj1vKTtlbHNlIGZvcihhPTA7YTx4 O2ErKykobz1lW2FdKTxnJiZvPi1pJiYoZz1vKSxvPnYmJm88aSYmKHY9byk7 ZT1bZyx2XSx4PTJ9dmFyIEM9e3RvemVybzpfLGV4dHJhcGFkOmJ9O2Z1bmN0 aW9uIFAocil7cz1lW3JdLG4ocykmJihmPUEociksZD1TKHIpLFQ/KGw9dC5j MmwocyktTChyKSxjPXQuYzJsKHMpK0UocikpOihnPXMtTChyKSx2PXMrRShy KSx3JiZnPHYvMTAmJihnPXYvMTApLGw9dC5jMmwoZyksYz10LmMybCh2KSks XyYmKGw9TWF0aC5taW4oMCxsKSxjPU1hdGgubWF4KDAsYykpLHAobCkmJnUo bSxsLGQsQykscChjKSYmaCh5LGMsZixDKSl9dmFyIE89TWF0aC5taW4oNix4 KTtmb3IoYT0wO2E8TzthKyspUChhKTtmb3IoYT14LTE7YT49TzthLS0pUChh KTtyZXR1cm57bWluOm0sbWF4Onksb3B0czpyfX0sY29uY2F0RXh0cmVtZXM6 Y319LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9s aWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiZmFzdC1pc251bWVyaWMi OjIyOH1dLDc2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJkMyIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL3Bs b3RzL3Bsb3RzIiksbz10KCIuLi8uLi9yZWdpc3RyeSIpLHM9dCgiLi4vLi4v bGliIiksbD10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxjPXQoIi4u Ly4uL2NvbXBvbmVudHMvdGl0bGVzIiksdT10KCIuLi8uLi9jb21wb25lbnRz L2NvbG9yIiksaD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxmPXQo Ii4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxwPXQoIi4vY2xlYW5fdGlja3MiKSxk PXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKSxnPWQuT05FQVZHWUVB Uix2PWQuT05FQVZHTU9OVEgsbT1kLk9ORURBWSx5PWQuT05FSE9VUix4PWQu T05FTUlOLGI9ZC5PTkVTRUMsXz1kLk1JTlVTX1NJR04sdz1kLkJBRE5VTSxr PXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKSxUPWsuTUlEX1NISUZU LE09ay5DQVBfU0hJRlQsQT1rLkxJTkVfU1BBQ0lORyxTPWsuT1BQT1NJVEVf U0lERSxFPWUuZXhwb3J0cz17fTtFLnNldENvbnZlcnQ9dCgiLi9zZXRfY29u dmVydCIpO3ZhciBMPXQoIi4vYXhpc19hdXRvdHlwZSIpLEM9dCgiLi9heGlz X2lkcyIpO0UuaWQybmFtZT1DLmlkMm5hbWUsRS5uYW1lMmlkPUMubmFtZTJp ZCxFLmNsZWFuSWQ9Qy5jbGVhbklkLEUubGlzdD1DLmxpc3QsRS5saXN0SWRz PUMubGlzdElkcyxFLmdldEZyb21JZD1DLmdldEZyb21JZCxFLmdldEZyb21U cmFjZT1DLmdldEZyb21UcmFjZTt2YXIgUD10KCIuL2F1dG9yYW5nZSIpO0Uu Z2V0QXV0b1JhbmdlPVAuZ2V0QXV0b1JhbmdlLEUuZmluZEV4dHJlbWVzPVAu ZmluZEV4dHJlbWVzLEUuY29lcmNlUmVmPWZ1bmN0aW9uKHQsZSxyLG4sYSxp KXt2YXIgbz1uLmNoYXJBdChuLmxlbmd0aC0xKSxsPXIuX2Z1bGxMYXlvdXQu X3N1YnBsb3RzW28rImF4aXMiXSxjPW4rInJlZiIsdT17fTtyZXR1cm4gYXx8 KGE9bFswXXx8aSksaXx8KGk9YSksdVtjXT17dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOmwuY29uY2F0KGk/W2ldOltdKSxkZmx0OmF9LHMuY29lcmNl KHQsZSx1LGMpfSxFLmNvZXJjZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxyLG4s YSxpKXt2YXIgbyxsO2lmKCJwYXBlciI9PT1ufHwicGl4ZWwiPT09bilvPXMu ZW5zdXJlTnVtYmVyLGw9cihhLGkpO2Vsc2V7dmFyIGM9RS5nZXRGcm9tSWQo ZSxuKTtsPXIoYSxpPWMuZnJhY3Rpb24ycihpKSksbz1jLmNsZWFuUG9zfXRb YV09byhsKX0sRS5jbGVhblBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxyKXtyZXR1 cm4oInBhcGVyIj09PXJ8fCJwaXhlbCI9PT1yP3MuZW5zdXJlTnVtYmVyOkUu Z2V0RnJvbUlkKGUscikuY2xlYW5Qb3MpKHQpfSxFLnJlZHJhd0NvbXBvbmVu dHM9ZnVuY3Rpb24odCxlKXtlPWV8fEUubGlzdElkcyh0KTt2YXIgcj10Ll9m dWxsTGF5b3V0O2Z1bmN0aW9uIG4obixhLGkscyl7Zm9yKHZhciBsPW8uZ2V0 Q29tcG9uZW50TWV0aG9kKG4sYSksYz17fSx1PTA7dTxlLmxlbmd0aDt1Kysp Zm9yKHZhciBoPXJbRS5pZDJuYW1lKGVbdV0pXVtpXSxmPTA7ZjxoLmxlbmd0 aDtmKyspe3ZhciBwPWhbZl07aWYoIWNbcF0mJihsKHQscCksY1twXT0xLHMp KXJldHVybn19bigiYW5ub3RhdGlvbnMiLCJkcmF3T25lIiwiX2FubkluZGlj ZXMiKSxuKCJzaGFwZXMiLCJkcmF3T25lIiwiX3NoYXBlSW5kaWNlcyIpLG4o ImltYWdlcyIsImRyYXciLCJfaW1nSW5kaWNlcyIsITApfTt2YXIgTz1FLmdl dERhdGFDb252ZXJzaW9ucz1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpPSJ4 Ij09PXJ8fCJ5Ij09PXJ8fCJ6Ij09PXI/cjpuO2lmKEFycmF5LmlzQXJyYXko aSkpe2lmKGE9e3R5cGU6TChuKSxfY2F0ZWdvcmllczpbXX0sRS5zZXRDb252 ZXJ0KGEpLCJjYXRlZ29yeSI9PT1hLnR5cGUpZm9yKHZhciBvPTA7bzxuLmxl bmd0aDtvKyspYS5kMmMobltvXSl9ZWxzZSBhPUUuZ2V0RnJvbVRyYWNlKHQs ZSxpKTtyZXR1cm4gYT97ZDJjOmEuZDJjLGMyZDphLmMyZH06ImlkcyI9PT1p P3tkMmM6SSxjMmQ6SX06e2QyYzp6LGMyZDp6fX07ZnVuY3Rpb24geih0KXty ZXR1cm4rdH1mdW5jdGlvbiBJKHQpe3JldHVybiBTdHJpbmcodCl9RS5nZXRE YXRhVG9Db29yZEZ1bmM9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIE8odCxl LHIsbikuZDJjfSxFLmNvdW50ZXJMZXR0ZXI9ZnVuY3Rpb24odCl7dmFyIGU9 dC5jaGFyQXQoMCk7cmV0dXJuIngiPT09ZT8ieSI6InkiPT09ZT8ieCI6dm9p ZCAwfSxFLm1pbkR0aWNrPWZ1bmN0aW9uKHQsZSxyLG4pey0xPT09WyJsb2ci LCJjYXRlZ29yeSIsIm11bHRpY2F0ZWdvcnkiXS5pbmRleE9mKHQudHlwZSkm Jm4/dm9pZCAwPT09dC5fbWluRHRpY2s/KHQuX21pbkR0aWNrPWUsdC5fZm9y Y2VUaWNrMD1yKTp0Ll9taW5EdGljayYmKCh0Ll9taW5EdGljay9lKzFlLTYp JTE8MmUtNiYmKChyLXQuX2ZvcmNlVGljazApL2UlMSsxLjAwMDAwMSklMTwy ZS02Pyh0Ll9taW5EdGljaz1lLHQuX2ZvcmNlVGljazA9cik6KChlL3QuX21p bkR0aWNrKzFlLTYpJTE+MmUtNnx8KChyLXQuX2ZvcmNlVGljazApL3QuX21p bkR0aWNrJTErMS4wMDAwMDEpJTE+MmUtNikmJih0Ll9taW5EdGljaz0wKSk6 dC5fbWluRHRpY2s9MH0sRS5zYXZlUmFuZ2VJbml0aWFsPWZ1bmN0aW9uKHQs ZSl7Zm9yKHZhciByPUUubGlzdCh0LCIiLCEwKSxuPSExLGE9MDthPHIubGVu Z3RoO2ErKyl7dmFyIGk9clthXSxvPXZvaWQgMD09PWkuX3JhbmdlSW5pdGlh bCxzPW98fCEoaS5yYW5nZVswXT09PWkuX3JhbmdlSW5pdGlhbFswXSYmaS5y YW5nZVsxXT09PWkuX3JhbmdlSW5pdGlhbFsxXSk7KG8mJiExPT09aS5hdXRv cmFuZ2V8fGUmJnMpJiYoaS5fcmFuZ2VJbml0aWFsPWkucmFuZ2Uuc2xpY2Uo KSxuPSEwKX1yZXR1cm4gbn0sRS5zYXZlU2hvd1NwaWtlSW5pdGlhbD1mdW5j dGlvbih0LGUpe2Zvcih2YXIgcj1FLmxpc3QodCwiIiwhMCksbj0hMSxhPSJv biIsaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldLHM9dm9pZCAwPT09 by5fc2hvd1NwaWtlSW5pdGlhbCxsPXN8fCEoby5zaG93c3Bpa2VzPT09by5f c2hvd3NwaWtlcyk7KHN8fGUmJmwpJiYoby5fc2hvd1NwaWtlSW5pdGlhbD1v LnNob3dzcGlrZXMsbj0hMCksIm9uIiE9PWF8fG8uc2hvd3NwaWtlc3x8KGE9 Im9mZiIpfXJldHVybiB0Ll9mdWxsTGF5b3V0Ll9jYXJ0ZXNpYW5TcGlrZXNF bmFibGVkPWEsbn0sRS5hdXRvQmluPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXt2 YXIgbCxjPXMuYWdnTnVtcyhNYXRoLm1pbixudWxsLHQpLHU9cy5hZ2dOdW1z KE1hdGgubWF4LG51bGwsdCk7aWYoImNhdGVnb3J5Ij09PWUudHlwZXx8Im11 bHRpY2F0ZWdvcnkiPT09ZS50eXBlKXJldHVybntzdGFydDpjLS41LGVuZDp1 Ky41LHNpemU6TWF0aC5tYXgoMSxNYXRoLnJvdW5kKG8pfHwxKSxfZGF0YVNw YW46dS1jfTtpZihpfHwoaT1lLmNhbGVuZGFyKSxsPSJsb2ciPT09ZS50eXBl P3t0eXBlOiJsaW5lYXIiLHJhbmdlOltjLHVdfTp7dHlwZTplLnR5cGUscmFu Z2U6cy5zaW1wbGVNYXAoW2MsdV0sZS5jMnIsMCxpKSxjYWxlbmRhcjppfSxF LnNldENvbnZlcnQobCksbz1vJiZwLmR0aWNrKG8sbC50eXBlKSlsLmR0aWNr PW8sbC50aWNrMD1wLnRpY2swKHZvaWQgMCxsLnR5cGUsaSk7ZWxzZXt2YXIg aDtpZihyKWg9KHUtYykvcjtlbHNle3ZhciBmPXMuZGlzdGluY3RWYWxzKHQp LGQ9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhmLm1pbkRpZmYp L01hdGguTE4xMCkpLGc9ZCpzLnJvdW5kVXAoZi5taW5EaWZmL2QsWy45LDEu OSw0LjksOS45XSwhMCk7aD1NYXRoLm1heChnLDIqcy5zdGRldih0KS9NYXRo LnBvdyh0Lmxlbmd0aCxuPy4yNTouNCkpLGEoaCl8fChoPTEpfUUuYXV0b1Rp Y2tzKGwsaCl9dmFyIHYseT1sLmR0aWNrLHg9RS50aWNrSW5jcmVtZW50KEUu dGlja0ZpcnN0KGwpLHksInJldmVyc2UiLGkpO2lmKCJudW1iZXIiPT10eXBl b2YgeSl2PSh4PWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG89MCxzPTAsbD0w LGM9MDtmdW5jdGlvbiB1KGUpe3JldHVybigxKzEwMCooZS10KS9yLmR0aWNr KSUxMDA8Mn1mb3IodmFyIGg9MDtoPGUubGVuZ3RoO2grKyllW2hdJTE9PTA/ bCsrOmEoZVtoXSl8fGMrKyx1KGVbaF0pJiZvKyssdShlW2hdK3IuZHRpY2sv MikmJnMrKzt2YXIgZj1lLmxlbmd0aC1jO2lmKGw9PT1mJiYiZGF0ZSIhPT1y LnR5cGUpci5kdGljazwxP3Q9bi0uNSpyLmR0aWNrOih0LT0uNSkrci5kdGlj azxuJiYodCs9ci5kdGljayk7ZWxzZSBpZihzPC4xKmYmJihvPi4zKmZ8fHUo bil8fHUoaSkpKXt2YXIgcD1yLmR0aWNrLzI7dCs9dCtwPG4/cDotcH1yZXR1 cm4gdH0oeCx0LGwsYyx1KSkrKDErTWF0aC5mbG9vcigodS14KS95KSkqeTtl bHNlIGZvcigiTSI9PT1sLmR0aWNrLmNoYXJBdCgwKSYmKHg9ZnVuY3Rpb24o dCxlLHIsbixhKXt2YXIgaT1zLmZpbmRFeGFjdERhdGVzKGUsYSk7aWYoaS5l eGFjdERheXM+Ljgpe3ZhciBvPU51bWJlcihyLnN1YnN0cigxKSk7aS5leGFj dFllYXJzPi44JiZvJTEyPT0wP3Q9RS50aWNrSW5jcmVtZW50KHQsIk02Iiwi cmV2ZXJzZSIpKzEuNSptOmkuZXhhY3RNb250aHM+Ljg/dD1FLnRpY2tJbmNy ZW1lbnQodCwiTTEiLCJyZXZlcnNlIikrMTUuNSptOnQtPW0vMjt2YXIgbD1F LnRpY2tJbmNyZW1lbnQodCxyKTtpZihsPD1uKXJldHVybiBsfXJldHVybiB0 fSh4LHQseSxjLGkpKSx2PXgsMDt2PD11Oyl2PUUudGlja0luY3JlbWVudCh2 LHksITEsaSksMDtyZXR1cm57c3RhcnQ6ZS5jMnIoeCwwLGkpLGVuZDplLmMy cih2LDAsaSksc2l6ZTp5LF9kYXRhU3Bhbjp1LWN9fSxFLnByZXBUaWNrcz1m dW5jdGlvbih0KXt2YXIgZT1zLnNpbXBsZU1hcCh0LnJhbmdlLHQucjJsKTtp ZigiYXV0byI9PT10LnRpY2ttb2RlfHwhdC5kdGljayl7dmFyIHIsbj10Lm50 aWNrcztufHwoImNhdGVnb3J5Ij09PXQudHlwZXx8Im11bHRpY2F0ZWdvcnki PT09dC50eXBlPyhyPXQudGlja2ZvbnQ/MS4yKih0LnRpY2tmb250LnNpemV8 fDEyKToxNSxuPXQuX2xlbmd0aC9yKToocj0ieSI9PT10Ll9pZC5jaGFyQXQo MCk/NDA6ODAsbj1zLmNvbnN0cmFpbih0Ll9sZW5ndGgvciw0LDkpKzEpLCJy YWRpYWxheGlzIj09PXQuX25hbWUmJihuKj0yKSksImFycmF5Ij09PXQudGlj a21vZGUmJihuKj0xMDApLEUuYXV0b1RpY2tzKHQsTWF0aC5hYnMoZVsxXS1l WzBdKS9uKSx0Ll9taW5EdGljaz4wJiZ0LmR0aWNrPDIqdC5fbWluRHRpY2sm Jih0LmR0aWNrPXQuX21pbkR0aWNrLHQudGljazA9dC5sMnIodC5fZm9yY2VU aWNrMCkpfXQudGljazB8fCh0LnRpY2swPSJkYXRlIj09PXQudHlwZT8iMjAw MC0wMS0wMSI6MCksImRhdGUiPT09dC50eXBlJiZ0LmR0aWNrPC4xJiYodC5k dGljaz0uMSkscSh0KX0sRS5jYWxjVGlja3M9ZnVuY3Rpb24odCl7RS5wcmVw VGlja3ModCk7dmFyIGU9cy5zaW1wbGVNYXAodC5yYW5nZSx0LnIybCk7aWYo ImFycmF5Ij09PXQudGlja21vZGUpcmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBl PXQudGlja3ZhbHMscj10LnRpY2t0ZXh0LG49bmV3IEFycmF5KGUubGVuZ3Ro KSxhPXMuc2ltcGxlTWFwKHQucmFuZ2UsdC5yMmwpLGk9MS4wMDAxKmFbMF0t MWUtNCphWzFdLG89MS4wMDAxKmFbMV0tMWUtNCphWzBdLGw9TWF0aC5taW4o aSxvKSxjPU1hdGgubWF4KGksbyksdT0wO0FycmF5LmlzQXJyYXkocil8fChy PVtdKTt2YXIgaD0iY2F0ZWdvcnkiPT09dC50eXBlP3QuZDJsX25vYWRkOnQu ZDJsOyJsb2ciPT09dC50eXBlJiYiTCIhPT1TdHJpbmcodC5kdGljaykuY2hh ckF0KDApJiYodC5kdGljaz0iTCIrTWF0aC5wb3coMTAsTWF0aC5mbG9vcihN YXRoLm1pbih0LnJhbmdlWzBdLHQucmFuZ2VbMV0pKS0xKSk7Zm9yKHZhciBm PTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBwPWgoZVtmXSk7cD5sJiZwPGMmJih2 b2lkIDA9PT1yW2ZdP25bdV09RS50aWNrVGV4dCh0LHApOm5bdV09SCh0LHAs U3RyaW5nKHJbZl0pKSx1KyspfXU8ZS5sZW5ndGgmJm4uc3BsaWNlKHUsZS5s ZW5ndGgtdSk7cmV0dXJuIG59KHQpO3QuX3RtaW49RS50aWNrRmlyc3QodCk7 dmFyIHI9MS4wMDAxKmVbMF0tMWUtNCplWzFdLG49MS4wMDAxKmVbMV0tMWUt NCplWzBdLGk9ZVsxXTxlWzBdO2lmKHQuX3RtaW48ciE9PWkpcmV0dXJuW107 dmFyIG89W107ImNhdGVnb3J5IiE9PXQudHlwZSYmIm11bHRpY2F0ZWdvcnki IT09dC50eXBlfHwobj1pP01hdGgubWF4KC0uNSxuKTpNYXRoLm1pbih0Ll9j YXRlZ29yaWVzLmxlbmd0aC0uNSxuKSk7Zm9yKHZhciBsPSJsb2ciPT09dC50 eXBlJiYhKGEodC5kdGljayl8fCJMIj09PXQuZHRpY2suY2hhckF0KDApKSxj PW51bGwsdT1NYXRoLm1heCgxZTMsdC5fbGVuZ3RofHwwKSxoPXQuX3RtaW47 KGk/aD49bjpoPD1uKSYmIShvLmxlbmd0aD51fHxoPT09Yyk7aD1FLnRpY2tJ bmNyZW1lbnQoaCx0LmR0aWNrLGksdC5jYWxlbmRhcikpe2M9aDt2YXIgZj0h MTtsJiZoIT09KDB8aCkmJihmPSEwKSxvLnB1c2goe21pbm9yOmYsdmFsdWU6 aH0pfW90KHQpJiYzNjA9PT1NYXRoLmFicyhlWzFdLWVbMF0pJiZvLnBvcCgp LHQuX3RtYXg9KG9bby5sZW5ndGgtMV18fHt9KS52YWx1ZSx0Ll9wcmV2RGF0 ZUhlYWQ9IiIsdC5faW5DYWxjVGlja3M9ITA7Zm9yKHZhciBwPW5ldyBBcnJh eShvLmxlbmd0aCksZD0wO2Q8by5sZW5ndGg7ZCsrKXBbZF09RS50aWNrVGV4 dCh0LG9bZF0udmFsdWUsITEsb1tkXS5taW5vcik7cmV0dXJuIHQuX2luQ2Fs Y1RpY2tzPSExLHB9O3ZhciBEPVsyLDUsMTBdLFI9WzEsMiwzLDYsMTJdLEY9 WzEsMiw1LDEwLDE1LDMwXSxCPVsxLDIsMyw3LDE0XSxOPVstLjA0NiwwLC4z MDEsLjQ3NywuNjAyLC42OTksLjc3OCwuODQ1LC45MDMsLjk1NCwxXSxqPVst LjMwMSwwLC4zMDEsLjY5OSwxXSxWPVsxNSwzMCw0NSw5MCwxODBdO2Z1bmN0 aW9uIFUodCxlLHIpe3JldHVybiBlKnMucm91bmRVcCh0L2Uscil9ZnVuY3Rp b24gcSh0KXt2YXIgZT10LmR0aWNrO2lmKHQuX3RpY2tleHBvbmVudD0wLGEo ZSl8fCJzdHJpbmciPT10eXBlb2YgZXx8KGU9MSksImNhdGVnb3J5IiE9PXQu dHlwZSYmIm11bHRpY2F0ZWdvcnkiIT09dC50eXBlfHwodC5fdGlja3JvdW5k PW51bGwpLCJkYXRlIj09PXQudHlwZSl7dmFyIHI9dC5yMmwodC50aWNrMCks bj10LmwycihyKS5yZXBsYWNlKC8oXi18aSkvZywiIiksaT1uLmxlbmd0aDtp ZigiTSI9PT1TdHJpbmcoZSkuY2hhckF0KDApKWk+MTB8fCIwMS0wMSIhPT1u LnN1YnN0cig1KT90Ll90aWNrcm91bmQ9ImQiOnQuX3RpY2tyb3VuZD0rZS5z dWJzdHIoMSklMTI9PTA/InkiOiJtIjtlbHNlIGlmKGU+PW0mJmk8PTEwfHxl Pj0xNSptKXQuX3RpY2tyb3VuZD0iZCI7ZWxzZSBpZihlPj14JiZpPD0xNnx8 ZT49eSl0Ll90aWNrcm91bmQ9Ik0iO2Vsc2UgaWYoZT49YiYmaTw9MTl8fGU+ PXgpdC5fdGlja3JvdW5kPSJTIjtlbHNle3ZhciBvPXQubDJyKHIrZSkucmVw bGFjZSgvXi0vLCIiKS5sZW5ndGg7dC5fdGlja3JvdW5kPU1hdGgubWF4KGks byktMjAsdC5fdGlja3JvdW5kPDAmJih0Ll90aWNrcm91bmQ9NCl9fWVsc2Ug aWYoYShlKXx8IkwiPT09ZS5jaGFyQXQoMCkpe3ZhciBzPXQucmFuZ2UubWFw KHQucjJkfHxOdW1iZXIpO2EoZSl8fChlPU51bWJlcihlLnN1YnN0cigxKSkp LHQuX3RpY2tyb3VuZD0yLU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5M TjEwKy4wMSk7dmFyIGw9TWF0aC5tYXgoTWF0aC5hYnMoc1swXSksTWF0aC5h YnMoc1sxXSkpLGM9TWF0aC5mbG9vcihNYXRoLmxvZyhsKS9NYXRoLkxOMTAr LjAxKTtNYXRoLmFicyhjKT4zJiYoWSh0LmV4cG9uZW50Zm9ybWF0KSYmIVco Yyk/dC5fdGlja2V4cG9uZW50PTMqTWF0aC5yb3VuZCgoYy0xKS8zKTp0Ll90 aWNrZXhwb25lbnQ9Yyl9ZWxzZSB0Ll90aWNrcm91bmQ9bnVsbH1mdW5jdGlv biBIKHQsZSxyKXt2YXIgbj10LnRpY2tmb250fHx7fTtyZXR1cm57eDplLGR4 OjAsZHk6MCx0ZXh0OnJ8fCIiLGZvbnRTaXplOm4uc2l6ZSxmb250Om4uZmFt aWx5LGZvbnRDb2xvcjpuLmNvbG9yfX1FLmF1dG9UaWNrcz1mdW5jdGlvbih0 LGUpe3ZhciByO2Z1bmN0aW9uIG4odCl7cmV0dXJuIE1hdGgucG93KHQsTWF0 aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMTApKX1pZigiZGF0ZSI9PT10 LnR5cGUpe3QudGljazA9cy5kYXRlVGljazAodC5jYWxlbmRhcik7dmFyIGk9 MiplO2k+Zz8oZS89ZyxyPW4oMTApLHQuZHRpY2s9Ik0iKzEyKlUoZSxyLEQp KTppPnY/KGUvPXYsdC5kdGljaz0iTSIrVShlLDEsUikpOmk+bT8odC5kdGlj az1VKGUsbSxCKSx0LnRpY2swPXMuZGF0ZVRpY2swKHQuY2FsZW5kYXIsITAp KTppPnk/dC5kdGljaz1VKGUseSxSKTppPng/dC5kdGljaz1VKGUseCxGKTpp PmI/dC5kdGljaz1VKGUsYixGKToocj1uKDEwKSx0LmR0aWNrPVUoZSxyLEQp KX1lbHNlIGlmKCJsb2ciPT09dC50eXBlKXt0LnRpY2swPTA7dmFyIG89cy5z aW1wbGVNYXAodC5yYW5nZSx0LnIybCk7aWYoZT4uNyl0LmR0aWNrPU1hdGgu Y2VpbChlKTtlbHNlIGlmKE1hdGguYWJzKG9bMV0tb1swXSk8MSl7dmFyIGw9 MS41Kk1hdGguYWJzKChvWzFdLW9bMF0pL2UpO2U9TWF0aC5hYnMoTWF0aC5w b3coMTAsb1sxXSktTWF0aC5wb3coMTAsb1swXSkpL2wscj1uKDEwKSx0LmR0 aWNrPSJMIitVKGUscixEKX1lbHNlIHQuZHRpY2s9ZT4uMz8iRDIiOiJEMSJ9 ZWxzZSJjYXRlZ29yeSI9PT10LnR5cGV8fCJtdWx0aWNhdGVnb3J5Ij09PXQu dHlwZT8odC50aWNrMD0wLHQuZHRpY2s9TWF0aC5jZWlsKE1hdGgubWF4KGUs MSkpKTpvdCh0KT8odC50aWNrMD0wLHI9MSx0LmR0aWNrPVUoZSxyLFYpKToo dC50aWNrMD0wLHI9bigxMCksdC5kdGljaz1VKGUscixEKSk7aWYoMD09PXQu ZHRpY2smJih0LmR0aWNrPTEpLCFhKHQuZHRpY2spJiYic3RyaW5nIiE9dHlw ZW9mIHQuZHRpY2spe3ZhciBjPXQuZHRpY2s7dGhyb3cgdC5kdGljaz0xLCJh eC5kdGljayBlcnJvcjogIitTdHJpbmcoYyl9fSxFLnRpY2tJbmNyZW1lbnQ9 ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89cj8tMToxO2lmKGEoZSkpcmV0dXJu IHQrbyplO3ZhciBsPWUuY2hhckF0KDApLGM9bypOdW1iZXIoZS5zdWJzdHIo MSkpO2lmKCJNIj09PWwpcmV0dXJuIHMuaW5jcmVtZW50TW9udGgodCxjLGkp O2lmKCJMIj09PWwpcmV0dXJuIE1hdGgubG9nKE1hdGgucG93KDEwLHQpK2Mp L01hdGguTE4xMDtpZigiRCI9PT1sKXt2YXIgdT0iRDIiPT09ZT9qOk4saD10 Ky4wMSpvLGY9cy5yb3VuZFVwKHMubW9kKGgsMSksdSxyKTtyZXR1cm4gTWF0 aC5mbG9vcihoKStNYXRoLmxvZyhuLnJvdW5kKE1hdGgucG93KDEwLGYpLDEp KS9NYXRoLkxOMTB9dGhyb3cidW5yZWNvZ25pemVkIGR0aWNrICIrU3RyaW5n KGUpfSxFLnRpY2tGaXJzdD1mdW5jdGlvbih0KXt2YXIgZT10LnIybHx8TnVt YmVyLHI9cy5zaW1wbGVNYXAodC5yYW5nZSxlKSxpPXJbMV08clswXSxvPWk/ TWF0aC5mbG9vcjpNYXRoLmNlaWwsbD0xLjAwMDEqclswXS0xZS00KnJbMV0s Yz10LmR0aWNrLHU9ZSh0LnRpY2swKTtpZihhKGMpKXt2YXIgaD1vKChsLXUp L2MpKmMrdTtyZXR1cm4iY2F0ZWdvcnkiIT09dC50eXBlJiYibXVsdGljYXRl Z29yeSIhPT10LnR5cGV8fChoPXMuY29uc3RyYWluKGgsMCx0Ll9jYXRlZ29y aWVzLmxlbmd0aC0xKSksaH12YXIgZj1jLmNoYXJBdCgwKSxwPU51bWJlcihj LnN1YnN0cigxKSk7aWYoIk0iPT09Zil7Zm9yKHZhciBkLGcsdixtPTAseT11 O208MTA7KXtpZigoKGQ9RS50aWNrSW5jcmVtZW50KHksYyxpLHQuY2FsZW5k YXIpKS1sKSooeS1sKTw9MClyZXR1cm4gaT9NYXRoLm1pbih5LGQpOk1hdGgu bWF4KHksZCk7Zz0obC0oeStkKS8yKS8oZC15KSx2PWYrKE1hdGguYWJzKE1h dGgucm91bmQoZykpfHwxKSpwLHk9RS50aWNrSW5jcmVtZW50KHksdixnPDA/ IWk6aSx0LmNhbGVuZGFyKSxtKyt9cmV0dXJuIHMuZXJyb3IoInRpY2tGaXJz dCBkaWQgbm90IGNvbnZlcmdlIix0KSx5fWlmKCJMIj09PWYpcmV0dXJuIE1h dGgubG9nKG8oKE1hdGgucG93KDEwLGwpLXUpL3ApKnArdSkvTWF0aC5MTjEw O2lmKCJEIj09PWYpe3ZhciB4PSJEMiI9PT1jP2o6TixiPXMucm91bmRVcChz Lm1vZChsLDEpLHgsaSk7cmV0dXJuIE1hdGguZmxvb3IobCkrTWF0aC5sb2co bi5yb3VuZChNYXRoLnBvdygxMCxiKSwxKSkvTWF0aC5MTjEwfXRocm93InVu cmVjb2duaXplZCBkdGljayAiK1N0cmluZyhjKX0sRS50aWNrVGV4dD1mdW5j dGlvbih0LGUscixuKXt2YXIgaSxvPUgodCxlKSxsPSJhcnJheSI9PT10LnRp Y2ttb2RlLGM9cnx8bCx1PXQudHlwZSxoPSJjYXRlZ29yeSI9PT11P3QuZDJs X25vYWRkOnQuZDJsO2lmKGwmJkFycmF5LmlzQXJyYXkodC50aWNrdGV4dCkp e3ZhciBmPXMuc2ltcGxlTWFwKHQucmFuZ2UsdC5yMmwpLHA9TWF0aC5hYnMo ZlsxXS1mWzBdKS8xZTQ7Zm9yKGk9MDtpPHQudGlja3RleHQubGVuZ3RoJiYh KE1hdGguYWJzKGUtaCh0LnRpY2t2YWxzW2ldKSk8cCk7aSsrKTtpZihpPHQu dGlja3RleHQubGVuZ3RoKXJldHVybiBvLnRleHQ9U3RyaW5nKHQudGlja3Rl eHRbaV0pLG99ZnVuY3Rpb24gZChuKXtpZih2b2lkIDA9PT1uKXJldHVybiEw O2lmKHIpcmV0dXJuIm5vbmUiPT09bjt2YXIgYT17Zmlyc3Q6dC5fdG1pbixs YXN0OnQuX3RtYXh9W25dO3JldHVybiJhbGwiIT09biYmZSE9PWF9dmFyIGc9 cj8ibmV2ZXIiOiJub25lIiE9PXQuZXhwb25lbnRmb3JtYXQmJmQodC5zaG93 ZXhwb25lbnQpPyJoaWRlIjoiIjtpZigiZGF0ZSI9PT11P2Z1bmN0aW9uKHQs ZSxyLG4pe3ZhciBpPXQuX3RpY2tyb3VuZCxvPXImJnQuaG92ZXJmb3JtYXR8 fEUuZ2V0VGlja0Zvcm1hdCh0KTtuJiYoaT1hKGkpPzQ6e3k6Im0iLG06ImQi LGQ6Ik0iLE06IlMiLFM6NH1baV0pO3ZhciBsLGM9cy5mb3JtYXREYXRlKGUu eCxvLGksdC5fZGF0ZUZvcm1hdCx0LmNhbGVuZGFyLHQuX2V4dHJhRm9ybWF0 KSx1PWMuaW5kZXhPZigiXG4iKTstMSE9PXUmJihsPWMuc3Vic3RyKHUrMSks Yz1jLnN1YnN0cigwLHUpKTtuJiYoIjAwOjAwOjAwIj09PWN8fCIwMDowMCI9 PT1jPyhjPWwsbD0iIik6OD09PWMubGVuZ3RoJiYoYz1jLnJlcGxhY2UoLzow MCQvLCIiKSkpO2wmJihyPyJkIj09PWk/Yys9IiwgIitsOmM9bCsoYz8iLCAi K2M6IiIpOnQuX2luQ2FsY1RpY2tzJiZsPT09dC5fcHJldkRhdGVIZWFkfHwo Yys9Ijxicj4iK2wsdC5fcHJldkRhdGVIZWFkPWwpKTtlLnRleHQ9Y30odCxv LHIsYyk6ImxvZyI9PT11P2Z1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG89dC5k dGljayxsPWUueCxjPXQudGlja2Zvcm1hdCx1PSJzdHJpbmciPT10eXBlb2Yg byYmby5jaGFyQXQoMCk7Im5ldmVyIj09PWkmJihpPSIiKTtuJiYiTCIhPT11 JiYobz0iTDMiLHU9IkwiKTtpZihjfHwiTCI9PT11KWUudGV4dD1YKE1hdGgu cG93KDEwLGwpLHQsaSxuKTtlbHNlIGlmKGEobyl8fCJEIj09PXUmJnMubW9k KGwrLjAxLDEpPC4xKXt2YXIgaD1NYXRoLnJvdW5kKGwpLGY9TWF0aC5hYnMo aCkscD10LmV4cG9uZW50Zm9ybWF0OyJwb3dlciI9PT1wfHxZKHApJiZXKGgp PyhlLnRleHQ9MD09PWg/MToxPT09aD8iMTAiOiIxMDxzdXA+IisoaD4xPyIi Ol8pK2YrIjwvc3VwPiIsZS5mb250U2l6ZSo9MS4yNSk6KCJlIj09PXB8fCJF Ij09PXApJiZmPjI/ZS50ZXh0PSIxIitwKyhoPjA/IisiOl8pK2Y6KGUudGV4 dD1YKE1hdGgucG93KDEwLGwpLHQsIiIsImZha2Vob3ZlciIpLCJEMSI9PT1v JiYieSI9PT10Ll9pZC5jaGFyQXQoMCkmJihlLmR5LT1lLmZvbnRTaXplLzYp KX1lbHNle2lmKCJEIiE9PXUpdGhyb3cidW5yZWNvZ25pemVkIGR0aWNrICIr U3RyaW5nKG8pO2UudGV4dD1TdHJpbmcoTWF0aC5yb3VuZChNYXRoLnBvdygx MCxzLm1vZChsLDEpKSkpLGUuZm9udFNpemUqPS43NX1pZigiRDEiPT09dC5k dGljayl7dmFyIGQ9U3RyaW5nKGUudGV4dCkuY2hhckF0KDApOyIwIiE9PWQm JiIxIiE9PWR8fCgieSI9PT10Ll9pZC5jaGFyQXQoMCk/ZS5keC09ZS5mb250 U2l6ZS80OihlLmR5Kz1lLmZvbnRTaXplLzIsZS5keCs9KHQucmFuZ2VbMV0+ dC5yYW5nZVswXT8xOi0xKSplLmZvbnRTaXplKihsPDA/LjU6LjI1KSkpfX0o dCxvLDAsYyxnKToiY2F0ZWdvcnkiPT09dT9mdW5jdGlvbih0LGUpe3ZhciBy PXQuX2NhdGVnb3JpZXNbTWF0aC5yb3VuZChlLngpXTt2b2lkIDA9PT1yJiYo cj0iIik7ZS50ZXh0PVN0cmluZyhyKX0odCxvKToibXVsdGljYXRlZ29yeSI9 PT11P2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj1NYXRoLnJvdW5kKGUueCksYT10 Ll9jYXRlZ29yaWVzW25dfHxbXSxpPXZvaWQgMD09PWFbMV0/IiI6U3RyaW5n KGFbMV0pLG89dm9pZCAwPT09YVswXT8iIjpTdHJpbmcoYVswXSk7cj9lLnRl eHQ9bysiIC0gIitpOihlLnRleHQ9aSxlLnRleHQyPW8pfSh0LG8scik6b3Qo dCk/ZnVuY3Rpb24odCxlLHIsbixhKXtpZigicmFkaWFucyIhPT10LnRoZXRh dW5pdHx8cillLnRleHQ9WChlLngsdCxhLG4pO2Vsc2V7dmFyIGk9ZS54LzE4 MDtpZigwPT09aSllLnRleHQ9IjAiO2Vsc2V7dmFyIG89ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZSh0LGUpe3JldHVybiBNYXRoLmFicyh0LWUpPD0xZS02fXZh ciByPWZ1bmN0aW9uKHQpe3ZhciByPTE7Zm9yKDshZShNYXRoLnJvdW5kKHQq cikvcix0KTspcio9MTA7cmV0dXJuIHJ9KHQpLG49dCpyLGE9TWF0aC5hYnMo ZnVuY3Rpb24gdChyLG4pe3JldHVybiBlKG4sMCk/cjp0KG4sciVuKX0obixy KSk7cmV0dXJuW01hdGgucm91bmQobi9hKSxNYXRoLnJvdW5kKHIvYSldfShp KTtpZihvWzFdPj0xMDApZS50ZXh0PVgocy5kZWcycmFkKGUueCksdCxhLG4p O2Vsc2V7dmFyIGw9ZS54PDA7MT09PW9bMV0/MT09PW9bMF0/ZS50ZXh0PSJc dTAzYzAiOmUudGV4dD1vWzBdKyJcdTAzYzAiOmUudGV4dD1bIjxzdXA+Iixv WzBdLCI8L3N1cD4iLCJcdTIwNDQiLCI8c3ViPiIsb1sxXSwiPC9zdWI+Iiwi XHUwM2MwIl0uam9pbigiIiksbCYmKGUudGV4dD1fK2UudGV4dCl9fX19KHQs byxyLGMsZyk6ZnVuY3Rpb24odCxlLHIsbixhKXsibmV2ZXIiPT09YT9hPSIi OiJhbGwiPT09dC5zaG93ZXhwb25lbnQmJk1hdGguYWJzKGUueC90LmR0aWNr KTwxZS02JiYoYT0iaGlkZSIpO2UudGV4dD1YKGUueCx0LGEsbil9KHQsbyww LGMsZyksbnx8KHQudGlja3ByZWZpeCYmIWQodC5zaG93dGlja3ByZWZpeCkm JihvLnRleHQ9dC50aWNrcHJlZml4K28udGV4dCksdC50aWNrc3VmZml4JiYh ZCh0LnNob3d0aWNrc3VmZml4KSYmKG8udGV4dCs9dC50aWNrc3VmZml4KSks ImJvdW5kYXJpZXMiPT09dC50aWNrc29ufHx0LnNob3dkaXZpZGVycyl7dmFy IHY9ZnVuY3Rpb24oZSl7dmFyIHI9dC5sMnAoZSk7cmV0dXJuIHI+PTAmJnI8 PXQuX2xlbmd0aD9lOm51bGx9O28ueGJuZD1bdihvLngtLjUpLHYoby54K3Qu ZHRpY2stLjUpXX1yZXR1cm4gb30sRS5ob3ZlckxhYmVsVGV4dD1mdW5jdGlv bih0LGUscil7aWYociE9PXcmJnIhPT1lKXJldHVybiBFLmhvdmVyTGFiZWxU ZXh0KHQsZSkrIiAtICIrRS5ob3ZlckxhYmVsVGV4dCh0LHIpO3ZhciBuPSJs b2ciPT09dC50eXBlJiZlPD0wLGE9RS50aWNrVGV4dCh0LHQuYzJsKG4/LWU6 ZSksImhvdmVyIikudGV4dDtyZXR1cm4gbj8wPT09ZT8iMCI6XythOmF9O3Zh ciBHPVsiZiIsInAiLCJuIiwiXHUwM2JjIiwibSIsIiIsImsiLCJNIiwiRyIs IlQiXTtmdW5jdGlvbiBZKHQpe3JldHVybiJTSSI9PT10fHwiQiI9PT10fWZ1 bmN0aW9uIFcodCl7cmV0dXJuIHQ+MTR8fHQ8LTE1fWZ1bmN0aW9uIFgodCxl LHIsbil7dmFyIGk9dDwwLG89ZS5fdGlja3JvdW5kLGw9cnx8ZS5leHBvbmVu dGZvcm1hdHx8IkIiLGM9ZS5fdGlja2V4cG9uZW50LHU9RS5nZXRUaWNrRm9y bWF0KGUpLGg9ZS5zZXBhcmF0ZXRob3VzYW5kcztpZihuKXt2YXIgZj17ZXhw b25lbnRmb3JtYXQ6bCxkdGljazoibm9uZSI9PT1lLnNob3dleHBvbmVudD9l LmR0aWNrOmEodCkmJk1hdGguYWJzKHQpfHwxLHJhbmdlOiJub25lIj09PWUu c2hvd2V4cG9uZW50P2UucmFuZ2UubWFwKGUucjJkKTpbMCx0fHwxXX07cShm KSxvPShOdW1iZXIoZi5fdGlja3JvdW5kKXx8MCkrNCxjPWYuX3RpY2tleHBv bmVudCxlLmhvdmVyZm9ybWF0JiYodT1lLmhvdmVyZm9ybWF0KX1pZih1KXJl dHVybiBlLl9udW1Gb3JtYXQodSkodCkucmVwbGFjZSgvLS9nLF8pO3ZhciBw LGQ9TWF0aC5wb3coMTAsLW8pLzI7aWYoIm5vbmUiPT09bCYmKGM9MCksKHQ9 TWF0aC5hYnModCkpPGQpdD0iMCIsaT0hMTtlbHNle2lmKHQrPWQsYyYmKHQq PU1hdGgucG93KDEwLC1jKSxvKz1jKSwwPT09byl0PVN0cmluZyhNYXRoLmZs b29yKHQpKTtlbHNlIGlmKG88MCl7dD0odD1TdHJpbmcoTWF0aC5yb3VuZCh0 KSkpLnN1YnN0cigwLHQubGVuZ3RoK28pO2Zvcih2YXIgZz1vO2c8MDtnKysp dCs9IjAifWVsc2V7dmFyIHY9KHQ9U3RyaW5nKHQpKS5pbmRleE9mKCIuIikr MTt2JiYodD10LnN1YnN0cigwLHYrbykucmVwbGFjZSgvXC4/MCskLywiIikp fXQ9cy5udW1TZXBhcmF0ZSh0LGUuX3NlcGFyYXRvcnMsaCl9YyYmImhpZGUi IT09bCYmKFkobCkmJlcoYykmJihsPSJwb3dlciIpLHA9YzwwP18rLWM6InBv d2VyIiE9PWw/IisiK2M6U3RyaW5nKGMpLCJlIj09PWx8fCJFIj09PWw/dCs9 bCtwOiJwb3dlciI9PT1sP3QrPSJceGQ3MTA8c3VwPiIrcCsiPC9zdXA+Ijoi QiI9PT1sJiY5PT09Yz90Kz0iQiI6WShsKSYmKHQrPUdbYy8zKzVdKSk7cmV0 dXJuIGk/Xyt0OnR9ZnVuY3Rpb24gWih0LGUpe2Zvcih2YXIgcj1bXSxuPXt9 LGE9MDthPGUubGVuZ3RoO2ErKyl7dmFyIGk9ZVthXTtuW2kudGV4dDJdP25b aS50ZXh0Ml0ucHVzaChpLngpOm5baS50ZXh0Ml09W2kueF19Zm9yKHZhciBv IGluIG4pci5wdXNoKEgodCxzLmludGVycChuW29dLC41KSxvKSk7cmV0dXJu IHJ9ZnVuY3Rpb24gSih0KXtyZXR1cm5bdC50ZXh0LHQueCx0LmF4SW5mbyx0 LmZvbnQsdC5mb250U2l6ZSx0LmZvbnRDb2xvcl0uam9pbigiXyIpfWZ1bmN0 aW9uIEsodCl7dmFyIGU9dC50aXRsZS5mb250LnNpemUscj0odC50aXRsZS50 ZXh0Lm1hdGNoKGwuQlJfVEFHX0FMTCl8fFtdKS5sZW5ndGg7cmV0dXJuIHQu dGl0bGUuaGFzT3duUHJvcGVydHkoInN0YW5kb2ZmIik/cj9lKihNK3IqQSk6 ZSpNOnI/ZSoocisxKSpBOmV9ZnVuY3Rpb24gUSh0LGUpe3ZhciByPXQubDJw KGUpO3JldHVybiByPjEmJnI8dC5fbGVuZ3RoLTF9ZnVuY3Rpb24gJCh0KXt2 YXIgZT1uLnNlbGVjdCh0KSxyPWUuc2VsZWN0KCIudGV4dC1tYXRoLWdyb3Vw Iik7cmV0dXJuIHIuZW1wdHkoKT9lLnNlbGVjdCgidGV4dCIpOnJ9ZnVuY3Rp b24gdHQodCl7cmV0dXJuIHQuX2lkKyIuYXV0b21hcmdpbiJ9ZnVuY3Rpb24g ZXQodCl7cmV0dXJuIHR0KHQpKyIubWlycm9yIn1mdW5jdGlvbiBydCh0KXty ZXR1cm4gdC5faWQrIi5yYW5nZXNsaWRlciJ9ZnVuY3Rpb24gbnQodCxlKXtm b3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyktMT09PXQuaW5kZXhPZihlW3Jd KSYmdC5wdXNoKGVbcl0pfWZ1bmN0aW9uIGF0KHQsZSxyKXt2YXIgbixhLGk9 W10sbz1bXSxsPXQubGF5b3V0O2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspaS5w dXNoKEUuZ2V0RnJvbUlkKHQsZVtuXSkpO2ZvcihuPTA7bjxyLmxlbmd0aDtu Kyspby5wdXNoKEUuZ2V0RnJvbUlkKHQscltuXSkpO3ZhciBjPU9iamVjdC5r ZXlzKGYpLHU9WyJhbmNob3IiLCJkb21haW4iLCJvdmVybGF5aW5nIiwicG9z aXRpb24iLCJzaWRlIiwidGlja2FuZ2xlIiwiZWRpdFR5cGUiXSxoPVsibGlu ZWFyIiwibG9nIl07Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7dmFyIHA9Y1tu XSxkPWlbMF1bcF0sZz1vWzBdW3BdLHY9ITAsbT0hMSx5PSExO2lmKCJfIiE9 PXAuY2hhckF0KDApJiYiZnVuY3Rpb24iIT10eXBlb2YgZCYmLTE9PT11Lmlu ZGV4T2YocCkpe2ZvcihhPTE7YTxpLmxlbmd0aCYmdjthKyspe3ZhciB4PWlb YV1bcF07InR5cGUiPT09cCYmLTEhPT1oLmluZGV4T2YoZCkmJi0xIT09aC5p bmRleE9mKHgpJiZkIT09eD9tPSEwOnghPT1kJiYodj0hMSl9Zm9yKGE9MTth PG8ubGVuZ3RoJiZ2O2ErKyl7dmFyIGI9b1thXVtwXTsidHlwZSI9PT1wJiYt MSE9PWguaW5kZXhPZihnKSYmLTEhPT1oLmluZGV4T2YoYikmJmchPT1iP3k9 ITA6b1thXVtwXSE9PWcmJih2PSExKX12JiYobSYmKGxbaVswXS5fbmFtZV0u dHlwZT0ibGluZWFyIikseSYmKGxbb1swXS5fbmFtZV0udHlwZT0ibGluZWFy IiksaXQobCxwLGksbyx0Ll9mdWxsTGF5b3V0Ll9kZmx0VGl0bGUpKX19Zm9y KG49MDtuPHQuX2Z1bGxMYXlvdXQuYW5ub3RhdGlvbnMubGVuZ3RoO24rKyl7 dmFyIF89dC5fZnVsbExheW91dC5hbm5vdGF0aW9uc1tuXTstMSE9PWUuaW5k ZXhPZihfLnhyZWYpJiYtMSE9PXIuaW5kZXhPZihfLnlyZWYpJiZzLnN3YXBB dHRycyhsLmFubm90YXRpb25zW25dLFsiPyJdKX19ZnVuY3Rpb24gaXQodCxl LHIsbixhKXt2YXIgaSxvPXMubmVzdGVkUHJvcGVydHksbD1vKHRbclswXS5f bmFtZV0sZSkuZ2V0KCksYz1vKHRbblswXS5fbmFtZV0sZSkuZ2V0KCk7Zm9y KCJ0aXRsZSI9PT1lJiYobCYmbC50ZXh0PT09YS54JiYobC50ZXh0PWEueSks YyYmYy50ZXh0PT09YS55JiYoYy50ZXh0PWEueCkpLGk9MDtpPHIubGVuZ3Ro O2krKylvKHQscltpXS5fbmFtZSsiLiIrZSkuc2V0KGMpO2ZvcihpPTA7aTxu Lmxlbmd0aDtpKyspbyh0LG5baV0uX25hbWUrIi4iK2UpLnNldChsKX1mdW5j dGlvbiBvdCh0KXtyZXR1cm4iYW5ndWxhcmF4aXMiPT09dC5faWR9RS5nZXRU aWNrRm9ybWF0PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhLGksbyxzLGw7ZnVu Y3Rpb24gYyh0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQ/dDpOdW1iZXIo dC5yZXBsYWNlKCJNIiwiIikpKnZ9ZnVuY3Rpb24gdSh0LGUpe3ZhciByPVsi TCIsIkQiXTtpZih0eXBlb2YgdD09dHlwZW9mIGUpe2lmKCJudW1iZXIiPT10 eXBlb2YgdClyZXR1cm4gdC1lO3ZhciBuPXIuaW5kZXhPZih0LmNoYXJBdCgw KSksYT1yLmluZGV4T2YoZS5jaGFyQXQoMCkpO3JldHVybiBuPT09YT9OdW1i ZXIodC5yZXBsYWNlKC8oTHxEKS9nLCIiKSktTnVtYmVyKGUucmVwbGFjZSgv KEx8RCkvZywiIikpOm4tYX1yZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQ/MTot MX1mdW5jdGlvbiBoKHQsZSl7dmFyIHI9bnVsbD09PWVbMF0sbj1udWxsPT09 ZVsxXSxhPXUodCxlWzBdKT49MCxpPXUodCxlWzFdKTw9MDtyZXR1cm4ocnx8 YSkmJihufHxpKX1pZih0LnRpY2tmb3JtYXRzdG9wcyYmdC50aWNrZm9ybWF0 c3RvcHMubGVuZ3RoPjApc3dpdGNoKHQudHlwZSl7Y2FzZSJkYXRlIjpjYXNl ImxpbmVhciI6Zm9yKGU9MDtlPHQudGlja2Zvcm1hdHN0b3BzLmxlbmd0aDtl KyspaWYoKG49dC50aWNrZm9ybWF0c3RvcHNbZV0pLmVuYWJsZWQmJihhPXQu ZHRpY2ssaT1uLmR0aWNrcmFuZ2Usbz12b2lkIDAscz12b2lkIDAsbD12b2lk IDAsbz1jfHxmdW5jdGlvbih0KXtyZXR1cm4gdH0scz1pWzBdLGw9aVsxXSwo IXMmJiJudW1iZXIiIT10eXBlb2Ygc3x8byhzKTw9byhhKSkmJighbCYmIm51 bWJlciIhPXR5cGVvZiBsfHxvKGwpPj1vKGEpKSkpe3I9bjticmVha31icmVh aztjYXNlImxvZyI6Zm9yKGU9MDtlPHQudGlja2Zvcm1hdHN0b3BzLmxlbmd0 aDtlKyspaWYoKG49dC50aWNrZm9ybWF0c3RvcHNbZV0pLmVuYWJsZWQmJmgo dC5kdGljayxuLmR0aWNrcmFuZ2UpKXtyPW47YnJlYWt9fXJldHVybiByP3Iu dmFsdWU6dC50aWNrZm9ybWF0fSxFLmdldFN1YnBsb3RzPWZ1bmN0aW9uKHQs ZSl7dmFyIHI9dC5fZnVsbExheW91dC5fc3VicGxvdHMsbj1yLmNhcnRlc2lh bi5jb25jYXQoci5nbDJkfHxbXSksYT1lP0UuZmluZFN1YnBsb3RzV2l0aEF4 aXMobixlKTpuO3JldHVybiBhLnNvcnQoZnVuY3Rpb24odCxlKXt2YXIgcj10 LnN1YnN0cigxKS5zcGxpdCgieSIpLG49ZS5zdWJzdHIoMSkuc3BsaXQoInki KTtyZXR1cm4gclswXT09PW5bMF0/K3JbMV0tK25bMV06K3JbMF0tK25bMF19 KSxhfSxFLmZpbmRTdWJwbG90c1dpdGhBeGlzPWZ1bmN0aW9uKHQsZSl7Zm9y KHZhciByPW5ldyBSZWdFeHAoIngiPT09ZS5faWQuY2hhckF0KDApPyJeIitl Ll9pZCsieSI6ZS5faWQrIiQiKSxuPVtdLGE9MDthPHQubGVuZ3RoO2ErKyl7 dmFyIGk9dFthXTtyLnRlc3QoaSkmJm4ucHVzaChpKX1yZXR1cm4gbn0sRS5t YWtlQ2xpcFBhdGhzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7 aWYoIWUuX2hhc09ubHlMYXJnZVNwbG9tcyl7dmFyIHIsYSxpPXtfb2Zmc2V0 OjAsX2xlbmd0aDplLndpZHRoLF9pZDoiIn0sbz17X29mZnNldDowLF9sZW5n dGg6ZS5oZWlnaHQsX2lkOiIifSxzPUUubGlzdCh0LCJ4IiwhMCksbD1FLmxp c3QodCwieSIsITApLGM9W107Zm9yKHI9MDtyPHMubGVuZ3RoO3IrKylmb3Io Yy5wdXNoKHt4OnNbcl0seTpvfSksYT0wO2E8bC5sZW5ndGg7YSsrKTA9PT1y JiZjLnB1c2goe3g6aSx5OmxbYV19KSxjLnB1c2goe3g6c1tyXSx5OmxbYV19 KTt2YXIgdT1lLl9jbGlwcy5zZWxlY3RBbGwoIi5heGVzY2xpcCIpLmRhdGEo YyxmdW5jdGlvbih0KXtyZXR1cm4gdC54Ll9pZCt0LnkuX2lkfSk7dS5lbnRl cigpLmFwcGVuZCgiY2xpcFBhdGgiKS5jbGFzc2VkKCJheGVzY2xpcCIsITAp LmF0dHIoImlkIixmdW5jdGlvbih0KXtyZXR1cm4iY2xpcCIrZS5fdWlkK3Qu eC5faWQrdC55Ll9pZH0pLmFwcGVuZCgicmVjdCIpLHUuZXhpdCgpLnJlbW92 ZSgpLHUuZWFjaChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5zZWxlY3Qo InJlY3QiKS5hdHRyKHt4OnQueC5fb2Zmc2V0fHwwLHk6dC55Ll9vZmZzZXR8 fDAsd2lkdGg6dC54Ll9sZW5ndGh8fDEsaGVpZ2h0OnQueS5fbGVuZ3RofHwx fSl9KX19LEUuZHJhdz1mdW5jdGlvbih0LGUscil7dmFyIG49dC5fZnVsbExh eW91dDsicmVkcmF3Ij09PWUmJm4uX3BhcGVyLnNlbGVjdEFsbCgiZy5zdWJw bG90IikuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9bi5fcGxvdHNb ZV0sYT1yLnhheGlzLGk9ci55YXhpcztyLnhheGlzbGF5ZXIuc2VsZWN0QWxs KCIuIithLl9pZCsidGljayIpLnJlbW92ZSgpLHIueWF4aXNsYXllci5zZWxl Y3RBbGwoIi4iK2kuX2lkKyJ0aWNrIikucmVtb3ZlKCksci54YXhpc2xheWVy LnNlbGVjdEFsbCgiLiIrYS5faWQrInRpY2syIikucmVtb3ZlKCksci55YXhp c2xheWVyLnNlbGVjdEFsbCgiLiIraS5faWQrInRpY2syIikucmVtb3ZlKCks ci54YXhpc2xheWVyLnNlbGVjdEFsbCgiLiIrYS5faWQrImRpdmlkZXIiKS5y ZW1vdmUoKSxyLnlheGlzbGF5ZXIuc2VsZWN0QWxsKCIuIitpLl9pZCsiZGl2 aWRlciIpLnJlbW92ZSgpLHIuZ3JpZGxheWVyJiZyLmdyaWRsYXllci5zZWxl Y3RBbGwoInBhdGgiKS5yZW1vdmUoKSxyLnplcm9saW5lbGF5ZXImJnIuemVy b2xpbmVsYXllci5zZWxlY3RBbGwoInBhdGgiKS5yZW1vdmUoKSxuLl9pbmZv bGF5ZXIuc2VsZWN0KCIuZy0iK2EuX2lkKyJ0aXRsZSIpLnJlbW92ZSgpLG4u X2luZm9sYXllci5zZWxlY3QoIi5nLSIraS5faWQrInRpdGxlIikucmVtb3Zl KCl9KTt2YXIgYT1lJiYicmVkcmF3IiE9PWU/ZTpFLmxpc3RJZHModCk7cmV0 dXJuIHMuc3luY09yQXN5bmMoYS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1 bmN0aW9uKCl7aWYoZSl7dmFyIG49RS5nZXRGcm9tSWQodCxlKSxhPUUuZHJh d09uZSh0LG4scik7cmV0dXJuIG4uX3I9bi5yYW5nZS5zbGljZSgpLG4uX3Js PXMuc2ltcGxlTWFwKG4uX3Isbi5yMmwpLGF9fX0pKX0sRS5kcmF3T25lPWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbixhLGw7cj1yfHx7fSxlLnNldFNjYWxlKCk7 dmFyIGY9dC5fZnVsbExheW91dCxwPWUuX2lkLGQ9cC5jaGFyQXQoMCksZz1F LmNvdW50ZXJMZXR0ZXIocCksdj1mLl9wbG90c1tlLl9tYWluU3VicGxvdF07 aWYodil7dmFyIG09dltkKyJheGlzbGF5ZXIiXSx5PWUuX21haW5MaW5lUG9z aXRpb24seD1lLl9tYWluTWlycm9yUG9zaXRpb24sYj1lLl92YWxzPUUuY2Fs Y1RpY2tzKGUpLF89W2UubWlycm9yLHkseF0uam9pbigiXyIpO2ZvcihuPTA7 bjxiLmxlbmd0aDtuKyspYltuXS5heEluZm89XztlLl9zZWxlY3Rpb25zPXt9 LGUuX3RpY2tBbmdsZXMmJihlLl9wcmV2VGlja0FuZ2xlcz1lLl90aWNrQW5n bGVzKSxlLl90aWNrQW5nbGVzPXt9LGUuX2RlcHRoPW51bGw7dmFyIHc9e307 aWYoZS52aXNpYmxlKXt2YXIgayxULE09RS5tYWtlVHJhbnNGbihlKTtpZigi Ym91bmRhcmllcyI9PT1lLnRpY2tzb24pe3ZhciBMPWZ1bmN0aW9uKHQsZSl7 dmFyIHIsbj1bXSxhPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54Ym5kW2VdO251 bGwhPT1yJiZuLnB1c2gocy5leHRlbmRGbGF0KHt9LHQse3g6cn0pKX07aWYo ZS5sZW5ndGgpe2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspYShlW3JdLDApO2Eo ZVtyLTFdLDEpfXJldHVybiBufSgwLGIpO1Q9RS5jbGlwRW5kcyhlLEwpLGs9 Imluc2lkZSI9PT1lLnRpY2tzP1Q6TH1lbHNlIFQ9RS5jbGlwRW5kcyhlLGIp LGs9Imluc2lkZSI9PT1lLnRpY2tzP1Q6Yjt2YXIgQz1lLl9ncmlkVmFscz1U LFA9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9W10saT1mdW5jdGlvbih0LGUp e3ZhciByPXQueGJuZFtlXTtudWxsIT09ciYmYS5wdXNoKHMuZXh0ZW5kRmxh dCh7fSx0LHt4OnJ9KSl9O2lmKHQuc2hvd2RpdmlkZXJzJiZlLmxlbmd0aCl7 Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG89ZVtyXTtvLnRleHQyIT09 biYmaShvLDApLG49by50ZXh0Mn1pKGVbci0xXSwxKX1yZXR1cm4gYX0oZSxi KTtpZighZi5faGFzT25seUxhcmdlU3Bsb21zKXt2YXIgTz1lLl9zdWJwbG90 c1dpdGgsej17fTtmb3Iobj0wO248Ty5sZW5ndGg7bisrKXthPU9bbl07dmFy IEk9KGw9Zi5fcGxvdHNbYV0pW2crImF4aXMiXSxEPUkuX21haW5BeGlzLl9p ZDtpZigheltEXSl7eltEXT0xO3ZhciBSPSJ4Ij09PWQ/Ik0wLCIrSS5fb2Zm c2V0KyJ2IitJLl9sZW5ndGg6Ik0iK0kuX29mZnNldCsiLDBoIitJLl9sZW5n dGg7RS5kcmF3R3JpZCh0LGUse3ZhbHM6Qyxjb3VudGVyQXhpczpJLGxheWVy OmwuZ3JpZGxheWVyLnNlbGVjdCgiLiIrcCkscGF0aDpSLHRyYW5zRm46TX0p LEUuZHJhd1plcm9MaW5lKHQsZSx7Y291bnRlckF4aXM6SSxsYXllcjpsLnpl cm9saW5lbGF5ZXIscGF0aDpSLHRyYW5zRm46TX0pfX19dmFyIEY9RS5nZXRU aWNrU2lnbnMoZSksQj1bXTtpZihlLnRpY2tzKXt2YXIgTixqLFYsVT1FLm1h a2VUaWNrUGF0aChlLHksRlsyXSk7aWYoZS5fYW5jaG9yQXhpcyYmZS5taXJy b3ImJiEwIT09ZS5taXJyb3I/KE49RS5tYWtlVGlja1BhdGgoZSx4LEZbM10p LGo9VStOKTooTj0iIixqPVUpLGUuc2hvd2RpdmlkZXJzJiYib3V0c2lkZSI9 PT1lLnRpY2tzJiYiYm91bmRhcmllcyI9PT1lLnRpY2tzb24pe3ZhciBxPXt9 O2ZvcihuPTA7bjxQLmxlbmd0aDtuKyspcVtQW25dLnhdPTE7Vj1mdW5jdGlv bih0KXtyZXR1cm4gcVt0LnhdP046an19ZWxzZSBWPWo7RS5kcmF3VGlja3Mo dCxlLHt2YWxzOmssbGF5ZXI6bSxwYXRoOlYsdHJhbnNGbjpNfSksImFsbHRp Y2tzIj09PWUubWlycm9yJiYoQj1PYmplY3Qua2V5cyhlLl9saW5lcG9zaXRp b25zfHx7fSkpfWZvcihuPTA7bjxCLmxlbmd0aDtuKyspe2E9QltuXSxsPWYu X3Bsb3RzW2FdO3ZhciBIPWUuX2xpbmVwb3NpdGlvbnNbYV18fFtdLEc9RS5t YWtlVGlja1BhdGgoZSxIWzBdLEZbMF0pK0UubWFrZVRpY2tQYXRoKGUsSFsx XSxGWzFdKTtFLmRyYXdUaWNrcyh0LGUse3ZhbHM6ayxsYXllcjpsW2QrImF4 aXNsYXllciJdLHBhdGg6Ryx0cmFuc0ZuOk19KX12YXIgWT1bXTtpZihZLnB1 c2goZnVuY3Rpb24oKXtyZXR1cm4gRS5kcmF3TGFiZWxzKHQsZSx7dmFsczpi LGxheWVyOm0sdHJhbnNGbjpNLGxhYmVsRm5zOkUubWFrZUxhYmVsRm5zKGUs eSl9KX0pLCJtdWx0aWNhdGVnb3J5Ij09PWUudHlwZSl7dmFyIFc9e3g6Mix5 OjEwfVtkXTtZLnB1c2goZnVuY3Rpb24oKXt2YXIgcj17eDoiaGVpZ2h0Iix5 OiJ3aWR0aCJ9W2RdLG49USgpW3JdK1crKGUuX3RpY2tBbmdsZXNbcCsidGlj ayJdP2UudGlja2ZvbnQuc2l6ZSpBOjApO3JldHVybiBFLmRyYXdMYWJlbHMo dCxlLHt2YWxzOlooZSxiKSxsYXllcjptLGNsczpwKyJ0aWNrMiIscmVwb3Np dGlvbk9uVXBkYXRlOiEwLHNlY29uZGFyeTohMCx0cmFuc0ZuOk0sbGFiZWxG bnM6RS5tYWtlTGFiZWxGbnMoZSx5K24qRls0XSl9KX0pLFkucHVzaChmdW5j dGlvbigpe3JldHVybiBlLl9kZXB0aD1GWzRdKihRKCJ0aWNrMiIpW2Uuc2lk ZV0teSksZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUuX2lkKyJkaXZpZGVyIixh PXIudmFscyxpPXIubGF5ZXIuc2VsZWN0QWxsKCJwYXRoLiIrbikuZGF0YShh LEopO2kuZXhpdCgpLnJlbW92ZSgpLGkuZW50ZXIoKS5pbnNlcnQoInBhdGgi LCI6Zmlyc3QtY2hpbGQiKS5jbGFzc2VkKG4sMSkuY2xhc3NlZCgiY3Jpc3Ai LDEpLmNhbGwodS5zdHJva2UsZS5kaXZpZGVyY29sb3IpLnN0eWxlKCJzdHJv a2Utd2lkdGgiLGguY3Jpc3BSb3VuZCh0LGUuZGl2aWRlcndpZHRoLDEpKyJw eCIpLGkuYXR0cigidHJhbnNmb3JtIixyLnRyYW5zRm4pLmF0dHIoImQiLHIu cGF0aCl9KHQsZSx7dmFsczpQLGxheWVyOm0scGF0aDpFLm1ha2VUaWNrUGF0 aChlLHksRls0XSxlLl9kZXB0aCksdHJhbnNGbjpNfSl9KX1lbHNlIGUudGl0 bGUuaGFzT3duUHJvcGVydHkoInN0YW5kb2ZmIikmJlkucHVzaChmdW5jdGlv bigpe2UuX2RlcHRoPUZbNF0qKFEoKVtlLnNpZGVdLXkpfSk7dmFyIFg9by5n ZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwiaXNWaXNpYmxlIiko ZSk7cmV0dXJuIFkucHVzaChmdW5jdGlvbigpe3ZhciByLG4sYSxzLGw9ZS5z aWRlLmNoYXJBdCgwKSxjPVNbZS5zaWRlXS5jaGFyQXQoMCksdT1FLmdldFB4 UG9zaXRpb24odCxlKSxoPSJvdXRzaWRlIj09PWUudGlja3M/ZS50aWNrbGVu OjA7aWYoKGUuYXV0b21hcmdpbnx8WCkmJigibXVsdGljYXRlZ29yeSI9PT1l LnR5cGU/cj1RKCJ0aWNrMiIpOihyPVEoKSwieCI9PT1kJiYiYiI9PT1sJiYo ZS5fZGVwdGg9TWF0aC5tYXgoci53aWR0aD4wP3IuYm90dG9tLXU6MCxoKSkp KSxlLmF1dG9tYXJnaW4pe249e3g6MCx5OjAscjowLGw6MCx0OjAsYjowfTt2 YXIgcD1bMCwxXTtpZigieCI9PT1kKXtpZigiYiI9PT1sP25bbF09ZS5fZGVw dGg6KG5bbF09ZS5fZGVwdGg9TWF0aC5tYXgoci53aWR0aD4wP3Utci50b3A6 MCxoKSxwLnJldmVyc2UoKSksci53aWR0aD4wKXt2YXIgdj1yLnJpZ2h0LShl Ll9vZmZzZXQrZS5fbGVuZ3RoKTt2PjAmJihuLnhyPTEsbi5yPXYpO3ZhciBt PWUuX29mZnNldC1yLmxlZnQ7bT4wJiYobi54bD0wLG4ubD1tKX19ZWxzZSBp ZigibCI9PT1sP25bbF09ZS5fZGVwdGg9TWF0aC5tYXgoci5oZWlnaHQ+MD91 LXIubGVmdDowLGgpOihuW2xdPWUuX2RlcHRoPU1hdGgubWF4KHIuaGVpZ2h0 PjA/ci5yaWdodC11OjAsaCkscC5yZXZlcnNlKCkpLHIuaGVpZ2h0PjApe3Zh ciB5PXIuYm90dG9tLShlLl9vZmZzZXQrZS5fbGVuZ3RoKTt5PjAmJihuLnli PTAsbi5iPXkpO3ZhciB4PWUuX29mZnNldC1yLnRvcDt4PjAmJihuLnl0PTEs bi50PXgpfW5bZ109ImZyZWUiPT09ZS5hbmNob3I/ZS5wb3NpdGlvbjplLl9h bmNob3JBeGlzLmRvbWFpbltwWzBdXSxlLnRpdGxlLnRleHQhPT1mLl9kZmx0 VGl0bGVbZF0mJihuW2xdKz1LKGUpKyhlLnRpdGxlLnN0YW5kb2ZmfHwwKSks ZS5taXJyb3ImJiJmcmVlIiE9PWUuYW5jaG9yJiYoKGE9e3g6MCx5OjAscjow LGw6MCx0OjAsYjowfSlbY109ZS5saW5ld2lkdGgsZS5taXJyb3ImJiEwIT09 ZS5taXJyb3ImJihhW2NdKz1oKSwhMD09PWUubWlycm9yfHwidGlja3MiPT09 ZS5taXJyb3I/YVtnXT1lLl9hbmNob3JBeGlzLmRvbWFpbltwWzFdXToiYWxs IiE9PWUubWlycm9yJiYiYWxsdGlja3MiIT09ZS5taXJyb3J8fChhW2ddPVtl Ll9jb3VudGVyRG9tYWluTWluLGUuX2NvdW50ZXJEb21haW5NYXhdW3BbMV1d KSl9WCYmKHM9by5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwi YXV0b01hcmdpbk9wdHMiKSh0LGUpKSxpLmF1dG9NYXJnaW4odCx0dChlKSxu KSxpLmF1dG9NYXJnaW4odCxldChlKSxhKSxpLmF1dG9NYXJnaW4odCxydChl KSxzKX0pLHIuc2tpcFRpdGxlfHxYJiYiYm90dG9tIj09PWUuc2lkZXx8WS5w dXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10 Ll9mdWxsTGF5b3V0LGE9ZS5faWQsaT1hLmNoYXJBdCgwKSxvPWUudGl0bGUu Zm9udC5zaXplO2lmKGUudGl0bGUuaGFzT3duUHJvcGVydHkoInN0YW5kb2Zm Iikpcj1lLl9kZXB0aCtlLnRpdGxlLnN0YW5kb2ZmK0soZSk7ZWxzZXtpZigi bXVsdGljYXRlZ29yeSI9PT1lLnR5cGUpcj1lLl9kZXB0aDtlbHNle3I9MTAr MS41Km8rKGUubGluZXdpZHRoP2UubGluZXdpZHRoLTE6MCl9cis9IngiPT09 aT8idG9wIj09PWUuc2lkZT9vKihlLnNob3d0aWNrbGFiZWxzPzE6MCk6byoo ZS5zaG93dGlja2xhYmVscz8xLjU6LjUpOiJyaWdodCI9PT1lLnNpZGU/byoo ZS5zaG93dGlja2xhYmVscz8xOi41KTpvKihlLnNob3d0aWNrbGFiZWxzPy41 OjApfXZhciBzLGwsdSxmLHA9RS5nZXRQeFBvc2l0aW9uKHQsZSk7IngiPT09 aT8obD1lLl9vZmZzZXQrZS5fbGVuZ3RoLzIsdT0idG9wIj09PWUuc2lkZT9w LXI6cCtyKToodT1lLl9vZmZzZXQrZS5fbGVuZ3RoLzIsbD0icmlnaHQiPT09 ZS5zaWRlP3ArcjpwLXIscz17cm90YXRlOiItOTAiLG9mZnNldDowfSk7aWYo Im11bHRpY2F0ZWdvcnkiIT09ZS50eXBlKXt2YXIgZD1lLl9zZWxlY3Rpb25z W2UuX2lkKyJ0aWNrIl07aWYoZj17c2VsZWN0aW9uOmQsc2lkZTplLnNpZGV9 LGQmJmQubm9kZSgpJiZkLm5vZGUoKS5wYXJlbnROb2RlKXt2YXIgZz1oLmdl dFRyYW5zbGF0ZShkLm5vZGUoKS5wYXJlbnROb2RlKTtmLm9mZnNldExlZnQ9 Zy54LGYub2Zmc2V0VG9wPWcueX1lLnRpdGxlLmhhc093blByb3BlcnR5KCJz dGFuZG9mZiIpJiYoZi5wYWQ9MCl9cmV0dXJuIGMuZHJhdyh0LGErInRpdGxl Iix7cHJvcENvbnRhaW5lcjplLHByb3BOYW1lOmUuX25hbWUrIi50aXRsZS50 ZXh0IixwbGFjZWhvbGRlcjpuLl9kZmx0VGl0bGVbaV0sYXZvaWQ6Zix0cmFu c2Zvcm06cyxhdHRyaWJ1dGVzOnt4OmwseTp1LCJ0ZXh0LWFuY2hvciI6Im1p ZGRsZSJ9fSl9KHQsZSl9KSxzLnN5bmNPckFzeW5jKFkpfX1mdW5jdGlvbiBR KHQpe3ZhciByPXArKHR8fCJ0aWNrIik7cmV0dXJuIHdbcl18fCh3W3JdPWZ1 bmN0aW9uKHQsZSl7dmFyIHIsbixhLGk7dC5fc2VsZWN0aW9uc1tlXS5zaXpl KCk/KHI9MS8wLG49LTEvMCxhPTEvMCxpPS0xLzAsdC5fc2VsZWN0aW9uc1tl XS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9JCh0aGlzKSxlPWguYkJveCh0Lm5v ZGUoKS5wYXJlbnROb2RlKTtyPU1hdGgubWluKHIsZS50b3ApLG49TWF0aC5t YXgobixlLmJvdHRvbSksYT1NYXRoLm1pbihhLGUubGVmdCksaT1NYXRoLm1h eChpLGUucmlnaHQpfSkpOihyPTAsbj0wLGE9MCxpPTApO3JldHVybnt0b3A6 cixib3R0b206bixsZWZ0OmEscmlnaHQ6aSxoZWlnaHQ6bi1yLHdpZHRoOmkt YX19KGUscikpLHdbcl19fSxFLmdldFRpY2tTaWducz1mdW5jdGlvbih0KXt2 YXIgZT10Ll9pZC5jaGFyQXQoMCkscj17eDoidG9wIix5OiJyaWdodCJ9W2Vd LG49dC5zaWRlPT09cj8xOi0xLGE9Wy0xLDEsbiwtbl07cmV0dXJuImluc2lk ZSIhPT10LnRpY2tzPT0oIngiPT09ZSkmJihhPWEubWFwKGZ1bmN0aW9uKHQp e3JldHVybi10fSkpLHQuc2lkZSYmYS5wdXNoKHtsOi0xLHQ6LTEscjoxLGI6 MX1bdC5zaWRlLmNoYXJBdCgwKV0pLGF9LEUubWFrZVRyYW5zRm49ZnVuY3Rp b24odCl7dmFyIGU9dC5faWQuY2hhckF0KDApLHI9dC5fb2Zmc2V0O3JldHVy biJ4Ij09PWU/ZnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiKyhyK3Qu bDJwKGUueCkpKyIsMCkifTpmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRl KDAsIisocit0LmwycChlLngpKSsiKSJ9fSxFLm1ha2VUaWNrUGF0aD1mdW5j dGlvbih0LGUscixuKXtuPXZvaWQgMCE9PW4/bjp0LnRpY2tsZW47dmFyIGE9 dC5faWQuY2hhckF0KDApLGk9KHQubGluZXdpZHRofHwxKS8yO3JldHVybiJ4 Ij09PWE/Ik0wLCIrKGUraSpyKSsidiIrbipyOiJNIisoZStpKnIpKyIsMGgi K24qcn0sRS5tYWtlTGFiZWxGbnM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQu X2lkLmNoYXJBdCgwKSxpPSJib3VuZGFyaWVzIiE9PXQudGlja3NvbiYmIm91 dHNpZGUiPT09dC50aWNrcyxvPTAsbD0wO2lmKGkmJihvKz10LnRpY2tsZW4p LHImJiJvdXRzaWRlIj09PXQudGlja3Mpe3ZhciBjPXMuZGVnMnJhZChyKTtv PXQudGlja2xlbipNYXRoLmNvcyhjKSsxLGw9dC50aWNrbGVuKk1hdGguc2lu KGMpfXQuc2hvd3RpY2tsYWJlbHMmJihpfHx0LnNob3dsaW5lKSYmKG8rPS4y KnQudGlja2ZvbnQuc2l6ZSk7dmFyIHUsaCxmLHAsZD17bGFiZWxTdGFuZG9m ZjpvKz0odC5saW5ld2lkdGh8fDEpLzIsbGFiZWxTaGlmdDpsfTtyZXR1cm4i eCI9PT1uPyhwPSJib3R0b20iPT09dC5zaWRlPzE6LTEsdT1sKnAsaD1lK28q cCxmPSJib3R0b20iPT09dC5zaWRlPzE6LS4yLGQueEZuPWZ1bmN0aW9uKHQp e3JldHVybiB0LmR4K3V9LGQueUZuPWZ1bmN0aW9uKHQpe3JldHVybiB0LmR5 K2grdC5mb250U2l6ZSpmfSxkLmFuY2hvckZuPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGEoZSkmJjAhPT1lJiYxODAhPT1lP2UqcDwwPyJlbmQiOiJzdGFydCI6 Im1pZGRsZSJ9LGQuaGVpZ2h0Rm49ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBy PC02MHx8cj42MD8tLjUqbjoidG9wIj09PXQuc2lkZT8tbjowfSk6InkiPT09 biYmKHA9InJpZ2h0Ij09PXQuc2lkZT8xOi0xLHU9byxoPS1sKnAsZj05MD09 PU1hdGguYWJzKHQudGlja2FuZ2xlKT8uNTowLGQueEZuPWZ1bmN0aW9uKHQp e3JldHVybiB0LmR4K2UrKHUrdC5mb250U2l6ZSpmKSpwfSxkLnlGbj1mdW5j dGlvbih0KXtyZXR1cm4gdC5keStoK3QuZm9udFNpemUqVH0sZC5hbmNob3JG bj1mdW5jdGlvbihlLHIpe3JldHVybiBhKHIpJiY5MD09PU1hdGguYWJzKHIp PyJtaWRkbGUiOiJyaWdodCI9PT10LnNpZGU/InN0YXJ0IjoiZW5kIn0sZC5o ZWlnaHRGbj1mdW5jdGlvbihlLHIsbil7cmV0dXJuKHIqPSJsZWZ0Ij09PXQu c2lkZT8xOi0xKTwtMzA/LW46cjwzMD8tLjUqbjowfSksZH0sRS5kcmF3VGlj a3M9ZnVuY3Rpb24odCxlLHIpe3I9cnx8e307dmFyIG49ZS5faWQrInRpY2si LGE9ci5sYXllci5zZWxlY3RBbGwoInBhdGguIituKS5kYXRhKGUudGlja3M/ ci52YWxzOltdLEopO2EuZXhpdCgpLnJlbW92ZSgpLGEuZW50ZXIoKS5hcHBl bmQoInBhdGgiKS5jbGFzc2VkKG4sMSkuY2xhc3NlZCgidGlja3MiLDEpLmNs YXNzZWQoImNyaXNwIiwhMSE9PXIuY3Jpc3ApLmNhbGwodS5zdHJva2UsZS50 aWNrY29sb3IpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGguY3Jpc3BSb3VuZCh0 LGUudGlja3dpZHRoLDEpKyJweCIpLmF0dHIoImQiLHIucGF0aCksYS5hdHRy KCJ0cmFuc2Zvcm0iLHIudHJhbnNGbil9LEUuZHJhd0dyaWQ9ZnVuY3Rpb24o dCxlLHIpe3I9cnx8e307dmFyIG49ZS5faWQrImdyaWQiLGE9ci52YWxzLGk9 ci5jb3VudGVyQXhpcztpZighMT09PWUuc2hvd2dyaWQpYT1bXTtlbHNlIGlm KGkmJkUuc2hvdWxkU2hvd1plcm9MaW5lKHQsZSxpKSlmb3IodmFyIG89ImFy cmF5Ij09PWUudGlja21vZGUscz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgbD1h W3NdLng7aWYobz8hbDpNYXRoLmFicyhsKTxlLmR0aWNrLzEwMCl7aWYoYT1h LnNsaWNlKDAscykuY29uY2F0KGEuc2xpY2UocysxKSksIW8pYnJlYWs7cy0t fX12YXIgYz1yLmxheWVyLnNlbGVjdEFsbCgicGF0aC4iK24pLmRhdGEoYSxK KTtjLmV4aXQoKS5yZW1vdmUoKSxjLmVudGVyKCkuYXBwZW5kKCJwYXRoIiku Y2xhc3NlZChuLDEpLmNsYXNzZWQoImNyaXNwIiwhMSE9PXIuY3Jpc3ApLGUu X2d3PWguY3Jpc3BSb3VuZCh0LGUuZ3JpZHdpZHRoLDEpLGMuYXR0cigidHJh bnNmb3JtIixyLnRyYW5zRm4pLmF0dHIoImQiLHIucGF0aCkuY2FsbCh1LnN0 cm9rZSxlLmdyaWRjb2xvcnx8IiNkZGQiKS5zdHlsZSgic3Ryb2tlLXdpZHRo IixlLl9ndysicHgiKSwiZnVuY3Rpb24iPT10eXBlb2Ygci5wYXRoJiZjLmF0 dHIoImQiLHIucGF0aCl9LEUuZHJhd1plcm9MaW5lPWZ1bmN0aW9uKHQsZSxy KXtyPXJ8fHI7dmFyIG49ZS5faWQrInpsIixhPUUuc2hvdWxkU2hvd1plcm9M aW5lKHQsZSxyLmNvdW50ZXJBeGlzKSxpPXIubGF5ZXIuc2VsZWN0QWxsKCJw YXRoLiIrbikuZGF0YShhP1t7eDowLGlkOmUuX2lkfV06W10pO2kuZXhpdCgp LnJlbW92ZSgpLGkuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKG4s MSkuY2xhc3NlZCgiemwiLDEpLmNsYXNzZWQoImNyaXNwIiwhMSE9PXIuY3Jp c3ApLmVhY2goZnVuY3Rpb24oKXtyLmxheWVyLnNlbGVjdEFsbCgicGF0aCIp LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gQy5pZFNvcnQodC5pZCxlLmlk KX0pfSksaS5hdHRyKCJ0cmFuc2Zvcm0iLHIudHJhbnNGbikuYXR0cigiZCIs ci5wYXRoKS5jYWxsKHUuc3Ryb2tlLGUuemVyb2xpbmVjb2xvcnx8dS5kZWZh dWx0TGluZSkuc3R5bGUoInN0cm9rZS13aWR0aCIsaC5jcmlzcFJvdW5kKHQs ZS56ZXJvbGluZXdpZHRoLGUuX2d3fHwxKSsicHgiKX0sRS5kcmF3TGFiZWxz PWZ1bmN0aW9uKHQsZSxyKXtyPXJ8fHt9O3ZhciBpPXQuX2Z1bGxMYXlvdXQs bz1lLl9pZCxjPW8uY2hhckF0KDApLHU9ci5jbHN8fG8rInRpY2siLGY9ci52 YWxzLHA9ci5sYWJlbEZucyxkPXIuc2Vjb25kYXJ5PzA6ZS50aWNrYW5nbGUs Zz0oZS5fcHJldlRpY2tBbmdsZXN8fHt9KVt1XSx2PXIubGF5ZXIuc2VsZWN0 QWxsKCJnLiIrdSkuZGF0YShlLnNob3d0aWNrbGFiZWxzP2Y6W10sSiksbT1b XTtmdW5jdGlvbiB5KHQsZSl7dC5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBpPW4u c2VsZWN0KHRoaXMpLG89aS5zZWxlY3QoIi50ZXh0LW1hdGgtZ3JvdXAiKSxz PXAuYW5jaG9yRm4odCxlKSxjPXIudHJhbnNGbi5jYWxsKGkubm9kZSgpLHQp KyhhKGUpJiYwIT0rZT8iIHJvdGF0ZSgiK2UrIiwiK3AueEZuKHQpKyIsIiso cC55Rm4odCktdC5mb250U2l6ZS8yKSsiKSI6IiIpLHU9bC5saW5lQ291bnQo aSksZj1BKnQuZm9udFNpemUsZD1wLmhlaWdodEZuKHQsYShlKT8rZTowLCh1 LTEpKmYpO2lmKGQmJihjKz0iIHRyYW5zbGF0ZSgwLCAiK2QrIikiKSxvLmVt cHR5KCkpaS5zZWxlY3QoInRleHQiKS5hdHRyKHt0cmFuc2Zvcm06YywidGV4 dC1hbmNob3IiOnN9KTtlbHNle3ZhciBnPWguYkJveChvLm5vZGUoKSkud2lk dGgqe2VuZDotLjUsc3RhcnQ6LjV9W3NdO28uYXR0cigidHJhbnNmb3JtIixj KyhnPyJ0cmFuc2xhdGUoIitnKyIsMCkiOiIiKSl9fSl9di5lbnRlcigpLmFw cGVuZCgiZyIpLmNsYXNzZWQodSwxKS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0 ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9 bi5zZWxlY3QodGhpcyksYT10Ll9wcm9taXNlcy5sZW5ndGg7ci5jYWxsKGwu cG9zaXRpb25UZXh0LHAueEZuKGUpLHAueUZuKGUpKS5jYWxsKGguZm9udCxl LmZvbnQsZS5mb250U2l6ZSxlLmZvbnRDb2xvcikudGV4dChlLnRleHQpLmNh bGwobC5jb252ZXJ0VG9Uc3BhbnMsdCksdC5fcHJvbWlzZXNbYV0/bS5wdXNo KHQuX3Byb21pc2VzLnBvcCgpLnRoZW4oZnVuY3Rpb24oKXt5KHIsZCl9KSk6 eShyLGQpfSksdi5leGl0KCkucmVtb3ZlKCksci5yZXBvc2l0aW9uT25VcGRh dGUmJnYuZWFjaChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5zZWxlY3Qo InRleHQiKS5jYWxsKGwucG9zaXRpb25UZXh0LHAueEZuKHQpLHAueUZuKHQp KX0pLHkodixnKzE/ZzpkKTt2YXIgeD1udWxsO2UuX3NlbGVjdGlvbnMmJihl Ll9zZWxlY3Rpb25zW3VdPXYpO3ZhciBiPVtmdW5jdGlvbigpe3JldHVybiBt Lmxlbmd0aCYmUHJvbWlzZS5hbGwobSl9XTtlLmF1dG9tYXJnaW4mJmkuX3Jl ZHJhd0Zyb21BdXRvTWFyZ2luQ291bnQmJjkwPT09Zz8oeD05MCxiLnB1c2go ZnVuY3Rpb24oKXt5KHYsZyl9KSk6Yi5wdXNoKGZ1bmN0aW9uKCl7aWYoeSh2 LGQpLGYubGVuZ3RoJiYieCI9PT1jJiYhYShkKSYmKCJsb2ciIT09ZS50eXBl fHwiRCIhPT1TdHJpbmcoZS5kdGljaykuY2hhckF0KDApKSl7eD0wO3ZhciB0 LG49MCxpPVtdO2lmKHYuZWFjaChmdW5jdGlvbih0KXtuPU1hdGgubWF4KG4s dC5mb250U2l6ZSk7dmFyIHI9ZS5sMnAodC54KSxhPSQodGhpcyksbz1oLmJC b3goYS5ub2RlKCkpO2kucHVzaCh7dG9wOjAsYm90dG9tOjEwLGhlaWdodDox MCxsZWZ0OnItby53aWR0aC8yLHJpZ2h0OnIrby53aWR0aC8yKzIsd2lkdGg6 by53aWR0aCsyfSl9KSwiYm91bmRhcmllcyIhPT1lLnRpY2tzb24mJiFlLnNo b3dkaXZpZGVyc3x8ci5zZWNvbmRhcnkpe3ZhciBvPWYubGVuZ3RoLGw9TWF0 aC5hYnMoKGZbby0xXS54LWZbMF0ueCkqZS5fbSkvKG8tMSk8Mi41Km58fCJt dWx0aWNhdGVnb3J5Ij09PWUudHlwZTtmb3IodD0wO3Q8aS5sZW5ndGgtMTt0 KyspaWYocy5iQm94SW50ZXJzZWN0KGlbdF0saVt0KzFdKSl7eD1sPzkwOjMw O2JyZWFrfX1lbHNle3ZhciB1PTI7Zm9yKGUudGlja3MmJih1Kz1lLnRpY2t3 aWR0aC8yKSx0PTA7dDxpLmxlbmd0aDt0Kyspe3ZhciBwPWZbdF0ueGJuZCxn PWlbdF07aWYobnVsbCE9PXBbMF0mJmcubGVmdC1lLmwycChwWzBdKTx1fHxu dWxsIT09cFsxXSYmZS5sMnAocFsxXSktZy5yaWdodDx1KXt4PTkwO2JyZWFr fX19eCYmeSh2LHgpfX0pLGUuX3RpY2tBbmdsZXMmJmIucHVzaChmdW5jdGlv bigpe2UuX3RpY2tBbmdsZXNbdV09bnVsbD09PXg/YShkKT9kOjA6eH0pO3Zh ciBfPXMuc3luY09yQXN5bmMoYik7cmV0dXJuIF8mJl8udGhlbiYmdC5fcHJv bWlzZXMucHVzaChfKSxffSxFLmdldFB4UG9zaXRpb249ZnVuY3Rpb24odCxl KXt2YXIgcixuPXQuX2Z1bGxMYXlvdXQuX3NpemUsYT1lLl9pZC5jaGFyQXQo MCksaT1lLnNpZGU7cmV0dXJuImZyZWUiIT09ZS5hbmNob3I/cj1lLl9hbmNo b3JBeGlzOiJ4Ij09PWE/cj17X29mZnNldDpuLnQrKDEtKGUucG9zaXRpb258 fDApKSpuLmgsX2xlbmd0aDowfToieSI9PT1hJiYocj17X29mZnNldDpuLmwr KGUucG9zaXRpb258fDApKm4udyxfbGVuZ3RoOjB9KSwidG9wIj09PWl8fCJs ZWZ0Ij09PWk/ci5fb2Zmc2V0OiJib3R0b20iPT09aXx8InJpZ2h0Ij09PWk/ ci5fb2Zmc2V0K3IuX2xlbmd0aDp2b2lkIDB9LEUuc2hvdWxkU2hvd1plcm9M aW5lPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1zLnNpbXBsZU1hcChlLnJhbmdl LGUucjJsKTtyZXR1cm4gblswXSpuWzFdPD0wJiZlLnplcm9saW5lJiYoImxp bmVhciI9PT1lLnR5cGV8fCItIj09PWUudHlwZSkmJihRKGUsMCl8fCFmdW5j dGlvbih0LGUscixuKXt2YXIgYT1yLl9tYWluQXhpcztpZighYSlyZXR1cm47 dmFyIGk9dC5fZnVsbExheW91dCxvPWUuX2lkLmNoYXJBdCgwKSxzPUUuY291 bnRlckxldHRlcihlLl9pZCksbD1lLl9vZmZzZXQrKE1hdGguYWJzKG5bMF0p PE1hdGguYWJzKG5bMV0pPT0oIngiPT09byk/MDplLl9sZW5ndGgpO2Z1bmN0 aW9uIGModCl7aWYoIXQuc2hvd2xpbmV8fCF0LmxpbmV3aWR0aClyZXR1cm4h MTt2YXIgcj1NYXRoLm1heCgodC5saW5ld2lkdGgrZS56ZXJvbGluZXdpZHRo KS8yLDEpO2Z1bmN0aW9uIG4odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0 JiZNYXRoLmFicyh0LWwpPHJ9aWYobih0Ll9tYWluTGluZVBvc2l0aW9uKXx8 bih0Ll9tYWluTWlycm9yUG9zaXRpb24pKXJldHVybiEwO3ZhciBhPXQuX2xp bmVwb3NpdGlvbnN8fHt9O2Zvcih2YXIgaSBpbiBhKWlmKG4oYVtpXVswXSl8 fG4oYVtpXVsxXSkpcmV0dXJuITB9dmFyIHU9aS5fcGxvdHNbci5fbWFpblN1 YnBsb3RdO2lmKCEodS5tYWlucGxvdGluZm98fHUpLm92ZXJsYXlzLmxlbmd0 aClyZXR1cm4gYyhyKTtmb3IodmFyIGg9RS5saXN0KHQscyksZj0wO2Y8aC5s ZW5ndGg7ZisrKXt2YXIgcD1oW2ZdO2lmKHAuX21haW5BeGlzPT09YSYmYyhw KSlyZXR1cm4hMH19KHQsZSxyLG4pfHxmdW5jdGlvbih0LGUpe2Zvcih2YXIg cj10Ll9mdWxsRGF0YSxuPWUuX21haW5TdWJwbG90LGE9ZS5faWQuY2hhckF0 KDApLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIHM9cltpXTtpZighMD09PXMu dmlzaWJsZSYmcy54YXhpcytzLnlheGlzPT09bil7aWYoby50cmFjZUlzKHMs ImJhci1saWtlIikmJnMub3JpZW50YXRpb249PT17eDoiaCIseToidiJ9W2Fd KXJldHVybiEwO2lmKHMuZmlsbCYmcy5maWxsLmNoYXJBdChzLmZpbGwubGVu Z3RoLTEpPT09YSlyZXR1cm4hMH19cmV0dXJuITF9KHQsZSkpfSxFLmNsaXBF bmRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKGUp e3JldHVybiBRKHQsZS54KX0pfSxFLmFsbG93QXV0b01hcmdpbj1mdW5jdGlv bih0KXtmb3IodmFyIGU9RS5saXN0KHQsIiIsITApLHI9MDtyPGUubGVuZ3Ro O3IrKyl7dmFyIG49ZVtyXTtuLmF1dG9tYXJnaW4mJihpLmFsbG93QXV0b01h cmdpbih0LHR0KG4pKSxuLm1pcnJvciYmaS5hbGxvd0F1dG9NYXJnaW4odCxl dChuKSkpLG8uZ2V0Q29tcG9uZW50TWV0aG9kKCJyYW5nZXNsaWRlciIsImlz VmlzaWJsZSIpKG4pJiZpLmFsbG93QXV0b01hcmdpbih0LHJ0KG4pKX19LEUu c3dhcD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1mdW5jdGlvbih0LGUpe3Zh ciByLG4sYT1bXTtmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1bXSxv PXQuX2Z1bGxEYXRhW2Vbcl1dLnhheGlzLHM9dC5fZnVsbERhdGFbZVtyXV0u eWF4aXM7aWYobyYmcyl7Zm9yKG49MDtuPGEubGVuZ3RoO24rKyktMT09PWFb bl0ueC5pbmRleE9mKG8pJiYtMT09PWFbbl0ueS5pbmRleE9mKHMpfHxpLnB1 c2gobik7aWYoaS5sZW5ndGgpe3ZhciBsLGM9YVtpWzBdXTtpZihpLmxlbmd0 aD4xKWZvcihuPTE7bjxpLmxlbmd0aDtuKyspbD1hW2lbbl1dLG50KGMueCxs LngpLG50KGMueSxsLnkpO250KGMueCxbb10pLG50KGMueSxbc10pfWVsc2Ug YS5wdXNoKHt4OltvXSx5OltzXX0pfX1yZXR1cm4gYX0odCxlKSxuPTA7bjxy Lmxlbmd0aDtuKyspYXQodCxyW25dLngscltuXS55KX19LHsiLi4vLi4vY29t cG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmci OjYxMywiLi4vLi4vY29tcG9uZW50cy90aXRsZXMiOjY3OSwiLi4vLi4vY29u c3RhbnRzL2FsaWdubWVudCI6Njg2LCIuLi8uLi9jb25zdGFudHMvbnVtZXJp Y2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvc3ZnX3RleHRf dXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNiwiLi4vLi4vcmVn aXN0cnkiOjg0NiwiLi9hdXRvcmFuZ2UiOjc2NCwiLi9heGlzX2F1dG90eXBl Ijo3NjYsIi4vYXhpc19pZHMiOjc2OCwiLi9jbGVhbl90aWNrcyI6NzcwLCIu L2xheW91dF9hdHRyaWJ1dGVzIjo3NzcsIi4vc2V0X2NvbnZlcnQiOjc4Myxk MzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjh9XSw3NjY6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxh PXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNh bCIpLkJBRE5VTTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiEo cj1yfHx7fSkubm9NdWx0aUNhdGVnb3J5JiYobz10LGEuaXNBcnJheU9yVHlw ZWRBcnJheShvWzBdKSYmYS5pc0FycmF5T3JUeXBlZEFycmF5KG9bMV0pKT8i bXVsdGljYXRlZ29yeSI6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9TWF0aC5t YXgoMSwodC5sZW5ndGgtMSkvMWUzKSxpPTAsbz0wLHM9e30sbD0wO2w8dC5s ZW5ndGg7bCs9cil7dmFyIGM9dFtNYXRoLnJvdW5kKGwpXSx1PVN0cmluZyhj KTtzW3VdfHwoc1t1XT0xLGEuaXNEYXRlVGltZShjLGUpJiYoaSs9MSksbihj KSYmKG8rPTEpKX1yZXR1cm4gaT4yKm99KHQsZSk/ImRhdGUiOmZ1bmN0aW9u KHQpe2Zvcih2YXIgZT1NYXRoLm1heCgxLCh0Lmxlbmd0aC0xKS8xZTMpLHI9 MCxuPTAsbz17fSxzPTA7czx0Lmxlbmd0aDtzKz1lKXt2YXIgbD10W01hdGgu cm91bmQocyldLGM9U3RyaW5nKGwpO29bY118fChvW2NdPTEsImJvb2xlYW4i PT10eXBlb2YgbD9uKys6YS5jbGVhbk51bWJlcihsKSE9PWk/cisrOiJzdHJp bmciPT10eXBlb2YgbCYmbisrKX1yZXR1cm4gbj4yKnJ9KHQpPyJjYXRlZ29y eSI6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuITE7Zm9yKHZhciBlPTA7ZTx0 Lmxlbmd0aDtlKyspaWYobih0W2VdKSlyZXR1cm4hMDtyZXR1cm4hMX0odCk/ ImxpbmVhciI6Ii0iO3ZhciBvfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJp Y2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCJmYXN0LWlzbnVtZXJpYyI6MjI4 fV0sNzY3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4vbGF5 b3V0X2F0dHJpYnV0ZXMiKSxvPXQoIi4vdGlja192YWx1ZV9kZWZhdWx0cyIp LHM9dCgiLi90aWNrX21hcmtfZGVmYXVsdHMiKSxsPXQoIi4vdGlja19sYWJl bF9kZWZhdWx0cyIpLGM9dCgiLi9jYXRlZ29yeV9vcmRlcl9kZWZhdWx0cyIp LHU9dCgiLi9saW5lX2dyaWRfZGVmYXVsdHMiKSxoPXQoIi4vc2V0X2NvbnZl cnQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsZixwKXt2YXIgZD1mLmxl dHRlcixnPWYuZm9udHx8e30sdj1mLnNwbG9tU3Rhc2h8fHt9LG09cigidmlz aWJsZSIsIWYudmlzaWJsZURmbHQpLHk9ZS50eXBlOyJkYXRlIj09PXkmJm4u Z2V0Q29tcG9uZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVEZWZhdWx0 cyIpKHQsZSwiY2FsZW5kYXIiLGYuY2FsZW5kYXIpO2goZSxwKTt2YXIgeD0h ZS5pc1ZhbGlkUmFuZ2UodC5yYW5nZSk7eCYmZi5yZXZlcnNlRGZsdCYmKHg9 InJldmVyc2VkIiksIXIoImF1dG9yYW5nZSIseCl8fCJsaW5lYXIiIT09eSYm Ii0iIT09eXx8cigicmFuZ2Vtb2RlIikscigicmFuZ2UiKSxlLmNsZWFuUmFu Z2UoKSxjKHQsZSxyLGYpLCJjYXRlZ29yeSI9PT15fHxmLm5vSG92ZXJ8fHIo ImhvdmVyZm9ybWF0Iik7dmFyIGI9cigiY29sb3IiKSxfPWIhPT1pLmNvbG9y LmRmbHQ/YjpnLmNvbG9yLHc9di5sYWJlbHx8cC5fZGZsdFRpdGxlW2RdO2lm KGwodCxlLHIseSxmLHtwYXNzOjF9KSwhbSlyZXR1cm4gZTtyKCJ0aXRsZS50 ZXh0Iix3KSxhLmNvZXJjZUZvbnQociwidGl0bGUuZm9udCIse2ZhbWlseTpn LmZhbWlseSxzaXplOk1hdGgucm91bmQoMS4yKmcuc2l6ZSksY29sb3I6X30p LG8odCxlLHIseSksbCh0LGUscix5LGYse3Bhc3M6Mn0pLHModCxlLHIsZiks dSh0LGUscix7ZGZsdENvbG9yOmIsYmdDb2xvcjpmLmJnQ29sb3Isc2hvd0dy aWQ6Zi5zaG93R3JpZCxhdHRyaWJ1dGVzOml9KSwoZS5zaG93bGluZXx8ZS50 aWNrcykmJnIoIm1pcnJvciIpLGYuYXV0b21hcmdpbiYmcigiYXV0b21hcmdp biIpO3ZhciBrLFQ9Im11bHRpY2F0ZWdvcnkiPT09ZS50eXBlO2Yubm9UaWNr c29ufHwiY2F0ZWdvcnkiIT09ZS50eXBlJiYhVHx8IWUudGlja3MmJiFlLnNo b3dncmlkfHwoVCYmKGs9ImJvdW5kYXJpZXMiKSxyKCJ0aWNrc29uIixrKSk7 VCYmKHIoInNob3dkaXZpZGVycyIpJiYocigiZGl2aWRlcmNvbG9yIikscigi ZGl2aWRlcndpZHRoIikpKTtyZXR1cm4gZX19LHsiLi4vLi4vbGliIjo3MTcs Ii4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vY2F0ZWdvcnlfb3JkZXJfZGVmYXVs dHMiOjc2OSwiLi9sYXlvdXRfYXR0cmlidXRlcyI6Nzc3LCIuL2xpbmVfZ3Jp ZF9kZWZhdWx0cyI6Nzc5LCIuL3NldF9jb252ZXJ0Ijo3ODMsIi4vdGlja19s YWJlbF9kZWZhdWx0cyI6Nzg0LCIuL3RpY2tfbWFya19kZWZhdWx0cyI6Nzg1 LCIuL3RpY2tfdmFsdWVfZGVmYXVsdHMiOjc4Nn1dLDc2ODpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIp LGE9dCgiLi9jb25zdGFudHMiKTtyLmlkMm5hbWU9ZnVuY3Rpb24odCl7aWYo InN0cmluZyI9PXR5cGVvZiB0JiZ0Lm1hdGNoKGEuQVhfSURfUEFUVEVSTikp e3ZhciBlPXQuc3Vic3RyKDEpO3JldHVybiIxIj09PWUmJihlPSIiKSx0LmNo YXJBdCgwKSsiYXhpcyIrZX19LHIubmFtZTJpZD1mdW5jdGlvbih0KXtpZih0 Lm1hdGNoKGEuQVhfTkFNRV9QQVRURVJOKSl7dmFyIGU9dC5zdWJzdHIoNSk7 cmV0dXJuIjEiPT09ZSYmKGU9IiIpLHQuY2hhckF0KDApK2V9fSxyLmNsZWFu SWQ9ZnVuY3Rpb24odCxlKXtpZih0Lm1hdGNoKGEuQVhfSURfUEFUVEVSTikm JighZXx8dC5jaGFyQXQoMCk9PT1lKSl7dmFyIHI9dC5zdWJzdHIoMSkucmVw bGFjZSgvXjArLywiIik7cmV0dXJuIjEiPT09ciYmKHI9IiIpLHQuY2hhckF0 KDApK3J9fSxyLmxpc3Q9ZnVuY3Rpb24odCxlLG4pe3ZhciBhPXQuX2Z1bGxM YXlvdXQ7aWYoIWEpcmV0dXJuW107dmFyIGksbz1yLmxpc3RJZHModCxlKSxz PW5ldyBBcnJheShvLmxlbmd0aCk7Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKyl7 dmFyIGw9b1tpXTtzW2ldPWFbbC5jaGFyQXQoMCkrImF4aXMiK2wuc3Vic3Ry KDEpXX1pZighbil7dmFyIGM9YS5fc3VicGxvdHMuZ2wzZHx8W107Zm9yKGk9 MDtpPGMubGVuZ3RoO2krKyl7dmFyIHU9YVtjW2ldXTtlP3MucHVzaCh1W2Ur ImF4aXMiXSk6cy5wdXNoKHUueGF4aXMsdS55YXhpcyx1LnpheGlzKX19cmV0 dXJuIHN9LHIubGlzdElkcz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxM YXlvdXQ7aWYoIXIpcmV0dXJuW107dmFyIG49ci5fc3VicGxvdHM7cmV0dXJu IGU/bltlKyJheGlzIl06bi54YXhpcy5jb25jYXQobi55YXhpcyl9LHIuZ2V0 RnJvbUlkPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT10Ll9mdWxsTGF5b3V0O3Jl dHVybiJ4Ij09PW4/ZT1lLnJlcGxhY2UoL3lbMC05XSovLCIiKToieSI9PT1u JiYoZT1lLnJlcGxhY2UoL3hbMC05XSovLCIiKSksYVtyLmlkMm5hbWUoZSld fSxyLmdldEZyb21UcmFjZT1mdW5jdGlvbih0LGUsYSl7dmFyIGk9dC5fZnVs bExheW91dCxvPW51bGw7aWYobi50cmFjZUlzKGUsImdsM2QiKSl7dmFyIHM9 ZS5zY2VuZTsic2NlbmUiPT09cy5zdWJzdHIoMCw1KSYmKG89aVtzXVthKyJh eGlzIl0pfWVsc2Ugbz1yLmdldEZyb21JZCh0LGVbYSsiYXhpcyJdfHxhKTty ZXR1cm4gb30sci5pZFNvcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmNoYXJB dCgwKSxuPWUuY2hhckF0KDApO3JldHVybiByIT09bj9yPm4/MTotMTorKHQu c3Vic3RyKDEpfHwxKS0rKGUuc3Vic3RyKDEpfHwxKX0sci5nZXRBeGlzR3Jv dXA9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5fYXhpc01hdGNoR3JvdXBz LG49MDtuPHIubGVuZ3RoO24rKyl7aWYocltuXVtlXSlyZXR1cm4iZyIrbn1y ZXR1cm4gZX19LHsiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9jb25zdGFudHMi Ojc3MX1dLDc2OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7aWYoImNhdGVnb3J5Ij09PWUudHlw ZSl7dmFyIGEsaT10LmNhdGVnb3J5YXJyYXksbz1BcnJheS5pc0FycmF5KGkp JiZpLmxlbmd0aD4wO28mJihhPSJhcnJheSIpO3ZhciBzLGw9cigiY2F0ZWdv cnlvcmRlciIsYSk7ImFycmF5Ij09PWwmJihzPXIoImNhdGVnb3J5YXJyYXki KSksb3x8ImFycmF5IiE9PWx8fChsPWUuY2F0ZWdvcnlvcmRlcj0idHJhY2Ui KSwidHJhY2UiPT09bD9lLl9pbml0aWFsQ2F0ZWdvcmllcz1bXToiYXJyYXki PT09bD9lLl9pbml0aWFsQ2F0ZWdvcmllcz1zLnNsaWNlKCk6KHM9ZnVuY3Rp b24odCxlKXt2YXIgcixuLGEsaT1lLmRhdGFBdHRyfHx0Ll9pZC5jaGFyQXQo MCksbz17fTtpZihlLmF4RGF0YSlyPWUuYXhEYXRhO2Vsc2UgZm9yKHI9W10s bj0wO248ZS5kYXRhLmxlbmd0aDtuKyspe3ZhciBzPWUuZGF0YVtuXTtzW2kr ImF4aXMiXT09PXQuX2lkJiZyLnB1c2gocyl9Zm9yKG49MDtuPHIubGVuZ3Ro O24rKyl7dmFyIGw9cltuXVtpXTtmb3IoYT0wO2E8bC5sZW5ndGg7YSsrKXt2 YXIgYz1sW2FdO251bGwhPWMmJihvW2NdPTEpfX1yZXR1cm4gT2JqZWN0Lmtl eXMobyl9KGUsbikuc29ydCgpLCJjYXRlZ29yeSBhc2NlbmRpbmciPT09bD9l Ll9pbml0aWFsQ2F0ZWdvcmllcz1zOiJjYXRlZ29yeSBkZXNjZW5kaW5nIj09 PWwmJihlLl9pbml0aWFsQ2F0ZWdvcmllcz1zLnJldmVyc2UoKSkpfX19LHt9 XSw3NzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi ZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4v Y29uc3RhbnRzL251bWVyaWNhbCIpLk9ORURBWTtyLmR0aWNrPWZ1bmN0aW9u KHQsZSl7dmFyIHI9ImxvZyI9PT1lLGE9ImRhdGUiPT09ZSxvPSJjYXRlZ29y eSI9PT1lLHM9YT9pOjE7aWYoIXQpcmV0dXJuIHM7aWYobih0KSlyZXR1cm4o dD1OdW1iZXIodCkpPD0wP3M6bz9NYXRoLm1heCgxLE1hdGgucm91bmQodCkp OmE/TWF0aC5tYXgoLjEsdCk6dDtpZigic3RyaW5nIiE9dHlwZW9mIHR8fCFh JiYhcilyZXR1cm4gczt2YXIgbD10LmNoYXJBdCgwKSxjPXQuc3Vic3RyKDEp O3JldHVybihjPW4oYyk/TnVtYmVyKGMpOjApPD0wfHwhKGEmJiJNIj09PWwm JmM9PT1NYXRoLnJvdW5kKGMpfHxyJiYiTCI9PT1sfHxyJiYiRCI9PT1sJiYo MT09PWN8fDI9PT1jKSk/czp0fSxyLnRpY2swPWZ1bmN0aW9uKHQsZSxyLGkp e3JldHVybiJkYXRlIj09PWU/YS5jbGVhbkRhdGUodCxhLmRhdGVUaWNrMChy KSk6IkQxIiE9PWkmJiJEMiIhPT1pP24odCk/TnVtYmVyKHQpOjA6dm9pZCAw fX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xp YiI6NzE3LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sNzcxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9yZWdleCIp LmNvdW50ZXI7ZS5leHBvcnRzPXtpZFJlZ2V4Ont4Om4oIngiKSx5Om4oInki KX0sYXR0clJlZ2V4Om4oIlt4eV1heGlzIikseEF4aXNNYXRjaDpuKCJ4YXhp cyIpLHlBeGlzTWF0Y2g6bigieWF4aXMiKSxBWF9JRF9QQVRURVJOOi9eW3h5 el1bMC05XSokLyxBWF9OQU1FX1BBVFRFUk46L15beHl6XWF4aXNbMC05XSok LyxTVUJQTE9UX1BBVFRFUk46L154KFswLTldKil5KFswLTldKikkLyxNSU5E UkFHOjgsTUlOU0VMRUNUOjEyLE1JTlpPT006MjAsRFJBR0dFUlNJWkU6MjAs QkVORFBYOjEuNSxSRURSQVdERUxBWTo1MCxTRUxFQ1RERUxBWToxMDAsU0VM RUNUSUQ6Ii1zZWxlY3QiLERGTFRSQU5HRVg6Wy0xLDZdLERGTFRSQU5HRVk6 Wy0xLDRdLHRyYWNlTGF5ZXJDbGFzc2VzOlsiaW1hZ2VsYXllciIsImhlYXRt YXBsYXllciIsImNvbnRvdXJjYXJwZXRsYXllciIsImNvbnRvdXJsYXllciIs ImZ1bm5lbGxheWVyIiwid2F0ZXJmYWxsbGF5ZXIiLCJiYXJsYXllciIsImNh cnBldGxheWVyIiwidmlvbGlubGF5ZXIiLCJib3hsYXllciIsIm9obGNsYXll ciIsInNjYXR0ZXJjYXJwZXRsYXllciIsInNjYXR0ZXJsYXllciJdLGNsaXBP bkF4aXNGYWxzZVF1ZXJ5OlsiLnNjYXR0ZXJsYXllciIsIi5iYXJsYXllciIs Ii5mdW5uZWxsYXllciIsIi53YXRlcmZhbGxsYXllciJdLGxheWVyVmFsdWUy bGF5ZXJDbGFzczp7ImFib3ZlIHRyYWNlcyI6ImFib3ZlIiwiYmVsb3cgdHJh Y2VzIjoiYmVsb3cifX19LHsiLi4vLi4vbGliL3JlZ2V4Ijo3MzN9XSw3NzI6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v bGliIiksYT10KCIuL2F4aXNfaWRzIikuaWQybmFtZSxpPXQoIi4vc2NhbGVf em9vbSIpLG89dCgiLi9hdXRvcmFuZ2UiKS5tYWtlUGFkRm4scz10KCIuL2F1 dG9yYW5nZSIpLmNvbmNhdEV4dHJlbWVzLGw9dCgiLi4vLi4vY29uc3RhbnRz L251bWVyaWNhbCIpLkFMTU9TVF9FUVVBTCxjPXQoIi4uLy4uL2NvbnN0YW50 cy9hbGlnbm1lbnQiKS5GUk9NX0JMO2Z1bmN0aW9uIHUodCxlLHIsbixpKXt2 YXIgbyxzLGwsYyx1PSJyYW5nZSIhPT1pLGg9blthKGUpXS50eXBlLGY9W107 Zm9yKHM9MDtzPHIubGVuZ3RoO3MrKylpZigobD1yW3NdKSE9PWUmJihjPW5b YShsKV0pLnR5cGU9PT1oKWlmKGMuZml4ZWRyYW5nZSl7aWYodSYmYy5hbmNo b3Ipe25bYShjLmFuY2hvcildLmZpeGVkcmFuZ2UmJmYucHVzaChsKX19ZWxz ZSBmLnB1c2gobCk7Zm9yKG89MDtvPHQubGVuZ3RoO28rKylpZih0W29dW2Vd KXt2YXIgcD10W29dLGQ9W107Zm9yKHM9MDtzPGYubGVuZ3RoO3MrKylwW2w9 ZltzXV18fGQucHVzaChsKTtyZXR1cm57bGlua2FibGVBeGVzOmQsdGhpc0dy b3VwOnB9fXJldHVybntsaW5rYWJsZUF4ZXM6Zix0aGlzR3JvdXA6bnVsbH19 ZnVuY3Rpb24gaCh0LGUscixuLGEpe3ZhciBpLG8scyxsLGM7bnVsbD09PWU/ KChlPXt9KVtyXT0xLGM9dC5sZW5ndGgsdC5wdXNoKGUpKTpjPXQuaW5kZXhP ZihlKTt2YXIgdT1PYmplY3Qua2V5cyhlKTtmb3IoaT0wO2k8dC5sZW5ndGg7 aSsrKWlmKHM9dFtpXSxpIT09YyYmc1tuXSl7dmFyIGg9c1tuXTtmb3Iobz0w O288dS5sZW5ndGg7bysrKXNbbD11W29dXT1oKmEqZVtsXTtyZXR1cm4gdm9p ZCB0LnNwbGljZShjLDEpfWlmKDEhPT1hKWZvcihvPTA7bzx1Lmxlbmd0aDtv KyspZVt1W29dXSo9YTtlW25dPTF9ZnVuY3Rpb24gZih0LGUpe3ZhciByPXQu X2lucHV0RG9tYWluLG49Y1t0LmNvbnN0cmFpbnRvd2FyZF0sYT1yWzBdKyhy WzFdLXJbMF0pKm47dC5kb21haW49dC5faW5wdXQuZG9tYWluPVthKyhyWzBd LWEpL2UsYSsoclsxXS1hKS9lXSx0LnNldFNjYWxlKCl9ci5oYW5kbGVDb25z dHJhaW50RGVmYXVsdHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGksbyxzLGws Yz1hLmFsbEF4aXNJZHMsZj1hLmxheW91dE91dCxwPWEuc2NhbGVhbmNob3JE Zmx0LGQ9YS5jb25zdHJhaW5EZmx0LGc9Zi5fYXhpc0NvbnN0cmFpbnRHcm91 cHMsdj1mLl9heGlzTWF0Y2hHcm91cHMsbT1lLl9pZCx5PW0uY2hhckF0KDAp LHg9KChmLl9zcGxvbUF4ZXN8fHt9KVt5XXx8e30pW21dfHx7fSxiPWUuX2lk LF89Yi5jaGFyQXQoMCksdz1yKCJjb25zdHJhaW4iLGQpO2lmKG4uY29lcmNl KHQsZSx7Y29uc3RyYWludG93YXJkOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6IngiPT09Xz9bImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdOlsiYm90 dG9tIiwibWlkZGxlIiwidG9wIl0sZGZsdDoieCI9PT1fPyJjZW50ZXIiOiJt aWRkbGUifX0sImNvbnN0cmFpbnRvd2FyZCIpLCF0Lm1hdGNoZXMmJiF4Lm1h dGNoZXN8fGUuZml4ZWRyYW5nZXx8KG89dSh2LGIsYyxmKSxpPW4uY29lcmNl KHQsZSx7bWF0Y2hlczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOm8u bGlua2FibGVBeGVzfHxbXSxkZmx0OngubWF0Y2hlc319LCJtYXRjaGVzIikp LGl8fGUuZml4ZWRyYW5nZSYmImRvbWFpbiIhPT13fHwhdC5zY2FsZWFuY2hv ciYmIXB8fChsPXUoZyxiLGMsZix3KSxzPW4uY29lcmNlKHQsZSx7c2NhbGVh bmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpsLmxpbmthYmxl QXhlc3x8W119fSwic2NhbGVhbmNob3IiLHApKSxpPyhkZWxldGUgZS5jb25z dHJhaW4saCh2LG8udGhpc0dyb3VwLGIsaSwxKSk6LTEhPT1jLmluZGV4T2Yo dC5tYXRjaGVzKSYmbi53YXJuKCJpZ25vcmVkICIrZS5fbmFtZSsnLm1hdGNo ZXM6ICInK3QubWF0Y2hlcysnIiB0byBhdm9pZCBlaXRoZXIgYW4gaW5maW5p dGUgbG9vcCBvciBiZWNhdXNlIHRoZSB0YXJnZXQgYXhpcyBoYXMgZml4ZWQg cmFuZ2UuJykscyl7dmFyIGs9cigic2NhbGVyYXRpbyIpO2t8fChrPWUuc2Nh bGVyYXRpbz0xKSxoKGcsbC50aGlzR3JvdXAsYixzLGspfWVsc2UtMSE9PWMu aW5kZXhPZih0LnNjYWxlYW5jaG9yKSYmbi53YXJuKCJpZ25vcmVkICIrZS5f bmFtZSsnLnNjYWxlYW5jaG9yOiAiJyt0LnNjYWxlYW5jaG9yKyciIHRvIGF2 b2lkIGVpdGhlciBhbiBpbmZpbml0ZSBsb29wIGFuZCBwb3NzaWJseSBpbmNv bnNpc3RlbnQgc2NhbGVyYXRpb3MsIG9yIGJlY2F1c2UgdGhlIHRhcmdldCBh eGlzIGhhcyBmaXhlZCByYW5nZSBvciB0aGlzIGF4aXMgZGVjbGFyZXMgYSAq bWF0Y2hlcyogY29uc3RyYWludC4nKX0sci5lbmZvcmNlPWZ1bmN0aW9uKHQp e3ZhciBlLHIsbixjLHUsaCxwLGQ9dC5fZnVsbExheW91dCxnPWQuX2F4aXND b25zdHJhaW50R3JvdXBzfHxbXTtmb3IoZT0wO2U8Zy5sZW5ndGg7ZSsrKXt2 YXIgdj1nW2VdLG09T2JqZWN0LmtleXModikseT0xLzAseD0wLGI9MS8wLF89 e30sdz17fSxrPSExO2ZvcihyPTA7cjxtLmxlbmd0aDtyKyspd1tuPW1bcl1d PWM9ZFthKG4pXSxjLl9pbnB1dERvbWFpbj9jLmRvbWFpbj1jLl9pbnB1dERv bWFpbi5zbGljZSgpOmMuX2lucHV0RG9tYWluPWMuZG9tYWluLnNsaWNlKCks Yy5faW5wdXRSYW5nZXx8KGMuX2lucHV0UmFuZ2U9Yy5yYW5nZS5zbGljZSgp KSxjLnNldFNjYWxlKCksX1tuXT11PU1hdGguYWJzKGMuX20pL3Zbbl0seT1N YXRoLm1pbih5LHUpLCJkb21haW4iIT09Yy5jb25zdHJhaW4mJmMuX2NvbnN0 cmFpbnRTaHJpbmthYmxlfHwoYj1NYXRoLm1pbihiLHUpKSxkZWxldGUgYy5f Y29uc3RyYWludFNocmlua2FibGUseD1NYXRoLm1heCh4LHUpLCJkb21haW4i PT09Yy5jb25zdHJhaW4mJihrPSEwKTtpZighKHk+bCp4KXx8aylmb3Iocj0w O3I8bS5sZW5ndGg7cisrKWlmKHU9X1tuPW1bcl1dLGg9KGM9d1tuXSkuY29u c3RyYWluLHUhPT1ifHwiZG9tYWluIj09PWgpaWYocD11L2IsInJhbmdlIj09 PWgpaShjLHApO2Vsc2V7dmFyIFQ9Yy5faW5wdXREb21haW4sTT0oYy5kb21h aW5bMV0tYy5kb21haW5bMF0pLyhUWzFdLVRbMF0pLEE9KGMucjJsKGMucmFu Z2VbMV0pLWMucjJsKGMucmFuZ2VbMF0pKS8oYy5yMmwoYy5faW5wdXRSYW5n ZVsxXSktYy5yMmwoYy5faW5wdXRSYW5nZVswXSkpO2lmKChwLz1NKSpBPDEp e2MuZG9tYWluPWMuX2lucHV0LmRvbWFpbj1ULnNsaWNlKCksaShjLHApO2Nv bnRpbnVlfWlmKEE8MSYmKGMucmFuZ2U9Yy5faW5wdXQucmFuZ2U9Yy5faW5w dXRSYW5nZS5zbGljZSgpLHAqPUEpLGMuYXV0b3JhbmdlKXt2YXIgUz1jLnIy bChjLnJhbmdlWzBdKSxFPWMucjJsKGMucmFuZ2VbMV0pLEw9KFMrRSkvMixD PUwsUD1MLE89TWF0aC5hYnMoRS1MKSx6PUwtTypwKjEuMDAwMSxJPUwrTypw KjEuMDAwMSxEPW8oYyk7ZihjLHApO3ZhciBSLEYsQj1NYXRoLmFicyhjLl9t KSxOPXModCxjKSxqPU4ubWluLFY9Ti5tYXg7Zm9yKEY9MDtGPGoubGVuZ3Ro O0YrKykoUj1qW0ZdLnZhbC1EKGpbRl0pL0IpPnomJlI8QyYmKEM9Uik7Zm9y KEY9MDtGPFYubGVuZ3RoO0YrKykoUj1WW0ZdLnZhbCtEKFZbRl0pL0IpPEkm JlI+UCYmKFA9Uik7cC89KFAtQykvKDIqTyksQz1jLmwycihDKSxQPWMubDJy KFApLGMucmFuZ2U9Yy5faW5wdXQucmFuZ2U9UzxFP1tDLFBdOltQLENdfWYo YyxwKX19fSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSl7aWYoZS5faW5wdXREb21h aW4pe2Zvcih2YXIgcj0hMSxuPWUuX2lkLGE9dC5fZnVsbExheW91dC5fYXhp c0NvbnN0cmFpbnRHcm91cHMsaT0wO2k8YS5sZW5ndGg7aSsrKWlmKGFbaV1b bl0pe3I9ITA7YnJlYWt9ciYmImRvbWFpbiI9PT1lLmNvbnN0cmFpbnx8KGUu X2lucHV0LmRvbWFpbj1lLmRvbWFpbj1lLl9pbnB1dERvbWFpbixkZWxldGUg ZS5faW5wdXREb21haW4pfX19LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVu dCI6Njg2LCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4u L2xpYiI6NzE3LCIuL2F1dG9yYW5nZSI6NzY0LCIuL2F4aXNfaWRzIjo3Njgs Ii4vc2NhbGVfem9vbSI6NzgxfV0sNzczOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJ0aW55Y29sb3IyIiksaT10 KCJoYXMtcGFzc2l2ZS1ldmVudHMiKSxvPXQoIi4uLy4uL3JlZ2lzdHJ5Iiks cz10KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGls cyIpLGM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLHU9dCgiLi4vLi4v Y29tcG9uZW50cy9kcmF3aW5nIiksaD10KCIuLi8uLi9jb21wb25lbnRzL2Z4 IiksZj10KCIuL2F4ZXMiKSxwPXQoIi4uLy4uL2xpYi9zZXRjdXJzb3IiKSxk PXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiKSxnPXQoIi4uLy4u L2NvbnN0YW50cy9hbGlnbm1lbnQiKS5GUk9NX1RMLHY9dCgiLi4vLi4vbGli L2NsZWFyX2dsX2NhbnZhc2VzIiksbT10KCIuLi8uLi9wbG90X2FwaS9zdWJy b3V0aW5lcyIpLnJlZHJhd1JlZ2xUcmFjZXMseT10KCIuLi9wbG90cyIpLHg9 dCgiLi9heGlzX2lkcyIpLmdldEZyb21JZCxiPXQoIi4vc2VsZWN0IikucHJl cFNlbGVjdCxfPXQoIi4vc2VsZWN0IikuY2xlYXJTZWxlY3Qsdz10KCIuL3Nl bGVjdCIpLnNlbGVjdE9uQ2xpY2ssaz10KCIuL3NjYWxlX3pvb20iKSxUPXQo Ii4vY29uc3RhbnRzIiksTT1ULk1JTkRSQUcsQT1ULk1JTlpPT00sUz0hMDtm dW5jdGlvbiBFKHQsZSxyLG4pe3ZhciBhPXMuZW5zdXJlU2luZ2xlKHQuZHJh Z2xheWVyLGUscixmdW5jdGlvbihlKXtlLmNsYXNzZWQoImRyYWciLCEwKS5z dHlsZSh7ZmlsbDoidHJhbnNwYXJlbnQiLCJzdHJva2Utd2lkdGgiOjB9KS5h dHRyKCJkYXRhLXN1YnBsb3QiLHQuaWQpfSk7cmV0dXJuIGEuY2FsbChwLG4p LGEubm9kZSgpfWZ1bmN0aW9uIEwodCxlLHIsYSxpLG8scyl7dmFyIGw9RSh0 LCJyZWN0IixlLHIpO3JldHVybiBuLnNlbGVjdChsKS5jYWxsKHUuc2V0UmVj dCxhLGksbyxzKSxsfWZ1bmN0aW9uIEModCxlKXtmb3IodmFyIHI9MDtyPHQu bGVuZ3RoO3IrKylpZighdFtyXS5maXhlZHJhbmdlKXJldHVybiBlO3JldHVy biIifWZ1bmN0aW9uIFAodCxlLHIsbixhKXtmb3IodmFyIGk9MDtpPHQubGVu Z3RoO2krKyl7dmFyIG89dFtpXTtpZighby5maXhlZHJhbmdlKXt2YXIgcz1v Ll9ybFswXSxsPW8uX3JsWzFdLXM7bltvLl9uYW1lKyIucmFuZ2VbMF0iXT1v LmwycihzK2wqZSksbltvLl9uYW1lKyIucmFuZ2VbMV0iXT1vLmwycihzK2wq cil9fWlmKGEmJmEubGVuZ3RoKXt2YXIgYz0oZSsoMS1yKSkvMjtQKGEsYywx LWMsbixbXSl9fWZ1bmN0aW9uIE8odCxlKXtmb3IodmFyIHI9MDtyPHQubGVu Z3RoO3IrKyl7dmFyIG49dFtyXTtuLmZpeGVkcmFuZ2V8fChuLnJhbmdlPVtu LmwycihuLl9ybFswXS1lL24uX20pLG4ubDJyKG4uX3JsWzFdLWUvbi5fbSld KX19ZnVuY3Rpb24geih0KXtyZXR1cm4gMS0odD49MD9NYXRoLm1pbih0LC45 KToxLygxL01hdGgubWF4KHQsLS4zKSszLjIyMikpfWZ1bmN0aW9uIEkodCxl LHIsbixhKXtyZXR1cm4gdC5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIs Inpvb21ib3giKS5zdHlsZSh7ZmlsbDplPi4yPyJyZ2JhKDAsMCwwLDApIjoi cmdiYSgyNTUsMjU1LDI1NSwwKSIsInN0cm9rZS13aWR0aCI6MH0pLmF0dHIo InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3IrIiwgIituKyIpIikuYXR0cigi ZCIsYSsiWiIpfWZ1bmN0aW9uIEQodCxlLHIpe3JldHVybiB0LmFwcGVuZCgi cGF0aCIpLmF0dHIoImNsYXNzIiwiem9vbWJveC1jb3JuZXJzIikuc3R5bGUo e2ZpbGw6Yy5iYWNrZ3JvdW5kLHN0cm9rZTpjLmRlZmF1bHRMaW5lLCJzdHJv a2Utd2lkdGgiOjEsb3BhY2l0eTowfSkuYXR0cigidHJhbnNmb3JtIiwidHJh bnNsYXRlKCIrZSsiLCAiK3IrIikiKS5hdHRyKCJkIiwiTTAsMFoiKX1mdW5j dGlvbiBSKHQsZSxyLG4sYSxpKXt0LmF0dHIoImQiLG4rIk0iK3IubCsiLCIr ci50KyJ2IityLmgrImgiK3Iudysidi0iK3IuaCsiaC0iK3IudysiWiIpLEYo dCxlLGEsaSl9ZnVuY3Rpb24gRih0LGUscixuKXtyfHwodC50cmFuc2l0aW9u KCkuc3R5bGUoImZpbGwiLG4+LjI/InJnYmEoMCwwLDAsMC40KSI6InJnYmEo MjU1LDI1NSwyNTUsMC4zKSIpLmR1cmF0aW9uKDIwMCksZS50cmFuc2l0aW9u KCkuc3R5bGUoIm9wYWNpdHkiLDEpLmR1cmF0aW9uKDIwMCkpfWZ1bmN0aW9u IEIodCl7bi5zZWxlY3QodCkuc2VsZWN0QWxsKCIuem9vbWJveCwuanMtem9v bWJveC1iYWNrZHJvcCwuanMtem9vbWJveC1tZW51LC56b29tYm94LWNvcm5l cnMiKS5yZW1vdmUoKX1mdW5jdGlvbiBOKHQpe1MmJnQuZGF0YSYmdC5fY29u dGV4dC5zaG93VGlwcyYmKHMubm90aWZpZXIocy5fKHQsIkRvdWJsZS1jbGlj ayB0byB6b29tIGJhY2sgb3V0IiksImxvbmciKSxTPSExKX1mdW5jdGlvbiBq KHQpe3JldHVybiJsYXNzbyI9PT10fHwic2VsZWN0Ij09PXR9ZnVuY3Rpb24g Vih0KXt2YXIgZT1NYXRoLmZsb29yKE1hdGgubWluKHQuYi10LnQsdC5yLXQu bCxBKS8yKTtyZXR1cm4iTSIrKHQubC0zLjUpKyIsIisodC50LS41K2UpKyJo M3YiKy1lKyJoIitlKyJ2LTNoLSIrKGUrMykrIlpNIisodC5yKzMuNSkrIiwi Kyh0LnQtLjUrZSkrImgtM3YiKy1lKyJoIistZSsidi0zaCIrKGUrMykrIlpN IisodC5yKzMuNSkrIiwiKyh0LmIrLjUtZSkrImgtM3YiK2UrImgiKy1lKyJ2 M2giKyhlKzMpKyJaTSIrKHQubC0zLjUpKyIsIisodC5iKy41LWUpKyJoM3Yi K2UrImgiK2UrInYzaC0iKyhlKzMpKyJaIn1mdW5jdGlvbiBVKHQsZSxyLG4p e2Zvcih2YXIgYSxpLG8sbCxjPSExLHU9e30saD17fSxmPTA7ZjxlLmxlbmd0 aDtmKyspe3ZhciBwPWVbZl07Zm9yKGEgaW4gcilpZihwW2FdKXtmb3IobyBp biBwKSgieCI9PT1vLmNoYXJBdCgwKT9yOm4pW29dfHwodVtvXT1hKTtmb3Io aSBpbiBuKXBbaV0mJihjPSEwKX1mb3IoaSBpbiBuKWlmKHBbaV0pZm9yKGwg aW4gcCkoIngiPT09bC5jaGFyQXQoMCk/cjpuKVtsXXx8KGhbbF09aSl9YyYm KHMuZXh0ZW5kRmxhdCh1LGgpLGg9e30pO3ZhciBkPXt9LGc9W107Zm9yKG8g aW4gdSl7dmFyIHY9eCh0LG8pO2cucHVzaCh2KSxkW3YuX2lkXT12fXZhciBt PXt9LHk9W107Zm9yKGwgaW4gaCl7dmFyIGI9eCh0LGwpO3kucHVzaChiKSxt W2IuX2lkXT1ifXJldHVybnt4YUhhc2g6ZCx5YUhhc2g6bSx4YXhlczpnLHlh eGVzOnkseExpbmtzOnUseUxpbmtzOmgsaXNTdWJwbG90Q29uc3RyYWluZWQ6 Y319ZnVuY3Rpb24gcSh0LGUpe2lmKGkpe3ZhciByPXZvaWQgMCE9PXQub253 aGVlbD8id2hlZWwiOiJtb3VzZXdoZWVsIjt0Ll9vbndoZWVsJiZ0LnJlbW92 ZUV2ZW50TGlzdGVuZXIocix0Ll9vbndoZWVsKSx0Ll9vbndoZWVsPWUsdC5h ZGRFdmVudExpc3RlbmVyKHIsZSx7cGFzc2l2ZTohMX0pfWVsc2Ugdm9pZCAw IT09dC5vbndoZWVsP3Qub253aGVlbD1lOnZvaWQgMCE9PXQub25tb3VzZXdo ZWVsJiYodC5vbm1vdXNld2hlZWw9ZSl9ZnVuY3Rpb24gSCh0KXt2YXIgZT1b XTtmb3IodmFyIHIgaW4gdCllLnB1c2godFtyXSk7cmV0dXJuIGV9ZS5leHBv cnRzPXttYWtlRHJhZ0JveDpmdW5jdGlvbih0LGUscixpLGMscCxTLEUpe3Zh ciBGLEcsWSxXLFgsWixKLEssUSwkLHR0LGV0LHJ0LG50LGF0LGl0LG90LHN0 LGx0LGN0LHV0LGh0PXQuX2Z1bGxMYXlvdXQuX3pvb21sYXllcixmdD1TK0U9 PT0ibnNldyIscHQ9MT09PShTK0UpLmxlbmd0aDtmdW5jdGlvbiBkdCgpe2lm KEY9ZS54YXhpcyxHPWUueWF4aXMsUT1GLl9sZW5ndGgsJD1HLl9sZW5ndGgs Sj1GLl9vZmZzZXQsSz1HLl9vZmZzZXQsKFk9e30pW0YuX2lkXT1GLChXPXt9 KVtHLl9pZF09RyxTJiZFKWZvcih2YXIgcj1lLm92ZXJsYXlzLG49MDtuPHIu bGVuZ3RoO24rKyl7dmFyIGE9cltuXS54YXhpcztZW2EuX2lkXT1hO3ZhciBp PXJbbl0ueWF4aXM7V1tpLl9pZF09aX1YPUgoWSksWj1IKFcpLHJ0PUMoWCxF KSxudD1DKFosUyksYXQ9IW50JiYhcnQsdHQ9VSh0LHQuX2Z1bGxMYXlvdXQu X2F4aXNDb25zdHJhaW50R3JvdXBzLFksVyksZXQ9VSh0LHQuX2Z1bGxMYXlv dXQuX2F4aXNNYXRjaEdyb3VwcyxZLFcpLGl0PUV8fHR0LmlzU3VicGxvdENv bnN0cmFpbmVkfHxldC5pc1N1YnBsb3RDb25zdHJhaW5lZCxvdD1TfHx0dC5p c1N1YnBsb3RDb25zdHJhaW5lZHx8ZXQuaXNTdWJwbG90Q29uc3RyYWluZWQ7 dmFyIG89dC5fZnVsbExheW91dDtzdD1vLl9oYXMoInNjYXR0ZXJnbCIpLGx0 PW8uX2hhcygic3Bsb20iKSxjdD1vLl9oYXMoInN2ZyIpfWR0KCk7dmFyIGd0 PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD8ibnNldyI9PT10P3I/IiI6InBh biI9PT1lPyJtb3ZlIjoiY3Jvc3NoYWlyIjp0LnRvTG93ZXJDYXNlKCkrIi1y ZXNpemUiOiJwb2ludGVyIn0obnQrcnQsdC5fZnVsbExheW91dC5kcmFnbW9k ZSxmdCksdnQ9TChlLFMrRSsiZHJhZyIsZ3QscixpLGMscCk7aWYoYXQmJiFm dClyZXR1cm4gdnQub25tb3VzZWRvd249bnVsbCx2dC5zdHlsZS5wb2ludGVy RXZlbnRzPSJub25lIix2dDt2YXIgbXQseXQseHQsYnQsX3Qsd3Qsa3QsVHQs TXQsQXQsU3Q9e2VsZW1lbnQ6dnQsZ2Q6dCxwbG90aW5mbzplfTtmdW5jdGlv biBFdCgpe1N0LnBsb3RpbmZvLnNlbGVjdGlvbj0hMSxfKHQpfWZ1bmN0aW9u IEx0KHIsYSl7dmFyIGk9dC5fZnVsbExheW91dC5jbGlja21vZGU7aWYoQih0 KSwyIT09cnx8cHR8fGZ1bmN0aW9uKCl7aWYoIXQuX3RyYW5zaXRpb25pbmdX aXRoRHVyYXRpb24pe3ZhciBlPXQuX2NvbnRleHQuZG91YmxlQ2xpY2sscj1b XTtydCYmKHI9ci5jb25jYXQoWCkpLG50JiYocj1yLmNvbmNhdChaKSksZXQu eGF4ZXMmJihyPXIuY29uY2F0KGV0LnhheGVzKSksZXQueWF4ZXMmJihyPXIu Y29uY2F0KGV0LnlheGVzKSk7dmFyIG4sYSxpLHM9e307aWYoInJlc2V0K2F1 dG9zaXplIj09PWUpZm9yKGU9ImF1dG9zaXplIixhPTA7YTxyLmxlbmd0aDth KyspaWYoKG49clthXSkuX3JhbmdlSW5pdGlhbCYmKG4ucmFuZ2VbMF0hPT1u Ll9yYW5nZUluaXRpYWxbMF18fG4ucmFuZ2VbMV0hPT1uLl9yYW5nZUluaXRp YWxbMV0pfHwhbi5fcmFuZ2VJbml0aWFsJiYhbi5hdXRvcmFuZ2Upe2U9InJl c2V0IjticmVha31pZigiYXV0b3NpemUiPT09ZSlmb3IoYT0wO2E8ci5sZW5n dGg7YSsrKShuPXJbYV0pLmZpeGVkcmFuZ2V8fChzW24uX25hbWUrIi5hdXRv cmFuZ2UiXT0hMCk7ZWxzZSBpZigicmVzZXQiPT09ZSlmb3IoKHJ0fHx0dC5p c1N1YnBsb3RDb25zdHJhaW5lZCkmJihyPXIuY29uY2F0KHR0LnhheGVzKSks bnQmJiF0dC5pc1N1YnBsb3RDb25zdHJhaW5lZCYmKHI9ci5jb25jYXQodHQu eWF4ZXMpKSx0dC5pc1N1YnBsb3RDb25zdHJhaW5lZCYmKHJ0P250fHwocj1y LmNvbmNhdChaKSk6cj1yLmNvbmNhdChYKSksYT0wO2E8ci5sZW5ndGg7YSsr KShuPXJbYV0pLmZpeGVkcmFuZ2V8fChuLl9yYW5nZUluaXRpYWw/KGk9bi5f cmFuZ2VJbml0aWFsLHNbbi5fbmFtZSsiLnJhbmdlWzBdIl09aVswXSxzW24u X25hbWUrIi5yYW5nZVsxXSJdPWlbMV0pOnNbbi5fbmFtZSsiLmF1dG9yYW5n ZSJdPSEwKTt0LmVtaXQoInBsb3RseV9kb3VibGVjbGljayIsbnVsbCksby5j YWxsKCJfZ3VpUmVsYXlvdXQiLHQscyl9fSgpLGZ0KWkuaW5kZXhPZigic2Vs ZWN0Iik+LTEmJncoYSx0LFgsWixlLmlkLFN0KSxpLmluZGV4T2YoImV2ZW50 Iik+LTEmJmguY2xpY2sodCxhLGUuaWQpO2Vsc2UgaWYoMT09PXImJnB0KXt2 YXIgcz1TP0c6RixjPSJzIj09PVN8fCJ3Ij09PUU/MDoxLHU9cy5fbmFtZSsi LnJhbmdlWyIrYysiXSIsZj1mdW5jdGlvbih0LGUpe3ZhciByLGE9dC5yYW5n ZVtlXSxpPU1hdGguYWJzKGEtdC5yYW5nZVsxLWVdKTtyZXR1cm4iZGF0ZSI9 PT10LnR5cGU/YToibG9nIj09PXQudHlwZT8ocj1NYXRoLmNlaWwoTWF0aC5t YXgoMCwtTWF0aC5sb2coaSkvTWF0aC5MTjEwKSkrMyxuLmZvcm1hdCgiLiIr cisiZyIpKE1hdGgucG93KDEwLGEpKSk6KHI9TWF0aC5mbG9vcihNYXRoLmxv ZyhNYXRoLmFicyhhKSkvTWF0aC5MTjEwKS1NYXRoLmZsb29yKE1hdGgubG9n KGkpL01hdGguTE4xMCkrNCxuLmZvcm1hdCgiLiIrU3RyaW5nKHIpKyJnIiko YSkpfShzLGMpLHA9ImxlZnQiLGQ9Im1pZGRsZSI7aWYocy5maXhlZHJhbmdl KXJldHVybjtTPyhkPSJuIj09PVM/InRvcCI6ImJvdHRvbSIsInJpZ2h0Ij09 PXMuc2lkZSYmKHA9InJpZ2h0IikpOiJlIj09PUUmJihwPSJyaWdodCIpLHQu X2NvbnRleHQuc2hvd0F4aXNSYW5nZUVudHJ5Qm94ZXMmJm4uc2VsZWN0KHZ0 KS5jYWxsKGwubWFrZUVkaXRhYmxlLHtnZDp0LGltbWVkaWF0ZTohMCxiYWNr Z3JvdW5kOnQuX2Z1bGxMYXlvdXQucGFwZXJfYmdjb2xvcix0ZXh0OlN0cmlu ZyhmKSxmaWxsOnMudGlja2ZvbnQ/cy50aWNrZm9udC5jb2xvcjoiIzQ0NCIs aG9yaXpvbnRhbEFsaWduOnAsdmVydGljYWxBbGlnbjpkfSkub24oImVkaXQi LGZ1bmN0aW9uKGUpe3ZhciByPXMuZDJyKGUpO3ZvaWQgMCE9PXImJm8uY2Fs bCgiX2d1aVJlbGF5b3V0Iix0LHUscil9KX19ZnVuY3Rpb24gQ3QoZSxyKXtp Zih0Ll90cmFuc2l0aW9uaW5nV2l0aER1cmF0aW9uKXJldHVybiExO3ZhciBu PU1hdGgubWF4KDAsTWF0aC5taW4oUSxlK210KSksYT1NYXRoLm1heCgwLE1h dGgubWluKCQscit5dCkpLGk9TWF0aC5hYnMobi1tdCksbz1NYXRoLmFicyhh LXl0KTtmdW5jdGlvbiBzKCl7a3Q9IiIseHQucj14dC5sLHh0LnQ9eHQuYixN dC5hdHRyKCJkIiwiTTAsMFoiKX1pZih4dC5sPU1hdGgubWluKG10LG4pLHh0 LnI9TWF0aC5tYXgobXQsbikseHQudD1NYXRoLm1pbih5dCxhKSx4dC5iPU1h dGgubWF4KHl0LGEpLHR0LmlzU3VicGxvdENvbnN0cmFpbmVkKWk+QXx8bz5B PyhrdD0ieHkiLGkvUT5vLyQ/KG89aSokL1EseXQ+YT94dC50PXl0LW86eHQu Yj15dCtvKTooaT1vKlEvJCxtdD5uP3h0Lmw9bXQtaTp4dC5yPW10K2kpLE10 LmF0dHIoImQiLFYoeHQpKSk6cygpO2Vsc2UgaWYoZXQuaXNTdWJwbG90Q29u c3RyYWluZWQpaWYoaT5BfHxvPkEpe2t0PSJ4eSI7dmFyIGw9TWF0aC5taW4o eHQubC9RLCgkLXh0LmIpLyQpLGM9TWF0aC5tYXgoeHQuci9RLCgkLXh0LnQp LyQpO3h0Lmw9bCpRLHh0LnI9YypRLHh0LmI9KDEtbCkqJCx4dC50PSgxLWMp KiQsTXQuYXR0cigiZCIsVih4dCkpfWVsc2UgcygpO2Vsc2UhbnR8fG88TWF0 aC5taW4oTWF0aC5tYXgoLjYqaSxNKSxBKT9pPE18fCFydD9zKCk6KHh0LnQ9 MCx4dC5iPSQsa3Q9IngiLE10LmF0dHIoImQiLGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIk0iKyh0LmwtLjUpKyIsIisoZS1BLS41KSsiaC0zdiIrKDIqQSsxKSsi aDNaTSIrKHQucisuNSkrIiwiKyhlLUEtLjUpKyJoM3YiKygyKkErMSkrImgt M1oifSh4dCx5dCkpKTohcnR8fGk8TWF0aC5taW4oLjYqbyxBKT8oeHQubD0w LHh0LnI9USxrdD0ieSIsTXQuYXR0cigiZCIsZnVuY3Rpb24odCxlKXtyZXR1 cm4iTSIrKGUtQS0uNSkrIiwiKyh0LnQtLjUpKyJ2LTNoIisoMipBKzEpKyJ2 M1pNIisoZS1BLS41KSsiLCIrKHQuYisuNSkrInYzaCIrKDIqQSsxKSsidi0z WiJ9KHh0LG10KSkpOihrdD0ieHkiLE10LmF0dHIoImQiLFYoeHQpKSk7eHQu dz14dC5yLXh0LmwseHQuaD14dC5iLXh0LnQsa3QmJihBdD0hMCksdC5fZHJh Z2dlZD1BdCxSKFR0LE10LHh0LF90LHd0LGJ0KSxQdCgpLHQuZW1pdCgicGxv dGx5X3JlbGF5b3V0aW5nIix1dCksd3Q9ITB9ZnVuY3Rpb24gUHQoKXt1dD17 fSwieHkiIT09a3QmJiJ4IiE9PWt0fHwoUChYLHh0LmwvUSx4dC5yL1EsdXQs dHQueGF4ZXMpLEJ0KCJ4Iix1dCkpLCJ4eSIhPT1rdCYmInkiIT09a3R8fChQ KFosKCQteHQuYikvJCwoJC14dC50KS8kLHV0LHR0LnlheGVzKSxCdCgieSIs dXQpKX1mdW5jdGlvbiBPdCgpe1B0KCksQih0KSxqdCgpLE4odCl9U3QucHJl cEZuPWZ1bmN0aW9uKGUscixuKXt2YXIgaT1TdC5kcmFnbW9kZSxvPXQuX2Z1 bGxMYXlvdXQuZHJhZ21vZGU7byE9PWkmJihTdC5kcmFnbW9kZT1vKSxkdCgp LGF0fHwoZnQ/ZS5zaGlmdEtleT8icGFuIj09PW8/bz0iem9vbSI6aihvKXx8 KG89InBhbiIpOmUuY3RybEtleSYmKG89InBhbiIpOm89InBhbiIpLFN0Lm1p bkRyYWc9Imxhc3NvIj09PW8/MTp2b2lkIDAsaihvKT8oU3QueGF4ZXM9WCxT dC55YXhlcz1aLGIoZSxyLG4sU3QsbykpOihTdC5jbGlja0ZuPUx0LGooaSkm JkV0KCksYXR8fCgiem9vbSI9PT1vPyhTdC5tb3ZlRm49Q3QsU3QuZG9uZUZu PU90LFN0Lm1pbkRyYWc9MSxmdW5jdGlvbihlLHIsbil7dmFyIGk9dnQuZ2V0 Qm91bmRpbmdDbGllbnRSZWN0KCk7bXQ9ci1pLmxlZnQseXQ9bi1pLnRvcCx4 dD17bDptdCxyOm10LHc6MCx0Onl0LGI6eXQsaDowfSxidD10Ll9obXBpeGNv dW50P3QuX2htbHVtY291bnQvdC5faG1waXhjb3VudDphKHQuX2Z1bGxMYXlv dXQucGxvdF9iZ2NvbG9yKS5nZXRMdW1pbmFuY2UoKSx3dD0hMSxrdD0ieHki LEF0PSExLFR0PUkoaHQsYnQsSixLLF90PSJNMCwwSCIrUSsiViIrJCsiSDBW MCIpLE10PUQoaHQsSixLKX0oMCxyLG4pKToicGFuIj09PW8mJihTdC5tb3Zl Rm49RnQsU3QuZG9uZUZuPWp0KSkpLHQuX2Z1bGxMYXlvdXQuX3JlZHJhZz1m dW5jdGlvbigpe3ZhciBlPXQuX2RyYWdkYXRhO2UmJmUuZWxlbWVudD09PXZ0 JiYoaih0Ll9mdWxsTGF5b3V0LmRyYWdtb2RlKXx8KGR0KCksVnQoWzAsMCxR LCRdKSxTdC5tb3ZlRm4oZS5keCxlLmR5KSkpfX0sZC5pbml0KFN0KTt2YXIg enQ9WzAsMCxRLCRdLEl0PW51bGwsRHQ9VC5SRURSQVdERUxBWSxSdD1lLm1h aW5wbG90P3QuX2Z1bGxMYXlvdXQuX3Bsb3RzW2UubWFpbnBsb3RdOmU7ZnVu Y3Rpb24gRnQoZSxyKXtpZighdC5fdHJhbnNpdGlvbmluZ1dpdGhEdXJhdGlv bil7aWYodC5fZnVsbExheW91dC5fcmVwbG90dGluZz0hMCwiZXciPT09cnR8 fCJucyI9PT1udClyZXR1cm4gcnQmJihPKFgsZSksQnQoIngiKSksbnQmJihP KFosciksQnQoInkiKSksVnQoW3J0Py1lOjAsbnQ/LXI6MCxRLCRdKSxOdCgp LHZvaWQgdC5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLHV0KTtpZih0dC5p c1N1YnBsb3RDb25zdHJhaW5lZCYmcnQmJm50KXt2YXIgbj0idyI9PT1ydD09 KCJuIj09PW50KT8xOi0xLGE9KGUvUStuKnIvJCkvMjtlPWEqUSxyPW4qYSok fSJ3Ij09PXJ0P2U9bChYLDAsZSk6ImUiPT09cnQ/ZT1sKFgsMSwtZSk6cnR8 fChlPTApLCJuIj09PW50P3I9bChaLDEscik6InMiPT09bnQ/cj1sKFosMCwt cik6bnR8fChyPTApO3ZhciBpPSJ3Ij09PXJ0P2U6MCxvPSJuIj09PW50P3I6 MDtpZih0dC5pc1N1YnBsb3RDb25zdHJhaW5lZCl7dmFyIHM7aWYoIXJ0JiYx PT09bnQubGVuZ3RoKXtmb3Iocz0wO3M8WC5sZW5ndGg7cysrKVhbc10ucmFu Z2U9WFtzXS5fci5zbGljZSgpLGsoWFtzXSwxLXIvJCk7aT0oZT1yKlEvJCkv Mn1pZighbnQmJjE9PT1ydC5sZW5ndGgpe2ZvcihzPTA7czxaLmxlbmd0aDtz KyspWltzXS5yYW5nZT1aW3NdLl9yLnNsaWNlKCksayhaW3NdLDEtZS9RKTtv PShyPWUqJC9RKS8yfX1CdCgieCIpLEJ0KCJ5IiksVnQoW2ksbyxRLWUsJC1y XSksTnQoKSx0LmVtaXQoInBsb3RseV9yZWxheW91dGluZyIsdXQpfWZ1bmN0 aW9uIGwodCxlLHIpe2Zvcih2YXIgbixhLGk9MS1lLG89MDtvPHQubGVuZ3Ro O28rKyl7dmFyIHM9dFtvXTtpZighcy5maXhlZHJhbmdlKXtuPXMsYT1zLl9y bFtpXSsocy5fcmxbZV0tcy5fcmxbaV0pL3ooci9zLl9sZW5ndGgpO3ZhciBs PXMubDJyKGEpOyExIT09bCYmdm9pZCAwIT09bCYmKHMucmFuZ2VbZV09bCl9 fXJldHVybiBuLl9sZW5ndGgqKG4uX3JsW2VdLWEpLyhuLl9ybFtlXS1uLl9y bFtpXSl9fWZ1bmN0aW9uIEJ0KHQsZSl7Zm9yKHZhciByPWV0LmlzU3VicGxv dENvbnN0cmFpbmVkP3t4OloseTpYfVt0XTpldFt0KyJheGVzIl0sbj1ldC5p c1N1YnBsb3RDb25zdHJhaW5lZD97eDpYLHk6Wn1bdF06W10sYT0wO2E8ci5s ZW5ndGg7YSsrKXt2YXIgaT1yW2FdLG89aS5faWQscz1ldC54TGlua3Nbb118 fGV0LnlMaW5rc1tvXSxsPW5bMF18fFlbc118fFdbc107bCYmKGU/KGVbaS5f bmFtZSsiLnJhbmdlWzBdIl09ZVtsLl9uYW1lKyIucmFuZ2VbMF0iXSxlW2ku X25hbWUrIi5yYW5nZVsxXSJdPWVbbC5fbmFtZSsiLnJhbmdlWzFdIl0pOmku cmFuZ2U9bC5yYW5nZS5zbGljZSgpKX19ZnVuY3Rpb24gTnQoKXt2YXIgZSxy PVtdO2Z1bmN0aW9uIG4odCl7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2Vd LmZpeGVkcmFuZ2V8fHIucHVzaCh0W2VdLl9pZCl9Zm9yKGl0JiYobihYKSxu KHR0LnhheGVzKSxuKGV0LnhheGVzKSksb3QmJihuKFopLG4odHQueWF4ZXMp LG4oZXQueWF4ZXMpKSx1dD17fSxlPTA7ZTxyLmxlbmd0aDtlKyspe3ZhciBh PXJbZV0saT14KHQsYSk7Zi5kcmF3T25lKHQsaSx7c2tpcFRpdGxlOiEwfSks dXRbaS5fbmFtZSsiLnJhbmdlWzBdIl09aS5yYW5nZVswXSx1dFtpLl9uYW1l KyIucmFuZ2VbMV0iXT1pLnJhbmdlWzFdfWYucmVkcmF3Q29tcG9uZW50cyh0 LHIpfWZ1bmN0aW9uIGp0KCl7VnQoWzAsMCxRLCRdKSxzLnN5bmNPckFzeW5j KFt5LnByZXZpb3VzUHJvbWlzZXMsZnVuY3Rpb24oKXt0Ll9mdWxsTGF5b3V0 Ll9yZXBsb3R0aW5nPSExLG8uY2FsbCgiX2d1aVJlbGF5b3V0Iix0LHV0KX1d LHQpfWZ1bmN0aW9uIFZ0KGUpe3ZhciByLG4sYSxpLGw9dC5fZnVsbExheW91 dCxjPWwuX3Bsb3RzLGg9bC5fc3VicGxvdHMuY2FydGVzaWFuO2lmKGx0JiZv LnN1YnBsb3RzUmVnaXN0cnkuc3Bsb20uZHJhZyh0KSxzdClmb3Iocj0wO3I8 aC5sZW5ndGg7cisrKWlmKGE9KG49Y1toW3JdXSkueGF4aXMsaT1uLnlheGlz LG4uX3NjZW5lKXt2YXIgZj1zLnNpbXBsZU1hcChhLnJhbmdlLGEucjJsKSxw PXMuc2ltcGxlTWFwKGkucmFuZ2UsaS5yMmwpO24uX3NjZW5lLnVwZGF0ZSh7 cmFuZ2U6W2ZbMF0scFswXSxmWzFdLHBbMV1dfSl9aWYoKGx0fHxzdCkmJih2 KHQpLG0odCkpLGN0KXt2YXIgZD1lWzJdL0YuX2xlbmd0aCxnPWVbM10vRy5f bGVuZ3RoO2ZvcihyPTA7cjxoLmxlbmd0aDtyKyspe2E9KG49Y1toW3JdXSku eGF4aXMsaT1uLnlheGlzO3ZhciB5LHgsYixfLHc9aXQmJiFhLmZpeGVkcmFu Z2UmJllbYS5faWRdLGs9b3QmJiFpLmZpeGVkcmFuZ2UmJldbaS5faWRdO2lm KHc/KHk9ZCxiPUU/ZVswXTpIdChhLHkpKTpldC54YUhhc2hbYS5faWRdPyh5 PWQsYj1lWzBdKmEuX2xlbmd0aC9GLl9sZW5ndGgpOmV0LnlhSGFzaFthLl9p ZF0/KHk9ZyxiPSJucyI9PT1udD8tZVsxXSphLl9sZW5ndGgvRy5fbGVuZ3Ro Okh0KGEseSx7bjoidG9wIixzOiJib3R0b20ifVtudF0pKTpiPXF0KGEseT1V dChhLGQsZykpLGs/KHg9ZyxfPVM/ZVsxXTpIdChpLHgpKTpldC55YUhhc2hb aS5faWRdPyh4PWcsXz1lWzFdKmkuX2xlbmd0aC9HLl9sZW5ndGgpOmV0Lnhh SGFzaFtpLl9pZF0/KHg9ZCxfPSJldyI9PT1ydD8tZVswXSppLl9sZW5ndGgv Ri5fbGVuZ3RoOkh0KGkseCx7ZToicmlnaHQiLHc6ImxlZnQifVtydF0pKTpf PXF0KGkseD1VdChpLGQsZykpLHl8fHgpe3l8fCh5PTEpLHh8fCh4PTEpO3Zh ciBUPWEuX29mZnNldC1iL3ksTT1pLl9vZmZzZXQtXy94O24uY2xpcFJlY3Qu Y2FsbCh1LnNldFRyYW5zbGF0ZSxiLF8pLmNhbGwodS5zZXRTY2FsZSx5LHgp LG4ucGxvdC5jYWxsKHUuc2V0VHJhbnNsYXRlLFQsTSkuY2FsbCh1LnNldFNj YWxlLDEveSwxL3gpLHk9PT1uLnhTY2FsZUZhY3RvciYmeD09PW4ueVNjYWxl RmFjdG9yfHwodS5zZXRQb2ludEdyb3VwU2NhbGUobi56b29tU2NhbGVQdHMs eSx4KSx1LnNldFRleHRQb2ludHNTY2FsZShuLnpvb21TY2FsZVR4dCx5LHgp KSx1LmhpZGVPdXRzaWRlUmFuZ2VQb2ludHMobi5jbGlwT25BeGlzRmFsc2VU cmFjZXMsbiksbi54U2NhbGVGYWN0b3I9eSxuLnlTY2FsZUZhY3Rvcj14fX19 fWZ1bmN0aW9uIFV0KHQsZSxyKXtyZXR1cm4gdC5maXhlZHJhbmdlPzA6aXQm JnR0LnhhSGFzaFt0Ll9pZF0/ZTpvdCYmKHR0LmlzU3VicGxvdENvbnN0cmFp bmVkP3R0LnhhSGFzaDp0dC55YUhhc2gpW3QuX2lkXT9yOjB9ZnVuY3Rpb24g cXQodCxlKXtyZXR1cm4gZT8odC5yYW5nZT10Ll9yLnNsaWNlKCksayh0LGUp LEh0KHQsZSkpOjB9ZnVuY3Rpb24gSHQodCxlLHIpe3JldHVybiB0Ll9sZW5n dGgqKDEtZSkqZ1tyfHx0LmNvbnN0cmFpbnRvd2FyZHx8Im1pZGRsZSJdfXJl dHVybiBTLmxlbmd0aCpFLmxlbmd0aCE9MSYmcSh2dCxmdW5jdGlvbihlKXtp Zih0Ll9jb250ZXh0Ll9zY3JvbGxab29tLmNhcnRlc2lhbnx8dC5fZnVsbExh eW91dC5fZW5hYmxlc2Nyb2xsem9vbSl7aWYoRXQoKSx0Ll90cmFuc2l0aW9u aW5nV2l0aER1cmF0aW9uKXJldHVybiBlLnByZXZlbnREZWZhdWx0KCksdm9p ZCBlLnN0b3BQcm9wYWdhdGlvbigpO2R0KCksY2xlYXJUaW1lb3V0KEl0KTt2 YXIgcj0tZS5kZWx0YVk7aWYoaXNGaW5pdGUocil8fChyPWUud2hlZWxEZWx0 YS8xMCksaXNGaW5pdGUocikpe3ZhciBuLGE9TWF0aC5leHAoLU1hdGgubWlu KE1hdGgubWF4KHIsLTIwKSwyMCkvMjAwKSxpPVJ0LmRyYWdsYXllci5zZWxl Y3QoIi5uc2V3ZHJhZyIpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo KSxvPShlLmNsaWVudFgtaS5sZWZ0KS9pLndpZHRoLGw9KGkuYm90dG9tLWUu Y2xpZW50WSkvaS5oZWlnaHQ7aWYoaXQpe2ZvcihFfHwobz0uNSksbj0wO248 WC5sZW5ndGg7bisrKWMoWFtuXSxvLGEpO0J0KCJ4IiksenRbMl0qPWEsenRb MF0rPXp0WzJdKm8qKDEvYS0xKX1pZihvdCl7Zm9yKFN8fChsPS41KSxuPTA7 bjxaLmxlbmd0aDtuKyspYyhaW25dLGwsYSk7QnQoInkiKSx6dFszXSo9YSx6 dFsxXSs9enRbM10qKDEtbCkqKDEvYS0xKX1WdCh6dCksTnQoKSx0LmVtaXQo InBsb3RseV9yZWxheW91dGluZyIsdXQpLEl0PXNldFRpbWVvdXQoZnVuY3Rp b24oKXt6dD1bMCwwLFEsJF0sanQoKX0sRHQpLGUucHJldmVudERlZmF1bHQo KX1lbHNlIHMubG9nKCJEaWQgbm90IGZpbmQgd2hlZWwgbW90aW9uIGF0dHJp YnV0ZXM6ICIsZSl9ZnVuY3Rpb24gYyh0LGUscil7aWYoIXQuZml4ZWRyYW5n ZSl7dmFyIG49cy5zaW1wbGVNYXAodC5yYW5nZSx0LnIybCksYT1uWzBdKyhu WzFdLW5bMF0pKmU7dC5yYW5nZT1uLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g dC5sMnIoYSsoZS1hKSpyKX0pfX19KSx2dH0sbWFrZURyYWdnZXI6RSxtYWtl UmVjdERyYWdnZXI6TCxtYWtlWm9vbWJveDpJLG1ha2VDb3JuZXJzOkQsdXBk YXRlWm9vbWJveDpSLHh5Q29ybmVyczpWLHRyYW5zaXRpb25ab29tYm94OkYs cmVtb3ZlWm9vbWJveDpCLHNob3dEb3VibGVDbGlja05vdGlmaWVyOk4sYXR0 YWNoV2hlZWxFdmVudEhhbmRsZXI6cX19LHsiLi4vLi4vY29tcG9uZW50cy9j b2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50Ijo2MTAs Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb21wb25l bnRzL2Z4Ijo2MzAsIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjY4Niwi Li4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9jbGVhcl9nbF9jYW52YXNlcyI6 NzAyLCIuLi8uLi9saWIvc2V0Y3Vyc29yIjo3MzcsIi4uLy4uL2xpYi9zdmdf dGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90X2FwaS9zdWJyb3V0aW5lcyI6 NzU2LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9wbG90cyI6ODI2LCIuL2F4 ZXMiOjc2NSwiLi9heGlzX2lkcyI6NzY4LCIuL2NvbnN0YW50cyI6NzcxLCIu L3NjYWxlX3pvb20iOjc4MSwiLi9zZWxlY3QiOjc4MixkMzoxNjUsImhhcy1w YXNzaXZlLWV2ZW50cyI6NDEzLHRpbnljb2xvcjI6NTM2fV0sNzc0OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIu Li8uLi9jb21wb25lbnRzL2Z4IiksaT10KCIuLi8uLi9jb21wb25lbnRzL2Ry YWdlbGVtZW50Iiksbz10KCIuLi8uLi9saWIvc2V0Y3Vyc29yIikscz10KCIu L2RyYWdib3giKS5tYWtlRHJhZ0JveCxsPXQoIi4vY29uc3RhbnRzIikuRFJB R0dFUlNJWkU7ci5pbml0SW50ZXJhY3Rpb25zPWZ1bmN0aW9uKHQpe3ZhciBl PXQuX2Z1bGxMYXlvdXQ7aWYodC5fY29udGV4dC5zdGF0aWNQbG90KW4uc2Vs ZWN0KHQpLnNlbGVjdEFsbCgiLmRyYWciKS5yZW1vdmUoKTtlbHNlIGlmKGUu X2hhcygiY2FydGVzaWFuIil8fGUuX2hhcygic3Bsb20iKSl7T2JqZWN0Lmtl eXMoZS5fcGxvdHN8fHt9KS5zb3J0KGZ1bmN0aW9uKHQscil7aWYoKGUuX3Bs b3RzW3RdLm1haW5wbG90JiYhMCk9PT0oZS5fcGxvdHNbcl0ubWFpbnBsb3Qm JiEwKSl7dmFyIG49dC5zcGxpdCgieSIpLGE9ci5zcGxpdCgieSIpO3JldHVy biBuWzBdPT09YVswXT9OdW1iZXIoblsxXXx8MSktTnVtYmVyKGFbMV18fDEp Ok51bWJlcihuWzBdfHwxKS1OdW1iZXIoYVswXXx8MSl9cmV0dXJuIGUuX3Bs b3RzW3RdLm1haW5wbG90PzE6LTF9KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3Zh ciBuPWUuX3Bsb3RzW3JdLG89bi54YXhpcyxjPW4ueWF4aXM7aWYoIW4ubWFp bnBsb3Qpe3ZhciB1PXModCxuLG8uX29mZnNldCxjLl9vZmZzZXQsby5fbGVu Z3RoLGMuX2xlbmd0aCwibnMiLCJldyIpO3Uub25tb3VzZW1vdmU9ZnVuY3Rp b24oZSl7dC5fZnVsbExheW91dC5fcmVob3Zlcj1mdW5jdGlvbigpe3QuX2Z1 bGxMYXlvdXQuX2hvdmVyc3VicGxvdD09PXImJnQuX2Z1bGxMYXlvdXQuX3Bs b3RzW3JdJiZhLmhvdmVyKHQsZSxyKX0sYS5ob3Zlcih0LGUsciksdC5fZnVs bExheW91dC5fbGFzdGhvdmVyPXUsdC5fZnVsbExheW91dC5faG92ZXJzdWJw bG90PXJ9LHUub25tb3VzZW91dD1mdW5jdGlvbihlKXt0Ll9kcmFnZ2luZ3x8 KHQuX2Z1bGxMYXlvdXQuX2hvdmVyc3VicGxvdD1udWxsLGkudW5ob3Zlcih0 LGUpKX0sdC5fY29udGV4dC5zaG93QXhpc0RyYWdIYW5kbGVzJiYocyh0LG4s by5fb2Zmc2V0LWwsYy5fb2Zmc2V0LWwsbCxsLCJuIiwidyIpLHModCxuLG8u X29mZnNldCtvLl9sZW5ndGgsYy5fb2Zmc2V0LWwsbCxsLCJuIiwiZSIpLHMo dCxuLG8uX29mZnNldC1sLGMuX29mZnNldCtjLl9sZW5ndGgsbCxsLCJzIiwi dyIpLHModCxuLG8uX29mZnNldCtvLl9sZW5ndGgsYy5fb2Zmc2V0K2MuX2xl bmd0aCxsLGwsInMiLCJlIikpfWlmKHQuX2NvbnRleHQuc2hvd0F4aXNEcmFn SGFuZGxlcyl7aWYocj09PW8uX21haW5TdWJwbG90KXt2YXIgaD1vLl9tYWlu TGluZVBvc2l0aW9uOyJ0b3AiPT09by5zaWRlJiYoaC09bCkscyh0LG4sby5f b2Zmc2V0Ky4xKm8uX2xlbmd0aCxoLC44Km8uX2xlbmd0aCxsLCIiLCJldyIp LHModCxuLG8uX29mZnNldCxoLC4xKm8uX2xlbmd0aCxsLCIiLCJ3Iikscyh0 LG4sby5fb2Zmc2V0Ky45Km8uX2xlbmd0aCxoLC4xKm8uX2xlbmd0aCxsLCIi LCJlIil9aWYocj09PWMuX21haW5TdWJwbG90KXt2YXIgZj1jLl9tYWluTGlu ZVBvc2l0aW9uOyJyaWdodCIhPT1jLnNpZGUmJihmLT1sKSxzKHQsbixmLGMu X29mZnNldCsuMSpjLl9sZW5ndGgsbCwuOCpjLl9sZW5ndGgsIm5zIiwiIiks cyh0LG4sZixjLl9vZmZzZXQrLjkqYy5fbGVuZ3RoLGwsLjEqYy5fbGVuZ3Ro LCJzIiwiIikscyh0LG4sZixjLl9vZmZzZXQsbCwuMSpjLl9sZW5ndGgsIm4i LCIiKX19fSk7dmFyIG89ZS5faG92ZXJsYXllci5ub2RlKCk7by5vbm1vdXNl bW92ZT1mdW5jdGlvbihyKXtyLnRhcmdldD10Ll9mdWxsTGF5b3V0Ll9sYXN0 aG92ZXIsYS5ob3Zlcih0LHIsZS5faG92ZXJzdWJwbG90KX0sby5vbmNsaWNr PWZ1bmN0aW9uKGUpe2UudGFyZ2V0PXQuX2Z1bGxMYXlvdXQuX2xhc3Rob3Zl cixhLmNsaWNrKHQsZSl9LG8ub25tb3VzZWRvd249ZnVuY3Rpb24oZSl7dC5f ZnVsbExheW91dC5fbGFzdGhvdmVyLm9ubW91c2Vkb3duKGUpfSxyLnVwZGF0 ZUZ4KHQpfX0sci51cGRhdGVGeD1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxs TGF5b3V0LHI9InBhbiI9PT1lLmRyYWdtb2RlPyJtb3ZlIjoiY3Jvc3NoYWly IjtvKGUuX2RyYWdnZXJzLHIpfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYWdl bGVtZW50Ijo2MTAsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4v bGliL3NldGN1cnNvciI6NzM3LCIuL2NvbnN0YW50cyI6NzcxLCIuL2RyYWdi b3giOjc3MyxkMzoxNjV9XSw3NzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xp YiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxy KXt2YXIgaT1lW3RdO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKHZhciBvPW4u c3VicGxvdHNSZWdpc3RyeS5jYXJ0ZXNpYW4scz1vLmlkUmVnZXgsbD1yLl9z dWJwbG90cyxjPWwueGF4aXMsdT1sLnlheGlzLGg9bC5jYXJ0ZXNpYW4sZj1y Ll9oYXMoImNhcnRlc2lhbiIpfHxyLl9oYXMoImdsMmQiKSxwPTA7cDxpLmxl bmd0aDtwKyspe3ZhciBkPWlbcF07aWYoYS5pc1BsYWluT2JqZWN0KGQpKXt2 YXIgZz1kLnhyZWYsdj1kLnlyZWYsbT1zLngudGVzdChnKSx5PXMueS50ZXN0 KHYpO2lmKG18fHkpe2Z8fGEucHVzaFVuaXF1ZShyLl9iYXNlUGxvdE1vZHVs ZXMsbyk7dmFyIHg9ITE7bSYmLTE9PT1jLmluZGV4T2YoZykmJihjLnB1c2go ZykseD0hMCkseSYmLTE9PT11LmluZGV4T2YodikmJih1LnB1c2godikseD0h MCkseCYmbSYmeSYmaC5wdXNoKGcrdil9fX19fX0seyIuLi8uLi9saWIiOjcx NywiLi4vLi4vcmVnaXN0cnkiOjg0Nn1dLDc3NjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcmVnaXN0 cnkiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vcGxvdHMiKSxzPXQoIi4u Ly4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGw9dCgiLi4vZ2V0X2RhdGEiKS5n ZXRNb2R1bGVDYWxjRGF0YSxjPXQoIi4vYXhpc19pZHMiKSx1PXQoIi4vY29u c3RhbnRzIiksaD10KCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNl cyIpLGY9aS5lbnN1cmVTaW5nbGU7ZnVuY3Rpb24gcCh0LGUscil7cmV0dXJu IGkuZW5zdXJlU2luZ2xlKHQsZSxyLGZ1bmN0aW9uKHQpe3QuZGF0dW0ocil9 KX1mdW5jdGlvbiBkKHQsZSxyLGksbyl7Zm9yKHZhciBjLGgsZixwPXUudHJh Y2VMYXllckNsYXNzZXMsZD10Ll9mdWxsTGF5b3V0LGc9ZC5fbW9kdWxlcyx2 PVtdLG09W10seT0wO3k8Zy5sZW5ndGg7eSsrKXt2YXIgeD0oYz1nW3ldKS5u YW1lLGI9YS5tb2R1bGVzW3hdLmNhdGVnb3JpZXM7aWYoYi5zdmcpe3ZhciBf PWMubGF5ZXJOYW1lfHx4KyJsYXllciIsdz1jLnBsb3Q7Zj0oaD1sKHIsdykp WzBdLHI9aFsxXSxmLmxlbmd0aCYmdi5wdXNoKHtpOnAuaW5kZXhPZihfKSxj bGFzc05hbWU6XyxwbG90TWV0aG9kOncsY2RNb2R1bGU6Zn0pLGIuem9vbVNj YWxlJiZtLnB1c2goIi4iK18pfX12LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1 cm4gdC5pLWUuaX0pO3ZhciBrPWUucGxvdC5zZWxlY3RBbGwoImcubWxheWVy IikuZGF0YSh2LGZ1bmN0aW9uKHQpe3JldHVybiB0LmNsYXNzTmFtZX0pO2lm KGsuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24o dCl7cmV0dXJuIHQuY2xhc3NOYW1lfSkuY2xhc3NlZCgibWxheWVyIiwhMCku Y2xhc3NlZCgicmFuZ2VwbG90IixlLmlzUmFuZ2VQbG90KSxrLmV4aXQoKS5y ZW1vdmUoKSxrLm9yZGVyKCksay5lYWNoKGZ1bmN0aW9uKHIpe3ZhciBhPW4u c2VsZWN0KHRoaXMpLGw9ci5jbGFzc05hbWU7ci5wbG90TWV0aG9kKHQsZSxy LmNkTW9kdWxlLGEsaSxvKSwtMT09PXUuY2xpcE9uQXhpc0ZhbHNlUXVlcnku aW5kZXhPZigiLiIrbCkmJnMuc2V0Q2xpcFVybChhLGUubGF5ZXJDbGlwSWQs dCl9KSxkLl9oYXMoInNjYXR0ZXJnbCIpJiYoYz1hLmdldE1vZHVsZSgic2Nh dHRlcmdsIiksZj1sKHIsYylbMF0sYy5wbG90KHQsZSxmKSksIXQuX2NvbnRl eHQuc3RhdGljUGxvdCYmKGUuX2hhc0NsaXBPbkF4aXNGYWxzZSYmKGUuY2xp cE9uQXhpc0ZhbHNlVHJhY2VzPWUucGxvdC5zZWxlY3RBbGwodS5jbGlwT25B eGlzRmFsc2VRdWVyeS5qb2luKCIsIikpLnNlbGVjdEFsbCgiLnRyYWNlIikp LG0ubGVuZ3RoKSl7dmFyIFQ9ZS5wbG90LnNlbGVjdEFsbChtLmpvaW4oIiwi KSkuc2VsZWN0QWxsKCIudHJhY2UiKTtlLnpvb21TY2FsZVB0cz1ULnNlbGVj dEFsbCgicGF0aC5wb2ludCIpLGUuem9vbVNjYWxlVHh0PVQuc2VsZWN0QWxs KCIudGV4dHBvaW50Iil9fWZ1bmN0aW9uIGcodCxlKXt2YXIgcj1lLnBsb3Rn cm91cCxuPWUuaWQsYT11LmxheWVyVmFsdWUybGF5ZXJDbGFzc1tlLnhheGlz LmxheWVyXSxpPXUubGF5ZXJWYWx1ZTJsYXllckNsYXNzW2UueWF4aXMubGF5 ZXJdLG89dC5fZnVsbExheW91dC5faGFzT25seUxhcmdlU3Bsb21zO2lmKGUu bWFpbnBsb3Qpe3ZhciBzPWUubWFpbnBsb3RpbmZvLGw9cy5wbG90Z3JvdXAs aD1uKyIteCIsZD1uKyIteSI7ZS5ncmlkbGF5ZXI9cy5ncmlkbGF5ZXIsZS56 ZXJvbGluZWxheWVyPXMuemVyb2xpbmVsYXllcixmKHMub3ZlcmxpbmVzQmVs b3csInBhdGgiLGgpLGYocy5vdmVybGluZXNCZWxvdywicGF0aCIsZCksZihz Lm92ZXJheGVzQmVsb3csImciLGgpLGYocy5vdmVyYXhlc0JlbG93LCJnIixk KSxlLnBsb3Q9ZihzLm92ZXJwbG90LCJnIixuKSxmKHMub3ZlcmxpbmVzQWJv dmUsInBhdGgiLGgpLGYocy5vdmVybGluZXNBYm92ZSwicGF0aCIsZCksZihz Lm92ZXJheGVzQWJvdmUsImciLGgpLGYocy5vdmVyYXhlc0Fib3ZlLCJnIixk KSxlLnhsaW5lcz1sLnNlbGVjdCgiLm92ZXJsaW5lcy0iK2EpLnNlbGVjdCgi LiIraCksZS55bGluZXM9bC5zZWxlY3QoIi5vdmVybGluZXMtIitpKS5zZWxl Y3QoIi4iK2QpLGUueGF4aXNsYXllcj1sLnNlbGVjdCgiLm92ZXJheGVzLSIr YSkuc2VsZWN0KCIuIitoKSxlLnlheGlzbGF5ZXI9bC5zZWxlY3QoIi5vdmVy YXhlcy0iK2kpLnNlbGVjdCgiLiIrZCl9ZWxzZSBpZihvKWUueGxpbmVzPWYo ciwicGF0aCIsInhsaW5lcy1hYm92ZSIpLGUueWxpbmVzPWYociwicGF0aCIs InlsaW5lcy1hYm92ZSIpLGUueGF4aXNsYXllcj1mKHIsImciLCJ4YXhpc2xh eWVyLWFib3ZlIiksZS55YXhpc2xheWVyPWYociwiZyIsInlheGlzbGF5ZXIt YWJvdmUiKTtlbHNle3ZhciBnPWYociwiZyIsImxheWVyLXN1YnBsb3QiKTtl LnNoYXBlbGF5ZXI9ZihnLCJnIiwic2hhcGVsYXllciIpLGUuaW1hZ2VsYXll cj1mKGcsImciLCJpbWFnZWxheWVyIiksZS5ncmlkbGF5ZXI9ZihyLCJnIiwi Z3JpZGxheWVyIiksZS56ZXJvbGluZWxheWVyPWYociwiZyIsInplcm9saW5l bGF5ZXIiKSxmKHIsInBhdGgiLCJ4bGluZXMtYmVsb3ciKSxmKHIsInBhdGgi LCJ5bGluZXMtYmVsb3ciKSxlLm92ZXJsaW5lc0JlbG93PWYociwiZyIsIm92 ZXJsaW5lcy1iZWxvdyIpLGYociwiZyIsInhheGlzbGF5ZXItYmVsb3ciKSxm KHIsImciLCJ5YXhpc2xheWVyLWJlbG93IiksZS5vdmVyYXhlc0JlbG93PWYo ciwiZyIsIm92ZXJheGVzLWJlbG93IiksZS5wbG90PWYociwiZyIsInBsb3Qi KSxlLm92ZXJwbG90PWYociwiZyIsIm92ZXJwbG90IiksZS54bGluZXM9Zihy LCJwYXRoIiwieGxpbmVzLWFib3ZlIiksZS55bGluZXM9ZihyLCJwYXRoIiwi eWxpbmVzLWFib3ZlIiksZS5vdmVybGluZXNBYm92ZT1mKHIsImciLCJvdmVy bGluZXMtYWJvdmUiKSxmKHIsImciLCJ4YXhpc2xheWVyLWFib3ZlIiksZihy LCJnIiwieWF4aXNsYXllci1hYm92ZSIpLGUub3ZlcmF4ZXNBYm92ZT1mKHIs ImciLCJvdmVyYXhlcy1hYm92ZSIpLGUueGxpbmVzPXIuc2VsZWN0KCIueGxp bmVzLSIrYSksZS55bGluZXM9ci5zZWxlY3QoIi55bGluZXMtIitpKSxlLnhh eGlzbGF5ZXI9ci5zZWxlY3QoIi54YXhpc2xheWVyLSIrYSksZS55YXhpc2xh eWVyPXIuc2VsZWN0KCIueWF4aXNsYXllci0iK2kpfW98fChwKGUuZ3JpZGxh eWVyLCJnIixlLnhheGlzLl9pZCkscChlLmdyaWRsYXllciwiZyIsZS55YXhp cy5faWQpLGUuZ3JpZGxheWVyLnNlbGVjdEFsbCgiZyIpLm1hcChmdW5jdGlv bih0KXtyZXR1cm4gdFswXX0pLnNvcnQoYy5pZFNvcnQpKSxlLnhsaW5lcy5z dHlsZSgiZmlsbCIsIm5vbmUiKS5jbGFzc2VkKCJjcmlzcCIsITApLGUueWxp bmVzLnN0eWxlKCJmaWxsIiwibm9uZSIpLmNsYXNzZWQoImNyaXNwIiwhMCl9 ZnVuY3Rpb24gdih0LGUpe2lmKHQpe3ZhciByPXt9O2Zvcih2YXIgYSBpbiB0 LmVhY2goZnVuY3Rpb24odCl7dmFyIGE9dFswXTtuLnNlbGVjdCh0aGlzKS5y ZW1vdmUoKSxtKGEsZSksclthXT0hMH0pLGUuX3Bsb3RzKWZvcih2YXIgaT1l Ll9wbG90c1thXS5vdmVybGF5c3x8W10sbz0wO288aS5sZW5ndGg7bysrKXt2 YXIgcz1pW29dO3Jbcy5pZF0mJnMucGxvdC5zZWxlY3RBbGwoIi50cmFjZSIp LnJlbW92ZSgpfX19ZnVuY3Rpb24gbSh0LGUpe2UuX2RyYWdnZXJzLnNlbGVj dEFsbCgiZy4iK3QpLnJlbW92ZSgpLGUuX2RlZnMuc2VsZWN0KCIjY2xpcCIr ZS5fdWlkK3QrInBsb3QiKS5yZW1vdmUoKX1yLm5hbWU9ImNhcnRlc2lhbiIs ci5hdHRyPVsieGF4aXMiLCJ5YXhpcyJdLHIuaWRSb290PVsieCIsInkiXSxy LmlkUmVnZXg9dS5pZFJlZ2V4LHIuYXR0clJlZ2V4PXUuYXR0clJlZ2V4LHIu YXR0cmlidXRlcz10KCIuL2F0dHJpYnV0ZXMiKSxyLmxheW91dEF0dHJpYnV0 ZXM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHIuc3VwcGx5TGF5b3V0RGVm YXVsdHM9dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxyLnRyYW5zaXRpb25BeGVz PXQoIi4vdHJhbnNpdGlvbl9heGVzIiksci5maW5hbGl6ZVN1YnBsb3RzPWZ1 bmN0aW9uKHQsZSl7dmFyIHIsbixhLG89ZS5fc3VicGxvdHMscz1vLnhheGlz LGw9by55YXhpcyxoPW8uY2FydGVzaWFuLGY9aC5jb25jYXQoby5nbDJkfHxb XSkscD17fSxkPXt9O2ZvcihyPTA7cjxmLmxlbmd0aDtyKyspe3ZhciBnPWZb cl0uc3BsaXQoInkiKTtwW2dbMF1dPTEsZFsieSIrZ1sxXV09MX1mb3Iocj0w O3I8cy5sZW5ndGg7cisrKXBbbj1zW3JdXXx8KGE9KHRbYy5pZDJuYW1lKG4p XXx8e30pLmFuY2hvcix1LmlkUmVnZXgueS50ZXN0KGEpfHwoYT0ieSIpLGgu cHVzaChuK2EpLGYucHVzaChuK2EpLGRbYV18fChkW2FdPTEsaS5wdXNoVW5p cXVlKGwsYSkpKTtmb3Iocj0wO3I8bC5sZW5ndGg7cisrKWRbYT1sW3JdXXx8 KG49KHRbYy5pZDJuYW1lKGEpXXx8e30pLmFuY2hvcix1LmlkUmVnZXgueC50 ZXN0KG4pfHwobj0ieCIpLGgucHVzaChuK2EpLGYucHVzaChuK2EpLHBbbl18 fChwW25dPTEsaS5wdXNoVW5pcXVlKHMsbikpKTtpZighZi5sZW5ndGgpe2Zv cih2YXIgdiBpbiBuPSIiLGE9IiIsdCl7aWYodS5hdHRyUmVnZXgudGVzdCh2 KSkieCI9PT12LmNoYXJBdCgwKT8oIW58fCt2LnN1YnN0cig1KTwrbi5zdWJz dHIoNSkpJiYobj12KTooIWF8fCt2LnN1YnN0cig1KTwrYS5zdWJzdHIoNSkp JiYoYT12KX1uPW4/Yy5uYW1lMmlkKG4pOiJ4IixhPWE/Yy5uYW1lMmlkKGEp OiJ5IixzLnB1c2gobiksbC5wdXNoKGEpLGgucHVzaChuK2EpfX0sci5wbG90 PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGk9dC5fZnVsbExheW91dCxvPWku X3N1YnBsb3RzLmNhcnRlc2lhbixzPXQuY2FsY2RhdGE7aWYoIUFycmF5Lmlz QXJyYXkoZSkpZm9yKGU9W10sYT0wO2E8cy5sZW5ndGg7YSsrKWUucHVzaChh KTtmb3IoYT0wO2E8by5sZW5ndGg7YSsrKXtmb3IodmFyIGwsYz1vW2FdLHU9 aS5fcGxvdHNbY10saD1bXSxmPTA7ZjxzLmxlbmd0aDtmKyspe3ZhciBwPXNb Zl0sZz1wWzBdLnRyYWNlO2cueGF4aXMrZy55YXhpcz09PWMmJigoLTEhPT1l LmluZGV4T2YoZy5pbmRleCl8fGcuY2FycGV0KSYmKGwmJmxbMF0udHJhY2Uu eGF4aXMrbFswXS50cmFjZS55YXhpcz09PWMmJi0xIT09WyJ0b25leHR4Iiwi dG9uZXh0eSIsInRvbmV4dCJdLmluZGV4T2YoZy5maWxsKSYmLTE9PT1oLmlu ZGV4T2YobCkmJmgucHVzaChsKSxoLnB1c2gocCkpLGw9cCl9ZCh0LHUsaCxy LG4pfX0sci5jbGVhbj1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpLG8scz1u Ll9wbG90c3x8e30sbD1lLl9wbG90c3x8e30sdT1uLl9zdWJwbG90c3x8e307 aWYobi5faGFzT25seUxhcmdlU3Bsb21zJiYhZS5faGFzT25seUxhcmdlU3Bs b21zKWZvcihvIGluIHMpKGE9c1tvXSkucGxvdGdyb3VwJiZhLnBsb3Rncm91 cC5yZW1vdmUoKTt2YXIgaD1uLl9oYXMmJm4uX2hhcygiZ2wiKSxmPWUuX2hh cyYmZS5faGFzKCJnbCIpO2lmKGgmJiFmKWZvcihvIGluIHMpKGE9c1tvXSku X3NjZW5lJiZhLl9zY2VuZS5kZXN0cm95KCk7aWYodS54YXhpcyYmdS55YXhp cyl7dmFyIHA9Yy5saXN0SWRzKHtfZnVsbExheW91dDpufSk7Zm9yKGk9MDtp PHAubGVuZ3RoO2krKyl7dmFyIGQ9cFtpXTtlW2MuaWQybmFtZShkKV18fG4u X2luZm9sYXllci5zZWxlY3RBbGwoIi5nLSIrZCsidGl0bGUiKS5yZW1vdmUo KX19dmFyIGc9bi5faGFzJiZuLl9oYXMoImNhcnRlc2lhbiIpLHk9ZS5faGFz JiZlLl9oYXMoImNhcnRlc2lhbiIpO2lmKGcmJiF5KXYobi5fY2FydGVzaWFu bGF5ZXIuc2VsZWN0QWxsKCIuc3VicGxvdCIpLG4pLG4uX2RlZnMuc2VsZWN0 QWxsKCIuYXhlc2NsaXAiKS5yZW1vdmUoKSxkZWxldGUgbi5fYXhpc0NvbnN0 cmFpbnRHcm91cHM7ZWxzZSBpZih1LmNhcnRlc2lhbilmb3IoaT0wO2k8dS5j YXJ0ZXNpYW4ubGVuZ3RoO2krKyl7dmFyIHg9dS5jYXJ0ZXNpYW5baV07aWYo IWxbeF0pe3ZhciBiPSIuIit4KyIsLiIreCsiLXgsLiIreCsiLXkiO24uX2Nh cnRlc2lhbmxheWVyLnNlbGVjdEFsbChiKS5yZW1vdmUoKSxtKHgsbil9fX0s ci5kcmF3RnJhbWV3b3JrPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlv dXQscj1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxpLG8scz10Ll9mdWxsTGF5 b3V0LGw9cy5fc3VicGxvdHMuY2FydGVzaWFuLGM9bC5sZW5ndGgsdT1bXSxo PVtdO2ZvcihlPTA7ZTxjO2UrKyl7bj1sW2VdLGE9cy5fcGxvdHNbbl0saT1h LnhheGlzLG89YS55YXhpczt2YXIgZj1pLl9tYWluQXhpcyxwPW8uX21haW5B eGlzLGQ9Zi5faWQrcC5faWQsZz1zLl9wbG90c1tkXTthLm92ZXJsYXlzPVtd LGQhPT1uJiZnPyhhLm1haW5wbG90PWQsYS5tYWlucGxvdGluZm89ZyxoLnB1 c2gobikpOihhLm1haW5wbG90PXZvaWQgMCxhLm1haW5QbG90aW5mbz12b2lk IDAsdS5wdXNoKG4pKX1mb3IoZT0wO2U8aC5sZW5ndGg7ZSsrKW49aFtlXSwo YT1zLl9wbG90c1tuXSkubWFpbnBsb3RpbmZvLm92ZXJsYXlzLnB1c2goYSk7 dmFyIHY9dS5jb25jYXQoaCksbT1uZXcgQXJyYXkoYyk7Zm9yKGU9MDtlPGM7 ZSsrKXtuPXZbZV0sYT1zLl9wbG90c1tuXSxpPWEueGF4aXMsbz1hLnlheGlz O3ZhciB5PVtuLGkubGF5ZXIsby5sYXllcixpLm92ZXJsYXlpbmd8fCIiLG8u b3ZlcmxheWluZ3x8IiJdO2ZvcihyPTA7cjxhLm92ZXJsYXlzLmxlbmd0aDty KyspeS5wdXNoKGEub3ZlcmxheXNbcl0uaWQpO21bZV09eX1yZXR1cm4gbX0o dCksYT1lLl9jYXJ0ZXNpYW5sYXllci5zZWxlY3RBbGwoIi5zdWJwbG90Iiku ZGF0YShyLFN0cmluZyk7YS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNs YXNzIixmdW5jdGlvbih0KXtyZXR1cm4ic3VicGxvdCAiK3RbMF19KSxhLm9y ZGVyKCksYS5leGl0KCkuY2FsbCh2LGUpLGEuZWFjaChmdW5jdGlvbihyKXt2 YXIgYT1yWzBdLGk9ZS5fcGxvdHNbYV07aS5wbG90Z3JvdXA9bi5zZWxlY3Qo dGhpcyksZyh0LGkpLGkuZHJhZ2xheWVyPWYoZS5fZHJhZ2dlcnMsImciLGEp fSl9LHIucmFuZ2VQbG90PWZ1bmN0aW9uKHQsZSxyKXtnKHQsZSksZCh0LGUs ciksby5zdHlsZSh0KX0sci50b1NWRz1mdW5jdGlvbih0KXt2YXIgZT10Ll9m dWxsTGF5b3V0Ll9nbGltYWdlcyxyPW4uc2VsZWN0KHQpLnNlbGVjdEFsbCgi LnN2Zy1jb250YWluZXIiKTtyLmZpbHRlcihmdW5jdGlvbih0LGUpe3JldHVy biBlPT09ci5zaXplKCktMX0pLnNlbGVjdEFsbCgiLmdsLWNhbnZhcy1jb250 ZXh0LCAuZ2wtY2FudmFzLWZvY3VzIikuZWFjaChmdW5jdGlvbigpe3ZhciB0 PXRoaXMudG9EYXRhVVJMKCJpbWFnZS9wbmciKTtlLmFwcGVuZCgic3ZnOmlt YWdlIikuYXR0cih7eG1sbnM6aC5zdmcsInhsaW5rOmhyZWYiOnQscHJlc2Vy dmVBc3BlY3RSYXRpbzoibm9uZSIseDowLHk6MCx3aWR0aDp0aGlzLndpZHRo LGhlaWdodDp0aGlzLmhlaWdodH0pfSl9LHIudXBkYXRlRng9dCgiLi9ncmFw aF9pbnRlcmFjdCIpLnVwZGF0ZUZ4fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJh d2luZyI6NjEzLCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyI6 Njk0LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4v Z2V0X2RhdGEiOjgwMCwiLi4vcGxvdHMiOjgyNiwiLi9hdHRyaWJ1dGVzIjo3 NjMsIi4vYXhpc19pZHMiOjc2OCwiLi9jb25zdGFudHMiOjc3MSwiLi9ncmFw aF9pbnRlcmFjdCI6Nzc0LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo3NzcsIi4v bGF5b3V0X2RlZmF1bHRzIjo3NzgsIi4vdHJhbnNpdGlvbl9heGVzIjo3ODcs ZDM6MTY1fV0sNzc3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uL2ZvbnRfYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vY29tcG9u ZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRz L2RyYXdpbmcvYXR0cmlidXRlcyIpLmRhc2gsbz10KCIuLi8uLi9saWIvZXh0 ZW5kIikuZXh0ZW5kRmxhdCxzPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVt cGxhdGUiKS50ZW1wbGF0ZWRBcnJheSxsPSh0KCIuLi8uLi9jb25zdGFudHMv ZG9jcyIpLkZPUk1BVF9MSU5LLHQoIi4uLy4uL2NvbnN0YW50cy9kb2NzIiku REFURV9GT1JNQVRfTElOSyx0KCIuL2NvbnN0YW50cyIpKTtlLmV4cG9ydHM9 e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJwbG90In0s Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuZGVmYXVsdExpbmUsZWRp dFR5cGU6InRpY2tzIn0sdGl0bGU6e3RleHQ6e3ZhbFR5cGU6InN0cmluZyIs ZWRpdFR5cGU6InRpY2tzIn0sZm9udDpuKHtlZGl0VHlwZToidGlja3MifSks c3RhbmRvZmY6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InRp Y2tzIn0sZWRpdFR5cGU6InRpY2tzIn0sdHlwZTp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsiLSIsImxpbmVhciIsImxvZyIsImRhdGUiLCJjYXRl Z29yeSIsIm11bHRpY2F0ZWdvcnkiXSxkZmx0OiItIixlZGl0VHlwZToiY2Fs YyIsX25vVGVtcGxhdGluZzohMH0sYXV0b3JhbmdlOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyEwLCExLCJyZXZlcnNlZCJdLGRmbHQ6ITAsZWRp dFR5cGU6ImF4cmFuZ2UiLGltcGxpZWRFZGl0czp7InJhbmdlWzBdIjp2b2lk IDAsInJhbmdlWzFdIjp2b2lkIDB9fSxyYW5nZW1vZGU6e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpbIm5vcm1hbCIsInRvemVybyIsIm5vbm5lZ2F0 aXZlIl0sZGZsdDoibm9ybWFsIixlZGl0VHlwZToicGxvdCJ9LHJhbmdlOnt2 YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6ImFueSIsZWRp dFR5cGU6ImF4cmFuZ2UiLGltcGxpZWRFZGl0czp7Il5hdXRvcmFuZ2UiOiEx fSxhbmltOiEwfSx7dmFsVHlwZToiYW55IixlZGl0VHlwZToiYXhyYW5nZSIs aW1wbGllZEVkaXRzOnsiXmF1dG9yYW5nZSI6ITF9LGFuaW06ITB9XSxlZGl0 VHlwZToiYXhyYW5nZSIsaW1wbGllZEVkaXRzOnthdXRvcmFuZ2U6ITF9LGFu aW06ITB9LGZpeGVkcmFuZ2U6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEs ZWRpdFR5cGU6ImNhbGMifSxzY2FsZWFuY2hvcjp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOltsLmlkUmVnZXgueC50b1N0cmluZygpLGwuaWRSZWdl eC55LnRvU3RyaW5nKCldLGVkaXRUeXBlOiJwbG90In0sc2NhbGVyYXRpbzp7 dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6InBsb3Qi fSxjb25zdHJhaW46e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInJh bmdlIiwiZG9tYWluIl0sZGZsdDoicmFuZ2UiLGVkaXRUeXBlOiJwbG90In0s Y29uc3RyYWludG93YXJkOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6 WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiLCJ0b3AiLCJtaWRkbGUiLCJib3R0 b20iXSxlZGl0VHlwZToicGxvdCJ9LG1hdGNoZXM6e3ZhbFR5cGU6ImVudW1l cmF0ZWQiLHZhbHVlczpbbC5pZFJlZ2V4LngudG9TdHJpbmcoKSxsLmlkUmVn ZXgueS50b1N0cmluZygpXSxlZGl0VHlwZToiY2FsYyJ9LHRpY2ttb2RlOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwibGluZWFyIiwi YXJyYXkiXSxlZGl0VHlwZToidGlja3MiLGltcGxpZWRFZGl0czp7dGljazA6 dm9pZCAwLGR0aWNrOnZvaWQgMH19LG50aWNrczp7dmFsVHlwZToiaW50ZWdl ciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJ0aWNrcyJ9LHRpY2swOnt2YWxU eXBlOiJhbnkiLGVkaXRUeXBlOiJ0aWNrcyIsaW1wbGllZEVkaXRzOnt0aWNr bW9kZToibGluZWFyIn19LGR0aWNrOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBl OiJ0aWNrcyIsaW1wbGllZEVkaXRzOnt0aWNrbW9kZToibGluZWFyIn19LHRp Y2t2YWxzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToidGlja3Mi fSx0aWNrdGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6InRp Y2tzIn0sdGlja3M6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIm91 dHNpZGUiLCJpbnNpZGUiLCIiXSxlZGl0VHlwZToidGlja3MifSx0aWNrc29u Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsYWJlbHMiLCJib3Vu ZGFyaWVzIl0sZGZsdDoibGFiZWxzIixlZGl0VHlwZToidGlja3MifSxtaXJy b3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITAsInRpY2tzIiwh MSwiYWxsIiwiYWxsdGlja3MiXSxkZmx0OiExLGVkaXRUeXBlOiJ0aWNrcyts YXlvdXRzdHlsZSJ9LHRpY2tsZW46e3ZhbFR5cGU6Im51bWJlciIsbWluOjAs ZGZsdDo1LGVkaXRUeXBlOiJ0aWNrcyJ9LHRpY2t3aWR0aDp7dmFsVHlwZToi bnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6InRpY2tzIn0sdGlja2Nv bG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDphLmRlZmF1bHRMaW5lLGVkaXRU eXBlOiJ0aWNrcyJ9LHNob3d0aWNrbGFiZWxzOnt2YWxUeXBlOiJib29sZWFu IixkZmx0OiEwLGVkaXRUeXBlOiJ0aWNrcyJ9LGF1dG9tYXJnaW46e3ZhbFR5 cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6InRpY2tzIn0sc2hvd3Nw aWtlczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToibW9k ZWJhciJ9LHNwaWtlY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om51bGws ZWRpdFR5cGU6Im5vbmUifSxzcGlrZXRoaWNrbmVzczp7dmFsVHlwZToibnVt YmVyIixkZmx0OjMsZWRpdFR5cGU6Im5vbmUifSxzcGlrZWRhc2g6byh7fSxp LHtkZmx0OiJkYXNoIixlZGl0VHlwZToibm9uZSJ9KSxzcGlrZW1vZGU6e3Zh bFR5cGU6ImZsYWdsaXN0IixmbGFnczpbInRvYXhpcyIsImFjcm9zcyIsIm1h cmtlciJdLGRmbHQ6InRvYXhpcyIsZWRpdFR5cGU6Im5vbmUifSxzcGlrZXNu YXA6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImRhdGEiLCJjdXJz b3IiXSxkZmx0OiJkYXRhIixlZGl0VHlwZToibm9uZSJ9LHRpY2tmb250Om4o e2VkaXRUeXBlOiJ0aWNrcyJ9KSx0aWNrYW5nbGU6e3ZhbFR5cGU6ImFuZ2xl IixkZmx0OiJhdXRvIixlZGl0VHlwZToidGlja3MifSx0aWNrcHJlZml4Ont2 YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6InRpY2tzIn0sc2hv d3RpY2twcmVmaXg6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFs bCIsImZpcnN0IiwibGFzdCIsIm5vbmUiXSxkZmx0OiJhbGwiLGVkaXRUeXBl OiJ0aWNrcyJ9LHRpY2tzdWZmaXg6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoi IixlZGl0VHlwZToidGlja3MifSxzaG93dGlja3N1ZmZpeDp7dmFsVHlwZToi ZW51bWVyYXRlZCIsdmFsdWVzOlsiYWxsIiwiZmlyc3QiLCJsYXN0Iiwibm9u ZSJdLGRmbHQ6ImFsbCIsZWRpdFR5cGU6InRpY2tzIn0sc2hvd2V4cG9uZW50 Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGwiLCJmaXJzdCIs Imxhc3QiLCJub25lIl0sZGZsdDoiYWxsIixlZGl0VHlwZToidGlja3MifSxl eHBvbmVudGZvcm1hdDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsi bm9uZSIsImUiLCJFIiwicG93ZXIiLCJTSSIsIkIiXSxkZmx0OiJCIixlZGl0 VHlwZToidGlja3MifSxzZXBhcmF0ZXRob3VzYW5kczp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMSxlZGl0VHlwZToidGlja3MifSx0aWNrZm9ybWF0Ont2 YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6InRpY2tzIn0sdGlj a2Zvcm1hdHN0b3BzOnMoInRpY2tmb3JtYXRzdG9wIix7ZW5hYmxlZDp7dmFs VHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToidGlja3MifSxkdGlj a3JhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6 ImFueSIsZWRpdFR5cGU6InRpY2tzIn0se3ZhbFR5cGU6ImFueSIsZWRpdFR5 cGU6InRpY2tzIn1dLGVkaXRUeXBlOiJ0aWNrcyJ9LHZhbHVlOnt2YWxUeXBl OiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6InRpY2tzIn0sZWRpdFR5cGU6 InRpY2tzIn0pLGhvdmVyZm9ybWF0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6 IiIsZWRpdFR5cGU6Im5vbmUifSxzaG93bGluZTp7dmFsVHlwZToiYm9vbGVh biIsZGZsdDohMSxlZGl0VHlwZToidGlja3MrbGF5b3V0c3R5bGUifSxsaW5l Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuZGVmYXVsdExpbmUsZWRp dFR5cGU6ImxheW91dHN0eWxlIn0sbGluZXdpZHRoOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToidGlja3MrbGF5b3V0c3R5bGUi fSxzaG93Z3JpZDp7dmFsVHlwZToiYm9vbGVhbiIsZWRpdFR5cGU6InRpY2tz In0sZ3JpZGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDphLmxpZ2h0TGlu ZSxlZGl0VHlwZToidGlja3MifSxncmlkd2lkdGg6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJ0aWNrcyJ9LHplcm9saW5lOnt2 YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToidGlja3MifSx6ZXJvbGluZWNv bG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDphLmRlZmF1bHRMaW5lLGVkaXRU eXBlOiJ0aWNrcyJ9LHplcm9saW5ld2lkdGg6e3ZhbFR5cGU6Im51bWJlciIs ZGZsdDoxLGVkaXRUeXBlOiJ0aWNrcyJ9LHNob3dkaXZpZGVyczp7dmFsVHlw ZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToidGlja3MifSxkaXZpZGVy Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuZGVmYXVsdExpbmUsZWRp dFR5cGU6InRpY2tzIn0sZGl2aWRlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIi LGRmbHQ6MSxlZGl0VHlwZToidGlja3MifSxhbmNob3I6e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpbImZyZWUiLGwuaWRSZWdleC54LnRvU3RyaW5n KCksbC5pZFJlZ2V4LnkudG9TdHJpbmcoKV0sZWRpdFR5cGU6InBsb3QifSxz aWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJib3R0 b20iLCJsZWZ0IiwicmlnaHQiXSxlZGl0VHlwZToicGxvdCJ9LG92ZXJsYXlp bmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZyZWUiLGwuaWRS ZWdleC54LnRvU3RyaW5nKCksbC5pZFJlZ2V4LnkudG9TdHJpbmcoKV0sZWRp dFR5cGU6InBsb3QifSxsYXllcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsiYWJvdmUgdHJhY2VzIiwiYmVsb3cgdHJhY2VzIl0sZGZsdDoiYWJv dmUgdHJhY2VzIixlZGl0VHlwZToicGxvdCJ9LGRvbWFpbjp7dmFsVHlwZToi aW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1h eDoxLGVkaXRUeXBlOiJwbG90In0se3ZhbFR5cGU6Im51bWJlciIsbWluOjAs bWF4OjEsZWRpdFR5cGU6InBsb3QifV0sZGZsdDpbMCwxXSxlZGl0VHlwZToi cGxvdCJ9LHBvc2l0aW9uOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDox LGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9LGNhdGVnb3J5b3JkZXI6e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRyYWNlIiwiY2F0ZWdvcnkgYXNj ZW5kaW5nIiwiY2F0ZWdvcnkgZGVzY2VuZGluZyIsImFycmF5IiwidG90YWwg YXNjZW5kaW5nIiwidG90YWwgZGVzY2VuZGluZyIsIm1pbiBhc2NlbmRpbmci LCJtaW4gZGVzY2VuZGluZyIsIm1heCBhc2NlbmRpbmciLCJtYXggZGVzY2Vu ZGluZyIsInN1bSBhc2NlbmRpbmciLCJzdW0gZGVzY2VuZGluZyIsIm1lYW4g YXNjZW5kaW5nIiwibWVhbiBkZXNjZW5kaW5nIiwibWVkaWFuIGFzY2VuZGlu ZyIsIm1lZGlhbiBkZXNjZW5kaW5nIl0sZGZsdDoidHJhY2UiLGVkaXRUeXBl OiJjYWxjIn0sY2F0ZWdvcnlhcnJheTp7dmFsVHlwZToiZGF0YV9hcnJheSIs ZWRpdFR5cGU6ImNhbGMifSx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVk aXRUeXBlOiJub25lIn0sZWRpdFR5cGU6ImNhbGMiLF9kZXByZWNhdGVkOnth dXRvdGljazp7dmFsVHlwZToiYm9vbGVhbiIsZWRpdFR5cGU6InRpY2tzIn0s dGl0bGU6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6InRpY2tzIn0sdGl0 bGVmb250Om4oe2VkaXRUeXBlOiJ0aWNrcyJ9KX19fSx7Ii4uLy4uL2NvbXBv bmVudHMvY29sb3IvYXR0cmlidXRlcyI6NTkxLCIuLi8uLi9jb21wb25lbnRz L2RyYXdpbmcvYXR0cmlidXRlcyI6NjEyLCIuLi8uLi9jb25zdGFudHMvZG9j cyI6Njg4LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBp L3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vZm9udF9hdHRyaWJ1dGVzIjo3OTEs Ii4vY29uc3RhbnRzIjo3NzF9XSw3Nzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBs YXRlIiksbz10KCIuLi9sYXlvdXRfYXR0cmlidXRlcyIpLHM9dCgiLi9sYXlv dXRfYXR0cmlidXRlcyIpLGw9dCgiLi90eXBlX2RlZmF1bHRzIiksYz10KCIu L2F4aXNfZGVmYXVsdHMiKSx1PXQoIi4vY29uc3RyYWludHMiKS5oYW5kbGVD b25zdHJhaW50RGVmYXVsdHMsaD10KCIuL3Bvc2l0aW9uX2RlZmF1bHRzIiks Zj10KCIuL2F4aXNfaWRzIikscD1mLmlkMm5hbWUsZD1mLm5hbWUyaWQsZz10 KCIuL2NvbnN0YW50cyIpLkFYX0lEX1BBVFRFUk4sdj10KCIuLi8uLi9yZWdp c3RyeSIpLG09di50cmFjZUlzLHk9di5nZXRDb21wb25lbnRNZXRob2Q7ZnVu Y3Rpb24geCh0LGUscil7QXJyYXkuaXNBcnJheSh0W2VdKT90W2VdLnB1c2go cik6dFtlXT1bcl19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgZix2 LGI9e30sXz17fSx3PXt9LGs9e30sVD17fSxNPXt9LEE9e30sUz17fSxFPXt9 LEw9e307Zm9yKGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIEM9cltmXTtpZiht KEMsImNhcnRlc2lhbiIpfHxtKEMsImdsMmQiKSl7dmFyIFAsTztpZihDLnhh eGlzKVA9cChDLnhheGlzKSx4KGIsUCxDKTtlbHNlIGlmKEMueGF4ZXMpZm9y KHY9MDt2PEMueGF4ZXMubGVuZ3RoO3YrKyl4KGIscChDLnhheGVzW3ZdKSxD KTtpZihDLnlheGlzKU89cChDLnlheGlzKSx4KGIsTyxDKTtlbHNlIGlmKEMu eWF4ZXMpZm9yKHY9MDt2PEMueWF4ZXMubGVuZ3RoO3YrKyl4KGIscChDLnlh eGVzW3ZdKSxDKTtpZigiZnVubmVsIj09PUMudHlwZT8iaCI9PT1DLm9yaWVu dGF0aW9uPyhQJiYoX1tQXT0hMCksTyYmKEFbT109ITApKTpPJiYod1tPXT0h MCk6ImltYWdlIj09PUMudHlwZT8oTyYmKFNbT109ITApLFAmJihTW1BdPSEw KSk6KE8mJihUW09dPSEwLE1bT109ITApLG0oQywiY2FycGV0IikmJigiY2Fy cGV0IiE9PUMudHlwZXx8Qy5fY2hlYXRlcil8fFAmJihrW1BdPSEwKSksImNh cnBldCI9PT1DLnR5cGUmJkMuX2NoZWF0ZXImJlAmJihfW1BdPSEwKSxtKEMs IjJkTWFwIikmJihFW1BdPSEwLEVbT109ITApLG0oQywib3JpZW50ZWQiKSlM WyJoIj09PUMub3JpZW50YXRpb24/TzpQXT0hMH19dmFyIHo9ZS5fc3VicGxv dHMsST16LnhheGlzLEQ9ei55YXhpcyxSPW4uc2ltcGxlTWFwKEkscCksRj1u LnNpbXBsZU1hcChELHApLEI9Ui5jb25jYXQoRiksTj1hLmJhY2tncm91bmQ7 SS5sZW5ndGgmJkQubGVuZ3RoJiYoTj1uLmNvZXJjZSh0LGUsbywicGxvdF9i Z2NvbG9yIikpO3ZhciBqLFYsVSxxLEgsRz1hLmNvbWJpbmUoTixlLnBhcGVy X2JnY29sb3IpO2Z1bmN0aW9uIFkoKXt2YXIgdD1iW2pdfHxbXTtILl90cmFj ZUluZGljZXM9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuX2V4cGFuZGVk SW5kZXh9KSxILl9hbm5JbmRpY2VzPVtdLEguX3NoYXBlSW5kaWNlcz1bXSxI Ll9pbWdJbmRpY2VzPVtdLEguX3N1YnBsb3RzV2l0aD1bXSxILl9jb3VudGVy QXhlcz1bXSxILl9uYW1lPUguX2F0dHI9aixILl9pZD1WfWZ1bmN0aW9uIFco dCxlKXtyZXR1cm4gbi5jb2VyY2UocSxILHMsdCxlKX1mdW5jdGlvbiBYKHQs ZSl7cmV0dXJuIG4uY29lcmNlMihxLEgscyx0LGUpfWZ1bmN0aW9uIFoodCl7 cmV0dXJuIngiPT09dD9EOkl9ZnVuY3Rpb24gSihlLHIpe2Zvcih2YXIgbj0i eCI9PT1lP1I6RixhPVtdLGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltp XTtvPT09cnx8KHRbb118fHt9KS5vdmVybGF5aW5nfHxhLnB1c2goZChvKSl9 cmV0dXJuIGF9dmFyIEs9e3g6WigieCIpLHk6WigieSIpfSxRPUsueC5jb25j YXQoSy55KSwkPXt9LHR0PVtdO2Z1bmN0aW9uIGV0KCl7dmFyIHQ9cS5tYXRj aGVzO2cudGVzdCh0KSYmLTE9PT1RLmluZGV4T2YodCkmJigkW3RdPXEudHlw ZSx0dD1PYmplY3Qua2V5cygkKSl9Zm9yKGY9MDtmPEIubGVuZ3RoO2YrKyl7 aj1CW2ZdLFY9ZChqKSxVPWouY2hhckF0KDApLG4uaXNQbGFpbk9iamVjdCh0 W2pdKXx8KHRbal09e30pLHE9dFtqXSxIPWkubmV3Q29udGFpbmVyKGUsaixV KyJheGlzIiksWSgpO3ZhciBydD0ieCI9PT1VJiYha1tqXSYmX1tqXXx8Inki PT09VSYmIVRbal0mJndbal0sbnQ9InkiPT09VSYmKCFNW2pdJiZBW2pdfHxT W2pdKSxhdD17bGV0dGVyOlUsZm9udDplLmZvbnQsb3V0ZXJUaWNrczpFW2pd LHNob3dHcmlkOiFMW2pdLGRhdGE6YltqXXx8W10sYmdDb2xvcjpHLGNhbGVu ZGFyOmUuY2FsZW5kYXIsYXV0b21hcmdpbjohMCx2aXNpYmxlRGZsdDpydCxy ZXZlcnNlRGZsdDpudCxzcGxvbVN0YXNoOigoZS5fc3Bsb21BeGVzfHx7fSlb VV18fHt9KVtWXX07VygidWlyZXZpc2lvbiIsZS51aXJldmlzaW9uKSxsKHEs SCxXLGF0KSxjKHEsSCxXLGF0LGUpO3ZhciBpdD1YKCJzcGlrZWNvbG9yIiks b3Q9WCgic3Bpa2V0aGlja25lc3MiKSxzdD1YKCJzcGlrZWRhc2giKSxsdD1Y KCJzcGlrZW1vZGUiKSxjdD1YKCJzcGlrZXNuYXAiKTtXKCJzaG93c3Bpa2Vz IiwhIShpdHx8b3R8fHN0fHxsdHx8Y3QpKXx8KGRlbGV0ZSBILnNwaWtlY29s b3IsZGVsZXRlIEguc3Bpa2V0aGlja25lc3MsZGVsZXRlIEguc3Bpa2VkYXNo LGRlbGV0ZSBILnNwaWtlbW9kZSxkZWxldGUgSC5zcGlrZXNuYXApLGgocSxI LFcse2xldHRlcjpVLGNvdW50ZXJBeGVzOktbVV0sb3ZlcmxheWFibGVBeGVz OkooVSxqKSxncmlkOmUuZ3JpZH0pLFcoInRpdGxlLnN0YW5kb2ZmIiksZXQo KSxILl9pbnB1dD1xfWZvcihmPTA7Zjx0dC5sZW5ndGg7KXtWPXR0W2YrK10s VT0oaj1wKFYpKS5jaGFyQXQoMCksbi5pc1BsYWluT2JqZWN0KHRbal0pfHwo dFtqXT17fSkscT10W2pdLEg9aS5uZXdDb250YWluZXIoZSxqLFUrImF4aXMi KSxZKCk7dmFyIHV0PXtsZXR0ZXI6VSxmb250OmUuZm9udCxvdXRlclRpY2tz OkVbal0sc2hvd0dyaWQ6IUxbal0sZGF0YTpbXSxiZ0NvbG9yOkcsY2FsZW5k YXI6ZS5jYWxlbmRhcixhdXRvbWFyZ2luOiEwLHZpc2libGVEZmx0OiExLHJl dmVyc2VEZmx0OiExLHNwbG9tU3Rhc2g6KChlLl9zcGxvbUF4ZXN8fHt9KVtV XXx8e30pW1ZdfTtXKCJ1aXJldmlzaW9uIixlLnVpcmV2aXNpb24pLEgudHlw ZT0kW1ZdfHwibGluZWFyIixjKHEsSCxXLHV0LGUpLGgocSxILFcse2xldHRl cjpVLGNvdW50ZXJBeGVzOktbVV0sb3ZlcmxheWFibGVBeGVzOkooVSxqKSxn cmlkOmUuZ3JpZH0pLFcoImZpeGVkcmFuZ2UiKSxldCgpLEguX2lucHV0PXF9 dmFyIGh0PXkoInJhbmdlc2xpZGVyIiwiaGFuZGxlRGVmYXVsdHMiKSxmdD15 KCJyYW5nZXNlbGVjdG9yIiwiaGFuZGxlRGVmYXVsdHMiKTtmb3IoZj0wO2Y8 Ui5sZW5ndGg7ZisrKWo9UltmXSxxPXRbal0sSD1lW2pdLGh0KHQsZSxqKSwi ZGF0ZSI9PT1ILnR5cGUmJmZ0KHEsSCxlLEYsSC5jYWxlbmRhciksVygiZml4 ZWRyYW5nZSIpO2ZvcihmPTA7ZjxGLmxlbmd0aDtmKyspe2o9RltmXSxxPXRb al0sSD1lW2pdO3ZhciBwdD1lW3AoSC5hbmNob3IpXTtXKCJmaXhlZHJhbmdl Iix5KCJyYW5nZXNsaWRlciIsImlzVmlzaWJsZSIpKHB0KSl9dmFyIGR0PWUu X2F4aXNDb25zdHJhaW50R3JvdXBzPVtdLGd0PWUuX2F4aXNNYXRjaEdyb3Vw cz1bXSx2dD1RLmNvbmNhdCh0dCksbXQ9Qi5jb25jYXQobi5zaW1wbGVNYXAo dHQscCkpO2ZvcihmPTA7ZjxtdC5sZW5ndGg7ZisrKXt2YXIgeXQseHQ7VT0o aj1tdFtmXSkuY2hhckF0KDApLHE9dFtqXSxIPWVbal0seXQ9InkiPT09VSYm IXEuaGFzT3duUHJvcGVydHkoInNjYWxlYW5jaG9yIikmJlNbal0/SC5hbmNo b3I6dm9pZCAwLHh0PSFxLmhhc093blByb3BlcnR5KCJjb25zdHJhaW4iKSYm U1tqXT8iZG9tYWluIjp2b2lkIDAsdShxLEgsVyx7YWxsQXhpc0lkczp2dCxs YXlvdXRPdXQ6ZSxzY2FsZWFuY2hvckRmbHQ6eXQsY29uc3RyYWluRGZsdDp4 dH0pfWZvcihmPTA7ZjxndC5sZW5ndGg7ZisrKXt2YXIgYnQ9Z3RbZl0sX3Q9 bnVsbCx3dD1udWxsO2ZvcihWIGluIGJ0KShIPWVbcChWKV0pLm1hdGNoZXN8 fChfdD1ILnJhbmdlLHd0PUguYXV0b3JhbmdlKTtpZihudWxsPT09X3R8fG51 bGw9PT13dClmb3IoViBpbiBidCl7X3Q9KEg9ZVtwKFYpXSkucmFuZ2Usd3Q9 SC5hdXRvcmFuZ2U7YnJlYWt9Zm9yKFYgaW4gYnQpKEg9ZVtwKFYpXSkubWF0 Y2hlcyYmKEgucmFuZ2U9X3Quc2xpY2UoKSxILmF1dG9yYW5nZT13dCksSC5f bWF0Y2hHcm91cD1idDtpZihkdC5sZW5ndGgpZm9yKFYgaW4gYnQpZm9yKHY9 MDt2PGR0Lmxlbmd0aDt2Kyspe3ZhciBrdD1kdFt2XTtmb3IodmFyIFR0IGlu IGt0KVY9PT1UdCYmKG4ud2FybigiQXhpcyAiK1R0KyIgaXMgc2V0IHdpdGgg Ym90aCBhICpzY2FsZWFuY2hvciogYW5kICptYXRjaGVzKiBjb25zdHJhaW50 OyBpZ25vcmluZyB0aGUgc2NhbGUgY29uc3RyYWludC4iKSxkZWxldGUga3Rb VHRdLE9iamVjdC5rZXlzKGt0KS5sZW5ndGg8MiYmZHQuc3BsaWNlKHYsMSkp fX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGli Ijo3MTcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4v Li4vcmVnaXN0cnkiOjg0NiwiLi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjgxNywi Li9heGlzX2RlZmF1bHRzIjo3NjcsIi4vYXhpc19pZHMiOjc2OCwiLi9jb25z dGFudHMiOjc3MSwiLi9jb25zdHJhaW50cyI6NzcyLCIuL2xheW91dF9hdHRy aWJ1dGVzIjo3NzcsIi4vcG9zaXRpb25fZGVmYXVsdHMiOjc4MCwiLi90eXBl X2RlZmF1bHRzIjo3ODh9XSw3Nzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgidGlueWNvbG9yMiIpLm1peCxhPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLmxpZ2h0RnJhY3Rpb24saT10 KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFy IHM9KG89b3x8e30pLmRmbHRDb2xvcjtmdW5jdGlvbiBsKHIsbil7cmV0dXJu IGkuY29lcmNlMih0LGUsby5hdHRyaWJ1dGVzLHIsbil9dmFyIGM9bCgibGlu ZWNvbG9yIixzKSx1PWwoImxpbmV3aWR0aCIpO3IoInNob3dsaW5lIixvLnNo b3dMaW5lfHwhIWN8fCEhdSl8fChkZWxldGUgZS5saW5lY29sb3IsZGVsZXRl IGUubGluZXdpZHRoKTt2YXIgaD1sKCJncmlkY29sb3IiLG4ocyxvLmJnQ29s b3Isby5ibGVuZHx8YSkudG9SZ2JTdHJpbmcoKSksZj1sKCJncmlkd2lkdGgi KTtpZihyKCJzaG93Z3JpZCIsby5zaG93R3JpZHx8ISFofHwhIWYpfHwoZGVs ZXRlIGUuZ3JpZGNvbG9yLGRlbGV0ZSBlLmdyaWR3aWR0aCksIW8ubm9aZXJv TGluZSl7dmFyIHA9bCgiemVyb2xpbmVjb2xvciIscyksZD1sKCJ6ZXJvbGlu ZXdpZHRoIik7cigiemVyb2xpbmUiLG8uc2hvd0dyaWR8fCEhcHx8ISFkKXx8 KGRlbGV0ZSBlLnplcm9saW5lY29sb3IsZGVsZXRlIGUuemVyb2xpbmV3aWR0 aCl9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjU5 MSwiLi4vLi4vbGliIjo3MTcsdGlueWNvbG9yMjo1MzZ9XSw3ODA6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVy aWMiKSxhPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cixpKXt2YXIgbyxzLGwsYyx1PWkuY291bnRlckF4ZXN8fFtdLGg9aS5vdmVy bGF5YWJsZUF4ZXN8fFtdLGY9aS5sZXR0ZXIscD1pLmdyaWQ7cCYmKHM9cC5f ZG9tYWluc1tmXVtwLl9heGlzTWFwW2UuX2lkXV0sbz1wLl9hbmNob3JzW2Uu X2lkXSxzJiYobD1wW2YrInNpZGUiXS5zcGxpdCgiICIpWzBdLGM9cC5kb21h aW5bZl1bInJpZ2h0Ij09PWx8fCJ0b3AiPT09bD8xOjBdKSkscz1zfHxbMCwx XSxvPW98fChuKHQucG9zaXRpb24pPyJmcmVlIjp1WzBdfHwiZnJlZSIpLGw9 bHx8KCJ4Ij09PWY/ImJvdHRvbSI6ImxlZnQiKSxjPWN8fDAsImZyZWUiPT09 YS5jb2VyY2UodCxlLHthbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbImZyZWUiXS5jb25jYXQodSksZGZsdDpvfX0sImFuY2hvciIpJiZy KCJwb3NpdGlvbiIsYyksYS5jb2VyY2UodCxlLHtzaWRlOnt2YWxUeXBlOiJl bnVtZXJhdGVkIix2YWx1ZXM6IngiPT09Zj9bImJvdHRvbSIsInRvcCJdOlsi bGVmdCIsInJpZ2h0Il0sZGZsdDpsfX0sInNpZGUiKTt2YXIgZD0hMTtpZiho Lmxlbmd0aCYmKGQ9YS5jb2VyY2UodCxlLHtvdmVybGF5aW5nOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyExXS5jb25jYXQoaCksZGZsdDohMX19 LCJvdmVybGF5aW5nIikpLCFkKXt2YXIgZz1yKCJkb21haW4iLHMpO2dbMF0+ Z1sxXS0xLzQwOTYmJihlLmRvbWFpbj1zKSxhLm5vbmVPckFsbCh0LmRvbWFp bixlLmRvbWFpbixzKX1yZXR1cm4gcigibGF5ZXIiKSxlfX0seyIuLi8uLi9s aWIiOjcxNywiZmFzdC1pc251bWVyaWMiOjIyOH1dLDc4MTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb25zdGFudHMv YWxpZ25tZW50IikuRlJPTV9CTDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIp e3ZvaWQgMD09PXImJihyPW5bdC5jb25zdHJhaW50b3dhcmR8fCJjZW50ZXIi XSk7dmFyIGE9W3QucjJsKHQucmFuZ2VbMF0pLHQucjJsKHQucmFuZ2VbMV0p XSxpPWFbMF0rKGFbMV0tYVswXSkqcjt0LnJhbmdlPXQuX2lucHV0LnJhbmdl PVt0LmwycihpKyhhWzBdLWkpKmUpLHQubDJyKGkrKGFbMV0taSkqZSldfX0s eyIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo2ODZ9XSw3ODI6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicG9seWJvb2xqcyIp LGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMv Y29sb3IiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxzPXQoIi4uLy4u L2xpYiIpLGw9dCgiLi4vLi4vbGliL3BvbHlnb24iKSxjPXQoIi4uLy4uL2xp Yi90aHJvdHRsZSIpLHU9dCgiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJz IikubWFrZUV2ZW50RGF0YSxoPXQoIi4vYXhpc19pZHMiKS5nZXRGcm9tSWQs Zj10KCIuLi8uLi9saWIvY2xlYXJfZ2xfY2FudmFzZXMiKSxwPXQoIi4uLy4u L3Bsb3RfYXBpL3N1YnJvdXRpbmVzIikucmVkcmF3UmVnbFRyYWNlcyxkPXQo Ii4vY29uc3RhbnRzIiksZz1kLk1JTlNFTEVDVCx2PWwuZmlsdGVyLG09bC50 ZXN0ZXI7ZnVuY3Rpb24geSh0KXtyZXR1cm4gdC5faWR9ZnVuY3Rpb24geCh0 LGUscixuLGEsaSxvKXt2YXIgcyxsLGMsdSxoLGYscCxkLGcsdj1lLl9ob3Zl cmRhdGEsbT1lLl9mdWxsTGF5b3V0LmNsaWNrbW9kZS5pbmRleE9mKCJldmVu dCIpPi0xLHk9W107aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQmJkFycmF5Lmlz QXJyYXkodCkmJiEwIT09dFswXS5ob3Zlck9uQm94fSh2KSl7ayh0LGUsaSk7 dmFyIHg9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGE9dFswXSxpPS0xLG89W107 Zm9yKG49MDtuPGUubGVuZ3RoO24rKylpZihyPWVbbl0sYS5mdWxsRGF0YS5f ZXhwYW5kZWRJbmRleD09PXIuY2RbMF0udHJhY2UuX2V4cGFuZGVkSW5kZXgp e2lmKCEwPT09YS5ob3Zlck9uQm94KWJyZWFrO3ZvaWQgMCE9PWEucG9pbnRO dW1iZXI/aT1hLnBvaW50TnVtYmVyOnZvaWQgMCE9PWEuYmluTnVtYmVyJiYo aT1hLmJpbk51bWJlcixvPWEucG9pbnROdW1iZXJzKTticmVha31yZXR1cm57 cG9pbnROdW1iZXI6aSxwb2ludE51bWJlcnM6byxzZWFyY2hJbmZvOnJ9fSh2 LHM9TShlLHIsbixhKSk7aWYoeC5wb2ludE51bWJlcnMubGVuZ3RoPjA/ZnVu Y3Rpb24odCxlKXt2YXIgcixuLGEsaT1bXTtmb3IoYT0wO2E8dC5sZW5ndGg7 YSsrKShyPXRbYV0pLmNkWzBdLnRyYWNlLnNlbGVjdGVkcG9pbnRzJiZyLmNk WzBdLnRyYWNlLnNlbGVjdGVkcG9pbnRzLmxlbmd0aD4wJiZpLnB1c2gocik7 aWYoMT09PWkubGVuZ3RoJiZpWzBdPT09ZS5zZWFyY2hJbmZvJiYobj1lLnNl YXJjaEluZm8uY2RbMF0udHJhY2UpLnNlbGVjdGVkcG9pbnRzLmxlbmd0aD09 PWUucG9pbnROdW1iZXJzLmxlbmd0aCl7Zm9yKGE9MDthPGUucG9pbnROdW1i ZXJzLmxlbmd0aDthKyspaWYobi5zZWxlY3RlZHBvaW50cy5pbmRleE9mKGUu cG9pbnROdW1iZXJzW2FdKTwwKXJldHVybiExO3JldHVybiEwfXJldHVybiEx fShzLHgpOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhPTA7Zm9yKG49MDtuPHQu bGVuZ3RoO24rKylpZihlPXRbbl0sKHI9ZS5jZFswXS50cmFjZSkuc2VsZWN0 ZWRwb2ludHMpe2lmKHIuc2VsZWN0ZWRwb2ludHMubGVuZ3RoPjEpcmV0dXJu ITE7aWYoKGErPXIuc2VsZWN0ZWRwb2ludHMubGVuZ3RoKT4xKXJldHVybiEx fXJldHVybiAxPT09YX0ocykmJihmPVMoeCkpKXtmb3IobyYmby5yZW1vdmUo KSxnPTA7ZzxzLmxlbmd0aDtnKyspKGw9c1tnXSkuX21vZHVsZS5zZWxlY3RQ b2ludHMobCwhMSk7RShlLHMpLFQoaSksbSYmZS5lbWl0KCJwbG90bHlfZGVz ZWxlY3QiLG51bGwpfWVsc2V7Zm9yKHA9dC5zaGlmdEtleSYmKHZvaWQgMCE9 PWY/ZjpTKHgpKSxjPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm57cG9pbnROdW1i ZXI6dCxzZWFyY2hJbmZvOmUsc3VidHJhY3Q6cn19KHgucG9pbnROdW1iZXIs eC5zZWFyY2hJbmZvLHApLHU9dyhpLnNlbGVjdGlvbkRlZnMuY29uY2F0KFtj XSkpLGc9MDtnPHMubGVuZ3RoO2crKylpZihoPUwoc1tnXS5fbW9kdWxlLnNl bGVjdFBvaW50cyhzW2ddLHUpLHNbZ10pLHkubGVuZ3RoKWZvcih2YXIgYj0w O2I8aC5sZW5ndGg7YisrKXkucHVzaChoW2JdKTtlbHNlIHk9aDtFKGUscyxk PXtwb2ludHM6eX0pLGMmJmkmJmkuc2VsZWN0aW9uRGVmcy5wdXNoKGMpLG8m JkEoaS5tZXJnZWRQb2x5Z29ucyxvKSxtJiZlLmVtaXQoInBsb3RseV9zZWxl Y3RlZCIsZCl9fX1mdW5jdGlvbiBiKHQpe3JldHVybiJwb2ludE51bWJlciJp biB0JiYic2VhcmNoSW5mbyJpbiB0fWZ1bmN0aW9uIF8odCl7cmV0dXJue3ht aW46MCx4bWF4OjAseW1pbjowLHltYXg6MCxwdHM6W10sY29udGFpbnM6ZnVu Y3Rpb24oZSxyLG4sYSl7dmFyIGk9dC5zZWFyY2hJbmZvLmNkWzBdLnRyYWNl Ll9leHBhbmRlZEluZGV4O3JldHVybiBhLmNkWzBdLnRyYWNlLl9leHBhbmRl ZEluZGV4PT09aSYmbj09PXQucG9pbnROdW1iZXJ9LGlzUmVjdDohMSxkZWdl bmVyYXRlOiExLHN1YnRyYWN0OnQuc3VidHJhY3R9fWZ1bmN0aW9uIHcodCl7 Zm9yKHZhciBlPVtdLHI9Yih0WzBdKT8wOnRbMF1bMF1bMF0sbj1yLGE9Yih0 WzBdKT8wOnRbMF1bMF1bMV0saT1hLG89MDtvPHQubGVuZ3RoO28rKylpZihi KHRbb10pKWUucHVzaChfKHRbb10pKTtlbHNle3ZhciBzPWwudGVzdGVyKHRb b10pO3Muc3VidHJhY3Q9dFtvXS5zdWJ0cmFjdCxlLnB1c2gocykscj1NYXRo Lm1pbihyLHMueG1pbiksbj1NYXRoLm1heChuLHMueG1heCksYT1NYXRoLm1p bihhLHMueW1pbiksaT1NYXRoLm1heChpLHMueW1heCl9cmV0dXJue3htaW46 cix4bWF4Om4seW1pbjphLHltYXg6aSxwdHM6W10sY29udGFpbnM6ZnVuY3Rp b24odCxyLG4sYSl7Zm9yKHZhciBpPSExLG89MDtvPGUubGVuZ3RoO28rKyll W29dLmNvbnRhaW5zKHQscixuLGEpJiYoaT0hMT09PWVbb10uc3VidHJhY3Qp O3JldHVybiBpfSxpc1JlY3Q6ITEsZGVnZW5lcmF0ZTohMX19ZnVuY3Rpb24g ayh0LGUscil7dmFyIG49ZS5fZnVsbExheW91dCxhPXIucGxvdGluZm8saT1u Ll9sYXN0U2VsZWN0ZWRTdWJwbG90JiZuLl9sYXN0U2VsZWN0ZWRTdWJwbG90 PT09YS5pZCxvPXQuc2hpZnRLZXl8fHQuYWx0S2V5O2kmJm8mJmEuc2VsZWN0 aW9uJiZhLnNlbGVjdGlvbi5zZWxlY3Rpb25EZWZzJiYhci5zZWxlY3Rpb25E ZWZzPyhyLnNlbGVjdGlvbkRlZnM9YS5zZWxlY3Rpb24uc2VsZWN0aW9uRGVm cyxyLm1lcmdlZFBvbHlnb25zPWEuc2VsZWN0aW9uLm1lcmdlZFBvbHlnb25z KTpvJiZhLnNlbGVjdGlvbnx8VChyKSxpfHwoQyhlKSxuLl9sYXN0U2VsZWN0 ZWRTdWJwbG90PWEuaWQpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5wbG90aW5m bztlLnNlbGVjdGlvbj17fSxlLnNlbGVjdGlvbi5zZWxlY3Rpb25EZWZzPXQu c2VsZWN0aW9uRGVmcz1bXSxlLnNlbGVjdGlvbi5tZXJnZWRQb2x5Z29ucz10 Lm1lcmdlZFBvbHlnb25zPVtdfWZ1bmN0aW9uIE0odCxlLHIsbil7dmFyIGEs aSxvLHM9W10sbD1lLm1hcCh5KSxjPXIubWFwKHkpO2ZvcihvPTA7bzx0LmNh bGNkYXRhLmxlbmd0aDtvKyspaWYoITA9PT0oaT0oYT10LmNhbGNkYXRhW29d KVswXS50cmFjZSkudmlzaWJsZSYmaS5fbW9kdWxlJiZpLl9tb2R1bGUuc2Vs ZWN0UG9pbnRzKWlmKCFufHxpLnN1YnBsb3QhPT1uJiZpLmdlbyE9PW4paWYo InNwbG9tIj09PWkudHlwZSYmaS5feGF4ZXNbbFswXV0mJmkuX3lheGVzW2Nb MF1dKXt2YXIgdT1wKGkuX21vZHVsZSxhLGVbMF0sclswXSk7dS5zY2VuZT10 Ll9mdWxsTGF5b3V0Ll9zcGxvbVNjZW5lc1tpLnVpZF0scy5wdXNoKHUpfWVs c2UgaWYoInNhbmtleSI9PT1pLnR5cGUpe3ZhciBmPXAoaS5fbW9kdWxlLGEs ZVswXSxyWzBdKTtzLnB1c2goZil9ZWxzZXtpZigtMT09PWwuaW5kZXhPZihp LnhheGlzKSljb250aW51ZTtpZigtMT09PWMuaW5kZXhPZihpLnlheGlzKSlj b250aW51ZTtzLnB1c2gocChpLl9tb2R1bGUsYSxoKHQsaS54YXhpcyksaCh0 LGkueWF4aXMpKSl9ZWxzZSBzLnB1c2gocChpLl9tb2R1bGUsYSxlWzBdLHJb MF0pKTtyZXR1cm4gcztmdW5jdGlvbiBwKHQsZSxyLG4pe3JldHVybntfbW9k dWxlOnQsY2Q6ZSx4YXhpczpyLHlheGlzOm59fX1mdW5jdGlvbiBBKHQsZSl7 dmFyIHIsbixhPVtdO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBpPXRb cl07YS5wdXNoKGkuam9pbigiTCIpKyJMIitpWzBdKX1uPXQubGVuZ3RoPjA/ Ik0iK2Euam9pbigiTSIpKyJaIjoiTTAsMFoiLGUuYXR0cigiZCIsbil9ZnVu Y3Rpb24gUyh0KXt2YXIgZT10LnNlYXJjaEluZm8uY2RbMF0udHJhY2Uscj10 LnBvaW50TnVtYmVyLG49dC5wb2ludE51bWJlcnMsYT1uLmxlbmd0aD4wP25b MF06cjtyZXR1cm4hIWUuc2VsZWN0ZWRwb2ludHMmJmUuc2VsZWN0ZWRwb2lu dHMuaW5kZXhPZihhKT4tMX1mdW5jdGlvbiBFKHQsZSxyKXt2YXIgbixpLG8s cztmb3Iobj0wO248ZS5sZW5ndGg7bisrKXt2YXIgbD1lW25dLmNkWzBdLnRy YWNlLl9mdWxsSW5wdXQsYz10Ll9mdWxsTGF5b3V0Ll90cmFjZVByZUdVSVts LnVpZF18fHt9O3ZvaWQgMD09PWMuc2VsZWN0ZWRwb2ludHMmJihjLnNlbGVj dGVkcG9pbnRzPWwuX2lucHV0LnNlbGVjdGVkcG9pbnRzfHxudWxsKX1pZihy KXt2YXIgdT1yLnBvaW50c3x8W107Zm9yKG49MDtuPGUubGVuZ3RoO24rKyko cz1lW25dLmNkWzBdLnRyYWNlKS5faW5wdXQuc2VsZWN0ZWRwb2ludHM9cy5f ZnVsbElucHV0LnNlbGVjdGVkcG9pbnRzPVtdLHMuX2Z1bGxJbnB1dCE9PXMm JihzLnNlbGVjdGVkcG9pbnRzPVtdKTtmb3Iobj0wO248dS5sZW5ndGg7bisr KXt2YXIgaD11W25dLGQ9aC5kYXRhLGc9aC5mdWxsRGF0YTtoLnBvaW50SW5k aWNlcz8oW10ucHVzaC5hcHBseShkLnNlbGVjdGVkcG9pbnRzLGgucG9pbnRJ bmRpY2VzKSxzLl9mdWxsSW5wdXQhPT1zJiZbXS5wdXNoLmFwcGx5KGcuc2Vs ZWN0ZWRwb2ludHMsaC5wb2ludEluZGljZXMpKTooZC5zZWxlY3RlZHBvaW50 cy5wdXNoKGgucG9pbnRJbmRleCkscy5fZnVsbElucHV0IT09cyYmZy5zZWxl Y3RlZHBvaW50cy5wdXNoKGgucG9pbnRJbmRleCkpfX1lbHNlIGZvcihuPTA7 bjxlLmxlbmd0aDtuKyspZGVsZXRlKHM9ZVtuXS5jZFswXS50cmFjZSkuc2Vs ZWN0ZWRwb2ludHMsZGVsZXRlIHMuX2lucHV0LnNlbGVjdGVkcG9pbnRzLHMu X2Z1bGxJbnB1dCE9PXMmJmRlbGV0ZSBzLl9mdWxsSW5wdXQuc2VsZWN0ZWRw b2ludHM7dmFyIHY9ITE7Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl7cz0obz0o aT1lW25dKS5jZClbMF0udHJhY2UsYS50cmFjZUlzKHMsInJlZ2wiKSYmKHY9 ITApO3ZhciBtPWkuX21vZHVsZSx5PW0uc3R5bGVPblNlbGVjdHx8bS5zdHls ZTt5JiYoeSh0LG8sb1swXS5ub2RlMyksb1swXS5ub2RlUmFuZ2VQbG90MyYm eSh0LG8sb1swXS5ub2RlUmFuZ2VQbG90MykpfXYmJihmKHQpLHAodCkpfWZ1 bmN0aW9uIEwodCxlKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj1l LmNkLG49ZS5jZFswXS50cmFjZSxhPTA7YTx0Lmxlbmd0aDthKyspdFthXT11 KHRbYV0sbixyKTtyZXR1cm4gdH1mdW5jdGlvbiBDKHQpe3ZhciBlPSh0Ll9m dWxsTGF5b3V0fHx7fSkuX3pvb21sYXllcjtlJiZlLnNlbGVjdEFsbCgiLnNl bGVjdC1vdXRsaW5lIikucmVtb3ZlKCl9ZS5leHBvcnRzPXtwcmVwU2VsZWN0 OmZ1bmN0aW9uKHQsZSxyLGEsbCl7dmFyIHUsaCxmLHAseSxiLF8sUz1hLmdk LEM9Uy5fZnVsbExheW91dCxQPUMuX3pvb21sYXllcixPPWEuZWxlbWVudC5n ZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx6PWEucGxvdGluZm8sST16LnhheGlz Ll9vZmZzZXQsRD16LnlheGlzLl9vZmZzZXQsUj1lLU8ubGVmdCxGPXItTy50 b3AsQj1SLE49RixqPSJNIitSKyIsIitGLFY9YS54YXhlc1swXS5fbGVuZ3Ro LFU9YS55YXhlc1swXS5fbGVuZ3RoLHE9YS54YXhlcy5jb25jYXQoYS55YXhl cyksSD10LmFsdEtleTtrKHQsUyxhKSwibGFzc28iPT09bCYmKHU9dihbW1Is Rl1dLGQuQkVORFBYKSk7dmFyIEc9UC5zZWxlY3RBbGwoInBhdGguc2VsZWN0 LW91dGxpbmUtIit6LmlkKS5kYXRhKFsxLDJdKTtHLmVudGVyKCkuYXBwZW5k KCJwYXRoIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKHQpe3JldHVybiJzZWxl Y3Qtb3V0bGluZSBzZWxlY3Qtb3V0bGluZS0iK3QrIiBzZWxlY3Qtb3V0bGlu ZS0iK3ouaWR9KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitJKyIs ICIrRCsiKSIpLmF0dHIoImQiLGorIloiKTt2YXIgWSxXPVAuYXBwZW5kKCJw YXRoIikuYXR0cigiY2xhc3MiLCJ6b29tYm94LWNvcm5lcnMiKS5zdHlsZSh7 ZmlsbDppLmJhY2tncm91bmQsc3Ryb2tlOmkuZGVmYXVsdExpbmUsInN0cm9r ZS13aWR0aCI6MX0pLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0kr IiwgIitEKyIpIikuYXR0cigiZCIsIk0wLDBaIiksWD1DLl91aWQrZC5TRUxF Q1RJRCxaPVtdLEo9TShTLGEueGF4ZXMsYS55YXhlcyxhLnN1YnBsb3QpO2Z1 bmN0aW9uIEsodCxlKXtyZXR1cm4ibG9nIj09PXQudHlwZT90LnAyZChlKTp0 LnAycihlKX1mdW5jdGlvbiBRKHQpe3ZhciBlPSJ5Ij09PXQuX2lkLmNoYXJB dCgwKT8xOjA7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBLKHQscltlXSl9 fWZ1bmN0aW9uICQodCxlKXtyZXR1cm4gdC1lfVk9ei5maWxsUmFuZ2VJdGVt cz96LmZpbGxSYW5nZUl0ZW1zOiJzZWxlY3QiPT09bD9mdW5jdGlvbih0LGUp e3ZhciByPXQucmFuZ2U9e307Zm9yKHk9MDt5PHEubGVuZ3RoO3krKyl7dmFy IG49cVt5XSxhPW4uX2lkLmNoYXJBdCgwKTtyW24uX2lkXT1bSyhuLGVbYSsi bWluIl0pLEsobixlW2ErIm1heCJdKV0uc29ydCgkKX19OmZ1bmN0aW9uKHQs ZSxyKXt2YXIgbj10Lmxhc3NvUG9pbnRzPXt9O2Zvcih5PTA7eTxxLmxlbmd0 aDt5Kyspe3ZhciBhPXFbeV07blthLl9pZF09ci5maWx0ZXJlZC5tYXAoUShh KSl9fSxhLm1vdmVGbj1mdW5jdGlvbih0LGUpe0I9TWF0aC5tYXgoMCxNYXRo Lm1pbihWLHQrUikpLE49TWF0aC5tYXgoMCxNYXRoLm1pbihVLGUrRikpO3Zh ciByPU1hdGguYWJzKEItUiksaT1NYXRoLmFicyhOLUYpO2lmKCJzZWxlY3Qi PT09bCl7dmFyIG89Qy5zZWxlY3RkaXJlY3Rpb247ImgiPT09KG89ImFueSI9 PT1DLnNlbGVjdGRpcmVjdGlvbj9pPE1hdGgubWluKC42KnIsZyk/ImgiOnI8 TWF0aC5taW4oLjYqaSxnKT8idiI6ImQiOkMuc2VsZWN0ZGlyZWN0aW9uKT8o KHA9W1tSLDBdLFtSLFVdLFtCLFVdLFtCLDBdXSkueG1pbj1NYXRoLm1pbihS LEIpLHAueG1heD1NYXRoLm1heChSLEIpLHAueW1pbj1NYXRoLm1pbigwLFUp LHAueW1heD1NYXRoLm1heCgwLFUpLFcuYXR0cigiZCIsIk0iK3AueG1pbisi LCIrKEYtZykrImgtNHYiKzIqZysiaDRaTSIrKHAueG1heC0xKSsiLCIrKEYt ZykrImg0diIrMipnKyJoLTRaIikpOiJ2Ij09PW8/KChwPVtbMCxGXSxbMCxO XSxbVixOXSxbVixGXV0pLnhtaW49TWF0aC5taW4oMCxWKSxwLnhtYXg9TWF0 aC5tYXgoMCxWKSxwLnltaW49TWF0aC5taW4oRixOKSxwLnltYXg9TWF0aC5t YXgoRixOKSxXLmF0dHIoImQiLCJNIisoUi1nKSsiLCIrcC55bWluKyJ2LTRo IisyKmcrInY0Wk0iKyhSLWcpKyIsIisocC55bWF4LTEpKyJ2NGgiKzIqZysi di00WiIpKToiZCI9PT1vJiYoKHA9W1tSLEZdLFtSLE5dLFtCLE5dLFtCLEZd XSkueG1pbj1NYXRoLm1pbihSLEIpLHAueG1heD1NYXRoLm1heChSLEIpLHAu eW1pbj1NYXRoLm1pbihGLE4pLHAueW1heD1NYXRoLm1heChGLE4pLFcuYXR0 cigiZCIsIk0wLDBaIikpfWVsc2UibGFzc28iPT09bCYmKHUuYWRkUHQoW0Is Tl0pLHA9dS5maWx0ZXJlZCk7YS5zZWxlY3Rpb25EZWZzJiZhLnNlbGVjdGlv bkRlZnMubGVuZ3RoPyhmPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcj9uLmRp ZmZlcmVuY2Uoe3JlZ2lvbnM6dCxpbnZlcnRlZDohMX0se3JlZ2lvbnM6W2Vd LGludmVydGVkOiExfSkucmVnaW9uczpuLnVuaW9uKHtyZWdpb25zOnQsaW52 ZXJ0ZWQ6ITF9LHtyZWdpb25zOltlXSxpbnZlcnRlZDohMX0pLnJlZ2lvbnN9 KGEubWVyZ2VkUG9seWdvbnMscCxIKSxwLnN1YnRyYWN0PUgsaD13KGEuc2Vs ZWN0aW9uRGVmcy5jb25jYXQoW3BdKSkpOihmPVtwXSxoPW0ocCkpLEEoZixH KSxjLnRocm90dGxlKFgsZC5TRUxFQ1RERUxBWSxmdW5jdGlvbigpe3ZhciB0 O1o9W107dmFyIGUscj1bXTtmb3IoeT0wO3k8Si5sZW5ndGg7eSsrKWlmKGU9 KGI9Slt5XSkuX21vZHVsZS5zZWxlY3RQb2ludHMoYixoKSxyLnB1c2goZSks dD1MKGUsYiksWi5sZW5ndGgpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKysp Wi5wdXNoKHRbbl0pO2Vsc2UgWj10O0UoUyxKLF89e3BvaW50czpafSksWShf LHAsdSksYS5nZC5lbWl0KCJwbG90bHlfc2VsZWN0aW5nIixfKX0pfSxhLmNs aWNrRm49ZnVuY3Rpb24odCxlKXt2YXIgcj1DLmNsaWNrbW9kZTtXLnJlbW92 ZSgpLGMuZG9uZShYKS50aGVuKGZ1bmN0aW9uKCl7aWYoYy5jbGVhcihYKSwy PT09dCl7Zm9yKEcucmVtb3ZlKCkseT0wO3k8Si5sZW5ndGg7eSsrKShiPUpb eV0pLl9tb2R1bGUuc2VsZWN0UG9pbnRzKGIsITEpO0UoUyxKKSxUKGEpLFMu ZW1pdCgicGxvdGx5X2Rlc2VsZWN0IixudWxsKX1lbHNlIHIuaW5kZXhPZigi c2VsZWN0Iik+LTEmJngoZSxTLGEueGF4ZXMsYS55YXhlcyxhLnN1YnBsb3Qs YSxHKSwiZXZlbnQiPT09ciYmUy5lbWl0KCJwbG90bHlfc2VsZWN0ZWQiLHZv aWQgMCk7by5jbGljayhTLGUpfSkuY2F0Y2gocy5lcnJvcil9LGEuZG9uZUZu PWZ1bmN0aW9uKCl7Vy5yZW1vdmUoKSxjLmRvbmUoWCkudGhlbihmdW5jdGlv bigpe2MuY2xlYXIoWCksYS5nZC5lbWl0KCJwbG90bHlfc2VsZWN0ZWQiLF8p LHAmJmEuc2VsZWN0aW9uRGVmcyYmKHAuc3VidHJhY3Q9SCxhLnNlbGVjdGlv bkRlZnMucHVzaChwKSxhLm1lcmdlZFBvbHlnb25zLmxlbmd0aD0wLFtdLnB1 c2guYXBwbHkoYS5tZXJnZWRQb2x5Z29ucyxmKSksYS5kb25lRm5Db21wbGV0 ZWQmJmEuZG9uZUZuQ29tcGxldGVkKFopfSkuY2F0Y2gocy5lcnJvcil9fSxj bGVhclNlbGVjdDpDLHNlbGVjdE9uQ2xpY2s6eH19LHsiLi4vLi4vY29tcG9u ZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4u Ly4uL2NvbXBvbmVudHMvZngvaGVscGVycyI6NjI3LCIuLi8uLi9saWIiOjcx NywiLi4vLi4vbGliL2NsZWFyX2dsX2NhbnZhc2VzIjo3MDIsIi4uLy4uL2xp Yi9wb2x5Z29uIjo3MjksIi4uLy4uL2xpYi90aHJvdHRsZSI6NzQyLCIuLi8u Li9wbG90X2FwaS9zdWJyb3V0aW5lcyI6NzU2LCIuLi8uLi9yZWdpc3RyeSI6 ODQ2LCIuL2F4aXNfaWRzIjo3NjgsIi4vY29uc3RhbnRzIjo3NzEscG9seWJv b2xqczo0NzV9XSw3ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZDMiKSxhPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8u Li9saWIiKSxvPWkuY2xlYW5OdW1iZXIscz1pLm1zMkRhdGVUaW1lLGw9aS5k YXRlVGltZTJtcyxjPWkuZW5zdXJlTnVtYmVyLHU9aS5pc0FycmF5T3JUeXBl ZEFycmF5LGg9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLGY9aC5G UF9TQUZFLHA9aC5CQUROVU0sZD1oLkxPR19DTElQLGc9dCgiLi9jb25zdGFu dHMiKSx2PXQoIi4vYXhpc19pZHMiKTtmdW5jdGlvbiBtKHQpe3JldHVybiBN YXRoLnBvdygxMCx0KX1mdW5jdGlvbiB5KHQpe3JldHVybiBudWxsIT10fWUu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe2U9ZXx8e307dmFyIHI9dC5faWR8fCJ4 IixoPXIuY2hhckF0KDApO2Z1bmN0aW9uIHgoZSxyKXtpZihlPjApcmV0dXJu IE1hdGgubG9nKGUpL01hdGguTE4xMDtpZihlPD0wJiZyJiZ0LnJhbmdlJiYy PT09dC5yYW5nZS5sZW5ndGgpe3ZhciBuPXQucmFuZ2VbMF0sYT10LnJhbmdl WzFdO3JldHVybi41KihuK2EtMipkKk1hdGguYWJzKG4tYSkpfXJldHVybiBw fWZ1bmN0aW9uIGIoZSxyLG4pe3ZhciBvPWwoZSxufHx0LmNhbGVuZGFyKTtp ZihvPT09cCl7aWYoIWEoZSkpcmV0dXJuIHA7ZT0rZTt2YXIgcz1NYXRoLmZs b29yKDEwKmkubW9kKGUrLjA1LDEpKSxjPU1hdGgucm91bmQoZS1zLzEwKTtv PWwobmV3IERhdGUoYykpK3MvMTB9cmV0dXJuIG99ZnVuY3Rpb24gXyhlLHIs bil7cmV0dXJuIHMoZSxyLG58fHQuY2FsZW5kYXIpfWZ1bmN0aW9uIHcoZSl7 cmV0dXJuIHQuX2NhdGVnb3JpZXNbTWF0aC5yb3VuZChlKV19ZnVuY3Rpb24g ayhlKXtpZih5KGUpKXtpZih2b2lkIDA9PT10Ll9jYXRlZ29yaWVzTWFwJiYo dC5fY2F0ZWdvcmllc01hcD17fSksdm9pZCAwIT09dC5fY2F0ZWdvcmllc01h cFtlXSlyZXR1cm4gdC5fY2F0ZWdvcmllc01hcFtlXTt0Ll9jYXRlZ29yaWVz LnB1c2goIm51bWJlciI9PXR5cGVvZiBlP1N0cmluZyhlKTplKTt2YXIgcj10 Ll9jYXRlZ29yaWVzLmxlbmd0aC0xO3JldHVybiB0Ll9jYXRlZ29yaWVzTWFw W2VdPXIscn1yZXR1cm4gcH1mdW5jdGlvbiBUKGUpe2lmKHQuX2NhdGVnb3Jp ZXNNYXApcmV0dXJuIHQuX2NhdGVnb3JpZXNNYXBbZV19ZnVuY3Rpb24gTSh0 KXt2YXIgZT1UKHQpO3JldHVybiB2b2lkIDAhPT1lP2U6YSh0KT8rdDp2b2lk IDB9ZnVuY3Rpb24gQShlKXtyZXR1cm4gYShlKT9uLnJvdW5kKHQuX2IrdC5f bSplLDIpOnB9ZnVuY3Rpb24gUyhlKXtyZXR1cm4oZS10Ll9iKS90Ll9tfXQu YzJsPSJsb2ciPT09dC50eXBlP3g6Yyx0LmwyYz0ibG9nIj09PXQudHlwZT9t OmMsdC5sMnA9QSx0LnAybD1TLHQuYzJwPSJsb2ciPT09dC50eXBlP2Z1bmN0 aW9uKHQsZSl7cmV0dXJuIEEoeCh0LGUpKX06QSx0LnAyYz0ibG9nIj09PXQu dHlwZT9mdW5jdGlvbih0KXtyZXR1cm4gbShTKHQpKX06UywtMSE9PVsibGlu ZWFyIiwiLSJdLmluZGV4T2YodC50eXBlKT8odC5kMnI9dC5yMmQ9dC5kMmM9 dC5yMmM9dC5kMmw9dC5yMmw9byx0LmMyZD10LmMycj10LmwyZD10Lmwycj1j LHQuZDJwPXQucjJwPWZ1bmN0aW9uKGUpe3JldHVybiB0LmwycChvKGUpKX0s dC5wMmQ9dC5wMnI9Uyx0LmNsZWFuUG9zPWMpOiJsb2ciPT09dC50eXBlPyh0 LmQycj10LmQybD1mdW5jdGlvbih0LGUpe3JldHVybiB4KG8odCksZSl9LHQu cjJkPXQucjJjPWZ1bmN0aW9uKHQpe3JldHVybiBtKG8odCkpfSx0LmQyYz10 LnIybD1vLHQuYzJkPXQubDJyPWMsdC5jMnI9eCx0LmwyZD1tLHQuZDJwPWZ1 bmN0aW9uKGUscil7cmV0dXJuIHQubDJwKHQuZDJyKGUscikpfSx0LnAyZD1m dW5jdGlvbih0KXtyZXR1cm4gbShTKHQpKX0sdC5yMnA9ZnVuY3Rpb24oZSl7 cmV0dXJuIHQubDJwKG8oZSkpfSx0LnAycj1TLHQuY2xlYW5Qb3M9Yyk6ImRh dGUiPT09dC50eXBlPyh0LmQycj10LnIyZD1pLmlkZW50aXR5LHQuZDJjPXQu cjJjPXQuZDJsPXQucjJsPWIsdC5jMmQ9dC5jMnI9dC5sMmQ9dC5sMnI9Xyx0 LmQycD10LnIycD1mdW5jdGlvbihlLHIsbil7cmV0dXJuIHQubDJwKGIoZSww LG4pKX0sdC5wMmQ9dC5wMnI9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBfKFMo dCksZSxyKX0sdC5jbGVhblBvcz1mdW5jdGlvbihlKXtyZXR1cm4gaS5jbGVh bkRhdGUoZSxwLHQuY2FsZW5kYXIpfSk6ImNhdGVnb3J5Ij09PXQudHlwZT8o dC5kMmM9dC5kMmw9ayx0LnIyZD10LmMyZD10LmwyZD13LHQuZDJyPXQuZDJs X25vYWRkPU0sdC5yMmM9ZnVuY3Rpb24oZSl7dmFyIHI9TShlKTtyZXR1cm4g dm9pZCAwIT09cj9yOnQuZnJhY3Rpb24yciguNSl9LHQubDJyPXQuYzJyPWMs dC5yMmw9TSx0LmQycD1mdW5jdGlvbihlKXtyZXR1cm4gdC5sMnAodC5yMmMo ZSkpfSx0LnAyZD1mdW5jdGlvbih0KXtyZXR1cm4gdyhTKHQpKX0sdC5yMnA9 dC5kMnAsdC5wMnI9Uyx0LmNsZWFuUG9zPWZ1bmN0aW9uKHQpe3JldHVybiJz dHJpbmciPT10eXBlb2YgdCYmIiIhPT10P3Q6Yyh0KX0pOiJtdWx0aWNhdGVn b3J5Ij09PXQudHlwZSYmKHQucjJkPXQuYzJkPXQubDJkPXcsdC5kMnI9dC5k Mmxfbm9hZGQ9TSx0LnIyYz1mdW5jdGlvbihlKXt2YXIgcj1NKGUpO3JldHVy biB2b2lkIDAhPT1yP3I6dC5mcmFjdGlvbjJyKC41KX0sdC5yMmNfanVzdF9p bmRpY2VzPVQsdC5sMnI9dC5jMnI9Yyx0LnIybD1NLHQuZDJwPWZ1bmN0aW9u KGUpe3JldHVybiB0LmwycCh0LnIyYyhlKSl9LHQucDJkPWZ1bmN0aW9uKHQp e3JldHVybiB3KFModCkpfSx0LnIycD10LmQycCx0LnAycj1TLHQuY2xlYW5Q b3M9ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl8fCJzdHJp bmciPT10eXBlb2YgdCYmIiIhPT10P3Q6Yyh0KX0sdC5zZXR1cE11bHRpQ2F0 ZWdvcnk9ZnVuY3Rpb24obil7dmFyIGEsbyxzPXQuX3RyYWNlSW5kaWNlcyxs PWUuX2F4aXNNYXRjaEdyb3VwcztpZihsJiZsLmxlbmd0aCYmMD09PXQuX2Nh dGVnb3JpZXMubGVuZ3RoKWZvcihhPTA7YTxsLmxlbmd0aDthKyspe3ZhciBj PWxbYV07aWYoY1tyXSlmb3IodmFyIGYgaW4gYylpZihmIT09cil7dmFyIHA9 ZVt2LmlkMm5hbWUoZildO3M9cy5jb25jYXQocC5fdHJhY2VJbmRpY2VzKX19 dmFyIGQ9W1swLHt9XSxbMCx7fV1dLGc9W107Zm9yKGE9MDthPHMubGVuZ3Ro O2ErKyl7dmFyIG09bltzW2FdXTtpZihoIGluIG0pe3ZhciB4PW1baF0sYj1t Ll9sZW5ndGh8fGkubWluUm93TGVuZ3RoKHgpO2lmKHUoeFswXSkmJnUoeFsx XSkpZm9yKG89MDtvPGI7bysrKXt2YXIgXz14WzBdW29dLHc9eFsxXVtvXTt5 KF8pJiZ5KHcpJiYoZy5wdXNoKFtfLHddKSxfIGluIGRbMF1bMV18fChkWzBd WzFdW19dPWRbMF1bMF0rKyksdyBpbiBkWzFdWzFdfHwoZFsxXVsxXVt3XT1k WzFdWzBdKyspKX19fWZvcihnLnNvcnQoZnVuY3Rpb24odCxlKXt2YXIgcj1k WzBdWzFdLG49clt0WzBdXS1yW2VbMF1dO2lmKG4pcmV0dXJuIG47dmFyIGE9 ZFsxXVsxXTtyZXR1cm4gYVt0WzFdXS1hW2VbMV1dfSksYT0wO2E8Zy5sZW5n dGg7YSsrKWsoZ1thXSl9KSx0LmZyYWN0aW9uMnI9ZnVuY3Rpb24oZSl7dmFy IHI9dC5yMmwodC5yYW5nZVswXSksbj10LnIybCh0LnJhbmdlWzFdKTtyZXR1 cm4gdC5sMnIocitlKihuLXIpKX0sdC5yMmZyYWN0aW9uPWZ1bmN0aW9uKGUp e3ZhciByPXQucjJsKHQucmFuZ2VbMF0pLG49dC5yMmwodC5yYW5nZVsxXSk7 cmV0dXJuKHQucjJsKGUpLXIpLyhuLXIpfSx0LmNsZWFuUmFuZ2U9ZnVuY3Rp b24oZSxyKXtyfHwocj17fSksZXx8KGU9InJhbmdlIik7dmFyIG4sbyxzPWku bmVzdGVkUHJvcGVydHkodCxlKS5nZXQoKTtpZihvPShvPSJkYXRlIj09PXQu dHlwZT9pLmRmbHRSYW5nZSh0LmNhbGVuZGFyKToieSI9PT1oP2cuREZMVFJB TkdFWTpyLmRmbHRSYW5nZXx8Zy5ERkxUUkFOR0VYKS5zbGljZSgpLCJ0b3pl cm8iIT09dC5yYW5nZW1vZGUmJiJub25uZWdhdGl2ZSIhPT10LnJhbmdlbW9k ZXx8KG9bMF09MCkscyYmMj09PXMubGVuZ3RoKWZvcigiZGF0ZSIhPT10LnR5 cGV8fHQuYXV0b3JhbmdlfHwoc1swXT1pLmNsZWFuRGF0ZShzWzBdLHAsdC5j YWxlbmRhciksc1sxXT1pLmNsZWFuRGF0ZShzWzFdLHAsdC5jYWxlbmRhcikp LG49MDtuPDI7bisrKWlmKCJkYXRlIj09PXQudHlwZSl7aWYoIWkuaXNEYXRl VGltZShzW25dLHQuY2FsZW5kYXIpKXt0W2VdPW87YnJlYWt9aWYodC5yMmwo c1swXSk9PT10LnIybChzWzFdKSl7dmFyIGw9aS5jb25zdHJhaW4odC5yMmwo c1swXSksaS5NSU5fTVMrMWUzLGkuTUFYX01TLTFlMyk7c1swXT10Lmwycihs LTFlMyksc1sxXT10LmwycihsKzFlMyk7YnJlYWt9fWVsc2V7aWYoIWEoc1tu XSkpe2lmKCFhKHNbMS1uXSkpe3RbZV09bzticmVha31zW25dPXNbMS1uXSoo bj8xMDouMSl9aWYoc1tuXTwtZj9zW25dPS1mOnNbbl0+ZiYmKHNbbl09Ziks c1swXT09PXNbMV0pe3ZhciBjPU1hdGgubWF4KDEsTWF0aC5hYnMoMWUtNipz WzBdKSk7c1swXS09YyxzWzFdKz1jfX1lbHNlIGkubmVzdGVkUHJvcGVydHko dCxlKS5zZXQobyl9LHQuc2V0U2NhbGU9ZnVuY3Rpb24ocil7dmFyIG49ZS5f c2l6ZTtpZih0Lm92ZXJsYXlpbmcpe3ZhciBhPXYuZ2V0RnJvbUlkKHtfZnVs bExheW91dDplfSx0Lm92ZXJsYXlpbmcpO3QuZG9tYWluPWEuZG9tYWlufXZh ciBpPXImJnQuX3I/Il9yIjoicmFuZ2UiLG89dC5jYWxlbmRhcjt0LmNsZWFu UmFuZ2UoaSk7dmFyIHM9dC5yMmwodFtpXVswXSxvKSxsPXQucjJsKHRbaV1b MV0sbyk7aWYoInkiPT09aD8odC5fb2Zmc2V0PW4udCsoMS10LmRvbWFpblsx XSkqbi5oLHQuX2xlbmd0aD1uLmgqKHQuZG9tYWluWzFdLXQuZG9tYWluWzBd KSx0Ll9tPXQuX2xlbmd0aC8ocy1sKSx0Ll9iPS10Ll9tKmwpOih0Ll9vZmZz ZXQ9bi5sK3QuZG9tYWluWzBdKm4udyx0Ll9sZW5ndGg9bi53Kih0LmRvbWFp blsxXS10LmRvbWFpblswXSksdC5fbT10Ll9sZW5ndGgvKGwtcyksdC5fYj0t dC5fbSpzKSwhaXNGaW5pdGUodC5fbSl8fCFpc0Zpbml0ZSh0Ll9iKXx8dC5f bGVuZ3RoPDApdGhyb3cgZS5fcmVwbG90dGluZz0hMSxuZXcgRXJyb3IoIlNv bWV0aGluZyB3ZW50IHdyb25nIHdpdGggYXhpcyBzY2FsaW5nIil9LHQubWFr ZUNhbGNkYXRhPWZ1bmN0aW9uKGUscil7dmFyIG4sYSxvLHMsbD10LnR5cGUs Yz0iZGF0ZSI9PT1sJiZlW3IrImNhbGVuZGFyIl07aWYociBpbiBlKXtpZihu PWVbcl0scz1lLl9sZW5ndGh8fGkubWluUm93TGVuZ3RoKG4pLGkuaXNUeXBl ZEFycmF5KG4pJiYoImxpbmVhciI9PT1sfHwibG9nIj09PWwpKXtpZihzPT09 bi5sZW5ndGgpcmV0dXJuIG47aWYobi5zdWJhcnJheSlyZXR1cm4gbi5zdWJh cnJheSgwLHMpfWlmKCJtdWx0aWNhdGVnb3J5Ij09PWwpcmV0dXJuIGZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl7 dmFyIGE9KHRbMF18fFtdKVtuXSxpPSh0WzFdfHxbXSlbbl07cltuXT1UKFth LGldKX1yZXR1cm4gcn0obixzKTtmb3IoYT1uZXcgQXJyYXkocyksbz0wO288 cztvKyspYVtvXT10LmQyYyhuW29dLDAsYyl9ZWxzZXt2YXIgdT1yKyIwImlu IGU/dC5kMmMoZVtyKyIwIl0sMCxjKTowLGg9ZVsiZCIrcl0/TnVtYmVyKGVb ImQiK3JdKToxO2ZvcihuPWVbe3g6InkiLHk6IngifVtyXV0scz1lLl9sZW5n dGh8fG4ubGVuZ3RoLGE9bmV3IEFycmF5KHMpLG89MDtvPHM7bysrKWFbb109 dStvKmh9cmV0dXJuIGF9LHQuaXNWYWxpZFJhbmdlPWZ1bmN0aW9uKGUpe3Jl dHVybiBBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgmJmEodC5yMmwo ZVswXSkpJiZhKHQucjJsKGVbMV0pKX0sdC5pc1B0V2l0aGluUmFuZ2U9ZnVu Y3Rpb24oZSxyKXt2YXIgbj10LmMybChlW2hdLG51bGwsciksYT10LnIybCh0 LnJhbmdlWzBdKSxpPXQucjJsKHQucmFuZ2VbMV0pO3JldHVybiBhPGk/YTw9 biYmbjw9aTppPD1uJiZuPD1hfSx0LmNsZWFyQ2FsYz1mdW5jdGlvbigpe3Zh ciBuPWZ1bmN0aW9uKCl7dC5fY2F0ZWdvcmllcz1bXSx0Ll9jYXRlZ29yaWVz TWFwPXt9fSxhPWUuX2F4aXNNYXRjaEdyb3VwcztpZihhJiZhLmxlbmd0aCl7 Zm9yKHZhciBpPSExLG89MDtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXTtp ZihzW3JdKXtpPSEwO3ZhciBsPW51bGwsYz1udWxsO2Zvcih2YXIgdSBpbiBz KXt2YXIgaD1lW3YuaWQybmFtZSh1KV07aWYoaC5fY2F0ZWdvcmllcyl7bD1o Ll9jYXRlZ29yaWVzLGM9aC5fY2F0ZWdvcmllc01hcDticmVha319bCYmYz8o dC5fY2F0ZWdvcmllcz1sLHQuX2NhdGVnb3JpZXNNYXA9Yyk6bigpO2JyZWFr fX1pfHxuKCl9ZWxzZSBuKCk7aWYodC5faW5pdGlhbENhdGVnb3JpZXMpZm9y KHZhciBmPTA7Zjx0Ll9pbml0aWFsQ2F0ZWdvcmllcy5sZW5ndGg7ZisrKWso dC5faW5pdGlhbENhdGVnb3JpZXNbZl0pfSx0LnNvcnRCeUluaXRpYWxDYXRl Z29yaWVzPWZ1bmN0aW9uKCl7dmFyIG49W107aWYodC5fY2F0ZWdvcmllcz1b XSx0Ll9jYXRlZ29yaWVzTWFwPXt9LHQuX2luaXRpYWxDYXRlZ29yaWVzKWZv cih2YXIgYT0wO2E8dC5faW5pdGlhbENhdGVnb3JpZXMubGVuZ3RoO2ErKylr KHQuX2luaXRpYWxDYXRlZ29yaWVzW2FdKTtuPW4uY29uY2F0KHQuX3RyYWNl SW5kaWNlcyk7dmFyIGk9dC5fbWF0Y2hHcm91cDtmb3IodmFyIG8gaW4gaSlp ZihyIT09byl7dmFyIHM9ZVt2LmlkMm5hbWUobyldO3MuX2NhdGVnb3JpZXM9 dC5fY2F0ZWdvcmllcyxzLl9jYXRlZ29yaWVzTWFwPXQuX2NhdGVnb3JpZXNN YXAsbj1uLmNvbmNhdChzLl90cmFjZUluZGljZXMpfXJldHVybiBufTt2YXIg RT1lLl9kM2xvY2FsZTsiZGF0ZSI9PT10LnR5cGUmJih0Ll9kYXRlRm9ybWF0 PUU/RS50aW1lRm9ybWF0LnV0YzpuLnRpbWUuZm9ybWF0LnV0Yyx0Ll9leHRy YUZvcm1hdD1lLl9leHRyYUZvcm1hdCksdC5fc2VwYXJhdG9ycz1lLnNlcGFy YXRvcnMsdC5fbnVtRm9ybWF0PUU/RS5udW1iZXJGb3JtYXQ6bi5mb3JtYXQs ZGVsZXRlIHQuX21pbkR0aWNrLGRlbGV0ZSB0Ll9mb3JjZVRpY2swfX0seyIu Li8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3 LCIuL2F4aXNfaWRzIjo3NjgsIi4vY29uc3RhbnRzIjo3NzEsZDM6MTY1LCJm YXN0LWlzbnVtZXJpYyI6MjI4fV0sNzg0OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9sYXlvdXRf YXR0cmlidXRlcyIpLGk9dCgiLi4vYXJyYXlfY29udGFpbmVyX2RlZmF1bHRz Iik7ZnVuY3Rpb24gbyh0KXt2YXIgZT1bInNob3dleHBvbmVudCIsInNob3d0 aWNrcHJlZml4Iiwic2hvd3RpY2tzdWZmaXgiXS5maWx0ZXIoZnVuY3Rpb24o ZSl7cmV0dXJuIHZvaWQgMCE9PXRbZV19KTtpZihlLmV2ZXJ5KGZ1bmN0aW9u KHIpe3JldHVybiB0W3JdPT09dFtlWzBdXX0pfHwxPT09ZS5sZW5ndGgpcmV0 dXJuIHRbZVswXV19ZnVuY3Rpb24gcyh0LGUpe2Z1bmN0aW9uIHIocixpKXty ZXR1cm4gbi5jb2VyY2UodCxlLGEudGlja2Zvcm1hdHN0b3BzLHIsaSl9cigi ZW5hYmxlZCIpJiYocigiZHRpY2tyYW5nZSIpLHIoInZhbHVlIikpfWUuZXhw b3J0cz1mdW5jdGlvbih0LGUscixsLGMsdSl7dSYmMSE9PXUucGFzc3x8ZnVu Y3Rpb24odCxlLHIsbixhKXt2YXIgaT1vKHQpO3IoInRpY2twcmVmaXgiKSYm cigic2hvd3RpY2twcmVmaXgiLGkpO3IoInRpY2tzdWZmaXgiLGEudGlja1N1 ZmZpeERmbHQpJiZyKCJzaG93dGlja3N1ZmZpeCIsaSl9KHQsMCxyLDAsYyks dSYmMiE9PXUucGFzc3x8ZnVuY3Rpb24odCxlLHIsbCxjKXt2YXIgdT1vKHQp O3IoInRpY2twcmVmaXgiKSYmcigic2hvd3RpY2twcmVmaXgiLHUpO3IoInRp Y2tzdWZmaXgiLGMudGlja1N1ZmZpeERmbHQpJiZyKCJzaG93dGlja3N1ZmZp eCIsdSk7aWYocigic2hvd3RpY2tsYWJlbHMiKSl7dmFyIGg9Yy5mb250fHx7 fSxmPWUuY29sb3IscD1mJiZmIT09YS5jb2xvci5kZmx0P2Y6aC5jb2xvcjtp ZihuLmNvZXJjZUZvbnQociwidGlja2ZvbnQiLHtmYW1pbHk6aC5mYW1pbHks c2l6ZTpoLnNpemUsY29sb3I6cH0pLHIoInRpY2thbmdsZSIpLCJjYXRlZ29y eSIhPT1sKXt2YXIgZD1yKCJ0aWNrZm9ybWF0IiksZz10LnRpY2tmb3JtYXRz dG9wcztBcnJheS5pc0FycmF5KGcpJiZnLmxlbmd0aCYmaSh0LGUse25hbWU6 InRpY2tmb3JtYXRzdG9wcyIsaW5jbHVzaW9uQXR0cjoiZW5hYmxlZCIsaGFu ZGxlSXRlbURlZmF1bHRzOnN9KSxkfHwiZGF0ZSI9PT1sfHwocigic2hvd2V4 cG9uZW50Iix1KSxyKCJleHBvbmVudGZvcm1hdCIpLHIoInNlcGFyYXRldGhv dXNhbmRzIikpfX19KHQsZSxyLGwsYyl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIu Li9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjc2MSwiLi9sYXlvdXRfYXR0 cmlidXRlcyI6Nzc3fV0sNzg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9sYXlvdXRfYXR0cmli dXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbz1uLmNv ZXJjZTIodCxlLGEsInRpY2tsZW4iKSxzPW4uY29lcmNlMih0LGUsYSwidGlj a3dpZHRoIiksbD1uLmNvZXJjZTIodCxlLGEsInRpY2tjb2xvciIsZS5jb2xv cik7cigidGlja3MiLGkub3V0ZXJUaWNrc3x8b3x8c3x8bD8ib3V0c2lkZSI6 IiIpfHwoZGVsZXRlIGUudGlja2xlbixkZWxldGUgZS50aWNrd2lkdGgsZGVs ZXRlIGUudGlja2NvbG9yKX19LHsiLi4vLi4vbGliIjo3MTcsIi4vbGF5b3V0 X2F0dHJpYnV0ZXMiOjc3N31dLDc4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuL2NsZWFuX3RpY2tzIik7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyLGEpe3ZhciBpOyJhcnJheSIhPT10LnRpY2ttb2RlfHwi bG9nIiE9PWEmJiJkYXRlIiE9PWE/aT1yKCJ0aWNrbW9kZSIsQXJyYXkuaXNB cnJheSh0LnRpY2t2YWxzKT8iYXJyYXkiOnQuZHRpY2s/ImxpbmVhciI6ImF1 dG8iKTppPWUudGlja21vZGU9ImF1dG8iO2lmKCJhdXRvIj09PWkpcigibnRp Y2tzIik7ZWxzZSBpZigibGluZWFyIj09PWkpe3ZhciBvPWUuZHRpY2s9bi5k dGljayh0LmR0aWNrLGEpO2UudGljazA9bi50aWNrMCh0LnRpY2swLGEsZS5j YWxlbmRhcixvKX1lbHNlIGlmKCJtdWx0aWNhdGVnb3J5IiE9PWEpe3ZvaWQg MD09PXIoInRpY2t2YWxzIik/ZS50aWNrbW9kZT0iYXV0byI6cigidGlja3Rl eHQiKX19fSx7Ii4vY2xlYW5fdGlja3MiOjc3MH1dLDc4NzpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4v cmVnaXN0cnkiKSxpPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vY29tcG9u ZW50cy9kcmF3aW5nIikscz10KCIuL2F4ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIsbCl7dmFyIGM9dC5fZnVsbExheW91dDtpZigwIT09ZS5sZW5n dGgpe3ZhciB1LGgsZixwO2wmJih1PWwoKSk7dmFyIGQ9bi5lYXNlKHIuZWFz aW5nKTtyZXR1cm4gdC5fdHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxi YWNrcy5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5jYW5jZWxBbmlt YXRpb25GcmFtZShwKSxwPW51bGwsZnVuY3Rpb24oKXtmb3IodmFyIHI9e30s bj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dLG89aS5wbG90aW5mby54 YXhpcyxzPWkucGxvdGluZm8ueWF4aXM7aS54cjAmJihyW28uX25hbWUrIi5y YW5nZSJdPWkueHIwLnNsaWNlKCkpLGkueXIwJiYocltzLl9uYW1lKyIucmFu Z2UiXT1pLnlyMC5zbGljZSgpKX1yZXR1cm4gYS5jYWxsKCJyZWxheW91dCIs dCxyKS50aGVuKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0 KyspZyhlW3RdLnBsb3RpbmZvKX0pfSgpfSksaD1EYXRlLm5vdygpLHA9d2lu ZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiBuKCl7Zj1EYXRl Lm5vdygpO2Zvcih2YXIgaT1NYXRoLm1pbigxLChmLWgpL3IuZHVyYXRpb24p LG89ZChpKSxzPTA7czxlLmxlbmd0aDtzKyspdihlW3NdLG8pO2YtaD5yLmR1 cmF0aW9uPyhmdW5jdGlvbigpe2Zvcih2YXIgcj17fSxuPTA7bjxlLmxlbmd0 aDtuKyspe3ZhciBpPWVbbl0sbz1pLnBsb3RpbmZvLnhheGlzLHM9aS5wbG90 aW5mby55YXhpcztpLnhyMSYmKHJbby5fbmFtZSsiLnJhbmdlIl09aS54cjEu c2xpY2UoKSksaS55cjEmJihyW3MuX25hbWUrIi5yYW5nZSJdPWkueXIxLnNs aWNlKCkpfXUmJnUoKSxhLmNhbGwoInJlbGF5b3V0Iix0LHIpLnRoZW4oZnVu Y3Rpb24oKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylnKGVbdF0ucGxv dGluZm8pfSl9KCkscD13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUobikp OnA9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShuKX0pLFByb21pc2Uu cmVzb2x2ZSgpfWZ1bmN0aW9uIGcodCl7dmFyIGU9dC54YXhpcyxyPXQueWF4 aXM7Yy5fZGVmcy5zZWxlY3QoIiMiK3QuY2xpcElkKyI+IHJlY3QiKS5jYWxs KG8uc2V0VHJhbnNsYXRlLDAsMCkuY2FsbChvLnNldFNjYWxlLDEsMSksdC5w bG90LmNhbGwoby5zZXRUcmFuc2xhdGUsZS5fb2Zmc2V0LHIuX29mZnNldCku Y2FsbChvLnNldFNjYWxlLDEsMSk7dmFyIG49dC5wbG90LnNlbGVjdEFsbCgi LnNjYXR0ZXJsYXllciAudHJhY2UiKTtuLnNlbGVjdEFsbCgiLnBvaW50Iiku Y2FsbChvLnNldFBvaW50R3JvdXBTY2FsZSwxLDEpLG4uc2VsZWN0QWxsKCIu dGV4dHBvaW50IikuY2FsbChvLnNldFRleHRQb2ludHNTY2FsZSwxLDEpLG4u Y2FsbChvLmhpZGVPdXRzaWRlUmFuZ2VQb2ludHMsdCl9ZnVuY3Rpb24gdihl LHIpe3ZhciBuPWUucGxvdGluZm8sYT1uLnhheGlzLGw9bi55YXhpcyxjPWEu X2xlbmd0aCx1PWwuX2xlbmd0aCxoPSEhZS54cjEsZj0hIWUueXIxLHA9W107 aWYoaCl7dmFyIGQ9aS5zaW1wbGVNYXAoZS54cjAsYS5yMmwpLGc9aS5zaW1w bGVNYXAoZS54cjEsYS5yMmwpLHY9ZFsxXS1kWzBdLG09Z1sxXS1nWzBdO3Bb MF09KGRbMF0qKDEtcikrcipnWzBdLWRbMF0pLyhkWzFdLWRbMF0pKmMscFsy XT1jKigxLXIrciptL3YpLGEucmFuZ2VbMF09YS5sMnIoZFswXSooMS1yKSty KmdbMF0pLGEucmFuZ2VbMV09YS5sMnIoZFsxXSooMS1yKStyKmdbMV0pfWVs c2UgcFswXT0wLHBbMl09YztpZihmKXt2YXIgeT1pLnNpbXBsZU1hcChlLnly MCxsLnIybCkseD1pLnNpbXBsZU1hcChlLnlyMSxsLnIybCksYj15WzFdLXlb MF0sXz14WzFdLXhbMF07cFsxXT0oeVsxXSooMS1yKStyKnhbMV0teVsxXSkv KHlbMF0teVsxXSkqdSxwWzNdPXUqKDEtcityKl8vYiksbC5yYW5nZVswXT1h Lmwycih5WzBdKigxLXIpK3IqeFswXSksbC5yYW5nZVsxXT1sLmwycih5WzFd KigxLXIpK3IqeFsxXSl9ZWxzZSBwWzFdPTAscFszXT11O3MuZHJhd09uZSh0 LGEse3NraXBUaXRsZTohMH0pLHMuZHJhd09uZSh0LGwse3NraXBUaXRsZToh MH0pLHMucmVkcmF3Q29tcG9uZW50cyh0LFthLl9pZCxsLl9pZF0pO3ZhciB3 PWg/Yy9wWzJdOjEsaz1mP3UvcFszXToxLFQ9aD9wWzBdOjAsTT1mP3BbMV06 MCxBPWg/cFswXS9wWzJdKmM6MCxTPWY/cFsxXS9wWzNdKnU6MCxFPWEuX29m ZnNldC1BLEw9bC5fb2Zmc2V0LVM7bi5jbGlwUmVjdC5jYWxsKG8uc2V0VHJh bnNsYXRlLFQsTSkuY2FsbChvLnNldFNjYWxlLDEvdywxL2spLG4ucGxvdC5j YWxsKG8uc2V0VHJhbnNsYXRlLEUsTCkuY2FsbChvLnNldFNjYWxlLHcsayks by5zZXRQb2ludEdyb3VwU2NhbGUobi56b29tU2NhbGVQdHMsMS93LDEvayks by5zZXRUZXh0UG9pbnRzU2NhbGUobi56b29tU2NhbGVUeHQsMS93LDEvayl9 cy5yZWRyYXdDb21wb25lbnRzKHQpfX0seyIuLi8uLi9jb21wb25lbnRzL2Ry YXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4 NDYsIi4vYXhlcyI6NzY1LGQzOjE2NX1dLDc4ODpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLnRyYWNl SXMsYT10KCIuL2F4aXNfYXV0b3R5cGUiKTtmdW5jdGlvbiBpKHQpe3JldHVy bnt2OiJ4IixoOiJ5In1bdC5vcmllbnRhdGlvbnx8InYiXX1mdW5jdGlvbiBv KHQsZSl7dmFyIHI9aSh0KSxhPW4odCwiYm94LXZpb2xpbiIpLG89bih0Ll9m dWxsSW5wdXR8fHt9LCJjYW5kbGVzdGljayIpO3JldHVybiBhJiYhbyYmZT09 PXImJnZvaWQgMD09PXRbcl0mJnZvaWQgMD09PXRbcisiMCJdfWUuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixzKXsiLSI9PT1yKCJ0eXBlIiwocy5zcGxvbVN0 YXNofHx7fSkudHlwZSkmJighZnVuY3Rpb24odCxlKXtpZigiLSIhPT10LnR5 cGUpcmV0dXJuO3ZhciByLHM9dC5faWQsbD1zLmNoYXJBdCgwKTstMSE9PXMu aW5kZXhPZigic2NlbmUiKSYmKHM9bCk7dmFyIGM9ZnVuY3Rpb24odCxlLHIp e2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgYT10W25dO2lmKCJz cGxvbSI9PT1hLnR5cGUmJmEuX2xlbmd0aD4wJiYoYVsiXyIrcisiYXhlcyJd fHx7fSlbZV0pcmV0dXJuIGE7aWYoKGFbcisiYXhpcyJdfHxyKT09PWUpe2lm KG8oYSxyKSlyZXR1cm4gYTtpZigoYVtyXXx8W10pLmxlbmd0aHx8YVtyKyIw Il0pcmV0dXJuIGF9fX0oZSxzLGwpO2lmKCFjKXJldHVybjtpZigiaGlzdG9n cmFtIj09PWMudHlwZSYmbD09PXt2OiJ5IixoOiJ4In1bYy5vcmllbnRhdGlv bnx8InYiXSlyZXR1cm4gdm9pZCh0LnR5cGU9ImxpbmVhciIpO3ZhciB1PWwr ImNhbGVuZGFyIixoPWNbdV0sZj17bm9NdWx0aUNhdGVnb3J5OiFuKGMsImNh cnRlc2lhbiIpfHxuKGMsIm5vTXVsdGlDYXRlZ29yeSIpfTsiYm94Ij09PWMu dHlwZSYmYy5faGFzUHJlQ29tcFN0YXRzJiZsPT09e2g6IngiLHY6InkifVtj Lm9yaWVudGF0aW9ufHwidiJdJiYoZi5ub011bHRpQ2F0ZWdvcnk9ITApO2lm KG8oYyxsKSl7dmFyIHA9aShjKSxkPVtdO2ZvcihyPTA7cjxlLmxlbmd0aDty Kyspe3ZhciBnPWVbcl07bihnLCJib3gtdmlvbGluIikmJihnW2wrImF4aXMi XXx8bCk9PT1zJiYodm9pZCAwIT09Z1twXT9kLnB1c2goZ1twXVswXSk6dm9p ZCAwIT09Zy5uYW1lP2QucHVzaChnLm5hbWUpOmQucHVzaCgidGV4dCIpLGdb dV0hPT1oJiYoaD12b2lkIDApKX10LnR5cGU9YShkLGgsZil9ZWxzZSBpZigi c3Bsb20iPT09Yy50eXBlKXt2YXIgdj1jLmRpbWVuc2lvbnMsbT12W2MuX2F4 ZXNEaW1bc11dO20udmlzaWJsZSYmKHQudHlwZT1hKG0udmFsdWVzLGgsZikp fWVsc2UgdC50eXBlPWEoY1tsXXx8W2NbbCsiMCJdXSxoLGYpfShlLHMuZGF0 YSksIi0iPT09ZS50eXBlP2UudHlwZT0ibGluZWFyIjp0LnR5cGU9ZS50eXBl KX19LHsiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9heGlzX2F1dG90eXBlIjo3 NjZ9XSw3ODk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vcmVnaXN0cnkiKSxhPXQoIi4uL2xpYiIpO2Z1bmN0aW9uIGkodCxl LHIpe3ZhciBuLGksbyxzPSExO2lmKCJkYXRhIj09PWUudHlwZSluPXQuX2Z1 bGxEYXRhW251bGwhPT1lLnRyYWNlcz9lLnRyYWNlc1swXTowXTtlbHNle2lm KCJsYXlvdXQiIT09ZS50eXBlKXJldHVybiExO249dC5fZnVsbExheW91dH1y ZXR1cm4gaT1hLm5lc3RlZFByb3BlcnR5KG4sZS5wcm9wKS5nZXQoKSwobz1y W2UudHlwZV09cltlLnR5cGVdfHx7fSkuaGFzT3duUHJvcGVydHkoZS5wcm9w KSYmb1tlLnByb3BdIT09aSYmKHM9ITApLG9bZS5wcm9wXT1pLHtjaGFuZ2Vk OnMsdmFsdWU6aX19ZnVuY3Rpb24gbyh0LGUpe3ZhciByPVtdLG49ZVswXSxp PXt9O2lmKCJzdHJpbmciPT10eXBlb2YgbilpW25dPWVbMV07ZWxzZXtpZigh YS5pc1BsYWluT2JqZWN0KG4pKXJldHVybiByO2k9bn1yZXR1cm4gbChpLGZ1 bmN0aW9uKHQsZSxuKXtyLnB1c2goe3R5cGU6ImxheW91dCIscHJvcDp0LHZh bHVlOm59KX0sIiIsMCkscn1mdW5jdGlvbiBzKHQsZSl7dmFyIHIsbixpLG8s cz1bXTtpZihuPWVbMF0saT1lWzFdLHI9ZVsyXSxvPXt9LCJzdHJpbmciPT10 eXBlb2YgbilvW25dPWk7ZWxzZXtpZighYS5pc1BsYWluT2JqZWN0KG4pKXJl dHVybiBzO289bix2b2lkIDA9PT1yJiYocj1pKX1yZXR1cm4gdm9pZCAwPT09 ciYmKHI9bnVsbCksbChvLGZ1bmN0aW9uKGUsbixhKXt2YXIgaSxvO2lmKEFy cmF5LmlzQXJyYXkoYSkpe289YS5zbGljZSgpO3ZhciBsPU1hdGgubWluKG8u bGVuZ3RoLHQuZGF0YS5sZW5ndGgpO3ImJihsPU1hdGgubWluKGwsci5sZW5n dGgpKSxpPVtdO2Zvcih2YXIgYz0wO2M8bDtjKyspaVtjXT1yP3JbY106Y31l bHNlIG89YSxpPXI/ci5zbGljZSgpOm51bGw7aWYobnVsbD09PWkpQXJyYXku aXNBcnJheShvKSYmKG89b1swXSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGkp KXtpZighQXJyYXkuaXNBcnJheShvKSl7dmFyIHU9bztvPVtdO2Zvcih2YXIg aD0wO2g8aS5sZW5ndGg7aCsrKW9baF09dX1vLmxlbmd0aD1NYXRoLm1pbihp Lmxlbmd0aCxvLmxlbmd0aCl9cy5wdXNoKHt0eXBlOiJkYXRhIixwcm9wOmUs dHJhY2VzOmksdmFsdWU6b30pfSwiIiwwKSxzfWZ1bmN0aW9uIGwodCxlLHIs bil7T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgbz10 W2ldO2lmKCJfIiE9PWlbMF0pe3ZhciBzPXIrKG4+MD8iLiI6IiIpK2k7YS5p c1BsYWluT2JqZWN0KG8pP2wobyxlLHMsbisxKTplKHMsaSxvKX19KX1yLm1h bmFnZUNvbW1hbmRPYnNlcnZlcj1mdW5jdGlvbih0LGUsbixvKXt2YXIgcz17 fSxsPSEwO2UmJmUuX2NvbW1hbmRPYnNlcnZlciYmKHM9ZS5fY29tbWFuZE9i c2VydmVyKSxzLmNhY2hlfHwocy5jYWNoZT17fSkscy5sb29rdXBUYWJsZT17 fTt2YXIgYz1yLmhhc1NpbXBsZUFQSUNvbW1hbmRCaW5kaW5ncyh0LG4scy5s b29rdXBUYWJsZSk7aWYoZSYmZS5fY29tbWFuZE9ic2VydmVyKXtpZihjKXJl dHVybiBzO2lmKGUuX2NvbW1hbmRPYnNlcnZlci5yZW1vdmUpcmV0dXJuIGUu X2NvbW1hbmRPYnNlcnZlci5yZW1vdmUoKSxlLl9jb21tYW5kT2JzZXJ2ZXI9 bnVsbCxzfWlmKGMpe2kodCxjLHMuY2FjaGUpLHMuY2hlY2s9ZnVuY3Rpb24o KXtpZihsKXt2YXIgZT1pKHQsYyxzLmNhY2hlKTtyZXR1cm4gZS5jaGFuZ2Vk JiZvJiZ2b2lkIDAhPT1zLmxvb2t1cFRhYmxlW2UudmFsdWVdJiYocy5kaXNh YmxlKCksUHJvbWlzZS5yZXNvbHZlKG8oe3ZhbHVlOmUudmFsdWUsdHlwZTpj LnR5cGUscHJvcDpjLnByb3AsdHJhY2VzOmMudHJhY2VzLGluZGV4OnMubG9v a3VwVGFibGVbZS52YWx1ZV19KSkudGhlbihzLmVuYWJsZSxzLmVuYWJsZSkp LGUuY2hhbmdlZH19O2Zvcih2YXIgdT1bInBsb3RseV9yZWxheW91dCIsInBs b3RseV9yZWRyYXciLCJwbG90bHlfcmVzdHlsZSIsInBsb3RseV91cGRhdGUi LCJwbG90bHlfYW5pbWF0aW5nZnJhbWUiLCJwbG90bHlfYWZ0ZXJwbG90Il0s aD0wO2g8dS5sZW5ndGg7aCsrKXQuX2ludGVybmFsT24odVtoXSxzLmNoZWNr KTtzLnJlbW92ZT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dS5sZW5ndGg7 ZSsrKXQuX3JlbW92ZUludGVybmFsTGlzdGVuZXIodVtlXSxzLmNoZWNrKX19 ZWxzZSBhLmxvZygiVW5hYmxlIHRvIGF1dG9tYXRpY2FsbHkgYmluZCBwbG90 IHVwZGF0ZXMgdG8gQVBJIGNvbW1hbmQiKSxzLmxvb2t1cFRhYmxlPXt9LHMu cmVtb3ZlPWZ1bmN0aW9uKCl7fTtyZXR1cm4gcy5kaXNhYmxlPWZ1bmN0aW9u KCl7bD0hMX0scy5lbmFibGU9ZnVuY3Rpb24oKXtsPSEwfSxlJiYoZS5fY29t bWFuZE9ic2VydmVyPXMpLHN9LHIuaGFzU2ltcGxlQVBJQ29tbWFuZEJpbmRp bmdzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYSxpLG89ZS5sZW5ndGg7Zm9yKGE9 MDthPG87YSsrKXt2YXIgcyxsPWVbYV0sYz1sLm1ldGhvZCx1PWwuYXJncztp ZihBcnJheS5pc0FycmF5KHUpfHwodT1bXSksIWMpcmV0dXJuITE7dmFyIGg9 ci5jb21wdXRlQVBJQ29tbWFuZEJpbmRpbmdzKHQsYyx1KTtpZigxIT09aC5s ZW5ndGgpcmV0dXJuITE7aWYoaSl7aWYoKHM9aFswXSkudHlwZSE9PWkudHlw ZSlyZXR1cm4hMTtpZihzLnByb3AhPT1pLnByb3ApcmV0dXJuITE7aWYoQXJy YXkuaXNBcnJheShpLnRyYWNlcykpe2lmKCFBcnJheS5pc0FycmF5KHMudHJh Y2VzKSlyZXR1cm4hMTtzLnRyYWNlcy5zb3J0KCk7Zm9yKHZhciBmPTA7Zjxp LnRyYWNlcy5sZW5ndGg7ZisrKWlmKGkudHJhY2VzW2ZdIT09cy50cmFjZXNb Zl0pcmV0dXJuITF9ZWxzZSBpZihzLnByb3AhPT1pLnByb3ApcmV0dXJuITF9 ZWxzZSBpPWhbMF0sQXJyYXkuaXNBcnJheShpLnRyYWNlcykmJmkudHJhY2Vz LnNvcnQoKTt2YXIgcD0ocz1oWzBdKS52YWx1ZTtpZihBcnJheS5pc0FycmF5 KHApKXtpZigxIT09cC5sZW5ndGgpcmV0dXJuITE7cD1wWzBdfW4mJihuW3Bd PWEpfXJldHVybiBpfSxyLmV4ZWN1dGVBUElDb21tYW5kPWZ1bmN0aW9uKHQs ZSxyKXtpZigic2tpcCI9PT1lKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTt2 YXIgaT1uLmFwaU1ldGhvZFJlZ2lzdHJ5W2VdLG89W3RdO0FycmF5LmlzQXJy YXkocil8fChyPVtdKTtmb3IodmFyIHM9MDtzPHIubGVuZ3RoO3MrKylvLnB1 c2gocltzXSk7cmV0dXJuIGkuYXBwbHkobnVsbCxvKS5jYXRjaChmdW5jdGlv bih0KXtyZXR1cm4gYS53YXJuKCJBUEkgY2FsbCB0byBQbG90bHkuIitlKyIg cmVqZWN0ZWQuIix0KSxQcm9taXNlLnJlamVjdCh0KX0pfSxyLmNvbXB1dGVB UElDb21tYW5kQmluZGluZ3M9ZnVuY3Rpb24odCxlLHIpe3ZhciBuO3N3aXRj aChBcnJheS5pc0FycmF5KHIpfHwocj1bXSksZSl7Y2FzZSJyZXN0eWxlIjpu PXModCxyKTticmVhaztjYXNlInJlbGF5b3V0IjpuPW8odCxyKTticmVhaztj YXNlInVwZGF0ZSI6bj1zKHQsW3JbMF0sclsyXV0pLmNvbmNhdChvKHQsW3Jb MV1dKSk7YnJlYWs7Y2FzZSJhbmltYXRlIjpuPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIEFycmF5LmlzQXJyYXkoZVswXSkmJjE9PT1lWzBdLmxlbmd0aCYmLTEh PT1bInN0cmluZyIsIm51bWJlciJdLmluZGV4T2YodHlwZW9mIGVbMF1bMF0p P1t7dHlwZToibGF5b3V0Iixwcm9wOiJfY3VycmVudEZyYW1lIix2YWx1ZTpl WzBdWzBdLnRvU3RyaW5nKCl9XTpbXX0oMCxyKTticmVhaztkZWZhdWx0Om49 W119cmV0dXJuIG59fSx7Ii4uL2xpYiI6NzE3LCIuLi9yZWdpc3RyeSI6ODQ2 fV0sNzkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O3IuYXR0cmlidXRlcz1mdW5j dGlvbih0LGUpe2U9ZXx8e307dmFyIHI9e3ZhbFR5cGU6ImluZm9fYXJyYXki LGVkaXRUeXBlOih0PXR8fHt9KS5lZGl0VHlwZSxpdGVtczpbe3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6dC5lZGl0VHlwZX0se3Zh bFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6dC5lZGl0VHlw ZX1dLGRmbHQ6WzAsMV19LGE9KHQubmFtZSYmdC5uYW1lLHQudHJhY2UsZS5k ZXNjcmlwdGlvbiYmZS5kZXNjcmlwdGlvbix7eDpuKHt9LHIse30pLHk6bih7 fSxyLHt9KSxlZGl0VHlwZTp0LmVkaXRUeXBlfSk7cmV0dXJuIHQubm9Hcmlk Q2VsbHx8KGEucm93PXt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxkZmx0OjAs ZWRpdFR5cGU6dC5lZGl0VHlwZX0sYS5jb2x1bW49e3ZhbFR5cGU6ImludGVn ZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZTp0LmVkaXRUeXBlfSksYX0sci5k ZWZhdWx0cz1mdW5jdGlvbih0LGUscixuKXt2YXIgYT1uJiZuLnh8fFswLDFd LGk9biYmbi55fHxbMCwxXSxvPWUuZ3JpZDtpZihvKXt2YXIgcz1yKCJkb21h aW4uY29sdW1uIik7dm9pZCAwIT09cyYmKHM8by5jb2x1bW5zP2E9by5fZG9t YWlucy54W3NdOmRlbGV0ZSB0LmRvbWFpbi5jb2x1bW4pO3ZhciBsPXIoImRv bWFpbi5yb3ciKTt2b2lkIDAhPT1sJiYobDxvLnJvd3M/aT1vLl9kb21haW5z LnlbbF06ZGVsZXRlIHQuZG9tYWluLnJvdyl9dmFyIGM9cigiZG9tYWluLngi LGEpLHU9cigiZG9tYWluLnkiLGkpO2NbMF08Y1sxXXx8KHQuZG9tYWluLng9 YS5zbGljZSgpKSx1WzBdPHVbMV18fCh0LmRvbWFpbi55PWkuc2xpY2UoKSl9 fSx7Ii4uL2xpYi9leHRlbmQiOjcwOH1dLDc5MTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5l ZGl0VHlwZSxyPXQuY29sb3JFZGl0VHlwZTt2b2lkIDA9PT1yJiYocj1lKTt2 YXIgbj17ZmFtaWx5Ont2YWxUeXBlOiJzdHJpbmciLG5vQmxhbms6ITAsc3Ry aWN0OiEwLGVkaXRUeXBlOmV9LHNpemU6e3ZhbFR5cGU6Im51bWJlciIsbWlu OjEsZWRpdFR5cGU6ZX0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlw ZTpyfSxlZGl0VHlwZTplfTtyZXR1cm4gdC5hcnJheU9rJiYobi5mYW1pbHku YXJyYXlPaz0hMCxuLnNpemUuYXJyYXlPaz0hMCxuLmNvbG9yLmFycmF5T2s9 ITApLG59fSx7fV0sNzkyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz17X2lzTGlua2VkVG9BcnJheToiZnJhbWVzX2VudHJ5Iixn cm91cDp7dmFsVHlwZToic3RyaW5nIn0sbmFtZTp7dmFsVHlwZToic3RyaW5n In0sdHJhY2VzOnt2YWxUeXBlOiJhbnkifSxiYXNlZnJhbWU6e3ZhbFR5cGU6 InN0cmluZyJ9LGRhdGE6e3ZhbFR5cGU6ImFueSJ9LGxheW91dDp7dmFsVHlw ZToiYW55In19fSx7fV0sNzkzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3IucHJvak5hbWVzPXtlcXVpcmVjdGFuZ3VsYXI6ImVxdWlyZWN0YW5n dWxhciIsbWVyY2F0b3I6Im1lcmNhdG9yIixvcnRob2dyYXBoaWM6Im9ydGhv Z3JhcGhpYyIsIm5hdHVyYWwgZWFydGgiOiJuYXR1cmFsRWFydGgiLGthdnJh eXNraXk3OiJrYXZyYXlza2l5NyIsbWlsbGVyOiJtaWxsZXIiLHJvYmluc29u OiJyb2JpbnNvbiIsZWNrZXJ0NDoiZWNrZXJ0NCIsImF6aW11dGhhbCBlcXVh bCBhcmVhIjoiYXppbXV0aGFsRXF1YWxBcmVhIiwiYXppbXV0aGFsIGVxdWlk aXN0YW50IjoiYXppbXV0aGFsRXF1aWRpc3RhbnQiLCJjb25pYyBlcXVhbCBh cmVhIjoiY29uaWNFcXVhbEFyZWEiLCJjb25pYyBjb25mb3JtYWwiOiJjb25p Y0NvbmZvcm1hbCIsImNvbmljIGVxdWlkaXN0YW50IjoiY29uaWNFcXVpZGlz dGFudCIsZ25vbW9uaWM6Imdub21vbmljIixzdGVyZW9ncmFwaGljOiJzdGVy ZW9ncmFwaGljIixtb2xsd2VpZGU6Im1vbGx3ZWlkZSIsaGFtbWVyOiJoYW1t ZXIiLCJ0cmFuc3ZlcnNlIG1lcmNhdG9yIjoidHJhbnN2ZXJzZU1lcmNhdG9y IiwiYWxiZXJzIHVzYSI6ImFsYmVyc1VzYSIsIndpbmtlbCB0cmlwZWwiOiJ3 aW5rZWwzIixhaXRvZmY6ImFpdG9mZiIsc2ludXNvaWRhbDoic2ludXNvaWRh bCJ9LHIuYXhlc05hbWVzPVsibG9uYXhpcyIsImxhdGF4aXMiXSxyLmxvbmF4 aXNTcGFuPXtvcnRob2dyYXBoaWM6MTgwLCJhemltdXRoYWwgZXF1YWwgYXJl YSI6MzYwLCJhemltdXRoYWwgZXF1aWRpc3RhbnQiOjM2MCwiY29uaWMgY29u Zm9ybWFsIjoxODAsZ25vbW9uaWM6MTYwLHN0ZXJlb2dyYXBoaWM6MTgwLCJ0 cmFuc3ZlcnNlIG1lcmNhdG9yIjoxODAsIioiOjM2MH0sci5sYXRheGlzU3Bh bj17ImNvbmljIGNvbmZvcm1hbCI6MTUwLHN0ZXJlb2dyYXBoaWM6MTc5LjUs IioiOjE4MH0sci5zY29wZURlZmF1bHRzPXt3b3JsZDp7bG9uYXhpc1Jhbmdl OlstMTgwLDE4MF0sbGF0YXhpc1JhbmdlOlstOTAsOTBdLHByb2pUeXBlOiJl cXVpcmVjdGFuZ3VsYXIiLHByb2pSb3RhdGU6WzAsMCwwXX0sdXNhOntsb25h eGlzUmFuZ2U6Wy0xODAsLTUwXSxsYXRheGlzUmFuZ2U6WzE1LDgwXSxwcm9q VHlwZToiYWxiZXJzIHVzYSJ9LGV1cm9wZTp7bG9uYXhpc1JhbmdlOlstMzAs NjBdLGxhdGF4aXNSYW5nZTpbMzAsODVdLHByb2pUeXBlOiJjb25pYyBjb25m b3JtYWwiLHByb2pSb3RhdGU6WzE1LDAsMF0scHJvalBhcmFsbGVsczpbMCw2 MF19LGFzaWE6e2xvbmF4aXNSYW5nZTpbMjIsMTYwXSxsYXRheGlzUmFuZ2U6 Wy0xNSw1NV0scHJvalR5cGU6Im1lcmNhdG9yIixwcm9qUm90YXRlOlswLDAs MF19LGFmcmljYTp7bG9uYXhpc1JhbmdlOlstMzAsNjBdLGxhdGF4aXNSYW5n ZTpbLTQwLDQwXSxwcm9qVHlwZToibWVyY2F0b3IiLHByb2pSb3RhdGU6WzAs MCwwXX0sIm5vcnRoIGFtZXJpY2EiOntsb25heGlzUmFuZ2U6Wy0xODAsLTQ1 XSxsYXRheGlzUmFuZ2U6WzUsODVdLHByb2pUeXBlOiJjb25pYyBjb25mb3Jt YWwiLHByb2pSb3RhdGU6Wy0xMDAsMCwwXSxwcm9qUGFyYWxsZWxzOlsyOS41 LDQ1LjVdfSwic291dGggYW1lcmljYSI6e2xvbmF4aXNSYW5nZTpbLTEwMCwt MzBdLGxhdGF4aXNSYW5nZTpbLTYwLDE1XSxwcm9qVHlwZToibWVyY2F0b3Ii LHByb2pSb3RhdGU6WzAsMCwwXX19LHIuY2xpcFBhZD0uMDAxLHIucHJlY2lz aW9uPS4xLHIubGFuZENvbG9yPSIjRjBEQzgyIixyLndhdGVyQ29sb3I9IiMz Mzk5RkYiLHIubG9jYXRpb25tb2RlVG9MYXllcj17IklTTy0zIjoiY291bnRy aWVzIiwiVVNBLXN0YXRlcyI6InN1YnVuaXRzIiwiY291bnRyeSBuYW1lcyI6 ImNvdW50cmllcyJ9LHIuc3BoZXJlU1ZHPXt0eXBlOiJTcGhlcmUifSxyLmZp bGxMYXllcnM9e29jZWFuOjEsbGFuZDoxLGxha2VzOjF9LHIubGluZUxheWVy cz17c3VidW5pdHM6MSxjb3VudHJpZXM6MSxjb2FzdGxpbmVzOjEscml2ZXJz OjEsZnJhbWU6MX0sci5sYXllcnM9WyJiZyIsIm9jZWFuIiwibGFuZCIsImxh a2VzIiwic3VidW5pdHMiLCJjb3VudHJpZXMiLCJjb2FzdGxpbmVzIiwicml2 ZXJzIiwibGF0YXhpcyIsImxvbmF4aXMiLCJmcmFtZSIsImJhY2twbG90Iiwi ZnJvbnRwbG90Il0sci5sYXllcnNGb3JDaG9yb3BsZXRoPVsiYmciLCJvY2Vh biIsImxhbmQiLCJzdWJ1bml0cyIsImNvdW50cmllcyIsImNvYXN0bGluZXMi LCJsYXRheGlzIiwibG9uYXhpcyIsImZyYW1lIiwiYmFja3Bsb3QiLCJyaXZl cnMiLCJsYWtlcyIsImZyb250cGxvdCJdLHIubGF5ZXJOYW1lVG9BZGplY3Rp dmU9e29jZWFuOiJvY2VhbiIsbGFuZDoibGFuZCIsbGFrZXM6Imxha2UiLHN1 YnVuaXRzOiJzdWJ1bml0Iixjb3VudHJpZXM6ImNvdW50cnkiLGNvYXN0bGlu ZXM6ImNvYXN0bGluZSIscml2ZXJzOiJyaXZlciIsZnJhbWU6ImZyYW1lIn19 LHt9XSw3OTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiZDMiKSxhPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9saWIi KSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxzPXQoIi4uLy4uL2Nv bXBvbmVudHMvZHJhd2luZyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9meCIp LGM9dCgiLi4vcGxvdHMiKSx1PXQoIi4uL2NhcnRlc2lhbi9heGVzIiksaD10 KCIuLi9jYXJ0ZXNpYW4vYXV0b3JhbmdlIikuZ2V0QXV0b1JhbmdlLGY9dCgi Li4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCIpLHA9dCgiLi4vY2FydGVz aWFuL3NlbGVjdCIpLnByZXBTZWxlY3QsZD10KCIuLi9jYXJ0ZXNpYW4vc2Vs ZWN0Iikuc2VsZWN0T25DbGljayxnPXQoIi4vem9vbSIpLHY9dCgiLi9jb25z dGFudHMiKSxtPXQoIi4uLy4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiKSx5 PXQoIi4uLy4uL2xpYi90b3BvanNvbl91dGlscyIpLHg9dCgidG9wb2pzb24t Y2xpZW50IikuZmVhdHVyZTtmdW5jdGlvbiBiKHQpe3RoaXMuaWQ9dC5pZCx0 aGlzLmdyYXBoRGl2PXQuZ3JhcGhEaXYsdGhpcy5jb250YWluZXI9dC5jb250 YWluZXIsdGhpcy50b3BvanNvblVSTD10LnRvcG9qc29uVVJMLHRoaXMuaXNT dGF0aWM9dC5zdGF0aWNQbG90LHRoaXMudG9wb2pzb25OYW1lPW51bGwsdGhp cy50b3BvanNvbj1udWxsLHRoaXMucHJvamVjdGlvbj1udWxsLHRoaXMuc2Nv cGU9bnVsbCx0aGlzLnZpZXdJbml0aWFsPW51bGwsdGhpcy5maXRTY2FsZT1u dWxsLHRoaXMuYm91bmRzPW51bGwsdGhpcy5taWRQdD1udWxsLHRoaXMuaGFz Q2hvcm9wbGV0aD0hMSx0aGlzLnRyYWNlSGFzaD17fSx0aGlzLmxheWVycz17 fSx0aGlzLmJhc2VQYXRocz17fSx0aGlzLmRhdGFQYXRocz17fSx0aGlzLmRh dGFQb2ludHM9e30sdGhpcy5jbGlwRGVmPW51bGwsdGhpcy5jbGlwUmVjdD1u dWxsLHRoaXMuYmdSZWN0PW51bGwsdGhpcy5tYWtlRnJhbWV3b3JrKCl9dCgi Li9wcm9qZWN0aW9ucyIpKG4pO3ZhciBfPWIucHJvdG90eXBlO2Z1bmN0aW9u IHcodCxlKXt2YXIgcj12LmNsaXBQYWQsbj10WzBdK3IsYT10WzFdLXIsaT1l WzBdK3Isbz1lWzFdLXI7bj4wJiZhPDAmJihhKz0zNjApO3ZhciBzPShhLW4p LzQ7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltbW24saV0s W24sb10sW24rcyxvXSxbbisyKnMsb10sW24rMypzLG9dLFthLG9dLFthLGld LFthLXMsaV0sW2EtMipzLGldLFthLTMqcyxpXSxbbixpXV1dfX1lLmV4cG9y dHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBiKHQpfSxfLnBsb3Q9ZnVuY3Rp b24odCxlLHIpe3ZhciBuPXRoaXMsYT1lW3RoaXMuaWRdLGk9W10sbz0hMTtm b3IodmFyIHMgaW4gdi5sYXllck5hbWVUb0FkamVjdGl2ZSlpZigiZnJhbWUi IT09cyYmYVsic2hvdyIrc10pe289ITA7YnJlYWt9Zm9yKHZhciBsPTA7bDx0 Lmxlbmd0aDtsKyspaWYodFswXVswXS50cmFjZS5sb2NhdGlvbm1vZGUpe289 ITA7YnJlYWt9aWYobyl7dmFyIGM9eS5nZXRUb3BvanNvbk5hbWUoYSk7bnVs bCE9PW4udG9wb2pzb24mJmM9PT1uLnRvcG9qc29uTmFtZXx8KG4udG9wb2pz b25OYW1lPWMsdm9pZCAwPT09UGxvdGx5R2VvQXNzZXRzLnRvcG9qc29uW24u dG9wb2pzb25OYW1lXSYmaS5wdXNoKG4uZmV0Y2hUb3BvanNvbigpKSl9aT1p LmNvbmNhdChtLmZldGNoVHJhY2VHZW9EYXRhKHQpKSxyLnB1c2gobmV3IFBy b21pc2UoZnVuY3Rpb24ocixhKXtQcm9taXNlLmFsbChpKS50aGVuKGZ1bmN0 aW9uKCl7bi50b3BvanNvbj1QbG90bHlHZW9Bc3NldHMudG9wb2pzb25bbi50 b3BvanNvbk5hbWVdLG4udXBkYXRlKHQsZSkscigpfSkuY2F0Y2goYSl9KSl9 LF8uZmV0Y2hUb3BvanNvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT15Lmdl dFRvcG9qc29uUGF0aCh0LnRvcG9qc29uVVJMLHQudG9wb2pzb25OYW1lKTty ZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixhKXtuLmpzb24oZSxmdW5j dGlvbihuLGkpe2lmKG4pcmV0dXJuIDQwND09PW4uc3RhdHVzP2EobmV3IEVy cm9yKFsicGxvdGx5LmpzIGNvdWxkIG5vdCBmaW5kIHRvcG9qc29uIGZpbGUg YXQiLGUsIi4iLCJNYWtlIHN1cmUgdGhlICp0b3BvanNvblVSTCogcGxvdCBj b25maWcgb3B0aW9uIiwiaXMgc2V0IHByb3Blcmx5LiJdLmpvaW4oIiAiKSkp OmEobmV3IEVycm9yKFsidW5leHBlY3RlZCBlcnJvciB3aGlsZSBmZXRjaGlu ZyB0b3BvanNvbiBmaWxlIGF0IixlXS5qb2luKCIgIikpKTtQbG90bHlHZW9B c3NldHMudG9wb2pzb25bdC50b3BvanNvbk5hbWVdPWkscigpfSl9KX0sXy51 cGRhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1lW3RoaXMuaWRdO3RoaXMuaGFz Q2hvcm9wbGV0aD0hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFy IGE9dFtuXSxpPWFbMF0udHJhY2U7ImNob3JvcGxldGgiPT09aS50eXBlJiYo dGhpcy5oYXNDaG9yb3BsZXRoPSEwKSwhMD09PWkudmlzaWJsZSYmaS5fbGVu Z3RoPjAmJmkuX21vZHVsZS5jYWxjR2VvSlNPTihhLGUpfWlmKCF0aGlzLnVw ZGF0ZVByb2plY3Rpb24odCxlKSl7dGhpcy52aWV3SW5pdGlhbCYmdGhpcy5z Y29wZT09PXIuc2NvcGV8fHRoaXMuc2F2ZVZpZXdJbml0aWFsKHIpLHRoaXMu c2NvcGU9ci5zY29wZSx0aGlzLnVwZGF0ZUJhc2VMYXllcnMoZSxyKSx0aGlz LnVwZGF0ZURpbXMoZSxyKSx0aGlzLnVwZGF0ZUZ4KGUsciksYy5nZW5lcmFs VXBkYXRlUGVyVHJhY2VNb2R1bGUodGhpcy5ncmFwaERpdix0aGlzLHQscik7 dmFyIG89dGhpcy5sYXllcnMuZnJvbnRwbG90LnNlbGVjdCgiLnNjYXR0ZXJs YXllciIpO3RoaXMuZGF0YVBvaW50cy5wb2ludD1vLnNlbGVjdEFsbCgiLnBv aW50IiksdGhpcy5kYXRhUG9pbnRzLnRleHQ9by5zZWxlY3RBbGwoInRleHQi KSx0aGlzLmRhdGFQYXRocy5saW5lPW8uc2VsZWN0QWxsKCIuanMtbGluZSIp O3ZhciBzPXRoaXMubGF5ZXJzLmJhY2twbG90LnNlbGVjdCgiLmNob3JvcGxl dGhsYXllciIpO3RoaXMuZGF0YVBhdGhzLmNob3JvcGxldGg9cy5zZWxlY3RB bGwoInBhdGgiKSx0aGlzLnJlbmRlcigpfX0sXy51cGRhdGVQcm9qZWN0aW9u PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5ncmFwaERpdixvPWVbdGhpcy5p ZF0scz1lLl9zaXplLGw9by5kb21haW4sYz1vLnByb2plY3Rpb24sdT1vLmxv bmF4aXMsZj1vLmxhdGF4aXMscD11Ll9heCxkPWYuX2F4LGc9dGhpcy5wcm9q ZWN0aW9uPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnByb2plY3Rpb24udHlw ZSxyPW4uZ2VvW3YucHJvak5hbWVzW2VdXSgpLGE9dC5faXNDbGlwcGVkP3Yu bG9uYXhpc1NwYW5bZV0vMjpudWxsLGk9WyJjZW50ZXIiLCJyb3RhdGUiLCJw YXJhbGxlbHMiLCJjbGlwRXh0ZW50Il0sbz1mdW5jdGlvbih0KXtyZXR1cm4g dD9yOltdfSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBsPWlbc107ImZ1bmN0 aW9uIiE9dHlwZW9mIHJbbF0mJihyW2xdPW8pfXIuaXNMb25MYXRPdmVyRWRn ZXM9ZnVuY3Rpb24odCl7aWYobnVsbD09PXIodCkpcmV0dXJuITA7aWYoYSl7 dmFyIGU9ci5yb3RhdGUoKTtyZXR1cm4gbi5nZW8uZGlzdGFuY2UodCxbLWVb MF0sLWVbMV1dKT5hKk1hdGguUEkvMTgwfXJldHVybiExfSxyLmdldFBhdGg9 ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZW8ucGF0aCgpLnByb2plY3Rpb24ocil9 LHIuZ2V0Qm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiByLmdldFBhdGgoKS5i b3VuZHModCl9LHIuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dFsx XVswXS10WzBdWzBdLGE9dFsxXVsxXS10WzBdWzFdLGk9ci5jbGlwRXh0ZW50 JiZyLmNsaXBFeHRlbnQoKTtyLnNjYWxlKDE1MCkudHJhbnNsYXRlKFswLDBd KSxpJiZyLmNsaXBFeHRlbnQobnVsbCk7dmFyIG89ci5nZXRCb3VuZHMoZSks cz1NYXRoLm1pbihuLyhvWzFdWzBdLW9bMF1bMF0pLGEvKG9bMV1bMV0tb1sw XVsxXSkpLGw9K3RbMF1bMF0rKG4tcyoob1sxXVswXStvWzBdWzBdKSkvMixj PSt0WzBdWzFdKyhhLXMqKG9bMV1bMV0rb1swXVsxXSkpLzI7cmV0dXJuIGkm JnIuY2xpcEV4dGVudChpKSxyLnNjYWxlKDE1MCpzKS50cmFuc2xhdGUoW2ws Y10pfSxyLnByZWNpc2lvbih2LnByZWNpc2lvbiksYSYmci5jbGlwQW5nbGUo YS12LmNsaXBQYWQpO3JldHVybiByfShvKSxtPVtbcy5sK3MudypsLnhbMF0s cy50K3MuaCooMS1sLnlbMV0pXSxbcy5sK3MudypsLnhbMV0scy50K3MuaCoo MS1sLnlbMF0pXV0seT1vLmNlbnRlcnx8e30seD1jLnJvdGF0aW9ufHx7fSxi PXUucmFuZ2V8fFtdLF89Zi5yYW5nZXx8W107aWYoby5maXRib3VuZHMpe3Au X2xlbmd0aD1tWzFdWzBdLW1bMF1bMF0sZC5fbGVuZ3RoPW1bMV1bMV0tbVsw XVsxXSxwLnJhbmdlPWgocixwKSxkLnJhbmdlPWgocixkKTt2YXIgaz0ocC5y YW5nZVswXStwLnJhbmdlWzFdKS8yLFQ9KGQucmFuZ2VbMF0rZC5yYW5nZVsx XSkvMjtpZihvLl9pc1Njb3BlZCl5PXtsb246ayxsYXQ6VH07ZWxzZSBpZihv Ll9pc0NsaXBwZWQpe3k9e2xvbjprLGxhdDpUfSx4PXtsb246ayxsYXQ6VCxy b2xsOngucm9sbH07dmFyIE09Yy50eXBlLEE9di5sb25heGlzU3BhbltNXS8y fHwxODAsUz12LmxhdGF4aXNTcGFuW01dLzJ8fDE4MDtiPVtrLUEsaytBXSxf PVtULVMsVCtTXX1lbHNlIHk9e2xvbjprLGxhdDpUfSx4PXtsb246ayxsYXQ6 eC5sYXQscm9sbDp4LnJvbGx9fWcuY2VudGVyKFt5Lmxvbi14Lmxvbix5Lmxh dC14LmxhdF0pLnJvdGF0ZShbLXgubG9uLC14LmxhdCx4LnJvbGxdKS5wYXJh bGxlbHMoYy5wYXJhbGxlbHMpO3ZhciBFPXcoYixfKTtnLmZpdEV4dGVudCht LEUpO3ZhciBMPXRoaXMuYm91bmRzPWcuZ2V0Qm91bmRzKEUpLEM9dGhpcy5m aXRTY2FsZT1nLnNjYWxlKCksUD1nLnRyYW5zbGF0ZSgpO2lmKCFpc0Zpbml0 ZShMWzBdWzBdKXx8IWlzRmluaXRlKExbMF1bMV0pfHwhaXNGaW5pdGUoTFsx XVswXSl8fCFpc0Zpbml0ZShMWzFdWzFdKXx8aXNOYU4oUFswXSl8fGlzTmFO KFBbMF0pKXtmb3IodmFyIE89WyJmaXRib3VuZHMiLCJwcm9qZWN0aW9uLnJv dGF0aW9uIiwiY2VudGVyIiwibG9uYXhpcy5yYW5nZSIsImxhdGF4aXMucmFu Z2UiXSx6PSJJbnZhbGlkIGdlbyBzZXR0aW5ncywgcmVsYXlvdXQnaW5nIHRv IGRlZmF1bHQgdmlldy4iLEk9e30sRD0wO0Q8Ty5sZW5ndGg7RCsrKUlbdGhp cy5pZCsiLiIrT1tEXV09bnVsbDtyZXR1cm4gdGhpcy52aWV3SW5pdGlhbD1u dWxsLGkud2Fybih6KSxyLl9wcm9taXNlcy5wdXNoKGEuY2FsbCgicmVsYXlv dXQiLHIsSSkpLHp9aWYoby5maXRib3VuZHMpe3ZhciBSPWcuZ2V0Qm91bmRz KHcocC5yYW5nZSxkLnJhbmdlKSksRj1NYXRoLm1pbigoTFsxXVswXS1MWzBd WzBdKS8oUlsxXVswXS1SWzBdWzBdKSwoTFsxXVsxXS1MWzBdWzFdKS8oUlsx XVsxXS1SWzBdWzFdKSk7aXNGaW5pdGUoRik/Zy5zY2FsZShGKkMpOmkud2Fy bigiU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIit0aGlzLmlkKyJmaXRi b3VuZHMgY29tcHV0YXRpb25zLiIpfWVsc2UgZy5zY2FsZShjLnNjYWxlKkMp O3ZhciBCPXRoaXMubWlkUHQ9WyhMWzBdWzBdK0xbMV1bMF0pLzIsKExbMF1b MV0rTFsxXVsxXSkvMl07aWYoZy50cmFuc2xhdGUoW1BbMF0rKEJbMF0tUFsw XSksUFsxXSsoQlsxXS1QWzFdKV0pLmNsaXBFeHRlbnQoTCksby5faXNBbGJl cnNVc2Epe3ZhciBOPWcoW3kubG9uLHkubGF0XSksaj1nLnRyYW5zbGF0ZSgp O2cudHJhbnNsYXRlKFtqWzBdLShOWzBdLWpbMF0pLGpbMV0tKE5bMV0talsx XSldKX19LF8udXBkYXRlQmFzZUxheWVycz1mdW5jdGlvbih0LGUpe3ZhciBy PXRoaXMsYT1yLnRvcG9qc29uLGk9ci5sYXllcnMsbD1yLmJhc2VQYXRocztm dW5jdGlvbiBjKHQpe3JldHVybiJsb25heGlzIj09PXR8fCJsYXRheGlzIj09 PXR9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gQm9vbGVhbih2LmxpbmVMYXllcnNb dF0pfWZ1bmN0aW9uIGYodCl7cmV0dXJuIEJvb2xlYW4odi5maWxsTGF5ZXJz W3RdKX12YXIgcD0odGhpcy5oYXNDaG9yb3BsZXRoP3YubGF5ZXJzRm9yQ2hv cm9wbGV0aDp2LmxheWVycykuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBo KHQpfHxmKHQpP2VbInNob3ciK3RdOiFjKHQpfHxlW3RdLnNob3dncmlkfSks ZD1yLmZyYW1ld29yay5zZWxlY3RBbGwoIi5sYXllciIpLmRhdGEocCxTdHJp bmcpO2QuZXhpdCgpLmVhY2goZnVuY3Rpb24odCl7ZGVsZXRlIGlbdF0sZGVs ZXRlIGxbdF0sbi5zZWxlY3QodGhpcykucmVtb3ZlKCl9KSxkLmVudGVyKCku YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKHQpe3JldHVybiJs YXllciAiK3R9KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWlbdF09bi5zZWxl Y3QodGhpcyk7ImJnIj09PXQ/ci5iZ1JlY3Q9ZS5hcHBlbmQoInJlY3QiKS5z dHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKTpjKHQpP2xbdF09ZS5hcHBl bmQoInBhdGgiKS5zdHlsZSgiZmlsbCIsIm5vbmUiKToiYmFja3Bsb3QiPT09 dD9lLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNob3JvcGxldGhsYXllciIsITAp OiJmcm9udHBsb3QiPT09dD9lLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNjYXR0 ZXJsYXllciIsITApOmgodCk/bFt0XT1lLmFwcGVuZCgicGF0aCIpLnN0eWxl KCJmaWxsIiwibm9uZSIpLnN0eWxlKCJzdHJva2UtbWl0ZXJsaW1pdCIsMik6 Zih0KSYmKGxbdF09ZS5hcHBlbmQoInBhdGgiKS5zdHlsZSgic3Ryb2tlIiwi bm9uZSIpKX0pLGQub3JkZXIoKSxkLmVhY2goZnVuY3Rpb24ocil7dmFyIG49 bFtyXSxpPXYubGF5ZXJOYW1lVG9BZGplY3RpdmVbcl07ImZyYW1lIj09PXI/ bi5kYXR1bSh2LnNwaGVyZVNWRyk6aChyKXx8ZihyKT9uLmRhdHVtKHgoYSxh Lm9iamVjdHNbcl0pKTpjKHIpJiZuLmRhdHVtKGZ1bmN0aW9uKHQsZSxyKXt2 YXIgbixhLGksbz1lW3RdLHM9di5zY29wZURlZmF1bHRzW2Uuc2NvcGVdOyJs b25heGlzIj09PXQ/KG49cy5sb25heGlzUmFuZ2UsYT1zLmxhdGF4aXNSYW5n ZSxpPWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QsZV19KToibGF0YXhpcyI9PT10 JiYobj1zLmxhdGF4aXNSYW5nZSxhPXMubG9uYXhpc1JhbmdlLGk9ZnVuY3Rp b24odCxlKXtyZXR1cm5bZSx0XX0pO3ZhciBsPXt0eXBlOiJsaW5lYXIiLHJh bmdlOltuWzBdLG5bMV0tMWUtNl0sdGljazA6by50aWNrMCxkdGljazpvLmR0 aWNrfTt1LnNldENvbnZlcnQobCxyKTt2YXIgYz11LmNhbGNUaWNrcyhsKTtl LmlzU2NvcGVkfHwibG9uYXhpcyIhPT10fHxjLnBvcCgpO2Zvcih2YXIgaD1j Lmxlbmd0aCxmPW5ldyBBcnJheShoKSxwPTA7cDxoO3ArKylmb3IodmFyIGQ9 Y1twXS54LGc9ZltwXT1bXSxtPWFbMF07bTxhWzFdKzIuNTttKz0yLjUpZy5w dXNoKGkoZCxtKSk7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29v cmRpbmF0ZXM6Zn19KHIsZSx0KSkuY2FsbChvLnN0cm9rZSxlW3JdLmdyaWRj b2xvcikuY2FsbChzLmRhc2hMaW5lLCIiLGVbcl0uZ3JpZHdpZHRoKSxoKHIp P24uY2FsbChvLnN0cm9rZSxlW2krImNvbG9yIl0pLmNhbGwocy5kYXNoTGlu ZSwiIixlW2krIndpZHRoIl0pOmYocikmJm4uY2FsbChvLmZpbGwsZVtpKyJj b2xvciJdKX0pfSxfLnVwZGF0ZURpbXM9ZnVuY3Rpb24odCxlKXt2YXIgcj10 aGlzLmJvdW5kcyxuPShlLmZyYW1ld2lkdGh8fDApLzIsYT1yWzBdWzBdLW4s aT1yWzBdWzFdLW4sbD1yWzFdWzBdLWErbixjPXJbMV1bMV0taStuO3Muc2V0 UmVjdCh0aGlzLmNsaXBSZWN0LGEsaSxsLGMpLHRoaXMuYmdSZWN0LmNhbGwo cy5zZXRSZWN0LGEsaSxsLGMpLmNhbGwoby5maWxsLGUuYmdjb2xvciksdGhp cy54YXhpcy5fb2Zmc2V0PWEsdGhpcy54YXhpcy5fbGVuZ3RoPWwsdGhpcy55 YXhpcy5fb2Zmc2V0PWksdGhpcy55YXhpcy5fbGVuZ3RoPWN9LF8udXBkYXRl Rng9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLGk9ci5ncmFwaERpdixvPXIu YmdSZWN0LHM9dC5kcmFnbW9kZSxjPXQuY2xpY2ttb2RlO2lmKCFyLmlzU3Rh dGljKXt2YXIgdTsic2VsZWN0Ij09PXM/dT1mdW5jdGlvbih0LGUpeyh0LnJh bmdlPXt9KVtyLmlkXT1bdihbZS54bWluLGUueW1pbl0pLHYoW2UueG1heCxl LnltYXhdKV19OiJsYXNzbyI9PT1zJiYodT1mdW5jdGlvbih0LGUsbil7KHQu bGFzc29Qb2ludHM9e30pW3IuaWRdPW4uZmlsdGVyZWQubWFwKHYpfSk7dmFy IGg9e2VsZW1lbnQ6ci5iZ1JlY3Qubm9kZSgpLGdkOmkscGxvdGluZm86e2lk OnIuaWQseGF4aXM6ci54YXhpcyx5YXhpczpyLnlheGlzLGZpbGxSYW5nZUl0 ZW1zOnV9LHhheGVzOltyLnhheGlzXSx5YXhlczpbci55YXhpc10sc3VicGxv dDpyLmlkLGNsaWNrRm46ZnVuY3Rpb24oZSl7Mj09PWUmJnQuX3pvb21sYXll ci5zZWxlY3RBbGwoIi5zZWxlY3Qtb3V0bGluZSIpLnJlbW92ZSgpfX07InBh biI9PT1zPyhvLm5vZGUoKS5vbm1vdXNlZG93bj1udWxsLG8uY2FsbChnKHIs ZSkpLG8ub24oImRibGNsaWNrLnpvb20iLGZ1bmN0aW9uKCl7dmFyIHQ9ci52 aWV3SW5pdGlhbCxlPXt9O2Zvcih2YXIgbiBpbiB0KWVbci5pZCsiLiIrbl09 dFtuXTthLmNhbGwoIl9ndWlSZWxheW91dCIsaSxlKSxpLmVtaXQoInBsb3Rs eV9kb3VibGVjbGljayIsbnVsbCl9KSxpLl9jb250ZXh0Ll9zY3JvbGxab29t Lmdlb3x8by5vbigid2hlZWwuem9vbSIsbnVsbCkpOiJzZWxlY3QiIT09cyYm Imxhc3NvIiE9PXN8fChvLm9uKCIuem9vbSIsbnVsbCksaC5wcmVwRm49ZnVu Y3Rpb24odCxlLHIpe3AodCxlLHIsaCxzKX0sZi5pbml0KGgpKSxvLm9uKCJt b3VzZW1vdmUiLGZ1bmN0aW9uKCl7dmFyIHQ9ci5wcm9qZWN0aW9uLmludmVy dChuLm1vdXNlKHRoaXMpKTtpZighdHx8aXNOYU4odFswXSl8fGlzTmFOKHRb MV0pKXJldHVybiBmLnVuaG92ZXIoaSxuLmV2ZW50KTtyLnhheGlzLnAyYz1m dW5jdGlvbigpe3JldHVybiB0WzBdfSxyLnlheGlzLnAyYz1mdW5jdGlvbigp e3JldHVybiB0WzFdfSxsLmhvdmVyKGksbi5ldmVudCxyLmlkKX0pLG8ub24o Im1vdXNlb3V0IixmdW5jdGlvbigpe2kuX2RyYWdnaW5nfHxmLnVuaG92ZXIo aSxuLmV2ZW50KX0pLG8ub24oImNsaWNrIixmdW5jdGlvbigpeyJzZWxlY3Qi IT09cyYmImxhc3NvIiE9PXMmJihjLmluZGV4T2YoInNlbGVjdCIpPi0xJiZk KG4uZXZlbnQsaSxbci54YXhpc10sW3IueWF4aXNdLHIuaWQsaCksYy5pbmRl eE9mKCJldmVudCIpPi0xJiZsLmNsaWNrKGksbi5ldmVudCkpfSl9ZnVuY3Rp b24gdih0KXtyZXR1cm4gci5wcm9qZWN0aW9uLmludmVydChbdFswXStyLnhh eGlzLl9vZmZzZXQsdFsxXStyLnlheGlzLl9vZmZzZXRdKX19LF8ubWFrZUZy YW1ld29yaz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LmdyYXBoRGl2LHI9 ZS5fZnVsbExheW91dCxhPSJjbGlwIityLl91aWQrdC5pZDt0LmNsaXBEZWY9 ci5fY2xpcHMuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixhKSx0LmNs aXBSZWN0PXQuY2xpcERlZi5hcHBlbmQoInJlY3QiKSx0LmZyYW1ld29yaz1u LnNlbGVjdCh0LmNvbnRhaW5lcikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi LCJnZW8gIit0LmlkKS5jYWxsKHMuc2V0Q2xpcFVybCxhLGUpLHQucHJvamVj dD1mdW5jdGlvbihlKXt2YXIgcj10LnByb2plY3Rpb24oZSk7cmV0dXJuIHI/ W3JbMF0tdC54YXhpcy5fb2Zmc2V0LHJbMV0tdC55YXhpcy5fb2Zmc2V0XTpb bnVsbCxudWxsXX0sdC54YXhpcz17X2lkOiJ4IixjMnA6ZnVuY3Rpb24oZSl7 cmV0dXJuIHQucHJvamVjdChlKVswXX19LHQueWF4aXM9e19pZDoieSIsYzJw OmZ1bmN0aW9uKGUpe3JldHVybiB0LnByb2plY3QoZSlbMV19fSx0Lm1vY2tB eGlzPXt0eXBlOiJsaW5lYXIiLHNob3dleHBvbmVudDoiYWxsIixleHBvbmVu dGZvcm1hdDoiQiJ9LHUuc2V0Q29udmVydCh0Lm1vY2tBeGlzLHIpfSxfLnNh dmVWaWV3SW5pdGlhbD1mdW5jdGlvbih0KXt2YXIgZSxyPXQuY2VudGVyfHx7 fSxuPXQucHJvamVjdGlvbixhPW4ucm90YXRpb258fHt9O3RoaXMudmlld0lu aXRpYWw9e2ZpdGJvdW5kczp0LmZpdGJvdW5kcywicHJvamVjdGlvbi5zY2Fs ZSI6bi5zY2FsZX0sZT10Ll9pc1Njb3BlZD97ImNlbnRlci5sb24iOnIubG9u LCJjZW50ZXIubGF0IjpyLmxhdH06dC5faXNDbGlwcGVkP3sicHJvamVjdGlv bi5yb3RhdGlvbi5sb24iOmEubG9uLCJwcm9qZWN0aW9uLnJvdGF0aW9uLmxh dCI6YS5sYXR9OnsiY2VudGVyLmxvbiI6ci5sb24sImNlbnRlci5sYXQiOnIu bGF0LCJwcm9qZWN0aW9uLnJvdGF0aW9uLmxvbiI6YS5sb259LGkuZXh0ZW5k RmxhdCh0aGlzLnZpZXdJbml0aWFsLGUpfSxfLnJlbmRlcj1mdW5jdGlvbigp e3ZhciB0LGU9dGhpcy5wcm9qZWN0aW9uLHI9ZS5nZXRQYXRoKCk7ZnVuY3Rp b24gbih0KXt2YXIgcj1lKHQubG9ubGF0KTtyZXR1cm4gcj8idHJhbnNsYXRl KCIrclswXSsiLCIrclsxXSsiKSI6bnVsbH1mdW5jdGlvbiBhKHQpe3JldHVy biBlLmlzTG9uTGF0T3ZlckVkZ2VzKHQubG9ubGF0KT8ibm9uZSI6bnVsbH1m b3IodCBpbiB0aGlzLmJhc2VQYXRocyl0aGlzLmJhc2VQYXRoc1t0XS5hdHRy KCJkIixyKTtmb3IodCBpbiB0aGlzLmRhdGFQYXRocyl0aGlzLmRhdGFQYXRo c1t0XS5hdHRyKCJkIixmdW5jdGlvbih0KXtyZXR1cm4gcih0Lmdlb2pzb24p fSk7Zm9yKHQgaW4gdGhpcy5kYXRhUG9pbnRzKXRoaXMuZGF0YVBvaW50c1t0 XS5hdHRyKCJkaXNwbGF5IixhKS5hdHRyKCJ0cmFuc2Zvcm0iLG4pfX0seyIu Li8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMv ZHJhZ2VsZW1lbnQiOjYxMCwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2 MTMsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcs Ii4uLy4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiOjcxMSwiLi4vLi4vbGli L3RvcG9qc29uX3V0aWxzIjo3NDQsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4u L2NhcnRlc2lhbi9hdXRvcmFuZ2UiOjc2NCwiLi4vY2FydGVzaWFuL2F4ZXMi Ojc2NSwiLi4vY2FydGVzaWFuL3NlbGVjdCI6NzgyLCIuLi9wbG90cyI6ODI2 LCIuL2NvbnN0YW50cyI6NzkzLCIuL3Byb2plY3Rpb25zIjo3OTgsIi4vem9v bSI6Nzk5LGQzOjE2NSwidG9wb2pzb24tY2xpZW50Ijo1Mzl9XSw3OTU6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxv dHMvZ2V0X2RhdGEiKS5nZXRTdWJwbG90Q2FsY0RhdGEsYT10KCIuLi8uLi9s aWIiKS5jb3VudGVyUmVnZXgsaT10KCIuL2dlbyIpLG89ImdlbyIscz1hKG8p LGw9e307bFtvXT17dmFsVHlwZToic3VicGxvdGlkIixkZmx0Om8sZWRpdFR5 cGU6ImNhbGMifSxlLmV4cG9ydHM9e2F0dHI6byxuYW1lOm8saWRSb290Om8s aWRSZWdleDpzLGF0dHJSZWdleDpzLGF0dHJpYnV0ZXM6bCxsYXlvdXRBdHRy aWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlMYXlvdXRE ZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIpLHBsb3Q6ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj10LmNhbGNkYXRhLGE9ZS5f c3VicGxvdHNbb10scz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgbD1hW3NdLGM9 bihyLG8sbCksdT1lW2xdLl9zdWJwbG90O3V8fCh1PWkoe2lkOmwsZ3JhcGhE aXY6dCxjb250YWluZXI6ZS5fZ2VvbGF5ZXIubm9kZSgpLHRvcG9qc29uVVJM OnQuX2NvbnRleHQudG9wb2pzb25VUkwsc3RhdGljUGxvdDp0Ll9jb250ZXh0 LnN0YXRpY1Bsb3R9KSxlW2xdLl9zdWJwbG90PXUpLHUucGxvdChjLGUsdC5f cHJvbWlzZXMpfX0sdXBkYXRlRng6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQu X2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90c1tvXSxuPTA7bjxyLmxlbmd0aDtu Kyspe3ZhciBhPWVbcltuXV07YS5fc3VicGxvdC51cGRhdGVGeChlLGEpfX0s Y2xlYW46ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBhPW4uX3N1YnBsb3Rz W29dfHxbXSxpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciBzPWFbaV0sbD1uW3Nd Ll9zdWJwbG90OyFlW3NdJiZsJiYobC5mcmFtZXdvcmsucmVtb3ZlKCksbC5j bGlwRGVmLnJlbW92ZSgpKX19fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4v cGxvdHMvZ2V0X2RhdGEiOjgwMCwiLi9nZW8iOjc5NCwiLi9sYXlvdXRfYXR0 cmlidXRlcyI6Nzk2LCIuL2xheW91dF9kZWZhdWx0cyI6Nzk3fV0sNzk2Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLGE9dCgiLi4vZG9tYWluIiku YXR0cmlidXRlcyxpPXQoIi4vY29uc3RhbnRzIiksbz10KCIuLi8uLi9wbG90 X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwscz17cmFuZ2U6e3ZhbFR5 cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIn0se3Zh bFR5cGU6Im51bWJlciJ9XX0sc2hvd2dyaWQ6e3ZhbFR5cGU6ImJvb2xlYW4i LGRmbHQ6ITF9LHRpY2swOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MH0sZHRp Y2s6e3ZhbFR5cGU6Im51bWJlciJ9LGdyaWRjb2xvcjp7dmFsVHlwZToiY29s b3IiLGRmbHQ6bi5saWdodExpbmV9LGdyaWR3aWR0aDp7dmFsVHlwZToibnVt YmVyIixtaW46MCxkZmx0OjF9fTsoZS5leHBvcnRzPW8oe2RvbWFpbjphKHtu YW1lOiJnZW8ifSx7fSksZml0Ym91bmRzOnt2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6WyExLCJsb2NhdGlvbnMiLCJnZW9qc29uIl0sZGZsdDohMSxl ZGl0VHlwZToicGxvdCJ9LHJlc29sdXRpb246e3ZhbFR5cGU6ImVudW1lcmF0 ZWQiLHZhbHVlczpbMTEwLDUwXSxkZmx0OjExMCxjb2VyY2VOdW1iZXI6ITB9 LHNjb3BlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6T2JqZWN0Lmtl eXMoaS5zY29wZURlZmF1bHRzKSxkZmx0OiJ3b3JsZCJ9LHByb2plY3Rpb246 e3R5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpPYmplY3Qua2V5 cyhpLnByb2pOYW1lcyl9LHJvdGF0aW9uOntsb246e3ZhbFR5cGU6Im51bWJl ciJ9LGxhdDp7dmFsVHlwZToibnVtYmVyIn0scm9sbDp7dmFsVHlwZToibnVt YmVyIn19LHBhcmFsbGVsczp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6 W3t2YWxUeXBlOiJudW1iZXIifSx7dmFsVHlwZToibnVtYmVyIn1dfSxzY2Fs ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9fSxjZW50ZXI6e2xv bjp7dmFsVHlwZToibnVtYmVyIn0sbGF0Ont2YWxUeXBlOiJudW1iZXIifX0s dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sc2hvd2NvYXN0 bGluZXM6e3ZhbFR5cGU6ImJvb2xlYW4ifSxjb2FzdGxpbmVjb2xvcjp7dmFs VHlwZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0sY29hc3RsaW5ld2lk dGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxfSxzaG93bGFuZDp7 dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sbGFuZGNvbG9yOnt2YWxUeXBl OiJjb2xvciIsZGZsdDppLmxhbmRDb2xvcn0sc2hvd29jZWFuOnt2YWxUeXBl OiJib29sZWFuIixkZmx0OiExfSxvY2VhbmNvbG9yOnt2YWxUeXBlOiJjb2xv ciIsZGZsdDppLndhdGVyQ29sb3J9LHNob3dsYWtlczp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMX0sbGFrZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZs dDppLndhdGVyQ29sb3J9LHNob3dyaXZlcnM6e3ZhbFR5cGU6ImJvb2xlYW4i LGRmbHQ6ITF9LHJpdmVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Omku d2F0ZXJDb2xvcn0scml2ZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46 MCxkZmx0OjF9LHNob3djb3VudHJpZXM6e3ZhbFR5cGU6ImJvb2xlYW4ifSxj b3VudHJ5Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om4uZGVmYXVsdExp bmV9LGNvdW50cnl3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0 OjF9LHNob3dzdWJ1bml0czp7dmFsVHlwZToiYm9vbGVhbiJ9LHN1YnVuaXRj b2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0sc3Vi dW5pdHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sc2hv d2ZyYW1lOnt2YWxUeXBlOiJib29sZWFuIn0sZnJhbWVjb2xvcjp7dmFsVHlw ZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0sZnJhbWV3aWR0aDp7dmFs VHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9LGJnY29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixkZmx0Om4uYmFja2dyb3VuZH0sbG9uYXhpczpzLGxhdGF4aXM6 c30sInBsb3QiLCJmcm9tLXJvb3QiKSkudWlyZXZpc2lvbj17dmFsVHlwZToi YW55IixlZGl0VHlwZToibm9uZSJ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29s b3IvYXR0cmlidXRlcyI6NTkxLCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVz Ijo3NDgsIi4uL2RvbWFpbiI6NzkwLCIuL2NvbnN0YW50cyI6NzkzfV0sNzk3 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLGE9dCgiLi4vc3VicGxvdF9kZWZhdWx0cyIpLGk9dCgiLi4vZ2V0 X2RhdGEiKS5nZXRTdWJwbG90RGF0YSxvPXQoIi4vY29uc3RhbnRzIikscz10 KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksbD1vLmF4ZXNOYW1lcztmdW5jdGlv biBjKHQsZSxyLGEpe3ZhciBzPWkoYS5mdWxsRGF0YSwiZ2VvIixhLmlkKS5t YXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuX2V4cGFuZGVkSW5kZXh9KSxjPXIo InJlc29sdXRpb24iKSx1PXIoInNjb3BlIiksaD1vLnNjb3BlRGVmYXVsdHNb dV0sZj1yKCJwcm9qZWN0aW9uLnR5cGUiLGgucHJvalR5cGUpLHA9ZS5faXNB bGJlcnNVc2E9ImFsYmVycyB1c2EiPT09ZjtwJiYodT1lLnNjb3BlPSJ1c2Ei KTt2YXIgZD1lLl9pc1Njb3BlZD0id29ybGQiIT09dSxnPWUuX2lzQ29uaWM9 LTEhPT1mLmluZGV4T2YoImNvbmljIiksdj1lLl9pc0NsaXBwZWQ9ISFvLmxv bmF4aXNTcGFuW2ZdO2lmKCExPT09dC52aXNpYmxlKXt2YXIgbT1uLmV4dGVu ZERlZXAoe30sZS5fdGVtcGxhdGUpO20uc2hvd2NvYXN0bGluZXM9ITEsbS5z aG93Y291bnRyaWVzPSExLG0uc2hvd2ZyYW1lPSExLG0uc2hvd2xha2VzPSEx LG0uc2hvd2xhbmQ9ITEsbS5zaG93b2NlYW49ITEsbS5zaG93cml2ZXJzPSEx LG0uc2hvd3N1YnVuaXRzPSExLG0ubG9uYXhpcyYmKG0ubG9uYXhpcy5zaG93 Z3JpZD0hMSksbS5sYXRheGlzJiYobS5sYXRheGlzLnNob3dncmlkPSExKSxl Ll90ZW1wbGF0ZT1tfWZvcih2YXIgeT1yKCJ2aXNpYmxlIikseD0wO3g8bC5s ZW5ndGg7eCsrKXt2YXIgYixfPWxbeF0sdz1bMzAsMTBdW3hdO2lmKGQpYj1o W18rIlJhbmdlIl07ZWxzZXt2YXIgaz1vW18rIlNwYW4iXSxUPShrW2ZdfHxr WyIqIl0pLzIsTT1yKCJwcm9qZWN0aW9uLnJvdGF0aW9uLiIrXy5zdWJzdHIo MCwzKSxoLnByb2pSb3RhdGVbeF0pO2I9W00tVCxNK1RdfXZhciBBPXIoXysi LnJhbmdlIixiKTtyKF8rIi50aWNrMCIpLHIoXysiLmR0aWNrIix3KSxyKF8r Ii5zaG93Z3JpZCIsISF5JiZ2b2lkIDApJiYocihfKyIuZ3JpZGNvbG9yIiks cihfKyIuZ3JpZHdpZHRoIikpLGVbX10uX2F4PXt0eXBlOiJsaW5lYXIiLF9p ZDpfLnNsaWNlKDAsMyksX3RyYWNlSW5kaWNlczpzLHNldFNjYWxlOm4uaWRl bnRpdHksYzJsOm4uaWRlbnRpdHkscjJsOm4uaWRlbnRpdHksYXV0b3Jhbmdl OiEwLHJhbmdlOkEuc2xpY2UoKSxfbToxLF9pbnB1dDp7fX19dmFyIFM9ZS5s b25heGlzLnJhbmdlLEU9ZS5sYXRheGlzLnJhbmdlLEw9U1swXSxDPVNbMV07 TD4wJiZDPDAmJihDKz0zNjApO3ZhciBQLE8seixJPShMK0MpLzI7aWYoIXAp e3ZhciBEPWQ/aC5wcm9qUm90YXRlOltJLDAsMF07UD1yKCJwcm9qZWN0aW9u LnJvdGF0aW9uLmxvbiIsRFswXSkscigicHJvamVjdGlvbi5yb3RhdGlvbi5s YXQiLERbMV0pLHIoInByb2plY3Rpb24ucm90YXRpb24ucm9sbCIsRFsyXSks cigic2hvd2NvYXN0bGluZXMiLCFkJiZ5KSYmKHIoImNvYXN0bGluZWNvbG9y IikscigiY29hc3RsaW5ld2lkdGgiKSkscigic2hvd29jZWFuIiwhIXkmJnZv aWQgMCkmJnIoIm9jZWFuY29sb3IiKX0ocD8oTz0tOTYuNix6PTM4LjcpOihP PWQ/STpQLHo9KEVbMF0rRVsxXSkvMikscigiY2VudGVyLmxvbiIsTykscigi Y2VudGVyLmxhdCIseiksZykmJnIoInByb2plY3Rpb24ucGFyYWxsZWxzIixo LnByb2pQYXJhbGxlbHN8fFswLDYwXSk7cigicHJvamVjdGlvbi5zY2FsZSIp LHIoInNob3dsYW5kIiwhIXkmJnZvaWQgMCkmJnIoImxhbmRjb2xvciIpLHIo InNob3dsYWtlcyIsISF5JiZ2b2lkIDApJiZyKCJsYWtlY29sb3IiKSxyKCJz aG93cml2ZXJzIiwhIXkmJnZvaWQgMCkmJihyKCJyaXZlcmNvbG9yIikscigi cml2ZXJ3aWR0aCIpKSxyKCJzaG93Y291bnRyaWVzIixkJiYidXNhIiE9PXUm JnkpJiYocigiY291bnRyeWNvbG9yIikscigiY291bnRyeXdpZHRoIikpLCgi dXNhIj09PXV8fCJub3J0aCBhbWVyaWNhIj09PXUmJjUwPT09YykmJihyKCJz aG93c3VidW5pdHMiLHkpLHIoInN1YnVuaXRjb2xvciIpLHIoInN1YnVuaXR3 aWR0aCIpKSxkfHxyKCJzaG93ZnJhbWUiLHkpJiYocigiZnJhbWVjb2xvciIp LHIoImZyYW1ld2lkdGgiKSkscigiYmdjb2xvciIpLHIoImZpdGJvdW5kcyIp JiYoZGVsZXRlIGUucHJvamVjdGlvbi5zY2FsZSxkPyhkZWxldGUgZS5jZW50 ZXIubG9uLGRlbGV0ZSBlLmNlbnRlci5sYXQpOnY/KGRlbGV0ZSBlLmNlbnRl ci5sb24sZGVsZXRlIGUuY2VudGVyLmxhdCxkZWxldGUgZS5wcm9qZWN0aW9u LnJvdGF0aW9uLmxvbixkZWxldGUgZS5wcm9qZWN0aW9uLnJvdGF0aW9uLmxh dCxkZWxldGUgZS5sb25heGlzLnJhbmdlLGRlbGV0ZSBlLmxhdGF4aXMucmFu Z2UpOihkZWxldGUgZS5jZW50ZXIubG9uLGRlbGV0ZSBlLmNlbnRlci5sYXQs ZGVsZXRlIGUucHJvamVjdGlvbi5yb3RhdGlvbi5sb24pKX1lLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIpe2EodCxlLHIse3R5cGU6ImdlbyIsYXR0cmlidXRl czpzLGhhbmRsZURlZmF1bHRzOmMsZnVsbERhdGE6cixwYXJ0aXRpb246Inki fSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9nZXRfZGF0YSI6ODAwLCIuLi9z dWJwbG90X2RlZmF1bHRzIjo4NDAsIi4vY29uc3RhbnRzIjo3OTMsIi4vbGF5 b3V0X2F0dHJpYnV0ZXMiOjc5Nn1dLDc5ODpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0 LGUpe3JldHVybnt0eXBlOiJGZWF0dXJlIixpZDp0LmlkLHByb3BlcnRpZXM6 dC5wcm9wZXJ0aWVzLGdlb21ldHJ5OnIodC5nZW9tZXRyeSxlKX19ZnVuY3Rp b24gcihlLG4pe2lmKCFlKXJldHVybiBudWxsO2lmKCJHZW9tZXRyeUNvbGxl Y3Rpb24iPT09ZS50eXBlKXJldHVybnt0eXBlOiJHZW9tZXRyeUNvbGxlY3Rp b24iLGdlb21ldHJpZXM6b2JqZWN0Lmdlb21ldHJpZXMubWFwKGZ1bmN0aW9u KHQpe3JldHVybiByKHQsbil9KX07aWYoIWMuaGFzT3duUHJvcGVydHkoZS50 eXBlKSlyZXR1cm4gbnVsbDt2YXIgYT1jW2UudHlwZV07cmV0dXJuIHQuZ2Vv LnN0cmVhbShlLG4oYSkpLGEucmVzdWx0KCl9dC5nZW8ucHJvamVjdD1mdW5j dGlvbih0LGUpe3ZhciBhPWUuc3RyZWFtO2lmKCFhKXRocm93IG5ldyBFcnJv cigibm90IHlldCBzdXBwb3J0ZWQiKTtyZXR1cm4odCYmbi5oYXNPd25Qcm9w ZXJ0eSh0LnR5cGUpP25bdC50eXBlXTpyKSh0LGEpfTt2YXIgbj17RmVhdHVy ZTplLEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQscil7cmV0dXJue3R5 cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczp0LmZlYXR1cmVzLm1h cChmdW5jdGlvbih0KXtyZXR1cm4gZSh0LHIpfSl9fX0sYT1bXSxpPVtdLG89 e3BvaW50OmZ1bmN0aW9uKHQsZSl7YS5wdXNoKFt0LGVdKX0scmVzdWx0OmZ1 bmN0aW9uKCl7dmFyIHQ9YS5sZW5ndGg/YS5sZW5ndGg8Mj97dHlwZToiUG9p bnQiLGNvb3JkaW5hdGVzOmFbMF19Ont0eXBlOiJNdWx0aVBvaW50Iixjb29y ZGluYXRlczphfTpudWxsO3JldHVybiBhPVtdLHR9fSxzPXtsaW5lU3RhcnQ6 dSxwb2ludDpmdW5jdGlvbih0LGUpe2EucHVzaChbdCxlXSl9LGxpbmVFbmQ6 ZnVuY3Rpb24oKXthLmxlbmd0aCYmKGkucHVzaChhKSxhPVtdKX0scmVzdWx0 OmZ1bmN0aW9uKCl7dmFyIHQ9aS5sZW5ndGg/aS5sZW5ndGg8Mj97dHlwZToi TGluZVN0cmluZyIsY29vcmRpbmF0ZXM6aVswXX06e3R5cGU6Ik11bHRpTGlu ZVN0cmluZyIsY29vcmRpbmF0ZXM6aX06bnVsbDtyZXR1cm4gaT1bXSx0fX0s bD17cG9seWdvblN0YXJ0OnUsbGluZVN0YXJ0OnUscG9pbnQ6ZnVuY3Rpb24o dCxlKXthLnB1c2goW3QsZV0pfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9 YS5sZW5ndGg7aWYodCl7ZG97YS5wdXNoKGFbMF0uc2xpY2UoKSl9d2hpbGUo Kyt0PDQpO2kucHVzaChhKSxhPVtdfX0scG9seWdvbkVuZDp1LHJlc3VsdDpm dW5jdGlvbigpe2lmKCFpLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgdD1bXSxl PVtdO3JldHVybiBpLmZvckVhY2goZnVuY3Rpb24ocil7IWZ1bmN0aW9uKHQp e2lmKChlPXQubGVuZ3RoKTw0KXJldHVybiExO2Zvcih2YXIgZSxyPTAsbj10 W2UtMV1bMV0qdFswXVswXS10W2UtMV1bMF0qdFswXVsxXTsrK3I8ZTspbis9 dFtyLTFdWzFdKnRbcl1bMF0tdFtyLTFdWzBdKnRbcl1bMV07cmV0dXJuIG48 PTB9KHIpP2UucHVzaChyKTp0LnB1c2goW3JdKX0pLGUuZm9yRWFjaChmdW5j dGlvbihlKXt2YXIgcj1lWzBdO3Quc29tZShmdW5jdGlvbih0KXtpZihmdW5j dGlvbih0LGUpe2Zvcih2YXIgcj1lWzBdLG49ZVsxXSxhPSExLGk9MCxvPXQu bGVuZ3RoLHM9by0xO2k8bztzPWkrKyl7dmFyIGw9dFtpXSxjPWxbMF0sdT1s WzFdLGg9dFtzXSxmPWhbMF0scD1oWzFdO3U+bl5wPm4mJnI8KGYtYykqKG4t dSkvKHAtdSkrYyYmKGE9IWEpfXJldHVybiBhfSh0WzBdLHIpKXJldHVybiB0 LnB1c2goZSksITB9KXx8dC5wdXNoKFtlXSl9KSxpPVtdLHQubGVuZ3RoP3Qu bGVuZ3RoPjE/e3R5cGU6Ik11bHRpUG9seWdvbiIsY29vcmRpbmF0ZXM6dH06 e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOnRbMF19Om51bGx9fSxjPXtQ b2ludDpvLE11bHRpUG9pbnQ6byxMaW5lU3RyaW5nOnMsTXVsdGlMaW5lU3Ry aW5nOnMsUG9seWdvbjpsLE11bHRpUG9seWdvbjpsLFNwaGVyZTpsfTtmdW5j dGlvbiB1KCl7fXZhciBoPTFlLTYsZj1oKmgscD1NYXRoLlBJLGQ9cC8yLGc9 KE1hdGguc3FydChwKSxwLzE4MCksdj0xODAvcDtmdW5jdGlvbiBtKHQpe3Jl dHVybiB0PjE/ZDp0PC0xPy1kOk1hdGguYXNpbih0KX1mdW5jdGlvbiB5KHQp e3JldHVybiB0PjE/MDp0PC0xP3A6TWF0aC5hY29zKHQpfXZhciB4PXQuZ2Vv LnByb2plY3Rpb24sYj10Lmdlby5wcm9qZWN0aW9uTXV0YXRvcjtmdW5jdGlv biBfKHQsZSl7dmFyIHI9KDIrZCkqTWF0aC5zaW4oZSk7ZS89Mjtmb3IodmFy IG49MCxhPTEvMDtuPDEwJiZNYXRoLmFicyhhKT5oO24rKyl7dmFyIGk9TWF0 aC5jb3MoZSk7ZS09YT0oZStNYXRoLnNpbihlKSooaSsyKS1yKS8oMippKigx K2kpKX1yZXR1cm5bMi9NYXRoLnNxcnQocCooNCtwKSkqdCooMStNYXRoLmNv cyhlKSksMipNYXRoLnNxcnQocC8oNCtwKSkqTWF0aC5zaW4oZSldfXQuZ2Vv LmludGVycnVwdD1mdW5jdGlvbihlKXt2YXIgcixuPVtbW1stcCwwXSxbMCxk XSxbcCwwXV1dLFtbWy1wLDBdLFswLC1kXSxbcCwwXV1dXTtmdW5jdGlvbiBh KHQscil7Zm9yKHZhciBhPXI8MD8tMToxLGk9blsrKHI8MCldLG89MCxzPWku bGVuZ3RoLTE7bzxzJiZ0Pmlbb11bMl1bMF07KytvKTt2YXIgbD1lKHQtaVtv XVsxXVswXSxyKTtyZXR1cm4gbFswXSs9ZShpW29dWzFdWzBdLGEqcj5hKmlb b11bMF1bMV0/aVtvXVswXVsxXTpyKVswXSxsfWUuaW52ZXJ0JiYoYS5pbnZl cnQ9ZnVuY3Rpb24odCxpKXtmb3IodmFyIG89clsrKGk8MCldLHM9blsrKGk8 MCldLGM9MCx1PW8ubGVuZ3RoO2M8dTsrK2Mpe3ZhciBoPW9bY107aWYoaFsw XVswXTw9dCYmdDxoWzFdWzBdJiZoWzBdWzFdPD1pJiZpPGhbMV1bMV0pe3Zh ciBmPWUuaW52ZXJ0KHQtZShzW2NdWzFdWzBdLDApWzBdLGkpO3JldHVybiBm WzBdKz1zW2NdWzFdWzBdLGwoYShmWzBdLGZbMV0pLFt0LGldKT9mOm51bGx9 fX0pO3ZhciBpPXQuZ2VvLnByb2plY3Rpb24oYSksbz1pLnN0cmVhbTtmdW5j dGlvbiBzKHQsZSl7Zm9yKHZhciByLG4sYSxpPS0xLG89dC5sZW5ndGgscz10 WzBdLGw9W107KytpPG87KXtuPSgocj10W2ldKVswXS1zWzBdKS9lLGE9KHJb MV0tc1sxXSkvZTtmb3IodmFyIGM9MDtjPGU7KytjKWwucHVzaChbc1swXStj Km4sc1sxXStjKmFdKTtzPXJ9cmV0dXJuIGwucHVzaChyKSxsfWZ1bmN0aW9u IGwodCxlKXtyZXR1cm4gTWF0aC5hYnModFswXS1lWzBdKTxoJiZNYXRoLmFi cyh0WzFdLWVbMV0pPGh9cmV0dXJuIGkuc3RyZWFtPWZ1bmN0aW9uKGUpe3Zh ciByPWkucm90YXRlKCksYT1vKGUpLGw9KGkucm90YXRlKFswLDBdKSxvKGUp KTtyZXR1cm4gaS5yb3RhdGUociksYS5zcGhlcmU9ZnVuY3Rpb24oKXt0Lmdl by5zdHJlYW0oZnVuY3Rpb24oKXtmb3IodmFyIGU9MWUtNixyPVtdLGE9MCxp PW5bMF0ubGVuZ3RoO2E8aTsrK2Epe3ZhciBvPW5bMF1bYV0sbD0xODAqb1sw XVswXS9wLGM9MTgwKm9bMF1bMV0vcCx1PTE4MCpvWzFdWzFdL3AsaD0xODAq b1syXVswXS9wLGY9MTgwKm9bMl1bMV0vcDtyLnB1c2gocyhbW2wrZSxjK2Vd LFtsK2UsdS1lXSxbaC1lLHUtZV0sW2gtZSxmK2VdXSwzMCkpfWZvcih2YXIg YT1uWzFdLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgbz1uWzFdW2FdLGw9MTgw Km9bMF1bMF0vcCxjPTE4MCpvWzBdWzFdL3AsdT0xODAqb1sxXVsxXS9wLGg9 MTgwKm9bMl1bMF0vcCxmPTE4MCpvWzJdWzFdL3A7ci5wdXNoKHMoW1toLWUs Zi1lXSxbaC1lLHUrZV0sW2wrZSx1K2VdLFtsK2UsYy1lXV0sMzApKX1yZXR1 cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3QubWVyZ2UocildfX0o KSxsKX0sYX0saS5sb2Jlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8obj10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVu Y3Rpb24odCl7cmV0dXJuW1t0WzBdWzBdKnAvMTgwLHRbMF1bMV0qcC8xODBd LFt0WzFdWzBdKnAvMTgwLHRbMV1bMV0qcC8xODBdLFt0WzJdWzBdKnAvMTgw LHRbMl1bMV0qcC8xODBdXX0pfSkscj1uLm1hcChmdW5jdGlvbih0KXtyZXR1 cm4gdC5tYXAoZnVuY3Rpb24odCl7dmFyIHIsbj1lKHRbMF1bMF0sdFswXVsx XSlbMF0sYT1lKHRbMl1bMF0sdFsyXVsxXSlbMF0saT1lKHRbMV1bMF0sdFsw XVsxXSlbMV0sbz1lKHRbMV1bMF0sdFsxXVsxXSlbMV07cmV0dXJuIGk+byYm KHI9aSxpPW8sbz1yKSxbW24saV0sW2Esb11dfSl9KSxpKTpuLm1hcChmdW5j dGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW1sxODAq dFswXVswXS9wLDE4MCp0WzBdWzFdL3BdLFsxODAqdFsxXVswXS9wLDE4MCp0 WzFdWzFdL3BdLFsxODAqdFsyXVswXS9wLDE4MCp0WzJdWzFdL3BdXX0pfSl9 LGl9LF8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9LjUqZSpNYXRoLnNx cnQoKDQrcCkvcCksbj1tKHIpLGE9TWF0aC5jb3Mobik7cmV0dXJuW3QvKDIv TWF0aC5zcXJ0KHAqKDQrcCkpKigxK2EpKSxtKChuK3IqKGErMikpLygyK2Qp KV19LCh0Lmdlby5lY2tlcnQ0PWZ1bmN0aW9uKCl7cmV0dXJuIHgoXyl9KS5y YXc9Xzt2YXIgdz10Lmdlby5hemltdXRoYWxFcXVhbEFyZWEucmF3O2Z1bmN0 aW9uIGsodCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPDImJihlPXQpLDE9PT1l KXJldHVybiB3O2lmKGU9PT0xLzApcmV0dXJuIFQ7ZnVuY3Rpb24gcihyLG4p e3ZhciBhPXcoci9lLG4pO3JldHVybiBhWzBdKj10LGF9cmV0dXJuIHIuaW52 ZXJ0PWZ1bmN0aW9uKHIsbil7dmFyIGE9dy5pbnZlcnQoci90LG4pO3JldHVy biBhWzBdKj1lLGF9LHJ9ZnVuY3Rpb24gVCh0LGUpe3JldHVyblt0Kk1hdGgu Y29zKGUpL01hdGguY29zKGUvPTIpLDIqTWF0aC5zaW4oZSldfWZ1bmN0aW9u IE0odCxlKXtyZXR1cm5bMyp0LygyKnApKk1hdGguc3FydChwKnAvMy1lKmUp LGVdfWZ1bmN0aW9uIEEodCxlKXtyZXR1cm5bdCwxLjI1Kk1hdGgubG9nKE1h dGgudGFuKHAvNCsuNCplKSldfWZ1bmN0aW9uIFModCl7cmV0dXJuIGZ1bmN0 aW9uKGUpe3ZhciByLG49dCpNYXRoLnNpbihlKSxhPTMwO2Rve2UtPXI9KGUr TWF0aC5zaW4oZSktbikvKDErTWF0aC5jb3MoZSkpfXdoaWxlKE1hdGguYWJz KHIpPmgmJi0tYT4wKTtyZXR1cm4gZS8yfX1ULmludmVydD1mdW5jdGlvbih0 LGUpe3ZhciByPTIqbShlLzIpO3JldHVyblt0Kk1hdGguY29zKHIvMikvTWF0 aC5jb3Mocikscl19LCh0Lmdlby5oYW1tZXI9ZnVuY3Rpb24oKXt2YXIgdD0y LGU9YihrKSxyPWUodCk7cmV0dXJuIHIuY29lZmZpY2llbnQ9ZnVuY3Rpb24o cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZSh0PStyKTp0fSxyfSkucmF3 PWssTS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bMi8zKnAqdC9NYXRo LnNxcnQocCpwLzMtZSplKSxlXX0sKHQuZ2VvLmthdnJheXNraXk3PWZ1bmN0 aW9uKCl7cmV0dXJuIHgoTSl9KS5yYXc9TSxBLmludmVydD1mdW5jdGlvbih0 LGUpe3JldHVyblt0LDIuNSpNYXRoLmF0YW4oTWF0aC5leHAoLjgqZSkpLS42 MjUqcF19LCh0Lmdlby5taWxsZXI9ZnVuY3Rpb24oKXtyZXR1cm4geChBKX0p LnJhdz1BLFMocCk7dmFyIEU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVMocik7 ZnVuY3Rpb24gYShyLGEpe3JldHVyblt0KnIqTWF0aC5jb3MoYT1uKGEpKSxl Kk1hdGguc2luKGEpXX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24obixhKXt2 YXIgaT1tKGEvZSk7cmV0dXJuW24vKHQqTWF0aC5jb3MoaSkpLG0oKDIqaStN YXRoLnNpbigyKmkpKS9yKV19LGF9KE1hdGguU1FSVDIvZCxNYXRoLlNRUlQy LHApO2Z1bmN0aW9uIEwodCxlKXt2YXIgcj1lKmUsbj1yKnI7cmV0dXJuW3Qq KC44NzA3LS4xMzE5NzkqcituKihuKiguMDAzOTcxKnItLjAwMTUyOSpuKS0u MDEzNzkxKSksZSooMS4wMDcyMjYrciooLjAxNTA4NStuKiguMDI4ODc0KnIt LjA0NDQ3NS0uMDA1OTE2Km4pKSldfSh0Lmdlby5tb2xsd2VpZGU9ZnVuY3Rp b24oKXtyZXR1cm4geChFKX0pLnJhdz1FLEwuaW52ZXJ0PWZ1bmN0aW9uKHQs ZSl7dmFyIHIsbj1lLGE9MjU7ZG97dmFyIGk9bipuLG89aSppO24tPXI9KG4q KDEuMDA3MjI2K2kqKC4wMTUwODUrbyooLjAyODg3NCppLS4wNDQ0NzUtLjAw NTkxNipvKSkpLWUpLygxLjAwNzIyNitpKiguMDQ1MjU1K28qKC4yNTk4NjYq aS0uMzExMzI1LS4wMDU5MTYqMTEqbykpKX13aGlsZShNYXRoLmFicyhyKT5o JiYtLWE+MCk7cmV0dXJuW3QvKC44NzA3KyhpPW4qbikqKGkqKGkqaSppKigu MDAzOTcxLS4wMDE1MjkqaSktLjAxMzc5MSktLjEzMTk3OSkpLG5dfSwodC5n ZW8ubmF0dXJhbEVhcnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHgoTCl9KS5yYXc9 TDt2YXIgQz1bWy45OTg2LC0uMDYyXSxbMSwwXSxbLjk5ODYsLjA2Ml0sWy45 OTU0LC4xMjRdLFsuOTksLjE4Nl0sWy45ODIyLC4yNDhdLFsuOTczLC4zMV0s Wy45NiwuMzcyXSxbLjk0MjcsLjQzNF0sWy45MjE2LC40OTU4XSxbLjg5NjIs LjU1NzFdLFsuODY3OSwuNjE3Nl0sWy44MzUsLjY3NjldLFsuNzk4NiwuNzM0 Nl0sWy43NTk3LC43OTAzXSxbLjcxODYsLjg0MzVdLFsuNjczMiwuODkzNl0s Wy42MjEzLC45Mzk0XSxbLjU3MjIsLjk3NjFdLFsuNTMyMiwxXV07ZnVuY3Rp b24gUCh0LGUpe3ZhciByLG49TWF0aC5taW4oMTgsMzYqTWF0aC5hYnMoZSkv cCksYT1NYXRoLmZsb29yKG4pLGk9bi1hLG89KHI9Q1thXSlbMF0scz1yWzFd LGw9KHI9Q1srK2FdKVswXSxjPXJbMV0sdT0ocj1DW01hdGgubWluKDE5LCsr YSldKVswXSxoPXJbMV07cmV0dXJuW3QqKGwraSoodS1vKS8yK2kqaSoodS0y KmwrbykvMiksKGU+MD9kOi1kKSooYytpKihoLXMpLzIraSppKihoLTIqYytz KS8yKV19ZnVuY3Rpb24gTyh0LGUpe3JldHVyblt0Kk1hdGguY29zKGUpLGVd fWZ1bmN0aW9uIHoodCxlKXt2YXIgcixuPU1hdGguY29zKGUpLGE9KHI9eShu Kk1hdGguY29zKHQvPTIpKSk/ci9NYXRoLnNpbihyKToxO3JldHVyblsyKm4q TWF0aC5zaW4odCkqYSxNYXRoLnNpbihlKSphXX1mdW5jdGlvbiBJKHQsZSl7 dmFyIHI9eih0LGUpO3JldHVyblsoclswXSt0L2QpLzIsKHJbMV0rZSkvMl19 Qy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RbMV0qPTEuMDE0NH0pLFAuaW52ZXJ0 PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS9kLG49OTAqcixhPU1hdGgubWluKDE4 LE1hdGguYWJzKG4vNSkpLGk9TWF0aC5tYXgoMCxNYXRoLmZsb29yKGEpKTtk b3t2YXIgbz1DW2ldWzFdLHM9Q1tpKzFdWzFdLGw9Q1tNYXRoLm1pbigxOSxp KzIpXVsxXSxjPWwtbyx1PWwtMipzK28saD0yKihNYXRoLmFicyhyKS1zKS9j LHA9dS9jLG09aCooMS1wKmgqKDEtMipwKmgpKTtpZihtPj0wfHwxPT09aSl7 bj0oZT49MD81Oi01KSoobSthKTt2YXIgeSx4PTUwO2Rve209KGE9TWF0aC5t aW4oMTgsTWF0aC5hYnMobikvNSkpLShpPU1hdGguZmxvb3IoYSkpLG89Q1tp XVsxXSxzPUNbaSsxXVsxXSxsPUNbTWF0aC5taW4oMTksaSsyKV1bMV0sbi09 KHk9KGU+PTA/ZDotZCkqKHMrbSoobC1vKS8yK20qbSoobC0yKnMrbykvMikt ZSkqdn13aGlsZShNYXRoLmFicyh5KT5mJiYtLXg+MCk7YnJlYWt9fXdoaWxl KC0taT49MCk7dmFyIGI9Q1tpXVswXSxfPUNbaSsxXVswXSx3PUNbTWF0aC5t aW4oMTksaSsyKV1bMF07cmV0dXJuW3QvKF8rbSoody1iKS8yK20qbSoody0y Kl8rYikvMiksbipnXX0sKHQuZ2VvLnJvYmluc29uPWZ1bmN0aW9uKCl7cmV0 dXJuIHgoUCl9KS5yYXc9UCxPLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVy blt0L01hdGguY29zKGUpLGVdfSwodC5nZW8uc2ludXNvaWRhbD1mdW5jdGlv bigpe3JldHVybiB4KE8pfSkucmF3PU8sei5pbnZlcnQ9ZnVuY3Rpb24odCxl KXtpZighKHQqdCs0KmUqZT5wKnAraCkpe3ZhciByPXQsbj1lLGE9MjU7ZG97 dmFyIGksbz1NYXRoLnNpbihyKSxzPU1hdGguc2luKHIvMiksbD1NYXRoLmNv cyhyLzIpLGM9TWF0aC5zaW4obiksdT1NYXRoLmNvcyhuKSxmPU1hdGguc2lu KDIqbiksZD1jKmMsZz11KnUsdj1zKnMsbT0xLWcqbCpsLHg9bT95KHUqbCkq TWF0aC5zcXJ0KGk9MS9tKTppPTAsYj0yKngqdSpzLXQsXz14KmMtZSx3PWkq KGcqdit4KnUqbCpkKSxrPWkqKC41Km8qZi0yKngqYypzKSxUPS4yNSppKihm KnMteCpjKmcqbyksTT1pKihkKmwreCp2KnUpLEE9aypULU0qdztpZighQSli cmVhazt2YXIgUz0oXyprLWIqTSkvQSxFPShiKlQtXyp3KS9BO3ItPVMsbi09 RX13aGlsZSgoTWF0aC5hYnMoUyk+aHx8TWF0aC5hYnMoRSk+aCkmJi0tYT4w KTtyZXR1cm5bcixuXX19LCh0Lmdlby5haXRvZmY9ZnVuY3Rpb24oKXtyZXR1 cm4geCh6KX0pLnJhdz16LEkuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9 dCxuPWUsYT0yNTtkb3t2YXIgaSxvPU1hdGguY29zKG4pLHM9TWF0aC5zaW4o biksbD1NYXRoLnNpbigyKm4pLGM9cypzLHU9bypvLGY9TWF0aC5zaW4ociks cD1NYXRoLmNvcyhyLzIpLGc9TWF0aC5zaW4oci8yKSx2PWcqZyxtPTEtdSpw KnAseD1tP3kobypwKSpNYXRoLnNxcnQoaT0xL20pOmk9MCxiPS41KigyKngq bypnK3IvZCktdCxfPS41Kih4KnMrbiktZSx3PS41KmkqKHUqdit4Km8qcCpj KSsuNS9kLGs9aSooZipsLzQteCpzKmcpLFQ9LjEyNSppKihsKmcteCpzKnUq ZiksTT0uNSppKihjKnAreCp2Km8pKy41LEE9aypULU0qdyxTPShfKmstYipN KS9BLEU9KGIqVC1fKncpL0E7ci09UyxuLT1FfXdoaWxlKChNYXRoLmFicyhT KT5ofHxNYXRoLmFicyhFKT5oKSYmLS1hPjApO3JldHVybltyLG5dfSwodC5n ZW8ud2lua2VsMz1mdW5jdGlvbigpe3JldHVybiB4KEkpfSkucmF3PUl9fSx7 fV0sNzk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo ImQzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5Iiks bz1NYXRoLlBJLzE4MCxzPTE4MC9NYXRoLlBJLGw9e2N1cnNvcjoicG9pbnRl ciJ9LGM9e2N1cnNvcjoiYXV0byJ9O2Z1bmN0aW9uIHUodCxlKXtyZXR1cm4g bi5iZWhhdmlvci56b29tKCkudHJhbnNsYXRlKGUudHJhbnNsYXRlKCkpLnNj YWxlKGUuc2NhbGUoKSl9ZnVuY3Rpb24gaCh0LGUscil7dmFyIG49dC5pZCxv PXQuZ3JhcGhEaXYscz1vLmxheW91dCxsPXNbbl0sYz1vLl9mdWxsTGF5b3V0 LHU9Y1tuXSxoPXt9LGY9e307ZnVuY3Rpb24gcCh0LGUpe2hbbisiLiIrdF09 YS5uZXN0ZWRQcm9wZXJ0eShsLHQpLmdldCgpLGkuY2FsbCgiX3N0b3JlRGly ZWN0R1VJRWRpdCIscyxjLl9wcmVHVUksaCk7dmFyIHI9YS5uZXN0ZWRQcm9w ZXJ0eSh1LHQpO3IuZ2V0KCkhPT1lJiYoci5zZXQoZSksYS5uZXN0ZWRQcm9w ZXJ0eShsLHQpLnNldChlKSxmW24rIi4iK3RdPWUpfXIocCkscCgicHJvamVj dGlvbi5zY2FsZSIsZS5zY2FsZSgpL3QuZml0U2NhbGUpLHAoImZpdGJvdW5k cyIsITEpLG8uZW1pdCgicGxvdGx5X3JlbGF5b3V0IixmKX1mdW5jdGlvbiBm KHQsZSl7dmFyIHI9dSgwLGUpO2Z1bmN0aW9uIGEocil7dmFyIG49ZS5pbnZl cnQodC5taWRQdCk7cigiY2VudGVyLmxvbiIsblswXSkscigiY2VudGVyLmxh dCIsblsxXSl9cmV0dXJuIHIub24oInpvb21zdGFydCIsZnVuY3Rpb24oKXtu LnNlbGVjdCh0aGlzKS5zdHlsZShsKX0pLm9uKCJ6b29tIixmdW5jdGlvbigp e2Uuc2NhbGUobi5ldmVudC5zY2FsZSkudHJhbnNsYXRlKG4uZXZlbnQudHJh bnNsYXRlKSx0LnJlbmRlcigpO3ZhciByPWUuaW52ZXJ0KHQubWlkUHQpO3Qu Z3JhcGhEaXYuZW1pdCgicGxvdGx5X3JlbGF5b3V0aW5nIix7Imdlby5wcm9q ZWN0aW9uLnNjYWxlIjplLnNjYWxlKCkvdC5maXRTY2FsZSwiZ2VvLmNlbnRl ci5sb24iOnJbMF0sImdlby5jZW50ZXIubGF0IjpyWzFdfSl9KS5vbigiem9v bWVuZCIsZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5zdHlsZShjKSxoKHQs ZSxhKX0pLHJ9ZnVuY3Rpb24gcCh0LGUpe3ZhciByLGEsaSxvLHMsZixwLGQs Zyx2PXUoMCxlKSxtPTI7ZnVuY3Rpb24geSh0KXtyZXR1cm4gZS5pbnZlcnQo dCl9ZnVuY3Rpb24geChyKXt2YXIgbj1lLnJvdGF0ZSgpLGE9ZS5pbnZlcnQo dC5taWRQdCk7cigicHJvamVjdGlvbi5yb3RhdGlvbi5sb24iLC1uWzBdKSxy KCJjZW50ZXIubG9uIixhWzBdKSxyKCJjZW50ZXIubGF0IixhWzFdKX1yZXR1 cm4gdi5vbigiem9vbXN0YXJ0IixmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMp LnN0eWxlKGwpLHI9bi5tb3VzZSh0aGlzKSxhPWUucm90YXRlKCksaT1lLnRy YW5zbGF0ZSgpLG89YSxzPXkocil9KS5vbigiem9vbSIsZnVuY3Rpb24oKXtp ZihmPW4ubW91c2UodGhpcyksZnVuY3Rpb24odCl7dmFyIHI9eSh0KTtpZigh cilyZXR1cm4hMDt2YXIgbj1lKHIpO3JldHVybiBNYXRoLmFicyhuWzBdLXRb MF0pPm18fE1hdGguYWJzKG5bMV0tdFsxXSk+bX0ocikpcmV0dXJuIHYuc2Nh bGUoZS5zY2FsZSgpKSx2b2lkIHYudHJhbnNsYXRlKGUudHJhbnNsYXRlKCkp O2Uuc2NhbGUobi5ldmVudC5zY2FsZSksZS50cmFuc2xhdGUoW2lbMF0sbi5l dmVudC50cmFuc2xhdGVbMV1dKSxzP3koZikmJihkPXkoZikscD1bb1swXSso ZFswXS1zWzBdKSxhWzFdLGFbMl1dLGUucm90YXRlKHApLG89cCk6cz15KHI9 ZiksZz0hMCx0LnJlbmRlcigpO3ZhciBsPWUucm90YXRlKCksYz1lLmludmVy dCh0Lm1pZFB0KTt0LmdyYXBoRGl2LmVtaXQoInBsb3RseV9yZWxheW91dGlu ZyIseyJnZW8ucHJvamVjdGlvbi5zY2FsZSI6ZS5zY2FsZSgpL3QuZml0U2Nh bGUsImdlby5jZW50ZXIubG9uIjpjWzBdLCJnZW8uY2VudGVyLmxhdCI6Y1sx XSwiZ2VvLnByb2plY3Rpb24ucm90YXRpb24ubG9uIjotbFswXX0pfSkub24o Inpvb21lbmQiLGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuc3R5bGUoYyks ZyYmaCh0LGUseCl9KSx2fWZ1bmN0aW9uIGQodCxlKXt2YXIgcixhPXtyOmUu cm90YXRlKCksazplLnNjYWxlKCl9LGk9dSgwLGUpLGY9ZnVuY3Rpb24odCl7 dmFyIGU9MCxyPWFyZ3VtZW50cy5sZW5ndGgsYT1bXTtmb3IoOysrZTxyOylh LnB1c2goYXJndW1lbnRzW2VdKTt2YXIgaT1uLmRpc3BhdGNoLmFwcGx5KG51 bGwsYSk7cmV0dXJuIGkub2Y9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rp b24oYSl7dmFyIG87dHJ5e289YS5zb3VyY2VFdmVudD1uLmV2ZW50LGEudGFy Z2V0PXQsbi5ldmVudD1hLGlbYS50eXBlXS5hcHBseShlLHIpfWZpbmFsbHl7 bi5ldmVudD1vfX19LGl9KGksInpvb21zdGFydCIsInpvb20iLCJ6b29tZW5k IikscD0wLGQ9aS5vbjtmdW5jdGlvbiBtKHQpe3ZhciByPWUucm90YXRlKCk7 dCgicHJvamVjdGlvbi5yb3RhdGlvbi5sb24iLC1yWzBdKSx0KCJwcm9qZWN0 aW9uLnJvdGF0aW9uLmxhdCIsLXJbMV0pfXJldHVybiBpLm9uKCJ6b29tc3Rh cnQiLGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuc3R5bGUobCk7dmFyIHQs Yyx1LGgsbSxiLF8sdyxrLFQsTSxBPW4ubW91c2UodGhpcyksUz1lLnJvdGF0 ZSgpLEU9UyxMPWUudHJhbnNsYXRlKCksQz0oYz0uNSoodD1TKVswXSpvLHU9 LjUqdFsxXSpvLGg9LjUqdFsyXSpvLG09TWF0aC5zaW4oYyksYj1NYXRoLmNv cyhjKSxfPU1hdGguc2luKHUpLHc9TWF0aC5jb3ModSksaz1NYXRoLnNpbiho KSxUPU1hdGguY29zKGgpLFtiKncqVCttKl8qayxtKncqVC1iKl8qayxiKl8q VCttKncqayxiKncqay1tKl8qVF0pO3I9ZyhlLEEpLGQuY2FsbChpLCJ6b29t IixmdW5jdGlvbigpe3ZhciB0LGksbyxsLGMsdSxoLHAsZCxtLGI9bi5tb3Vz ZSh0aGlzKTtpZihlLnNjYWxlKGEuaz1uLmV2ZW50LnNjYWxlKSxyKXtpZihn KGUsYikpe2Uucm90YXRlKFMpLnRyYW5zbGF0ZShMKTt2YXIgXz1nKGUsYiks dz1mdW5jdGlvbih0LGUpe2lmKCF0fHwhZSlyZXR1cm47dmFyIHI9ZnVuY3Rp b24odCxlKXtyZXR1cm5bdFsxXSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0t dFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVbMF1dfSh0LGUpLG49TWF0aC5z cXJ0KHgocixyKSksYT0uNSpNYXRoLmFjb3MoTWF0aC5tYXgoLTEsTWF0aC5t aW4oMSx4KHQsZSkpKSksaT1NYXRoLnNpbihhKS9uO3JldHVybiBuJiZbTWF0 aC5jb3MoYSksclsyXSppLC1yWzFdKmksclswXSppXX0ocixfKSxrPWZ1bmN0 aW9uKHQpe3JldHVybltNYXRoLmF0YW4yKDIqKHRbMF0qdFsxXSt0WzJdKnRb M10pLDEtMioodFsxXSp0WzFdK3RbMl0qdFsyXSkpKnMsTWF0aC5hc2luKE1h dGgubWF4KC0xLE1hdGgubWluKDEsMioodFswXSp0WzJdLXRbM10qdFsxXSkp KSkqcyxNYXRoLmF0YW4yKDIqKHRbMF0qdFszXSt0WzFdKnRbMl0pLDEtMioo dFsyXSp0WzJdK3RbM10qdFszXSkpKnNdfSgoaT13LG89KHQ9QylbMF0sbD10 WzFdLGM9dFsyXSx1PXRbM10saD1pWzBdLHA9aVsxXSxkPWlbMl0sbT1pWzNd LFtvKmgtbCpwLWMqZC11Km0sbypwK2wqaCtjKm0tdSpkLG8qZC1sKm0rYypo K3UqcCxvKm0rbCpkLWMqcCt1KmhdKSksVD1hLnI9ZnVuY3Rpb24odCxlLHIp e3ZhciBuPXkoZSwyLHRbMF0pO249eShuLDEsdFsxXSksbj15KG4sMCx0WzJd LXJbMl0pO3ZhciBhLGksbz1lWzBdLGw9ZVsxXSxjPWVbMl0sdT1uWzBdLGg9 blsxXSxmPW5bMl0scD1NYXRoLmF0YW4yKGwsbykqcyxkPU1hdGguc3FydChv Km8rbCpsKTtNYXRoLmFicyhoKT5kPyhpPShoPjA/OTA6LTkwKS1wLGE9MCk6 KGk9TWF0aC5hc2luKGgvZCkqcy1wLGE9TWF0aC5zcXJ0KGQqZC1oKmgpKTt2 YXIgZz0xODAtaS0yKnAsbT0oTWF0aC5hdGFuMihmLHUpLU1hdGguYXRhbjIo YyxhKSkqcyx4PShNYXRoLmF0YW4yKGYsdSktTWF0aC5hdGFuMihjLC1hKSkq cyxiPXYoclswXSxyWzFdLGksbSksXz12KHJbMF0sclsxXSxnLHgpO3JldHVy biBiPD1fP1tpLG0sclsyXV06W2cseCxyWzJdXX0oayxyLEUpO2lzRmluaXRl KFRbMF0pJiZpc0Zpbml0ZShUWzFdKSYmaXNGaW5pdGUoVFsyXSl8fChUPUUp LGUucm90YXRlKFQpLEU9VH19ZWxzZSByPWcoZSxBPWIpO2Yub2YodGhpcyxh cmd1bWVudHMpKHt0eXBlOiJ6b29tIn0pfSksTT1mLm9mKHRoaXMsYXJndW1l bnRzKSxwKyt8fE0oe3R5cGU6Inpvb21zdGFydCJ9KX0pLm9uKCJ6b29tZW5k IixmdW5jdGlvbigpe3ZhciByO24uc2VsZWN0KHRoaXMpLnN0eWxlKGMpLGQu Y2FsbChpLCJ6b29tIixudWxsKSxyPWYub2YodGhpcyxhcmd1bWVudHMpLC0t cHx8cih7dHlwZToiem9vbWVuZCJ9KSxoKHQsZSxtKX0pLm9uKCJ6b29tLnJl ZHJhdyIsZnVuY3Rpb24oKXt0LnJlbmRlcigpO3ZhciByPWUucm90YXRlKCk7 dC5ncmFwaERpdi5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLHsiZ2VvLnBy b2plY3Rpb24uc2NhbGUiOmUuc2NhbGUoKS90LmZpdFNjYWxlLCJnZW8ucHJv amVjdGlvbi5yb3RhdGlvbi5sb24iOi1yWzBdLCJnZW8ucHJvamVjdGlvbi5y b3RhdGlvbi5sYXQiOi1yWzFdfSl9KSxuLnJlYmluZChpLGYsIm9uIil9ZnVu Y3Rpb24gZyh0LGUpe3ZhciByPXQuaW52ZXJ0KGUpO3JldHVybiByJiZpc0Zp bml0ZShyWzBdKSYmaXNGaW5pdGUoclsxXSkmJmZ1bmN0aW9uKHQpe3ZhciBl PXRbMF0qbyxyPXRbMV0qbyxuPU1hdGguY29zKHIpO3JldHVybltuKk1hdGgu Y29zKGUpLG4qTWF0aC5zaW4oZSksTWF0aC5zaW4ocildfShyKX1mdW5jdGlv biB2KHQsZSxyLG4pe3ZhciBhPW0oci10KSxpPW0obi1lKTtyZXR1cm4gTWF0 aC5zcXJ0KGEqYStpKmkpfWZ1bmN0aW9uIG0odCl7cmV0dXJuKHQlMzYwKzU0 MCklMzYwLTE4MH1mdW5jdGlvbiB5KHQsZSxyKXt2YXIgbj1yKm8sYT10LnNs aWNlKCksaT0wPT09ZT8xOjAscz0yPT09ZT8xOjIsbD1NYXRoLmNvcyhuKSxj PU1hdGguc2luKG4pO3JldHVybiBhW2ldPXRbaV0qbC10W3NdKmMsYVtzXT10 W3NdKmwrdFtpXSpjLGF9ZnVuY3Rpb24geCh0LGUpe2Zvcih2YXIgcj0wLG49 MCxhPXQubGVuZ3RoO248YTsrK24pcis9dFtuXSplW25dO3JldHVybiByfWUu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQucHJvamVjdGlvbjtyZXR1 cm4oZS5faXNTY29wZWQ/ZjplLl9pc0NsaXBwZWQ/ZDpwKSh0LHIpfX0seyIu Li8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NixkMzoxNjV9XSw4 MDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v cmVnaXN0cnkiKSxhPXQoIi4vY2FydGVzaWFuL2NvbnN0YW50cyIpLlNVQlBM T1RfUEFUVEVSTjtyLmdldFN1YnBsb3RDYWxjRGF0YT1mdW5jdGlvbih0LGUs cil7dmFyIGE9bi5zdWJwbG90c1JlZ2lzdHJ5W2VdO2lmKCFhKXJldHVybltd O2Zvcih2YXIgaT1hLmF0dHIsbz1bXSxzPTA7czx0Lmxlbmd0aDtzKyspe3Zh ciBsPXRbc107bFswXS50cmFjZVtpXT09PXImJm8ucHVzaChsKX1yZXR1cm4g b30sci5nZXRNb2R1bGVDYWxjRGF0YT1mdW5jdGlvbih0LGUpe3ZhciByLGE9 W10saT1bXTtpZighKHI9InN0cmluZyI9PXR5cGVvZiBlP24uZ2V0TW9kdWxl KGUpLnBsb3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTplLnBsb3QpKXJldHVy blthLHRdO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz10W29d LGw9c1swXS50cmFjZTshMD09PWwudmlzaWJsZSYmMCE9PWwuX2xlbmd0aCYm KGwuX21vZHVsZS5wbG90PT09cj9hLnB1c2gocyk6aS5wdXNoKHMpKX1yZXR1 cm5bYSxpXX0sci5nZXRTdWJwbG90RGF0YT1mdW5jdGlvbih0LGUscil7aWYo IW4uc3VicGxvdHNSZWdpc3RyeVtlXSlyZXR1cm5bXTt2YXIgaSxvLHMsbD1u LnN1YnBsb3RzUmVnaXN0cnlbZV0uYXR0cixjPVtdO2lmKCJnbDJkIj09PWUp e3ZhciB1PXIubWF0Y2goYSk7bz0ieCIrdVsxXSxzPSJ5Iit1WzJdfWZvcih2 YXIgaD0wO2g8dC5sZW5ndGg7aCsrKWk9dFtoXSwiZ2wyZCI9PT1lJiZuLnRy YWNlSXMoaSwiZ2wyZCIpP2lbbFswXV09PT1vJiZpW2xbMV1dPT09cyYmYy5w dXNoKGkpOmlbbF09PT1yJiZjLnB1c2goaSk7cmV0dXJuIGN9fSx7Ii4uL3Jl Z2lzdHJ5Ijo4NDYsIi4vY2FydGVzaWFuL2NvbnN0YW50cyI6NzcxfV0sODAx OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIm1vdXNl LWNoYW5nZSIpLGE9dCgibW91c2Utd2hlZWwiKSxpPXQoIm1vdXNlLWV2ZW50 LW9mZnNldCIpLG89dCgiLi4vY2FydGVzaWFuL2NvbnN0YW50cyIpLHM9dCgi aGFzLXBhc3NpdmUtZXZlbnRzIik7ZnVuY3Rpb24gbCh0LGUpe3RoaXMuZWxl bWVudD10LHRoaXMucGxvdD1lLHRoaXMubW91c2VMaXN0ZW5lcj1udWxsLHRo aXMud2hlZWxMaXN0ZW5lcj1udWxsLHRoaXMubGFzdElucHV0VGltZT1EYXRl Lm5vdygpLHRoaXMubGFzdFBvcz1bMCwwXSx0aGlzLmJveEVuYWJsZWQ9ITEs dGhpcy5ib3hJbml0ZWQ9ITEsdGhpcy5ib3hTdGFydD1bMCwwXSx0aGlzLmJv eEVuZD1bMCwwXSx0aGlzLmRyYWdTdGFydD1bMCwwXX1lLmV4cG9ydHM9ZnVu Y3Rpb24odCl7dmFyIGU9dC5tb3VzZUNvbnRhaW5lcixyPXQuZ2xwbG90LGM9 bmV3IGwoZSxyKTtmdW5jdGlvbiB1KCl7dC54YXhpcy5hdXRvcmFuZ2U9ITEs dC55YXhpcy5hdXRvcmFuZ2U9ITF9ZnVuY3Rpb24gaChlLG4sYSl7dmFyIGks cyxsPXQuY2FsY0RhdGFCb3goKSxoPXIudmlld0JveCxmPWMubGFzdFBvc1sw XSxwPWMubGFzdFBvc1sxXSxkPW8uTUlORFJBRypyLnBpeGVsUmF0aW8sZz1v Lk1JTlpPT00qci5waXhlbFJhdGlvO2Z1bmN0aW9uIHYoZSxyLG4pe3ZhciBh PU1hdGgubWluKHIsbiksaT1NYXRoLm1heChyLG4pO2EhPT1pPyhsW2VdPWEs bFtlKzJdPWksYy5kYXRhQm94PWwsdC5zZXRSYW5nZXMobCkpOih0LnNlbGVj dEJveC5zZWxlY3RCb3g9WzAsMCwxLDFdLHQuZ2xwbG90LnNldERpcnR5KCkp fXN3aXRjaChuKj1yLnBpeGVsUmF0aW8sYSo9ci5waXhlbFJhdGlvLGE9aFsz XS1oWzFdLWEsdC5mdWxsTGF5b3V0LmRyYWdtb2RlKXtjYXNlInpvb20iOmlm KGUpe3ZhciBtPW4vKGhbMl0taFswXSkqKGxbMl0tbFswXSkrbFswXSx5PWEv KGhbM10taFsxXSkqKGxbM10tbFsxXSkrbFsxXTtjLmJveEluaXRlZHx8KGMu Ym94U3RhcnRbMF09bSxjLmJveFN0YXJ0WzFdPXksYy5kcmFnU3RhcnRbMF09 bixjLmRyYWdTdGFydFsxXT1hKSxjLmJveEVuZFswXT1tLGMuYm94RW5kWzFd PXksYy5ib3hJbml0ZWQ9ITAsYy5ib3hFbmFibGVkfHxjLmJveFN0YXJ0WzBd PT09Yy5ib3hFbmRbMF0mJmMuYm94U3RhcnRbMV09PT1jLmJveEVuZFsxXXx8 KGMuYm94RW5hYmxlZD0hMCk7dmFyIHg9TWF0aC5hYnMoYy5kcmFnU3RhcnRb MF0tbik8ZyxiPU1hdGguYWJzKGMuZHJhZ1N0YXJ0WzFdLWEpPGc7aWYoIWZ1 bmN0aW9uKCl7Zm9yKHZhciBlPXQuZ3JhcGhEaXYuX2Z1bGxMYXlvdXQuX2F4 aXNDb25zdHJhaW50R3JvdXBzLHI9dC54YXhpcy5faWQsbj10LnlheGlzLl9p ZCxhPTA7YTxlLmxlbmd0aDthKyspaWYoLTEhPT1lW2FdW3JdKXtpZigtMSE9 PWVbYV1bbl0pcmV0dXJuITA7YnJlYWt9cmV0dXJuITF9KCl8fHgmJmIpeCYm KGMuYm94RW5kWzBdPWMuYm94U3RhcnRbMF0pLGImJihjLmJveEVuZFsxXT1j LmJveFN0YXJ0WzFdKTtlbHNle2k9Yy5ib3hFbmRbMF0tYy5ib3hTdGFydFsw XSxzPWMuYm94RW5kWzFdLWMuYm94U3RhcnRbMV07dmFyIF89KGxbM10tbFsx XSkvKGxbMl0tbFswXSk7TWF0aC5hYnMoaSpfKT5NYXRoLmFicyhzKT8oYy5i b3hFbmRbMV09Yy5ib3hTdGFydFsxXStNYXRoLmFicyhpKSpfKihzPj0wPzE6 LTEpLGMuYm94RW5kWzFdPGxbMV0/KGMuYm94RW5kWzFdPWxbMV0sYy5ib3hF bmRbMF09Yy5ib3hTdGFydFswXSsobFsxXS1jLmJveFN0YXJ0WzFdKS9NYXRo LmFicyhfKSk6Yy5ib3hFbmRbMV0+bFszXSYmKGMuYm94RW5kWzFdPWxbM10s Yy5ib3hFbmRbMF09Yy5ib3hTdGFydFswXSsobFszXS1jLmJveFN0YXJ0WzFd KS9NYXRoLmFicyhfKSkpOihjLmJveEVuZFswXT1jLmJveFN0YXJ0WzBdK01h dGguYWJzKHMpL18qKGk+PTA/MTotMSksYy5ib3hFbmRbMF08bFswXT8oYy5i b3hFbmRbMF09bFswXSxjLmJveEVuZFsxXT1jLmJveFN0YXJ0WzFdKyhsWzBd LWMuYm94U3RhcnRbMF0pKk1hdGguYWJzKF8pKTpjLmJveEVuZFswXT5sWzJd JiYoYy5ib3hFbmRbMF09bFsyXSxjLmJveEVuZFsxXT1jLmJveFN0YXJ0WzFd KyhsWzJdLWMuYm94U3RhcnRbMF0pKk1hdGguYWJzKF8pKSl9fWVsc2UgYy5i b3hFbmFibGVkPyhpPWMuYm94U3RhcnRbMF0hPT1jLmJveEVuZFswXSxzPWMu Ym94U3RhcnRbMV0hPT1jLmJveEVuZFsxXSxpfHxzPyhpJiYodigwLGMuYm94 U3RhcnRbMF0sYy5ib3hFbmRbMF0pLHQueGF4aXMuYXV0b3JhbmdlPSExKSxz JiYodigxLGMuYm94U3RhcnRbMV0sYy5ib3hFbmRbMV0pLHQueWF4aXMuYXV0 b3JhbmdlPSExKSx0LnJlbGF5b3V0Q2FsbGJhY2soKSk6dC5nbHBsb3Quc2V0 RGlydHkoKSxjLmJveEVuYWJsZWQ9ITEsYy5ib3hJbml0ZWQ9ITEpOmMuYm94 SW5pdGVkJiYoYy5ib3hJbml0ZWQ9ITEpO2JyZWFrO2Nhc2UicGFuIjpjLmJv eEVuYWJsZWQ9ITEsYy5ib3hJbml0ZWQ9ITEsZT8oYy5wYW5uaW5nfHwoYy5k cmFnU3RhcnRbMF09bixjLmRyYWdTdGFydFsxXT1hKSxNYXRoLmFicyhjLmRy YWdTdGFydFswXS1uKTxkJiYobj1jLmRyYWdTdGFydFswXSksTWF0aC5hYnMo Yy5kcmFnU3RhcnRbMV0tYSk8ZCYmKGE9Yy5kcmFnU3RhcnRbMV0pLGk9KGYt bikqKGxbMl0tbFswXSkvKHIudmlld0JveFsyXS1yLnZpZXdCb3hbMF0pLHM9 KHAtYSkqKGxbM10tbFsxXSkvKHIudmlld0JveFszXS1yLnZpZXdCb3hbMV0p LGxbMF0rPWksbFsyXSs9aSxsWzFdKz1zLGxbM10rPXMsdC5zZXRSYW5nZXMo bCksYy5wYW5uaW5nPSEwLGMubGFzdElucHV0VGltZT1EYXRlLm5vdygpLHUo KSx0LmNhbWVyYUNoYW5nZWQoKSx0LmhhbmRsZUFubm90YXRpb25zKCkpOmMu cGFubmluZyYmKGMucGFubmluZz0hMSx0LnJlbGF5b3V0Q2FsbGJhY2soKSl9 Yy5sYXN0UG9zWzBdPW4sYy5sYXN0UG9zWzFdPWF9cmV0dXJuIGMubW91c2VM aXN0ZW5lcj1uKGUsaCksZS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0 IixmdW5jdGlvbih0KXt2YXIgcj1pKHQuY2hhbmdlZFRvdWNoZXNbMF0sZSk7 aCgwLHJbMF0sclsxXSksaCgxLHJbMF0sclsxXSksdC5wcmV2ZW50RGVmYXVs dCgpfSwhIXMmJntwYXNzaXZlOiExfSksZS5hZGRFdmVudExpc3RlbmVyKCJ0 b3VjaG1vdmUiLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKTt2YXIg cj1pKHQuY2hhbmdlZFRvdWNoZXNbMF0sZSk7aCgxLHJbMF0sclsxXSksdC5w cmV2ZW50RGVmYXVsdCgpfSwhIXMmJntwYXNzaXZlOiExfSksZS5hZGRFdmVu dExpc3RlbmVyKCJ0b3VjaGVuZCIsZnVuY3Rpb24odCl7aCgwLGMubGFzdFBv c1swXSxjLmxhc3RQb3NbMV0pLHQucHJldmVudERlZmF1bHQoKX0sISFzJiZ7 cGFzc2l2ZTohMX0pLGMud2hlZWxMaXN0ZW5lcj1hKGUsZnVuY3Rpb24oZSxu KXtpZighdC5zY3JvbGxab29tKXJldHVybiExO3ZhciBhPXQuY2FsY0RhdGFC b3goKSxpPXIudmlld0JveCxvPWMubGFzdFBvc1swXSxzPWMubGFzdFBvc1sx XSxsPU1hdGguZXhwKDUqbi8oaVszXS1pWzFdKSksaD1vLyhpWzJdLWlbMF0p KihhWzJdLWFbMF0pK2FbMF0sZj1zLyhpWzNdLWlbMV0pKihhWzNdLWFbMV0p K2FbMV07cmV0dXJuIGFbMF09KGFbMF0taCkqbCtoLGFbMl09KGFbMl0taCkq bCtoLGFbMV09KGFbMV0tZikqbCtmLGFbM109KGFbM10tZikqbCtmLHQuc2V0 UmFuZ2VzKGEpLGMubGFzdElucHV0VGltZT1EYXRlLm5vdygpLHUoKSx0LmNh bWVyYUNoYW5nZWQoKSx0LmhhbmRsZUFubm90YXRpb25zKCksdC5yZWxheW91 dENhbGxiYWNrKCksITB9LCEwKSxjfX0seyIuLi9jYXJ0ZXNpYW4vY29uc3Rh bnRzIjo3NzEsImhhcy1wYXNzaXZlLWV2ZW50cyI6NDEzLCJtb3VzZS1jaGFu Z2UiOjQzNywibW91c2UtZXZlbnQtb2Zmc2V0Ijo0MzgsIm1vdXNlLXdoZWVs Ijo0NDB9XSw4MDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL2xpYi9zdHIy cmdiYXJyYXkiKTtmdW5jdGlvbiBpKHQpe3RoaXMuc2NlbmU9dCx0aGlzLmds PXQuZ2wsdGhpcy5waXhlbFJhdGlvPXQucGl4ZWxSYXRpbyx0aGlzLnNjcmVl bkJveD1bMCwwLDEsMV0sdGhpcy52aWV3Qm94PVswLDAsMSwxXSx0aGlzLmRh dGFCb3g9Wy0xLC0xLDEsMV0sdGhpcy5ib3JkZXJMaW5lRW5hYmxlPVshMSwh MSwhMSwhMV0sdGhpcy5ib3JkZXJMaW5lV2lkdGg9WzEsMSwxLDFdLHRoaXMu Ym9yZGVyTGluZUNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwx XSxbMCwwLDAsMV1dLHRoaXMudGlja3M9W1tdLFtdXSx0aGlzLnRpY2tFbmFi bGU9WyEwLCEwLCExLCExXSx0aGlzLnRpY2tQYWQ9WzE1LDE1LDE1LDE1XSx0 aGlzLnRpY2tBbmdsZT1bMCwwLDAsMF0sdGhpcy50aWNrQ29sb3I9W1swLDAs MCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy50aWNr TWFya0xlbmd0aD1bMCwwLDAsMF0sdGhpcy50aWNrTWFya1dpZHRoPVswLDAs MCwwXSx0aGlzLnRpY2tNYXJrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0s WzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5sYWJlbHM9WyJ4IiwieSJdLHRo aXMubGFiZWxFbmFibGU9WyEwLCEwLCExLCExXSx0aGlzLmxhYmVsQW5nbGU9 WzAsTWF0aC5QSS8yLDAsMypNYXRoLlBJLzJdLHRoaXMubGFiZWxQYWQ9WzE1 LDE1LDE1LDE1XSx0aGlzLmxhYmVsU2l6ZT1bMTIsMTJdLHRoaXMubGFiZWxG b250PVsic2Fucy1zZXJpZiIsInNhbnMtc2VyaWYiXSx0aGlzLmxhYmVsQ29s b3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0s dGhpcy50aXRsZT0iIix0aGlzLnRpdGxlRW5hYmxlPSEwLHRoaXMudGl0bGVD ZW50ZXI9WzAsMCwwLDBdLHRoaXMudGl0bGVBbmdsZT0wLHRoaXMudGl0bGVD b2xvcj1bMCwwLDAsMV0sdGhpcy50aXRsZUZvbnQ9InNhbnMtc2VyaWYiLHRo aXMudGl0bGVTaXplPTE4LHRoaXMuZ3JpZExpbmVFbmFibGU9WyEwLCEwXSx0 aGlzLmdyaWRMaW5lQ29sb3I9W1swLDAsMCwuNV0sWzAsMCwwLC41XV0sdGhp cy5ncmlkTGluZVdpZHRoPVsxLDFdLHRoaXMuemVyb0xpbmVFbmFibGU9WyEw LCEwXSx0aGlzLnplcm9MaW5lV2lkdGg9WzEsMV0sdGhpcy56ZXJvTGluZUNv bG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmJvcmRlckNvbG9yPVsw LDAsMCwwXSx0aGlzLmJhY2tncm91bmRDb2xvcj1bMCwwLDAsMF0sdGhpcy5z dGF0aWM9dGhpcy5zY2VuZS5zdGF0aWNQbG90fXZhciBvPWkucHJvdG90eXBl LHM9WyJ4YXhpcyIsInlheGlzIl07by5tZXJnZT1mdW5jdGlvbih0KXt2YXIg ZSxyLG4saSxvLGwsYyx1LGgsZixwO2Zvcih0aGlzLnRpdGxlRW5hYmxlPSEx LHRoaXMuYmFja2dyb3VuZENvbG9yPWEodC5wbG90X2JnY29sb3IpLGY9MDtm PDI7KytmKXt2YXIgZD0oZT1zW2ZdKS5jaGFyQXQoMCk7Zm9yKG49KHI9dFt0 aGlzLnNjZW5lW2VdLl9uYW1lXSkudGl0bGUudGV4dD09PXRoaXMuc2NlbmUu ZnVsbExheW91dC5fZGZsdFRpdGxlW2RdPyIiOnIudGl0bGUudGV4dCxwPTA7 cDw9MjtwKz0yKXRoaXMubGFiZWxFbmFibGVbZitwXT0hMSx0aGlzLmxhYmVs c1tmK3BdPW4sdGhpcy5sYWJlbENvbG9yW2YrcF09YShyLnRpdGxlLmZvbnQu Y29sb3IpLHRoaXMubGFiZWxGb250W2YrcF09ci50aXRsZS5mb250LmZhbWls eSx0aGlzLmxhYmVsU2l6ZVtmK3BdPXIudGl0bGUuZm9udC5zaXplLHRoaXMu bGFiZWxQYWRbZitwXT10aGlzLmdldExhYmVsUGFkKGUsciksdGhpcy50aWNr RW5hYmxlW2YrcF09ITEsdGhpcy50aWNrQ29sb3JbZitwXT1hKChyLnRpY2tm b250fHx7fSkuY29sb3IpLHRoaXMudGlja0FuZ2xlW2YrcF09ImF1dG8iPT09 ci50aWNrYW5nbGU/MDpNYXRoLlBJKi1yLnRpY2thbmdsZS8xODAsdGhpcy50 aWNrUGFkW2YrcF09dGhpcy5nZXRUaWNrUGFkKHIpLHRoaXMudGlja01hcmtM ZW5ndGhbZitwXT0wLHRoaXMudGlja01hcmtXaWR0aFtmK3BdPXIudGlja3dp ZHRofHwwLHRoaXMudGlja01hcmtDb2xvcltmK3BdPWEoci50aWNrY29sb3Ip LHRoaXMuYm9yZGVyTGluZUVuYWJsZVtmK3BdPSExLHRoaXMuYm9yZGVyTGlu ZUNvbG9yW2YrcF09YShyLmxpbmVjb2xvciksdGhpcy5ib3JkZXJMaW5lV2lk dGhbZitwXT1yLmxpbmV3aWR0aHx8MDtjPXRoaXMuaGFzU2hhcmVkQXhpcyhy KSxvPXRoaXMuaGFzQXhpc0luRGZsdFBvcyhlLHIpJiYhYyxsPXRoaXMuaGFz QXhpc0luQWx0clBvcyhlLHIpJiYhYyxpPXIubWlycm9yfHwhMSx1PWM/LTEh PT1TdHJpbmcoaSkuaW5kZXhPZigiYWxsIik6ISFpLGg9Yz8iYWxsdGlja3Mi PT09aTotMSE9PVN0cmluZyhpKS5pbmRleE9mKCJ0aWNrcyIpLG8/dGhpcy5s YWJlbEVuYWJsZVtmXT0hMDpsJiYodGhpcy5sYWJlbEVuYWJsZVtmKzJdPSEw KSxvP3RoaXMudGlja0VuYWJsZVtmXT1yLnNob3d0aWNrbGFiZWxzOmwmJih0 aGlzLnRpY2tFbmFibGVbZisyXT1yLnNob3d0aWNrbGFiZWxzKSwob3x8dSkm Jih0aGlzLmJvcmRlckxpbmVFbmFibGVbZl09ci5zaG93bGluZSksKGx8fHUp JiYodGhpcy5ib3JkZXJMaW5lRW5hYmxlW2YrMl09ci5zaG93bGluZSksKG98 fGgpJiYodGhpcy50aWNrTWFya0xlbmd0aFtmXT10aGlzLmdldFRpY2tNYXJr TGVuZ3RoKHIpKSwobHx8aCkmJih0aGlzLnRpY2tNYXJrTGVuZ3RoW2YrMl09 dGhpcy5nZXRUaWNrTWFya0xlbmd0aChyKSksdGhpcy5ncmlkTGluZUVuYWJs ZVtmXT1yLnNob3dncmlkLHRoaXMuZ3JpZExpbmVDb2xvcltmXT1hKHIuZ3Jp ZGNvbG9yKSx0aGlzLmdyaWRMaW5lV2lkdGhbZl09ci5ncmlkd2lkdGgsdGhp cy56ZXJvTGluZUVuYWJsZVtmXT1yLnplcm9saW5lLHRoaXMuemVyb0xpbmVD b2xvcltmXT1hKHIuemVyb2xpbmVjb2xvciksdGhpcy56ZXJvTGluZVdpZHRo W2ZdPXIuemVyb2xpbmV3aWR0aH19LG8uaGFzU2hhcmVkQXhpcz1mdW5jdGlv bih0KXt2YXIgZT10aGlzLnNjZW5lLHI9ZS5mdWxsTGF5b3V0Ll9zdWJwbG90 cy5nbDJkO3JldHVybiAwIT09bi5maW5kU3VicGxvdHNXaXRoQXhpcyhyLHQp LmluZGV4T2YoZS5pZCl9LG8uaGFzQXhpc0luRGZsdFBvcz1mdW5jdGlvbih0 LGUpe3ZhciByPWUuc2lkZTtyZXR1cm4ieGF4aXMiPT09dD8iYm90dG9tIj09 PXI6InlheGlzIj09PXQ/ImxlZnQiPT09cjp2b2lkIDB9LG8uaGFzQXhpc0lu QWx0clBvcz1mdW5jdGlvbih0LGUpe3ZhciByPWUuc2lkZTtyZXR1cm4ieGF4 aXMiPT09dD8idG9wIj09PXI6InlheGlzIj09PXQ/InJpZ2h0Ij09PXI6dm9p ZCAwfSxvLmdldExhYmVsUGFkPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS50aXRs ZS5mb250LnNpemUsbj1lLnNob3d0aWNrbGFiZWxzO3JldHVybiJ4YXhpcyI9 PT10PyJ0b3AiPT09ZS5zaWRlP3IqKDEuNSsobj8xOjApKS0xMDpyKigxLjUr KG4/LjU6MCkpLTEwOiJ5YXhpcyI9PT10PyJyaWdodCI9PT1lLnNpZGU/MTAr ciooMS41KyhuPzE6LjUpKToxMCtyKigxLjUrKG4/LjU6MCkpOnZvaWQgMH0s by5nZXRUaWNrUGFkPWZ1bmN0aW9uKHQpe3JldHVybiJvdXRzaWRlIj09PXQu dGlja3M/MTArdC50aWNrbGVuOjE1fSxvLmdldFRpY2tNYXJrTGVuZ3RoPWZ1 bmN0aW9uKHQpe2lmKCF0LnRpY2tzKXJldHVybiAwO3ZhciBlPXQudGlja2xl bjtyZXR1cm4iaW5zaWRlIj09PXQudGlja3M/LWU6ZX0sZS5leHBvcnRzPWZ1 bmN0aW9uKHQpe3JldHVybiBuZXcgaSh0KX19LHsiLi4vLi4vbGliL3N0cjJy Z2JhcnJheSI6NzQwLCIuLi9jYXJ0ZXNpYW4vYXhlcyI6NzY1fV0sODAzOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bs b3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxhPXQoIi4vc2NlbmUy ZCIpLGk9dCgiLi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2Nv bnN0YW50cy94bWxuc19uYW1lc3BhY2VzIikscz10KCIuLi9jYXJ0ZXNpYW4v Y29uc3RhbnRzIiksbD10KCIuLi9jYXJ0ZXNpYW4iKSxjPXQoIi4uLy4uL2Nv bXBvbmVudHMvZngvbGF5b3V0X2F0dHJpYnV0ZXMiKSx1PXQoIi4uL2dldF9k YXRhIikuZ2V0U3VicGxvdERhdGE7ci5uYW1lPSJnbDJkIixyLmF0dHI9WyJ4 YXhpcyIsInlheGlzIl0sci5pZFJvb3Q9WyJ4IiwieSJdLHIuaWRSZWdleD1z LmlkUmVnZXgsci5hdHRyUmVnZXg9cy5hdHRyUmVnZXgsci5hdHRyaWJ1dGVz PXQoIi4uL2NhcnRlc2lhbi9hdHRyaWJ1dGVzIiksci5zdXBwbHlMYXlvdXRE ZWZhdWx0cz1mdW5jdGlvbih0LGUscil7ZS5faGFzKCJjYXJ0ZXNpYW4iKXx8 bC5zdXBwbHlMYXlvdXREZWZhdWx0cyh0LGUscil9LHIubGF5b3V0QXR0ck92 ZXJyaWRlcz1uKGwubGF5b3V0QXR0cmlidXRlcywicGxvdCIsImZyb20tcm9v dCIpLHIuYmFzZUxheW91dEF0dHJPdmVycmlkZXM9bih7cGxvdF9iZ2NvbG9y OmkucGxvdF9iZ2NvbG9yLGhvdmVybGFiZWw6Yy5ob3ZlcmxhYmVsfSwicGxv dCIsIm5lc3RlZCIpLHIucGxvdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5f ZnVsbExheW91dCxyPXQuX2Z1bGxEYXRhLG49ZS5fc3VicGxvdHMuZ2wyZCxp PTA7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV0scz1lLl9wbG90c1tvXSxs PXUociwiZ2wyZCIsbyksYz1zLl9zY2VuZTJkO3ZvaWQgMD09PWMmJihjPW5l dyBhKHtpZDpvLGdyYXBoRGl2OnQsY29udGFpbmVyOnQucXVlcnlTZWxlY3Rv cigiLmdsLWNvbnRhaW5lciIpLHN0YXRpY1Bsb3Q6dC5fY29udGV4dC5zdGF0 aWNQbG90LHBsb3RHbFBpeGVsUmF0aW86dC5fY29udGV4dC5wbG90R2xQaXhl bFJhdGlvfSxlKSxzLl9zY2VuZTJkPWMpLGMucGxvdChsLHQuY2FsY2RhdGEs ZSx0LmxheW91dCl9fSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2 YXIgYT1uLl9zdWJwbG90cy5nbDJkfHxbXSxpPTA7aTxhLmxlbmd0aDtpKysp e3ZhciBvPWFbaV0scz1uLl9wbG90c1tvXTtpZihzLl9zY2VuZTJkKTA9PT11 KHQsImdsMmQiLG8pLmxlbmd0aCYmKHMuX3NjZW5lMmQuZGVzdHJveSgpLGRl bGV0ZSBuLl9wbG90c1tvXSl9bC5jbGVhbi5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9LHIuZHJhd0ZyYW1ld29yaz1mdW5jdGlvbih0KXt0Ll9jb250ZXh0LnN0 YXRpY1Bsb3R8fGwuZHJhd0ZyYW1ld29yayh0KX0sci50b1NWRz1mdW5jdGlv bih0KXtmb3IodmFyIGU9dC5fZnVsbExheW91dCxyPWUuX3N1YnBsb3RzLmds MmQsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgYT1lLl9wbG90c1tyW25dXS5f c2NlbmUyZCxpPWEudG9JbWFnZSgicG5nIik7ZS5fZ2xpbWFnZXMuYXBwZW5k KCJzdmc6aW1hZ2UiKS5hdHRyKHt4bWxuczpvLnN2ZywieGxpbms6aHJlZiI6 aSx4OjAseTowLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHByZXNlcnZl QXNwZWN0UmF0aW86Im5vbmUifSksYS5kZXN0cm95KCl9fSxyLnVwZGF0ZUZ4 PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fc3Vi cGxvdHMuZ2wyZCxuPTA7bjxyLmxlbmd0aDtuKyspe2UuX3Bsb3RzW3Jbbl1d Ll9zY2VuZTJkLnVwZGF0ZUZ4KGUuZHJhZ21vZGUpfX19LHsiLi4vLi4vY29t cG9uZW50cy9meC9sYXlvdXRfYXR0cmlidXRlcyI6NjMxLCIuLi8uLi9jb25z dGFudHMveG1sbnNfbmFtZXNwYWNlcyI6Njk0LCIuLi8uLi9wbG90X2FwaS9l ZGl0X3R5cGVzIjo3NDgsIi4uL2NhcnRlc2lhbiI6Nzc2LCIuLi9jYXJ0ZXNp YW4vYXR0cmlidXRlcyI6NzYzLCIuLi9jYXJ0ZXNpYW4vY29uc3RhbnRzIjo3 NzEsIi4uL2dldF9kYXRhIjo4MDAsIi4uL2xheW91dF9hdHRyaWJ1dGVzIjo4 MTcsIi4vc2NlbmUyZCI6ODA0fV0sODA0OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuLGEsaT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgi Li4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxzPXQoIi4uLy4uL2NvbXBv bmVudHMvZngiKSxsPXQoImdsLXBsb3QyZCIpLGM9dCgiZ2wtc3Bpa2VzMmQi KSx1PXQoImdsLXNlbGVjdC1ib3giKSxoPXQoIndlYmdsLWNvbnRleHQiKSxm PXQoIi4vY29udmVydCIpLHA9dCgiLi9jYW1lcmEiKSxkPXQoIi4uLy4uL2xp Yi9zaG93X25vX3dlYmdsX21zZyIpLGc9dCgiLi4vY2FydGVzaWFuL2NvbnN0 cmFpbnRzIiksdj1nLmVuZm9yY2UsbT1nLmNsZWFuLHk9dCgiLi4vY2FydGVz aWFuL2F1dG9yYW5nZSIpLmRvQXV0b1JhbmdlLHg9WyJ4YXhpcyIsInlheGlz Il0sYj10KCIuLi9jYXJ0ZXNpYW4vY29uc3RhbnRzIikuU1VCUExPVF9QQVRU RVJOO2Z1bmN0aW9uIF8odCxlKXt0aGlzLmNvbnRhaW5lcj10LmNvbnRhaW5l cix0aGlzLmdyYXBoRGl2PXQuZ3JhcGhEaXYsdGhpcy5waXhlbFJhdGlvPXQu cGxvdEdsUGl4ZWxSYXRpb3x8d2luZG93LmRldmljZVBpeGVsUmF0aW8sdGhp cy5pZD10LmlkLHRoaXMuc3RhdGljUGxvdD0hIXQuc3RhdGljUGxvdCx0aGlz LnNjcm9sbFpvb209dGhpcy5ncmFwaERpdi5fY29udGV4dC5fc2Nyb2xsWm9v bS5jYXJ0ZXNpYW4sdGhpcy5mdWxsRGF0YT1udWxsLHRoaXMudXBkYXRlUmVm cyhlKSx0aGlzLm1ha2VGcmFtZXdvcmsoKSx0aGlzLnN0b3BwZWR8fCh0aGlz LmdscGxvdE9wdGlvbnM9Zih0aGlzKSx0aGlzLmdscGxvdE9wdGlvbnMubWVy Z2UoZSksdGhpcy5nbHBsb3Q9bCh0aGlzLmdscGxvdE9wdGlvbnMpLHRoaXMu Y2FtZXJhPXAodGhpcyksdGhpcy50cmFjZXM9e30sdGhpcy5zcGlrZXM9Yyh0 aGlzLmdscGxvdCksdGhpcy5zZWxlY3RCb3g9dSh0aGlzLmdscGxvdCx7aW5u ZXJGaWxsOiExLG91dGVyRmlsbDohMH0pLHRoaXMubGFzdEJ1dHRvblN0YXRl PTAsdGhpcy5waWNrUmVzdWx0PW51bGwsdGhpcy5pc01vdXNlT3Zlcj0hMCx0 aGlzLnN0b3BwZWQ9ITEsdGhpcy5yZWRyYXc9dGhpcy5kcmF3LmJpbmQodGhp cyksdGhpcy5yZWRyYXcoKSl9ZS5leHBvcnRzPV87dmFyIHc9Xy5wcm90b3R5 cGU7dy5tYWtlRnJhbWV3b3JrPWZ1bmN0aW9uKCl7aWYodGhpcy5zdGF0aWNQ bG90KXtpZighKGF8fChuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZh cyIpLGE9aCh7Y2FudmFzOm4scHJlc2VydmVEcmF3aW5nQnVmZmVyOiExLHBy ZW11bHRpcGxpZWRBbHBoYTohMCxhbnRpYWxpYXM6ITB9KSkpKXRocm93IG5l dyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgc3RhdGljIGNhbnZhcy9jb250ZXh0 IGZvciBpbWFnZSBzZXJ2ZXIiKTt0aGlzLmNhbnZhcz1uLHRoaXMuZ2w9YX1l bHNle3ZhciB0PXRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi5nbC1j YW52YXMtZm9jdXMiKSxlPWgoe2NhbnZhczp0LHByZXNlcnZlRHJhd2luZ0J1 ZmZlcjohMCxwcmVtdWx0aXBsaWVkQWxwaGE6ITB9KTtpZighZSlyZXR1cm4g ZCh0aGlzKSx2b2lkKHRoaXMuc3RvcHBlZD0hMCk7dGhpcy5jYW52YXM9dCx0 aGlzLmdsPWV9dmFyIHI9dGhpcy5jYW52YXM7ci5zdHlsZS53aWR0aD0iMTAw JSIsci5zdHlsZS5oZWlnaHQ9IjEwMCUiLHIuc3R5bGUucG9zaXRpb249ImFi c29sdXRlIixyLnN0eWxlLnRvcD0iMHB4IixyLnN0eWxlLmxlZnQ9IjBweCIs ci5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0ibm9uZSIsdGhpcy51cGRhdGVT aXplKHIpLHIuY2xhc3NOYW1lKz0iIHVzZXItc2VsZWN0LW5vbmUiO3ZhciBp PXRoaXMuc3ZnQ29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKTtpLnN0eWxlLnBv c2l0aW9uPSJhYnNvbHV0ZSIsaS5zdHlsZS50b3A9aS5zdHlsZS5sZWZ0PSIw cHgiLGkuc3R5bGUud2lkdGg9aS5zdHlsZS5oZWlnaHQ9IjEwMCUiLGkuc3R5 bGVbInotaW5kZXgiXT0yMCxpLnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJu b25lIjt2YXIgbz10aGlzLm1vdXNlQ29udGFpbmVyPWRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoImRpdiIpO28uc3R5bGUucG9zaXRpb249ImFic29sdXRlIixv LnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJhdXRvIix0aGlzLnBpY2tDYW52 YXM9dGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcigiLmdsLWNhbnZhcy1w aWNrIik7dmFyIHM9dGhpcy5jb250YWluZXI7cy5hcHBlbmRDaGlsZChpKSxz LmFwcGVuZENoaWxkKG8pO3ZhciBsPXRoaXM7by5hZGRFdmVudExpc3RlbmVy KCJtb3VzZW91dCIsZnVuY3Rpb24oKXtsLmlzTW91c2VPdmVyPSExLGwudW5o b3ZlcigpfSksby5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLGZ1bmN0 aW9uKCl7bC5pc01vdXNlT3Zlcj0hMH0pfSx3LnRvSW1hZ2U9ZnVuY3Rpb24o dCl7dHx8KHQ9InBuZyIpLHRoaXMuc3RvcHBlZD0hMCx0aGlzLnN0YXRpY1Bs b3QmJnRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKG4pLHRoaXMudXBkYXRl U2l6ZSh0aGlzLmNhbnZhcyk7dmFyIGU9dGhpcy5nbHBsb3QuZ2wscj1lLmRy YXdpbmdCdWZmZXJXaWR0aCxhPWUuZHJhd2luZ0J1ZmZlckhlaWdodDtlLmNs ZWFyQ29sb3IoMSwxLDEsMCksZS5jbGVhcihlLkNPTE9SX0JVRkZFUl9CSVR8 ZS5ERVBUSF9CVUZGRVJfQklUKSx0aGlzLmdscGxvdC5zZXREaXJ0eSgpLHRo aXMuZ2xwbG90LmRyYXcoKSxlLmJpbmRGcmFtZWJ1ZmZlcihlLkZSQU1FQlVG RkVSLG51bGwpO3ZhciBpPW5ldyBVaW50OEFycmF5KHIqYSo0KTtlLnJlYWRQ aXhlbHMoMCwwLHIsYSxlLlJHQkEsZS5VTlNJR05FRF9CWVRFLGkpO2Zvcih2 YXIgbz0wLHM9YS0xO288czsrK28sLS1zKWZvcih2YXIgbD0wO2w8cjsrK2wp Zm9yKHZhciBjPTA7Yzw0OysrYyl7dmFyIHU9aVs0KihyKm8rbCkrY107aVs0 KihyKm8rbCkrY109aVs0KihyKnMrbCkrY10saVs0KihyKnMrbCkrY109dX12 YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtoLndpZHRo PXIsaC5oZWlnaHQ9YTt2YXIgZixwPWguZ2V0Q29udGV4dCgiMmQiKSxkPXAu Y3JlYXRlSW1hZ2VEYXRhKHIsYSk7c3dpdGNoKGQuZGF0YS5zZXQoaSkscC5w dXRJbWFnZURhdGEoZCwwLDApLHQpe2Nhc2UianBlZyI6Zj1oLnRvRGF0YVVS TCgiaW1hZ2UvanBlZyIpO2JyZWFrO2Nhc2Uid2VicCI6Zj1oLnRvRGF0YVVS TCgiaW1hZ2Uvd2VicCIpO2JyZWFrO2RlZmF1bHQ6Zj1oLnRvRGF0YVVSTCgi aW1hZ2UvcG5nIil9cmV0dXJuIHRoaXMuc3RhdGljUGxvdCYmdGhpcy5jb250 YWluZXIucmVtb3ZlQ2hpbGQobiksZn0sdy51cGRhdGVTaXplPWZ1bmN0aW9u KHQpe3R8fCh0PXRoaXMuY2FudmFzKTt2YXIgZT10aGlzLnBpeGVsUmF0aW8s cj10aGlzLmZ1bGxMYXlvdXQsbj1yLndpZHRoLGE9ci5oZWlnaHQsaT0wfE1h dGguY2VpbChlKm4pLG89MHxNYXRoLmNlaWwoZSphKTtyZXR1cm4gdC53aWR0 aD09PWkmJnQuaGVpZ2h0PT09b3x8KHQud2lkdGg9aSx0LmhlaWdodD1vKSx0 fSx3LmNvbXB1dGVUaWNrTWFya3M9ZnVuY3Rpb24oKXt0aGlzLnhheGlzLnNl dFNjYWxlKCksdGhpcy55YXhpcy5zZXRTY2FsZSgpO2Zvcih2YXIgdD1bby5j YWxjVGlja3ModGhpcy54YXhpcyksby5jYWxjVGlja3ModGhpcy55YXhpcyld LGU9MDtlPDI7KytlKWZvcih2YXIgcj0wO3I8dFtlXS5sZW5ndGg7KytyKXRb ZV1bcl0udGV4dD10W2VdW3JdLnRleHQrIiI7cmV0dXJuIHR9LHcudXBkYXRl UmVmcz1mdW5jdGlvbih0KXt0aGlzLmZ1bGxMYXlvdXQ9dDt2YXIgZT10aGlz LmlkLm1hdGNoKGIpLHI9InhheGlzIitlWzFdLG49InlheGlzIitlWzJdO3Ro aXMueGF4aXM9dGhpcy5mdWxsTGF5b3V0W3JdLHRoaXMueWF4aXM9dGhpcy5m dWxsTGF5b3V0W25dfSx3LnJlbGF5b3V0Q2FsbGJhY2s9ZnVuY3Rpb24oKXt2 YXIgdD10aGlzLmdyYXBoRGl2LGU9dGhpcy54YXhpcyxyPXRoaXMueWF4aXMs bj10LmxheW91dCxhPXt9LG89YVtlLl9uYW1lKyIucmFuZ2UiXT1lLnJhbmdl LnNsaWNlKCkscz1hW3IuX25hbWUrIi5yYW5nZSJdPXIucmFuZ2Uuc2xpY2Uo KTthW2UuX25hbWUrIi5hdXRvcmFuZ2UiXT1lLmF1dG9yYW5nZSxhW3IuX25h bWUrIi5hdXRvcmFuZ2UiXT1yLmF1dG9yYW5nZSxpLmNhbGwoIl9zdG9yZURp cmVjdEdVSUVkaXQiLHQubGF5b3V0LHQuX2Z1bGxMYXlvdXQuX3ByZUdVSSxh KTt2YXIgbD1uW2UuX25hbWVdO2wucmFuZ2U9byxsLmF1dG9yYW5nZT1lLmF1 dG9yYW5nZTt2YXIgYz1uW3IuX25hbWVdO2MucmFuZ2U9cyxjLmF1dG9yYW5n ZT1yLmF1dG9yYW5nZSxhLmxhc3RJbnB1dFRpbWU9dGhpcy5jYW1lcmEubGFz dElucHV0VGltZSx0LmVtaXQoInBsb3RseV9yZWxheW91dCIsYSl9LHcuY2Ft ZXJhQ2hhbmdlZD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY2FtZXJhO3RoaXMu Z2xwbG90LnNldERhdGFCb3godGhpcy5jYWxjRGF0YUJveCgpKTt2YXIgZT10 aGlzLmNvbXB1dGVUaWNrTWFya3MoKTsoZnVuY3Rpb24odCxlKXtmb3IodmFy IHI9MDtyPDI7KytyKXt2YXIgbj10W3JdLGE9ZVtyXTtpZihuLmxlbmd0aCE9 PWEubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7Kytp KWlmKG5baV0ueCE9PWFbaV0ueClyZXR1cm4hMH1yZXR1cm4hMX0pKGUsdGhp cy5nbHBsb3RPcHRpb25zLnRpY2tzKSYmKHRoaXMuZ2xwbG90T3B0aW9ucy50 aWNrcz1lLHRoaXMuZ2xwbG90T3B0aW9ucy5kYXRhQm94PXQuZGF0YUJveCx0 aGlzLmdscGxvdC51cGRhdGUodGhpcy5nbHBsb3RPcHRpb25zKSx0aGlzLmhh bmRsZUFubm90YXRpb25zKCkpfSx3LmhhbmRsZUFubm90YXRpb25zPWZ1bmN0 aW9uKCl7Zm9yKHZhciB0PXRoaXMuZ3JhcGhEaXYsZT10aGlzLmZ1bGxMYXlv dXQuYW5ub3RhdGlvbnMscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3Jd O24ueHJlZj09PXRoaXMueGF4aXMuX2lkJiZuLnlyZWY9PT10aGlzLnlheGlz Ll9pZCYmaS5nZXRDb21wb25lbnRNZXRob2QoImFubm90YXRpb25zIiwiZHJh d09uZSIpKHQscil9fSx3LmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLmds cGxvdCl7dmFyIHQ9dGhpcy50cmFjZXM7dCYmT2JqZWN0LmtleXModCkubWFw KGZ1bmN0aW9uKGUpe3RbZV0uZGlzcG9zZSgpLGRlbGV0ZSB0W2VdfSksdGhp cy5nbHBsb3QuZGlzcG9zZSgpLHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxk KHRoaXMuc3ZnQ29udGFpbmVyKSx0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGls ZCh0aGlzLm1vdXNlQ29udGFpbmVyKSx0aGlzLmZ1bGxEYXRhPW51bGwsdGhp cy5nbHBsb3Q9bnVsbCx0aGlzLnN0b3BwZWQ9ITAsdGhpcy5jYW1lcmEubW91 c2VMaXN0ZW5lci5lbmFibGVkPSExLHRoaXMubW91c2VDb250YWluZXIucmVt b3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLHRoaXMuY2FtZXJhLndoZWVsTGlz dGVuZXIpLHRoaXMuY2FtZXJhPW51bGx9fSx3LnBsb3Q9ZnVuY3Rpb24odCxl LHIpe3ZhciBuPXRoaXMuZ2xwbG90O3RoaXMudXBkYXRlUmVmcyhyKSx0aGlz LnhheGlzLmNsZWFyQ2FsYygpLHRoaXMueWF4aXMuY2xlYXJDYWxjKCksdGhp cy51cGRhdGVUcmFjZXModCxlKSx0aGlzLnVwZGF0ZUZ4KHIuZHJhZ21vZGUp O3ZhciBhPXIud2lkdGgsaT1yLmhlaWdodDt0aGlzLnVwZGF0ZVNpemUodGhp cy5jYW52YXMpO3ZhciBvPXRoaXMuZ2xwbG90T3B0aW9ucztvLm1lcmdlKHIp LG8uc2NyZWVuQm94PVswLDAsYSxpXTt2YXIgcz17X2Z1bGxMYXlvdXQ6e19h eGlzQ29uc3RyYWludEdyb3Vwczp0aGlzLmdyYXBoRGl2Ll9mdWxsTGF5b3V0 Ll9heGlzQ29uc3RyYWludEdyb3Vwcyx4YXhpczp0aGlzLnhheGlzLHlheGlz OnRoaXMueWF4aXN9fTttKHMsdGhpcy54YXhpcyksbShzLHRoaXMueWF4aXMp O3ZhciBsLGMsdT1yLl9zaXplLGg9dGhpcy54YXhpcy5kb21haW4sZj10aGlz LnlheGlzLmRvbWFpbjtmb3Ioby52aWV3Qm94PVt1LmwraFswXSp1LncsdS5i K2ZbMF0qdS5oLGEtdS5yLSgxLWhbMV0pKnUudyxpLXUudC0oMS1mWzFdKSp1 LmhdLHRoaXMubW91c2VDb250YWluZXIuc3R5bGUud2lkdGg9dS53KihoWzFd LWhbMF0pKyJweCIsdGhpcy5tb3VzZUNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9 dS5oKihmWzFdLWZbMF0pKyJweCIsdGhpcy5tb3VzZUNvbnRhaW5lci5oZWln aHQ9dS5oKihmWzFdLWZbMF0pLHRoaXMubW91c2VDb250YWluZXIuc3R5bGUu bGVmdD11LmwraFswXSp1LncrInB4Iix0aGlzLm1vdXNlQ29udGFpbmVyLnN0 eWxlLnRvcD11LnQrKDEtZlsxXSkqdS5oKyJweCIsYz0wO2M8MjsrK2MpKGw9 dGhpc1t4W2NdXSkuX2xlbmd0aD1vLnZpZXdCb3hbYysyXS1vLnZpZXdCb3hb Y10seSh0aGlzLmdyYXBoRGl2LGwpLGwuc2V0U2NhbGUoKTt2KHMpLG8udGlj a3M9dGhpcy5jb21wdXRlVGlja01hcmtzKCksby5kYXRhQm94PXRoaXMuY2Fs Y0RhdGFCb3goKSxvLm1lcmdlKHIpLG4udXBkYXRlKG8pLHRoaXMuZ2xwbG90 LmRyYXcoKX0sdy5jYWxjRGF0YUJveD1mdW5jdGlvbigpe3ZhciB0PXRoaXMu eGF4aXMsZT10aGlzLnlheGlzLHI9dC5yYW5nZSxuPWUucmFuZ2UsYT10LnIy bCxpPWUucjJsO3JldHVyblthKHJbMF0pLGkoblswXSksYShyWzFdKSxpKG5b MV0pXX0sdy5zZXRSYW5nZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy54YXhp cyxyPXRoaXMueWF4aXMsbj1lLmwycixhPXIubDJyO2UucmFuZ2U9W24odFsw XSksbih0WzJdKV0sci5yYW5nZT1bYSh0WzFdKSxhKHRbM10pXX0sdy51cGRh dGVUcmFjZXM9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsaT1PYmplY3Qua2V5 cyh0aGlzLnRyYWNlcyk7dGhpcy5mdWxsRGF0YT10O3Q6Zm9yKHI9MDtyPGku bGVuZ3RoO3IrKyl7dmFyIG89aVtyXSxzPXRoaXMudHJhY2VzW29dO2Zvcihu PTA7bjx0Lmxlbmd0aDtuKyspaWYoKGE9dFtuXSkudWlkPT09byYmYS50eXBl PT09cy50eXBlKWNvbnRpbnVlIHQ7cy5kaXNwb3NlKCksZGVsZXRlIHRoaXMu dHJhY2VzW29dfWZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe2E9dFtyXTt2YXIg bD1lW3JdLGM9dGhpcy50cmFjZXNbYS51aWRdO2M/Yy51cGRhdGUoYSxsKToo Yz1hLl9tb2R1bGUucGxvdCh0aGlzLGEsbCksdGhpcy50cmFjZXNbYS51aWRd PWMpfXRoaXMuZ2xwbG90Lm9iamVjdHMuc29ydChmdW5jdGlvbih0LGUpe3Jl dHVybiB0Ll90cmFjZS5pbmRleC1lLl90cmFjZS5pbmRleH0pfSx3LnVwZGF0 ZUZ4PWZ1bmN0aW9uKHQpeyJsYXNzbyI9PT10fHwic2VsZWN0Ij09PXQ/KHRo aXMucGlja0NhbnZhcy5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0ibm9uZSIs dGhpcy5tb3VzZUNvbnRhaW5lci5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0i bm9uZSIpOih0aGlzLnBpY2tDYW52YXMuc3R5bGVbInBvaW50ZXItZXZlbnRz Il09ImF1dG8iLHRoaXMubW91c2VDb250YWluZXIuc3R5bGVbInBvaW50ZXIt ZXZlbnRzIl09ImF1dG8iKSx0aGlzLm1vdXNlQ29udGFpbmVyLnN0eWxlLmN1 cnNvcj0icGFuIj09PXQ/Im1vdmUiOiJ6b29tIj09PXQ/ImNyb3NzaGFpciI6 bnVsbH0sdy5lbWl0UG9pbnRBY3Rpb249ZnVuY3Rpb24odCxlKXtmb3IodmFy IHIsbj10LnRyYWNlLnVpZCxhPXQucG9pbnRJbmRleCxpPTA7aTx0aGlzLmZ1 bGxEYXRhLmxlbmd0aDtpKyspdGhpcy5mdWxsRGF0YVtpXS51aWQ9PT1uJiYo cj10aGlzLmZ1bGxEYXRhW2ldKTt2YXIgbz17eDp0LnRyYWNlQ29vcmRbMF0s eTp0LnRyYWNlQ29vcmRbMV0sY3VydmVOdW1iZXI6ci5pbmRleCxwb2ludE51 bWJlcjphLGRhdGE6ci5faW5wdXQsZnVsbERhdGE6dGhpcy5mdWxsRGF0YSx4 YXhpczp0aGlzLnhheGlzLHlheGlzOnRoaXMueWF4aXN9O3MuYXBwZW5kQXJy YXlQb2ludFZhbHVlKG8scixhKSx0aGlzLmdyYXBoRGl2LmVtaXQoZSx7cG9p bnRzOltvXX0pfSx3LmRyYXc9ZnVuY3Rpb24oKXtpZighdGhpcy5zdG9wcGVk KXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZWRyYXcpO3ZhciB0PXRo aXMuZ2xwbG90LGU9dGhpcy5jYW1lcmEscj1lLm1vdXNlTGlzdGVuZXIsbj0x PT09dGhpcy5sYXN0QnV0dG9uU3RhdGUmJjA9PT1yLmJ1dHRvbnMsYT10aGlz LmZ1bGxMYXlvdXQ7dGhpcy5sYXN0QnV0dG9uU3RhdGU9ci5idXR0b25zLHRo aXMuY2FtZXJhQ2hhbmdlZCgpO3ZhciBpLG89ci54KnQucGl4ZWxSYXRpbyxs PXRoaXMuY2FudmFzLmhlaWdodC10LnBpeGVsUmF0aW8qci55O2lmKGUuYm94 RW5hYmxlZCYmInpvb20iPT09YS5kcmFnbW9kZSl7dGhpcy5zZWxlY3RCb3gu ZW5hYmxlZD0hMDtmb3IodmFyIGM9dGhpcy5zZWxlY3RCb3guc2VsZWN0Qm94 PVtNYXRoLm1pbihlLmJveFN0YXJ0WzBdLGUuYm94RW5kWzBdKSxNYXRoLm1p bihlLmJveFN0YXJ0WzFdLGUuYm94RW5kWzFdKSxNYXRoLm1heChlLmJveFN0 YXJ0WzBdLGUuYm94RW5kWzBdKSxNYXRoLm1heChlLmJveFN0YXJ0WzFdLGUu Ym94RW5kWzFdKV0sdT0wO3U8Mjt1KyspZS5ib3hTdGFydFt1XT09PWUuYm94 RW5kW3VdJiYoY1t1XT10LmRhdGFCb3hbdV0sY1t1KzJdPXQuZGF0YUJveFt1 KzJdKTt0LnNldERpcnR5KCl9ZWxzZSBpZighZS5wYW5uaW5nJiZ0aGlzLmlz TW91c2VPdmVyKXt0aGlzLnNlbGVjdEJveC5lbmFibGVkPSExO3ZhciBoPWEu X3NpemUsZj10aGlzLnhheGlzLmRvbWFpbixwPXRoaXMueWF4aXMuZG9tYWlu LGQ9KGk9dC5waWNrKG8vdC5waXhlbFJhdGlvK2gubCtmWzBdKmgudyxsL3Qu cGl4ZWxSYXRpby0oaC50KygxLXBbMV0pKmguaCkpKSYmaS5vYmplY3QuX3Ry YWNlLmhhbmRsZVBpY2soaSk7aWYoZCYmbiYmdGhpcy5lbWl0UG9pbnRBY3Rp b24oZCwicGxvdGx5X2NsaWNrIiksaSYmInNraXAiIT09aS5vYmplY3QuX3Ry YWNlLmhvdmVyaW5mbyYmYS5ob3Zlcm1vZGUmJmQmJighdGhpcy5sYXN0UGlj a1Jlc3VsdHx8dGhpcy5sYXN0UGlja1Jlc3VsdC50cmFjZVVpZCE9PWQudHJh Y2UudWlkfHx0aGlzLmxhc3RQaWNrUmVzdWx0LmRhdGFDb29yZFswXSE9PWQu ZGF0YUNvb3JkWzBdfHx0aGlzLmxhc3RQaWNrUmVzdWx0LmRhdGFDb29yZFsx XSE9PWQuZGF0YUNvb3JkWzFdKSl7dmFyIGc9ZDt0aGlzLmxhc3RQaWNrUmVz dWx0PXt0cmFjZVVpZDpkLnRyYWNlP2QudHJhY2UudWlkOm51bGwsZGF0YUNv b3JkOmQuZGF0YUNvb3JkLnNsaWNlKCl9LHRoaXMuc3Bpa2VzLnVwZGF0ZSh7 Y2VudGVyOmkuZGF0YUNvb3JkfSksZy5zY3JlZW5Db29yZD1bKCh0LnZpZXdC b3hbMl0tdC52aWV3Qm94WzBdKSooaS5kYXRhQ29vcmRbMF0tdC5kYXRhQm94 WzBdKS8odC5kYXRhQm94WzJdLXQuZGF0YUJveFswXSkrdC52aWV3Qm94WzBd KS90LnBpeGVsUmF0aW8sKHRoaXMuY2FudmFzLmhlaWdodC0odC52aWV3Qm94 WzNdLXQudmlld0JveFsxXSkqKGkuZGF0YUNvb3JkWzFdLXQuZGF0YUJveFsx XSkvKHQuZGF0YUJveFszXS10LmRhdGFCb3hbMV0pLXQudmlld0JveFsxXSkv dC5waXhlbFJhdGlvXSx0aGlzLmVtaXRQb2ludEFjdGlvbihkLCJwbG90bHlf aG92ZXIiKTt2YXIgdj10aGlzLmZ1bGxEYXRhW2cudHJhY2UuaW5kZXhdfHx7 fSxtPWcucG9pbnRJbmRleCx5PXMuY2FzdEhvdmVyaW5mbyh2LGEsbSk7aWYo eSYmImFsbCIhPT15KXt2YXIgeD15LnNwbGl0KCIrIik7LTE9PT14LmluZGV4 T2YoIngiKSYmKGcudHJhY2VDb29yZFswXT12b2lkIDApLC0xPT09eC5pbmRl eE9mKCJ5IikmJihnLnRyYWNlQ29vcmRbMV09dm9pZCAwKSwtMT09PXguaW5k ZXhPZigieiIpJiYoZy50cmFjZUNvb3JkWzJdPXZvaWQgMCksLTE9PT14Lmlu ZGV4T2YoInRleHQiKSYmKGcudGV4dExhYmVsPXZvaWQgMCksLTE9PT14Lmlu ZGV4T2YoIm5hbWUiKSYmKGcubmFtZT12b2lkIDApfXMubG9uZUhvdmVyKHt4 Omcuc2NyZWVuQ29vcmRbMF0seTpnLnNjcmVlbkNvb3JkWzFdLHhMYWJlbDp0 aGlzLmhvdmVyRm9ybWF0dGVyKCJ4YXhpcyIsZy50cmFjZUNvb3JkWzBdKSx5 TGFiZWw6dGhpcy5ob3ZlckZvcm1hdHRlcigieWF4aXMiLGcudHJhY2VDb29y ZFsxXSksekxhYmVsOmcudHJhY2VDb29yZFsyXSx0ZXh0OmcudGV4dExhYmVs LG5hbWU6Zy5uYW1lLGNvbG9yOnMuY2FzdEhvdmVyT3B0aW9uKHYsbSwiYmdj b2xvciIpfHxnLmNvbG9yLGJvcmRlckNvbG9yOnMuY2FzdEhvdmVyT3B0aW9u KHYsbSwiYm9yZGVyY29sb3IiKSxmb250RmFtaWx5OnMuY2FzdEhvdmVyT3B0 aW9uKHYsbSwiZm9udC5mYW1pbHkiKSxmb250U2l6ZTpzLmNhc3RIb3Zlck9w dGlvbih2LG0sImZvbnQuc2l6ZSIpLGZvbnRDb2xvcjpzLmNhc3RIb3Zlck9w dGlvbih2LG0sImZvbnQuY29sb3IiKSxuYW1lTGVuZ3RoOnMuY2FzdEhvdmVy T3B0aW9uKHYsbSwibmFtZWxlbmd0aCIpLHRleHRBbGlnbjpzLmNhc3RIb3Zl ck9wdGlvbih2LG0sImFsaWduIil9LHtjb250YWluZXI6dGhpcy5zdmdDb250 YWluZXIsZ2Q6dGhpcy5ncmFwaERpdn0pfX1pfHx0aGlzLnVuaG92ZXIoKSx0 LmRyYXcoKX19LHcudW5ob3Zlcj1mdW5jdGlvbigpe3RoaXMubGFzdFBpY2tS ZXN1bHQmJih0aGlzLnNwaWtlcy51cGRhdGUoe30pLHRoaXMubGFzdFBpY2tS ZXN1bHQ9bnVsbCx0aGlzLmdyYXBoRGl2LmVtaXQoInBsb3RseV91bmhvdmVy Iikscy5sb25lVW5ob3Zlcih0aGlzLnN2Z0NvbnRhaW5lcikpfSx3LmhvdmVy Rm9ybWF0dGVyPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwIT09ZSl7dmFyIHI9 dGhpc1t0XTtyZXR1cm4gby50aWNrVGV4dChyLHIuYzJsKGUpLCJob3ZlciIp LnRleHR9fX0seyIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2xp Yi9zaG93X25vX3dlYmdsX21zZyI6NzM4LCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9jYXJ0ZXNp YW4vYXV0b3JhbmdlIjo3NjQsIi4uL2NhcnRlc2lhbi9jb25zdGFudHMiOjc3 MSwiLi4vY2FydGVzaWFuL2NvbnN0cmFpbnRzIjo3NzIsIi4vY2FtZXJhIjo4 MDEsIi4vY29udmVydCI6ODAyLCJnbC1wbG90MmQiOjI5MCwiZ2wtc2VsZWN0 LWJveCI6MzAyLCJnbC1zcGlrZXMyZCI6MzExLCJ3ZWJnbC1jb250ZXh0Ijo1 NTV9XSw4MDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGE9 dCgiLi4vLi4vY29tcG9uZW50cy9meC9sYXlvdXRfYXR0cmlidXRlcyIpLGk9 dCgiLi9zY2VuZSIpLG89dCgiLi4vZ2V0X2RhdGEiKS5nZXRTdWJwbG90RGF0 YSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgiLi4vLi4vY29uc3RhbnRzL3htbG5z X25hbWVzcGFjZXMiKTtyLm5hbWU9ImdsM2QiLHIuYXR0cj0ic2NlbmUiLHIu aWRSb290PSJzY2VuZSIsci5pZFJlZ2V4PXIuYXR0clJlZ2V4PXMuY291bnRl clJlZ2V4KCJzY2VuZSIpLHIuYXR0cmlidXRlcz10KCIuL2xheW91dC9hdHRy aWJ1dGVzIiksci5sYXlvdXRBdHRyaWJ1dGVzPXQoIi4vbGF5b3V0L2xheW91 dF9hdHRyaWJ1dGVzIiksci5iYXNlTGF5b3V0QXR0ck92ZXJyaWRlcz1uKHto b3ZlcmxhYmVsOmEuaG92ZXJsYWJlbH0sInBsb3QiLCJuZXN0ZWQiKSxyLnN1 cHBseUxheW91dERlZmF1bHRzPXQoIi4vbGF5b3V0L2RlZmF1bHRzIiksci5w bG90PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5f ZnVsbERhdGEsbj1lLl9zdWJwbG90cy5nbDNkLGE9MDthPG4ubGVuZ3RoO2Er Kyl7dmFyIHM9blthXSxsPW8ociwiZ2wzZCIscyksYz1lW3NdLHU9Yy5jYW1l cmEsaD1jLl9zY2VuZTtofHwoaD1uZXcgaSh7aWQ6cyxncmFwaERpdjp0LGNv bnRhaW5lcjp0LnF1ZXJ5U2VsZWN0b3IoIi5nbC1jb250YWluZXIiKSxzdGF0 aWNQbG90OnQuX2NvbnRleHQuc3RhdGljUGxvdCxwbG90R2xQaXhlbFJhdGlv OnQuX2NvbnRleHQucGxvdEdsUGl4ZWxSYXRpbyxjYW1lcmE6dX0sZSksYy5f c2NlbmU9aCksaC52aWV3SW5pdGlhbHx8KGgudmlld0luaXRpYWw9e3VwOnt4 OnUudXAueCx5OnUudXAueSx6OnUudXAuen0sZXllOnt4OnUuZXllLngseTp1 LmV5ZS55LHo6dS5leWUuen0sY2VudGVyOnt4OnUuY2VudGVyLngseTp1LmNl bnRlci55LHo6dS5jZW50ZXIuen19KSxoLnBsb3QobCxlLHQubGF5b3V0KX19 LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBhPW4uX3N1YnBs b3RzLmdsM2R8fFtdLGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIG89YVtpXTsh ZVtvXSYmbltvXS5fc2NlbmUmJihuW29dLl9zY2VuZS5kZXN0cm95KCksbi5f aW5mb2xheWVyJiZuLl9pbmZvbGF5ZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlv bi0iK28pLnJlbW92ZSgpKX19LHIudG9TVkc9ZnVuY3Rpb24odCl7Zm9yKHZh ciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90cy5nbDNkLG49ZS5fc2l6 ZSxhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBpPWVbclthXV0sbz1pLmRvbWFp bixzPWkuX3NjZW5lLGM9cy50b0ltYWdlKCJwbmciKTtlLl9nbGltYWdlcy5h cHBlbmQoInN2ZzppbWFnZSIpLmF0dHIoe3htbG5zOmwuc3ZnLCJ4bGluazpo cmVmIjpjLHg6bi5sK24udypvLnhbMF0seTpuLnQrbi5oKigxLW8ueVsxXSks d2lkdGg6bi53KihvLnhbMV0tby54WzBdKSxoZWlnaHQ6bi5oKihvLnlbMV0t by55WzBdKSxwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pLHMuZGVzdHJv eSgpfX0sci5jbGVhbklkPWZ1bmN0aW9uKHQpe2lmKHQubWF0Y2goL15zY2Vu ZVswLTldKiQvKSl7dmFyIGU9dC5zdWJzdHIoNSk7cmV0dXJuIjEiPT09ZSYm KGU9IiIpLCJzY2VuZSIrZX19LHIudXBkYXRlRng9ZnVuY3Rpb24odCl7Zm9y KHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90cy5nbDNkLG49MDtu PHIubGVuZ3RoO24rKyl7ZVtyW25dXS5fc2NlbmUudXBkYXRlRngoZS5kcmFn bW9kZSxlLmhvdmVybW9kZSl9fX0seyIuLi8uLi9jb21wb25lbnRzL2Z4L2xh eW91dF9hdHRyaWJ1dGVzIjo2MzEsIi4uLy4uL2NvbnN0YW50cy94bWxuc19u YW1lc3BhY2VzIjo2OTQsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90X2Fw aS9lZGl0X3R5cGVzIjo3NDgsIi4uL2dldF9kYXRhIjo4MDAsIi4vbGF5b3V0 L2F0dHJpYnV0ZXMiOjgwNiwiLi9sYXlvdXQvZGVmYXVsdHMiOjgxMCwiLi9s YXlvdXQvbGF5b3V0X2F0dHJpYnV0ZXMiOjgxMSwiLi9zY2VuZSI6ODE1fV0s ODA2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17 c2NlbmU6e3ZhbFR5cGU6InN1YnBsb3RpZCIsZGZsdDoic2NlbmUiLGVkaXRU eXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn19fSx7fV0sODA3OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uLy4uL2NvbXBv bmVudHMvY29sb3IiKSxhPXQoIi4uLy4uL2NhcnRlc2lhbi9sYXlvdXRfYXR0 cmlidXRlcyIpLGk9dCgiLi4vLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZs YXQsbz10KCIuLi8uLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJp ZGVBbGw7ZS5leHBvcnRzPW8oe3Zpc2libGU6YS52aXNpYmxlLHNob3dzcGlr ZXM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LHNwaWtlc2lkZXM6e3Zh bFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LHNwaWtldGhpY2tuZXNzOnt2YWxU eXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6Mn0sc3Bpa2Vjb2xvcjp7dmFsVHlw ZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0sc2hvd2JhY2tncm91bmQ6 e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGJhY2tncm91bmRjb2xvcjp7 dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYmEoMjA0LCAyMDQsIDIwNCwgMC41 KSJ9LHNob3dheGVzbGFiZWxzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEw fSxjb2xvcjphLmNvbG9yLGNhdGVnb3J5b3JkZXI6YS5jYXRlZ29yeW9yZGVy LGNhdGVnb3J5YXJyYXk6YS5jYXRlZ29yeWFycmF5LHRpdGxlOnt0ZXh0OmEu dGl0bGUudGV4dCxmb250OmEudGl0bGUuZm9udH0sdHlwZTppKHt9LGEudHlw ZSx7dmFsdWVzOlsiLSIsImxpbmVhciIsImxvZyIsImRhdGUiLCJjYXRlZ29y eSJdfSksYXV0b3JhbmdlOmEuYXV0b3JhbmdlLHJhbmdlbW9kZTphLnJhbmdl bW9kZSxyYW5nZTppKHt9LGEucmFuZ2Use2l0ZW1zOlt7dmFsVHlwZToiYW55 IixlZGl0VHlwZToicGxvdCIsaW1wbGllZEVkaXRzOnsiXmF1dG9yYW5nZSI6 ITF9fSx7dmFsVHlwZToiYW55IixlZGl0VHlwZToicGxvdCIsaW1wbGllZEVk aXRzOnsiXmF1dG9yYW5nZSI6ITF9fV0sYW5pbTohMX0pLHRpY2ttb2RlOmEu dGlja21vZGUsbnRpY2tzOmEubnRpY2tzLHRpY2swOmEudGljazAsZHRpY2s6 YS5kdGljayx0aWNrdmFsczphLnRpY2t2YWxzLHRpY2t0ZXh0OmEudGlja3Rl eHQsdGlja3M6YS50aWNrcyxtaXJyb3I6YS5taXJyb3IsdGlja2xlbjphLnRp Y2tsZW4sdGlja3dpZHRoOmEudGlja3dpZHRoLHRpY2tjb2xvcjphLnRpY2tj b2xvcixzaG93dGlja2xhYmVsczphLnNob3d0aWNrbGFiZWxzLHRpY2tmb250 OmEudGlja2ZvbnQsdGlja2FuZ2xlOmEudGlja2FuZ2xlLHRpY2twcmVmaXg6 YS50aWNrcHJlZml4LHNob3d0aWNrcHJlZml4OmEuc2hvd3RpY2twcmVmaXgs dGlja3N1ZmZpeDphLnRpY2tzdWZmaXgsc2hvd3RpY2tzdWZmaXg6YS5zaG93 dGlja3N1ZmZpeCxzaG93ZXhwb25lbnQ6YS5zaG93ZXhwb25lbnQsZXhwb25l bnRmb3JtYXQ6YS5leHBvbmVudGZvcm1hdCxzZXBhcmF0ZXRob3VzYW5kczph LnNlcGFyYXRldGhvdXNhbmRzLHRpY2tmb3JtYXQ6YS50aWNrZm9ybWF0LHRp Y2tmb3JtYXRzdG9wczphLnRpY2tmb3JtYXRzdG9wcyxob3ZlcmZvcm1hdDph LmhvdmVyZm9ybWF0LHNob3dsaW5lOmEuc2hvd2xpbmUsbGluZWNvbG9yOmEu bGluZWNvbG9yLGxpbmV3aWR0aDphLmxpbmV3aWR0aCxzaG93Z3JpZDphLnNo b3dncmlkLGdyaWRjb2xvcjppKHt9LGEuZ3JpZGNvbG9yLHtkZmx0OiJyZ2Io MjA0LCAyMDQsIDIwNCkifSksZ3JpZHdpZHRoOmEuZ3JpZHdpZHRoLHplcm9s aW5lOmEuemVyb2xpbmUsemVyb2xpbmVjb2xvcjphLnplcm9saW5lY29sb3Is emVyb2xpbmV3aWR0aDphLnplcm9saW5ld2lkdGgsX2RlcHJlY2F0ZWQ6e3Rp dGxlOmEuX2RlcHJlY2F0ZWQudGl0bGUsdGl0bGVmb250OmEuX2RlcHJlY2F0 ZWQudGl0bGVmb250fX0sInBsb3QiLCJmcm9tLXJvb3QiKX0seyIuLi8uLi8u Li9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uLy4uL2xpYi9leHRlbmQi OjcwOCwiLi4vLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8u Li9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3N31dLDgwODpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0aW55Y29sb3Iy IikubWl4LGE9dCgiLi4vLi4vLi4vbGliIiksaT10KCIuLi8uLi8uLi9wbG90 X2FwaS9wbG90X3RlbXBsYXRlIiksbz10KCIuL2F4aXNfYXR0cmlidXRlcyIp LHM9dCgiLi4vLi4vY2FydGVzaWFuL3R5cGVfZGVmYXVsdHMiKSxsPXQoIi4u Ly4uL2NhcnRlc2lhbi9heGlzX2RlZmF1bHRzIiksYz1bInhheGlzIiwieWF4 aXMiLCJ6YXhpcyJdO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIHUs aDtmdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGEuY29lcmNlKHUsaCxvLHQsZSl9 Zm9yKHZhciBwPTA7cDxjLmxlbmd0aDtwKyspe3ZhciBkPWNbcF07dT10W2Rd fHx7fSwoaD1pLm5ld0NvbnRhaW5lcihlLGQpKS5faWQ9ZFswXStyLnNjZW5l LGguX25hbWU9ZCxzKHUsaCxmLHIpLGwodSxoLGYse2ZvbnQ6ci5mb250LGxl dHRlcjpkWzBdLGRhdGE6ci5kYXRhLHNob3dHcmlkOiEwLG5vVGlja3Nvbjoh MCxiZ0NvbG9yOnIuYmdDb2xvcixjYWxlbmRhcjpyLmNhbGVuZGFyfSxyLmZ1 bGxMYXlvdXQpLGYoImdyaWRjb2xvciIsbihoLmNvbG9yLHIuYmdDb2xvciwx MzYwMC8xODcpLnRvUmdiU3RyaW5nKCkpLGYoInRpdGxlLnRleHQiLGRbMF0p LGguc2V0U2NhbGU9YS5ub29wLGYoInNob3dzcGlrZXMiKSYmKGYoInNwaWtl c2lkZXMiKSxmKCJzcGlrZXRoaWNrbmVzcyIpLGYoInNwaWtlY29sb3IiLGgu Y29sb3IpKSxmKCJzaG93YXhlc2xhYmVscyIpLGYoInNob3diYWNrZ3JvdW5k IikmJmYoImJhY2tncm91bmRjb2xvciIpfX19LHsiLi4vLi4vLi4vbGliIjo3 MTcsIi4uLy4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4v Li4vY2FydGVzaWFuL2F4aXNfZGVmYXVsdHMiOjc2NywiLi4vLi4vY2FydGVz aWFuL3R5cGVfZGVmYXVsdHMiOjc4OCwiLi9heGlzX2F0dHJpYnV0ZXMiOjgw Nyx0aW55Y29sb3IyOjUzNn1dLDgwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi8uLi9saWIvc3RyMnJnYmFycmF5Iiks YT10KCIuLi8uLi8uLi9saWIiKSxpPVsieGF4aXMiLCJ5YXhpcyIsInpheGlz Il07ZnVuY3Rpb24gbygpe3RoaXMuYm91bmRzPVtbLTEwLC0xMCwtMTBdLFsx MCwxMCwxMF1dLHRoaXMudGlja3M9W1tdLFtdLFtdXSx0aGlzLnRpY2tFbmFi bGU9WyEwLCEwLCEwXSx0aGlzLnRpY2tGb250PVsic2Fucy1zZXJpZiIsInNh bnMtc2VyaWYiLCJzYW5zLXNlcmlmIl0sdGhpcy50aWNrU2l6ZT1bMTIsMTIs MTJdLHRoaXMudGlja0FuZ2xlPVswLDAsMF0sdGhpcy50aWNrQ29sb3I9W1sw LDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnRpY2tQYWQ9WzE4 LDE4LDE4XSx0aGlzLmxhYmVscz1bIngiLCJ5IiwieiJdLHRoaXMubGFiZWxF bmFibGU9WyEwLCEwLCEwXSx0aGlzLmxhYmVsRm9udD1bIk9wZW4gU2FucyIs Ik9wZW4gU2FucyIsIk9wZW4gU2FucyJdLHRoaXMubGFiZWxTaXplPVsyMCwy MCwyMF0sdGhpcy5sYWJlbENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFsw LDAsMCwxXV0sdGhpcy5sYWJlbFBhZD1bMzAsMzAsMzBdLHRoaXMubGluZUVu YWJsZT1bITAsITAsITBdLHRoaXMubGluZU1pcnJvcj1bITEsITEsITFdLHRo aXMubGluZVdpZHRoPVsxLDEsMV0sdGhpcy5saW5lQ29sb3I9W1swLDAsMCwx XSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmxpbmVUaWNrRW5hYmxlPVsh MCwhMCwhMF0sdGhpcy5saW5lVGlja01pcnJvcj1bITEsITEsITFdLHRoaXMu bGluZVRpY2tMZW5ndGg9WzEwLDEwLDEwXSx0aGlzLmxpbmVUaWNrV2lkdGg9 WzEsMSwxXSx0aGlzLmxpbmVUaWNrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAs MV0sWzAsMCwwLDFdXSx0aGlzLmdyaWRFbmFibGU9WyEwLCEwLCEwXSx0aGlz LmdyaWRXaWR0aD1bMSwxLDFdLHRoaXMuZ3JpZENvbG9yPVtbMCwwLDAsMV0s WzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy56ZXJvRW5hYmxlPVshMCwhMCwh MF0sdGhpcy56ZXJvTGluZUNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFsw LDAsMCwxXV0sdGhpcy56ZXJvTGluZVdpZHRoPVsyLDIsMl0sdGhpcy5iYWNr Z3JvdW5kRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5iYWNrZ3JvdW5kQ29sb3I9 W1suOCwuOCwuOCwuNV0sWy44LC44LC44LC41XSxbLjgsLjgsLjgsLjVdXSx0 aGlzLl9kZWZhdWx0VGlja1BhZD10aGlzLnRpY2tQYWQuc2xpY2UoKSx0aGlz Ll9kZWZhdWx0TGFiZWxQYWQ9dGhpcy5sYWJlbFBhZC5zbGljZSgpLHRoaXMu X2RlZmF1bHRMaW5lVGlja0xlbmd0aD10aGlzLmxpbmVUaWNrTGVuZ3RoLnNs aWNlKCl9by5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCxlKXtmb3IodmFy IHI9MDtyPDM7KytyKXt2YXIgbz1lW2lbcl1dO28udmlzaWJsZT8odGhpcy5s YWJlbHNbcl09dC5fbWV0YT9hLnRlbXBsYXRlU3RyaW5nKG8udGl0bGUudGV4 dCx0Ll9tZXRhKTpvLnRpdGxlLnRleHQsImZvbnQiaW4gby50aXRsZSYmKG8u dGl0bGUuZm9udC5jb2xvciYmKHRoaXMubGFiZWxDb2xvcltyXT1uKG8udGl0 bGUuZm9udC5jb2xvcikpLG8udGl0bGUuZm9udC5mYW1pbHkmJih0aGlzLmxh YmVsRm9udFtyXT1vLnRpdGxlLmZvbnQuZmFtaWx5KSxvLnRpdGxlLmZvbnQu c2l6ZSYmKHRoaXMubGFiZWxTaXplW3JdPW8udGl0bGUuZm9udC5zaXplKSks InNob3dsaW5lImluIG8mJih0aGlzLmxpbmVFbmFibGVbcl09by5zaG93bGlu ZSksImxpbmVjb2xvciJpbiBvJiYodGhpcy5saW5lQ29sb3Jbcl09bihvLmxp bmVjb2xvcikpLCJsaW5ld2lkdGgiaW4gbyYmKHRoaXMubGluZVdpZHRoW3Jd PW8ubGluZXdpZHRoKSwic2hvd2dyaWQiaW4gbyYmKHRoaXMuZ3JpZEVuYWJs ZVtyXT1vLnNob3dncmlkKSwiZ3JpZGNvbG9yImluIG8mJih0aGlzLmdyaWRD b2xvcltyXT1uKG8uZ3JpZGNvbG9yKSksImdyaWR3aWR0aCJpbiBvJiYodGhp cy5ncmlkV2lkdGhbcl09by5ncmlkd2lkdGgpLCJsb2ciPT09by50eXBlP3Ro aXMuemVyb0VuYWJsZVtyXT0hMToiemVyb2xpbmUiaW4gbyYmKHRoaXMuemVy b0VuYWJsZVtyXT1vLnplcm9saW5lKSwiemVyb2xpbmVjb2xvciJpbiBvJiYo dGhpcy56ZXJvTGluZUNvbG9yW3JdPW4oby56ZXJvbGluZWNvbG9yKSksInpl cm9saW5ld2lkdGgiaW4gbyYmKHRoaXMuemVyb0xpbmVXaWR0aFtyXT1vLnpl cm9saW5ld2lkdGgpLCJ0aWNrcyJpbiBvJiZvLnRpY2tzP3RoaXMubGluZVRp Y2tFbmFibGVbcl09ITA6dGhpcy5saW5lVGlja0VuYWJsZVtyXT0hMSwidGlj a2xlbiJpbiBvJiYodGhpcy5saW5lVGlja0xlbmd0aFtyXT10aGlzLl9kZWZh dWx0TGluZVRpY2tMZW5ndGhbcl09by50aWNrbGVuKSwidGlja2NvbG9yImlu IG8mJih0aGlzLmxpbmVUaWNrQ29sb3Jbcl09bihvLnRpY2tjb2xvcikpLCJ0 aWNrd2lkdGgiaW4gbyYmKHRoaXMubGluZVRpY2tXaWR0aFtyXT1vLnRpY2t3 aWR0aCksInRpY2thbmdsZSJpbiBvJiYodGhpcy50aWNrQW5nbGVbcl09ImF1 dG8iPT09by50aWNrYW5nbGU/LTM2MDA6TWF0aC5QSSotby50aWNrYW5nbGUv MTgwKSwic2hvd3RpY2tsYWJlbHMiaW4gbyYmKHRoaXMudGlja0VuYWJsZVty XT1vLnNob3d0aWNrbGFiZWxzKSwidGlja2ZvbnQiaW4gbyYmKG8udGlja2Zv bnQuY29sb3ImJih0aGlzLnRpY2tDb2xvcltyXT1uKG8udGlja2ZvbnQuY29s b3IpKSxvLnRpY2tmb250LmZhbWlseSYmKHRoaXMudGlja0ZvbnRbcl09by50 aWNrZm9udC5mYW1pbHkpLG8udGlja2ZvbnQuc2l6ZSYmKHRoaXMudGlja1Np emVbcl09by50aWNrZm9udC5zaXplKSksIm1pcnJvciJpbiBvPy0xIT09WyJ0 aWNrcyIsImFsbCIsImFsbHRpY2tzIl0uaW5kZXhPZihvLm1pcnJvcik/KHRo aXMubGluZVRpY2tNaXJyb3Jbcl09ITAsdGhpcy5saW5lTWlycm9yW3JdPSEw KTohMD09PW8ubWlycm9yPyh0aGlzLmxpbmVUaWNrTWlycm9yW3JdPSExLHRo aXMubGluZU1pcnJvcltyXT0hMCk6KHRoaXMubGluZVRpY2tNaXJyb3Jbcl09 ITEsdGhpcy5saW5lTWlycm9yW3JdPSExKTp0aGlzLmxpbmVNaXJyb3Jbcl09 ITEsInNob3diYWNrZ3JvdW5kImluIG8mJiExIT09by5zaG93YmFja2dyb3Vu ZD8odGhpcy5iYWNrZ3JvdW5kRW5hYmxlW3JdPSEwLHRoaXMuYmFja2dyb3Vu ZENvbG9yW3JdPW4oby5iYWNrZ3JvdW5kY29sb3IpKTp0aGlzLmJhY2tncm91 bmRFbmFibGVbcl09ITEpOih0aGlzLnRpY2tFbmFibGVbcl09ITEsdGhpcy5s YWJlbEVuYWJsZVtyXT0hMSx0aGlzLmxpbmVFbmFibGVbcl09ITEsdGhpcy5s aW5lVGlja0VuYWJsZVtyXT0hMSx0aGlzLmdyaWRFbmFibGVbcl09ITEsdGhp cy56ZXJvRW5hYmxlW3JdPSExLHRoaXMuYmFja2dyb3VuZEVuYWJsZVtyXT0h MSl9fSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgbztyZXR1 cm4gci5tZXJnZSh0LGUpLHJ9fSx7Ii4uLy4uLy4uL2xpYiI6NzE3LCIuLi8u Li8uLi9saWIvc3RyMnJnYmFycmF5Ijo3NDB9XSw4MTA6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4vbGliIiksYT10 KCIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi8uLi9y ZWdpc3RyeSIpLG89dCgiLi4vLi4vc3VicGxvdF9kZWZhdWx0cyIpLHM9dCgi Li9heGlzX2RlZmF1bHRzIiksbD10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiks Yz10KCIuLi8uLi9nZXRfZGF0YSIpLmdldFN1YnBsb3REYXRhLHU9ImdsM2Qi O2Z1bmN0aW9uIGgodCxlLHIsbil7Zm9yKHZhciBvPXIoImJnY29sb3IiKSxs PWEuY29tYmluZShvLG4ucGFwZXJfYmdjb2xvciksaD1bInVwIiwiY2VudGVy IiwiZXllIl0sZj0wO2Y8aC5sZW5ndGg7ZisrKXIoImNhbWVyYS4iK2hbZl0r Ii54IikscigiY2FtZXJhLiIraFtmXSsiLnkiKSxyKCJjYW1lcmEuIitoW2Zd KyIueiIpO3IoImNhbWVyYS5wcm9qZWN0aW9uLnR5cGUiKTt2YXIgcD0hIXIo ImFzcGVjdHJhdGlvLngiKSYmISFyKCJhc3BlY3RyYXRpby55IikmJiEhcigi YXNwZWN0cmF0aW8ueiIpLGQ9cigiYXNwZWN0bW9kZSIscD8ibWFudWFsIjoi YXV0byIpO3B8fCh0LmFzcGVjdHJhdGlvPWUuYXNwZWN0cmF0aW89e3g6MSx5 OjEsejoxfSwibWFudWFsIj09PWQmJihlLmFzcGVjdG1vZGU9ImF1dG8iKSx0 LmFzcGVjdG1vZGU9ZS5hc3BlY3Rtb2RlKTt2YXIgZz1jKG4uZnVsbERhdGEs dSxuLmlkKTtzKHQsZSx7Zm9udDpuLmZvbnQsc2NlbmU6bi5pZCxkYXRhOmcs YmdDb2xvcjpsLGNhbGVuZGFyOm4uY2FsZW5kYXIsZnVsbExheW91dDpuLmZ1 bGxMYXlvdXR9KSxpLmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMz ZCIsImhhbmRsZURlZmF1bHRzIikodCxlLG4pO3ZhciB2PW4uZ2V0RGZsdEZy b21MYXlvdXQoImRyYWdtb2RlIik7aWYoITEhPT12JiYhdilpZih2PSJvcmJp dCIsdC5jYW1lcmEmJnQuY2FtZXJhLnVwKXt2YXIgbT10LmNhbWVyYS51cC54 LHk9dC5jYW1lcmEudXAueSx4PXQuY2FtZXJhLnVwLno7MCE9PXgmJihtJiZ5 JiZ4P3gvTWF0aC5zcXJ0KG0qbSt5KnkreCp4KT4uOTk5JiYodj0idHVybnRh YmxlIik6dj0idHVybnRhYmxlIil9ZWxzZSB2PSJ0dXJudGFibGUiO3IoImRy YWdtb2RlIix2KSxyKCJob3Zlcm1vZGUiLG4uZ2V0RGZsdEZyb21MYXlvdXQo ImhvdmVybW9kZSIpKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBh PWUuX2Jhc2VQbG90TW9kdWxlcy5sZW5ndGg+MTtvKHQsZSxyLHt0eXBlOnUs YXR0cmlidXRlczpsLGhhbmRsZURlZmF1bHRzOmgsZnVsbExheW91dDplLGZv bnQ6ZS5mb250LGZ1bGxEYXRhOnIsZ2V0RGZsdEZyb21MYXlvdXQ6ZnVuY3Rp b24oZSl7aWYoIWEpcmV0dXJuIG4udmFsaWRhdGUodFtlXSxsW2VdKT90W2Vd OnZvaWQgMH0scGFwZXJfYmdjb2xvcjplLnBhcGVyX2JnY29sb3IsY2FsZW5k YXI6ZS5jYWxlbmRhcn0pfX0seyIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9y Ijo1OTIsIi4uLy4uLy4uL2xpYiI6NzE3LCIuLi8uLi8uLi9yZWdpc3RyeSI6 ODQ2LCIuLi8uLi9nZXRfZGF0YSI6ODAwLCIuLi8uLi9zdWJwbG90X2RlZmF1 bHRzIjo4NDAsIi4vYXhpc19kZWZhdWx0cyI6ODA4LCIuL2xheW91dF9hdHRy aWJ1dGVzIjo4MTF9XSw4MTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi9heGlzX2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2Rv bWFpbiIpLmF0dHJpYnV0ZXMsaT10KCIuLi8uLi8uLi9saWIvZXh0ZW5kIiku ZXh0ZW5kRmxhdCxvPXQoIi4uLy4uLy4uL2xpYiIpLmNvdW50ZXJSZWdleDtm dW5jdGlvbiBzKHQsZSxyKXtyZXR1cm57eDp7dmFsVHlwZToibnVtYmVyIixk Zmx0OnQsZWRpdFR5cGU6ImNhbWVyYSJ9LHk6e3ZhbFR5cGU6Im51bWJlciIs ZGZsdDplLGVkaXRUeXBlOiJjYW1lcmEifSx6Ont2YWxUeXBlOiJudW1iZXIi LGRmbHQ6cixlZGl0VHlwZToiY2FtZXJhIn0sZWRpdFR5cGU6ImNhbWVyYSJ9 fWUuZXhwb3J0cz17X2FycmF5QXR0clJlZ2V4cHM6W28oInNjZW5lIiwiLmFu bm90YXRpb25zIiwhMCldLGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0 OiJyZ2JhKDAsMCwwLDApIixlZGl0VHlwZToicGxvdCJ9LGNhbWVyYTp7dXA6 aShzKDAsMCwxKSx7fSksY2VudGVyOmkocygwLDAsMCkse30pLGV5ZTppKHMo MS4yNSwxLjI1LDEuMjUpLHt9KSxwcm9qZWN0aW9uOnt0eXBlOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwZXJzcGVjdGl2ZSIsIm9ydGhvZ3Jh cGhpYyJdLGRmbHQ6InBlcnNwZWN0aXZlIixlZGl0VHlwZToiY2FsYyJ9LGVk aXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbWVyYSJ9LGRvbWFpbjphKHtu YW1lOiJzY2VuZSIsZWRpdFR5cGU6InBsb3QifSksYXNwZWN0bW9kZTp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0byIsImN1YmUiLCJkYXRh IiwibWFudWFsIl0sZGZsdDoiYXV0byIsZWRpdFR5cGU6InBsb3QiLGltcGxp ZWRFZGl0czp7ImFzcGVjdHJhdGlvLngiOnZvaWQgMCwiYXNwZWN0cmF0aW8u eSI6dm9pZCAwLCJhc3BlY3RyYXRpby56Ijp2b2lkIDB9fSxhc3BlY3RyYXRp bzp7eDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToicGxvdCIs aW1wbGllZEVkaXRzOnsiXmFzcGVjdG1vZGUiOiJtYW51YWwifX0seTp7dmFs VHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToicGxvdCIsaW1wbGllZEVk aXRzOnsiXmFzcGVjdG1vZGUiOiJtYW51YWwifX0sejp7dmFsVHlwZToibnVt YmVyIixtaW46MCxlZGl0VHlwZToicGxvdCIsaW1wbGllZEVkaXRzOnsiXmFz cGVjdG1vZGUiOiJtYW51YWwifX0sZWRpdFR5cGU6InBsb3QiLGltcGxpZWRF ZGl0czp7YXNwZWN0bW9kZToibWFudWFsIn19LHhheGlzOm4seWF4aXM6bix6 YXhpczpuLGRyYWdtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6 WyJvcmJpdCIsInR1cm50YWJsZSIsInpvb20iLCJwYW4iLCExXSxlZGl0VHlw ZToicGxvdCJ9LGhvdmVybW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsiY2xvc2VzdCIsITFdLGRmbHQ6ImNsb3Nlc3QiLGVkaXRUeXBlOiJt b2RlYmFyIn0sdWlyZXZpc2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToi bm9uZSJ9LGVkaXRUeXBlOiJwbG90IixfZGVwcmVjYXRlZDp7Y2FtZXJhcG9z aXRpb246e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGVkaXRUeXBlOiJjYW1lcmEi fX19fSx7Ii4uLy4uLy4uL2xpYiI6NzE3LCIuLi8uLi8uLi9saWIvZXh0ZW5k Ijo3MDgsIi4uLy4uL2RvbWFpbiI6NzkwLCIuL2F4aXNfYXR0cmlidXRlcyI6 ODA3fV0sODEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKSxhPVsieGF4aXMiLCJ5 YXhpcyIsInpheGlzIl07ZnVuY3Rpb24gaSgpe3RoaXMuZW5hYmxlZD1bITAs ITAsITBdLHRoaXMuY29sb3JzPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAs MCwxXV0sdGhpcy5kcmF3U2lkZXM9WyEwLCEwLCEwXSx0aGlzLmxpbmVXaWR0 aD1bMSwxLDFdfWkucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2Zvcih2 YXIgZT0wO2U8MzsrK2Upe3ZhciByPXRbYVtlXV07ci52aXNpYmxlPyh0aGlz LmVuYWJsZWRbZV09ci5zaG93c3Bpa2VzLHRoaXMuY29sb3JzW2VdPW4oci5z cGlrZWNvbG9yKSx0aGlzLmRyYXdTaWRlc1tlXT1yLnNwaWtlc2lkZXMsdGhp cy5saW5lV2lkdGhbZV09ci5zcGlrZXRoaWNrbmVzcyk6KHRoaXMuZW5hYmxl ZFtlXT0hMSx0aGlzLmRyYXdTaWRlc1tlXT0hMSl9fSxlLmV4cG9ydHM9ZnVu Y3Rpb24odCl7dmFyIGU9bmV3IGk7cmV0dXJuIGUubWVyZ2UodCksZX19LHsi Li4vLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6NzQwfV0sODEzOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtm b3IodmFyIGU9dC5heGVzT3B0aW9ucyxyPXQuZ2xwbG90LmF4ZXNQaXhlbHMs cz10LmZ1bGxTY2VuZUxheW91dCxsPVtbXSxbXSxbXV0sYz0wO2M8MzsrK2Mp e3ZhciB1PXNbaVtjXV07aWYodS5fbGVuZ3RoPShyW2NdLmhpLXJbY10ubG8p KnJbY10ucGl4ZWxzUGVyRGF0YVVuaXQvdC5kYXRhU2NhbGVbY10sTWF0aC5h YnModS5fbGVuZ3RoKT09PTEvMHx8aXNOYU4odS5fbGVuZ3RoKSlsW2NdPVtd O2Vsc2V7dS5faW5wdXRfcmFuZ2U9dS5yYW5nZS5zbGljZSgpLHUucmFuZ2Vb MF09cltjXS5sby90LmRhdGFTY2FsZVtjXSx1LnJhbmdlWzFdPXJbY10uaGkv dC5kYXRhU2NhbGVbY10sdS5fbT0xLyh0LmRhdGFTY2FsZVtjXSpyW2NdLnBp eGVsc1BlckRhdGFVbml0KSx1LnJhbmdlWzBdPT09dS5yYW5nZVsxXSYmKHUu cmFuZ2VbMF0tPTEsdS5yYW5nZVsxXSs9MSk7dmFyIGg9dS50aWNrbW9kZTtp ZigiYXV0byI9PT11LnRpY2ttb2RlKXt1LnRpY2ttb2RlPSJsaW5lYXIiO3Zh ciBmPXUubnRpY2tzfHxhLmNvbnN0cmFpbih1Ll9sZW5ndGgvNDAsNCw5KTtu LmF1dG9UaWNrcyh1LE1hdGguYWJzKHUucmFuZ2VbMV0tdS5yYW5nZVswXSkv Zil9Zm9yKHZhciBwPW4uY2FsY1RpY2tzKHUpLGQ9MDtkPHAubGVuZ3RoOysr ZClwW2RdLng9cFtkXS54KnQuZGF0YVNjYWxlW2NdLCJkYXRlIj09PXUudHlw ZSYmKHBbZF0udGV4dD1wW2RdLnRleHQucmVwbGFjZSgvXDxiclw+L2csIiAi KSk7bFtjXT1wLHUudGlja21vZGU9aH19ZS50aWNrcz1sO2Zvcih2YXIgYz0w O2M8MzsrK2Mpe29bY109LjUqKHQuZ2xwbG90LmJvdW5kc1swXVtjXSt0Lmds cGxvdC5ib3VuZHNbMV1bY10pO2Zvcih2YXIgZD0wO2Q8MjsrK2QpZS5ib3Vu ZHNbZF1bY109dC5nbHBsb3QuYm91bmRzW2RdW2NdfXQuY29udG91ckxldmVs cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KDMpLHI9MDtyPDM7 KytyKXtmb3IodmFyIG49dFtyXSxhPW5ldyBBcnJheShuLmxlbmd0aCksaT0w O2k8bi5sZW5ndGg7KytpKWFbaV09bltpXS54O2Vbcl09YX1yZXR1cm4gZX0o bCl9O3ZhciBuPXQoIi4uLy4uL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi8u Li8uLi9saWIiKSxpPVsieGF4aXMiLCJ5YXhpcyIsInpheGlzIl0sbz1bMCww LDBdfSx7Ii4uLy4uLy4uL2xpYiI6NzE3LCIuLi8uLi9jYXJ0ZXNpYW4vYXhl cyI6NzY1fV0sODE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1 bmN0aW9uIG4odCxlKXt2YXIgcixuLGE9WzAsMCwwLDBdO2ZvcihyPTA7cjw0 Oysrcilmb3Iobj0wO248NDsrK24pYVtuXSs9dFs0KnIrbl0qZVtyXTtyZXR1 cm4gYX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LnByb2pl Y3Rpb24sbih0LnZpZXcsbih0Lm1vZGVsLFtlWzBdLGVbMV0sZVsyXSwxXSkp KX19LHt9XSw4MTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG4sYSxpPXQoImdsLXBsb3QzZCIpLG89aS5jcmVhdGVDYW1lcmEscz1pLmNy ZWF0ZVNjZW5lLGw9dCgid2ViZ2wtY29udGV4dCIpLGM9dCgiaGFzLXBhc3Np dmUtZXZlbnRzIiksdT10KCIuLi8uLi9yZWdpc3RyeSIpLGg9dCgiLi4vLi4v bGliIiksZj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLHA9dCgi Li4vLi4vY29tcG9uZW50cy9meCIpLGQ9dCgiLi4vLi4vbGliL3N0cjJyZ2Jh cnJheSIpLGc9dCgiLi4vLi4vbGliL3Nob3dfbm9fd2ViZ2xfbXNnIiksdj10 KCIuL3Byb2plY3QiKSxtPXQoIi4vbGF5b3V0L2NvbnZlcnQiKSx5PXQoIi4v bGF5b3V0L3NwaWtlcyIpLHg9dCgiLi9sYXlvdXQvdGlja19tYXJrcyIpLGI9 dCgiaXMtbW9iaWxlIiksXz1mdW5jdGlvbigpe2lmKCFuYXZpZ2F0b3IpcmV0 dXJuITE7dmFyIHQ7dHx8InVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8 fCh0PW5hdmlnYXRvci51c2VyQWdlbnQpO3QmJnQuaGVhZGVycyYmInN0cmlu ZyI9PXR5cGVvZiB0LmhlYWRlcnNbInVzZXItYWdlbnQiXSYmKHQ9dC5oZWFk ZXJzWyJ1c2VyLWFnZW50Il0pO2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1 cm4hMTt2YXIgZT1iKHt1YTp0LHRhYmxldDohMH0pOyExPT09ZSYmLTEhPT10 LmluZGV4T2YoIk1hY2ludG9zaCIpJiYtMSE9PXQuaW5kZXhPZigiU2FmYXJp IikmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4xJiYoZT0hMCk7cmV0dXJu IGV9KCk7ZnVuY3Rpb24gdyh0LGUpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoImRpdiIpLG49dC5jb250YWluZXI7dGhpcy5ncmFwaERpdj10Lmdy YXBoRGl2O3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov L3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKTthLnN0eWxlLnBvc2l0aW9u PSJhYnNvbHV0ZSIsYS5zdHlsZS50b3A9YS5zdHlsZS5sZWZ0PSIwcHgiLGEu c3R5bGUud2lkdGg9YS5zdHlsZS5oZWlnaHQ9IjEwMCUiLGEuc3R5bGVbInot aW5kZXgiXT0yMCxhLnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIixy LmFwcGVuZENoaWxkKGEpLHRoaXMuc3ZnQ29udGFpbmVyPWEsci5pZD10Lmlk LHIuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixyLnN0eWxlLnRvcD1yLnN0 eWxlLmxlZnQ9IjBweCIsci5zdHlsZS53aWR0aD1yLnN0eWxlLmhlaWdodD0i MTAwJSIsbi5hcHBlbmRDaGlsZChyKSx0aGlzLmZ1bGxMYXlvdXQ9ZSx0aGlz LmlkPXQuaWR8fCJzY2VuZSIsdGhpcy5mdWxsU2NlbmVMYXlvdXQ9ZVt0aGlz LmlkXSx0aGlzLnBsb3RBcmdzPVtbXSx7fSx7fV0sdGhpcy5heGVzT3B0aW9u cz1tKGUsZVt0aGlzLmlkXSksdGhpcy5zcGlrZU9wdGlvbnM9eShlW3RoaXMu aWRdKSx0aGlzLmNvbnRhaW5lcj1yLHRoaXMuc3RhdGljTW9kZT0hIXQuc3Rh dGljUGxvdCx0aGlzLnBpeGVsUmF0aW89dGhpcy5waXhlbFJhdGlvfHx0LnBs b3RHbFBpeGVsUmF0aW98fDIsdGhpcy5kYXRhU2NhbGU9WzEsMSwxXSx0aGlz LmNvbnRvdXJMZXZlbHM9W1tdLFtdLFtdXSx0aGlzLmNvbnZlcnRBbm5vdGF0 aW9ucz11LmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMzZCIsImNv bnZlcnQiKSx0aGlzLmRyYXdBbm5vdGF0aW9ucz11LmdldENvbXBvbmVudE1l dGhvZCgiYW5ub3RhdGlvbnMzZCIsImRyYXciKSx0aGlzLmluaXRpYWxpemVH TFBsb3QoKX12YXIgaz13LnByb3RvdHlwZTtrLnRyeUNyZWF0ZVBsb3Q9ZnVu Y3Rpb24oKXt2YXIgdD17Y2FudmFzOnRoaXMuY2FudmFzLGdsOnRoaXMuZ2ws Z2xPcHRpb25zOntwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6XyxwcmVtdWx0aXBs aWVkQWxwaGE6ITAsYW50aWFsaWFzOiEwfSxjb250YWluZXI6dGhpcy5jb250 YWluZXIsYXhlczp0aGlzLmF4ZXNPcHRpb25zLHNwaWtlczp0aGlzLnNwaWtl T3B0aW9ucyxwaWNrUmFkaXVzOjEwLHNuYXBUb0RhdGE6ITAsYXV0b1NjYWxl OiEwLGF1dG9Cb3VuZHM6ITEsY2FtZXJhT2JqZWN0OnRoaXMuY2FtZXJhLHBp eGVsUmF0aW86dGhpcy5waXhlbFJhdGlvfTtpZih0aGlzLnN0YXRpY01vZGUp e2lmKCEoYXx8KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiks YT1sKHtjYW52YXM6bixwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ITAscHJlbXVs dGlwbGllZEFscGhhOiEwLGFudGlhbGlhczohMH0pKSkpdGhyb3cgbmV3IEVy cm9yKCJlcnJvciBjcmVhdGluZyBzdGF0aWMgY2FudmFzL2NvbnRleHQgZm9y IGltYWdlIHNlcnZlciIpO3QuZ2w9YSx0LmNhbnZhcz1ufXZhciBlPTA7dHJ5 e3RoaXMuZ2xwbG90PXModCl9Y2F0Y2gocil7ZSsrO3RyeXt0aGlzLmdscGxv dD1zKHQpfWNhdGNoKHQpe2UrK319cmV0dXJuIGU8Mn0say5pbml0aWFsaXpl R0xDYW1lcmE9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmZ1bGxTY2VuZUxheW91 dC5jYW1lcmEsZT0ib3J0aG9ncmFwaGljIj09PXQucHJvamVjdGlvbi50eXBl O3RoaXMuY2FtZXJhPW8odGhpcy5jb250YWluZXIse2NlbnRlcjpbdC5jZW50 ZXIueCx0LmNlbnRlci55LHQuY2VudGVyLnpdLGV5ZTpbdC5leWUueCx0LmV5 ZS55LHQuZXllLnpdLHVwOlt0LnVwLngsdC51cC55LHQudXAuel0sX29ydGhv OmUsem9vbU1pbjouMDEsem9vbU1heDoxMDAsbW9kZToib3JiaXQifSl9LGsu aW5pdGlhbGl6ZUdMUGxvdD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodC5p bml0aWFsaXplR0xDYW1lcmEoKSwhdC50cnlDcmVhdGVQbG90KCkpcmV0dXJu IGcodCk7dC50cmFjZXM9e30sdC5tYWtlNHRoRGltZW5zaW9uKCk7dmFyIGU9 dC5ncmFwaERpdixyPWUubGF5b3V0LG49ZnVuY3Rpb24oKXt2YXIgZT17fTty ZXR1cm4gdC5pc0NhbWVyYUNoYW5nZWQocikmJihlW3QuaWQrIi5jYW1lcmEi XT10LmdldENhbWVyYSgpKSx0LmlzQXNwZWN0Q2hhbmdlZChyKSYmKGVbdC5p ZCsiLmFzcGVjdHJhdGlvIl09dC5nbHBsb3QuZ2V0QXNwZWN0cmF0aW8oKSks ZX0sYT1mdW5jdGlvbih0KXtpZighMSE9PXQuZnVsbFNjZW5lTGF5b3V0LmRy YWdtb2RlKXt2YXIgZT1uKCk7dC5zYXZlTGF5b3V0KHIpLHQuZ3JhcGhEaXYu ZW1pdCgicGxvdGx5X3JlbGF5b3V0IixlKX19O3JldHVybiB0LmdscGxvdC5j YW52YXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsZnVuY3Rpb24oKXth KHQpfSksdC5nbHBsb3QuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndoZWVs IixmdW5jdGlvbihyKXtpZihlLl9jb250ZXh0Ll9zY3JvbGxab29tLmdsM2Qp e2lmKHQuY2FtZXJhLl9vcnRobyl7dmFyIG49ci5kZWx0YVg+ci5kZWx0YVk/ MS4xOjEvMS4xLGk9dC5nbHBsb3QuZ2V0QXNwZWN0cmF0aW8oKTt0LmdscGxv dC5zZXRBc3BlY3RyYXRpbyh7eDpuKmkueCx5Om4qaS55LHo6bippLnp9KX1h KHQpfX0sISFjJiZ7cGFzc2l2ZTohMX0pLHQuZ2xwbG90LmNhbnZhcy5hZGRF dmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKCl7aWYoITEhPT10 LmZ1bGxTY2VuZUxheW91dC5kcmFnbW9kZSYmMCE9PXQuY2FtZXJhLm1vdXNl TGlzdGVuZXIuYnV0dG9ucyl7dmFyIGU9bigpO3QuZ3JhcGhEaXYuZW1pdCgi cGxvdGx5X3JlbGF5b3V0aW5nIixlKX19KSx0LnN0YXRpY01vZGV8fHQuZ2xw bG90LmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0 IixmdW5jdGlvbihyKXtlJiZlLmVtaXQmJmUuZW1pdCgicGxvdGx5X3dlYmds Y29udGV4dGxvc3QiLHtldmVudDpyLGxheWVyOnQuaWR9KX0sITEpLHQuZ2xw bG90Lm9uY29udGV4dGxvc3M9ZnVuY3Rpb24oKXt0LnJlY292ZXJDb250ZXh0 KCl9LHQuZ2xwbG90Lm9ucmVuZGVyPWZ1bmN0aW9uKCl7dC5yZW5kZXIoKX0s ITB9LGsucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLHI9ZS5ncmFw aERpdixuPWUuc3ZnQ29udGFpbmVyLGE9ZS5jb250YWluZXIuZ2V0Qm91bmRp bmdDbGllbnRSZWN0KCksaT1hLndpZHRoLG89YS5oZWlnaHQ7bi5zZXRBdHRy aWJ1dGVOUyhudWxsLCJ2aWV3Qm94IiwiMCAwICIraSsiICIrbyksbi5zZXRB dHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIsaSksbi5zZXRBdHRyaWJ1dGVOUyhu dWxsLCJoZWlnaHQiLG8pLHgoZSksZS5nbHBsb3QuYXhlcy51cGRhdGUoZS5h eGVzT3B0aW9ucyk7Zm9yKHZhciBzLGw9T2JqZWN0LmtleXMoZS50cmFjZXMp LGM9bnVsbCx1PWUuZ2xwbG90LnNlbGVjdGlvbixkPTA7ZDxsLmxlbmd0aDsr K2QpInNraXAiIT09KHQ9ZS50cmFjZXNbbFtkXV0pLmRhdGEuaG92ZXJpbmZv JiZ0LmhhbmRsZVBpY2sodSkmJihjPXQpLHQuc2V0Q29udG91ckxldmVscyYm dC5zZXRDb250b3VyTGV2ZWxzKCk7ZnVuY3Rpb24gZyh0LHIpe3ZhciBuPWUu ZnVsbFNjZW5lTGF5b3V0W3RdO3JldHVybiBmLnRpY2tUZXh0KG4sbi5kMmwo ciksImhvdmVyIikudGV4dH1pZihudWxsIT09Yyl7dmFyIG09dihlLmdscGxv dC5jYW1lcmFQYXJhbXMsdS5kYXRhQ29vcmRpbmF0ZSk7dD1jLmRhdGE7dmFy IHksYj1yLl9mdWxsRGF0YVt0LmluZGV4XSxfPXUuaW5kZXgsdz17eExhYmVs OmcoInhheGlzIix1LnRyYWNlQ29vcmRpbmF0ZVswXSkseUxhYmVsOmcoInlh eGlzIix1LnRyYWNlQ29vcmRpbmF0ZVsxXSksekxhYmVsOmcoInpheGlzIix1 LnRyYWNlQ29vcmRpbmF0ZVsyXSl9LGs9cC5jYXN0SG92ZXJpbmZvKGIsZS5m dWxsTGF5b3V0LF8pLFQ9KGt8fCIiKS5zcGxpdCgiKyIpLE09ayYmImFsbCI9 PT1rO2IuaG92ZXJ0ZW1wbGF0ZXx8TXx8KC0xPT09VC5pbmRleE9mKCJ4Iikm Jih3LnhMYWJlbD12b2lkIDApLC0xPT09VC5pbmRleE9mKCJ5IikmJih3LnlM YWJlbD12b2lkIDApLC0xPT09VC5pbmRleE9mKCJ6IikmJih3LnpMYWJlbD12 b2lkIDApLC0xPT09VC5pbmRleE9mKCJ0ZXh0IikmJih1LnRleHRMYWJlbD12 b2lkIDApLC0xPT09VC5pbmRleE9mKCJuYW1lIikmJihjLm5hbWU9dm9pZCAw KSk7dmFyIEE9W107ImNvbmUiPT09dC50eXBlfHwic3RyZWFtdHViZSI9PT10 LnR5cGU/KHcudUxhYmVsPWcoInhheGlzIix1LnRyYWNlQ29vcmRpbmF0ZVsz XSksKE18fC0xIT09VC5pbmRleE9mKCJ1IikpJiZBLnB1c2goInU6ICIrdy51 TGFiZWwpLHcudkxhYmVsPWcoInlheGlzIix1LnRyYWNlQ29vcmRpbmF0ZVs0 XSksKE18fC0xIT09VC5pbmRleE9mKCJ2IikpJiZBLnB1c2goInY6ICIrdy52 TGFiZWwpLHcud0xhYmVsPWcoInpheGlzIix1LnRyYWNlQ29vcmRpbmF0ZVs1 XSksKE18fC0xIT09VC5pbmRleE9mKCJ3IikpJiZBLnB1c2goInc6ICIrdy53 TGFiZWwpLHcubm9ybUxhYmVsPXUudHJhY2VDb29yZGluYXRlWzZdLnRvUHJl Y2lzaW9uKDMpLChNfHwtMSE9PVQuaW5kZXhPZigibm9ybSIpKSYmQS5wdXNo KCJub3JtOiAiK3cubm9ybUxhYmVsKSwic3RyZWFtdHViZSI9PT10LnR5cGUm Jih3LmRpdmVyZ2VuY2VMYWJlbD11LnRyYWNlQ29vcmRpbmF0ZVs3XS50b1By ZWNpc2lvbigzKSwoTXx8LTEhPT1ULmluZGV4T2YoImRpdmVyZ2VuY2UiKSkm JkEucHVzaCgiZGl2ZXJnZW5jZTogIit3LmRpdmVyZ2VuY2VMYWJlbCkpLHUu dGV4dExhYmVsJiZBLnB1c2godS50ZXh0TGFiZWwpLHk9QS5qb2luKCI8YnI+ IikpOiJpc29zdXJmYWNlIj09PXQudHlwZXx8InZvbHVtZSI9PT10LnR5cGU/ KHcudmFsdWVMYWJlbD1mLnRpY2tUZXh0KGUuX21vY2tBeGlzLGUuX21vY2tB eGlzLmQybCh1LnRyYWNlQ29vcmRpbmF0ZVszXSksImhvdmVyIikudGV4dCxB LnB1c2goInZhbHVlOiAiK3cudmFsdWVMYWJlbCksdS50ZXh0TGFiZWwmJkEu cHVzaCh1LnRleHRMYWJlbCkseT1BLmpvaW4oIjxicj4iKSk6eT11LnRleHRM YWJlbDt2YXIgUz17eDp1LnRyYWNlQ29vcmRpbmF0ZVswXSx5OnUudHJhY2VD b29yZGluYXRlWzFdLHo6dS50cmFjZUNvb3JkaW5hdGVbMl0sZGF0YTpiLl9p bnB1dCxmdWxsRGF0YTpiLGN1cnZlTnVtYmVyOmIuaW5kZXgscG9pbnROdW1i ZXI6X307cC5hcHBlbmRBcnJheVBvaW50VmFsdWUoUyxiLF8pLHQuX21vZHVs ZS5ldmVudERhdGEmJihTPWIuX21vZHVsZS5ldmVudERhdGEoUyx1LGIse30s XykpO3ZhciBFPXtwb2ludHM6W1NdfTtlLmZ1bGxTY2VuZUxheW91dC5ob3Zl cm1vZGUmJnAubG9uZUhvdmVyKHt0cmFjZTpiLHg6KC41Ky41Km1bMF0vbVsz XSkqaSx5OiguNS0uNSptWzFdL21bM10pKm8seExhYmVsOncueExhYmVsLHlM YWJlbDp3LnlMYWJlbCx6TGFiZWw6dy56TGFiZWwsdGV4dDp5LG5hbWU6Yy5u YW1lLGNvbG9yOnAuY2FzdEhvdmVyT3B0aW9uKGIsXywiYmdjb2xvciIpfHxj LmNvbG9yLGJvcmRlckNvbG9yOnAuY2FzdEhvdmVyT3B0aW9uKGIsXywiYm9y ZGVyY29sb3IiKSxmb250RmFtaWx5OnAuY2FzdEhvdmVyT3B0aW9uKGIsXywi Zm9udC5mYW1pbHkiKSxmb250U2l6ZTpwLmNhc3RIb3Zlck9wdGlvbihiLF8s ImZvbnQuc2l6ZSIpLGZvbnRDb2xvcjpwLmNhc3RIb3Zlck9wdGlvbihiLF8s ImZvbnQuY29sb3IiKSxuYW1lTGVuZ3RoOnAuY2FzdEhvdmVyT3B0aW9uKGIs XywibmFtZWxlbmd0aCIpLHRleHRBbGlnbjpwLmNhc3RIb3Zlck9wdGlvbihi LF8sImFsaWduIiksaG92ZXJ0ZW1wbGF0ZTpoLmNhc3RPcHRpb24oYixfLCJo b3ZlcnRlbXBsYXRlIiksaG92ZXJ0ZW1wbGF0ZUxhYmVsczpoLmV4dGVuZEZs YXQoe30sUyx3KSxldmVudERhdGE6W1NdfSx7Y29udGFpbmVyOm4sZ2Q6cn0p LHUuYnV0dG9ucyYmdS5kaXN0YW5jZTw1P3IuZW1pdCgicGxvdGx5X2NsaWNr IixFKTpyLmVtaXQoInBsb3RseV9ob3ZlciIsRSkscz1FfWVsc2UgcC5sb25l VW5ob3ZlcihuKSxyLmVtaXQoInBsb3RseV91bmhvdmVyIixzKTtlLmRyYXdB bm5vdGF0aW9ucyhlKX0say5yZWNvdmVyQ29udGV4dD1mdW5jdGlvbigpe3Zh ciB0PXRoaXM7dC5nbHBsb3QuZGlzcG9zZSgpO3ZhciBlPWZ1bmN0aW9uKCl7 dC5nbHBsb3QuZ2wuaXNDb250ZXh0TG9zdCgpP3JlcXVlc3RBbmltYXRpb25G cmFtZShlKTp0LmluaXRpYWxpemVHTFBsb3QoKT90LnBsb3QuYXBwbHkodCx0 LnBsb3RBcmdzKTpoLmVycm9yKCJDYXRhc3Ryb3BoaWMgYW5kIHVucmVjb3Zl cmFibGUgV2ViR0wgZXJyb3IuIENvbnRleHQgbG9zdC4iKX07cmVxdWVzdEFu aW1hdGlvbkZyYW1lKGUpfTt2YXIgVD1bInhheGlzIiwieWF4aXMiLCJ6YXhp cyJdO2Z1bmN0aW9uIE0odCxlLHIpe2Zvcih2YXIgbj10LmZ1bGxTY2VuZUxh eW91dCxhPTA7YTwzO2ErKyl7dmFyIGk9VFthXSxvPWkuY2hhckF0KDApLHM9 bltpXSxsPWVbb10sYz1lW28rImNhbGVuZGFyIl0sdT1lWyJfIitvKyJsZW5n dGgiXTtpZihoLmlzQXJyYXlPclR5cGVkQXJyYXkobCkpZm9yKHZhciBmLHA9 MDtwPCh1fHxsLmxlbmd0aCk7cCsrKWlmKGguaXNBcnJheU9yVHlwZWRBcnJh eShsW3BdKSlmb3IodmFyIGQ9MDtkPGxbcF0ubGVuZ3RoOysrZClmPXMuZDJs KGxbcF1bZF0sMCxjKSwhaXNOYU4oZikmJmlzRmluaXRlKGYpJiYoclswXVth XT1NYXRoLm1pbihyWzBdW2FdLGYpLHJbMV1bYV09TWF0aC5tYXgoclsxXVth XSxmKSk7ZWxzZSBmPXMuZDJsKGxbcF0sMCxjKSwhaXNOYU4oZikmJmlzRmlu aXRlKGYpJiYoclswXVthXT1NYXRoLm1pbihyWzBdW2FdLGYpLHJbMV1bYV09 TWF0aC5tYXgoclsxXVthXSxmKSk7ZWxzZSByWzBdW2FdPU1hdGgubWluKHJb MF1bYV0sMCksclsxXVthXT1NYXRoLm1heChyWzFdW2FdLHUtMSl9fWsucGxv dD1mdW5jdGlvbih0LGUscil7aWYodGhpcy5wbG90QXJncz1bdCxlLHJdLCF0 aGlzLmdscGxvdC5jb250ZXh0TG9zdCl7dmFyIG4sYSxpLG8scyxsLGM9ZVt0 aGlzLmlkXSx1PXJbdGhpcy5pZF07dGhpcy5mdWxsTGF5b3V0PWUsdGhpcy5m dWxsU2NlbmVMYXlvdXQ9Yyx0aGlzLmF4ZXNPcHRpb25zLm1lcmdlKGUsYyks dGhpcy5zcGlrZU9wdGlvbnMubWVyZ2UoYyksdGhpcy5zZXRWaWV3cG9ydChj KSx0aGlzLnVwZGF0ZUZ4KGMuZHJhZ21vZGUsYy5ob3Zlcm1vZGUpLHRoaXMu Y2FtZXJhLmVuYWJsZVdoZWVsPXRoaXMuZ3JhcGhEaXYuX2NvbnRleHQuX3Nj cm9sbFpvb20uZ2wzZCx0aGlzLmdscGxvdC5zZXRDbGVhckNvbG9yKGQoYy5i Z2NvbG9yKSksdGhpcy5zZXRDb252ZXJ0KHMpLHQ/QXJyYXkuaXNBcnJheSh0 KXx8KHQ9W3RdKTp0PVtdO3ZhciBoPVtbMS8wLDEvMCwxLzBdLFstMS8wLC0x LzAsLTEvMF1dO2ZvcihpPTA7aTx0Lmxlbmd0aDsrK2kpITA9PT0obj10W2ld KS52aXNpYmxlJiYwIT09bi5fbGVuZ3RoJiZNKHRoaXMsbixoKTshZnVuY3Rp b24odCxlKXtmb3IodmFyIHI9dC5mdWxsU2NlbmVMYXlvdXQsbj1yLmFubm90 YXRpb25zfHxbXSxhPTA7YTwzO2ErKylmb3IodmFyIGk9VFthXSxvPWkuY2hh ckF0KDApLHM9cltpXSxsPTA7bDxuLmxlbmd0aDtsKyspe3ZhciBjPW5bbF07 aWYoYy52aXNpYmxlKXt2YXIgdT1zLnIybChjW29dKTshaXNOYU4odSkmJmlz RmluaXRlKHUpJiYoZVswXVthXT1NYXRoLm1pbihlWzBdW2FdLHUpLGVbMV1b YV09TWF0aC5tYXgoZVsxXVthXSx1KSl9fX0odGhpcyxoKTt2YXIgZj1bMSwx LDFdO2ZvcihvPTA7bzwzOysrbyloWzFdW29dPT09aFswXVtvXT9mW29dPTE6 ZltvXT0xLyhoWzFdW29dLWhbMF1bb10pO2Zvcih0aGlzLmRhdGFTY2FsZT1m LHRoaXMuY29udmVydEFubm90YXRpb25zKHRoaXMpLGk9MDtpPHQubGVuZ3Ro OysraSkhMD09PShuPXRbaV0pLnZpc2libGUmJjAhPT1uLl9sZW5ndGgmJigo YT10aGlzLnRyYWNlc1tuLnVpZF0pP2EuZGF0YS50eXBlPT09bi50eXBlP2Eu dXBkYXRlKG4pOihhLmRpc3Bvc2UoKSxhPW4uX21vZHVsZS5wbG90KHRoaXMs biksdGhpcy50cmFjZXNbbi51aWRdPWEpOihhPW4uX21vZHVsZS5wbG90KHRo aXMsbiksdGhpcy50cmFjZXNbbi51aWRdPWEpLGEubmFtZT1uLm5hbWUpO3Zh ciBwPU9iamVjdC5rZXlzKHRoaXMudHJhY2VzKTt0OmZvcihpPTA7aTxwLmxl bmd0aDsrK2kpe2ZvcihvPTA7bzx0Lmxlbmd0aDsrK28paWYodFtvXS51aWQ9 PT1wW2ldJiYhMD09PXRbb10udmlzaWJsZSYmMCE9PXRbb10uX2xlbmd0aClj b250aW51ZSB0OyhhPXRoaXMudHJhY2VzW3BbaV1dKS5kaXNwb3NlKCksZGVs ZXRlIHRoaXMudHJhY2VzW3BbaV1dfXRoaXMuZ2xwbG90Lm9iamVjdHMuc29y dChmdW5jdGlvbih0LGUpe3JldHVybiB0Ll90cmFjZS5kYXRhLmluZGV4LWUu X3RyYWNlLmRhdGEuaW5kZXh9KTt2YXIgZz1bWzAsMCwwXSxbMCwwLDBdXSx2 PVtdLG09e307Zm9yKGk9MDtpPDM7KytpKXtpZigobD0ocz1jW1RbaV1dKS50 eXBlKWluIG0/KG1bbF0uYWNjKj1mW2ldLG1bbF0uY291bnQrPTEpOm1bbF09 e2FjYzpmW2ldLGNvdW50OjF9LHMuYXV0b3JhbmdlKXtnWzBdW2ldPTEvMCxn WzFdW2ldPS0xLzA7dmFyIHk9dGhpcy5nbHBsb3Qub2JqZWN0cyx4PXRoaXMu ZnVsbFNjZW5lTGF5b3V0LmFubm90YXRpb25zfHxbXSxiPXMuX25hbWUuY2hh ckF0KDApO2ZvcihvPTA7bzx5Lmxlbmd0aDtvKyspe3ZhciBfPXlbb10sdz1f LmJvdW5kcyxrPV8uX3RyYWNlLmRhdGEuX3BhZHx8MDsiRXJyb3JCYXJzIj09 PV8uY29uc3RydWN0b3IubmFtZSYmcy5fbG93ZXJMb2dFcnJvckJvdW5kP2db MF1baV09TWF0aC5taW4oZ1swXVtpXSxzLl9sb3dlckxvZ0Vycm9yQm91bmQp OmdbMF1baV09TWF0aC5taW4oZ1swXVtpXSx3WzBdW2ldL2ZbaV0tayksZ1sx XVtpXT1NYXRoLm1heChnWzFdW2ldLHdbMV1baV0vZltpXStrKX1mb3Iobz0w O288eC5sZW5ndGg7bysrKXt2YXIgQT14W29dO2lmKEEudmlzaWJsZSl7dmFy IFM9cy5yMmwoQVtiXSk7Z1swXVtpXT1NYXRoLm1pbihnWzBdW2ldLFMpLGdb MV1baV09TWF0aC5tYXgoZ1sxXVtpXSxTKX19aWYoInJhbmdlbW9kZSJpbiBz JiYidG96ZXJvIj09PXMucmFuZ2Vtb2RlJiYoZ1swXVtpXT1NYXRoLm1pbihn WzBdW2ldLDApLGdbMV1baV09TWF0aC5tYXgoZ1sxXVtpXSwwKSksZ1swXVtp XT5nWzFdW2ldKWdbMF1baV09LTEsZ1sxXVtpXT0xO2Vsc2V7dmFyIEU9Z1sx XVtpXS1nWzBdW2ldO2dbMF1baV0tPUUvMzIsZ1sxXVtpXSs9RS8zMn1pZigi cmV2ZXJzZWQiPT09cy5hdXRvcmFuZ2Upe3ZhciBMPWdbMF1baV07Z1swXVtp XT1nWzFdW2ldLGdbMV1baV09TH19ZWxzZXt2YXIgQz1zLnJhbmdlO2dbMF1b aV09cy5yMmwoQ1swXSksZ1sxXVtpXT1zLnIybChDWzFdKX1nWzBdW2ldPT09 Z1sxXVtpXSYmKGdbMF1baV0tPTEsZ1sxXVtpXSs9MSksdltpXT1nWzFdW2ld LWdbMF1baV0sdGhpcy5nbHBsb3Quc2V0Qm91bmRzKGkse21pbjpnWzBdW2ld KmZbaV0sbWF4OmdbMV1baV0qZltpXX0pfXZhciBQPVsxLDEsMV07Zm9yKGk9 MDtpPDM7KytpKXt2YXIgTz1tW2w9KHM9Y1tUW2ldXSkudHlwZV07UFtpXT1N YXRoLnBvdyhPLmFjYywxL08uY291bnQpL2ZbaV19dmFyIHo7aWYoImF1dG8i PT09Yy5hc3BlY3Rtb2RlKXo9TWF0aC5tYXguYXBwbHkobnVsbCxQKS9NYXRo Lm1pbi5hcHBseShudWxsLFApPD00P1A6WzEsMSwxXTtlbHNlIGlmKCJjdWJl Ij09PWMuYXNwZWN0bW9kZSl6PVsxLDEsMV07ZWxzZSBpZigiZGF0YSI9PT1j LmFzcGVjdG1vZGUpej1QO2Vsc2V7aWYoIm1hbnVhbCIhPT1jLmFzcGVjdG1v ZGUpdGhyb3cgbmV3IEVycm9yKCJzY2VuZS5qcyBhc3BlY3RSYXRpbyB3YXMg bm90IG9uZSBvZiB0aGUgZW51bWVyYXRlZCB0eXBlcyIpO3ZhciBJPWMuYXNw ZWN0cmF0aW87ej1bSS54LEkueSxJLnpdfWMuYXNwZWN0cmF0aW8ueD11LmFz cGVjdHJhdGlvLng9elswXSxjLmFzcGVjdHJhdGlvLnk9dS5hc3BlY3RyYXRp by55PXpbMV0sYy5hc3BlY3RyYXRpby56PXUuYXNwZWN0cmF0aW8uej16WzJd LHRoaXMuZ2xwbG90LnNldEFzcGVjdHJhdGlvKGMuYXNwZWN0cmF0aW8pLHRo aXMudmlld0luaXRpYWwuYXNwZWN0cmF0aW98fCh0aGlzLnZpZXdJbml0aWFs LmFzcGVjdHJhdGlvPXt4OmMuYXNwZWN0cmF0aW8ueCx5OmMuYXNwZWN0cmF0 aW8ueSx6OmMuYXNwZWN0cmF0aW8uen0pO3ZhciBEPWMuZG9tYWlufHxudWxs LFI9ZS5fc2l6ZXx8bnVsbDtpZihEJiZSKXt2YXIgRj10aGlzLmNvbnRhaW5l ci5zdHlsZTtGLnBvc2l0aW9uPSJhYnNvbHV0ZSIsRi5sZWZ0PVIubCtELnhb MF0qUi53KyJweCIsRi50b3A9Ui50KygxLUQueVsxXSkqUi5oKyJweCIsRi53 aWR0aD1SLncqKEQueFsxXS1ELnhbMF0pKyJweCIsRi5oZWlnaHQ9Ui5oKihE LnlbMV0tRC55WzBdKSsicHgifXRoaXMuZ2xwbG90LnJlZHJhdygpfX0say5k ZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5nbHBsb3QmJih0aGlzLmNhbWVyYS5t b3VzZUxpc3RlbmVyLmVuYWJsZWQ9ITEsdGhpcy5jb250YWluZXIucmVtb3Zl RXZlbnRMaXN0ZW5lcigid2hlZWwiLHRoaXMuY2FtZXJhLndoZWVsTGlzdGVu ZXIpLHRoaXMuY2FtZXJhPW51bGwsdGhpcy5nbHBsb3QuZGlzcG9zZSgpLHRo aXMuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5jb250 YWluZXIpLHRoaXMuZ2xwbG90PW51bGwpfSxrLmdldENhbWVyYT1mdW5jdGlv bigpe3ZhciB0O3JldHVybiB0aGlzLmNhbWVyYS52aWV3LnJlY2FsY01hdHJp eCh0aGlzLmNhbWVyYS52aWV3Lmxhc3RUKCkpLHt1cDp7eDoodD10aGlzLmNh bWVyYSkudXBbMF0seTp0LnVwWzFdLHo6dC51cFsyXX0sY2VudGVyOnt4OnQu Y2VudGVyWzBdLHk6dC5jZW50ZXJbMV0sejp0LmNlbnRlclsyXX0sZXllOnt4 OnQuZXllWzBdLHk6dC5leWVbMV0sejp0LmV5ZVsyXX0scHJvamVjdGlvbjp7 dHlwZTohMD09PXQuX29ydGhvPyJvcnRob2dyYXBoaWMiOiJwZXJzcGVjdGl2 ZSJ9fX0say5zZXRWaWV3cG9ydD1mdW5jdGlvbih0KXt2YXIgZSxyPXQuY2Ft ZXJhO3RoaXMuY2FtZXJhLmxvb2tBdC5hcHBseSh0aGlzLFtbKGU9cikuZXll LngsZS5leWUueSxlLmV5ZS56XSxbZS5jZW50ZXIueCxlLmNlbnRlci55LGUu Y2VudGVyLnpdLFtlLnVwLngsZS51cC55LGUudXAuel1dKSx0aGlzLmdscGxv dC5zZXRBc3BlY3RyYXRpbyh0LmFzcGVjdHJhdGlvKSwib3J0aG9ncmFwaGlj Ij09PXIucHJvamVjdGlvbi50eXBlIT09dGhpcy5jYW1lcmEuX29ydGhvJiYo dGhpcy5nbHBsb3QucmVkcmF3KCksdGhpcy5nbHBsb3QuY2xlYXJSR0JBKCks dGhpcy5nbHBsb3QuZGlzcG9zZSgpLHRoaXMuaW5pdGlhbGl6ZUdMUGxvdCgp KX0say5pc0NhbWVyYUNoYW5nZWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5n ZXRDYW1lcmEoKSxyPWgubmVzdGVkUHJvcGVydHkodCx0aGlzLmlkKyIuY2Ft ZXJhIikuZ2V0KCk7ZnVuY3Rpb24gbih0LGUscixuKXt2YXIgYT1bInVwIiwi Y2VudGVyIiwiZXllIl0saT1bIngiLCJ5IiwieiJdO3JldHVybiBlW2Fbcl1d JiZ0W2Fbcl1dW2lbbl1dPT09ZVthW3JdXVtpW25dXX12YXIgYT0hMTtpZih2 b2lkIDA9PT1yKWE9ITA7ZWxzZXtmb3IodmFyIGk9MDtpPDM7aSsrKWZvcih2 YXIgbz0wO288MztvKyspaWYoIW4oZSxyLGksbykpe2E9ITA7YnJlYWt9KCFy LnByb2plY3Rpb258fGUucHJvamVjdGlvbiYmZS5wcm9qZWN0aW9uLnR5cGUh PT1yLnByb2plY3Rpb24udHlwZSkmJihhPSEwKX1yZXR1cm4gYX0say5pc0Fz cGVjdENoYW5nZWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nbHBsb3QuZ2V0 QXNwZWN0cmF0aW8oKSxyPWgubmVzdGVkUHJvcGVydHkodCx0aGlzLmlkKyIu YXNwZWN0cmF0aW8iKS5nZXQoKTtyZXR1cm4gdm9pZCAwPT09cnx8ci54IT09 ZS54fHxyLnkhPT1lLnl8fHIueiE9PWUuen0say5zYXZlTGF5b3V0PWZ1bmN0 aW9uKHQpe3ZhciBlLHIsbixhLGksbyxzPXRoaXMuZnVsbExheW91dCxsPXRo aXMuaXNDYW1lcmFDaGFuZ2VkKHQpLGM9dGhpcy5pc0FzcGVjdENoYW5nZWQo dCksZj1sfHxjO2lmKGYpe3ZhciBwPXt9O2lmKGwmJihlPXRoaXMuZ2V0Q2Ft ZXJhKCksbj0ocj1oLm5lc3RlZFByb3BlcnR5KHQsdGhpcy5pZCsiLmNhbWVy YSIpKS5nZXQoKSxwW3RoaXMuaWQrIi5jYW1lcmEiXT1uKSxjJiYoYT10aGlz LmdscGxvdC5nZXRBc3BlY3RyYXRpbygpLG89KGk9aC5uZXN0ZWRQcm9wZXJ0 eSh0LHRoaXMuaWQrIi5hc3BlY3RyYXRpbyIpKS5nZXQoKSxwW3RoaXMuaWQr Ii5hc3BlY3RyYXRpbyJdPW8pLHUuY2FsbCgiX3N0b3JlRGlyZWN0R1VJRWRp dCIsdCxzLl9wcmVHVUkscCksbClyLnNldChlKSxoLm5lc3RlZFByb3BlcnR5 KHMsdGhpcy5pZCsiLmNhbWVyYSIpLnNldChlKTtpZihjKWkuc2V0KGEpLGgu bmVzdGVkUHJvcGVydHkocyx0aGlzLmlkKyIuYXNwZWN0cmF0aW8iKS5zZXQo YSksdGhpcy5nbHBsb3QucmVkcmF3KCl9cmV0dXJuIGZ9LGsudXBkYXRlRng9 ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmNhbWVyYTtpZihyKWlmKCJvcmJp dCI9PT10KXIubW9kZT0ib3JiaXQiLHIua2V5QmluZGluZ01vZGU9InJvdGF0 ZSI7ZWxzZSBpZigidHVybnRhYmxlIj09PXQpe3IudXA9WzAsMCwxXSxyLm1v ZGU9InR1cm50YWJsZSIsci5rZXlCaW5kaW5nTW9kZT0icm90YXRlIjt2YXIg bj10aGlzLmdyYXBoRGl2LGE9bi5fZnVsbExheW91dCxpPXRoaXMuZnVsbFNj ZW5lTGF5b3V0LmNhbWVyYSxvPWkudXAueCxzPWkudXAueSxsPWkudXAuejtp ZihsL01hdGguc3FydChvKm8rcypzK2wqbCk8Ljk5OSl7dmFyIGM9dGhpcy5p ZCsiLmNhbWVyYS51cCIsZj17eDowLHk6MCx6OjF9LHA9e307cFtjXT1mO3Zh ciBkPW4ubGF5b3V0O3UuY2FsbCgiX3N0b3JlRGlyZWN0R1VJRWRpdCIsZCxh Ll9wcmVHVUkscCksaS51cD1mLGgubmVzdGVkUHJvcGVydHkoZCxjKS5zZXQo Zil9fWVsc2Ugci5rZXlCaW5kaW5nTW9kZT10O3RoaXMuZnVsbFNjZW5lTGF5 b3V0LmhvdmVybW9kZT1lfSxrLnRvSW1hZ2U9ZnVuY3Rpb24odCl7dHx8KHQ9 InBuZyIpLHRoaXMuc3RhdGljTW9kZSYmdGhpcy5jb250YWluZXIuYXBwZW5k Q2hpbGQobiksdGhpcy5nbHBsb3QucmVkcmF3KCk7dmFyIGU9dGhpcy5nbHBs b3QuZ2wscj1lLmRyYXdpbmdCdWZmZXJXaWR0aCxhPWUuZHJhd2luZ0J1ZmZl ckhlaWdodDtlLmJpbmRGcmFtZWJ1ZmZlcihlLkZSQU1FQlVGRkVSLG51bGwp O3ZhciBpPW5ldyBVaW50OEFycmF5KHIqYSo0KTtlLnJlYWRQaXhlbHMoMCww LHIsYSxlLlJHQkEsZS5VTlNJR05FRF9CWVRFLGkpO2Zvcih2YXIgbz0wLHM9 YS0xO288czsrK28sLS1zKWZvcih2YXIgbD0wO2w8cjsrK2wpZm9yKHZhciBj PTA7Yzw0OysrYyl7dmFyIHU9aVs0KihyKm8rbCkrY107aVs0KihyKm8rbCkr Y109aVs0KihyKnMrbCkrY10saVs0KihyKnMrbCkrY109dX12YXIgaD1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtoLndpZHRoPXIsaC5oZWln aHQ9YTt2YXIgZixwPWguZ2V0Q29udGV4dCgiMmQiKSxkPXAuY3JlYXRlSW1h Z2VEYXRhKHIsYSk7c3dpdGNoKGQuZGF0YS5zZXQoaSkscC5wdXRJbWFnZURh dGEoZCwwLDApLHQpe2Nhc2UianBlZyI6Zj1oLnRvRGF0YVVSTCgiaW1hZ2Uv anBlZyIpO2JyZWFrO2Nhc2Uid2VicCI6Zj1oLnRvRGF0YVVSTCgiaW1hZ2Uv d2VicCIpO2JyZWFrO2RlZmF1bHQ6Zj1oLnRvRGF0YVVSTCgiaW1hZ2UvcG5n Iil9cmV0dXJuIHRoaXMuc3RhdGljTW9kZSYmdGhpcy5jb250YWluZXIucmVt b3ZlQ2hpbGQobiksZn0say5zZXRDb252ZXJ0PWZ1bmN0aW9uKCl7Zm9yKHZh ciB0PTA7dDwzO3QrKyl7dmFyIGU9dGhpcy5mdWxsU2NlbmVMYXlvdXRbVFt0 XV07Zi5zZXRDb252ZXJ0KGUsdGhpcy5mdWxsTGF5b3V0KSxlLnNldFNjYWxl PWgubm9vcH19LGsubWFrZTR0aERpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciB0 PXRoaXMuZ3JhcGhEaXYuX2Z1bGxMYXlvdXQ7dGhpcy5fbW9ja0F4aXM9e3R5 cGU6ImxpbmVhciIsc2hvd2V4cG9uZW50OiJhbGwiLGV4cG9uZW50Zm9ybWF0 OiJCIn0sZi5zZXRDb252ZXJ0KHRoaXMuX21vY2tBeGlzLHQpfSxlLmV4cG9y dHM9d30seyIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2xpYiI6 NzE3LCIuLi8uLi9saWIvc2hvd19ub193ZWJnbF9tc2ciOjczOCwiLi4vLi4v bGliL3N0cjJyZ2JhcnJheSI6NzQwLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v YXhlcyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2xheW91dC9jb252 ZXJ0Ijo4MDksIi4vbGF5b3V0L3NwaWtlcyI6ODEyLCIuL2xheW91dC90aWNr X21hcmtzIjo4MTMsIi4vcHJvamVjdCI6ODE0LCJnbC1wbG90M2QiOjI5Mywi aGFzLXBhc3NpdmUtZXZlbnRzIjo0MTMsImlzLW1vYmlsZSI6NDIyLCJ3ZWJn bC1jb250ZXh0Ijo1NTV9XSw4MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe249bnx8dC5sZW5n dGg7Zm9yKHZhciBhPW5ldyBBcnJheShuKSxpPTA7aTxuO2krKylhW2ldPVt0 W2ldLGVbaV0scltpXV07cmV0dXJuIGF9fSx7fV0sODE3OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vZm9udF9hdHRyaWJ1dGVz IiksYT10KCIuL2FuaW1hdGlvbl9hdHRyaWJ1dGVzIiksaT10KCIuLi9jb21w b25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKSxvPXQoIi4vcGFkX2F0dHJpYnV0 ZXMiKSxzPXQoIi4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGw9bih7ZWRp dFR5cGU6ImNhbGMifSk7bC5mYW1pbHkuZGZsdD0nIk9wZW4gU2FucyIsIHZl cmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyxsLnNpemUuZGZsdD0xMixsLmNv bG9yLmRmbHQ9aS5kZWZhdWx0TGluZSxlLmV4cG9ydHM9e2ZvbnQ6bCx0aXRs ZTp7dGV4dDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToibGF5b3V0c3R5 bGUifSxmb250Om4oe2VkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9KSx4cmVmOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIixkZmx0OiJjb250YWluZXIiLHZhbHVlczpb ImNvbnRhaW5lciIsInBhcGVyIl0sZWRpdFR5cGU6ImxheW91dHN0eWxlIn0s eXJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsZGZsdDoiY29udGFpbmVyIix2 YWx1ZXM6WyJjb250YWluZXIiLCJwYXBlciJdLGVkaXRUeXBlOiJsYXlvdXRz dHlsZSJ9LHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDou NSxlZGl0VHlwZToibGF5b3V0c3R5bGUifSx5Ont2YWxUeXBlOiJudW1iZXIi LG1pbjowLG1heDoxLGRmbHQ6ImF1dG8iLGVkaXRUeXBlOiJsYXlvdXRzdHls ZSJ9LHhhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGRmbHQ6ImF1dG8i LHZhbHVlczpbImF1dG8iLCJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxlZGl0 VHlwZToibGF5b3V0c3R5bGUifSx5YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJh dGVkIixkZmx0OiJhdXRvIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlkZGxl IiwiYm90dG9tIl0sZWRpdFR5cGU6ImxheW91dHN0eWxlIn0scGFkOnMobyh7 ZWRpdFR5cGU6ImxheW91dHN0eWxlIn0pLHt9KSxlZGl0VHlwZToibGF5b3V0 c3R5bGUifSx1bmlmb3JtdGV4dDp7bW9kZTp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlshMSwiaGlkZSIsInNob3ciXSxkZmx0OiExLGVkaXRUeXBl OiJwbG90In0sbWluc2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0 OjAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LGF1dG9zaXpl Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJub25lIn0s d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjEwLGRmbHQ6NzAwLGVkaXRU eXBlOiJwbG90In0saGVpZ2h0Ont2YWxUeXBlOiJudW1iZXIiLG1pbjoxMCxk Zmx0OjQ1MCxlZGl0VHlwZToicGxvdCJ9LG1hcmdpbjp7bDp7dmFsVHlwZToi bnVtYmVyIixtaW46MCxkZmx0OjgwLGVkaXRUeXBlOiJwbG90In0scjp7dmFs VHlwZToibnVtYmVyIixtaW46MCxkZmx0OjgwLGVkaXRUeXBlOiJwbG90In0s dDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwMCxlZGl0VHlwZToi cGxvdCJ9LGI6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDo4MCxlZGl0 VHlwZToicGxvdCJ9LHBhZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0 OjAsZWRpdFR5cGU6InBsb3QifSxhdXRvZXhwYW5kOnt2YWxUeXBlOiJib29s ZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3Qi fSxwYXBlcl9iZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDppLmJhY2tn cm91bmQsZWRpdFR5cGU6InBsb3QifSxwbG90X2JnY29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixkZmx0OmkuYmFja2dyb3VuZCxlZGl0VHlwZToibGF5b3V0c3R5 bGUifSxzZXBhcmF0b3JzOnt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJw bG90In0saGlkZXNvdXJjZXM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEs ZWRpdFR5cGU6InBsb3QifSxzaG93bGVnZW5kOnt2YWxUeXBlOiJib29sZWFu IixlZGl0VHlwZToibGVnZW5kIn0sY29sb3J3YXk6e3ZhbFR5cGU6ImNvbG9y bGlzdCIsZGZsdDppLmRlZmF1bHRzLGVkaXRUeXBlOiJjYWxjIn0sZGF0YXJl dmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0sdWlyZXZp c2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LGVkaXRyZXZp c2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LHNlbGVjdGlv bnJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn0sdGVt cGxhdGU6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifSxtb2RlYmFy OntvcmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsi diIsImgiXSxkZmx0OiJoIixlZGl0VHlwZToibW9kZWJhciJ9LGJnY29sb3I6 e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToibW9kZWJhciJ9LGNvbG9yOnt2 YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6Im1vZGViYXIifSxhY3RpdmVjb2xv cjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJtb2RlYmFyIn0sdWlyZXZp c2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LGVkaXRUeXBl OiJtb2RlYmFyIn0sbWV0YTp7dmFsVHlwZToiYW55IixhcnJheU9rOiEwLGVk aXRUeXBlOiJwbG90In0sdHJhbnNpdGlvbjpzKHt9LGEudHJhbnNpdGlvbix7 ZWRpdFR5cGU6Im5vbmUifSksX2RlcHJlY2F0ZWQ6e3RpdGxlOnt2YWxUeXBl OiJzdHJpbmciLGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LHRpdGxlZm9udDpu KHtlZGl0VHlwZToibGF5b3V0c3R5bGUifSl9fX0seyIuLi9jb21wb25lbnRz L2NvbG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vbGliL2V4dGVuZCI6NzA4LCIu L2FuaW1hdGlvbl9hdHRyaWJ1dGVzIjo3NjAsIi4vZm9udF9hdHRyaWJ1dGVz Ijo3OTEsIi4vcGFkX2F0dHJpYnV0ZXMiOjgyNX1dLDgxODpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Im9wZW4tc3RyZWV0LW1hcCI6 e2lkOiJvc20iLHZlcnNpb246OCxzb3VyY2VzOnsicGxvdGx5LW9zbS10aWxl cyI6e3R5cGU6InJhc3RlciIsYXR0cmlidXRpb246JzxhIGhyZWY9Imh0dHA6 Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvYWJvdXQvIiB0YXJnZXQ9Il9ibGFu ayI+XHhhOSBPcGVuU3RyZWV0TWFwPC9hPicsdGlsZXM6WyJodHRwczovL2Eu dGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmciLCJodHRw czovL2IudGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmci XSx0aWxlU2l6ZToyNTZ9fSxsYXllcnM6W3tpZDoicGxvdGx5LW9zbS10aWxl cyIsdHlwZToicmFzdGVyIixzb3VyY2U6InBsb3RseS1vc20tdGlsZXMiLG1p bnpvb206MCxtYXh6b29tOjIyfV19LCJ3aGl0ZS1iZyI6e2lkOiJ3aGl0ZS1i ZyIsdmVyc2lvbjo4LHNvdXJjZXM6e30sbGF5ZXJzOlt7aWQ6IndoaXRlLWJn Iix0eXBlOiJiYWNrZ3JvdW5kIixwYWludDp7ImJhY2tncm91bmQtY29sb3Ii OiIjRkZGRkZGIn0sbWluem9vbTowLG1heHpvb206MjJ9XX0sImNhcnRvLXBv c2l0cm9uIjp7aWQ6ImNhcnRvLXBvc2l0cm9uIix2ZXJzaW9uOjgsc291cmNl czp7InBsb3RseS1jYXJ0by1wb3NpdHJvbiI6e3R5cGU6InJhc3RlciIsYXR0 cmlidXRpb246JzxhIGhyZWY9Imh0dHBzOi8vY2FydG8uY29tLyIgdGFyZ2V0 PSJfYmxhbmsiPlx4YTkgQ0FSVE88L2E+Jyx0aWxlczpbImh0dHBzOi8vY2Fy dG9kYi1iYXNlbWFwcy1jLmdsb2JhbC5zc2wuZmFzdGx5Lm5ldC9saWdodF9h bGwve3p9L3t4fS97eX0ucG5nIl0sdGlsZVNpemU6MjU2fX0sbGF5ZXJzOlt7 aWQ6InBsb3RseS1jYXJ0by1wb3NpdHJvbiIsdHlwZToicmFzdGVyIixzb3Vy Y2U6InBsb3RseS1jYXJ0by1wb3NpdHJvbiIsbWluem9vbTowLG1heHpvb206 MjJ9XX0sImNhcnRvLWRhcmttYXR0ZXIiOntpZDoiY2FydG8tZGFya21hdHRl ciIsdmVyc2lvbjo4LHNvdXJjZXM6eyJwbG90bHktY2FydG8tZGFya21hdHRl ciI6e3R5cGU6InJhc3RlciIsYXR0cmlidXRpb246JzxhIGhyZWY9Imh0dHBz Oi8vY2FydG8uY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlx4YTkgQ0FSVE88L2E+ Jyx0aWxlczpbImh0dHBzOi8vY2FydG9kYi1iYXNlbWFwcy1jLmdsb2JhbC5z c2wuZmFzdGx5Lm5ldC9kYXJrX2FsbC97en0ve3h9L3t5fS5wbmciXSx0aWxl U2l6ZToyNTZ9fSxsYXllcnM6W3tpZDoicGxvdGx5LWNhcnRvLWRhcmttYXR0 ZXIiLHR5cGU6InJhc3RlciIsc291cmNlOiJwbG90bHktY2FydG8tZGFya21h dHRlciIsbWluem9vbTowLG1heHpvb206MjJ9XX0sInN0YW1lbi10ZXJyYWlu Ijp7aWQ6InN0YW1lbi10ZXJyYWluIix2ZXJzaW9uOjgsc291cmNlczp7InBs b3RseS1zdGFtZW4tdGVycmFpbiI6e3R5cGU6InJhc3RlciIsYXR0cmlidXRp b246J01hcCB0aWxlcyBieSA8YSBocmVmPSJodHRwOi8vc3RhbWVuLmNvbSI+ U3RhbWVuIERlc2lnbjwvYT4sIHVuZGVyIDxhIGhyZWY9Imh0dHA6Ly9jcmVh dGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMCI+Q0MgQlkgMy4wPC9h PiB8IERhdGEgYnkgPGEgaHJlZj0iaHR0cDovL29wZW5zdHJlZXRtYXAub3Jn Ij5PcGVuU3RyZWV0TWFwPC9hPiwgdW5kZXIgPGEgaHJlZj0iaHR0cDovL3d3 dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQiPk9EYkw8L2E+LicsdGls ZXM6WyJodHRwczovL3N0YW1lbi10aWxlcy5hLnNzbC5mYXN0bHkubmV0L3Rl cnJhaW4ve3p9L3t4fS97eX0ucG5nIl0sdGlsZVNpemU6MjU2fX0sbGF5ZXJz Olt7aWQ6InBsb3RseS1zdGFtZW4tdGVycmFpbiIsdHlwZToicmFzdGVyIixz b3VyY2U6InBsb3RseS1zdGFtZW4tdGVycmFpbiIsbWluem9vbTowLG1heHpv b206MjJ9XX0sInN0YW1lbi10b25lciI6e2lkOiJzdGFtZW4tdG9uZXIiLHZl cnNpb246OCxzb3VyY2VzOnsicGxvdGx5LXN0YW1lbi10b25lciI6e3R5cGU6 InJhc3RlciIsYXR0cmlidXRpb246J01hcCB0aWxlcyBieSA8YSBocmVmPSJo dHRwOi8vc3RhbWVuLmNvbSI+U3RhbWVuIERlc2lnbjwvYT4sIHVuZGVyIDxh IGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5 LzMuMCI+Q0MgQlkgMy4wPC9hPiB8IERhdGEgYnkgPGEgaHJlZj0iaHR0cDov L29wZW5zdHJlZXRtYXAub3JnIj5PcGVuU3RyZWV0TWFwPC9hPiwgdW5kZXIg PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmln aHQiPk9EYkw8L2E+LicsdGlsZXM6WyJodHRwczovL3N0YW1lbi10aWxlcy5h LnNzbC5mYXN0bHkubmV0L3RvbmVyL3t6fS97eH0ve3l9LnBuZyJdLHRpbGVT aXplOjI1Nn19LGxheWVyczpbe2lkOiJwbG90bHktc3RhbWVuLXRvbmVyIix0 eXBlOiJyYXN0ZXIiLHNvdXJjZToicGxvdGx5LXN0YW1lbi10b25lciIsbWlu em9vbTowLG1heHpvb206MjJ9XX0sInN0YW1lbi13YXRlcmNvbG9yIjp7aWQ6 InN0YW1lbi13YXRlcmNvbG9yIix2ZXJzaW9uOjgsc291cmNlczp7InBsb3Rs eS1zdGFtZW4td2F0ZXJjb2xvciI6e3R5cGU6InJhc3RlciIsYXR0cmlidXRp b246J01hcCB0aWxlcyBieSA8YSBocmVmPSJodHRwOi8vc3RhbWVuLmNvbSI+ U3RhbWVuIERlc2lnbjwvYT4sIHVuZGVyIDxhIGhyZWY9Imh0dHA6Ly9jcmVh dGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMCI+Q0MgQlkgMy4wPC9h PiB8IERhdGEgYnkgPGEgaHJlZj0iaHR0cDovL29wZW5zdHJlZXRtYXAub3Jn Ij5PcGVuU3RyZWV0TWFwPC9hPiwgdW5kZXIgPGEgaHJlZj0iaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wIj5DQyBCWSBT QTwvYT4uJyx0aWxlczpbImh0dHBzOi8vc3RhbWVuLXRpbGVzLmEuc3NsLmZh c3RseS5uZXQvd2F0ZXJjb2xvci97en0ve3h9L3t5fS5wbmciXSx0aWxlU2l6 ZToyNTZ9fSxsYXllcnM6W3tpZDoicGxvdGx5LXN0YW1lbi13YXRlcmNvbG9y Iix0eXBlOiJyYXN0ZXIiLHNvdXJjZToicGxvdGx5LXN0YW1lbi13YXRlcmNv bG9yIixtaW56b29tOjAsbWF4em9vbToyMn1dfX0sYT1PYmplY3Qua2V5cyhu KTtlLmV4cG9ydHM9e3JlcXVpcmVkVmVyc2lvbjoiMS4zLjIiLHN0eWxlVXJs UHJlZml4OiJtYXBib3g6Ly9zdHlsZXMvbWFwYm94LyIsc3R5bGVVcmxTdWZm aXg6InY5IixzdHlsZVZhbHVlc01hcGJveDpbImJhc2ljIiwic3RyZWV0cyIs Im91dGRvb3JzIiwibGlnaHQiLCJkYXJrIiwic2F0ZWxsaXRlIiwic2F0ZWxs aXRlLXN0cmVldHMiXSxzdHlsZVZhbHVlRGZsdDoiYmFzaWMiLHN0eWxlc05v bk1hcGJveDpuLHN0eWxlVmFsdWVzTm9uTWFwYm94OmEsdHJhY2VMYXllclBy ZWZpeDoicGxvdGx5LXRyYWNlLWxheWVyLSIsbGF5b3V0TGF5ZXJQcmVmaXg6 InBsb3RseS1sYXlvdXQtbGF5ZXItIix3cm9uZ1ZlcnNpb25FcnJvck1zZzpb IllvdXIgY3VzdG9tIHBsb3RseS5qcyBidW5kbGUgaXMgbm90IHVzaW5nIHRo ZSBjb3JyZWN0IG1hcGJveC1nbCB2ZXJzaW9uIiwiUGxlYXNlIGluc3RhbGwg bWFwYm94LWdsQDEuMy4yLiJdLmpvaW4oIlxuIiksbm9BY2Nlc3NUb2tlbkVy cm9yTXNnOlsiTWlzc2luZyBNYXBib3ggYWNjZXNzIHRva2VuLiIsIk1hcGJv eCB0cmFjZSB0eXBlIHJlcXVpcmUgYSBNYXBib3ggYWNjZXNzIHRva2VuIHRv IGJlIHJlZ2lzdGVyZWQuIiwiRm9yIGV4YW1wbGU6IiwiICBQbG90bHkucGxv dChnZCwgZGF0YSwgbGF5b3V0LCB7IG1hcGJveEFjY2Vzc1Rva2VuOiAnbXkt YWNjZXNzLXRva2VuJyB9KTsiLCJNb3JlIGluZm8gaGVyZTogaHR0cHM6Ly93 d3cubWFwYm94LmNvbS9oZWxwL2RlZmluZS1hY2Nlc3MtdG9rZW4vIl0uam9p bigiXG4iKSxtaXNzaW5nU3R5bGVFcnJvck1zZzpbIk5vIHZhbGlkIG1hcGJv eCBzdHlsZSBmb3VuZCwgcGxlYXNlIHNldCBgbWFwYm94LnN0eWxlYCB0byBv bmUgb2Y6IixhLmpvaW4oIiwgIiksIm9yIHJlZ2lzdGVyIGEgTWFwYm94IGFj Y2VzcyB0b2tlbiB0byB1c2UgYSBNYXBib3gtc2VydmVkIHN0eWxlLiJdLmpv aW4oIlxuIiksbXVsdGlwbGVUb2tlbnNFcnJvck1zZzpbIlNldCBtdWx0aXBs ZSBtYXBib3ggYWNjZXNzIHRva2VuIGFjcm9zcyBkaWZmZXJlbnQgbWFwYm94 IHN1YnBsb3QsIiwidXNpbmcgZmlyc3QgdG9rZW4gZm91bmQgYXMgbWFwYm94 LWdsIGRvZXMgbm90IGFsbG93IG11bHRpcGxlYWNjZXNzIHRva2VucyBvbiB0 aGUgc2FtZSBwYWdlLiJdLmpvaW4oIlxuIiksbWFwT25FcnJvck1zZzoiTWFw Ym94IGVycm9yLiIsbWFwYm94TG9nbzp7cGF0aDA6Im0gMTAuNSwxLjI0IGMg LTUuMTEsMCAtOS4yNSw0LjE1IC05LjI1LDkuMjUgMCw1LjEgNC4xNSw5LjI1 IDkuMjUsOS4yNSA1LjEsMCA5LjI1LC00LjE1IDkuMjUsLTkuMjUgMCwtNS4x MSAtNC4xNCwtOS4yNSAtOS4yNSwtOS4yNSB6IG0gNC4zOSwxMS41MyBjIC0x LjkzLDEuOTMgLTQuNzgsMi4zMSAtNi43LDIuMzEgLTAuNywwIC0xLjQxLC0w LjA1IC0yLjEsLTAuMTYgMCwwIC0xLjAyLC01LjY0IDIuMTQsLTguODEgMC44 MywtMC44MyAxLjk1LC0xLjI4IDMuMTMsLTEuMjggMS4yNywwIDIuNDksMC41 MSAzLjM5LDEuNDIgMS44NCwxLjg0IDEuODksNC43NSAwLjE0LDYuNTIgeiIs cGF0aDE6Ik0gMTAuNSwtMC4wMSBDIDQuNywtMC4wMSAwLDQuNyAwLDEwLjQ5 IGMgMCw1Ljc5IDQuNywxMC41IDEwLjUsMTAuNSA1LjgsMCAxMC41LC00Ljcg MTAuNSwtMTAuNSBDIDIwLjk5LDQuNyAxNi4zLC0wLjAxIDEwLjUsLTAuMDEg WiBtIDAsMTkuNzUgYyAtNS4xMSwwIC05LjI1LC00LjE1IC05LjI1LC05LjI1 IDAsLTUuMSA0LjE0LC05LjI2IDkuMjUsLTkuMjYgNS4xMSwwIDkuMjUsNC4x NSA5LjI1LDkuMjUgMCw1LjEzIC00LjE0LDkuMjYgLTkuMjUsOS4yNiB6Iixw YXRoMjoiTSAxNC43NCw2LjI1IEMgMTIuOSw0LjQxIDkuOTgsNC4zNSA4LjIz LDYuMSA1LjA3LDkuMjcgNi4wOSwxNC45MSA2LjA5LDE0LjkxIGMgMCwwIDUu NjQsMS4wMiA4LjgxLC0yLjE0IEMgMTYuNjQsMTEgMTYuNTksOC4wOSAxNC43 NCw2LjI1IFogbSAtMi4yNyw0LjA5IC0wLjkxLDEuODcgLTAuOSwtMS44NyAt MS44NiwtMC45MSAxLjg2LC0wLjkgMC45LC0xLjg3IDAuOTEsMS44NyAxLjg2 LDAuOSB6Iixwb2x5Z29uOiIxMS41NiwxMi4yMSAxMC42NiwxMC4zNCA4Ljgs OS40MyAxMC42Niw4LjUzIDExLjU2LDYuNjYgMTIuNDcsOC41MyAxNC4zMyw5 LjQzIDEyLjQ3LDEwLjM0In0sc3R5bGVSdWxlczp7bWFwOiJvdmVyZmxvdzpo aWRkZW47cG9zaXRpb246cmVsYXRpdmU7IiwibWlzc2luZy1jc3MiOiJkaXNw bGF5Om5vbmU7IixjYW5hcnk6ImJhY2tncm91bmQtY29sb3I6c2FsbW9uOyIs ImN0cmwtYm90dG9tLWxlZnQiOiJwb3NpdGlvbjogYWJzb2x1dGU7IHBvaW50 ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAyOyBib3R0b206IDA7IGxlZnQ6 IDA7IiwiY3RybC1ib3R0b20tcmlnaHQiOiJwb3NpdGlvbjogYWJzb2x1dGU7 IHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAyOyByaWdodDogMDsg Ym90dG9tOiAwOyIsY3RybDoiY2xlYXI6IGJvdGg7IHBvaW50ZXItZXZlbnRz OiBhdXRvOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsiLCJjdHJsLWF0 dHJpYi5tYXBib3hnbC1jb21wYWN0IC5tYXBib3hnbC1jdHJsLWF0dHJpYi1p bm5lciI6ImRpc3BsYXk6IG5vbmU7IiwiY3RybC1hdHRyaWIubWFwYm94Z2wt Y29tcGFjdDpob3ZlciAubWFwYm94Z2wtY3RybC1hdHRyaWItaW5uZXIiOiJk aXNwbGF5OiBibG9jazsgbWFyZ2luLXRvcDoycHgiLCJjdHJsLWF0dHJpYi5t YXBib3hnbC1jb21wYWN0OmhvdmVyIjoicGFkZGluZzogMnB4IDI0cHggMnB4 IDRweDsgdmlzaWJpbGl0eTogdmlzaWJsZTsgbWFyZ2luLXRvcDogNnB4OyIs ImN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Q6OmFmdGVyIjonY29udGVu dDogIiI7IGN1cnNvcjogcG9pbnRlcjsgcG9zaXRpb246IGFic29sdXRlOyBi YWNrZ3JvdW5kLWltYWdlOiB1cmwoXCdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hh cnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB4bWxucz0i aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciJTNFICUzQ3BhdGggZmlsbD0i JTIzMzMzMzMzIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LDEwYTYsNiAw IDEsMCAxMiwwYTYsNiAwIDEsMCAtMTIsMCBNOSw3YTEsMSAwIDEsMCAyLDBh MSwxIDAgMSwwIC0yLDAgTTksMTBhMSwxIDAgMSwxIDIsMGwwLDNhMSwxIDAg MSwxIC0yLDAiLyUzRSAlM0Mvc3ZnJTNFXCcpOyBiYWNrZ3JvdW5kLWNvbG9y OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IHdpZHRoOiAyNHB4OyBoZWln aHQ6IDI0cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJvcmRlci1yYWRp dXM6IDEycHg7JywiY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdCI6Im1p bi1oZWlnaHQ6IDIwcHg7IHBhZGRpbmc6IDA7IG1hcmdpbjogMTBweDsgcG9z aXRpb246IHJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3Jk ZXItcmFkaXVzOiAzcHggMTJweCAxMnB4IDNweDsiLCJjdHJsLWJvdHRvbS1y aWdodCA+IC5tYXBib3hnbC1jdHJsLWF0dHJpYi5tYXBib3hnbC1jb21wYWN0 OjphZnRlciI6ImJvdHRvbTogMDsgcmlnaHQ6IDAiLCJjdHJsLWJvdHRvbS1s ZWZ0ID4gLm1hcGJveGdsLWN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Q6 OmFmdGVyIjoiYm90dG9tOiAwOyBsZWZ0OiAwIiwiY3RybC1ib3R0b20tbGVm dCAubWFwYm94Z2wtY3RybCI6Im1hcmdpbjogMCAwIDEwcHggMTBweDsgZmxv YXQ6IGxlZnQ7IiwiY3RybC1ib3R0b20tcmlnaHQgLm1hcGJveGdsLWN0cmwi OiJtYXJnaW46IDAgMTBweCAxMHB4IDA7IGZsb2F0OiByaWdodDsiLCJjdHJs LWF0dHJpYiI6ImNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNzUpOyB0ZXh0LWRl Y29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweCIsImN0cmwtYXR0cmli IGEiOiJjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjc1KTsgdGV4dC1kZWNvcmF0 aW9uOiBub25lOyBmb250LXNpemU6IDEycHgiLCJjdHJsLWF0dHJpYiBhOmhv dmVyIjoiY29sb3I6IGluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJs aW5lOyIsImN0cmwtYXR0cmliIC5tYXBib3gtaW1wcm92ZS1tYXAiOiJmb250 LXdlaWdodDogYm9sZDsgbWFyZ2luLWxlZnQ6IDJweDsiLCJhdHRyaWItZW1w dHkiOiJkaXNwbGF5OiBub25lOyIsImN0cmwtbG9nbyI6J2Rpc3BsYXk6Ymxv Y2s7IHdpZHRoOiAyMXB4OyBoZWlnaHQ6IDIxcHg7IGJhY2tncm91bmQtaW1h Z2U6IHVybChcJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUz Qz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPyUzRSAlM0Nz dmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93 d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53 My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAg MCAyMSAyMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjEg MjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIiUzRSUzQ2cgdHJhbnNmb3JtPSJ0 cmFuc2xhdGUoMCwwLjAxKSIlM0UlM0NwYXRoIGQ9Im0gMTAuNSwxLjI0IGMg LTUuMTEsMCAtOS4yNSw0LjE1IC05LjI1LDkuMjUgMCw1LjEgNC4xNSw5LjI1 IDkuMjUsOS4yNSA1LjEsMCA5LjI1LC00LjE1IDkuMjUsLTkuMjUgMCwtNS4x MSAtNC4xNCwtOS4yNSAtOS4yNSwtOS4yNSB6IG0gNC4zOSwxMS41MyBjIC0x LjkzLDEuOTMgLTQuNzgsMi4zMSAtNi43LDIuMzEgLTAuNywwIC0xLjQxLC0w LjA1IC0yLjEsLTAuMTYgMCwwIC0xLjAyLC01LjY0IDIuMTQsLTguODEgMC44 MywtMC44MyAxLjk1LC0xLjI4IDMuMTMsLTEuMjggMS4yNywwIDIuNDksMC41 MSAzLjM5LDEuNDIgMS44NCwxLjg0IDEuODksNC43NSAwLjE0LDYuNTIgeiIg c3R5bGU9Im9wYWNpdHk6MC45O2ZpbGw6JTIzZmZmZmZmO2VuYWJsZS1iYWNr Z3JvdW5kOm5ldyIgY2xhc3M9InN0MCIvJTNFJTNDcGF0aCBkPSJNIDEwLjUs LTAuMDEgQyA0LjcsLTAuMDEgMCw0LjcgMCwxMC40OSBjIDAsNS43OSA0Ljcs MTAuNSAxMC41LDEwLjUgNS44LDAgMTAuNSwtNC43IDEwLjUsLTEwLjUgQyAy MC45OSw0LjcgMTYuMywtMC4wMSAxMC41LC0wLjAxIFogbSAwLDE5Ljc1IGMg LTUuMTEsMCAtOS4yNSwtNC4xNSAtOS4yNSwtOS4yNSAwLC01LjEgNC4xNCwt OS4yNiA5LjI1LC05LjI2IDUuMTEsMCA5LjI1LDQuMTUgOS4yNSw5LjI1IDAs NS4xMyAtNC4xNCw5LjI2IC05LjI1LDkuMjYgeiIgc3R5bGU9Im9wYWNpdHk6 MC4zNTtlbmFibGUtYmFja2dyb3VuZDpuZXciIGNsYXNzPSJzdDEiLyUzRSUz Q3BhdGggZD0iTSAxNC43NCw2LjI1IEMgMTIuOSw0LjQxIDkuOTgsNC4zNSA4 LjIzLDYuMSA1LjA3LDkuMjcgNi4wOSwxNC45MSA2LjA5LDE0LjkxIGMgMCww IDUuNjQsMS4wMiA4LjgxLC0yLjE0IEMgMTYuNjQsMTEgMTYuNTksOC4wOSAx NC43NCw2LjI1IFogbSAtMi4yNyw0LjA5IC0wLjkxLDEuODcgLTAuOSwtMS44 NyAtMS44NiwtMC45MSAxLjg2LC0wLjkgMC45LC0xLjg3IDAuOTEsMS44NyAx Ljg2LDAuOSB6IiBzdHlsZT0ib3BhY2l0eTowLjM1O2VuYWJsZS1iYWNrZ3Jv dW5kOm5ldyIgY2xhc3M9InN0MSIvJTNFJTNDcG9seWdvbiBwb2ludHM9IjEx LjU2LDEyLjIxIDEwLjY2LDEwLjM0IDguOCw5LjQzIDEwLjY2LDguNTMgMTEu NTYsNi42NiAxMi40Nyw4LjUzIDE0LjMzLDkuNDMgMTIuNDcsMTAuMzQgIiBz dHlsZT0ib3BhY2l0eTowLjk7ZmlsbDolMjNmZmZmZmY7ZW5hYmxlLWJhY2tn cm91bmQ6bmV3IiBjbGFzcz0ic3QwIi8lM0UlM0MvZyUzRSUzQy9zdmclM0Vc JyknfX19LHt9XSw4MTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 dmFyIHI9dC5zcGxpdCgiICIpLGE9clswXSxpPXJbMV0sbz1uLmlzQXJyYXlP clR5cGVkQXJyYXkoZSk/bi5tZWFuKGUpOmUscz0uNStvLzEwMCxsPTEuNStv LzEwMCxjPVsiIiwiIl0sdT1bMCwwXTtzd2l0Y2goYSl7Y2FzZSJ0b3AiOmNb MF09InRvcCIsdVsxXT0tbDticmVhaztjYXNlImJvdHRvbSI6Y1swXT0iYm90 dG9tIix1WzFdPWx9c3dpdGNoKGkpe2Nhc2UibGVmdCI6Y1sxXT0icmlnaHQi LHVbMF09LXM7YnJlYWs7Y2FzZSJyaWdodCI6Y1sxXT0ibGVmdCIsdVswXT1z fXJldHVybnthbmNob3I6Y1swXSYmY1sxXT9jLmpvaW4oIi0iKTpjWzBdP2Nb MF06Y1sxXT9jWzFdOiJjZW50ZXIiLG9mZnNldDp1fX19LHsiLi4vLi4vbGli Ijo3MTd9XSw4MjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgibWFwYm94LWdsIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4u L3Bsb3RzL2dldF9kYXRhIikuZ2V0U3VicGxvdENhbGNEYXRhLG89dCgiLi4v Li4vY29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKSxzPXQoImQzIiksbD10 KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxjPXQoIi4uLy4uL2xpYi9z dmdfdGV4dF91dGlscyIpLHU9dCgiLi9tYXBib3giKSxoPXIuY29uc3RhbnRz PXQoIi4vY29uc3RhbnRzIik7ZnVuY3Rpb24gZih0KXtyZXR1cm4ic3RyaW5n Ij09dHlwZW9mIHQmJigtMSE9PWguc3R5bGVWYWx1ZXNNYXBib3guaW5kZXhP Zih0KXx8MD09PXQuaW5kZXhPZigibWFwYm94Oi8vIikpfXIubmFtZT0ibWFw Ym94IixyLmF0dHI9InN1YnBsb3QiLHIuaWRSb290PSJtYXBib3giLHIuaWRS ZWdleD1yLmF0dHJSZWdleD1hLmNvdW50ZXJSZWdleCgibWFwYm94Iiksci5h dHRyaWJ1dGVzPXtzdWJwbG90Ont2YWxUeXBlOiJzdWJwbG90aWQiLGRmbHQ6 Im1hcGJveCIsZWRpdFR5cGU6ImNhbGMifX0sci5sYXlvdXRBdHRyaWJ1dGVz PXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxyLnN1cHBseUxheW91dERlZmF1 bHRzPXQoIi4vbGF5b3V0X2RlZmF1bHRzIiksci5wbG90PWZ1bmN0aW9uKHQp e3ZhciBlPXQuX2Z1bGxMYXlvdXQscj10LmNhbGNkYXRhLG89ZS5fc3VicGxv dHMubWFwYm94O2lmKG4udmVyc2lvbiE9PWgucmVxdWlyZWRWZXJzaW9uKXRo cm93IG5ldyBFcnJvcihoLndyb25nVmVyc2lvbkVycm9yTXNnKTt2YXIgcz1m dW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQ7aWYoIiI9PT10Ll9j b250ZXh0Lm1hcGJveEFjY2Vzc1Rva2VuKXJldHVybiIiO2Zvcih2YXIgbj1b XSxpPVtdLG89ITEscz0hMSxsPTA7bDxlLmxlbmd0aDtsKyspe3ZhciBjPXJb ZVtsXV0sdT1jLmFjY2Vzc3Rva2VuO2YoYy5zdHlsZSkmJih1P2EucHVzaFVu aXF1ZShuLHUpOihmKGMuX2lucHV0LnN0eWxlKSYmKGEuZXJyb3IoIlVzZXMg TWFwYm94IG1hcCBzdHlsZSwgYnV0IGRpZCBub3Qgc2V0IGFuIGFjY2VzcyB0 b2tlbi4iKSxvPSEwKSxzPSEwKSksdSYmYS5wdXNoVW5pcXVlKGksdSl9aWYo cyl7dmFyIHA9bz9oLm5vQWNjZXNzVG9rZW5FcnJvck1zZzpoLm1pc3NpbmdT dHlsZUVycm9yTXNnO3Rocm93IGEuZXJyb3IocCksbmV3IEVycm9yKHApfXJl dHVybiBuLmxlbmd0aD8obi5sZW5ndGg+MSYmYS53YXJuKGgubXVsdGlwbGVU b2tlbnNFcnJvck1zZyksblswXSk6KGkubGVuZ3RoJiZhLmxvZyhbIkxpc3Rl ZCBtYXBib3ggYWNjZXNzIHRva2VuKHMpIixpLmpvaW4oIiwiKSwiYnV0IGRp ZCBub3QgdXNlIGEgTWFwYm94IG1hcCBzdHlsZSwgaWdub3JpbmcgdG9rZW4o cykuIl0uam9pbigiICIpKSwiIil9KHQsbyk7bi5hY2Nlc3NUb2tlbj1zO2Zv cih2YXIgbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgYz1vW2xdLHA9aShyLCJt YXBib3giLGMpLGQ9ZVtjXSxnPWQuX3N1YnBsb3Q7Z3x8KGc9bmV3IHUodCxj KSxlW2NdLl9zdWJwbG90PWcpLGcudmlld0luaXRpYWx8fChnLnZpZXdJbml0 aWFsPXtjZW50ZXI6YS5leHRlbmRGbGF0KHt9LGQuY2VudGVyKSx6b29tOmQu em9vbSxiZWFyaW5nOmQuYmVhcmluZyxwaXRjaDpkLnBpdGNofSksZy5wbG90 KHAsZSx0Ll9wcm9taXNlcyl9fSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4p e2Zvcih2YXIgYT1uLl9zdWJwbG90cy5tYXBib3h8fFtdLGk9MDtpPGEubGVu Z3RoO2krKyl7dmFyIG89YVtpXTshZVtvXSYmbltvXS5fc3VicGxvdCYmbltv XS5fc3VicGxvdC5kZXN0cm95KCl9fSxyLnRvU1ZHPWZ1bmN0aW9uKHQpe2Zv cih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fc3VicGxvdHMubWFwYm94LG49 ZS5fc2l6ZSxhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBpPWVbclthXV0sdT1p LmRvbWFpbixmPWkuX3N1YnBsb3QudG9JbWFnZSgicG5nIik7ZS5fZ2xpbWFn ZXMuYXBwZW5kKCJzdmc6aW1hZ2UiKS5hdHRyKHt4bWxuczpvLnN2ZywieGxp bms6aHJlZiI6Zix4Om4ubCtuLncqdS54WzBdLHk6bi50K24uaCooMS11Lnlb MV0pLHdpZHRoOm4udyoodS54WzFdLXUueFswXSksaGVpZ2h0Om4uaCoodS55 WzFdLXUueVswXSkscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KTt2YXIg cD1zLnNlbGVjdChpLl9zdWJwbG90LmRpdik7aWYoIShudWxsPT09cC5zZWxl Y3QoIi5tYXBib3hnbC1jdHJsLWxvZ28iKS5ub2RlKCkub2Zmc2V0UGFyZW50 KSl7dmFyIGQ9ZS5fZ2xpbWFnZXMuYXBwZW5kKCJnIik7ZC5hdHRyKCJ0cmFu c2Zvcm0iLCJ0cmFuc2xhdGUoIisobi5sK24udyp1LnhbMF0rMTApKyIsICIr KG4udCtuLmgqKDEtdS55WzBdKS0zMSkrIikiKSxkLmFwcGVuZCgicGF0aCIp LmF0dHIoImQiLGgubWFwYm94TG9nby5wYXRoMCkuc3R5bGUoe29wYWNpdHk6 LjksZmlsbDoiI2ZmZmZmZiIsImVuYWJsZS1iYWNrZ3JvdW5kIjoibmV3In0p LGQuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsaC5tYXBib3hMb2dvLnBhdGgx KS5zdHlsZSgib3BhY2l0eSIsLjM1KS5zdHlsZSgiZW5hYmxlLWJhY2tncm91 bmQiLCJuZXciKSxkLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLGgubWFwYm94 TG9nby5wYXRoMikuc3R5bGUoIm9wYWNpdHkiLC4zNSkuc3R5bGUoImVuYWJs ZS1iYWNrZ3JvdW5kIiwibmV3IiksZC5hcHBlbmQoInBvbHlnb24iKS5hdHRy KCJwb2ludHMiLGgubWFwYm94TG9nby5wb2x5Z29uKS5zdHlsZSh7b3BhY2l0 eTouOSxmaWxsOiIjZmZmZmZmIiwiZW5hYmxlLWJhY2tncm91bmQiOiJuZXci fSl9dmFyIGc9cC5zZWxlY3QoIi5tYXBib3hnbC1jdHJsLWF0dHJpYiIpLnRl eHQoKS5yZXBsYWNlKCJJbXByb3ZlIHRoaXMgbWFwIiwiIiksdj1lLl9nbGlt YWdlcy5hcHBlbmQoImciKSxtPXYuYXBwZW5kKCJ0ZXh0Iik7bS50ZXh0KGcp LmNsYXNzZWQoInN0YXRpYy1hdHRyaWJ1dGlvbiIsITApLmF0dHIoeyJmb250 LXNpemUiOjEyLCJmb250LWZhbWlseSI6IkFyaWFsIixjb2xvcjoicmdiYSgw LCAwLCAwLCAwLjc1KSIsInRleHQtYW5jaG9yIjoiZW5kIiwiZGF0YS11bmZv cm1hdHRlZCI6Z30pO3ZhciB5PWwuYkJveChtLm5vZGUoKSkseD1uLncqKHUu eFsxXS11LnhbMF0pO2lmKHkud2lkdGg+eC8yKXt2YXIgYj1nLnNwbGl0KCJ8 Iikuam9pbigiPGJyPiIpO20udGV4dChiKS5hdHRyKCJkYXRhLXVuZm9ybWF0 dGVkIixiKS5jYWxsKGMuY29udmVydFRvVHNwYW5zLHQpLHk9bC5iQm94KG0u bm9kZSgpKX1tLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMywgIiso OC15LmhlaWdodCkrIikiKSx2Lmluc2VydCgicmVjdCIsIi5zdGF0aWMtYXR0 cmlidXRpb24iKS5hdHRyKHt4Oi15LndpZHRoLTYseToteS5oZWlnaHQtMyx3 aWR0aDp5LndpZHRoKzYsaGVpZ2h0OnkuaGVpZ2h0KzMsZmlsbDoicmdiYSgy NTUsIDI1NSwgMjU1LCAwLjc1KSJ9KTt2YXIgXz0xO3kud2lkdGgrNj54JiYo Xz14Lyh5LndpZHRoKzYpKTt2YXIgdz1bbi5sK24udyp1LnhbMV0sbi50K24u aCooMS11LnlbMF0pXTt2LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgi K3dbMF0rIiwiK3dbMV0rIikgc2NhbGUoIitfKyIpIil9fSxyLnVwZGF0ZUZ4 PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fc3Vi cGxvdHMubWFwYm94LG49MDtuPHIubGVuZ3RoO24rKyl7ZVtyW25dXS5fc3Vi cGxvdC51cGRhdGVGeChlKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2lu ZyI6NjEzLCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyI6Njk0 LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3 NDEsIi4uLy4uL3Bsb3RzL2dldF9kYXRhIjo4MDAsIi4vY29uc3RhbnRzIjo4 MTgsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjgyMiwiLi9sYXlvdXRfZGVmYXVs dHMiOjgyMywiLi9tYXBib3giOjgyNCxkMzoxNjUsIm1hcGJveC1nbCI6NDI4 fV0sODIxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL2xpYiIpLGE9dCgiLi9jb252ZXJ0X3RleHRfb3B0cyIpLGk9dCgi Li9jb25zdGFudHMiKTtmdW5jdGlvbiBvKHQsZSl7dGhpcy5zdWJwbG90PXQs dGhpcy51aWQ9dC51aWQrIi0iK2UsdGhpcy5pbmRleD1lLHRoaXMuaWRTb3Vy Y2U9InNvdXJjZS0iK3RoaXMudWlkLHRoaXMuaWRMYXllcj1pLmxheW91dExh eWVyUHJlZml4K3RoaXMudWlkLHRoaXMuc291cmNlVHlwZT1udWxsLHRoaXMu c291cmNlPW51bGwsdGhpcy5sYXllclR5cGU9bnVsbCx0aGlzLmJlbG93PW51 bGwsdGhpcy52aXNpYmxlPSExfXZhciBzPW8ucHJvdG90eXBlO2Z1bmN0aW9u IGwodCl7aWYoIXQudmlzaWJsZSlyZXR1cm4hMTt2YXIgZT10LnNvdXJjZTtp ZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXtmb3IodmFyIHI9MDty PGUubGVuZ3RoO3IrKylpZigic3RyaW5nIiE9dHlwZW9mIGVbcl18fDA9PT1l W3JdLmxlbmd0aClyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gbi5pc1BsYWlu T2JqZWN0KGUpfHwic3RyaW5nIj09dHlwZW9mIGUmJmUubGVuZ3RoPjB9ZnVu Y3Rpb24gYyh0KXt2YXIgZT17fSxyPXt9O3N3aXRjaCh0LnR5cGUpe2Nhc2Ui Y2lyY2xlIjpuLmV4dGVuZEZsYXQocix7ImNpcmNsZS1yYWRpdXMiOnQuY2ly Y2xlLnJhZGl1cywiY2lyY2xlLWNvbG9yIjp0LmNvbG9yLCJjaXJjbGUtb3Bh Y2l0eSI6dC5vcGFjaXR5fSk7YnJlYWs7Y2FzZSJsaW5lIjpuLmV4dGVuZEZs YXQocix7ImxpbmUtd2lkdGgiOnQubGluZS53aWR0aCwibGluZS1jb2xvciI6 dC5jb2xvciwibGluZS1vcGFjaXR5Ijp0Lm9wYWNpdHksImxpbmUtZGFzaGFy cmF5Ijp0LmxpbmUuZGFzaH0pO2JyZWFrO2Nhc2UiZmlsbCI6bi5leHRlbmRG bGF0KHIseyJmaWxsLWNvbG9yIjp0LmNvbG9yLCJmaWxsLW91dGxpbmUtY29s b3IiOnQuZmlsbC5vdXRsaW5lY29sb3IsImZpbGwtb3BhY2l0eSI6dC5vcGFj aXR5fSk7YnJlYWs7Y2FzZSJzeW1ib2wiOnZhciBpPXQuc3ltYm9sLG89YShp LnRleHRwb3NpdGlvbixpLmljb25zaXplKTtuLmV4dGVuZEZsYXQoZSx7Imlj b24taW1hZ2UiOmkuaWNvbisiLTE1IiwiaWNvbi1zaXplIjppLmljb25zaXpl LzEwLCJ0ZXh0LWZpZWxkIjppLnRleHQsInRleHQtc2l6ZSI6aS50ZXh0Zm9u dC5zaXplLCJ0ZXh0LWFuY2hvciI6by5hbmNob3IsInRleHQtb2Zmc2V0Ijpv Lm9mZnNldCwic3ltYm9sLXBsYWNlbWVudCI6aS5wbGFjZW1lbnR9KSxuLmV4 dGVuZEZsYXQocix7Imljb24tY29sb3IiOnQuY29sb3IsInRleHQtY29sb3Ii OmkudGV4dGZvbnQuY29sb3IsInRleHQtb3BhY2l0eSI6dC5vcGFjaXR5fSk7 YnJlYWs7Y2FzZSJyYXN0ZXIiOm4uZXh0ZW5kRmxhdChyLHsicmFzdGVyLWZh ZGUtZHVyYXRpb24iOjAsInJhc3Rlci1vcGFjaXR5Ijp0Lm9wYWNpdHl9KX1y ZXR1cm57bGF5b3V0OmUscGFpbnQ6cn19cy51cGRhdGU9ZnVuY3Rpb24odCl7 dGhpcy52aXNpYmxlP3RoaXMubmVlZHNOZXdJbWFnZSh0KT90aGlzLnVwZGF0 ZUltYWdlKHQpOnRoaXMubmVlZHNOZXdTb3VyY2UodCk/KHRoaXMucmVtb3Zl TGF5ZXIoKSx0aGlzLnVwZGF0ZVNvdXJjZSh0KSx0aGlzLnVwZGF0ZUxheWVy KHQpKTp0aGlzLm5lZWRzTmV3TGF5ZXIodCk/dGhpcy51cGRhdGVMYXllcih0 KTp0aGlzLnVwZGF0ZVN0eWxlKHQpOih0aGlzLnVwZGF0ZVNvdXJjZSh0KSx0 aGlzLnVwZGF0ZUxheWVyKHQpKSx0aGlzLnZpc2libGU9bCh0KX0scy5uZWVk c05ld0ltYWdlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN1YnBsb3QubWFw LmdldFNvdXJjZSh0aGlzLmlkU291cmNlKSYmImltYWdlIj09PXRoaXMuc291 cmNlVHlwZSYmImltYWdlIj09PXQuc291cmNldHlwZSYmKHRoaXMuc291cmNl IT09dC5zb3VyY2V8fEpTT04uc3RyaW5naWZ5KHRoaXMuY29vcmRpbmF0ZXMp IT09SlNPTi5zdHJpbmdpZnkodC5jb29yZGluYXRlcykpfSxzLm5lZWRzTmV3 U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNvdXJjZVR5cGUhPT10 LnNvdXJjZXR5cGV8fHRoaXMuc291cmNlIT09dC5zb3VyY2V8fHRoaXMubGF5 ZXJUeXBlIT09dC50eXBlfSxzLm5lZWRzTmV3TGF5ZXI9ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMubGF5ZXJUeXBlIT09dC50eXBlfHx0aGlzLmJlbG93IT09 dGhpcy5zdWJwbG90LmJlbG93TG9va3VwWyJsYXlvdXQtIit0aGlzLmluZGV4 XX0scy51cGRhdGVJbWFnZT1mdW5jdGlvbih0KXt0aGlzLnN1YnBsb3QubWFw LmdldFNvdXJjZSh0aGlzLmlkU291cmNlKS51cGRhdGVJbWFnZSh7dXJsOnQu c291cmNlLGNvb3JkaW5hdGVzOnQuY29vcmRpbmF0ZXN9KX0scy51cGRhdGVT b3VyY2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdWJwbG90Lm1hcDtpZihl LmdldFNvdXJjZSh0aGlzLmlkU291cmNlKSYmZS5yZW1vdmVTb3VyY2UodGhp cy5pZFNvdXJjZSksdGhpcy5zb3VyY2VUeXBlPXQuc291cmNldHlwZSx0aGlz LnNvdXJjZT10LnNvdXJjZSxsKHQpKXt2YXIgcj1mdW5jdGlvbih0KXt2YXIg ZSxyPXQuc291cmNldHlwZSxuPXQuc291cmNlLGE9e3R5cGU6cn07Imdlb2pz b24iPT09cj9lPSJkYXRhIjoidmVjdG9yIj09PXI/ZT0ic3RyaW5nIj09dHlw ZW9mIG4/InVybCI6InRpbGVzIjoicmFzdGVyIj09PXI/KGU9InRpbGVzIixh LnRpbGVTaXplPTI1Nik6ImltYWdlIj09PXImJihlPSJ1cmwiLGEuY29vcmRp bmF0ZXM9dC5jb29yZGluYXRlcyk7YVtlXT1uLHQuc291cmNlYXR0cmlidXRp b24mJihhLmF0dHJpYnV0aW9uPXQuc291cmNlYXR0cmlidXRpb24pO3JldHVy biBhfSh0KTtlLmFkZFNvdXJjZSh0aGlzLmlkU291cmNlLHIpfX0scy51cGRh dGVMYXllcj1mdW5jdGlvbih0KXt2YXIgZSxyPXRoaXMuc3VicGxvdCxuPWMo dCksYT10aGlzLnN1YnBsb3QuYmVsb3dMb29rdXBbImxheW91dC0iK3RoaXMu aW5kZXhdO2lmKCJ0cmFjZXMiPT09YSlmb3IodmFyIG89ci5nZXRNYXBMYXll cnMoKSxzPTA7czxvLmxlbmd0aDtzKyspe3ZhciB1PW9bc10uaWQ7aWYoInN0 cmluZyI9PXR5cGVvZiB1JiYwPT09dS5pbmRleE9mKGkudHJhY2VMYXllclBy ZWZpeCkpe2U9dTticmVha319ZWxzZSBlPWE7dGhpcy5yZW1vdmVMYXllcigp LGwodCkmJnIuYWRkTGF5ZXIoe2lkOnRoaXMuaWRMYXllcixzb3VyY2U6dGhp cy5pZFNvdXJjZSwic291cmNlLWxheWVyIjp0LnNvdXJjZWxheWVyfHwiIix0 eXBlOnQudHlwZSxtaW56b29tOnQubWluem9vbSxtYXh6b29tOnQubWF4em9v bSxsYXlvdXQ6bi5sYXlvdXQscGFpbnQ6bi5wYWludH0sZSksdGhpcy5sYXll clR5cGU9dC50eXBlLHRoaXMuYmVsb3c9YX0scy51cGRhdGVTdHlsZT1mdW5j dGlvbih0KXtpZihsKHQpKXt2YXIgZT1jKHQpO3RoaXMuc3VicGxvdC5zZXRP cHRpb25zKHRoaXMuaWRMYXllciwic2V0TGF5b3V0UHJvcGVydHkiLGUubGF5 b3V0KSx0aGlzLnN1YnBsb3Quc2V0T3B0aW9ucyh0aGlzLmlkTGF5ZXIsInNl dFBhaW50UHJvcGVydHkiLGUucGFpbnQpfX0scy5yZW1vdmVMYXllcj1mdW5j dGlvbigpe3ZhciB0PXRoaXMuc3VicGxvdC5tYXA7dC5nZXRMYXllcih0aGlz LmlkTGF5ZXIpJiZ0LnJlbW92ZUxheWVyKHRoaXMuaWRMYXllcil9LHMuZGlz cG9zZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuc3VicGxvdC5tYXA7dC5nZXRM YXllcih0aGlzLmlkTGF5ZXIpJiZ0LnJlbW92ZUxheWVyKHRoaXMuaWRMYXll ciksdC5nZXRTb3VyY2UodGhpcy5pZFNvdXJjZSkmJnQucmVtb3ZlU291cmNl KHRoaXMuaWRTb3VyY2UpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3Zh ciBuPW5ldyBvKHQsZSk7cmV0dXJuIG4udXBkYXRlKHIpLG59fSx7Ii4uLy4u L2xpYiI6NzE3LCIuL2NvbnN0YW50cyI6ODE4LCIuL2NvbnZlcnRfdGV4dF9v cHRzIjo4MTl9XSw4MjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yIikuZGVmYXVsdExpbmUsaT10KCIuLi9kb21haW4iKS5hdHRyaWJ1dGVz LG89dCgiLi4vZm9udF9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi90cmFjZXMv c2NhdHRlci9hdHRyaWJ1dGVzIikudGV4dHBvc2l0aW9uLGw9dCgiLi4vLi4v cGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGM9dCgiLi4vLi4v cGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5LHU9dCgi Li9jb25zdGFudHMiKSxoPW8oe30pO2guZmFtaWx5LmRmbHQ9Ik9wZW4gU2Fu cyBSZWd1bGFyLCBBcmlhbCBVbmljb2RlIE1TIFJlZ3VsYXIiLChlLmV4cG9y dHM9bCh7X2FycmF5QXR0clJlZ2V4cHM6W24uY291bnRlclJlZ2V4KCJtYXBi b3giLCIubGF5ZXJzIiwhMCldLGRvbWFpbjppKHtuYW1lOiJtYXBib3gifSks YWNjZXNzdG9rZW46e3ZhbFR5cGU6InN0cmluZyIsbm9CbGFuazohMCxzdHJp Y3Q6ITB9LHN0eWxlOnt2YWxUeXBlOiJhbnkiLHZhbHVlczp1LnN0eWxlVmFs dWVzTWFwYm94LmNvbmNhdCh1LnN0eWxlVmFsdWVzTm9uTWFwYm94KSxkZmx0 OnUuc3R5bGVWYWx1ZURmbHR9LGNlbnRlcjp7bG9uOnt2YWxUeXBlOiJudW1i ZXIiLGRmbHQ6MH0sbGF0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MH19LHpv b206e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxfSxiZWFyaW5nOnt2YWxUeXBl OiJudW1iZXIiLGRmbHQ6MH0scGl0Y2g6e3ZhbFR5cGU6Im51bWJlciIsZGZs dDowfSxsYXllcnM6YygibGF5ZXIiLHt2aXNpYmxlOnt2YWxUeXBlOiJib29s ZWFuIixkZmx0OiEwfSxzb3VyY2V0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6WyJnZW9qc29uIiwidmVjdG9yIiwicmFzdGVyIiwiaW1hZ2Ui XSxkZmx0OiJnZW9qc29uIn0sc291cmNlOnt2YWxUeXBlOiJhbnkifSxzb3Vy Y2VsYXllcjp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIifSxzb3VyY2VhdHRy aWJ1dGlvbjp7dmFsVHlwZToic3RyaW5nIn0sdHlwZTp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOlsiY2lyY2xlIiwibGluZSIsImZpbGwiLCJzeW1i b2wiLCJyYXN0ZXIiXSxkZmx0OiJjaXJjbGUifSxjb29yZGluYXRlczp7dmFs VHlwZToiYW55In0sYmVsb3c6e3ZhbFR5cGU6InN0cmluZyJ9LGNvbG9yOnt2 YWxUeXBlOiJjb2xvciIsZGZsdDphfSxvcGFjaXR5Ont2YWxUeXBlOiJudW1i ZXIiLG1pbjowLG1heDoxLGRmbHQ6MX0sbWluem9vbTp7dmFsVHlwZToibnVt YmVyIixtaW46MCxtYXg6MjQsZGZsdDowfSxtYXh6b29tOnt2YWxUeXBlOiJu dW1iZXIiLG1pbjowLG1heDoyNCxkZmx0OjI0fSxjaXJjbGU6e3JhZGl1czp7 dmFsVHlwZToibnVtYmVyIixkZmx0OjE1fX0sbGluZTp7d2lkdGg6e3ZhbFR5 cGU6Im51bWJlciIsZGZsdDoyfSxkYXNoOnt2YWxUeXBlOiJkYXRhX2FycmF5 In19LGZpbGw6e291dGxpbmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6 YX19LHN5bWJvbDp7aWNvbjp7dmFsVHlwZToic3RyaW5nIixkZmx0OiJtYXJr ZXIifSxpY29uc2l6ZTp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEwfSx0ZXh0 Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiJ9LHBsYWNlbWVudDp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicG9pbnQiLCJsaW5lIiwibGluZS1j ZW50ZXIiXSxkZmx0OiJwb2ludCJ9LHRleHRmb250OmgsdGV4dHBvc2l0aW9u Om4uZXh0ZW5kRmxhdCh7fSxzLHthcnJheU9rOiExfSl9fSl9LCJwbG90Iiwi ZnJvbS1yb290IikpLnVpcmV2aXNpb249e3ZhbFR5cGU6ImFueSIsZWRpdFR5 cGU6Im5vbmUifX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4u Ly4uL2xpYiI6NzE3LCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo3NDgs Ii4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vdHJh Y2VzL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMCwiLi4vZG9tYWluIjo3OTAs Ii4uL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuL2NvbnN0YW50cyI6ODE4fV0s ODIzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLGE9dCgiLi4vc3VicGxvdF9kZWZhdWx0cyIpLGk9dCgiLi4v YXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbz10KCIuL2xheW91dF9hdHRy aWJ1dGVzIik7ZnVuY3Rpb24gcyh0LGUscixuKXtyKCJhY2Nlc3N0b2tlbiIs bi5hY2Nlc3NUb2tlbikscigic3R5bGUiKSxyKCJjZW50ZXIubG9uIikscigi Y2VudGVyLmxhdCIpLHIoInpvb20iKSxyKCJiZWFyaW5nIikscigicGl0Y2gi KSxpKHQsZSx7bmFtZToibGF5ZXJzIixoYW5kbGVJdGVtRGVmYXVsdHM6bH0p LGUuX2lucHV0PXR9ZnVuY3Rpb24gbCh0LGUpe2Z1bmN0aW9uIHIocixhKXty ZXR1cm4gbi5jb2VyY2UodCxlLG8ubGF5ZXJzLHIsYSl9aWYocigidmlzaWJs ZSIpKXt2YXIgYSxpPXIoInNvdXJjZXR5cGUiKSxzPSJyYXN0ZXIiPT09aXx8 ImltYWdlIj09PWk7cigic291cmNlIikscigic291cmNlYXR0cmlidXRpb24i KSwidmVjdG9yIj09PWkmJnIoInNvdXJjZWxheWVyIiksImltYWdlIj09PWkm JnIoImNvb3JkaW5hdGVzIikscyYmKGE9InJhc3RlciIpO3ZhciBsPXIoInR5 cGUiLGEpO3MmJiJyYXN0ZXIiIT09bCYmKGw9ZS50eXBlPSJyYXN0ZXIiLG4u bG9nKCJTb3VyY2UgdHlwZXMgKnJhc3RlciogYW5kICppbWFnZSogbXVzdCBk cmF3biAqcmFzdGVyKiBsYXllciB0eXBlLiIpKSxyKCJiZWxvdyIpLHIoImNv bG9yIikscigib3BhY2l0eSIpLHIoIm1pbnpvb20iKSxyKCJtYXh6b29tIiks ImNpcmNsZSI9PT1sJiZyKCJjaXJjbGUucmFkaXVzIiksImxpbmUiPT09bCYm KHIoImxpbmUud2lkdGgiKSxyKCJsaW5lLmRhc2giKSksImZpbGwiPT09bCYm cigiZmlsbC5vdXRsaW5lY29sb3IiKSwic3ltYm9sIj09PWwmJihyKCJzeW1i b2wuaWNvbiIpLHIoInN5bWJvbC5pY29uc2l6ZSIpLHIoInN5bWJvbC50ZXh0 Iiksbi5jb2VyY2VGb250KHIsInN5bWJvbC50ZXh0Zm9udCIpLHIoInN5bWJv bC50ZXh0cG9zaXRpb24iKSxyKCJzeW1ib2wucGxhY2VtZW50IikpfX1lLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2EodCxlLHIse3R5cGU6Im1hcGJveCIs YXR0cmlidXRlczpvLGhhbmRsZURlZmF1bHRzOnMscGFydGl0aW9uOiJ5Iixh Y2Nlc3NUb2tlbjplLl9tYXBib3hBY2Nlc3NUb2tlbn0pfX0seyIuLi8uLi9s aWIiOjcxNywiLi4vYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4u L3N1YnBsb3RfZGVmYXVsdHMiOjg0MCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6 ODIyfV0sODI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIm1hcGJveC1nbCIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLGk9 dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9saWIvZ2VvX2xvY2F0aW9uX3V0 aWxzIikscz10KCIuLi8uLi9yZWdpc3RyeSIpLGw9dCgiLi4vY2FydGVzaWFu L2F4ZXMiKSxjPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiKSx1 PXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5wcmVwU2VsZWN0LGg9dCgiLi4v Y2FydGVzaWFuL3NlbGVjdCIpLnNlbGVjdE9uQ2xpY2ssZj10KCIuL2NvbnN0 YW50cyIpLHA9dCgiLi9sYXllcnMiKTtmdW5jdGlvbiBkKHQsZSl7dGhpcy5p ZD1lLHRoaXMuZ2Q9dDt2YXIgcj10Ll9mdWxsTGF5b3V0LG49dC5fY29udGV4 dDt0aGlzLmNvbnRhaW5lcj1yLl9nbGNvbnRhaW5lci5ub2RlKCksdGhpcy5p c1N0YXRpYz1uLnN0YXRpY1Bsb3QsdGhpcy51aWQ9ci5fdWlkKyItIit0aGlz LmlkLHRoaXMuZGl2PW51bGwsdGhpcy54YXhpcz1udWxsLHRoaXMueWF4aXM9 bnVsbCx0aGlzLmNyZWF0ZUZyYW1ld29yayhyKSx0aGlzLm1hcD1udWxsLHRo aXMuYWNjZXNzVG9rZW49bnVsbCx0aGlzLnN0eWxlT2JqPW51bGwsdGhpcy50 cmFjZUhhc2g9e30sdGhpcy5sYXllckxpc3Q9W10sdGhpcy5iZWxvd0xvb2t1 cD17fSx0aGlzLmRyYWdnaW5nPSExLHRoaXMud2hlZWxpbmc9ITF9dmFyIGc9 ZC5wcm90b3R5cGU7Zy5wbG90PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhPXRo aXMsaT1lW2EuaWRdO2EubWFwJiZpLmFjY2Vzc3Rva2VuIT09YS5hY2Nlc3NU b2tlbiYmKGEubWFwLnJlbW92ZSgpLGEubWFwPW51bGwsYS5zdHlsZU9iaj1u dWxsLGEudHJhY2VIYXNoPVtdLGEubGF5ZXJMaXN0PXt9KSxuPWEubWFwP25l dyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7YS51cGRhdGVNYXAodCxlLHIsbil9 KTpuZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe2EuY3JlYXRlTWFwKHQsZSxy LG4pfSksci5wdXNoKG4pfSxnLmNyZWF0ZU1hcD1mdW5jdGlvbih0LGUscixh KXt2YXIgaT10aGlzLHM9ZVtpLmlkXSxsPWkuc3R5bGVPYmo9bShzLnN0eWxl KTtpLmFjY2Vzc1Rva2VuPXMuYWNjZXNzdG9rZW47dmFyIGM9aS5tYXA9bmV3 IG4uTWFwKHtjb250YWluZXI6aS5kaXYsc3R5bGU6bC5zdHlsZSxjZW50ZXI6 eChzLmNlbnRlciksem9vbTpzLnpvb20sYmVhcmluZzpzLmJlYXJpbmcscGl0 Y2g6cy5waXRjaCxpbnRlcmFjdGl2ZTohaS5pc1N0YXRpYyxwcmVzZXJ2ZURy YXdpbmdCdWZmZXI6aS5pc1N0YXRpYyxkb3VibGVDbGlja1pvb206ITEsYm94 Wm9vbTohMSxhdHRyaWJ1dGlvbkNvbnRyb2w6ITF9KS5hZGRDb250cm9sKG5l dyBuLkF0dHJpYnV0aW9uQ29udHJvbCh7Y29tcGFjdDohMH0pKTtjLl9jYW52 YXMuc3R5bGUubGVmdD0iMHB4IixjLl9jYW52YXMuc3R5bGUudG9wPSIwcHgi LGkucmVqZWN0T25FcnJvcihhKSxpLmlzU3RhdGljfHxpLmluaXRGeCh0LGUp O3ZhciB1PVtdO3UucHVzaChuZXcgUHJvbWlzZShmdW5jdGlvbih0KXtjLm9u Y2UoImxvYWQiLHQpfSkpLHU9dS5jb25jYXQoby5mZXRjaFRyYWNlR2VvRGF0 YSh0KSksUHJvbWlzZS5hbGwodSkudGhlbihmdW5jdGlvbigpe2kuZmlsbEJl bG93TG9va3VwKHQsZSksaS51cGRhdGVEYXRhKHQpLGkudXBkYXRlTGF5b3V0 KGUpLGkucmVzb2x2ZU9uUmVuZGVyKHIpfSkuY2F0Y2goYSl9LGcudXBkYXRl TWFwPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXMsaT1hLm1hcCxzPWVb dGhpcy5pZF07YS5yZWplY3RPbkVycm9yKG4pO3ZhciBsPVtdLGM9bShzLnN0 eWxlKTthLnN0eWxlT2JqLmlkIT09Yy5pZCYmKGEuc3R5bGVPYmo9YyxpLnNl dFN0eWxlKGMuc3R5bGUpLGEudHJhY2VIYXNoPXt9LGwucHVzaChuZXcgUHJv bWlzZShmdW5jdGlvbih0KXtpLm9uY2UoInN0eWxlZGF0YSIsdCl9KSkpLGw9 bC5jb25jYXQoby5mZXRjaFRyYWNlR2VvRGF0YSh0KSksUHJvbWlzZS5hbGwo bCkudGhlbihmdW5jdGlvbigpe2EuZmlsbEJlbG93TG9va3VwKHQsZSksYS51 cGRhdGVEYXRhKHQpLGEudXBkYXRlTGF5b3V0KGUpLGEucmVzb2x2ZU9uUmVu ZGVyKHIpfSkuY2F0Y2gobil9LGcuZmlsbEJlbG93TG9va3VwPWZ1bmN0aW9u KHQsZSl7dmFyIHIsbixhPWVbdGhpcy5pZF0ubGF5ZXJzLGk9dGhpcy5iZWxv d0xvb2t1cD17fSxvPSExO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBz PXRbcl1bMF0udHJhY2UsbD1zLl9tb2R1bGU7InN0cmluZyI9PXR5cGVvZiBz LmJlbG93P249cy5iZWxvdzpsLmdldEJlbG93JiYobj1sLmdldEJlbG93KHMs dGhpcykpLCIiPT09biYmKG89ITApLGlbInRyYWNlLSIrcy51aWRdPW58fCIi fWZvcihyPTA7cjxhLmxlbmd0aDtyKyspe3ZhciBjPWFbcl07bj0ic3RyaW5n Ij09dHlwZW9mIGMuYmVsb3c/Yy5iZWxvdzpvPyJ0cmFjZXMiOiIiLGlbImxh eW91dC0iK3JdPW59dmFyIHUsaCxmPXt9O2Zvcih1IGluIGkpZltuPWlbdV1d P2Zbbl0ucHVzaCh1KTpmW25dPVt1XTtmb3IobiBpbiBmKXt2YXIgcD1mW25d O2lmKHAubGVuZ3RoPjEpZm9yKHI9MDtyPHAubGVuZ3RoO3IrKykwPT09KHU9 cFtyXSkuaW5kZXhPZigidHJhY2UtIik/KGg9dS5zcGxpdCgidHJhY2UtIilb MV0sdGhpcy50cmFjZUhhc2hbaF0mJih0aGlzLnRyYWNlSGFzaFtoXS5iZWxv dz1udWxsKSk6MD09PXUuaW5kZXhPZigibGF5b3V0LSIpJiYoaD11LnNwbGl0 KCJsYXlvdXQtIilbMV0sdGhpcy5sYXllckxpc3RbaF0mJih0aGlzLmxheWVy TGlzdFtoXS5iZWxvdz1udWxsKSl9fTt2YXIgdj17Y2hvcm9wbGV0aG1hcGJv eDowLGRlbnNpdHltYXBib3g6MSxzY2F0dGVybWFwYm94OjJ9O2Z1bmN0aW9u IG0odCl7dmFyIGU9e307cmV0dXJuIGkuaXNQbGFpbk9iamVjdCh0KT8oZS5p ZD10LmlkLGUuc3R5bGU9dCk6InN0cmluZyI9PXR5cGVvZiB0PyhlLmlkPXQs LTEhPT1mLnN0eWxlVmFsdWVzTWFwYm94LmluZGV4T2YodCk/ZS5zdHlsZT15 KHQpOmYuc3R5bGVzTm9uTWFwYm94W3RdP2Uuc3R5bGU9Zi5zdHlsZXNOb25N YXBib3hbdF06ZS5zdHlsZT10KTooZS5pZD1mLnN0eWxlVmFsdWVEZmx0LGUu c3R5bGU9eShmLnN0eWxlVmFsdWVEZmx0KSksZS50cmFuc2l0aW9uPXtkdXJh dGlvbjowLGRlbGF5OjB9LGV9ZnVuY3Rpb24geSh0KXtyZXR1cm4gZi5zdHls ZVVybFByZWZpeCt0KyItIitmLnN0eWxlVXJsU3VmZml4fWZ1bmN0aW9uIHgo dCl7cmV0dXJuW3QubG9uLHQubGF0XX1nLnVwZGF0ZURhdGE9ZnVuY3Rpb24o dCl7dmFyIGUscixuLGEsaT10aGlzLnRyYWNlSGFzaCxvPXQuc2xpY2UoKS5z b3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZbdFswXS50cmFjZS50eXBlXS12 W2VbMF0udHJhY2UudHlwZV19KTtmb3Iobj0wO248by5sZW5ndGg7bisrKXt2 YXIgcz1vW25dLGw9ITE7KGU9aVsocj1zWzBdLnRyYWNlKS51aWRdKSYmKGUu dHlwZT09PXIudHlwZT8oZS51cGRhdGUocyksbD0hMCk6ZS5kaXNwb3NlKCkp LCFsJiZyLl9tb2R1bGUmJihpW3IudWlkXT1yLl9tb2R1bGUucGxvdCh0aGlz LHMpKX12YXIgYz1PYmplY3Qua2V5cyhpKTt0OmZvcihuPTA7bjxjLmxlbmd0 aDtuKyspe3ZhciB1PWNbbl07Zm9yKGE9MDthPHQubGVuZ3RoO2ErKylpZih1 PT09KHI9dFthXVswXS50cmFjZSkudWlkKWNvbnRpbnVlIHQ7KGU9aVt1XSku ZGlzcG9zZSgpLGRlbGV0ZSBpW3VdfX0sZy51cGRhdGVMYXlvdXQ9ZnVuY3Rp b24odCl7dmFyIGU9dGhpcy5tYXAscj10W3RoaXMuaWRdO3RoaXMuZHJhZ2dp bmd8fHRoaXMud2hlZWxpbmd8fChlLnNldENlbnRlcih4KHIuY2VudGVyKSks ZS5zZXRab29tKHIuem9vbSksZS5zZXRCZWFyaW5nKHIuYmVhcmluZyksZS5z ZXRQaXRjaChyLnBpdGNoKSksdGhpcy51cGRhdGVMYXllcnModCksdGhpcy51 cGRhdGVGcmFtZXdvcmsodCksdGhpcy51cGRhdGVGeCh0KSx0aGlzLm1hcC5y ZXNpemUoKSx0aGlzLmdkLl9jb250ZXh0Ll9zY3JvbGxab29tLm1hcGJveD9l LnNjcm9sbFpvb20uZW5hYmxlKCk6ZS5zY3JvbGxab29tLmRpc2FibGUoKX0s Zy5yZXNvbHZlT25SZW5kZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tYXA7 ZS5vbigicmVuZGVyIixmdW5jdGlvbiByKCl7ZS5sb2FkZWQoKSYmKGUub2Zm KCJyZW5kZXIiLHIpLHNldFRpbWVvdXQodCwxMCkpfSl9LGcucmVqZWN0T25F cnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm1hcDtmdW5jdGlvbiByKCl7 dChuZXcgRXJyb3IoZi5tYXBPbkVycm9yTXNnKSl9ZS5vbmNlKCJlcnJvciIs ciksZS5vbmNlKCJzdHlsZS5lcnJvciIsciksZS5vbmNlKCJzb3VyY2UuZXJy b3IiLHIpLGUub25jZSgidGlsZS5lcnJvciIsciksZS5vbmNlKCJsYXllci5l cnJvciIscil9LGcuY3JlYXRlRnJhbWV3b3JrPWZ1bmN0aW9uKHQpe3ZhciBl PXRoaXMscj1lLmRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTty LmlkPWUudWlkLHIuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixlLmNvbnRh aW5lci5hcHBlbmRDaGlsZChyKSxlLnhheGlzPXtfaWQ6IngiLGMycDpmdW5j dGlvbih0KXtyZXR1cm4gZS5wcm9qZWN0KHQpLnh9fSxlLnlheGlzPXtfaWQ6 InkiLGMycDpmdW5jdGlvbih0KXtyZXR1cm4gZS5wcm9qZWN0KHQpLnl9fSxl LnVwZGF0ZUZyYW1ld29yayh0KSxlLm1vY2tBeGlzPXt0eXBlOiJsaW5lYXIi LHNob3dleHBvbmVudDoiYWxsIixleHBvbmVudGZvcm1hdDoiQiJ9LGwuc2V0 Q29udmVydChlLm1vY2tBeGlzLHQpfSxnLmluaXRGeD1mdW5jdGlvbih0LGUp e3ZhciByPXRoaXMsbj1yLmdkLGk9ci5tYXA7ZnVuY3Rpb24gbygpe2EubG9u ZVVuaG92ZXIoZS5faG92ZXJsYXllcil9ZnVuY3Rpb24gbCgpe3ZhciB0PXIu Z2V0VmlldygpO24uZW1pdCgicGxvdGx5X3JlbGF5b3V0aW5nIixyLmdldFZp ZXdFZGl0c1dpdGhEZXJpdmVkKHQpKX1pLm9uKCJtb3ZlZW5kIixmdW5jdGlv bih0KXtpZihyLm1hcCl7dmFyIGU9bi5fZnVsbExheW91dDtpZih0Lm9yaWdp bmFsRXZlbnR8fHIud2hlZWxpbmcpe3ZhciBhPWVbci5pZF07cy5jYWxsKCJf c3RvcmVEaXJlY3RHVUlFZGl0IixuLmxheW91dCxlLl9wcmVHVUksci5nZXRW aWV3RWRpdHMoYSkpO3ZhciBpPXIuZ2V0VmlldygpO2EuX2lucHV0LmNlbnRl cj1hLmNlbnRlcj1pLmNlbnRlcixhLl9pbnB1dC56b29tPWEuem9vbT1pLnpv b20sYS5faW5wdXQuYmVhcmluZz1hLmJlYXJpbmc9aS5iZWFyaW5nLGEuX2lu cHV0LnBpdGNoPWEucGl0Y2g9aS5waXRjaCxuLmVtaXQoInBsb3RseV9yZWxh eW91dCIsci5nZXRWaWV3RWRpdHNXaXRoRGVyaXZlZChpKSl9dC5vcmlnaW5h bEV2ZW50JiYibW91c2V1cCI9PT10Lm9yaWdpbmFsRXZlbnQudHlwZT9yLmRy YWdnaW5nPSExOnIud2hlZWxpbmcmJihyLndoZWVsaW5nPSExKSxlLl9yZWhv dmVyJiZlLl9yZWhvdmVyKCl9fSksaS5vbigid2hlZWwiLGZ1bmN0aW9uKCl7 ci53aGVlbGluZz0hMH0pLGkub24oIm1vdXNlbW92ZSIsZnVuY3Rpb24odCl7 dmFyIGU9ci5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5jbGllbnRY PXQucG9pbnQueCtlLmxlZnQsdC5jbGllbnRZPXQucG9pbnQueStlLnRvcCx0 LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3Q9ZnVuY3Rpb24oKXtyZXR1 cm4gZX0sci54YXhpcy5wMmM9ZnVuY3Rpb24oKXtyZXR1cm4gdC5sbmdMYXQu bG5nfSxyLnlheGlzLnAyYz1mdW5jdGlvbigpe3JldHVybiB0LmxuZ0xhdC5s YXR9LG4uX2Z1bGxMYXlvdXQuX3JlaG92ZXI9ZnVuY3Rpb24oKXtuLl9mdWxs TGF5b3V0Ll9ob3ZlcnN1YnBsb3Q9PT1yLmlkJiZuLl9mdWxsTGF5b3V0W3Iu aWRdJiZhLmhvdmVyKG4sdCxyLmlkKX0sYS5ob3ZlcihuLHQsci5pZCksbi5f ZnVsbExheW91dC5faG92ZXJzdWJwbG90PXIuaWR9KSxpLm9uKCJkcmFnc3Rh cnQiLGZ1bmN0aW9uKCl7ci5kcmFnZ2luZz0hMCxvKCl9KSxpLm9uKCJ6b29t c3RhcnQiLG8pLGkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe24uX2Z1bGxM YXlvdXQuX2hvdmVyc3VicGxvdD1udWxsfSksaS5vbigiZHJhZyIsbCksaS5v bigiem9vbSIsbCksaS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKCl7dmFyIHQ9 bi5fZnVsbExheW91dFtyLmlkXTtzLmNhbGwoIl9zdG9yZURpcmVjdEdVSUVk aXQiLG4ubGF5b3V0LG4uX2Z1bGxMYXlvdXQuX3ByZUdVSSxyLmdldFZpZXdF ZGl0cyh0KSk7dmFyIGU9ci52aWV3SW5pdGlhbDtpLnNldENlbnRlcih4KGUu Y2VudGVyKSksaS5zZXRab29tKGUuem9vbSksaS5zZXRCZWFyaW5nKGUuYmVh cmluZyksaS5zZXRQaXRjaChlLnBpdGNoKTt2YXIgYT1yLmdldFZpZXcoKTt0 Ll9pbnB1dC5jZW50ZXI9dC5jZW50ZXI9YS5jZW50ZXIsdC5faW5wdXQuem9v bT10Lnpvb209YS56b29tLHQuX2lucHV0LmJlYXJpbmc9dC5iZWFyaW5nPWEu YmVhcmluZyx0Ll9pbnB1dC5waXRjaD10LnBpdGNoPWEucGl0Y2gsbi5lbWl0 KCJwbG90bHlfZG91YmxlY2xpY2siLG51bGwpLG4uZW1pdCgicGxvdGx5X3Jl bGF5b3V0IixyLmdldFZpZXdFZGl0c1dpdGhEZXJpdmVkKGEpKX0pLHIuY2xl YXJTZWxlY3Q9ZnVuY3Rpb24oKXtuLl9mdWxsTGF5b3V0Ll96b29tbGF5ZXIu c2VsZWN0QWxsKCIuc2VsZWN0LW91dGxpbmUiKS5yZW1vdmUoKX0sci5vbkNs aWNrSW5QYW5Gbj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFy IGk9bi5fZnVsbExheW91dC5jbGlja21vZGU7aS5pbmRleE9mKCJzZWxlY3Qi KT4tMSYmaChlLm9yaWdpbmFsRXZlbnQsbixbci54YXhpc10sW3IueWF4aXNd LHIuaWQsdCksaS5pbmRleE9mKCJldmVudCIpPi0xJiZhLmNsaWNrKG4sZS5v cmlnaW5hbEV2ZW50KX19fSxnLnVwZGF0ZUZ4PWZ1bmN0aW9uKHQpe3ZhciBl PXRoaXMscj1lLm1hcCxuPWUuZ2Q7aWYoIWUuaXNTdGF0aWMpe3ZhciBhLG89 dC5kcmFnbW9kZTthPSJzZWxlY3QiPT09bz9mdW5jdGlvbih0LHIpeyh0LnJh bmdlPXt9KVtlLmlkXT1bbChbci54bWluLHIueW1pbl0pLGwoW3IueG1heCxy LnltYXhdKV19OmZ1bmN0aW9uKHQscixuKXsodC5sYXNzb1BvaW50cz17fSlb ZS5pZF09bi5maWx0ZXJlZC5tYXAobCl9O3ZhciBzPWUuZHJhZ09wdGlvbnM7 ZS5kcmFnT3B0aW9ucz1pLmV4dGVuZERlZXAoc3x8e30se2VsZW1lbnQ6ZS5k aXYsZ2Q6bixwbG90aW5mbzp7aWQ6ZS5pZCx4YXhpczplLnhheGlzLHlheGlz OmUueWF4aXMsZmlsbFJhbmdlSXRlbXM6YX0seGF4ZXM6W2UueGF4aXNdLHlh eGVzOltlLnlheGlzXSxzdWJwbG90OmUuaWR9KSxyLm9mZigiY2xpY2siLGUu b25DbGlja0luUGFuSGFuZGxlciksInNlbGVjdCI9PT1vfHwibGFzc28iPT09 bz8oci5kcmFnUGFuLmRpc2FibGUoKSxyLm9uKCJ6b29tc3RhcnQiLGUuY2xl YXJTZWxlY3QpLGUuZHJhZ09wdGlvbnMucHJlcEZuPWZ1bmN0aW9uKHQscixu KXt1KHQscixuLGUuZHJhZ09wdGlvbnMsbyl9LGMuaW5pdChlLmRyYWdPcHRp b25zKSk6KHIuZHJhZ1Bhbi5lbmFibGUoKSxyLm9mZigiem9vbXN0YXJ0Iixl LmNsZWFyU2VsZWN0KSxlLmRpdi5vbm1vdXNlZG93bj1udWxsLGUub25DbGlj a0luUGFuSGFuZGxlcj1lLm9uQ2xpY2tJblBhbkZuKGUuZHJhZ09wdGlvbnMp LHIub24oImNsaWNrIixlLm9uQ2xpY2tJblBhbkhhbmRsZXIpKX1mdW5jdGlv biBsKHQpe3ZhciByPWUubWFwLnVucHJvamVjdCh0KTtyZXR1cm5bci5sbmcs ci5sYXRdfX0sZy51cGRhdGVGcmFtZXdvcms9ZnVuY3Rpb24odCl7dmFyIGU9 dFt0aGlzLmlkXS5kb21haW4scj10Ll9zaXplLG49dGhpcy5kaXYuc3R5bGU7 bi53aWR0aD1yLncqKGUueFsxXS1lLnhbMF0pKyJweCIsbi5oZWlnaHQ9ci5o KihlLnlbMV0tZS55WzBdKSsicHgiLG4ubGVmdD1yLmwrZS54WzBdKnIudysi cHgiLG4udG9wPXIudCsoMS1lLnlbMV0pKnIuaCsicHgiLHRoaXMueGF4aXMu X29mZnNldD1yLmwrZS54WzBdKnIudyx0aGlzLnhheGlzLl9sZW5ndGg9ci53 KihlLnhbMV0tZS54WzBdKSx0aGlzLnlheGlzLl9vZmZzZXQ9ci50KygxLWUu eVsxXSkqci5oLHRoaXMueWF4aXMuX2xlbmd0aD1yLmgqKGUueVsxXS1lLnlb MF0pfSxnLnVwZGF0ZUxheWVycz1mdW5jdGlvbih0KXt2YXIgZSxyPXRbdGhp cy5pZF0ubGF5ZXJzLG49dGhpcy5sYXllckxpc3Q7aWYoci5sZW5ndGghPT1u Lmxlbmd0aCl7Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdLmRpc3Bvc2Uo KTtmb3Iobj10aGlzLmxheWVyTGlzdD1bXSxlPTA7ZTxyLmxlbmd0aDtlKysp bi5wdXNoKHAodGhpcyxlLHJbZV0pKX1lbHNlIGZvcihlPTA7ZTxyLmxlbmd0 aDtlKyspbltlXS51cGRhdGUocltlXSl9LGcuZGVzdHJveT1mdW5jdGlvbigp e3RoaXMubWFwJiYodGhpcy5tYXAucmVtb3ZlKCksdGhpcy5tYXA9bnVsbCx0 aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLmRpdikpfSxnLnRvSW1h Z2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAuc3RvcCgpLHRoaXMubWFw LmdldENhbnZhcygpLnRvRGF0YVVSTCgpfSxnLnNldE9wdGlvbnM9ZnVuY3Rp b24odCxlLHIpe2Zvcih2YXIgbiBpbiByKXRoaXMubWFwW2VdKHQsbixyW25d KX0sZy5nZXRNYXBMYXllcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAu Z2V0U3R5bGUoKS5sYXllcnN9LGcuYWRkTGF5ZXI9ZnVuY3Rpb24odCxlKXt2 YXIgcj10aGlzLm1hcDtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCIiPT09 ZSlyZXR1cm4gdm9pZCByLmFkZExheWVyKHQsZSk7Zm9yKHZhciBuPXRoaXMu Z2V0TWFwTGF5ZXJzKCksYT0wO2E8bi5sZW5ndGg7YSsrKWlmKGU9PT1uW2Fd LmlkKXJldHVybiB2b2lkIHIuYWRkTGF5ZXIodCxlKTtpLndhcm4oWyJUcnlp bmcgdG8gYWRkIGxheWVyIHdpdGggKmJlbG93KiB2YWx1ZSIsZSwicmVmZXJl bmNpbmcgYSBsYXllciB0aGF0IGRvZXMgbm90IGV4aXN0Iiwib3IgdGhhdCBk b2VzIG5vdCB5ZXQgZXhpc3QuIl0uam9pbigiICIpKX1yLmFkZExheWVyKHQp fSxnLnByb2plY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwLnByb2pl Y3QobmV3IG4uTG5nTGF0KHRbMF0sdFsxXSkpfSxnLmdldFZpZXc9ZnVuY3Rp b24oKXt2YXIgdD10aGlzLm1hcCxlPXQuZ2V0Q2VudGVyKCkscj17bG9uOmUu bG5nLGxhdDplLmxhdH0sbj10LmdldENhbnZhcygpLGE9bi53aWR0aCxpPW4u aGVpZ2h0O3JldHVybntjZW50ZXI6cix6b29tOnQuZ2V0Wm9vbSgpLGJlYXJp bmc6dC5nZXRCZWFyaW5nKCkscGl0Y2g6dC5nZXRQaXRjaCgpLF9kZXJpdmVk Ontjb29yZGluYXRlczpbdC51bnByb2plY3QoWzAsMF0pLnRvQXJyYXkoKSx0 LnVucHJvamVjdChbYSwwXSkudG9BcnJheSgpLHQudW5wcm9qZWN0KFthLGld KS50b0FycmF5KCksdC51bnByb2plY3QoWzAsaV0pLnRvQXJyYXkoKV19fX0s Zy5nZXRWaWV3RWRpdHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuaWQs cj1bImNlbnRlciIsInpvb20iLCJiZWFyaW5nIiwicGl0Y2giXSxuPXt9LGE9 MDthPHIubGVuZ3RoO2ErKyl7dmFyIGk9clthXTtuW2UrIi4iK2ldPXRbaV19 cmV0dXJuIG59LGcuZ2V0Vmlld0VkaXRzV2l0aERlcml2ZWQ9ZnVuY3Rpb24o dCl7dmFyIGU9dGhpcy5pZCxyPXRoaXMuZ2V0Vmlld0VkaXRzKHQpO3JldHVy biByW2UrIi5fZGVyaXZlZCJdPXQuX2Rlcml2ZWQscn0sZS5leHBvcnRzPWR9 LHsiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCI6NjEwLCIuLi8uLi9j b21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIv Z2VvX2xvY2F0aW9uX3V0aWxzIjo3MTEsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYs Ii4uL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uL2NhcnRlc2lhbi9zZWxlY3Qi Ojc4MiwiLi9jb25zdGFudHMiOjgxOCwiLi9sYXllcnMiOjgyMSwibWFwYm94 LWdsIjo0Mjh9XSw4MjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZWRpdFR5cGU7cmV0dXJu e3Q6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLGVkaXRUeXBlOmV9LHI6e3Zh bFR5cGU6Im51bWJlciIsZGZsdDowLGVkaXRUeXBlOmV9LGI6e3ZhbFR5cGU6 Im51bWJlciIsZGZsdDowLGVkaXRUeXBlOmV9LGw6e3ZhbFR5cGU6Im51bWJl ciIsZGZsdDowLGVkaXRUeXBlOmV9LGVkaXRUeXBlOmV9fX0se31dLDgyNjpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9 dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uL3JlZ2lzdHJ5Iiksbz10KCIu Li9wbG90X2FwaS9wbG90X3NjaGVtYSIpLHM9dCgiLi4vcGxvdF9hcGkvcGxv dF90ZW1wbGF0ZSIpLGw9dCgiLi4vbGliIiksYz10KCIuLi9jb21wb25lbnRz L2NvbG9yIiksdT10KCIuLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVN LGg9dCgiLi9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxmPXQoIi4vYW5pbWF0aW9u X2F0dHJpYnV0ZXMiKSxwPXQoIi4vZnJhbWVfYXR0cmlidXRlcyIpLGQ9dCgi Li4vcGxvdHMvZ2V0X2RhdGEiKS5nZXRNb2R1bGVDYWxjRGF0YSxnPWwucmVs aW5rUHJpdmF0ZUtleXMsdj1sLl8sbT1lLmV4cG9ydHM9e307bC5leHRlbmRG bGF0KG0saSksbS5hdHRyaWJ1dGVzPXQoIi4vYXR0cmlidXRlcyIpLG0uYXR0 cmlidXRlcy50eXBlLnZhbHVlcz1tLmFsbFR5cGVzLG0uZm9udEF0dHJzPXQo Ii4vZm9udF9hdHRyaWJ1dGVzIiksbS5sYXlvdXRBdHRyaWJ1dGVzPXQoIi4v bGF5b3V0X2F0dHJpYnV0ZXMiKSxtLmZvbnRXZWlnaHQ9Im5vcm1hbCI7dmFy IHk9bS50cmFuc2Zvcm1zUmVnaXN0cnkseD10KCIuL2NvbW1hbmQiKTttLmV4 ZWN1dGVBUElDb21tYW5kPXguZXhlY3V0ZUFQSUNvbW1hbmQsbS5jb21wdXRl QVBJQ29tbWFuZEJpbmRpbmdzPXguY29tcHV0ZUFQSUNvbW1hbmRCaW5kaW5n cyxtLm1hbmFnZUNvbW1hbmRPYnNlcnZlcj14Lm1hbmFnZUNvbW1hbmRPYnNl cnZlcixtLmhhc1NpbXBsZUFQSUNvbW1hbmRCaW5kaW5ncz14Lmhhc1NpbXBs ZUFQSUNvbW1hbmRCaW5kaW5ncyxtLnJlZHJhd1RleHQ9ZnVuY3Rpb24odCl7 dmFyIGU9KHQ9bC5nZXRHcmFwaERpdih0KSkuX2Z1bGxMYXlvdXR8fHt9O2lm KCEoIShlLl9oYXMmJmUuX2hhcygicG9sYXIiKSkmJnQuZGF0YSYmdC5kYXRh WzBdJiZ0LmRhdGFbMF0ucikpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9u KGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpLmdldENvbXBvbmVudE1ldGhv ZCgiYW5ub3RhdGlvbnMiLCJkcmF3IikodCksaS5nZXRDb21wb25lbnRNZXRo b2QoImxlZ2VuZCIsImRyYXciKSh0KSxpLmdldENvbXBvbmVudE1ldGhvZCgi Y29sb3JiYXIiLCJkcmF3IikodCksZShtLnByZXZpb3VzUHJvbWlzZXModCkp fSwzMDApfSl9LG0ucmVzaXplPWZ1bmN0aW9uKHQpe3ZhciBlO3Q9bC5nZXRH cmFwaERpdih0KTt2YXIgcj1uZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe3Qm JiFsLmlzSGlkZGVuKHQpfHxuKG5ldyBFcnJvcigiUmVzaXplIG11c3QgYmUg cGFzc2VkIGEgZGlzcGxheWVkIHBsb3QgZGl2IGVsZW1lbnQuIikpLHQuX3Jl ZHJhd1RpbWVyJiZjbGVhclRpbWVvdXQodC5fcmVkcmF3VGltZXIpLHQuX3Jl c29sdmVSZXNpemUmJihlPXQuX3Jlc29sdmVSZXNpemUpLHQuX3Jlc29sdmVS ZXNpemU9cix0Ll9yZWRyYXdUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7 aWYoIXQubGF5b3V0fHx0LmxheW91dC53aWR0aCYmdC5sYXlvdXQuaGVpZ2h0 fHxsLmlzSGlkZGVuKHQpKXIodCk7ZWxzZXtkZWxldGUgdC5sYXlvdXQud2lk dGgsZGVsZXRlIHQubGF5b3V0LmhlaWdodDt2YXIgZT10LmNoYW5nZWQ7dC5h dXRvcGxheT0hMCxpLmNhbGwoInJlbGF5b3V0Iix0LHthdXRvc2l6ZTohMH0p LnRoZW4oZnVuY3Rpb24oKXt0LmNoYW5nZWQ9ZSx0Ll9yZXNvbHZlUmVzaXpl PT09ciYmKGRlbGV0ZSB0Ll9yZXNvbHZlUmVzaXplLHIodCkpfSl9fSwxMDAp fSk7cmV0dXJuIGUmJmUocikscn0sbS5wcmV2aW91c1Byb21pc2VzPWZ1bmN0 aW9uKHQpe2lmKCh0Ll9wcm9taXNlc3x8W10pLmxlbmd0aClyZXR1cm4gUHJv bWlzZS5hbGwodC5fcHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24oKXt0Ll9wcm9t aXNlcz1bXX0pfSxtLmFkZExpbmtzPWZ1bmN0aW9uKHQpe2lmKHQuX2NvbnRl eHQuc2hvd0xpbmt8fHQuX2NvbnRleHQuc2hvd1NvdXJjZXMpe3ZhciBlPXQu X2Z1bGxMYXlvdXQscj1sLmVuc3VyZVNpbmdsZShlLl9wYXBlciwidGV4dCIs ImpzLXBsb3QtbGluay1jb250YWluZXIiLGZ1bmN0aW9uKHQpe3Quc3R5bGUo eyJmb250LWZhbWlseSI6JyJPcGVuIFNhbnMiLCBBcmlhbCwgc2Fucy1zZXJp ZicsImZvbnQtc2l6ZSI6IjEycHgiLGZpbGw6Yy5kZWZhdWx0TGluZSwicG9p bnRlci1ldmVudHMiOiJhbGwifSkuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4u c2VsZWN0KHRoaXMpO3QuYXBwZW5kKCJ0c3BhbiIpLmNsYXNzZWQoImpzLWxp bmstdG8tdG9vbCIsITApLHQuYXBwZW5kKCJ0c3BhbiIpLmNsYXNzZWQoImpz LWxpbmstc3BhY2VyIiwhMCksdC5hcHBlbmQoInRzcGFuIikuY2xhc3NlZCgi anMtc291cmNlbGlua3MiLCEwKX0pfSksYT1yLm5vZGUoKSxpPXt5OmUuX3Bh cGVyLmF0dHIoImhlaWdodCIpLTl9O2RvY3VtZW50LmJvZHkuY29udGFpbnMo YSkmJmEuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCk+PWUud2lkdGgtMjA/KGlb InRleHQtYW5jaG9yIl09InN0YXJ0IixpLng9NSk6KGlbInRleHQtYW5jaG9y Il09ImVuZCIsaS54PWUuX3BhcGVyLmF0dHIoIndpZHRoIiktNyksci5hdHRy KGkpO3ZhciBvPXIuc2VsZWN0KCIuanMtbGluay10by10b29sIikscz1yLnNl bGVjdCgiLmpzLWxpbmstc3BhY2VyIiksdT1yLnNlbGVjdCgiLmpzLXNvdXJj ZWxpbmtzIik7dC5fY29udGV4dC5zaG93U291cmNlcyYmdC5fY29udGV4dC5z aG93U291cmNlcyh0KSx0Ll9jb250ZXh0LnNob3dMaW5rJiZmdW5jdGlvbih0 LGUpe2UudGV4dCgiIik7dmFyIHI9ZS5hcHBlbmQoImEiKS5hdHRyKHsieGxp bms6eGxpbms6aHJlZiI6IiMiLGNsYXNzOiJsaW5rLS1pbXB0IGxpbmstLWVt YmVkdmlldyIsImZvbnQtd2VpZ2h0IjoiYm9sZCJ9KS50ZXh0KHQuX2NvbnRl eHQubGlua1RleHQrIiAiK1N0cmluZy5mcm9tQ2hhckNvZGUoMTg3KSk7aWYo dC5fY29udGV4dC5zZW5kRGF0YSlyLm9uKCJjbGljayIsZnVuY3Rpb24oKXtt LnNlbmREYXRhVG9DbG91ZCh0KX0pO2Vsc2V7dmFyIG49d2luZG93LmxvY2F0 aW9uLnBhdGhuYW1lLnNwbGl0KCIvIiksYT13aW5kb3cubG9jYXRpb24uc2Vh cmNoO3IuYXR0cih7InhsaW5rOnhsaW5rOnNob3ciOiJuZXciLCJ4bGluazp4 bGluazpocmVmIjoiLyIrblsyXS5zcGxpdCgiLiIpWzBdKyIvIituWzFdK2F9 KX19KHQsbykscy50ZXh0KG8udGV4dCgpJiZ1LnRleHQoKT8iIC0gIjoiIil9 fSxtLnNlbmREYXRhVG9DbG91ZD1mdW5jdGlvbih0KXt0LmVtaXQoInBsb3Rs eV9iZWZvcmVleHBvcnQiKTt2YXIgZT0od2luZG93LlBMT1RMWUVOVnx8e30p LkJBU0VfVVJMfHx0Ll9jb250ZXh0LnBsb3RseVNlcnZlclVSTCxyPW4uc2Vs ZWN0KHQpLmFwcGVuZCgiZGl2IikuYXR0cigiaWQiLCJoaWRkZW5mb3JtIiku c3R5bGUoImRpc3BsYXkiLCJub25lIiksYT1yLmFwcGVuZCgiZm9ybSIpLmF0 dHIoe2FjdGlvbjplKyIvZXh0ZXJuYWwiLG1ldGhvZDoicG9zdCIsdGFyZ2V0 OiJfYmxhbmsifSk7cmV0dXJuIGEuYXBwZW5kKCJpbnB1dCIpLmF0dHIoe3R5 cGU6InRleHQiLG5hbWU6ImRhdGEifSkubm9kZSgpLnZhbHVlPW0uZ3JhcGhK c29uKHQsITEsImtlZXBkYXRhIiksYS5ub2RlKCkuc3VibWl0KCksci5yZW1v dmUoKSx0LmVtaXQoInBsb3RseV9hZnRlcmV4cG9ydCIpLCExfTt2YXIgYj1b ImRheXMiLCJzaG9ydERheXMiLCJtb250aHMiLCJzaG9ydE1vbnRocyIsInBl cmlvZHMiLCJkYXRlVGltZSIsImRhdGUiLCJ0aW1lIiwiZGVjaW1hbCIsInRo b3VzYW5kcyIsImdyb3VwaW5nIiwiY3VycmVuY3kiXSxfPVsieWVhciIsIm1v bnRoIiwiZGF5TW9udGgiLCJkYXlNb250aFllYXIiXTtmdW5jdGlvbiB3KHQs ZSl7dmFyIHI9dC5fY29udGV4dC5sb2NhbGUsbj0hMSxhPXt9O2Z1bmN0aW9u IG8odCl7Zm9yKHZhciByPSEwLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89 ZVtpXTthW29dfHwodFtvXT9hW29dPXRbb106cj0hMSl9ciYmKG49ITApfWZv cih2YXIgcz0wO3M8MjtzKyspe2Zvcih2YXIgbD10Ll9jb250ZXh0LmxvY2Fs ZXMsYz0wO2M8MjtjKyspe3ZhciB1PShsW3JdfHx7fSkuZm9ybWF0O2lmKHUm JihvKHUpLG4pKWJyZWFrO2w9aS5sb2NhbGVSZWdpc3RyeX12YXIgaD1yLnNw bGl0KCItIilbMF07aWYobnx8aD09PXIpYnJlYWs7cj1ofXJldHVybiBufHxv KGkubG9jYWxlUmVnaXN0cnkuZW4uZm9ybWF0KSxhfWZ1bmN0aW9uIGsodCxl KXt2YXIgcj17X2Z1bGxMYXlvdXQ6ZX0sbj0ieCI9PT10Ll9pZC5jaGFyQXQo MCksYT10Ll9tYWluQXhpcy5fYW5jaG9yQXhpcyxpPSIiLG89IiIscz0iIjtp ZihhJiYocz1hLl9tYWluQXhpcy5faWQsaT1uP3QuX2lkK3M6cyt0Ll9pZCks IWl8fCFlLl9wbG90c1tpXSl7aT0iIjtmb3IodmFyIGw9dC5fY291bnRlckF4 ZXMsYz0wO2M8bC5sZW5ndGg7YysrKXt2YXIgdT1sW2NdLGY9bj90Ll9pZCt1 OnUrdC5faWQ7b3x8KG89Zik7dmFyIHA9aC5nZXRGcm9tSWQocix1KTtpZihz JiZwLm92ZXJsYXlpbmc9PT1zKXtpPWY7YnJlYWt9fX1yZXR1cm4gaXx8b31m dW5jdGlvbiBUKHQpe3ZhciBlPXQudHJhbnNmb3JtcztpZihBcnJheS5pc0Fy cmF5KGUpJiZlLmxlbmd0aClmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7 dmFyIG49ZVtyXSxhPW4uX21vZHVsZXx8eVtuLnR5cGVdO2lmKGEmJmEubWFr ZXNEYXRhKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIE0odCxlLHIsbil7 Zm9yKHZhciBhPXQudHJhbnNmb3JtcyxpPVt0XSxvPTA7bzxhLmxlbmd0aDtv Kyspe3ZhciBzPWFbb10sbD15W3MudHlwZV07bCYmbC50cmFuc2Zvcm0mJihp PWwudHJhbnNmb3JtKGkse3RyYW5zZm9ybTpzLGZ1bGxUcmFjZTp0LGZ1bGxE YXRhOmUsbGF5b3V0OnIsZnVsbExheW91dDpuLHRyYW5zZm9ybUluZGV4Om99 KSl9cmV0dXJuIGl9ZnVuY3Rpb24gQSh0KXt2YXIgZT10Lm1hcmdpbjtpZigh dC5fc2l6ZSl7dmFyIHI9dC5fc2l6ZT17bDpNYXRoLnJvdW5kKGUubCkscjpN YXRoLnJvdW5kKGUuciksdDpNYXRoLnJvdW5kKGUudCksYjpNYXRoLnJvdW5k KGUuYikscDpNYXRoLnJvdW5kKGUucGFkKX07ci53PU1hdGgucm91bmQodC53 aWR0aCktci5sLXIucixyLmg9TWF0aC5yb3VuZCh0LmhlaWdodCktci50LXIu Yn10Ll9wdXNobWFyZ2lufHwodC5fcHVzaG1hcmdpbj17fSksdC5fcHVzaG1h cmdpbklkc3x8KHQuX3B1c2htYXJnaW5JZHM9e30pfW0uc3VwcGx5RGVmYXVs dHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lJiZlLnNraXBVcGRhdGVDYWxjLGE9 dC5fZnVsbExheW91dHx8e307aWYoYS5fc2tpcERlZmF1bHRzKWRlbGV0ZSBh Ll9za2lwRGVmYXVsdHM7ZWxzZXt2YXIgbyxzPXQuX2Z1bGxMYXlvdXQ9e30s Yz10LmxheW91dHx8e30sdT10Ll9mdWxsRGF0YXx8W10saD10Ll9mdWxsRGF0 YT1bXSxmPXQuZGF0YXx8W10scD10LmNhbGNkYXRhfHxbXSxkPXQuX2NvbnRl eHR8fHt9O3QuX3RyYW5zaXRpb25EYXRhfHxtLmNyZWF0ZVRyYW5zaXRpb25E YXRhKHQpLHMuX2RmbHRUaXRsZT17cGxvdDp2KHQsIkNsaWNrIHRvIGVudGVy IFBsb3QgdGl0bGUiKSx4OnYodCwiQ2xpY2sgdG8gZW50ZXIgWCBheGlzIHRp dGxlIikseTp2KHQsIkNsaWNrIHRvIGVudGVyIFkgYXhpcyB0aXRsZSIpLGNv bG9yYmFyOnYodCwiQ2xpY2sgdG8gZW50ZXIgQ29sb3JzY2FsZSB0aXRsZSIp LGFubm90YXRpb246dih0LCJuZXcgdGV4dCIpfSxzLl90cmFjZVdvcmQ9dih0 LCJ0cmFjZSIpO3ZhciB5PXcodCxiKTtpZihzLl9tYXBib3hBY2Nlc3NUb2tl bj1kLm1hcGJveEFjY2Vzc1Rva2VuLGEuX2luaXRpYWxBdXRvU2l6ZUlzRG9u ZSl7dmFyIHg9YS53aWR0aCxrPWEuaGVpZ2h0O20uc3VwcGx5TGF5b3V0R2xv YmFsRGVmYXVsdHMoYyxzLHkpLGMud2lkdGh8fChzLndpZHRoPXgpLGMuaGVp Z2h0fHwocy5oZWlnaHQ9ayksbS5zYW5pdGl6ZU1hcmdpbnMocyl9ZWxzZXtt LnN1cHBseUxheW91dEdsb2JhbERlZmF1bHRzKGMscyx5KTt2YXIgVD0hYy53 aWR0aHx8IWMuaGVpZ2h0LE09cy5hdXRvc2l6ZSxTPWQuYXV0b3NpemFibGU7 VCYmKE18fFMpP20ucGxvdEF1dG9TaXplKHQsYyxzKTpUJiZtLnNhbml0aXpl TWFyZ2lucyhzKSwhTSYmVCYmKGMud2lkdGg9cy53aWR0aCxjLmhlaWdodD1z LmhlaWdodCl9cy5fZDNsb2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5k ZWNpbWFsPWUuY2hhckF0KDApLHQudGhvdXNhbmRzPWUuY2hhckF0KDEpLG4u bG9jYWxlKHQpfSh5LHMuc2VwYXJhdG9ycykscy5fZXh0cmFGb3JtYXQ9dyh0 LF8pLHMuX2luaXRpYWxBdXRvU2l6ZUlzRG9uZT0hMCxzLl9kYXRhTGVuZ3Ro PWYubGVuZ3RoLHMuX21vZHVsZXM9W10scy5fdmlzaWJsZU1vZHVsZXM9W10s cy5fYmFzZVBsb3RNb2R1bGVzPVtdO3ZhciBFPXMuX3N1YnBsb3RzPWZ1bmN0 aW9uKCl7dmFyIHQsZSxyPWkuY29sbGVjdGFibGVTdWJwbG90VHlwZXMsbj17 fTtpZighcil7cj1bXTt2YXIgYT1pLnN1YnBsb3RzUmVnaXN0cnk7Zm9yKHZh ciBvIGluIGEpe3ZhciBzPWFbb10sYz1zLmF0dHI7aWYoYyYmKHIucHVzaChv KSxBcnJheS5pc0FycmF5KGMpKSlmb3IoZT0wO2U8Yy5sZW5ndGg7ZSsrKWwu cHVzaFVuaXF1ZShyLGNbZV0pfX1mb3IodD0wO3Q8ci5sZW5ndGg7dCsrKW5b clt0XV09W107cmV0dXJuIG59KCksTD1zLl9zcGxvbUF4ZXM9e3g6e30seTp7 fX0sQz1zLl9zcGxvbVN1YnBsb3RzPXt9O3MuX3NwbG9tR3JpZERmbHQ9e30s cy5fc2NhdHRlclN0YWNrT3B0cz17fSxzLl9maXJzdFNjYXR0ZXI9e30scy5f YWxpZ25tZW50T3B0cz17fSxzLl9jb2xvckF4ZXM9e30scy5fcmVxdWVzdFJh bmdlc2xpZGVyPXt9LHMuX3RyYWNlVWlkcz1mdW5jdGlvbih0LGUpe3ZhciBy LG4sYT1lLmxlbmd0aCxpPVtdO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe3Zh ciBvPXRbcl0uX2Z1bGxJbnB1dDtvIT09biYmaS5wdXNoKG8pLG49b312YXIg cz1pLmxlbmd0aCxjPW5ldyBBcnJheShhKSx1PXt9O2Z1bmN0aW9uIGgodCxl KXtjW2VdPXQsdVt0XT0xfWZ1bmN0aW9uIGYodCxlKXtpZih0JiYic3RyaW5n Ij09dHlwZW9mIHQmJiF1W3RdKXJldHVybiBoKHQsZSksITB9Zm9yKHI9MDty PGE7cisrKXt2YXIgcD1lW3JdLnVpZDsibnVtYmVyIj09dHlwZW9mIHAmJihw PVN0cmluZyhwKSksZihwLHIpfHwocjxzJiZmKGlbcl0udWlkLHIpfHxoKGwu cmFuZHN0cih1KSxyKSl9cmV0dXJuIGN9KHUsZikscy5fZ2xvYmFsVHJhbnNm b3Jtcz0odC5fY29udGV4dHx8e30pLmdsb2JhbFRyYW5zZm9ybXMsbS5zdXBw bHlEYXRhRGVmYXVsdHMoZixoLGMscyk7dmFyIFA9T2JqZWN0LmtleXMoTC54 KSxPPU9iamVjdC5rZXlzKEwueSk7aWYoUC5sZW5ndGg+MSYmTy5sZW5ndGg+ MSl7Zm9yKGkuZ2V0Q29tcG9uZW50TWV0aG9kKCJncmlkIiwic2l6ZURlZmF1 bHRzIikoYyxzKSxvPTA7bzxQLmxlbmd0aDtvKyspbC5wdXNoVW5pcXVlKEUu eGF4aXMsUFtvXSk7Zm9yKG89MDtvPE8ubGVuZ3RoO28rKylsLnB1c2hVbmlx dWUoRS55YXhpcyxPW29dKTtmb3IodmFyIHogaW4gQylsLnB1c2hVbmlxdWUo RS5jYXJ0ZXNpYW4seil9aWYocy5faGFzPW0uX2hhc1Bsb3RUeXBlLmJpbmQo cyksdS5sZW5ndGg9PT1oLmxlbmd0aClmb3Iobz0wO288aC5sZW5ndGg7bysr KWcoaFtvXSx1W29dKTttLnN1cHBseUxheW91dE1vZHVsZURlZmF1bHRzKGMs cyxoLHQuX3RyYW5zaXRpb25EYXRhKTt2YXIgST1zLl92aXNpYmxlTW9kdWxl cyxEPVtdO2ZvcihvPTA7bzxJLmxlbmd0aDtvKyspe3ZhciBSPUlbb10uY3Jv c3NUcmFjZURlZmF1bHRzO1ImJmwucHVzaFVuaXF1ZShELFIpfWZvcihvPTA7 bzxELmxlbmd0aDtvKyspRFtvXShoLHMpO3MuX2hhc09ubHlMYXJnZVNwbG9t cz0xPT09cy5fYmFzZVBsb3RNb2R1bGVzLmxlbmd0aCYmInNwbG9tIj09PXMu X2Jhc2VQbG90TW9kdWxlc1swXS5uYW1lJiZQLmxlbmd0aD4xNSYmTy5sZW5n dGg+MTUmJjA9PT1zLnNoYXBlcy5sZW5ndGgmJjA9PT1zLmltYWdlcy5sZW5n dGgscy5faGFzQ2FydGVzaWFuPXMuX2hhcygiY2FydGVzaWFuIikscy5faGFz R2VvPXMuX2hhcygiZ2VvIikscy5faGFzR0wzRD1zLl9oYXMoImdsM2QiKSxz Ll9oYXNHTDJEPXMuX2hhcygiZ2wyZCIpLHMuX2hhc1Rlcm5hcnk9cy5faGFz KCJ0ZXJuYXJ5Iikscy5faGFzUGllPXMuX2hhcygicGllIiksbS5saW5rU3Vi cGxvdHMoaCxzLHUsYSksbS5jbGVhblBsb3QoaCxzLHUsYSksYS5fem9vbWxh eWVyJiYhdC5fZHJhZ2dpbmcmJmEuX3pvb21sYXllci5zZWxlY3RBbGwoIi5z ZWxlY3Qtb3V0bGluZSIpLnJlbW92ZSgpLGZ1bmN0aW9uKHQsZSl7dmFyIHIs bj1bXTtlLm1ldGEmJihyPWUuX21ldGE9e21ldGE6ZS5tZXRhLGxheW91dDp7 bWV0YTplLm1ldGF9fSk7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspe3Zh ciBpPXRbYV07aS5tZXRhP25baS5pbmRleF09aS5fbWV0YT17bWV0YTppLm1l dGF9OmUubWV0YSYmKGkuX21ldGE9e21ldGE6ZS5tZXRhfSksZS5tZXRhJiYo aS5fbWV0YS5sYXlvdXQ9e21ldGE6ZS5tZXRhfSl9bi5sZW5ndGgmJihyfHwo cj1lLl9tZXRhPXt9KSxyLmRhdGE9bil9KGgscyksZyhzLGEpLGkuZ2V0Q29t cG9uZW50TWV0aG9kKCJjb2xvcnNjYWxlIiwiY3Jvc3NUcmFjZURlZmF1bHRz IikoaCxzKSxzLl9wcmVHVUl8fChzLl9wcmVHVUk9e30pLHMuX3RyYWNlUHJl R1VJfHwocy5fdHJhY2VQcmVHVUk9e30pO3ZhciBGLEI9cy5fdHJhY2VQcmVH VUksTj17fTtmb3IoRiBpbiBCKU5bRl09Im9sZCI7Zm9yKG89MDtvPGgubGVu Z3RoO28rKylOW0Y9aFtvXS5fZnVsbElucHV0LnVpZF18fChCW0ZdPXt9KSxO W0ZdPSJuZXciO2ZvcihGIGluIE4pIm9sZCI9PT1OW0ZdJiZkZWxldGUgQltG XTtBKHMpLGkuZ2V0Q29tcG9uZW50TWV0aG9kKCJyYW5nZXNsaWRlciIsIm1h a2VEYXRhIikocykscnx8cC5sZW5ndGghPT1oLmxlbmd0aHx8bS5zdXBwbHlE ZWZhdWx0c1VwZGF0ZUNhbGMocCxoKX19LG0uc3VwcGx5RGVmYXVsdHNVcGRh dGVDYWxjPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDty Kyspe3ZhciBuPWVbcl0sYT0odFtyXXx8W10pWzBdO2lmKGEmJmEudHJhY2Up e3ZhciBpPWEudHJhY2U7aWYoaS5faGFzQ2FsY1RyYW5zZm9ybSl7dmFyIG8s cyxjLHU9aS5fYXJyYXlBdHRycztmb3Iobz0wO288dS5sZW5ndGg7bysrKXM9 dVtvXSxjPWwubmVzdGVkUHJvcGVydHkoaSxzKS5nZXQoKS5zbGljZSgpLGwu bmVzdGVkUHJvcGVydHkobixzKS5zZXQoYyl9YS50cmFjZT1ufX19LG0uY3Jl YXRlVHJhbnNpdGlvbkRhdGE9ZnVuY3Rpb24odCl7dC5fdHJhbnNpdGlvbkRh dGF8fCh0Ll90cmFuc2l0aW9uRGF0YT17fSksdC5fdHJhbnNpdGlvbkRhdGEu X2ZyYW1lc3x8KHQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZXM9W10pLHQuX3Ry YW5zaXRpb25EYXRhLl9mcmFtZUhhc2h8fCh0Ll90cmFuc2l0aW9uRGF0YS5f ZnJhbWVIYXNoPXt9KSx0Ll90cmFuc2l0aW9uRGF0YS5fY291bnRlcnx8KHQu X3RyYW5zaXRpb25EYXRhLl9jb3VudGVyPTApLHQuX3RyYW5zaXRpb25EYXRh Ll9pbnRlcnJ1cHRDYWxsYmFja3N8fCh0Ll90cmFuc2l0aW9uRGF0YS5faW50 ZXJydXB0Q2FsbGJhY2tzPVtdKX0sbS5faGFzUGxvdFR5cGU9ZnVuY3Rpb24o dCl7dmFyIGUscj10aGlzLl9iYXNlUGxvdE1vZHVsZXN8fFtdO2ZvcihlPTA7 ZTxyLmxlbmd0aDtlKyspaWYocltlXS5uYW1lPT09dClyZXR1cm4hMDt2YXIg bj10aGlzLl9tb2R1bGVzfHxbXTtmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKXt2 YXIgYT1uW2VdLm5hbWU7aWYoYT09PXQpcmV0dXJuITA7dmFyIG89aS5tb2R1 bGVzW2FdO2lmKG8mJm8uY2F0ZWdvcmllc1t0XSlyZXR1cm4hMH1yZXR1cm4h MX0sbS5jbGVhblBsb3Q9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaSxvPW4u X2Jhc2VQbG90TW9kdWxlc3x8W107Zm9yKGE9MDthPG8ubGVuZ3RoO2ErKyl7 dmFyIHM9b1thXTtzLmNsZWFuJiZzLmNsZWFuKHQsZSxyLG4pfXZhciBsPW4u X2hhcyYmbi5faGFzKCJnbCIpLGM9ZS5faGFzJiZlLl9oYXMoImdsIik7bCYm IWMmJnZvaWQgMCE9PW4uX2dsY29udGFpbmVyJiYobi5fZ2xjb250YWluZXIu c2VsZWN0QWxsKCIuZ2wtY2FudmFzIikucmVtb3ZlKCksbi5fZ2xjb250YWlu ZXIuc2VsZWN0QWxsKCIubm8td2ViZ2wiKS5yZW1vdmUoKSxuLl9nbGNhbnZh cz1udWxsKTt2YXIgdT0hIW4uX2luZm9sYXllcjt0OmZvcihhPTA7YTxyLmxl bmd0aDthKyspe3ZhciBoPXJbYV0udWlkO2ZvcihpPTA7aTx0Lmxlbmd0aDtp Kyspe2lmKGg9PT10W2ldLnVpZCljb250aW51ZSB0fXUmJm4uX2luZm9sYXll ci5zZWxlY3QoIi5jYiIraCkucmVtb3ZlKCl9fSxtLmxpbmtTdWJwbG90cz1m dW5jdGlvbih0LGUscixuKXt2YXIgYSxvLHM9bi5fcGxvdHN8fHt9LGM9ZS5f cGxvdHM9e30sdT1lLl9zdWJwbG90cyxmPXtfZnVsbERhdGE6dCxfZnVsbExh eW91dDplfSxwPXUuY2FydGVzaWFuLmNvbmNhdCh1LmdsMmR8fFtdKTtmb3Io YT0wO2E8cC5sZW5ndGg7YSsrKXt2YXIgZCxnPXBbYV0sdj1zW2ddLG09aC5n ZXRGcm9tSWQoZixnLCJ4IikseT1oLmdldEZyb21JZChmLGcsInkiKTtmb3Io dj9kPWNbZ109djooZD1jW2ddPXt9KS5pZD1nLG0uX2NvdW50ZXJBeGVzLnB1 c2goeS5faWQpLHkuX2NvdW50ZXJBeGVzLnB1c2gobS5faWQpLG0uX3N1YnBs b3RzV2l0aC5wdXNoKGcpLHkuX3N1YnBsb3RzV2l0aC5wdXNoKGcpLGQueGF4 aXM9bSxkLnlheGlzPXksZC5faGFzQ2xpcE9uQXhpc0ZhbHNlPSExLG89MDtv PHQubGVuZ3RoO28rKyl7dmFyIHg9dFtvXTtpZih4LnhheGlzPT09ZC54YXhp cy5faWQmJngueWF4aXM9PT1kLnlheGlzLl9pZCYmITE9PT14LmNsaXBvbmF4 aXMpe2QuX2hhc0NsaXBPbkF4aXNGYWxzZT0hMDticmVha319fXZhciBiLF89 aC5saXN0KGYsbnVsbCwhMCk7Zm9yKGE9MDthPF8ubGVuZ3RoO2ErKyl7dmFy IHc9bnVsbDsoYj1fW2FdKS5vdmVybGF5aW5nJiYodz1oLmdldEZyb21JZChm LGIub3ZlcmxheWluZykpJiZ3Lm92ZXJsYXlpbmcmJihiLm92ZXJsYXlpbmc9 ITEsdz1udWxsKSxiLl9tYWluQXhpcz13fHxiLHcmJihiLmRvbWFpbj13LmRv bWFpbi5zbGljZSgpKSxiLl9hbmNob3JBeGlzPSJmcmVlIj09PWIuYW5jaG9y P251bGw6aC5nZXRGcm9tSWQoZixiLmFuY2hvcil9Zm9yKGE9MDthPF8ubGVu Z3RoO2ErKylpZigoYj1fW2FdKS5fY291bnRlckF4ZXMuc29ydChoLmlkU29y dCksYi5fc3VicGxvdHNXaXRoLnNvcnQobC5zdWJwbG90U29ydCksYi5fbWFp blN1YnBsb3Q9ayhiLGUpLGIuX2NvdW50ZXJBeGVzLmxlbmd0aCYmKGIuc3Bp a2Vtb2RlJiYtMSE9PWIuc3Bpa2Vtb2RlLmluZGV4T2YoImFjcm9zcyIpfHxi LmF1dG9tYXJnaW4mJmIubWlycm9yJiYiZnJlZSIhPT1iLmFuY2hvcnx8aS5n ZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwiaXNWaXNpYmxlIiko YikpKXt2YXIgVD0xLE09MDtmb3Iobz0wO288Yi5fY291bnRlckF4ZXMubGVu Z3RoO28rKyl7dmFyIEE9aC5nZXRGcm9tSWQoZixiLl9jb3VudGVyQXhlc1tv XSk7VD1NYXRoLm1pbihULEEuZG9tYWluWzBdKSxNPU1hdGgubWF4KE0sQS5k b21haW5bMV0pfVQ8TSYmKGIuX2NvdW50ZXJEb21haW5NaW49VCxiLl9jb3Vu dGVyRG9tYWluTWF4PU0pfX0sbS5jbGVhckV4cGFuZGVkVHJhY2VEZWZhdWx0 Q29sb3JzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbjtmb3Iocj1bXSwoZT10Ll9t b2R1bGUuX2NvbG9yQXR0cnMpfHwodC5fbW9kdWxlLl9jb2xvckF0dHJzPWU9 W10sby5jcmF3bCh0Ll9tb2R1bGUuYXR0cmlidXRlcyxmdW5jdGlvbih0LG4s YSxpKXtyW2ldPW4sci5sZW5ndGg9aSsxLCJjb2xvciI9PT10LnZhbFR5cGUm JnZvaWQgMD09PXQuZGZsdCYmZS5wdXNoKHIuam9pbigiLiIpKX0pKSxuPTA7 bjxlLmxlbmd0aDtuKyspe2wubmVzdGVkUHJvcGVydHkodCwiX2lucHV0LiIr ZVtuXSkuZ2V0KCl8fGwubmVzdGVkUHJvcGVydHkodCxlW25dKS5zZXQobnVs bCl9fSxtLnN1cHBseURhdGFEZWZhdWx0cz1mdW5jdGlvbih0LGUscixuKXt2 YXIgYSxvLGMsdT1uLl9tb2R1bGVzLGg9bi5fdmlzaWJsZU1vZHVsZXMsZj1u Ll9iYXNlUGxvdE1vZHVsZXMscD0wLGQ9MDtmdW5jdGlvbiB2KHQpe2UucHVz aCh0KTt2YXIgcj10Ll9tb2R1bGU7ciYmKGwucHVzaFVuaXF1ZSh1LHIpLCEw PT09dC52aXNpYmxlJiZsLnB1c2hVbmlxdWUoaCxyKSxsLnB1c2hVbmlxdWUo Zix0Ll9tb2R1bGUuYmFzZVBsb3RNb2R1bGUpLHArKywhMSE9PXQuX2lucHV0 LnZpc2libGUmJmQrKyl9bi5fdHJhbnNmb3JtTW9kdWxlcz1bXTt2YXIgeT17 fSx4PVtdLGI9KHIudGVtcGxhdGV8fHt9KS5kYXRhfHx7fSxfPXMudHJhY2VU ZW1wbGF0ZXIoYik7Zm9yKGE9MDthPHQubGVuZ3RoO2ErKyl7aWYoYz10W2Fd LChvPV8ubmV3VHJhY2UoYykpLnVpZD1uLl90cmFjZVVpZHNbYV0sbS5zdXBw bHlUcmFjZURlZmF1bHRzKGMsbyxkLG4sYSksby5pbmRleD1hLG8uX2lucHV0 PWMsby5fZXhwYW5kZWRJbmRleD1wLG8udHJhbnNmb3JtcyYmby50cmFuc2Zv cm1zLmxlbmd0aClmb3IodmFyIHc9ITEhPT1jLnZpc2libGUmJiExPT09by52 aXNpYmxlLGs9TShvLGUscixuKSxUPTA7VDxrLmxlbmd0aDtUKyspe3ZhciBB PWtbVF0sUz17X3RlbXBsYXRlOm8uX3RlbXBsYXRlLHR5cGU6by50eXBlLHVp ZDpvLnVpZCtUfTt3JiYhMT09PUEudmlzaWJsZSYmZGVsZXRlIEEudmlzaWJs ZSxtLnN1cHBseVRyYWNlRGVmYXVsdHMoQSxTLHAsbixhKSxnKFMsQSksUy5p bmRleD1hLFMuX2lucHV0PWMsUy5fZnVsbElucHV0PW8sUy5fZXhwYW5kZWRJ bmRleD1wLFMuX2V4cGFuZGVkSW5wdXQ9QSx2KFMpfWVsc2Ugby5fZnVsbElu cHV0PW8sby5fZXhwYW5kZWRJbnB1dD1vLHYobyk7aS50cmFjZUlzKG8sImNh cnBldEF4aXMiKSYmKHlbby5jYXJwZXRdPW8pLGkudHJhY2VJcyhvLCJjYXJw ZXREZXBlbmRlbnQiKSYmeC5wdXNoKGEpfWZvcihhPTA7YTx4Lmxlbmd0aDth KyspaWYoKG89ZVt4W2FdXSkudmlzaWJsZSl7dmFyIEU9eVtvLmNhcnBldF07 by5fY2FycGV0PUUsRSYmRS52aXNpYmxlPyhvLnhheGlzPUUueGF4aXMsby55 YXhpcz1FLnlheGlzKTpvLnZpc2libGU9ITF9fSxtLnN1cHBseUFuaW1hdGlv bkRlZmF1bHRzPWZ1bmN0aW9uKHQpe3ZhciBlO3Q9dHx8e307dmFyIHI9e307 ZnVuY3Rpb24gbihlLG4pe3JldHVybiBsLmNvZXJjZSh0fHx7fSxyLGYsZSxu KX1pZihuKCJtb2RlIiksbigiZGlyZWN0aW9uIiksbigiZnJvbWN1cnJlbnQi KSxBcnJheS5pc0FycmF5KHQuZnJhbWUpKWZvcihyLmZyYW1lPVtdLGU9MDtl PHQuZnJhbWUubGVuZ3RoO2UrKylyLmZyYW1lW2VdPW0uc3VwcGx5QW5pbWF0 aW9uRnJhbWVEZWZhdWx0cyh0LmZyYW1lW2VdfHx7fSk7ZWxzZSByLmZyYW1l PW0uc3VwcGx5QW5pbWF0aW9uRnJhbWVEZWZhdWx0cyh0LmZyYW1lfHx7fSk7 aWYoQXJyYXkuaXNBcnJheSh0LnRyYW5zaXRpb24pKWZvcihyLnRyYW5zaXRp b249W10sZT0wO2U8dC50cmFuc2l0aW9uLmxlbmd0aDtlKyspci50cmFuc2l0 aW9uW2VdPW0uc3VwcGx5QW5pbWF0aW9uVHJhbnNpdGlvbkRlZmF1bHRzKHQu dHJhbnNpdGlvbltlXXx8e30pO2Vsc2Ugci50cmFuc2l0aW9uPW0uc3VwcGx5 QW5pbWF0aW9uVHJhbnNpdGlvbkRlZmF1bHRzKHQudHJhbnNpdGlvbnx8e30p O3JldHVybiByfSxtLnN1cHBseUFuaW1hdGlvbkZyYW1lRGVmYXVsdHM9ZnVu Y3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gcihyLG4pe3JldHVybiBsLmNv ZXJjZSh0fHx7fSxlLGYuZnJhbWUscixuKX1yZXR1cm4gcigiZHVyYXRpb24i KSxyKCJyZWRyYXciKSxlfSxtLnN1cHBseUFuaW1hdGlvblRyYW5zaXRpb25E ZWZhdWx0cz1mdW5jdGlvbih0KXt2YXIgZT17fTtmdW5jdGlvbiByKHIsbil7 cmV0dXJuIGwuY29lcmNlKHR8fHt9LGUsZi50cmFuc2l0aW9uLHIsbil9cmV0 dXJuIHIoImR1cmF0aW9uIikscigiZWFzaW5nIiksZX0sbS5zdXBwbHlGcmFt ZURlZmF1bHRzPWZ1bmN0aW9uKHQpe3ZhciBlPXt9O2Z1bmN0aW9uIHIocixu KXtyZXR1cm4gbC5jb2VyY2UodCxlLHAscixuKX1yZXR1cm4gcigiZ3JvdXAi KSxyKCJuYW1lIikscigidHJhY2VzIikscigiYmFzZWZyYW1lIikscigiZGF0 YSIpLHIoImxheW91dCIpLGV9LG0uc3VwcGx5VHJhY2VEZWZhdWx0cz1mdW5j dGlvbih0LGUscixuLGEpe3ZhciBvLHM9bi5jb2xvcndheXx8Yy5kZWZhdWx0 cyx1PXNbciVzLmxlbmd0aF07ZnVuY3Rpb24gaChyLG4pe3JldHVybiBsLmNv ZXJjZSh0LGUsbS5hdHRyaWJ1dGVzLHIsbil9dmFyIGY9aCgidmlzaWJsZSIp O2goInR5cGUiKSxoKCJuYW1lIixuLl90cmFjZVdvcmQrIiAiK2EpLGgoInVp cmV2aXNpb24iLG4udWlyZXZpc2lvbik7dmFyIHA9bS5nZXRNb2R1bGUoZSk7 aWYoZS5fbW9kdWxlPXAscCl7dmFyIGQ9cC5iYXNlUGxvdE1vZHVsZSxnPWQu YXR0cix2PWQuYXR0cmlidXRlcztpZihnJiZ2KXt2YXIgeT1uLl9zdWJwbG90 cyx4PSIiO2lmKGZ8fCJnbDJkIiE9PWQubmFtZSl7aWYoQXJyYXkuaXNBcnJh eShnKSlmb3Iobz0wO288Zy5sZW5ndGg7bysrKXt2YXIgYj1nW29dLF89bC5j b2VyY2UodCxlLHYsYik7eVtiXSYmbC5wdXNoVW5pcXVlKHlbYl0sXykseCs9 X31lbHNlIHg9bC5jb2VyY2UodCxlLHYsZyk7eVtkLm5hbWVdJiZsLnB1c2hV bmlxdWUoeVtkLm5hbWVdLHgpfX19cmV0dXJuIGYmJihoKCJjdXN0b21kYXRh IiksaCgiaWRzIiksaCgibWV0YSIpLGkudHJhY2VJcyhlLCJzaG93TGVnZW5k Iik/KGwuY29lcmNlKHQsZSxwLmF0dHJpYnV0ZXMuc2hvd2xlZ2VuZD9wLmF0 dHJpYnV0ZXM6bS5hdHRyaWJ1dGVzLCJzaG93bGVnZW5kIiksaCgibGVnZW5k Z3JvdXAiKSxlLl9kZmx0U2hvd0xlZ2VuZD0hMCk6ZS5fZGZsdFNob3dMZWdl bmQ9ITEscCYmcC5zdXBwbHlEZWZhdWx0cyh0LGUsdSxuKSxpLnRyYWNlSXMo ZSwibm9PcGFjaXR5Iil8fGgoIm9wYWNpdHkiKSxpLnRyYWNlSXMoZSwibm90 TGVnZW5kSXNvbGF0YWJsZSIpJiYoZS52aXNpYmxlPSEhZS52aXNpYmxlKSxp LnRyYWNlSXMoZSwibm9Ib3ZlciIpfHwoZS5ob3ZlcnRlbXBsYXRlfHxsLmNv ZXJjZUhvdmVyaW5mbyh0LGUsbiksInBhcmNhdHMiIT09ZS50eXBlJiZpLmdl dENvbXBvbmVudE1ldGhvZCgiZngiLCJzdXBwbHlEZWZhdWx0cyIpKHQsZSx1 LG4pKSxwJiZwLnNlbGVjdFBvaW50cyYmaCgic2VsZWN0ZWRwb2ludHMiKSxt LnN1cHBseVRyYW5zZm9ybURlZmF1bHRzKHQsZSxuKSksZX0sbS5oYXNNYWtl c0RhdGFUcmFuc2Zvcm09VCxtLnN1cHBseVRyYW5zZm9ybURlZmF1bHRzPWZ1 bmN0aW9uKHQsZSxyKXtpZihlLl9sZW5ndGh8fFQodCkpe3ZhciBuPXIuX2ds b2JhbFRyYW5zZm9ybXN8fFtdLGE9ci5fdHJhbnNmb3JtTW9kdWxlc3x8W107 aWYoQXJyYXkuaXNBcnJheSh0LnRyYW5zZm9ybXMpfHwwIT09bi5sZW5ndGgp Zm9yKHZhciBpPXQudHJhbnNmb3Jtc3x8W10sbz1uLmNvbmNhdChpKSxzPWUu dHJhbnNmb3Jtcz1bXSxjPTA7YzxvLmxlbmd0aDtjKyspe3ZhciB1LGg9b1tj XSxmPWgudHlwZSxwPXlbZl0sZD0hKGguX21vZHVsZSYmaC5fbW9kdWxlPT09 cCksZz1wJiYiZnVuY3Rpb24iPT10eXBlb2YgcC50cmFuc2Zvcm07cHx8bC53 YXJuKCJVbnJlY29nbml6ZWQgdHJhbnNmb3JtIHR5cGUgIitmKyIuIikscCYm cC5zdXBwbHlEZWZhdWx0cyYmKGR8fGcpPygodT1wLnN1cHBseURlZmF1bHRz KGgsZSxyLHQpKS50eXBlPWYsdS5fbW9kdWxlPXAsbC5wdXNoVW5pcXVlKGEs cCkpOnU9bC5leHRlbmRGbGF0KHt9LGgpLHMucHVzaCh1KX19fSxtLnN1cHBs eUxheW91dEdsb2JhbERlZmF1bHRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlv biBuKHIsbil7cmV0dXJuIGwuY29lcmNlKHQsZSxtLmxheW91dEF0dHJpYnV0 ZXMscixuKX12YXIgYT10LnRlbXBsYXRlO2wuaXNQbGFpbk9iamVjdChhKSYm KGUudGVtcGxhdGU9YSxlLl90ZW1wbGF0ZT1hLmxheW91dCxlLl9kYXRhVGVt cGxhdGU9YS5kYXRhKTt2YXIgbz1sLmNvZXJjZUZvbnQobiwiZm9udCIpO24o InRpdGxlLnRleHQiLGUuX2RmbHRUaXRsZS5wbG90KSxsLmNvZXJjZUZvbnQo biwidGl0bGUuZm9udCIse2ZhbWlseTpvLmZhbWlseSxzaXplOk1hdGgucm91 bmQoMS40Km8uc2l6ZSksY29sb3I6by5jb2xvcn0pLG4oInRpdGxlLnhyZWYi KSxuKCJ0aXRsZS55cmVmIiksbigidGl0bGUueCIpLG4oInRpdGxlLnkiKSxu KCJ0aXRsZS54YW5jaG9yIiksbigidGl0bGUueWFuY2hvciIpLG4oInRpdGxl LnBhZC50IiksbigidGl0bGUucGFkLnIiKSxuKCJ0aXRsZS5wYWQuYiIpLG4o InRpdGxlLnBhZC5sIiksbigidW5pZm9ybXRleHQubW9kZSIpJiZuKCJ1bmlm b3JtdGV4dC5taW5zaXplIiksbigiYXV0b3NpemUiLCEodC53aWR0aCYmdC5o ZWlnaHQpKSxuKCJ3aWR0aCIpLG4oImhlaWdodCIpLG4oIm1hcmdpbi5sIiks bigibWFyZ2luLnIiKSxuKCJtYXJnaW4udCIpLG4oIm1hcmdpbi5iIiksbigi bWFyZ2luLnBhZCIpLG4oIm1hcmdpbi5hdXRvZXhwYW5kIiksdC53aWR0aCYm dC5oZWlnaHQmJm0uc2FuaXRpemVNYXJnaW5zKGUpLGkuZ2V0Q29tcG9uZW50 TWV0aG9kKCJncmlkIiwic2l6ZURlZmF1bHRzIikodCxlKSxuKCJwYXBlcl9i Z2NvbG9yIiksbigic2VwYXJhdG9ycyIsci5kZWNpbWFsK3IudGhvdXNhbmRz KSxuKCJoaWRlc291cmNlcyIpLG4oImNvbG9yd2F5IiksbigiZGF0YXJldmlz aW9uIik7dmFyIHM9bigidWlyZXZpc2lvbiIpO24oImVkaXRyZXZpc2lvbiIs cyksbigic2VsZWN0aW9ucmV2aXNpb24iLHMpLG4oIm1vZGViYXIub3JpZW50 YXRpb24iKSxuKCJtb2RlYmFyLmJnY29sb3IiLGMuYWRkT3BhY2l0eShlLnBh cGVyX2JnY29sb3IsLjUpKTt2YXIgdT1jLmNvbnRyYXN0KGMucmdiKGUubW9k ZWJhci5iZ2NvbG9yKSk7bigibW9kZWJhci5jb2xvciIsYy5hZGRPcGFjaXR5 KHUsLjMpKSxuKCJtb2RlYmFyLmFjdGl2ZWNvbG9yIixjLmFkZE9wYWNpdHko dSwuNykpLG4oIm1vZGViYXIudWlyZXZpc2lvbiIscyksbigibWV0YSIpLGwu aXNQbGFpbk9iamVjdCh0LnRyYW5zaXRpb24pJiYobigidHJhbnNpdGlvbi5k dXJhdGlvbiIpLG4oInRyYW5zaXRpb24uZWFzaW5nIiksbigidHJhbnNpdGlv bi5vcmRlcmluZyIpKSxpLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJz IiwiaGFuZGxlRGVmYXVsdHMiKSh0LGUsImNhbGVuZGFyIiksaS5nZXRDb21w b25lbnRNZXRob2QoImZ4Iiwic3VwcGx5TGF5b3V0R2xvYmFsRGVmYXVsdHMi KSh0LGUsbil9LG0ucGxvdEF1dG9TaXplPWZ1bmN0aW9uKHQsZSxyKXt2YXIg bixpLG89dC5fY29udGV4dHx8e30scz1vLmZyYW1lTWFyZ2lucyxjPWwuaXNQ bG90RGl2KHQpO2lmKGMmJnQuZW1pdCgicGxvdGx5X2F1dG9zaXplIiksby5m aWxsRnJhbWUpbj13aW5kb3cuaW5uZXJXaWR0aCxpPXdpbmRvdy5pbm5lckhl aWdodCxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Vs c2V7dmFyIHU9Yz93aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTp7fTtpZihu PXBhcnNlRmxvYXQodS53aWR0aCl8fHBhcnNlRmxvYXQodS5tYXhXaWR0aCl8 fHIud2lkdGgsaT1wYXJzZUZsb2F0KHUuaGVpZ2h0KXx8cGFyc2VGbG9hdCh1 Lm1heEhlaWdodCl8fHIuaGVpZ2h0LGEocykmJnM+MCl7dmFyIGg9MS0yKnM7 bj1NYXRoLnJvdW5kKGgqbiksaT1NYXRoLnJvdW5kKGgqaSl9fXZhciBmPW0u bGF5b3V0QXR0cmlidXRlcy53aWR0aC5taW4scD1tLmxheW91dEF0dHJpYnV0 ZXMuaGVpZ2h0Lm1pbjtuPGYmJihuPWYpLGk8cCYmKGk9cCk7dmFyIGQ9IWUu d2lkdGgmJk1hdGguYWJzKHIud2lkdGgtbik+MSxnPSFlLmhlaWdodCYmTWF0 aC5hYnMoci5oZWlnaHQtaSk+MTsoZ3x8ZCkmJihkJiYoci53aWR0aD1uKSxn JiYoci5oZWlnaHQ9aSkpLHQuX2luaXRpYWxBdXRvU2l6ZXx8KHQuX2luaXRp YWxBdXRvU2l6ZT17d2lkdGg6bixoZWlnaHQ6aX0pLG0uc2FuaXRpemVNYXJn aW5zKHIpfSxtLnN1cHBseUxheW91dE1vZHVsZURlZmF1bHRzPWZ1bmN0aW9u KHQsZSxyLG4pe3ZhciBhLG8scyxjPWkuY29tcG9uZW50c1JlZ2lzdHJ5LHU9 ZS5fYmFzZVBsb3RNb2R1bGVzLGg9aS5zdWJwbG90c1JlZ2lzdHJ5LmNhcnRl c2lhbjtmb3IoYSBpbiBjKShzPWNbYV0pLmluY2x1ZGVCYXNlUGxvdCYmcy5p bmNsdWRlQmFzZVBsb3QodCxlKTtmb3IodmFyIGYgaW4gdS5sZW5ndGh8fHUu cHVzaChoKSxlLl9oYXMoImNhcnRlc2lhbiIpJiYoaS5nZXRDb21wb25lbnRN ZXRob2QoImdyaWQiLCJjb250ZW50RGVmYXVsdHMiKSh0LGUpLGguZmluYWxp emVTdWJwbG90cyh0LGUpKSxlLl9zdWJwbG90cyllLl9zdWJwbG90c1tmXS5z b3J0KGwuc3VicGxvdFNvcnQpO2ZvcihvPTA7bzx1Lmxlbmd0aDtvKyspKHM9 dVtvXSkuc3VwcGx5TGF5b3V0RGVmYXVsdHMmJnMuc3VwcGx5TGF5b3V0RGVm YXVsdHModCxlLHIpO3ZhciBwPWUuX21vZHVsZXM7Zm9yKG89MDtvPHAubGVu Z3RoO28rKykocz1wW29dKS5zdXBwbHlMYXlvdXREZWZhdWx0cyYmcy5zdXBw bHlMYXlvdXREZWZhdWx0cyh0LGUscik7dmFyIGQ9ZS5fdHJhbnNmb3JtTW9k dWxlcztmb3Iobz0wO288ZC5sZW5ndGg7bysrKShzPWRbb10pLnN1cHBseUxh eW91dERlZmF1bHRzJiZzLnN1cHBseUxheW91dERlZmF1bHRzKHQsZSxyLG4p O2ZvcihhIGluIGMpKHM9Y1thXSkuc3VwcGx5TGF5b3V0RGVmYXVsdHMmJnMu c3VwcGx5TGF5b3V0RGVmYXVsdHModCxlLHIpfSxtLnB1cmdlPWZ1bmN0aW9u KHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXR8fHt9O3ZvaWQgMCE9PWUuX2dsY29u dGFpbmVyJiYoZS5fZ2xjb250YWluZXIuc2VsZWN0QWxsKCIuZ2wtY2FudmFz IikucmVtb3ZlKCksZS5fZ2xjb250YWluZXIucmVtb3ZlKCksZS5fZ2xjYW52 YXM9bnVsbCksZS5fbW9kZUJhciYmZS5fbW9kZUJhci5kZXN0cm95KCksdC5f dHJhbnNpdGlvbkRhdGEmJih0Ll90cmFuc2l0aW9uRGF0YS5faW50ZXJydXB0 Q2FsbGJhY2tzJiYodC5fdHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxi YWNrcy5sZW5ndGg9MCksdC5fdHJhbnNpdGlvbkRhdGEuX2FuaW1hdGlvblJh ZiYmd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHQuX3RyYW5zaXRpb25E YXRhLl9hbmltYXRpb25SYWYpKSxsLmNsZWFyVGhyb3R0bGUoKSxsLmNsZWFy UmVzcG9uc2l2ZSh0KSxkZWxldGUgdC5kYXRhLGRlbGV0ZSB0LmxheW91dCxk ZWxldGUgdC5fZnVsbERhdGEsZGVsZXRlIHQuX2Z1bGxMYXlvdXQsZGVsZXRl IHQuY2FsY2RhdGEsZGVsZXRlIHQuZnJhbWV3b3JrLGRlbGV0ZSB0LmVtcHR5 LGRlbGV0ZSB0LmZpZCxkZWxldGUgdC51bmRvcXVldWUsZGVsZXRlIHQudW5k b251bSxkZWxldGUgdC5hdXRvcGxheSxkZWxldGUgdC5jaGFuZ2VkLGRlbGV0 ZSB0Ll9wcm9taXNlcyxkZWxldGUgdC5fcmVkcmF3VGltZXIsZGVsZXRlIHQu X2htbHVtY291bnQsZGVsZXRlIHQuX2htcGl4Y291bnQsZGVsZXRlIHQuX3Ry YW5zaXRpb25EYXRhLGRlbGV0ZSB0Ll90cmFuc2l0aW9uaW5nLGRlbGV0ZSB0 Ll9pbml0aWFsQXV0b1NpemUsZGVsZXRlIHQuX3RyYW5zaXRpb25pbmdXaXRo RHVyYXRpb24sZGVsZXRlIHQuX2RyYWdnaW5nLGRlbGV0ZSB0Ll9kcmFnZ2Vk LGRlbGV0ZSB0Ll9kcmFnZGF0YSxkZWxldGUgdC5faG92ZXJkYXRhLGRlbGV0 ZSB0Ll9zbmFwc2hvdEluUHJvZ3Jlc3MsZGVsZXRlIHQuX2VkaXRpbmcsZGVs ZXRlIHQuX21vdXNlRG93blRpbWUsZGVsZXRlIHQuX2xlZ2VuZE1vdXNlRG93 blRpbWUsdC5yZW1vdmVBbGxMaXN0ZW5lcnMmJnQucmVtb3ZlQWxsTGlzdGVu ZXJzKCl9LG0uc3R5bGU9ZnVuY3Rpb24odCl7dmFyIGUscj10Ll9mdWxsTGF5 b3V0Ll92aXNpYmxlTW9kdWxlcyxuPVtdO2ZvcihlPTA7ZTxyLmxlbmd0aDtl Kyspe3ZhciBhPXJbZV07YS5zdHlsZSYmbC5wdXNoVW5pcXVlKG4sYS5zdHls ZSl9Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdKHQpfSxtLnNhbml0aXpl TWFyZ2lucz1mdW5jdGlvbih0KXtpZih0JiZ0Lm1hcmdpbil7dmFyIGUscj10 LndpZHRoLG49dC5oZWlnaHQsYT10Lm1hcmdpbixpPXItKGEubCthLnIpLG89 bi0oYS50K2EuYik7aTwwJiYoZT0oci0xKS8oYS5sK2EuciksYS5sPU1hdGgu Zmxvb3IoZSphLmwpLGEucj1NYXRoLmZsb29yKGUqYS5yKSksbzwwJiYoZT0o bi0xKS8oYS50K2EuYiksYS50PU1hdGguZmxvb3IoZSphLnQpLGEuYj1NYXRo LmZsb29yKGUqYS5iKSl9fSxtLmNsZWFyQXV0b01hcmdpbklkcz1mdW5jdGlv bih0KXt0Ll9mdWxsTGF5b3V0Ll9wdXNobWFyZ2luSWRzPXt9fSxtLmFsbG93 QXV0b01hcmdpbj1mdW5jdGlvbih0LGUpe3QuX2Z1bGxMYXlvdXQuX3B1c2ht YXJnaW5JZHNbZV09MX0sbS5hdXRvTWFyZ2luPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj10Ll9mdWxsTGF5b3V0LGE9bi5fcHVzaG1hcmdpbixpPW4uX3B1c2ht YXJnaW5JZHM7aWYoITEhPT1uLm1hcmdpbi5hdXRvZXhwYW5kKXtpZihyKXt2 YXIgbz1yLnBhZDtpZih2b2lkIDA9PT1vKXt2YXIgcz1uLm1hcmdpbjtvPU1h dGgubWluKDEyLHMubCxzLnIscy50LHMuYil9ci5sK3Iucj4uNSpuLndpZHRo JiYobC5sb2coIk1hcmdpbiBwdXNoIixlLCJpcyB0b28gYmlnIGluIHgsIGRy b3BwaW5nIiksci5sPXIucj0wKSxyLmIrci50Pi41Km4uaGVpZ2h0JiYobC5s b2coIk1hcmdpbiBwdXNoIixlLCJpcyB0b28gYmlnIGluIHksIGRyb3BwaW5n Iiksci5iPXIudD0wKTt2YXIgYz12b2lkIDAhPT1yLnhsP3IueGw6ci54LHU9 dm9pZCAwIT09ci54cj9yLnhyOnIueCxoPXZvaWQgMCE9PXIueXQ/ci55dDpy LnksZj12b2lkIDAhPT1yLnliP3IueWI6ci55O2FbZV09e2w6e3ZhbDpjLHNp emU6ci5sK299LHI6e3ZhbDp1LHNpemU6ci5yK299LGI6e3ZhbDpmLHNpemU6 ci5iK299LHQ6e3ZhbDpoLHNpemU6ci50K299fSxpW2VdPTF9ZWxzZSBkZWxl dGUgYVtlXSxkZWxldGUgaVtlXTtpZighbi5fcmVwbG90dGluZylyZXR1cm4g bS5kb0F1dG9NYXJnaW4odCl9fSxtLmRvQXV0b01hcmdpbj1mdW5jdGlvbih0 KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2UuX3NpemV8fChlLl9zaXplPXt9KSxB KGUpO3ZhciByPWUuX3NpemUsbj1lLm1hcmdpbixvPWwuZXh0ZW5kRmxhdCh7 fSxyKSxzPW4ubCxjPW4ucix1PW4udCxoPW4uYixmPWUud2lkdGgscD1lLmhl aWdodCxkPWUuX3B1c2htYXJnaW4sZz1lLl9wdXNobWFyZ2luSWRzO2lmKCEx IT09ZS5tYXJnaW4uYXV0b2V4cGFuZCl7Zm9yKHZhciB2IGluIGQpZ1t2XXx8 ZGVsZXRlIGRbdl07Zm9yKHZhciB5IGluIGQuYmFzZT17bDp7dmFsOjAsc2l6 ZTpzfSxyOnt2YWw6MSxzaXplOmN9LHQ6e3ZhbDoxLHNpemU6dX0sYjp7dmFs OjAsc2l6ZTpofX0sZCl7dmFyIHg9ZFt5XS5sfHx7fSxiPWRbeV0uYnx8e30s Xz14LnZhbCx3PXguc2l6ZSxrPWIudmFsLFQ9Yi5zaXplO2Zvcih2YXIgTSBp biBkKXtpZihhKHcpJiZkW01dLnIpe3ZhciBTPWRbTV0uci52YWwsRT1kW01d LnIuc2l6ZTtpZihTPl8pe3ZhciBMPSh3KlMrKEUtZikqXykvKFMtXyksQz0o RSooMS1fKSsody1mKSooMS1TKSkvKFMtXyk7TD49MCYmQz49MCYmZi0oTCtD KT4wJiZMK0M+cytjJiYocz1MLGM9Qyl9fWlmKGEoVCkmJmRbTV0udCl7dmFy IFA9ZFtNXS50LnZhbCxPPWRbTV0udC5zaXplO2lmKFA+ayl7dmFyIHo9KFQq UCsoTy1wKSprKS8oUC1rKSxJPShPKigxLWspKyhULXApKigxLVApKS8oUC1r KTt6Pj0wJiZJPj0wJiZwLShJK3opPjAmJnorST5oK3UmJihoPXosdT1JKX19 fX19aWYoci5sPU1hdGgucm91bmQocyksci5yPU1hdGgucm91bmQoYyksci50 PU1hdGgucm91bmQodSksci5iPU1hdGgucm91bmQoaCksci5wPU1hdGgucm91 bmQobi5wYWQpLHIudz1NYXRoLnJvdW5kKGYpLXIubC1yLnIsci5oPU1hdGgu cm91bmQocCktci50LXIuYiwhZS5fcmVwbG90dGluZyYmbS5kaWRNYXJnaW5D aGFuZ2UobyxyKSl7Il9yZWRyYXdGcm9tQXV0b01hcmdpbkNvdW50ImluIGU/ ZS5fcmVkcmF3RnJvbUF1dG9NYXJnaW5Db3VudCsrOmUuX3JlZHJhd0Zyb21B dXRvTWFyZ2luQ291bnQ9MTt2YXIgRD0zKigxK09iamVjdC5rZXlzKGcpLmxl bmd0aCk7aWYoZS5fcmVkcmF3RnJvbUF1dG9NYXJnaW5Db3VudDxEKXJldHVy biBpLmNhbGwoInBsb3QiLHQpO2wud2FybigiVG9vIG1hbnkgYXV0by1tYXJn aW4gcmVkcmF3cy4iKX19O3ZhciBTPVsibCIsInIiLCJ0IiwiYiIsInAiLCJ3 IiwiaCJdO2Z1bmN0aW9uIEUodCxlLHIpe3ZhciBuPSExO3ZhciBhPVttLnBy ZXZpb3VzUHJvbWlzZXMsZnVuY3Rpb24oKXtpZih0Ll90cmFuc2l0aW9uRGF0 YSlyZXR1cm4gdC5fdHJhbnNpdGlvbmluZz0hMSxmdW5jdGlvbih0KXt2YXIg ZT1Qcm9taXNlLnJlc29sdmUoKTtpZighdClyZXR1cm4gZTtmb3IoO3QubGVu Z3RoOyllPWUudGhlbih0LnNoaWZ0KCkpO3JldHVybiBlfSh0Ll90cmFuc2l0 aW9uRGF0YS5faW50ZXJydXB0Q2FsbGJhY2tzKX0sci5wcmVwYXJlRm4sbS5y ZWhvdmVyLGZ1bmN0aW9uKCl7cmV0dXJuIHQuZW1pdCgicGxvdGx5X3RyYW5z aXRpb25pbmciLFtdKSxuZXcgUHJvbWlzZShmdW5jdGlvbihhKXt0Ll90cmFu c2l0aW9uaW5nPSEwLGUuZHVyYXRpb24+MCYmKHQuX3RyYW5zaXRpb25pbmdX aXRoRHVyYXRpb249ITApLHQuX3RyYW5zaXRpb25EYXRhLl9pbnRlcnJ1cHRD YWxsYmFja3MucHVzaChmdW5jdGlvbigpe249ITB9KSxyLnJlZHJhdyYmdC5f dHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxiYWNrcy5wdXNoKGZ1bmN0 aW9uKCl7cmV0dXJuIGkuY2FsbCgicmVkcmF3Iix0KX0pLHQuX3RyYW5zaXRp b25EYXRhLl9pbnRlcnJ1cHRDYWxsYmFja3MucHVzaChmdW5jdGlvbigpe3Qu ZW1pdCgicGxvdGx5X3RyYW5zaXRpb25pbnRlcnJ1cHRlZCIsW10pfSk7dmFy IG89MCxzPTA7ZnVuY3Rpb24gbCgpe3JldHVybiBvKyssZnVuY3Rpb24oKXt2 YXIgZTtzKyssbnx8cyE9PW98fChlPWEsdC5fdHJhbnNpdGlvbkRhdGEmJihm dW5jdGlvbih0KXtpZih0KWZvcig7dC5sZW5ndGg7KXQuc2hpZnQoKX0odC5f dHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxiYWNrcyksUHJvbWlzZS5y ZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe2lmKHIucmVkcmF3KXJldHVybiBp LmNhbGwoInJlZHJhdyIsdCl9KS50aGVuKGZ1bmN0aW9uKCl7dC5fdHJhbnNp dGlvbmluZz0hMSx0Ll90cmFuc2l0aW9uaW5nV2l0aER1cmF0aW9uPSExLHQu ZW1pdCgicGxvdGx5X3RyYW5zaXRpb25lZCIsW10pfSkudGhlbihlKSkpfX1y LnJ1bkZuKGwpLHNldFRpbWVvdXQobCgpKX0pfV0sbz1sLnN5bmNPckFzeW5j KGEsdCk7cmV0dXJuIG8mJm8udGhlbnx8KG89UHJvbWlzZS5yZXNvbHZlKCkp LG8udGhlbihmdW5jdGlvbigpe3JldHVybiB0fSl9bS5kaWRNYXJnaW5DaGFu Z2U9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPFMubGVuZ3RoO3IrKyl7 dmFyIG49U1tyXSxpPXRbbl0sbz1lW25dO2lmKCFhKGkpfHxNYXRoLmFicyhv LWkpPjEpcmV0dXJuITB9cmV0dXJuITF9LG0uZ3JhcGhKc29uPWZ1bmN0aW9u KHQsZSxyLG4sYSl7KGEmJmUmJiF0Ll9mdWxsRGF0YXx8YSYmIWUmJiF0Ll9m dWxsTGF5b3V0KSYmbS5zdXBwbHlEZWZhdWx0cyh0KTt2YXIgaT1hP3QuX2Z1 bGxEYXRhOnQuZGF0YSxvPWE/dC5fZnVsbExheW91dDp0LmxheW91dCxzPSh0 Ll90cmFuc2l0aW9uRGF0YXx8e30pLl9mcmFtZXM7ZnVuY3Rpb24gYyh0KXtp ZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gbnVsbDtpZihsLmlzUGxh aW5PYmplY3QodCkpe3ZhciBlLG4sYT17fTtmb3IoZSBpbiB0KWlmKCJmdW5j dGlvbiIhPXR5cGVvZiB0W2VdJiYtMT09PVsiXyIsIlsiXS5pbmRleE9mKGUu Y2hhckF0KDApKSl7aWYoImtlZXBkYXRhIj09PXIpe2lmKCJzcmMiPT09ZS5z dWJzdHIoZS5sZW5ndGgtMykpY29udGludWV9ZWxzZSBpZigia2VlcHN0cmVh bSI9PT1yKXtpZigic3RyaW5nIj09dHlwZW9mKG49dFtlKyJzcmMiXSkmJm4u aW5kZXhPZigiOiIpPjAmJiFsLmlzUGxhaW5PYmplY3QodC5zdHJlYW0pKWNv bnRpbnVlfWVsc2UgaWYoImtlZXBhbGwiIT09ciYmInN0cmluZyI9PXR5cGVv ZihuPXRbZSsic3JjIl0pJiZuLmluZGV4T2YoIjoiKT4wKWNvbnRpbnVlO2Fb ZV09Yyh0W2VdKX1yZXR1cm4gYX1yZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90 Lm1hcChjKTpsLmlzVHlwZWRBcnJheSh0KT9sLnNpbXBsZU1hcCh0LGwuaWRl bnRpdHkpOmwuaXNKU0RhdGUodCk/bC5tczJEYXRlVGltZUxvY2FsKCt0KTp0 fXZhciB1PXtkYXRhOihpfHxbXSkubWFwKGZ1bmN0aW9uKHQpe3ZhciByPWMo dCk7cmV0dXJuIGUmJmRlbGV0ZSByLmZpdCxyfSl9O3JldHVybiBlfHwodS5s YXlvdXQ9YyhvKSksdC5mcmFtZXdvcmsmJnQuZnJhbWV3b3JrLmlzUG9sYXIm Jih1PXQuZnJhbWV3b3JrLmdldENvbmZpZygpKSxzJiYodS5mcmFtZXM9Yyhz KSksIm9iamVjdCI9PT1uP3U6SlNPTi5zdHJpbmdpZnkodSl9LG0ubW9kaWZ5 RnJhbWVzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhLGk9dC5fdHJhbnNpdGlv bkRhdGEuX2ZyYW1lcyxvPXQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZUhhc2g7 Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylzd2l0Y2goKG49ZVtyXSkudHlwZSl7 Y2FzZSJyZXBsYWNlIjphPW4udmFsdWU7dmFyIHM9KGlbbi5pbmRleF18fHt9 KS5uYW1lLGw9YS5uYW1lO2lbbi5pbmRleF09b1tsXT1hLGwhPT1zJiYoZGVs ZXRlIG9bc10sb1tsXT1hKTticmVhaztjYXNlImluc2VydCI6b1soYT1uLnZh bHVlKS5uYW1lXT1hLGkuc3BsaWNlKG4uaW5kZXgsMCxhKTticmVhaztjYXNl ImRlbGV0ZSI6ZGVsZXRlIG9bKGE9aVtuLmluZGV4XSkubmFtZV0saS5zcGxp Y2Uobi5pbmRleCwxKX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LG0uY29t cHV0ZUZyYW1lPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhLGksbz10Ll90cmFu c2l0aW9uRGF0YS5fZnJhbWVIYXNoO2lmKCFlKXRocm93IG5ldyBFcnJvcigi Y29tcHV0ZUZyYW1lIG11c3QgYmUgZ2l2ZW4gYSBzdHJpbmcgZnJhbWUgbmFt ZSIpO3ZhciBzPW9bZS50b1N0cmluZygpXTtpZighcylyZXR1cm4hMTtmb3Io dmFyIGw9W3NdLGM9W3MubmFtZV07cy5iYXNlZnJhbWUmJihzPW9bcy5iYXNl ZnJhbWUudG9TdHJpbmcoKV0pJiYtMT09PWMuaW5kZXhPZihzLm5hbWUpOyls LnB1c2gocyksYy5wdXNoKHMubmFtZSk7Zm9yKHZhciB1PXt9O3M9bC5wb3Ao KTspaWYocy5sYXlvdXQmJih1LmxheW91dD1tLmV4dGVuZExheW91dCh1Lmxh eW91dCxzLmxheW91dCkpLHMuZGF0YSl7aWYodS5kYXRhfHwodS5kYXRhPVtd KSwhKG49cy50cmFjZXMpKWZvcihuPVtdLHI9MDtyPHMuZGF0YS5sZW5ndGg7 cisrKW5bcl09cjtmb3IodS50cmFjZXN8fCh1LnRyYWNlcz1bXSkscj0wO3I8 cy5kYXRhLmxlbmd0aDtyKyspbnVsbCE9KGE9bltyXSkmJigtMT09PShpPXUu dHJhY2VzLmluZGV4T2YoYSkpJiYoaT11LmRhdGEubGVuZ3RoLHUudHJhY2Vz W2ldPWEpLHUuZGF0YVtpXT1tLmV4dGVuZFRyYWNlKHUuZGF0YVtpXSxzLmRh dGFbcl0pKX1yZXR1cm4gdX0sbS5yZWNvbXB1dGVGcmFtZUhhc2g9ZnVuY3Rp b24odCl7Zm9yKHZhciBlPXQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZUhhc2g9 e30scj10Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVzLG49MDtuPHIubGVuZ3Ro O24rKyl7dmFyIGE9cltuXTthJiZhLm5hbWUmJihlW2EubmFtZV09YSl9fSxt LmV4dGVuZE9iamVjdFdpdGhDb250YWluZXJzPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbixhLGksbyxzLGMsdSxoPWwuZXh0ZW5kRGVlcE5vQXJyYXlzKHt9LGV8 fHt9KSxmPWwuZXhwYW5kT2JqZWN0UGF0aHMoaCkscD17fTtpZihyJiZyLmxl bmd0aClmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXZvaWQgMD09PShhPShuPWwu bmVzdGVkUHJvcGVydHkoZixyW2ldKSkuZ2V0KCkpP2wubmVzdGVkUHJvcGVy dHkocCxyW2ldKS5zZXQobnVsbCk6KG4uc2V0KG51bGwpLGwubmVzdGVkUHJv cGVydHkocCxyW2ldKS5zZXQoYSkpO2lmKHQ9bC5leHRlbmREZWVwTm9BcnJh eXModHx8e30sZiksciYmci5sZW5ndGgpZm9yKGk9MDtpPHIubGVuZ3RoO2kr KylpZihjPWwubmVzdGVkUHJvcGVydHkocCxyW2ldKS5nZXQoKSl7Zm9yKHU9 KHM9bC5uZXN0ZWRQcm9wZXJ0eSh0LHJbaV0pKS5nZXQoKSxBcnJheS5pc0Fy cmF5KHUpfHwodT1bXSxzLnNldCh1KSksbz0wO288Yy5sZW5ndGg7bysrKXt2 YXIgZD1jW29dO3Vbb109bnVsbD09PWQ/bnVsbDptLmV4dGVuZE9iamVjdFdp dGhDb250YWluZXJzKHVbb10sZCl9cy5zZXQodSl9cmV0dXJuIHR9LG0uZGF0 YUFycmF5Q29udGFpbmVycz1bInRyYW5zZm9ybXMiLCJkaW1lbnNpb25zIl0s bS5sYXlvdXRBcnJheUNvbnRhaW5lcnM9aS5sYXlvdXRBcnJheUNvbnRhaW5l cnMsbS5leHRlbmRUcmFjZT1mdW5jdGlvbih0LGUpe3JldHVybiBtLmV4dGVu ZE9iamVjdFdpdGhDb250YWluZXJzKHQsZSxtLmRhdGFBcnJheUNvbnRhaW5l cnMpfSxtLmV4dGVuZExheW91dD1mdW5jdGlvbih0LGUpe3JldHVybiBtLmV4 dGVuZE9iamVjdFdpdGhDb250YWluZXJzKHQsZSxtLmxheW91dEFycmF5Q29u dGFpbmVycyl9LG0udHJhbnNpdGlvbj1mdW5jdGlvbih0LGUscixuLGEsaSl7 dmFyIG89e3JlZHJhdzphLnJlZHJhd30scz17fSxjPVtdO3JldHVybiBvLnBy ZXBhcmVGbj1mdW5jdGlvbigpe2Zvcih2YXIgYT1BcnJheS5pc0FycmF5KGUp P2UubGVuZ3RoOjAsaT1uLnNsaWNlKDAsYSksbz0wO288aS5sZW5ndGg7bysr KXt2YXIgdT1pW29dLGg9dC5fZnVsbERhdGFbdV0uX21vZHVsZTtpZihoKXtp ZihoLmFuaW1hdGFibGUpe3ZhciBmPWguYmFzZVBsb3RNb2R1bGUubmFtZTtz W2ZdfHwoc1tmXT1bXSksc1tmXS5wdXNoKHUpfXQuZGF0YVtpW29dXT1tLmV4 dGVuZFRyYWNlKHQuZGF0YVtpW29dXSxlW29dKX19dmFyIHA9bC5leHBhbmRP YmplY3RQYXRocyhsLmV4dGVuZERlZXBOb0FycmF5cyh7fSxyKSksZD0vXlt4 eV1heGlzWzAtOV0qJC87Zm9yKHZhciBnIGluIHApZC50ZXN0KGcpJiZkZWxl dGUgcFtnXS5yYW5nZTttLmV4dGVuZExheW91dCh0LmxheW91dCxwKSxkZWxl dGUgdC5jYWxjZGF0YSxtLnN1cHBseURlZmF1bHRzKHQpLG0uZG9DYWxjZGF0 YSh0KTt2YXIgdj1sLmV4cGFuZE9iamVjdFBhdGhzKHIpO2lmKHYpe3ZhciB5 PXQuX2Z1bGxMYXlvdXQuX3Bsb3RzO2Zvcih2YXIgeCBpbiB5KXt2YXIgYj15 W3hdLF89Yi54YXhpcyx3PWIueWF4aXMsaz1fLnJhbmdlLnNsaWNlKCksVD13 LnJhbmdlLnNsaWNlKCksTT1udWxsLEE9bnVsbCxTPW51bGwsRT1udWxsO0Fy cmF5LmlzQXJyYXkodltfLl9uYW1lKyIucmFuZ2UiXSk/TT12W18uX25hbWUr Ii5yYW5nZSJdLnNsaWNlKCk6QXJyYXkuaXNBcnJheSgodltfLl9uYW1lXXx8 e30pLnJhbmdlKSYmKE09dltfLl9uYW1lXS5yYW5nZS5zbGljZSgpKSxBcnJh eS5pc0FycmF5KHZbdy5fbmFtZSsiLnJhbmdlIl0pP0E9dlt3Ll9uYW1lKyIu cmFuZ2UiXS5zbGljZSgpOkFycmF5LmlzQXJyYXkoKHZbdy5fbmFtZV18fHt9 KS5yYW5nZSkmJihBPXZbdy5fbmFtZV0ucmFuZ2Uuc2xpY2UoKSksayYmTSYm KF8ucjJsKGtbMF0pIT09Xy5yMmwoTVswXSl8fF8ucjJsKGtbMV0pIT09Xy5y MmwoTVsxXSkpJiYoUz17eHIwOmsseHIxOk19KSxUJiZBJiYody5yMmwoVFsw XSkhPT13LnIybChBWzBdKXx8dy5yMmwoVFsxXSkhPT13LnIybChBWzFdKSkm JihFPXt5cjA6VCx5cjE6QX0pLChTfHxFKSYmYy5wdXNoKGwuZXh0ZW5kRmxh dCh7cGxvdGluZm86Yn0sUyxFKSl9fXJldHVybiBQcm9taXNlLnJlc29sdmUo KX0sby5ydW5Gbj1mdW5jdGlvbihlKXt2YXIgbixhLG89dC5fZnVsbExheW91 dC5fYmFzZVBsb3RNb2R1bGVzLHU9Yy5sZW5ndGg7aWYocilmb3IoYT0wO2E8 by5sZW5ndGg7YSsrKW9bYV0udHJhbnNpdGlvbkF4ZXMmJm9bYV0udHJhbnNp dGlvbkF4ZXModCxjLGksZSk7Zm9yKHZhciBoIGluIHU/KChuPWwuZXh0ZW5k RmxhdCh7fSxpKSkuZHVyYXRpb249MCxkZWxldGUgcy5jYXJ0ZXNpYW4pOm49 aSxzKXt2YXIgZj1zW2hdO3QuX2Z1bGxEYXRhW2ZbMF1dLl9tb2R1bGUuYmFz ZVBsb3RNb2R1bGUucGxvdCh0LGYsbixlKX19LEUodCxpLG8pfSxtLnRyYW5z aXRpb25Gcm9tUmVhY3Q9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9dC5fZnVs bExheW91dCxpPWEudHJhbnNpdGlvbixvPXt9LHM9W107cmV0dXJuIG8ucHJl cGFyZUZuPWZ1bmN0aW9uKCl7dmFyIHQ9YS5fcGxvdHM7Zm9yKHZhciBpIGlu IG8ucmVkcmF3PSExLCJzb21lIj09PWUuYW5pbSYmKG8ucmVkcmF3PSEwKSwi c29tZSI9PT1yLmFuaW0mJihvLnJlZHJhdz0hMCksdCl7dmFyIGM9dFtpXSx1 PWMueGF4aXMsaD1jLnlheGlzLGY9blt1Ll9uYW1lXS5yYW5nZS5zbGljZSgp LHA9bltoLl9uYW1lXS5yYW5nZS5zbGljZSgpLGQ9dS5yYW5nZS5zbGljZSgp LGc9aC5yYW5nZS5zbGljZSgpO3Uuc2V0U2NhbGUoKSxoLnNldFNjYWxlKCk7 dmFyIHY9bnVsbCxtPW51bGw7dS5yMmwoZlswXSk9PT11LnIybChkWzBdKSYm dS5yMmwoZlsxXSk9PT11LnIybChkWzFdKXx8KHY9e3hyMDpmLHhyMTpkfSks aC5yMmwocFswXSk9PT1oLnIybChnWzBdKSYmaC5yMmwocFsxXSk9PT1oLnIy bChnWzFdKXx8KG09e3lyMDpwLHlyMTpnfSksKHZ8fG0pJiZzLnB1c2gobC5l eHRlbmRGbGF0KHtwbG90aW5mbzpjfSx2LG0pKX1yZXR1cm4gUHJvbWlzZS5y ZXNvbHZlKCl9LG8ucnVuRm49ZnVuY3Rpb24ocil7Zm9yKHZhciBuLGEsbyxj PXQuX2Z1bGxEYXRhLHU9dC5fZnVsbExheW91dC5fYmFzZVBsb3RNb2R1bGVz LGg9W10sZj0wO2Y8Yy5sZW5ndGg7ZisrKWgucHVzaChmKTtmdW5jdGlvbiBw KCl7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspdVtlXS50cmFuc2l0aW9u QXhlcyYmdVtlXS50cmFuc2l0aW9uQXhlcyh0LHMsbixyKX1mdW5jdGlvbiBk KCl7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspdVtlXS5wbG90KHQsbyxh LHIpfXMubGVuZ3RoJiZlLmFuaW0/InRyYWNlcyBmaXJzdCI9PT1pLm9yZGVy aW5nPyhuPWwuZXh0ZW5kRmxhdCh7fSxpLHtkdXJhdGlvbjowfSksbz1oLGE9 aSxzZXRUaW1lb3V0KHAsaS5kdXJhdGlvbiksZCgpKToobj1pLG89bnVsbCxh PWwuZXh0ZW5kRmxhdCh7fSxpLHtkdXJhdGlvbjowfSksc2V0VGltZW91dChk LG4uZHVyYXRpb24pLHAoKSk6cy5sZW5ndGg/KG49aSxwKCkpOmUuYW5pbSYm KG89aCxhPWksZCgpKX0sRSh0LGksbyl9LG0uZG9DYWxjZGF0YT1mdW5jdGlv bih0LGUpe3ZhciByLG4sYSxzLGM9aC5saXN0KHQpLGY9dC5fZnVsbERhdGEs cD10Ll9mdWxsTGF5b3V0LGQ9bmV3IEFycmF5KGYubGVuZ3RoKSxnPSh0LmNh bGNkYXRhfHxbXSkuc2xpY2UoKTtmb3IodC5jYWxjZGF0YT1kLHAuX251bUJv eGVzPTAscC5fbnVtVmlvbGlucz0wLHAuX3Zpb2xpblNjYWxlR3JvdXBTdGF0 cz17fSx0Ll9obXBpeGNvdW50PTAsdC5faG1sdW1jb3VudD0wLHAuX3BpZWNv bG9ybWFwPXt9LHAuX3N1bmJ1cnN0Y29sb3JtYXA9e30scC5fdHJlZW1hcGNv bG9ybWFwPXt9LHAuX2Z1bm5lbGFyZWFjb2xvcm1hcD17fSxhPTA7YTxmLmxl bmd0aDthKyspQXJyYXkuaXNBcnJheShlKSYmLTE9PT1lLmluZGV4T2YoYSkm JihkW2FdPWdbYV0pO2ZvcihhPTA7YTxmLmxlbmd0aDthKyspKHI9ZlthXSku X2FycmF5QXR0cnM9by5maW5kQXJyYXlBdHRyaWJ1dGVzKHIpLHIuX2V4dHJl bWVzPXt9O3ZhciB2PXAuX3N1YnBsb3RzLnBvbGFyfHxbXTtmb3IoYT0wO2E8 di5sZW5ndGg7YSsrKWMucHVzaChwW3ZbYV1dLnJhZGlhbGF4aXMscFt2W2Fd XS5hbmd1bGFyYXhpcyk7Zm9yKHZhciBtIGluIHAuX2NvbG9yQXhlcyl7dmFy IHg9cFttXTshMSE9PXguY2F1dG8mJihkZWxldGUgeC5jbWluLGRlbGV0ZSB4 LmNtYXgpfXZhciBiPSExO2Z1bmN0aW9uIF8oZSl7aWYocj1mW2VdLG49ci5f bW9kdWxlLCEwPT09ci52aXNpYmxlJiZyLnRyYW5zZm9ybXMpe2lmKG4mJm4u Y2FsYyl7dmFyIGE9bi5jYWxjKHQscik7YVswXSYmYVswXS50JiZhWzBdLnQu X3NjZW5lJiZkZWxldGUgYVswXS50Ll9zY2VuZS5kaXJ0eX1mb3Iocz0wO3M8 ci50cmFuc2Zvcm1zLmxlbmd0aDtzKyspe3ZhciBpPXIudHJhbnNmb3Jtc1tz XTsobj15W2kudHlwZV0pJiZuLmNhbGNUcmFuc2Zvcm0mJihyLl9oYXNDYWxj VHJhbnNmb3JtPSEwLGI9ITAsbi5jYWxjVHJhbnNmb3JtKHQscixpKSl9fX1m dW5jdGlvbiB3KGUsYSl7aWYocj1mW2VdLCEhKG49ci5fbW9kdWxlKS5pc0Nv bnRhaW5lcj09PWEpe3ZhciBpPVtdO2lmKCEwPT09ci52aXNpYmxlJiYwIT09 ci5fbGVuZ3RoKXtkZWxldGUgci5faW5kZXhUb1BvaW50czt2YXIgbz1yLnRy YW5zZm9ybXN8fFtdO2ZvcihzPW8ubGVuZ3RoLTE7cz49MDtzLS0paWYob1tz XS5lbmFibGVkKXtyLl9pbmRleFRvUG9pbnRzPW9bc10uX2luZGV4VG9Qb2lu dHM7YnJlYWt9biYmbi5jYWxjJiYoaT1uLmNhbGModCxyKSl9QXJyYXkuaXNB cnJheShpKSYmaVswXXx8KGk9W3t4OnUseTp1fV0pLGlbMF0udHx8KGlbMF0u dD17fSksaVswXS50cmFjZT1yLGRbZV09aX19Zm9yKEMoYyxmLHApLGE9MDth PGYubGVuZ3RoO2ErKyl3KGEsITApO2ZvcihhPTA7YTxmLmxlbmd0aDthKysp XyhhKTtmb3IoYiYmQyhjLGYscCksYT0wO2E8Zi5sZW5ndGg7YSsrKXcoYSwh MCk7Zm9yKGE9MDthPGYubGVuZ3RoO2ErKyl3KGEsITEpO1AodCk7dmFyIGs9 ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsbyxzLGM9W107ZnVuY3Rpb24gdSh0 LHIsbil7dmFyIGE9ci5faWQuY2hhckF0KDApO2lmKCJoaXN0b2dyYW0yZGNv bnRvdXIiPT09dCl7dmFyIGk9ci5fY291bnRlckF4ZXNbMF0sbz1oLmdldEZy b21JZChlLGkpLHM9IngiPT09YXx8IngiPT09aSYmImNhdGVnb3J5Ij09PW8u dHlwZSxsPSJ5Ij09PWF8fCJ5Ij09PWkmJiJjYXRlZ29yeSI9PT1vLnR5cGU7 cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10fHwwPT09ZT8tMTpz JiZ0PT09bltlXS5sZW5ndGgtMT8tMTpsJiZlPT09bi5sZW5ndGgtMT8tMToo InkiPT09YT9lOnQpLTF9fXJldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiJ5 Ij09PWE/ZTp0fX12YXIgZj17bWluOmZ1bmN0aW9uKHQpe3JldHVybiBsLmFn Z051bXMoTWF0aC5taW4sbnVsbCx0KX0sbWF4OmZ1bmN0aW9uKHQpe3JldHVy biBsLmFnZ051bXMoTWF0aC5tYXgsbnVsbCx0KX0sc3VtOmZ1bmN0aW9uKHQp e3JldHVybiBsLmFnZ051bXMoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSxu dWxsLHQpfSx0b3RhbDpmdW5jdGlvbih0KXtyZXR1cm4gbC5hZ2dOdW1zKGZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0sbnVsbCx0KX0sbWVhbjpmdW5jdGlv bih0KXtyZXR1cm4gbC5tZWFuKHQpfSxtZWRpYW46ZnVuY3Rpb24odCl7cmV0 dXJuIGwubWVkaWFuKHQpfX07Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFy IHA9dFtyXTtpZigiY2F0ZWdvcnkiPT09cC50eXBlKXt2YXIgZD1wLmNhdGVn b3J5b3JkZXIubWF0Y2goTCk7aWYoZCl7dmFyIGc9ZFsxXSx2PWRbMl0sbT1b XTtmb3Iobj0wO248cC5fY2F0ZWdvcmllcy5sZW5ndGg7bisrKW0ucHVzaChb cC5fY2F0ZWdvcmllc1tuXSxbXV0pO2ZvcihuPTA7bjxwLl90cmFjZUluZGlj ZXMubGVuZ3RoO24rKyl7dmFyIHk9cC5fdHJhY2VJbmRpY2VzW25dLHg9ZS5f ZnVsbERhdGFbeV0sYj1wLl9pZC5jaGFyQXQoMCk7aWYoITA9PT14LnZpc2li bGUpe3ZhciBfPXgudHlwZTtpLnRyYWNlSXMoeCwiaGlzdG9ncmFtIikmJihk ZWxldGUgeC5feGF1dG9CaW5GaW5pc2hlZCxkZWxldGUgeC5feWF1dG9CaW5G aW5pc2hlZCk7dmFyIHc9ZS5jYWxjZGF0YVt5XTtmb3IoYT0wO2E8dy5sZW5n dGg7YSsrKXt2YXIgayxULE0sQT13W2FdO2lmKCJzcGxvbSI9PT1fKXt2YXIg Uz14Ll9heGVzRGltW3AuX2lkXTtpZigieSI9PT1iKXt2YXIgRT14Ll9kaWFn W1NdWzBdO0UmJihwPWUuX2Z1bGxMYXlvdXRbaC5pZDJuYW1lKEUpXSl9dmFy IEM9QS50cmFjZS5kaW1lbnNpb25zW1NdLnZhbHVlcztmb3Iobz0wO288Qy5s ZW5ndGg7bysrKWZvcihrPUNbb10sVD1wLl9jYXRlZ29yaWVzTWFwW2tdLHM9 MDtzPEEudHJhY2UuZGltZW5zaW9ucy5sZW5ndGg7cysrKWlmKHMhPT1TKXt2 YXIgUD1BLnRyYWNlLmRpbWVuc2lvbnNbc107bVtUXVsxXS5wdXNoKFAudmFs dWVzW29dKX19ZWxzZSBpZigic2NhdHRlcmdsIj09PV8pe2ZvcihvPTA7bzxB LnQueC5sZW5ndGg7bysrKSJ4Ij09PWImJihrPUEudC54W29dLFQ9ayxNPUEu dC55W29dKSwieSI9PT1iJiYoaz1BLnQueVtvXSxUPWssTT1BLnQueFtvXSks bVtUXVsxXS5wdXNoKE0pO0EudCYmQS50Ll9zY2VuZSYmZGVsZXRlIEEudC5f c2NlbmUuZGlydHl9ZWxzZSBpZihBLmhhc093blByb3BlcnR5KCJ6Iikpe009 QS56O3ZhciBPPXUoeC50eXBlLHAsTSk7Zm9yKG89MDtvPE0ubGVuZ3RoO28r Kylmb3Iocz0wO3M8TVtvXS5sZW5ndGg7cysrKShUPU8ocyxvKSkrMSYmbVtU XVsxXS5wdXNoKE1bb11bc10pfWVsc2UgZm9yKCJ4Ij09PWI/KGs9QS5wKzE/ QS5wOkEueCxNPUEuc3x8QS52fHxBLnkpOiJ5Ij09PWImJihrPUEucCsxP0Eu cDpBLnksTT1BLnN8fEEudnx8QS54KSxBcnJheS5pc0FycmF5KE0pfHwoTT1b TV0pLG89MDtvPE0ubGVuZ3RoO28rKyltW2tdWzFdLnB1c2goTVtvXSl9fX1w Ll9jYXRlZ29yaWVzVmFsdWU9bTt2YXIgej1bXTtmb3Iobj0wO248bS5sZW5n dGg7bisrKXoucHVzaChbbVtuXVswXSxmW2ddKG1bbl1bMV0pXSk7ei5zb3J0 KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMV0tZVsxXX0pLHAuX2NhdGVnb3Jp ZXNBZ2dyZWdhdGVkVmFsdWU9eixwLl9pbml0aWFsQ2F0ZWdvcmllcz16Lm1h cChmdW5jdGlvbih0KXtyZXR1cm4gdFswXX0pLCJkZXNjZW5kaW5nIj09PXYm JnAuX2luaXRpYWxDYXRlZ29yaWVzLnJldmVyc2UoKSxjPWMuY29uY2F0KHAu c29ydEJ5SW5pdGlhbENhdGVnb3JpZXMoKSl9fX1yZXR1cm4gY30oYyx0KTtp ZihrLmxlbmd0aCl7Zm9yKHAuX251bUJveGVzPTAscC5fbnVtVmlvbGlucz0w LGE9MDthPGsubGVuZ3RoO2ErKyl3KGtbYV0sITApO2ZvcihhPTA7YTxrLmxl bmd0aDthKyspdyhrW2FdLCExKTtQKHQpfWkuZ2V0Q29tcG9uZW50TWV0aG9k KCJmeCIsImNhbGMiKSh0KSxpLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3Ji YXJzIiwiY2FsYyIpKHQpfTt2YXIgTD0vKHRvdGFsfHN1bXxtaW58bWF4fG1l YW58bWVkaWFuKSAoYXNjZW5kaW5nfGRlc2NlbmRpbmcpLztmdW5jdGlvbiBD KHQsZSxyKXt2YXIgbixhLGksbz17fTtmb3Iobj0wO248dC5sZW5ndGg7bisr KWk9KGE9dFtuXSkuX2lkLGEuY2xlYXJDYWxjKCksIm11bHRpY2F0ZWdvcnki PT09YS50eXBlJiZhLnNldHVwTXVsdGlDYXRlZ29yeShlKSxvW2EuX2lkXT0x O3ZhciBzPXIuX2F4aXNNYXRjaEdyb3Vwc3x8W107Zm9yKG49MDtuPHMubGVu Z3RoO24rKylmb3IoaSBpbiBzW25dKW9baV18fChhPXJbaC5pZDJuYW1lKGkp XSkuY2xlYXJDYWxjKCl9ZnVuY3Rpb24gUCh0KXt2YXIgZSxyLG4sYT10Ll9m dWxsTGF5b3V0LGk9YS5fdmlzaWJsZU1vZHVsZXMsbz17fTtmb3Iocj0wO3I8 aS5sZW5ndGg7cisrKXt2YXIgcz1pW3JdLGM9cy5jcm9zc1RyYWNlQ2FsYztp ZihjKXt2YXIgdT1zLmJhc2VQbG90TW9kdWxlLm5hbWU7b1t1XT9sLnB1c2hV bmlxdWUob1t1XSxjKTpvW3VdPVtjXX19Zm9yKG4gaW4gbyl7dmFyIGg9b1tu XSxmPWEuX3N1YnBsb3RzW25dO2lmKEFycmF5LmlzQXJyYXkoZikpZm9yKGU9 MDtlPGYubGVuZ3RoO2UrKyl7dmFyIHA9ZltlXSxkPSJjYXJ0ZXNpYW4iPT09 bj9hLl9wbG90c1twXTphW3BdO2ZvcihyPTA7cjxoLmxlbmd0aDtyKyspaFty XSh0LGQscCl9ZWxzZSBmb3Iocj0wO3I8aC5sZW5ndGg7cisrKWhbcl0odCl9 fW0ucmVob3Zlcj1mdW5jdGlvbih0KXt0Ll9mdWxsTGF5b3V0Ll9yZWhvdmVy JiZ0Ll9mdWxsTGF5b3V0Ll9yZWhvdmVyKCl9LG0ucmVkcmFnPWZ1bmN0aW9u KHQpe3QuX2Z1bGxMYXlvdXQuX3JlZHJhZyYmdC5fZnVsbExheW91dC5fcmVk cmFnKCl9LG0uZ2VuZXJhbFVwZGF0ZVBlclRyYWNlTW9kdWxlPWZ1bmN0aW9u KHQsZSxyLG4pe3ZhciBhLGk9ZS50cmFjZUhhc2gsbz17fTtmb3IoYT0wO2E8 ci5sZW5ndGg7YSsrKXt2YXIgcz1yW2FdLGM9c1swXS50cmFjZTtjLnZpc2li bGUmJihvW2MudHlwZV09b1tjLnR5cGVdfHxbXSxvW2MudHlwZV0ucHVzaChz KSl9Zm9yKHZhciB1IGluIGkpaWYoIW9bdV0pe3ZhciBoPWlbdV1bMF07aFsw XS50cmFjZS52aXNpYmxlPSExLG9bdV09W2hdfWZvcih2YXIgZiBpbiBvKXt2 YXIgcD1vW2ZdO3BbMF1bMF0udHJhY2UuX21vZHVsZS5wbG90KHQsZSxsLmZp bHRlclZpc2libGUocCksbil9ZS50cmFjZUhhc2g9b30sbS5wbG90QmFzZVBs b3Q9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgbz1pLmdldE1vZHVsZSh0KSxz PWQoZS5jYWxjZGF0YSxvKVswXTtvLnBsb3QoZSxzLG4sYSl9LG0uY2xlYW5C YXNlUGxvdD1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPWEuX2hhcyYmYS5f aGFzKHQpLG89ci5faGFzJiZyLl9oYXModCk7aSYmIW8mJmFbIl8iK3QrImxh eWVyIl0uc2VsZWN0QWxsKCJnLnRyYWNlIikucmVtb3ZlKCl9fSx7Ii4uL2Nv bXBvbmVudHMvY29sb3IiOjU5MiwiLi4vY29uc3RhbnRzL251bWVyaWNhbCI6 NjkzLCIuLi9saWIiOjcxNywiLi4vcGxvdF9hcGkvcGxvdF9zY2hlbWEiOjc1 NCwiLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi9wbG90cy9n ZXRfZGF0YSI6ODAwLCIuLi9yZWdpc3RyeSI6ODQ2LCIuL2FuaW1hdGlvbl9h dHRyaWJ1dGVzIjo3NjAsIi4vYXR0cmlidXRlcyI6NzYyLCIuL2NhcnRlc2lh bi9heGlzX2lkcyI6NzY4LCIuL2NvbW1hbmQiOjc4OSwiLi9mb250X2F0dHJp YnV0ZXMiOjc5MSwiLi9mcmFtZV9hdHRyaWJ1dGVzIjo3OTIsIi4vbGF5b3V0 X2F0dHJpYnV0ZXMiOjgxNyxkMzoxNjUsImZhc3QtaXNudW1lcmljIjoyMjh9 XSw4Mjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PXthdHRyOiJzdWJwbG90IixuYW1lOiJwb2xhciIsYXhpc05hbWVzOlsiYW5n dWxhcmF4aXMiLCJyYWRpYWxheGlzIl0sYXhpc05hbWUyZGF0YUFycmF5Onth bmd1bGFyYXhpczoidGhldGEiLHJhZGlhbGF4aXM6InIifSxsYXllck5hbWVz OlsiZHJhZ2xheWVyIiwicGxvdGJnIiwiYmFja3Bsb3QiLCJhbmd1bGFyLWdy aWQiLCJyYWRpYWwtZ3JpZCIsImZyb250cGxvdCIsImFuZ3VsYXItbGluZSIs InJhZGlhbC1saW5lIiwiYW5ndWxhci1heGlzIiwicmFkaWFsLWF4aXMiXSxy YWRpYWxEcmFnQm94U2l6ZTo1MCxhbmd1bGFyRHJhZ0JveFNpemU6MzAsY29y bmVyTGVuOjI1LGNvcm5lckhhbGZXaWR0aDoyLE1JTkRSQUc6OCxNSU5aT09N OjIwLE9GRkVER0U6MjB9fSx7fV0sODI4OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vbGli L3BvbHlnb24iKS50ZXN0ZXIsaT1uLmZpbmRJbmRleE9mTWluLG89bi5pc0Fu Z2xlSW5zaWRlU2VjdG9yLHM9bi5hbmdsZURlbHRhLGw9bi5hbmdsZURpc3Q7 ZnVuY3Rpb24gYyh0LGUscixuKXt2YXIgYSxpLG89blswXSxzPW5bMV0sbD1o KE1hdGguc2luKGUpLU1hdGguc2luKHQpKSxjPWgoTWF0aC5jb3MoZSktTWF0 aC5jb3ModCkpLHU9TWF0aC50YW4ociksZj1oKDEvdSkscD1sL2MsZD1zLXAq bztyZXR1cm4gZj9sJiZjP2k9dSooYT1kLyh1LXApKTpjPyhhPXMqZixpPXMp OihhPW8saT1vKnUpOmwmJmM/KGE9MCxpPWQpOmM/KGE9MCxpPXMpOmE9aT1O YU4sW2EsaV19ZnVuY3Rpb24gdSh0LGUscixhKXtyZXR1cm4gbi5pc0Z1bGxD aXJjbGUoW2Uscl0pP2Z1bmN0aW9uKHQsZSl7dmFyIHIsbj1lLmxlbmd0aCxh PW5ldyBBcnJheShuKzEpO2ZvcihyPTA7cjxuO3IrKyl7dmFyIGk9ZVtyXTth W3JdPVt0Kk1hdGguY29zKGkpLHQqTWF0aC5zaW4oaSldfXJldHVybiBhW3Jd PWFbMF0uc2xpY2UoKSxhfSh0LGEpOmZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBz LHUsaD1hLmxlbmd0aCxmPVtdO2Z1bmN0aW9uIHAoZSl7cmV0dXJuW3QqTWF0 aC5jb3MoZSksdCpNYXRoLnNpbihlKV19ZnVuY3Rpb24gZCh0LGUscil7cmV0 dXJuIGModCxlLHIscCh0KSl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gbi5tb2Qo dCxoKX1mdW5jdGlvbiB2KHQpe3JldHVybiBvKHQsW2Uscl0pfXZhciBtPWko YSxmdW5jdGlvbih0KXtyZXR1cm4gdih0KT9sKHQsZSk6MS8wfSkseT1kKGFb bV0sYVtnKG0tMSldLGUpO2ZvcihmLnB1c2goeSkscz1tLHU9MDt1PGg7cysr LHUrKyl7dmFyIHg9YVtnKHMpXTtpZighdih4KSlicmVhaztmLnB1c2gocCh4 KSl9dmFyIGI9aShhLGZ1bmN0aW9uKHQpe3JldHVybiB2KHQpP2wodCxyKTox LzB9KSxfPWQoYVtiXSxhW2coYisxKV0scik7cmV0dXJuIGYucHVzaChfKSxm LnB1c2goWzAsMF0pLGYucHVzaChmWzBdLnNsaWNlKCkpLGZ9KHQsZSxyLGEp fWZ1bmN0aW9uIGgodCl7cmV0dXJuIE1hdGguYWJzKHQpPjFlLTEwP3Q6MH1m dW5jdGlvbiBmKHQsZSxyKXtlPWV8fDAscj1yfHwwO2Zvcih2YXIgbj10Lmxl bmd0aCxhPW5ldyBBcnJheShuKSxpPTA7aTxuO2krKyl7dmFyIG89dFtpXTth W2ldPVtlK29bMF0sci1vWzFdXX1yZXR1cm4gYX1lLmV4cG9ydHM9e2lzUHRJ bnNpZGVQb2x5Z29uOmZ1bmN0aW9uKHQsZSxyLG4saSl7aWYoIW8oZSxuKSly ZXR1cm4hMTt2YXIgcyxsO3JbMF08clsxXT8ocz1yWzBdLGw9clsxXSk6KHM9 clsxXSxsPXJbMF0pO3ZhciBjPWEodShzLG5bMF0sblsxXSxpKSksaD1hKHUo bCxuWzBdLG5bMV0saSkpLGY9W3QqTWF0aC5jb3MoZSksdCpNYXRoLnNpbihl KV07cmV0dXJuIGguY29udGFpbnMoZikmJiFjLmNvbnRhaW5zKGYpfSxmaW5k UG9seWdvbk9mZnNldDpmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGE9MS8w LGk9MS8wLG89dSh0LGUscixuKSxzPTA7czxvLmxlbmd0aDtzKyspe3ZhciBs PW9bc107YT1NYXRoLm1pbihhLGxbMF0pLGk9TWF0aC5taW4oaSwtbFsxXSl9 cmV0dXJuW2EsaV19LGZpbmRFbmNsb3NpbmdWZXJ0ZXhBbmdsZXM6ZnVuY3Rp b24odCxlKXt2YXIgcj1pKGUsZnVuY3Rpb24oZSl7dmFyIHI9cyhlLHQpO3Jl dHVybiByPjA/cjoxLzB9KSxhPW4ubW9kKHIrMSxlLmxlbmd0aCk7cmV0dXJu W2Vbcl0sZVthXV19LGZpbmRJbnRlcnNlY3Rpb25YWTpjLGZpbmRYWWF0TGVu Z3RoOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPS1lKnIsaT1lKmUrMSxvPTIq KGUqYS1yKSxzPWEqYStyKnItdCp0LGw9TWF0aC5zcXJ0KG8qby00Kmkqcyks Yz0oLW8rbCkvKDIqaSksdT0oLW8tbCkvKDIqaSk7cmV0dXJuW1tjLGUqYyth K25dLFt1LGUqdSthK25dXX0sY2xhbXBUaW55OmgscGF0aFBvbHlnb246ZnVu Y3Rpb24odCxlLHIsbixhLGkpe3JldHVybiJNIitmKHUodCxlLHIsbiksYSxp KS5qb2luKCJMIil9LHBhdGhQb2x5Z29uQW5udWx1czpmdW5jdGlvbih0LGUs cixuLGEsaSxvKXt2YXIgcyxsO3Q8ZT8ocz10LGw9ZSk6KHM9ZSxsPXQpO3Zh ciBjPWYodShzLHIsbixhKSxpLG8pO3JldHVybiJNIitmKHUobCxyLG4sYSks aSxvKS5yZXZlcnNlKCkuam9pbigiTCIpKyJNIitjLmpvaW4oIkwiKX19fSx7 Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvcG9seWdvbiI6NzI5fV0sODI5 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2dl dF9kYXRhIikuZ2V0U3VicGxvdENhbGNEYXRhLGE9dCgiLi4vLi4vbGliIiku Y291bnRlclJlZ2V4LGk9dCgiLi9wb2xhciIpLG89dCgiLi9jb25zdGFudHMi KSxzPW8uYXR0cixsPW8ubmFtZSxjPWEobCksdT17fTt1W3NdPXt2YWxUeXBl OiJzdWJwbG90aWQiLGRmbHQ6bCxlZGl0VHlwZToiY2FsYyJ9LGUuZXhwb3J0 cz17YXR0cjpzLG5hbWU6bCxpZFJvb3Q6bCxpZFJlZ2V4OmMsYXR0clJlZ2V4 OmMsYXR0cmlidXRlczp1LGxheW91dEF0dHJpYnV0ZXM6dCgiLi9sYXlvdXRf YXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0 X2RlZmF1bHRzIikscGxvdDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5fZnVs bExheW91dCxyPXQuY2FsY2RhdGEsYT1lLl9zdWJwbG90c1tsXSxvPTA7bzxh Lmxlbmd0aDtvKyspe3ZhciBzPWFbb10sYz1uKHIsbCxzKSx1PWVbc10uX3N1 YnBsb3Q7dXx8KHU9aSh0LHMpLGVbc10uX3N1YnBsb3Q9dSksdS5wbG90KGMs ZSx0Ll9wcm9taXNlcyl9fSxjbGVhbjpmdW5jdGlvbih0LGUscixuKXtmb3Io dmFyIGE9bi5fc3VicGxvdHNbbF18fFtdLGk9bi5faGFzJiZuLl9oYXMoImds Iiksbz1lLl9oYXMmJmUuX2hhcygiZ2wiKSxzPWkmJiFvLGM9MDtjPGEubGVu Z3RoO2MrKyl7dmFyIHU9YVtjXSxoPW5bdV0uX3N1YnBsb3Q7aWYoIWVbdV0m JmgpZm9yKHZhciBmIGluIGguZnJhbWV3b3JrLnJlbW92ZSgpLGgubGF5ZXJz WyJyYWRpYWwtYXhpcy10aXRsZSJdLnJlbW92ZSgpLGguY2xpcFBhdGhzKWgu Y2xpcFBhdGhzW2ZdLnJlbW92ZSgpO3MmJmguX3NjZW5lJiYoaC5fc2NlbmUu ZGVzdHJveSgpLGguX3NjZW5lPW51bGwpfX0sdG9TVkc6dCgiLi4vY2FydGVz aWFuIikudG9TVkd9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9jYXJ0ZXNpYW4i Ojc3NiwiLi4vZ2V0X2RhdGEiOjgwMCwiLi9jb25zdGFudHMiOjgyNywiLi9s YXlvdXRfYXR0cmlidXRlcyI6ODMwLCIuL2xheW91dF9kZWZhdWx0cyI6ODMx LCIuL3BvbGFyIjo4Mzh9XSw4MzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1 dGVzIiksYT10KCIuLi9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxp PXQoIi4uL2RvbWFpbiIpLmF0dHJpYnV0ZXMsbz10KCIuLi8uLi9saWIiKS5l eHRlbmRGbGF0LHM9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92 ZXJyaWRlQWxsLGw9cyh7Y29sb3I6YS5jb2xvcixzaG93bGluZTpvKHt9LGEu c2hvd2xpbmUse2RmbHQ6ITB9KSxsaW5lY29sb3I6YS5saW5lY29sb3IsbGlu ZXdpZHRoOmEubGluZXdpZHRoLHNob3dncmlkOm8oe30sYS5zaG93Z3JpZCx7 ZGZsdDohMH0pLGdyaWRjb2xvcjphLmdyaWRjb2xvcixncmlkd2lkdGg6YS5n cmlkd2lkdGh9LCJwbG90IiwiZnJvbS1yb290IiksYz1zKHt0aWNrbW9kZTph LnRpY2ttb2RlLG50aWNrczphLm50aWNrcyx0aWNrMDphLnRpY2swLGR0aWNr OmEuZHRpY2ssdGlja3ZhbHM6YS50aWNrdmFscyx0aWNrdGV4dDphLnRpY2t0 ZXh0LHRpY2tzOmEudGlja3MsdGlja2xlbjphLnRpY2tsZW4sdGlja3dpZHRo OmEudGlja3dpZHRoLHRpY2tjb2xvcjphLnRpY2tjb2xvcixzaG93dGlja2xh YmVsczphLnNob3d0aWNrbGFiZWxzLHNob3d0aWNrcHJlZml4OmEuc2hvd3Rp Y2twcmVmaXgsdGlja3ByZWZpeDphLnRpY2twcmVmaXgsc2hvd3RpY2tzdWZm aXg6YS5zaG93dGlja3N1ZmZpeCx0aWNrc3VmZml4OmEudGlja3N1ZmZpeCxz aG93ZXhwb25lbnQ6YS5zaG93ZXhwb25lbnQsZXhwb25lbnRmb3JtYXQ6YS5l eHBvbmVudGZvcm1hdCxzZXBhcmF0ZXRob3VzYW5kczphLnNlcGFyYXRldGhv dXNhbmRzLHRpY2tmb250OmEudGlja2ZvbnQsdGlja2FuZ2xlOmEudGlja2Fu Z2xlLHRpY2tmb3JtYXQ6YS50aWNrZm9ybWF0LHRpY2tmb3JtYXRzdG9wczph LnRpY2tmb3JtYXRzdG9wcyxsYXllcjphLmxheWVyfSwicGxvdCIsImZyb20t cm9vdCIpLHU9e3Zpc2libGU6byh7fSxhLnZpc2libGUse2RmbHQ6ITB9KSx0 eXBlOm8oe30sYS50eXBlLHt2YWx1ZXM6WyItIiwibGluZWFyIiwibG9nIiwi ZGF0ZSIsImNhdGVnb3J5Il19KSxhdXRvcmFuZ2U6byh7fSxhLmF1dG9yYW5n ZSx7ZWRpdFR5cGU6InBsb3QifSkscmFuZ2Vtb2RlOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyJ0b3plcm8iLCJub25uZWdhdGl2ZSIsIm5vcm1h bCJdLGRmbHQ6InRvemVybyIsZWRpdFR5cGU6ImNhbGMifSxyYW5nZTpvKHt9 LGEucmFuZ2Use2l0ZW1zOlt7dmFsVHlwZToiYW55IixlZGl0VHlwZToicGxv dCIsaW1wbGllZEVkaXRzOnsiXmF1dG9yYW5nZSI6ITF9fSx7dmFsVHlwZToi YW55IixlZGl0VHlwZToicGxvdCIsaW1wbGllZEVkaXRzOnsiXmF1dG9yYW5n ZSI6ITF9fV0sZWRpdFR5cGU6InBsb3QifSksY2F0ZWdvcnlvcmRlcjphLmNh dGVnb3J5b3JkZXIsY2F0ZWdvcnlhcnJheTphLmNhdGVnb3J5YXJyYXksYW5n bGU6e3ZhbFR5cGU6ImFuZ2xlIixlZGl0VHlwZToicGxvdCJ9LHNpZGU6e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImNsb2Nrd2lzZSIsImNvdW50 ZXJjbG9ja3dpc2UiXSxkZmx0OiJjbG9ja3dpc2UiLGVkaXRUeXBlOiJwbG90 In0sdGl0bGU6e3RleHQ6byh7fSxhLnRpdGxlLnRleHQse2VkaXRUeXBlOiJw bG90IixkZmx0OiIifSksZm9udDpvKHt9LGEudGl0bGUuZm9udCx7ZWRpdFR5 cGU6InBsb3QifSksZWRpdFR5cGU6InBsb3QifSxob3ZlcmZvcm1hdDphLmhv dmVyZm9ybWF0LHVpcmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6 Im5vbmUifSxlZGl0VHlwZToiY2FsYyIsX2RlcHJlY2F0ZWQ6e3RpdGxlOmEu X2RlcHJlY2F0ZWQudGl0bGUsdGl0bGVmb250OmEuX2RlcHJlY2F0ZWQudGl0 bGVmb250fX07byh1LGwsYyk7dmFyIGg9e3Zpc2libGU6byh7fSxhLnZpc2li bGUse2RmbHQ6ITB9KSx0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1 ZXM6WyItIiwibGluZWFyIiwiY2F0ZWdvcnkiXSxkZmx0OiItIixlZGl0VHlw ZToiY2FsYyIsX25vVGVtcGxhdGluZzohMH0sY2F0ZWdvcnlvcmRlcjphLmNh dGVnb3J5b3JkZXIsY2F0ZWdvcnlhcnJheTphLmNhdGVnb3J5YXJyYXksdGhl dGF1bml0Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyYWRpYW5z IiwiZGVncmVlcyJdLGRmbHQ6ImRlZ3JlZXMiLGVkaXRUeXBlOiJjYWxjIn0s cGVyaW9kOnt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIixtaW46 MH0sZGlyZWN0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJj b3VudGVyY2xvY2t3aXNlIiwiY2xvY2t3aXNlIl0sZGZsdDoiY291bnRlcmNs b2Nrd2lzZSIsZWRpdFR5cGU6ImNhbGMifSxyb3RhdGlvbjp7dmFsVHlwZToi YW5nbGUiLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJmb3JtYXQ6YS5ob3ZlcmZv cm1hdCx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25l In0sZWRpdFR5cGU6ImNhbGMifTtvKGgsbCxjKSxlLmV4cG9ydHM9e2RvbWFp bjppKHtuYW1lOiJwb2xhciIsZWRpdFR5cGU6InBsb3QifSksc2VjdG9yOnt2 YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciIs ZWRpdFR5cGU6InBsb3QifSx7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToi cGxvdCJ9XSxkZmx0OlswLDM2MF0sZWRpdFR5cGU6InBsb3QifSxob2xlOnt2 YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MCxlZGl0VHlwZToi cGxvdCJ9LGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToicGxv dCIsZGZsdDpuLmJhY2tncm91bmR9LHJhZGlhbGF4aXM6dSxhbmd1bGFyYXhp czpoLGdyaWRzaGFwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsi Y2lyY3VsYXIiLCJsaW5lYXIiXSxkZmx0OiJjaXJjdWxhciIsZWRpdFR5cGU6 InBsb3QifSx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJu b25lIn0sZWRpdFR5cGU6ImNhbGMifX0seyIuLi8uLi9jb21wb25lbnRzL2Nv bG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bs b3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vY2FydGVzaWFuL2xheW91dF9h dHRyaWJ1dGVzIjo3NzcsIi4uL2RvbWFpbiI6NzkwfV0sODMxOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9 dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGk9dCgiLi4vLi4vcGxvdF9h cGkvcGxvdF90ZW1wbGF0ZSIpLG89dCgiLi4vc3VicGxvdF9kZWZhdWx0cyIp LHM9dCgiLi4vZ2V0X2RhdGEiKS5nZXRTdWJwbG90RGF0YSxsPXQoIi4uL2Nh cnRlc2lhbi90aWNrX3ZhbHVlX2RlZmF1bHRzIiksYz10KCIuLi9jYXJ0ZXNp YW4vdGlja19tYXJrX2RlZmF1bHRzIiksdT10KCIuLi9jYXJ0ZXNpYW4vdGlj a19sYWJlbF9kZWZhdWx0cyIpLGg9dCgiLi4vY2FydGVzaWFuL2NhdGVnb3J5 X29yZGVyX2RlZmF1bHRzIiksZj10KCIuLi9jYXJ0ZXNpYW4vbGluZV9ncmlk X2RlZmF1bHRzIikscD10KCIuLi9jYXJ0ZXNpYW4vYXhpc19hdXRvdHlwZSIp LGQ9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLGc9dCgiLi9zZXRfY29udmVy dCIpLHY9dCgiLi9jb25zdGFudHMiKSxtPXYuYXhpc05hbWVzO2Z1bmN0aW9u IHkodCxlLHIsbyl7dmFyIHA9cigiYmdjb2xvciIpO28uYmdDb2xvcj1hLmNv bWJpbmUocCxvLnBhcGVyX2JnY29sb3IpO3ZhciB5PXIoInNlY3RvciIpO3Io ImhvbGUiKTt2YXIgYixfPXMoby5mdWxsRGF0YSx2Lm5hbWUsby5pZCksdz1v LmxheW91dE91dDtmdW5jdGlvbiBrKHQsZSl7cmV0dXJuIHIoYisiLiIrdCxl KX1mb3IodmFyIFQ9MDtUPG0ubGVuZ3RoO1QrKyl7Yj1tW1RdLG4uaXNQbGFp bk9iamVjdCh0W2JdKXx8KHRbYl09e30pO3ZhciBNPXRbYl0sQT1pLm5ld0Nv bnRhaW5lcihlLGIpO0EuX2lkPUEuX25hbWU9YixBLl9hdHRyPW8uaWQrIi4i K2IsQS5fdHJhY2VJbmRpY2VzPV8ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0 Ll9leHBhbmRlZEluZGV4fSk7dmFyIFM9di5heGlzTmFtZTJkYXRhQXJyYXlb Yl0sRT14KE0sQSxrLF8sUyk7aChNLEEsayx7YXhEYXRhOl8sZGF0YUF0dHI6 U30pO3ZhciBMLEMsUD1rKCJ2aXNpYmxlIik7c3dpdGNoKGcoQSxlLHcpLGso InVpcmV2aXNpb24iLGUudWlyZXZpc2lvbiksUCYmKEM9KEw9aygiY29sb3Ii KSk9PT1NLmNvbG9yP0w6by5mb250LmNvbG9yKSxBLl9tPTEsYil7Y2FzZSJy YWRpYWxheGlzIjp2YXIgTz1rKCJhdXRvcmFuZ2UiLCFBLmlzVmFsaWRSYW5n ZShNLnJhbmdlKSk7TS5hdXRvcmFuZ2U9TywhT3x8ImxpbmVhciIhPT1FJiYi LSIhPT1FfHxrKCJyYW5nZW1vZGUiKSwicmV2ZXJzZWQiPT09TyYmKEEuX209 LTEpLGsoInJhbmdlIiksQS5jbGVhblJhbmdlKCJyYW5nZSIse2RmbHRSYW5n ZTpbMCwxXX0pLFAmJihrKCJzaWRlIiksaygiYW5nbGUiLHlbMF0pLGsoInRp dGxlLnRleHQiKSxuLmNvZXJjZUZvbnQoaywidGl0bGUuZm9udCIse2ZhbWls eTpvLmZvbnQuZmFtaWx5LHNpemU6TWF0aC5yb3VuZCgxLjIqby5mb250LnNp emUpLGNvbG9yOkN9KSk7YnJlYWs7Y2FzZSJhbmd1bGFyYXhpcyI6aWYoImRh dGUiPT09RSl7bi5sb2coIlBvbGFyIHBsb3RzIGRvIG5vdCBzdXBwb3J0IGRh dGUgYW5ndWxhciBheGVzIHlldC4iKTtmb3IodmFyIHo9MDt6PF8ubGVuZ3Ro O3orKylfW3pdLnZpc2libGU9ITE7RT1NLnR5cGU9QS50eXBlPSJsaW5lYXIi fWsoImxpbmVhciI9PT1FPyJ0aGV0YXVuaXQiOiJwZXJpb2QiKTt2YXIgST1r KCJkaXJlY3Rpb24iKTtrKCJyb3RhdGlvbiIse2NvdW50ZXJjbG9ja3dpc2U6 MCxjbG9ja3dpc2U6OTB9W0ldKX1pZihQKWwoTSxBLGssQS50eXBlKSx1KE0s QSxrLEEudHlwZSx7dGlja1N1ZmZpeERmbHQ6ImRlZ3JlZXMiPT09QS50aGV0 YXVuaXQ/Ilx4YjAiOnZvaWQgMH0pLGMoTSxBLGsse291dGVyVGlja3M6ITB9 KSxrKCJzaG93dGlja2xhYmVscyIpJiYobi5jb2VyY2VGb250KGssInRpY2tm b250Iix7ZmFtaWx5Om8uZm9udC5mYW1pbHksc2l6ZTpvLmZvbnQuc2l6ZSxj b2xvcjpDfSksaygidGlja2FuZ2xlIiksaygidGlja2Zvcm1hdCIpKSxmKE0s QSxrLHtkZmx0Q29sb3I6TCxiZ0NvbG9yOm8uYmdDb2xvcixibGVuZDo2MCxz aG93TGluZTohMCxzaG93R3JpZDohMCxub1plcm9MaW5lOiEwLGF0dHJpYnV0 ZXM6ZFtiXX0pLGsoImxheWVyIik7ImNhdGVnb3J5IiE9PUUmJmsoImhvdmVy Zm9ybWF0IiksQS5faW5wdXQ9TX0iY2F0ZWdvcnkiPT09ZS5hbmd1bGFyYXhp cy50eXBlJiZyKCJncmlkc2hhcGUiKX1mdW5jdGlvbiB4KHQsZSxyLG4sYSl7 aWYoIi0iPT09cigidHlwZSIpKXtmb3IodmFyIGksbz0wO288bi5sZW5ndGg7 bysrKWlmKG5bb10udmlzaWJsZSl7aT1uW29dO2JyZWFrfWkmJmlbYV0mJihl LnR5cGU9cChpW2FdLCJncmVnb3JpYW4iKSksIi0iPT09ZS50eXBlP2UudHlw ZT0ibGluZWFyIjp0LnR5cGU9ZS50eXBlfXJldHVybiBlLnR5cGV9ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyKXtvKHQsZSxyLHt0eXBlOnYubmFtZSxhdHRy aWJ1dGVzOmQsaGFuZGxlRGVmYXVsdHM6eSxmb250OmUuZm9udCxwYXBlcl9i Z2NvbG9yOmUucGFwZXJfYmdjb2xvcixmdWxsRGF0YTpyLGxheW91dE91dDpl fSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGli Ijo3MTcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4v Y2FydGVzaWFuL2F4aXNfYXV0b3R5cGUiOjc2NiwiLi4vY2FydGVzaWFuL2Nh dGVnb3J5X29yZGVyX2RlZmF1bHRzIjo3NjksIi4uL2NhcnRlc2lhbi9saW5l X2dyaWRfZGVmYXVsdHMiOjc3OSwiLi4vY2FydGVzaWFuL3RpY2tfbGFiZWxf ZGVmYXVsdHMiOjc4NCwiLi4vY2FydGVzaWFuL3RpY2tfbWFya19kZWZhdWx0 cyI6Nzg1LCIuLi9jYXJ0ZXNpYW4vdGlja192YWx1ZV9kZWZhdWx0cyI6Nzg2 LCIuLi9nZXRfZGF0YSI6ODAwLCIuLi9zdWJwbG90X2RlZmF1bHRzIjo4NDAs Ii4vY29uc3RhbnRzIjo4MjcsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjgzMCwi Li9zZXRfY29udmVydCI6ODM5fV0sODMyOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uLy4uL3RyYWNlcy9zY2F0dGVyL2F0 dHJpYnV0ZXMiKSxhPW4ubWFya2VyLGk9dCgiLi4vLi4vLi4vbGliL2V4dGVu ZCIpLmV4dGVuZEZsYXQ7WyJBcmVhIHRyYWNlcyBhcmUgZGVwcmVjYXRlZCEi LCJQbGVhc2Ugc3dpdGNoIHRvIHRoZSAqYmFycG9sYXIqIHRyYWNlIHR5cGUu Il0uam9pbigiICIpO2UuZXhwb3J0cz17cjppKHt9LG4ucix7fSksdDppKHt9 LG4udCx7fSksbWFya2VyOntjb2xvcjppKHt9LGEuY29sb3Ise30pLHNpemU6 aSh7fSxhLnNpemUse30pLHN5bWJvbDppKHt9LGEuc3ltYm9sLHt9KSxvcGFj aXR5Omkoe30sYS5vcGFjaXR5LHt9KSxlZGl0VHlwZToiY2FsYyJ9fX0seyIu Li8uLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uLy4uL3RyYWNlcy9zY2F0 dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSw4MzM6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY2FydGVzaWFuL2xheW91dF9h dHRyaWJ1dGVzIiksYT10KCIuLi8uLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5k RmxhdCxpPXQoIi4uLy4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVy cmlkZUFsbCxvPVsiTGVnYWN5IHBvbGFyIGNoYXJ0cyBhcmUgZGVwcmVjYXRl ZCEiLCJQbGVhc2Ugc3dpdGNoIHRvICpwb2xhciogc3VicGxvdHMuIl0uam9p bigiICIpLHM9YSh7fSxuLmRvbWFpbix7fSk7ZnVuY3Rpb24gbCh0LGUpe3Jl dHVybiBhKHt9LGUse3Nob3dsaW5lOnt2YWxUeXBlOiJib29sZWFuIn0sc2hv d3RpY2tsYWJlbHM6e3ZhbFR5cGU6ImJvb2xlYW4ifSx0aWNrb3JpZW50YXRp b246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImhvcml6b250YWwi LCJ2ZXJ0aWNhbCJdfSx0aWNrbGVuOnt2YWxUeXBlOiJudW1iZXIiLG1pbjow fSx0aWNrY29sb3I6e3ZhbFR5cGU6ImNvbG9yIn0sdGlja3N1ZmZpeDp7dmFs VHlwZToic3RyaW5nIn0sZW5kcGFkZGluZzp7dmFsVHlwZToibnVtYmVyIixk ZXNjcmlwdGlvbjpvfSx2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIn19KX1l LmV4cG9ydHM9aSh7cmFkaWFsYXhpczpsKDAse3JhbmdlOnt2YWxUeXBlOiJp bmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciJ9LHt2YWxUeXBl OiJudW1iZXIifV19LGRvbWFpbjpzLG9yaWVudGF0aW9uOnt2YWxUeXBlOiJu dW1iZXIifX0pLGFuZ3VsYXJheGlzOmwoMCx7cmFuZ2U6e3ZhbFR5cGU6Imlu Zm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixkZmx0OjB9LHt2 YWxUeXBlOiJudW1iZXIiLGRmbHQ6MzYwfV19LGRvbWFpbjpzfSksbGF5b3V0 OntkaXJlY3Rpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImNs b2Nrd2lzZSIsImNvdW50ZXJjbG9ja3dpc2UiXX0sb3JpZW50YXRpb246e3Zh bFR5cGU6ImFuZ2xlIn19fSwicGxvdCIsIm5lc3RlZCIpfSx7Ii4uLy4uLy4u L2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBl cyI6NzQ4LCIuLi8uLi9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3 N31dLDgzNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjsoZS5leHBv cnRzPXQoIi4vbWljcm9wb2xhciIpKS5tYW5hZ2VyPXQoIi4vbWljcm9wb2xh cl9tYW5hZ2VyIil9LHsiLi9taWNyb3BvbGFyIjo4MzUsIi4vbWljcm9wb2xh cl9tYW5hZ2VyIjo4MzZ9XSw4MzU6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10 KCJkMyIpLGE9dCgiLi4vLi4vLi4vbGliIikuZXh0ZW5kRGVlcEFsbCxpPXQo Ii4uLy4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKS5NSURfU0hJRlQsbz1l LmV4cG9ydHM9e3ZlcnNpb246IjAuMi4yIn07by5BeGlzPWZ1bmN0aW9uKCl7 dmFyIHQsZSxyLHMsbD17ZGF0YTpbXSxsYXlvdXQ6e319LGM9e30sdT17fSxo PW4uZGlzcGF0Y2goImhvdmVyIiksZj17fTtyZXR1cm4gZi5yZW5kZXI9ZnVu Y3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGMpe2U9Y3x8ZTt2YXIgaD1sLmRh dGEsZj1sLmxheW91dDsoInN0cmluZyI9PXR5cGVvZiBlfHxlLm5vZGVOYW1l KSYmKGU9bi5zZWxlY3QoZSkpLGUuZGF0dW0oaCkuZWFjaChmdW5jdGlvbihl LGwpe3ZhciBjPWUuc2xpY2UoKTt1PXtkYXRhOm8udXRpbC5jbG9uZUpzb24o YyksbGF5b3V0Om8udXRpbC5jbG9uZUpzb24oZil9O3ZhciBoPTA7Yy5mb3JF YWNoKGZ1bmN0aW9uKHQsZSl7dC5jb2xvcnx8KHQuY29sb3I9Zi5kZWZhdWx0 Q29sb3JSYW5nZVtoXSxoPShoKzEpJWYuZGVmYXVsdENvbG9yUmFuZ2UubGVu Z3RoKSx0LnN0cm9rZUNvbG9yfHwodC5zdHJva2VDb2xvcj0iTGluZVBsb3Qi PT09dC5nZW9tZXRyeT90LmNvbG9yOm4ucmdiKHQuY29sb3IpLmRhcmtlcigp LnRvU3RyaW5nKCkpLHUuZGF0YVtlXS5jb2xvcj10LmNvbG9yLHUuZGF0YVtl XS5zdHJva2VDb2xvcj10LnN0cm9rZUNvbG9yLHUuZGF0YVtlXS5zdHJva2VE YXNoPXQuc3Ryb2tlRGFzaCx1LmRhdGFbZV0uc3Ryb2tlU2l6ZT10LnN0cm9r ZVNpemV9KTt2YXIgcD1jLmZpbHRlcihmdW5jdGlvbih0LGUpe3ZhciByPXQu dmlzaWJsZTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHJ8fCEwPT09cn0p LGQ9ITEsZz1wLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBkPWR8fCJ1bmRl ZmluZWQiIT10eXBlb2YgdC5ncm91cElkLHR9KTtpZihkKXt2YXIgdj1uLm5l c3QoKS5rZXkoZnVuY3Rpb24odCxlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlw ZW9mIHQuZ3JvdXBJZD90Lmdyb3VwSWQ6InVuc3RhY2tlZCJ9KS5lbnRyaWVz KGcpLG09W10seT12Lm1hcChmdW5jdGlvbih0LGUpe2lmKCJ1bnN0YWNrZWQi PT09dC5rZXkpcmV0dXJuIHQudmFsdWVzO3ZhciByPXQudmFsdWVzWzBdLnIu bWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDB9KTtyZXR1cm4gdC52YWx1ZXMu Zm9yRWFjaChmdW5jdGlvbih0LGUsbil7dC55U3RhY2s9W3JdLG0ucHVzaChy KSxyPW8udXRpbC5zdW1BcnJheXModC5yLHIpfSksdC52YWx1ZXN9KTtwPW4u bWVyZ2UoeSl9cC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7dC50PUFycmF5Lmlz QXJyYXkodC50WzBdKT90LnQ6W3QudF0sdC5yPUFycmF5LmlzQXJyYXkodC5y WzBdKT90LnI6W3Qucl19KTt2YXIgeD1NYXRoLm1pbihmLndpZHRoLWYubWFy Z2luLmxlZnQtZi5tYXJnaW4ucmlnaHQsZi5oZWlnaHQtZi5tYXJnaW4udG9w LWYubWFyZ2luLmJvdHRvbSkvMjt4PU1hdGgubWF4KDEwLHgpO3ZhciBiLF89 W2YubWFyZ2luLmxlZnQreCxmLm1hcmdpbi50b3AreF07Yj1kP1swLG4ubWF4 KG8udXRpbC5zdW1BcnJheXMoby51dGlsLmFycmF5TGFzdChwKS5yWzBdLG8u dXRpbC5hcnJheUxhc3QobSkpKV06bi5leHRlbnQoby51dGlsLmZsYXR0ZW5B cnJheShwLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0LnJ9KSkpLGYucmFk aWFsQXhpcy5kb21haW4hPW8uREFUQUVYVEVOVCYmKGJbMF09MCkscj1uLnNj YWxlLmxpbmVhcigpLmRvbWFpbihmLnJhZGlhbEF4aXMuZG9tYWluIT1vLkRB VEFFWFRFTlQmJmYucmFkaWFsQXhpcy5kb21haW4/Zi5yYWRpYWxBeGlzLmRv bWFpbjpiKS5yYW5nZShbMCx4XSksdS5sYXlvdXQucmFkaWFsQXhpcy5kb21h aW49ci5kb21haW4oKTt2YXIgdyxrPW8udXRpbC5mbGF0dGVuQXJyYXkocC5t YXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50fSkpLFQ9InN0cmluZyI9PXR5 cGVvZiBrWzBdO1QmJihrPW8udXRpbC5kZWR1cGxpY2F0ZShrKSx3PWsuc2xp Y2UoKSxrPW4ucmFuZ2Uoay5sZW5ndGgpLHA9cC5tYXAoZnVuY3Rpb24odCxl KXt2YXIgcj10O3JldHVybiB0LnQ9W2tdLGQmJihyLnlTdGFjaz10LnlTdGFj aykscn0pKTt2YXIgTT1wLmZpbHRlcihmdW5jdGlvbih0LGUpe3JldHVybiJM aW5lUGxvdCI9PT10Lmdlb21ldHJ5fHwiRG90UGxvdCI9PT10Lmdlb21ldHJ5 fSkubGVuZ3RoPT09cC5sZW5ndGgsQT1udWxsPT09Zi5uZWVkc0VuZFNwYWNp bmc/VHx8IU06Zi5uZWVkc0VuZFNwYWNpbmcsUz1mLmFuZ3VsYXJBeGlzLmRv bWFpbiYmZi5hbmd1bGFyQXhpcy5kb21haW4hPW8uREFUQUVYVEVOVCYmIVQm JmYuYW5ndWxhckF4aXMuZG9tYWluWzBdPj0wP2YuYW5ndWxhckF4aXMuZG9t YWluOm4uZXh0ZW50KGspLEU9TWF0aC5hYnMoa1sxXS1rWzBdKTtNJiYhVCYm KEU9MCk7dmFyIEw9Uy5zbGljZSgpO0EmJlQmJihMWzFdKz1FKTt2YXIgQz1m LmFuZ3VsYXJBeGlzLnRpY2tzQ291bnR8fDQ7Qz44JiYoQz1DLyhDLzgpK0Ml OCksZi5hbmd1bGFyQXhpcy50aWNrc1N0ZXAmJihDPShMWzFdLUxbMF0pL0Mp O3ZhciBQPWYuYW5ndWxhckF4aXMudGlja3NTdGVwfHwoTFsxXS1MWzBdKS8o QyooZi5taW5vclRpY2tzKzEpKTt3JiYoUD1NYXRoLm1heChNYXRoLnJvdW5k KFApLDEpKSxMWzJdfHwoTFsyXT1QKTt2YXIgTz1uLnJhbmdlLmFwcGx5KHRo aXMsTCk7aWYoTz1PLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZs b2F0KHQudG9QcmVjaXNpb24oMTIpKX0pLHM9bi5zY2FsZS5saW5lYXIoKS5k b21haW4oTC5zbGljZSgwLDIpKS5yYW5nZSgiY2xvY2t3aXNlIj09PWYuZGly ZWN0aW9uP1swLDM2MF06WzM2MCwwXSksdS5sYXlvdXQuYW5ndWxhckF4aXMu ZG9tYWluPXMuZG9tYWluKCksdS5sYXlvdXQuYW5ndWxhckF4aXMuZW5kUGFk ZGluZz1BP0U6MCwidW5kZWZpbmVkIj09dHlwZW9mKHQ9bi5zZWxlY3QodGhp cykuc2VsZWN0KCJzdmcuY2hhcnQtcm9vdCIpKXx8dC5lbXB0eSgpKXt2YXIg ej0obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKCI8c3ZnIHhtbG5z PSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgY2xhc3M9J2NoYXJ0LXJv b3QnPicgKyAnPGcgY2xhc3M9J291dGVyLWdyb3VwJz4nICsgJzxnIGNsYXNz PSdjaGFydC1ncm91cCc+JyArICc8Y2lyY2xlIGNsYXNzPSdiYWNrZ3JvdW5k LWNpcmNsZSc+PC9jaXJjbGU+JyArICc8ZyBjbGFzcz0nZ2VvbWV0cnktZ3Jv dXAnPjwvZz4nICsgJzxnIGNsYXNzPSdyYWRpYWwgYXhpcy1ncm91cCc+JyAr ICc8Y2lyY2xlIGNsYXNzPSdvdXRzaWRlLWNpcmNsZSc+PC9jaXJjbGU+JyAr ICc8L2c+JyArICc8ZyBjbGFzcz0nYW5ndWxhciBheGlzLWdyb3VwJz48L2c+ JyArICc8ZyBjbGFzcz0nZ3VpZGVzLWdyb3VwJz48bGluZT48L2xpbmU+PGNp cmNsZSByPScwJz48L2NpcmNsZT48L2c+JyArICc8L2c+JyArICc8ZyBjbGFz cz0nbGVnZW5kLWdyb3VwJz48L2c+JyArICc8ZyBjbGFzcz0ndG9vbHRpcHMt Z3JvdXAnPjwvZz4nICsgJzxnIGNsYXNzPSd0aXRsZS1ncm91cCc+PHRleHQ+ PC90ZXh0PjwvZz4nICsgJzwvZz4nICsgJzwvc3ZnPiIsImFwcGxpY2F0aW9u L3htbCIpLEk9dGhpcy5hcHBlbmRDaGlsZCh0aGlzLm93bmVyRG9jdW1lbnQu aW1wb3J0Tm9kZSh6LmRvY3VtZW50RWxlbWVudCwhMCkpO3Q9bi5zZWxlY3Qo SSl9dC5zZWxlY3QoIi5ndWlkZXMtZ3JvdXAiKS5zdHlsZSh7InBvaW50ZXIt ZXZlbnRzIjoibm9uZSJ9KSx0LnNlbGVjdCgiLmFuZ3VsYXIuYXhpcy1ncm91 cCIpLnN0eWxlKHsicG9pbnRlci1ldmVudHMiOiJub25lIn0pLHQuc2VsZWN0 KCIucmFkaWFsLmF4aXMtZ3JvdXAiKS5zdHlsZSh7InBvaW50ZXItZXZlbnRz Ijoibm9uZSJ9KTt2YXIgRCxSPXQuc2VsZWN0KCIuY2hhcnQtZ3JvdXAiKSxG PXtmaWxsOiJub25lIixzdHJva2U6Zi50aWNrQ29sb3J9LEI9eyJmb250LXNp emUiOmYuZm9udC5zaXplLCJmb250LWZhbWlseSI6Zi5mb250LmZhbWlseSxm aWxsOmYuZm9udC5jb2xvciwidGV4dC1zaGFkb3ciOlsiLTFweCAwcHgiLCIx cHggLTFweCIsIi0xcHggMXB4IiwiMXB4IDFweCJdLm1hcChmdW5jdGlvbih0 LGUpe3JldHVybiIgIit0KyIgMCAiK2YuZm9udC5vdXRsaW5lQ29sb3J9KS5q b2luKCIsIil9O2lmKGYuc2hvd0xlZ2VuZCl7RD10LnNlbGVjdCgiLmxlZ2Vu ZC1ncm91cCIpLmF0dHIoe3RyYW5zZm9ybToidHJhbnNsYXRlKCIrW3gsZi5t YXJnaW4udG9wXSsiKSJ9KS5zdHlsZSh7ZGlzcGxheToiYmxvY2sifSk7dmFy IE49cC5tYXAoZnVuY3Rpb24odCxlKXt2YXIgcj1vLnV0aWwuY2xvbmVKc29u KHQpO3JldHVybiByLnN5bWJvbD0iRG90UGxvdCI9PT10Lmdlb21ldHJ5P3Qu ZG90VHlwZXx8ImNpcmNsZSI6IkxpbmVQbG90IiE9dC5nZW9tZXRyeT8ic3F1 YXJlIjoibGluZSIsci52aXNpYmxlSW5MZWdlbmQ9InVuZGVmaW5lZCI9PXR5 cGVvZiB0LnZpc2libGVJbkxlZ2VuZHx8dC52aXNpYmxlSW5MZWdlbmQsci5j b2xvcj0iTGluZVBsb3QiPT09dC5nZW9tZXRyeT90LnN0cm9rZUNvbG9yOnQu Y29sb3Iscn0pO28uTGVnZW5kKCkuY29uZmlnKHtkYXRhOnAubWFwKGZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHQubmFtZXx8IkVsZW1lbnQiK2V9KSxsZWdlbmRD b25maWc6YSh7fSxvLkxlZ2VuZC5kZWZhdWx0Q29uZmlnKCkubGVnZW5kQ29u ZmlnLHtjb250YWluZXI6RCxlbGVtZW50czpOLHJldmVyc2VPcmRlcjpmLmxl Z2VuZC5yZXZlcnNlT3JkZXJ9KX0pKCk7dmFyIGo9RC5ub2RlKCkuZ2V0QkJv eCgpO3g9TWF0aC5taW4oZi53aWR0aC1qLndpZHRoLWYubWFyZ2luLmxlZnQt Zi5tYXJnaW4ucmlnaHQsZi5oZWlnaHQtZi5tYXJnaW4udG9wLWYubWFyZ2lu LmJvdHRvbSkvMix4PU1hdGgubWF4KDEwLHgpLF89W2YubWFyZ2luLmxlZnQr eCxmLm1hcmdpbi50b3AreF0sci5yYW5nZShbMCx4XSksdS5sYXlvdXQucmFk aWFsQXhpcy5kb21haW49ci5kb21haW4oKSxELmF0dHIoInRyYW5zZm9ybSIs InRyYW5zbGF0ZSgiK1tfWzBdK3gsX1sxXS14XSsiKSIpfWVsc2UgRD10LnNl bGVjdCgiLmxlZ2VuZC1ncm91cCIpLnN0eWxlKHtkaXNwbGF5OiJub25lIn0p O3QuYXR0cih7d2lkdGg6Zi53aWR0aCxoZWlnaHQ6Zi5oZWlnaHR9KS5zdHls ZSh7b3BhY2l0eTpmLm9wYWNpdHl9KSxSLmF0dHIoInRyYW5zZm9ybSIsInRy YW5zbGF0ZSgiK18rIikiKS5zdHlsZSh7Y3Vyc29yOiJjcm9zc2hhaXIifSk7 dmFyIFY9WyhmLndpZHRoLShmLm1hcmdpbi5sZWZ0K2YubWFyZ2luLnJpZ2h0 KzIqeCsoaj9qLndpZHRoOjApKSkvMiwoZi5oZWlnaHQtKGYubWFyZ2luLnRv cCtmLm1hcmdpbi5ib3R0b20rMip4KSkvMl07aWYoVlswXT1NYXRoLm1heCgw LFZbMF0pLFZbMV09TWF0aC5tYXgoMCxWWzFdKSx0LnNlbGVjdCgiLm91dGVy LWdyb3VwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrVisiKSIp LGYudGl0bGUmJmYudGl0bGUudGV4dCl7dmFyIFU9dC5zZWxlY3QoImcudGl0 bGUtZ3JvdXAgdGV4dCIpLnN0eWxlKEIpLnRleHQoZi50aXRsZS50ZXh0KSxx PVUubm9kZSgpLmdldEJCb3goKTtVLmF0dHIoe3g6X1swXS1xLndpZHRoLzIs eTpfWzFdLXgtMjB9KX12YXIgSD10LnNlbGVjdCgiLnJhZGlhbC5heGlzLWdy b3VwIik7aWYoZi5yYWRpYWxBeGlzLmdyaWRMaW5lc1Zpc2libGUpe3ZhciBH PUguc2VsZWN0QWxsKCJjaXJjbGUuZ3JpZC1jaXJjbGUiKS5kYXRhKHIudGlj a3MoNSkpO0cuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoe2NsYXNz OiJncmlkLWNpcmNsZSJ9KS5zdHlsZShGKSxHLmF0dHIoInIiLHIpLEcuZXhp dCgpLnJlbW92ZSgpfUguc2VsZWN0KCJjaXJjbGUub3V0c2lkZS1jaXJjbGUi KS5hdHRyKHtyOnh9KS5zdHlsZShGKTt2YXIgWT10LnNlbGVjdCgiY2lyY2xl LmJhY2tncm91bmQtY2lyY2xlIikuYXR0cih7cjp4fSkuc3R5bGUoe2ZpbGw6 Zi5iYWNrZ3JvdW5kQ29sb3Isc3Ryb2tlOmYuc3Ryb2tlfSk7ZnVuY3Rpb24g Vyh0LGUpe3JldHVybiBzKHQpJTM2MCtmLm9yaWVudGF0aW9ufWlmKGYucmFk aWFsQXhpcy52aXNpYmxlKXt2YXIgWD1uLnN2Zy5heGlzKCkuc2NhbGUociku dGlja3MoNSkudGlja1NpemUoNSk7SC5jYWxsKFgpLmF0dHIoe3RyYW5zZm9y bToicm90YXRlKCIrZi5yYWRpYWxBeGlzLm9yaWVudGF0aW9uKyIpIn0pLEgu c2VsZWN0QWxsKCIuZG9tYWluIikuc3R5bGUoRiksSC5zZWxlY3RBbGwoImc+ dGV4dCIpLnRleHQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50ZXh0Q29u dGVudCtmLnJhZGlhbEF4aXMudGlja3NTdWZmaXh9KS5zdHlsZShCKS5zdHls ZSh7InRleHQtYW5jaG9yIjoic3RhcnQifSkuYXR0cih7eDowLHk6MCxkeDow LGR5OjAsdHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuImhvcml6b250 YWwiPT09Zi5yYWRpYWxBeGlzLnRpY2tPcmllbnRhdGlvbj8icm90YXRlKCIr LWYucmFkaWFsQXhpcy5vcmllbnRhdGlvbisiKSB0cmFuc2xhdGUoIitbMCxC WyJmb250LXNpemUiXV0rIikiOiJ0cmFuc2xhdGUoIitbMCxCWyJmb250LXNp emUiXV0rIikifX0pLEguc2VsZWN0QWxsKCJnPmxpbmUiKS5zdHlsZSh7c3Ry b2tlOiJibGFjayJ9KX12YXIgWj10LnNlbGVjdCgiLmFuZ3VsYXIuYXhpcy1n cm91cCIpLnNlbGVjdEFsbCgiZy5hbmd1bGFyLXRpY2siKS5kYXRhKE8pLEo9 Wi5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFuZ3VsYXItdGljayIs ITApO1ouYXR0cih7dHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuInJv dGF0ZSgiK1codCkrIikifX0pLnN0eWxlKHtkaXNwbGF5OmYuYW5ndWxhckF4 aXMudmlzaWJsZT8iYmxvY2siOiJub25lIn0pLFouZXhpdCgpLnJlbW92ZSgp LEouYXBwZW5kKCJsaW5lIikuY2xhc3NlZCgiZ3JpZC1saW5lIiwhMCkuY2xh c3NlZCgibWFqb3IiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUlKGYubWlub3JU aWNrcysxKT09MH0pLmNsYXNzZWQoIm1pbm9yIixmdW5jdGlvbih0LGUpe3Jl dHVybiEoZSUoZi5taW5vclRpY2tzKzEpPT0wKX0pLnN0eWxlKEYpLEouc2Vs ZWN0QWxsKCIubWlub3IiKS5zdHlsZSh7c3Ryb2tlOmYubWlub3JUaWNrQ29s b3J9KSxaLnNlbGVjdCgibGluZS5ncmlkLWxpbmUiKS5hdHRyKHt4MTpmLnRp Y2tMZW5ndGg/eC1mLnRpY2tMZW5ndGg6MCx4Mjp4fSkuc3R5bGUoe2Rpc3Bs YXk6Zi5hbmd1bGFyQXhpcy5ncmlkTGluZXNWaXNpYmxlPyJibG9jayI6Im5v bmUifSksSi5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJheGlzLXRleHQiLCEw KS5zdHlsZShCKTt2YXIgSz1aLnNlbGVjdCgidGV4dC5heGlzLXRleHQiKS5h dHRyKHt4OngrZi5sYWJlbE9mZnNldCxkeTppKyJlbSIsdHJhbnNmb3JtOmZ1 bmN0aW9uKHQsZSl7dmFyIHI9Vyh0KSxuPXgrZi5sYWJlbE9mZnNldCxhPWYu YW5ndWxhckF4aXMudGlja09yaWVudGF0aW9uO3JldHVybiJob3Jpem9udGFs Ij09YT8icm90YXRlKCIrLXIrIiAiK24rIiAwKSI6InJhZGlhbCI9PWE/cjwy NzAmJnI+OTA/InJvdGF0ZSgxODAgIituKyIgMCkiOm51bGw6InJvdGF0ZSgi KyhyPD0xODAmJnI+MD8tOTA6OTApKyIgIituKyIgMCkifX0pLnN0eWxlKHsi dGV4dC1hbmNob3IiOiJtaWRkbGUiLGRpc3BsYXk6Zi5hbmd1bGFyQXhpcy5s YWJlbHNWaXNpYmxlPyJibG9jayI6Im5vbmUifSkudGV4dChmdW5jdGlvbih0 LGUpe3JldHVybiBlJShmLm1pbm9yVGlja3MrMSkhPTA/IiI6dz93W3RdK2Yu YW5ndWxhckF4aXMudGlja3NTdWZmaXg6dCtmLmFuZ3VsYXJBeGlzLnRpY2tz U3VmZml4fSkuc3R5bGUoQik7Zi5hbmd1bGFyQXhpcy5yZXdyaXRlVGlja3Mm JksudGV4dChmdW5jdGlvbih0LGUpe3JldHVybiBlJShmLm1pbm9yVGlja3Mr MSkhPTA/IiI6Zi5hbmd1bGFyQXhpcy5yZXdyaXRlVGlja3ModGhpcy50ZXh0 Q29udGVudCxlKX0pO3ZhciBRPW4ubWF4KFIuc2VsZWN0QWxsKCIuYW5ndWxh ci10aWNrIHRleHQiKVswXS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5n ZXRDVE0oKS5lK3QuZ2V0QkJveCgpLndpZHRofSkpO0QuYXR0cih7dHJhbnNm b3JtOiJ0cmFuc2xhdGUoIitbeCtRLGYubWFyZ2luLnRvcF0rIikifSk7dmFy ICQ9dC5zZWxlY3QoImcuZ2VvbWV0cnktZ3JvdXAiKS5zZWxlY3RBbGwoImci KS5zaXplKCk+MCx0dD10LnNlbGVjdCgiZy5nZW9tZXRyeS1ncm91cCIpLnNl bGVjdEFsbCgiZy5nZW9tZXRyeSIpLmRhdGEocCk7aWYodHQuZW50ZXIoKS5h cHBlbmQoImciKS5hdHRyKHtjbGFzczpmdW5jdGlvbih0LGUpe3JldHVybiJn ZW9tZXRyeSBnZW9tZXRyeSIrZX19KSx0dC5leGl0KCkucmVtb3ZlKCkscFsw XXx8JCl7dmFyIGV0PVtdO3AuZm9yRWFjaChmdW5jdGlvbih0LGUpe3ZhciBu PXt9O24ucmFkaWFsU2NhbGU9cixuLmFuZ3VsYXJTY2FsZT1zLG4uY29udGFp bmVyPXR0LmZpbHRlcihmdW5jdGlvbih0LHIpe3JldHVybiByPT1lfSksbi5n ZW9tZXRyeT10Lmdlb21ldHJ5LG4ub3JpZW50YXRpb249Zi5vcmllbnRhdGlv bixuLmRpcmVjdGlvbj1mLmRpcmVjdGlvbixuLmluZGV4PWUsZXQucHVzaCh7 ZGF0YTp0LGdlb21ldHJ5Q29uZmlnOm59KX0pO3ZhciBydD1uLm5lc3QoKS5r ZXkoZnVuY3Rpb24odCxlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHQu ZGF0YS5ncm91cElkfHwidW5zdGFja2VkIn0pLmVudHJpZXMoZXQpLG50PVtd O3J0LmZvckVhY2goZnVuY3Rpb24odCxlKXsidW5zdGFja2VkIj09PXQua2V5 P250PW50LmNvbmNhdCh0LnZhbHVlcy5tYXAoZnVuY3Rpb24odCxlKXtyZXR1 cm5bdF19KSk6bnQucHVzaCh0LnZhbHVlcyl9KSxudC5mb3JFYWNoKGZ1bmN0 aW9uKHQsZSl7dmFyIHI7cj1BcnJheS5pc0FycmF5KHQpP3RbMF0uZ2VvbWV0 cnlDb25maWcuZ2VvbWV0cnk6dC5nZW9tZXRyeUNvbmZpZy5nZW9tZXRyeTt2 YXIgbj10Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybiBhKG9bcl0uZGVmYXVs dENvbmZpZygpLHQpfSk7b1tyXSgpLmNvbmZpZyhuKSgpfSl9dmFyIGF0LGl0 LG90PXQuc2VsZWN0KCIuZ3VpZGVzLWdyb3VwIiksc3Q9dC5zZWxlY3QoIi50 b29sdGlwcy1ncm91cCIpLGx0PW8udG9vbHRpcFBhbmVsKCkuY29uZmlnKHtj b250YWluZXI6c3QsZm9udFNpemU6OH0pKCksY3Q9by50b29sdGlwUGFuZWwo KS5jb25maWcoe2NvbnRhaW5lcjpzdCxmb250U2l6ZTo4fSkoKSx1dD1vLnRv b2x0aXBQYW5lbCgpLmNvbmZpZyh7Y29udGFpbmVyOnN0LGhhc1RpY2s6ITB9 KSgpO2lmKCFUKXt2YXIgaHQ9b3Quc2VsZWN0KCJsaW5lIikuYXR0cih7eDE6 MCx5MTowLHkyOjB9KS5zdHlsZSh7c3Ryb2tlOiJncmV5IiwicG9pbnRlci1l dmVudHMiOiJub25lIn0pO1Iub24oIm1vdXNlbW92ZS5hbmd1bGFyLWd1aWRl IixmdW5jdGlvbih0LGUpe3ZhciByPW8udXRpbC5nZXRNb3VzZVBvcyhZKS5h bmdsZTtodC5hdHRyKHt4MjoteCx0cmFuc2Zvcm06InJvdGF0ZSgiK3IrIiki fSkuc3R5bGUoe29wYWNpdHk6LjV9KTt2YXIgbj0ocisxODArMzYwLWYub3Jp ZW50YXRpb24pJTM2MDthdD1zLmludmVydChuKTt2YXIgYT1vLnV0aWwuY29u dmVydFRvQ2FydGVzaWFuKHgrMTIscisxODApO2x0LnRleHQoby51dGlsLnJv dW5kKGF0KSkubW92ZShbYVswXStfWzBdLGFbMV0rX1sxXV0pfSkub24oIm1v dXNlb3V0LmFuZ3VsYXItZ3VpZGUiLGZ1bmN0aW9uKHQsZSl7b3Quc2VsZWN0 KCJsaW5lIikuc3R5bGUoe29wYWNpdHk6MH0pfSl9dmFyIGZ0PW90LnNlbGVj dCgiY2lyY2xlIikuc3R5bGUoe3N0cm9rZToiZ3JleSIsZmlsbDoibm9uZSJ9 KTtSLm9uKCJtb3VzZW1vdmUucmFkaWFsLWd1aWRlIixmdW5jdGlvbih0LGUp e3ZhciBuPW8udXRpbC5nZXRNb3VzZVBvcyhZKS5yYWRpdXM7ZnQuYXR0cih7 cjpufSkuc3R5bGUoe29wYWNpdHk6LjV9KSxpdD1yLmludmVydChvLnV0aWwu Z2V0TW91c2VQb3MoWSkucmFkaXVzKTt2YXIgYT1vLnV0aWwuY29udmVydFRv Q2FydGVzaWFuKG4sZi5yYWRpYWxBeGlzLm9yaWVudGF0aW9uKTtjdC50ZXh0 KG8udXRpbC5yb3VuZChpdCkpLm1vdmUoW2FbMF0rX1swXSxhWzFdK19bMV1d KX0pLm9uKCJtb3VzZW91dC5yYWRpYWwtZ3VpZGUiLGZ1bmN0aW9uKHQsZSl7 ZnQuc3R5bGUoe29wYWNpdHk6MH0pLHV0LmhpZGUoKSxsdC5oaWRlKCksY3Qu aGlkZSgpfSksdC5zZWxlY3RBbGwoIi5nZW9tZXRyeS1ncm91cCAubWFyayIp Lm9uKCJtb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSxyKXt2YXIgYT1u LnNlbGVjdCh0aGlzKSxpPXRoaXMuc3R5bGUuZmlsbCxzPSJibGFjayIsbD10 aGlzLnN0eWxlLm9wYWNpdHl8fDE7aWYoYS5hdHRyKHsiZGF0YS1vcGFjaXR5 IjpsfSksaSYmIm5vbmUiIT09aSl7YS5hdHRyKHsiZGF0YS1maWxsIjppfSks cz1uLmhzbChpKS5kYXJrZXIoKS50b1N0cmluZygpLGEuc3R5bGUoe2ZpbGw6 cyxvcGFjaXR5OjF9KTt2YXIgYz17dDpvLnV0aWwucm91bmQoZVswXSkscjpv LnV0aWwucm91bmQoZVsxXSl9O1QmJihjLnQ9d1tlWzBdXSk7dmFyIHU9InQ6 ICIrYy50KyIsIHI6ICIrYy5yLGg9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJl Y3QoKSxmPXQubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHA9W2gu bGVmdCtoLndpZHRoLzItVlswXS1mLmxlZnQsaC50b3AraC5oZWlnaHQvMi1W WzFdLWYudG9wXTt1dC5jb25maWcoe2NvbG9yOnN9KS50ZXh0KHUpLHV0Lm1v dmUocCl9ZWxzZSBpPXRoaXMuc3R5bGUuc3Ryb2tlfHwiYmxhY2siLGEuYXR0 cih7ImRhdGEtc3Ryb2tlIjppfSkscz1uLmhzbChpKS5kYXJrZXIoKS50b1N0 cmluZygpLGEuc3R5bGUoe3N0cm9rZTpzLG9wYWNpdHk6MX0pfSkub24oIm1v dXNlbW92ZS50b29sdGlwIixmdW5jdGlvbih0LGUpe2lmKDAhPW4uZXZlbnQu d2hpY2gpcmV0dXJuITE7bi5zZWxlY3QodGhpcykuYXR0cigiZGF0YS1maWxs IikmJnV0LnNob3coKX0pLm9uKCJtb3VzZW91dC50b29sdGlwIixmdW5jdGlv bih0LGUpe3V0LmhpZGUoKTt2YXIgcj1uLnNlbGVjdCh0aGlzKSxhPXIuYXR0 cigiZGF0YS1maWxsIik7YT9yLnN0eWxlKHtmaWxsOmEsb3BhY2l0eTpyLmF0 dHIoImRhdGEtb3BhY2l0eSIpfSk6ci5zdHlsZSh7c3Ryb2tlOnIuYXR0cigi ZGF0YS1zdHJva2UiKSxvcGFjaXR5OnIuYXR0cigiZGF0YS1vcGFjaXR5Iil9 KX0pfSl9KGMpLHRoaXN9LGYuY29uZmlnPWZ1bmN0aW9uKHQpe2lmKCFhcmd1 bWVudHMubGVuZ3RoKXJldHVybiBsO3ZhciBlPW8udXRpbC5jbG9uZUpzb24o dCk7cmV0dXJuIGUuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7bC5kYXRh W2VdfHwobC5kYXRhW2VdPXt9KSxhKGwuZGF0YVtlXSxvLkF4aXMuZGVmYXVs dENvbmZpZygpLmRhdGFbMF0pLGEobC5kYXRhW2VdLHQpfSksYShsLmxheW91 dCxvLkF4aXMuZGVmYXVsdENvbmZpZygpLmxheW91dCksYShsLmxheW91dCxl LmxheW91dCksdGhpc30sZi5nZXRMaXZlQ29uZmlnPWZ1bmN0aW9uKCl7cmV0 dXJuIHV9LGYuZ2V0aW5wdXRDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gY30s Zi5yYWRpYWxTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gcn0sZi5hbmd1bGFy U2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHN9LGYuc3ZnPWZ1bmN0aW9uKCl7 cmV0dXJuIHR9LG4ucmViaW5kKGYsaCwib24iKSxmfSxvLkF4aXMuZGVmYXVs dENvbmZpZz1mdW5jdGlvbih0LGUpe3JldHVybntkYXRhOlt7dDpbMSwyLDMs NF0scjpbMTAsMTEsMTIsMTNdLG5hbWU6IkxpbmUxIixnZW9tZXRyeToiTGlu ZVBsb3QiLGNvbG9yOm51bGwsc3Ryb2tlRGFzaDoic29saWQiLHN0cm9rZUNv bG9yOm51bGwsc3Ryb2tlU2l6ZToiMSIsdmlzaWJsZUluTGVnZW5kOiEwLG9w YWNpdHk6MX1dLGxheW91dDp7ZGVmYXVsdENvbG9yUmFuZ2U6bi5zY2FsZS5j YXRlZ29yeTEwKCkucmFuZ2UoKSx0aXRsZTpudWxsLGhlaWdodDo0NTAsd2lk dGg6NTAwLG1hcmdpbjp7dG9wOjQwLHJpZ2h0OjQwLGJvdHRvbTo0MCxsZWZ0 OjQwfSxmb250OntzaXplOjEyLGNvbG9yOiJncmF5IixvdXRsaW5lQ29sb3I6 IndoaXRlIixmYW1pbHk6IlRhaG9tYSwgc2Fucy1zZXJpZiJ9LGRpcmVjdGlv bjoiY2xvY2t3aXNlIixvcmllbnRhdGlvbjowLGxhYmVsT2Zmc2V0OjEwLHJh ZGlhbEF4aXM6e2RvbWFpbjpudWxsLG9yaWVudGF0aW9uOi00NSx0aWNrc1N1 ZmZpeDoiIix2aXNpYmxlOiEwLGdyaWRMaW5lc1Zpc2libGU6ITAsdGlja09y aWVudGF0aW9uOiJob3Jpem9udGFsIixyZXdyaXRlVGlja3M6bnVsbH0sYW5n dWxhckF4aXM6e2RvbWFpbjpbMCwzNjBdLHRpY2tzU3VmZml4OiIiLHZpc2li bGU6ITAsZ3JpZExpbmVzVmlzaWJsZTohMCxsYWJlbHNWaXNpYmxlOiEwLHRp Y2tPcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIscmV3cml0ZVRpY2tzOm51bGws dGlja3NDb3VudDpudWxsLHRpY2tzU3RlcDpudWxsfSxtaW5vclRpY2tzOjAs dGlja0xlbmd0aDpudWxsLHRpY2tDb2xvcjoic2lsdmVyIixtaW5vclRpY2tD b2xvcjoiI2VlZSIsYmFja2dyb3VuZENvbG9yOiJub25lIixuZWVkc0VuZFNw YWNpbmc6bnVsbCxzaG93TGVnZW5kOiEwLGxlZ2VuZDp7cmV2ZXJzZU9yZGVy OiExfSxvcGFjaXR5OjF9fX0sby51dGlsPXt9LG8uREFUQUVYVEVOVD0iZGF0 YUV4dGVudCIsby5BUkVBPSJBcmVhQ2hhcnQiLG8uTElORT0iTGluZVBsb3Qi LG8uRE9UPSJEb3RQbG90IixvLkJBUj0iQmFyQ2hhcnQiLG8udXRpbC5fb3Zl cnJpZGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gdClyIGluIGUmJihl W3JdPXRbcl0pfSxvLnV0aWwuX2V4dGVuZD1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgciBpbiB0KWVbcl09dFtyXX0sby51dGlsLl9ybmRTbmQ9ZnVuY3Rpb24o KXtyZXR1cm4gMipNYXRoLnJhbmRvbSgpLTErKDIqTWF0aC5yYW5kb20oKS0x KSsoMipNYXRoLnJhbmRvbSgpLTEpfSxvLnV0aWwuZGF0YUZyb21FcXVhdGlv bjI9ZnVuY3Rpb24odCxlKXt2YXIgcj1lfHw2O3JldHVybiBuLnJhbmdlKDAs MzYwK3IscikubWFwKGZ1bmN0aW9uKGUscil7dmFyIG49ZSpNYXRoLlBJLzE4 MDtyZXR1cm5bZSx0KG4pXX0pfSxvLnV0aWwuZGF0YUZyb21FcXVhdGlvbj1m dW5jdGlvbih0LGUscil7dmFyIGE9ZXx8NixpPVtdLG89W107bi5yYW5nZSgw LDM2MCthLGEpLmZvckVhY2goZnVuY3Rpb24oZSxyKXt2YXIgbj1lKk1hdGgu UEkvMTgwLGE9dChuKTtpLnB1c2goZSksby5wdXNoKGEpfSk7dmFyIHM9e3Q6 aSxyOm99O3JldHVybiByJiYocy5uYW1lPXIpLHN9LG8udXRpbC5lbnN1cmVB cnJheT1mdW5jdGlvbih0LGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdCly ZXR1cm4gbnVsbDt2YXIgcj1bXS5jb25jYXQodCk7cmV0dXJuIG4ucmFuZ2Uo ZSkubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHJbZV18fHJbMF19KX0sby51 dGlsLmZpbGxBcnJheXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlLmZvckVh Y2goZnVuY3Rpb24oZSxuKXt0W2VdPW8udXRpbC5lbnN1cmVBcnJheSh0W2Vd LHIpfSksdH0sby51dGlsLmNsb25lSnNvbj1mdW5jdGlvbih0KXtyZXR1cm4g SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0KSl9LG8udXRpbC52YWxpZGF0 ZUtleXM9ZnVuY3Rpb24odCxlKXsic3RyaW5nIj09dHlwZW9mIGUmJihlPWUu c3BsaXQoIi4iKSk7dmFyIHI9ZS5zaGlmdCgpO3JldHVybiB0W3JdJiYoIWUu bGVuZ3RofHxvYmpIYXNLZXlzKHRbcl0sZSkpfSxvLnV0aWwuc3VtQXJyYXlz PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uemlwKHQsZSkubWFwKGZ1bmN0aW9u KHQsZSl7cmV0dXJuIG4uc3VtKHQpfSl9LG8udXRpbC5hcnJheUxhc3Q9ZnVu Y3Rpb24odCl7cmV0dXJuIHRbdC5sZW5ndGgtMV19LG8udXRpbC5hcnJheUVx dWFsPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPU1hdGgubWF4KHQubGVuZ3Ro LGUubGVuZ3RoLDEpO3ItLSA+PTAmJnRbcl09PT1lW3JdOyk7cmV0dXJuLTI9 PT1yfSxvLnV0aWwuZmxhdHRlbkFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIg ZT1bXTshby51dGlsLmFycmF5RXF1YWwoZSx0KTspZT10LHQ9W10uY29uY2F0 LmFwcGx5KFtdLHQpO3JldHVybiB0fSxvLnV0aWwuZGVkdXBsaWNhdGU9ZnVu Y3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQsZSxyKXtyZXR1 cm4gci5pbmRleE9mKHQpPT1lfSl9LG8udXRpbC5jb252ZXJ0VG9DYXJ0ZXNp YW49ZnVuY3Rpb24odCxlKXt2YXIgcj1lKk1hdGguUEkvMTgwO3JldHVyblt0 Kk1hdGguY29zKHIpLHQqTWF0aC5zaW4ocildfSxvLnV0aWwucm91bmQ9ZnVu Y3Rpb24odCxlKXt2YXIgcj1lfHwyLG49TWF0aC5wb3coMTAscik7cmV0dXJu IE1hdGgucm91bmQodCpuKS9ufSxvLnV0aWwuZ2V0TW91c2VQb3M9ZnVuY3Rp b24odCl7dmFyIGU9bi5tb3VzZSh0Lm5vZGUoKSkscj1lWzBdLGE9ZVsxXSxp PXt9O3JldHVybiBpLng9cixpLnk9YSxpLnBvcz1lLGkuYW5nbGU9MTgwKihN YXRoLmF0YW4yKGEscikrTWF0aC5QSSkvTWF0aC5QSSxpLnJhZGl1cz1NYXRo LnNxcnQocipyK2EqYSksaX0sby51dGlsLmR1cGxpY2F0ZXNDb3VudD1mdW5j dGlvbih0KXtmb3IodmFyIGUscj17fSxuPXt9LGE9MCxpPXQubGVuZ3RoO2E8 aTthKyspKGU9dFthXSlpbiByPyhyW2VdKyssbltlXT1yW2VdKTpyW2VdPTE7 cmV0dXJuIG59LG8udXRpbC5kdXBsaWNhdGVzPWZ1bmN0aW9uKHQpe3JldHVy biBPYmplY3Qua2V5cyhvLnV0aWwuZHVwbGljYXRlc0NvdW50KHQpKX0sby51 dGlsLnRyYW5zbGF0b3I9ZnVuY3Rpb24odCxlLHIsbil7aWYobil7dmFyIGE9 ci5zbGljZSgpO3I9ZSxlPWF9dmFyIGk9ZS5yZWR1Y2UoZnVuY3Rpb24odCxl KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQpcmV0dXJuIHRbZV19LHQpOyJ1 bmRlZmluZWQiIT10eXBlb2YgaSYmKGUucmVkdWNlKGZ1bmN0aW9uKHQscixu KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQpcmV0dXJuIG49PT1lLmxlbmd0 aC0xJiZkZWxldGUgdFtyXSx0W3JdfSx0KSxyLnJlZHVjZShmdW5jdGlvbih0 LGUsbil7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiB0W2VdJiYodFtlXT17 fSksbj09PXIubGVuZ3RoLTEmJih0W2VdPWkpLHRbZV19LHQpKX0sby5Qb2x5 Q2hhcnQ9ZnVuY3Rpb24oKXt2YXIgdD1bby5Qb2x5Q2hhcnQuZGVmYXVsdENv bmZpZygpXSxlPW4uZGlzcGF0Y2goImhvdmVyIikscj17c29saWQ6Im5vbmUi LGRhc2g6WzUsMl0sZG90OlsyLDVdfTtmdW5jdGlvbiBpKCl7dmFyIGU9dFsw XS5nZW9tZXRyeUNvbmZpZyxhPWUuY29udGFpbmVyOyJzdHJpbmciPT10eXBl b2YgYSYmKGE9bi5zZWxlY3QoYSkpLGEuZGF0dW0odCkuZWFjaChmdW5jdGlv bih0LGEpe3ZhciBpPSEhdFswXS5kYXRhLnlTdGFjayxvPXQubWFwKGZ1bmN0 aW9uKHQsZSl7cmV0dXJuIGk/bi56aXAodC5kYXRhLnRbMF0sdC5kYXRhLnJb MF0sdC5kYXRhLnlTdGFja1swXSk6bi56aXAodC5kYXRhLnRbMF0sdC5kYXRh LnJbMF0pfSkscz1lLmFuZ3VsYXJTY2FsZSxsPWUucmFkaWFsU2NhbGUuZG9t YWluKClbMF0sYz17YmFyOmZ1bmN0aW9uKHIsYSxpKXt2YXIgbz10W2ldLmRh dGEsbD1lLnJhZGlhbFNjYWxlKHJbMV0pLWUucmFkaWFsU2NhbGUoMCksYz1l LnJhZGlhbFNjYWxlKHJbMl18fDApLHU9by5iYXJXaWR0aDtuLnNlbGVjdCh0 aGlzKS5hdHRyKHtjbGFzczoibWFyayBiYXIiLGQ6Ik0iK1tbbCtjLC11LzJd LFtsK2MsdS8yXSxbYyx1LzJdLFtjLC11LzJdXS5qb2luKCJMIikrIloiLHRy YW5zZm9ybTpmdW5jdGlvbih0LHIpe3JldHVybiJyb3RhdGUoIisoZS5vcmll bnRhdGlvbitzKHRbMF0pKSsiKSJ9fSl9fTtjLmRvdD1mdW5jdGlvbihyLGEs aSl7dmFyIG89clsyXT9bclswXSxyWzFdK3JbMl1dOnIscz1uLnN2Zy5zeW1i b2woKS5zaXplKHRbaV0uZGF0YS5kb3RTaXplKS50eXBlKHRbaV0uZGF0YS5k b3RUeXBlKShyLGEpO24uc2VsZWN0KHRoaXMpLmF0dHIoe2NsYXNzOiJtYXJr IGRvdCIsZDpzLHRyYW5zZm9ybTpmdW5jdGlvbih0LHIpe3ZhciBuLGEsaSxz PShuPWZ1bmN0aW9uKHQscil7dmFyIG49ZS5yYWRpYWxTY2FsZSh0WzFdKSxh PShlLmFuZ3VsYXJTY2FsZSh0WzBdKStlLm9yaWVudGF0aW9uKSpNYXRoLlBJ LzE4MDtyZXR1cm57cjpuLHQ6YX19KG8pLGE9bi5yKk1hdGguY29zKG4udCks aT1uLnIqTWF0aC5zaW4obi50KSx7eDphLHk6aX0pO3JldHVybiJ0cmFuc2xh dGUoIitbcy54LHMueV0rIikifX0pfTt2YXIgdT1uLnN2Zy5saW5lLnJhZGlh bCgpLmludGVycG9sYXRlKHRbMF0uZGF0YS5saW5lSW50ZXJwb2xhdGlvbiku cmFkaXVzKGZ1bmN0aW9uKHQpe3JldHVybiBlLnJhZGlhbFNjYWxlKHRbMV0p fSkuYW5nbGUoZnVuY3Rpb24odCl7cmV0dXJuIGUuYW5ndWxhclNjYWxlKHRb MF0pKk1hdGguUEkvMTgwfSk7Yy5saW5lPWZ1bmN0aW9uKHIsYSxpKXt2YXIg cz1yWzJdP29baV0ubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW3RbMF0sdFsx XSt0WzJdXX0pOm9baV07aWYobi5zZWxlY3QodGhpcykuZWFjaChjLmRvdCku c3R5bGUoe29wYWNpdHk6ZnVuY3Rpb24oZSxyKXtyZXR1cm4rdFtpXS5kYXRh LmRvdFZpc2libGV9LGZpbGw6ZC5zdHJva2UocixhLGkpfSkuYXR0cih7Y2xh c3M6Im1hcmsgZG90In0pLCEoYT4wKSl7dmFyIGw9bi5zZWxlY3QodGhpcy5w YXJlbnROb2RlKS5zZWxlY3RBbGwoInBhdGgubGluZSIpLmRhdGEoWzBdKTts LmVudGVyKCkuaW5zZXJ0KCJwYXRoIiksbC5hdHRyKHtjbGFzczoibGluZSIs ZDp1KHMpLHRyYW5zZm9ybTpmdW5jdGlvbih0LHIpe3JldHVybiJyb3RhdGUo IisoZS5vcmllbnRhdGlvbis5MCkrIikifSwicG9pbnRlci1ldmVudHMiOiJu b25lIn0pLnN0eWxlKHtmaWxsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGQuZmls bChyLGEsaSl9LCJmaWxsLW9wYWNpdHkiOjAsc3Ryb2tlOmZ1bmN0aW9uKHQs ZSl7cmV0dXJuIGQuc3Ryb2tlKHIsYSxpKX0sInN0cm9rZS13aWR0aCI6ZnVu Y3Rpb24odCxlKXtyZXR1cm4gZFsic3Ryb2tlLXdpZHRoIl0ocixhLGkpfSwi c3Ryb2tlLWRhc2hhcnJheSI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZFsic3Ry b2tlLWRhc2hhcnJheSJdKHIsYSxpKX0sb3BhY2l0eTpmdW5jdGlvbih0LGUp e3JldHVybiBkLm9wYWNpdHkocixhLGkpfSxkaXNwbGF5OmZ1bmN0aW9uKHQs ZSl7cmV0dXJuIGQuZGlzcGxheShyLGEsaSl9fSl9fTt2YXIgaD1lLmFuZ3Vs YXJTY2FsZS5yYW5nZSgpLGY9TWF0aC5hYnMoaFsxXS1oWzBdKS9vWzBdLmxl bmd0aCpNYXRoLlBJLzE4MCxwPW4uc3ZnLmFyYygpLnN0YXJ0QW5nbGUoZnVu Y3Rpb24odCl7cmV0dXJuLWYvMn0pLmVuZEFuZ2xlKGZ1bmN0aW9uKHQpe3Jl dHVybiBmLzJ9KS5pbm5lclJhZGl1cyhmdW5jdGlvbih0KXtyZXR1cm4gZS5y YWRpYWxTY2FsZShsKyh0WzJdfHwwKSl9KS5vdXRlclJhZGl1cyhmdW5jdGlv bih0KXtyZXR1cm4gZS5yYWRpYWxTY2FsZShsKyh0WzJdfHwwKSkrZS5yYWRp YWxTY2FsZSh0WzFdKX0pO2MuYXJjPWZ1bmN0aW9uKHQscixhKXtuLnNlbGVj dCh0aGlzKS5hdHRyKHtjbGFzczoibWFyayBhcmMiLGQ6cCx0cmFuc2Zvcm06 ZnVuY3Rpb24odCxyKXtyZXR1cm4icm90YXRlKCIrKGUub3JpZW50YXRpb24r cyh0WzBdKSs5MCkrIikifX0pfTt2YXIgZD17ZmlsbDpmdW5jdGlvbihlLHIs bil7cmV0dXJuIHRbbl0uZGF0YS5jb2xvcn0sc3Ryb2tlOmZ1bmN0aW9uKGUs cixuKXtyZXR1cm4gdFtuXS5kYXRhLnN0cm9rZUNvbG9yfSwic3Ryb2tlLXdp ZHRoIjpmdW5jdGlvbihlLHIsbil7cmV0dXJuIHRbbl0uZGF0YS5zdHJva2VT aXplKyJweCJ9LCJzdHJva2UtZGFzaGFycmF5IjpmdW5jdGlvbihlLG4sYSl7 cmV0dXJuIHJbdFthXS5kYXRhLnN0cm9rZURhc2hdfSxvcGFjaXR5OmZ1bmN0 aW9uKGUscixuKXtyZXR1cm4gdFtuXS5kYXRhLm9wYWNpdHl9LGRpc3BsYXk6 ZnVuY3Rpb24oZSxyLG4pe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdFtu XS5kYXRhLnZpc2libGV8fHRbbl0uZGF0YS52aXNpYmxlPyJibG9jayI6Im5v bmUifX0sZz1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcubGF5ZXIiKS5k YXRhKG8pO2cuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKHtjbGFzczoibGF5 ZXIifSk7dmFyIHY9Zy5zZWxlY3RBbGwoInBhdGgubWFyayIpLmRhdGEoZnVu Y3Rpb24odCxlKXtyZXR1cm4gdH0pO3YuZW50ZXIoKS5hcHBlbmQoInBhdGgi KS5hdHRyKHtjbGFzczoibWFyayJ9KSx2LnN0eWxlKGQpLmVhY2goY1tlLmdl b21ldHJ5VHlwZV0pLHYuZXhpdCgpLnJlbW92ZSgpLGcuZXhpdCgpLnJlbW92 ZSgpfSl9cmV0dXJuIGkuY29uZmlnPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhlLmZvckVhY2goZnVuY3Rpb24oZSxyKXt0W3JdfHwo dFtyXT17fSksYSh0W3JdLG8uUG9seUNoYXJ0LmRlZmF1bHRDb25maWcoKSks YSh0W3JdLGUpfSksdGhpcyk6dH0saS5nZXRDb2xvclNjYWxlPWZ1bmN0aW9u KCl7fSxuLnJlYmluZChpLGUsIm9uIiksaX0sby5Qb2x5Q2hhcnQuZGVmYXVs dENvbmZpZz1mdW5jdGlvbigpe3JldHVybntkYXRhOntuYW1lOiJnZW9tMSIs dDpbWzEsMiwzLDRdXSxyOltbMSwyLDMsNF1dLGRvdFR5cGU6ImNpcmNsZSIs ZG90U2l6ZTo2NCxkb3RWaXNpYmxlOiExLGJhcldpZHRoOjIwLGNvbG9yOiIj ZmZhNTAwIixzdHJva2VTaXplOjEsc3Ryb2tlQ29sb3I6InNpbHZlciIsc3Ry b2tlRGFzaDoic29saWQiLG9wYWNpdHk6MSxpbmRleDowLHZpc2libGU6ITAs dmlzaWJsZUluTGVnZW5kOiEwfSxnZW9tZXRyeUNvbmZpZzp7Z2VvbWV0cnk6 IkxpbmVQbG90IixnZW9tZXRyeVR5cGU6ImFyYyIsZGlyZWN0aW9uOiJjbG9j a3dpc2UiLG9yaWVudGF0aW9uOjAsY29udGFpbmVyOiJib2R5IixyYWRpYWxT Y2FsZTpudWxsLGFuZ3VsYXJTY2FsZTpudWxsLGNvbG9yU2NhbGU6bi5zY2Fs ZS5jYXRlZ29yeTIwKCl9fX0sby5CYXJDaGFydD1mdW5jdGlvbigpe3JldHVy biBvLlBvbHlDaGFydCgpfSxvLkJhckNoYXJ0LmRlZmF1bHRDb25maWc9ZnVu Y3Rpb24oKXtyZXR1cm57Z2VvbWV0cnlDb25maWc6e2dlb21ldHJ5VHlwZToi YmFyIn19fSxvLkFyZWFDaGFydD1mdW5jdGlvbigpe3JldHVybiBvLlBvbHlD aGFydCgpfSxvLkFyZWFDaGFydC5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKCl7 cmV0dXJue2dlb21ldHJ5Q29uZmlnOntnZW9tZXRyeVR5cGU6ImFyYyJ9fX0s by5Eb3RQbG90PWZ1bmN0aW9uKCl7cmV0dXJuIG8uUG9seUNoYXJ0KCl9LG8u RG90UGxvdC5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJue2dlb21l dHJ5Q29uZmlnOntnZW9tZXRyeVR5cGU6ImRvdCIsZG90VHlwZToiY2lyY2xl In19fSxvLkxpbmVQbG90PWZ1bmN0aW9uKCl7cmV0dXJuIG8uUG9seUNoYXJ0 KCl9LG8uTGluZVBsb3QuZGVmYXVsdENvbmZpZz1mdW5jdGlvbigpe3JldHVy bntnZW9tZXRyeUNvbmZpZzp7Z2VvbWV0cnlUeXBlOiJsaW5lIn19fSxvLkxl Z2VuZD1mdW5jdGlvbigpe3ZhciB0PW8uTGVnZW5kLmRlZmF1bHRDb25maWco KSxlPW4uZGlzcGF0Y2goImhvdmVyIik7ZnVuY3Rpb24gcigpe3ZhciBlPXQu bGVnZW5kQ29uZmlnLGk9dC5kYXRhLm1hcChmdW5jdGlvbih0LHIpe3JldHVy bltdLmNvbmNhdCh0KS5tYXAoZnVuY3Rpb24odCxuKXt2YXIgaT1hKHt9LGUu ZWxlbWVudHNbcl0pO3JldHVybiBpLm5hbWU9dCxpLmNvbG9yPVtdLmNvbmNh dChlLmVsZW1lbnRzW3JdLmNvbG9yKVtuXSxpfSl9KSxvPW4ubWVyZ2UoaSk7 bz1vLmZpbHRlcihmdW5jdGlvbih0LHIpe3JldHVybiBlLmVsZW1lbnRzW3Jd JiYoZS5lbGVtZW50c1tyXS52aXNpYmxlSW5MZWdlbmR8fCJ1bmRlZmluZWQi PT10eXBlb2YgZS5lbGVtZW50c1tyXS52aXNpYmxlSW5MZWdlbmQpfSksZS5y ZXZlcnNlT3JkZXImJihvPW8ucmV2ZXJzZSgpKTt2YXIgcz1lLmNvbnRhaW5l cjsoInN0cmluZyI9PXR5cGVvZiBzfHxzLm5vZGVOYW1lKSYmKHM9bi5zZWxl Y3QocykpO3ZhciBsPW8ubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY29s b3J9KSxjPWUuZm9udFNpemUsdT1udWxsPT1lLmlzQ29udGludW91cz8ibnVt YmVyIj09dHlwZW9mIG9bMF06ZS5pc0NvbnRpbnVvdXMsaD11P2UuaGVpZ2h0 OmMqby5sZW5ndGgsZj1zLmNsYXNzZWQoImxlZ2VuZC1ncm91cCIsITApLnNl bGVjdEFsbCgic3ZnIikuZGF0YShbMF0pLHA9Zi5lbnRlcigpLmFwcGVuZCgi c3ZnIikuYXR0cih7d2lkdGg6MzAwLGhlaWdodDpoK2MseG1sbnM6Imh0dHA6 Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwieG1sbnM6eGxpbmsiOiJodHRwOi8v d3d3LnczLm9yZy8xOTk5L3hsaW5rIix2ZXJzaW9uOiIxLjEifSk7cC5hcHBl bmQoImciKS5jbGFzc2VkKCJsZWdlbmQtYXhpcyIsITApLHAuYXBwZW5kKCJn IikuY2xhc3NlZCgibGVnZW5kLW1hcmtzIiwhMCk7dmFyIGQ9bi5yYW5nZShv Lmxlbmd0aCksZz1uLnNjYWxlW3U/ImxpbmVhciI6Im9yZGluYWwiXSgpLmRv bWFpbihkKS5yYW5nZShsKSx2PW4uc2NhbGVbdT8ibGluZWFyIjoib3JkaW5h bCJdKCkuZG9tYWluKGQpW3U/InJhbmdlIjoicmFuZ2VQb2ludHMiXShbMCxo XSk7aWYodSl7dmFyIG09Zi5zZWxlY3QoIi5sZWdlbmQtbWFya3MiKS5hcHBl bmQoImRlZnMiKS5hcHBlbmQoImxpbmVhckdyYWRpZW50IikuYXR0cih7aWQ6 ImdyYWQxIix4MToiMCUiLHkxOiIwJSIseDI6IjAlIix5MjoiMTAwJSJ9KS5z ZWxlY3RBbGwoInN0b3AiKS5kYXRhKGwpO20uZW50ZXIoKS5hcHBlbmQoInN0 b3AiKSxtLmF0dHIoe29mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiBlLyhs Lmxlbmd0aC0xKSoxMDArIiUifX0pLnN0eWxlKHsic3RvcC1jb2xvciI6ZnVu Y3Rpb24odCxlKXtyZXR1cm4gdH19KSxmLmFwcGVuZCgicmVjdCIpLmNsYXNz ZWQoImxlZ2VuZC1tYXJrIiwhMCkuYXR0cih7aGVpZ2h0OmUuaGVpZ2h0LHdp ZHRoOmUuY29sb3JCYW5kV2lkdGgsZmlsbDoidXJsKCNncmFkMSkifSl9ZWxz ZXt2YXIgeT1mLnNlbGVjdCgiLmxlZ2VuZC1tYXJrcyIpLnNlbGVjdEFsbCgi cGF0aC5sZWdlbmQtbWFyayIpLmRhdGEobyk7eS5lbnRlcigpLmFwcGVuZCgi cGF0aCIpLmNsYXNzZWQoImxlZ2VuZC1tYXJrIiwhMCkseS5hdHRyKHt0cmFu c2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4idHJhbnNsYXRlKCIrW2MvMix2 KGUpK2MvMl0rIikifSxkOmZ1bmN0aW9uKHQsZSl7dmFyIHIsYSxpLG89dC5z eW1ib2w7cmV0dXJuIGk9MyooYT1jKSwibGluZSI9PT0ocj1vKT8iTSIrW1st YS8yLC1hLzEyXSxbYS8yLC1hLzEyXSxbYS8yLGEvMTJdLFstYS8yLGEvMTJd XSsiWiI6LTEhPW4uc3ZnLnN5bWJvbFR5cGVzLmluZGV4T2Yocik/bi5zdmcu c3ltYm9sKCkudHlwZShyKS5zaXplKGkpKCk6bi5zdmcuc3ltYm9sKCkudHlw ZSgic3F1YXJlIikuc2l6ZShpKSgpfSxmaWxsOmZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGcoZSl9fSkseS5leGl0KCkucmVtb3ZlKCl9dmFyIHg9bi5zdmcuYXhp cygpLnNjYWxlKHYpLm9yaWVudCgicmlnaHQiKSxiPWYuc2VsZWN0KCJnLmxl Z2VuZC1heGlzIikuYXR0cih7dHJhbnNmb3JtOiJ0cmFuc2xhdGUoIitbdT9l LmNvbG9yQmFuZFdpZHRoOmMsYy8yXSsiKSJ9KS5jYWxsKHgpO3JldHVybiBi LnNlbGVjdEFsbCgiLmRvbWFpbiIpLnN0eWxlKHtmaWxsOiJub25lIixzdHJv a2U6Im5vbmUifSksYi5zZWxlY3RBbGwoImxpbmUiKS5zdHlsZSh7ZmlsbDoi bm9uZSIsc3Ryb2tlOnU/ZS50ZXh0Q29sb3I6Im5vbmUifSksYi5zZWxlY3RB bGwoInRleHQiKS5zdHlsZSh7ZmlsbDplLnRleHRDb2xvciwiZm9udC1zaXpl IjplLmZvbnRTaXplfSkudGV4dChmdW5jdGlvbih0LGUpe3JldHVybiBvW2Vd Lm5hbWV9KSxyfXJldHVybiByLmNvbmZpZz1mdW5jdGlvbihlKXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8oYSh0LGUpLHRoaXMpOnR9LG4ucmViaW5kKHIs ZSwib24iKSxyfSxvLkxlZ2VuZC5kZWZhdWx0Q29uZmlnPWZ1bmN0aW9uKHQs ZSl7cmV0dXJue2RhdGE6WyJhIiwiYiIsImMiXSxsZWdlbmRDb25maWc6e2Vs ZW1lbnRzOlt7c3ltYm9sOiJsaW5lIixjb2xvcjoicmVkIn0se3N5bWJvbDoi c3F1YXJlIixjb2xvcjoieWVsbG93In0se3N5bWJvbDoiZGlhbW9uZCIsY29s b3I6ImxpbWVncmVlbiJ9XSxoZWlnaHQ6MTUwLGNvbG9yQmFuZFdpZHRoOjMw LGZvbnRTaXplOjEyLGNvbnRhaW5lcjoiYm9keSIsaXNDb250aW51b3VzOm51 bGwsdGV4dENvbG9yOiJncmV5IixyZXZlcnNlT3JkZXI6ITF9fX0sby50b29s dGlwUGFuZWw9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsaT17Y29udGFpbmVyOm51 bGwsaGFzVGljazohMSxmb250U2l6ZToxMixjb2xvcjoid2hpdGUiLHBhZGRp bmc6NX0scz0idG9vbHRpcC0iK28udG9vbHRpcFBhbmVsLnVpZCsrLGw9MTAs Yz1mdW5jdGlvbigpe3ZhciBuPSh0PWkuY29udGFpbmVyLnNlbGVjdEFsbCgi Zy4iK3MpLmRhdGEoWzBdKSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2Vk KHMsITApLnN0eWxlKHsicG9pbnRlci1ldmVudHMiOiJub25lIixkaXNwbGF5 OiJub25lIn0pO3JldHVybiByPW4uYXBwZW5kKCJwYXRoIikuc3R5bGUoe2Zp bGw6IndoaXRlIiwiZmlsbC1vcGFjaXR5IjouOX0pLmF0dHIoe2Q6Ik0wIDAi fSksZT1uLmFwcGVuZCgidGV4dCIpLmF0dHIoe2R4OmkucGFkZGluZytsLGR5 Oi4zKitpLmZvbnRTaXplfSksY307cmV0dXJuIGMudGV4dD1mdW5jdGlvbihh KXt2YXIgbz1uLmhzbChpLmNvbG9yKS5sLHM9bz49LjU/IiNhYWEiOiJ3aGl0 ZSIsdT1vPj0uNT8iYmxhY2siOiJ3aGl0ZSIsaD1hfHwiIjtlLnN0eWxlKHtm aWxsOnUsImZvbnQtc2l6ZSI6aS5mb250U2l6ZSsicHgifSkudGV4dChoKTt2 YXIgZj1pLnBhZGRpbmcscD1lLm5vZGUoKS5nZXRCQm94KCksZD17ZmlsbDpp LmNvbG9yLHN0cm9rZTpzLCJzdHJva2Utd2lkdGgiOiIycHgifSxnPXAud2lk dGgrMipmK2wsdj1wLmhlaWdodCsyKmY7cmV0dXJuIHIuYXR0cih7ZDoiTSIr W1tsLC12LzJdLFtsLC12LzRdLFtpLmhhc1RpY2s/MDpsLDBdLFtsLHYvNF0s W2wsdi8yXSxbZyx2LzJdLFtnLC12LzJdXS5qb2luKCJMIikrIloifSkuc3R5 bGUoZCksdC5hdHRyKHt0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK1tsLC12LzIr MipmXSsiKSJ9KSx0LnN0eWxlKHtkaXNwbGF5OiJibG9jayJ9KSxjfSxjLm1v dmU9ZnVuY3Rpb24oZSl7aWYodClyZXR1cm4gdC5hdHRyKHt0cmFuc2Zvcm06 InRyYW5zbGF0ZSgiK1tlWzBdLGVbMV1dKyIpIn0pLnN0eWxlKHtkaXNwbGF5 OiJibG9jayJ9KSxjfSxjLmhpZGU9ZnVuY3Rpb24oKXtpZih0KXJldHVybiB0 LnN0eWxlKHtkaXNwbGF5OiJub25lIn0pLGN9LGMuc2hvdz1mdW5jdGlvbigp e2lmKHQpcmV0dXJuIHQuc3R5bGUoe2Rpc3BsYXk6ImJsb2NrIn0pLGN9LGMu Y29uZmlnPWZ1bmN0aW9uKHQpe3JldHVybiBhKGksdCksY30sY30sby50b29s dGlwUGFuZWwudWlkPTEsby5hZGFwdGVyPXt9LG8uYWRhcHRlci5wbG90bHk9 ZnVuY3Rpb24oKXt2YXIgdD17Y29udmVydDpmdW5jdGlvbih0LGUpe3ZhciBy PXt9O2lmKHQuZGF0YSYmKHIuZGF0YT10LmRhdGEubWFwKGZ1bmN0aW9uKHQs cil7dmFyIG49YSh7fSx0KTtyZXR1cm5bW24sWyJtYXJrZXIiLCJjb2xvciJd LFsiY29sb3IiXV0sW24sWyJtYXJrZXIiLCJvcGFjaXR5Il0sWyJvcGFjaXR5 Il1dLFtuLFsibWFya2VyIiwibGluZSIsImNvbG9yIl0sWyJzdHJva2VDb2xv ciJdXSxbbixbIm1hcmtlciIsImxpbmUiLCJkYXNoIl0sWyJzdHJva2VEYXNo Il1dLFtuLFsibWFya2VyIiwibGluZSIsIndpZHRoIl0sWyJzdHJva2VTaXpl Il1dLFtuLFsibWFya2VyIiwic3ltYm9sIl0sWyJkb3RUeXBlIl1dLFtuLFsi bWFya2VyIiwic2l6ZSJdLFsiZG90U2l6ZSJdXSxbbixbIm1hcmtlciIsImJh cldpZHRoIl0sWyJiYXJXaWR0aCJdXSxbbixbImxpbmUiLCJpbnRlcnBvbGF0 aW9uIl0sWyJsaW5lSW50ZXJwb2xhdGlvbiJdXSxbbixbInNob3dsZWdlbmQi XSxbInZpc2libGVJbkxlZ2VuZCJdXV0uZm9yRWFjaChmdW5jdGlvbih0LHIp e28udXRpbC50cmFuc2xhdG9yLmFwcGx5KG51bGwsdC5jb25jYXQoZSkpfSks ZXx8ZGVsZXRlIG4ubWFya2VyLGUmJmRlbGV0ZSBuLmdyb3VwSWQsZT8oIkxp bmVQbG90Ij09PW4uZ2VvbWV0cnk/KG4udHlwZT0ic2NhdHRlciIsITA9PT1u LmRvdFZpc2libGU/KGRlbGV0ZSBuLmRvdFZpc2libGUsbi5tb2RlPSJsaW5l cyttYXJrZXJzIik6bi5tb2RlPSJsaW5lcyIpOiJEb3RQbG90Ij09PW4uZ2Vv bWV0cnk/KG4udHlwZT0ic2NhdHRlciIsbi5tb2RlPSJtYXJrZXJzIik6IkFy ZWFDaGFydCI9PT1uLmdlb21ldHJ5P24udHlwZT0iYXJlYSI6IkJhckNoYXJ0 Ij09PW4uZ2VvbWV0cnkmJihuLnR5cGU9ImJhciIpLGRlbGV0ZSBuLmdlb21l dHJ5KTooInNjYXR0ZXIiPT09bi50eXBlPyJsaW5lcyI9PT1uLm1vZGU/bi5n ZW9tZXRyeT0iTGluZVBsb3QiOiJtYXJrZXJzIj09PW4ubW9kZT9uLmdlb21l dHJ5PSJEb3RQbG90IjoibGluZXMrbWFya2VycyI9PT1uLm1vZGUmJihuLmdl b21ldHJ5PSJMaW5lUGxvdCIsbi5kb3RWaXNpYmxlPSEwKToiYXJlYSI9PT1u LnR5cGU/bi5nZW9tZXRyeT0iQXJlYUNoYXJ0IjoiYmFyIj09PW4udHlwZSYm KG4uZ2VvbWV0cnk9IkJhckNoYXJ0IiksZGVsZXRlIG4ubW9kZSxkZWxldGUg bi50eXBlKSxufSksIWUmJnQubGF5b3V0JiYic3RhY2siPT09dC5sYXlvdXQu YmFybW9kZSkpe3ZhciBpPW8udXRpbC5kdXBsaWNhdGVzKHIuZGF0YS5tYXAo ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5nZW9tZXRyeX0pKTtyLmRhdGEuZm9y RWFjaChmdW5jdGlvbih0LGUpe3ZhciBuPWkuaW5kZXhPZih0Lmdlb21ldHJ5 KTstMSE9biYmKHIuZGF0YVtlXS5ncm91cElkPW4pfSl9aWYodC5sYXlvdXQp e3ZhciBzPWEoe30sdC5sYXlvdXQpO2lmKFtbcyxbInBsb3RfYmdjb2xvciJd LFsiYmFja2dyb3VuZENvbG9yIl1dLFtzLFsic2hvd2xlZ2VuZCJdLFsic2hv d0xlZ2VuZCJdXSxbcyxbInJhZGlhbGF4aXMiXSxbInJhZGlhbEF4aXMiXV0s W3MsWyJhbmd1bGFyYXhpcyJdLFsiYW5ndWxhckF4aXMiXV0sW3MuYW5ndWxh cmF4aXMsWyJzaG93bGluZSJdLFsiZ3JpZExpbmVzVmlzaWJsZSJdXSxbcy5h bmd1bGFyYXhpcyxbInNob3d0aWNrbGFiZWxzIl0sWyJsYWJlbHNWaXNpYmxl Il1dLFtzLmFuZ3VsYXJheGlzLFsibnRpY2tzIl0sWyJ0aWNrc0NvdW50Il1d LFtzLmFuZ3VsYXJheGlzLFsidGlja29yaWVudGF0aW9uIl0sWyJ0aWNrT3Jp ZW50YXRpb24iXV0sW3MuYW5ndWxhcmF4aXMsWyJ0aWNrc3VmZml4Il0sWyJ0 aWNrc1N1ZmZpeCJdXSxbcy5hbmd1bGFyYXhpcyxbInJhbmdlIl0sWyJkb21h aW4iXV0sW3MuYW5ndWxhcmF4aXMsWyJlbmRwYWRkaW5nIl0sWyJlbmRQYWRk aW5nIl1dLFtzLnJhZGlhbGF4aXMsWyJzaG93bGluZSJdLFsiZ3JpZExpbmVz VmlzaWJsZSJdXSxbcy5yYWRpYWxheGlzLFsidGlja29yaWVudGF0aW9uIl0s WyJ0aWNrT3JpZW50YXRpb24iXV0sW3MucmFkaWFsYXhpcyxbInRpY2tzdWZm aXgiXSxbInRpY2tzU3VmZml4Il1dLFtzLnJhZGlhbGF4aXMsWyJyYW5nZSJd LFsiZG9tYWluIl1dLFtzLmFuZ3VsYXJBeGlzLFsic2hvd2xpbmUiXSxbImdy aWRMaW5lc1Zpc2libGUiXV0sW3MuYW5ndWxhckF4aXMsWyJzaG93dGlja2xh YmVscyJdLFsibGFiZWxzVmlzaWJsZSJdXSxbcy5hbmd1bGFyQXhpcyxbIm50 aWNrcyJdLFsidGlja3NDb3VudCJdXSxbcy5hbmd1bGFyQXhpcyxbInRpY2tv cmllbnRhdGlvbiJdLFsidGlja09yaWVudGF0aW9uIl1dLFtzLmFuZ3VsYXJB eGlzLFsidGlja3N1ZmZpeCJdLFsidGlja3NTdWZmaXgiXV0sW3MuYW5ndWxh ckF4aXMsWyJyYW5nZSJdLFsiZG9tYWluIl1dLFtzLmFuZ3VsYXJBeGlzLFsi ZW5kcGFkZGluZyJdLFsiZW5kUGFkZGluZyJdXSxbcy5yYWRpYWxBeGlzLFsi c2hvd2xpbmUiXSxbImdyaWRMaW5lc1Zpc2libGUiXV0sW3MucmFkaWFsQXhp cyxbInRpY2tvcmllbnRhdGlvbiJdLFsidGlja09yaWVudGF0aW9uIl1dLFtz LnJhZGlhbEF4aXMsWyJ0aWNrc3VmZml4Il0sWyJ0aWNrc1N1ZmZpeCJdXSxb cy5yYWRpYWxBeGlzLFsicmFuZ2UiXSxbImRvbWFpbiJdXSxbcy5mb250LFsi b3V0bGluZWNvbG9yIl0sWyJvdXRsaW5lQ29sb3IiXV0sW3MubGVnZW5kLFsi dHJhY2VvcmRlciJdLFsicmV2ZXJzZU9yZGVyIl1dLFtzLFsibGFiZWxvZmZz ZXQiXSxbImxhYmVsT2Zmc2V0Il1dLFtzLFsiZGVmYXVsdGNvbG9ycmFuZ2Ui XSxbImRlZmF1bHRDb2xvclJhbmdlIl1dXS5mb3JFYWNoKGZ1bmN0aW9uKHQs cil7by51dGlsLnRyYW5zbGF0b3IuYXBwbHkobnVsbCx0LmNvbmNhdChlKSl9 KSxlPygidW5kZWZpbmVkIiE9dHlwZW9mIHMudGlja0xlbmd0aCYmKHMuYW5n dWxhcmF4aXMudGlja2xlbj1zLnRpY2tMZW5ndGgsZGVsZXRlIHMudGlja0xl bmd0aCkscy50aWNrQ29sb3ImJihzLmFuZ3VsYXJheGlzLnRpY2tjb2xvcj1z LnRpY2tDb2xvcixkZWxldGUgcy50aWNrQ29sb3IpKToocy5hbmd1bGFyQXhp cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBzLmFuZ3VsYXJBeGlzLnRpY2tsZW4m JihzLnRpY2tMZW5ndGg9cy5hbmd1bGFyQXhpcy50aWNrbGVuKSxzLmFuZ3Vs YXJBeGlzJiYidW5kZWZpbmVkIiE9dHlwZW9mIHMuYW5ndWxhckF4aXMudGlj a2NvbG9yJiYocy50aWNrQ29sb3I9cy5hbmd1bGFyQXhpcy50aWNrY29sb3Ip KSxzLmxlZ2VuZCYmImJvb2xlYW4iIT10eXBlb2Ygcy5sZWdlbmQucmV2ZXJz ZU9yZGVyJiYocy5sZWdlbmQucmV2ZXJzZU9yZGVyPSJub3JtYWwiIT1zLmxl Z2VuZC5yZXZlcnNlT3JkZXIpLHMubGVnZW5kJiYiYm9vbGVhbiI9PXR5cGVv ZiBzLmxlZ2VuZC50cmFjZW9yZGVyJiYocy5sZWdlbmQudHJhY2VvcmRlcj1z LmxlZ2VuZC50cmFjZW9yZGVyPyJyZXZlcnNlZCI6Im5vcm1hbCIsZGVsZXRl IHMubGVnZW5kLnJldmVyc2VPcmRlcikscy5tYXJnaW4mJiJ1bmRlZmluZWQi IT10eXBlb2Ygcy5tYXJnaW4udCl7dmFyIGw9WyJ0IiwiciIsImIiLCJsIiwi cGFkIl0sYz1bInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsInBhZCJd LHU9e307bi5lbnRyaWVzKHMubWFyZ2luKS5mb3JFYWNoKGZ1bmN0aW9uKHQs ZSl7dVtjW2wuaW5kZXhPZih0LmtleSldXT10LnZhbHVlfSkscy5tYXJnaW49 dX1lJiYoZGVsZXRlIHMubmVlZHNFbmRTcGFjaW5nLGRlbGV0ZSBzLm1pbm9y VGlja0NvbG9yLGRlbGV0ZSBzLm1pbm9yVGlja3MsZGVsZXRlIHMuYW5ndWxh cmF4aXMudGlja3NDb3VudCxkZWxldGUgcy5hbmd1bGFyYXhpcy50aWNrc0Nv dW50LGRlbGV0ZSBzLmFuZ3VsYXJheGlzLnRpY2tzU3RlcCxkZWxldGUgcy5h bmd1bGFyYXhpcy5yZXdyaXRlVGlja3MsZGVsZXRlIHMuYW5ndWxhcmF4aXMu bnRpY2tzLGRlbGV0ZSBzLnJhZGlhbGF4aXMudGlja3NDb3VudCxkZWxldGUg cy5yYWRpYWxheGlzLnRpY2tzQ291bnQsZGVsZXRlIHMucmFkaWFsYXhpcy50 aWNrc1N0ZXAsZGVsZXRlIHMucmFkaWFsYXhpcy5yZXdyaXRlVGlja3MsZGVs ZXRlIHMucmFkaWFsYXhpcy5udGlja3MpLHIubGF5b3V0PXN9cmV0dXJuIHJ9 fTtyZXR1cm4gdH19LHsiLi4vLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6 Njg2LCIuLi8uLi8uLi9saWIiOjcxNyxkMzoxNjV9XSw4MzY6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4u Ly4uL2xpYiIpLGk9dCgiLi4vLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLG89 dCgiLi9taWNyb3BvbGFyIikscz10KCIuL3VuZG9fbWFuYWdlciIpLGw9YS5l eHRlbmREZWVwQWxsLGM9ZS5leHBvcnRzPXt9O2MuZnJhbWV3b3JrPWZ1bmN0 aW9uKHQpe3ZhciBlLHIsYSxpLHUsaD1uZXcgcztmdW5jdGlvbiBmKHIscyl7 cmV0dXJuIHMmJih1PXMpLG4uc2VsZWN0KG4uc2VsZWN0KHUpLm5vZGUoKS5w YXJlbnROb2RlKS5zZWxlY3RBbGwoIi5zdmctY29udGFpbmVyPio6bm90KC5j aGFydC1yb290KSIpLnJlbW92ZSgpLGU9ZT9sKGUscik6cixhfHwoYT1vLkF4 aXMoKSksaT1vLmFkYXB0ZXIucGxvdGx5KCkuY29udmVydChlKSxhLmNvbmZp ZyhpKS5yZW5kZXIodSksdC5kYXRhPWUuZGF0YSx0LmxheW91dD1lLmxheW91 dCxjLmZpbGxMYXlvdXQodCksZX1yZXR1cm4gZi5pc1BvbGFyPSEwLGYuc3Zn PWZ1bmN0aW9uKCl7cmV0dXJuIGEuc3ZnKCl9LGYuZ2V0Q29uZmlnPWZ1bmN0 aW9uKCl7cmV0dXJuIGV9LGYuZ2V0TGl2ZUNvbmZpZz1mdW5jdGlvbigpe3Jl dHVybiBvLmFkYXB0ZXIucGxvdGx5KCkuY29udmVydChhLmdldExpdmVDb25m aWcoKSwhMCl9LGYuZ2V0TGl2ZVNjYWxlcz1mdW5jdGlvbigpe3JldHVybnt0 OmEuYW5ndWxhclNjYWxlKCkscjphLnJhZGlhbFNjYWxlKCl9fSxmLnNldFVu ZG9Qb2ludD1mdW5jdGlvbigpe3ZhciB0LG4sYT10aGlzLGk9by51dGlsLmNs b25lSnNvbihlKTt0PWksbj1yLGguYWRkKHt1bmRvOmZ1bmN0aW9uKCl7biYm YShuKX0scmVkbzpmdW5jdGlvbigpe2EodCl9fSkscj1vLnV0aWwuY2xvbmVK c29uKGkpfSxmLnVuZG89ZnVuY3Rpb24oKXtoLnVuZG8oKX0sZi5yZWRvPWZ1 bmN0aW9uKCl7aC5yZWRvKCl9LGZ9LGMuZmlsbExheW91dD1mdW5jdGlvbih0 KXt2YXIgZT1uLnNlbGVjdCh0KS5zZWxlY3RBbGwoIi5wbG90LWNvbnRhaW5l ciIpLHI9ZS5zZWxlY3RBbGwoIi5zdmctY29udGFpbmVyIiksYT10LmZyYW1l d29yayYmdC5mcmFtZXdvcmsuc3ZnJiZ0LmZyYW1ld29yay5zdmcoKSxvPXt3 aWR0aDo4MDAsaGVpZ2h0OjYwMCxwYXBlcl9iZ2NvbG9yOmkuYmFja2dyb3Vu ZCxfY29udGFpbmVyOmUsX3BhcGVyZGl2OnIsX3BhcGVyOmF9O3QuX2Z1bGxM YXlvdXQ9bChvLHQubGF5b3V0KX19LHsiLi4vLi4vLi4vY29tcG9uZW50cy9j b2xvciI6NTkyLCIuLi8uLi8uLi9saWIiOjcxNywiLi9taWNyb3BvbGFyIjo4 MzUsIi4vdW5kb19tYW5hZ2VyIjo4MzcsZDM6MTY1fV0sODM3OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigpe3Zh ciB0LGU9W10scj0tMSxuPSExO2Z1bmN0aW9uIGEodCxlKXtyZXR1cm4gdD8o bj0hMCx0W2VdKCksbj0hMSx0aGlzKTp0aGlzfXJldHVybnthZGQ6ZnVuY3Rp b24odCl7cmV0dXJuIG4/dGhpczooZS5zcGxpY2UocisxLGUubGVuZ3RoLXIp LGUucHVzaCh0KSxyPWUubGVuZ3RoLTEsdGhpcyl9LHNldENhbGxiYWNrOmZ1 bmN0aW9uKGUpe3Q9ZX0sdW5kbzpmdW5jdGlvbigpe3ZhciBuPWVbcl07cmV0 dXJuIG4/KGEobiwidW5kbyIpLHItPTEsdCYmdChuLnVuZG8pLHRoaXMpOnRo aXN9LHJlZG86ZnVuY3Rpb24oKXt2YXIgbj1lW3IrMV07cmV0dXJuIG4/KGEo biwicmVkbyIpLHIrPTEsdCYmdChuLnJlZG8pLHRoaXMpOnRoaXN9LGNsZWFy OmZ1bmN0aW9uKCl7ZT1bXSxyPS0xfSxoYXNVbmRvOmZ1bmN0aW9uKCl7cmV0 dXJuLTEhPT1yfSxoYXNSZWRvOmZ1bmN0aW9uKCl7cmV0dXJuIHI8ZS5sZW5n dGgtMX0sZ2V0Q29tbWFuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sZ2V0UHJl dmlvdXNDb21tYW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGVbci0xXX0sZ2V0SW5k ZXg6ZnVuY3Rpb24oKXtyZXR1cm4gcn19fX0se31dLDgzODpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgidGlueWNv bG9yMiIpLGk9dCgiLi4vLi4vcmVnaXN0cnkiKSxvPXQoIi4uLy4uL2xpYiIp LHM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGw9dCgiLi4vLi4vY29t cG9uZW50cy9kcmF3aW5nIiksYz10KCIuLi9wbG90cyIpLHU9dCgiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxoPXQoIi4uL2NhcnRlc2lhbi9zZXRf Y29udmVydCIpLGY9dCgiLi9zZXRfY29udmVydCIpLHA9dCgiLi4vY2FydGVz aWFuL2F1dG9yYW5nZSIpLmRvQXV0b1JhbmdlLGQ9dCgiLi4vY2FydGVzaWFu L2RyYWdib3giKSxnPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQi KSx2PXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxtPXQoIi4uLy4uL2NvbXBv bmVudHMvdGl0bGVzIikseT10KCIuLi9jYXJ0ZXNpYW4vc2VsZWN0IikucHJl cFNlbGVjdCx4PXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5zZWxlY3RPbkNs aWNrLGI9dCgiLi4vY2FydGVzaWFuL3NlbGVjdCIpLmNsZWFyU2VsZWN0LF89 dCgiLi4vLi4vbGliL3NldGN1cnNvciIpLHc9dCgiLi4vLi4vbGliL2NsZWFy X2dsX2NhbnZhc2VzIiksaz10KCIuLi8uLi9wbG90X2FwaS9zdWJyb3V0aW5l cyIpLnJlZHJhd1JlZ2xUcmFjZXMsVD10KCIuLi8uLi9jb25zdGFudHMvYWxp Z25tZW50IikuTUlEX1NISUZULE09dCgiLi9jb25zdGFudHMiKSxBPXQoIi4v aGVscGVycyIpLFM9by5fLEU9by5tb2QsTD1vLmRlZzJyYWQsQz1vLnJhZDJk ZWc7ZnVuY3Rpb24gUCh0LGUpe3RoaXMuaWQ9ZSx0aGlzLmdkPXQsdGhpcy5f aGFzQ2xpcE9uQXhpc0ZhbHNlPW51bGwsdGhpcy52YW5nbGVzPW51bGwsdGhp cy5yYWRpYWxBeGlzQW5nbGU9bnVsbCx0aGlzLnRyYWNlSGFzaD17fSx0aGlz LmxheWVycz17fSx0aGlzLmNsaXBQYXRocz17fSx0aGlzLmNsaXBJZHM9e30s dGhpcy52aWV3SW5pdGlhbD17fTt2YXIgcj10Ll9mdWxsTGF5b3V0LG49ImNs aXAiK3IuX3VpZCtlO3RoaXMuY2xpcElkcy5mb3JUcmFjZXM9bisiLWZvci10 cmFjZXMiLHRoaXMuY2xpcFBhdGhzLmZvclRyYWNlcz1yLl9jbGlwcy5hcHBl bmQoImNsaXBQYXRoIikuYXR0cigiaWQiLHRoaXMuY2xpcElkcy5mb3JUcmFj ZXMpLHRoaXMuY2xpcFBhdGhzLmZvclRyYWNlcy5hcHBlbmQoInBhdGgiKSx0 aGlzLmZyYW1ld29yaz1yLl9wb2xhcmxheWVyLmFwcGVuZCgiZyIpLmF0dHIo ImNsYXNzIixlKSx0aGlzLnJhZGlhbFRpY2tMYXlvdXQ9bnVsbCx0aGlzLmFu Z3VsYXJUaWNrTGF5b3V0PW51bGx9dmFyIE89UC5wcm90b3R5cGU7ZnVuY3Rp b24geih0KXt2YXIgZT10LnRpY2tzK1N0cmluZyh0LnRpY2tsZW4pK1N0cmlu Zyh0LnNob3d0aWNrbGFiZWxzKTtyZXR1cm4ic2lkZSJpbiB0JiYoZSs9dC5z aWRlKSxlfWZ1bmN0aW9uIEkodCxlKXtyZXR1cm4gZVtvLmZpbmRJbmRleE9m TWluKGUsZnVuY3Rpb24oZSl7cmV0dXJuIG8uYW5nbGVEaXN0KHQsZSl9KV19 ZnVuY3Rpb24gRCh0LGUscil7cmV0dXJuIGU/KHQuYXR0cigiZGlzcGxheSIs bnVsbCksdC5hdHRyKHIpKTp0JiZ0LmF0dHIoImRpc3BsYXkiLCJub25lIiks dH1mdW5jdGlvbiBSKHQsZSl7cmV0dXJuInRyYW5zbGF0ZSgiK3QrIiwiK2Ur IikifWZ1bmN0aW9uIEYodCl7cmV0dXJuInJvdGF0ZSgiK3QrIikifWUuZXhw b3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgUCh0LGUpfSxPLnBsb3Q9 ZnVuY3Rpb24odCxlKXt2YXIgcj1lW3RoaXMuaWRdO3RoaXMuX2hhc0NsaXBP bkF4aXNGYWxzZT0hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7aWYo ITE9PT10W25dWzBdLnRyYWNlLmNsaXBvbmF4aXMpe3RoaXMuX2hhc0NsaXBP bkF4aXNGYWxzZT0hMDticmVha319dGhpcy51cGRhdGVMYXllcnMoZSxyKSx0 aGlzLnVwZGF0ZUxheW91dChlLHIpLGMuZ2VuZXJhbFVwZGF0ZVBlclRyYWNl TW9kdWxlKHRoaXMuZ2QsdGhpcyx0LHIpLHRoaXMudXBkYXRlRngoZSxyKX0s Ty51cGRhdGVMYXllcnM9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxheWVy cyxhPWUucmFkaWFsYXhpcyxpPWUuYW5ndWxhcmF4aXMsbz1NLmxheWVyTmFt ZXMscz1vLmluZGV4T2YoImZyb250cGxvdCIpLGw9by5zbGljZSgwLHMpLGM9 ImJlbG93IHRyYWNlcyI9PT1pLmxheWVyLHU9ImJlbG93IHRyYWNlcyI9PT1h LmxheWVyO2MmJmwucHVzaCgiYW5ndWxhci1saW5lIiksdSYmbC5wdXNoKCJy YWRpYWwtbGluZSIpLGMmJmwucHVzaCgiYW5ndWxhci1heGlzIiksdSYmbC5w dXNoKCJyYWRpYWwtYXhpcyIpLGwucHVzaCgiZnJvbnRwbG90IiksY3x8bC5w dXNoKCJhbmd1bGFyLWxpbmUiKSx1fHxsLnB1c2goInJhZGlhbC1saW5lIiks Y3x8bC5wdXNoKCJhbmd1bGFyLWF4aXMiKSx1fHxsLnB1c2goInJhZGlhbC1h eGlzIik7dmFyIGg9dGhpcy5mcmFtZXdvcmsuc2VsZWN0QWxsKCIucG9sYXJz dWJsYXllciIpLmRhdGEobCxTdHJpbmcpO2guZW50ZXIoKS5hcHBlbmQoImci KS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuInBvbGFyc3VibGF5 ZXIgIit0fSkuZWFjaChmdW5jdGlvbih0KXt2YXIgZT1yW3RdPW4uc2VsZWN0 KHRoaXMpO3N3aXRjaCh0KXtjYXNlImZyb250cGxvdCI6ZS5hcHBlbmQoImci KS5jbGFzc2VkKCJiYXJsYXllciIsITApLGUuYXBwZW5kKCJnIikuY2xhc3Nl ZCgic2NhdHRlcmxheWVyIiwhMCk7YnJlYWs7Y2FzZSJiYWNrcGxvdCI6ZS5h cHBlbmQoImciKS5jbGFzc2VkKCJtYXBsYXllciIsITApO2JyZWFrO2Nhc2Ui cGxvdGJnIjpyLmJnPWUuYXBwZW5kKCJwYXRoIik7YnJlYWs7Y2FzZSJyYWRp YWwtZ3JpZCI6Y2FzZSJhbmd1bGFyLWdyaWQiOmUuc3R5bGUoImZpbGwiLCJu b25lIik7YnJlYWs7Y2FzZSJyYWRpYWwtbGluZSI6ZS5hcHBlbmQoImxpbmUi KS5zdHlsZSgiZmlsbCIsIm5vbmUiKTticmVhaztjYXNlImFuZ3VsYXItbGlu ZSI6ZS5hcHBlbmQoInBhdGgiKS5zdHlsZSgiZmlsbCIsIm5vbmUiKX19KSxo Lm9yZGVyKCl9LE8udXBkYXRlTGF5b3V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9 dGhpcy5sYXllcnMsbj10Ll9zaXplLGE9ZS5yYWRpYWxheGlzLGk9ZS5hbmd1 bGFyYXhpcyxvPWUuZG9tYWluLngsYz1lLmRvbWFpbi55O3RoaXMueE9mZnNl dD1uLmwrbi53Km9bMF0sdGhpcy55T2Zmc2V0PW4udCtuLmgqKDEtY1sxXSk7 dmFyIHU9dGhpcy54TGVuZ3RoPW4udyoob1sxXS1vWzBdKSxoPXRoaXMueUxl bmd0aD1uLmgqKGNbMV0tY1swXSksZj1lLnNlY3Rvcjt0aGlzLnNlY3Rvcklu UmFkPWYubWFwKEwpO3ZhciBwLGQsZyx2LG0seT10aGlzLnNlY3RvckJCb3g9 ZnVuY3Rpb24odCl7dmFyIGUscixuLGEsaT10WzBdLG89dFsxXS1pLHM9RShp LDM2MCksbD1zK28sYz1NYXRoLmNvcyhMKHMpKSx1PU1hdGguc2luKEwocykp LGg9TWF0aC5jb3MoTChsKSksZj1NYXRoLnNpbihMKGwpKTthPXM8PTkwJiZs Pj05MHx8cz45MCYmbD49NDUwPzE6dTw9MCYmZjw9MD8wOk1hdGgubWF4KHUs Zik7ZT1zPD0xODAmJmw+PTE4MHx8cz4xODAmJmw+PTU0MD8tMTpjPj0wJiZo Pj0wPzA6TWF0aC5taW4oYyxoKTtyPXM8PTI3MCYmbD49MjcwfHxzPjI3MCYm bD49NjMwPy0xOnU+PTAmJmY+PTA/MDpNYXRoLm1pbih1LGYpO249bD49MzYw PzE6Yzw9MCYmaDw9MD8wOk1hdGgubWF4KGMsaCk7cmV0dXJuW2UscixuLGFd fShmKSx4PXlbMl0teVswXSxiPXlbM10teVsxXSxfPWgvdSx3PU1hdGguYWJz KGIveCk7Xz53PyhwPXUsbT0oaC0oZD11KncpKS9uLmgvMixnPVtvWzBdLG9b MV1dLHY9W2NbMF0rbSxjWzFdLW1dKTooZD1oLG09KHUtKHA9aC93KSkvbi53 LzIsZz1bb1swXSttLG9bMV0tbV0sdj1bY1swXSxjWzFdXSksdGhpcy54TGVu Z3RoMj1wLHRoaXMueUxlbmd0aDI9ZCx0aGlzLnhEb21haW4yPWcsdGhpcy55 RG9tYWluMj12O3ZhciBrPXRoaXMueE9mZnNldDI9bi5sK24udypnWzBdLFQ9 dGhpcy55T2Zmc2V0Mj1uLnQrbi5oKigxLXZbMV0pLE09dGhpcy5yYWRpdXM9 cC94LEE9dGhpcy5pbm5lclJhZGl1cz1lLmhvbGUqTSxTPXRoaXMuY3g9ay1N KnlbMF0sQz10aGlzLmN5PVQrTSp5WzNdLFA9dGhpcy5jeHg9Uy1rLE89dGhp cy5jeXk9Qy1UO3RoaXMucmFkaWFsQXhpcz10aGlzLm1vY2tBeGlzKHQsZSxh LHtfaWQ6IngiLHNpZGU6e2NvdW50ZXJjbG9ja3dpc2U6InRvcCIsY2xvY2t3 aXNlOiJib3R0b20ifVthLnNpZGVdLGRvbWFpbjpbQS9uLncsTS9uLnddfSks dGhpcy5hbmd1bGFyQXhpcz10aGlzLm1vY2tBeGlzKHQsZSxpLHtzaWRlOiJy aWdodCIsZG9tYWluOlswLE1hdGguUEldLGF1dG9yYW5nZTohMX0pLHRoaXMu ZG9BdXRvUmFuZ2UodCxlKSx0aGlzLnVwZGF0ZUFuZ3VsYXJBeGlzKHQsZSks dGhpcy51cGRhdGVSYWRpYWxBeGlzKHQsZSksdGhpcy51cGRhdGVSYWRpYWxB eGlzVGl0bGUodCxlKSx0aGlzLnhheGlzPXRoaXMubW9ja0NhcnRlc2lhbkF4 aXModCxlLHtfaWQ6IngiLGRvbWFpbjpnfSksdGhpcy55YXhpcz10aGlzLm1v Y2tDYXJ0ZXNpYW5BeGlzKHQsZSx7X2lkOiJ5Iixkb21haW46dn0pO3ZhciB6 PXRoaXMucGF0aFN1YnBsb3QoKTt0aGlzLmNsaXBQYXRocy5mb3JUcmFjZXMu c2VsZWN0KCJwYXRoIikuYXR0cigiZCIseikuYXR0cigidHJhbnNmb3JtIixS KFAsTykpLHIuZnJvbnRwbG90LmF0dHIoInRyYW5zZm9ybSIsUihrLFQpKS5j YWxsKGwuc2V0Q2xpcFVybCx0aGlzLl9oYXNDbGlwT25BeGlzRmFsc2U/bnVs bDp0aGlzLmNsaXBJZHMuZm9yVHJhY2VzLHRoaXMuZ2QpLHIuYmcuYXR0cigi ZCIseikuYXR0cigidHJhbnNmb3JtIixSKFMsQykpLmNhbGwocy5maWxsLGUu Ymdjb2xvcil9LE8ubW9ja0F4aXM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9 by5leHRlbmRGbGF0KHt9LHIsbik7cmV0dXJuIGYoYSxlLHQpLGF9LE8ubW9j a0NhcnRlc2lhbkF4aXM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMsYT1y Ll9pZCxpPW8uZXh0ZW5kRmxhdCh7dHlwZToibGluZWFyIn0scik7aChpLHQp O3ZhciBzPXt4OlswLDJdLHk6WzEsM119O3JldHVybiBpLnNldFJhbmdlPWZ1 bmN0aW9uKCl7dmFyIHQ9bi5zZWN0b3JCQm94LHI9c1thXSxvPW4ucmFkaWFs QXhpcy5fcmwsbD0ob1sxXS1vWzBdKS8oMS1lLmhvbGUpO2kucmFuZ2U9W3Rb clswXV0qbCx0W3JbMV1dKmxdfSxpLmlzUHRXaXRoaW5SYW5nZT0ieCI9PT1h P2Z1bmN0aW9uKHQpe3JldHVybiBuLmlzUHRJbnNpZGUodCl9OmZ1bmN0aW9u KCl7cmV0dXJuITB9LGkuc2V0UmFuZ2UoKSxpLnNldFNjYWxlKCksaX0sTy5k b0F1dG9SYW5nZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuZ2Qsbj10aGlz LnJhZGlhbEF4aXMsYT1lLnJhZGlhbGF4aXM7bi5zZXRTY2FsZSgpLHAocixu KTt2YXIgaT1uLnJhbmdlO2EucmFuZ2U9aS5zbGljZSgpLGEuX2lucHV0LnJh bmdlPWkuc2xpY2UoKSxuLl9ybD1bbi5yMmwoaVswXSxudWxsLCJncmVnb3Jp YW4iKSxuLnIybChpWzFdLG51bGwsImdyZWdvcmlhbiIpXX0sTy51cGRhdGVS YWRpYWxBeGlzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPXIuZ2QsYT1y LmxheWVycyxpPXIucmFkaXVzLGw9ci5pbm5lclJhZGl1cyxjPXIuY3gsaD1y LmN5LGY9ZS5yYWRpYWxheGlzLHA9RShlLnNlY3RvclswXSwzNjApLGQ9ci5y YWRpYWxBeGlzLGc9bDxpO3IuZmlsbFZpZXdJbml0aWFsS2V5KCJyYWRpYWxh eGlzLmFuZ2xlIixmLmFuZ2xlKSxyLmZpbGxWaWV3SW5pdGlhbEtleSgicmFk aWFsYXhpcy5yYW5nZSIsZC5yYW5nZS5zbGljZSgpKSxkLnNldEdlb21ldHJ5 KCksImF1dG8iPT09ZC50aWNrYW5nbGUmJnA+OTAmJnA8PTI3MCYmKGQudGlj a2FuZ2xlPTE4MCk7dmFyIHY9ZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0 ZSgiKyhkLmwycCh0LngpK2wpKyIsMCkifSxtPXooZik7aWYoci5yYWRpYWxU aWNrTGF5b3V0IT09bSYmKGFbInJhZGlhbC1heGlzIl0uc2VsZWN0QWxsKCIu eHRpY2siKS5yZW1vdmUoKSxyLnJhZGlhbFRpY2tMYXlvdXQ9bSksZyl7ZC5z ZXRTY2FsZSgpO3ZhciB5PXUuY2FsY1RpY2tzKGQpLHg9dS5jbGlwRW5kcyhk LHkpLGI9dS5nZXRUaWNrU2lnbnMoZClbMl07dS5kcmF3VGlja3MobixkLHt2 YWxzOnksbGF5ZXI6YVsicmFkaWFsLWF4aXMiXSxwYXRoOnUubWFrZVRpY2tQ YXRoKGQsMCxiKSx0cmFuc0ZuOnYsY3Jpc3A6ITF9KSx1LmRyYXdHcmlkKG4s ZCx7dmFsczp4LGxheWVyOmFbInJhZGlhbC1ncmlkIl0scGF0aDpmdW5jdGlv bih0KXtyZXR1cm4gci5wYXRoQXJjKGQucjJwKHQueCkrbCl9LHRyYW5zRm46 by5ub29wLGNyaXNwOiExfSksdS5kcmF3TGFiZWxzKG4sZCx7dmFsczp5LGxh eWVyOmFbInJhZGlhbC1heGlzIl0sdHJhbnNGbjp2LGxhYmVsRm5zOnUubWFr ZUxhYmVsRm5zKGQsMCl9KX12YXIgXz1yLnJhZGlhbEF4aXNBbmdsZT1yLnZh bmdsZXM/QyhJKEwoZi5hbmdsZSksci52YW5nbGVzKSk6Zi5hbmdsZSx3PVIo YyxoKSxrPXcrRigtXyk7RChhWyJyYWRpYWwtYXhpcyJdLGcmJihmLnNob3d0 aWNrbGFiZWxzfHxmLnRpY2tzKSx7dHJhbnNmb3JtOmt9KSxEKGFbInJhZGlh bC1ncmlkIl0sZyYmZi5zaG93Z3JpZCx7dHJhbnNmb3JtOnd9KSxEKGFbInJh ZGlhbC1saW5lIl0uc2VsZWN0KCJsaW5lIiksZyYmZi5zaG93bGluZSx7eDE6 bCx5MTowLHgyOmkseTI6MCx0cmFuc2Zvcm06a30pLmF0dHIoInN0cm9rZS13 aWR0aCIsZi5saW5ld2lkdGgpLmNhbGwocy5zdHJva2UsZi5saW5lY29sb3Ip fSxPLnVwZGF0ZVJhZGlhbEF4aXNUaXRsZT1mdW5jdGlvbih0LGUscil7dmFy IG49dGhpcy5nZCxhPXRoaXMucmFkaXVzLGk9dGhpcy5jeCxvPXRoaXMuY3ks cz1lLnJhZGlhbGF4aXMsYz10aGlzLmlkKyJ0aXRsZSIsdT12b2lkIDAhPT1y P3I6dGhpcy5yYWRpYWxBeGlzQW5nbGUsaD1MKHUpLGY9TWF0aC5jb3MoaCks cD1NYXRoLnNpbihoKSxkPTA7aWYocy50aXRsZSl7dmFyIGc9bC5iQm94KHRo aXMubGF5ZXJzWyJyYWRpYWwtYXhpcyJdLm5vZGUoKSkuaGVpZ2h0LHY9cy50 aXRsZS5mb250LnNpemU7ZD0iY291bnRlcmNsb2Nrd2lzZSI9PT1zLnNpZGU/ LWctLjQqdjpnKy44KnZ9dGhpcy5sYXllcnNbInJhZGlhbC1heGlzLXRpdGxl Il09bS5kcmF3KG4sYyx7cHJvcENvbnRhaW5lcjpzLHByb3BOYW1lOnRoaXMu aWQrIi5yYWRpYWxheGlzLnRpdGxlIixwbGFjZWhvbGRlcjpTKG4sIkNsaWNr IHRvIGVudGVyIHJhZGlhbCBheGlzIHRpdGxlIiksYXR0cmlidXRlczp7eDpp K2EvMipmK2QqcCx5Om8tYS8yKnArZCpmLCJ0ZXh0LWFuY2hvciI6Im1pZGRs ZSJ9LHRyYW5zZm9ybTp7cm90YXRlOi11fX0pfSxPLnVwZGF0ZUFuZ3VsYXJB eGlzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPXIuZ2QsYT1yLmxheWVy cyxpPXIucmFkaXVzLGw9ci5pbm5lclJhZGl1cyxjPXIuY3gsaD1yLmN5LGY9 ZS5hbmd1bGFyYXhpcyxwPXIuYW5ndWxhckF4aXM7ci5maWxsVmlld0luaXRp YWxLZXkoImFuZ3VsYXJheGlzLnJvdGF0aW9uIixmLnJvdGF0aW9uKSxwLnNl dEdlb21ldHJ5KCkscC5zZXRTY2FsZSgpO3ZhciBkPWZ1bmN0aW9uKHQpe3Jl dHVybiBwLnQyZyh0LngpfTsibGluZWFyIj09PXAudHlwZSYmInJhZGlhbnMi PT09cC50aGV0YXVuaXQmJihwLnRpY2swPUMocC50aWNrMCkscC5kdGljaz1D KHAuZHRpY2spKTt2YXIgZz1mdW5jdGlvbih0KXtyZXR1cm4gUihjK2kqTWF0 aC5jb3ModCksaC1pKk1hdGguc2luKHQpKX0sdj11Lm1ha2VMYWJlbEZucyhw LDApLmxhYmVsU3RhbmRvZmYsbT17eEZuOmZ1bmN0aW9uKHQpe3ZhciBlPWQo dCk7cmV0dXJuIE1hdGguY29zKGUpKnZ9LHlGbjpmdW5jdGlvbih0KXt2YXIg ZT1kKHQpLHI9TWF0aC5zaW4oZSk+MD8uMjoxO3JldHVybi1NYXRoLnNpbihl KSoodit0LmZvbnRTaXplKnIpK01hdGguYWJzKE1hdGguY29zKGUpKSoodC5m b250U2l6ZSpUKX0sYW5jaG9yRm46ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KSxy PU1hdGguY29zKGUpO3JldHVybiBNYXRoLmFicyhyKTwuMT8ibWlkZGxlIjpy PjA/InN0YXJ0IjoiZW5kIn0saGVpZ2h0Rm46ZnVuY3Rpb24odCxlLHIpe3Zh ciBuPWQodCk7cmV0dXJuLS41KigxK01hdGguc2luKG4pKSpyfX0seT16KGYp O3IuYW5ndWxhclRpY2tMYXlvdXQhPT15JiYoYVsiYW5ndWxhci1heGlzIl0u c2VsZWN0QWxsKCIuIitwLl9pZCsidGljayIpLnJlbW92ZSgpLHIuYW5ndWxh clRpY2tMYXlvdXQ9eSk7dmFyIHgsYj11LmNhbGNUaWNrcyhwKTtpZigibGlu ZWFyIj09PWUuZ3JpZHNoYXBlPyh4PWIubWFwKGQpLG8uYW5nbGVEZWx0YSh4 WzBdLHhbMV0pPDAmJih4PXguc2xpY2UoKS5yZXZlcnNlKCkpKTp4PW51bGws ci52YW5nbGVzPXgsImNhdGVnb3J5Ij09PXAudHlwZSYmKGI9Yi5maWx0ZXIo ZnVuY3Rpb24odCl7cmV0dXJuIG8uaXNBbmdsZUluc2lkZVNlY3RvcihkKHQp LHIuc2VjdG9ySW5SYWQpfSkpLHAudmlzaWJsZSl7dmFyIF89Imluc2lkZSI9 PT1wLnRpY2tzPy0xOjEsdz0ocC5saW5ld2lkdGh8fDEpLzI7dS5kcmF3VGlj a3MobixwLHt2YWxzOmIsbGF5ZXI6YVsiYW5ndWxhci1heGlzIl0scGF0aDoi TSIrXyp3KyIsMGgiK18qcC50aWNrbGVuLHRyYW5zRm46ZnVuY3Rpb24odCl7 dmFyIGU9ZCh0KTtyZXR1cm4gZyhlKStGKC1DKGUpKX0sY3Jpc3A6ITF9KSx1 LmRyYXdHcmlkKG4scCx7dmFsczpiLGxheWVyOmFbImFuZ3VsYXItZ3JpZCJd LHBhdGg6ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KSxyPU1hdGguY29zKGUpLG49 TWF0aC5zaW4oZSk7cmV0dXJuIk0iK1tjK2wqcixoLWwqbl0rIkwiK1tjK2kq cixoLWkqbl19LHRyYW5zRm46by5ub29wLGNyaXNwOiExfSksdS5kcmF3TGFi ZWxzKG4scCx7dmFsczpiLGxheWVyOmFbImFuZ3VsYXItYXhpcyJdLHJlcG9z aXRpb25PblVwZGF0ZTohMCx0cmFuc0ZuOmZ1bmN0aW9uKHQpe3JldHVybiBn KGQodCkpfSxsYWJlbEZuczptfSl9RChhWyJhbmd1bGFyLWxpbmUiXS5zZWxl Y3QoInBhdGgiKSxmLnNob3dsaW5lLHtkOnIucGF0aFN1YnBsb3QoKSx0cmFu c2Zvcm06UihjLGgpfSkuYXR0cigic3Ryb2tlLXdpZHRoIixmLmxpbmV3aWR0 aCkuY2FsbChzLnN0cm9rZSxmLmxpbmVjb2xvcil9LE8udXBkYXRlRng9ZnVu Y3Rpb24odCxlKXt0aGlzLmdkLl9jb250ZXh0LnN0YXRpY1Bsb3R8fCh0aGlz LnVwZGF0ZUFuZ3VsYXJEcmFnKHQpLHRoaXMudXBkYXRlUmFkaWFsRHJhZyh0 LGUsMCksdGhpcy51cGRhdGVSYWRpYWxEcmFnKHQsZSwxKSx0aGlzLnVwZGF0 ZU1haW5EcmFnKHQpKX0sTy51cGRhdGVNYWluRHJhZz1mdW5jdGlvbih0KXt2 YXIgZT10aGlzLHI9ZS5nZCxvPWUubGF5ZXJzLHM9dC5fem9vbWxheWVyLGw9 TS5NSU5aT09NLGM9TS5PRkZFREdFLHU9ZS5yYWRpdXMsaD1lLmlubmVyUmFk aXVzLGY9ZS5jeCxwPWUuY3ksbT1lLmN4eCxfPWUuY3l5LHc9ZS5zZWN0b3JJ blJhZCxrPWUudmFuZ2xlcyxUPWUucmFkaWFsQXhpcyxTPUEuY2xhbXBUaW55 LEU9QS5maW5kWFlhdExlbmd0aCxMPUEuZmluZEVuY2xvc2luZ1ZlcnRleEFu Z2xlcyxDPU0uY29ybmVySGFsZldpZHRoLFA9TS5jb3JuZXJMZW4vMixPPWQu bWFrZURyYWdnZXIobywicGF0aCIsIm1haW5kcmFnIiwiY3Jvc3NoYWlyIik7 bi5zZWxlY3QoTykuYXR0cigiZCIsZS5wYXRoU3VicGxvdCgpKS5hdHRyKCJ0 cmFuc2Zvcm0iLFIoZixwKSk7dmFyIHosSSxELEYsQixOLGosVixVLHE9e2Vs ZW1lbnQ6TyxnZDpyLHN1YnBsb3Q6ZS5pZCxwbG90aW5mbzp7aWQ6ZS5pZCx4 YXhpczplLnhheGlzLHlheGlzOmUueWF4aXN9LHhheGVzOltlLnhheGlzXSx5 YXhlczpbZS55YXhpc119O2Z1bmN0aW9uIEgodCxlKXtyZXR1cm4gTWF0aC5z cXJ0KHQqdCtlKmUpfWZ1bmN0aW9uIEcodCxlKXtyZXR1cm4gSCh0LW0sZS1f KX1mdW5jdGlvbiBZKHQsZSl7cmV0dXJuIE1hdGguYXRhbjIoXy1lLHQtbSl9 ZnVuY3Rpb24gVyh0LGUpe3JldHVyblt0Kk1hdGguY29zKGUpLHQqTWF0aC5z aW4oLWUpXX1mdW5jdGlvbiBYKHQscil7aWYoMD09PXQpcmV0dXJuIGUucGF0 aFNlY3RvcigyKkMpO3ZhciBuPVAvdCxhPXItbixpPXIrbixvPU1hdGgubWF4 KDAsTWF0aC5taW4odCx1KSkscz1vLUMsbD1vK0M7cmV0dXJuIk0iK1cocyxh KSsiQSIrW3Msc10rIiAwLDAsMCAiK1cocyxpKSsiTCIrVyhsLGkpKyJBIitb bCxsXSsiIDAsMCwxICIrVyhsLGEpKyJaIn1mdW5jdGlvbiBaKHQscixuKXtp ZigwPT09dClyZXR1cm4gZS5wYXRoU2VjdG9yKDIqQyk7dmFyIGEsaSxvPVco dCxyKSxzPVcodCxuKSxsPVMoKG9bMF0rc1swXSkvMiksYz1TKChvWzFdK3Nb MV0pLzIpO2lmKGwmJmMpe3ZhciB1PWMvbCxoPS0xL3UsZj1FKEMsdSxsLGMp O2E9RShQLGgsZlswXVswXSxmWzBdWzFdKSxpPUUoUCxoLGZbMV1bMF0sZlsx XVsxXSl9ZWxzZXt2YXIgcCxkO2M/KHA9UCxkPUMpOihwPUMsZD1QKSxhPVtb bC1wLGMtZF0sW2wrcCxjLWRdXSxpPVtbbC1wLGMrZF0sW2wrcCxjK2RdXX1y ZXR1cm4iTSIrYS5qb2luKCJMIikrIkwiK2kucmV2ZXJzZSgpLmpvaW4oIkwi KSsiWiJ9ZnVuY3Rpb24gSih0LGUpe3JldHVybiBlPU1hdGgubWF4KE1hdGgu bWluKGUsdSksaCksdDxjP3Q9MDp1LXQ8Yz90PXU6ZTxjP2U9MDp1LWU8YyYm KGU9dSksTWF0aC5hYnMoZS10KT5sPyh0PGU/KEQ9dCxGPWUpOihEPWUsRj10 KSwhMCk6KEQ9bnVsbCxGPW51bGwsITEpfWZ1bmN0aW9uIEsodCxlKXt0PXR8 fEIsZT1lfHwiTTAsMFoiLFYuYXR0cigiZCIsdCksVS5hdHRyKCJkIixlKSxk LnRyYW5zaXRpb25ab29tYm94KFYsVSxOLGopLE49ITA7dmFyIG49e307cnQo biksci5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLG4pfWZ1bmN0aW9uIFEo dCxyKXt2YXIgbixhLGk9eit0LG89SStyLHM9Ryh6LEkpLGw9TWF0aC5taW4o RyhpLG8pLHUpLGM9WSh6LEkpO0oocyxsKSYmKG49QitlLnBhdGhTZWN0b3Io RiksRCYmKG4rPWUucGF0aFNlY3RvcihEKSksYT1YKEQsYykrWChGLGMpKSxL KG4sYSl9ZnVuY3Rpb24gJCh0LGUscixuKXt2YXIgYT1BLmZpbmRJbnRlcnNl Y3Rpb25YWShyLG4scixbdC1tLF8tZV0pO3JldHVybiBIKGFbMF0sYVsxXSl9 ZnVuY3Rpb24gdHQodCxyKXt2YXIgbixhLGk9eit0LG89SStyLHM9WSh6LEkp LGw9WShpLG8pLGM9TChzLGspLGg9TChsLGspO0ooJCh6LEksY1swXSxjWzFd KSxNYXRoLm1pbigkKGksbyxoWzBdLGhbMV0pLHUpKSYmKG49QitlLnBhdGhT ZWN0b3IoRiksRCYmKG4rPWUucGF0aFNlY3RvcihEKSksYT1bWihELGNbMF0s Y1sxXSksWihGLGNbMF0sY1sxXSldLmpvaW4oIiAiKSksSyhuLGEpfWZ1bmN0 aW9uIGV0KCl7aWYoZC5yZW1vdmVab29tYm94KHIpLG51bGwhPT1EJiZudWxs IT09Ril7dmFyIHQ9e307cnQodCksZC5zaG93RG91YmxlQ2xpY2tOb3RpZmll cihyKSxpLmNhbGwoIl9ndWlSZWxheW91dCIscix0KX19ZnVuY3Rpb24gcnQo dCl7dmFyIHI9VC5fcmwsbj0oclsxXS1yWzBdKS8oMS1oL3UpL3UsYT1bclsw XSsoRC1oKSpuLHJbMF0rKEYtaCkqbl07dFtlLmlkKyIucmFkaWFsYXhpcy5y YW5nZSJdPWF9ZnVuY3Rpb24gbnQodCxuKXt2YXIgYT1yLl9mdWxsTGF5b3V0 LmNsaWNrbW9kZTtpZihkLnJlbW92ZVpvb21ib3gociksMj09PXQpe3ZhciBv PXt9O2Zvcih2YXIgcyBpbiBlLnZpZXdJbml0aWFsKW9bZS5pZCsiLiIrc109 ZS52aWV3SW5pdGlhbFtzXTtyLmVtaXQoInBsb3RseV9kb3VibGVjbGljayIs bnVsbCksaS5jYWxsKCJfZ3VpUmVsYXlvdXQiLHIsbyl9YS5pbmRleE9mKCJz ZWxlY3QiKT4tMSYmMT09PXQmJngobixyLFtlLnhheGlzXSxbZS55YXhpc10s ZS5pZCxxKSxhLmluZGV4T2YoImV2ZW50Iik+LTEmJnYuY2xpY2socixuLGUu aWQpfXEucHJlcEZuPWZ1bmN0aW9uKHQsbixpKXt2YXIgbz1yLl9mdWxsTGF5 b3V0LmRyYWdtb2RlLGw9Ty5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih6 PW4tbC5sZWZ0LEk9aS1sLnRvcCxrKXt2YXIgYz1BLmZpbmRQb2x5Z29uT2Zm c2V0KHUsd1swXSx3WzFdLGspO3orPW0rY1swXSxJKz1fK2NbMV19c3dpdGNo KG8pe2Nhc2Uiem9vbSI6cS5tb3ZlRm49az90dDpRLHEuY2xpY2tGbj1udCxx LmRvbmVGbj1ldCxmdW5jdGlvbigpe0Q9bnVsbCxGPW51bGwsQj1lLnBhdGhT dWJwbG90KCksTj0hMTt2YXIgdD1yLl9mdWxsTGF5b3V0W2UuaWRdO2o9YSh0 LmJnY29sb3IpLmdldEx1bWluYW5jZSgpLChWPWQubWFrZVpvb21ib3gocyxq LGYscCxCKSkuYXR0cigiZmlsbC1ydWxlIiwiZXZlbm9kZCIpLFU9ZC5tYWtl Q29ybmVycyhzLGYscCksYihyKX0oKTticmVhaztjYXNlInNlbGVjdCI6Y2Fz ZSJsYXNzbyI6eSh0LG4saSxxLG8pfX0sTy5vbm1vdXNlbW92ZT1mdW5jdGlv bih0KXt2LmhvdmVyKHIsdCxlLmlkKSxyLl9mdWxsTGF5b3V0Ll9sYXN0aG92 ZXI9TyxyLl9mdWxsTGF5b3V0Ll9ob3ZlcnN1YnBsb3Q9ZS5pZH0sTy5vbm1v dXNlb3V0PWZ1bmN0aW9uKHQpe3IuX2RyYWdnaW5nfHxnLnVuaG92ZXIocix0 KX0sZy5pbml0KHEpfSxPLnVwZGF0ZVJhZGlhbERyYWc9ZnVuY3Rpb24odCxl LHIpe3ZhciBhPXRoaXMscz1hLmdkLGw9YS5sYXllcnMsYz1hLnJhZGl1cyx1 PWEuaW5uZXJSYWRpdXMsaD1hLmN4LGY9YS5jeSxwPWEucmFkaWFsQXhpcyx2 PU0ucmFkaWFsRHJhZ0JveFNpemUsbT12LzI7aWYocC52aXNpYmxlKXt2YXIg eSx4LF8sVD1MKGEucmFkaWFsQXhpc0FuZ2xlKSxBPXAuX3JsLFM9QVswXSxF PUFbMV0sUD1BW3JdLE89Ljc1KihBWzFdLUFbMF0pLygxLWUuaG9sZSkvYzty Pyh5PWgrKGMrbSkqTWF0aC5jb3MoVCkseD1mLShjK20pKk1hdGguc2luKFQp LF89InJhZGlhbGRyYWciKTooeT1oKyh1LW0pKk1hdGguY29zKFQpLHg9Zi0o dS1tKSpNYXRoLnNpbihUKSxfPSJyYWRpYWxkcmFnLWlubmVyIik7dmFyIHos QixOLGo9ZC5tYWtlUmVjdERyYWdnZXIobCxfLCJjcm9zc2hhaXIiLC1tLC1t LHYsdiksVj17ZWxlbWVudDpqLGdkOnN9O0Qobi5zZWxlY3QoaikscC52aXNp YmxlJiZ1PGMse3RyYW5zZm9ybTpSKHkseCl9KSxWLnByZXBGbj1mdW5jdGlv bigpe3o9bnVsbCxCPW51bGwsTj1udWxsLFYubW92ZUZuPVUsVi5kb25lRm49 cSxiKHMpfSxWLmNsYW1wRm49ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5z cXJ0KHQqdCtlKmUpPE0uTUlORFJBRyYmKHQ9MCxlPTApLFt0LGVdfSxnLmlu aXQoVil9ZnVuY3Rpb24gVSh0LGUpe2lmKHopeih0LGUpO2Vsc2V7dmFyIG49 W3QsLWVdLGk9W01hdGguY29zKFQpLE1hdGguc2luKFQpXSxsPU1hdGguYWJz KG8uZG90KG4saSkvTWF0aC5zcXJ0KG8uZG90KG4sbikpKTtpc05hTihsKXx8 KHo9bDwuNT9IOkcpfXZhciBjPXt9OyFmdW5jdGlvbih0KXtudWxsIT09Qj90 W2EuaWQrIi5yYWRpYWxheGlzLmFuZ2xlIl09QjpudWxsIT09TiYmKHRbYS5p ZCsiLnJhZGlhbGF4aXMucmFuZ2VbIityKyJdIl09Til9KGMpLHMuZW1pdCgi cGxvdGx5X3JlbGF5b3V0aW5nIixjKX1mdW5jdGlvbiBxKCl7bnVsbCE9PUI/ aS5jYWxsKCJfZ3VpUmVsYXlvdXQiLHMsYS5pZCsiLnJhZGlhbGF4aXMuYW5n bGUiLEIpOm51bGwhPT1OJiZpLmNhbGwoIl9ndWlSZWxheW91dCIscyxhLmlk KyIucmFkaWFsYXhpcy5yYW5nZVsiK3IrIl0iLE4pfWZ1bmN0aW9uIEgodCxl KXtpZigwIT09cil7dmFyIG49eSt0LGk9eCtlO0I9TWF0aC5hdGFuMihmLWks bi1oKSxhLnZhbmdsZXMmJihCPUkoQixhLnZhbmdsZXMpKSxCPUMoQik7dmFy IG89UihoLGYpK0YoLUIpO2xbInJhZGlhbC1heGlzIl0uYXR0cigidHJhbnNm b3JtIixvKSxsWyJyYWRpYWwtbGluZSJdLnNlbGVjdCgibGluZSIpLmF0dHIo InRyYW5zZm9ybSIsbyk7dmFyIHM9YS5nZC5fZnVsbExheW91dCxjPXNbYS5p ZF07YS51cGRhdGVSYWRpYWxBeGlzVGl0bGUocyxjLEIpfX1mdW5jdGlvbiBH KHQsZSl7dmFyIG49by5kb3QoW3QsLWVdLFtNYXRoLmNvcyhUKSxNYXRoLnNp bihUKV0pO2lmKE49UC1PKm4sTz4wPT0ocj9OPlM6TjxFKSl7dmFyIGw9cy5f ZnVsbExheW91dCxjPWxbYS5pZF07cC5yYW5nZVtyXT1OLHAuX3JsW3JdPU4s YS51cGRhdGVSYWRpYWxBeGlzKGwsYyksYS54YXhpcy5zZXRSYW5nZSgpLGEu eGF4aXMuc2V0U2NhbGUoKSxhLnlheGlzLnNldFJhbmdlKCksYS55YXhpcy5z ZXRTY2FsZSgpO3ZhciB1PSExO2Zvcih2YXIgaCBpbiBhLnRyYWNlSGFzaCl7 dmFyIGY9YS50cmFjZUhhc2hbaF0sZD1vLmZpbHRlclZpc2libGUoZik7Zlsw XVswXS50cmFjZS5fbW9kdWxlLnBsb3QocyxhLGQsYyksaS50cmFjZUlzKGgs ImdsIikmJmQubGVuZ3RoJiYodT0hMCl9dSYmKHcocyksayhzKSl9ZWxzZSBO PW51bGx9fSxPLnVwZGF0ZUFuZ3VsYXJEcmFnPWZ1bmN0aW9uKHQpe3ZhciBl PXRoaXMscj1lLmdkLGE9ZS5sYXllcnMscz1lLnJhZGl1cyxjPWUuYW5ndWxh ckF4aXMsdT1lLmN4LGg9ZS5jeSxmPWUuY3h4LHA9ZS5jeXksdj1NLmFuZ3Vs YXJEcmFnQm94U2l6ZSxtPWQubWFrZURyYWdnZXIoYSwicGF0aCIsImFuZ3Vs YXJkcmFnIiwibW92ZSIpLHk9e2VsZW1lbnQ6bSxnZDpyfTtmdW5jdGlvbiB4 KHQsZSl7cmV0dXJuIE1hdGguYXRhbjIocCt2LWUsdC1mLXYpfW4uc2VsZWN0 KG0pLmF0dHIoImQiLGUucGF0aEFubnVsdXMocyxzK3YpKS5hdHRyKCJ0cmFu c2Zvcm0iLFIodSxoKSkuY2FsbChfLCJtb3ZlIik7dmFyIFQsQSxTLEUsTCxQ LE89YS5mcm9udHBsb3Quc2VsZWN0KCIuc2NhdHRlcmxheWVyIikuc2VsZWN0 QWxsKCIudHJhY2UiKSx6PU8uc2VsZWN0QWxsKCIucG9pbnQiKSxJPU8uc2Vs ZWN0QWxsKCIudGV4dHBvaW50Iik7ZnVuY3Rpb24gRCh0LHMpe3ZhciBkPWUu Z2QuX2Z1bGxMYXlvdXQsZz1kW2UuaWRdLHY9eChUK3QsQStzKSxtPUModi1Q KTtpZihFPVMrbSxhLmZyb250cGxvdC5hdHRyKCJ0cmFuc2Zvcm0iLFIoZS54 T2Zmc2V0MixlLnlPZmZzZXQyKStGKFstbSxmLHBdKSksZS52YW5nbGVzKXtM PWUucmFkaWFsQXhpc0FuZ2xlK207dmFyIHk9Uih1LGgpK0YoLW0pLGI9Uih1 LGgpK0YoLUwpO2EuYmcuYXR0cigidHJhbnNmb3JtIix5KSxhWyJyYWRpYWwt Z3JpZCJdLmF0dHIoInRyYW5zZm9ybSIseSksYVsicmFkaWFsLWF4aXMiXS5h dHRyKCJ0cmFuc2Zvcm0iLGIpLGFbInJhZGlhbC1saW5lIl0uc2VsZWN0KCJs aW5lIikuYXR0cigidHJhbnNmb3JtIixiKSxlLnVwZGF0ZVJhZGlhbEF4aXNU aXRsZShkLGcsTCl9ZWxzZSBlLmNsaXBQYXRocy5mb3JUcmFjZXMuc2VsZWN0 KCJwYXRoIikuYXR0cigidHJhbnNmb3JtIixSKGYscCkrRihtKSk7ei5lYWNo KGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyksZT1sLmdldFRyYW5z bGF0ZSh0KTt0LmF0dHIoInRyYW5zZm9ybSIsUihlLngsZS55KStGKFttXSkp fSksSS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyksZT10 LnNlbGVjdCgidGV4dCIpLHI9bC5nZXRUcmFuc2xhdGUodCk7dC5hdHRyKCJ0 cmFuc2Zvcm0iLEYoW20sZS5hdHRyKCJ4IiksZS5hdHRyKCJ5IildKStSKHIu eCxyLnkpKX0pLGMucm90YXRpb249by5tb2RIYWxmKEUsMzYwKSxlLnVwZGF0 ZUFuZ3VsYXJBeGlzKGQsZyksZS5faGFzQ2xpcE9uQXhpc0ZhbHNlJiYhby5p c0Z1bGxDaXJjbGUoZS5zZWN0b3JJblJhZCkmJk8uY2FsbChsLmhpZGVPdXRz aWRlUmFuZ2VQb2ludHMsZSk7dmFyIF89ITE7Zm9yKHZhciBNIGluIGUudHJh Y2VIYXNoKWlmKGkudHJhY2VJcyhNLCJnbCIpKXt2YXIgRD1lLnRyYWNlSGFz aFtNXSxOPW8uZmlsdGVyVmlzaWJsZShEKTtEWzBdWzBdLnRyYWNlLl9tb2R1 bGUucGxvdChyLGUsTixnKSxOLmxlbmd0aCYmKF89ITApfV8mJih3KHIpLGso cikpO3ZhciBqPXt9O0Ioaiksci5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmci LGopfWZ1bmN0aW9uIEIodCl7dFtlLmlkKyIuYW5ndWxhcmF4aXMucm90YXRp b24iXT1FLGUudmFuZ2xlcyYmKHRbZS5pZCsiLnJhZGlhbGF4aXMuYW5nbGUi XT1MKX1mdW5jdGlvbiBOKCl7SS5zZWxlY3QoInRleHQiKS5hdHRyKCJ0cmFu c2Zvcm0iLG51bGwpO3ZhciB0PXt9O0IodCksaS5jYWxsKCJfZ3VpUmVsYXlv dXQiLHIsdCl9eS5wcmVwRm49ZnVuY3Rpb24obixhLGkpe3ZhciBvPXRbZS5p ZF07Uz1vLmFuZ3VsYXJheGlzLnJvdGF0aW9uO3ZhciBzPW0uZ2V0Qm91bmRp bmdDbGllbnRSZWN0KCk7VD1hLXMubGVmdCxBPWktcy50b3AsUD14KFQsQSks eS5tb3ZlRm49RCx5LmRvbmVGbj1OLGIocil9LGUudmFuZ2xlcyYmIW8uaXNG dWxsQ2lyY2xlKGUuc2VjdG9ySW5SYWQpJiYoeS5wcmVwRm49by5ub29wLF8o bi5zZWxlY3QobSksbnVsbCkpLGcuaW5pdCh5KX0sTy5pc1B0SW5zaWRlPWZ1 bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2VjdG9ySW5SYWQscj10aGlzLnZhbmds ZXMsbj10aGlzLmFuZ3VsYXJBeGlzLmMyZyh0LnRoZXRhKSxhPXRoaXMucmFk aWFsQXhpcyxpPWEuYzJsKHQucikscz1hLl9ybDtyZXR1cm4ocj9BLmlzUHRJ bnNpZGVQb2x5Z29uOm8uaXNQdEluc2lkZVNlY3RvcikoaSxuLHMsZSxyKX0s Ty5wYXRoQXJjPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2VjdG9ySW5SYWQs cj10aGlzLnZhbmdsZXM7cmV0dXJuKHI/QS5wYXRoUG9seWdvbjpvLnBhdGhB cmMpKHQsZVswXSxlWzFdLHIpfSxPLnBhdGhTZWN0b3I9ZnVuY3Rpb24odCl7 dmFyIGU9dGhpcy5zZWN0b3JJblJhZCxyPXRoaXMudmFuZ2xlcztyZXR1cm4o cj9BLnBhdGhQb2x5Z29uOm8ucGF0aFNlY3RvcikodCxlWzBdLGVbMV0scil9 LE8ucGF0aEFubnVsdXM9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnNlY3Rv ckluUmFkLG49dGhpcy52YW5nbGVzO3JldHVybihuP0EucGF0aFBvbHlnb25B bm51bHVzOm8ucGF0aEFubnVsdXMpKHQsZSxyWzBdLHJbMV0sbil9LE8ucGF0 aFN1YnBsb3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmlubmVyUmFkaXVzLGU9 dGhpcy5yYWRpdXM7cmV0dXJuIHQ/dGhpcy5wYXRoQW5udWx1cyh0LGUpOnRo aXMucGF0aFNlY3RvcihlKX0sTy5maWxsVmlld0luaXRpYWxLZXk9ZnVuY3Rp b24odCxlKXt0IGluIHRoaXMudmlld0luaXRpYWx8fCh0aGlzLnZpZXdJbml0 aWFsW3RdPWUpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4u Ly4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiOjYxMCwiLi4vLi4vY29tcG9u ZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwi Li4vLi4vY29tcG9uZW50cy90aXRsZXMiOjY3OSwiLi4vLi4vY29uc3RhbnRz L2FsaWdubWVudCI6Njg2LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2Ns ZWFyX2dsX2NhbnZhc2VzIjo3MDIsIi4uLy4uL2xpYi9zZXRjdXJzb3IiOjcz NywiLi4vLi4vcGxvdF9hcGkvc3Vicm91dGluZXMiOjc1NiwiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vLi4vcmVnaXN0cnkiOjg0Niwi Li4vY2FydGVzaWFuL2F1dG9yYW5nZSI6NzY0LCIuLi9jYXJ0ZXNpYW4vZHJh Z2JveCI6NzczLCIuLi9jYXJ0ZXNpYW4vc2VsZWN0Ijo3ODIsIi4uL2NhcnRl c2lhbi9zZXRfY29udmVydCI6NzgzLCIuLi9wbG90cyI6ODI2LCIuL2NvbnN0 YW50cyI6ODI3LCIuL2hlbHBlcnMiOjgyOCwiLi9zZXRfY29udmVydCI6ODM5 LGQzOjE2NSx0aW55Y29sb3IyOjUzNn1dLDgzOTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uL2Nh cnRlc2lhbi9zZXRfY29udmVydCIpLGk9bi5kZWcycmFkLG89bi5yYWQyZGVn O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7c3dpdGNoKGEodCxyKSx0Ll9p ZCl7Y2FzZSJ4IjpjYXNlInJhZGlhbGF4aXMiOiFmdW5jdGlvbih0LGUpe3Zh ciByPWUuX3N1YnBsb3Q7dC5zZXRHZW9tZXRyeT1mdW5jdGlvbigpe3ZhciBl PXQuX3JsWzBdLG49dC5fcmxbMV0sYT1yLmlubmVyUmFkaXVzLGk9KHIucmFk aXVzLWEpLyhuLWUpLG89YS9pLHM9ZT5uP2Z1bmN0aW9uKHQpe3JldHVybiB0 PD0wfTpmdW5jdGlvbih0KXtyZXR1cm4gdD49MH07dC5jMmc9ZnVuY3Rpb24o cil7dmFyIG49dC5jMmwociktZTtyZXR1cm4ocyhuKT9uOjApK299LHQuZzJj PWZ1bmN0aW9uKHIpe3JldHVybiB0LmwyYyhyK2Utbyl9LHQuZzJwPWZ1bmN0 aW9uKHQpe3JldHVybiB0Kml9LHQuYzJwPWZ1bmN0aW9uKGUpe3JldHVybiB0 LmcycCh0LmMyZyhlKSl9fX0odCxlKTticmVhaztjYXNlImFuZ3VsYXJheGlz IjohZnVuY3Rpb24odCxlKXt2YXIgcj10LnR5cGU7aWYoImxpbmVhciI9PT1y KXt2YXIgYT10LmQyYyxzPXQuYzJkO3QuZDJjPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuImRlZ3JlZXMiPT09ZT9pKHQpOnR9 KGEodCksZSl9LHQuYzJkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHMoZnVuY3Rp b24odCxlKXtyZXR1cm4iZGVncmVlcyI9PT1lP28odCk6dH0odCxlKSl9fXQu bWFrZUNhbGNkYXRhPWZ1bmN0aW9uKGUsYSl7dmFyIGksbyxzPWVbYV0sbD1l Ll9sZW5ndGgsYz1mdW5jdGlvbihyKXtyZXR1cm4gdC5kMmMocixlLnRoZXRh dW5pdCl9O2lmKHMpe2lmKG4uaXNUeXBlZEFycmF5KHMpJiYibGluZWFyIj09 PXIpe2lmKGw9PT1zLmxlbmd0aClyZXR1cm4gcztpZihzLnN1YmFycmF5KXJl dHVybiBzLnN1YmFycmF5KDAsbCl9Zm9yKGk9bmV3IEFycmF5KGwpLG89MDtv PGw7bysrKWlbb109YyhzW29dKX1lbHNle3ZhciB1PWErIjAiLGg9ImQiK2Es Zj11IGluIGU/YyhlW3VdKTowLHA9ZVtoXT9jKGVbaF0pOih0LnBlcmlvZHx8 MipNYXRoLlBJKS9sO2ZvcihpPW5ldyBBcnJheShsKSxvPTA7bzxsO28rKylp W29dPWYrbypwfXJldHVybiBpfSx0LnNldEdlb21ldHJ5PWZ1bmN0aW9uKCl7 dmFyIGEscyxsLGMsdT1lLnNlY3RvcixoPXUubWFwKGkpLGY9e2Nsb2Nrd2lz ZTotMSxjb3VudGVyY2xvY2t3aXNlOjF9W3QuZGlyZWN0aW9uXSxwPWkodC5y b3RhdGlvbiksZD1mdW5jdGlvbih0KXtyZXR1cm4gZip0K3B9LGc9ZnVuY3Rp b24odCl7cmV0dXJuKHQtcCkvZn07c3dpdGNoKHIpe2Nhc2UibGluZWFyIjpz PWE9bi5pZGVudGl0eSxjPWksbD1vLHQucmFuZ2U9bi5pc0Z1bGxDaXJjbGUo aCk/W3VbMF0sdVswXSszNjBdOmgubWFwKGcpLm1hcChvKTticmVhaztjYXNl ImNhdGVnb3J5Ijp2YXIgdj10Ll9jYXRlZ29yaWVzLmxlbmd0aCxtPXQucGVy aW9kP01hdGgubWF4KHQucGVyaW9kLHYpOnY7MD09PW0mJihtPTEpLHM9Yz1m dW5jdGlvbih0KXtyZXR1cm4gMip0Kk1hdGguUEkvbX0sYT1sPWZ1bmN0aW9u KHQpe3JldHVybiB0Km0vTWF0aC5QSS8yfSx0LnJhbmdlPVswLG1dfXQuYzJn PWZ1bmN0aW9uKHQpe3JldHVybiBkKHModCkpfSx0LmcyYz1mdW5jdGlvbih0 KXtyZXR1cm4gYShnKHQpKX0sdC50Mmc9ZnVuY3Rpb24odCl7cmV0dXJuIGQo Yyh0KSl9LHQuZzJ0PWZ1bmN0aW9uKHQpe3JldHVybiBsKGcodCkpfX19KHQs ZSl9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vY2FydGVzaWFuL3NldF9jb252 ZXJ0Ijo3ODN9XSw4NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vbGliIiksYT10KCIuLi9wbG90X2FwaS9wbG90X3RlbXBs YXRlIiksaT10KCIuL2RvbWFpbiIpLmRlZmF1bHRzO2UuZXhwb3J0cz1mdW5j dGlvbih0LGUscixvKXt2YXIgcyxsLGM9by50eXBlLHU9by5hdHRyaWJ1dGVz LGg9by5oYW5kbGVEZWZhdWx0cyxmPW8ucGFydGl0aW9ufHwieCIscD1lLl9z dWJwbG90c1tjXSxkPXAubGVuZ3RoLGc9ZCYmcFswXS5yZXBsYWNlKC9cZCsk LywiIik7ZnVuY3Rpb24gdih0LGUpe3JldHVybiBuLmNvZXJjZShzLGwsdSx0 LGUpfWZvcih2YXIgbT0wO208ZDttKyspe3ZhciB5PXBbbV07cz10W3ldP3Rb eV06dFt5XT17fSxsPWEubmV3Q29udGFpbmVyKGUseSxnKSx2KCJ1aXJldmlz aW9uIixlLnVpcmV2aXNpb24pO3ZhciB4PXt9O3hbZl09W20vZCwobSsxKS9k XSxpKGwsZSx2LHgpLG8uaWQ9eSxoKHMsbCx2LG8pfX19LHsiLi4vbGliIjo3 MTcsIi4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi9kb21haW4i Ojc5MH1dLDg0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtbJ1Zh cmlhYmxlcyBhcmUgaW5zZXJ0ZWQgdXNpbmcgJXt2YXJpYWJsZX0sIGZvciBl eGFtcGxlICJ5OiAle3l9Ii4nLCdOdW1iZXJzIGFyZSBmb3JtYXR0ZWQgdXNp bmcgZDMtZm9ybWF0XCdzIHN5bnRheCAle3ZhcmlhYmxlOmQzLWZvcm1hdH0s IGZvciBleGFtcGxlICJQcmljZTogJXt5OiQuMmZ9Ii4nLHQoIi4uL2NvbnN0 YW50cy9kb2NzIikuRk9STUFUX0xJTkssImZvciBkZXRhaWxzIG9uIHRoZSBm b3JtYXR0aW5nIHN5bnRheC4iLCdEYXRlcyBhcmUgZm9ybWF0dGVkIHVzaW5n IGQzLXRpbWUtZm9ybWF0XCdzIHN5bnRheCAle3ZhcmlhYmxlfGQzLXRpbWUt Zm9ybWF0fSwgZm9yIGV4YW1wbGUgIkRheTogJXsyMDE5LTAxLTAxfCVBfSIu Jyx0KCIuLi9jb25zdGFudHMvZG9jcyIpLkRBVEVfRk9STUFUX0xJTkssImZv ciBkZXRhaWxzIG9uIHRoZSBkYXRlIGZvcm1hdHRpbmcgc3ludGF4LiJdLmpv aW4oIiAiKTtmdW5jdGlvbiBuKHQpe3ZhciBlPXQuZGVzY3JpcHRpb24/IiAi K3QuZGVzY3JpcHRpb246IiIscj10LmtleXN8fFtdO2lmKHIubGVuZ3RoPjAp e2Zvcih2YXIgbj1bXSxhPTA7YTxyLmxlbmd0aDthKyspblthXT0iYCIrclth XSsiYCI7ZSs9IkZpbmFsbHksIHRoZSB0ZW1wbGF0ZSBzdHJpbmcgaGFzIGFj Y2VzcyB0byAiLGU9MT09PXIubGVuZ3RoPyJ2YXJpYWJsZSAiK25bMF06InZh cmlhYmxlcyAiK24uc2xpY2UoMCwtMSkuam9pbigiLCAiKSsiIGFuZCAiK24u c2xpY2UoLTEpKyIuIn1yZXR1cm4gZX1yLmhvdmVydGVtcGxhdGVBdHRycz1m dW5jdGlvbih0LGUpe3Q9dHx8e307bihlPWV8fHt9KTt2YXIgcj17dmFsVHlw ZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOnQuZWRpdFR5cGV8fCJub25l In07cmV0dXJuITEhPT10LmFycmF5T2smJihyLmFycmF5T2s9ITApLHJ9LHIu dGV4dHRlbXBsYXRlQXR0cnM9ZnVuY3Rpb24odCxlKXt0PXR8fHt9O24oZT1l fHx7fSk7dmFyIHI9e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlw ZTp0LmVkaXRUeXBlfHwiY2FsYyJ9O3JldHVybiExIT09dC5hcnJheU9rJiYo ci5hcnJheU9rPSEwKSxyfX0seyIuLi9jb25zdGFudHMvZG9jcyI6Njg4fV0s ODQyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4v dGVybmFyeSIpLGE9dCgiLi4vLi4vcGxvdHMvZ2V0X2RhdGEiKS5nZXRTdWJw bG90Q2FsY0RhdGEsaT10KCIuLi8uLi9saWIiKS5jb3VudGVyUmVnZXg7ci5u YW1lPSJ0ZXJuYXJ5Ijt2YXIgbz1yLmF0dHI9InN1YnBsb3QiO3IuaWRSb290 PSJ0ZXJuYXJ5IixyLmlkUmVnZXg9ci5hdHRyUmVnZXg9aSgidGVybmFyeSIp LChyLmF0dHJpYnV0ZXM9e30pW29dPXt2YWxUeXBlOiJzdWJwbG90aWQiLGRm bHQ6InRlcm5hcnkiLGVkaXRUeXBlOiJjYWxjIn0sci5sYXlvdXRBdHRyaWJ1 dGVzPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxyLnN1cHBseUxheW91dERl ZmF1bHRzPXQoIi4vbGF5b3V0X2RlZmF1bHRzIiksci5wbG90PWZ1bmN0aW9u KHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5jYWxjZGF0YSxpPWUu X3N1YnBsb3RzLnRlcm5hcnksbz0wO288aS5sZW5ndGg7bysrKXt2YXIgcz1p W29dLGw9YShyLCJ0ZXJuYXJ5IixzKSxjPWVbc10uX3N1YnBsb3Q7Y3x8KGM9 bmV3IG4oe2lkOnMsZ3JhcGhEaXY6dCxjb250YWluZXI6ZS5fdGVybmFyeWxh eWVyLm5vZGUoKX0sZSksZVtzXS5fc3VicGxvdD1jKSxjLnBsb3QobCxlLHQu X3Byb21pc2VzKX19LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZh ciBhPW4uX3N1YnBsb3RzLnRlcm5hcnl8fFtdLGk9MDtpPGEubGVuZ3RoO2kr Kyl7dmFyIG89YVtpXSxzPW5bb10uX3N1YnBsb3Q7IWVbb10mJnMmJihzLnBs b3RDb250YWluZXIucmVtb3ZlKCkscy5jbGlwRGVmLnJlbW92ZSgpLHMuY2xp cERlZlJlbGF0aXZlLnJlbW92ZSgpLHMubGF5ZXJzWyJhLXRpdGxlIl0ucmVt b3ZlKCkscy5sYXllcnNbImItdGl0bGUiXS5yZW1vdmUoKSxzLmxheWVyc1si Yy10aXRsZSJdLnJlbW92ZSgpKX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8u Li9wbG90cy9nZXRfZGF0YSI6ODAwLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo4 NDMsIi4vbGF5b3V0X2RlZmF1bHRzIjo4NDQsIi4vdGVybmFyeSI6ODQ1fV0s ODQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLGE9dCgiLi4vZG9t YWluIikuYXR0cmlidXRlcyxpPXQoIi4uL2NhcnRlc2lhbi9sYXlvdXRfYXR0 cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92 ZXJyaWRlQWxsLHM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQs bD17dGl0bGU6e3RleHQ6aS50aXRsZS50ZXh0LGZvbnQ6aS50aXRsZS5mb250 fSxjb2xvcjppLmNvbG9yLHRpY2ttb2RlOmkudGlja21vZGUsbnRpY2tzOnMo e30saS5udGlja3Mse2RmbHQ6NixtaW46MX0pLHRpY2swOmkudGljazAsZHRp Y2s6aS5kdGljayx0aWNrdmFsczppLnRpY2t2YWxzLHRpY2t0ZXh0OmkudGlj a3RleHQsdGlja3M6aS50aWNrcyx0aWNrbGVuOmkudGlja2xlbix0aWNrd2lk dGg6aS50aWNrd2lkdGgsdGlja2NvbG9yOmkudGlja2NvbG9yLHNob3d0aWNr bGFiZWxzOmkuc2hvd3RpY2tsYWJlbHMsc2hvd3RpY2twcmVmaXg6aS5zaG93 dGlja3ByZWZpeCx0aWNrcHJlZml4OmkudGlja3ByZWZpeCxzaG93dGlja3N1 ZmZpeDppLnNob3d0aWNrc3VmZml4LHRpY2tzdWZmaXg6aS50aWNrc3VmZml4 LHNob3dleHBvbmVudDppLnNob3dleHBvbmVudCxleHBvbmVudGZvcm1hdDpp LmV4cG9uZW50Zm9ybWF0LHNlcGFyYXRldGhvdXNhbmRzOmkuc2VwYXJhdGV0 aG91c2FuZHMsdGlja2ZvbnQ6aS50aWNrZm9udCx0aWNrYW5nbGU6aS50aWNr YW5nbGUsdGlja2Zvcm1hdDppLnRpY2tmb3JtYXQsdGlja2Zvcm1hdHN0b3Bz OmkudGlja2Zvcm1hdHN0b3BzLGhvdmVyZm9ybWF0OmkuaG92ZXJmb3JtYXQs c2hvd2xpbmU6cyh7fSxpLnNob3dsaW5lLHtkZmx0OiEwfSksbGluZWNvbG9y OmkubGluZWNvbG9yLGxpbmV3aWR0aDppLmxpbmV3aWR0aCxzaG93Z3JpZDpz KHt9LGkuc2hvd2dyaWQse2RmbHQ6ITB9KSxncmlkY29sb3I6aS5ncmlkY29s b3IsZ3JpZHdpZHRoOmkuZ3JpZHdpZHRoLGxheWVyOmkubGF5ZXIsbWluOnt2 YWxUeXBlOiJudW1iZXIiLGRmbHQ6MCxtaW46MH0sX2RlcHJlY2F0ZWQ6e3Rp dGxlOmkuX2RlcHJlY2F0ZWQudGl0bGUsdGl0bGVmb250OmkuX2RlcHJlY2F0 ZWQudGl0bGVmb250fX0sYz1lLmV4cG9ydHM9byh7ZG9tYWluOmEoe25hbWU6 InRlcm5hcnkifSksYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5i YWNrZ3JvdW5kfSxzdW06e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLG1pbjow fSxhYXhpczpsLGJheGlzOmwsY2F4aXM6bH0sInBsb3QiLCJmcm9tLXJvb3Qi KTtjLnVpcmV2aXNpb249e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUi fSxjLmFheGlzLnVpcmV2aXNpb249Yy5iYXhpcy51aXJldmlzaW9uPWMuY2F4 aXMudWlyZXZpc2lvbj17dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9 fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6NTkxLCIu Li8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlw ZXMiOjc0OCwiLi4vY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIjo3Nzcs Ii4uL2RvbWFpbiI6NzkwfV0sODQ0OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxhPXQo Ii4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxpPXQoIi4uLy4uL2xp YiIpLG89dCgiLi4vc3VicGxvdF9kZWZhdWx0cyIpLHM9dCgiLi4vY2FydGVz aWFuL3RpY2tfbGFiZWxfZGVmYXVsdHMiKSxsPXQoIi4uL2NhcnRlc2lhbi90 aWNrX21hcmtfZGVmYXVsdHMiKSxjPXQoIi4uL2NhcnRlc2lhbi90aWNrX3Zh bHVlX2RlZmF1bHRzIiksdT10KCIuLi9jYXJ0ZXNpYW4vbGluZV9ncmlkX2Rl ZmF1bHRzIiksaD10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksZj1bImFheGlz IiwiYmF4aXMiLCJjYXhpcyJdO2Z1bmN0aW9uIHAodCxlLHIsaSl7dmFyIG8s cyxsLGM9cigiYmdjb2xvciIpLHU9cigic3VtIik7aS5iZ0NvbG9yPW4uY29t YmluZShjLGkucGFwZXJfYmdjb2xvcik7Zm9yKHZhciBoPTA7aDxmLmxlbmd0 aDtoKyspcz10W289ZltoXV18fHt9LChsPWEubmV3Q29udGFpbmVyKGUsbykp Ll9uYW1lPW8sZChzLGwsaSxlKTt2YXIgcD1lLmFheGlzLGc9ZS5iYXhpcyx2 PWUuY2F4aXM7cC5taW4rZy5taW4rdi5taW4+PXUmJihwLm1pbj0wLGcubWlu PTAsdi5taW49MCx0LmFheGlzJiZkZWxldGUgdC5hYXhpcy5taW4sdC5iYXhp cyYmZGVsZXRlIHQuYmF4aXMubWluLHQuY2F4aXMmJmRlbGV0ZSB0LmNheGlz Lm1pbil9ZnVuY3Rpb24gZCh0LGUscixuKXt2YXIgYT1oW2UuX25hbWVdO2Z1 bmN0aW9uIG8ocixuKXtyZXR1cm4gaS5jb2VyY2UodCxlLGEscixuKX1vKCJ1 aXJldmlzaW9uIixuLnVpcmV2aXNpb24pLGUudHlwZT0ibGluZWFyIjt2YXIg Zj1vKCJjb2xvciIpLHA9ZiE9PWEuY29sb3IuZGZsdD9mOnIuZm9udC5jb2xv cixkPWUuX25hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksZz0iQ29tcG9u ZW50ICIrZCx2PW8oInRpdGxlLnRleHQiLGcpO2UuX2hvdmVydGl0bGU9dj09 PWc/djpkLGkuY29lcmNlRm9udChvLCJ0aXRsZS5mb250Iix7ZmFtaWx5OnIu Zm9udC5mYW1pbHksc2l6ZTpNYXRoLnJvdW5kKDEuMipyLmZvbnQuc2l6ZSks Y29sb3I6cH0pLG8oIm1pbiIpLGModCxlLG8sImxpbmVhciIpLHModCxlLG8s ImxpbmVhciIse30pLGwodCxlLG8se291dGVyVGlja3M6ITB9KSxvKCJzaG93 dGlja2xhYmVscyIpJiYoaS5jb2VyY2VGb250KG8sInRpY2tmb250Iix7ZmFt aWx5OnIuZm9udC5mYW1pbHksc2l6ZTpyLmZvbnQuc2l6ZSxjb2xvcjpwfSks bygidGlja2FuZ2xlIiksbygidGlja2Zvcm1hdCIpKSx1KHQsZSxvLHtkZmx0 Q29sb3I6ZixiZ0NvbG9yOnIuYmdDb2xvcixibGVuZDo2MCxzaG93TGluZToh MCxzaG93R3JpZDohMCxub1plcm9MaW5lOiEwLGF0dHJpYnV0ZXM6YX0pLG8o ImhvdmVyZm9ybWF0IiksbygibGF5ZXIiKX1lLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIpe28odCxlLHIse3R5cGU6InRlcm5hcnkiLGF0dHJpYnV0ZXM6aCxo YW5kbGVEZWZhdWx0czpwLGZvbnQ6ZS5mb250LHBhcGVyX2JnY29sb3I6ZS5w YXBlcl9iZ2NvbG9yfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5 MiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxh dGUiOjc1NSwiLi4vY2FydGVzaWFuL2xpbmVfZ3JpZF9kZWZhdWx0cyI6Nzc5 LCIuLi9jYXJ0ZXNpYW4vdGlja19sYWJlbF9kZWZhdWx0cyI6Nzg0LCIuLi9j YXJ0ZXNpYW4vdGlja19tYXJrX2RlZmF1bHRzIjo3ODUsIi4uL2NhcnRlc2lh bi90aWNrX3ZhbHVlX2RlZmF1bHRzIjo3ODYsIi4uL3N1YnBsb3RfZGVmYXVs dHMiOjg0MCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6ODQzfV0sODQ1OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJ0 aW55Y29sb3IyIiksaT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgiLi4vLi4v bGliIikscz1vLl8sbD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksYz10 KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSx1PXQoIi4uL2NhcnRlc2lh bi9zZXRfY29udmVydCIpLGg9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVu ZEZsYXQsZj10KCIuLi9wbG90cyIpLHA9dCgiLi4vY2FydGVzaWFuL2F4ZXMi KSxkPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiKSxnPXQoIi4u Ly4uL2NvbXBvbmVudHMvZngiKSx2PXQoIi4uLy4uL2NvbXBvbmVudHMvdGl0 bGVzIiksbT10KCIuLi9jYXJ0ZXNpYW4vc2VsZWN0IikucHJlcFNlbGVjdCx5 PXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5zZWxlY3RPbkNsaWNrLHg9dCgi Li4vY2FydGVzaWFuL3NlbGVjdCIpLmNsZWFyU2VsZWN0LGI9dCgiLi4vY2Fy dGVzaWFuL2NvbnN0YW50cyIpO2Z1bmN0aW9uIF8odCxlKXt0aGlzLmlkPXQu aWQsdGhpcy5ncmFwaERpdj10LmdyYXBoRGl2LHRoaXMuaW5pdChlKSx0aGlz Lm1ha2VGcmFtZXdvcmsoZSksdGhpcy5hVGlja0xheW91dD1udWxsLHRoaXMu YlRpY2tMYXlvdXQ9bnVsbCx0aGlzLmNUaWNrTGF5b3V0PW51bGx9ZS5leHBv cnRzPV87dmFyIHc9Xy5wcm90b3R5cGU7dy5pbml0PWZ1bmN0aW9uKHQpe3Ro aXMuY29udGFpbmVyPXQuX3Rlcm5hcnlsYXllcix0aGlzLmRlZnM9dC5fZGVm cyx0aGlzLmxheW91dElkPXQuX3VpZCx0aGlzLnRyYWNlSGFzaD17fSx0aGlz LmxheWVycz17fX0sdy5wbG90PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVt0aGlz LmlkXSxuPWUuX3NpemU7dGhpcy5faGFzQ2xpcE9uQXhpc0ZhbHNlPSExO2Zv cih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKXtpZighMT09PXRbYV1bMF0udHJh Y2UuY2xpcG9uYXhpcyl7dGhpcy5faGFzQ2xpcE9uQXhpc0ZhbHNlPSEwO2Jy ZWFrfX10aGlzLnVwZGF0ZUxheWVycyhyKSx0aGlzLmFkanVzdExheW91dChy LG4pLGYuZ2VuZXJhbFVwZGF0ZVBlclRyYWNlTW9kdWxlKHRoaXMuZ3JhcGhE aXYsdGhpcyx0LHIpLHRoaXMubGF5ZXJzLnBsb3RiZy5zZWxlY3QoInBhdGgi KS5jYWxsKGwuZmlsbCxyLmJnY29sb3IpfSx3Lm1ha2VGcmFtZXdvcms9ZnVu Y3Rpb24odCl7dmFyIGU9dGhpcy5ncmFwaERpdixyPXRbdGhpcy5pZF0sbj10 aGlzLmNsaXBJZD0iY2xpcCIrdGhpcy5sYXlvdXRJZCt0aGlzLmlkLGE9dGhp cy5jbGlwSWRSZWxhdGl2ZT0iY2xpcC1yZWxhdGl2ZSIrdGhpcy5sYXlvdXRJ ZCt0aGlzLmlkO3RoaXMuY2xpcERlZj1vLmVuc3VyZVNpbmdsZUJ5SWQodC5f Y2xpcHMsImNsaXBQYXRoIixuLGZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJwYXRo IikuYXR0cigiZCIsIk0wLDBaIil9KSx0aGlzLmNsaXBEZWZSZWxhdGl2ZT1v LmVuc3VyZVNpbmdsZUJ5SWQodC5fY2xpcHMsImNsaXBQYXRoIixhLGZ1bmN0 aW9uKHQpe3QuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0wLDBaIil9KSx0 aGlzLnBsb3RDb250YWluZXI9by5lbnN1cmVTaW5nbGUodGhpcy5jb250YWlu ZXIsImciLHRoaXMuaWQpLHRoaXMudXBkYXRlTGF5ZXJzKHIpLGMuc2V0Q2xp cFVybCh0aGlzLmxheWVycy5iYWNrcGxvdCxuLGUpLGMuc2V0Q2xpcFVybCh0 aGlzLmxheWVycy5ncmlkcyxuLGUpfSx3LnVwZGF0ZUxheWVycz1mdW5jdGlv bih0KXt2YXIgZT10aGlzLmxheWVycyxyPVsiZHJhZ2xheWVyIiwicGxvdGJn IiwiYmFja3Bsb3QiLCJncmlkcyJdOyJiZWxvdyB0cmFjZXMiPT09dC5hYXhp cy5sYXllciYmci5wdXNoKCJhYXhpcyIsImFsaW5lIiksImJlbG93IHRyYWNl cyI9PT10LmJheGlzLmxheWVyJiZyLnB1c2goImJheGlzIiwiYmxpbmUiKSwi YmVsb3cgdHJhY2VzIj09PXQuY2F4aXMubGF5ZXImJnIucHVzaCgiY2F4aXMi LCJjbGluZSIpLHIucHVzaCgiZnJvbnRwbG90IiksImFib3ZlIHRyYWNlcyI9 PT10LmFheGlzLmxheWVyJiZyLnB1c2goImFheGlzIiwiYWxpbmUiKSwiYWJv dmUgdHJhY2VzIj09PXQuYmF4aXMubGF5ZXImJnIucHVzaCgiYmF4aXMiLCJi bGluZSIpLCJhYm92ZSB0cmFjZXMiPT09dC5jYXhpcy5sYXllciYmci5wdXNo KCJjYXhpcyIsImNsaW5lIik7dmFyIGE9dGhpcy5wbG90Q29udGFpbmVyLnNl bGVjdEFsbCgiZy50b3BsZXZlbCIpLmRhdGEocixTdHJpbmcpLGk9WyJhZ3Jp ZCIsImJncmlkIiwiY2dyaWQiXTthLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0 cigiY2xhc3MiLGZ1bmN0aW9uKHQpe3JldHVybiJ0b3BsZXZlbCAiK3R9KS5l YWNoKGZ1bmN0aW9uKHQpe3ZhciByPW4uc2VsZWN0KHRoaXMpO2VbdF09ciwi ZnJvbnRwbG90Ij09PXQ/ci5hcHBlbmQoImciKS5jbGFzc2VkKCJzY2F0dGVy bGF5ZXIiLCEwKToiYmFja3Bsb3QiPT09dD9yLmFwcGVuZCgiZyIpLmNsYXNz ZWQoIm1hcGxheWVyIiwhMCk6InBsb3RiZyI9PT10P3IuYXBwZW5kKCJwYXRo IikuYXR0cigiZCIsIk0wLDBaIik6ImFsaW5lIj09PXR8fCJibGluZSI9PT10 fHwiY2xpbmUiPT09dD9yLmFwcGVuZCgicGF0aCIpOiJncmlkcyI9PT10JiZp LmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1yLmFwcGVuZCgiZyIpLmNsYXNz ZWQoImdyaWQgIit0LCEwKX0pfSksYS5vcmRlcigpfTt2YXIgaz1NYXRoLnNx cnQoNC8zKTt3LmFkanVzdExheW91dD1mdW5jdGlvbih0LGUpe3ZhciByLG4s YSxpLG8scyxmPXRoaXMscD10LmRvbWFpbixkPShwLnhbMF0rcC54WzFdKS8y LGc9KHAueVswXStwLnlbMV0pLzIsdj1wLnhbMV0tcC54WzBdLG09cC55WzFd LXAueVswXSx5PXYqZS53LHg9bSplLmgsYj10LnN1bSxfPXQuYWF4aXMubWlu LHc9dC5iYXhpcy5taW4sVD10LmNheGlzLm1pbjt5PmsqeD9hPShpPXgpKms6 aT0oYT15KS9rLG89diphL3kscz1tKmkveCxyPWUubCtlLncqZC1hLzIsbj1l LnQrZS5oKigxLWcpLWkvMixmLngwPXIsZi55MD1uLGYudz1hLGYuaD1pLGYu c3VtPWIsZi54YXhpcz17dHlwZToibGluZWFyIixyYW5nZTpbXysyKlQtYixi LV8tMip3XSxkb21haW46W2Qtby8yLGQrby8yXSxfaWQ6IngifSx1KGYueGF4 aXMsZi5ncmFwaERpdi5fZnVsbExheW91dCksZi54YXhpcy5zZXRTY2FsZSgp LGYueGF4aXMuaXNQdFdpdGhpblJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiB0 LmE+PWYuYWF4aXMucmFuZ2VbMF0mJnQuYTw9Zi5hYXhpcy5yYW5nZVsxXSYm dC5iPj1mLmJheGlzLnJhbmdlWzFdJiZ0LmI8PWYuYmF4aXMucmFuZ2VbMF0m JnQuYz49Zi5jYXhpcy5yYW5nZVsxXSYmdC5jPD1mLmNheGlzLnJhbmdlWzBd fSxmLnlheGlzPXt0eXBlOiJsaW5lYXIiLHJhbmdlOltfLGItdy1UXSxkb21h aW46W2ctcy8yLGcrcy8yXSxfaWQ6InkifSx1KGYueWF4aXMsZi5ncmFwaERp di5fZnVsbExheW91dCksZi55YXhpcy5zZXRTY2FsZSgpLGYueWF4aXMuaXNQ dFdpdGhpblJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuITB9O3ZhciBNPWYueWF4 aXMuZG9tYWluWzBdLEE9Zi5hYXhpcz1oKHt9LHQuYWF4aXMse3JhbmdlOltf LGItdy1UXSxzaWRlOiJsZWZ0Iix0aWNrYW5nbGU6KCt0LmFheGlzLnRpY2th bmdsZXx8MCktMzAsZG9tYWluOltNLE0rcyprXSxhbmNob3I6ImZyZWUiLHBv c2l0aW9uOjAsX2lkOiJ5IixfbGVuZ3RoOmF9KTt1KEEsZi5ncmFwaERpdi5f ZnVsbExheW91dCksQS5zZXRTY2FsZSgpO3ZhciBTPWYuYmF4aXM9aCh7fSx0 LmJheGlzLHtyYW5nZTpbYi1fLVQsd10sc2lkZToiYm90dG9tIixkb21haW46 Zi54YXhpcy5kb21haW4sYW5jaG9yOiJmcmVlIixwb3NpdGlvbjowLF9pZDoi eCIsX2xlbmd0aDphfSk7dShTLGYuZ3JhcGhEaXYuX2Z1bGxMYXlvdXQpLFMu c2V0U2NhbGUoKTt2YXIgRT1mLmNheGlzPWgoe30sdC5jYXhpcyx7cmFuZ2U6 W2ItXy13LFRdLHNpZGU6InJpZ2h0Iix0aWNrYW5nbGU6KCt0LmNheGlzLnRp Y2thbmdsZXx8MCkrMzAsZG9tYWluOltNLE0rcyprXSxhbmNob3I6ImZyZWUi LHBvc2l0aW9uOjAsX2lkOiJ5IixfbGVuZ3RoOmF9KTt1KEUsZi5ncmFwaERp di5fZnVsbExheW91dCksRS5zZXRTY2FsZSgpO3ZhciBMPSJNIityKyIsIiso bitpKSsiaCIrYSsibC0iK2EvMisiLC0iK2krIloiO2YuY2xpcERlZi5zZWxl Y3QoInBhdGgiKS5hdHRyKCJkIixMKSxmLmxheWVycy5wbG90Ymcuc2VsZWN0 KCJwYXRoIikuYXR0cigiZCIsTCk7dmFyIEM9Ik0wLCIraSsiaCIrYSsibC0i K2EvMisiLC0iK2krIloiO2YuY2xpcERlZlJlbGF0aXZlLnNlbGVjdCgicGF0 aCIpLmF0dHIoImQiLEMpO3ZhciBQPSJ0cmFuc2xhdGUoIityKyIsIituKyIp IjtmLnBsb3RDb250YWluZXIuc2VsZWN0QWxsKCIuc2NhdHRlcmxheWVyLC5t YXBsYXllciIpLmF0dHIoInRyYW5zZm9ybSIsUCksZi5jbGlwRGVmUmVsYXRp dmUuc2VsZWN0KCJwYXRoIikuYXR0cigidHJhbnNmb3JtIixudWxsKTt2YXIg Tz0idHJhbnNsYXRlKCIrKHItUy5fb2Zmc2V0KSsiLCIrKG4raSkrIikiO2Yu bGF5ZXJzLmJheGlzLmF0dHIoInRyYW5zZm9ybSIsTyksZi5sYXllcnMuYmdy aWQuYXR0cigidHJhbnNmb3JtIixPKTt2YXIgej0idHJhbnNsYXRlKCIrKHIr YS8yKSsiLCIrbisiKXJvdGF0ZSgzMCl0cmFuc2xhdGUoMCwiKy1BLl9vZmZz ZXQrIikiO2YubGF5ZXJzLmFheGlzLmF0dHIoInRyYW5zZm9ybSIseiksZi5s YXllcnMuYWdyaWQuYXR0cigidHJhbnNmb3JtIix6KTt2YXIgST0idHJhbnNs YXRlKCIrKHIrYS8yKSsiLCIrbisiKXJvdGF0ZSgtMzApdHJhbnNsYXRlKDAs IistRS5fb2Zmc2V0KyIpIjtmLmxheWVycy5jYXhpcy5hdHRyKCJ0cmFuc2Zv cm0iLEkpLGYubGF5ZXJzLmNncmlkLmF0dHIoInRyYW5zZm9ybSIsSSksZi5k cmF3QXhlcyghMCksZi5sYXllcnMuYWxpbmUuc2VsZWN0KCJwYXRoIikuYXR0 cigiZCIsQS5zaG93bGluZT8iTSIrcisiLCIrKG4raSkrImwiK2EvMisiLC0i K2k6Ik0wLDAiKS5jYWxsKGwuc3Ryb2tlLEEubGluZWNvbG9yfHwiIzAwMCIp LnN0eWxlKCJzdHJva2Utd2lkdGgiLChBLmxpbmV3aWR0aHx8MCkrInB4Iiks Zi5sYXllcnMuYmxpbmUuc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsUy5zaG93 bGluZT8iTSIrcisiLCIrKG4raSkrImgiK2E6Ik0wLDAiKS5jYWxsKGwuc3Ry b2tlLFMubGluZWNvbG9yfHwiIzAwMCIpLnN0eWxlKCJzdHJva2Utd2lkdGgi LChTLmxpbmV3aWR0aHx8MCkrInB4IiksZi5sYXllcnMuY2xpbmUuc2VsZWN0 KCJwYXRoIikuYXR0cigiZCIsRS5zaG93bGluZT8iTSIrKHIrYS8yKSsiLCIr bisibCIrYS8yKyIsIitpOiJNMCwwIikuY2FsbChsLnN0cm9rZSxFLmxpbmVj b2xvcnx8IiMwMDAiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwoRS5saW5ld2lk dGh8fDApKyJweCIpLGYuZ3JhcGhEaXYuX2NvbnRleHQuc3RhdGljUGxvdHx8 Zi5pbml0SW50ZXJhY3Rpb25zKCksYy5zZXRDbGlwVXJsKGYubGF5ZXJzLmZy b250cGxvdCxmLl9oYXNDbGlwT25BeGlzRmFsc2U/bnVsbDpmLmNsaXBJZCxm LmdyYXBoRGl2KX0sdy5kcmF3QXhlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlz LmdyYXBoRGl2LHI9dGhpcy5pZC5zdWJzdHIoNykrInRpdGxlIixuPXRoaXMu bGF5ZXJzLGE9dGhpcy5hYXhpcyxpPXRoaXMuYmF4aXMsbz10aGlzLmNheGlz O2lmKHRoaXMuZHJhd0F4KGEpLHRoaXMuZHJhd0F4KGkpLHRoaXMuZHJhd0F4 KG8pLHQpe3ZhciBsPU1hdGgubWF4KGEuc2hvd3RpY2tsYWJlbHM/YS50aWNr Zm9udC5zaXplLzI6MCwoby5zaG93dGlja2xhYmVscz8uNzUqby50aWNrZm9u dC5zaXplOjApKygib3V0c2lkZSI9PT1vLnRpY2tzPy44NypvLnRpY2tsZW46 MCkpLGM9KGkuc2hvd3RpY2tsYWJlbHM/aS50aWNrZm9udC5zaXplOjApKygi b3V0c2lkZSI9PT1pLnRpY2tzP2kudGlja2xlbjowKSszO25bImEtdGl0bGUi XT12LmRyYXcoZSwiYSIrcix7cHJvcENvbnRhaW5lcjphLHByb3BOYW1lOnRo aXMuaWQrIi5hYXhpcy50aXRsZSIscGxhY2Vob2xkZXI6cyhlLCJDbGljayB0 byBlbnRlciBDb21wb25lbnQgQSB0aXRsZSIpLGF0dHJpYnV0ZXM6e3g6dGhp cy54MCt0aGlzLncvMix5OnRoaXMueTAtYS50aXRsZS5mb250LnNpemUvMy1s LCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9fSksblsiYi10aXRsZSJdPXYuZHJh dyhlLCJiIityLHtwcm9wQ29udGFpbmVyOmkscHJvcE5hbWU6dGhpcy5pZCsi LmJheGlzLnRpdGxlIixwbGFjZWhvbGRlcjpzKGUsIkNsaWNrIHRvIGVudGVy IENvbXBvbmVudCBCIHRpdGxlIiksYXR0cmlidXRlczp7eDp0aGlzLngwLWMs eTp0aGlzLnkwK3RoaXMuaCsuODMqaS50aXRsZS5mb250LnNpemUrYywidGV4 dC1hbmNob3IiOiJtaWRkbGUifX0pLG5bImMtdGl0bGUiXT12LmRyYXcoZSwi YyIrcix7cHJvcENvbnRhaW5lcjpvLHByb3BOYW1lOnRoaXMuaWQrIi5jYXhp cy50aXRsZSIscGxhY2Vob2xkZXI6cyhlLCJDbGljayB0byBlbnRlciBDb21w b25lbnQgQyB0aXRsZSIpLGF0dHJpYnV0ZXM6e3g6dGhpcy54MCt0aGlzLncr Yyx5OnRoaXMueTArdGhpcy5oKy44MypvLnRpdGxlLmZvbnQuc2l6ZStjLCJ0 ZXh0LWFuY2hvciI6Im1pZGRsZSJ9fSl9fSx3LmRyYXdBeD1mdW5jdGlvbih0 KXt2YXIgZSxyPXRoaXMuZ3JhcGhEaXYsbj10Ll9uYW1lLGE9bi5jaGFyQXQo MCksaT10Ll9pZCxzPXRoaXMubGF5ZXJzW25dLGw9YSsidGlja0xheW91dCIs Yz0oZT10KS50aWNrcytTdHJpbmcoZS50aWNrbGVuKStTdHJpbmcoZS5zaG93 dGlja2xhYmVscyk7dGhpc1tsXSE9PWMmJihzLnNlbGVjdEFsbCgiLiIraSsi dGljayIpLnJlbW92ZSgpLHRoaXNbbF09YyksdC5zZXRTY2FsZSgpO3ZhciB1 PXAuY2FsY1RpY2tzKHQpLGg9cC5jbGlwRW5kcyh0LHUpLGY9cC5tYWtlVHJh bnNGbih0KSxkPXAuZ2V0VGlja1NpZ25zKHQpWzJdLGc9by5kZWcycmFkKDMw KSx2PWQqKHQubGluZXdpZHRofHwxKS8yLG09ZCp0LnRpY2tsZW4seT10aGlz LncseD10aGlzLmgsYj0iYiI9PT1hPyJNMCwiK3YrImwiK01hdGguc2luKGcp Km0rIiwiK01hdGguY29zKGcpKm06Ik0iK3YrIiwwbCIrTWF0aC5jb3MoZykq bSsiLCIrLU1hdGguc2luKGcpKm0sXz17YToiTTAsMGwiK3grIiwtIit5LzIs YjoiTTAsMGwtIit5LzIrIiwtIit4LGM6Ik0wLDBsLSIreCsiLCIreS8yfVth XTtwLmRyYXdUaWNrcyhyLHQse3ZhbHM6Imluc2lkZSI9PT10LnRpY2tzP2g6 dSxsYXllcjpzLHBhdGg6Yix0cmFuc0ZuOmYsY3Jpc3A6ITF9KSxwLmRyYXdH cmlkKHIsdCx7dmFsczpoLGxheWVyOnRoaXMubGF5ZXJzW2ErImdyaWQiXSxw YXRoOl8sdHJhbnNGbjpmLGNyaXNwOiExfSkscC5kcmF3TGFiZWxzKHIsdCx7 dmFsczp1LGxheWVyOnMsdHJhbnNGbjpmLGxhYmVsRm5zOnAubWFrZUxhYmVs Rm5zKHQsMCwzMCl9KX07dmFyIFQ9Yi5NSU5aT09NLzIrLjg3LE09Im0tMC44 NywuNWgiK1QrInYzaC0iKyhUKzUuMikrImwiKyhULzIrMi42KSsiLC0iKygu ODcqVCs0LjUpKyJsMi42LDEuNWwtIitULzIrIiwiKy44NypUKyJaIixBPSJt MC44NywuNWgtIitUKyJ2M2giKyhUKzUuMikrImwtIisoVC8yKzIuNikrIiwt IisoLjg3KlQrNC41KSsibC0yLjYsMS41bCIrVC8yKyIsIisuODcqVCsiWiIs Uz0ibTAsMWwiK1QvMisiLCIrLjg3KlQrImwyLjYsLTEuNWwtIisoVC8yKzIu NikrIiwtIisoLjg3KlQrNC41KSsibC0iKyhULzIrMi42KSsiLCIrKC44NypU KzQuNSkrImwyLjYsMS41bCIrVC8yKyIsLSIrLjg3KlQrIloiLEU9Im0wLjUs MC41aDV2LTJoLTV2LTVoLTJ2NWgtNXYyaDV2NWgyWiIsTD0hMDtmdW5jdGlv biBDKHQpe24uc2VsZWN0KHQpLnNlbGVjdEFsbCgiLnpvb21ib3gsLmpzLXpv b21ib3gtYmFja2Ryb3AsLmpzLXpvb21ib3gtbWVudSwuem9vbWJveC1jb3Ju ZXJzIikucmVtb3ZlKCl9dy5pbml0SW50ZXJhY3Rpb25zPWZ1bmN0aW9uKCl7 dmFyIHQsZSxyLG4sdSxoLGYscCx2LF8sdz10aGlzLFQ9dy5sYXllcnMucGxv dGJnLnNlbGVjdCgicGF0aCIpLm5vZGUoKSxQPXcuZ3JhcGhEaXYsTz1QLl9m dWxsTGF5b3V0Ll96b29tbGF5ZXIsej17ZWxlbWVudDpULGdkOlAscGxvdGlu Zm86e2lkOncuaWQseGF4aXM6dy54YXhpcyx5YXhpczp3LnlheGlzfSxzdWJw bG90OncuaWQscHJlcEZuOmZ1bmN0aW9uKGksbyxzKXt6LnhheGVzPVt3Lnhh eGlzXSx6LnlheGVzPVt3LnlheGlzXTt2YXIgYz1QLl9mdWxsTGF5b3V0LmRy YWdtb2RlO3oubWluRHJhZz0ibGFzc28iPT09Yz8xOnZvaWQgMCwiem9vbSI9 PT1jPyh6Lm1vdmVGbj1OLHouY2xpY2tGbj1ELHouZG9uZUZuPWosZnVuY3Rp b24oaSxvLHMpe3ZhciBjPVQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dD1v LWMubGVmdCxlPXMtYy50b3Ascj17YTp3LmFheGlzLnJhbmdlWzBdLGI6dy5i YXhpcy5yYW5nZVsxXSxjOncuY2F4aXMucmFuZ2VbMV19LHU9cixuPXcuYWF4 aXMucmFuZ2VbMV0tci5hLGg9YSh3LmdyYXBoRGl2Ll9mdWxsTGF5b3V0W3cu aWRdLmJnY29sb3IpLmdldEx1bWluYW5jZSgpLGY9Ik0wLCIrdy5oKyJMIit3 LncvMisiLCAwTCIrdy53KyIsIit3LmgrIloiLHA9ITEsdj1PLmFwcGVuZCgi cGF0aCIpLmF0dHIoImNsYXNzIiwiem9vbWJveCIpLmF0dHIoInRyYW5zZm9y bSIsInRyYW5zbGF0ZSgiK3cueDArIiwgIit3LnkwKyIpIikuc3R5bGUoe2Zp bGw6aD4uMj8icmdiYSgwLDAsMCwwKSI6InJnYmEoMjU1LDI1NSwyNTUsMCki LCJzdHJva2Utd2lkdGgiOjB9KS5hdHRyKCJkIixmKSxfPU8uYXBwZW5kKCJw YXRoIikuYXR0cigiY2xhc3MiLCJ6b29tYm94LWNvcm5lcnMiKS5hdHRyKCJ0 cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit3LngwKyIsICIrdy55MCsiKSIpLnN0 eWxlKHtmaWxsOmwuYmFja2dyb3VuZCxzdHJva2U6bC5kZWZhdWx0TGluZSwi c3Ryb2tlLXdpZHRoIjoxLG9wYWNpdHk6MH0pLmF0dHIoImQiLCJNMCwwWiIp LHgoUCl9KDAsbyxzKSk6InBhbiI9PT1jPyh6Lm1vdmVGbj1WLHouY2xpY2tG bj1ELHouZG9uZUZuPVUscj17YTp3LmFheGlzLnJhbmdlWzBdLGI6dy5iYXhp cy5yYW5nZVsxXSxjOncuY2F4aXMucmFuZ2VbMV19LHU9cix4KFApKToic2Vs ZWN0IiE9PWMmJiJsYXNzbyIhPT1jfHxtKGksbyxzLHosYyl9fTtmdW5jdGlv biBJKHQpe3ZhciBlPXt9O3JldHVybiBlW3cuaWQrIi5hYXhpcy5taW4iXT10 LmEsZVt3LmlkKyIuYmF4aXMubWluIl09dC5iLGVbdy5pZCsiLmNheGlzLm1p biJdPXQuYyxlfWZ1bmN0aW9uIEQodCxlKXt2YXIgcj1QLl9mdWxsTGF5b3V0 LmNsaWNrbW9kZTtDKFApLDI9PT10JiYoUC5lbWl0KCJwbG90bHlfZG91Ymxl Y2xpY2siLG51bGwpLGkuY2FsbCgiX2d1aVJlbGF5b3V0IixQLEkoe2E6MCxi OjAsYzowfSkpKSxyLmluZGV4T2YoInNlbGVjdCIpPi0xJiYxPT09dCYmeShl LFAsW3cueGF4aXNdLFt3LnlheGlzXSx3LmlkLHopLHIuaW5kZXhPZigiZXZl bnQiKT4tMSYmZy5jbGljayhQLGUsdy5pZCl9ZnVuY3Rpb24gUih0LGUpe3Jl dHVybiAxLWUvdy5ofWZ1bmN0aW9uIEYodCxlKXtyZXR1cm4gMS0odCsody5o LWUpL01hdGguc3FydCgzKSkvdy53fWZ1bmN0aW9uIEIodCxlKXtyZXR1cm4o dC0ody5oLWUpL01hdGguc3FydCgzKSkvdy53fWZ1bmN0aW9uIE4oYSxpKXt2 YXIgbz10K2Escz1lK2ksbD1NYXRoLm1heCgwLE1hdGgubWluKDEsUigwLGUp LFIoMCxzKSkpLGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLEYodCxlKSxGKG8s cykpKSxkPU1hdGgubWF4KDAsTWF0aC5taW4oMSxCKHQsZSksQihvLHMpKSks Zz0obC8yK2QpKncudyxtPSgxLWwvMi1jKSp3LncseT0oZyttKS8yLHg9bS1n LFQ9KDEtbCkqdy5oLEw9VC14L2s7eDxiLk1JTlpPT00/KHU9cix2LmF0dHIo ImQiLGYpLF8uYXR0cigiZCIsIk0wLDBaIikpOih1PXthOnIuYStsKm4sYjpy LmIrYypuLGM6ci5jK2Qqbn0sdi5hdHRyKCJkIixmKyJNIitnKyIsIitUKyJI IittKyJMIit5KyIsIitMKyJMIitnKyIsIitUKyJaIiksXy5hdHRyKCJkIiwi TSIrdCsiLCIrZStFKyJNIitnKyIsIitUK00rIk0iK20rIiwiK1QrQSsiTSIr eSsiLCIrTCtTKSkscHx8KHYudHJhbnNpdGlvbigpLnN0eWxlKCJmaWxsIixo Pi4yPyJyZ2JhKDAsMCwwLDAuNCkiOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMyki KS5kdXJhdGlvbigyMDApLF8udHJhbnNpdGlvbigpLnN0eWxlKCJvcGFjaXR5 IiwxKS5kdXJhdGlvbigyMDApLHA9ITApLFAuZW1pdCgicGxvdGx5X3JlbGF5 b3V0aW5nIixJKHUpKX1mdW5jdGlvbiBqKCl7QyhQKSx1IT09ciYmKGkuY2Fs bCgiX2d1aVJlbGF5b3V0IixQLEkodSkpLEwmJlAuZGF0YSYmUC5fY29udGV4 dC5zaG93VGlwcyYmKG8ubm90aWZpZXIocyhQLCJEb3VibGUtY2xpY2sgdG8g em9vbSBiYWNrIG91dCIpLCJsb25nIiksTD0hMSkpfWZ1bmN0aW9uIFYodCxl KXt2YXIgbj10L3cueGF4aXMuX20sYT1lL3cueWF4aXMuX20saT1bKHU9e2E6 ci5hLWEsYjpyLmIrKG4rYSkvMixjOnIuYy0obi1hKS8yfSkuYSx1LmIsdS5j XS5zb3J0KCksbz1pLmluZGV4T2YodS5hKSxzPWkuaW5kZXhPZih1LmIpLGw9 aS5pbmRleE9mKHUuYyk7aVswXTwwJiYoaVsxXStpWzBdLzI8MD8oaVsyXSs9 aVswXStpWzFdLGlbMF09aVsxXT0wKTooaVsyXSs9aVswXS8yLGlbMV0rPWlb MF0vMixpWzBdPTApLHU9e2E6aVtvXSxiOmlbc10sYzppW2xdfSxlPShyLmEt dS5hKSp3LnlheGlzLl9tLHQ9KHIuYy11LmMtci5iK3UuYikqdy54YXhpcy5f bSk7dmFyIGg9InRyYW5zbGF0ZSgiKyh3LngwK3QpKyIsIisody55MCtlKSsi KSI7dy5wbG90Q29udGFpbmVyLnNlbGVjdEFsbCgiLnNjYXR0ZXJsYXllciwu bWFwbGF5ZXIiKS5hdHRyKCJ0cmFuc2Zvcm0iLGgpO3ZhciBmPSJ0cmFuc2xh dGUoIistdCsiLCIrLWUrIikiO3cuY2xpcERlZlJlbGF0aXZlLnNlbGVjdCgi cGF0aCIpLmF0dHIoInRyYW5zZm9ybSIsZiksdy5hYXhpcy5yYW5nZT1bdS5h LHcuc3VtLXUuYi11LmNdLHcuYmF4aXMucmFuZ2U9W3cuc3VtLXUuYS11LmMs dS5iXSx3LmNheGlzLnJhbmdlPVt3LnN1bS11LmEtdS5iLHUuY10sdy5kcmF3 QXhlcyghMSksdy5faGFzQ2xpcE9uQXhpc0ZhbHNlJiZ3LnBsb3RDb250YWlu ZXIuc2VsZWN0KCIuc2NhdHRlcmxheWVyIikuc2VsZWN0QWxsKCIudHJhY2Ui KS5jYWxsKGMuaGlkZU91dHNpZGVSYW5nZVBvaW50cyx3KSxQLmVtaXQoInBs b3RseV9yZWxheW91dGluZyIsSSh1KSl9ZnVuY3Rpb24gVSgpe2kuY2FsbCgi X2d1aVJlbGF5b3V0IixQLEkodSkpfVQub25tb3VzZW1vdmU9ZnVuY3Rpb24o dCl7Zy5ob3ZlcihQLHQsdy5pZCksUC5fZnVsbExheW91dC5fbGFzdGhvdmVy PVQsUC5fZnVsbExheW91dC5faG92ZXJzdWJwbG90PXcuaWR9LFQub25tb3Vz ZW91dD1mdW5jdGlvbih0KXtQLl9kcmFnZ2luZ3x8ZC51bmhvdmVyKFAsdCl9 LGQuaW5pdCh6KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIu Li8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50Ijo2MTAsIi4uLy4uL2NvbXBv bmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2MzAs Ii4uLy4uL2NvbXBvbmVudHMvdGl0bGVzIjo2NzksIi4uLy4uL2xpYiI6NzE3 LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYs Ii4uL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uL2NhcnRlc2lhbi9jb25zdGFu dHMiOjc3MSwiLi4vY2FydGVzaWFuL3NlbGVjdCI6NzgyLCIuLi9jYXJ0ZXNp YW4vc2V0X2NvbnZlcnQiOjc4MywiLi4vcGxvdHMiOjgyNixkMzoxNjUsdGlu eWNvbG9yMjo1MzZ9XSw4NDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi9saWIvbG9nZ2VycyIpLGE9dCgiLi9saWIvbm9vcCIp LGk9dCgiLi9saWIvcHVzaF91bmlxdWUiKSxvPXQoIi4vbGliL2lzX3BsYWlu X29iamVjdCIpLHM9dCgiLi9saWIvZG9tIikuYWRkU3R5bGVSdWxlLGw9dCgi Li9saWIvZXh0ZW5kIiksYz10KCIuL3Bsb3RzL2F0dHJpYnV0ZXMiKSx1PXQo Ii4vcGxvdHMvbGF5b3V0X2F0dHJpYnV0ZXMiKSxoPWwuZXh0ZW5kRmxhdCxm PWwuZXh0ZW5kRGVlcEFsbDtmdW5jdGlvbiBwKHQpe3ZhciBlPXQubmFtZSxh PXQuY2F0ZWdvcmllcyxpPXQubWV0YTtpZihyLm1vZHVsZXNbZV0pbi5sb2co IlR5cGUgIitlKyIgYWxyZWFkeSByZWdpc3RlcmVkIik7ZWxzZXtyLnN1YnBs b3RzUmVnaXN0cnlbdC5iYXNlUGxvdE1vZHVsZS5uYW1lXXx8ZnVuY3Rpb24o dCl7dmFyIGU9dC5uYW1lO2lmKHIuc3VicGxvdHNSZWdpc3RyeVtlXSlyZXR1 cm4gdm9pZCBuLmxvZygiUGxvdCB0eXBlICIrZSsiIGFscmVhZHkgcmVnaXN0 ZXJlZC4iKTtmb3IodmFyIGEgaW4gbSh0KSxyLnN1YnBsb3RzUmVnaXN0cnlb ZV09dCxyLmNvbXBvbmVudHNSZWdpc3RyeSliKGEsdC5uYW1lKX0odC5iYXNl UGxvdE1vZHVsZSk7Zm9yKHZhciBvPXt9LGw9MDtsPGEubGVuZ3RoO2wrKylv W2FbbF1dPSEwLHIuYWxsQ2F0ZWdvcmllc1thW2xdXT0hMDtmb3IodmFyIGMg aW4gci5tb2R1bGVzW2VdPXtfbW9kdWxlOnQsY2F0ZWdvcmllczpvfSxpJiZP YmplY3Qua2V5cyhpKS5sZW5ndGgmJihyLm1vZHVsZXNbZV0ubWV0YT1pKSxy LmFsbFR5cGVzLnB1c2goZSksci5jb21wb25lbnRzUmVnaXN0cnkpeShjLGUp O3QubGF5b3V0QXR0cmlidXRlcyYmaChyLnRyYWNlTGF5b3V0QXR0cmlidXRl cyx0LmxheW91dEF0dHJpYnV0ZXMpO3ZhciB1PXQuYmFzZVBsb3RNb2R1bGUs Zj11Lm5hbWU7aWYoIm1hcGJveCI9PT1mKXt2YXIgcD11LmNvbnN0YW50cy5z dHlsZVJ1bGVzO2Zvcih2YXIgZCBpbiBwKXMoIi5qcy1wbG90bHktcGxvdCAu cGxvdGx5IC5tYXBib3hnbC0iK2QscFtkXSl9ImdlbyIhPT1mJiYibWFwYm94 IiE9PWZ8fHZvaWQgMD09PXR5cGVvZiB3aW5kb3d8fHZvaWQgMCE9PXdpbmRv dy5QbG90bHlHZW9Bc3NldHN8fCh3aW5kb3cuUGxvdGx5R2VvQXNzZXRzPXt0 b3BvanNvbjp7fX0pfX1mdW5jdGlvbiBkKHQpe2lmKCJzdHJpbmciIT10eXBl b2YgdC5uYW1lKXRocm93IG5ldyBFcnJvcigiQ29tcG9uZW50IG1vZHVsZSAq bmFtZSogbXVzdCBiZSBhIHN0cmluZy4iKTt2YXIgZT10Lm5hbWU7Zm9yKHZh ciBuIGluIHIuY29tcG9uZW50c1JlZ2lzdHJ5W2VdPXQsdC5sYXlvdXRBdHRy aWJ1dGVzJiYodC5sYXlvdXRBdHRyaWJ1dGVzLl9pc0xpbmtlZFRvQXJyYXkm Jmkoci5sYXlvdXRBcnJheUNvbnRhaW5lcnMsZSksbSh0KSksci5tb2R1bGVz KXkoZSxuKTtmb3IodmFyIGEgaW4gci5zdWJwbG90c1JlZ2lzdHJ5KWIoZSxh KTtmb3IodmFyIG8gaW4gci50cmFuc2Zvcm1zUmVnaXN0cnkpeChlLG8pO3Qu c2NoZW1hJiZ0LnNjaGVtYS5sYXlvdXQmJmYodSx0LnNjaGVtYS5sYXlvdXQp fWZ1bmN0aW9uIGcodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0Lm5hbWUpdGhy b3cgbmV3IEVycm9yKCJUcmFuc2Zvcm0gbW9kdWxlICpuYW1lKiBtdXN0IGJl IGEgc3RyaW5nLiIpO3ZhciBlPSJUcmFuc2Zvcm0gbW9kdWxlICIrdC5uYW1l LGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQudHJhbnNmb3JtLGk9ImZ1bmN0aW9u Ij09dHlwZW9mIHQuY2FsY1RyYW5zZm9ybTtpZighYSYmIWkpdGhyb3cgbmV3 IEVycm9yKGUrIiBpcyBtaXNzaW5nIGEgKnRyYW5zZm9ybSogb3IgKmNhbGNU cmFuc2Zvcm0qIG1ldGhvZC4iKTtmb3IodmFyIHMgaW4gYSYmaSYmbi5sb2co W2UrIiBoYXMgYm90aCBhICp0cmFuc2Zvcm0qIGFuZCAqY2FsY1RyYW5zZm9y bSogbWV0aG9kcy4iLCJQbGVhc2Ugbm90ZSB0aGF0IGFsbCAqdHJhbnNmb3Jt KiBtZXRob2RzIGFyZSBleGVjdXRlZCIsImJlZm9yZSBhbGwgKmNhbGNUcmFu c2Zvcm0qIG1ldGhvZHMuIl0uam9pbigiICIpKSxvKHQuYXR0cmlidXRlcyl8 fG4ubG9nKGUrIiByZWdpc3RlcmVkIHdpdGhvdXQgYW4gKmF0dHJpYnV0ZXMq IG9iamVjdC4iKSwiZnVuY3Rpb24iIT10eXBlb2YgdC5zdXBwbHlEZWZhdWx0 cyYmbi5sb2coZSsiIHJlZ2lzdGVyZWQgd2l0aG91dCBhICpzdXBwbHlEZWZh dWx0cyogbWV0aG9kLiIpLHIudHJhbnNmb3Jtc1JlZ2lzdHJ5W3QubmFtZV09 dCxyLmNvbXBvbmVudHNSZWdpc3RyeSl4KHMsdC5uYW1lKX1mdW5jdGlvbiB2 KHQpe3ZhciBlPXQubmFtZSxuPWUuc3BsaXQoIi0iKVswXSxhPXQuZGljdGlv bmFyeSxpPXQuZm9ybWF0LG89YSYmT2JqZWN0LmtleXMoYSkubGVuZ3RoLHM9 aSYmT2JqZWN0LmtleXMoaSkubGVuZ3RoLGw9ci5sb2NhbGVSZWdpc3RyeSxj PWxbZV07aWYoY3x8KGxbZV09Yz17fSksbiE9PWUpe3ZhciB1PWxbbl07dXx8 KGxbbl09dT17fSksbyYmdS5kaWN0aW9uYXJ5PT09Yy5kaWN0aW9uYXJ5JiYo dS5kaWN0aW9uYXJ5PWEpLHMmJnUuZm9ybWF0PT09Yy5mb3JtYXQmJih1LmZv cm1hdD1pKX1vJiYoYy5kaWN0aW9uYXJ5PWEpLHMmJihjLmZvcm1hdD1pKX1m dW5jdGlvbiBtKHQpe2lmKHQubGF5b3V0QXR0cmlidXRlcyl7dmFyIGU9dC5s YXlvdXRBdHRyaWJ1dGVzLl9hcnJheUF0dHJSZWdleHBzO2lmKGUpZm9yKHZh ciBuPTA7bjxlLmxlbmd0aDtuKyspaShyLmxheW91dEFycmF5UmVnZXhlcyxl W25dKX19ZnVuY3Rpb24geSh0LGUpe3ZhciBuPXIuY29tcG9uZW50c1JlZ2lz dHJ5W3RdLnNjaGVtYTtpZihuJiZuLnRyYWNlcyl7dmFyIGE9bi50cmFjZXNb ZV07YSYmZihyLm1vZHVsZXNbZV0uX21vZHVsZS5hdHRyaWJ1dGVzLGEpfX1m dW5jdGlvbiB4KHQsZSl7dmFyIG49ci5jb21wb25lbnRzUmVnaXN0cnlbdF0u c2NoZW1hO2lmKG4mJm4udHJhbnNmb3Jtcyl7dmFyIGE9bi50cmFuc2Zvcm1z W2VdO2EmJmYoci50cmFuc2Zvcm1zUmVnaXN0cnlbZV0uYXR0cmlidXRlcyxh KX19ZnVuY3Rpb24gYih0LGUpe3ZhciBuPXIuY29tcG9uZW50c1JlZ2lzdHJ5 W3RdLnNjaGVtYTtpZihuJiZuLnN1YnBsb3RzKXt2YXIgYT1yLnN1YnBsb3Rz UmVnaXN0cnlbZV0saT1hLmxheW91dEF0dHJpYnV0ZXMsbz0ic3VicGxvdCI9 PT1hLmF0dHI/YS5uYW1lOmEuYXR0cjtBcnJheS5pc0FycmF5KG8pJiYobz1v WzBdKTt2YXIgcz1uLnN1YnBsb3RzW29dO2kmJnMmJmYoaSxzKX19ZnVuY3Rp b24gXyh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJih0PXQudHlwZSks dH1yLm1vZHVsZXM9e30sci5hbGxDYXRlZ29yaWVzPXt9LHIuYWxsVHlwZXM9 W10sci5zdWJwbG90c1JlZ2lzdHJ5PXt9LHIudHJhbnNmb3Jtc1JlZ2lzdHJ5 PXt9LHIuY29tcG9uZW50c1JlZ2lzdHJ5PXt9LHIubGF5b3V0QXJyYXlDb250 YWluZXJzPVtdLHIubGF5b3V0QXJyYXlSZWdleGVzPVtdLHIudHJhY2VMYXlv dXRBdHRyaWJ1dGVzPXt9LHIubG9jYWxlUmVnaXN0cnk9e30sci5hcGlNZXRo b2RSZWdpc3RyeT17fSxyLmNvbGxlY3RhYmxlU3VicGxvdFR5cGVzPW51bGws ci5yZWdpc3Rlcj1mdW5jdGlvbih0KXtpZihyLmNvbGxlY3RhYmxlU3VicGxv dFR5cGVzPW51bGwsIXQpdGhyb3cgbmV3IEVycm9yKCJObyBhcmd1bWVudCBw YXNzZWQgdG8gUGxvdGx5LnJlZ2lzdGVyLiIpO3QmJiFBcnJheS5pc0FycmF5 KHQpJiYodD1bdF0pO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIg bj10W2VdO2lmKCFuKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBtb2R1bGUg d2FzIGF0dGVtcHRlZCB0byBiZSByZWdpc3RlcmVkISIpO3N3aXRjaChuLm1v ZHVsZVR5cGUpe2Nhc2UidHJhY2UiOnAobik7YnJlYWs7Y2FzZSJ0cmFuc2Zv cm0iOmcobik7YnJlYWs7Y2FzZSJjb21wb25lbnQiOmQobik7YnJlYWs7Y2Fz ZSJsb2NhbGUiOnYobik7YnJlYWs7Y2FzZSJhcGlNZXRob2QiOnZhciBhPW4u bmFtZTtyLmFwaU1ldGhvZFJlZ2lzdHJ5W2FdPW4uZm47YnJlYWs7ZGVmYXVs dDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbW9kdWxlIHdhcyBhdHRlbXB0 ZWQgdG8gYmUgcmVnaXN0ZXJlZCEiKX19fSxyLmdldE1vZHVsZT1mdW5jdGlv bih0KXt2YXIgZT1yLm1vZHVsZXNbXyh0KV07cmV0dXJuISFlJiZlLl9tb2R1 bGV9LHIudHJhY2VJcz1mdW5jdGlvbih0LGUpe2lmKCJ2YXJpb3VzIj09PSh0 PV8odCkpKXJldHVybiExO3ZhciBhPXIubW9kdWxlc1t0XTtyZXR1cm4gYXx8 KHQmJiJhcmVhIiE9PXQmJm4ubG9nKCJVbnJlY29nbml6ZWQgdHJhY2UgdHlw ZSAiK3QrIi4iKSxhPXIubW9kdWxlc1tjLnR5cGUuZGZsdF0pLCEhYS5jYXRl Z29yaWVzW2VdfSxyLmdldFRyYW5zZm9ybUluZGljZXM9ZnVuY3Rpb24odCxl KXtmb3IodmFyIHI9W10sbj10LnRyYW5zZm9ybXN8fFtdLGE9MDthPG4ubGVu Z3RoO2ErKyluW2FdLnR5cGU9PT1lJiZyLnB1c2goYSk7cmV0dXJuIHJ9LHIu aGFzVHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQudHJhbnNm b3Jtc3x8W10sbj0wO248ci5sZW5ndGg7bisrKWlmKHJbbl0udHlwZT09PWUp cmV0dXJuITA7cmV0dXJuITF9LHIuZ2V0Q29tcG9uZW50TWV0aG9kPWZ1bmN0 aW9uKHQsZSl7dmFyIG49ci5jb21wb25lbnRzUmVnaXN0cnlbdF07cmV0dXJu IG4mJm5bZV18fGF9LHIuY2FsbD1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50 c1swXSxlPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiByLmFw aU1ldGhvZFJlZ2lzdHJ5W3RdLmFwcGx5KG51bGwsZSl9fSx7Ii4vbGliL2Rv bSI6NzA2LCIuL2xpYi9leHRlbmQiOjcwOCwiLi9saWIvaXNfcGxhaW5fb2Jq ZWN0Ijo3MTgsIi4vbGliL2xvZ2dlcnMiOjcyMSwiLi9saWIvbm9vcCI6NzI2 LCIuL2xpYi9wdXNoX3VuaXF1ZSI6NzMxLCIuL3Bsb3RzL2F0dHJpYnV0ZXMi Ojc2MiwiLi9wbG90cy9sYXlvdXRfYXR0cmlidXRlcyI6ODE3fV0sODQ3Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3JlZ2lz dHJ5IiksYT10KCIuLi9saWIiKSxpPWEuZXh0ZW5kRmxhdCxvPWEuZXh0ZW5k RGVlcDtmdW5jdGlvbiBzKHQpe3ZhciBlO3N3aXRjaCh0KXtjYXNlInRoZW1l c19fdGh1bWIiOmU9e2F1dG9zaXplOiEwLHdpZHRoOjE1MCxoZWlnaHQ6MTUw LHRpdGxlOnt0ZXh0OiIifSxzaG93bGVnZW5kOiExLG1hcmdpbjp7bDo1LHI6 NSx0OjUsYjo1LHBhZDowfSxhbm5vdGF0aW9uczpbXX07YnJlYWs7Y2FzZSJ0 aHVtYm5haWwiOmU9e3RpdGxlOnt0ZXh0OiIifSxoaWRlc291cmNlczohMCxz aG93bGVnZW5kOiExLGJvcmRlcndpZHRoOjAsYm9yZGVyY29sb3I6IiIsbWFy Z2luOntsOjEscjoxLHQ6MSxiOjEscGFkOjB9LGFubm90YXRpb25zOltdfTti cmVhaztkZWZhdWx0OmU9e319cmV0dXJuIGV9ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7dmFyIHI7dC5mcmFtZXdvcmsmJnQuZnJhbWV3b3JrLmlzUG9sYXIm Jih0PXQuZnJhbWV3b3JrLmdldENvbmZpZygpKTt2YXIgYSxsPXQuZGF0YSxj PXQubGF5b3V0LHU9byhbXSxsKSxoPW8oe30sYyxzKGUudGlsZUNsYXNzKSks Zj10Ll9jb250ZXh0fHx7fTtpZihlLndpZHRoJiYoaC53aWR0aD1lLndpZHRo KSxlLmhlaWdodCYmKGguaGVpZ2h0PWUuaGVpZ2h0KSwidGh1bWJuYWlsIj09 PWUudGlsZUNsYXNzfHwidGhlbWVzX190aHVtYiI9PT1lLnRpbGVDbGFzcyl7 aC5hbm5vdGF0aW9ucz1bXTt2YXIgcD1PYmplY3Qua2V5cyhoKTtmb3Iocj0w O3I8cC5sZW5ndGg7cisrKWE9cFtyXSxbInhheGlzIiwieWF4aXMiLCJ6YXhp cyJdLmluZGV4T2YoYS5zbGljZSgwLDUpKT4tMSYmKGhbcFtyXV0udGl0bGU9 e3RleHQ6IiJ9KTtmb3Iocj0wO3I8dS5sZW5ndGg7cisrKXt2YXIgZD11W3Jd O2Quc2hvd3NjYWxlPSExLGQubWFya2VyJiYoZC5tYXJrZXIuc2hvd3NjYWxl PSExKSxuLnRyYWNlSXMoZCwicGllLWxpa2UiKSYmKGQudGV4dHBvc2l0aW9u PSJub25lIil9fWlmKEFycmF5LmlzQXJyYXkoZS5hbm5vdGF0aW9ucykpZm9y KHI9MDtyPGUuYW5ub3RhdGlvbnMubGVuZ3RoO3IrKyloLmFubm90YXRpb25z LnB1c2goZS5hbm5vdGF0aW9uc1tyXSk7dmFyIGc9T2JqZWN0LmtleXMoaCku ZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKC9ec2NlbmVcZCok Lyl9KTtpZihnLmxlbmd0aCl7dmFyIHY9e307Zm9yKCJ0aHVtYm5haWwiPT09 ZS50aWxlQ2xhc3MmJih2PXt0aXRsZTp7dGV4dDoiIn0sc2hvd2F4ZXNsYWJl bHM6ITEsc2hvd3RpY2tsYWJlbHM6ITEsbGluZXRpY2tlbmFibGU6ITF9KSxy PTA7cjxnLmxlbmd0aDtyKyspe3ZhciBtPWhbZ1tyXV07bS54YXhpc3x8KG0u eGF4aXM9e30pLG0ueWF4aXN8fChtLnlheGlzPXt9KSxtLnpheGlzfHwobS56 YXhpcz17fSksaShtLnhheGlzLHYpLGkobS55YXhpcyx2KSxpKG0uemF4aXMs diksbS5fc2NlbmU9bnVsbH19dmFyIHk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgiZGl2Iik7ZS50aWxlQ2xhc3MmJih5LmNsYXNzTmFtZT1lLnRpbGVDbGFz cyk7dmFyIHg9e2dkOnksdGQ6eSxsYXlvdXQ6aCxkYXRhOnUsY29uZmlnOntz dGF0aWNQbG90OnZvaWQgMD09PWUuc3RhdGljUGxvdHx8ZS5zdGF0aWNQbG90 LHBsb3RHbFBpeGVsUmF0aW86dm9pZCAwPT09ZS5wbG90R2xQaXhlbFJhdGlv PzI6ZS5wbG90R2xQaXhlbFJhdGlvLGRpc3BsYXlsb2dvOmUuZGlzcGxheWxv Z298fCExLHNob3dMaW5rOmUuc2hvd0xpbmt8fCExLHNob3dUaXBzOmUuc2hv d1RpcHN8fCExLG1hcGJveEFjY2Vzc1Rva2VuOmYubWFwYm94QWNjZXNzVG9r ZW59fTtyZXR1cm4idHJhbnNwYXJlbnQiIT09ZS5zZXRCYWNrZ3JvdW5kJiYo eC5jb25maWcuc2V0QmFja2dyb3VuZD1lLnNldEJhY2tncm91bmR8fCJvcGFx dWUiKSx4LmdkLmRlZmF1bHRMYXlvdXQ9cyhlLnRpbGVDbGFzcykseH19LHsi Li4vbGliIjo3MTcsIi4uL3JlZ2lzdHJ5Ijo4NDZ9XSw4NDg6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliIiksYT10KCIu Li9wbG90X2FwaS90b19pbWFnZSIpLGk9dCgiLi9maWxlc2F2ZXIiKSxvPXQo Ii4vaGVscGVycyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByO3Jl dHVybiBuLmlzUGxhaW5PYmplY3QodCl8fChyPW4uZ2V0R3JhcGhEaXYodCkp LChlPWV8fHt9KS5mb3JtYXQ9ZS5mb3JtYXR8fCJwbmciLGUuaW1hZ2VEYXRh T25seT0hMCxuZXcgUHJvbWlzZShmdW5jdGlvbihzLGwpe3ImJnIuX3NuYXBz aG90SW5Qcm9ncmVzcyYmbChuZXcgRXJyb3IoIlNuYXBzaG90dGluZyBhbHJl YWR5IGluIHByb2dyZXNzLiIpKSxuLmlzSUUoKSYmInN2ZyIhPT1lLmZvcm1h dCYmbChuZXcgRXJyb3Ioby5NU0dfSUVfQkFEX0ZPUk1BVCkpLHImJihyLl9z bmFwc2hvdEluUHJvZ3Jlc3M9ITApO3ZhciBjPWEodCxlKSx1PWUuZmlsZW5h bWV8fHQuZm58fCJuZXdwbG90Ijt1Kz0iLiIrZS5mb3JtYXQsYy50aGVuKGZ1 bmN0aW9uKHQpe3JldHVybiByJiYoci5fc25hcHNob3RJblByb2dyZXNzPSEx KSxpKHQsdSxlLmZvcm1hdCl9KS50aGVuKGZ1bmN0aW9uKHQpe3ModCl9KS5j YXRjaChmdW5jdGlvbih0KXtyJiYoci5fc25hcHNob3RJblByb2dyZXNzPSEx KSxsKHQpfSl9KX19LHsiLi4vbGliIjo3MTcsIi4uL3Bsb3RfYXBpL3RvX2lt YWdlIjo3NTgsIi4vZmlsZXNhdmVyIjo4NDksIi4vaGVscGVycyI6ODUwfV0s ODQ5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u L2xpYiIpLGE9dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksbz0iZG93 bmxvYWQiaW4gaTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocyxsKXt2 YXIgYyx1O2lmKG4uaXNJRTlvckJlbG93KCkmJmwobmV3IEVycm9yKCJJRSA8 IDEwIHVuc3VwcG9ydGVkIikpLG4uaXNTYWZhcmkoKSl7dmFyIGg9InN2ZyI9 PT1yPyIsIjoiO2Jhc2U2NCwiO3JldHVybiBhLm9jdGV0U3RyZWFtKGgrZW5j b2RlVVJJQ29tcG9uZW50KHQpKSxzKGUpfXJldHVybiBuLmlzSUUoKT8oYz1h LmNyZWF0ZUJsb2IodCwic3ZnIiksd2luZG93Lm5hdmlnYXRvci5tc1NhdmVC bG9iKGMsZSksYz1udWxsLHMoZSkpOm8/KGM9YS5jcmVhdGVCbG9iKHQsciks dT1hLmNyZWF0ZU9iamVjdFVSTChjKSxpLmhyZWY9dSxpLmRvd25sb2FkPWUs ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpKSxpLmNsaWNrKCksZG9jdW1l bnQuYm9keS5yZW1vdmVDaGlsZChpKSxhLnJldm9rZU9iamVjdFVSTCh1KSxj PW51bGwscyhlKSk6dm9pZCBsKG5ldyBFcnJvcigiZG93bmxvYWQgZXJyb3Ii KSl9KX19LHsiLi4vbGliIjo3MTcsIi4vaGVscGVycyI6ODUwfV0sODUwOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3JlZ2lz dHJ5Iik7ci5nZXREZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gdC5faGFzJiYo dC5faGFzKCJnbDNkIil8fHQuX2hhcygiZ2wyZCIpfHx0Ll9oYXMoIm1hcGJv eCIpKT81MDA6MH0sci5nZXRSZWRyYXdGdW5jPWZ1bmN0aW9uKHQpe3JldHVy biBmdW5jdGlvbigpe3ZhciBlPXQuX2Z1bGxMYXlvdXR8fHt9OyEoZS5faGFz JiZlLl9oYXMoInBvbGFyIikpJiZ0LmRhdGEmJnQuZGF0YVswXSYmdC5kYXRh WzBdLnJ8fG4uZ2V0Q29tcG9uZW50TWV0aG9kKCJjb2xvcmJhciIsImRyYXci KSh0KX19LHIuZW5jb2RlU1ZHPWZ1bmN0aW9uKHQpe3JldHVybiJkYXRhOmlt YWdlL3N2Zyt4bWwsIitlbmNvZGVVUklDb21wb25lbnQodCl9O3ZhciBhPXdp bmRvdy5VUkx8fHdpbmRvdy53ZWJraXRVUkw7ci5jcmVhdGVPYmplY3RVUkw9 ZnVuY3Rpb24odCl7cmV0dXJuIGEuY3JlYXRlT2JqZWN0VVJMKHQpfSxyLnJl dm9rZU9iamVjdFVSTD1mdW5jdGlvbih0KXtyZXR1cm4gYS5yZXZva2VPYmpl Y3RVUkwodCl9LHIuY3JlYXRlQmxvYj1mdW5jdGlvbih0LGUpe2lmKCJzdmci PT09ZSlyZXR1cm4gbmV3IHdpbmRvdy5CbG9iKFt0XSx7dHlwZToiaW1hZ2Uv c3ZnK3htbDtjaGFyc2V0PXV0Zi04In0pO3ZhciByPWZ1bmN0aW9uKHQpe2Zv cih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheUJ1ZmZlcihlKSxuPW5ldyBV aW50OEFycmF5KHIpLGE9MDthPGU7YSsrKW5bYV09dC5jaGFyQ29kZUF0KGEp O3JldHVybiByfSh3aW5kb3cuYXRvYih0KSk7cmV0dXJuIG5ldyB3aW5kb3cu QmxvYihbcl0se3R5cGU6ImltYWdlLyIrZX0pfSxyLm9jdGV0U3RyZWFtPWZ1 bmN0aW9uKHQpe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9ImRhdGE6YXBwbGlj YXRpb24vb2N0ZXQtc3RyZWFtIit0fSxyLklNQUdFX1VSTF9QUkVGSVg9L15k YXRhOmltYWdlXC9cdys7YmFzZTY0LC8sci5NU0dfSUVfQkFEX0ZPUk1BVD0i U29ycnkgSUUgZG9lcyBub3Qgc3VwcG9ydCBkb3dubG9hZGluZyBmcm9tIGNh bnZhcy4gVHJ5IHtmb3JtYXQ6J3N2Zyd9IGluc3RlYWQuIn0seyIuLi9yZWdp c3RyeSI6ODQ2fV0sODUxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4vaGVscGVycyIpLGE9e2dldERlbGF5Om4uZ2V0RGVsYXks Z2V0UmVkcmF3RnVuYzpuLmdldFJlZHJhd0Z1bmMsY2xvbmU6dCgiLi9jbG9u ZXBsb3QiKSx0b1NWRzp0KCIuL3Rvc3ZnIiksc3ZnVG9JbWc6dCgiLi9zdmd0 b2ltZyIpLHRvSW1hZ2U6dCgiLi90b2ltYWdlIiksZG93bmxvYWRJbWFnZTp0 KCIuL2Rvd25sb2FkIil9O2UuZXhwb3J0cz1hfSx7Ii4vY2xvbmVwbG90Ijo4 NDcsIi4vZG93bmxvYWQiOjg0OCwiLi9oZWxwZXJzIjo4NTAsIi4vc3ZndG9p bWciOjg1MiwiLi90b2ltYWdlIjo4NTMsIi4vdG9zdmciOjg1NH1dLDg1Mjpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIi KSxhPXQoImV2ZW50cyIpLkV2ZW50RW1pdHRlcixpPXQoIi4vaGVscGVycyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmVtaXR0ZXJ8fG5ldyBh LHI9bmV3IFByb21pc2UoZnVuY3Rpb24oYSxvKXt2YXIgcz13aW5kb3cuSW1h Z2UsbD10LnN2ZyxjPXQuZm9ybWF0fHwicG5nIjtpZihuLmlzSUUoKSYmInN2 ZyIhPT1jKXt2YXIgdT1uZXcgRXJyb3IoaS5NU0dfSUVfQkFEX0ZPUk1BVCk7 cmV0dXJuIG8odSksdC5wcm9taXNlP3I6ZS5lbWl0KCJlcnJvciIsdSl9dmFy IGgsZixwPXQuY2FudmFzLGQ9dC5zY2FsZXx8MSxnPXQud2lkdGh8fDMwMCx2 PXQuaGVpZ2h0fHwxNTAsbT1kKmcseT1kKnYseD1wLmdldENvbnRleHQoIjJk IiksYj1uZXcgczsic3ZnIj09PWN8fG4uaXNJRTlvckJlbG93KCl8fG4uaXNT YWZhcmkoKT9mPWkuZW5jb2RlU1ZHKGwpOihoPWkuY3JlYXRlQmxvYihsLCJz dmciKSxmPWkuY3JlYXRlT2JqZWN0VVJMKGgpKSxwLndpZHRoPW0scC5oZWln aHQ9eSxiLm9ubG9hZD1mdW5jdGlvbigpe3ZhciByO3N3aXRjaChoPW51bGws aS5yZXZva2VPYmplY3RVUkwoZiksInN2ZyIhPT1jJiZ4LmRyYXdJbWFnZShi LDAsMCxtLHkpLGMpe2Nhc2UianBlZyI6cj1wLnRvRGF0YVVSTCgiaW1hZ2Uv anBlZyIpO2JyZWFrO2Nhc2UicG5nIjpyPXAudG9EYXRhVVJMKCJpbWFnZS9w bmciKTticmVhaztjYXNlIndlYnAiOnI9cC50b0RhdGFVUkwoImltYWdlL3dl YnAiKTticmVhaztjYXNlInN2ZyI6cj1mO2JyZWFrO2RlZmF1bHQ6dmFyIG49 IkltYWdlIGZvcm1hdCBpcyBub3QganBlZywgcG5nLCBzdmcgb3Igd2VicC4i O2lmKG8obmV3IEVycm9yKG4pKSwhdC5wcm9taXNlKXJldHVybiBlLmVtaXQo ImVycm9yIixuKX1hKHIpLHQucHJvbWlzZXx8ZS5lbWl0KCJzdWNjZXNzIixy KX0sYi5vbmVycm9yPWZ1bmN0aW9uKHIpe2lmKGg9bnVsbCxpLnJldm9rZU9i amVjdFVSTChmKSxvKHIpLCF0LnByb21pc2UpcmV0dXJuIGUuZW1pdCgiZXJy b3IiLHIpfSxiLnNyYz1mfSk7cmV0dXJuIHQucHJvbWlzZT9yOmV9fSx7Ii4u L2xpYiI6NzE3LCIuL2hlbHBlcnMiOjg1MCxldmVudHM6MTA2fV0sODUzOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImV2ZW50cyIp LkV2ZW50RW1pdHRlcixhPXQoIi4uL3JlZ2lzdHJ5IiksaT10KCIuLi9saWIi KSxvPXQoIi4vaGVscGVycyIpLHM9dCgiLi9jbG9uZXBsb3QiKSxsPXQoIi4v dG9zdmciKSxjPXQoIi4vc3ZndG9pbWciKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXt2YXIgcj1uZXcgbix1PXModCx7Zm9ybWF0OiJwbmcifSksaD11Lmdk O2guc3R5bGUucG9zaXRpb249ImFic29sdXRlIixoLnN0eWxlLmxlZnQ9Ii01 MDAwcHgiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaCk7dmFyIGY9by5n ZXRSZWRyYXdGdW5jKGgpO3JldHVybiBhLmNhbGwoInBsb3QiLGgsdS5kYXRh LHUubGF5b3V0LHUuY29uZmlnKS50aGVuKGYpLnRoZW4oZnVuY3Rpb24oKXt2 YXIgdD1vLmdldERlbGF5KGguX2Z1bGxMYXlvdXQpO3NldFRpbWVvdXQoZnVu Y3Rpb24oKXt2YXIgdD1sKGgpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi Y2FudmFzIik7bi5pZD1pLnJhbmRzdHIoKSwocj1jKHtmb3JtYXQ6ZS5mb3Jt YXQsd2lkdGg6aC5fZnVsbExheW91dC53aWR0aCxoZWlnaHQ6aC5fZnVsbExh eW91dC5oZWlnaHQsY2FudmFzOm4sZW1pdHRlcjpyLHN2Zzp0fSkpLmNsZWFu PWZ1bmN0aW9uKCl7aCYmZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChoKX19 LHQpfSkuY2F0Y2goZnVuY3Rpb24odCl7ci5lbWl0KCJlcnJvciIsdCl9KSxy fX0seyIuLi9saWIiOjcxNywiLi4vcmVnaXN0cnkiOjg0NiwiLi9jbG9uZXBs b3QiOjg0NywiLi9oZWxwZXJzIjo4NTAsIi4vc3ZndG9pbWciOjg1MiwiLi90 b3N2ZyI6ODU0LGV2ZW50czoxMDZ9XSw4NTQ6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uL2xpYiIpLGk9dCgi Li4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi9jb21wb25lbnRzL2Nv bG9yIikscz10KCIuLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpLGw9 LyIvZyxjPW5ldyBSZWdFeHAoJygiVE9CRVNUUklQUEVEKXwoVE9CRVNUUklQ UEVEIiknLCJnIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgdSxo PXQuX2Z1bGxMYXlvdXQsZj1oLl9wYXBlcixwPWguX3RvcHBhcGVyLGQ9aC53 aWR0aCxnPWguaGVpZ2h0O2YuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxk IikuY2FsbChpLnNldFJlY3QsMCwwLGQsZykuY2FsbChvLmZpbGwsaC5wYXBl cl9iZ2NvbG9yKTt2YXIgdj1oLl9iYXNlUGxvdE1vZHVsZXN8fFtdO2Zvcih1 PTA7dTx2Lmxlbmd0aDt1Kyspe3ZhciBtPXZbdV07bS50b1NWRyYmbS50b1NW Ryh0KX1pZihwKXt2YXIgeT1wLm5vZGUoKS5jaGlsZE5vZGVzLHg9QXJyYXku cHJvdG90eXBlLnNsaWNlLmNhbGwoeSk7Zm9yKHU9MDt1PHgubGVuZ3RoO3Ur Kyl7dmFyIGI9eFt1XTtiLmNoaWxkTm9kZXMubGVuZ3RoJiZmLm5vZGUoKS5h cHBlbmRDaGlsZChiKX19aWYoaC5fZHJhZ2dlcnMmJmguX2RyYWdnZXJzLnJl bW92ZSgpLGYubm9kZSgpLnN0eWxlLmJhY2tncm91bmQ9IiIsZi5zZWxlY3RB bGwoInRleHQiKS5hdHRyKHsiZGF0YS11bmZvcm1hdHRlZCI6bnVsbCwiZGF0 YS1tYXRoIjpudWxsfSkuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0 KHRoaXMpO2lmKCJoaWRkZW4iIT09dGhpcy5zdHlsZS52aXNpYmlsaXR5JiYi bm9uZSIhPT10aGlzLnN0eWxlLmRpc3BsYXkpe3Quc3R5bGUoe3Zpc2liaWxp dHk6bnVsbCxkaXNwbGF5Om51bGx9KTt2YXIgZT10aGlzLnN0eWxlLmZvbnRG YW1pbHk7ZSYmLTEhPT1lLmluZGV4T2YoJyInKSYmdC5zdHlsZSgiZm9udC1m YW1pbHkiLGUucmVwbGFjZShsLCJUT0JFU1RSSVBQRUQiKSl9ZWxzZSB0LnJl bW92ZSgpfSksaC5fZ3JhZGllbnRVcmxRdWVyeVBhcnRzKXt2YXIgXz1bXTtm b3IodmFyIHcgaW4gaC5fZ3JhZGllbnRVcmxRdWVyeVBhcnRzKV8ucHVzaCh3 KTtfLmxlbmd0aCYmZi5zZWxlY3RBbGwoXy5qb2luKCIsIikpLmVhY2goZnVu Y3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxlPXRoaXMuc3R5bGUuZmls bDtlJiYtMSE9PWUuaW5kZXhPZigidXJsKCIpJiZ0LnN0eWxlKCJmaWxsIixl LnJlcGxhY2UobCwiVE9CRVNUUklQUEVEIikpO3ZhciByPXRoaXMuc3R5bGUu c3Ryb2tlO3ImJi0xIT09ci5pbmRleE9mKCJ1cmwoIikmJnQuc3R5bGUoInN0 cm9rZSIsci5yZXBsYWNlKGwsIlRPQkVTVFJJUFBFRCIpKX0pfSJwZGYiIT09 ZSYmImVwcyIhPT1lfHxmLnNlbGVjdEFsbCgiI01hdGhKYXhfU1ZHX2dseXBo cyBwYXRoIikuYXR0cigic3Ryb2tlLXdpZHRoIiwwKSxmLm5vZGUoKS5zZXRB dHRyaWJ1dGVOUyhzLnhtbG5zLCJ4bWxucyIscy5zdmcpLGYubm9kZSgpLnNl dEF0dHJpYnV0ZU5TKHMueG1sbnMsInhtbG5zOnhsaW5rIixzLnhsaW5rKSwi c3ZnIj09PWUmJnImJihmLmF0dHIoIndpZHRoIixyKmQpLGYuYXR0cigiaGVp Z2h0IixyKmcpLGYuYXR0cigidmlld0JveCIsIjAgMCAiK2QrIiAiK2cpKTt2 YXIgaz0obmV3IHdpbmRvdy5YTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0 cmluZyhmLm5vZGUoKSk7cmV0dXJuIGs9ZnVuY3Rpb24odCl7dmFyIGU9bi5z ZWxlY3QoImJvZHkiKS5hcHBlbmQoImRpdiIpLnN0eWxlKHtkaXNwbGF5OiJu b25lIn0pLmh0bWwoIiIpLHI9dC5yZXBsYWNlKC8oJlteO10qOykvZ2ksZnVu Y3Rpb24odCl7cmV0dXJuIiZsdDsiPT09dD8iJiM2MDsiOiImcnQ7Ij09PXQ/ IiYjNjI7IjotMSE9PXQuaW5kZXhPZigiPCIpfHwtMSE9PXQuaW5kZXhPZigi PiIpPyIiOmUuaHRtbCh0KS50ZXh0KCl9KTtyZXR1cm4gZS5yZW1vdmUoKSxy fShrKSxrPShrPWsucmVwbGFjZSgvJig/IVx3Kzt8XCNbMC05XSs7fCBcI3hb MC05QS1GXSs7KS9nLCImYW1wOyIpKS5yZXBsYWNlKGMsIiciKSxhLmlzSUUo KSYmKGs9KGs9KGs9ay5yZXBsYWNlKC8iL2dpLCInIikpLnJlcGxhY2UoLyhc KCcjKShbXiddKikoJ1wpKS9naSwnKCIjJDIiKScpKS5yZXBsYWNlKC8oXFwn KS9naSwnIicpKSxrfX0seyIuLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4u L2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi9jb25zdGFudHMveG1sbnNf bmFtZXNwYWNlcyI6Njk0LCIuLi9saWIiOjcxNyxkMzoxNjV9XSw4NTU6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGli Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxl bmd0aDtyKyspdFtyXS5pPXI7bi5tZXJnZUFycmF5KGUudGV4dCx0LCJ0eCIp LG4ubWVyZ2VBcnJheShlLmhvdmVydGV4dCx0LCJodHgiKTt2YXIgYT1lLm1h cmtlcjtpZihhKXtuLm1lcmdlQXJyYXkoYS5vcGFjaXR5LHQsIm1vIiwhMCks bi5tZXJnZUFycmF5KGEuY29sb3IsdCwibWMiKTt2YXIgaT1hLmxpbmU7aSYm KG4ubWVyZ2VBcnJheShpLmNvbG9yLHQsIm1sYyIpLG4ubWVyZ2VBcnJheUNh c3RQb3NpdGl2ZShpLndpZHRoLHQsIm1sdyIpKX19fSx7Ii4uLy4uL2xpYiI6 NzE3fV0sODU2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMv dGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxpPXQo Ii4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxh dGVBdHRycyxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRy aWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxs PXQoIi4vY29uc3RhbnRzIiksYz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0 ZW5kRmxhdCx1PXMoe2VkaXRUeXBlOiJjYWxjIixhcnJheU9rOiEwLGNvbG9y RWRpdFR5cGU6InN0eWxlIn0pLGg9Yyh7fSxuLm1hcmtlci5saW5lLndpZHRo LHtkZmx0OjB9KSxmPWMoe3dpZHRoOmgsZWRpdFR5cGU6ImNhbGMifSxvKCJt YXJrZXIubGluZSIpKSxwPWMoe2xpbmU6ZixlZGl0VHlwZToiY2FsYyJ9LG8o Im1hcmtlciIpLHtvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLGFycmF5T2s6 ITAsZGZsdDoxLG1pbjowLG1heDoxLGVkaXRUeXBlOiJzdHlsZSJ9fSk7ZS5l eHBvcnRzPXt4Om4ueCx4MDpuLngwLGR4Om4uZHgseTpuLnkseTA6bi55MCxk eTpuLmR5LHRleHQ6bi50ZXh0LHRleHR0ZW1wbGF0ZTppKHtlZGl0VHlwZToi cGxvdCJ9LHtrZXlzOmwuZXZlbnREYXRhS2V5c30pLGhvdmVydGV4dDpuLmhv dmVydGV4dCxob3ZlcnRlbXBsYXRlOmEoe30se2tleXM6bC5ldmVudERhdGFL ZXlzfSksdGV4dHBvc2l0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1 ZXM6WyJpbnNpZGUiLCJvdXRzaWRlIiwiYXV0byIsIm5vbmUiXSxkZmx0OiJu b25lIixhcnJheU9rOiEwLGVkaXRUeXBlOiJjYWxjIn0saW5zaWRldGV4dGFu Y2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZW5kIiwibWlk ZGxlIiwic3RhcnQiXSxkZmx0OiJlbmQiLGVkaXRUeXBlOiJwbG90In0sdGV4 dGFuZ2xlOnt2YWxUeXBlOiJhbmdsZSIsZGZsdDoiYXV0byIsZWRpdFR5cGU6 InBsb3QifSx0ZXh0Zm9udDpjKHt9LHUse30pLGluc2lkZXRleHRmb250OmMo e30sdSx7fSksb3V0c2lkZXRleHRmb250OmMoe30sdSx7fSksY29uc3RyYWlu dGV4dDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaW5zaWRlIiwi b3V0c2lkZSIsImJvdGgiLCJub25lIl0sZGZsdDoiYm90aCIsZWRpdFR5cGU6 ImNhbGMifSxjbGlwb25heGlzOmMoe30sbi5jbGlwb25heGlzLHt9KSxvcmll bnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidiIsImgi XSxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LGJhc2U6e3ZhbFR5 cGU6ImFueSIsZGZsdDpudWxsLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMi fSxvZmZzZXQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGFycmF5T2s6 ITAsZWRpdFR5cGU6ImNhbGMifSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixk Zmx0Om51bGwsbWluOjAsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LG1h cmtlcjpwLG9mZnNldGdyb3VwOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIs ZWRpdFR5cGU6ImNhbGMifSxhbGlnbm1lbnRncm91cDp7dmFsVHlwZToic3Ry aW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sc2VsZWN0ZWQ6e21hcmtl cjp7b3BhY2l0eTpuLnNlbGVjdGVkLm1hcmtlci5vcGFjaXR5LGNvbG9yOm4u c2VsZWN0ZWQubWFya2VyLmNvbG9yLGVkaXRUeXBlOiJzdHlsZSJ9LHRleHRm b250Om4uc2VsZWN0ZWQudGV4dGZvbnQsZWRpdFR5cGU6InN0eWxlIn0sdW5z ZWxlY3RlZDp7bWFya2VyOntvcGFjaXR5Om4udW5zZWxlY3RlZC5tYXJrZXIu b3BhY2l0eSxjb2xvcjpuLnVuc2VsZWN0ZWQubWFya2VyLmNvbG9yLGVkaXRU eXBlOiJzdHlsZSJ9LHRleHRmb250Om4udW5zZWxlY3RlZC50ZXh0Zm9udCxl ZGl0VHlwZToic3R5bGUifSxyOm4ucix0Om4udCxfZGVwcmVjYXRlZDp7YmFy ZGlyOnt2YWxUeXBlOiJlbnVtZXJhdGVkIixlZGl0VHlwZToiY2FsYyIsdmFs dWVzOlsidiIsImgiXX19fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4u Ly4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuLi8uLi9wbG90cy90 ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL3NjYXR0ZXIvYXR0cmlidXRl cyI6MTEyMCwiLi9jb25zdGFudHMiOjg1OH1dLDg1NzpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hl bHBlcnMiKS5oYXNDb2xvcnNjYWxlLGk9dCgiLi4vLi4vY29tcG9uZW50cy9j b2xvcnNjYWxlL2NhbGMiKSxvPXQoIi4vYXJyYXlzX3RvX2NhbGNkYXRhIiks cz10KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIik7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7dmFyIHIsbCxjPW4uZ2V0RnJvbUlkKHQsZS54YXhpc3x8 IngiKSx1PW4uZ2V0RnJvbUlkKHQsZS55YXhpc3x8InkiKTsiaCI9PT1lLm9y aWVudGF0aW9uPyhyPWMubWFrZUNhbGNkYXRhKGUsIngiKSxsPXUubWFrZUNh bGNkYXRhKGUsInkiKSk6KHI9dS5tYWtlQ2FsY2RhdGEoZSwieSIpLGw9Yy5t YWtlQ2FsY2RhdGEoZSwieCIpKTtmb3IodmFyIGg9TWF0aC5taW4obC5sZW5n dGgsci5sZW5ndGgpLGY9bmV3IEFycmF5KGgpLHA9MDtwPGg7cCsrKWZbcF09 e3A6bFtwXSxzOnJbcF19LGUuaWRzJiYoZltwXS5pZD1TdHJpbmcoZS5pZHNb cF0pKTtyZXR1cm4gYShlLCJtYXJrZXIiKSYmaSh0LGUse3ZhbHM6ZS5tYXJr ZXIuY29sb3IsY29udGFpbmVyU3RyOiJtYXJrZXIiLGNMZXR0ZXI6ImMifSks YShlLCJtYXJrZXIubGluZSIpJiZpKHQsZSx7dmFsczplLm1hcmtlci5saW5l LmNvbG9yLGNvbnRhaW5lclN0cjoibWFya2VyLmxpbmUiLGNMZXR0ZXI6ImMi fSksbyhmLGUpLHMoZixlKSxmfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9y c2NhbGUvY2FsYyI6NjAwLCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUv aGVscGVycyI6NjAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1 LCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjoxMTIyLCIuL2FycmF5c190 b19jYWxjZGF0YSI6ODU1fV0sODU4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz17VEVYVFBBRDozLGV2ZW50RGF0YUtleXM6WyJ2 YWx1ZSIsImxhYmVsIl19fSx7fV0sODU5OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8u Li9saWIiKS5pc0FycmF5T3JUeXBlZEFycmF5LGk9dCgiLi4vLi4vY29uc3Rh bnRzL251bWVyaWNhbCIpLkJBRE5VTSxvPXQoIi4uLy4uL3JlZ2lzdHJ5Iiks cz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGw9dCgiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIikuZ2V0QXhpc0dyb3VwLGM9dCgi Li9zaWV2ZS5qcyIpO2Z1bmN0aW9uIHUodCxlLHIsbyx1KXtpZihvLmxlbmd0 aCl7dmFyIGIsXyx3LGs7c3dpdGNoKGZ1bmN0aW9uKHQsZSl7dmFyIHIsaTtm b3Iocj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbyxzPWVbcl0sbD1zWzBdLnRy YWNlLGM9ImZ1bm5lbCI9PT1sLnR5cGU/bC5fYmFzZTpsLmJhc2UsdT0iaCI9 PT1sLm9yaWVudGF0aW9uP2wueGNhbGVuZGFyOmwueWNhbGVuZGFyLGg9ImNh dGVnb3J5Ij09PXQudHlwZXx8Im11bHRpY2F0ZWdvcnkiPT09dC50eXBlP2Z1 bmN0aW9uKCl7cmV0dXJuIG51bGx9OnQuZDJjO2lmKGEoYykpe2ZvcihpPTA7 aTxNYXRoLm1pbihjLmxlbmd0aCxzLmxlbmd0aCk7aSsrKW89aChjW2ldLDAs dSksbihvKT8oc1tpXS5iPStvLHNbaV0uaGFzQj0xKTpzW2ldLmI9MDtmb3Io O2k8cy5sZW5ndGg7aSsrKXNbaV0uYj0wfWVsc2V7bz1oKGMsMCx1KTt2YXIg Zj1uKG8pO2ZvcihvPWY/bzowLGk9MDtpPHMubGVuZ3RoO2krKylzW2ldLmI9 byxmJiYoc1tpXS5oYXNCPTEpfX19KHIsbyksdS5tb2RlKXtjYXNlIm92ZXJs YXkiOmgoZSxyLG8sdSk7YnJlYWs7Y2FzZSJncm91cCI6Zm9yKGI9W10sXz1b XSx3PTA7dzxvLmxlbmd0aDt3Kyspdm9pZCAwPT09KGs9b1t3XSlbMF0udHJh Y2Uub2Zmc2V0P18ucHVzaChrKTpiLnB1c2goayk7Xy5sZW5ndGgmJmZ1bmN0 aW9uKHQsZSxyLG4sYSl7dmFyIG89bmV3IGMobix7c2VwTmVnVmFsOiExLG92 ZXJsYXBOb01lcmdlOiFhLm5vcm19KTsoZnVuY3Rpb24odCxlLHIsbil7Zm9y KHZhciBhPXQuX2Z1bGxMYXlvdXQsaT1yLnBvc2l0aW9ucyxvPXIuZGlzdGlu Y3RQb3NpdGlvbnMscz1yLm1pbkRpZmYsYz1yLnRyYWNlcyx1PWMubGVuZ3Ro LGg9aS5sZW5ndGghPT1vLmxlbmd0aCxmPXMqKDEtbi5nYXApLHY9bChhLGUu X2lkKStjWzBdWzBdLnRyYWNlLm9yaWVudGF0aW9uLG09YS5fYWxpZ25tZW50 T3B0c1t2XXx8e30seT0wO3k8dTt5Kyspe3ZhciB4LGIsXz1jW3ldLHc9X1sw XS50cmFjZSxrPW1bdy5hbGlnbm1lbnRncm91cF18fHt9LFQ9T2JqZWN0Lmtl eXMoay5vZmZzZXRHcm91cHN8fHt9KS5sZW5ndGgsTT0oeD1UP2YvVDpoP2Yv dTpmKSooMS0obi5ncm91cGdhcHx8MCkpO2I9VD8oKDIqdy5fb2Zmc2V0SW5k ZXgrMS1UKSp4LU0pLzI6aD8oKDIqeSsxLXUpKngtTSkvMjotTS8yO3ZhciBB PV9bMF0udDtBLmJhcndpZHRoPU0sQS5wb2Zmc2V0PWIsQS5iYXJncm91cHdp ZHRoPWYsQS5iYXJkZWx0YT1zfXIuYmluV2lkdGg9Y1swXVswXS50LmJhcndp ZHRoLzEwMCxwKHIpLGQoZSxyKSxnKGUscixoKX0pKHQsZSxvLGEpLGZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT10LnRyYWNlcyxyPTA7cjxlLmxlbmd0aDtyKysp e3ZhciBuPWVbcl0sYT1uWzBdLnRyYWNlO2lmKHZvaWQgMD09PWEuYmFzZSlm b3IodmFyIG89bmV3IGMoW25dLHtzZXBOZWdWYWw6ITAsb3ZlcmxhcE5vTWVy Z2U6ITB9KSxzPTA7czxuLmxlbmd0aDtzKyspe3ZhciBsPW5bc107aWYobC5w IT09aSl7dmFyIHU9by5wdXQobC5wLGwuYitsLnMpO3UmJihsLmI9dSl9fX19 KG8pLGEubm9ybT8obShvKSx5KHIsbyxhKSk6dihyLG8pfSh0LGUscixfLHUp LGIubGVuZ3RoJiZoKGUscixiLHUpO2JyZWFrO2Nhc2Uic3RhY2siOmNhc2Ui cmVsYXRpdmUiOmZvcihiPVtdLF89W10sdz0wO3c8by5sZW5ndGg7dysrKXZv aWQgMD09PShrPW9bd10pWzBdLnRyYWNlLmJhc2U/Xy5wdXNoKGspOmIucHVz aChrKTtfLmxlbmd0aCYmZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgbz1uZXcg YyhuLHtzZXBOZWdWYWw6InJlbGF0aXZlIj09PWEubW9kZSxvdmVybGFwTm9N ZXJnZTohKGEubm9ybXx8InN0YWNrIj09PWEubW9kZXx8InJlbGF0aXZlIj09 PWEubW9kZSl9KTtmKGUsbyxhKSxmdW5jdGlvbih0LGUscil7dmFyIG4sYSxv LGwsYyx1LGg9eCh0KSxmPWUudHJhY2VzO2ZvcihsPTA7bDxmLmxlbmd0aDts KyspaWYobj1mW2xdLCJmdW5uZWwiPT09KGE9blswXS50cmFjZSkudHlwZSlm b3IoYz0wO2M8bi5sZW5ndGg7YysrKSh1PW5bY10pLnMhPT1pJiZlLnB1dCh1 LnAsLS41KnUucyk7Zm9yKGw9MDtsPGYubGVuZ3RoO2wrKyl7bj1mW2xdLGE9 blswXS50cmFjZSxvPSJmdW5uZWwiPT09YS50eXBlO3ZhciBwPVtdO2Zvcihj PTA7YzxuLmxlbmd0aDtjKyspaWYoKHU9bltjXSkucyE9PWkpe3ZhciBkO2Q9 bz91LnM6dS5zK3UuYjt2YXIgZz1lLnB1dCh1LnAsZCksdj1nK2Q7dS5iPWcs dVtoXT12LHIubm9ybXx8KHAucHVzaCh2KSx1Lmhhc0ImJnAucHVzaChnKSl9 ci5ub3JtfHwoYS5fZXh0cmVtZXNbdC5faWRdPXMuZmluZEV4dHJlbWVzKHQs cCx7dG96ZXJvOiEwLHBhZGRlZDohMH0pKX19KHIsbyxhKTtmb3IodmFyIGw9 MDtsPG4ubGVuZ3RoO2wrKylmb3IodmFyIHU9bltsXSxoPTA7aDx1Lmxlbmd0 aDtoKyspe3ZhciBwPXVbaF07aWYocC5zIT09aSl7dmFyIGQ9cC5iK3Aucz09 PW8uZ2V0KHAucCxwLnMpO2QmJihwLl9vdXRtb3N0PSEwKX19YS5ub3JtJiZ5 KHIsbyxhKX0oMCxlLHIsXyx1KSxiLmxlbmd0aCYmaChlLHIsYix1KX0hZnVu Y3Rpb24odCxlKXt2YXIgcixhLGksbz14KGUpLHM9e30sbD0xLzAsYz0tMS8w O2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspZm9yKGk9dFtyXSxhPTA7YTxpLmxl bmd0aDthKyspe3ZhciB1PWlbYV0ucDtuKHUpJiYobD1NYXRoLm1pbihsLHUp LGM9TWF0aC5tYXgoYyx1KSl9dmFyIGg9MWU0LyhjLWwpLGY9cy5yb3VuZD1m dW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoaCoodC1sKSkp fTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXsoaT10W3JdKVswXS50LmV4dGVu dHM9czt2YXIgcD1pWzBdLnQucG9mZnNldCxkPUFycmF5LmlzQXJyYXkocCk7 Zm9yKGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIGc9aVthXSx2PWdbb10tZy53 LzI7aWYobih2KSl7dmFyIG09Z1tvXStnLncvMix5PWYoZy5wKTtzW3ldP3Nb eV09W01hdGgubWluKHYsc1t5XVswXSksTWF0aC5tYXgobSxzW3ldWzFdKV06 c1t5XT1bdixtXX1nLnAwPWcucCsoZD9wW2FdOnApLGcucDE9Zy5wMCtnLncs Zy5zMD1nLmIsZy5zMT1nLnMwK2cuc319fShvLGUpfX1mdW5jdGlvbiBoKHQs ZSxyLG4pe2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgaT1yW2Fd LG89bmV3IGMoW2ldLHtzZXBOZWdWYWw6ITEsb3ZlcmxhcE5vTWVyZ2U6IW4u bm9ybX0pO2YodCxvLG4pLG4ubm9ybT8obShvKSx5KGUsbyxuKSk6dihlLG8p fX1mdW5jdGlvbiBmKHQsZSxyKXtmb3IodmFyIG49ZS5taW5EaWZmLGE9ZS50 cmFjZXMsaT1uKigxLXIuZ2FwKSxvPWkqKDEtKHIuZ3JvdXBnYXB8fDApKSxz PS1vLzIsbD0wO2w8YS5sZW5ndGg7bCsrKXt2YXIgYz1hW2xdWzBdLnQ7Yy5i YXJ3aWR0aD1vLGMucG9mZnNldD1zLGMuYmFyZ3JvdXB3aWR0aD1pLGMuYmFy ZGVsdGE9bn1lLmJpbldpZHRoPWFbMF1bMF0udC5iYXJ3aWR0aC8xMDAscChl KSxkKHQsZSksZyh0LGUpfWZ1bmN0aW9uIHAodCl7dmFyIGUscixpPXQudHJh Y2VzO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspe3ZhciBvLHM9aVtlXSxsPXNb MF0sYz1sLnRyYWNlLHU9bC50LGg9Yy5fb2Zmc2V0fHxjLm9mZnNldCxmPXUu cG9mZnNldDtpZihhKGgpKXtmb3Iobz1BcnJheS5wcm90b3R5cGUuc2xpY2Uu Y2FsbChoLDAscy5sZW5ndGgpLHI9MDtyPG8ubGVuZ3RoO3IrKyluKG9bcl0p fHwob1tyXT1mKTtmb3Iocj1vLmxlbmd0aDtyPHMubGVuZ3RoO3IrKylvLnB1 c2goZik7dS5wb2Zmc2V0PW99ZWxzZSB2b2lkIDAhPT1oJiYodS5wb2Zmc2V0 PWgpO3ZhciBwPWMuX3dpZHRofHxjLndpZHRoLGQ9dS5iYXJ3aWR0aDtpZihh KHApKXt2YXIgZz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChwLDAscy5s ZW5ndGgpO2ZvcihyPTA7cjxnLmxlbmd0aDtyKyspbihnW3JdKXx8KGdbcl09 ZCk7Zm9yKHI9Zy5sZW5ndGg7cjxzLmxlbmd0aDtyKyspZy5wdXNoKGQpO2lm KHUuYmFyd2lkdGg9Zyx2b2lkIDA9PT1oKXtmb3Iobz1bXSxyPTA7cjxzLmxl bmd0aDtyKyspby5wdXNoKGYrKGQtZ1tyXSkvMik7dS5wb2Zmc2V0PW99fWVs c2Ugdm9pZCAwIT09cCYmKHUuYmFyd2lkdGg9cCx2b2lkIDA9PT1oJiYodS5w b2Zmc2V0PWYrKGQtcCkvMikpfX1mdW5jdGlvbiBkKHQsZSl7Zm9yKHZhciBy PWUudHJhY2VzLG49eCh0KSxhPTA7YTxyLmxlbmd0aDthKyspZm9yKHZhciBp PXJbYV0sbz1pWzBdLnQscz1vLnBvZmZzZXQsbD1BcnJheS5pc0FycmF5KHMp LGM9by5iYXJ3aWR0aCx1PUFycmF5LmlzQXJyYXkoYyksaD0wO2g8aS5sZW5n dGg7aCsrKXt2YXIgZj1pW2hdLHA9Zi53PXU/Y1toXTpjO2Zbbl09Zi5wKyhs P3NbaF06cykrcC8yfX1mdW5jdGlvbiBnKHQsZSxyKXt2YXIgbj1lLnRyYWNl cyxhPWUubWluRGlmZi8yO3MubWluRHRpY2sodCxlLm1pbkRpZmYsZS5kaXN0 aW5jdFBvc2l0aW9uc1swXSxyKTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2kr Kyl7dmFyIG8sbCxjLHUsaD1uW2ldLGY9aFswXSxwPWYudHJhY2UsZD1bXTtm b3IodT0wO3U8aC5sZW5ndGg7dSsrKWw9KG89aFt1XSkucC1hLGM9by5wK2Es ZC5wdXNoKGwsYyk7aWYocC53aWR0aHx8cC5vZmZzZXQpe3ZhciBnPWYudCx2 PWcucG9mZnNldCxtPWcuYmFyd2lkdGgseT1BcnJheS5pc0FycmF5KHYpLHg9 QXJyYXkuaXNBcnJheShtKTtmb3IodT0wO3U8aC5sZW5ndGg7dSsrKXtvPWhb dV07dmFyIGI9eT92W3VdOnYsXz14P21bdV06bTtjPShsPW8ucCtiKStfLGQu cHVzaChsLGMpfX1wLl9leHRyZW1lc1t0Ll9pZF09cy5maW5kRXh0cmVtZXMo dCxkLHtwYWRkZWQ6ITF9KX19ZnVuY3Rpb24gdih0LGUpe2Zvcih2YXIgcj1l LnRyYWNlcyxuPXgodCksYT0wO2E8ci5sZW5ndGg7YSsrKXtmb3IodmFyIGk9 clthXSxvPWlbMF0udHJhY2UsbD1bXSxjPSEwLHU9MDt1PGkubGVuZ3RoO3Ur Kyl7dmFyIGg9aVt1XSxmPWguYixwPWYraC5zO2hbbl09cCxsLnB1c2gocCks aC5oYXNCJiZsLnB1c2goZiksaC5oYXNCJiZoLmI+MCYmaC5zPjB8fChjPSEx KX1vLl9leHRyZW1lc1t0Ll9pZF09cy5maW5kRXh0cmVtZXModCxsLHt0b3pl cm86IWMscGFkZGVkOiEwfSl9fWZ1bmN0aW9uIG0odCl7Zm9yKHZhciBlPXQu dHJhY2VzLHI9MDtyPGUubGVuZ3RoO3IrKylmb3IodmFyIG49ZVtyXSxhPTA7 YTxuLmxlbmd0aDthKyspe3ZhciBvPW5bYV07by5zIT09aSYmdC5wdXQoby5w LG8uYitvLnMpfX1mdW5jdGlvbiB5KHQsZSxyKXt2YXIgYT1lLnRyYWNlcyxv PXgodCksbD0iZnJhY3Rpb24iPT09ci5ub3JtPzE6MTAwLGM9bC8xZTksdT10 LmwyYyh0LmMybCgwKSksaD0ic3RhY2siPT09ci5tb2RlP2w6dTtmdW5jdGlv biBmKGUpe3JldHVybiBuKHQuYzJsKGUpKSYmKGU8dS1jfHxlPmgrY3x8IW4o dSkpfWZvcih2YXIgcD0wO3A8YS5sZW5ndGg7cCsrKXtmb3IodmFyIGQ9YVtw XSxnPWRbMF0udHJhY2Usdj1bXSxtPSEwLHk9ITEsYj0wO2I8ZC5sZW5ndGg7 YisrKXt2YXIgXz1kW2JdO2lmKF8ucyE9PWkpe3ZhciB3PU1hdGguYWJzKGwv ZS5nZXQoXy5wLF8ucykpO18uYio9dyxfLnMqPXc7dmFyIGs9Xy5iLFQ9aytf LnM7X1tvXT1ULHYucHVzaChUKSx5PXl8fGYoVCksXy5oYXNCJiYodi5wdXNo KGspLHk9eXx8ZihrKSksXy5oYXNCJiZfLmI+MCYmXy5zPjB8fChtPSExKX19 Zy5fZXh0cmVtZXNbdC5faWRdPXMuZmluZEV4dHJlbWVzKHQsdix7dG96ZXJv OiFtLHBhZGRlZDp5fSl9fWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQuX2lkLmNo YXJBdCgwKX1lLmV4cG9ydHM9e2Nyb3NzVHJhY2VDYWxjOmZ1bmN0aW9uKHQs ZSl7Zm9yKHZhciByPWUueGF4aXMsbj1lLnlheGlzLGE9dC5fZnVsbExheW91 dCxpPXQuX2Z1bGxEYXRhLHM9dC5jYWxjZGF0YSxsPVtdLGM9W10saD0wO2g8 aS5sZW5ndGg7aCsrKXt2YXIgZj1pW2hdOyEwPT09Zi52aXNpYmxlJiZvLnRy YWNlSXMoZiwiYmFyIikmJmYueGF4aXM9PT1yLl9pZCYmZi55YXhpcz09PW4u X2lkJiYoImgiPT09Zi5vcmllbnRhdGlvbj9sLnB1c2goc1toXSk6Yy5wdXNo KHNbaF0pKX12YXIgcD17bW9kZTphLmJhcm1vZGUsbm9ybTphLmJhcm5vcm0s Z2FwOmEuYmFyZ2FwLGdyb3VwZ2FwOmEuYmFyZ3JvdXBnYXB9O3UodCxyLG4s YyxwKSx1KHQsbixyLGwscCl9LHNldEdyb3VwUG9zaXRpb25zOnV9fSx7Ii4u Ly4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcs Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCIuLi8uLi9yZWdpc3RyeSI6ODQ2 LCIuL3NpZXZlLmpzIjo4NjksImZhc3QtaXNudW1lcmljIjoyMjh9XSw4NjA6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v bGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8u Li9yZWdpc3RyeSIpLG89dCgiLi4vc2NhdHRlci94eV9kZWZhdWx0cyIpLHM9 dCgiLi9zdHlsZV9kZWZhdWx0cyIpLGw9dCgiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2F4aXNfaWRzIikuZ2V0QXhpc0dyb3VwLGM9dCgiLi9hdHRyaWJ1dGVz IiksdT1uLmNvZXJjZUZvbnQ7ZnVuY3Rpb24gaCh0LGUscixuKXt2YXIgYT1l Lm9yaWVudGF0aW9uLGk9ZVt7djoieCIsaDoieSJ9W2FdKyJheGlzIl0sbz1s KHIsaSkrYSxzPXIuX2FsaWdubWVudE9wdHN8fHt9LGM9bigiYWxpZ25tZW50 Z3JvdXAiKSx1PXNbb107dXx8KHU9c1tvXT17fSk7dmFyIGg9dVtjXTtoP2gu dHJhY2VzLnB1c2goZSk6aD11W2NdPXt0cmFjZXM6W2VdLGFsaWdubWVudElu ZGV4Ok9iamVjdC5rZXlzKHUpLmxlbmd0aCxvZmZzZXRHcm91cHM6e319O3Zh ciBmPW4oIm9mZnNldGdyb3VwIikscD1oLm9mZnNldEdyb3VwcyxkPXBbZl07 ZiYmKGR8fChkPXBbZl09e29mZnNldEluZGV4Ok9iamVjdC5rZXlzKHApLmxl bmd0aH0pLGUuX29mZnNldEluZGV4PWQub2Zmc2V0SW5kZXgpfWZ1bmN0aW9u IGYodCxlLHIsYSxpLG8pe3ZhciBzPSEoITE9PT0obz1vfHx7fSkubW9kdWxl SGFzU2VsZWN0ZWQpLGw9ISghMT09PW8ubW9kdWxlSGFzVW5zZWxlY3RlZCks Yz0hKCExPT09by5tb2R1bGVIYXNDb25zdHJhaW4pLGg9ISghMT09PW8ubW9k dWxlSGFzQ2xpcG9uYXhpcyksZj0hKCExPT09by5tb2R1bGVIYXNUZXh0YW5n bGUpLHA9ISghMT09PW8ubW9kdWxlSGFzSW5zaWRlYW5jaG9yKSxkPSEhby5o YXNQYXRoYmFyLGc9QXJyYXkuaXNBcnJheShpKXx8ImF1dG8iPT09aSx2PWd8 fCJpbnNpZGUiPT09aSxtPWd8fCJvdXRzaWRlIj09PWk7aWYodnx8bSl7dmFy IHk9dShhLCJ0ZXh0Zm9udCIsci5mb250KSx4PW4uZXh0ZW5kRmxhdCh7fSx5 KSxiPSEodC50ZXh0Zm9udCYmdC50ZXh0Zm9udC5jb2xvcik7aWYoYiYmZGVs ZXRlIHguY29sb3IsdShhLCJpbnNpZGV0ZXh0Zm9udCIseCksZCl7dmFyIF89 bi5leHRlbmRGbGF0KHt9LHkpO2ImJmRlbGV0ZSBfLmNvbG9yLHUoYSwicGF0 aGJhci50ZXh0Zm9udCIsXyl9bSYmdShhLCJvdXRzaWRldGV4dGZvbnQiLHkp LHMmJmEoInNlbGVjdGVkLnRleHRmb250LmNvbG9yIiksbCYmYSgidW5zZWxl Y3RlZC50ZXh0Zm9udC5jb2xvciIpLGMmJmEoImNvbnN0cmFpbnRleHQiKSxo JiZhKCJjbGlwb25heGlzIiksZiYmYSgidGV4dGFuZ2xlIiksYSgidGV4dHRl bXBsYXRlIil9diYmcCYmYSgiaW5zaWRldGV4dGFuY2hvciIpfWUuZXhwb3J0 cz17c3VwcGx5RGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24g dShyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsYyxyLGEpfWlmKG8odCxlLGws dSkpe3UoIm9yaWVudGF0aW9uIixlLngmJiFlLnk/ImgiOiJ2IiksdSgiYmFz ZSIpLHUoIm9mZnNldCIpLHUoIndpZHRoIiksdSgidGV4dCIpLHUoImhvdmVy dGV4dCIpLHUoImhvdmVydGVtcGxhdGUiKTt2YXIgaD11KCJ0ZXh0cG9zaXRp b24iKTtmKHQsMCxsLHUsaCx7bW9kdWxlSGFzU2VsZWN0ZWQ6ITAsbW9kdWxl SGFzVW5zZWxlY3RlZDohMCxtb2R1bGVIYXNDb25zdHJhaW46ITAsbW9kdWxl SGFzQ2xpcG9uYXhpczohMCxtb2R1bGVIYXNUZXh0YW5nbGU6ITAsbW9kdWxl SGFzSW5zaWRlYW5jaG9yOiEwfSkscyh0LGUsdSxyLGwpO3ZhciBwPShlLm1h cmtlci5saW5lfHx7fSkuY29sb3IsZD1pLmdldENvbXBvbmVudE1ldGhvZCgi ZXJyb3JiYXJzIiwic3VwcGx5RGVmYXVsdHMiKTtkKHQsZSxwfHxhLmRlZmF1 bHRMaW5lLHtheGlzOiJ5In0pLGQodCxlLHB8fGEuZGVmYXVsdExpbmUse2F4 aXM6IngiLGluaGVyaXQ6InkifSksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJP cGFjaXR5KGUsdSl9ZWxzZSBlLnZpc2libGU9ITF9LGNyb3NzVHJhY2VEZWZh dWx0czpmdW5jdGlvbih0LGUpe3ZhciByO2Z1bmN0aW9uIGEodCl7cmV0dXJu IG4uY29lcmNlKHIuX2lucHV0LHIsYyx0KX1pZigiZ3JvdXAiPT09ZS5iYXJt b2RlKWZvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKSJiYXIiPT09KHI9dFtp XSkudHlwZSYmKHIuX2lucHV0LGgoMCxyLGUsYSkpfSxoYW5kbGVHcm91cGlu Z0RlZmF1bHRzOmgsaGFuZGxlVGV4dDpmfX0seyIuLi8uLi9jb21wb25lbnRz L2NvbG9yIjo1OTIsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhpc19pZHMiOjc2OCwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4v c2NhdHRlci94eV9kZWZhdWx0cyI6MTE0NiwiLi9hdHRyaWJ1dGVzIjo4NTYs Ii4vc3R5bGVfZGVmYXVsdHMiOjg3MX1dLDg2MTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVy biB0Lng9InhWYWwiaW4gZT9lLnhWYWw6ZS54LHQueT0ieVZhbCJpbiBlP2Uu eVZhbDplLnksZS54YSYmKHQueGF4aXM9ZS54YSksZS55YSYmKHQueWF4aXM9 ZS55YSksImgiPT09ci5vcmllbnRhdGlvbj8odC5sYWJlbD10LnksdC52YWx1 ZT10LngpOih0LmxhYmVsPXQueCx0LnZhbHVlPXQueSksdH19LHt9XSw4NjI6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1p c251bWVyaWMiKSxhPXQoInRpbnljb2xvcjIiKSxpPXQoIi4uLy4uL2xpYiIp LmlzQXJyYXlPclR5cGVkQXJyYXk7ci5jb2VyY2VTdHJpbmc9ZnVuY3Rpb24o dCxlLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoZXx8IXQubm9CbGFu aylyZXR1cm4gZX1lbHNlIGlmKCgibnVtYmVyIj09dHlwZW9mIGV8fCEwPT09 ZSkmJiF0LnN0cmljdClyZXR1cm4gU3RyaW5nKGUpO3JldHVybiB2b2lkIDAh PT1yP3I6dC5kZmx0fSxyLmNvZXJjZU51bWJlcj1mdW5jdGlvbih0LGUscil7 aWYobihlKSl7ZT0rZTt2YXIgYT10Lm1pbixpPXQubWF4O2lmKCEodm9pZCAw IT09YSYmZTxhfHx2b2lkIDAhPT1pJiZlPmkpKXJldHVybiBlfXJldHVybiB2 b2lkIDAhPT1yP3I6dC5kZmx0fSxyLmNvZXJjZUNvbG9yPWZ1bmN0aW9uKHQs ZSxyKXtyZXR1cm4gYShlKS5pc1ZhbGlkKCk/ZTp2b2lkIDAhPT1yP3I6dC5k Zmx0fSxyLmNvZXJjZUVudW1lcmF0ZWQ9ZnVuY3Rpb24odCxlLHIpe3JldHVy biB0LmNvZXJjZU51bWJlciYmKGU9K2UpLC0xIT09dC52YWx1ZXMuaW5kZXhP ZihlKT9lOnZvaWQgMCE9PXI/cjp0LmRmbHR9LHIuZ2V0VmFsdWU9ZnVuY3Rp b24odCxlKXt2YXIgcjtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9lPHQubGVu Z3RoJiYocj10W2VdKTpyPXQscn0sci5nZXRMaW5lV2lkdGg9ZnVuY3Rpb24o dCxlKXtyZXR1cm4gMDxlLm1sdz9lLm1sdzppKHQubWFya2VyLmxpbmUud2lk dGgpPzA6dC5tYXJrZXIubGluZS53aWR0aH19LHsiLi4vLi4vbGliIjo3MTcs ImZhc3QtaXNudW1lcmljIjoyMjgsdGlueWNvbG9yMjo1MzZ9XSw4NjM6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29t cG9uZW50cy9meCIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4u L2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uLy4uL2xpYiIpLmZpbGxUZXh0 LHM9dCgiLi9oZWxwZXJzIikuZ2V0TGluZVdpZHRoLGw9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4ZXMiKS5ob3ZlckxhYmVsVGV4dDtmdW5jdGlvbiBj KHQsZSxyLGEpe3ZhciBpLHMsYyx1LGgsZixwLGQ9dC5jZCxnPWRbMF0udHJh Y2Usdj1kWzBdLnQsbT0iY2xvc2VzdCI9PT1hLHk9IndhdGVyZmFsbCI9PT1n LnR5cGUseD10Lm1heEhvdmVyRGlzdGFuY2UsYj10Lm1heFNwaWtlRGlzdGFu Y2U7ZnVuY3Rpb24gXyh0KXtyZXR1cm4gdFtjXS10LncvMn1mdW5jdGlvbiB3 KHQpe3JldHVybiB0W2NdK3Qudy8yfXZhciBrPW0/XzpmdW5jdGlvbih0KXty ZXR1cm4gTWF0aC5taW4oXyh0KSx0LnAtdi5iYXJkZWx0YS8yKX0sVD1tP3c6 ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KHcodCksdC5wK3YuYmFyZGVs dGEvMil9O2Z1bmN0aW9uIE0odCxlKXtyZXR1cm4gbi5pbmJveCh0LWksZS1p LHgrTWF0aC5taW4oMSxNYXRoLmFicyhlLXQpL3ApLTEpfWZ1bmN0aW9uIEEo dCl7cmV0dXJuIE0oayh0KSxUKHQpKX1mdW5jdGlvbiBTKHQpe3ZhciBlPXMs cj10LmIsYT10W3VdO2lmKHkpe3ZhciBpPU1hdGguYWJzKHQucmF3Uyl8fDA7 ZT4wP2ErPWk6ZTwwJiYoYS09aSl9cmV0dXJuIG4uaW5ib3goci1lLGEtZSx4 KyhhLWUpLyhhLXIpLTEpfSJoIj09PWcub3JpZW50YXRpb24/KGk9cixzPWUs Yz0ieSIsdT0ieCIsaD1TLGY9QSk6KGk9ZSxzPXIsYz0ieCIsdT0ieSIsZj1T LGg9QSk7dmFyIEU9dFtjKyJhIl0sTD10W3UrImEiXTtwPU1hdGguYWJzKEUu cjJjKEUucmFuZ2VbMV0pLUUucjJjKEUucmFuZ2VbMF0pKTt2YXIgQz1uLmdl dERpc3RhbmNlRnVuY3Rpb24oYSxoLGYsZnVuY3Rpb24odCl7cmV0dXJuKGgo dCkrZih0KSkvMn0pO2lmKG4uZ2V0Q2xvc2VzdChkLEMsdCksITEhPT10Lmlu ZGV4KXttfHwoaz1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5taW4oXyh0KSx0 LnAtdi5iYXJncm91cHdpZHRoLzIpfSxUPWZ1bmN0aW9uKHQpe3JldHVybiBN YXRoLm1heCh3KHQpLHQucCt2LmJhcmdyb3Vwd2lkdGgvMil9KTt2YXIgUD1k W3QuaW5kZXhdLE89Zy5iYXNlP1AuYitQLnM6UC5zO3RbdSsiMCJdPXRbdSsi MSJdPUwuYzJwKFBbdV0sITApLHRbdSsiTGFiZWxWYWwiXT1PO3ZhciB6PXYu ZXh0ZW50c1t2LmV4dGVudHMucm91bmQoUC5wKV07cmV0dXJuIHRbYysiMCJd PUUuYzJwKG0/ayhQKTp6WzBdLCEwKSx0W2MrIjEiXT1FLmMycChtP1QoUCk6 elsxXSwhMCksdFtjKyJMYWJlbFZhbCJdPVAucCx0LmxhYmVsTGFiZWw9bChF LHRbYysiTGFiZWxWYWwiXSksdC52YWx1ZUxhYmVsPWwoTCx0W3UrIkxhYmVs VmFsIl0pLHQuc3Bpa2VEaXN0YW5jZT0oUyhQKStmdW5jdGlvbih0KXtyZXR1 cm4gTShfKHQpLHcodCkpfShQKSkvMitiLXgsdFtjKyJTcGlrZSJdPUUuYzJw KFAucCwhMCksbyhQLGcsdCksdC5ob3ZlcnRlbXBsYXRlPWcuaG92ZXJ0ZW1w bGF0ZSx0fX1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9ZS5tY2N8fHQubWFya2Vy LmNvbG9yLG49ZS5tbGNjfHx0Lm1hcmtlci5saW5lLmNvbG9yLGE9cyh0LGUp O3JldHVybiBpLm9wYWNpdHkocik/cjppLm9wYWNpdHkobikmJmE/bjp2b2lk IDB9ZS5leHBvcnRzPXtob3ZlclBvaW50czpmdW5jdGlvbih0LGUscixuKXt2 YXIgaT1jKHQsZSxyLG4pO2lmKGkpe3ZhciBvPWkuY2Qscz1vWzBdLnRyYWNl LGw9b1tpLmluZGV4XTtyZXR1cm4gaS5jb2xvcj11KHMsbCksYS5nZXRDb21w b25lbnRNZXRob2QoImVycm9yYmFycyIsImhvdmVySW5mbyIpKGwscyxpKSxb aV19fSxob3Zlck9uQmFyczpjLGdldFRyYWNlQ29sb3I6dX19LHsiLi4vLi4v Y29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2 MzAsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhl cyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuL2hlbHBlcnMiOjg2Mn1d LDg2NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRl czp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgi Li9kZWZhdWx0cyIpLnN1cHBseURlZmF1bHRzLGNyb3NzVHJhY2VEZWZhdWx0 czp0KCIuL2RlZmF1bHRzIikuY3Jvc3NUcmFjZURlZmF1bHRzLHN1cHBseUxh eW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksY2FsYzp0KCIu L2NhbGMiKSxjcm9zc1RyYWNlQ2FsYzp0KCIuL2Nyb3NzX3RyYWNlX2NhbGMi KS5jcm9zc1RyYWNlQ2FsYyxjb2xvcmJhcjp0KCIuLi9zY2F0dGVyL21hcmtl cl9jb2xvcmJhciIpLGFycmF5c1RvQ2FsY2RhdGE6dCgiLi9hcnJheXNfdG9f Y2FsY2RhdGEiKSxwbG90OnQoIi4vcGxvdCIpLnBsb3Qsc3R5bGU6dCgiLi9z dHlsZSIpLnN0eWxlLHN0eWxlT25TZWxlY3Q6dCgiLi9zdHlsZSIpLnN0eWxl T25TZWxlY3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRz LGV2ZW50RGF0YTp0KCIuL2V2ZW50X2RhdGEiKSxzZWxlY3RQb2ludHM6dCgi Li9zZWxlY3QiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiYmFyIixiYXNl UGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29y aWVzOlsiYmFyLWxpa2UiLCJjYXJ0ZXNpYW4iLCJzdmciLCJiYXIiLCJvcmll bnRlZCIsImVycm9yQmFyc09LIiwic2hvd0xlZ2VuZCIsInpvb21TY2FsZSJd LGFuaW1hdGFibGU6ITAsbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVz aWFuIjo3NzYsIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjoxMTM4LCIu L2FycmF5c190b19jYWxjZGF0YSI6ODU1LCIuL2F0dHJpYnV0ZXMiOjg1Niwi Li9jYWxjIjo4NTcsIi4vY3Jvc3NfdHJhY2VfY2FsYyI6ODU5LCIuL2RlZmF1 bHRzIjo4NjAsIi4vZXZlbnRfZGF0YSI6ODYxLCIuL2hvdmVyIjo4NjMsIi4v bGF5b3V0X2F0dHJpYnV0ZXMiOjg2NSwiLi9sYXlvdXRfZGVmYXVsdHMiOjg2 NiwiLi9wbG90Ijo4NjcsIi4vc2VsZWN0Ijo4NjgsIi4vc3R5bGUiOjg3MH1d LDg2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 e2Jhcm1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInN0YWNr IiwiZ3JvdXAiLCJvdmVybGF5IiwicmVsYXRpdmUiXSxkZmx0OiJncm91cCIs ZWRpdFR5cGU6ImNhbGMifSxiYXJub3JtOnt2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6WyIiLCJmcmFjdGlvbiIsInBlcmNlbnQiXSxkZmx0OiIiLGVk aXRUeXBlOiJjYWxjIn0sYmFyZ2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjow LG1heDoxLGVkaXRUeXBlOiJjYWxjIn0sYmFyZ3JvdXBnYXA6e3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn19 fSx7fV0sODY2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuL2xheW91dF9hdHRy aWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBz KHIsbil7cmV0dXJuIGkuY29lcmNlKHQsZSxvLHIsbil9Zm9yKHZhciBsPSEx LGM9ITEsdT0hMSxoPXt9LGY9cygiYmFybW9kZSIpLHA9MDtwPHIubGVuZ3Ro O3ArKyl7dmFyIGQ9cltwXTtpZihuLnRyYWNlSXMoZCwiYmFyIikmJmQudmlz aWJsZSl7aWYobD0hMCwiZ3JvdXAiPT09Zil7dmFyIGc9ZC54YXhpcytkLnlh eGlzO2hbZ10mJih1PSEwKSxoW2ddPSEwfWlmKGQudmlzaWJsZSYmImhpc3Rv Z3JhbSI9PT1kLnR5cGUpImNhdGVnb3J5IiE9PWEuZ2V0RnJvbUlkKHtfZnVs bExheW91dDplfSxkWyJ2Ij09PWQub3JpZW50YXRpb24/InhheGlzIjoieWF4 aXMiXSkudHlwZSYmKGM9ITApfX1sPygib3ZlcmxheSIhPT1mJiZzKCJiYXJu b3JtIikscygiYmFyZ2FwIixjJiYhdT8wOi4yKSxzKCJiYXJncm91cGdhcCIp KTpkZWxldGUgZS5iYXJtb2RlfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vLi4vcmVnaXN0cnkiOjg0 NiwiLi9sYXlvdXRfYXR0cmlidXRlcyI6ODY1fV0sODY3OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCJmYXN0LWlz bnVtZXJpYyIpLGk9dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9saWIvc3Zn X3RleHRfdXRpbHMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxs PXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGM9dCgiLi4vLi4vcmVn aXN0cnkiKSx1PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikudGlj a1RleHQsaD10KCIuL3VuaWZvcm1fdGV4dCIpLGY9aC5yZWNvcmRNaW5UZXh0 U2l6ZSxwPWguY2xlYXJNaW5UZXh0U2l6ZSxkPXQoIi4vc3R5bGUiKSxnPXQo Ii4vaGVscGVycyIpLHY9dCgiLi9jb25zdGFudHMiKSxtPXQoIi4vYXR0cmli dXRlcyIpLHk9bS50ZXh0LHg9bS50ZXh0cG9zaXRpb24sYj10KCIuLi8uLi9j b21wb25lbnRzL2Z4L2hlbHBlcnMiKS5hcHBlbmRBcnJheVBvaW50VmFsdWUs Xz12LlRFWFRQQUQ7ZnVuY3Rpb24gdyh0KXtyZXR1cm4gdC5pZH1mdW5jdGlv biBrKHQpe2lmKHQuaWRzKXJldHVybiB3fWZ1bmN0aW9uIFQodCxlKXtyZXR1 cm4gdDxlPzE6LTF9ZnVuY3Rpb24gTSh0LGUscixuKXt2YXIgYTtyZXR1cm4h ZS51bmlmb3JtdGV4dC5tb2RlJiZBKHIpPyhuJiYoYT1uKCkpLHQudHJhbnNp dGlvbigpLmR1cmF0aW9uKHIuZHVyYXRpb24pLmVhc2Uoci5lYXNpbmcpLmVh Y2goImVuZCIsZnVuY3Rpb24oKXthJiZhKCl9KS5lYWNoKCJpbnRlcnJ1cHQi LGZ1bmN0aW9uKCl7YSYmYSgpfSkpOnR9ZnVuY3Rpb24gQSh0KXtyZXR1cm4g dCYmdC5kdXJhdGlvbj4wfWZ1bmN0aW9uIFModCl7cmV0dXJuImF1dG8iPT09 dD8wOnR9ZnVuY3Rpb24gRSh0LGUpe3ZhciByPU1hdGguUEkvMTgwKmUsbj1N YXRoLmFicyhNYXRoLnNpbihyKSksYT1NYXRoLmFicyhNYXRoLmNvcyhyKSk7 cmV0dXJue3g6dC53aWR0aCphK3QuaGVpZ2h0Km4seTp0LndpZHRoKm4rdC5o ZWlnaHQqYX19ZnVuY3Rpb24gTCh0LGUscixuLGEsaSl7dmFyIG89ISFpLmlz SG9yaXpvbnRhbCxzPSEhaS5jb25zdHJhaW5lZCxsPWkuYW5nbGV8fDAsYz1p LmFuY2hvcnx8ImVuZCIsdT0iZW5kIj09PWMsaD0ic3RhcnQiPT09YyxmPSgo aS5sZWZ0VG9SaWdodHx8MCkrMSkvMixwPTEtZixkPWEud2lkdGgsZz1hLmhl aWdodCx2PU1hdGguYWJzKGUtdCksbT1NYXRoLmFicyhuLXIpLHk9dj4yKl8m Jm0+MipfP186MDt2LT0yKnksbS09Mip5O3ZhciB4PVMobCk7ImF1dG8iIT09 bHx8ZDw9diYmZzw9bXx8IShkPnZ8fGc+bSl8fChkPm18fGc+dikmJmQ8Zz09 djxtfHwoeCs9OTApO3ZhciBiPUUoYSx4KSx3PTE7cyYmKHc9TWF0aC5taW4o MSx2L2IueCxtL2IueSkpO3ZhciBrPWEubGVmdCpwK2EucmlnaHQqZixNPShh LnRvcCthLmJvdHRvbSkvMixBPSh0K18pKnArKGUtXykqZixMPShyK24pLzIs Qz0wLFA9MDtpZihofHx1KXt2YXIgTz0obz9iLng6Yi55KS8yLHo9bz9UKHQs ZSk6VChyLG4pO28/aD8oQT10K3oqeSxDPS16Kk8pOihBPWUteip5LEM9eipP KTpoPyhMPXIreip5LFA9LXoqTyk6KEw9bi16KnksUD16Kk8pfXJldHVybnt0 ZXh0WDprLHRleHRZOk0sdGFyZ2V0WDpBLHRhcmdldFk6TCxhbmNob3JYOkMs YW5jaG9yWTpQLHNjYWxlOncscm90YXRlOnh9fWUuZXhwb3J0cz17cGxvdDpm dW5jdGlvbih0LGUscixoLHYsbSl7dmFyIHc9ZS54YXhpcyxDPWUueWF4aXMs UD10Ll9mdWxsTGF5b3V0O3Z8fCh2PXttb2RlOlAuYmFybW9kZSxub3JtOlAu YmFybW9kZSxnYXA6UC5iYXJnYXAsZ3JvdXBnYXA6UC5iYXJncm91cGdhcH0s cCgiYmFyIixQKSk7dmFyIE89aS5tYWtlVHJhY2VHcm91cHMoaCxyLCJ0cmFj ZSBiYXJzIikuZWFjaChmdW5jdGlvbihyKXt2YXIgYz1uLnNlbGVjdCh0aGlz KSxoPXJbMF0udHJhY2UscD0id2F0ZXJmYWxsIj09PWgudHlwZSxPPSJmdW5u ZWwiPT09aC50eXBlLHo9ImJhciI9PT1oLnR5cGV8fE8sST0wO3AmJmguY29u bmVjdG9yLnZpc2libGUmJiJiZXR3ZWVuIj09PWguY29ubmVjdG9yLm1vZGUm JihJPWguY29ubmVjdG9yLmxpbmUud2lkdGgvMik7dmFyIEQ9ImgiPT09aC5v cmllbnRhdGlvbixSPWkuZW5zdXJlU2luZ2xlKGMsImciLCJwb2ludHMiKSxG PWsoaCksQj1SLnNlbGVjdEFsbCgiZy5wb2ludCIpLmRhdGEoaS5pZGVudGl0 eSxGKTtCLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicG9pbnQiLCEw KSxCLmV4aXQoKS5yZW1vdmUoKSxCLmVhY2goZnVuY3Rpb24oYyxwKXt2YXIg az1uLnNlbGVjdCh0aGlzKSxPPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPVtd LGk9W10sbz1uP2U6cixzPW4/cjplO3JldHVybiBhWzBdPW8uYzJwKHQuczAs ITApLGlbMF09cy5jMnAodC5wMCwhMCksYVsxXT1vLmMycCh0LnMxLCEwKSxp WzFdPXMuYzJwKHQucDEsITApLG4/W2EsaV06W2ksYV19KGMsdyxDLEQpLFI9 T1swXVswXSxGPU9bMF1bMV0sQj1PWzFdWzBdLE49T1sxXVsxXSxqPSEoUiE9 PUYmJkIhPT1OJiZhKFIpJiZhKEYpJiZhKEIpJiZhKE4pKTtqJiZ6JiZnLmdl dExpbmVXaWR0aChoLGMpJiYoRD9GLVI9PTA6Ti1CPT0wKSYmKGo9ITEpLGMu aXNCbGFuaz1qLGomJkQmJihGPVIpLGomJiFEJiYoTj1CKTt2YXIgVixVLHE9 RCYmUiE9PUYsSD0hRCYmQiE9PU47aWYoSSYmIWomJihEPyhSLT1UKFIsRikq SSxGKz1UKFIsRikqSSk6KEItPVQoQixOKSpJLE4rPVQoQixOKSpJKSksIndh dGVyZmFsbCI9PT1oLnR5cGUpe2lmKCFqKXt2YXIgRz1oW2MuZGlyXS5tYXJr ZXI7Vj1HLmxpbmUud2lkdGgsVT1HLmNvbG9yfX1lbHNlIFY9Zy5nZXRMaW5l V2lkdGgoaCxjKSxVPWMubWN8fGgubWFya2VyLmNvbG9yO3ZhciBZPW4ucm91 bmQoVi8yJTEsMik7ZnVuY3Rpb24gVyh0KXtyZXR1cm4gMD09PXYuZ2FwJiYw PT09di5ncm91cGdhcD9uLnJvdW5kKE1hdGgucm91bmQodCktWSwyKTp0fWlm KCF0Ll9jb250ZXh0LnN0YXRpY1Bsb3Qpe3ZhciBYPXMub3BhY2l0eShVKTwx fHxWPi4wMT9XOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguYWJzKHQtZSk+ PTI/Vyh0KTp0PmU/TWF0aC5jZWlsKHQpOk1hdGguZmxvb3IodCl9O3EmJihS PVgoUixGKSxGPVgoRixSKSksSCYmKEI9WChCLE4pLE49WChOLEIpKX12YXIg Wj1NKGkuZW5zdXJlU2luZ2xlKGssInBhdGgiKSxQLHYsbSk7aWYoWi5zdHls ZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmF0dHIo ImQiLCJNIitSKyIsIitCKyJWIitOKyJIIitGKyJWIitCKyJaIikuY2FsbChs LnNldENsaXBVcmwsZS5sYXllckNsaXBJZCx0KSwhUC51bmlmb3JtdGV4dC5t b2RlJiZBKHYpKXt2YXIgSj1sLm1ha2VQb2ludFN0eWxlRm5zKGgpO2wuc2lu Z2xlUG9pbnRTdHlsZShjLFosaCxKLHQpfSFmdW5jdGlvbih0LGUscixuLGEs cyxjLGgscCx2LG0pe3ZhciB3LGs9ZS54YXhpcyxBPWUueWF4aXMsQz10Ll9m dWxsTGF5b3V0O2Z1bmN0aW9uIFAoZSxyLG4pe3ZhciBhPWkuZW5zdXJlU2lu Z2xlKGUsInRleHQiKS50ZXh0KHIpLmF0dHIoe2NsYXNzOiJiYXJ0ZXh0IGJh cnRleHQtIit3LCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSIsImRhdGEtbm90ZXgi OjF9KS5jYWxsKGwuZm9udCxuKS5jYWxsKG8uY29udmVydFRvVHNwYW5zLHQp O3JldHVybiBhfXZhciBPPW5bMF0udHJhY2Usej0iaCI9PT1PLm9yaWVudGF0 aW9uLEk9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgbyxzPWVbMF0udHJhY2U7 cmV0dXJuIG89cy50ZXh0dGVtcGxhdGU/ZnVuY3Rpb24odCxlLHIsbixhKXt2 YXIgbz1lWzBdLnRyYWNlLHM9aS5jYXN0T3B0aW9uKG8sciwidGV4dHRlbXBs YXRlIik7aWYoIXMpcmV0dXJuIiI7dmFyIGwsYyxoLGYscD0id2F0ZXJmYWxs Ij09PW8udHlwZSxkPSJmdW5uZWwiPT09by50eXBlO2Z1bmN0aW9uIGcodCl7 cmV0dXJuIHUoZiwrdCwhMCkudGV4dH0iaCI9PT1vLm9yaWVudGF0aW9uPyhs PSJ5IixjPWEsaD0ieCIsZj1uKToobD0ieCIsYz1uLGg9InkiLGY9YSk7dmFy IHYsbT1lW3JdLHk9e307eS5sYWJlbD1tLnAseS5sYWJlbExhYmVsPXlbbCsi TGFiZWwiXT0odj1tLnAsdShjLHYsITApLnRleHQpO3ZhciB4PWkuY2FzdE9w dGlvbihvLG0uaSwidGV4dCIpOygwPT09eHx8eCkmJih5LnRleHQ9eCkseS52 YWx1ZT1tLnMseS52YWx1ZUxhYmVsPXlbaCsiTGFiZWwiXT1nKG0ucyk7dmFy IF89e307YihfLG8sbS5pKSxwJiYoeS5kZWx0YT0rbS5yYXdTfHxtLnMseS5k ZWx0YUxhYmVsPWcoeS5kZWx0YSkseS5maW5hbD1tLnYseS5maW5hbExhYmVs PWcoeS5maW5hbCkseS5pbml0aWFsPXkuZmluYWwteS5kZWx0YSx5LmluaXRp YWxMYWJlbD1nKHkuaW5pdGlhbCkpLGQmJih5LnZhbHVlPW0ucyx5LnZhbHVl TGFiZWw9Zyh5LnZhbHVlKSx5LnBlcmNlbnRJbml0aWFsPW0uYmVnUix5LnBl cmNlbnRJbml0aWFsTGFiZWw9aS5mb3JtYXRQZXJjZW50KG0uYmVnUikseS5w ZXJjZW50UHJldmlvdXM9bS5kaWZSLHkucGVyY2VudFByZXZpb3VzTGFiZWw9 aS5mb3JtYXRQZXJjZW50KG0uZGlmUikseS5wZXJjZW50VG90YWw9bS5zdW1S LHkucGVyY2VuVG90YWxMYWJlbD1pLmZvcm1hdFBlcmNlbnQobS5zdW1SKSk7 dmFyIHc9aS5jYXN0T3B0aW9uKG8sbS5pLCJjdXN0b21kYXRhIik7cmV0dXJu IHcmJih5LmN1c3RvbWRhdGE9dyksaS50ZXh0dGVtcGxhdGVTdHJpbmcocyx5 LHQuX2QzbG9jYWxlLF8seSxvLl9tZXRhfHx7fSl9KHQsZSxyLG4sYSk6cy50 ZXh0aW5mbz9mdW5jdGlvbih0LGUscixuKXt2YXIgYT10WzBdLnRyYWNlLG89 ImgiPT09YS5vcmllbnRhdGlvbixzPSJ3YXRlcmZhbGwiPT09YS50eXBlLGw9 ImZ1bm5lbCI9PT1hLnR5cGU7ZnVuY3Rpb24gYyh0KXt2YXIgZT1vP3I6bjty ZXR1cm4gdShlLCt0LCEwKS50ZXh0fXZhciBoLGYscD1hLnRleHRpbmZvLGQ9 dFtlXSxnPXAuc3BsaXQoIisiKSx2PVtdLG09ZnVuY3Rpb24odCl7cmV0dXJu LTEhPT1nLmluZGV4T2YodCl9O2lmKG0oImxhYmVsIikmJnYucHVzaCgoZj10 W2VdLnAsdShvP246cixmLCEwKS50ZXh0KSksbSgidGV4dCIpJiYoMD09PSho PWkuY2FzdE9wdGlvbihhLGQuaSwidGV4dCIpKXx8aCkmJnYucHVzaChoKSxz KXt2YXIgeT0rZC5yYXdTfHxkLnMseD1kLnYsYj14LXk7bSgiaW5pdGlhbCIp JiZ2LnB1c2goYyhiKSksbSgiZGVsdGEiKSYmdi5wdXNoKGMoeSkpLG0oImZp bmFsIikmJnYucHVzaChjKHgpKX1pZihsKXttKCJ2YWx1ZSIpJiZ2LnB1c2go YyhkLnMpKTt2YXIgXz0wO20oInBlcmNlbnQgaW5pdGlhbCIpJiZfKyssbSgi cGVyY2VudCBwcmV2aW91cyIpJiZfKyssbSgicGVyY2VudCB0b3RhbCIpJiZf Kys7dmFyIHc9Xz4xO20oInBlcmNlbnQgaW5pdGlhbCIpJiYoaD1pLmZvcm1h dFBlcmNlbnQoZC5iZWdSKSx3JiYoaCs9IiBvZiBpbml0aWFsIiksdi5wdXNo KGgpKSxtKCJwZXJjZW50IHByZXZpb3VzIikmJihoPWkuZm9ybWF0UGVyY2Vu dChkLmRpZlIpLHcmJihoKz0iIG9mIHByZXZpb3VzIiksdi5wdXNoKGgpKSxt KCJwZXJjZW50IHRvdGFsIikmJihoPWkuZm9ybWF0UGVyY2VudChkLnN1bVIp LHcmJihoKz0iIG9mIHRvdGFsIiksdi5wdXNoKGgpKX1yZXR1cm4gdi5qb2lu KCI8YnI+Iil9KGUscixuLGEpOmcuZ2V0VmFsdWUocy50ZXh0LHIpLGcuY29l cmNlU3RyaW5nKHksbyl9KEMsbixhLGssQSk7dz1mdW5jdGlvbih0LGUpe3Zh ciByPWcuZ2V0VmFsdWUodC50ZXh0cG9zaXRpb24sZSk7cmV0dXJuIGcuY29l cmNlRW51bWVyYXRlZCh4LHIpfShPLGEpO3ZhciBEPSJzdGFjayI9PT12Lm1v ZGV8fCJyZWxhdGl2ZSI9PT12Lm1vZGUsUj1uW2FdLEY9IUR8fFIuX291dG1v c3Q7aWYoSSYmIm5vbmUiIT09dyYmKCFSLmlzQmxhbmsmJnMhPT1jJiZoIT09 cHx8ImF1dG8iIT09dyYmImluc2lkZSIhPT13KSl7dmFyIEI9Qy5mb250LE49 ZC5nZXRCYXJDb2xvcihuW2FdLE8pLGo9ZC5nZXRJbnNpZGVUZXh0Rm9udChP LGEsQixOKSxWPWQuZ2V0T3V0c2lkZVRleHRGb250KE8sYSxCKSxVPXIuZGF0 dW0oKTt6PyJsb2ciPT09ay50eXBlJiZVLnMwPD0wJiYocz1rLnJhbmdlWzBd PGsucmFuZ2VbMV0/MDprLl9sZW5ndGgpOiJsb2ciPT09QS50eXBlJiZVLnMw PD0wJiYoaD1BLnJhbmdlWzBdPEEucmFuZ2VbMV0/QS5fbGVuZ3RoOjApO3Zh ciBxLEgsRyxZLFcsWD1NYXRoLmFicyhjLXMpLTIqXyxaPU1hdGguYWJzKHAt aCktMipfO2lmKCJvdXRzaWRlIj09PXcmJihGfHxSLmhhc0J8fCh3PSJpbnNp ZGUiKSksImF1dG8iPT09dylpZihGKXt3PSJpbnNpZGUiLFc9aS5lbnN1cmVV bmlmb3JtRm9udFNpemUodCxqKSxxPVAocixJLFcpLEg9bC5iQm94KHEubm9k ZSgpKSxHPUgud2lkdGgsWT1ILmhlaWdodDt2YXIgSj1HPjAmJlk+MCxLPUc8 PVgmJlk8PVosUT1HPD1aJiZZPD1YLCQ9ej9YPj1HKihaL1kpOlo+PVkqKFgv Ryk7SiYmKEt8fFF8fCQpP3c9Imluc2lkZSI6KHc9Im91dHNpZGUiLHEucmVt b3ZlKCkscT1udWxsKX1lbHNlIHc9Imluc2lkZSI7aWYoIXEpe1c9aS5lbnN1 cmVVbmlmb3JtRm9udFNpemUodCwib3V0c2lkZSI9PT13P1Y6aik7dmFyIHR0 PShxPVAocixJLFcpKS5hdHRyKCJ0cmFuc2Zvcm0iKTtpZihxLmF0dHIoInRy YW5zZm9ybSIsIiIpLEg9bC5iQm94KHEubm9kZSgpKSxHPUgud2lkdGgsWT1I LmhlaWdodCxxLmF0dHIoInRyYW5zZm9ybSIsdHQpLEc8PTB8fFk8PTApcmV0 dXJuIHZvaWQgcS5yZW1vdmUoKX12YXIgZXQscnQsbnQ9Ty50ZXh0YW5nbGU7 Im91dHNpZGUiPT09dz8ocnQ9ImJvdGgiPT09Ty5jb25zdHJhaW50ZXh0fHwi b3V0c2lkZSI9PT1PLmNvbnN0cmFpbnRleHQsZXQ9ZnVuY3Rpb24odCxlLHIs bixhLGkpe3ZhciBvLHM9ISFpLmlzSG9yaXpvbnRhbCxsPSEhaS5jb25zdHJh aW5lZCxjPWkuYW5nbGV8fDAsdT1hLndpZHRoLGg9YS5oZWlnaHQsZj1NYXRo LmFicyhlLXQpLHA9TWF0aC5hYnMobi1yKTtvPXM/cD4yKl8/XzowOmY+Mipf P186MDt2YXIgZD0xO2wmJihkPXM/TWF0aC5taW4oMSxwL2gpOk1hdGgubWlu KDEsZi91KSk7dmFyIGc9UyhjKSx2PUUoYSxnKSxtPShzP3YueDp2LnkpLzIs eT0oYS5sZWZ0K2EucmlnaHQpLzIseD0oYS50b3ArYS5ib3R0b20pLzIsYj0o dCtlKS8yLHc9KHIrbikvMixrPTAsTT0wLEE9cz9UKGUsdCk6VChyLG4pO3Jl dHVybiBzPyhiPWUtQSpvLGs9QSptKToodz1uK0EqbyxNPS1BKm0pLHt0ZXh0 WDp5LHRleHRZOngsdGFyZ2V0WDpiLHRhcmdldFk6dyxhbmNob3JYOmssYW5j aG9yWTpNLHNjYWxlOmQscm90YXRlOmd9fShzLGMsaCxwLEgse2lzSG9yaXpv bnRhbDp6LGNvbnN0cmFpbmVkOnJ0LGFuZ2xlOm50fSkpOihydD0iYm90aCI9 PT1PLmNvbnN0cmFpbnRleHR8fCJpbnNpZGUiPT09Ty5jb25zdHJhaW50ZXh0 LGV0PUwocyxjLGgscCxILHtpc0hvcml6b250YWw6eixjb25zdHJhaW5lZDpy dCxhbmdsZTpudCxhbmNob3I6Ty5pbnNpZGV0ZXh0YW5jaG9yfSkpLGV0LmZv bnRTaXplPVcuc2l6ZSxmKE8udHlwZSxldCxDKSxSLnRyYW5zZm9ybT1ldCxN KHEsQyx2LG0pLmF0dHIoInRyYW5zZm9ybSIsaS5nZXRUZXh0VHJhbnNmb3Jt KGV0KSl9ZWxzZSByLnNlbGVjdCgidGV4dCIpLnJlbW92ZSgpfSh0LGUsayxy LHAsUixGLEIsTix2LG0pLGUubGF5ZXJDbGlwSWQmJmwuaGlkZU91dHNpZGVS YW5nZVBvaW50KGMsay5zZWxlY3QoInRleHQiKSx3LEMsaC54Y2FsZW5kYXIs aC55Y2FsZW5kYXIpfSk7dmFyIE49ITE9PT1oLmNsaXBvbmF4aXM7bC5zZXRD bGlwVXJsKGMsTj9udWxsOmUubGF5ZXJDbGlwSWQsdCl9KTtjLmdldENvbXBv bmVudE1ldGhvZCgiZXJyb3JiYXJzIiwicGxvdCIpKHQsTyxlLHYpfSx0b01v dmVJbnNpZGVCYXI6TH19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTky LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vY29tcG9u ZW50cy9meC9oZWxwZXJzIjo2MjcsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9s aWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFu L2F4ZXMiOjc2NSwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9hdHRyaWJ1dGVz Ijo4NTYsIi4vY29uc3RhbnRzIjo4NTgsIi4vaGVscGVycyI6ODYyLCIuL3N0 eWxlIjo4NzAsIi4vdW5pZm9ybV90ZXh0Ijo4NzIsZDM6MTY1LCJmYXN0LWlz bnVtZXJpYyI6MjI4fV0sODY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2Z1bmN0aW9uIG4odCxlLHIsbixhKXt2YXIgaT1lLmMycChuP3QuczA6 dC5wMCwhMCksbz1lLmMycChuP3QuczE6dC5wMSwhMCkscz1yLmMycChuP3Qu cDA6dC5zMCwhMCksbD1yLmMycChuP3QucDE6dC5zMSwhMCk7cmV0dXJuIGE/ WyhpK28pLzIsKHMrbCkvMl06bj9bbywocytsKS8yXTpbKGkrbykvMixsXX1l LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixhPXQuY2QsaT10LnhheGlz LG89dC55YXhpcyxzPWFbMF0udHJhY2UsbD0iZnVubmVsIj09PXMudHlwZSxj PSJoIj09PXMub3JpZW50YXRpb24sdT1bXTtpZighMT09PWUpZm9yKHI9MDty PGEubGVuZ3RoO3IrKylhW3JdLnNlbGVjdGVkPTA7ZWxzZSBmb3Iocj0wO3I8 YS5sZW5ndGg7cisrKXt2YXIgaD1hW3JdLGY9ImN0ImluIGg/aC5jdDpuKGgs aSxvLGMsbCk7ZS5jb250YWlucyhmLCExLHIsdCk/KHUucHVzaCh7cG9pbnRO dW1iZXI6cix4OmkuYzJkKGgueCkseTpvLmMyZChoLnkpfSksaC5zZWxlY3Rl ZD0xKTpoLnNlbGVjdGVkPTB9cmV0dXJuIHV9fSx7fV0sODY5OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1pO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLmRpc3RpbmN0VmFscyxhPXQoIi4uLy4uL2NvbnN0YW50cy9u dW1lcmljYWwiKS5CQUROVU07ZnVuY3Rpb24gaSh0LGUpe3RoaXMudHJhY2Vz PXQsdGhpcy5zZXBOZWdWYWw9ZS5zZXBOZWdWYWwsdGhpcy5vdmVybGFwTm9N ZXJnZT1lLm92ZXJsYXBOb01lcmdlO2Zvcih2YXIgcj0xLzAsaT1bXSxvPTA7 bzx0Lmxlbmd0aDtvKyspe2Zvcih2YXIgcz10W29dLGw9MDtsPHMubGVuZ3Ro O2wrKyl7dmFyIGM9c1tsXTtjLnAhPT1hJiZpLnB1c2goYy5wKX1zWzBdJiZz WzBdLndpZHRoMSYmKHI9TWF0aC5taW4oc1swXS53aWR0aDEscikpfXRoaXMu cG9zaXRpb25zPWk7dmFyIHU9bihpKTt0aGlzLmRpc3RpbmN0UG9zaXRpb25z PXUudmFscywxPT09dS52YWxzLmxlbmd0aCYmciE9PTEvMD90aGlzLm1pbkRp ZmY9cjp0aGlzLm1pbkRpZmY9TWF0aC5taW4odS5taW5EaWZmLHIpLHRoaXMu YmluV2lkdGg9dGhpcy5taW5EaWZmLHRoaXMuYmlucz17fX1pLnByb3RvdHlw ZS5wdXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmdldExhYmVsKHQsZSks bj10aGlzLmJpbnNbcl18fDA7cmV0dXJuIHRoaXMuYmluc1tyXT1uK2Usbn0s aS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5nZXRM YWJlbCh0LGUpO3JldHVybiB0aGlzLmJpbnNbcl18fDB9LGkucHJvdG90eXBl LmdldExhYmVsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKGU8MCYmdGhpcy5zZXBO ZWdWYWw/InYiOiJeIikrKHRoaXMub3ZlcmxhcE5vTWVyZ2U/dDpNYXRoLnJv dW5kKHQvdGhpcy5iaW5XaWR0aCkpfX0seyIuLi8uLi9jb25zdGFudHMvbnVt ZXJpY2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3fV0sODcwOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdp bmciKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vLi4vcmVnaXN0cnkiKSxs PXQoIi4vdW5pZm9ybV90ZXh0IikucmVzaXplVGV4dCxjPXQoIi4vYXR0cmli dXRlcyIpLHU9Yy50ZXh0Zm9udCxoPWMuaW5zaWRldGV4dGZvbnQsZj1jLm91 dHNpZGV0ZXh0Zm9udCxwPXQoIi4vaGVscGVycyIpO2Z1bmN0aW9uIGQodCxl LHIpe2kucG9pbnRTdHlsZSh0LnNlbGVjdEFsbCgicGF0aCIpLGUsciksZyh0 LGUscil9ZnVuY3Rpb24gZyh0LGUscil7dC5zZWxlY3RBbGwoInRleHQiKS5l YWNoKGZ1bmN0aW9uKHQpe3ZhciBhPW4uc2VsZWN0KHRoaXMpLHM9by5lbnN1 cmVVbmlmb3JtRm9udFNpemUocix2KGEsdCxlLHIpKTtpLmZvbnQoYSxzKX0p fWZ1bmN0aW9uIHYodCxlLHIsbil7dmFyIGE9bi5fZnVsbExheW91dC5mb250 LGk9ci50ZXh0Zm9udDtpZih0LmNsYXNzZWQoImJhcnRleHQtaW5zaWRlIikp e3ZhciBvPV8oZSxyKTtpPXkocixlLmksYSxvKX1lbHNlIHQuY2xhc3NlZCgi YmFydGV4dC1vdXRzaWRlIikmJihpPXgocixlLmksYSkpO3JldHVybiBpfWZ1 bmN0aW9uIG0odCxlLHIpe3JldHVybiBiKHUsdC50ZXh0Zm9udCxlLHIpfWZ1 bmN0aW9uIHkodCxlLHIsbil7dmFyIGk9bSh0LGUscik7cmV0dXJuKHZvaWQg MD09PXQuX2lucHV0LnRleHRmb250fHx2b2lkIDA9PT10Ll9pbnB1dC50ZXh0 Zm9udC5jb2xvcnx8QXJyYXkuaXNBcnJheSh0LnRleHRmb250LmNvbG9yKSYm dm9pZCAwPT09dC50ZXh0Zm9udC5jb2xvcltlXSkmJihpPXtjb2xvcjphLmNv bnRyYXN0KG4pLGZhbWlseTppLmZhbWlseSxzaXplOmkuc2l6ZX0pLGIoaCx0 Lmluc2lkZXRleHRmb250LGUsaSl9ZnVuY3Rpb24geCh0LGUscil7dmFyIG49 bSh0LGUscik7cmV0dXJuIGIoZix0Lm91dHNpZGV0ZXh0Zm9udCxlLG4pfWZ1 bmN0aW9uIGIodCxlLHIsbil7ZT1lfHx7fTt2YXIgYT1wLmdldFZhbHVlKGUu ZmFtaWx5LHIpLGk9cC5nZXRWYWx1ZShlLnNpemUsciksbz1wLmdldFZhbHVl KGUuY29sb3Iscik7cmV0dXJue2ZhbWlseTpwLmNvZXJjZVN0cmluZyh0LmZh bWlseSxhLG4uZmFtaWx5KSxzaXplOnAuY29lcmNlTnVtYmVyKHQuc2l6ZSxp LG4uc2l6ZSksY29sb3I6cC5jb2VyY2VDb2xvcih0LmNvbG9yLG8sbi5jb2xv cil9fWZ1bmN0aW9uIF8odCxlKXtyZXR1cm4id2F0ZXJmYWxsIj09PWUudHlw ZT9lW3QuZGlyXS5tYXJrZXIuY29sb3I6dC5tY3x8ZS5tYXJrZXIuY29sb3J9 ZS5leHBvcnRzPXtzdHlsZTpmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0 KS5zZWxlY3RBbGwoImcuYmFybGF5ZXIiKS5zZWxlY3RBbGwoImcudHJhY2Ui KTtsKHQsZSwiYmFyIik7dmFyIHI9ZS5zaXplKCksYT10Ll9mdWxsTGF5b3V0 O2Uuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRy YWNlLm9wYWNpdHl9KS5lYWNoKGZ1bmN0aW9uKHQpeygic3RhY2siPT09YS5i YXJtb2RlJiZyPjF8fDA9PT1hLmJhcmdhcCYmMD09PWEuYmFyZ3JvdXBnYXAm JiF0WzBdLnRyYWNlLm1hcmtlci5saW5lLndpZHRoKSYmbi5zZWxlY3QodGhp cykuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpfSksZS5z ZWxlY3RBbGwoImcucG9pbnRzIikuZWFjaChmdW5jdGlvbihlKXtkKG4uc2Vs ZWN0KHRoaXMpLGVbMF0udHJhY2UsdCl9KSxzLmdldENvbXBvbmVudE1ldGhv ZCgiZXJyb3JiYXJzIiwic3R5bGUiKShlKX0sc3R5bGVUZXh0UG9pbnRzOmcs c3R5bGVPblNlbGVjdDpmdW5jdGlvbih0LGUscil7dmFyIGE9ZVswXS50cmFj ZTthLnNlbGVjdGVkcG9pbnRzP2Z1bmN0aW9uKHQsZSxyKXtpLnNlbGVjdGVk UG9pbnRTdHlsZSh0LnNlbGVjdEFsbCgicGF0aCIpLGUpLGZ1bmN0aW9uKHQs ZSxyKXt0LmVhY2goZnVuY3Rpb24odCl7dmFyIGEscz1uLnNlbGVjdCh0aGlz KTtpZih0LnNlbGVjdGVkKXthPW8uZW5zdXJlVW5pZm9ybUZvbnRTaXplKHIs dihzLHQsZSxyKSk7dmFyIGw9ZS5zZWxlY3RlZC50ZXh0Zm9udCYmZS5zZWxl Y3RlZC50ZXh0Zm9udC5jb2xvcjtsJiYoYS5jb2xvcj1sKSxpLmZvbnQocyxh KX1lbHNlIGkuc2VsZWN0ZWRUZXh0U3R5bGUocyxlKX0pfSh0LnNlbGVjdEFs bCgidGV4dCIpLGUscil9KHIsYSx0KTooZChyLGEsdCkscy5nZXRDb21wb25l bnRNZXRob2QoImVycm9yYmFycyIsInN0eWxlIikocikpfSxnZXRJbnNpZGVU ZXh0Rm9udDp5LGdldE91dHNpZGVUZXh0Rm9udDp4LGdldEJhckNvbG9yOl8s cmVzaXplVGV4dDpsfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIs Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcx NywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9hdHRyaWJ1dGVzIjo4NTYsIi4v aGVscGVycyI6ODYyLCIuL3VuaWZvcm1fdGV4dCI6ODcyLGQzOjE2NX1dLDg3 MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9jb21wb25lbnRzL2NvbG9yIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUsaT10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsbyxzKXtyKCJtYXJrZXIuY29sb3IiLG8pLGEodCwibWFy a2VyIikmJmkodCxlLHMscix7cHJlZml4OiJtYXJrZXIuIixjTGV0dGVyOiJj In0pLHIoIm1hcmtlci5saW5lLmNvbG9yIixuLmRlZmF1bHRMaW5lKSxhKHQs Im1hcmtlci5saW5lIikmJmkodCxlLHMscix7cHJlZml4OiJtYXJrZXIubGlu ZS4iLGNMZXR0ZXI6ImMifSkscigibWFya2VyLmxpbmUud2lkdGgiKSxyKCJt YXJrZXIub3BhY2l0eSIpLHIoInNlbGVjdGVkLm1hcmtlci5jb2xvciIpLHIo InVuc2VsZWN0ZWQubWFya2VyLmNvbG9yIil9fSx7Ii4uLy4uL2NvbXBvbmVu dHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2Rl ZmF1bHRzIjo2MDIsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxw ZXJzIjo2MDN9XSw4NzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xpYiIpO2Z1bmN0aW9uIGkodCl7 cmV0dXJuIl8iK3QrIlRleHRfbWluc2l6ZSJ9ZS5leHBvcnRzPXtyZWNvcmRN aW5UZXh0U2l6ZTpmdW5jdGlvbih0LGUscil7aWYoci51bmlmb3JtdGV4dC5t b2RlKXt2YXIgbj1pKHQpLGE9ci51bmlmb3JtdGV4dC5taW5zaXplLG89ZS5z Y2FsZSplLmZvbnRTaXplO2UuaGlkZT1vPGEscltuXT1yW25dfHwxLzAsZS5o aWRlfHwocltuXT1NYXRoLm1pbihyW25dLE1hdGgubWF4KG8sYSkpKX19LGNs ZWFyTWluVGV4dFNpemU6ZnVuY3Rpb24odCxlKXtlW2kodCldPXZvaWQgMH0s cmVzaXplVGV4dDpmdW5jdGlvbih0LGUscil7dmFyIGk9dC5fZnVsbExheW91 dCxvPWlbIl8iK3IrIlRleHRfbWluc2l6ZSJdO2lmKG8pe3ZhciBzLGw9Imhp ZGUiPT09aS51bmlmb3JtdGV4dC5tb2RlO3N3aXRjaChyKXtjYXNlImZ1bm5l bGFyZWEiOmNhc2UicGllIjpjYXNlInN1bmJ1cnN0IjpzPSJnLnNsaWNlIjti cmVhaztjYXNlInRyZWVtYXAiOnM9Imcuc2xpY2UsIGcucGF0aGJhciI7YnJl YWs7ZGVmYXVsdDpzPSJnLnBvaW50cyA+IGcucG9pbnQifWUuc2VsZWN0QWxs KHMpLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC50cmFuc2Zvcm07ZSYmKGUu c2NhbGU9bCYmZS5oaWRlPzA6by9lLmZvbnRTaXplLG4uc2VsZWN0KHRoaXMp LnNlbGVjdCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsYS5nZXRUZXh0VHJh bnNmb3JtKGUpKSl9KX19fX0seyIuLi8uLi9saWIiOjcxNyxkMzoxNjV9XSw4 NzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVB dHRycyxhPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGk9dCgi Li4vc2NhdHRlcnBvbGFyL2F0dHJpYnV0ZXMiKSxvPXQoIi4uL2Jhci9hdHRy aWJ1dGVzIik7ZS5leHBvcnRzPXtyOmkucix0aGV0YTppLnRoZXRhLHIwOmku cjAsZHI6aS5kcix0aGV0YTA6aS50aGV0YTAsZHRoZXRhOmkuZHRoZXRhLHRo ZXRhdW5pdDppLnRoZXRhdW5pdCxiYXNlOmEoe30sby5iYXNlLHt9KSxvZmZz ZXQ6YSh7fSxvLm9mZnNldCx7fSksd2lkdGg6YSh7fSxvLndpZHRoLHt9KSx0 ZXh0OmEoe30sby50ZXh0LHt9KSxob3ZlcnRleHQ6YSh7fSxvLmhvdmVydGV4 dCx7fSksbWFya2VyOm8ubWFya2VyLGhvdmVyaW5mbzppLmhvdmVyaW5mbyxo b3ZlcnRlbXBsYXRlOm4oKSxzZWxlY3RlZDpvLnNlbGVjdGVkLHVuc2VsZWN0 ZWQ6by51bnNlbGVjdGVkfX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4u Ly4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vYmFyL2F0 dHJpYnV0ZXMiOjg1NiwiLi4vc2NhdHRlcnBvbGFyL2F0dHJpYnV0ZXMiOjEx OTN9XSw4NzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hlbHBlcnMiKS5oYXND b2xvcnNjYWxlLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2Nh bGMiKSxpPXQoIi4uL2Jhci9hcnJheXNfdG9fY2FsY2RhdGEiKSxvPXQoIi4u L2Jhci9jcm9zc190cmFjZV9jYWxjIikuc2V0R3JvdXBQb3NpdGlvbnMscz10 KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIiksbD10KCIuLi8uLi9yZWdp c3RyeSIpLnRyYWNlSXMsYz10KCIuLi8uLi9saWIiKS5leHRlbmRGbGF0O2Uu ZXhwb3J0cz17Y2FsYzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Ll9mdWxs TGF5b3V0LG89ZS5zdWJwbG90LGw9cltvXS5yYWRpYWxheGlzLGM9cltvXS5h bmd1bGFyYXhpcyx1PWwubWFrZUNhbGNkYXRhKGUsInIiKSxoPWMubWFrZUNh bGNkYXRhKGUsInRoZXRhIiksZj1lLl9sZW5ndGgscD1uZXcgQXJyYXkoZiks ZD11LGc9aCx2PTA7djxmO3YrKylwW3ZdPXtwOmdbdl0sczpkW3ZdfTtmdW5j dGlvbiBtKHQpe3ZhciByPWVbdF07dm9pZCAwIT09ciYmKGVbIl8iK3RdPUFy cmF5LmlzQXJyYXkocik/Yy5tYWtlQ2FsY2RhdGEoZSx0KTpjLmQyYyhyLGUu dGhldGF1bml0KSl9cmV0dXJuImxpbmVhciI9PT1jLnR5cGUmJihtKCJ3aWR0 aCIpLG0oIm9mZnNldCIpKSxuKGUsIm1hcmtlciIpJiZhKHQsZSx7dmFsczpl Lm1hcmtlci5jb2xvcixjb250YWluZXJTdHI6Im1hcmtlciIsY0xldHRlcjoi YyJ9KSxuKGUsIm1hcmtlci5saW5lIikmJmEodCxlLHt2YWxzOmUubWFya2Vy LmxpbmUuY29sb3IsY29udGFpbmVyU3RyOiJtYXJrZXIubGluZSIsY0xldHRl cjoiYyJ9KSxpKHAsZSkscyhwLGUpLHB9LGNyb3NzVHJhY2VDYWxjOmZ1bmN0 aW9uKHQsZSxyKXtmb3IodmFyIG49dC5jYWxjZGF0YSxhPVtdLGk9MDtpPG4u bGVuZ3RoO2krKyl7dmFyIHM9bltpXSx1PXNbMF0udHJhY2U7ITA9PT11LnZp c2libGUmJmwodSwiYmFyIikmJnUuc3VicGxvdD09PXImJmEucHVzaChzKX12 YXIgaD1jKHt9LGUucmFkaWFsYXhpcyx7X2lkOiJ4In0pLGY9ZS5hbmd1bGFy YXhpcztvKHQsZixoLGEse21vZGU6ZS5iYXJtb2RlLG5vcm06ZS5iYXJub3Jt LGdhcDplLmJhcmdhcCxncm91cGdhcDplLmJhcmdyb3VwZ2FwfSl9fX0seyIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6NjAwLCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyI6NjAzLCIuLi8uLi9saWIi OjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vYmFyL2FycmF5c190b19j YWxjZGF0YSI6ODU1LCIuLi9iYXIvY3Jvc3NfdHJhY2VfY2FsYyI6ODU5LCIu Li9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjoxMTIyfV0sODc1OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9 dCgiLi4vc2NhdHRlcnBvbGFyL2RlZmF1bHRzIikuaGFuZGxlUlRoZXRhRGVm YXVsdHMsaT10KCIuLi9iYXIvc3R5bGVfZGVmYXVsdHMiKSxvPXQoIi4vYXR0 cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtmdW5jdGlv biBsKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxvLHIsYSl9YSh0LGUscyxs KT8obCgidGhldGF1bml0IiksbCgiYmFzZSIpLGwoIm9mZnNldCIpLGwoIndp ZHRoIiksbCgidGV4dCIpLGwoImhvdmVydGV4dCIpLGwoImhvdmVydGVtcGxh dGUiKSxpKHQsZSxsLHIscyksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFj aXR5KGUsbCkpOmUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGliIjo3MTcsIi4u L2Jhci9zdHlsZV9kZWZhdWx0cyI6ODcxLCIuLi9zY2F0dGVycG9sYXIvZGVm YXVsdHMiOjExOTUsIi4vYXR0cmlidXRlcyI6ODczfV0sODc2OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVu dHMvZngiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vYmFyL2hvdmVyIiku Z2V0VHJhY2VDb2xvcixvPWEuZmlsbFRleHQscz10KCIuLi9zY2F0dGVycG9s YXIvaG92ZXIiKS5tYWtlSG92ZXJQb2ludFRleHQsbD10KCIuLi8uLi9wbG90 cy9wb2xhci9oZWxwZXJzIikuaXNQdEluc2lkZVBvbHlnb247ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyKXt2YXIgYz10LmNkLHU9Y1swXS50cmFjZSxoPXQu c3VicGxvdCxmPWgucmFkaWFsQXhpcyxwPWguYW5ndWxhckF4aXMsZD1oLnZh bmdsZXMsZz1kP2w6YS5pc1B0SW5zaWRlU2VjdG9yLHY9dC5tYXhIb3ZlckRp c3RhbmNlLG09cC5fcGVyaW9kfHwyKk1hdGguUEkseT1NYXRoLmFicyhmLmcy cChNYXRoLnNxcnQoZSplK3IqcikpKSx4PU1hdGguYXRhbjIocixlKTtmLnJh bmdlWzBdPmYucmFuZ2VbMV0mJih4Kz1NYXRoLlBJKTtpZihuLmdldENsb3Nl c3QoYyxmdW5jdGlvbih0KXtyZXR1cm4gZyh5LHgsW3QucnAwLHQucnAxXSxb dC50aGV0YWcwLHQudGhldGFnMV0sZCk/ditNYXRoLm1pbigxLE1hdGguYWJz KHQudGhldGFnMS10LnRoZXRhZzApL20pLTErKHQucnAxLXkpLyh0LnJwMS10 LnJwMCktMToxLzB9LHQpLCExIT09dC5pbmRleCl7dmFyIGI9Y1t0LmluZGV4 XTt0LngwPXQueDE9Yi5jdFswXSx0LnkwPXQueTE9Yi5jdFsxXTt2YXIgXz1h LmV4dGVuZEZsYXQoe30sYix7cjpiLnMsdGhldGE6Yi5wfSk7cmV0dXJuIG8o Yix1LHQpLHMoXyx1LGgsdCksdC5ob3ZlcnRlbXBsYXRlPXUuaG92ZXJ0ZW1w bGF0ZSx0LmNvbG9yPWkodSxiKSx0LnhMYWJlbFZhbD10LnlMYWJlbFZhbD12 b2lkIDAsYi5zPDAmJih0LmlkZWFsQWxpZ249ImxlZnQiKSxbdF19fX0seyIu Li8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2xpYiI6NzE3LCIuLi8u Li9wbG90cy9wb2xhci9oZWxwZXJzIjo4MjgsIi4uL2Jhci9ob3ZlciI6ODYz LCIuLi9zY2F0dGVycG9sYXIvaG92ZXIiOjExOTd9XSw4Nzc6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0 cmFjZSIsbmFtZToiYmFycG9sYXIiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4u L3Bsb3RzL3BvbGFyIiksY2F0ZWdvcmllczpbInBvbGFyIiwiYmFyIiwic2hv d0xlZ2VuZCJdLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0 QXR0cmlidXRlczp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVm YXVsdHM6dCgiLi9kZWZhdWx0cyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQo Ii4vbGF5b3V0X2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKS5jYWxjLGNy b3NzVHJhY2VDYWxjOnQoIi4vY2FsYyIpLmNyb3NzVHJhY2VDYWxjLHBsb3Q6 dCgiLi9wbG90IiksY29sb3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29s b3JiYXIiKSxmb3JtYXRMYWJlbHM6dCgiLi4vc2NhdHRlcnBvbGFyL2Zvcm1h dF9sYWJlbHMiKSxzdHlsZTp0KCIuLi9iYXIvc3R5bGUiKS5zdHlsZSxzdHls ZU9uU2VsZWN0OnQoIi4uL2Jhci9zdHlsZSIpLnN0eWxlT25TZWxlY3QsaG92 ZXJQb2ludHM6dCgiLi9ob3ZlciIpLHNlbGVjdFBvaW50czp0KCIuLi9iYXIv c2VsZWN0IiksbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvcG9sYXIiOjgyOSwi Li4vYmFyL3NlbGVjdCI6ODY4LCIuLi9iYXIvc3R5bGUiOjg3MCwiLi4vc2Nh dHRlci9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4uL3NjYXR0ZXJwb2xhci9m b3JtYXRfbGFiZWxzIjoxMTk2LCIuL2F0dHJpYnV0ZXMiOjg3MywiLi9jYWxj Ijo4NzQsIi4vZGVmYXVsdHMiOjg3NSwiLi9ob3ZlciI6ODc2LCIuL2xheW91 dF9hdHRyaWJ1dGVzIjo4NzgsIi4vbGF5b3V0X2RlZmF1bHRzIjo4NzksIi4v cGxvdCI6ODgwfV0sODc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz17YmFybW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsic3RhY2siLCJvdmVybGF5Il0sZGZsdDoic3RhY2siLGVkaXRUeXBl OiJjYWxjIn0sYmFyZ2FwOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6LjEsbWlu OjAsbWF4OjEsZWRpdFR5cGU6ImNhbGMifX19LHt9XSw4Nzk6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10 KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgaSxvPXt9O2Z1bmN0aW9uIHMocixvKXtyZXR1cm4gbi5jb2Vy Y2UodFtpXXx8e30sZVtpXSxhLHIsbyl9Zm9yKHZhciBsPTA7bDxyLmxlbmd0 aDtsKyspe3ZhciBjPXJbbF07ImJhcnBvbGFyIj09PWMudHlwZSYmITA9PT1j LnZpc2libGUmJihvW2k9Yy5zdWJwbG90XXx8KHMoImJhcm1vZGUiKSxzKCJi YXJnYXAiKSxvW2ldPTEpKX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2xheW91 dF9hdHRyaWJ1dGVzIjo4Nzh9XSw4ODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoImZhc3QtaXNudW1lcmljIiks aT10KCIuLi8uLi9saWIiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2lu ZyIpLHM9dCgiLi4vLi4vcGxvdHMvcG9sYXIvaGVscGVycyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscil7dmFyIGw9ZS54YXhpcyxjPWUueWF4aXMsdT1l LnJhZGlhbEF4aXMsaD1lLmFuZ3VsYXJBeGlzLGY9ZnVuY3Rpb24odCl7dmFy IGU9dC5jeHgscj10LmN5eTtpZih0LnZhbmdsZXMpcmV0dXJuIGZ1bmN0aW9u KG4sYSxvLGwpe3ZhciBjLHU7aS5hbmdsZURlbHRhKG8sbCk+MD8oYz1vLHU9 bCk6KGM9bCx1PW8pO3ZhciBoPXMuZmluZEVuY2xvc2luZ1ZlcnRleEFuZ2xl cyhjLHQudmFuZ2xlcylbMF0sZj1zLmZpbmRFbmNsb3NpbmdWZXJ0ZXhBbmds ZXModSx0LnZhbmdsZXMpWzFdLHA9W2gsKGMrdSkvMixmXTtyZXR1cm4gcy5w YXRoUG9seWdvbkFubnVsdXMobixhLGMsdSxwLGUscil9O3JldHVybiBmdW5j dGlvbih0LG4sYSxvKXtyZXR1cm4gaS5wYXRoQW5udWx1cyh0LG4sYSxvLGUs cil9fShlKSxwPWUubGF5ZXJzLmZyb250cGxvdC5zZWxlY3QoImcuYmFybGF5 ZXIiKTtpLm1ha2VUcmFjZUdyb3VwcyhwLHIsInRyYWNlIGJhcnMiKS5lYWNo KGZ1bmN0aW9uKCl7dmFyIHI9bi5zZWxlY3QodGhpcykscz1pLmVuc3VyZVNp bmdsZShyLCJnIiwicG9pbnRzIikuc2VsZWN0QWxsKCJnLnBvaW50IikuZGF0 YShpLmlkZW50aXR5KTtzLmVudGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInZl Y3Rvci1lZmZlY3QiLCJub24tc2NhbGluZy1zdHJva2UiKS5zdHlsZSgic3Ry b2tlLW1pdGVybGltaXQiLDIpLmNsYXNzZWQoInBvaW50IiwhMCkscy5leGl0 KCkucmVtb3ZlKCkscy5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlLHI9bi5zZWxl Y3QodGhpcyksbz10LnJwMD11LmMycCh0LnMwKSxzPXQucnAxPXUuYzJwKHQu czEpLHA9dC50aGV0YWcwPWguYzJnKHQucDApLGQ9dC50aGV0YWcxPWguYzJn KHQucDEpO2lmKGEobykmJmEocykmJmEocCkmJmEoZCkmJm8hPT1zJiZwIT09 ZCl7dmFyIGc9dS5jMmcodC5zMSksdj0ocCtkKS8yO3QuY3Q9W2wuYzJwKGcq TWF0aC5jb3ModikpLGMuYzJwKGcqTWF0aC5zaW4odikpXSxlPWYobyxzLHAs ZCl9ZWxzZSBlPSJNMCwwWiI7aS5lbnN1cmVTaW5nbGUociwicGF0aCIpLmF0 dHIoImQiLGUpfSksby5zZXRDbGlwVXJsKHIsZS5faGFzQ2xpcE9uQXhpc0Zh bHNlP2UuY2xpcElkcy5mb3JUcmFjZXM6bnVsbCx0KX0pfX0seyIuLi8uLi9j b21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uLy4u L3Bsb3RzL3BvbGFyL2hlbHBlcnMiOjgyOCxkMzoxNjUsImZhc3QtaXNudW1l cmljIjoyMjh9XSw4ODE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksYT10KCIuLi9iYXIv YXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRy aWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVz IikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLHM9dCgiLi4vLi4vbGliL2V4dGVuZCIp LmV4dGVuZEZsYXQsbD1uLm1hcmtlcixjPWwubGluZTtlLmV4cG9ydHM9e3k6 e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhp c1R5cGVzIn0seDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNh bGMrY2xlYXJBeGlzVHlwZXMifSx4MDp7dmFsVHlwZToiYW55IixlZGl0VHlw ZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHkwOnt2YWxUeXBlOiJhbnkiLGVk aXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sZHg6e3ZhbFR5cGU6Im51 bWJlciIsZWRpdFR5cGU6ImNhbGMifSxkeTp7dmFsVHlwZToibnVtYmVyIixl ZGl0VHlwZToiY2FsYyJ9LG5hbWU6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5 cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxxMTp7dmFsVHlwZToiZGF0YV9h cnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxtZWRpYW46 e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhp c1R5cGVzIn0scTM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJj YWxjK2NsZWFyQXhpc1R5cGVzIn0sbG93ZXJmZW5jZTp7dmFsVHlwZToiZGF0 YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx1cHBlcmZlbmNlOnt2YWxUeXBl OiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LG5vdGNoZWQ6e3ZhbFR5 cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJjYWxjIn0sbm90Y2h3aWR0aDp7dmFs VHlwZToibnVtYmVyIixtaW46MCxtYXg6LjUsZGZsdDouMjUsZWRpdFR5cGU6 ImNhbGMifSxub3RjaHNwYW46e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRU eXBlOiJjYWxjIn0sYm94cG9pbnRzOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJhbGwiLCJvdXRsaWVycyIsInN1c3BlY3RlZG91dGxpZXJzIiwh MV0sZWRpdFR5cGU6ImNhbGMifSxqaXR0ZXI6e3ZhbFR5cGU6Im51bWJlciIs bWluOjAsbWF4OjEsZWRpdFR5cGU6ImNhbGMifSxwb2ludHBvczp7dmFsVHlw ZToibnVtYmVyIixtaW46LTIsbWF4OjIsZWRpdFR5cGU6ImNhbGMifSxib3ht ZWFuOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCJzZCIsITFd LGVkaXRUeXBlOiJjYWxjIn0sbWVhbjp7dmFsVHlwZToiZGF0YV9hcnJheSIs ZWRpdFR5cGU6ImNhbGMifSxzZDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSxvcmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsidiIsImgiXSxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNU eXBlcyJ9LHF1YXJ0aWxlbWV0aG9kOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJsaW5lYXIiLCJleGNsdXNpdmUiLCJpbmNsdXNpdmUiXSxkZmx0 OiJsaW5lYXIiLGVkaXRUeXBlOiJjYWxjIn0sd2lkdGg6e3ZhbFR5cGU6Im51 bWJlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sbWFya2VyOntv dXRsaWVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OiJyZ2JhKDAsIDAs IDAsIDApIixlZGl0VHlwZToic3R5bGUifSxzeW1ib2w6cyh7fSxsLnN5bWJv bCx7YXJyYXlPazohMSxlZGl0VHlwZToicGxvdCJ9KSxvcGFjaXR5OnMoe30s bC5vcGFjaXR5LHthcnJheU9rOiExLGRmbHQ6MSxlZGl0VHlwZToic3R5bGUi fSksc2l6ZTpzKHt9LGwuc2l6ZSx7YXJyYXlPazohMSxlZGl0VHlwZToiY2Fs YyJ9KSxjb2xvcjpzKHt9LGwuY29sb3Ise2FycmF5T2s6ITEsZWRpdFR5cGU6 InN0eWxlIn0pLGxpbmU6e2NvbG9yOnMoe30sYy5jb2xvcix7YXJyYXlPazoh MSxkZmx0OmkuZGVmYXVsdExpbmUsZWRpdFR5cGU6InN0eWxlIn0pLHdpZHRo OnMoe30sYy53aWR0aCx7YXJyYXlPazohMSxkZmx0OjAsZWRpdFR5cGU6InN0 eWxlIn0pLG91dGxpZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBl OiJzdHlsZSJ9LG91dGxpZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46 MCxkZmx0OjEsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn0s ZWRpdFR5cGU6InBsb3QifSxsaW5lOntjb2xvcjp7dmFsVHlwZToiY29sb3Ii LGVkaXRUeXBlOiJzdHlsZSJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1p bjowLGRmbHQ6MixlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToicGxvdCJ9 LGZpbGxjb2xvcjpuLmZpbGxjb2xvcix3aGlza2Vyd2lkdGg6e3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouNSxlZGl0VHlwZToiY2FsYyJ9 LG9mZnNldGdyb3VwOmEub2Zmc2V0Z3JvdXAsYWxpZ25tZW50Z3JvdXA6YS5h bGlnbm1lbnRncm91cCxzZWxlY3RlZDp7bWFya2VyOm4uc2VsZWN0ZWQubWFy a2VyLGVkaXRUeXBlOiJzdHlsZSJ9LHVuc2VsZWN0ZWQ6e21hcmtlcjpuLnVu c2VsZWN0ZWQubWFya2VyLGVkaXRUeXBlOiJzdHlsZSJ9LHRleHQ6cyh7fSxu LnRleHQse30pLGhvdmVydGV4dDpzKHt9LG4uaG92ZXJ0ZXh0LHt9KSxob3Zl cnRlbXBsYXRlOm8oe30pLGhvdmVyb246e3ZhbFR5cGU6ImZsYWdsaXN0Iixm bGFnczpbImJveGVzIiwicG9pbnRzIl0sZGZsdDoiYm94ZXMrcG9pbnRzIixl ZGl0VHlwZToic3R5bGUifX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9h dHRyaWJ1dGVzIjo1OTEsIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4v cGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9iYXIvYXR0cmli dXRlcyI6ODU2LCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSw4ODI6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1p c251bWVyaWMiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiks aT10KCIuLi8uLi9saWIiKSxvPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmlj YWwiKS5CQUROVU0scz1pLl87ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFy IHIsbCxtLHkseCxiLF89dC5fZnVsbExheW91dCx3PWEuZ2V0RnJvbUlkKHQs ZS54YXhpc3x8IngiKSxrPWEuZ2V0RnJvbUlkKHQsZS55YXhpc3x8InkiKSxU PVtdLE09InZpb2xpbiI9PT1lLnR5cGU/Il9udW1WaW9saW5zIjoiX251bUJv eGVzIjsiaCI9PT1lLm9yaWVudGF0aW9uPyhtPXcseT0ieCIseD1rLGI9Inki KToobT1rLHk9InkiLHg9dyxiPSJ4Iik7dmFyIEEsUyxFLEwsQyxQLE89ZnVu Y3Rpb24odCxlLHIsYSl7dmFyIG8scz1lKyIwImluIHQsbD0iZCIrZSBpbiB0 O2lmKGUgaW4gdHx8cyYmbClyZXR1cm4gci5tYWtlQ2FsY2RhdGEodCxlKTtv PXM/dFtlKyIwIl06Im5hbWUiaW4gdCYmKCJjYXRlZ29yeSI9PT1yLnR5cGV8 fG4odC5uYW1lKSYmLTEhPT1bImxpbmVhciIsImxvZyJdLmluZGV4T2Yoci50 eXBlKXx8aS5pc0RhdGVUaW1lKHQubmFtZSkmJiJkYXRlIj09PXIudHlwZSk/ dC5uYW1lOmE7Zm9yKHZhciBjPSJtdWx0aWNhdGVnb3J5Ij09PXIudHlwZT9y LnIyY19qdXN0X2luZGljZXMobyk6ci5kMmMobywwLHRbZSsiY2FsZW5kYXIi XSksdT10Ll9sZW5ndGgsaD1uZXcgQXJyYXkodSksZj0wO2Y8dTtmKyspaFtm XT1jO3JldHVybiBofShlLGIseCxfW01dKSx6PWkuZGlzdGluY3RWYWxzKE8p LEk9ei52YWxzLEQ9ei5taW5EaWZmLzIsUj0iYWxsIj09PShlLmJveHBvaW50 c3x8ZS5wb2ludHMpP2kuaWRlbnRpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHQu djxBLmxmfHx0LnY+QS51Zn07aWYoZS5faGFzUHJlQ29tcFN0YXRzKXt2YXIg Rj1lW3ldLEI9ZnVuY3Rpb24odCl7cmV0dXJuIG0uZDJjKChlW3RdfHxbXSlb cl0pfSxOPTEvMCxqPS0xLzA7Zm9yKHI9MDtyPGUuX2xlbmd0aDtyKyspe3Zh ciBWPU9bcl07aWYobihWKSl7aWYoKEE9e30pLnBvcz1BW2JdPVYsQS5xMT1C KCJxMSIpLEEubWVkPUIoIm1lZGlhbiIpLEEucTM9QigicTMiKSxTPVtdLEYm JmkuaXNBcnJheU9yVHlwZWRBcnJheShGW3JdKSlmb3IobD0wO2w8RltyXS5s ZW5ndGg7bCsrKShQPW0uZDJjKEZbcl1bbF0pKSE9PW8mJihjKEM9e3Y6UCxp OltyLGxdfSxlLFtyLGxdKSxTLnB1c2goQykpO2lmKEEucHRzPVMuc29ydCh1 KSxMPShFPUFbeV09Uy5tYXAoaCkpLmxlbmd0aCxBLm1lZCE9PW8mJkEucTEh PT1vJiZBLnEzIT09byYmQS5tZWQ+PUEucTEmJkEucTM+PUEubWVkKXt2YXIg VT1CKCJsb3dlcmZlbmNlIik7QS5sZj1VIT09byYmVTw9QS5xMT9VOmYoQSxF LEwpO3ZhciBxPUIoInVwcGVyZmVuY2UiKTtBLnVmPXEhPT1vJiZxPj1BLnEz P3E6cChBLEUsTCk7dmFyIEg9QigibWVhbiIpO0EubWVhbj1IIT09bz9IOkw/ aS5tZWFuKEUsTCk6KEEucTErQS5xMykvMjt2YXIgRz1CKCJzZCIpO0Euc2Q9 SCE9PW8mJkc+PTA/RzpMP2kuc3RkZXYoRSxMLEEubWVhbik6QS5xMy1BLnEx LEEubG89ZChBKSxBLnVvPWcoQSk7dmFyIFk9Qigibm90Y2hzcGFuIik7WT1Z IT09byYmWT4wP1k6dihBLEwpLEEubG49QS5tZWQtWSxBLnVuPUEubWVkK1k7 dmFyIFc9QS5sZixYPUEudWY7ZS5ib3hwb2ludHMmJkUubGVuZ3RoJiYoVz1N YXRoLm1pbihXLEVbMF0pLFg9TWF0aC5tYXgoWCxFW0wtMV0pKSxlLm5vdGNo ZWQmJihXPU1hdGgubWluKFcsQS5sbiksWD1NYXRoLm1heChYLEEudW4pKSxB Lm1pbj1XLEEubWF4PVh9ZWxzZXt2YXIgWjtpLndhcm4oWyJJbnZhbGlkIGlu cHV0IC0gbWFrZSBzdXJlIHRoYXQgcTEgPD0gbWVkaWFuIDw9IHEzIiwicTEg PSAiK0EucTEsIm1lZGlhbiA9ICIrQS5tZWQsInEzID0gIitBLnEzXS5qb2lu KCJcbiIpKSxaPUEubWVkIT09bz9BLm1lZDpBLnExIT09bz9BLnEzIT09bz8o QS5xMStBLnEzKS8yOkEucTE6QS5xMyE9PW8/QS5xMzowLEEubWVkPVosQS5x MT1BLnEzPVosQS5sZj1BLnVmPVosQS5tZWFuPUEuc2Q9WixBLmxuPUEudW49 WixBLm1pbj1BLm1heD1afU49TWF0aC5taW4oTixBLm1pbiksaj1NYXRoLm1h eChqLEEubWF4KSxBLnB0czI9Uy5maWx0ZXIoUiksVC5wdXNoKEEpfX1lLl9l eHRyZW1lc1ttLl9pZF09YS5maW5kRXh0cmVtZXMobSxbTixqXSx7cGFkZGVk OiEwfSl9ZWxzZXt2YXIgSj1tLm1ha2VDYWxjZGF0YShlLHkpLEs9ZnVuY3Rp b24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkocisxKSxh PTA7YTxyO2ErKyluW2FdPXRbYV0tZTtyZXR1cm4gbltyXT10W3ItMV0rZSxu fShJLEQpLFE9SS5sZW5ndGgsJD1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3 IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09W107cmV0dXJuIGV9KFEpO2Zv cihyPTA7cjxlLl9sZW5ndGg7cisrKWlmKFA9SltyXSxuKFApKXt2YXIgdHQ9 aS5maW5kQmluKE9bcl0sSyk7dHQ+PTAmJnR0PFEmJihjKEM9e3Y6UCxpOnJ9 LGUsciksJFt0dF0ucHVzaChDKSl9dmFyIGV0PTEvMCxydD0tMS8wLG50PWUu cXVhcnRpbGVtZXRob2QsYXQ9ImV4Y2x1c2l2ZSI9PT1udCxpdD0iaW5jbHVz aXZlIj09PW50O2ZvcihyPTA7cjxRO3IrKylpZigkW3JdLmxlbmd0aD4wKXt2 YXIgb3Qsc3Q7aWYoKEE9e30pLnBvcz1BW2JdPUlbcl0sUz1BLnB0cz0kW3Jd LnNvcnQodSksTD0oRT1BW3ldPVMubWFwKGgpKS5sZW5ndGgsQS5taW49RVsw XSxBLm1heD1FW0wtMV0sQS5tZWFuPWkubWVhbihFLEwpLEEuc2Q9aS5zdGRl dihFLEwsQS5tZWFuKSxBLm1lZD1pLmludGVycChFLC41KSxMJTImJihhdHx8 aXQpKWF0PyhvdD1FLnNsaWNlKDAsTC8yKSxzdD1FLnNsaWNlKEwvMisxKSk6 aXQmJihvdD1FLnNsaWNlKDAsTC8yKzEpLHN0PUUuc2xpY2UoTC8yKSksQS5x MT1pLmludGVycChvdCwuNSksQS5xMz1pLmludGVycChzdCwuNSk7ZWxzZSBB LnExPWkuaW50ZXJwKEUsLjI1KSxBLnEzPWkuaW50ZXJwKEUsLjc1KTtBLmxm PWYoQSxFLEwpLEEudWY9cChBLEUsTCksQS5sbz1kKEEpLEEudW89ZyhBKTt2 YXIgbHQ9dihBLEwpO0EubG49QS5tZWQtbHQsQS51bj1BLm1lZCtsdCxldD1N YXRoLm1pbihldCxBLmxuKSxydD1NYXRoLm1heChydCxBLnVuKSxBLnB0czI9 Uy5maWx0ZXIoUiksVC5wdXNoKEEpfWUuX2V4dHJlbWVzW20uX2lkXT1hLmZp bmRFeHRyZW1lcyhtLGUubm90Y2hlZD9KLmNvbmNhdChbZXQscnRdKTpKLHtw YWRkZWQ6ITB9KX1yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihpLmlzQXJyYXlP clR5cGVkQXJyYXkoZS5zZWxlY3RlZHBvaW50cykpZm9yKHZhciByPTA7cjx0 Lmxlbmd0aDtyKyspe2Zvcih2YXIgbj10W3JdLnB0c3x8W10sYT17fSxvPTA7 bzxuLmxlbmd0aDtvKyspYVtuW29dLmldPW87aS50YWdTZWxlY3RlZChuLGUs YSl9fShULGUpLFQubGVuZ3RoPjA/KFRbMF0udD17bnVtOl9bTV0sZFBvczpE LHBvc0xldHRlcjpiLHZhbExldHRlcjp5LGxhYmVsczp7bWVkOnModCwibWVk aWFuOiIpLG1pbjpzKHQsIm1pbjoiKSxxMTpzKHQsInExOiIpLHEzOnModCwi cTM6IiksbWF4OnModCwibWF4OiIpLG1lYW46InNkIj09PWUuYm94bWVhbj9z KHQsIm1lYW4gXHhiMSBcdTAzYzM6Iik6cyh0LCJtZWFuOiIpLGxmOnModCwi bG93ZXIgZmVuY2U6IiksdWY6cyh0LCJ1cHBlciBmZW5jZToiKX19LF9bTV0r KyxUKTpbe3Q6e2VtcHR5OiEwfX1dfTt2YXIgbD17dGV4dDoidHgiLGhvdmVy dGV4dDoiaHR4In07ZnVuY3Rpb24gYyh0LGUscil7Zm9yKHZhciBuIGluIGwp aS5pc0FycmF5T3JUeXBlZEFycmF5KGVbbl0pJiYoQXJyYXkuaXNBcnJheShy KT9pLmlzQXJyYXlPclR5cGVkQXJyYXkoZVtuXVtyWzBdXSkmJih0W2xbbl1d PWVbbl1bclswXV1bclsxXV0pOnRbbFtuXV09ZVtuXVtyXSl9ZnVuY3Rpb24g dSh0LGUpe3JldHVybiB0LnYtZS52fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQu dn1mdW5jdGlvbiBmKHQsZSxyKXtyZXR1cm4gMD09PXI/dC5xMTpNYXRoLm1p bih0LnExLGVbTWF0aC5taW4oaS5maW5kQmluKDIuNSp0LnExLTEuNSp0LnEz LGUsITApKzEsci0xKV0pfWZ1bmN0aW9uIHAodCxlLHIpe3JldHVybiAwPT09 cj90LnEzOk1hdGgubWF4KHQucTMsZVtNYXRoLm1heChpLmZpbmRCaW4oMi41 KnQucTMtMS41KnQucTEsZSksMCldKX1mdW5jdGlvbiBkKHQpe3JldHVybiA0 KnQucTEtMyp0LnEzfWZ1bmN0aW9uIGcodCl7cmV0dXJuIDQqdC5xMy0zKnQu cTF9ZnVuY3Rpb24gdih0LGUpe3JldHVybiAwPT09ZT8wOjEuNTcqKHQucTMt dC5xMSkvTWF0aC5zcXJ0KGUpfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJp Y2FsIjo2OTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyI6NzY1LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sODgzOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLmdldEF4aXNHcm91cCxvPVsi diIsImgiXTtmdW5jdGlvbiBzKHQsZSxyLG8pe3ZhciBzLGwsYyx1PWUuY2Fs Y2RhdGEsaD1lLl9mdWxsTGF5b3V0LGY9by5faWQscD1mLmNoYXJBdCgwKSxk PVtdLGc9MDtmb3Iocz0wO3M8ci5sZW5ndGg7cysrKWZvcihjPXVbcltzXV0s bD0wO2w8Yy5sZW5ndGg7bCsrKWQucHVzaChvLmMybChjW2xdLnBvcywhMCkp LGcrPShjW2xdLnB0czJ8fFtdKS5sZW5ndGg7aWYoZC5sZW5ndGgpe3ZhciB2 PWEuZGlzdGluY3RWYWxzKGQpLG09di5taW5EaWZmLzI7bi5taW5EdGljayhv LHYubWluRGlmZix2LnZhbHNbMF0sITApO3ZhciB5PWhbInZpb2xpbiI9PT10 PyJfbnVtVmlvbGlucyI6Il9udW1Cb3hlcyJdLHg9Imdyb3VwIj09PWhbdCsi bW9kZSJdJiZ5PjEsYj0xLWhbdCsiZ2FwIl0sXz0xLWhbdCsiZ3JvdXBnYXAi XTtmb3Iocz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgdyxrLFQsTSxBLFMsRT0o Yz11W3Jbc11dKVswXS50cmFjZSxMPWNbMF0udCxDPUUud2lkdGgsUD1FLnNp ZGU7aWYoQyl3PWs9TT1DLzIsVD0wO2Vsc2UgaWYodz1tLHgpe3ZhciBPPWko aCxvLl9pZCkrRS5vcmllbnRhdGlvbix6PShoLl9hbGlnbm1lbnRPcHRzW09d fHx7fSlbRS5hbGlnbm1lbnRncm91cF18fHt9LEk9T2JqZWN0LmtleXMoei5v ZmZzZXRHcm91cHN8fHt9KS5sZW5ndGgsRD1JfHx5O2s9dypiKl8vRCxUPTIq dyooKChJP0UuX29mZnNldEluZGV4OkwubnVtKSsuNSkvRC0uNSkqYixNPXcq Yi9EfWVsc2Ugaz13KmIqXyxUPTAsTT13O0wuZFBvcz13LEwuYlBvcz1ULEwu YmRQb3M9ayxMLndIb3Zlcj1NO3ZhciBSLEYsQixOLGosVixVPVQrayxxPUJv b2xlYW4oQyk7aWYoInBvc2l0aXZlIj09PVA/KEE9dyooQz8xOi41KSxSPVUs Uz1SPVQpOiJuZWdhdGl2ZSI9PT1QPyhBPVI9VCxTPXcqKEM/MTouNSksRj1V KTooQT1TPXcsUj1GPVUpLChFLmJveHBvaW50c3x8RS5wb2ludHMpJiZnPjAp e3ZhciBIPUUucG9pbnRwb3MsRz1FLmppdHRlcixZPUUubWFya2VyLnNpemUv MixXPTA7SCtHPj0wJiYoKFc9VSooSCtHKSk+QT8ocT0hMCxqPVksQj1XKTpX PlImJihqPVksQj1BKSksVzw9QSYmKEI9QSk7dmFyIFg9MDtILUc8PTAmJigo WD0tVSooSC1HKSk+Uz8ocT0hMCxWPVksTj1YKTpYPkYmJihWPVksTj1TKSks WDw9UyYmKE49Uyl9ZWxzZSBCPUEsTj1TO3ZhciBaPW5ldyBBcnJheShjLmxl bmd0aCk7Zm9yKGw9MDtsPGMubGVuZ3RoO2wrKylaW2xdPWNbbF0ucG9zO0Uu X2V4dHJlbWVzW2ZdPW4uZmluZEV4dHJlbWVzKG8sWix7cGFkZGVkOnEsdnBh ZG1pbnVzOk4sdnBhZHBsdXM6Qix2cGFkTGluZWFyaXplZDohMCxwcGFkbWlu dXM6e3g6Vix5Omp9W3BdLHBwYWRwbHVzOnt4OmoseTpWfVtwXX0pfX19ZS5l eHBvcnRzPXtjcm9zc1RyYWNlQ2FsYzpmdW5jdGlvbih0LGUpe2Zvcih2YXIg cj10LmNhbGNkYXRhLG49ZS54YXhpcyxhPWUueWF4aXMsaT0wO2k8by5sZW5n dGg7aSsrKXtmb3IodmFyIGw9b1tpXSxjPSJoIj09PWw/YTpuLHU9W10saD0w O2g8ci5sZW5ndGg7aCsrKXt2YXIgZj1yW2hdLHA9ZlswXS50LGQ9ZlswXS50 cmFjZTshMCE9PWQudmlzaWJsZXx8ImJveCIhPT1kLnR5cGUmJiJjYW5kbGVz dGljayIhPT1kLnR5cGV8fHAuZW1wdHl8fChkLm9yaWVudGF0aW9ufHwidiIp IT09bHx8ZC54YXhpcyE9PW4uX2lkfHxkLnlheGlzIT09YS5faWR8fHUucHVz aChoKX1zKCJib3giLHQsdSxjKX19LHNldFBvc2l0aW9uT2Zmc2V0OnN9fSx7 Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6 NzY1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjc2OH1dLDg4 NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKSxhPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yIiksbz10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVH cm91cGluZ0RlZmF1bHRzLHM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4 aXNfYXV0b3R5cGUiKSxsPXQoIi4vYXR0cmlidXRlcyIpO2Z1bmN0aW9uIGMo dCxlLHIsaSl7ZnVuY3Rpb24gbyh0KXt2YXIgZT0wO3JldHVybiB0JiZ0Lmxl bmd0aCYmKGUrPTEsbi5pc0FycmF5T3JUeXBlZEFycmF5KHRbMF0pJiZ0WzBd Lmxlbmd0aCYmKGUrPTEpKSxlfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIG4udmFs aWRhdGUodFtlXSxsW2VdKX12YXIgdSxoPXIoInkiKSxmPXIoIngiKTtpZigi Ym94Ij09PWUudHlwZSl7dmFyIHA9cigicTEiKSxkPXIoIm1lZGlhbiIpLGc9 cigicTMiKTtlLl9oYXNQcmVDb21wU3RhdHM9cCYmcC5sZW5ndGgmJmQmJmQu bGVuZ3RoJiZnJiZnLmxlbmd0aCx1PU1hdGgubWluKG4ubWluUm93TGVuZ3Ro KHApLG4ubWluUm93TGVuZ3RoKGQpLG4ubWluUm93TGVuZ3RoKGcpKX12YXIg dixtLHk9byhoKSx4PW8oZiksYj15JiZuLm1pblJvd0xlbmd0aChoKSxfPXgm Jm4ubWluUm93TGVuZ3RoKGYpO2lmKGUuX2hhc1ByZUNvbXBTdGF0cylzd2l0 Y2goU3RyaW5nKHgpK1N0cmluZyh5KSl7Y2FzZSIwMCI6dmFyIHc9YygieDAi KXx8YygiZHgiKTt2PShjKCJ5MCIpfHxjKCJkeSIpKSYmIXc/ImgiOiJ2Iixt PXU7YnJlYWs7Y2FzZSIxMCI6dj0idiIsbT1NYXRoLm1pbih1LF8pO2JyZWFr O2Nhc2UiMjAiOnY9ImgiLG09TWF0aC5taW4odSxmLmxlbmd0aCk7YnJlYWs7 Y2FzZSIwMSI6dj0iaCIsbT1NYXRoLm1pbih1LGIpO2JyZWFrO2Nhc2UiMDIi OnY9InYiLG09TWF0aC5taW4odSxoLmxlbmd0aCk7YnJlYWs7Y2FzZSIxMiI6 dj0idiIsbT1NYXRoLm1pbih1LF8saC5sZW5ndGgpO2JyZWFrO2Nhc2UiMjEi OnY9ImgiLG09TWF0aC5taW4odSxmLmxlbmd0aCxiKTticmVhaztjYXNlIjEx IjptPTA7YnJlYWs7Y2FzZSIyMiI6dmFyIGssVD0hMTtmb3Ioaz0wO2s8Zi5s ZW5ndGg7aysrKWlmKCJjYXRlZ29yeSI9PT1zKGZba10pKXtUPSEwO2JyZWFr fWlmKFQpdj0idiIsbT1NYXRoLm1pbih1LF8saC5sZW5ndGgpO2Vsc2V7Zm9y KGs9MDtrPGgubGVuZ3RoO2srKylpZigiY2F0ZWdvcnkiPT09cyhoW2tdKSl7 VD0hMDticmVha31UPyh2PSJoIixtPU1hdGgubWluKHUsZi5sZW5ndGgsYikp Oih2PSJ2IixtPU1hdGgubWluKHUsXyxoLmxlbmd0aCkpfX1lbHNlIHk+MD8o dj0idiIsbT14PjA/TWF0aC5taW4oXyxiKTpNYXRoLm1pbihiKSk6eD4wPyh2 PSJoIixtPU1hdGgubWluKF8pKTptPTA7aWYobSl7ZS5fbGVuZ3RoPW07dmFy IE09cigib3JpZW50YXRpb24iLHYpO2UuX2hhc1ByZUNvbXBTdGF0cz8idiI9 PT1NJiYwPT09eD8ocigieDAiLDApLHIoImR4IiwxKSk6ImgiPT09TSYmMD09 PXkmJihyKCJ5MCIsMCkscigiZHkiLDEpKToidiI9PT1NJiYwPT09eD9yKCJ4 MCIpOiJoIj09PU0mJjA9PT15JiZyKCJ5MCIpLGEuZ2V0Q29tcG9uZW50TWV0 aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVUcmFjZURlZmF1bHRzIikodCxlLFsi eCIsInkiXSxpKX1lbHNlIGUudmlzaWJsZT0hMX1mdW5jdGlvbiB1KHQsZSxy LGEpe3ZhciBpPWEucHJlZml4LG89bi5jb2VyY2UyKHQsZSxsLCJtYXJrZXIu b3V0bGllcmNvbG9yIikscz1yKCJtYXJrZXIubGluZS5vdXRsaWVyY29sb3Ii KSxjPSJvdXRsaWVycyI7ZS5faGFzUHJlQ29tcFN0YXRzP2M9ImFsbCI6KG98 fHMpJiYoYz0ic3VzcGVjdGVkb3V0bGllcnMiKTt2YXIgdT1yKGkrInBvaW50 cyIsYyk7dT8ocigiaml0dGVyIiwiYWxsIj09PXU/LjM6MCkscigicG9pbnRw b3MiLCJhbGwiPT09dT8tMS41OjApLHIoIm1hcmtlci5zeW1ib2wiKSxyKCJt YXJrZXIub3BhY2l0eSIpLHIoIm1hcmtlci5zaXplIikscigibWFya2VyLmNv bG9yIixlLmxpbmUuY29sb3IpLHIoIm1hcmtlci5saW5lLmNvbG9yIikscigi bWFya2VyLmxpbmUud2lkdGgiKSwic3VzcGVjdGVkb3V0bGllcnMiPT09dSYm KHIoIm1hcmtlci5saW5lLm91dGxpZXJjb2xvciIsZS5tYXJrZXIuY29sb3Ip LHIoIm1hcmtlci5saW5lLm91dGxpZXJ3aWR0aCIpKSxyKCJzZWxlY3RlZC5t YXJrZXIuY29sb3IiKSxyKCJ1bnNlbGVjdGVkLm1hcmtlci5jb2xvciIpLHIo InNlbGVjdGVkLm1hcmtlci5zaXplIikscigidW5zZWxlY3RlZC5tYXJrZXIu c2l6ZSIpLHIoInRleHQiKSxyKCJob3ZlcnRleHQiKSk6ZGVsZXRlIGUubWFy a2VyO3ZhciBoPXIoImhvdmVyb24iKTsiYWxsIiE9PWgmJi0xPT09aC5pbmRl eE9mKCJwb2ludHMiKXx8cigiaG92ZXJ0ZW1wbGF0ZSIpLG4uY29lcmNlU2Vs ZWN0aW9uTWFya2VyT3BhY2l0eShlLHIpfWUuZXhwb3J0cz17c3VwcGx5RGVm YXVsdHM6ZnVuY3Rpb24odCxlLHIsYSl7ZnVuY3Rpb24gbyhyLGEpe3JldHVy biBuLmNvZXJjZSh0LGUsbCxyLGEpfWlmKGModCxlLG8sYSksITEhPT1lLnZp c2libGUpe3ZhciBzPWUuX2hhc1ByZUNvbXBTdGF0cztzJiYobygibG93ZXJm ZW5jZSIpLG8oInVwcGVyZmVuY2UiKSksbygibGluZS5jb2xvciIsKHQubWFy a2VyfHx7fSkuY29sb3J8fHIpLG8oImxpbmUud2lkdGgiKSxvKCJmaWxsY29s b3IiLGkuYWRkT3BhY2l0eShlLmxpbmUuY29sb3IsLjUpKTt2YXIgaD0hMTtp ZihzKXt2YXIgZj1vKCJtZWFuIikscD1vKCJzZCIpO2YmJmYubGVuZ3RoJiYo aD0hMCxwJiZwLmxlbmd0aCYmKGg9InNkIikpfW8oImJveG1lYW4iLGgpLG8o IndoaXNrZXJ3aWR0aCIpLG8oIndpZHRoIiksbygicXVhcnRpbGVtZXRob2Qi KTt2YXIgZD0hMTtpZihzKXt2YXIgZz1vKCJub3RjaHNwYW4iKTtnJiZnLmxl bmd0aCYmKGQ9ITApfWVsc2Ugbi52YWxpZGF0ZSh0Lm5vdGNod2lkdGgsbC5u b3RjaHdpZHRoKSYmKGQ9ITApO28oIm5vdGNoZWQiLGQpJiZvKCJub3RjaHdp ZHRoIiksdSh0LGUsbyx7cHJlZml4OiJib3gifSl9fSxjcm9zc1RyYWNlRGVm YXVsdHM6ZnVuY3Rpb24odCxlKXt2YXIgcixhO2Z1bmN0aW9uIGkodCl7cmV0 dXJuIG4uY29lcmNlKGEuX2lucHV0LGEsbCx0KX1mb3IodmFyIHM9MDtzPHQu bGVuZ3RoO3MrKyl7dmFyIGM9KGE9dFtzXSkudHlwZTsiYm94IiE9PWMmJiJ2 aW9saW4iIT09Y3x8KHI9YS5faW5wdXQsImdyb3VwIj09PWVbYysibW9kZSJd JiZvKHIsYSxlLGkpKX19LGhhbmRsZVNhbXBsZURlZmF1bHRzOmMsaGFuZGxl UG9pbnRzRGVmYXVsdHM6dX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6 NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4 aXNfYXV0b3R5cGUiOjc2NiwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vYmFy L2RlZmF1bHRzIjo4NjAsIi4vYXR0cmlidXRlcyI6ODgxfV0sODg1OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe3JldHVybiBlLmhvdmVyT25Cb3gmJih0LmhvdmVyT25Cb3g9ZS5ob3Zl ck9uQm94KSwieFZhbCJpbiBlJiYodC54PWUueFZhbCksInlWYWwiaW4gZSYm KHQueT1lLnlWYWwpLGUueGEmJih0LnhheGlzPWUueGEpLGUueWEmJih0Lnlh eGlzPWUueWEpLHR9fSx7fV0sODg2OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiks YT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxv PXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxzPWEuZmlsbFRleHQ7ZnVu Y3Rpb24gbCh0LGUscixzKXt2YXIgbCxjLHUsaCxmLHAsZCxnLHYsbSx5LHgs YixfLHc9dC5jZCxrPXQueGEsVD10LnlhLE09d1swXS50cmFjZSxBPXdbMF0u dCxTPSJ2aW9saW4iPT09TS50eXBlLEU9W10sTD1BLmJkUG9zLEM9QS53SG92 ZXIsUD1mdW5jdGlvbih0KXtyZXR1cm4gdS5jMmwodC5wb3MpK0EuYlBvcy11 LmMybChwKX07UyYmImJvdGgiIT09TS5zaWRlPygicG9zaXRpdmUiPT09TS5z aWRlJiYodj1mdW5jdGlvbih0KXt2YXIgZT1QKHQpO3JldHVybiBpLmluYm94 KGUsZStDLG0pfSx4PUwsYj0wKSwibmVnYXRpdmUiPT09TS5zaWRlJiYodj1m dW5jdGlvbih0KXt2YXIgZT1QKHQpO3JldHVybiBpLmluYm94KGUtQyxlLG0p fSx4PTAsYj1MKSk6KHY9ZnVuY3Rpb24odCl7dmFyIGU9UCh0KTtyZXR1cm4g aS5pbmJveChlLUMsZStDLG0pfSx4PWI9TCksXz1TP2Z1bmN0aW9uKHQpe3Jl dHVybiBpLmluYm94KHQuc3BhblswXS1mLHQuc3BhblsxXS1mLG0pfTpmdW5j dGlvbih0KXtyZXR1cm4gaS5pbmJveCh0Lm1pbi1mLHQubWF4LWYsbSl9LCJo Ij09PU0ub3JpZW50YXRpb24/KGY9ZSxwPXIsZD1fLGc9dixsPSJ5Iix1PVQs Yz0ieCIsaD1rKTooZj1yLHA9ZSxkPXYsZz1fLGw9IngiLHU9ayxjPSJ5Iixo PVQpO3ZhciBPPU1hdGgubWluKDEsTC9NYXRoLmFicyh1LnIyYyh1LnJhbmdl WzFdKS11LnIyYyh1LnJhbmdlWzBdKSkpO2Z1bmN0aW9uIHoodCl7cmV0dXJu KGQodCkrZyh0KSkvMn1tPXQubWF4SG92ZXJEaXN0YW5jZS1PLHk9dC5tYXhT cGlrZURpc3RhbmNlLU87dmFyIEk9aS5nZXREaXN0YW5jZUZ1bmN0aW9uKHMs ZCxnLHopO2lmKGkuZ2V0Q2xvc2VzdCh3LEksdCksITE9PT10LmluZGV4KXJl dHVybltdO3ZhciBEPXdbdC5pbmRleF0sUj1NLmxpbmUuY29sb3IsRj0oTS5t YXJrZXJ8fHt9KS5jb2xvcjtvLm9wYWNpdHkoUikmJk0ubGluZS53aWR0aD90 LmNvbG9yPVI6by5vcGFjaXR5KEYpJiZNLmJveHBvaW50cz90LmNvbG9yPUY6 dC5jb2xvcj1NLmZpbGxjb2xvcix0W2wrIjAiXT11LmMycChELnBvcytBLmJQ b3MtYiwhMCksdFtsKyIxIl09dS5jMnAoRC5wb3MrQS5iUG9zK3gsITApLHRb bCsiTGFiZWxWYWwiXT1ELnBvczt2YXIgQj1sKyJTcGlrZSI7dC5zcGlrZURp c3RhbmNlPXooRCkqeS9tLHRbQl09dS5jMnAoRC5wb3MsITApO3ZhciBOPXt9 LGo9WyJtZWQiLCJxMSIsInEzIiwibWluIiwibWF4Il07KE0uYm94bWVhbnx8 KE0ubWVhbmxpbmV8fHt9KS52aXNpYmxlKSYmai5wdXNoKCJtZWFuIiksKE0u Ym94cG9pbnRzfHxNLnBvaW50cykmJmoucHVzaCgibGYiLCJ1ZiIpO2Zvcih2 YXIgVj0wO1Y8ai5sZW5ndGg7VisrKXt2YXIgVT1qW1ZdO2lmKFUgaW4gRCYm IShEW1VdaW4gTikpe05bRFtVXV09ITA7dmFyIHE9RFtVXSxIPWguYzJwKHEs ITApLEc9YS5leHRlbmRGbGF0KHt9LHQpO0cuYXR0cj1VLEdbYysiMCJdPUdb YysiMSJdPUgsR1tjKyJMYWJlbFZhbCJdPXEsR1tjKyJMYWJlbCJdPShBLmxh YmVscz9BLmxhYmVsc1tVXSsiICI6IiIpK24uaG92ZXJMYWJlbFRleHQoaCxx KSxHLmhvdmVyT25Cb3g9ITAsIm1lYW4iPT09VSYmInNkImluIEQmJiJzZCI9 PT1NLmJveG1lYW4mJihHW2MrImVyciJdPUQuc2QpLHQubmFtZT0iIix0LnNw aWtlRGlzdGFuY2U9dm9pZCAwLHRbQl09dm9pZCAwLEcuaG92ZXJ0ZW1wbGF0 ZT0hMSxFLnB1c2goRyl9fXJldHVybiBFfWZ1bmN0aW9uIGModCxlLHIpe2Zv cih2YXIgbixvLGwsYz10LmNkLHU9dC54YSxoPXQueWEsZj1jWzBdLnRyYWNl LHA9dS5jMnAoZSksZD1oLmMycChyKSxnPWkucXVhZHJhdHVyZShmdW5jdGlv bih0KXt2YXIgZT1NYXRoLm1heCgzLHQubXJjfHwwKTtyZXR1cm4gTWF0aC5t YXgoTWF0aC5hYnModS5jMnAodC54KS1wKS1lLDEtMy9lKX0sZnVuY3Rpb24o dCl7dmFyIGU9TWF0aC5tYXgoMyx0Lm1yY3x8MCk7cmV0dXJuIE1hdGgubWF4 KE1hdGguYWJzKGguYzJwKHQueSktZCktZSwxLTMvZSl9KSx2PSExLG09MDtt PGMubGVuZ3RoO20rKyl7bz1jW21dO2Zvcih2YXIgeT0wO3k8KG8ucHRzfHxb XSkubGVuZ3RoO3krKyl7dmFyIHg9ZyhsPW8ucHRzW3ldKTt4PD10LmRpc3Rh bmNlJiYodC5kaXN0YW5jZT14LHY9W20seV0pfX1pZighdilyZXR1cm4hMTts PShvPWNbdlswXV0pLnB0c1t2WzFdXTt2YXIgYixfPXUuYzJwKGwueCwhMCks dz1oLmMycChsLnksITApLGs9bC5tcmN8fDE7cmV0dXJuIG49YS5leHRlbmRG bGF0KHt9LHQse2luZGV4OmwuaSxjb2xvcjooZi5tYXJrZXJ8fHt9KS5jb2xv cixuYW1lOmYubmFtZSx4MDpfLWsseDE6XytrLHkwOnctayx5MTp3K2ssc3Bp a2VEaXN0YW5jZTp0LmRpc3RhbmNlLGhvdmVydGVtcGxhdGU6Zi5ob3ZlcnRl bXBsYXRlfSksImgiPT09Zi5vcmllbnRhdGlvbj8oYj1oLG4ueExhYmVsVmFs PWwueCxuLnlMYWJlbFZhbD1vLnBvcyk6KGI9dSxuLnhMYWJlbFZhbD1vLnBv cyxuLnlMYWJlbFZhbD1sLnkpLG5bYi5faWQuY2hhckF0KDApKyJTcGlrZSJd PWIuYzJwKG8ucG9zLCEwKSxzKGwsZixuKSxufWUuZXhwb3J0cz17aG92ZXJQ b2ludHM6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaT10LmNkWzBdLnRyYWNl LmhvdmVyb24sbz1bXTtyZXR1cm4tMSE9PWkuaW5kZXhPZigiYm94ZXMiKSYm KG89by5jb25jYXQobCh0LGUscixuKSkpLC0xIT09aS5pbmRleE9mKCJwb2lu dHMiKSYmKGE9Yyh0LGUscikpLCJjbG9zZXN0Ij09PW4/YT9bYV06bzphPyhv LnB1c2goYSksbyk6b30saG92ZXJPbkJveGVzOmwsaG92ZXJPblBvaW50czpj fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBv bmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIjo3NjV9XSw4ODc6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRl cyIpLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIp LHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKS5zdXBwbHlEZWZhdWx0 cyxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLmNyb3NzVHJh Y2VEZWZhdWx0cyxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9k ZWZhdWx0cyIpLnN1cHBseUxheW91dERlZmF1bHRzLGNhbGM6dCgiLi9jYWxj IiksY3Jvc3NUcmFjZUNhbGM6dCgiLi9jcm9zc190cmFjZV9jYWxjIikuY3Jv c3NUcmFjZUNhbGMscGxvdDp0KCIuL3Bsb3QiKS5wbG90LHN0eWxlOnQoIi4v c3R5bGUiKS5zdHlsZSxzdHlsZU9uU2VsZWN0OnQoIi4vc3R5bGUiKS5zdHls ZU9uU2VsZWN0LGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKS5ob3ZlclBvaW50 cyxldmVudERhdGE6dCgiLi9ldmVudF9kYXRhIiksc2VsZWN0UG9pbnRzOnQo Ii4vc2VsZWN0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImJveCIsYmFz ZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdv cmllczpbImNhcnRlc2lhbiIsInN2ZyIsInN5bWJvbHMiLCJvcmllbnRlZCIs ImJveC12aW9saW4iLCJzaG93TGVnZW5kIiwiYm94TGF5b3V0Iiwiem9vbVNj YWxlIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYs Ii4vYXR0cmlidXRlcyI6ODgxLCIuL2NhbGMiOjg4MiwiLi9jcm9zc190cmFj ZV9jYWxjIjo4ODMsIi4vZGVmYXVsdHMiOjg4NCwiLi9ldmVudF9kYXRhIjo4 ODUsIi4vaG92ZXIiOjg4NiwiLi9sYXlvdXRfYXR0cmlidXRlcyI6ODg4LCIu L2xheW91dF9kZWZhdWx0cyI6ODg5LCIuL3Bsb3QiOjg5MCwiLi9zZWxlY3Qi Ojg5MSwiLi9zdHlsZSI6ODkyfV0sODg4OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz17Ym94bW9kZTp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsiZ3JvdXAiLCJvdmVybGF5Il0sZGZsdDoib3Zlcmxh eSIsZWRpdFR5cGU6ImNhbGMifSxib3hnYXA6e3ZhbFR5cGU6Im51bWJlciIs bWluOjAsbWF4OjEsZGZsdDouMyxlZGl0VHlwZToiY2FsYyJ9LGJveGdyb3Vw Z2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6LjMsZWRp dFR5cGU6ImNhbGMifX19LHt9XSw4ODk6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4u L2xpYiIpLGk9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpO2Z1bmN0aW9uIG8o dCxlLHIsYSxpKXtmb3IodmFyIG89aSsiTGF5b3V0IixzPSExLGw9MDtsPHIu bGVuZ3RoO2wrKyl7dmFyIGM9cltsXTtpZihuLnRyYWNlSXMoYyxvKSl7cz0h MDticmVha319cyYmKGEoaSsibW9kZSIpLGEoaSsiZ2FwIiksYShpKyJncm91 cGdhcCIpKX1lLmV4cG9ydHM9e3N1cHBseUxheW91dERlZmF1bHRzOmZ1bmN0 aW9uKHQsZSxyKXtvKDAsMCxyLGZ1bmN0aW9uKHIsbil7cmV0dXJuIGEuY29l cmNlKHQsZSxpLHIsbil9LCJib3giKX0sX3N1cHBseTpvfX0seyIuLi8uLi9s aWIiOjcxNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9sYXlvdXRfYXR0cmli dXRlcyI6ODg4fV0sODkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2Nv bXBvbmVudHMvZHJhd2luZyIpLG89NSxzPS4wMTtmdW5jdGlvbiBsKHQsZSxy LGkpe3ZhciBvLHMsbD1lLnBvcyxjPWUudmFsLHU9aS5iUG9zLGg9aS53ZFBv c3x8MCxmPWkuYlBvc1B4T2Zmc2V0fHwwLHA9ci53aGlza2Vyd2lkdGh8fDAs ZD1yLm5vdGNoZWR8fCExLGc9ZD8xLTIqci5ub3RjaHdpZHRoOjE7QXJyYXku aXNBcnJheShpLmJkUG9zKT8obz1pLmJkUG9zWzBdLHM9aS5iZFBvc1sxXSk6 KG89aS5iZFBvcyxzPWkuYmRQb3MpO3ZhciB2PXQuc2VsZWN0QWxsKCJwYXRo LmJveCIpLmRhdGEoInZpb2xpbiIhPT1yLnR5cGV8fHIuYm94LnZpc2libGU/ YS5pZGVudGl0eTpbXSk7di5lbnRlcigpLmFwcGVuZCgicGF0aCIpLnN0eWxl KCJ2ZWN0b3ItZWZmZWN0Iiwibm9uLXNjYWxpbmctc3Ryb2tlIikuYXR0cigi Y2xhc3MiLCJib3giKSx2LmV4aXQoKS5yZW1vdmUoKSx2LmVhY2goZnVuY3Rp b24odCl7aWYodC5lbXB0eSlyZXR1cm4iTTAsMFoiO3ZhciBlPWwuYzJsKHQu cG9zK3UsITApLGk9bC5sMnAoZSkrZix2PWwubDJwKGUtbykrZixtPWwubDJw KGUrcykrZix5PWwubDJwKGUtaCkrZix4PWwubDJwKGUraCkrZixiPWwubDJw KGUtbypnKStmLF89bC5sMnAoZStzKmcpK2Ysdz1jLmMycCh0LnExLCEwKSxr PWMuYzJwKHQucTMsITApLFQ9YS5jb25zdHJhaW4oYy5jMnAodC5tZWQsITAp LE1hdGgubWluKHcsaykrMSxNYXRoLm1heCh3LGspLTEpLE09dm9pZCAwPT09 dC5sZnx8ITE9PT1yLmJveHBvaW50cyxBPWMuYzJwKE0/dC5taW46dC5sZiwh MCksUz1jLmMycChNP3QubWF4OnQudWYsITApLEU9Yy5jMnAodC5sbiwhMCks TD1jLmMycCh0LnVuLCEwKTsiaCI9PT1yLm9yaWVudGF0aW9uP24uc2VsZWN0 KHRoaXMpLmF0dHIoImQiLCJNIitUKyIsIitiKyJWIitfKyJNIit3KyIsIit2 KyJWIittKyhkPyJIIitFKyJMIitUKyIsIitfKyJMIitMKyIsIittOiIiKSsi SCIraysiViIrdisoZD8iSCIrTCsiTCIrVCsiLCIrYisiTCIrRSsiLCIrdjoi IikrIlpNIit3KyIsIitpKyJIIitBKyJNIitrKyIsIitpKyJIIitTKygwPT09 cD8iIjoiTSIrQSsiLCIreSsiViIreCsiTSIrUysiLCIreSsiViIreCkpOm4u c2VsZWN0KHRoaXMpLmF0dHIoImQiLCJNIitiKyIsIitUKyJIIitfKyJNIit2 KyIsIit3KyJIIittKyhkPyJWIitFKyJMIitfKyIsIitUKyJMIittKyIsIitM OiIiKSsiViIraysiSCIrdisoZD8iViIrTCsiTCIrYisiLCIrVCsiTCIrdisi LCIrRToiIikrIlpNIitpKyIsIit3KyJWIitBKyJNIitpKyIsIitrKyJWIitT KygwPT09cD8iIjoiTSIreSsiLCIrQSsiSCIreCsiTSIreSsiLCIrUysiSCIr eCkpfSl9ZnVuY3Rpb24gYyh0LGUscixuKXt2YXIgbD1lLngsYz1lLnksdT1u LmJkUG9zLGg9bi5iUG9zLGY9ci5ib3hwb2ludHN8fHIucG9pbnRzO2Euc2Vl ZFBzZXVkb1JhbmRvbSgpO3ZhciBwPXQuc2VsZWN0QWxsKCJnLnBvaW50cyIp LmRhdGEoZj9mdW5jdGlvbih0KXtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9u KHQpe3QudD1uLHQudHJhY2U9cn0pLHR9OltdKTtwLmVudGVyKCkuYXBwZW5k KCJnIikuYXR0cigiY2xhc3MiLCJwb2ludHMiKSxwLmV4aXQoKS5yZW1vdmUo KTt2YXIgZD1wLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEoZnVuY3Rpb24odCl7 dmFyIGUsbixpPXQucHRzMixsPU1hdGgubWF4KCh0Lm1heC10Lm1pbikvMTAs dC5xMy10LnExKSxjPTFlLTkqbCxwPWwqcyxkPVtdLGc9MDtpZihyLmppdHRl cil7aWYoMD09PWwpZm9yKGc9MSxkPW5ldyBBcnJheShpLmxlbmd0aCksZT0w O2U8aS5sZW5ndGg7ZSsrKWRbZV09MTtlbHNlIGZvcihlPTA7ZTxpLmxlbmd0 aDtlKyspe3ZhciB2PU1hdGgubWF4KDAsZS1vKSxtPWlbdl0udix5PU1hdGgu bWluKGkubGVuZ3RoLTEsZStvKSx4PWlbeV0udjsiYWxsIiE9PWYmJihpW2Vd LnY8dC5sZj94PU1hdGgubWluKHgsdC5sZik6bT1NYXRoLm1heChtLHQudWYp KTt2YXIgYj1NYXRoLnNxcnQocCooeS12KS8oeC1tK2MpKXx8MDtiPWEuY29u c3RyYWluKE1hdGguYWJzKGIpLDAsMSksZC5wdXNoKGIpLGc9TWF0aC5tYXgo YixnKX1uPTIqci5qaXR0ZXIvKGd8fDEpfWZvcihlPTA7ZTxpLmxlbmd0aDtl Kyspe3ZhciBfPWlbZV0sdz1fLnYsaz1yLmppdHRlcj9uKmRbZV0qKGEucHNl dWRvUmFuZG9tKCktLjUpOjAsVD10LnBvcytoK3UqKHIucG9pbnRwb3Mrayk7 ImgiPT09ci5vcmllbnRhdGlvbj8oXy55PVQsXy54PXcpOihfLng9VCxfLnk9 dyksInN1c3BlY3RlZG91dGxpZXJzIj09PWYmJnc8dC51byYmdz50LmxvJiYo Xy5zbz0hMCl9cmV0dXJuIGl9KTtkLmVudGVyKCkuYXBwZW5kKCJwYXRoIiku Y2xhc3NlZCgicG9pbnQiLCEwKSxkLmV4aXQoKS5yZW1vdmUoKSxkLmNhbGwo aS50cmFuc2xhdGVQb2ludHMsbCxjKX1mdW5jdGlvbiB1KHQsZSxyLGkpe3Zh ciBvLHMsbD1lLnBvcyxjPWUudmFsLHU9aS5iUG9zLGg9aS5iUG9zUHhPZmZz ZXR8fDAsZj1yLmJveG1lYW58fChyLm1lYW5saW5lfHx7fSkudmlzaWJsZTtB cnJheS5pc0FycmF5KGkuYmRQb3MpPyhvPWkuYmRQb3NbMF0scz1pLmJkUG9z WzFdKToobz1pLmJkUG9zLHM9aS5iZFBvcyk7dmFyIHA9dC5zZWxlY3RBbGwo InBhdGgubWVhbiIpLmRhdGEoImJveCI9PT1yLnR5cGUmJnIuYm94bWVhbnx8 InZpb2xpbiI9PT1yLnR5cGUmJnIuYm94LnZpc2libGUmJnIubWVhbmxpbmUu dmlzaWJsZT9hLmlkZW50aXR5OltdKTtwLmVudGVyKCkuYXBwZW5kKCJwYXRo IikuYXR0cigiY2xhc3MiLCJtZWFuIikuc3R5bGUoe2ZpbGw6Im5vbmUiLCJ2 ZWN0b3ItZWZmZWN0Ijoibm9uLXNjYWxpbmctc3Ryb2tlIn0pLHAuZXhpdCgp LnJlbW92ZSgpLHAuZWFjaChmdW5jdGlvbih0KXt2YXIgZT1sLmMybCh0LnBv cyt1LCEwKSxhPWwubDJwKGUpK2gsaT1sLmwycChlLW8pK2gscD1sLmwycChl K3MpK2gsZD1jLmMycCh0Lm1lYW4sITApLGc9Yy5jMnAodC5tZWFuLXQuc2Qs ITApLHY9Yy5jMnAodC5tZWFuK3Quc2QsITApOyJoIj09PXIub3JpZW50YXRp b24/bi5zZWxlY3QodGhpcykuYXR0cigiZCIsIk0iK2QrIiwiK2krIlYiK3Ar KCJzZCI9PT1mPyJtMCwwTCIrZysiLCIrYSsiTCIrZCsiLCIraSsiTCIrdisi LCIrYSsiWiI6IiIpKTpuLnNlbGVjdCh0aGlzKS5hdHRyKCJkIiwiTSIraSsi LCIrZCsiSCIrcCsoInNkIj09PWY/Im0wLDBMIithKyIsIitnKyJMIitpKyIs IitkKyJMIithKyIsIit2KyJaIjoiIikpfSl9ZS5leHBvcnRzPXtwbG90OmZ1 bmN0aW9uKHQsZSxyLGkpe3ZhciBvPWUueGF4aXMscz1lLnlheGlzO2EubWFr ZVRyYWNlR3JvdXBzKGksciwidHJhY2UgYm94ZXMiKS5lYWNoKGZ1bmN0aW9u KHQpe3ZhciBlLHIsYT1uLnNlbGVjdCh0aGlzKSxpPXRbMF0saD1pLnQsZj1p LnRyYWNlO2gud2RQb3M9aC5iZFBvcypmLndoaXNrZXJ3aWR0aCwhMCE9PWYu dmlzaWJsZXx8aC5lbXB0eT9hLnJlbW92ZSgpOigiaCI9PT1mLm9yaWVudGF0 aW9uPyhlPXMscj1vKTooZT1vLHI9cyksbChhLHtwb3M6ZSx2YWw6cn0sZixo KSxjKGEse3g6byx5OnN9LGYsaCksdShhLHtwb3M6ZSx2YWw6cn0sZixoKSl9 KX0scGxvdEJveEFuZFdoaXNrZXJzOmwscGxvdFBvaW50czpjLHBsb3RCb3hN ZWFuOnV9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8u Li9saWIiOjcxNyxkMzoxNjV9XSw4OTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPXQu Y2QsaT10LnhheGlzLG89dC55YXhpcyxzPVtdO2lmKCExPT09ZSlmb3Iocj0w O3I8YS5sZW5ndGg7cisrKWZvcihuPTA7bjwoYVtyXS5wdHN8fFtdKS5sZW5n dGg7bisrKWFbcl0ucHRzW25dLnNlbGVjdGVkPTA7ZWxzZSBmb3Iocj0wO3I8 YS5sZW5ndGg7cisrKWZvcihuPTA7bjwoYVtyXS5wdHN8fFtdKS5sZW5ndGg7 bisrKXt2YXIgbD1hW3JdLnB0c1tuXSxjPWkuYzJwKGwueCksdT1vLmMycChs LnkpO2UuY29udGFpbnMoW2MsdV0sbnVsbCxsLmksdCk/KHMucHVzaCh7cG9p bnROdW1iZXI6bC5pLHg6aS5jMmQobC54KSx5Om8uYzJkKGwueSl9KSxsLnNl bGVjdGVkPTEpOmwuc2VsZWN0ZWQ9MH1yZXR1cm4gc319LHt9XSw4OTI6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQo Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4uLy4uL2NvbXBvbmVu dHMvZHJhd2luZyIpO2UuZXhwb3J0cz17c3R5bGU6ZnVuY3Rpb24odCxlLHIp e3ZhciBvPXJ8fG4uc2VsZWN0KHQpLnNlbGVjdEFsbCgiZy50cmFjZS5ib3hl cyIpO28uc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBd LnRyYWNlLm9wYWNpdHl9KSxvLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9bi5z ZWxlY3QodGhpcyksbz1lWzBdLnRyYWNlLHM9by5saW5lLndpZHRoO2Z1bmN0 aW9uIGwodCxlLHIsbil7dC5zdHlsZSgic3Ryb2tlLXdpZHRoIixlKyJweCIp LmNhbGwoYS5zdHJva2UscikuY2FsbChhLmZpbGwsbil9dmFyIGM9ci5zZWxl Y3RBbGwoInBhdGguYm94Iik7aWYoImNhbmRsZXN0aWNrIj09PW8udHlwZSlj LmVhY2goZnVuY3Rpb24odCl7aWYoIXQuZW1wdHkpe3ZhciBlPW4uc2VsZWN0 KHRoaXMpLHI9b1t0LmRpcl07bChlLHIubGluZS53aWR0aCxyLmxpbmUuY29s b3Isci5maWxsY29sb3IpLGUuc3R5bGUoIm9wYWNpdHkiLG8uc2VsZWN0ZWRw b2ludHMmJiF0LnNlbGVjdGVkPy4zOjEpfX0pO2Vsc2V7bChjLHMsby5saW5l LmNvbG9yLG8uZmlsbGNvbG9yKSxyLnNlbGVjdEFsbCgicGF0aC5tZWFuIiku c3R5bGUoeyJzdHJva2Utd2lkdGgiOnMsInN0cm9rZS1kYXNoYXJyYXkiOjIq cysicHgsIitzKyJweCJ9KS5jYWxsKGEuc3Ryb2tlLG8ubGluZS5jb2xvcik7 dmFyIHU9ci5zZWxlY3RBbGwoInBhdGgucG9pbnQiKTtpLnBvaW50U3R5bGUo dSxvLHQpfX0pfSxzdHlsZU9uU2VsZWN0OmZ1bmN0aW9uKHQsZSxyKXt2YXIg bj1lWzBdLnRyYWNlLGE9ci5zZWxlY3RBbGwoInBhdGgucG9pbnQiKTtuLnNl bGVjdGVkcG9pbnRzP2kuc2VsZWN0ZWRQb2ludFN0eWxlKGEsbik6aS5wb2lu dFN0eWxlKGEsbix0KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5 MiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsZDM6MTY1fV0sODkz OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLmV4dGVuZEZsYXQsYT10KCIuLi9vaGxjL2F0dHJpYnV0ZXMiKSxp PXQoIi4uL2JveC9hdHRyaWJ1dGVzIik7ZnVuY3Rpb24gbyh0KXtyZXR1cm57 bGluZTp7Y29sb3I6bih7fSxpLmxpbmUuY29sb3Ise2RmbHQ6dH0pLHdpZHRo OmkubGluZS53aWR0aCxlZGl0VHlwZToic3R5bGUifSxmaWxsY29sb3I6aS5m aWxsY29sb3IsZWRpdFR5cGU6InN0eWxlIn19ZS5leHBvcnRzPXt4OmEueCxv cGVuOmEub3BlbixoaWdoOmEuaGlnaCxsb3c6YS5sb3csY2xvc2U6YS5jbG9z ZSxsaW5lOnt3aWR0aDpuKHt9LGkubGluZS53aWR0aCx7fSksZWRpdFR5cGU6 InN0eWxlIn0saW5jcmVhc2luZzpvKGEuaW5jcmVhc2luZy5saW5lLmNvbG9y LmRmbHQpLGRlY3JlYXNpbmc6byhhLmRlY3JlYXNpbmcubGluZS5jb2xvci5k Zmx0KSx0ZXh0OmEudGV4dCxob3ZlcnRleHQ6YS5ob3ZlcnRleHQsd2hpc2tl cndpZHRoOm4oe30saS53aGlza2Vyd2lkdGgse2RmbHQ6MH0pLGhvdmVybGFi ZWw6YS5ob3ZlcmxhYmVsfX0seyIuLi8uLi9saWIiOjcxNywiLi4vYm94L2F0 dHJpYnV0ZXMiOjg4MSwiLi4vb2hsYy9hdHRyaWJ1dGVzIjoxMDY2fV0sODk0 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQo Ii4uL29obGMvY2FsYyIpLmNhbGNDb21tb247ZnVuY3Rpb24gbyh0LGUscixu KXtyZXR1cm57bWluOnIscTE6TWF0aC5taW4odCxuKSxtZWQ6bixxMzpNYXRo Lm1heCh0LG4pLG1heDplfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cj10Ll9mdWxsTGF5b3V0LHM9YS5nZXRGcm9tSWQodCxlLnhheGlzKSxsPWEu Z2V0RnJvbUlkKHQsZS55YXhpcyksYz1zLm1ha2VDYWxjZGF0YShlLCJ4Iiks dT1pKHQsZSxjLGwsbyk7cmV0dXJuIHUubGVuZ3RoPyhuLmV4dGVuZEZsYXQo dVswXS50LHtudW06ci5fbnVtQm94ZXMsZFBvczpuLmRpc3RpbmN0VmFscyhj KS5taW5EaWZmLzIscG9zTGV0dGVyOiJ4Iix2YWxMZXR0ZXI6InkifSksci5f bnVtQm94ZXMrKyx1KTpbe3Q6e2VtcHR5OiEwfX1dfX0seyIuLi8uLi9saWIi OjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vb2hs Yy9jYWxjIjoxMDY3fV0sODk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50 cy9jb2xvciIpLGk9dCgiLi4vb2hsYy9vaGxjX2RlZmF1bHRzIiksbz10KCIu L2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBzKHQsZSxyLG4pe3ZhciBpPXIobisi LmxpbmUuY29sb3IiKTtyKG4rIi5saW5lLndpZHRoIixlLmxpbmUud2lkdGgp LHIobisiLmZpbGxjb2xvciIsYS5hZGRPcGFjaXR5KGksLjUpKX1lLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIsYSl7ZnVuY3Rpb24gbChyLGEpe3JldHVybiBu LmNvZXJjZSh0LGUsbyxyLGEpfWkodCxlLGwsYSk/KGwoImxpbmUud2lkdGgi KSxzKHQsZSxsLCJpbmNyZWFzaW5nIikscyh0LGUsbCwiZGVjcmVhc2luZyIp LGwoInRleHQiKSxsKCJob3ZlcnRleHQiKSxsKCJ3aGlza2Vyd2lkdGgiKSxh Ll9yZXF1ZXN0UmFuZ2VzbGlkZXJbZS54YXhpc109ITApOmUudmlzaWJsZT0h MX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9saWIi OjcxNywiLi4vb2hsYy9vaGxjX2RlZmF1bHRzIjoxMDcxLCIuL2F0dHJpYnV0 ZXMiOjg5M31dLDg5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtl LmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJjYW5kbGVzdGlj ayIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiks Y2F0ZWdvcmllczpbImNhcnRlc2lhbiIsInN2ZyIsInNob3dMZWdlbmQiLCJj YW5kbGVzdGljayIsImJveExheW91dCJdLG1ldGE6e30sYXR0cmlidXRlczp0 KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4uL2JveC9s YXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4u L2JveC9sYXlvdXRfZGVmYXVsdHMiKS5zdXBwbHlMYXlvdXREZWZhdWx0cyxj cm9zc1RyYWNlQ2FsYzp0KCIuLi9ib3gvY3Jvc3NfdHJhY2VfY2FsYyIpLmNy b3NzVHJhY2VDYWxjLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxj YWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi4vYm94L3Bsb3QiKS5wbG90LGxh eWVyTmFtZToiYm94bGF5ZXIiLHN0eWxlOnQoIi4uL2JveC9zdHlsZSIpLnN0 eWxlLGhvdmVyUG9pbnRzOnQoIi4uL29obGMvaG92ZXIiKS5ob3ZlclBvaW50 cyxzZWxlY3RQb2ludHM6dCgiLi4vb2hsYy9zZWxlY3QiKX19LHsiLi4vLi4v cGxvdHMvY2FydGVzaWFuIjo3NzYsIi4uL2JveC9jcm9zc190cmFjZV9jYWxj Ijo4ODMsIi4uL2JveC9sYXlvdXRfYXR0cmlidXRlcyI6ODg4LCIuLi9ib3gv bGF5b3V0X2RlZmF1bHRzIjo4ODksIi4uL2JveC9wbG90Ijo4OTAsIi4uL2Jv eC9zdHlsZSI6ODkyLCIuLi9vaGxjL2hvdmVyIjoxMDY5LCIuLi9vaGxjL3Nl bGVjdCI6MTA3MywiLi9hdHRyaWJ1dGVzIjo4OTMsIi4vY2FsYyI6ODk0LCIu L2RlZmF1bHRzIjo4OTV9XSw4OTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi9heGlzX2RlZmF1bHRzIiksYT10KCIuLi8uLi9w bG90X2FwaS9wbG90X3RlbXBsYXRlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyLGksbyl7aSgiYSIpfHwoaSgiZGEiKSxpKCJhMCIpKSxpKCJiIil8fChp KCJkYiIpLGkoImIwIikpLGZ1bmN0aW9uKHQsZSxyLGkpe1siYWF4aXMiLCJi YXhpcyJdLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIHM9by5jaGFyQXQoMCks bD10W29dfHx7fSxjPWEubmV3Q29udGFpbmVyKGUsbyksdT17dGlja2ZvbnQ6 IngiLGlkOnMrImF4aXMiLGxldHRlcjpzLGZvbnQ6ZS5mb250LG5hbWU6byxk YXRhOnRbc10sY2FsZW5kYXI6ZS5jYWxlbmRhcixkZmx0Q29sb3I6aSxiZ0Nv bG9yOnIucGFwZXJfYmdjb2xvcixmdWxsTGF5b3V0OnJ9O24obCxjLHUpLGMu X2NhdGVnb3JpZXM9Yy5fY2F0ZWdvcmllc3x8W10sdFtvXXx8Ii0iPT09bC50 eXBlfHwodFtvXT17dHlwZTpsLnR5cGV9KX0pfSh0LGUscixvKX19LHsiLi4v Li4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuL2F4aXNfZGVmYXVs dHMiOjkwMn1dLDg5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi8uLi9saWIiKS5pc0FycmF5T3JUeXBlZEFycmF5O2UuZXhw b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gdChlLHIpe2lmKCFu KGUpfHxyPj0xMClyZXR1cm4gbnVsbDt2YXIgYT0xLzA7dmFyIGk9LTEvMDt2 YXIgbz1lLmxlbmd0aDtmb3IodmFyIHM9MDtzPG87cysrKXt2YXIgbD1lW3Nd O2lmKG4obCkpe3ZhciBjPXQobCxyKzEpO2MmJihhPU1hdGgubWluKGNbMF0s YSksaT1NYXRoLm1heChjWzFdLGkpKX1lbHNlIGE9TWF0aC5taW4obCxhKSxp PU1hdGgubWF4KGwsaSl9cmV0dXJuW2EsaV19KHQsMCl9fSx7Ii4uLy4uL2xp YiI6NzE3fV0sODk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGE9dCgiLi9h eGlzX2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3Iv YXR0cmlidXRlcyIpLG89bih7ZWRpdFR5cGU6ImNhbGMifSk7by5mYW1pbHku ZGZsdD0nIk9wZW4gU2FucyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlm JyxvLnNpemUuZGZsdD0xMixvLmNvbG9yLmRmbHQ9aS5kZWZhdWx0TGluZSxl LmV4cG9ydHM9e2NhcnBldDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToi Y2FsYyJ9LHg6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxj K2NsZWFyQXhpc1R5cGVzIn0seTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxhOnt2YWxUeXBlOiJkYXRh X2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGEwOnt2YWxUeXBlOiJudW1iZXIi LGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9LGRhOnt2YWxUeXBlOiJudW1iZXIi LGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LGI6e3ZhbFR5cGU6ImRhdGFfYXJy YXkiLGVkaXRUeXBlOiJjYWxjIn0sYjA6e3ZhbFR5cGU6Im51bWJlciIsZGZs dDowLGVkaXRUeXBlOiJjYWxjIn0sZGI6e3ZhbFR5cGU6Im51bWJlciIsZGZs dDoxLGVkaXRUeXBlOiJjYWxjIn0sY2hlYXRlcnNsb3BlOnt2YWxUeXBlOiJu dW1iZXIiLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LGFheGlzOmEsYmF4aXM6 YSxmb250Om8sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmkuZGVmYXVs dExpbmUsZWRpdFR5cGU6InBsb3QifSx0cmFuc2Zvcm1zOnZvaWQgMH19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjo1OTEsIi4uLy4u L3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuL2F4aXNfYXR0cmlidXRl cyI6OTAxfV0sOTAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXk7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBpLG8scyxsLGMsdSxoLGYscCxk LGcsdixtLHk9bihyKT8iYSI6ImIiLHg9KCJhIj09PXk/dC5hYXhpczp0LmJh eGlzKS5zbW9vdGhpbmcsYj0iYSI9PT15P3QuYTJpOnQuYjJqLF89ImEiPT09 eT9yOmEsdz0iYSI9PT15P2E6cixrPSJhIj09PXk/ZS5hLmxlbmd0aDplLmIu bGVuZ3RoLFQ9ImEiPT09eT9lLmIubGVuZ3RoOmUuYS5sZW5ndGgsTT1NYXRo LmZsb29yKCJhIj09PXk/dC5iMmoodyk6dC5hMmkodykpLEE9ImEiPT09eT9m dW5jdGlvbihlKXtyZXR1cm4gdC5ldmFseHkoW10sZSxNKX06ZnVuY3Rpb24o ZSl7cmV0dXJuIHQuZXZhbHh5KFtdLE0sZSl9O3gmJihzPU1hdGgubWF4KDAs TWF0aC5taW4oVC0yLE0pKSxsPU0tcyxvPSJhIj09PXk/ZnVuY3Rpb24oZSxy KXtyZXR1cm4gdC5keHlkaShbXSxlLHMscixsKX06ZnVuY3Rpb24oZSxyKXty ZXR1cm4gdC5keHlkaihbXSxzLGUsbCxyKX0pO3ZhciBTPWIoX1swXSksRT1i KF9bMV0pLEw9UzxFPzE6LTEsQz0xZS04KihFLVMpLFA9TD4wP01hdGguZmxv b3I6TWF0aC5jZWlsLE89TD4wP01hdGguY2VpbDpNYXRoLmZsb29yLHo9TD4w P01hdGgubWluOk1hdGgubWF4LEk9TD4wP01hdGgubWF4Ok1hdGgubWluLEQ9 UChTK0MpLFI9TyhFLUMpLEY9W1toPUEoUyldXTtmb3IoaT1EO2kqTDxSKkw7 aSs9TCljPVtdLGc9SShTLGkpLG09KHY9eihFLGkrTCkpLWcsdT1NYXRoLm1h eCgwLE1hdGgubWluKGstMixNYXRoLmZsb29yKC41KihnK3YpKSkpLGY9QSh2 KSx4JiYocD1vKHUsZy11KSxkPW8odSx2LXUpLGMucHVzaChbaFswXStwWzBd LzMqbSxoWzFdK3BbMV0vMyptXSksYy5wdXNoKFtmWzBdLWRbMF0vMyptLGZb MV0tZFsxXS8zKm1dKSksYy5wdXNoKGYpLEYucHVzaChjKSxoPWY7cmV0dXJu IEZ9fSx7Ii4uLy4uL2xpYiI6NzE3fV0sOTAxOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmli dXRlcyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVz IiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0 ZXMiKSxvPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlk ZUFsbDt0KCIuLi8uLi9jb25zdGFudHMvZG9jcyIpLkZPUk1BVF9MSU5LLHQo Ii4uLy4uL2NvbnN0YW50cy9kb2NzIikuVElNRV9GT1JNQVRfTElOSztlLmV4 cG9ydHM9e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6ImNhbGMi fSxzbW9vdGhpbmc6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLG1pbjowLG1h eDoxLjMsZWRpdFR5cGU6ImNhbGMifSx0aXRsZTp7dGV4dDp7dmFsVHlwZToi c3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sZm9udDpuKHtlZGl0 VHlwZToiY2FsYyJ9KSxvZmZzZXQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDox MCxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sdHlwZTp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiLSIsImxpbmVhciIsImRhdGUi LCJjYXRlZ29yeSJdLGRmbHQ6Ii0iLGVkaXRUeXBlOiJjYWxjIn0sYXV0b3Jh bmdlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCExLCJyZXZl cnNlZCJdLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxyYW5nZW1vZGU6e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIm5vcm1hbCIsInRvemVybyIs Im5vbm5lZ2F0aXZlIl0sZGZsdDoibm9ybWFsIixlZGl0VHlwZToiY2FsYyJ9 LHJhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixlZGl0VHlwZToiY2FsYyIs aXRlbXM6W3t2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0se3ZhbFR5 cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifV19LGZpeGVkcmFuZ2U6e3ZhbFR5 cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxjaGVhdGVy dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaW5kZXgiLCJ2 YWx1ZSJdLGRmbHQ6InZhbHVlIixlZGl0VHlwZToiY2FsYyJ9LHRpY2ttb2Rl Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsaW5lYXIiLCJhcnJh eSJdLGRmbHQ6ImFycmF5IixlZGl0VHlwZToiY2FsYyJ9LG50aWNrczp7dmFs VHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0s dGlja3ZhbHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxj In0sdGlja3RleHQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJj YWxjIn0sc2hvd3RpY2tsYWJlbHM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbInN0YXJ0IiwiZW5kIiwiYm90aCIsIm5vbmUiXSxkZmx0OiJzdGFy dCIsZWRpdFR5cGU6ImNhbGMifSx0aWNrZm9udDpuKHtlZGl0VHlwZToiY2Fs YyJ9KSx0aWNrYW5nbGU6e3ZhbFR5cGU6ImFuZ2xlIixkZmx0OiJhdXRvIixl ZGl0VHlwZToiY2FsYyJ9LHRpY2twcmVmaXg6e3ZhbFR5cGU6InN0cmluZyIs ZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LHNob3d0aWNrcHJlZml4Ont2YWxU eXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGwiLCJmaXJzdCIsImxhc3Qi LCJub25lIl0sZGZsdDoiYWxsIixlZGl0VHlwZToiY2FsYyJ9LHRpY2tzdWZm aXg6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9 LHNob3d0aWNrc3VmZml4Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6 WyJhbGwiLCJmaXJzdCIsImxhc3QiLCJub25lIl0sZGZsdDoiYWxsIixlZGl0 VHlwZToiY2FsYyJ9LHNob3dleHBvbmVudDp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsiYWxsIiwiZmlyc3QiLCJsYXN0Iiwibm9uZSJdLGRmbHQ6 ImFsbCIsZWRpdFR5cGU6ImNhbGMifSxleHBvbmVudGZvcm1hdDp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibm9uZSIsImUiLCJFIiwicG93ZXIi LCJTSSIsIkIiXSxkZmx0OiJCIixlZGl0VHlwZToiY2FsYyJ9LHNlcGFyYXRl dGhvdXNhbmRzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBl OiJjYWxjIn0sdGlja2Zvcm1hdDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIi LGVkaXRUeXBlOiJjYWxjIn0sdGlja2Zvcm1hdHN0b3BzOm8oaS50aWNrZm9y bWF0c3RvcHMsImNhbGMiLCJmcm9tLXJvb3QiKSxjYXRlZ29yeW9yZGVyOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0cmFjZSIsImNhdGVnb3J5 IGFzY2VuZGluZyIsImNhdGVnb3J5IGRlc2NlbmRpbmciLCJhcnJheSJdLGRm bHQ6InRyYWNlIixlZGl0VHlwZToiY2FsYyJ9LGNhdGVnb3J5YXJyYXk6e3Zh bFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sbGFiZWxwYWRk aW5nOnt2YWxUeXBlOiJpbnRlZ2VyIixkZmx0OjEwLGVkaXRUeXBlOiJjYWxj In0sbGFiZWxwcmVmaXg6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNh bGMifSxsYWJlbHN1ZmZpeDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVk aXRUeXBlOiJjYWxjIn0sc2hvd2xpbmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRm bHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxsaW5lY29sb3I6e3ZhbFR5cGU6ImNv bG9yIixkZmx0OmEuZGVmYXVsdExpbmUsZWRpdFR5cGU6ImNhbGMifSxsaW5l d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBl OiJjYWxjIn0sZ3JpZGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6 ImNhbGMifSxncmlkd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZs dDoxLGVkaXRUeXBlOiJjYWxjIn0sc2hvd2dyaWQ6e3ZhbFR5cGU6ImJvb2xl YW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxtaW5vcmdyaWRjb3VudDp7 dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJjYWxj In0sbWlub3Jncmlkd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZs dDoxLGVkaXRUeXBlOiJjYWxjIn0sbWlub3JncmlkY29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixkZmx0OmEubGlnaHRMaW5lLGVkaXRUeXBlOiJjYWxjIn0sc3Rh cnRsaW5lOnt2YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToiY2FsYyJ9LHN0 YXJ0bGluZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6ImNhbGMi fSxzdGFydGxpbmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRp dFR5cGU6ImNhbGMifSxlbmRsaW5lOnt2YWxUeXBlOiJib29sZWFuIixlZGl0 VHlwZToiY2FsYyJ9LGVuZGxpbmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixk Zmx0OjEsZWRpdFR5cGU6ImNhbGMifSxlbmRsaW5lY29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixlZGl0VHlwZToiY2FsYyJ9LHRpY2swOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9LGR0aWNrOnt2YWxU eXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LGFy cmF5dGljazA6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjowLGRmbHQ6MCxlZGl0 VHlwZToiY2FsYyJ9LGFycmF5ZHRpY2s6e3ZhbFR5cGU6ImludGVnZXIiLG1p bjoxLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LF9kZXByZWNhdGVkOnt0aXRs ZTp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyJ9LHRpdGxlZm9u dDpuKHtlZGl0VHlwZToiY2FsYyJ9KSx0aXRsZW9mZnNldDp7dmFsVHlwZToi bnVtYmVyIixkZmx0OjEwLGVkaXRUeXBlOiJjYWxjIn19LGVkaXRUeXBlOiJj YWxjIn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjo1 OTEsIi4uLy4uL2NvbnN0YW50cy9kb2NzIjo2ODgsIi4uLy4uL3Bsb3RfYXBp L2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2xheW91 dF9hdHRyaWJ1dGVzIjo3NzcsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRl cyI6NzkxfV0sOTAyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4vYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9j b2xvciIpLmFkZE9wYWNpdHksaT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgi Li4vLi4vbGliIikscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja192 YWx1ZV9kZWZhdWx0cyIpLGw9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3Rp Y2tfbGFiZWxfZGVmYXVsdHMiKSxjPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9jYXRlZ29yeV9vcmRlcl9kZWZhdWx0cyIpLHU9dCgiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL3NldF9jb252ZXJ0IiksaD10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhpc19hdXRvdHlwZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cil7dmFyIGY9ci5sZXR0ZXIscD1yLmZvbnR8fHt9LGQ9bltmKyJheGlzIl07 ZnVuY3Rpb24gZyhyLG4pe3JldHVybiBvLmNvZXJjZSh0LGUsZCxyLG4pfWZ1 bmN0aW9uIHYocixuKXtyZXR1cm4gby5jb2VyY2UyKHQsZSxkLHIsbil9ci5u YW1lJiYoZS5fbmFtZT1yLm5hbWUsZS5faWQ9ci5uYW1lKTt2YXIgbT1nKCJ0 eXBlIik7KCItIj09PW0mJihyLmRhdGEmJmZ1bmN0aW9uKHQsZSl7aWYoIi0i IT09dC50eXBlKXJldHVybjt2YXIgcj10Ll9pZC5jaGFyQXQoMCksbj10W3Ir ImNhbGVuZGFyIl07dC50eXBlPWgoZSxuKX0oZSxyLmRhdGEpLCItIj09PWUu dHlwZT9lLnR5cGU9ImxpbmVhciI6bT10LnR5cGU9ZS50eXBlKSxnKCJzbW9v dGhpbmciKSxnKCJjaGVhdGVydHlwZSIpLGcoInNob3d0aWNrbGFiZWxzIiks ZygibGFiZWxwcmVmaXgiLGYrIiA9ICIpLGcoImxhYmVsc3VmZml4IiksZygi c2hvd3RpY2twcmVmaXgiKSxnKCJzaG93dGlja3N1ZmZpeCIpLGcoInNlcGFy YXRldGhvdXNhbmRzIiksZygidGlja2Zvcm1hdCIpLGcoImV4cG9uZW50Zm9y bWF0IiksZygic2hvd2V4cG9uZW50IiksZygiY2F0ZWdvcnlvcmRlciIpLGco InRpY2ttb2RlIiksZygidGlja3ZhbHMiKSxnKCJ0aWNrdGV4dCIpLGcoInRp Y2swIiksZygiZHRpY2siKSwiYXJyYXkiPT09ZS50aWNrbW9kZSYmKGcoImFy cmF5dGljazAiKSxnKCJhcnJheWR0aWNrIikpLGcoImxhYmVscGFkZGluZyIp LGUuX2hvdmVydGl0bGU9ZiwiZGF0ZSI9PT1tKSYmaS5nZXRDb21wb25lbnRN ZXRob2QoImNhbGVuZGFycyIsImhhbmRsZURlZmF1bHRzIikodCxlLCJjYWxl bmRhciIsci5jYWxlbmRhcik7dShlLHIuZnVsbExheW91dCksZS5jMnA9by5p ZGVudGl0eTt2YXIgeT1nKCJjb2xvciIsci5kZmx0Q29sb3IpLHg9eT09PXQu Y29sb3I/eTpwLmNvbG9yO2coInRpdGxlLnRleHQiKSYmKG8uY29lcmNlRm9u dChnLCJ0aXRsZS5mb250Iix7ZmFtaWx5OnAuZmFtaWx5LHNpemU6TWF0aC5y b3VuZCgxLjIqcC5zaXplKSxjb2xvcjp4fSksZygidGl0bGUub2Zmc2V0Iikp LGcoInRpY2thbmdsZSIpLGcoImF1dG9yYW5nZSIsIWUuaXNWYWxpZFJhbmdl KHQucmFuZ2UpKSYmZygicmFuZ2Vtb2RlIiksZygicmFuZ2UiKSxlLmNsZWFu UmFuZ2UoKSxnKCJmaXhlZHJhbmdlIikscyh0LGUsZyxtKSxsKHQsZSxnLG0s ciksYyh0LGUsZyx7ZGF0YTpyLmRhdGEsZGF0YUF0dHI6Zn0pO3ZhciBiPXYo ImdyaWRjb2xvciIsYSh5LC4zKSksXz12KCJncmlkd2lkdGgiKSx3PWcoInNo b3dncmlkIik7d3x8KGRlbGV0ZSBlLmdyaWRjb2xvcixkZWxldGUgZS5ncmlk d2lkdGgpO3ZhciBrPXYoInN0YXJ0bGluZWNvbG9yIix5KSxUPXYoInN0YXJ0 bGluZXdpZHRoIixfKTtnKCJzdGFydGxpbmUiLGUuc2hvd2dyaWR8fCEha3x8 ISFUKXx8KGRlbGV0ZSBlLnN0YXJ0bGluZWNvbG9yLGRlbGV0ZSBlLnN0YXJ0 bGluZXdpZHRoKTt2YXIgTT12KCJlbmRsaW5lY29sb3IiLHkpLEE9digiZW5k bGluZXdpZHRoIixfKTtyZXR1cm4gZygiZW5kbGluZSIsZS5zaG93Z3JpZHx8 ISFNfHwhIUEpfHwoZGVsZXRlIGUuZW5kbGluZWNvbG9yLGRlbGV0ZSBlLmVu ZGxpbmV3aWR0aCksdz8oZygibWlub3JncmlkY291bnQiKSxnKCJtaW5vcmdy aWR3aWR0aCIsXyksZygibWlub3JncmlkY29sb3IiLGEoYiwuMDYpKSxlLm1p bm9yZ3JpZGNvdW50fHwoZGVsZXRlIGUubWlub3Jncmlkd2lkdGgsZGVsZXRl IGUubWlub3JncmlkY29sb3IpKTooZGVsZXRlIGUuZ3JpZGNvbG9yLGRlbGV0 ZSBlLmdyaWRXaWR0aCksIm5vbmUiPT09ZS5zaG93dGlja2xhYmVscyYmKGRl bGV0ZSBlLnRpY2tmb250LGRlbGV0ZSBlLnRpY2thbmdsZSxkZWxldGUgZS5z aG93ZXhwb25lbnQsZGVsZXRlIGUuZXhwb25lbnRmb3JtYXQsZGVsZXRlIGUu dGlja2Zvcm1hdCxkZWxldGUgZS5zaG93dGlja3N1ZmZpeCxkZWxldGUgZS5z aG93dGlja3ByZWZpeCksZS5zaG93dGlja3N1ZmZpeHx8ZGVsZXRlIGUudGlj a3N1ZmZpeCxlLnNob3d0aWNrcHJlZml4fHxkZWxldGUgZS50aWNrcHJlZml4 LGcoInRpY2ttb2RlIiksZX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6 NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4 aXNfYXV0b3R5cGUiOjc2NiwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NhdGVn b3J5X29yZGVyX2RlZmF1bHRzIjo3NjksIi4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9zZXRfY29udmVydCI6NzgzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlj a19sYWJlbF9kZWZhdWx0cyI6Nzg0LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v dGlja192YWx1ZV9kZWZhdWx0cyI6Nzg2LCIuLi8uLi9yZWdpc3RyeSI6ODQ2 LCIuL2F0dHJpYnV0ZXMiOjg5OX1dLDkwMzpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhl cyIpLGE9dCgiLi4vLi4vbGliIikuaXNBcnJheTFELGk9dCgiLi9jaGVhdGVy X2Jhc2lzIiksbz10KCIuL2FycmF5X21pbm1heCIpLHM9dCgiLi9jYWxjX2dy aWRsaW5lcyIpLGw9dCgiLi9jYWxjX2xhYmVscyIpLGM9dCgiLi9jYWxjX2Ns aXBwYXRoIiksdT10KCIuLi9oZWF0bWFwL2NsZWFuXzJkX2FycmF5IiksaD10 KCIuL3Ntb290aF9maWxsXzJkX2FycmF5IiksZj10KCIuLi9oZWF0bWFwL2Nv bnZlcnRfY29sdW1uX3h5eiIpLHA9dCgiLi9zZXRfY29udmVydCIpO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW4uZ2V0RnJvbUlkKHQsZS54YXhp cyksZD1uLmdldEZyb21JZCh0LGUueWF4aXMpLGc9ZS5hYXhpcyx2PWUuYmF4 aXMsbT1lLngseT1lLnkseD1bXTttJiZhKG0pJiZ4LnB1c2goIngiKSx5JiZh KHkpJiZ4LnB1c2goInkiKSx4Lmxlbmd0aCYmZihlLGcsdiwiYSIsImIiLHgp O3ZhciBiPWUuX2E9ZS5fYXx8ZS5hLF89ZS5fYj1lLl9ifHxlLmI7bT1lLl94 fHxlLngseT1lLl95fHxlLnk7dmFyIHc9e307aWYoZS5fY2hlYXRlcil7dmFy IGs9ImluZGV4Ij09PWcuY2hlYXRlcnR5cGU/Yi5sZW5ndGg6YixUPSJpbmRl eCI9PT12LmNoZWF0ZXJ0eXBlP18ubGVuZ3RoOl87bT1pKGssVCxlLmNoZWF0 ZXJzbG9wZSl9ZS5feD1tPXUobSksZS5feT15PXUoeSksaChtLGIsXyksaCh5 LGIsXykscChlKSxlLnNldFNjYWxlKCk7dmFyIE09byhtKSxBPW8oeSksUz0u NSooTVsxXS1NWzBdKSxFPS41KihNWzFdK01bMF0pLEw9LjUqKEFbMV0tQVsw XSksQz0uNSooQVsxXStBWzBdKTtyZXR1cm4gTT1bRS0xLjMqUyxFKzEuMypT XSxBPVtDLTEuMypMLEMrMS4zKkxdLGUuX2V4dHJlbWVzW3IuX2lkXT1uLmZp bmRFeHRyZW1lcyhyLE0se3BhZGRlZDohMH0pLGUuX2V4dHJlbWVzW2QuX2lk XT1uLmZpbmRFeHRyZW1lcyhkLEEse3BhZGRlZDohMH0pLHMoZSwiYSIsImIi KSxzKGUsImIiLCJhIiksbChlLGcpLGwoZSx2KSx3LmNsaXBzZWdtZW50cz1j KGUuX3hjdHJsLGUuX3ljdHJsLGcsdiksdy54PW0sdy55PXksdy5hPWIsdy5i PV8sW3ddfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2F4ZXMiOjc2NSwiLi4vaGVhdG1hcC9jbGVhbl8yZF9hcnJheSI6MTAw MiwiLi4vaGVhdG1hcC9jb252ZXJ0X2NvbHVtbl94eXoiOjEwMDQsIi4vYXJy YXlfbWlubWF4Ijo4OTgsIi4vY2FsY19jbGlwcGF0aCI6OTA0LCIuL2NhbGNf Z3JpZGxpbmVzIjo5MDUsIi4vY2FsY19sYWJlbHMiOjkwNiwiLi9jaGVhdGVy X2Jhc2lzIjo5MDgsIi4vc2V0X2NvbnZlcnQiOjkyMSwiLi9zbW9vdGhfZmls bF8yZF9hcnJheSI6OTIyfV0sOTA0OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpLG8s cz1bXSxsPSEhci5zbW9vdGhpbmcsYz0hIW4uc21vb3RoaW5nLHU9dFswXS5s ZW5ndGgtMSxoPXQubGVuZ3RoLTE7Zm9yKGE9MCxpPVtdLG89W107YTw9dTth KyspaVthXT10WzBdW2FdLG9bYV09ZVswXVthXTtmb3Iocy5wdXNoKHt4Omks eTpvLGJpY3ViaWM6bH0pLGE9MCxpPVtdLG89W107YTw9aDthKyspaVthXT10 W2FdW3VdLG9bYV09ZVthXVt1XTtmb3Iocy5wdXNoKHt4OmkseTpvLGJpY3Vi aWM6Y30pLGE9dSxpPVtdLG89W107YT49MDthLS0paVt1LWFdPXRbaF1bYV0s b1t1LWFdPWVbaF1bYV07Zm9yKHMucHVzaCh7eDppLHk6byxiaWN1YmljOmx9 KSxhPWgsaT1bXSxvPVtdO2E+PTA7YS0tKWlbaC1hXT10W2FdWzBdLG9baC1h XT1lW2FdWzBdO3JldHVybiBzLnB1c2goe3g6aSx5Om8sYmljdWJpYzpjfSks c319LHt9XSw5MDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4u L2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7dmFyIGksbyxzLGwsYyx1LGgsZixwLGQsZyx2LG0seSx4PXRbIl8i K2VdLGI9dFtlKyJheGlzIl0sXz1iLl9ncmlkbGluZXM9W10sdz1iLl9taW5v cmdyaWRsaW5lcz1bXSxrPWIuX2JvdW5kYXJ5bGluZXM9W10sVD10WyJfIity XSxNPXRbcisiYXhpcyJdOyJhcnJheSI9PT1iLnRpY2ttb2RlJiYoYi50aWNr dmFscz14LnNsaWNlKCkpO3ZhciBBPXQuX3hjdHJsLFM9dC5feWN0cmwsRT1B WzBdLmxlbmd0aCxMPUEubGVuZ3RoLEM9dC5fYS5sZW5ndGgsUD10Ll9iLmxl bmd0aDtuLnByZXBUaWNrcyhiKSwiYXJyYXkiPT09Yi50aWNrbW9kZSYmZGVs ZXRlIGIudGlja3ZhbHM7dmFyIE89Yi5zbW9vdGhpbmc/MzoxO2Z1bmN0aW9u IHoobil7dmFyIGEsaSxvLHMsbCxjLHUsaCxwLGQsZyx2LG09W10seT1bXSx4 PXt9O2lmKCJiIj09PWUpZm9yKGk9dC5iMmoobiksbz1NYXRoLmZsb29yKE1h dGgubWF4KDAsTWF0aC5taW4oUC0yLGkpKSkscz1pLW8seC5sZW5ndGg9UCx4 LmNyb3NzTGVuZ3RoPUMseC54eT1mdW5jdGlvbihlKXtyZXR1cm4gdC5ldmFs eHkoW10sZSxpKX0seC5keHk9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5keHlk aShbXSxlLG8scixzKX0sYT0wO2E8QzthKyspYz1NYXRoLm1pbihDLTIsYSks dT1hLWMsaD10LmV2YWx4eShbXSxhLGkpLE0uc21vb3RoaW5nJiZhPjAmJihw PXQuZHh5ZGkoW10sYS0xLG8sMCxzKSxtLnB1c2gobFswXStwWzBdLzMpLHku cHVzaChsWzFdK3BbMV0vMyksZD10LmR4eWRpKFtdLGEtMSxvLDEscyksbS5w dXNoKGhbMF0tZFswXS8zKSx5LnB1c2goaFsxXS1kWzFdLzMpKSxtLnB1c2go aFswXSkseS5wdXNoKGhbMV0pLGw9aDtlbHNlIGZvcihhPXQuYTJpKG4pLGM9 TWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKEMtMixhKSkpLHU9YS1j LHgubGVuZ3RoPUMseC5jcm9zc0xlbmd0aD1QLHgueHk9ZnVuY3Rpb24oZSl7 cmV0dXJuIHQuZXZhbHh5KFtdLGEsZSl9LHguZHh5PWZ1bmN0aW9uKGUscil7 cmV0dXJuIHQuZHh5ZGooW10sYyxlLHUscil9LGk9MDtpPFA7aSsrKW89TWF0 aC5taW4oUC0yLGkpLHM9aS1vLGg9dC5ldmFseHkoW10sYSxpKSxNLnNtb290 aGluZyYmaT4wJiYoZz10LmR4eWRqKFtdLGMsaS0xLHUsMCksbS5wdXNoKGxb MF0rZ1swXS8zKSx5LnB1c2gobFsxXStnWzFdLzMpLHY9dC5keHlkaihbXSxj LGktMSx1LDEpLG0ucHVzaChoWzBdLXZbMF0vMykseS5wdXNoKGhbMV0tdlsx XS8zKSksbS5wdXNoKGhbMF0pLHkucHVzaChoWzFdKSxsPWg7cmV0dXJuIHgu YXhpc0xldHRlcj1lLHguYXhpcz1iLHguY3Jvc3NBeGlzPU0seC52YWx1ZT1u LHguY29uc3R2YXI9cix4LmluZGV4PWYseC54PW0seC55PXkseC5zbW9vdGhp bmc9TS5zbW9vdGhpbmcseH1mdW5jdGlvbiBJKG4pe3ZhciBhLGksbyxzLGws Yz1bXSx1PVtdLGg9e307aWYoaC5sZW5ndGg9eC5sZW5ndGgsaC5jcm9zc0xl bmd0aD1ULmxlbmd0aCwiYiI9PT1lKWZvcihvPU1hdGgubWF4KDAsTWF0aC5t aW4oUC0yLG4pKSxsPU1hdGgubWluKDEsTWF0aC5tYXgoMCxuLW8pKSxoLnh5 PWZ1bmN0aW9uKGUpe3JldHVybiB0LmV2YWx4eShbXSxlLG4pfSxoLmR4eT1m dW5jdGlvbihlLHIpe3JldHVybiB0LmR4eWRpKFtdLGUsbyxyLGwpfSxhPTA7 YTxFO2ErKyljW2FdPUFbbipPXVthXSx1W2FdPVNbbipPXVthXTtlbHNlIGZv cihpPU1hdGgubWF4KDAsTWF0aC5taW4oQy0yLG4pKSxzPU1hdGgubWluKDEs TWF0aC5tYXgoMCxuLWkpKSxoLnh5PWZ1bmN0aW9uKGUpe3JldHVybiB0LmV2 YWx4eShbXSxuLGUpfSxoLmR4eT1mdW5jdGlvbihlLHIpe3JldHVybiB0LmR4 eWRqKFtdLGksZSxzLHIpfSxhPTA7YTxMO2ErKyljW2FdPUFbYV1bbipPXSx1 W2FdPVNbYV1bbipPXTtyZXR1cm4gaC5heGlzTGV0dGVyPWUsaC5heGlzPWIs aC5jcm9zc0F4aXM9TSxoLnZhbHVlPXhbbl0saC5jb25zdHZhcj1yLGguaW5k ZXg9bixoLng9YyxoLnk9dSxoLnNtb290aGluZz1NLnNtb290aGluZyxofWlm KCJhcnJheSI9PT1iLnRpY2ttb2RlKXtmb3IobD01ZS0xNSx1PShjPVtNYXRo LmZsb29yKCh4Lmxlbmd0aC0xLWIuYXJyYXl0aWNrMCkvYi5hcnJheWR0aWNr KigxK2wpKSxNYXRoLmNlaWwoLWIuYXJyYXl0aWNrMC9iLmFycmF5ZHRpY2sv KDErbCkpXS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKVswXS0x LGg9Y1sxXSsxLGY9dTtmPGg7ZisrKShvPWIuYXJyYXl0aWNrMCtiLmFycmF5 ZHRpY2sqZik8MHx8bz54Lmxlbmd0aC0xfHxfLnB1c2goYShJKG8pLHtjb2xv cjpiLmdyaWRjb2xvcix3aWR0aDpiLmdyaWR3aWR0aH0pKTtmb3IoZj11O2Y8 aDtmKyspaWYocz1iLmFycmF5dGljazArYi5hcnJheWR0aWNrKmYsZz1NYXRo Lm1pbihzK2IuYXJyYXlkdGljayx4Lmxlbmd0aC0xKSwhKHM8MHx8cz54Lmxl bmd0aC0xfHxnPDB8fGc+eC5sZW5ndGgtMSkpZm9yKHY9eFtzXSxtPXhbZ10s aT0wO2k8Yi5taW5vcmdyaWRjb3VudDtpKyspKHk9Zy1zKTw9MHx8KGQ9diso bS12KSooaSsxKS8oYi5taW5vcmdyaWRjb3VudCsxKSooYi5hcnJheWR0aWNr L3kpKTx4WzBdfHxkPnhbeC5sZW5ndGgtMV18fHcucHVzaChhKHooZCkse2Nv bG9yOmIubWlub3JncmlkY29sb3Isd2lkdGg6Yi5taW5vcmdyaWR3aWR0aH0p KTtiLnN0YXJ0bGluZSYmay5wdXNoKGEoSSgwKSx7Y29sb3I6Yi5zdGFydGxp bmVjb2xvcix3aWR0aDpiLnN0YXJ0bGluZXdpZHRofSkpLGIuZW5kbGluZSYm ay5wdXNoKGEoSSh4Lmxlbmd0aC0xKSx7Y29sb3I6Yi5lbmRsaW5lY29sb3Is d2lkdGg6Yi5lbmRsaW5ld2lkdGh9KSl9ZWxzZXtmb3IobD01ZS0xNSx1PShj PVtNYXRoLmZsb29yKCh4W3gubGVuZ3RoLTFdLWIudGljazApL2IuZHRpY2sq KDErbCkpLE1hdGguY2VpbCgoeFswXS1iLnRpY2swKS9iLmR0aWNrLygxK2wp KV0uc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSlbMF0saD1jWzFd LGY9dTtmPD1oO2YrKylwPWIudGljazArYi5kdGljaypmLF8ucHVzaChhKHoo cCkse2NvbG9yOmIuZ3JpZGNvbG9yLHdpZHRoOmIuZ3JpZHdpZHRofSkpO2Zv cihmPXUtMTtmPGgrMTtmKyspZm9yKHA9Yi50aWNrMCtiLmR0aWNrKmYsaT0w O2k8Yi5taW5vcmdyaWRjb3VudDtpKyspKGQ9cCtiLmR0aWNrKihpKzEpLyhi Lm1pbm9yZ3JpZGNvdW50KzEpKTx4WzBdfHxkPnhbeC5sZW5ndGgtMV18fHcu cHVzaChhKHooZCkse2NvbG9yOmIubWlub3JncmlkY29sb3Isd2lkdGg6Yi5t aW5vcmdyaWR3aWR0aH0pKTtiLnN0YXJ0bGluZSYmay5wdXNoKGEoeih4WzBd KSx7Y29sb3I6Yi5zdGFydGxpbmVjb2xvcix3aWR0aDpiLnN0YXJ0bGluZXdp ZHRofSkpLGIuZW5kbGluZSYmay5wdXNoKGEoeih4W3gubGVuZ3RoLTFdKSx7 Y29sb3I6Yi5lbmRsaW5lY29sb3Isd2lkdGg6Yi5lbmRsaW5ld2lkdGh9KSl9 fX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2NhcnRl c2lhbi9heGVzIjo3NjV9XSw5MDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxh PXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe3ZhciByLGksbyxzPWUuX2xhYmVscz1bXSxsPWUuX2dy aWRsaW5lcztmb3Iocj0wO3I8bC5sZW5ndGg7cisrKW89bFtyXSwtMSE9PVsi c3RhcnQiLCJib3RoIl0uaW5kZXhPZihlLnNob3d0aWNrbGFiZWxzKSYmKGk9 bi50aWNrVGV4dChlLG8udmFsdWUpLGEoaSx7cHJlZml4OnZvaWQgMCxzdWZm aXg6dm9pZCAwLGVuZEFuY2hvcjohMCx4eTpvLnh5KDApLGR4eTpvLmR4eSgw LDApLGF4aXM6by5heGlzLGxlbmd0aDpvLmNyb3NzQXhpcy5sZW5ndGgsZm9u dDpvLmF4aXMudGlja2ZvbnQsaXNGaXJzdDowPT09cixpc0xhc3Q6cj09PWwu bGVuZ3RoLTF9KSxzLnB1c2goaSkpLC0xIT09WyJlbmQiLCJib3RoIl0uaW5k ZXhPZihlLnNob3d0aWNrbGFiZWxzKSYmKGk9bi50aWNrVGV4dChlLG8udmFs dWUpLGEoaSx7ZW5kQW5jaG9yOiExLHh5Om8ueHkoby5jcm9zc0xlbmd0aC0x KSxkeHk6by5keHkoby5jcm9zc0xlbmd0aC0yLDEpLGF4aXM6by5heGlzLGxl bmd0aDpvLmNyb3NzQXhpcy5sZW5ndGgsZm9udDpvLmF4aXMudGlja2ZvbnQs aXNGaXJzdDowPT09cixpc0xhc3Q6cj09PWwubGVuZ3RoLTF9KSxzLnB1c2go aSkpfX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIjo3NjV9XSw5MDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRb MF0tZVswXSxpPXRbMV0tZVsxXSxvPXJbMF0tZVswXSxzPXJbMV0tZVsxXSxs PU1hdGgucG93KGEqYStpKmksLjI1KSxjPU1hdGgucG93KG8qbytzKnMsLjI1 KSx1PShjKmMqYS1sKmwqbykqbixoPShjKmMqaS1sKmwqcykqbixmPWMqKGwr YykqMyxwPWwqKGwrYykqMztyZXR1cm5bW2VbMF0rKGYmJnUvZiksZVsxXSso ZiYmaC9mKV0sW2VbMF0tKHAmJnUvcCksZVsxXS0ocCYmaC9wKV1dfX0se31d LDkwODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9saWIiKS5pc0FycmF5T3JUeXBlZEFycmF5O2UuZXhwb3J0cz1mdW5j dGlvbih0LGUscil7dmFyIGEsaSxvLHMsbCxjLHU9W10saD1uKHQpP3QubGVu Z3RoOnQsZj1uKGUpP2UubGVuZ3RoOmUscD1uKHQpP3Q6bnVsbCxkPW4oZSk/ ZTpudWxsO3AmJihvPShwLmxlbmd0aC0xKS8ocFtwLmxlbmd0aC0xXS1wWzBd KS8oaC0xKSksZCYmKHM9KGQubGVuZ3RoLTEpLyhkW2QubGVuZ3RoLTFdLWRb MF0pLyhmLTEpKTt2YXIgZz0xLzAsdj0tMS8wO2ZvcihpPTA7aTxmO2krKylm b3IodVtpXT1bXSxsPWQ/KGRbaV0tZFswXSkqczppLyhmLTEpLGE9MDthPGg7 YSsrKWM9KHA/KHBbYV0tcFswXSkqbzphLyhoLTEpKS1sKnIsZz1NYXRoLm1p bihjLGcpLHY9TWF0aC5tYXgoYyx2KSx1W2ldW2FdPWM7dmFyIG09MS8odi1n KSx5PS1nKm07Zm9yKGk9MDtpPGY7aSsrKWZvcihhPTA7YTxoO2ErKyl1W2ld W2FdPW0qdVtpXVthXSt5O3JldHVybiB1fX0seyIuLi8uLi9saWIiOjcxN31d LDkwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu L2NhdG11bGxfcm9tIiksYT10KCIuLi8uLi9saWIiKS5lbnN1cmVBcnJheTtm dW5jdGlvbiBpKHQsZSxyKXt2YXIgbj0tLjUqclswXSsxLjUqZVswXSxhPS0u NSpyWzFdKzEuNSplWzFdO3JldHVyblsoMipuK3RbMF0pLzMsKDIqYSt0WzFd KS8zXX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyxzLGwpe3ZhciBjLHUs aCxmLHAsZCxnLHYsbSx5LHg9clswXS5sZW5ndGgsYj1yLmxlbmd0aCxfPXM/ Myp4LTI6eCx3PWw/MypiLTI6Yjtmb3IodD1hKHQsdyksZT1hKGUsdyksaD0w O2g8dztoKyspdFtoXT1hKHRbaF0sXyksZVtoXT1hKGVbaF0sXyk7Zm9yKHU9 MCxmPTA7dTxiO3UrKyxmKz1sPzM6MSlmb3IocD10W2ZdLGQ9ZVtmXSxnPXJb dV0sdj1vW3VdLGM9MCxoPTA7Yzx4O2MrKyxoKz1zPzM6MSlwW2hdPWdbY10s ZFtoXT12W2NdO2lmKHMpZm9yKHU9MCxmPTA7dTxiO3UrKyxmKz1sPzM6MSl7 Zm9yKGM9MSxoPTM7Yzx4LTE7YysrLGgrPTMpbT1uKFtyW3VdW2MtMV0sb1t1 XVtjLTFdXSxbclt1XVtjXSxvW3VdW2NdXSxbclt1XVtjKzFdLG9bdV1bYysx XV0scyksdFtmXVtoLTFdPW1bMF1bMF0sZVtmXVtoLTFdPW1bMF1bMV0sdFtm XVtoKzFdPW1bMV1bMF0sZVtmXVtoKzFdPW1bMV1bMV07eT1pKFt0W2ZdWzBd LGVbZl1bMF1dLFt0W2ZdWzJdLGVbZl1bMl1dLFt0W2ZdWzNdLGVbZl1bM11d KSx0W2ZdWzFdPXlbMF0sZVtmXVsxXT15WzFdLHk9aShbdFtmXVtfLTFdLGVb Zl1bXy0xXV0sW3RbZl1bXy0zXSxlW2ZdW18tM11dLFt0W2ZdW18tNF0sZVtm XVtfLTRdXSksdFtmXVtfLTJdPXlbMF0sZVtmXVtfLTJdPXlbMV19aWYobClm b3IoaD0wO2g8XztoKyspe2ZvcihmPTM7Zjx3LTM7Zis9MyltPW4oW3RbZi0z XVtoXSxlW2YtM11baF1dLFt0W2ZdW2hdLGVbZl1baF1dLFt0W2YrM11baF0s ZVtmKzNdW2hdXSxsKSx0W2YtMV1baF09bVswXVswXSxlW2YtMV1baF09bVsw XVsxXSx0W2YrMV1baF09bVsxXVswXSxlW2YrMV1baF09bVsxXVsxXTt5PWko W3RbMF1baF0sZVswXVtoXV0sW3RbMl1baF0sZVsyXVtoXV0sW3RbM11baF0s ZVszXVtoXV0pLHRbMV1baF09eVswXSxlWzFdW2hdPXlbMV0seT1pKFt0W3ct MV1baF0sZVt3LTFdW2hdXSxbdFt3LTNdW2hdLGVbdy0zXVtoXV0sW3Rbdy00 XVtoXSxlW3ctNF1baF1dKSx0W3ctMl1baF09eVswXSxlW3ctMl1baF09eVsx XX1pZihzJiZsKWZvcihmPTE7Zjx3O2YrPShmKzEpJTM9PTA/MjoxKXtmb3Io aD0zO2g8Xy0zO2grPTMpbT1uKFt0W2ZdW2gtM10sZVtmXVtoLTNdXSxbdFtm XVtoXSxlW2ZdW2hdXSxbdFtmXVtoKzNdLGVbZl1baCszXV0scyksdFtmXVto LTFdPS41Kih0W2ZdW2gtMV0rbVswXVswXSksZVtmXVtoLTFdPS41KihlW2Zd W2gtMV0rbVswXVsxXSksdFtmXVtoKzFdPS41Kih0W2ZdW2grMV0rbVsxXVsw XSksZVtmXVtoKzFdPS41KihlW2ZdW2grMV0rbVsxXVsxXSk7eT1pKFt0W2Zd WzBdLGVbZl1bMF1dLFt0W2ZdWzJdLGVbZl1bMl1dLFt0W2ZdWzNdLGVbZl1b M11dKSx0W2ZdWzFdPS41Kih0W2ZdWzFdK3lbMF0pLGVbZl1bMV09LjUqKGVb Zl1bMV0reVsxXSkseT1pKFt0W2ZdW18tMV0sZVtmXVtfLTFdXSxbdFtmXVtf LTNdLGVbZl1bXy0zXV0sW3RbZl1bXy00XSxlW2ZdW18tNF1dKSx0W2ZdW18t Ml09LjUqKHRbZl1bXy0yXSt5WzBdKSxlW2ZdW18tMl09LjUqKGVbZl1bXy0y XSt5WzFdKX1yZXR1cm5bdCxlXX19LHsiLi4vLi4vbGliIjo3MTcsIi4vY2F0 bXVsbF9yb20iOjkwN31dLDkxMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9e1JFTEFUSVZFX0NVTExfVE9MRVJBTkNFOjFlLTZ9 fSx7fV0sOTExOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGUmJnI/ZnVuY3Rpb24oZSxy LG4sYSxpKXt2YXIgbyxzLGwsYyx1LGg7ZXx8KGU9W10pLHIqPTMsbio9Mzt2 YXIgZj1hKmEscD0xLWEsZD1wKnAsZz1wKmEqMix2PS0zKmQsbT0zKihkLWcp LHk9MyooZy1mKSx4PTMqZixiPWkqaSxfPWIqaSx3PTEtaSxrPXcqdyxUPWsq dztmb3IoaD0wO2g8dC5sZW5ndGg7aCsrKW89dioodT10W2hdKVtuXVtyXStt KnVbbl1bcisxXSt5KnVbbl1bcisyXSt4KnVbbl1bciszXSxzPXYqdVtuKzFd W3JdK20qdVtuKzFdW3IrMV0reSp1W24rMV1bcisyXSt4KnVbbisxXVtyKzNd LGw9dip1W24rMl1bcl0rbSp1W24rMl1bcisxXSt5KnVbbisyXVtyKzJdK3gq dVtuKzJdW3IrM10sYz12KnVbbiszXVtyXSttKnVbbiszXVtyKzFdK3kqdVtu KzNdW3IrMl0reCp1W24rM11bciszXSxlW2hdPVQqbyszKihrKmkqcyt3KmIq bCkrXypjO3JldHVybiBlfTplP2Z1bmN0aW9uKGUscixuLGEsaSl7dmFyIG8s cyxsLGM7ZXx8KGU9W10pLHIqPTM7dmFyIHU9YSphLGg9MS1hLGY9aCpoLHA9 aCphKjIsZD0tMypmLGc9MyooZi1wKSx2PTMqKHAtdSksbT0zKnUseT0xLWk7 Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylvPWQqKGM9dFtsXSlbbl1bcl0rZypj W25dW3IrMV0rdipjW25dW3IrMl0rbSpjW25dW3IrM10scz1kKmNbbisxXVty XStnKmNbbisxXVtyKzFdK3YqY1tuKzFdW3IrMl0rbSpjW24rMV1bciszXSxl W2xdPXkqbytpKnM7cmV0dXJuIGV9OnI/ZnVuY3Rpb24oZSxyLG4sYSxpKXt2 YXIgbyxzLGwsYyx1LGg7ZXx8KGU9W10pLG4qPTM7dmFyIGY9aSppLHA9Zipp LGQ9MS1pLGc9ZCpkLHY9ZypkO2Zvcih1PTA7dTx0Lmxlbmd0aDt1Kyspbz0o aD10W3VdKVtuXVtyKzFdLWhbbl1bcl0scz1oW24rMV1bcisxXS1oW24rMV1b cl0sbD1oW24rMl1bcisxXS1oW24rMl1bcl0sYz1oW24rM11bcisxXS1oW24r M11bcl0sZVt1XT12Km8rMyooZyppKnMrZCpmKmwpK3AqYztyZXR1cm4gZX06 ZnVuY3Rpb24oZSxyLG4sYSxpKXt2YXIgbyxzLGwsYztlfHwoZT1bXSk7dmFy IHU9MS1pO2ZvcihsPTA7bDx0Lmxlbmd0aDtsKyspbz0oYz10W2xdKVtuXVty KzFdLWNbbl1bcl0scz1jW24rMV1bcisxXS1jW24rMV1bcl0sZVtsXT11Km8r aSpzO3JldHVybiBlfX19LHt9XSw5MTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZSYm cj9mdW5jdGlvbihlLHIsbixhLGkpe3ZhciBvLHMsbCxjLHUsaDtlfHwoZT1b XSkscio9MyxuKj0zO3ZhciBmPWEqYSxwPWYqYSxkPTEtYSxnPWQqZCx2PWcq ZCxtPWkqaSx5PTEtaSx4PXkqeSxiPXkqaSoyLF89LTMqeCx3PTMqKHgtYiks az0zKihiLW0pLFQ9MyptO2ZvcihoPTA7aDx0Lmxlbmd0aDtoKyspbz1fKih1 PXRbaF0pW25dW3JdK3cqdVtuKzFdW3JdK2sqdVtuKzJdW3JdK1QqdVtuKzNd W3JdLHM9Xyp1W25dW3IrMV0rdyp1W24rMV1bcisxXStrKnVbbisyXVtyKzFd K1QqdVtuKzNdW3IrMV0sbD1fKnVbbl1bcisyXSt3KnVbbisxXVtyKzJdK2sq dVtuKzJdW3IrMl0rVCp1W24rM11bcisyXSxjPV8qdVtuXVtyKzNdK3cqdVtu KzFdW3IrM10rayp1W24rMl1bciszXStUKnVbbiszXVtyKzNdLGVbaF09dipv KzMqKGcqYSpzK2QqZipsKStwKmM7cmV0dXJuIGV9OmU/ZnVuY3Rpb24oZSxy LG4sYSxpKXt2YXIgbyxzLGwsYyx1LGg7ZXx8KGU9W10pLHIqPTM7dmFyIGY9 aSppLHA9ZippLGQ9MS1pLGc9ZCpkLHY9ZypkO2Zvcih1PTA7dTx0Lmxlbmd0 aDt1Kyspbz0oaD10W3VdKVtuKzFdW3JdLWhbbl1bcl0scz1oW24rMV1bcisx XS1oW25dW3IrMV0sbD1oW24rMV1bcisyXS1oW25dW3IrMl0sYz1oW24rMV1b ciszXS1oW25dW3IrM10sZVt1XT12Km8rMyooZyppKnMrZCpmKmwpK3AqYzty ZXR1cm4gZX06cj9mdW5jdGlvbihlLHIsbixhLGkpe3ZhciBvLHMsbCxjO2V8 fChlPVtdKSxuKj0zO3ZhciB1PTEtYSxoPWkqaSxmPTEtaSxwPWYqZixkPWYq aSoyLGc9LTMqcCx2PTMqKHAtZCksbT0zKihkLWgpLHk9MypoO2ZvcihsPTA7 bDx0Lmxlbmd0aDtsKyspbz1nKihjPXRbbF0pW25dW3JdK3YqY1tuKzFdW3Jd K20qY1tuKzJdW3JdK3kqY1tuKzNdW3JdLHM9ZypjW25dW3IrMV0rdipjW24r MV1bcisxXSttKmNbbisyXVtyKzFdK3kqY1tuKzNdW3IrMV0sZVtsXT11Km8r YSpzO3JldHVybiBlfTpmdW5jdGlvbihlLHIsbixhLGkpe3ZhciBvLHMsbCxj O2V8fChlPVtdKTt2YXIgdT0xLWE7Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylv PShjPXRbbF0pW24rMV1bcl0tY1tuXVtyXSxzPWNbbisxXVtyKzFdLWNbbl1b cisxXSxlW2xdPXUqbythKnM7cmV0dXJuIGV9fX0se31dLDkxMzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIsbixhKXt2YXIgaT1lLTIsbz1yLTI7cmV0dXJuIG4mJmE/ZnVuY3Rpb24o ZSxyLG4pe3ZhciBhLHMsbCxjLHUsaDtlfHwoZT1bXSk7dmFyIGY9TWF0aC5t YXgoMCxNYXRoLm1pbihNYXRoLmZsb29yKHIpLGkpKSxwPU1hdGgubWF4KDAs TWF0aC5taW4oTWF0aC5mbG9vcihuKSxvKSksZD1NYXRoLm1heCgwLE1hdGgu bWluKDEsci1mKSksZz1NYXRoLm1heCgwLE1hdGgubWluKDEsbi1wKSk7Zio9 MyxwKj0zO3ZhciB2PWQqZCxtPXYqZCx5PTEtZCx4PXkqeSxiPXgqeSxfPWcq Zyx3PV8qZyxrPTEtZyxUPWsqayxNPVQqaztmb3IoaD0wO2g8dC5sZW5ndGg7 aCsrKWE9YioodT10W2hdKVtwXVtmXSszKih4KmQqdVtwXVtmKzFdK3kqdip1 W3BdW2YrMl0pK20qdVtwXVtmKzNdLHM9Yip1W3ArMV1bZl0rMyooeCpkKnVb cCsxXVtmKzFdK3kqdip1W3ArMV1bZisyXSkrbSp1W3ArMV1bZiszXSxsPWIq dVtwKzJdW2ZdKzMqKHgqZCp1W3ArMl1bZisxXSt5KnYqdVtwKzJdW2YrMl0p K20qdVtwKzJdW2YrM10sYz1iKnVbcCszXVtmXSszKih4KmQqdVtwKzNdW2Yr MV0reSp2KnVbcCszXVtmKzJdKSttKnVbcCszXVtmKzNdLGVbaF09TSphKzMq KFQqZypzK2sqXypsKSt3KmM7cmV0dXJuIGV9Om4/ZnVuY3Rpb24oZSxyLG4p e2V8fChlPVtdKTt2YXIgYSxzLGwsYyx1LGgsZj1NYXRoLm1heCgwLE1hdGgu bWluKE1hdGguZmxvb3IociksaSkpLHA9TWF0aC5tYXgoMCxNYXRoLm1pbihN YXRoLmZsb29yKG4pLG8pKSxkPU1hdGgubWF4KDAsTWF0aC5taW4oMSxyLWYp KSxnPU1hdGgubWF4KDAsTWF0aC5taW4oMSxuLXApKTtmKj0zO3ZhciB2PWQq ZCxtPXYqZCx5PTEtZCx4PXkqeSxiPXgqeSxfPTEtZztmb3IodT0wO3U8dC5s ZW5ndGg7dSsrKWE9XyooaD10W3VdKVtwXVtmXStnKmhbcCsxXVtmXSxzPV8q aFtwXVtmKzFdK2cqaFtwKzFdW2YrMV0sbD1fKmhbcF1bZisyXStnKmhbcCsx XVtmKzFdLGM9XypoW3BdW2YrM10rZypoW3ArMV1bZisxXSxlW3VdPWIqYSsz Kih4KmQqcyt5KnYqbCkrbSpjO3JldHVybiBlfTphP2Z1bmN0aW9uKGUscixu KXtlfHwoZT1bXSk7dmFyIGEscyxsLGMsdSxoLGY9TWF0aC5tYXgoMCxNYXRo Lm1pbihNYXRoLmZsb29yKHIpLGkpKSxwPU1hdGgubWF4KDAsTWF0aC5taW4o TWF0aC5mbG9vcihuKSxvKSksZD1NYXRoLm1heCgwLE1hdGgubWluKDEsci1m KSksZz1NYXRoLm1heCgwLE1hdGgubWluKDEsbi1wKSk7cCo9Mzt2YXIgdj1n KmcsbT12KmcseT0xLWcseD15KnksYj14KnksXz0xLWQ7Zm9yKHU9MDt1PHQu bGVuZ3RoO3UrKylhPV8qKGg9dFt1XSlbcF1bZl0rZCpoW3BdW2YrMV0scz1f KmhbcCsxXVtmXStkKmhbcCsxXVtmKzFdLGw9XypoW3ArMl1bZl0rZCpoW3Ar Ml1bZisxXSxjPV8qaFtwKzNdW2ZdK2QqaFtwKzNdW2YrMV0sZVt1XT1iKmEr MyooeCpnKnMreSp2KmwpK20qYztyZXR1cm4gZX06ZnVuY3Rpb24oZSxyLG4p e2V8fChlPVtdKTt2YXIgYSxzLGwsYyx1PU1hdGgubWF4KDAsTWF0aC5taW4o TWF0aC5mbG9vcihyKSxpKSksaD1NYXRoLm1heCgwLE1hdGgubWluKE1hdGgu Zmxvb3IobiksbykpLGY9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHItdSkpLHA9 TWF0aC5tYXgoMCxNYXRoLm1pbigxLG4taCkpLGQ9MS1wLGc9MS1mO2Zvcihs PTA7bDx0Lmxlbmd0aDtsKyspYT1nKihjPXRbbF0pW2hdW3VdK2YqY1toXVt1 KzFdLHM9ZypjW2grMV1bdV0rZipjW2grMV1bdSsxXSxlW2xdPWQqYStwKnM7 cmV0dXJuIGV9fX0se31dLDkxNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4veHlfZGVmYXVsdHMi KSxpPXQoIi4vYWJfZGVmYXVsdHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpLHM9 dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIik7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyLGwpe2Z1bmN0aW9uIGMocixhKXtyZXR1cm4g bi5jb2VyY2UodCxlLG8scixhKX1lLl9jbGlwUGF0aElkPSJjbGlwIitlLnVp ZCsiY2FycGV0Ijt2YXIgdT1jKCJjb2xvciIscy5kZWZhdWx0TGluZSk7KG4u Y29lcmNlRm9udChjLCJmb250IiksYygiY2FycGV0IiksaSh0LGUsbCxjLHUp LGUuYSYmZS5iKT8oZS5hLmxlbmd0aDwzJiYoZS5hYXhpcy5zbW9vdGhpbmc9 MCksZS5iLmxlbmd0aDwzJiYoZS5iYXhpcy5zbW9vdGhpbmc9MCksYSh0LGUs Yyl8fChlLnZpc2libGU9ITEpLGUuX2NoZWF0ZXImJmMoImNoZWF0ZXJzbG9w ZSIpKTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3Iv YXR0cmlidXRlcyI6NTkxLCIuLi8uLi9saWIiOjcxNywiLi9hYl9kZWZhdWx0 cyI6ODk3LCIuL2F0dHJpYnV0ZXMiOjg5OSwiLi94eV9kZWZhdWx0cyI6OTIz fV0sOTE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0 czp0KCIuL2RlZmF1bHRzIikscGxvdDp0KCIuL3Bsb3QiKSxjYWxjOnQoIi4v Y2FsYyIpLGFuaW1hdGFibGU6ITAsaXNDb250YWluZXI6ITAsbW9kdWxlVHlw ZToidHJhY2UiLG5hbWU6ImNhcnBldCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbImNhcnRlc2lhbiIs InN2ZyIsImNhcnBldCIsImNhcnBldEF4aXMiLCJub3RMZWdlbmRJc29sYXRh YmxlIiwibm9NdWx0aUNhdGVnb3J5Iiwibm9Ib3ZlciIsIm5vU29ydGluZ0J5 VmFsdWUiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3 NiwiLi9hdHRyaWJ1dGVzIjo4OTksIi4vY2FsYyI6OTAzLCIuL2RlZmF1bHRz Ijo5MTQsIi4vcGxvdCI6OTIwfV0sOTE2OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcixu PXQuX2Z1bGxEYXRhLmxlbmd0aCxhPTA7YTxuO2ErKyl7dmFyIGk9dC5fZnVs bERhdGFbYV07aWYoaS5pbmRleCE9PWUuaW5kZXgmJigiY2FycGV0Ij09PWku dHlwZSYmKHJ8fChyPWkpLGkuY2FycGV0PT09ZS5jYXJwZXQpKSlyZXR1cm4g aX1yZXR1cm4gcn19LHt9XSw5MTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpZigwPT09dC5sZW5n dGgpcmV0dXJuIiI7dmFyIG4sYT1bXSxpPXI/MzoxO2ZvcihuPTA7bjx0Lmxl bmd0aDtuKz1pKWEucHVzaCh0W25dKyIsIitlW25dKSxyJiZuPHQubGVuZ3Ro LWkmJihhLnB1c2goIkMiKSxhLnB1c2goW3RbbisxXSsiLCIrZVtuKzFdLHRb bisyXSsiLCIrZVtuKzJdKyIgIl0uam9pbigiICIpKSk7cmV0dXJuIGEuam9p bihyPyIiOiJMIil9fSx7fV0sOTE4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJy YXk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYTtmb3Iobih0KT90 Lmxlbmd0aD5lLmxlbmd0aCYmKHQ9dC5zbGljZSgwLGUubGVuZ3RoKSk6dD1b XSxhPTA7YTxlLmxlbmd0aDthKyspdFthXT1yKGVbYV0pO3JldHVybiB0fX0s eyIuLi8uLi9saWIiOjcxN31dLDkxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixhLGkpe3ZhciBv PWFbMF0qdC5kcGR4KGUpLHM9YVsxXSp0LmRwZHkociksbD0xLGM9MTtpZihp KXt2YXIgdT1NYXRoLnNxcnQoYVswXSphWzBdK2FbMV0qYVsxXSksaD1NYXRo LnNxcnQoaVswXSppWzBdK2lbMV0qaVsxXSksZj0oYVswXSppWzBdK2FbMV0q aVsxXSkvdS9oO2M9TWF0aC5tYXgoMCxmKX12YXIgcD0xODAqTWF0aC5hdGFu MihzLG8pL01hdGguUEk7cmV0dXJuIHA8LTkwPyhwKz0xODAsbD0tbCk6cD45 MCYmKHAtPTE4MCxsPS1sKSx7YW5nbGU6cCxmbGlwOmwscDp0LmMycChuLGUs ciksb2Zmc2V0TXVsdHBsaWVyOmN9fX0se31dLDkyMDpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vY29t cG9uZW50cy9kcmF3aW5nIiksaT10KCIuL21hcF8xZF9hcnJheSIpLG89dCgi Li9tYWtlcGF0aCIpLHM9dCgiLi9vcmllbnRfdGV4dCIpLGw9dCgiLi4vLi4v bGliL3N2Z190ZXh0X3V0aWxzIiksYz10KCIuLi8uLi9saWIiKSx1PXQoIi4u Ly4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKTtmdW5jdGlvbiBoKHQsZSxyLGEs cyxsKXt2YXIgYz0iY29uc3QtIitzKyItbGluZXMiLHU9ci5zZWxlY3RBbGwo Ii4iK2MpLmRhdGEobCk7dS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNz ZWQoYywhMCkuc3R5bGUoInZlY3Rvci1lZmZlY3QiLCJub24tc2NhbGluZy1z dHJva2UiKSx1LmVhY2goZnVuY3Rpb24ocil7dmFyIGE9cixzPWEueCxsPWEu eSxjPWkoW10scyx0LmMycCksdT1pKFtdLGwsZS5jMnApLGg9Ik0iK28oYyx1 LGEuc21vb3RoaW5nKTtuLnNlbGVjdCh0aGlzKS5hdHRyKCJkIixoKS5zdHls ZSgic3Ryb2tlLXdpZHRoIixhLndpZHRoKS5zdHlsZSgic3Ryb2tlIixhLmNv bG9yKS5zdHlsZSgiZmlsbCIsIm5vbmUiKX0pLHUuZXhpdCgpLnJlbW92ZSgp fWZ1bmN0aW9uIGYodCxlLHIsaSxvLGMsdSxoKXt2YXIgZj1jLnNlbGVjdEFs bCgidGV4dC4iK2gpLmRhdGEodSk7Zi5lbnRlcigpLmFwcGVuZCgidGV4dCIp LmNsYXNzZWQoaCwhMCk7dmFyIHA9MCxkPXt9O3JldHVybiBmLmVhY2goZnVu Y3Rpb24obyxjKXt2YXIgdTtpZigiYXV0byI9PT1vLmF4aXMudGlja2FuZ2xl KXU9cyhpLGUscixvLnh5LG8uZHh5KTtlbHNle3ZhciBoPShvLmF4aXMudGlj a2FuZ2xlKzE4MCkqTWF0aC5QSS8xODA7dT1zKGksZSxyLG8ueHksW01hdGgu Y29zKGgpLE1hdGguc2luKGgpXSl9Y3x8KGQ9e2FuZ2xlOnUuYW5nbGUsZmxp cDp1LmZsaXB9KTt2YXIgZj0oby5lbmRBbmNob3I/LTE6MSkqdS5mbGlwLGc9 bi5zZWxlY3QodGhpcykuYXR0cih7InRleHQtYW5jaG9yIjpmPjA/InN0YXJ0 IjoiZW5kIiwiZGF0YS1ub3RleCI6MX0pLmNhbGwoYS5mb250LG8uZm9udCku dGV4dChvLnRleHQpLmNhbGwobC5jb252ZXJ0VG9Uc3BhbnMsdCksdj1hLmJC b3godGhpcyk7Zy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit1LnBb MF0rIiwiK3UucFsxXSsiKSByb3RhdGUoIit1LmFuZ2xlKyIpdHJhbnNsYXRl KCIrby5heGlzLmxhYmVscGFkZGluZypmKyIsIisuMyp2LmhlaWdodCsiKSIp LHA9TWF0aC5tYXgocCx2LndpZHRoK28uYXhpcy5sYWJlbHBhZGRpbmcpfSks Zi5leGl0KCkucmVtb3ZlKCksZC5tYXhFeHRlbnQ9cCxkfWUuZXhwb3J0cz1m dW5jdGlvbih0LGUscixhKXt2YXIgbD1lLnhheGlzLHU9ZS55YXhpcyxwPXQu X2Z1bGxMYXlvdXQuX2NsaXBzO2MubWFrZVRyYWNlR3JvdXBzKGEsciwidHJh Y2UiKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0KHRoaXMpLGE9 ZVswXSxkPWEudHJhY2Usdj1kLmFheGlzLG09ZC5iYXhpcyx5PWMuZW5zdXJl U2luZ2xlKHIsImciLCJtaW5vcmxheWVyIikseD1jLmVuc3VyZVNpbmdsZShy LCJnIiwibWFqb3JsYXllciIpLGI9Yy5lbnN1cmVTaW5nbGUociwiZyIsImJv dW5kYXJ5bGF5ZXIiKSxfPWMuZW5zdXJlU2luZ2xlKHIsImciLCJsYWJlbGxh eWVyIik7ci5zdHlsZSgib3BhY2l0eSIsZC5vcGFjaXR5KSxoKGwsdSx4LHYs ImEiLHYuX2dyaWRsaW5lcyksaChsLHUseCxtLCJiIixtLl9ncmlkbGluZXMp LGgobCx1LHksdiwiYSIsdi5fbWlub3JncmlkbGluZXMpLGgobCx1LHksbSwi YiIsbS5fbWlub3JncmlkbGluZXMpLGgobCx1LGIsdiwiYS1ib3VuZGFyeSIs di5fYm91bmRhcnlsaW5lcyksaChsLHUsYixtLCJiLWJvdW5kYXJ5IixtLl9i b3VuZGFyeWxpbmVzKTt2YXIgdz1mKHQsbCx1LGQsYSxfLHYuX2xhYmVscywi YS1sYWJlbCIpLGs9Zih0LGwsdSxkLGEsXyxtLl9sYWJlbHMsImItbGFiZWwi KTshZnVuY3Rpb24odCxlLHIsbixhLGksbyxsKXt2YXIgdSxoLGYscCxkPWMu YWdnTnVtcyhNYXRoLm1pbixudWxsLHIuYSksdj1jLmFnZ051bXMoTWF0aC5t YXgsbnVsbCxyLmEpLG09Yy5hZ2dOdW1zKE1hdGgubWluLG51bGwsci5iKSx5 PWMuYWdnTnVtcyhNYXRoLm1heCxudWxsLHIuYik7dT0uNSooZCt2KSxoPW0s Zj1yLmFiMnh5KHUsaCwhMCkscD1yLmR4eWRhX3JvdWdoKHUsaCksdm9pZCAw PT09by5hbmdsZSYmYy5leHRlbmRGbGF0KG8scyhyLGEsaSxmLHIuZHh5ZGJf cm91Z2godSxoKSkpO2codCxlLHIsbixmLHAsci5hYXhpcyxhLGksbywiYS10 aXRsZSIpLHU9ZCxoPS41KihtK3kpLGY9ci5hYjJ4eSh1LGgsITApLHA9ci5k eHlkYl9yb3VnaCh1LGgpLHZvaWQgMD09PWwuYW5nbGUmJmMuZXh0ZW5kRmxh dChsLHMocixhLGksZixyLmR4eWRhX3JvdWdoKHUsaCkpKTtnKHQsZSxyLG4s ZixwLHIuYmF4aXMsYSxpLGwsImItdGl0bGUiKX0odCxfLGQsYSxsLHUsdyxr KSxmdW5jdGlvbih0LGUscixuLGEpe3ZhciBzLGwsdSxoLGY9ci5zZWxlY3Qo IiMiK3QuX2NsaXBQYXRoSWQpO2Yuc2l6ZSgpfHwoZj1yLmFwcGVuZCgiY2xp cFBhdGgiKS5jbGFzc2VkKCJjYXJwZXRjbGlwIiwhMCkpO3ZhciBwPWMuZW5z dXJlU2luZ2xlKGYsInBhdGgiLCJjYXJwZXRib3VuZGFyeSIpLGQ9ZS5jbGlw c2VnbWVudHMsZz1bXTtmb3IoaD0wO2g8ZC5sZW5ndGg7aCsrKXM9ZFtoXSxs PWkoW10scy54LG4uYzJwKSx1PWkoW10scy55LGEuYzJwKSxnLnB1c2gobyhs LHUscy5iaWN1YmljKSk7dmFyIHY9Ik0iK2cuam9pbigiTCIpKyJaIjtmLmF0 dHIoImlkIix0Ll9jbGlwUGF0aElkKSxwLmF0dHIoImQiLHYpfShkLGEscCxs LHUpfSl9O3ZhciBwPXUuTElORV9TUEFDSU5HLGQ9KDEtdS5NSURfU0hJRlQp L3ArMTtmdW5jdGlvbiBnKHQsZSxyLGksbyxjLHUsaCxmLGcsdil7dmFyIG09 W107dS50aXRsZS50ZXh0JiZtLnB1c2godS50aXRsZS50ZXh0KTt2YXIgeT1l LnNlbGVjdEFsbCgidGV4dC4iK3YpLmRhdGEobSkseD1nLm1heEV4dGVudDt5 LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZCh2LCEwKSx5LmVhY2go ZnVuY3Rpb24oKXt2YXIgZT1zKHIsaCxmLG8sYyk7LTE9PT1bInN0YXJ0Iiwi Ym90aCJdLmluZGV4T2YodS5zaG93dGlja2xhYmVscykmJih4PTApO3ZhciBp PXUudGl0bGUuZm9udC5zaXplO3grPWkrdS50aXRsZS5vZmZzZXQ7dmFyIHY9 KGcuYW5nbGUrKGcuZmxpcDwwPzE4MDowKS1lLmFuZ2xlKzQ1MCklMzYwLG09 dj45MCYmdjwyNzAseT1uLnNlbGVjdCh0aGlzKTt5LnRleHQodS50aXRsZS50 ZXh0KS5jYWxsKGwuY29udmVydFRvVHNwYW5zLHQpLG0mJih4PSgtbC5saW5l Q291bnQoeSkrZCkqcCppLXgpLHkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNs YXRlKCIrZS5wWzBdKyIsIitlLnBbMV0rIikgcm90YXRlKCIrZS5hbmdsZSsi KSB0cmFuc2xhdGUoMCwiK3grIikiKS5jbGFzc2VkKCJ1c2VyLXNlbGVjdC1u b25lIiwhMCkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5jYWxsKGEu Zm9udCx1LnRpdGxlLmZvbnQpfSkseS5leGl0KCkucmVtb3ZlKCl9fSx7Ii4u Ly4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9jb25zdGFudHMv YWxpZ25tZW50Ijo2ODYsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvc3Zn X3RleHRfdXRpbHMiOjc0MSwiLi9tYWtlcGF0aCI6OTE3LCIuL21hcF8xZF9h cnJheSI6OTE4LCIuL29yaWVudF90ZXh0Ijo5MTksZDM6MTY1fV0sOTIxOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29uc3Rh bnRzIiksYT10KCIuLi8uLi9saWIvc2VhcmNoIikuZmluZEJpbixpPXQoIi4v Y29tcHV0ZV9jb250cm9sX3BvaW50cyIpLG89dCgiLi9jcmVhdGVfc3BsaW5l X2V2YWx1YXRvciIpLHM9dCgiLi9jcmVhdGVfaV9kZXJpdmF0aXZlX2V2YWx1 YXRvciIpLGw9dCgiLi9jcmVhdGVfal9kZXJpdmF0aXZlX2V2YWx1YXRvciIp O2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9hLHI9dC5fYixjPWUu bGVuZ3RoLHU9ci5sZW5ndGgsaD10LmFheGlzLGY9dC5iYXhpcyxwPWVbMF0s ZD1lW2MtMV0sZz1yWzBdLHY9clt1LTFdLG09ZVtlLmxlbmd0aC0xXS1lWzBd LHk9cltyLmxlbmd0aC0xXS1yWzBdLHg9bSpuLlJFTEFUSVZFX0NVTExfVE9M RVJBTkNFLGI9eSpuLlJFTEFUSVZFX0NVTExfVE9MRVJBTkNFO3AtPXgsZCs9 eCxnLT1iLHYrPWIsdC5pc1Zpc2libGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4g dD5wJiZ0PGQmJmU+ZyYmZTx2fSx0LmlzT2NjbHVkZWQ9ZnVuY3Rpb24odCxl KXtyZXR1cm4gdDxwfHx0PmR8fGU8Z3x8ZT52fSx0LnNldFNjYWxlPWZ1bmN0 aW9uKCl7dmFyIGU9dC5feCxyPXQuX3ksbj1pKHQuX3hjdHJsLHQuX3ljdHJs LGUscixoLnNtb290aGluZyxmLnNtb290aGluZyk7dC5feGN0cmw9blswXSx0 Ll95Y3RybD1uWzFdLHQuZXZhbHh5PW8oW3QuX3hjdHJsLHQuX3ljdHJsXSxj LHUsaC5zbW9vdGhpbmcsZi5zbW9vdGhpbmcpLHQuZHh5ZGk9cyhbdC5feGN0 cmwsdC5feWN0cmxdLGguc21vb3RoaW5nLGYuc21vb3RoaW5nKSx0LmR4eWRq PWwoW3QuX3hjdHJsLHQuX3ljdHJsXSxoLnNtb290aGluZyxmLnNtb290aGlu Zyl9LHQuaTJhPWZ1bmN0aW9uKHQpe3ZhciByPU1hdGgubWF4KDAsTWF0aC5m bG9vcih0WzBdKSxjLTIpLG49dFswXS1yO3JldHVybigxLW4pKmVbcl0rbipl W3IrMV19LHQuajJiPWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDAsTWF0 aC5mbG9vcih0WzFdKSxjLTIpLG49dFsxXS1lO3JldHVybigxLW4pKnJbZV0r bipyW2UrMV19LHQuaWoyYWI9ZnVuY3Rpb24oZSl7cmV0dXJuW3QuaTJhKGVb MF0pLHQuajJiKGVbMV0pXX0sdC5hMmk9ZnVuY3Rpb24odCl7dmFyIHI9TWF0 aC5tYXgoMCxNYXRoLm1pbihhKHQsZSksYy0yKSksbj1lW3JdLGk9ZVtyKzFd O3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKGMtMSxyKyh0LW4pLyhpLW4p KSl9LHQuYjJqPWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDAsTWF0aC5t aW4oYSh0LHIpLHUtMikpLG49cltlXSxpPXJbZSsxXTtyZXR1cm4gTWF0aC5t YXgoMCxNYXRoLm1pbih1LTEsZSsodC1uKS8oaS1uKSkpfSx0LmFiMmlqPWZ1 bmN0aW9uKGUpe3JldHVyblt0LmEyaShlWzBdKSx0LmIyaihlWzFdKV19LHQu aTJjPWZ1bmN0aW9uKGUscil7cmV0dXJuIHQuZXZhbHh5KFtdLGUscil9LHQu YWIyeHk9ZnVuY3Rpb24obixhLGkpe2lmKCFpJiYobjxlWzBdfHxuPmVbYy0x XXxhPHJbMF18fGE+clt1LTFdKSlyZXR1cm5bITEsITFdO3ZhciBvPXQuYTJp KG4pLHM9dC5iMmooYSksbD10LmV2YWx4eShbXSxvLHMpO2lmKGkpe3ZhciBo LGYscCxkLGc9MCx2PTAsbT1bXTtuPGVbMF0/KGg9MCxmPTAsZz0obi1lWzBd KS8oZVsxXS1lWzBdKSk6bj5lW2MtMV0/KGg9Yy0yLGY9MSxnPShuLWVbYy0x XSkvKGVbYy0xXS1lW2MtMl0pKTpmPW8tKGg9TWF0aC5tYXgoMCxNYXRoLm1p bihjLTIsTWF0aC5mbG9vcihvKSkpKSxhPHJbMF0/KHA9MCxkPTAsdj0oYS1y WzBdKS8oclsxXS1yWzBdKSk6YT5yW3UtMV0/KHA9dS0yLGQ9MSx2PShhLXJb dS0xXSkvKHJbdS0xXS1yW3UtMl0pKTpkPXMtKHA9TWF0aC5tYXgoMCxNYXRo Lm1pbih1LTIsTWF0aC5mbG9vcihzKSkpKSxnJiYodC5keHlkaShtLGgscCxm LGQpLGxbMF0rPW1bMF0qZyxsWzFdKz1tWzFdKmcpLHYmJih0LmR4eWRqKG0s aCxwLGYsZCksbFswXSs9bVswXSp2LGxbMV0rPW1bMV0qdil9cmV0dXJuIGx9 LHQuYzJwPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm5bZS5jMnAodFswXSksci5j MnAodFsxXSldfSx0LnAyeD1mdW5jdGlvbih0LGUscil7cmV0dXJuW2UucDJj KHRbMF0pLHIucDJjKHRbMV0pXX0sdC5kYWRpPWZ1bmN0aW9uKHQpe3ZhciBy PU1hdGgubWF4KDAsTWF0aC5taW4oZS5sZW5ndGgtMix0KSk7cmV0dXJuIGVb cisxXS1lW3JdfSx0LmRiZGo9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5tYXgo MCxNYXRoLm1pbihyLmxlbmd0aC0yLHQpKTtyZXR1cm4gcltlKzFdLXJbZV19 LHQuZHh5ZGE9ZnVuY3Rpb24oZSxyLG4sYSl7dmFyIGk9dC5keHlkaShudWxs LGUscixuLGEpLG89dC5kYWRpKGUsbik7cmV0dXJuW2lbMF0vbyxpWzFdL29d fSx0LmR4eWRiPWZ1bmN0aW9uKGUscixuLGEpe3ZhciBpPXQuZHh5ZGoobnVs bCxlLHIsbixhKSxvPXQuZGJkaihyLGEpO3JldHVybltpWzBdL28saVsxXS9v XX0sdC5keHlkYV9yb3VnaD1mdW5jdGlvbihlLHIsbil7dmFyIGE9bSoobnx8 LjEpLGk9dC5hYjJ4eShlK2EsciwhMCksbz10LmFiMnh5KGUtYSxyLCEwKTty ZXR1cm5bLjUqKGlbMF0tb1swXSkvYSwuNSooaVsxXS1vWzFdKS9hXX0sdC5k eHlkYl9yb3VnaD1mdW5jdGlvbihlLHIsbil7dmFyIGE9eSoobnx8LjEpLGk9 dC5hYjJ4eShlLHIrYSwhMCksbz10LmFiMnh5KGUsci1hLCEwKTtyZXR1cm5b LjUqKGlbMF0tb1swXSkvYSwuNSooaVsxXS1vWzFdKS9hXX0sdC5kcGR4PWZ1 bmN0aW9uKHQpe3JldHVybiB0Ll9tfSx0LmRwZHk9ZnVuY3Rpb24odCl7cmV0 dXJuIHQuX219fX0seyIuLi8uLi9saWIvc2VhcmNoIjo3MzYsIi4vY29tcHV0 ZV9jb250cm9sX3BvaW50cyI6OTA5LCIuL2NvbnN0YW50cyI6OTEwLCIuL2Ny ZWF0ZV9pX2Rlcml2YXRpdmVfZXZhbHVhdG9yIjo5MTEsIi4vY3JlYXRlX2pf ZGVyaXZhdGl2ZV9ldmFsdWF0b3IiOjkxMiwiLi9jcmVhdGVfc3BsaW5lX2V2 YWx1YXRvciI6OTEzfV0sOTIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7dmFyIGEsaSxvLHM9W10sbD1bXSxjPXRbMF0ubGVuZ3RoLHU9dC5s ZW5ndGg7ZnVuY3Rpb24gaChlLHIpe3ZhciBuLGE9MCxpPTA7cmV0dXJuIGU+ MCYmdm9pZCAwIT09KG49dFtyXVtlLTFdKSYmKGkrKyxhKz1uKSxlPGMtMSYm dm9pZCAwIT09KG49dFtyXVtlKzFdKSYmKGkrKyxhKz1uKSxyPjAmJnZvaWQg MCE9PShuPXRbci0xXVtlXSkmJihpKyssYSs9bikscjx1LTEmJnZvaWQgMCE9 PShuPXRbcisxXVtlXSkmJihpKyssYSs9biksYS9NYXRoLm1heCgxLGkpfXZh ciBmLHAsZCxnLHYsbSx5LHgsYixfLHcsaz0wO2ZvcihhPTA7YTxjO2ErKylm b3IoaT0wO2k8dTtpKyspdm9pZCAwPT09dFtpXVthXSYmKHMucHVzaChhKSxs LnB1c2goaSksdFtpXVthXT1oKGEsaSkpLGs9TWF0aC5tYXgoayxNYXRoLmFi cyh0W2ldW2FdKSk7aWYoIXMubGVuZ3RoKXJldHVybiB0O3ZhciBUPTAsTT0w LEE9cy5sZW5ndGg7ZG97Zm9yKFQ9MCxvPTA7bzxBO28rKyl7YT1zW29dLGk9 bFtvXTt2YXIgUyxFLEwsQyxQLE8sej0wLEk9MDswPT09YT8oTD1lW1A9TWF0 aC5taW4oYy0xLDIpXSxDPWVbMV0sUz10W2ldW1BdLEkrPShFPXRbaV1bMV0p KyhFLVMpKihlWzBdLUMpLyhDLUwpLHorKyk6YT09PWMtMSYmKEw9ZVtQPU1h dGgubWF4KDAsYy0zKV0sQz1lW2MtMl0sUz10W2ldW1BdLEkrPShFPXRbaV1b Yy0yXSkrKEUtUykqKGVbYy0xXS1DKS8oQy1MKSx6KyspLCgwPT09YXx8YT09 PWMtMSkmJmk+MCYmaTx1LTEmJihmPXJbaSsxXS1yW2ldLEkrPSgocD1yW2ld LXJbaS0xXSkqdFtpKzFdW2FdK2YqdFtpLTFdW2FdKS8ocCtmKSx6KyspLDA9 PT1pPyhMPXJbTz1NYXRoLm1pbih1LTEsMildLEM9clsxXSxTPXRbT11bYV0s SSs9KEU9dFsxXVthXSkrKEUtUykqKHJbMF0tQykvKEMtTCkseisrKTppPT09 dS0xJiYoTD1yW089TWF0aC5tYXgoMCx1LTMpXSxDPXJbdS0yXSxTPXRbT11b YV0sSSs9KEU9dFt1LTJdW2FdKSsoRS1TKSooclt1LTFdLUMpLyhDLUwpLHor KyksKDA9PT1pfHxpPT09dS0xKSYmYT4wJiZhPGMtMSYmKGY9ZVthKzFdLWVb YV0sSSs9KChwPWVbYV0tZVthLTFdKSp0W2ldW2ErMV0rZip0W2ldW2EtMV0p LyhwK2YpLHorKyksej9JLz16OihkPWVbYSsxXS1lW2FdLGc9ZVthXS1lW2Et MV0seD0odj1yW2krMV0tcltpXSkqKG09cltpXS1yW2ktMV0pKih2K20pLEk9 KCh5PWQqZyooZCtnKSkqKG0qdFtpKzFdW2FdK3YqdFtpLTFdW2FdKSt4Kihn KnRbaV1bYSsxXStkKnRbaV1bYS0xXSkpLyh4KihnK2QpK3kqKG0rdikpKSxU Kz0oXz0oYj1JLXRbaV1bYV0pL2spKl8sdz16PzA6Ljg1LHRbaV1bYV0rPWIq KDErdyl9VD1NYXRoLnNxcnQoVCl9d2hpbGUoTSsrPDEwMCYmVD4xZS01KTty ZXR1cm4gbi5sb2coIlNtb290aGVyIGNvbnZlcmdlZCB0byIsVCwiYWZ0ZXIi LE0sIml0ZXJhdGlvbnMiKSx0fX0seyIuLi8uLi9saWIiOjcxN31dLDkyMzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9s aWIiKS5pc0FycmF5MUQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIg YT1yKCJ4IiksaT1hJiZhLmxlbmd0aCxvPXIoInkiKSxzPW8mJm8ubGVuZ3Ro O2lmKCFpJiYhcylyZXR1cm4hMTtpZihlLl9jaGVhdGVyPSFhLGkmJiFuKGEp fHxzJiYhbihvKSllLl9sZW5ndGg9bnVsbDtlbHNle3ZhciBsPWk/YS5sZW5n dGg6MS8wO3MmJihsPU1hdGgubWluKGwsby5sZW5ndGgpKSxlLmEmJmUuYS5s ZW5ndGgmJihsPU1hdGgubWluKGwsZS5hLmxlbmd0aCkpLGUuYiYmZS5iLmxl bmd0aCYmKGw9TWF0aC5taW4obCxlLmIubGVuZ3RoKSksZS5fbGVuZ3RoPWx9 cmV0dXJuITB9fSx7Ii4uLy4uL2xpYiI6NzE3fV0sOTI0OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3RlbXBs YXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsYT10KCIuLi9z Y2F0dGVyZ2VvL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRy aWJ1dGVzIikscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0 ZXMiKS5kZWZhdWx0TGluZSxsPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRl bmRGbGF0LGM9YS5tYXJrZXIubGluZTtlLmV4cG9ydHM9bCh7bG9jYXRpb25z Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGxvY2F0 aW9ubW9kZTphLmxvY2F0aW9ubW9kZSx6Ont2YWxUeXBlOiJkYXRhX2FycmF5 IixlZGl0VHlwZToiY2FsYyJ9LGdlb2pzb246bCh7fSxhLmdlb2pzb24se30p LGZlYXR1cmVpZGtleTphLmZlYXR1cmVpZGtleSx0ZXh0Omwoe30sYS50ZXh0 LHt9KSxob3ZlcnRleHQ6bCh7fSxhLmhvdmVydGV4dCx7fSksbWFya2VyOnts aW5lOntjb2xvcjpsKHt9LGMuY29sb3Ise2RmbHQ6c30pLHdpZHRoOmwoe30s Yy53aWR0aCx7ZGZsdDoxfSksZWRpdFR5cGU6ImNhbGMifSxvcGFjaXR5Ont2 YWxUeXBlOiJudW1iZXIiLGFycmF5T2s6ITAsbWluOjAsbWF4OjEsZGZsdDox LGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJjYWxjIn0sc2VsZWN0ZWQ6 e21hcmtlcjp7b3BhY2l0eTphLnNlbGVjdGVkLm1hcmtlci5vcGFjaXR5LGVk aXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSx1bnNlbGVjdGVkOntt YXJrZXI6e29wYWNpdHk6YS51bnNlbGVjdGVkLm1hcmtlci5vcGFjaXR5LGVk aXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSxob3ZlcmluZm86bCh7 fSxvLmhvdmVyaW5mbyx7ZWRpdFR5cGU6ImNhbGMiLGZsYWdzOlsibG9jYXRp b24iLCJ6IiwidGV4dCIsIm5hbWUiXX0pLGhvdmVydGVtcGxhdGU6bigpLHNo b3dsZWdlbmQ6bCh7fSxvLnNob3dsZWdlbmQse2RmbHQ6ITF9KX0saSgiIix7 Y0xldHRlcjoieiIsZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSl9LHsiLi4v Li4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjo1OTEsIi4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xp Yi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIu Li8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL3NjYXR0 ZXJnZW8vYXR0cmlidXRlcyI6MTE2MX1dLDkyNTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgi Li4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSxpPXQoIi4uLy4u L2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIiksbz10KCIuLi9zY2F0dGVy L2FycmF5c190b19jYWxjZGF0YSIpLHM9dCgiLi4vc2NhdHRlci9jYWxjX3Nl bGVjdGlvbiIpO2Z1bmN0aW9uIGwodCl7cmV0dXJuIHQmJiJzdHJpbmciPT10 eXBlb2YgdH1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixjPWUuX2xl bmd0aCx1PW5ldyBBcnJheShjKTtyPWUuZ2VvanNvbj9mdW5jdGlvbih0KXty ZXR1cm4gbCh0KXx8bih0KX06bDtmb3IodmFyIGg9MDtoPGM7aCsrKXt2YXIg Zj11W2hdPXt9LHA9ZS5sb2NhdGlvbnNbaF0sZD1lLnpbaF07cihwKSYmbihk KT8oZi5sb2M9cCxmLno9ZCk6KGYubG9jPW51bGwsZi56PWEpLGYuaW5kZXg9 aH1yZXR1cm4gbyh1LGUpLGkodCxlLHt2YWxzOmUueixjb250YWluZXJTdHI6 IiIsY0xldHRlcjoieiJ9KSxzKHUsZSksdX19LHsiLi4vLi4vY29tcG9uZW50 cy9jb2xvcnNjYWxlL2NhbGMiOjYwMCwiLi4vLi4vY29uc3RhbnRzL251bWVy aWNhbCI6NjkzLCIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSI6MTEx OSwiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiI6MTEyMiwiZmFzdC1pc251 bWVyaWMiOjIyOH1dLDkyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9kZWZhdWx0cyIpLGk9dCgiLi9hdHRyaWJ1dGVzIik7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe2Z1bmN0aW9uIHMocixhKXtyZXR1 cm4gbi5jb2VyY2UodCxlLGkscixhKX12YXIgbD1zKCJsb2NhdGlvbnMiKSxj PXMoInoiKTtpZihsJiZsLmxlbmd0aCYmbi5pc0FycmF5T3JUeXBlZEFycmF5 KGMpJiZjLmxlbmd0aCl7ZS5fbGVuZ3RoPU1hdGgubWluKGwubGVuZ3RoLGMu bGVuZ3RoKTt2YXIgdSxoPXMoImdlb2pzb24iKTsoInN0cmluZyI9PXR5cGVv ZiBoJiYiIiE9PWh8fG4uaXNQbGFpbk9iamVjdChoKSkmJih1PSJnZW9qc29u LWlkIiksImdlb2pzb24taWQiPT09cygibG9jYXRpb25tb2RlIix1KSYmcygi ZmVhdHVyZWlka2V5IikscygidGV4dCIpLHMoImhvdmVydGV4dCIpLHMoImhv dmVydGVtcGxhdGUiKSxzKCJtYXJrZXIubGluZS53aWR0aCIpJiZzKCJtYXJr ZXIubGluZS5jb2xvciIpLHMoIm1hcmtlci5vcGFjaXR5IiksYSh0LGUsbyxz LHtwcmVmaXg6IiIsY0xldHRlcjoieiJ9KSxuLmNvZXJjZVNlbGVjdGlvbk1h cmtlck9wYWNpdHkoZSxzKX1lbHNlIGUudmlzaWJsZT0hMX19LHsiLi4vLi4v Y29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2MDIsIi4uLy4uL2xp YiI6NzE3LCIuL2F0dHJpYnV0ZXMiOjkyNH1dLDkyNzpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixh KXt0LmxvY2F0aW9uPWUubG9jYXRpb24sdC56PWUuejt2YXIgaT1uW2FdO3Jl dHVybiBpLmZJbiYmaS5mSW4ucHJvcGVydGllcyYmKHQucHJvcGVydGllcz1p LmZJbi5wcm9wZXJ0aWVzKSx0LmN0PWkuY3QsdH19LHt9XSw5Mjg6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4vYXR0cmlidXRlcyIpLGk9dCgiLi4v Li4vbGliIikuZmlsbFRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbyxzLGwsYyx1PXQuY2QsaD11WzBdLnRyYWNlLGY9dC5zdWJwbG90O2Zv cihzPTA7czx1Lmxlbmd0aDtzKyspaWYoYz0hMSwobz11W3NdKS5fcG9seWdv bnMpe2ZvcihsPTA7bDxvLl9wb2x5Z29ucy5sZW5ndGg7bCsrKW8uX3BvbHln b25zW2xdLmNvbnRhaW5zKFtlLHJdKSYmKGM9IWMpLG8uX3BvbHlnb25zW2xd LmNvbnRhaW5zKFtlKzM2MCxyXSkmJihjPSFjKTtpZihjKWJyZWFrfWlmKGMm Jm8pcmV0dXJuIHQueDA9dC54MT10LnhhLmMycChvLmN0KSx0LnkwPXQueTE9 dC55YS5jMnAoby5jdCksdC5pbmRleD1vLmluZGV4LHQubG9jYXRpb249by5s b2MsdC56PW8ueix0LnpMYWJlbD1uLnRpY2tUZXh0KGYubW9ja0F4aXMsZi5t b2NrQXhpcy5jMmwoby56KSwiaG92ZXIiKS50ZXh0LHQuaG92ZXJ0ZW1wbGF0 ZT1vLmhvdmVydGVtcGxhdGUsZnVuY3Rpb24odCxlLHIpe2lmKGUuaG92ZXJ0 ZW1wbGF0ZSlyZXR1cm47dmFyIG49ci5oaXx8ZS5ob3ZlcmluZm8sbz1TdHJp bmcoci5sb2MpLHM9ImFsbCI9PT1uP2EuaG92ZXJpbmZvLmZsYWdzOm4uc3Bs aXQoIisiKSxsPS0xIT09cy5pbmRleE9mKCJuYW1lIiksYz0tMSE9PXMuaW5k ZXhPZigibG9jYXRpb24iKSx1PS0xIT09cy5pbmRleE9mKCJ6IiksaD0tMSE9 PXMuaW5kZXhPZigidGV4dCIpLGY9W107IWwmJmM/dC5uYW1lT3ZlcnJpZGU9 bzoobCYmKHQubmFtZU92ZXJyaWRlPWUubmFtZSksYyYmZi5wdXNoKG8pKTt1 JiZmLnB1c2godC56TGFiZWwpO2gmJmkocixlLGYpO3QuZXh0cmFUZXh0PWYu am9pbigiPGJyPiIpfSh0LGgsbyxmLm1vY2tBeGlzKSxbdF19fSx7Ii4uLy4u L2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIu L2F0dHJpYnV0ZXMiOjkyNH1dLDkyOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVz Iiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQo Ii4uL2hlYXRtYXAvY29sb3JiYXIiKSxjYWxjOnQoIi4vY2FsYyIpLGNhbGNH ZW9KU09OOnQoIi4vcGxvdCIpLmNhbGNHZW9KU09OLHBsb3Q6dCgiLi9wbG90 IikucGxvdCxzdHlsZTp0KCIuL3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVj dDp0KCIuL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIu L2hvdmVyIiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLHNlbGVjdFBv aW50czp0KCIuL3NlbGVjdCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJj aG9yb3BsZXRoIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nZW8i KSxjYXRlZ29yaWVzOlsiZ2VvIiwibm9PcGFjaXR5Iiwic2hvd0xlZ2VuZCJd LG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dlbyI6Nzk1LCIuLi9oZWF0bWFw L2NvbG9yYmFyIjoxMDAzLCIuL2F0dHJpYnV0ZXMiOjkyNCwiLi9jYWxjIjo5 MjUsIi4vZGVmYXVsdHMiOjkyNiwiLi9ldmVudF9kYXRhIjo5MjcsIi4vaG92 ZXIiOjkyOCwiLi9wbG90Ijo5MzAsIi4vc2VsZWN0Ijo5MzEsIi4vc3R5bGUi OjkzMn1dLDkzMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9saWIvZ2Vv X2xvY2F0aW9uX3V0aWxzIiksbz10KCIuLi8uLi9saWIvdG9wb2pzb25fdXRp bHMiKS5nZXRUb3BvanNvbkZlYXR1cmVzLHM9dCgiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F1dG9yYW5nZSIpLmZpbmRFeHRyZW1lcyxsPXQoIi4vc3R5bGUi KS5zdHlsZTtlLmV4cG9ydHM9e2NhbGNHZW9KU09OOmZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByPXRbMF0udHJhY2Usbj1lW3IuZ2VvXSxhPW4uX3N1YnBsb3Qs bD1yLmxvY2F0aW9ubW9kZSxjPXIuX2xlbmd0aCx1PSJnZW9qc29uLWlkIj09 PWw/aS5leHRyYWN0VHJhY2VGZWF0dXJlKHQpOm8ocixhLnRvcG9qc29uKSxo PVtdLGY9W10scD0wO3A8YztwKyspe3ZhciBkPXRbcF0sZz0iZ2VvanNvbi1p ZCI9PT1sP2QuZk91dDppLmxvY2F0aW9uVG9GZWF0dXJlKGwsZC5sb2MsdSk7 aWYoZyl7ZC5nZW9qc29uPWcsZC5jdD1nLnByb3BlcnRpZXMuY3QsZC5fcG9s eWdvbnM9aS5mZWF0dXJlMnBvbHlnb25zKGcpO3ZhciB2PWkuY29tcHV0ZUJi b3goZyk7aC5wdXNoKHZbMF0sdlsyXSksZi5wdXNoKHZbMV0sdlszXSl9ZWxz ZSBkLmdlb2pzb249bnVsbH1pZigiZ2VvanNvbiI9PT1uLmZpdGJvdW5kcyYm Imdlb2pzb24taWQiPT09bCl7dmFyIG09aS5jb21wdXRlQmJveChpLmdldFRy YWNlR2VvanNvbihyKSk7aD1bbVswXSxtWzJdXSxmPVttWzFdLG1bM11dfXZh ciB5PXtwYWRkZWQ6ITB9O3IuX2V4dHJlbWVzLmxvbj1zKG4ubG9uYXhpcy5f YXgsaCx5KSxyLl9leHRyZW1lcy5sYXQ9cyhuLmxhdGF4aXMuX2F4LGYseSl9 LHBsb3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPWUubGF5ZXJzLmJhY2twbG90 LnNlbGVjdCgiLmNob3JvcGxldGhsYXllciIpO2EubWFrZVRyYWNlR3JvdXBz KGksciwidHJhY2UgY2hvcm9wbGV0aCIpLmVhY2goZnVuY3Rpb24oZSl7dmFy IHI9bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJwYXRoLmNob3JvcGxldGhs b2NhdGlvbiIpLmRhdGEoYS5pZGVudGl0eSk7ci5lbnRlcigpLmFwcGVuZCgi cGF0aCIpLmNsYXNzZWQoImNob3JvcGxldGhsb2NhdGlvbiIsITApLHIuZXhp dCgpLnJlbW92ZSgpLGwodCxlKX0pfX19LHsiLi4vLi4vbGliIjo3MTcsIi4u Ly4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiOjcxMSwiLi4vLi4vbGliL3Rv cG9qc29uX3V0aWxzIjo3NDQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRv cmFuZ2UiOjc2NCwiLi9zdHlsZSI6OTMyLGQzOjE2NX1dLDkzMTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXt2YXIgcixuLGEsaSxvLHM9dC5jZCxsPXQueGF4aXMsYz10LnlheGlzLHU9 W107aWYoITE9PT1lKWZvcihyPTA7cjxzLmxlbmd0aDtyKyspc1tyXS5zZWxl Y3RlZD0wO2Vsc2UgZm9yKHI9MDtyPHMubGVuZ3RoO3IrKykoYT0obj1zW3Jd KS5jdCkmJihpPWwuYzJwKGEpLG89Yy5jMnAoYSksZS5jb250YWlucyhbaSxv XSxudWxsLHIsdCk/KHUucHVzaCh7cG9pbnROdW1iZXI6cixsb246YVswXSxs YXQ6YVsxXX0pLG4uc2VsZWN0ZWQ9MSk6bi5zZWxlY3RlZD0wKTtyZXR1cm4g dX19LHt9XSw5MzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiZDMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQo Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vLi4vY29tcG9u ZW50cy9jb2xvcnNjYWxlIik7ZnVuY3Rpb24gcyh0LGUpe3ZhciByPWVbMF0u dHJhY2Uscz1lWzBdLm5vZGUzLnNlbGVjdEFsbCgiLmNob3JvcGxldGhsb2Nh dGlvbiIpLGw9ci5tYXJrZXJ8fHt9LGM9bC5saW5lfHx7fSx1PW8ubWFrZUNv bG9yU2NhbGVGdW5jRnJvbVRyYWNlKHIpO3MuZWFjaChmdW5jdGlvbih0KXtu LnNlbGVjdCh0aGlzKS5hdHRyKCJmaWxsIix1KHQueikpLmNhbGwoYS5zdHJv a2UsdC5tbGN8fGMuY29sb3IpLmNhbGwoaS5kYXNoTGluZSwiIix0Lm1sd3x8 Yy53aWR0aHx8MCkuc3R5bGUoIm9wYWNpdHkiLGwub3BhY2l0eSl9KSxpLnNl bGVjdGVkUG9pbnRTdHlsZShzLHIsdCl9ZS5leHBvcnRzPXtzdHlsZTpmdW5j dGlvbih0LGUpe2UmJnModCxlKX0sc3R5bGVPblNlbGVjdDpmdW5jdGlvbih0 LGUpe3ZhciByPWVbMF0ubm9kZTMsbj1lWzBdLnRyYWNlO24uc2VsZWN0ZWRw b2ludHM/aS5zZWxlY3RlZFBvaW50U3R5bGUoci5zZWxlY3RBbGwoIi5jaG9y b3BsZXRobG9jYXRpb24iKSxuLHQpOnModCxlKX19fSx7Ii4uLy4uL2NvbXBv bmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxl Ijo2MDQsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLGQzOjE2NX1d LDkzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li9jaG9yb3BsZXRoL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy90 ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLG89dCgi Li4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vbGliL2V4dGVu ZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXMoe2xvY2F0aW9uczp7dmFsVHlw ZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx6Ont2YWxUeXBlOiJk YXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGdlb2pzb246e3ZhbFR5cGU6 ImFueSIsZWRpdFR5cGU6ImNhbGMifSxmZWF0dXJlaWRrZXk6cyh7fSxuLmZl YXR1cmVpZGtleSx7fSksYmVsb3c6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5 cGU6InBsb3QifSx0ZXh0Om4udGV4dCxob3ZlcnRleHQ6bi5ob3ZlcnRleHQs bWFya2VyOntsaW5lOntjb2xvcjpzKHt9LG4ubWFya2VyLmxpbmUuY29sb3Is e2VkaXRUeXBlOiJwbG90In0pLHdpZHRoOnMoe30sbi5tYXJrZXIubGluZS53 aWR0aCx7ZWRpdFR5cGU6InBsb3QifSksZWRpdFR5cGU6ImNhbGMifSxvcGFj aXR5OnMoe30sbi5tYXJrZXIub3BhY2l0eSx7ZWRpdFR5cGU6InBsb3QifSks ZWRpdFR5cGU6ImNhbGMifSxzZWxlY3RlZDp7bWFya2VyOntvcGFjaXR5OnMo e30sbi5zZWxlY3RlZC5tYXJrZXIub3BhY2l0eSx7ZWRpdFR5cGU6InBsb3Qi fSksZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LHVuc2VsZWN0 ZWQ6e21hcmtlcjp7b3BhY2l0eTpzKHt9LG4udW5zZWxlY3RlZC5tYXJrZXIu b3BhY2l0eSx7ZWRpdFR5cGU6InBsb3QifSksZWRpdFR5cGU6InBsb3QifSxl ZGl0VHlwZToicGxvdCJ9LGhvdmVyaW5mbzpuLmhvdmVyaW5mbyxob3ZlcnRl bXBsYXRlOmkoe30se2tleXM6WyJwcm9wZXJ0aWVzIl19KSxzaG93bGVnZW5k OnMoe30sby5zaG93bGVnZW5kLHtkZmx0OiExfSl9LGEoIiIse2NMZXR0ZXI6 InoiLGVkaXRUeXBlT3ZlcnJpZGU6ImNhbGMifSkpfSx7Ii4uLy4uL2NvbXBv bmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9l eHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8u Li9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL2Nob3JvcGxl dGgvYXR0cmlidXRlcyI6OTI0fV0sOTM0OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8u Li9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLG89 dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIikscz10KCIuLi8uLi9saWIv Z2VvanNvbl91dGlscyIpLm1ha2VCbGFuayxsPXQoIi4uLy4uL2xpYi9nZW9f bG9jYXRpb25fdXRpbHMiKTtmdW5jdGlvbiBjKHQpe3ZhciBlLHI9dFswXS50 cmFjZSxuPXIuX29wdHM7aWYoci5zZWxlY3RlZHBvaW50cyl7Zm9yKHZhciBp PW8ubWFrZVNlbGVjdGVkUG9pbnRTdHlsZUZucyhyKSxzPTA7czx0Lmxlbmd0 aDtzKyspe3ZhciBsPXRbc107bC5mT3V0JiYobC5mT3V0LnByb3BlcnRpZXMu bW8yPWkuc2VsZWN0ZWRPcGFjaXR5Rm4obCkpfWU9e3R5cGU6ImlkZW50aXR5 Iixwcm9wZXJ0eToibW8yIn19ZWxzZSBlPWEuaXNBcnJheU9yVHlwZWRBcnJh eShyLm1hcmtlci5vcGFjaXR5KT97dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5 OiJtbyJ9OnIubWFya2VyLm9wYWNpdHk7cmV0dXJuIGEuZXh0ZW5kRmxhdChu LmZpbGwucGFpbnQseyJmaWxsLW9wYWNpdHkiOmV9KSxhLmV4dGVuZEZsYXQo bi5saW5lLnBhaW50LHsibGluZS1vcGFjaXR5IjplfSksbn1lLmV4cG9ydHM9 e2NvbnZlcnQ6ZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxyPSEwPT09 ZS52aXNpYmxlJiYwIT09ZS5fbGVuZ3RoLG89e2xheW91dDp7dmlzaWJpbGl0 eToibm9uZSJ9LHBhaW50Ont9fSx1PXtsYXlvdXQ6e3Zpc2liaWxpdHk6Im5v bmUifSxwYWludDp7fX0saD1lLl9vcHRzPXtmaWxsOm8sbGluZTp1LGdlb2pz b246cygpfTtpZighcilyZXR1cm4gaDt2YXIgZj1sLmV4dHJhY3RUcmFjZUZl YXR1cmUodCk7aWYoIWYpcmV0dXJuIGg7dmFyIHAsZCxnLHY9aS5tYWtlQ29s b3JTY2FsZUZ1bmNGcm9tVHJhY2UoZSksbT1lLm1hcmtlcix5PW0ubGluZXx8 e307YS5pc0FycmF5T3JUeXBlZEFycmF5KG0ub3BhY2l0eSkmJihwPWZ1bmN0 aW9uKHQpe3ZhciBlPXQubW87cmV0dXJuIG4oZSk/K2EuY29uc3RyYWluKGUs MCwxKTowfSksYS5pc0FycmF5T3JUeXBlZEFycmF5KHkuY29sb3IpJiYoZD1m dW5jdGlvbih0KXtyZXR1cm4gdC5tbGN9KSxhLmlzQXJyYXlPclR5cGVkQXJy YXkoeS53aWR0aCkmJihnPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1sd30pO2Zv cih2YXIgeD0wO3g8dC5sZW5ndGg7eCsrKXt2YXIgYj10W3hdLF89Yi5mT3V0 O2lmKF8pe3ZhciB3PV8ucHJvcGVydGllczt3LmZjPXYoYi56KSxwJiYody5t bz1wKGIpKSxkJiYody5tbGM9ZChiKSksZyYmKHcubWx3PWcoYikpLGIuY3Q9 dy5jdCxiLl9wb2x5Z29ucz1sLmZlYXR1cmUycG9seWdvbnMoXyl9fXZhciBr PXA/e3R5cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToibW8ifTptLm9wYWNpdHk7 cmV0dXJuIGEuZXh0ZW5kRmxhdChvLnBhaW50LHsiZmlsbC1jb2xvciI6e3R5 cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToiZmMifSwiZmlsbC1vcGFjaXR5Ijpr fSksYS5leHRlbmRGbGF0KHUucGFpbnQseyJsaW5lLWNvbG9yIjpkP3t0eXBl OiJpZGVudGl0eSIscHJvcGVydHk6Im1sYyJ9OnkuY29sb3IsImxpbmUtd2lk dGgiOmc/e3R5cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToibWx3In06eS53aWR0 aCwibGluZS1vcGFjaXR5IjprfSksby5sYXlvdXQudmlzaWJpbGl0eT0idmlz aWJsZSIsdS5sYXlvdXQudmlzaWJpbGl0eT0idmlzaWJsZSIsaC5nZW9qc29u PXt0eXBlOiJGZWF0dXJlQ29sbGVjdGlvbiIsZmVhdHVyZXM6Zn0sYyh0KSxo fSxjb252ZXJ0T25TZWxlY3Q6Y319LHsiLi4vLi4vY29tcG9uZW50cy9jb2xv cnNjYWxlIjo2MDQsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIu Li8uLi9saWIiOjcxNywiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyI6 NzExLCIuLi8uLi9saWIvZ2VvanNvbl91dGlscyI6NzEyLCJmYXN0LWlzbnVt ZXJpYyI6MjI4fV0sOTM1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9j b2xvcnNjYWxlL2RlZmF1bHRzIiksaT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7ZnVuY3Rpb24gcyhyLGEpe3JldHVy biBuLmNvZXJjZSh0LGUsaSxyLGEpfXZhciBsPXMoImxvY2F0aW9ucyIpLGM9 cygieiIpLHU9cygiZ2VvanNvbiIpO24uaXNBcnJheU9yVHlwZWRBcnJheShs KSYmbC5sZW5ndGgmJm4uaXNBcnJheU9yVHlwZWRBcnJheShjKSYmYy5sZW5n dGgmJigic3RyaW5nIj09dHlwZW9mIHUmJiIiIT09dXx8bi5pc1BsYWluT2Jq ZWN0KHUpKT8ocygiZmVhdHVyZWlka2V5IiksZS5fbGVuZ3RoPU1hdGgubWlu KGwubGVuZ3RoLGMubGVuZ3RoKSxzKCJiZWxvdyIpLHMoInRleHQiKSxzKCJo b3ZlcnRleHQiKSxzKCJob3ZlcnRlbXBsYXRlIikscygibWFya2VyLmxpbmUu d2lkdGgiKSYmcygibWFya2VyLmxpbmUuY29sb3IiKSxzKCJtYXJrZXIub3Bh Y2l0eSIpLGEodCxlLG8scyx7cHJlZml4OiIiLGNMZXR0ZXI6InoifSksbi5j b2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUscykpOmUudmlzaWJsZT0h MX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2 MDIsIi4uLy4uL2xpYiI6NzE3LCIuL2F0dHJpYnV0ZXMiOjkzM31dLDkzNjpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJp YnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9k ZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL2hlYXRtYXAvY29sb3JiYXIiKSxj YWxjOnQoIi4uL2Nob3JvcGxldGgvY2FsYyIpLHBsb3Q6dCgiLi9wbG90Iiks aG92ZXJQb2ludHM6dCgiLi4vY2hvcm9wbGV0aC9ob3ZlciIpLGV2ZW50RGF0 YTp0KCIuLi9jaG9yb3BsZXRoL2V2ZW50X2RhdGEiKSxzZWxlY3RQb2ludHM6 dCgiLi4vY2hvcm9wbGV0aC9zZWxlY3QiKSxzdHlsZU9uU2VsZWN0OmZ1bmN0 aW9uKHQsZSl7ZSYmZVswXS50cmFjZS5fZ2xUcmFjZS51cGRhdGVPblNlbGVj dChlKX0sZ2V0QmVsb3c6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS5nZXRN YXBMYXllcnMoKSxuPXIubGVuZ3RoLTI7bj49MDtuLS0pe3ZhciBhPXJbbl0u aWQ7aWYoInN0cmluZyI9PXR5cGVvZiBhJiYwPT09YS5pbmRleE9mKCJ3YXRl ciIpKWZvcih2YXIgaT1uKzE7aTxyLmxlbmd0aDtpKyspaWYoInN0cmluZyI9 PXR5cGVvZihhPXJbaV0uaWQpJiYtMT09PWEuaW5kZXhPZigicGxvdGx5LSIp KXJldHVybiBhfX0sbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImNob3JvcGxl dGhtYXBib3giLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL21hcGJv eCIpLGNhdGVnb3JpZXM6WyJtYXBib3giLCJnbCIsIm5vT3BhY2l0eSIsInNo b3dMZWdlbmQiXSxtZXRhOntocl9uYW1lOiJjaG9yb3BsZXRoX21hcGJveCJ9 fX0seyIuLi8uLi9wbG90cy9tYXBib3giOjgyMCwiLi4vY2hvcm9wbGV0aC9j YWxjIjo5MjUsIi4uL2Nob3JvcGxldGgvZXZlbnRfZGF0YSI6OTI3LCIuLi9j aG9yb3BsZXRoL2hvdmVyIjo5MjgsIi4uL2Nob3JvcGxldGgvc2VsZWN0Ijo5 MzEsIi4uL2hlYXRtYXAvY29sb3JiYXIiOjEwMDMsIi4vYXR0cmlidXRlcyI6 OTMzLCIuL2RlZmF1bHRzIjo5MzUsIi4vcGxvdCI6OTM3fV0sOTM3OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29udmVydCIp LmNvbnZlcnQsYT10KCIuL2NvbnZlcnQiKS5jb252ZXJ0T25TZWxlY3QsaT10 KCIuLi8uLi9wbG90cy9tYXBib3gvY29uc3RhbnRzIikudHJhY2VMYXllclBy ZWZpeDtmdW5jdGlvbiBvKHQsZSl7dGhpcy50eXBlPSJjaG9yb3BsZXRobWFw Ym94Iix0aGlzLnN1YnBsb3Q9dCx0aGlzLnVpZD1lLHRoaXMuc291cmNlSWQ9 InNvdXJjZS0iK2UsdGhpcy5sYXllckxpc3Q9W1siZmlsbCIsaStlKyItZmls bCJdLFsibGluZSIsaStlKyItbGluZSJdXSx0aGlzLmJlbG93PW51bGx9dmFy IHM9by5wcm90b3R5cGU7cy51cGRhdGU9ZnVuY3Rpb24odCl7dGhpcy5fdXBk YXRlKG4odCkpfSxzLnVwZGF0ZU9uU2VsZWN0PWZ1bmN0aW9uKHQpe3RoaXMu X3VwZGF0ZShhKHQpKX0scy5fdXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRo aXMuc3VicGxvdCxyPXRoaXMubGF5ZXJMaXN0LG49ZS5iZWxvd0xvb2t1cFsi dHJhY2UtIit0aGlzLnVpZF07ZS5tYXAuZ2V0U291cmNlKHRoaXMuc291cmNl SWQpLnNldERhdGEodC5nZW9qc29uKSxuIT09dGhpcy5iZWxvdyYmKHRoaXMu X3JlbW92ZUxheWVycygpLHRoaXMuX2FkZExheWVycyh0LG4pLHRoaXMuYmVs b3c9bik7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBpPXJbYV0s bz1pWzBdLHM9aVsxXSxsPXRbb107ZS5zZXRPcHRpb25zKHMsInNldExheW91 dFByb3BlcnR5IixsLmxheW91dCksInZpc2libGUiPT09bC5sYXlvdXQudmlz aWJpbGl0eSYmZS5zZXRPcHRpb25zKHMsInNldFBhaW50UHJvcGVydHkiLGwu cGFpbnQpfX0scy5fYWRkTGF5ZXJzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBy PXRoaXMuc3VicGxvdCxuPXRoaXMubGF5ZXJMaXN0LGE9dGhpcy5zb3VyY2VJ ZCxpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV0scz1vWzBdLGw9dFtz XTtyLmFkZExheWVyKHt0eXBlOnMsaWQ6b1sxXSxzb3VyY2U6YSxsYXlvdXQ6 bC5sYXlvdXQscGFpbnQ6bC5wYWludH0sZSl9fSxzLl9yZW1vdmVMYXllcnM9 ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5zdWJwbG90Lm1hcCxlPXRoaXMu bGF5ZXJMaXN0LHI9ZS5sZW5ndGgtMTtyPj0wO3ItLSl0LnJlbW92ZUxheWVy KGVbcl1bMV0pfSxzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN1 YnBsb3QubWFwO3RoaXMuX3JlbW92ZUxheWVycygpLHQucmVtb3ZlU291cmNl KHRoaXMuc291cmNlSWQpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cj1lWzBdLnRyYWNlLGE9bmV3IG8odCxyLnVpZCksaT1hLnNvdXJjZUlkLHM9 bihlKSxsPWEuYmVsb3c9dC5iZWxvd0xvb2t1cFsidHJhY2UtIityLnVpZF07 cmV0dXJuIHQubWFwLmFkZFNvdXJjZShpLHt0eXBlOiJnZW9qc29uIixkYXRh OnMuZ2VvanNvbn0pLGEuX2FkZExheWVycyhzLGwpLGVbMF0udHJhY2UuX2ds VHJhY2U9YSxhfX0seyIuLi8uLi9wbG90cy9tYXBib3gvY29uc3RhbnRzIjo4 MTgsIi4vY29udmVydCI6OTM0fV0sOTM4OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2Fs ZS9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRy aWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vbWVzaDNkL2F0 dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxzPXQo Ii4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGw9e3g6e3ZhbFR5cGU6 ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0s eTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJB eGlzVHlwZXMifSx6Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToi Y2FsYytjbGVhckF4aXNUeXBlcyJ9LHU6e3ZhbFR5cGU6ImRhdGFfYXJyYXki LGVkaXRUeXBlOiJjYWxjIn0sdjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSx3Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlw ZToiY2FsYyJ9LHNpemVtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1 ZXM6WyJzY2FsZWQiLCJhYnNvbHV0ZSJdLGVkaXRUeXBlOiJjYWxjIixkZmx0 OiJzY2FsZWQifSxzaXplcmVmOnt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBl OiJjYWxjIixtaW46MH0sYW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIixl ZGl0VHlwZToiY2FsYyIsdmFsdWVzOlsidGlwIiwidGFpbCIsImNtIiwiY2Vu dGVyIl0sZGZsdDoiY20ifSx0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6 IiIsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGV4dDp7dmFs VHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNh bGMifSxob3ZlcnRlbXBsYXRlOmEoe2VkaXRUeXBlOiJjYWxjIn0se2tleXM6 WyJub3JtIl19KSxzaG93bGVnZW5kOnMoe30sby5zaG93bGVnZW5kLHtkZmx0 OiExfSl9O3MobCxuKCIiLHtjb2xvckF0dHI6InUvdi93IG5vcm0iLHNob3dT Y2FsZURmbHQ6ITAsZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSk7WyJvcGFj aXR5IiwibGlnaHRwb3NpdGlvbiIsImxpZ2h0aW5nIl0uZm9yRWFjaChmdW5j dGlvbih0KXtsW3RdPWlbdF19KSxsLmhvdmVyaW5mbz1zKHt9LG8uaG92ZXJp bmZvLHtlZGl0VHlwZToiY2FsYyIsZmxhZ3M6WyJ4IiwieSIsInoiLCJ1Iiwi diIsInciLCJub3JtIiwidGV4dCIsIm5hbWUiXSxkZmx0OiJ4K3kreitub3Jt K3RleHQrbmFtZSJ9KSxsLnRyYW5zZm9ybXM9dm9pZCAwLGUuZXhwb3J0cz1s fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1 OTksIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0cmli dXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4 NDEsIi4uL21lc2gzZC9hdHRyaWJ1dGVzIjoxMDYxfV0sOTM5OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZS9jYWxjIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByPWUudSxhPWUudixpPWUudyxvPU1hdGgubWluKGUueC5sZW5n dGgsZS55Lmxlbmd0aCxlLnoubGVuZ3RoLHIubGVuZ3RoLGEubGVuZ3RoLGku bGVuZ3RoKSxzPS0xLzAsbD0xLzAsYz0wO2M8bztjKyspe3ZhciB1PXJbY10s aD1hW2NdLGY9aVtjXSxwPU1hdGguc3FydCh1KnUraCpoK2YqZik7cz1NYXRo Lm1heChzLHApLGw9TWF0aC5taW4obCxwKX1lLl9sZW49byxlLl9ub3JtTWF4 PXMsbih0LGUse3ZhbHM6W2wsc10sY29udGFpbmVyU3RyOiIiLGNMZXR0ZXI6 ImMifSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjo2 MDB9XSw5NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiZ2wtY29uZTNkIiksYT10KCJnbC1jb25lM2QiKS5jcmVhdGVDb25lTWVz aCxpPXQoIi4uLy4uL2xpYiIpLnNpbXBsZU1hcCxvPXQoIi4uLy4uL2xpYi9n bF9mb3JtYXRfY29sb3IiKS5wYXJzZUNvbG9yU2NhbGUscz10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUiKS5leHRyYWN0T3B0cyxsPXQoIi4uLy4u L3Bsb3RzL2dsM2QvemlwMyIpO2Z1bmN0aW9uIGModCxlKXt0aGlzLnNjZW5l PXQsdGhpcy51aWQ9ZSx0aGlzLm1lc2g9bnVsbCx0aGlzLmRhdGE9bnVsbH12 YXIgdT1jLnByb3RvdHlwZTt1LmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7aWYo dC5vYmplY3Q9PT10aGlzLm1lc2gpe3ZhciBlPXQuaW5kZXg9dC5kYXRhLmlu ZGV4LHI9dGhpcy5kYXRhLnhbZV0sbj10aGlzLmRhdGEueVtlXSxhPXRoaXMu ZGF0YS56W2VdLGk9dGhpcy5kYXRhLnVbZV0sbz10aGlzLmRhdGEudltlXSxz PXRoaXMuZGF0YS53W2VdO3QudHJhY2VDb29yZGluYXRlPVtyLG4sYSxpLG8s cyxNYXRoLnNxcnQoaSppK28qbytzKnMpXTt2YXIgbD10aGlzLmRhdGEuaG92 ZXJ0ZXh0fHx0aGlzLmRhdGEudGV4dDtyZXR1cm4gQXJyYXkuaXNBcnJheShs KSYmdm9pZCAwIT09bFtlXT90LnRleHRMYWJlbD1sW2VdOmwmJih0LnRleHRM YWJlbD1sKSwhMH19O3ZhciBoPXt4YXhpczowLHlheGlzOjEsemF4aXM6Mn0s Zj17dGlwOjEsdGFpbDowLGNtOi4yNSxjZW50ZXI6LjV9LHA9e3RpcDoxLHRh aWw6MSxjbTouNzUsY2VudGVyOi41fTtmdW5jdGlvbiBkKHQsZSl7dmFyIHI9 dC5mdWxsU2NlbmVMYXlvdXQsYT10LmRhdGFTY2FsZSxjPXt9O2Z1bmN0aW9u IHUodCxlKXt2YXIgbj1yW2VdLG89YVtoW2VdXTtyZXR1cm4gaSh0LGZ1bmN0 aW9uKHQpe3JldHVybiBuLmQybCh0KSpvfSl9Yy52ZWN0b3JzPWwodShlLnUs InhheGlzIiksdShlLnYsInlheGlzIiksdShlLncsInpheGlzIiksZS5fbGVu KSxjLnBvc2l0aW9ucz1sKHUoZS54LCJ4YXhpcyIpLHUoZS55LCJ5YXhpcyIp LHUoZS56LCJ6YXhpcyIpLGUuX2xlbik7dmFyIGQ9cyhlKTtjLmNvbG9ybWFw PW8oZSksYy52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHM9W2QubWluL2UuX25vcm1N YXgsZC5tYXgvZS5fbm9ybU1heF0sYy5jb25lT2Zmc2V0PWZbZS5hbmNob3Jd LCJzY2FsZWQiPT09ZS5zaXplbW9kZT9jLmNvbmVTaXplPWUuc2l6ZXJlZnx8 LjU6Yy5jb25lU2l6ZT1lLnNpemVyZWYmJmUuX25vcm1NYXg/ZS5zaXplcmVm L2UuX25vcm1NYXg6LjU7dmFyIGc9bihjKSx2PWUubGlnaHRwb3NpdGlvbjty ZXR1cm4gZy5saWdodFBvc2l0aW9uPVt2Lngsdi55LHYuel0sZy5hbWJpZW50 PWUubGlnaHRpbmcuYW1iaWVudCxnLmRpZmZ1c2U9ZS5saWdodGluZy5kaWZm dXNlLGcuc3BlY3VsYXI9ZS5saWdodGluZy5zcGVjdWxhcixnLnJvdWdobmVz cz1lLmxpZ2h0aW5nLnJvdWdobmVzcyxnLmZyZXNuZWw9ZS5saWdodGluZy5m cmVzbmVsLGcub3BhY2l0eT1lLm9wYWNpdHksZS5fcGFkPXBbZS5hbmNob3Jd KmcudmVjdG9yU2NhbGUqZy5jb25lU2NhbGUqZS5fbm9ybU1heCxnfXUudXBk YXRlPWZ1bmN0aW9uKHQpe3RoaXMuZGF0YT10O3ZhciBlPWQodGhpcy5zY2Vu ZSx0KTt0aGlzLm1lc2gudXBkYXRlKGUpfSx1LmRpc3Bvc2U9ZnVuY3Rpb24o KXt0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5tZXNoKSx0aGlzLm1l c2guZGlzcG9zZSgpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10 LmdscGxvdC5nbCxuPWQodCxlKSxpPWEocixuKSxvPW5ldyBjKHQsZS51aWQp O3JldHVybiBvLm1lc2g9aSxvLmRhdGE9ZSxpLl90cmFjZT1vLHQuZ2xwbG90 LmFkZChpKSxvfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjYw NCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3Ii OjcxNCwiLi4vLi4vcGxvdHMvZ2wzZC96aXAzIjo4MTYsImdsLWNvbmUzZCI6 MjQ1fV0sOTQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNj YWxlL2RlZmF1bHRzIiksaT10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIsbyl7ZnVuY3Rpb24gcyhyLGEpe3JldHVybiBuLmNv ZXJjZSh0LGUsaSxyLGEpfXZhciBsPXMoInUiKSxjPXMoInYiKSx1PXMoInci KSxoPXMoIngiKSxmPXMoInkiKSxwPXMoInoiKTtsJiZsLmxlbmd0aCYmYyYm Yy5sZW5ndGgmJnUmJnUubGVuZ3RoJiZoJiZoLmxlbmd0aCYmZiYmZi5sZW5n dGgmJnAmJnAubGVuZ3RoPyhzKCJzaXplcmVmIikscygic2l6ZW1vZGUiKSxz KCJhbmNob3IiKSxzKCJsaWdodGluZy5hbWJpZW50IikscygibGlnaHRpbmcu ZGlmZnVzZSIpLHMoImxpZ2h0aW5nLnNwZWN1bGFyIikscygibGlnaHRpbmcu cm91Z2huZXNzIikscygibGlnaHRpbmcuZnJlc25lbCIpLHMoImxpZ2h0cG9z aXRpb24ueCIpLHMoImxpZ2h0cG9zaXRpb24ueSIpLHMoImxpZ2h0cG9zaXRp b24ueiIpLGEodCxlLG8scyx7cHJlZml4OiIiLGNMZXR0ZXI6ImMifSkscygi dGV4dCIpLHMoImhvdmVydGV4dCIpLHMoImhvdmVydGVtcGxhdGUiKSxlLl9s ZW5ndGg9bnVsbCk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRz L2NvbG9yc2NhbGUvZGVmYXVsdHMiOjYwMiwiLi4vLi4vbGliIjo3MTcsIi4v YXR0cmlidXRlcyI6OTM4fV0sOTQyOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImNv bmUiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2dsM2QiKSxjYXRl Z29yaWVzOlsiZ2wzZCIsInNob3dMZWdlbmQiXSxhdHRyaWJ1dGVzOnQoIi4v YXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxj b2xvcmJhcjp7bWluOiJjbWluIixtYXg6ImNtYXgifSxjYWxjOnQoIi4vY2Fs YyIpLHBsb3Q6dCgiLi9jb252ZXJ0IiksZXZlbnREYXRhOmZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQubm9ybT1lLnRyYWNlQ29vcmRpbmF0ZVs2XSx0fSxtZXRh Ont9fX0seyIuLi8uLi9wbG90cy9nbDNkIjo4MDUsIi4vYXR0cmlidXRlcyI6 OTM4LCIuL2NhbGMiOjkzOSwiLi9jb252ZXJ0Ijo5NDAsIi4vZGVmYXVsdHMi Ojk0MX1dLDk0MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiKSxhPXQoIi4uL3NjYXR0ZXIv YXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxl L2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZy9h dHRyaWJ1dGVzIikuZGFzaCxzPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmli dXRlcyIpLGw9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsYz10 KCIuLi8uLi9jb25zdGFudHMvZmlsdGVyX29wcyIpLHU9Yy5DT01QQVJJU09O X09QUzIsaD1jLklOVEVSVkFMX09QUyxmPSh0KCIuLi8uLi9jb25zdGFudHMv ZG9jcyIpLkZPUk1BVF9MSU5LLGEubGluZSk7ZS5leHBvcnRzPWwoe3o6bi56 LHg6bi54LHgwOm4ueDAsZHg6bi5keCx5Om4ueSx5MDpuLnkwLGR5Om4uZHks dGV4dDpuLnRleHQsaG92ZXJ0ZXh0Om4uaG92ZXJ0ZXh0LHRyYW5zcG9zZTpu LnRyYW5zcG9zZSx4dHlwZTpuLnh0eXBlLHl0eXBlOm4ueXR5cGUsemhvdmVy Zm9ybWF0Om4uemhvdmVyZm9ybWF0LGhvdmVydGVtcGxhdGU6bi5ob3ZlcnRl bXBsYXRlLGhvdmVyb25nYXBzOm4uaG92ZXJvbmdhcHMsY29ubmVjdGdhcHM6 bCh7fSxuLmNvbm5lY3RnYXBzLHt9KSxmaWxsY29sb3I6e3ZhbFR5cGU6ImNv bG9yIixlZGl0VHlwZToiY2FsYyJ9LGF1dG9jb250b3VyOnt2YWxUeXBlOiJi b29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIixpbXBsaWVkRWRpdHM6 eyJjb250b3Vycy5zdGFydCI6dm9pZCAwLCJjb250b3Vycy5lbmQiOnZvaWQg MCwiY29udG91cnMuc2l6ZSI6dm9pZCAwfX0sbmNvbnRvdXJzOnt2YWxUeXBl OiJpbnRlZ2VyIixkZmx0OjE1LG1pbjoxLGVkaXRUeXBlOiJjYWxjIn0sY29u dG91cnM6e3R5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxl dmVscyIsImNvbnN0cmFpbnQiXSxkZmx0OiJsZXZlbHMiLGVkaXRUeXBlOiJj YWxjIn0sc3RhcnQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGVkaXRU eXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b2NvbnRvdXIiOiExfX0s ZW5kOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxlZGl0VHlwZToicGxv dCIsaW1wbGllZEVkaXRzOnsiXmF1dG9jb250b3VyIjohMX19LHNpemU6e3Zh bFR5cGU6Im51bWJlciIsZGZsdDpudWxsLG1pbjowLGVkaXRUeXBlOiJwbG90 IixpbXBsaWVkRWRpdHM6eyJeYXV0b2NvbnRvdXIiOiExfX0sY29sb3Jpbmc6 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZpbGwiLCJoZWF0bWFw IiwibGluZXMiLCJub25lIl0sZGZsdDoiZmlsbCIsZWRpdFR5cGU6ImNhbGMi fSxzaG93bGluZXM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5 cGU6InBsb3QifSxzaG93bGFiZWxzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0 OiExLGVkaXRUeXBlOiJwbG90In0sbGFiZWxmb250OnMoe2VkaXRUeXBlOiJw bG90Iixjb2xvckVkaXRUeXBlOiJzdHlsZSJ9KSxsYWJlbGZvcm1hdDp7dmFs VHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJwbG90In0sb3BlcmF0 aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6W10uY29uY2F0KHUp LmNvbmNhdChoKSxkZmx0OiI9IixlZGl0VHlwZToiY2FsYyJ9LHZhbHVlOnt2 YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBl OiJjYWxjIixpbXBsaWVkRWRpdHM6e2F1dG9jb250b3VyOiExfX0sbGluZTp7 Y29sb3I6bCh7fSxmLmNvbG9yLHtlZGl0VHlwZToic3R5bGUrY29sb3JiYXJz In0pLHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJz dHlsZStjb2xvcmJhcnMifSxkYXNoOm8sc21vb3RoaW5nOmwoe30sZi5zbW9v dGhpbmcse30pLGVkaXRUeXBlOiJwbG90In19LGkoIiIse2NMZXR0ZXI6Inoi LGF1dG9Db2xvckRmbHQ6ITEsZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSl9 LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5 OSwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiOjYxMiwi Li4vLi4vY29uc3RhbnRzL2RvY3MiOjY4OCwiLi4vLi4vY29uc3RhbnRzL2Zp bHRlcl9vcHMiOjY4OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9w bG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi4vaGVhdG1hcC9hdHRyaWJ1 dGVzIjoxZTMsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMH1dLDk0NDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUiKSxhPXQoIi4uL2hlYXRtYXAvY2FsYyIp LGk9dCgiLi9zZXRfY29udG91cnMiKSxvPXQoIi4vZW5kX3BsdXMiKTtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1hKHQsZSkscz1yWzBdLno7aShl LHMpO3ZhciBsLGM9ZS5jb250b3Vycyx1PW4uZXh0cmFjdE9wdHMoZSk7aWYo ImhlYXRtYXAiPT09Yy5jb2xvcmluZyYmdS5hdXRvJiYhMT09PWUuYXV0b2Nv bnRvdXIpe3ZhciBoPWMuc3RhcnQsZj1vKGMpLHA9Yy5zaXplfHwxLGQ9TWF0 aC5mbG9vcigoZi1oKS9wKSsxO2lzRmluaXRlKHApfHwocD0xLGQ9MSk7dmFy IGc9aC1wLzI7bD1bZyxnK2QqcF19ZWxzZSBsPXM7cmV0dXJuIG4uY2FsYyh0 LGUse3ZhbHM6bCxjTGV0dGVyOiJ6In0pLHJ9fSx7Ii4uLy4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZSI6NjA0LCIuLi9oZWF0bWFwL2NhbGMiOjEwMDEsIi4v ZW5kX3BsdXMiOjk1NCwiLi9zZXRfY29udG91cnMiOjk2Mn1dLDk0NTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXt2YXIgcixuPXRbMF0sYT1uLno7c3dpdGNoKGUudHlwZSl7Y2FzZSJs ZXZlbHMiOnZhciBpPU1hdGgubWluKGFbMF1bMF0sYVswXVsxXSk7Zm9yKHI9 MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89dFtyXTtvLnByZWZpeEJvdW5kYXJ5 PSFvLmVkZ2VwYXRocy5sZW5ndGgmJihpPm8ubGV2ZWx8fG8uc3RhcnRzLmxl bmd0aCYmaT09PW8ubGV2ZWwpfWJyZWFrO2Nhc2UiY29uc3RyYWludCI6aWYo bi5wcmVmaXhCb3VuZGFyeT0hMSxuLmVkZ2VwYXRocy5sZW5ndGgpcmV0dXJu O3ZhciBzPW4ueC5sZW5ndGgsbD1uLnkubGVuZ3RoLGM9LTEvMCx1PTEvMDtm b3Iocj0wO3I8bDtyKyspdT1NYXRoLm1pbih1LGFbcl1bMF0pLHU9TWF0aC5t aW4odSxhW3JdW3MtMV0pLGM9TWF0aC5tYXgoYyxhW3JdWzBdKSxjPU1hdGgu bWF4KGMsYVtyXVtzLTFdKTtmb3Iocj0xO3I8cy0xO3IrKyl1PU1hdGgubWlu KHUsYVswXVtyXSksdT1NYXRoLm1pbih1LGFbbC0xXVtyXSksYz1NYXRoLm1h eChjLGFbMF1bcl0pLGM9TWF0aC5tYXgoYyxhW2wtMV1bcl0pO3ZhciBoLGYs cD1lLnZhbHVlO3N3aXRjaChlLl9vcGVyYXRpb24pe2Nhc2UiPiI6cD5jJiYo bi5wcmVmaXhCb3VuZGFyeT0hMCk7YnJlYWs7Y2FzZSI8IjoocDx1fHxuLnN0 YXJ0cy5sZW5ndGgmJnA9PT11KSYmKG4ucHJlZml4Qm91bmRhcnk9ITApO2Jy ZWFrO2Nhc2UiW10iOmg9TWF0aC5taW4ocFswXSxwWzFdKSwoKGY9TWF0aC5t YXgocFswXSxwWzFdKSk8dXx8aD5jfHxuLnN0YXJ0cy5sZW5ndGgmJmY9PT11 KSYmKG4ucHJlZml4Qm91bmRhcnk9ITApO2JyZWFrO2Nhc2UiXVsiOmg9TWF0 aC5taW4ocFswXSxwWzFdKSxmPU1hdGgubWF4KHBbMF0scFsxXSksaDx1JiZm PmMmJihuLnByZWZpeEJvdW5kYXJ5PSEwKX19fX0se31dLDk0NjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25l bnRzL2NvbG9yc2NhbGUiKSxhPXQoIi4vbWFrZV9jb2xvcl9tYXAiKSxpPXQo Ii4vZW5kX3BsdXMiKTtlLmV4cG9ydHM9e21pbjoiem1pbiIsbWF4OiJ6bWF4 IixjYWxjOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbz1lLmNvbnRvdXJzLHM9ZS5s aW5lLGw9by5zaXplfHwxLGM9by5jb2xvcmluZyx1PWEoZSx7aXNDb2xvcmJh cjohMH0pO2lmKCJoZWF0bWFwIj09PWMpe3ZhciBoPW4uZXh0cmFjdE9wdHMo ZSk7ci5fZmlsbGdyYWRpZW50PWgucmV2ZXJzZXNjYWxlP24uZmxpcFNjYWxl KGguY29sb3JzY2FsZSk6aC5jb2xvcnNjYWxlLHIuX3pyYW5nZT1baC5taW4s aC5tYXhdfWVsc2UiZmlsbCI9PT1jJiYoci5fZmlsbGNvbG9yPXUpO3IuX2xp bmU9e2NvbG9yOiJsaW5lcyI9PT1jP3U6cy5jb2xvcix3aWR0aDohMSE9PW8u c2hvd2xpbmVzP3Mud2lkdGg6MCxkYXNoOnMuZGFzaH0sci5fbGV2ZWxzPXtz dGFydDpvLnN0YXJ0LGVuZDppKG8pLHNpemU6bH19fX0seyIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi9lbmRfcGx1cyI6OTU0LCIuL21h a2VfY29sb3JfbWFwIjo5NTl9XSw5NDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPXtCT1RUT01TVEFSVDpbMSw5LDEzLDEwNCw3 MTNdLFRPUFNUQVJUOls0LDYsNywxMDQsNzEzXSxMRUZUU1RBUlQ6WzgsMTIs MTQsMjA4LDExMTRdLFJJR0hUU1RBUlQ6WzIsMywxMSwyMDgsMTExNF0sTkVX REVMVEE6W251bGwsWy0xLDBdLFswLC0xXSxbLTEsMF0sWzEsMF0sbnVsbCxb MCwtMV0sWy0xLDBdLFswLDFdLFswLDFdLG51bGwsWzAsMV0sWzEsMF0sWzEs MF0sWzAsLTFdXSxDSE9PU0VTQURETEU6ezEwNDpbNCwxXSwyMDg6WzIsOF0s NzEzOls3LDEzXSwxMTE0OlsxMSwxNF19LFNBRERMRVJFTUFJTkRFUjp7MTo0 LDI6OCw0OjEsNzoxMyw4OjIsMTE6MTQsMTM6NywxNDoxMX0sTEFCRUxESVNU QU5DRToyLExBQkVMSU5DUkVBU0U6MTAsTEFCRUxNSU46MyxMQUJFTE1BWDox MCxMQUJFTE9QVElNSVpFUjp7RURHRUNPU1Q6MSxBTkdMRUNPU1Q6MSxORUlH SEJPUkNPU1Q6NSxTQU1FTEVWRUxGQUNUT1I6MTAsU0FNRUxFVkVMRElTVEFO Q0U6NSxNQVhDT1NUOjEwMCxJTklUSUFMU0VBUkNIUE9JTlRTOjEwLElURVJB VElPTlM6NX19fSx7fV0sOTQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuL2xhYmVsX2Rl ZmF1bHRzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz1pLmFk ZE9wYWNpdHkscz1pLm9wYWNpdHksbD10KCIuLi8uLi9jb25zdGFudHMvZmls dGVyX29wcyIpLGM9bC5DT05TVFJBSU5UX1JFRFVDVElPTix1PWwuQ09NUEFS SVNPTl9PUFMyO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpLGwsaCl7dmFy IGYscCxkLGc9ZS5jb250b3Vycyx2PXIoImNvbnRvdXJzLm9wZXJhdGlvbiIp OyhnLl9vcGVyYXRpb249Y1t2XSxmdW5jdGlvbih0LGUpe3ZhciByOy0xPT09 dS5pbmRleE9mKGUub3BlcmF0aW9uKT8odCgiY29udG91cnMudmFsdWUiLFsw LDFdKSxBcnJheS5pc0FycmF5KGUudmFsdWUpP2UudmFsdWUubGVuZ3RoPjI/ ZS52YWx1ZT1lLnZhbHVlLnNsaWNlKDIpOjA9PT1lLmxlbmd0aD9lLnZhbHVl PVswLDFdOmUubGVuZ3RoPDI/KHI9cGFyc2VGbG9hdChlLnZhbHVlWzBdKSxl LnZhbHVlPVtyLHIrMV0pOmUudmFsdWU9W3BhcnNlRmxvYXQoZS52YWx1ZVsw XSkscGFyc2VGbG9hdChlLnZhbHVlWzFdKV06bihlLnZhbHVlKSYmKHI9cGFy c2VGbG9hdChlLnZhbHVlKSxlLnZhbHVlPVtyLHIrMV0pKToodCgiY29udG91 cnMudmFsdWUiLDApLG4oZS52YWx1ZSl8fChBcnJheS5pc0FycmF5KGUudmFs dWUpP2UudmFsdWU9cGFyc2VGbG9hdChlLnZhbHVlWzBdKTplLnZhbHVlPTAp KX0ocixnKSwiPSI9PT12P2Y9Zy5zaG93bGluZXM9ITA6KGY9cigiY29udG91 cnMuc2hvd2xpbmVzIiksZD1yKCJmaWxsY29sb3IiLG8oKHQubGluZXx8e30p LmNvbG9yfHxsLC41KSkpLGYpJiYocD1yKCJsaW5lLmNvbG9yIixkJiZzKGQp P28oZS5maWxsY29sb3IsMSk6bCkscigibGluZS53aWR0aCIsMikscigibGlu ZS5kYXNoIikpO3IoImxpbmUuc21vb3RoaW5nIiksYShyLGkscCxoKX19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb25zdGFudHMv ZmlsdGVyX29wcyI6Njg5LCIuL2xhYmVsX2RlZmF1bHRzIjo5NTgsImZhc3Qt aXNudW1lcmljIjoyMjh9XSw5NDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vY29uc3RhbnRzL2ZpbHRlcl9vcHMiKSxh PXQoImZhc3QtaXNudW1lcmljIik7ZnVuY3Rpb24gaSh0LGUpe3ZhciByLGk9 QXJyYXkuaXNBcnJheShlKTtmdW5jdGlvbiBvKHQpe3JldHVybiBhKHQpPyt0 Om51bGx9cmV0dXJuLTEhPT1uLkNPTVBBUklTT05fT1BTMi5pbmRleE9mKHQp P3I9byhpP2VbMF06ZSk6LTEhPT1uLklOVEVSVkFMX09QUy5pbmRleE9mKHQp P3I9aT9bbyhlWzBdKSxvKGVbMV0pXTpbbyhlKSxvKGUpXTotMSE9PW4uU0VU X09QUy5pbmRleE9mKHQpJiYocj1pP2UubWFwKG8pOltvKGUpXSkscn1mdW5j dGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbihlKXtlPWkodCxlKTt2YXIgcj1N YXRoLm1pbihlWzBdLGVbMV0pLG49TWF0aC5tYXgoZVswXSxlWzFdKTtyZXR1 cm57c3RhcnQ6cixlbmQ6bixzaXplOm4tcn19fWZ1bmN0aW9uIHModCl7cmV0 dXJuIGZ1bmN0aW9uKGUpe3JldHVybntzdGFydDplPWkodCxlKSxlbmQ6MS8w LHNpemU6MS8wfX19ZS5leHBvcnRzPXsiW10iOm8oIltdIiksIl1bIjpvKCJd WyIpLCI+IjpzKCI+IiksIjwiOnMoIjwiKSwiPSI6cygiPSIpfX0seyIuLi8u Li9jb25zdGFudHMvZmlsdGVyX29wcyI6Njg5LCJmYXN0LWlzbnVtZXJpYyI6 MjI4fV0sOTUwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUscixuKXt2YXIgYT1uKCJjb250b3Vycy5zdGFy dCIpLGk9bigiY29udG91cnMuZW5kIiksbz0hMT09PWF8fCExPT09aSxzPXIo ImNvbnRvdXJzLnNpemUiKTshKG8/ZS5hdXRvY29udG91cj0hMDpyKCJhdXRv Y29udG91ciIsITEpKSYmc3x8cigibmNvbnRvdXJzIil9fSx7fV0sOTUxOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp YiIpO2Z1bmN0aW9uIGEodCl7cmV0dXJuIG4uZXh0ZW5kRmxhdCh7fSx0LHtl ZGdlcGF0aHM6bi5leHRlbmREZWVwKFtdLHQuZWRnZXBhdGhzKSxwYXRoczpu LmV4dGVuZERlZXAoW10sdC5wYXRocyksc3RhcnRzOm4uZXh0ZW5kRGVlcChb XSx0LnN0YXJ0cyl9KX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixp LG8scz1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXZlcnNlKCl9LGw9ZnVuY3Rp b24odCl7cmV0dXJuIHR9O3N3aXRjaChlKXtjYXNlIj0iOmNhc2UiPCI6cmV0 dXJuIHQ7Y2FzZSI+Ijpmb3IoMSE9PXQubGVuZ3RoJiZuLndhcm4oIkNvbnRv dXIgZGF0YSBpbnZhbGlkIGZvciB0aGUgc3BlY2lmaWVkIGluZXF1YWxpdHkg b3BlcmF0aW9uLiIpLGk9dFswXSxyPTA7cjxpLmVkZ2VwYXRocy5sZW5ndGg7 cisrKWkuZWRnZXBhdGhzW3JdPXMoaS5lZGdlcGF0aHNbcl0pO2ZvcihyPTA7 cjxpLnBhdGhzLmxlbmd0aDtyKyspaS5wYXRoc1tyXT1zKGkucGF0aHNbcl0p O2ZvcihyPTA7cjxpLnN0YXJ0cy5sZW5ndGg7cisrKWkuc3RhcnRzW3JdPXMo aS5zdGFydHNbcl0pO3JldHVybiB0O2Nhc2UiXVsiOnZhciBjPXM7cz1sLGw9 YztjYXNlIltdIjpmb3IoMiE9PXQubGVuZ3RoJiZuLndhcm4oIkNvbnRvdXIg ZGF0YSBpbnZhbGlkIGZvciB0aGUgc3BlY2lmaWVkIGluZXF1YWxpdHkgcmFu Z2Ugb3BlcmF0aW9uLiIpLGk9YSh0WzBdKSxvPWEodFsxXSkscj0wO3I8aS5l ZGdlcGF0aHMubGVuZ3RoO3IrKylpLmVkZ2VwYXRoc1tyXT1zKGkuZWRnZXBh dGhzW3JdKTtmb3Iocj0wO3I8aS5wYXRocy5sZW5ndGg7cisrKWkucGF0aHNb cl09cyhpLnBhdGhzW3JdKTtmb3Iocj0wO3I8aS5zdGFydHMubGVuZ3RoO3Ir KylpLnN0YXJ0c1tyXT1zKGkuc3RhcnRzW3JdKTtmb3IoO28uZWRnZXBhdGhz Lmxlbmd0aDspaS5lZGdlcGF0aHMucHVzaChsKG8uZWRnZXBhdGhzLnNoaWZ0 KCkpKTtmb3IoO28ucGF0aHMubGVuZ3RoOylpLnBhdGhzLnB1c2gobChvLnBh dGhzLnNoaWZ0KCkpKTtmb3IoO28uc3RhcnRzLmxlbmd0aDspaS5zdGFydHMu cHVzaChsKG8uc3RhcnRzLnNoaWZ0KCkpKTtyZXR1cm5baV19fX0seyIuLi8u Li9saWIiOjcxN31dLDk1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uL2hlYXRtYXAveHl6X2Rl ZmF1bHRzIiksaT10KCIuL2NvbnN0cmFpbnRfZGVmYXVsdHMiKSxvPXQoIi4v Y29udG91cnNfZGVmYXVsdHMiKSxzPXQoIi4vc3R5bGVfZGVmYXVsdHMiKSxs PXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixj KXtmdW5jdGlvbiB1KHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxsLHIsYSl9 aWYoYSh0LGUsdSxjKSl7dSgidGV4dCIpLHUoImhvdmVydGV4dCIpLHUoImhv dmVydGVtcGxhdGUiKSx1KCJob3Zlcm9uZ2FwcyIpO3ZhciBoPSJjb25zdHJh aW50Ij09PXUoImNvbnRvdXJzLnR5cGUiKTt1KCJjb25uZWN0Z2FwcyIsbi5p c0FycmF5MUQoZS56KSksaD9pKHQsZSx1LGMscik6KG8odCxlLHUsZnVuY3Rp b24ocil7cmV0dXJuIG4uY29lcmNlMih0LGUsbCxyKX0pLHModCxlLHUsYykp fWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjcxNywiLi4vaGVh dG1hcC94eXpfZGVmYXVsdHMiOjEwMTQsIi4vYXR0cmlidXRlcyI6OTQzLCIu L2NvbnN0cmFpbnRfZGVmYXVsdHMiOjk0OCwiLi9jb250b3Vyc19kZWZhdWx0 cyI6OTUwLCIuL3N0eWxlX2RlZmF1bHRzIjo5NjR9XSw5NTM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10 KCIuL2NvbnN0cmFpbnRfbWFwcGluZyIpLGk9dCgiLi9lbmRfcGx1cyIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBvPSJjb25zdHJhaW50 Ij09PXQudHlwZT9hW3QuX29wZXJhdGlvbl0odC52YWx1ZSk6dCxzPW8uc2l6 ZSxsPVtdLGM9aShvKSx1PXIudHJhY2UuX2NhcnBldFRyYWNlLGg9dT97eGF4 aXM6dS5hYXhpcyx5YXhpczp1LmJheGlzLHg6ci5hLHk6ci5ifTp7eGF4aXM6 ZS54YXhpcyx5YXhpczplLnlheGlzLHg6ci54LHk6ci55fSxmPW8uc3RhcnQ7 ZjxjO2YrPXMpaWYobC5wdXNoKG4uZXh0ZW5kRmxhdCh7bGV2ZWw6Zixjcm9z c2luZ3M6e30sc3RhcnRzOltdLGVkZ2VwYXRoczpbXSxwYXRoczpbXSx6OnIu eixzbW9vdGhpbmc6ci50cmFjZS5saW5lLnNtb290aGluZ30saCkpLGwubGVu Z3RoPjFlMyl7bi53YXJuKCJUb28gbWFueSBjb250b3VycywgY2xpcHBpbmcg YXQgMTAwMCIsdCk7YnJlYWt9cmV0dXJuIGx9fSx7Ii4uLy4uL2xpYiI6NzE3 LCIuL2NvbnN0cmFpbnRfbWFwcGluZyI6OTQ5LCIuL2VuZF9wbHVzIjo5NTR9 XSw5NTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PWZ1bmN0aW9uKHQpe3JldHVybiB0LmVuZCt0LnNpemUvMWU2fX0se31dLDk1 NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKSxhPXQoIi4vY29uc3RhbnRzIik7ZnVuY3Rpb24gaSh0LGUscixu KXtyZXR1cm4gTWF0aC5hYnModFswXS1lWzBdKTxyJiZNYXRoLmFicyh0WzFd LWVbMV0pPG59ZnVuY3Rpb24gbyh0LGUscixvLGwpe3ZhciBjLHU9ZS5qb2lu KCIsIiksaD10LmNyb3NzaW5nc1t1XSxmPWZ1bmN0aW9uKHQsZSxyKXt2YXIg bj0wLGk9MDt0PjIwJiZlPzIwOD09PXR8fDExMTQ9PT10P249MD09PXJbMF0/ MTotMTppPTA9PT1yWzFdPzE6LTE6LTEhPT1hLkJPVFRPTVNUQVJULmluZGV4 T2YodCk/aT0xOi0xIT09YS5MRUZUU1RBUlQuaW5kZXhPZih0KT9uPTE6LTEh PT1hLlRPUFNUQVJULmluZGV4T2YodCk/aT0tMTpuPS0xO3JldHVybltuLGld fShoLHIsZSkscD1bcyh0LGUsWy1mWzBdLC1mWzFdXSldLGQ9dC56Lmxlbmd0 aCxnPXQuelswXS5sZW5ndGgsdj1lLnNsaWNlKCksbT1mLnNsaWNlKCk7Zm9y KGM9MDtjPDFlNDtjKyspe2lmKGg+MjA/KGg9YS5DSE9PU0VTQURETEVbaF1b KGZbMF18fGZbMV0pPDA/MDoxXSx0LmNyb3NzaW5nc1t1XT1hLlNBRERMRVJF TUFJTkRFUltoXSk6ZGVsZXRlIHQuY3Jvc3NpbmdzW3VdLCEoZj1hLk5FV0RF TFRBW2hdKSl7bi5sb2coIkZvdW5kIGJhZCBtYXJjaGluZyBpbmRleDoiLGgs ZSx0LmxldmVsKTticmVha31wLnB1c2gocyh0LGUsZikpLGVbMF0rPWZbMF0s ZVsxXSs9ZlsxXSx1PWUuam9pbigiLCIpLGkocFtwLmxlbmd0aC0xXSxwW3Au bGVuZ3RoLTJdLG8sbCkmJnAucG9wKCk7dmFyIHk9ZlswXSYmKGVbMF08MHx8 ZVswXT5nLTIpfHxmWzFdJiYoZVsxXTwwfHxlWzFdPmQtMik7aWYoZVswXT09 PXZbMF0mJmVbMV09PT12WzFdJiZmWzBdPT09bVswXSYmZlsxXT09PW1bMV18 fHImJnkpYnJlYWs7aD10LmNyb3NzaW5nc1t1XX0xZTQ9PT1jJiZuLmxvZygi SW5maW5pdGUgbG9vcCBpbiBjb250b3VyPyIpO3ZhciB4LGIsXyx3LGssVCxN LEEsUyxFLEwsQyxQLE8seixJPWkocFswXSxwW3AubGVuZ3RoLTFdLG8sbCks RD0wLFI9LjIqdC5zbW9vdGhpbmcsRj1bXSxCPTA7Zm9yKGM9MTtjPHAubGVu Z3RoO2MrKylDPXBbY10sUD1wW2MtMV0sTz12b2lkIDAsej12b2lkIDAsTz1D WzJdLVBbMl0sej1DWzNdLVBbM10sRCs9TT1NYXRoLnNxcnQoTypPK3oqeiks Ri5wdXNoKE0pO3ZhciBOPUQvRi5sZW5ndGgqUjtmdW5jdGlvbiBqKHQpe3Jl dHVybiBwW3QlcC5sZW5ndGhdfWZvcihjPXAubGVuZ3RoLTI7Yz49QjtjLS0p aWYoKHg9RltjXSk8Til7Zm9yKF89MCxiPWMtMTtiPj1CJiZ4K0ZbYl08Tjti LS0peCs9RltiXTtpZihJJiZjPT09cC5sZW5ndGgtMilmb3IoXz0wO188YiYm eCtGW19dPE47XysrKXgrPUZbX107az1jLWIrXysxLFQ9TWF0aC5mbG9vcigo YytiK18rMikvMiksdz1JfHxjIT09cC5sZW5ndGgtMj9JfHwtMSE9PWI/ayUy P2ooVCk6WyhqKFQpWzBdK2ooVCsxKVswXSkvMiwoaihUKVsxXStqKFQrMSlb MV0pLzJdOnBbMF06cFtwLmxlbmd0aC0xXSxwLnNwbGljZShiKzEsYy1iKzEs dyksYz1iKzEsXyYmKEI9XyksSSYmKGM9PT1wLmxlbmd0aC0yP3BbX109cFtw Lmxlbmd0aC0xXTowPT09YyYmKHBbcC5sZW5ndGgtMV09cFswXSkpfWZvcihw LnNwbGljZSgwLEIpLGM9MDtjPHAubGVuZ3RoO2MrKylwW2NdLmxlbmd0aD0y O2lmKCEocC5sZW5ndGg8MikpaWYoSSlwLnBvcCgpLHQucGF0aHMucHVzaChw KTtlbHNle3J8fG4ubG9nKCJVbmNsb3NlZCBpbnRlcmlvciBjb250b3VyPyIs dC5sZXZlbCx2LmpvaW4oIiwiKSxwLmpvaW4oIkwiKSk7dmFyIFY9ITE7Zm9y KEE9MDtBPHQuZWRnZXBhdGhzLmxlbmd0aDtBKyspaWYoRT10LmVkZ2VwYXRo c1tBXSwhViYmaShFWzBdLHBbcC5sZW5ndGgtMV0sbyxsKSl7cC5wb3AoKSxW PSEwO3ZhciBVPSExO2ZvcihTPTA7Uzx0LmVkZ2VwYXRocy5sZW5ndGg7Uysr KWlmKGkoKEw9dC5lZGdlcGF0aHNbU10pW0wubGVuZ3RoLTFdLHBbMF0sbyxs KSl7VT0hMCxwLnNoaWZ0KCksdC5lZGdlcGF0aHMuc3BsaWNlKEEsMSksUz09 PUE/dC5wYXRocy5wdXNoKHAuY29uY2F0KEwpKTooUz5BJiZTLS0sdC5lZGdl cGF0aHNbU109TC5jb25jYXQocCxFKSk7YnJlYWt9VXx8KHQuZWRnZXBhdGhz W0FdPXAuY29uY2F0KEUpKX1mb3IoQT0wO0E8dC5lZGdlcGF0aHMubGVuZ3Ro JiYhVjtBKyspaSgoRT10LmVkZ2VwYXRoc1tBXSlbRS5sZW5ndGgtMV0scFsw XSxvLGwpJiYocC5zaGlmdCgpLHQuZWRnZXBhdGhzW0FdPUUuY29uY2F0KHAp LFY9ITApO1Z8fHQuZWRnZXBhdGhzLnB1c2gocCl9fWZ1bmN0aW9uIHModCxl LHIpe3ZhciBuPWVbMF0rTWF0aC5tYXgoclswXSwwKSxhPWVbMV0rTWF0aC5t YXgoclsxXSwwKSxpPXQuelthXVtuXSxvPXQueGF4aXMscz10LnlheGlzO2lm KHJbMV0pe3ZhciBsPSh0LmxldmVsLWkpLyh0LnpbYV1bbisxXS1pKTtyZXR1 cm5bby5jMnAoKDEtbCkqdC54W25dK2wqdC54W24rMV0sITApLHMuYzJwKHQu eVthXSwhMCksbitsLGFdfXZhciBjPSh0LmxldmVsLWkpLyh0LnpbYSsxXVtu XS1pKTtyZXR1cm5bby5jMnAodC54W25dLCEwKSxzLmMycCgoMS1jKSp0Lnlb YV0rYyp0LnlbYSsxXSwhMCksbixhK2NdfWUuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7dmFyIGEsaSxzLGw7Zm9yKGU9ZXx8LjAxLHI9cnx8LjAxLGk9MDtp PHQubGVuZ3RoO2krKyl7Zm9yKHM9dFtpXSxsPTA7bDxzLnN0YXJ0cy5sZW5n dGg7bCsrKW8ocyxzLnN0YXJ0c1tsXSwiZWRnZSIsZSxyKTtmb3IoYT0wO09i amVjdC5rZXlzKHMuY3Jvc3NpbmdzKS5sZW5ndGgmJmE8MWU0OylhKyssbyhz LE9iamVjdC5rZXlzKHMuY3Jvc3NpbmdzKVswXS5zcGxpdCgiLCIpLm1hcChO dW1iZXIpLHZvaWQgMCxlLHIpOzFlND09PWEmJm4ubG9nKCJJbmZpbml0ZSBs b29wIGluIGNvbnRvdXI/Iil9fX0seyIuLi8uLi9saWIiOjcxNywiLi9jb25z dGFudHMiOjk0N31dLDk1NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksYT10KCIuLi9o ZWF0bWFwL2hvdmVyIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGksbyl7 dmFyIHM9YSh0LGUscixpLG8sITApO3JldHVybiBzJiZzLmZvckVhY2goZnVu Y3Rpb24odCl7dmFyIGU9dC50cmFjZTsiY29uc3RyYWludCI9PT1lLmNvbnRv dXJzLnR5cGUmJihlLmZpbGxjb2xvciYmbi5vcGFjaXR5KGUuZmlsbGNvbG9y KT90LmNvbG9yPW4uYWRkT3BhY2l0eShlLmZpbGxjb2xvciwxKTplLmNvbnRv dXJzLnNob3dsaW5lcyYmbi5vcGFjaXR5KGUubGluZS5jb2xvcikmJih0LmNv bG9yPW4uYWRkT3BhY2l0eShlLmxpbmUuY29sb3IsMSkpKX0pLHN9fSx7Ii4u Ly4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vaGVhdG1hcC9ob3ZlciI6 MTAwN31dLDk1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVm YXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIikscGxvdDp0 KCIuL3Bsb3QiKS5wbG90LHN0eWxlOnQoIi4vc3R5bGUiKSxjb2xvcmJhcjp0 KCIuL2NvbG9yYmFyIiksaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLG1vZHVs ZVR5cGU6InRyYWNlIixuYW1lOiJjb250b3VyIixiYXNlUGxvdE1vZHVsZTp0 KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVz aWFuIiwic3ZnIiwiMmRNYXAiLCJjb250b3VyIiwic2hvd0xlZ2VuZCJdLG1l dGE6e319fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Nzc2LCIuL2F0dHJp YnV0ZXMiOjk0MywiLi9jYWxjIjo5NDQsIi4vY29sb3JiYXIiOjk0NiwiLi9k ZWZhdWx0cyI6OTUyLCIuL2hvdmVyIjo5NTYsIi4vcGxvdCI6OTYxLCIuL3N0 eWxlIjo5NjN9XSw5NTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy LGEpe2lmKGF8fChhPXt9KSx0KCJjb250b3Vycy5zaG93bGFiZWxzIikpe3Zh ciBpPWUuZm9udDtuLmNvZXJjZUZvbnQodCwiY29udG91cnMubGFiZWxmb250 Iix7ZmFtaWx5OmkuZmFtaWx5LHNpemU6aS5zaXplLGNvbG9yOnJ9KSx0KCJj b250b3Vycy5sYWJlbGZvcm1hdCIpfSExIT09YS5oYXNIb3ZlciYmdCgiemhv dmVyZm9ybWF0Iil9fSx7Ii4uLy4uL2xpYiI6NzE3fV0sOTU5OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8u Li9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSxpPXQoIi4vZW5kX3BsdXMiKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250b3VycyxyPWUuc3Rh cnQsbz1pKGUpLHM9ZS5zaXplfHwxLGw9TWF0aC5mbG9vcigoby1yKS9zKSsx LGM9ImxpbmVzIj09PWUuY29sb3Jpbmc/MDoxLHU9YS5leHRyYWN0T3B0cyh0 KTtpc0Zpbml0ZShzKXx8KHM9MSxsPTEpO3ZhciBoLGYscD11LnJldmVyc2Vz Y2FsZT9hLmZsaXBTY2FsZSh1LmNvbG9yc2NhbGUpOnUuY29sb3JzY2FsZSxk PXAubGVuZ3RoLGc9bmV3IEFycmF5KGQpLHY9bmV3IEFycmF5KGQpO2lmKCJo ZWF0bWFwIj09PWUuY29sb3Jpbmcpe3ZhciBtPXUubWluLHk9dS5tYXg7Zm9y KGY9MDtmPGQ7ZisrKWg9cFtmXSxnW2ZdPWhbMF0qKHktbSkrbSx2W2ZdPWhb MV07dmFyIHg9bi5leHRlbnQoW20seSxlLnN0YXJ0LGUuc3RhcnQrcyoobC0x KV0pLGI9eFttPHk/MDoxXSxfPXhbbTx5PzE6MF07YiE9PW0mJihnLnNwbGlj ZSgwLDAsYiksdi5zcGxpY2UoMCwwLHZbMF0pKSxfIT09eSYmKGcucHVzaChf KSx2LnB1c2godlt2Lmxlbmd0aC0xXSkpfWVsc2UgZm9yKGY9MDtmPGQ7Zisr KWg9cFtmXSxnW2ZdPShoWzBdKihsK2MtMSktYy8yKSpzK3IsdltmXT1oWzFd O3JldHVybiBhLm1ha2VDb2xvclNjYWxlRnVuYyh7ZG9tYWluOmcscmFuZ2U6 dn0se25vTnVtZXJpY0NoZWNrOiEwfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZSI6NjA0LCIuL2VuZF9wbHVzIjo5NTQsZDM6MTY1fV0sOTYw OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29u c3RhbnRzIik7ZnVuY3Rpb24gYSh0LGUpe3ZhciByPShlWzBdWzBdPnQ/MDox KSsoZVswXVsxXT50PzA6MikrKGVbMV1bMV0+dD8wOjQpKyhlWzFdWzBdPnQ/ MDo4KTtyZXR1cm4gNT09PXJ8fDEwPT09cj90PihlWzBdWzBdK2VbMF1bMV0r ZVsxXVswXStlWzFdWzFdKS80PzU9PT1yPzcxMzoxMTE0OjU9PT1yPzEwNDoy MDg6MTU9PT1yPzA6cn1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscixp LG8scyxsLGMsdSxoLGY9dFswXS56LHA9Zi5sZW5ndGgsZD1mWzBdLmxlbmd0 aCxnPTI9PT1wfHwyPT09ZDtmb3Iocj0wO3I8cC0xO3IrKylmb3Iobz1bXSww PT09ciYmKG89by5jb25jYXQobi5CT1RUT01TVEFSVCkpLHI9PT1wLTImJihv PW8uY29uY2F0KG4uVE9QU1RBUlQpKSxlPTA7ZTxkLTE7ZSsrKWZvcihpPW8u c2xpY2UoKSwwPT09ZSYmKGk9aS5jb25jYXQobi5MRUZUU1RBUlQpKSxlPT09 ZC0yJiYoaT1pLmNvbmNhdChuLlJJR0hUU1RBUlQpKSxzPWUrIiwiK3IsbD1b W2Zbcl1bZV0sZltyXVtlKzFdXSxbZltyKzFdW2VdLGZbcisxXVtlKzFdXV0s aD0wO2g8dC5sZW5ndGg7aCsrKShjPWEoKHU9dFtoXSkubGV2ZWwsbCkpJiYo dS5jcm9zc2luZ3Nbc109YywtMSE9PWkuaW5kZXhPZihjKSYmKHUuc3RhcnRz LnB1c2goW2Uscl0pLGcmJi0xIT09aS5pbmRleE9mKGMsaS5pbmRleE9mKGMp KzEpJiZ1LnN0YXJ0cy5wdXNoKFtlLHJdKSkpfX0seyIuL2NvbnN0YW50cyI6 OTQ3fV0sOTYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoImQzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVu dHMvZHJhd2luZyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxl Iikscz10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxsPXQoIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYz10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vc2V0X2NvbnZlcnQiKSx1PXQoIi4uL2hlYXRtYXAvcGxvdCIpLGg9 dCgiLi9tYWtlX2Nyb3NzaW5ncyIpLGY9dCgiLi9maW5kX2FsbF9wYXRocyIp LHA9dCgiLi9lbXB0eV9wYXRoaW5mbyIpLGQ9dCgiLi9jb252ZXJ0X3RvX2Nv bnN0cmFpbnRzIiksZz10KCIuL2Nsb3NlX2JvdW5kYXJpZXMiKSx2PXQoIi4v Y29uc3RhbnRzIiksbT12LkxBQkVMT1BUSU1JWkVSO2Z1bmN0aW9uIHkodCxl KXt2YXIgcixuLG8scyxsLGMsdSxoPSIiLGY9MCxwPXQuZWRnZXBhdGhzLm1h cChmdW5jdGlvbih0LGUpe3JldHVybiBlfSksZD0hMDtmdW5jdGlvbiBnKHQp e3JldHVybiBNYXRoLmFicyh0WzFdLWVbMl1bMV0pPC4wMX1mdW5jdGlvbiB2 KHQpe3JldHVybiBNYXRoLmFicyh0WzBdLWVbMF1bMF0pPC4wMX1mdW5jdGlv biBtKHQpe3JldHVybiBNYXRoLmFicyh0WzBdLWVbMl1bMF0pPC4wMX1mb3Io O3AubGVuZ3RoOyl7Zm9yKGM9aS5zbW9vdGhvcGVuKHQuZWRnZXBhdGhzW2Zd LHQuc21vb3RoaW5nKSxoKz1kP2M6Yy5yZXBsYWNlKC9eTS8sIkwiKSxwLnNw bGljZShwLmluZGV4T2YoZiksMSkscj10LmVkZ2VwYXRoc1tmXVt0LmVkZ2Vw YXRoc1tmXS5sZW5ndGgtMV0scz0tMSxvPTA7bzw0O28rKyl7aWYoIXIpe2Eu bG9nKCJNaXNzaW5nIGVuZD8iLGYsdCk7YnJlYWt9Zm9yKHU9cixNYXRoLmFi cyh1WzFdLWVbMF1bMV0pPC4wMSYmIW0ocik/bj1lWzFdOnYocik/bj1lWzBd Omcocik/bj1lWzNdOm0ocikmJihuPWVbMl0pLGw9MDtsPHQuZWRnZXBhdGhz Lmxlbmd0aDtsKyspe3ZhciB5PXQuZWRnZXBhdGhzW2xdWzBdO01hdGguYWJz KHJbMF0tblswXSk8LjAxP01hdGguYWJzKHJbMF0teVswXSk8LjAxJiYoeVsx XS1yWzFdKSooblsxXS15WzFdKT49MCYmKG49eSxzPWwpOk1hdGguYWJzKHJb MV0tblsxXSk8LjAxP01hdGguYWJzKHJbMV0teVsxXSk8LjAxJiYoeVswXS1y WzBdKSooblswXS15WzBdKT49MCYmKG49eSxzPWwpOmEubG9nKCJlbmRwdCB0 byBuZXdlbmRwdCBpcyBub3QgdmVydC4gb3IgaG9yei4iLHIsbix5KX1pZihy PW4scz49MClicmVhaztoKz0iTCIrbn1pZihzPT09dC5lZGdlcGF0aHMubGVu Z3RoKXthLmxvZygidW5jbG9zZWQgcGVyaW1ldGVyIHBhdGgiKTticmVha31m PXMsKGQ9LTE9PT1wLmluZGV4T2YoZikpJiYoZj1wWzBdLGgrPSJaIil9Zm9y KGY9MDtmPHQucGF0aHMubGVuZ3RoO2YrKyloKz1pLnNtb290aGNsb3NlZCh0 LnBhdGhzW2ZdLHQuc21vb3RoaW5nKTtyZXR1cm4gaH1mdW5jdGlvbiB4KHQs ZSxyLG4pe3ZhciBpPWUud2lkdGgvMixvPWUuaGVpZ2h0LzIscz10LngsbD10 LnksYz10LnRoZXRhLHU9TWF0aC5jb3MoYykqaSxoPU1hdGguc2luKGMpKmks Zj0ocz5uLmNlbnRlcj9uLnJpZ2h0LXM6cy1uLmxlZnQpLyh1K01hdGguYWJz KE1hdGguc2luKGMpKm8pKSxwPShsPm4ubWlkZGxlP24uYm90dG9tLWw6bC1u LnRvcCkvKE1hdGguYWJzKGgpK01hdGguY29zKGMpKm8pO2lmKGY8MXx8cDwx KXJldHVybiAxLzA7dmFyIGQ9bS5FREdFQ09TVCooMS8oZi0xKSsxLyhwLTEp KTtkKz1tLkFOR0xFQ09TVCpjKmM7Zm9yKHZhciBnPXMtdSx2PWwtaCx5PXMr dSx4PWwraCxiPTA7YjxyLmxlbmd0aDtiKyspe3ZhciBfPXJbYl0sdz1NYXRo LmNvcyhfLnRoZXRhKSpfLndpZHRoLzIsaz1NYXRoLnNpbihfLnRoZXRhKSpf LndpZHRoLzIsVD0yKmEuc2VnbWVudERpc3RhbmNlKGcsdix5LHgsXy54LXcs Xy55LWssXy54K3csXy55K2spLyhlLmhlaWdodCtfLmhlaWdodCksTT1fLmxl dmVsPT09ZS5sZXZlbCxBPU0/bS5TQU1FTEVWRUxESVNUQU5DRToxO2lmKFQ8 PUEpcmV0dXJuIDEvMDtkKz1tLk5FSUdIQk9SQ09TVCooTT9tLlNBTUVMRVZF TEZBQ1RPUjoxKS8oVC1BKX1yZXR1cm4gZH1mdW5jdGlvbiBiKHQpe3ZhciBl LHIsbj10LnRyYWNlLl9lbXB0eXBvaW50cyxhPVtdLGk9dC56Lmxlbmd0aCxv PXQuelswXS5sZW5ndGgscz1bXTtmb3IoZT0wO2U8bztlKyspcy5wdXNoKDEp O2ZvcihlPTA7ZTxpO2UrKylhLnB1c2gocy5zbGljZSgpKTtmb3IoZT0wO2U8 bi5sZW5ndGg7ZSsrKWFbKHI9bltlXSlbMF1dW3JbMV1dPTA7cmV0dXJuIHQu em1hc2s9YSxhfXIucGxvdD1mdW5jdGlvbih0LGUsbyxzKXt2YXIgbD1lLnhh eGlzLGM9ZS55YXhpczthLm1ha2VUcmFjZUdyb3VwcyhzLG8sImNvbnRvdXIi KS5lYWNoKGZ1bmN0aW9uKG8pe3ZhciBzPW4uc2VsZWN0KHRoaXMpLG09b1sw XSx4PW0udHJhY2UsXz1tLngsdz1tLnksaz14LmNvbnRvdXJzLFQ9cChrLGUs bSksTT1hLmVuc3VyZVNpbmdsZShzLCJnIiwiaGVhdG1hcGNvbG9yaW5nIiks QT1bXTsiaGVhdG1hcCI9PT1rLmNvbG9yaW5nJiYoQT1bb10pLHUodCxlLEEs TSksaChUKSxmKFQpO3ZhciBTPWwuYzJwKF9bMF0sITApLEU9bC5jMnAoX1tf Lmxlbmd0aC0xXSwhMCksTD1jLmMycCh3WzBdLCEwKSxDPWMuYzJwKHdbdy5s ZW5ndGgtMV0sITApLFA9W1tTLENdLFtFLENdLFtFLExdLFtTLExdXSxPPVQ7 ImNvbnN0cmFpbnQiPT09ay50eXBlJiYoTz1kKFQsay5fb3BlcmF0aW9uKSks ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWEuZW5zdXJlU2luZ2xlKHQsImciLCJj b250b3VyYmciKS5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKCJmaWxsIj09PXIu Y29sb3Jpbmc/WzBdOltdKTtuLmVudGVyKCkuYXBwZW5kKCJwYXRoIiksbi5l eGl0KCkucmVtb3ZlKCksbi5hdHRyKCJkIiwiTSIrZS5qb2luKCJMIikrIloi KS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfShzLFAsayksZnVuY3Rpb24odCxl LHIsaSl7dmFyIG89ImZpbGwiPT09aS5jb2xvcmluZ3x8ImNvbnN0cmFpbnQi PT09aS50eXBlJiYiPSIhPT1pLl9vcGVyYXRpb24scz0iTSIrci5qb2luKCJM IikrIloiO28mJmcoZSxpKTt2YXIgbD1hLmVuc3VyZVNpbmdsZSh0LCJnIiwi Y29udG91cmZpbGwiKS5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKG8/ZTpbXSk7 bC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLGwuZXhpdCgpLnJlbW92ZSgpLGwu ZWFjaChmdW5jdGlvbih0KXt2YXIgZT0odC5wcmVmaXhCb3VuZGFyeT9zOiIi KSt5KHQscik7ZT9uLnNlbGVjdCh0aGlzKS5hdHRyKCJkIixlKS5zdHlsZSgi c3Ryb2tlIiwibm9uZSIpOm4uc2VsZWN0KHRoaXMpLnJlbW92ZSgpfSl9KHMs TyxQLGspLGZ1bmN0aW9uKHQsZSxvLHMsbCl7dmFyIGM9YS5lbnN1cmVTaW5n bGUodCwiZyIsImNvbnRvdXJsaW5lcyIpLHU9ITEhPT1sLnNob3dsaW5lcyxo PWwuc2hvd2xhYmVscyxmPXUmJmgscD1yLmNyZWF0ZUxpbmVzKGMsdXx8aCxl KSxkPXIuY3JlYXRlTGluZUNsaXAoYyxmLG8scy50cmFjZS51aWQpLGc9dC5z ZWxlY3RBbGwoImcuY29udG91cmxhYmVscyIpLmRhdGEoaD9bMF06W10pO2lm KGcuZXhpdCgpLnJlbW92ZSgpLGcuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFz c2VkKCJjb250b3VybGFiZWxzIiwhMCksaCl7dmFyIG09W10seT1bXTthLmNs ZWFyTG9jYXRpb25DYWNoZSgpO3ZhciB4PXIubGFiZWxGb3JtYXR0ZXIobyxz KSxiPWkudGVzdGVyLmFwcGVuZCgidGV4dCIpLmF0dHIoImRhdGEtbm90ZXgi LDEpLmNhbGwoaS5mb250LGwubGFiZWxmb250KSxfPWVbMF0ueGF4aXMsdz1l WzBdLnlheGlzLGs9Xy5fbGVuZ3RoLFQ9dy5fbGVuZ3RoLE09Xy5yYW5nZSxB PXcucmFuZ2UsUz1hLmFnZ051bXMoTWF0aC5taW4sbnVsbCxzLngpLEU9YS5h Z2dOdW1zKE1hdGgubWF4LG51bGwscy54KSxMPWEuYWdnTnVtcyhNYXRoLm1p bixudWxsLHMueSksQz1hLmFnZ051bXMoTWF0aC5tYXgsbnVsbCxzLnkpLFA9 TWF0aC5tYXgoXy5jMnAoUywhMCksMCksTz1NYXRoLm1pbihfLmMycChFLCEw KSxrKSx6PU1hdGgubWF4KHcuYzJwKEMsITApLDApLEk9TWF0aC5taW4ody5j MnAoTCwhMCksVCksRD17fTtNWzBdPE1bMV0/KEQubGVmdD1QLEQucmlnaHQ9 Tyk6KEQubGVmdD1PLEQucmlnaHQ9UCksQVswXTxBWzFdPyhELnRvcD16LEQu Ym90dG9tPUkpOihELnRvcD1JLEQuYm90dG9tPXopLEQubWlkZGxlPShELnRv cCtELmJvdHRvbSkvMixELmNlbnRlcj0oRC5sZWZ0K0QucmlnaHQpLzIsbS5w dXNoKFtbRC5sZWZ0LEQudG9wXSxbRC5yaWdodCxELnRvcF0sW0QucmlnaHQs RC5ib3R0b21dLFtELmxlZnQsRC5ib3R0b21dXSk7dmFyIFI9TWF0aC5zcXJ0 KGsqaytUKlQpLEY9di5MQUJFTERJU1RBTkNFKlIvTWF0aC5tYXgoMSxlLmxl bmd0aC92LkxBQkVMSU5DUkVBU0UpO3AuZWFjaChmdW5jdGlvbih0KXt2YXIg ZT1yLmNhbGNUZXh0T3B0cyh0LmxldmVsLHgsYixvKTtuLnNlbGVjdCh0aGlz KS5zZWxlY3RBbGwoInBhdGgiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9YS5n ZXRWaXNpYmxlU2VnbWVudCh0aGlzLEQsZS5oZWlnaHQvMik7aWYodCYmISh0 LmxlbjwoZS53aWR0aCtlLmhlaWdodCkqdi5MQUJFTE1JTikpZm9yKHZhciBu PU1hdGgubWluKE1hdGguY2VpbCh0Lmxlbi9GKSx2LkxBQkVMTUFYKSxpPTA7 aTxuO2krKyl7dmFyIG89ci5maW5kQmVzdFRleHRMb2NhdGlvbih0aGlzLHQs ZSx5LEQpO2lmKCFvKWJyZWFrO3IuYWRkTGFiZWxEYXRhKG8sZSx5LG0pfX0p fSksYi5yZW1vdmUoKSxyLmRyYXdMYWJlbHMoZyx5LG8sZCxmP206bnVsbCl9 aCYmIXUmJnAucmVtb3ZlKCl9KHMsVCx0LG0sayksZnVuY3Rpb24odCxlLHIs bixvKXt2YXIgcz1uLnRyYWNlLGw9ci5fZnVsbExheW91dC5fY2xpcHMsYz0i Y2xpcCIrcy51aWQsdT1sLnNlbGVjdEFsbCgiIyIrYykuZGF0YShzLmNvbm5l Y3RnYXBzP1tdOlswXSk7aWYodS5lbnRlcigpLmFwcGVuZCgiY2xpcFBhdGgi KS5jbGFzc2VkKCJjb250b3VyY2xpcCIsITApLmF0dHIoImlkIixjKSx1LmV4 aXQoKS5yZW1vdmUoKSwhMT09PXMuY29ubmVjdGdhcHMpe3ZhciBwPXtsZXZl bDouOSxjcm9zc2luZ3M6e30sc3RhcnRzOltdLGVkZ2VwYXRoczpbXSxwYXRo czpbXSx4YXhpczplLnhheGlzLHlheGlzOmUueWF4aXMseDpuLngseTpuLnks ejpiKG4pLHNtb290aGluZzowfTtoKFtwXSksZihbcF0pLGcoW3BdLHt0eXBl OiJsZXZlbHMifSk7dmFyIGQ9YS5lbnN1cmVTaW5nbGUodSwicGF0aCIsIiIp O2QuYXR0cigiZCIsKHAucHJlZml4Qm91bmRhcnk/Ik0iK28uam9pbigiTCIp KyJaIjoiIikreShwLG8pKX1lbHNlIGM9bnVsbDtpLnNldENsaXBVcmwodCxj LHIpfShzLGUsdCxtLFApfSl9LHIuY3JlYXRlTGluZXM9ZnVuY3Rpb24odCxl LHIpe3ZhciBuPXJbMF0uc21vb3RoaW5nLGE9dC5zZWxlY3RBbGwoImcuY29u dG91cmxldmVsIikuZGF0YShlP3I6W10pO2lmKGEuZXhpdCgpLnJlbW92ZSgp LGEuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJjb250b3VybGV2ZWwi LCEwKSxlKXt2YXIgbz1hLnNlbGVjdEFsbCgicGF0aC5vcGVubGluZSIpLmRh dGEoZnVuY3Rpb24odCl7cmV0dXJuIHQucGVkZ2VwYXRoc3x8dC5lZGdlcGF0 aHN9KTtvLmV4aXQoKS5yZW1vdmUoKSxvLmVudGVyKCkuYXBwZW5kKCJwYXRo IikuY2xhc3NlZCgib3BlbmxpbmUiLCEwKSxvLmF0dHIoImQiLGZ1bmN0aW9u KHQpe3JldHVybiBpLnNtb290aG9wZW4odCxuKX0pLnN0eWxlKCJzdHJva2Ut bWl0ZXJsaW1pdCIsMSkuc3R5bGUoInZlY3Rvci1lZmZlY3QiLCJub24tc2Nh bGluZy1zdHJva2UiKTt2YXIgcz1hLnNlbGVjdEFsbCgicGF0aC5jbG9zZWRs aW5lIikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5wcGF0aHN8fHQucGF0 aHN9KTtzLmV4aXQoKS5yZW1vdmUoKSxzLmVudGVyKCkuYXBwZW5kKCJwYXRo IikuY2xhc3NlZCgiY2xvc2VkbGluZSIsITApLHMuYXR0cigiZCIsZnVuY3Rp b24odCl7cmV0dXJuIGkuc21vb3RoY2xvc2VkKHQsbil9KS5zdHlsZSgic3Ry b2tlLW1pdGVybGltaXQiLDEpLnN0eWxlKCJ2ZWN0b3ItZWZmZWN0Iiwibm9u LXNjYWxpbmctc3Ryb2tlIil9cmV0dXJuIGF9LHIuY3JlYXRlTGluZUNsaXA9 ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9ZT8iY2xpcGxpbmUiK246bnVsbCxv PXIuX2Z1bGxMYXlvdXQuX2NsaXBzLnNlbGVjdEFsbCgiIyIrYSkuZGF0YShl P1swXTpbXSk7cmV0dXJuIG8uZXhpdCgpLnJlbW92ZSgpLG8uZW50ZXIoKS5h cHBlbmQoImNsaXBQYXRoIikuY2xhc3NlZCgiY29udG91cmxpbmVjbGlwIiwh MCkuYXR0cigiaWQiLGEpLGkuc2V0Q2xpcFVybCh0LGEsciksb30sci5sYWJl bEZvcm1hdHRlcj1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQs bj1lLnRyYWNlLGE9bi5jb250b3VycztpZihhLmxhYmVsZm9ybWF0KXJldHVy biByLl9kM2xvY2FsZS5udW1iZXJGb3JtYXQoYS5sYWJlbGZvcm1hdCk7dmFy IGkscz1vLmV4dHJhY3RPcHRzKG4pO2lmKHMmJnMuY29sb3JiYXImJnMuY29s b3JiYXIuX2F4aXMpaT1zLmNvbG9yYmFyLl9heGlzO2Vsc2V7aWYoaT17dHlw ZToibGluZWFyIixfaWQ6Inljb250b3VyIixzaG93ZXhwb25lbnQ6ImFsbCIs ZXhwb25lbnRmb3JtYXQ6IkIifSwiY29uc3RyYWludCI9PT1hLnR5cGUpe3Zh ciB1PWEudmFsdWU7QXJyYXkuaXNBcnJheSh1KT9pLnJhbmdlPVt1WzBdLHVb dS5sZW5ndGgtMV1dOmkucmFuZ2U9W3UsdV19ZWxzZSBpLnJhbmdlPVthLnN0 YXJ0LGEuZW5kXSxpLm50aWNrcz0oYS5lbmQtYS5zdGFydCkvYS5zaXplO2ku cmFuZ2VbMF09PT1pLnJhbmdlWzFdJiYoaS5yYW5nZVsxXSs9aS5yYW5nZVsw XXx8MSksaS5udGlja3N8fChpLm50aWNrcz0xZTMpLGMoaSxyKSxsLnByZXBU aWNrcyhpKSxpLl90bWluPW51bGwsaS5fdG1heD1udWxsfXJldHVybiBmdW5j dGlvbih0KXtyZXR1cm4gbC50aWNrVGV4dChpLHQpLnRleHR9fSxyLmNhbGNU ZXh0T3B0cz1mdW5jdGlvbih0LGUscixuKXt2YXIgYT1lKHQpO3IudGV4dChh KS5jYWxsKHMuY29udmVydFRvVHNwYW5zLG4pO3ZhciBvPWkuYkJveChyLm5v ZGUoKSwhMCk7cmV0dXJue3RleHQ6YSx3aWR0aDpvLndpZHRoLGhlaWdodDpv LmhlaWdodCxsZXZlbDp0LGR5OihvLnRvcCtvLmJvdHRvbSkvMn19LHIuZmlu ZEJlc3RUZXh0TG9jYXRpb249ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgbyxz LGwsYyx1LGg9ci53aWR0aDtlLmlzQ2xvc2VkPyhzPWUubGVuL20uSU5JVElB TFNFQVJDSFBPSU5UUyxvPWUubWluK3MvMixsPWUubWF4KToocz0oZS5sZW4t aCkvKG0uSU5JVElBTFNFQVJDSFBPSU5UUysxKSxvPWUubWluK3MraC8yLGw9 ZS5tYXgtKHMraCkvMik7Zm9yKHZhciBmPTEvMCxwPTA7cDxtLklURVJBVElP TlM7cCsrKXtmb3IodmFyIGQ9bztkPGw7ZCs9cyl7dmFyIGc9YS5nZXRUZXh0 TG9jYXRpb24odCxlLnRvdGFsLGQsaCksdj14KGcscixuLGkpO3Y8ZiYmKGY9 dix1PWcsYz1kKX1pZihmPjIqbS5NQVhDT1NUKWJyZWFrO3AmJihzLz0yKSxs PShvPWMtcy8yKSsxLjUqc31pZihmPD1tLk1BWENPU1QpcmV0dXJuIHV9LHIu YWRkTGFiZWxEYXRhPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPWUud2lkdGgv MixpPWUuaGVpZ2h0LzIsbz10Lngscz10LnksbD10LnRoZXRhLGM9TWF0aC5z aW4obCksdT1NYXRoLmNvcyhsKSxoPWEqdSxmPWkqYyxwPWEqYyxkPS1pKnUs Zz1bW28taC1mLHMtcC1kXSxbbytoLWYscytwLWRdLFtvK2grZixzK3ArZF0s W28taCtmLHMtcCtkXV07ci5wdXNoKHt0ZXh0OmUudGV4dCx4Om8seTpzLGR5 OmUuZHksdGhldGE6bCxsZXZlbDplLmxldmVsLHdpZHRoOmUud2lkdGgsaGVp Z2h0OmUuaGVpZ2h0fSksbi5wdXNoKGcpfSxyLmRyYXdMYWJlbHM9ZnVuY3Rp b24odCxlLHIsaSxvKXt2YXIgbD10LnNlbGVjdEFsbCgidGV4dCIpLmRhdGEo ZSxmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXh0KyIsIit0LngrIiwiK3QueSsi LCIrdC50aGV0YX0pO2lmKGwuZXhpdCgpLnJlbW92ZSgpLGwuZW50ZXIoKS5h cHBlbmQoInRleHQiKS5hdHRyKHsiZGF0YS1ub3RleCI6MSwidGV4dC1hbmNo b3IiOiJtaWRkbGUifSkuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10LngrTWF0 aC5zaW4odC50aGV0YSkqdC5keSxhPXQueS1NYXRoLmNvcyh0LnRoZXRhKSp0 LmR5O24uc2VsZWN0KHRoaXMpLnRleHQodC50ZXh0KS5hdHRyKHt4OmUseTph LHRyYW5zZm9ybToicm90YXRlKCIrMTgwKnQudGhldGEvTWF0aC5QSSsiICIr ZSsiICIrYSsiKSJ9KS5jYWxsKHMuY29udmVydFRvVHNwYW5zLHIpfSksbyl7 Zm9yKHZhciBjPSIiLHU9MDt1PG8ubGVuZ3RoO3UrKyljKz0iTSIrb1t1XS5q b2luKCJMIikrIloiO2EuZW5zdXJlU2luZ2xlKGksInBhdGgiLCIiKS5hdHRy KCJkIixjKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6NjA0 LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3 MTcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v c2V0X2NvbnZlcnQiOjc4MywiLi4vaGVhdG1hcC9wbG90IjoxMDExLCIuL2Ns b3NlX2JvdW5kYXJpZXMiOjk0NSwiLi9jb25zdGFudHMiOjk0NywiLi9jb252 ZXJ0X3RvX2NvbnN0cmFpbnRzIjo5NTEsIi4vZW1wdHlfcGF0aGluZm8iOjk1 MywiLi9maW5kX2FsbF9wYXRocyI6OTU1LCIuL21ha2VfY3Jvc3NpbmdzIjo5 NjAsZDM6MTY1fV0sOTYyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIu Li8uLi9saWIiKTtmdW5jdGlvbiBpKHQsZSxyKXt2YXIgYT17dHlwZToibGlu ZWFyIixyYW5nZTpbdCxlXX07cmV0dXJuIG4uYXV0b1RpY2tzKGEsKGUtdCkv KHJ8fDE1KSksYX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmNv bnRvdXJzO2lmKHQuYXV0b2NvbnRvdXIpe3ZhciBvPXQuem1pbixzPXQuem1h eDsodC56YXV0b3x8dm9pZCAwPT09bykmJihvPWEuYWdnTnVtcyhNYXRoLm1p bixudWxsLGUpKSwodC56YXV0b3x8dm9pZCAwPT09cykmJihzPWEuYWdnTnVt cyhNYXRoLm1heCxudWxsLGUpKTt2YXIgbD1pKG8scyx0Lm5jb250b3Vycyk7 ci5zaXplPWwuZHRpY2ssci5zdGFydD1uLnRpY2tGaXJzdChsKSxsLnJhbmdl LnJldmVyc2UoKSxyLmVuZD1uLnRpY2tGaXJzdChsKSxyLnN0YXJ0PT09byYm KHIuc3RhcnQrPXIuc2l6ZSksci5lbmQ9PT1zJiYoci5lbmQtPXIuc2l6ZSks ci5zdGFydD5yLmVuZCYmKHIuc3RhcnQ9ci5lbmQ9KHIuc3RhcnQrci5lbmQp LzIpLHQuX2lucHV0LmNvbnRvdXJzfHwodC5faW5wdXQuY29udG91cnM9e30p LGEuZXh0ZW5kRmxhdCh0Ll9pbnB1dC5jb250b3Vycyx7c3RhcnQ6ci5zdGFy dCxlbmQ6ci5lbmQsc2l6ZTpyLnNpemV9KSx0Ll9pbnB1dC5hdXRvY29udG91 cj0hMH1lbHNlIGlmKCJjb25zdHJhaW50IiE9PXIudHlwZSl7dmFyIGMsdT1y LnN0YXJ0LGg9ci5lbmQsZj10Ll9pbnB1dC5jb250b3VycztpZih1PmgmJihy LnN0YXJ0PWYuc3RhcnQ9aCxoPXIuZW5kPWYuZW5kPXUsdT1yLnN0YXJ0KSwh KHIuc2l6ZT4wKSljPXU9PT1oPzE6aSh1LGgsdC5uY29udG91cnMpLmR0aWNr LGYuc2l6ZT1yLnNpemU9Y319fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9w bG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1fV0sOTYzOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21w b25lbnRzL2RyYXdpbmciKSxpPXQoIi4uL2hlYXRtYXAvc3R5bGUiKSxvPXQo Ii4vbWFrZV9jb2xvcl9tYXAiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFy IGU9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLmNvbnRvdXIiKTtlLnN0eWxl KCJvcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFjZS5vcGFj aXR5fSksZS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMp LHI9dFswXS50cmFjZSxpPXIuY29udG91cnMscz1yLmxpbmUsbD1pLnNpemV8 fDEsYz1pLnN0YXJ0LHU9ImNvbnN0cmFpbnQiPT09aS50eXBlLGg9IXUmJiJs aW5lcyI9PT1pLmNvbG9yaW5nLGY9IXUmJiJmaWxsIj09PWkuY29sb3Jpbmcs cD1ofHxmP28ocik6bnVsbDtlLnNlbGVjdEFsbCgiZy5jb250b3VybGV2ZWwi KS5lYWNoKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgi cGF0aCIpLmNhbGwoYS5saW5lR3JvdXBTdHlsZSxzLndpZHRoLGg/cCh0Lmxl dmVsKTpzLmNvbG9yLHMuZGFzaCl9KTt2YXIgZD1pLmxhYmVsZm9udDtpZihl LnNlbGVjdEFsbCgiZy5jb250b3VybGFiZWxzIHRleHQiKS5lYWNoKGZ1bmN0 aW9uKHQpe2EuZm9udChuLnNlbGVjdCh0aGlzKSx7ZmFtaWx5OmQuZmFtaWx5 LHNpemU6ZC5zaXplLGNvbG9yOmQuY29sb3J8fChoP3AodC5sZXZlbCk6cy5j b2xvcil9KX0pLHUpZS5zZWxlY3RBbGwoImcuY29udG91cmZpbGwgcGF0aCIp LnN0eWxlKCJmaWxsIixyLmZpbGxjb2xvcik7ZWxzZSBpZihmKXt2YXIgZztl LnNlbGVjdEFsbCgiZy5jb250b3VyZmlsbCBwYXRoIikuc3R5bGUoImZpbGwi LGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT1nJiYoZz10LmxldmVsKSxw KHQubGV2ZWwrLjUqbCl9KSx2b2lkIDA9PT1nJiYoZz1jKSxlLnNlbGVjdEFs bCgiZy5jb250b3VyYmcgcGF0aCIpLnN0eWxlKCJmaWxsIixwKGctLjUqbCkp fX0pLGkodCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIu Li9oZWF0bWFwL3N0eWxlIjoxMDEyLCIuL21ha2VfY29sb3JfbWFwIjo5NTks ZDM6MTY1fV0sOTY0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIp LGE9dCgiLi9sYWJlbF9kZWZhdWx0cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixpLG8pe3ZhciBzLGw9cigiY29udG91cnMuY29sb3JpbmciKSxjPSIi OyJmaWxsIj09PWwmJihzPXIoImNvbnRvdXJzLnNob3dsaW5lcyIpKSwhMSE9 PXMmJigibGluZXMiIT09bCYmKGM9cigibGluZS5jb2xvciIsIiMwMDAiKSks cigibGluZS53aWR0aCIsLjUpLHIoImxpbmUuZGFzaCIpKSwibm9uZSIhPT1s JiYoITAhPT10LnNob3dsZWdlbmQmJihlLnNob3dsZWdlbmQ9ITEpLGUuX2Rm bHRTaG93TGVnZW5kPSExLG4odCxlLGkscix7cHJlZml4OiIiLGNMZXR0ZXI6 InoifSkpLHIoImxpbmUuc21vb3RoaW5nIiksYShyLGksYyxvKX19LHsiLi4v Li4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2MDIsIi4vbGFi ZWxfZGVmYXVsdHMiOjk1OH1dLDk2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiKSxhPXQo Ii4uL2NvbnRvdXIvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9uZW50 cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2xpYi9leHRl bmQiKS5leHRlbmRGbGF0LHM9YS5jb250b3VycztlLmV4cG9ydHM9byh7Y2Fy cGV0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJjYWxjIn0sejpuLnos YTpuLngsYTA6bi54MCxkYTpuLmR4LGI6bi55LGIwOm4ueTAsZGI6bi5keSx0 ZXh0Om4udGV4dCxob3ZlcnRleHQ6bi5ob3ZlcnRleHQsdHJhbnNwb3NlOm4u dHJhbnNwb3NlLGF0eXBlOm4ueHR5cGUsYnR5cGU6bi55dHlwZSxmaWxsY29s b3I6YS5maWxsY29sb3IsYXV0b2NvbnRvdXI6YS5hdXRvY29udG91cixuY29u dG91cnM6YS5uY29udG91cnMsY29udG91cnM6e3R5cGU6cy50eXBlLHN0YXJ0 OnMuc3RhcnQsZW5kOnMuZW5kLHNpemU6cy5zaXplLGNvbG9yaW5nOnt2YWxU eXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmaWxsIiwibGluZXMiLCJub25l Il0sZGZsdDoiZmlsbCIsZWRpdFR5cGU6ImNhbGMifSxzaG93bGluZXM6cy5z aG93bGluZXMsc2hvd2xhYmVsczpzLnNob3dsYWJlbHMsbGFiZWxmb250OnMu bGFiZWxmb250LGxhYmVsZm9ybWF0OnMubGFiZWxmb3JtYXQsb3BlcmF0aW9u OnMub3BlcmF0aW9uLHZhbHVlOnMudmFsdWUsZWRpdFR5cGU6ImNhbGMiLGlt cGxpZWRFZGl0czp7YXV0b2NvbnRvdXI6ITF9fSxsaW5lOntjb2xvcjphLmxp bmUuY29sb3Isd2lkdGg6YS5saW5lLndpZHRoLGRhc2g6YS5saW5lLmRhc2gs c21vb3RoaW5nOmEubGluZS5zbW9vdGhpbmcsZWRpdFR5cGU6InBsb3QifSx0 cmFuc2Zvcm1zOnZvaWQgMH0saSgiIix7Y0xldHRlcjoieiIsYXV0b0NvbG9y RGZsdDohMX0pKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0 cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uL2NvbnRv dXIvYXR0cmlidXRlcyI6OTQzLCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiOjFl M31dLDk2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLGE9dCgiLi4v Li4vbGliIiksaT10KCIuLi9oZWF0bWFwL2NvbnZlcnRfY29sdW1uX3h5eiIp LG89dCgiLi4vaGVhdG1hcC9jbGVhbl8yZF9hcnJheSIpLHM9dCgiLi4vaGVh dG1hcC9pbnRlcnAyZCIpLGw9dCgiLi4vaGVhdG1hcC9maW5kX2VtcHRpZXMi KSxjPXQoIi4uL2hlYXRtYXAvbWFrZV9ib3VuZF9hcnJheSIpLHU9dCgiLi9k ZWZhdWx0cyIpLGg9dCgiLi4vY2FycGV0L2xvb2t1cF9jYXJwZXRpZCIpLGY9 dCgiLi4vY29udG91ci9zZXRfY29udG91cnMiKTtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXt2YXIgcj1lLl9jYXJwZXRUcmFjZT1oKHQsZSk7aWYociYmci52 aXNpYmxlJiYibGVnZW5kb25seSIhPT1yLnZpc2libGUpe2lmKCFlLmF8fCFl LmIpe3ZhciBwPXQuZGF0YVtyLmluZGV4XSxkPXQuZGF0YVtlLmluZGV4XTtk LmF8fChkLmE9cC5hKSxkLmJ8fChkLmI9cC5iKSx1KGQsZSxlLl9kZWZhdWx0 Q29sb3IsdC5fZnVsbExheW91dCl9dmFyIGc9ZnVuY3Rpb24odCxlKXt2YXIg cix1LGgsZixwLGQsZyx2PWUuX2NhcnBldFRyYWNlLG09di5hYXhpcyx5PXYu YmF4aXM7bS5fbWluRHRpY2s9MCx5Ll9taW5EdGljaz0wLGEuaXNBcnJheTFE KGUueikmJmkoZSxtLHksImEiLCJiIixbInoiXSk7cj1lLl9hPWUuX2F8fGUu YSxmPWUuX2I9ZS5fYnx8ZS5iLHI9cj9tLm1ha2VDYWxjZGF0YShlLCJfYSIp OltdLGY9Zj95Lm1ha2VDYWxjZGF0YShlLCJfYiIpOltdLHU9ZS5hMHx8MCxo PWUuZGF8fDEscD1lLmIwfHwwLGQ9ZS5kYnx8MSxnPWUuX3o9byhlLl96fHxl LnosZS50cmFuc3Bvc2UpLGUuX2VtcHR5cG9pbnRzPWwoZykscyhnLGUuX2Vt cHR5cG9pbnRzKTt2YXIgeD1hLm1heFJvd0xlbmd0aChnKSxiPSJzY2FsZWQi PT09ZS54dHlwZT8iIjpyLF89YyhlLGIsdSxoLHgsbSksdz0ic2NhbGVkIj09 PWUueXR5cGU/IiI6ZixrPWMoZSx3LHAsZCxnLmxlbmd0aCx5KSxUPXthOl8s YjprLHo6Z307ImxldmVscyI9PT1lLmNvbnRvdXJzLnR5cGUmJiJub25lIiE9 PWUuY29udG91cnMuY29sb3JpbmcmJm4odCxlLHt2YWxzOmcsY29udGFpbmVy U3RyOiIiLGNMZXR0ZXI6InoifSk7cmV0dXJuW1RdfSh0LGUpO3JldHVybiBm KGUsZS5feiksZ319fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9j YWxjIjo2MDAsIi4uLy4uL2xpYiI6NzE3LCIuLi9jYXJwZXQvbG9va3VwX2Nh cnBldGlkIjo5MTYsIi4uL2NvbnRvdXIvc2V0X2NvbnRvdXJzIjo5NjIsIi4u L2hlYXRtYXAvY2xlYW5fMmRfYXJyYXkiOjEwMDIsIi4uL2hlYXRtYXAvY29u dmVydF9jb2x1bW5feHl6IjoxMDA0LCIuLi9oZWF0bWFwL2ZpbmRfZW1wdGll cyI6MTAwNiwiLi4vaGVhdG1hcC9pbnRlcnAyZCI6MTAwOSwiLi4vaGVhdG1h cC9tYWtlX2JvdW5kX2FycmF5IjoxMDEwLCIuL2RlZmF1bHRzIjo5Njd9XSw5 Njc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vbGliIiksYT10KCIuLi9oZWF0bWFwL3h5el9kZWZhdWx0cyIpLGk9dCgi Li9hdHRyaWJ1dGVzIiksbz10KCIuLi9jb250b3VyL2NvbnN0cmFpbnRfZGVm YXVsdHMiKSxzPXQoIi4uL2NvbnRvdXIvY29udG91cnNfZGVmYXVsdHMiKSxs PXQoIi4uL2NvbnRvdXIvc3R5bGVfZGVmYXVsdHMiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsYyl7ZnVuY3Rpb24gdShyLGEpe3JldHVybiBuLmNvZXJj ZSh0LGUsaSxyLGEpfWlmKHUoImNhcnBldCIpLHQuYSYmdC5iKXtpZighYSh0 LGUsdSxjLCJhIiwiYiIpKXJldHVybiB2b2lkKGUudmlzaWJsZT0hMSk7dSgi dGV4dCIpLCJjb25zdHJhaW50Ij09PXUoImNvbnRvdXJzLnR5cGUiKT9vKHQs ZSx1LGMscix7aGFzSG92ZXI6ITF9KToocyh0LGUsdSxmdW5jdGlvbihyKXty ZXR1cm4gbi5jb2VyY2UyKHQsZSxpLHIpfSksbCh0LGUsdSxjLHtoYXNIb3Zl cjohMX0pKX1lbHNlIGUuX2RlZmF1bHRDb2xvcj1yLGUuX2xlbmd0aD1udWxs fX0seyIuLi8uLi9saWIiOjcxNywiLi4vY29udG91ci9jb25zdHJhaW50X2Rl ZmF1bHRzIjo5NDgsIi4uL2NvbnRvdXIvY29udG91cnNfZGVmYXVsdHMiOjk1 MCwiLi4vY29udG91ci9zdHlsZV9kZWZhdWx0cyI6OTY0LCIuLi9oZWF0bWFw L3h5el9kZWZhdWx0cyI6MTAxNCwiLi9hdHRyaWJ1dGVzIjo5NjV9XSw5Njg6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRy aWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4v ZGVmYXVsdHMiKSxjb2xvcmJhcjp0KCIuLi9jb250b3VyL2NvbG9yYmFyIiks Y2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4u L2NvbnRvdXIvc3R5bGUiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiY29u dG91cmNhcnBldCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuIiksY2F0ZWdvcmllczpbImNhcnRlc2lhbiIsInN2ZyIsImNhcnBl dCIsImNvbnRvdXIiLCJzeW1ib2xzIiwic2hvd0xlZ2VuZCIsImhhc0xpbmVz IiwiY2FycGV0RGVwZW5kZW50Iiwibm9Ib3ZlciIsIm5vU29ydGluZ0J5VmFs dWUiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjc3Niwi Li4vY29udG91ci9jb2xvcmJhciI6OTQ2LCIuLi9jb250b3VyL3N0eWxlIjo5 NjMsIi4vYXR0cmlidXRlcyI6OTY1LCIuL2NhbGMiOjk2NiwiLi9kZWZhdWx0 cyI6OTY3LCIuL3Bsb3QiOjk2OX1dLDk2OTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vY2FycGV0L21hcF8x ZF9hcnJheSIpLGk9dCgiLi4vY2FycGV0L21ha2VwYXRoIiksbz10KCIuLi8u Li9jb21wb25lbnRzL2RyYXdpbmciKSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgi Li4vY29udG91ci9tYWtlX2Nyb3NzaW5ncyIpLGM9dCgiLi4vY29udG91ci9m aW5kX2FsbF9wYXRocyIpLHU9dCgiLi4vY29udG91ci9wbG90IiksaD10KCIu Li9jb250b3VyL2NvbnN0YW50cyIpLGY9dCgiLi4vY29udG91ci9jb252ZXJ0 X3RvX2NvbnN0cmFpbnRzIikscD10KCIuLi9jb250b3VyL2VtcHR5X3BhdGhp bmZvIiksZD10KCIuLi9jb250b3VyL2Nsb3NlX2JvdW5kYXJpZXMiKSxnPXQo Ii4uL2NhcnBldC9sb29rdXBfY2FycGV0aWQiKSx2PXQoIi4uL2NhcnBldC9h eGlzX2FsaWduZWRfbGluZSIpO2Z1bmN0aW9uIG0odCxlLHIpe3ZhciBuPXQu Z2V0UG9pbnRBdExlbmd0aChlKSxhPXQuZ2V0UG9pbnRBdExlbmd0aChyKSxp PWEueC1uLngsbz1hLnktbi55LHM9TWF0aC5zcXJ0KGkqaStvKm8pO3JldHVy bltpL3Msby9zXX1mdW5jdGlvbiB5KHQpe3ZhciBlPU1hdGguc3FydCh0WzBd KnRbMF0rdFsxXSp0WzFdKTtyZXR1cm5bdFswXS9lLHRbMV0vZV19ZnVuY3Rp b24geCh0LGUpe3ZhciByPU1hdGguYWJzKHRbMF0qZVswXSt0WzFdKmVbMV0p O3JldHVybiBNYXRoLnNxcnQoMS1yKnIpL3J9ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyLGIpe3ZhciBfPWUueGF4aXMsdz1lLnlheGlzO3MubWFrZVRyYWNl R3JvdXBzKGIsciwiY29udG91ciIpLmVhY2goZnVuY3Rpb24ocil7dmFyIGI9 bi5zZWxlY3QodGhpcyksaz1yWzBdLFQ9ay50cmFjZSxNPVQuX2NhcnBldFRy YWNlPWcodCxUKSxBPXQuY2FsY2RhdGFbTS5pbmRleF1bMF07aWYoTS52aXNp YmxlJiYibGVnZW5kb25seSIhPT1NLnZpc2libGUpe3ZhciBTPWsuYSxFPWsu YixMPVQuY29udG91cnMsQz1wKEwsZSxrKSxQPSJjb25zdHJhaW50Ij09PUwu dHlwZSxPPUwuX29wZXJhdGlvbix6PVA/Ij0iPT09Tz8ibGluZXMiOiJmaWxs IjpMLmNvbG9yaW5nLEk9W1tTWzBdLEVbRS5sZW5ndGgtMV1dLFtTW1MubGVu Z3RoLTFdLEVbRS5sZW5ndGgtMV1dLFtTW1MubGVuZ3RoLTFdLEVbMF1dLFtT WzBdLEVbMF1dXTtsKEMpO3ZhciBEPTFlLTgqKFNbUy5sZW5ndGgtMV0tU1sw XSksUj0xZS04KihFW0UubGVuZ3RoLTFdLUVbMF0pO2MoQyxELFIpO3ZhciBG LEIsTixqLFY9QzsiY29uc3RyYWludCI9PT1MLnR5cGUmJihWPWYoQyxPKSks ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsaSxvLHMsbCxjLHU7Zm9yKHI9MDty PHQubGVuZ3RoO3IrKyl7Zm9yKGk9dFtyXSxvPWkucGVkZ2VwYXRocz1bXSxz PWkucHBhdGhzPVtdLG49MDtuPGkuZWRnZXBhdGhzLmxlbmd0aDtuKyspe2Zv cih1PWkuZWRnZXBhdGhzW25dLGw9W10sYT0wO2E8dS5sZW5ndGg7YSsrKWxb YV09ZSh1W2FdKTtvLnB1c2gobCl9Zm9yKG49MDtuPGkucGF0aHMubGVuZ3Ro O24rKyl7Zm9yKHU9aS5wYXRoc1tuXSxjPVtdLGE9MDthPHUubGVuZ3RoO2Er KyljW2FdPWUodVthXSk7cy5wdXNoKGMpfX19KEMsSCk7dmFyIFU9W107Zm9y KGo9QS5jbGlwc2VnbWVudHMubGVuZ3RoLTE7aj49MDtqLS0pRj1BLmNsaXBz ZWdtZW50c1tqXSxCPWEoW10sRi54LF8uYzJwKSxOPWEoW10sRi55LHcuYzJw KSxCLnJldmVyc2UoKSxOLnJldmVyc2UoKSxVLnB1c2goaShCLE4sRi5iaWN1 YmljKSk7dmFyIHE9Ik0iK1Uuam9pbigiTCIpKyJaIjshZnVuY3Rpb24odCxl LHIsbixvLGwpe3ZhciBjLHUsaCxmLHA9cy5lbnN1cmVTaW5nbGUodCwiZyIs ImNvbnRvdXJiZyIpLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEoImZpbGwiIT09 bHx8bz9bXTpbMF0pO3AuZW50ZXIoKS5hcHBlbmQoInBhdGgiKSxwLmV4aXQo KS5yZW1vdmUoKTt2YXIgZD1bXTtmb3IoZj0wO2Y8ZS5sZW5ndGg7ZisrKWM9 ZVtmXSx1PWEoW10sYy54LHIuYzJwKSxoPWEoW10sYy55LG4uYzJwKSxkLnB1 c2goaSh1LGgsYy5iaWN1YmljKSk7cC5hdHRyKCJkIiwiTSIrZC5qb2luKCJM IikrIloiKS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfShiLEEuY2xpcHNlZ21l bnRzLF8sdyxQLHopLGZ1bmN0aW9uKHQsZSxyLGEsaSxsLGMsdSxoLGYscCl7 dmFyIGc9ImZpbGwiPT09ZjtnJiZkKGksdC5jb250b3Vycyk7dmFyIG09cy5l bnN1cmVTaW5nbGUoZSwiZyIsImNvbnRvdXJmaWxsIikuc2VsZWN0QWxsKCJw YXRoIikuZGF0YShnP2k6W10pO20uZW50ZXIoKS5hcHBlbmQoInBhdGgiKSxt LmV4aXQoKS5yZW1vdmUoKSxtLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9KHQu cHJlZml4Qm91bmRhcnk/cDoiIikrZnVuY3Rpb24odCxlLHIsbixhLGksbCxj KXt2YXIgdSxoLGYscCxkLGcsbSx5PSIiLHg9ZS5lZGdlcGF0aHMubWFwKGZ1 bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSxiPSEwLF89MWUtNCpNYXRoLmFicyhy WzBdWzBdLXJbMl1bMF0pLHc9MWUtNCpNYXRoLmFicyhyWzBdWzFdLXJbMl1b MV0pO2Z1bmN0aW9uIGsodCl7cmV0dXJuIE1hdGguYWJzKHRbMV0tclswXVsx XSk8d31mdW5jdGlvbiBUKHQpe3JldHVybiBNYXRoLmFicyh0WzFdLXJbMl1b MV0pPHd9ZnVuY3Rpb24gTSh0KXtyZXR1cm4gTWF0aC5hYnModFswXS1yWzBd WzBdKTxffWZ1bmN0aW9uIEEodCl7cmV0dXJuIE1hdGguYWJzKHRbMF0tclsy XVswXSk8X31mdW5jdGlvbiBTKHQsZSl7dmFyIHIsbixvLHMsdT0iIjtmb3Io ayh0KSYmIUEodCl8fFQodCkmJiFNKHQpPyhzPWEuYWF4aXMsbz12KGEsaSxb dFswXSxlWzBdXSwuNSoodFsxXStlWzFdKSkpOihzPWEuYmF4aXMsbz12KGEs aSwuNSoodFswXStlWzBdKSxbdFsxXSxlWzFdXSkpLHI9MTtyPG8ubGVuZ3Ro O3IrKylmb3IodSs9cy5zbW9vdGhpbmc/IkMiOiJMIixuPTA7bjxvW3JdLmxl bmd0aDtuKyspe3ZhciBoPW9bcl1bbl07dSs9W2wuYzJwKGhbMF0pLGMuYzJw KGhbMV0pXSsiICJ9cmV0dXJuIHV9dT0wLGg9bnVsbDtmb3IoO3gubGVuZ3Ro Oyl7dmFyIEU9ZS5lZGdlcGF0aHNbdV1bMF07Zm9yKGgmJih5Kz1TKGgsRSkp LG09by5zbW9vdGhvcGVuKGUuZWRnZXBhdGhzW3VdLm1hcChuKSxlLnNtb290 aGluZykseSs9Yj9tOm0ucmVwbGFjZSgvXk0vLCJMIikseC5zcGxpY2UoeC5p bmRleE9mKHUpLDEpLGg9ZS5lZGdlcGF0aHNbdV1bZS5lZGdlcGF0aHNbdV0u bGVuZ3RoLTFdLGQ9LTEscD0wO3A8NDtwKyspe2lmKCFoKXtzLmxvZygiTWlz c2luZyBlbmQ/Iix1LGUpO2JyZWFrfWZvcihrKGgpJiYhQShoKT9mPXJbMV06 TShoKT9mPXJbMF06VChoKT9mPXJbM106QShoKSYmKGY9clsyXSksZz0wO2c8 ZS5lZGdlcGF0aHMubGVuZ3RoO2crKyl7dmFyIEw9ZS5lZGdlcGF0aHNbZ11b MF07TWF0aC5hYnMoaFswXS1mWzBdKTxfP01hdGguYWJzKGhbMF0tTFswXSk8 XyYmKExbMV0taFsxXSkqKGZbMV0tTFsxXSk+PTAmJihmPUwsZD1nKTpNYXRo LmFicyhoWzFdLWZbMV0pPHc/TWF0aC5hYnMoaFsxXS1MWzFdKTx3JiYoTFsw XS1oWzBdKSooZlswXS1MWzBdKT49MCYmKGY9TCxkPWcpOnMubG9nKCJlbmRw dCB0byBuZXdlbmRwdCBpcyBub3QgdmVydC4gb3IgaG9yei4iLGgsZixMKX1p ZihkPj0wKWJyZWFrO3krPVMoaCxmKSxoPWZ9aWYoZD09PWUuZWRnZXBhdGhz Lmxlbmd0aCl7cy5sb2coInVuY2xvc2VkIHBlcmltZXRlciBwYXRoIik7YnJl YWt9dT1kLChiPS0xPT09eC5pbmRleE9mKHUpKSYmKHU9eFswXSx5Kz1TKGgs ZikrIloiLGg9bnVsbCl9Zm9yKHU9MDt1PGUucGF0aHMubGVuZ3RoO3UrKyl5 Kz1vLnNtb290aGNsb3NlZChlLnBhdGhzW3VdLm1hcChuKSxlLnNtb290aGlu Zyk7cmV0dXJuIHl9KDAsdCxsLGMsdSxoLHIsYSk7ZT9uLnNlbGVjdCh0aGlz KS5hdHRyKCJkIixlKS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpOm4uc2VsZWN0 KHRoaXMpLnJlbW92ZSgpfSl9KFQsYixfLHcsVixJLEgsTSxBLHoscSksZnVu Y3Rpb24odCxlLHIsYSxpLGwsYyl7dmFyIGY9cy5lbnN1cmVTaW5nbGUodCwi ZyIsImNvbnRvdXJsaW5lcyIpLHA9ITEhPT1pLnNob3dsaW5lcyxkPWkuc2hv d2xhYmVscyxnPXAmJmQsdj11LmNyZWF0ZUxpbmVzKGYscHx8ZCxlKSxiPXUu Y3JlYXRlTGluZUNsaXAoZixnLHIsYS50cmFjZS51aWQpLF89dC5zZWxlY3RB bGwoImcuY29udG91cmxhYmVscyIpLmRhdGEoZD9bMF06W10pO2lmKF8uZXhp dCgpLnJlbW92ZSgpLF8uZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJj b250b3VybGFiZWxzIiwhMCksZCl7dmFyIHc9bC54YXhpcyxrPWwueWF4aXMs VD13Ll9sZW5ndGgsTT1rLl9sZW5ndGgsQT1bW1swLDBdLFtULDBdLFtULE1d LFswLE1dXV0sUz1bXTtzLmNsZWFyTG9jYXRpb25DYWNoZSgpO3ZhciBFPXUu bGFiZWxGb3JtYXR0ZXIocixhKSxMPW8udGVzdGVyLmFwcGVuZCgidGV4dCIp LmF0dHIoImRhdGEtbm90ZXgiLDEpLmNhbGwoby5mb250LGkubGFiZWxmb250 KSxDPXtsZWZ0OjAscmlnaHQ6VCxjZW50ZXI6VC8yLHRvcDowLGJvdHRvbTpN LG1pZGRsZTpNLzJ9LFA9TWF0aC5zcXJ0KFQqVCtNKk0pLE89aC5MQUJFTERJ U1RBTkNFKlAvTWF0aC5tYXgoMSxlLmxlbmd0aC9oLkxBQkVMSU5DUkVBU0Up O3YuZWFjaChmdW5jdGlvbih0KXt2YXIgZT11LmNhbGNUZXh0T3B0cyh0Lmxl dmVsLEUsTCxyKTtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgiKS5l YWNoKGZ1bmN0aW9uKHIpe3ZhciBuPXMuZ2V0VmlzaWJsZVNlZ21lbnQodGhp cyxDLGUuaGVpZ2h0LzIpO2lmKG4mJihmdW5jdGlvbih0LGUscixuLGEsaSl7 Zm9yKHZhciBvLHM9MDtzPHIucGVkZ2VwYXRocy5sZW5ndGg7cysrKWU9PT1y LnBlZGdlcGF0aHNbc10mJihvPXIuZWRnZXBhdGhzW3NdKTtpZighbylyZXR1 cm47dmFyIGw9YS5hWzBdLGM9YS5hW2EuYS5sZW5ndGgtMV0sdT1hLmJbMF0s aD1hLmJbYS5iLmxlbmd0aC0xXTtmdW5jdGlvbiBmKHQsZSl7dmFyIHIsbj0w O3JldHVybihNYXRoLmFicyh0WzBdLWwpPC4xfHxNYXRoLmFicyh0WzBdLWMp PC4xKSYmKHI9eShhLmR4eWRiX3JvdWdoKHRbMF0sdFsxXSwuMSkpLG49TWF0 aC5tYXgobixpKngoZSxyKS8yKSksKE1hdGguYWJzKHRbMV0tdSk8LjF8fE1h dGguYWJzKHRbMV0taCk8LjEpJiYocj15KGEuZHh5ZGFfcm91Z2godFswXSx0 WzFdLC4xKSksbj1NYXRoLm1heChuLGkqeChlLHIpLzIpKSxufXZhciBwPW0o dCwwLDEpLGQ9bSh0LG4udG90YWwsbi50b3RhbC0xKSxnPWYob1swXSxwKSx2 PW4udG90YWwtZihvW28ubGVuZ3RoLTFdLGQpO24ubWluPGcmJihuLm1pbj1n KTtuLm1heD52JiYobi5tYXg9dik7bi5sZW49bi5tYXgtbi5taW59KHRoaXMs cix0LG4sYyxlLmhlaWdodCksIShuLmxlbjwoZS53aWR0aCtlLmhlaWdodCkq aC5MQUJFTE1JTikpKWZvcih2YXIgYT1NYXRoLm1pbihNYXRoLmNlaWwobi5s ZW4vTyksaC5MQUJFTE1BWCksaT0wO2k8YTtpKyspe3ZhciBvPXUuZmluZEJl c3RUZXh0TG9jYXRpb24odGhpcyxuLGUsUyxDKTtpZighbylicmVhazt1LmFk ZExhYmVsRGF0YShvLGUsUyxBKX19KX0pLEwucmVtb3ZlKCksdS5kcmF3TGFi ZWxzKF8sUyxyLGIsZz9BOm51bGwpfWQmJiFwJiZ2LnJlbW92ZSgpfShiLEMs dCxrLEwsZSxNKSxvLnNldENsaXBVcmwoYixNLl9jbGlwUGF0aElkLHQpfWZ1 bmN0aW9uIEgodCl7dmFyIGU9TS5hYjJ4eSh0WzBdLHRbMV0sITApO3JldHVy bltfLmMycChlWzBdKSx3LmMycChlWzFdKV19fSl9fSx7Ii4uLy4uL2NvbXBv bmVudHMvZHJhd2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vY2FycGV0 L2F4aXNfYWxpZ25lZF9saW5lIjo5MDAsIi4uL2NhcnBldC9sb29rdXBfY2Fy cGV0aWQiOjkxNiwiLi4vY2FycGV0L21ha2VwYXRoIjo5MTcsIi4uL2NhcnBl dC9tYXBfMWRfYXJyYXkiOjkxOCwiLi4vY29udG91ci9jbG9zZV9ib3VuZGFy aWVzIjo5NDUsIi4uL2NvbnRvdXIvY29uc3RhbnRzIjo5NDcsIi4uL2NvbnRv dXIvY29udmVydF90b19jb25zdHJhaW50cyI6OTUxLCIuLi9jb250b3VyL2Vt cHR5X3BhdGhpbmZvIjo5NTMsIi4uL2NvbnRvdXIvZmluZF9hbGxfcGF0aHMi Ojk1NSwiLi4vY29udG91ci9tYWtlX2Nyb3NzaW5ncyI6OTYwLCIuLi9jb250 b3VyL3Bsb3QiOjk2MSxkMzoxNjV9XSw5NzA6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNj YWxlL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0 dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuLi8uLi9wbG90 cy9hdHRyaWJ1dGVzIiksbz10KCIuLi9zY2F0dGVybWFwYm94L2F0dHJpYnV0 ZXMiKSxzPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0O2UuZXhw b3J0cz1zKHtsb246by5sb24sbGF0Om8ubGF0LHo6e3ZhbFR5cGU6ImRhdGFf YXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0scmFkaXVzOnt2YWxUeXBlOiJudW1i ZXIiLGVkaXRUeXBlOiJwbG90IixhcnJheU9rOiEwLG1pbjoxLGRmbHQ6MzB9 LGJlbG93Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJwbG90In0sdGV4 dDpvLnRleHQsaG92ZXJ0ZXh0Om8uaG92ZXJ0ZXh0LGhvdmVyaW5mbzpzKHt9 LGkuaG92ZXJpbmZvLHtmbGFnczpbImxvbiIsImxhdCIsInoiLCJ0ZXh0Iiwi bmFtZSJdfSksaG92ZXJ0ZW1wbGF0ZTphKCksc2hvd2xlZ2VuZDpzKHt9LGku c2hvd2xlZ2VuZCx7ZGZsdDohMX0pfSxuKCIiLHtjTGV0dGVyOiJ6IixlZGl0 VHlwZU92ZXJyaWRlOiJjYWxjIn0pKX0seyIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3 MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMv dGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9zY2F0dGVybWFwYm94L2F0 dHJpYnV0ZXMiOjExODR9XSw5NzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xp YiIpLmlzQXJyYXlPclR5cGVkQXJyYXksaT10KCIuLi8uLi9jb25zdGFudHMv bnVtZXJpY2FsIikuQkFETlVNLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xv cnNjYWxlL2NhbGMiKSxzPXQoIi4uLy4uL2xpYiIpLl87ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUuX2xlbmd0aCxsPW5ldyBBcnJheShy KSxjPWUueix1PWEoYykmJmMubGVuZ3RoLGg9MDtoPHI7aCsrKXt2YXIgZj1s W2hdPXt9LHA9ZS5sb25baF0sZD1lLmxhdFtoXTtpZihmLmxvbmxhdD1uKHAp JiZuKGQpP1srcCwrZF06W2ksaV0sdSl7dmFyIGc9Y1toXTtmLno9bihnKT9n Oml9fXJldHVybiBvKHQsZSx7dmFsczp1P2M6WzAsMV0sY29udGFpbmVyU3Ry OiIiLGNMZXR0ZXI6InoifSksciYmKGxbMF0udD17bGFiZWxzOntsYXQ6cyh0 LCJsYXQ6IikrIiAiLGxvbjpzKHQsImxvbjoiKSsiICJ9fSksbH19LHsiLi4v Li4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjYwMCwiLi4vLi4vY29u c3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiZmFzdC1p c251bWVyaWMiOjIyOH1dLDk3MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGli IiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUiKSxzPXQoIi4uLy4uL2NvbnN0YW50cy9u dW1lcmljYWwiKS5CQUROVU0sbD10KCIuLi8uLi9saWIvZ2VvanNvbl91dGls cyIpLm1ha2VCbGFuaztlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dFsw XS50cmFjZSxyPSEwPT09ZS52aXNpYmxlJiYwIT09ZS5fbGVuZ3RoLGM9ZS5f b3B0cz17aGVhdG1hcDp7bGF5b3V0Ont2aXNpYmlsaXR5OiJub25lIn0scGFp bnQ6e319LGdlb2pzb246bCgpfTtpZighcilyZXR1cm4gYzt2YXIgdSxoPVtd LGY9ZS56LHA9ZS5yYWRpdXMsZD1hLmlzQXJyYXlPclR5cGVkQXJyYXkoZikm JmYubGVuZ3RoLGc9YS5pc0FycmF5T3JUeXBlZEFycmF5KHApO2Zvcih1PTA7 dTx0Lmxlbmd0aDt1Kyspe3ZhciB2PXRbdV0sbT12LmxvbmxhdDtpZihtWzBd IT09cyl7dmFyIHk9e307aWYoZCl7dmFyIHg9di56O3kuej14IT09cz94OjB9 ZyYmKHkucj1uKHBbdV0pJiZwW3VdPjA/K3BbdV06MCksaC5wdXNoKHt0eXBl OiJGZWF0dXJlIixnZW9tZXRyeTp7dHlwZToiUG9pbnQiLGNvb3JkaW5hdGVz Om19LHByb3BlcnRpZXM6eX0pfX12YXIgYj1vLmV4dHJhY3RPcHRzKGUpLF89 Yi5yZXZlcnNlc2NhbGU/by5mbGlwU2NhbGUoYi5jb2xvcnNjYWxlKTpiLmNv bG9yc2NhbGUsdz1fWzBdWzFdLGs9WyJpbnRlcnBvbGF0ZSIsWyJsaW5lYXIi XSxbImhlYXRtYXAtZGVuc2l0eSJdLDAsaS5vcGFjaXR5KHcpPDE/dzppLmFk ZE9wYWNpdHkodywwKV07Zm9yKHU9MTt1PF8ubGVuZ3RoO3UrKylrLnB1c2go X1t1XVswXSxfW3VdWzFdKTt2YXIgVD1bImludGVycG9sYXRlIixbImxpbmVh ciJdLFsiZ2V0IiwieiJdLGIubWluLDAsYi5tYXgsMV07cmV0dXJuIGEuZXh0 ZW5kRmxhdChjLmhlYXRtYXAucGFpbnQseyJoZWF0bWFwLXdlaWdodCI6ZD9U OjEvKGIubWF4LWIubWluKSwiaGVhdG1hcC1jb2xvciI6aywiaGVhdG1hcC1y YWRpdXMiOmc/e3R5cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToiciJ9OmUucmFk aXVzLCJoZWF0bWFwLW9wYWNpdHkiOmUub3BhY2l0eX0pLGMuZ2VvanNvbj17 dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOmh9LGMuaGVhdG1h cC5sYXlvdXQudmlzaWJpbGl0eT0idmlzaWJsZSIsY319LHsiLi4vLi4vY29t cG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUiOjYwNCwiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8u Li9saWIiOjcxNywiLi4vLi4vbGliL2dlb2pzb25fdXRpbHMiOjcxMiwiZmFz dC1pc251bWVyaWMiOjIyOH1dLDk3MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBv bmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLGk9dCgiLi9hdHRyaWJ1dGVz Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe2Z1bmN0aW9uIHMocixh KXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX12YXIgbD1zKCJsb24iKXx8 W10sYz1zKCJsYXQiKXx8W10sdT1NYXRoLm1pbihsLmxlbmd0aCxjLmxlbmd0 aCk7dT8oZS5fbGVuZ3RoPXUscygieiIpLHMoInJhZGl1cyIpLHMoImJlbG93 IikscygidGV4dCIpLHMoImhvdmVydGV4dCIpLHMoImhvdmVydGVtcGxhdGUi KSxhKHQsZSxvLHMse3ByZWZpeDoiIixjTGV0dGVyOiJ6In0pKTplLnZpc2li bGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0 cyI6NjAyLCIuLi8uLi9saWIiOjcxNywiLi9hdHRyaWJ1dGVzIjo5NzB9XSw5 NzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHQubG9uPWUubG9uLHQubGF0PWUubGF0LHQu ej1lLnosdH19LHt9XSw5NzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhlcyIpLGk9dCgiLi4vc2NhdHRlcm1hcGJveC9ob3ZlciIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG89aSh0LGUscik7aWYobyl7 dmFyIHM9b1swXSxsPXMuY2QsYz1sWzBdLnRyYWNlLHU9bFtzLmluZGV4XTtp ZihkZWxldGUgcy5jb2xvciwieiJpbiB1KXt2YXIgaD1zLnN1YnBsb3QubW9j a0F4aXM7cy56PXUueixzLnpMYWJlbD1hLnRpY2tUZXh0KGgsaC5jMmwodS56 KSwiaG92ZXIiKS50ZXh0fXJldHVybiBzLmV4dHJhVGV4dD1mdW5jdGlvbih0 LGUscil7aWYodC5ob3ZlcnRlbXBsYXRlKXJldHVybjt2YXIgYT0oZS5oaXx8 dC5ob3ZlcmluZm8pLnNwbGl0KCIrIiksaT0tMSE9PWEuaW5kZXhPZigiYWxs Iiksbz0tMSE9PWEuaW5kZXhPZigibG9uIikscz0tMSE9PWEuaW5kZXhPZigi bGF0IiksbD1lLmxvbmxhdCxjPVtdO2Z1bmN0aW9uIHUodCl7cmV0dXJuIHQr Ilx4YjAifWl8fG8mJnM/Yy5wdXNoKCIoIit1KGxbMF0pKyIsICIrdShsWzFd KSsiKSIpOm8/Yy5wdXNoKHIubG9uK3UobFswXSkpOnMmJmMucHVzaChyLmxh dCt1KGxbMV0pKTsoaXx8LTEhPT1hLmluZGV4T2YoInRleHQiKSkmJm4uZmls bFRleHQoZSx0LGMpO3JldHVybiBjLmpvaW4oIjxicj4iKX0oYyx1LGxbMF0u dC5sYWJlbHMpLFtzXX19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9zY2F0dGVybWFwYm94L2hvdmVy IjoxMTg5fV0sOTc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlE ZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6dCgiLi4vaGVhdG1h cC9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0KCIuLi9zY2F0dGVybWFwYm94 L2Zvcm1hdF9sYWJlbHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9w bG90IiksaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLGV2ZW50RGF0YTp0KCIu L2V2ZW50X2RhdGEiKSxnZXRCZWxvdzpmdW5jdGlvbih0LGUpe2Zvcih2YXIg cj1lLmdldE1hcExheWVycygpLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGE9 cltuXSxpPWEuaWQ7aWYoInN5bWJvbCI9PT1hLnR5cGUmJiJzdHJpbmciPT10 eXBlb2YgaSYmLTE9PT1pLmluZGV4T2YoInBsb3RseS0iKSlyZXR1cm4gaX19 LG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJkZW5zaXR5bWFwYm94IixiYXNl UGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9tYXBib3giKSxjYXRlZ29yaWVz OlsibWFwYm94IiwiZ2wiLCJzaG93TGVnZW5kIl0sbWV0YTp7aHJfbmFtZToi ZGVuc2l0eV9tYXBib3gifX19LHsiLi4vLi4vcGxvdHMvbWFwYm94Ijo4MjAs Ii4uL2hlYXRtYXAvY29sb3JiYXIiOjEwMDMsIi4uL3NjYXR0ZXJtYXBib3gv Zm9ybWF0X2xhYmVscyI6MTE4OCwiLi9hdHRyaWJ1dGVzIjo5NzAsIi4vY2Fs YyI6OTcxLCIuL2RlZmF1bHRzIjo5NzMsIi4vZXZlbnRfZGF0YSI6OTc0LCIu L2hvdmVyIjo5NzUsIi4vcGxvdCI6OTc3fV0sOTc3OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29udmVydCIpLGE9dCgiLi4v Li4vcGxvdHMvbWFwYm94L2NvbnN0YW50cyIpLnRyYWNlTGF5ZXJQcmVmaXg7 ZnVuY3Rpb24gaSh0LGUpe3RoaXMudHlwZT0iZGVuc2l0eW1hcGJveCIsdGhp cy5zdWJwbG90PXQsdGhpcy51aWQ9ZSx0aGlzLnNvdXJjZUlkPSJzb3VyY2Ut IitlLHRoaXMubGF5ZXJMaXN0PVtbImhlYXRtYXAiLGErZSsiLWhlYXRtYXAi XV0sdGhpcy5iZWxvdz1udWxsfXZhciBvPWkucHJvdG90eXBlO28udXBkYXRl PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3VicGxvdCxyPXRoaXMubGF5ZXJM aXN0LGE9bih0KSxpPWUuYmVsb3dMb29rdXBbInRyYWNlLSIrdGhpcy51aWRd O2UubWFwLmdldFNvdXJjZSh0aGlzLnNvdXJjZUlkKS5zZXREYXRhKGEuZ2Vv anNvbiksaSE9PXRoaXMuYmVsb3cmJih0aGlzLl9yZW1vdmVMYXllcnMoKSx0 aGlzLl9hZGRMYXllcnMoYSxpKSx0aGlzLmJlbG93PWkpO2Zvcih2YXIgbz0w O288ci5sZW5ndGg7bysrKXt2YXIgcz1yW29dLGw9c1swXSxjPXNbMV0sdT1h W2xdO2Uuc2V0T3B0aW9ucyhjLCJzZXRMYXlvdXRQcm9wZXJ0eSIsdS5sYXlv dXQpLCJ2aXNpYmxlIj09PXUubGF5b3V0LnZpc2liaWxpdHkmJmUuc2V0T3B0 aW9ucyhjLCJzZXRQYWludFByb3BlcnR5Iix1LnBhaW50KX19LG8uX2FkZExh eWVycz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLnN1YnBsb3Qsbj10 aGlzLmxheWVyTGlzdCxhPXRoaXMuc291cmNlSWQsaT0wO2k8bi5sZW5ndGg7 aSsrKXt2YXIgbz1uW2ldLHM9b1swXSxsPXRbc107ci5hZGRMYXllcih7dHlw ZTpzLGlkOm9bMV0sc291cmNlOmEsbGF5b3V0OmwubGF5b3V0LHBhaW50Omwu cGFpbnR9LGUpfX0sby5fcmVtb3ZlTGF5ZXJzPWZ1bmN0aW9uKCl7Zm9yKHZh ciB0PXRoaXMuc3VicGxvdC5tYXAsZT10aGlzLmxheWVyTGlzdCxyPWUubGVu Z3RoLTE7cj49MDtyLS0pdC5yZW1vdmVMYXllcihlW3JdWzFdKX0sby5kaXNw b3NlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdWJwbG90Lm1hcDt0aGlzLl9y ZW1vdmVMYXllcnMoKSx0LnJlbW92ZVNvdXJjZSh0aGlzLnNvdXJjZUlkKX0s ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXS50cmFjZSxhPW5l dyBpKHQsci51aWQpLG89YS5zb3VyY2VJZCxzPW4oZSksbD1hLmJlbG93PXQu YmVsb3dMb29rdXBbInRyYWNlLSIrci51aWRdO3JldHVybiB0Lm1hcC5hZGRT b3VyY2Uobyx7dHlwZToiZ2VvanNvbiIsZGF0YTpzLmdlb2pzb259KSxhLl9h ZGRMYXllcnMocyxsKSxhfX0seyIuLi8uLi9wbG90cy9tYXBib3gvY29uc3Rh bnRzIjo4MTgsIi4vY29udmVydCI6OTcyfV0sOTc4OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXRb cl0uaT1yO24ubWVyZ2VBcnJheShlLnRleHQsdCwidHgiKSxuLm1lcmdlQXJy YXkoZS5ob3ZlcnRleHQsdCwiaHR4Iik7dmFyIGE9ZS5tYXJrZXI7aWYoYSl7 bi5tZXJnZUFycmF5KGEub3BhY2l0eSx0LCJtbyIpLG4ubWVyZ2VBcnJheShh LmNvbG9yLHQsIm1jIik7dmFyIGk9YS5saW5lO2kmJihuLm1lcmdlQXJyYXko aS5jb2xvcix0LCJtbGMiKSxuLm1lcmdlQXJyYXlDYXN0UG9zaXRpdmUoaS53 aWR0aCx0LCJtbHciKSl9fX0seyIuLi8uLi9saWIiOjcxN31dLDk3OTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9iYXIvYXR0 cmlidXRlcyIpLGE9dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIikubGluZSxp PXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3Rz L3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMscz10 KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBs YXRlQXR0cnMsbD10KCIuL2NvbnN0YW50cyIpLGM9dCgiLi4vLi4vbGliL2V4 dGVuZCIpLmV4dGVuZEZsYXQsdT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9y Iik7ZS5leHBvcnRzPXt4Om4ueCx4MDpuLngwLGR4Om4uZHgseTpuLnkseTA6 bi55MCxkeTpuLmR5LGhvdmVydGV4dDpuLmhvdmVydGV4dCxob3ZlcnRlbXBs YXRlOm8oe30se2tleXM6bC5ldmVudERhdGFLZXlzfSksaG92ZXJpbmZvOmMo e30saS5ob3ZlcmluZm8se2ZsYWdzOlsibmFtZSIsIngiLCJ5IiwidGV4dCIs InBlcmNlbnQgaW5pdGlhbCIsInBlcmNlbnQgcHJldmlvdXMiLCJwZXJjZW50 IHRvdGFsIl19KSx0ZXh0aW5mbzp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdz OlsibGFiZWwiLCJ0ZXh0IiwicGVyY2VudCBpbml0aWFsIiwicGVyY2VudCBw cmV2aW91cyIsInBlcmNlbnQgdG90YWwiLCJ2YWx1ZSJdLGV4dHJhczpbIm5v bmUiXSxlZGl0VHlwZToicGxvdCIsYXJyYXlPazohMX0sdGV4dHRlbXBsYXRl OnMoe2VkaXRUeXBlOiJwbG90In0se2tleXM6bC5ldmVudERhdGFLZXlzLmNv bmNhdChbImxhYmVsIiwidmFsdWUiXSl9KSx0ZXh0Om4udGV4dCx0ZXh0cG9z aXRpb246Yyh7fSxuLnRleHRwb3NpdGlvbix7ZGZsdDoiYXV0byJ9KSxpbnNp ZGV0ZXh0YW5jaG9yOmMoe30sbi5pbnNpZGV0ZXh0YW5jaG9yLHtkZmx0OiJt aWRkbGUifSksdGV4dGFuZ2xlOmMoe30sbi50ZXh0YW5nbGUse2RmbHQ6MH0p LHRleHRmb250Om4udGV4dGZvbnQsaW5zaWRldGV4dGZvbnQ6bi5pbnNpZGV0 ZXh0Zm9udCxvdXRzaWRldGV4dGZvbnQ6bi5vdXRzaWRldGV4dGZvbnQsY29u c3RyYWludGV4dDpuLmNvbnN0cmFpbnRleHQsY2xpcG9uYXhpczpuLmNsaXBv bmF4aXMsb3JpZW50YXRpb246Yyh7fSxuLm9yaWVudGF0aW9uLHt9KSxvZmZz ZXQ6Yyh7fSxuLm9mZnNldCx7YXJyYXlPazohMX0pLHdpZHRoOmMoe30sbi53 aWR0aCx7YXJyYXlPazohMX0pLG1hcmtlcjpuLm1hcmtlcixjb25uZWN0b3I6 e2ZpbGxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9 LGxpbmU6e2NvbG9yOmMoe30sYS5jb2xvcix7ZGZsdDp1LmRlZmF1bHRMaW5l fSksd2lkdGg6Yyh7fSxhLndpZHRoLHtkZmx0OjAsZWRpdFR5cGU6InBsb3Qi fSksZGFzaDphLmRhc2gsZWRpdFR5cGU6InN0eWxlIn0sdmlzaWJsZTp7dmFs VHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToicGxvdCJ9LGVkaXRU eXBlOiJwbG90In0sb2Zmc2V0Z3JvdXA6bi5vZmZzZXRncm91cCxhbGlnbm1l bnRncm91cDpuLmFsaWdubWVudGdyb3VwfX0seyIuLi8uLi9jb21wb25lbnRz L2NvbG9yIjo1OTIsIi4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxv dHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRy aWJ1dGVzIjo4NDEsIi4uL2Jhci9hdHRyaWJ1dGVzIjo4NTYsIi4uL3NjYXR0 ZXIvYXR0cmlidXRlcyI6MTEyMCwiLi9jb25zdGFudHMiOjk4MX1dLDk4MDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9w bG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGE9dCgiLi9hcnJheXNfdG9fY2FsY2Rh dGEiKSxpPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKSxvPXQoIi4u Ly4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU07ZnVuY3Rpb24gcyh0 KXtyZXR1cm4gdD09PW8/MDp0fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Zh ciByLGwsYyx1LGg9bi5nZXRGcm9tSWQodCxlLnhheGlzfHwieCIpLGY9bi5n ZXRGcm9tSWQodCxlLnlheGlzfHwieSIpOyJoIj09PWUub3JpZW50YXRpb24/ KHI9aC5tYWtlQ2FsY2RhdGEoZSwieCIpLGw9Zi5tYWtlQ2FsY2RhdGEoZSwi eSIpKToocj1mLm1ha2VDYWxjZGF0YShlLCJ5IiksbD1oLm1ha2VDYWxjZGF0 YShlLCJ4IikpO3ZhciBwLGQ9TWF0aC5taW4obC5sZW5ndGgsci5sZW5ndGgp LGc9bmV3IEFycmF5KGQpO2ZvcihlLl9iYXNlPVtdLGM9MDtjPGQ7YysrKXty W2NdPDAmJihyW2NdPW8pO3ZhciB2PSExO3JbY10hPT1vJiZjKzE8ZCYmcltj KzFdIT09byYmKHY9ITApLHU9Z1tjXT17cDpsW2NdLHM6cltjXSxjTmV4dDp2 fSxlLl9iYXNlW2NdPS0uNSp1LnMsZS5pZHMmJih1LmlkPVN0cmluZyhlLmlk c1tjXSkpLDA9PT1jJiYoZ1swXS52VG90YWw9MCksZ1swXS52VG90YWwrPXMo dS5zKSx1LmJlZ1I9cyh1LnMpL3MoZ1swXS5zKX1mb3IoYz0wO2M8ZDtjKysp KHU9Z1tjXSkucyE9PW8mJih1LnN1bVI9dS5zL2dbMF0udlRvdGFsLHUuZGlm Uj12b2lkIDAhPT1wP3Uucy9wOjEscD11LnMpO3JldHVybiBhKGcsZSksaShn LGUpLGd9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4vc2NhdHRlci9jYWxj X3NlbGVjdGlvbiI6MTEyMiwiLi9hcnJheXNfdG9fY2FsY2RhdGEiOjk3OH1d LDk4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 e2V2ZW50RGF0YUtleXM6WyJwZXJjZW50SW5pdGlhbCIsInBlcmNlbnRQcmV2 aW91cyIsInBlcmNlbnRUb3RhbCJdfX0se31dLDk4MjpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9iYXIvY3Jvc3NfdHJhY2Vf Y2FsYyIpLnNldEdyb3VwUG9zaXRpb25zO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe3ZhciByLGEsaT10Ll9mdWxsTGF5b3V0LG89dC5fZnVsbERhdGEscz10 LmNhbGNkYXRhLGw9ZS54YXhpcyxjPWUueWF4aXMsdT1bXSxoPVtdLGY9W107 Zm9yKGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIHA9b1thXSxkPSJoIj09PXAu b3JpZW50YXRpb247ITA9PT1wLnZpc2libGUmJnAueGF4aXM9PT1sLl9pZCYm cC55YXhpcz09PWMuX2lkJiYiZnVubmVsIj09PXAudHlwZSYmKHI9c1thXSxk P2YucHVzaChyKTpoLnB1c2gociksdS5wdXNoKHIpKX12YXIgZz17bW9kZTpp LmZ1bm5lbG1vZGUsbm9ybTppLmZ1bm5lbG5vcm0sZ2FwOmkuZnVubmVsZ2Fw LGdyb3VwZ2FwOmkuZnVubmVsZ3JvdXBnYXB9O2ZvcihuKHQsbCxjLGgsZyks bih0LGMsbCxmLGcpLGE9MDthPHUubGVuZ3RoO2ErKyl7cj11W2FdO2Zvcih2 YXIgdj0wO3Y8ci5sZW5ndGg7disrKXYrMTxyLmxlbmd0aCYmKHJbdl0ubmV4 dFAwPXJbdisxXS5wMCxyW3ZdLm5leHRTMD1yW3YrMV0uczAsclt2XS5uZXh0 UDE9clt2KzFdLnAxLHJbdl0ubmV4dFMxPXJbdisxXS5zMSl9fX0seyIuLi9i YXIvY3Jvc3NfdHJhY2VfY2FsYyI6ODU5fV0sOTgzOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4v YmFyL2RlZmF1bHRzIikuaGFuZGxlR3JvdXBpbmdEZWZhdWx0cyxpPXQoIi4u L2Jhci9kZWZhdWx0cyIpLmhhbmRsZVRleHQsbz10KCIuLi9zY2F0dGVyL3h5 X2RlZmF1bHRzIikscz10KCIuL2F0dHJpYnV0ZXMiKSxsPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3IiKTtlLmV4cG9ydHM9e3N1cHBseURlZmF1bHRzOmZ1 bmN0aW9uKHQsZSxyLGEpe2Z1bmN0aW9uIGMocixhKXtyZXR1cm4gbi5jb2Vy Y2UodCxlLHMscixhKX1pZihvKHQsZSxhLGMpKXtjKCJvcmllbnRhdGlvbiIs ZS55JiYhZS54PyJ2IjoiaCIpLGMoIm9mZnNldCIpLGMoIndpZHRoIik7dmFy IHU9YygidGV4dCIpO2MoImhvdmVydGV4dCIpLGMoImhvdmVydGVtcGxhdGUi KTt2YXIgaD1jKCJ0ZXh0cG9zaXRpb24iKTtpKHQsZSxhLGMsaCx7bW9kdWxl SGFzU2VsZWN0ZWQ6ITEsbW9kdWxlSGFzVW5zZWxlY3RlZDohMSxtb2R1bGVI YXNDb25zdHJhaW46ITAsbW9kdWxlSGFzQ2xpcG9uYXhpczohMCxtb2R1bGVI YXNUZXh0YW5nbGU6ITAsbW9kdWxlSGFzSW5zaWRlYW5jaG9yOiEwfSksIm5v bmUiPT09ZS50ZXh0cG9zaXRpb258fGUudGV4dHRlbXBsYXRlfHxjKCJ0ZXh0 aW5mbyIsQXJyYXkuaXNBcnJheSh1KT8idGV4dCt2YWx1ZSI6InZhbHVlIik7 dmFyIGY9YygibWFya2VyLmNvbG9yIixyKTtjKCJtYXJrZXIubGluZS5jb2xv ciIsbC5kZWZhdWx0TGluZSksYygibWFya2VyLmxpbmUud2lkdGgiKSxjKCJj b25uZWN0b3IudmlzaWJsZSIpJiYoYygiY29ubmVjdG9yLmZpbGxjb2xvciIs ZnVuY3Rpb24odCl7dmFyIGU9bi5pc0FycmF5T3JUeXBlZEFycmF5KHQpPyIj MDAwIjp0O3JldHVybiBsLmFkZE9wYWNpdHkoZSwuNSpsLm9wYWNpdHkoZSkp fShmKSksYygiY29ubmVjdG9yLmxpbmUud2lkdGgiKSYmKGMoImNvbm5lY3Rv ci5saW5lLmNvbG9yIiksYygiY29ubmVjdG9yLmxpbmUuZGFzaCIpKSl9ZWxz ZSBlLnZpc2libGU9ITF9LGNyb3NzVHJhY2VEZWZhdWx0czpmdW5jdGlvbih0 LGUpe3ZhciByLGk7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbi5jb2VyY2UoaS5f aW5wdXQsaSxzLHQpfWlmKCJncm91cCI9PT1lLmZ1bm5lbG1vZGUpZm9yKHZh ciBsPTA7bDx0Lmxlbmd0aDtsKyspcj0oaT10W2xdKS5faW5wdXQsYShyLGks ZSxvKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4v bGliIjo3MTcsIi4uL2Jhci9kZWZhdWx0cyI6ODYwLCIuLi9zY2F0dGVyL3h5 X2RlZmF1bHRzIjoxMTQ2LCIuL2F0dHJpYnV0ZXMiOjk3OX1dLDk4NDpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXtyZXR1cm4gdC54PSJ4VmFsImluIGU/ZS54VmFsOmUueCx0Lnk9InlW YWwiaW4gZT9lLnlWYWw6ZS55LCJwZXJjZW50SW5pdGlhbCJpbiBlJiYodC5w ZXJjZW50SW5pdGlhbD1lLnBlcmNlbnRJbml0aWFsKSwicGVyY2VudFByZXZp b3VzImluIGUmJih0LnBlcmNlbnRQcmV2aW91cz1lLnBlcmNlbnRQcmV2aW91 cyksInBlcmNlbnRUb3RhbCJpbiBlJiYodC5wZXJjZW50VG90YWw9ZS5wZXJj ZW50VG90YWwpLGUueGEmJih0LnhheGlzPWUueGEpLGUueWEmJih0LnlheGlz PWUueWEpLHR9fSx7fV0sOTg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKS5vcGFjaXR5 LGE9dCgiLi4vYmFyL2hvdmVyIikuaG92ZXJPbkJhcnMsaT10KCIuLi8uLi9s aWIiKS5mb3JtYXRQZXJjZW50O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixv KXt2YXIgcz1hKHQsZSxyLG8pO2lmKHMpe3ZhciBsPXMuY2QsYz1sWzBdLnRy YWNlLHU9ImgiPT09Yy5vcmllbnRhdGlvbixoPWxbcy5pbmRleF07c1sodT8i eCI6InkiKSsiTGFiZWxWYWwiXT1oLnMscy5wZXJjZW50SW5pdGlhbD1oLmJl Z1Iscy5wZXJjZW50SW5pdGlhbExhYmVsPWkoaC5iZWdSLDEpLHMucGVyY2Vu dFByZXZpb3VzPWguZGlmUixzLnBlcmNlbnRQcmV2aW91c0xhYmVsPWkoaC5k aWZSLDEpLHMucGVyY2VudFRvdGFsPWguc3VtUixzLnBlcmNlbnRUb3RhbExh YmVsPWkoaC5zdW1SLDEpO3ZhciBmPWguaGl8fGMuaG92ZXJpbmZvLHA9W107 aWYoZiYmIm5vbmUiIT09ZiYmInNraXAiIT09Zil7dmFyIGQ9ImFsbCI9PT1m LGc9Zi5zcGxpdCgiKyIpLHY9ZnVuY3Rpb24odCl7cmV0dXJuIGR8fC0xIT09 Zy5pbmRleE9mKHQpfTt2KCJwZXJjZW50IGluaXRpYWwiKSYmcC5wdXNoKHMu cGVyY2VudEluaXRpYWxMYWJlbCsiIG9mIGluaXRpYWwiKSx2KCJwZXJjZW50 IHByZXZpb3VzIikmJnAucHVzaChzLnBlcmNlbnRQcmV2aW91c0xhYmVsKyIg b2YgcHJldmlvdXMiKSx2KCJwZXJjZW50IHRvdGFsIikmJnAucHVzaChzLnBl cmNlbnRUb3RhbExhYmVsKyIgb2YgdG90YWwiKX1yZXR1cm4gcy5leHRyYVRl eHQ9cC5qb2luKCI8YnI+Iikscy5jb2xvcj1mdW5jdGlvbih0LGUpe3ZhciBy PXQubWFya2VyLGE9ZS5tY3x8ci5jb2xvcixpPWUubWxjfHxyLmxpbmUuY29s b3Isbz1lLm1sd3x8ci5saW5lLndpZHRoO2lmKG4oYSkpcmV0dXJuIGE7aWYo bihpKSYmbylyZXR1cm4gaX0oYyxoKSxbc119fX0seyIuLi8uLi9jb21wb25l bnRzL2NvbG9yIjo1OTIsIi4uLy4uL2xpYiI6NzE3LCIuLi9iYXIvaG92ZXIi Ojg2M31dLDk4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0 cmlidXRlczp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVs dHM6dCgiLi9kZWZhdWx0cyIpLnN1cHBseURlZmF1bHRzLGNyb3NzVHJhY2VE ZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuY3Jvc3NUcmFjZURlZmF1bHRzLHN1 cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksY2Fs Yzp0KCIuL2NhbGMiKSxjcm9zc1RyYWNlQ2FsYzp0KCIuL2Nyb3NzX3RyYWNl X2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4vc3R5bGUiKS5z dHlsZSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksZXZlbnREYXRhOnQoIi4v ZXZlbnRfZGF0YSIpLHNlbGVjdFBvaW50czp0KCIuLi9iYXIvc2VsZWN0Iiks bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImZ1bm5lbCIsYmFzZVBsb3RNb2R1 bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbImJh ci1saWtlIiwiY2FydGVzaWFuIiwic3ZnIiwib3JpZW50ZWQiLCJzaG93TGVn ZW5kIiwiem9vbVNjYWxlIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuIjo3NzYsIi4uL2Jhci9zZWxlY3QiOjg2OCwiLi9hdHRyaWJ1dGVz Ijo5NzksIi4vY2FsYyI6OTgwLCIuL2Nyb3NzX3RyYWNlX2NhbGMiOjk4Miwi Li9kZWZhdWx0cyI6OTgzLCIuL2V2ZW50X2RhdGEiOjk4NCwiLi9ob3ZlciI6 OTg1LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo5ODcsIi4vbGF5b3V0X2RlZmF1 bHRzIjo5ODgsIi4vcGxvdCI6OTg5LCIuL3N0eWxlIjo5OTB9XSw5ODc6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtmdW5uZWxt b2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJzdGFjayIsImdy b3VwIiwib3ZlcmxheSJdLGRmbHQ6InN0YWNrIixlZGl0VHlwZToiY2FsYyJ9 LGZ1bm5lbGdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0 VHlwZToiY2FsYyJ9LGZ1bm5lbGdyb3VwZ2FwOnt2YWxUeXBlOiJudW1iZXIi LG1pbjowLG1heDoxLGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDk4 ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKSxhPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIpe3ZhciBpPSExO2Z1bmN0aW9uIG8ocixpKXtyZXR1 cm4gbi5jb2VyY2UodCxlLGEscixpKX1mb3IodmFyIHM9MDtzPHIubGVuZ3Ro O3MrKyl7dmFyIGw9cltzXTtpZihsLnZpc2libGUmJiJmdW5uZWwiPT09bC50 eXBlKXtpPSEwO2JyZWFrfX1pJiYobygiZnVubmVsbW9kZSIpLG8oImZ1bm5l bGdhcCIsLjIpLG8oImZ1bm5lbGdyb3VwZ2FwIikpfX0seyIuLi8uLi9saWIi OjcxNywiLi9sYXlvdXRfYXR0cmlidXRlcyI6OTg3fV0sOTg5OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8u Li9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgi Li4vYmFyL3Bsb3QiKSxzPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKS5jbGVh ck1pblRleHRTaXplO2Z1bmN0aW9uIGwodCxlLHIsbil7dmFyIGE9W10saT1b XSxvPW4/ZTpyLHM9bj9yOmU7cmV0dXJuIGFbMF09by5jMnAodC5zMCwhMCks aVswXT1zLmMycCh0LnAwLCEwKSxhWzFdPW8uYzJwKHQuczEsITApLGlbMV09 cy5jMnAodC5wMSwhMCksYVsyXT1vLmMycCh0Lm5leHRTMCwhMCksaVsyXT1z LmMycCh0Lm5leHRQMCwhMCksYVszXT1vLmMycCh0Lm5leHRTMSwhMCksaVsz XT1zLmMycCh0Lm5leHRQMSwhMCksbj9bYSxpXTpbaSxhXX1lLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIsYyl7dmFyIHU9dC5fZnVsbExheW91dDtzKCJmdW5u ZWwiLHUpLGZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBzPWUueGF4aXMsYz1lLnlh eGlzO2EubWFrZVRyYWNlR3JvdXBzKG8sciwidHJhY2UgYmFycyIpLmVhY2go ZnVuY3Rpb24ocil7dmFyIG89bi5zZWxlY3QodGhpcyksdT1yWzBdLnRyYWNl LGg9YS5lbnN1cmVTaW5nbGUobywiZyIsInJlZ2lvbnMiKTtpZih1LmNvbm5l Y3RvciYmdS5jb25uZWN0b3IudmlzaWJsZSl7dmFyIGY9ImgiPT09dS5vcmll bnRhdGlvbixwPWguc2VsZWN0QWxsKCJnLnJlZ2lvbiIpLmRhdGEoYS5pZGVu dGl0eSk7cC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInJlZ2lvbiIs ITApLHAuZXhpdCgpLnJlbW92ZSgpO3ZhciBkPXAuc2l6ZSgpO3AuZWFjaChm dW5jdGlvbihyLG8pe2lmKG89PT1kLTF8fHIuY05leHQpe3ZhciB1PWwocixz LGMsZiksaD11WzBdLHA9dVsxXSxnPSIiO3ZvaWQgMCE9PWhbM10mJnZvaWQg MCE9PXBbM10mJihnKz1mPyJNIitoWzBdKyIsIitwWzFdKyJMIitoWzJdKyIs IitwWzJdKyJIIitoWzNdKyJMIitoWzFdKyIsIitwWzFdKyJaIjoiTSIraFsx XSsiLCIrcFsxXSsiTCIraFsyXSsiLCIrcFszXSsiViIrcFsyXSsiTCIraFsx XSsiLCIrcFswXSsiWiIpLGEuZW5zdXJlU2luZ2xlKG4uc2VsZWN0KHRoaXMp LCJwYXRoIikuYXR0cigiZCIsZykuY2FsbChpLnNldENsaXBVcmwsZS5sYXll ckNsaXBJZCx0KX19KX1lbHNlIGgucmVtb3ZlKCl9KX0odCxlLHIsYyksZnVu Y3Rpb24odCxlLHIsbyl7dmFyIHM9ZS54YXhpcyxjPWUueWF4aXM7YS5tYWtl VHJhY2VHcm91cHMobyxyLCJ0cmFjZSBiYXJzIikuZWFjaChmdW5jdGlvbihy KXt2YXIgbz1uLnNlbGVjdCh0aGlzKSx1PXJbMF0udHJhY2UsaD1hLmVuc3Vy ZVNpbmdsZShvLCJnIiwibGluZXMiKTtpZih1LmNvbm5lY3RvciYmdS5jb25u ZWN0b3IudmlzaWJsZSYmdS5jb25uZWN0b3IubGluZS53aWR0aCl7dmFyIGY9 ImgiPT09dS5vcmllbnRhdGlvbixwPWguc2VsZWN0QWxsKCJnLmxpbmUiKS5k YXRhKGEuaWRlbnRpdHkpO3AuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2Vk KCJsaW5lIiwhMCkscC5leGl0KCkucmVtb3ZlKCk7dmFyIGQ9cC5zaXplKCk7 cC5lYWNoKGZ1bmN0aW9uKHIsbyl7aWYobz09PWQtMXx8ci5jTmV4dCl7dmFy IHU9bChyLHMsYyxmKSxoPXVbMF0scD11WzFdLGc9IiI7dm9pZCAwIT09aFsz XSYmdm9pZCAwIT09cFszXSYmKGY/KGcrPSJNIitoWzBdKyIsIitwWzFdKyJM IitoWzJdKyIsIitwWzJdLGcrPSJNIitoWzFdKyIsIitwWzFdKyJMIitoWzNd KyIsIitwWzJdKTooZys9Ik0iK2hbMV0rIiwiK3BbMV0rIkwiK2hbMl0rIiwi K3BbM10sZys9Ik0iK2hbMV0rIiwiK3BbMF0rIkwiK2hbMl0rIiwiK3BbMl0p KSwiIj09PWcmJihnPSJNMCwwWiIpLGEuZW5zdXJlU2luZ2xlKG4uc2VsZWN0 KHRoaXMpLCJwYXRoIikuYXR0cigiZCIsZykuY2FsbChpLnNldENsaXBVcmws ZS5sYXllckNsaXBJZCx0KX19KX1lbHNlIGgucmVtb3ZlKCl9KX0odCxlLHIs Yyksby5wbG90KHQsZSxyLGMse21vZGU6dS5mdW5uZWxtb2RlLG5vcm06dS5m dW5uZWxtb2RlLGdhcDp1LmZ1bm5lbGdhcCxncm91cGdhcDp1LmZ1bm5lbGdy b3VwZ2FwfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIu Li8uLi9saWIiOjcxNywiLi4vYmFyL3Bsb3QiOjg2NywiLi4vYmFyL3VuaWZv cm1fdGV4dCI6ODcyLGQzOjE2NX1dLDk5MDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vY29tcG9uZW50 cy9kcmF3aW5nIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10 KCIuLi8uLi9jb25zdGFudHMvaW50ZXJhY3Rpb25zIikuREVTRUxFQ1RESU0s cz10KCIuLi9iYXIvc3R5bGUiKSxsPXQoIi4uL2Jhci91bmlmb3JtX3RleHQi KS5yZXNpemVUZXh0LGM9cy5zdHlsZVRleHRQb2ludHM7ZS5leHBvcnRzPXtz dHlsZTpmdW5jdGlvbih0LGUscil7dmFyIHM9cnx8bi5zZWxlY3QodCkuc2Vs ZWN0QWxsKCJnLmZ1bm5lbGxheWVyIikuc2VsZWN0QWxsKCJnLnRyYWNlIik7 bCh0LHMsImZ1bm5lbCIpLHMuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQp e3JldHVybiB0WzBdLnRyYWNlLm9wYWNpdHl9KSxzLmVhY2goZnVuY3Rpb24o ZSl7dmFyIHI9bi5zZWxlY3QodGhpcykscz1lWzBdLnRyYWNlO3Iuc2VsZWN0 QWxsKCIucG9pbnQgPiBwYXRoIikuZWFjaChmdW5jdGlvbih0KXtpZighdC5p c0JsYW5rKXt2YXIgZT1zLm1hcmtlcjtuLnNlbGVjdCh0aGlzKS5jYWxsKGku ZmlsbCx0Lm1jfHxlLmNvbG9yKS5jYWxsKGkuc3Ryb2tlLHQubWxjfHxlLmxp bmUuY29sb3IpLmNhbGwoYS5kYXNoTGluZSxlLmxpbmUuZGFzaCx0Lm1sd3x8 ZS5saW5lLndpZHRoKS5zdHlsZSgib3BhY2l0eSIscy5zZWxlY3RlZHBvaW50 cyYmIXQuc2VsZWN0ZWQ/bzoxKX19KSxjKHIscyx0KSxyLnNlbGVjdEFsbCgi LnJlZ2lvbnMiKS5lYWNoKGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuc2Vs ZWN0QWxsKCJwYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsMCkuY2FsbChp LmZpbGwscy5jb25uZWN0b3IuZmlsbGNvbG9yKX0pLHIuc2VsZWN0QWxsKCIu bGluZXMiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9cy5jb25uZWN0b3IubGlu ZTthLmxpbmVHcm91cFN0eWxlKG4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgi cGF0aCIpLHQud2lkdGgsdC5jb2xvcix0LmRhc2gpfSl9KX19fSx7Ii4uLy4u L2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmF3 aW5nIjo2MTMsIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiOjY5Miwi Li4vYmFyL3N0eWxlIjo4NzAsIi4uL2Jhci91bmlmb3JtX3RleHQiOjg3Mixk MzoxNjV9XSw5OTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vcGllL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL2F0 dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0 ZXMsbz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92 ZXJ0ZW1wbGF0ZUF0dHJzLHM9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0 cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGw9dCgiLi4vLi4vbGliL2V4 dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXtsYWJlbHM6bi5sYWJlbHMs bGFiZWwwOm4ubGFiZWwwLGRsYWJlbDpuLmRsYWJlbCx2YWx1ZXM6bi52YWx1 ZXMsbWFya2VyOntjb2xvcnM6bi5tYXJrZXIuY29sb3JzLGxpbmU6e2NvbG9y Omwoe30sbi5tYXJrZXIubGluZS5jb2xvcix7ZGZsdDpudWxsfSksd2lkdGg6 bCh7fSxuLm1hcmtlci5saW5lLndpZHRoLHtkZmx0OjF9KSxlZGl0VHlwZToi Y2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sdGV4dDpuLnRleHQsaG92ZXJ0ZXh0 Om4uaG92ZXJ0ZXh0LHNjYWxlZ3JvdXA6bCh7fSxuLnNjYWxlZ3JvdXAse30p LHRleHRpbmZvOmwoe30sbi50ZXh0aW5mbyx7ZmxhZ3M6WyJsYWJlbCIsInRl eHQiLCJ2YWx1ZSIsInBlcmNlbnQiXX0pLHRleHR0ZW1wbGF0ZTpzKHtlZGl0 VHlwZToicGxvdCJ9LHtrZXlzOlsibGFiZWwiLCJjb2xvciIsInZhbHVlIiwi dGV4dCIsInBlcmNlbnQiXX0pLGhvdmVyaW5mbzpsKHt9LGEuaG92ZXJpbmZv LHtmbGFnczpbImxhYmVsIiwidGV4dCIsInZhbHVlIiwicGVyY2VudCIsIm5h bWUiXX0pLGhvdmVydGVtcGxhdGU6byh7fSx7a2V5czpbImxhYmVsIiwiY29s b3IiLCJ2YWx1ZSIsInRleHQiLCJwZXJjZW50Il19KSx0ZXh0cG9zaXRpb246 bCh7fSxuLnRleHRwb3NpdGlvbix7dmFsdWVzOlsiaW5zaWRlIiwibm9uZSJd LGRmbHQ6Imluc2lkZSJ9KSx0ZXh0Zm9udDpuLnRleHRmb250LGluc2lkZXRl eHRmb250Om4uaW5zaWRldGV4dGZvbnQsdGl0bGU6e3RleHQ6bi50aXRsZS50 ZXh0LGZvbnQ6bi50aXRsZS5mb250LHBvc2l0aW9uOmwoe30sbi50aXRsZS5w b3NpdGlvbix7dmFsdWVzOlsidG9wIGxlZnQiLCJ0b3AgY2VudGVyIiwidG9w IHJpZ2h0Il0sZGZsdDoidG9wIGNlbnRlciJ9KSxlZGl0VHlwZToicGxvdCJ9 LGRvbWFpbjppKHtuYW1lOiJmdW5uZWxhcmVhIix0cmFjZTohMCxlZGl0VHlw ZToiY2FsYyJ9KSxhc3BlY3RyYXRpbzp7dmFsVHlwZToibnVtYmVyIixtaW46 MCxkZmx0OjEsZWRpdFR5cGU6InBsb3QifSxiYXNlcmF0aW86e3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouMzMzLGVkaXRUeXBlOiJwbG90 In19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4vLi4vcGxvdHMvYXR0 cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90cy9kb21haW4iOjc5MCwiLi4vLi4v cGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9waWUvYXR0cmli dXRlcyI6MTA5NH1dLDk5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9wbG90cyIpO3IubmFtZT0iZnVubmVs YXJlYSIsci5wbG90PWZ1bmN0aW9uKHQsZSxhLGkpe24ucGxvdEJhc2VQbG90 KHIubmFtZSx0LGUsYSxpKX0sci5jbGVhbj1mdW5jdGlvbih0LGUsYSxpKXtu LmNsZWFuQmFzZVBsb3Qoci5uYW1lLHQsZSxhLGkpfX0seyIuLi8uLi9wbG90 cy9wbG90cyI6ODI2fV0sOTkzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uL3BpZS9jYWxjIik7ZS5leHBvcnRzPXtjYWxjOmZ1 bmN0aW9uKHQsZSl7cmV0dXJuIG4uY2FsYyh0LGUpfSxjcm9zc1RyYWNlQ2Fs YzpmdW5jdGlvbih0KXtuLmNyb3NzVHJhY2VDYWxjKHQse3R5cGU6ImZ1bm5l bGFyZWEifSl9fX0seyIuLi9waWUvY2FsYyI6MTA5Nn1dLDk5NDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxh PXQoIi4vYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvZG9tYWluIiku ZGVmYXVsdHMsbz10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVUZXh0LHM9 dCgiLi4vcGllL2RlZmF1bHRzIikuaGFuZGxlTGFiZWxzQW5kVmFsdWVzO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUscixsKXtmdW5jdGlvbiBjKHIsaSl7cmV0 dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9dmFyIHU9YygibGFiZWxzIiksaD1j KCJ2YWx1ZXMiKSxmPXModSxoKSxwPWYubGVuO2lmKGUuX2hhc0xhYmVscz1m Lmhhc0xhYmVscyxlLl9oYXNWYWx1ZXM9Zi5oYXNWYWx1ZXMsIWUuX2hhc0xh YmVscyYmZS5faGFzVmFsdWVzJiYoYygibGFiZWwwIiksYygiZGxhYmVsIikp LHApe2UuX2xlbmd0aD1wLGMoIm1hcmtlci5saW5lLndpZHRoIikmJmMoIm1h cmtlci5saW5lLmNvbG9yIixsLnBhcGVyX2JnY29sb3IpLGMoIm1hcmtlci5j b2xvcnMiKSxjKCJzY2FsZWdyb3VwIik7dmFyIGQsZz1jKCJ0ZXh0Iiksdj1j KCJ0ZXh0dGVtcGxhdGUiKTtpZih2fHwoZD1jKCJ0ZXh0aW5mbyIsQXJyYXku aXNBcnJheShnKT8idGV4dCtwZXJjZW50IjoicGVyY2VudCIpKSxjKCJob3Zl cnRleHQiKSxjKCJob3ZlcnRlbXBsYXRlIiksdnx8ZCYmIm5vbmUiIT09ZCl7 dmFyIG09YygidGV4dHBvc2l0aW9uIik7byh0LGUsbCxjLG0se21vZHVsZUhh c1NlbGVjdGVkOiExLG1vZHVsZUhhc1Vuc2VsZWN0ZWQ6ITEsbW9kdWxlSGFz Q29uc3RyYWluOiExLG1vZHVsZUhhc0NsaXBvbmF4aXM6ITEsbW9kdWxlSGFz VGV4dGFuZ2xlOiExLG1vZHVsZUhhc0luc2lkZWFuY2hvcjohMX0pfWkoZSxs LGMpLGMoInRpdGxlLnRleHQiKSYmKGMoInRpdGxlLnBvc2l0aW9uIiksbi5j b2VyY2VGb250KGMsInRpdGxlLmZvbnQiLGwuZm9udCkpLGMoImFzcGVjdHJh dGlvIiksYygiYmFzZXJhdGlvIil9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4u Ly4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9kb21haW4iOjc5MCwiLi4vYmFy L2RlZmF1bHRzIjo4NjAsIi4uL3BpZS9kZWZhdWx0cyI6MTA5NywiLi9hdHRy aWJ1dGVzIjo5OTF9XSw5OTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiZnVubmVs YXJlYSIsYmFzZVBsb3RNb2R1bGU6dCgiLi9iYXNlX3Bsb3QiKSxjYXRlZ29y aWVzOlsicGllLWxpa2UiLCJmdW5uZWxhcmVhIiwic2hvd0xlZ2VuZCJdLGF0 dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRlczp0 KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9k ZWZhdWx0cyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2Rl ZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKS5jYWxjLGNyb3NzVHJhY2VDYWxj OnQoIi4vY2FsYyIpLmNyb3NzVHJhY2VDYWxjLHBsb3Q6dCgiLi9wbG90Iiks c3R5bGU6dCgiLi9zdHlsZSIpLHN0eWxlT25lOnQoIi4uL3BpZS9zdHlsZV9v bmUiKSxtZXRhOnt9fX0seyIuLi9waWUvc3R5bGVfb25lIjoxMTA1LCIuL2F0 dHJpYnV0ZXMiOjk5MSwiLi9iYXNlX3Bsb3QiOjk5MiwiLi9jYWxjIjo5OTMs Ii4vZGVmYXVsdHMiOjk5NCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6OTk2LCIu L2xheW91dF9kZWZhdWx0cyI6OTk3LCIuL3Bsb3QiOjk5OCwiLi9zdHlsZSI6 OTk5fV0sOTk2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uL3BpZS9sYXlvdXRfYXR0cmlidXRlcyIpLmhpZGRlbmxhYmVscztl LmV4cG9ydHM9e2hpZGRlbmxhYmVsczpuLGZ1bm5lbGFyZWFjb2xvcndheTp7 dmFsVHlwZToiY29sb3JsaXN0IixlZGl0VHlwZToiY2FsYyJ9LGV4dGVuZGZ1 bm5lbGFyZWFjb2xvcnM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRp dFR5cGU6ImNhbGMifX19LHsiLi4vcGllL2xheW91dF9hdHRyaWJ1dGVzIjox MTAxfV0sOTk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIocixpKXtyZXR1cm4g bi5jb2VyY2UodCxlLGEscixpKX1yKCJoaWRkZW5sYWJlbHMiKSxyKCJmdW5u ZWxhcmVhY29sb3J3YXkiLGUuY29sb3J3YXkpLHIoImV4dGVuZGZ1bm5lbGFy ZWFjb2xvcnMiKX19LHsiLi4vLi4vbGliIjo3MTcsIi4vbGF5b3V0X2F0dHJp YnV0ZXMiOjk5Nn1dLDk5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5n IiksaT10KCIuLi8uLi9saWIiKSxvPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91 dGlscyIpLHM9dCgiLi4vYmFyL3Bsb3QiKS50b01vdmVJbnNpZGVCYXIsbD10 KCIuLi9iYXIvdW5pZm9ybV90ZXh0IiksYz1sLnJlY29yZE1pblRleHRTaXpl LHU9bC5jbGVhck1pblRleHRTaXplLGg9dCgiLi4vcGllL2hlbHBlcnMiKSxm PXQoIi4uL3BpZS9wbG90IikscD1mLmF0dGFjaEZ4SGFuZGxlcnMsZD1mLmRl dGVybWluZUluc2lkZVRleHRGb250LGc9Zi5sYXlvdXRBcmVhcyx2PWYucHJl cmVuZGVyVGl0bGVzLG09Zi5wb3NpdGlvblRpdGxlT3V0c2lkZSx5PWYuZm9y bWF0U2xpY2VMYWJlbDtmdW5jdGlvbiB4KHQsZSl7cmV0dXJuImwiKyhlWzBd LXRbMF0pKyIsIisoZVsxXS10WzFdKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXt2YXIgcj10Ll9mdWxsTGF5b3V0O3UoImZ1bm5lbGFyZWEiLHIpLHYoZSx0 KSxnKGUsci5fc2l6ZSksaS5tYWtlVHJhY2VHcm91cHMoci5fZnVubmVsYXJl YWxheWVyLGUsInRyYWNlIikuZWFjaChmdW5jdGlvbihlKXt2YXIgbD1uLnNl bGVjdCh0aGlzKSx1PWVbMF0sZj11LnRyYWNlOyFmdW5jdGlvbih0KXtpZigh dC5sZW5ndGgpcmV0dXJuO3ZhciBlPXRbMF0scj1lLnRyYWNlLG49ci5hc3Bl Y3RyYXRpbyxhPXIuYmFzZXJhdGlvO2E+Ljk5OSYmKGE9Ljk5OSk7dmFyIGks bz1NYXRoLnBvdyhhLDIpLHM9ZS52VG90YWwsbD1zLGM9cypvLygxLW8pL3M7 ZnVuY3Rpb24gdSgpe3ZhciB0LGU9e3g6dD1NYXRoLnNxcnQoYykseTotdH07 cmV0dXJuW2UueCxlLnldfXZhciBoLGYscD1bXTtmb3IocC5wdXNoKHUoKSks aD10Lmxlbmd0aC0xO2g+LTE7aC0tKWlmKCEoZj10W2hdKS5oaWRkZW4pe3Zh ciBkPWYudi9sO2MrPWQscC5wdXNoKHUoKSl9dmFyIGc9MS8wLHY9LTEvMDtm b3IoaD0wO2g8cC5sZW5ndGg7aCsrKWk9cFtoXSxnPU1hdGgubWluKGcsaVsx XSksdj1NYXRoLm1heCh2LGlbMV0pO2ZvcihoPTA7aDxwLmxlbmd0aDtoKysp cFtoXVsxXS09KHYrZykvMjt2YXIgbT1wW3AubGVuZ3RoLTFdWzBdLHk9ZS5y LHg9KHYtZykvMixiPXkvbSxfPXkveCpuO2ZvcihlLnI9Xyp4LGg9MDtoPHAu bGVuZ3RoO2grKylwW2hdWzBdKj1iLHBbaF1bMV0qPV87dmFyIHc9Wy0oaT1w WzBdKVswXSxpWzFdXSxrPVtpWzBdLGlbMV1dLFQ9MDtmb3IoaD10Lmxlbmd0 aC0xO2g+LTE7aC0tKWlmKCEoZj10W2hdKS5oaWRkZW4pe3ZhciBNPXBbVCs9 MV1bMF0sQT1wW1RdWzFdO2YuVEw9Wy1NLEFdLGYuVFI9W00sQV0sZi5CTD13 LGYuQlI9ayxmLnB4bWlkPShTPWYuVFIsRT1mLkJSLFsuNSooU1swXStFWzBd KSwuNSooU1sxXStFWzFdKV0pLHc9Zi5UTCxrPWYuVFJ9dmFyIFMsRX0oZSks bC5lYWNoKGZ1bmN0aW9uKCl7dmFyIGw9bi5zZWxlY3QodGhpcykuc2VsZWN0 QWxsKCJnLnNsaWNlIikuZGF0YShlKTtsLmVudGVyKCkuYXBwZW5kKCJnIiku Y2xhc3NlZCgic2xpY2UiLCEwKSxsLmV4aXQoKS5yZW1vdmUoKSxsLmVhY2go ZnVuY3Rpb24obCxnKXtpZihsLmhpZGRlbiluLnNlbGVjdCh0aGlzKS5zZWxl Y3RBbGwoInBhdGgsZyIpLnJlbW92ZSgpO2Vsc2V7bC5wb2ludE51bWJlcj1s LmksbC5jdXJ2ZU51bWJlcj1mLmluZGV4O3ZhciB2PXUuY3gsbT11LmN5LGI9 bi5zZWxlY3QodGhpcyksXz1iLnNlbGVjdEFsbCgicGF0aC5zdXJmYWNlIiku ZGF0YShbbF0pO18uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJz dXJmYWNlIiwhMCkuc3R5bGUoeyJwb2ludGVyLWV2ZW50cyI6ImFsbCJ9KSxi LmNhbGwocCx0LGUpO3ZhciB3PSJNIisoditsLlRSWzBdKSsiLCIrKG0rbC5U UlsxXSkreChsLlRSLGwuQlIpK3gobC5CUixsLkJMKSt4KGwuQkwsbC5UTCkr IloiO18uYXR0cigiZCIsdykseSh0LGwsdSk7dmFyIGs9aC5jYXN0T3B0aW9u KGYudGV4dHBvc2l0aW9uLGwucHRzKSxUPWIuc2VsZWN0QWxsKCJnLnNsaWNl dGV4dCIpLmRhdGEobC50ZXh0JiYibm9uZSIhPT1rP1swXTpbXSk7VC5lbnRl cigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNsaWNldGV4dCIsITApLFQuZXhp dCgpLnJlbW92ZSgpLFQuZWFjaChmdW5jdGlvbigpe3ZhciB1PWkuZW5zdXJl U2luZ2xlKG4uc2VsZWN0KHRoaXMpLCJ0ZXh0IiwiIixmdW5jdGlvbih0KXt0 LmF0dHIoImRhdGEtbm90ZXgiLDEpfSksaD1pLmVuc3VyZVVuaWZvcm1Gb250 U2l6ZSh0LGQoZixsLHIuZm9udCkpO3UudGV4dChsLnRleHQpLmF0dHIoe2Ns YXNzOiJzbGljZXRleHQiLHRyYW5zZm9ybToiIiwidGV4dC1hbmNob3IiOiJt aWRkbGUifSkuY2FsbChhLmZvbnQsaCkuY2FsbChvLmNvbnZlcnRUb1RzcGFu cyx0KTt2YXIgcCx5LHgsYj1hLmJCb3godS5ub2RlKCkpLF89TWF0aC5taW4o bC5CTFsxXSxsLkJSWzFdKSttLHc9TWF0aC5tYXgobC5UTFsxXSxsLlRSWzFd KSttO3k9TWF0aC5tYXgobC5UTFswXSxsLkJMWzBdKSt2LHg9TWF0aC5taW4o bC5UUlswXSxsLkJSWzBdKSt2LChwPXMoeSx4LF8sdyxiLHtpc0hvcml6b250 YWw6ITAsY29uc3RyYWluZWQ6ITAsYW5nbGU6MCxhbmNob3I6Im1pZGRsZSJ9 KSkuZm9udFNpemU9aC5zaXplLGMoZi50eXBlLHAsciksZVtnXS50cmFuc2Zv cm09cCx1LmF0dHIoInRyYW5zZm9ybSIsaS5nZXRUZXh0VHJhbnNmb3JtKHAp KX0pfX0pO3ZhciBnPW4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy50aXRs ZXRleHQiKS5kYXRhKGYudGl0bGUudGV4dD9bMF06W10pO2cuZW50ZXIoKS5h cHBlbmQoImciKS5jbGFzc2VkKCJ0aXRsZXRleHQiLCEwKSxnLmV4aXQoKS5y ZW1vdmUoKSxnLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1pLmVuc3VyZVNpbmds ZShuLnNlbGVjdCh0aGlzKSwidGV4dCIsIiIsZnVuY3Rpb24odCl7dC5hdHRy KCJkYXRhLW5vdGV4IiwxKX0pLHM9Zi50aXRsZS50ZXh0O2YuX21ldGEmJihz PWkudGVtcGxhdGVTdHJpbmcocyxmLl9tZXRhKSksZS50ZXh0KHMpLmF0dHIo e2NsYXNzOiJ0aXRsZXRleHQiLHRyYW5zZm9ybToiIiwidGV4dC1hbmNob3Ii OiJtaWRkbGUifSkuY2FsbChhLmZvbnQsZi50aXRsZS5mb250KS5jYWxsKG8u Y29udmVydFRvVHNwYW5zLHQpO3ZhciBsPW0odSxyLl9zaXplKTtlLmF0dHIo InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2wueCsiLCIrbC55KyIpIisobC5z Y2FsZTwxPyJzY2FsZSgiK2wuc2NhbGUrIikiOiIiKSsidHJhbnNsYXRlKCIr bC50eCsiLCIrbC50eSsiKSIpfSl9KX0pfX0seyIuLi8uLi9jb21wb25lbnRz L2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zdmdf dGV4dF91dGlscyI6NzQxLCIuLi9iYXIvcGxvdCI6ODY3LCIuLi9iYXIvdW5p Zm9ybV90ZXh0Ijo4NzIsIi4uL3BpZS9oZWxwZXJzIjoxMDk5LCIuLi9waWUv cGxvdCI6MTEwMyxkMzoxNjV9XSw5OTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uL3BpZS9zdHlsZV9vbmUi KSxpPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKS5yZXNpemVUZXh0O2UuZXhw b3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0Ll9mdW5uZWxh cmVhbGF5ZXIuc2VsZWN0QWxsKCIudHJhY2UiKTtpKHQsZSwiZnVubmVsYXJl YSIpLGUuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9bi5z ZWxlY3QodGhpcyk7ci5zdHlsZSh7b3BhY2l0eTplLm9wYWNpdHl9KSxyLnNl bGVjdEFsbCgicGF0aC5zdXJmYWNlIikuZWFjaChmdW5jdGlvbih0KXtuLnNl bGVjdCh0aGlzKS5jYWxsKGEsdCxlKX0pfSl9fSx7Ii4uL2Jhci91bmlmb3Jt X3RleHQiOjg3MiwiLi4vcGllL3N0eWxlX29uZSI6MTEwNSxkMzoxNjV9XSwx MDAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u L3NjYXR0ZXIvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvYXR0cmli dXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIp LmhvdmVydGVtcGxhdGVBdHRycyxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29s b3JzY2FsZS9hdHRyaWJ1dGVzIikscz0odCgiLi4vLi4vY29uc3RhbnRzL2Rv Y3MiKS5GT1JNQVRfTElOSyx0KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5k RmxhdCk7ZS5leHBvcnRzPXMoe3o6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVk aXRUeXBlOiJjYWxjIn0seDpzKHt9LG4ueCx7aW1wbGllZEVkaXRzOnt4dHlw ZToiYXJyYXkifX0pLHgwOnMoe30sbi54MCx7aW1wbGllZEVkaXRzOnt4dHlw ZToic2NhbGVkIn19KSxkeDpzKHt9LG4uZHgse2ltcGxpZWRFZGl0czp7eHR5 cGU6InNjYWxlZCJ9fSkseTpzKHt9LG4ueSx7aW1wbGllZEVkaXRzOnt5dHlw ZToiYXJyYXkifX0pLHkwOnMoe30sbi55MCx7aW1wbGllZEVkaXRzOnt5dHlw ZToic2NhbGVkIn19KSxkeTpzKHt9LG4uZHkse2ltcGxpZWRFZGl0czp7eXR5 cGU6InNjYWxlZCJ9fSksdGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSxob3ZlcnRleHQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXki LGVkaXRUeXBlOiJjYWxjIn0sdHJhbnNwb3NlOnt2YWxUeXBlOiJib29sZWFu IixkZmx0OiExLGVkaXRUeXBlOiJjYWxjIn0seHR5cGU6e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpbImFycmF5Iiwic2NhbGVkIl0sZWRpdFR5cGU6 ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx5dHlwZTp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsiYXJyYXkiLCJzY2FsZWQiXSxlZGl0VHlwZToiY2Fs YytjbGVhckF4aXNUeXBlcyJ9LHpzbW9vdGg6e3ZhbFR5cGU6ImVudW1lcmF0 ZWQiLHZhbHVlczpbImZhc3QiLCJiZXN0IiwhMV0sZGZsdDohMSxlZGl0VHlw ZToiY2FsYyJ9LGhvdmVyb25nYXBzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0 OiEwLGVkaXRUeXBlOiJub25lIn0sY29ubmVjdGdhcHM6e3ZhbFR5cGU6ImJv b2xlYW4iLGVkaXRUeXBlOiJjYWxjIn0seGdhcDp7dmFsVHlwZToibnVtYmVy IixkZmx0OjAsbWluOjAsZWRpdFR5cGU6InBsb3QifSx5Z2FwOnt2YWxUeXBl OiJudW1iZXIiLGRmbHQ6MCxtaW46MCxlZGl0VHlwZToicGxvdCJ9LHpob3Zl cmZvcm1hdDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJu b25lIn0saG92ZXJ0ZW1wbGF0ZTppKCksc2hvd2xlZ2VuZDpzKHt9LGEuc2hv d2xlZ2VuZCx7ZGZsdDohMX0pfSx7dHJhbnNmb3Jtczp2b2lkIDB9LG8oIiIs e2NMZXR0ZXI6InoiLGF1dG9Db2xvckRmbHQ6ITF9KSl9LHsiLi4vLi4vY29t cG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vY29u c3RhbnRzL2RvY3MiOjY4OCwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8u Li9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRl X2F0dHJpYnV0ZXMiOjg0MSwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIw fV0sMTAwMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4vaGlzdG9ncmFtMmQv Y2FsYyIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMi KSxsPXQoIi4vY29udmVydF9jb2x1bW5feHl6IiksYz10KCIuL2NsZWFuXzJk X2FycmF5IiksdT10KCIuL2ludGVycDJkIiksaD10KCIuL2ZpbmRfZW1wdGll cyIpLGY9dCgiLi9tYWtlX2JvdW5kX2FycmF5Iik7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7dmFyIHIscCxkLGcsdixtLHkseCxiLF89aS5nZXRGcm9tSWQo dCxlLnhheGlzfHwieCIpLHc9aS5nZXRGcm9tSWQodCxlLnlheGlzfHwieSIp LGs9bi50cmFjZUlzKGUsImNvbnRvdXIiKSxUPW4udHJhY2VJcyhlLCJoaXN0 b2dyYW0iKSxNPW4udHJhY2VJcyhlLCJnbDJkIiksQT1rPyJiZXN0IjplLnpz bW9vdGg7aWYoXy5fbWluRHRpY2s9MCx3Ll9taW5EdGljaz0wLFQpcj0oYj1v KHQsZSkpLngscD1iLngwLGQ9Yi5keCxnPWIueSx2PWIueTAsbT1iLmR5LHk9 Yi56O2Vsc2V7dmFyIFM9ZS56O2EuaXNBcnJheTFEKFMpPyhsKGUsXyx3LCJ4 IiwieSIsWyJ6Il0pLHI9ZS5feCxnPWUuX3ksUz1lLl96KToocj1lLl94PWUu eD9fLm1ha2VDYWxjZGF0YShlLCJ4Iik6W10sZz1lLl95PWUueT93Lm1ha2VD YWxjZGF0YShlLCJ5Iik6W10pLHA9ZS54MCxkPWUuZHgsdj1lLnkwLG09ZS5k eSx5PWMoUyxlLF8sdyksKGt8fGUuY29ubmVjdGdhcHMpJiYoZS5fZW1wdHlw b2ludHM9aCh5KSx1KHksZS5fZW1wdHlwb2ludHMpKX1mdW5jdGlvbiBFKHQp e0E9ZS5faW5wdXQuenNtb290aD1lLnpzbW9vdGg9ITEsYS53YXJuKCdjYW5u b3QgdXNlIHpzbW9vdGg6ICJmYXN0IjogJyt0KX1pZigiZmFzdCI9PT1BKWlm KCJsb2ciPT09Xy50eXBlfHwibG9nIj09PXcudHlwZSlFKCJsb2cgYXhpcyBm b3VuZCIpO2Vsc2UgaWYoIVQpe2lmKHIubGVuZ3RoKXt2YXIgTD0ocltyLmxl bmd0aC0xXS1yWzBdKS8oci5sZW5ndGgtMSksQz1NYXRoLmFicyhMLzEwMCk7 Zm9yKHg9MDt4PHIubGVuZ3RoLTE7eCsrKWlmKE1hdGguYWJzKHJbeCsxXS1y W3hdLUwpPkMpe0UoInggc2NhbGUgaXMgbm90IGxpbmVhciIpO2JyZWFrfX1p ZihnLmxlbmd0aCYmImZhc3QiPT09QSl7dmFyIFA9KGdbZy5sZW5ndGgtMV0t Z1swXSkvKGcubGVuZ3RoLTEpLE89TWF0aC5hYnMoUC8xMDApO2Zvcih4PTA7 eDxnLmxlbmd0aC0xO3grKylpZihNYXRoLmFicyhnW3grMV0tZ1t4XS1QKT5P KXtFKCJ5IHNjYWxlIGlzIG5vdCBsaW5lYXIiKTticmVha319fXZhciB6PWEu bWF4Um93TGVuZ3RoKHkpLEk9InNjYWxlZCI9PT1lLnh0eXBlPyIiOnIsRD1m KGUsSSxwLGQseixfKSxSPSJzY2FsZWQiPT09ZS55dHlwZT8iIjpnLEY9Zihl LFIsdixtLHkubGVuZ3RoLHcpO018fChlLl9leHRyZW1lc1tfLl9pZF09aS5m aW5kRXh0cmVtZXMoXyxEKSxlLl9leHRyZW1lc1t3Ll9pZF09aS5maW5kRXh0 cmVtZXModyxGKSk7dmFyIEI9e3g6RCx5OkYsejp5LHRleHQ6ZS5fdGV4dHx8 ZS50ZXh0LGhvdmVydGV4dDplLl9ob3ZlcnRleHR8fGUuaG92ZXJ0ZXh0fTtp ZihJJiZJLmxlbmd0aD09PUQubGVuZ3RoLTEmJihCLnhDZW50ZXI9SSksUiYm Ui5sZW5ndGg9PT1GLmxlbmd0aC0xJiYoQi55Q2VudGVyPVIpLFQmJihCLnhS YW5nZXM9Yi54UmFuZ2VzLEIueVJhbmdlcz1iLnlSYW5nZXMsQi5wdHM9Yi5w dHMpLGt8fHModCxlLHt2YWxzOnksY0xldHRlcjoieiJ9KSxrJiZlLmNvbnRv dXJzJiYiaGVhdG1hcCI9PT1lLmNvbnRvdXJzLmNvbG9yaW5nKXt2YXIgTj17 dHlwZToiY29udG91ciI9PT1lLnR5cGU/ImhlYXRtYXAiOiJoaXN0b2dyYW0y ZCIseGNhbGVuZGFyOmUueGNhbGVuZGFyLHljYWxlbmRhcjplLnljYWxlbmRh cn07Qi54ZmlsbD1mKE4sSSxwLGQseixfKSxCLnlmaWxsPWYoTixSLHYsbSx5 Lmxlbmd0aCx3KX1yZXR1cm5bQl19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29s b3JzY2FsZS9jYWxjIjo2MDAsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIu Li9oaXN0b2dyYW0yZC9jYWxjIjoxMDMyLCIuL2NsZWFuXzJkX2FycmF5Ijox MDAyLCIuL2NvbnZlcnRfY29sdW1uX3h5eiI6MTAwNCwiLi9maW5kX2VtcHRp ZXMiOjEwMDYsIi4vaW50ZXJwMmQiOjEwMDksIi4vbWFrZV9ib3VuZF9hcnJh eSI6MTAxMH1dLDEwMDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9 dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIHMsbCxjLHUsaCxmO2Z1bmN0aW9u IHAodCl7aWYobih0KSlyZXR1cm4rdH1pZihlJiZlLnRyYW5zcG9zZSl7Zm9y KHM9MCxoPTA7aDx0Lmxlbmd0aDtoKyspcz1NYXRoLm1heChzLHRbaF0ubGVu Z3RoKTtpZigwPT09cylyZXR1cm4hMTtjPWZ1bmN0aW9uKHQpe3JldHVybiB0 Lmxlbmd0aH0sdT1mdW5jdGlvbih0LGUscil7cmV0dXJuKHRbcl18fFtdKVtl XX19ZWxzZSBzPXQubGVuZ3RoLGM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtl XS5sZW5ndGh9LHU9ZnVuY3Rpb24odCxlLHIpe3JldHVybih0W2VdfHxbXSlb cl19O3ZhciBkPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZT09PWl8fHI9PT1p P2k6dSh0LGUscil9O2Z1bmN0aW9uIGcodCl7aWYoZSYmImNhcnBldCIhPT1l LnR5cGUmJiJjb250b3VyY2FycGV0IiE9PWUudHlwZSYmdCYmImNhdGVnb3J5 Ij09PXQudHlwZSYmZVsiXyIrdC5faWQuY2hhckF0KDApXS5sZW5ndGgpe3Zh ciByPXQuX2lkLmNoYXJBdCgwKSxuPXt9LG89ZVsiXyIrcisiQ2F0ZWdvcnlN YXAiXXx8ZVtyXTtmb3IoaD0wO2g8by5sZW5ndGg7aCsrKW5bb1toXV09aDty ZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9blt0Ll9jYXRlZ29yaWVzW2VdXTty ZXR1cm4gcisxP3I6aX19cmV0dXJuIGEuaWRlbnRpdHl9dmFyIHY9ZyhyKSxt PWcobyk7byYmImNhdGVnb3J5Ij09PW8udHlwZSYmKHM9by5fY2F0ZWdvcmll cy5sZW5ndGgpO3ZhciB5PW5ldyBBcnJheShzKTtmb3IoaD0wO2g8cztoKysp Zm9yKGw9ciYmImNhdGVnb3J5Ij09PXIudHlwZT9yLl9jYXRlZ29yaWVzLmxl bmd0aDpjKHQsaCkseVtoXT1uZXcgQXJyYXkobCksZj0wO2Y8bDtmKyspeVto XVtmXT1wKGQodCxtKGgpLHYoZikpKTtyZXR1cm4geX19LHsiLi4vLi4vY29u c3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiZmFzdC1p c251bWVyaWMiOjIyOH1dLDEwMDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPXttaW46InptaW4iLG1heDoiem1heCJ9fSx7fV0s MTAwNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5C QUROVU07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGksbyxzKXt2YXIgbCxj LHUsaCxmPXQuX2xlbmd0aCxwPWUubWFrZUNhbGNkYXRhKHQsaSksZD1yLm1h a2VDYWxjZGF0YSh0LG8pLGc9dC50ZXh0LHY9dm9pZCAwIT09ZyYmbi5pc0Fy cmF5MUQoZyksbT10LmhvdmVydGV4dCx5PXZvaWQgMCE9PW0mJm4uaXNBcnJh eTFEKG0pLHg9bi5kaXN0aW5jdFZhbHMocCksYj14LnZhbHMsXz1uLmRpc3Rp bmN0VmFscyhkKSx3PV8udmFscyxrPVtdO2ZvcihsPTA7bDxzLmxlbmd0aDts Kyspa1tsXT1uLmluaXQyZEFycmF5KHcubGVuZ3RoLGIubGVuZ3RoKTt2JiYo dT1uLmluaXQyZEFycmF5KHcubGVuZ3RoLGIubGVuZ3RoKSkseSYmKGg9bi5p bml0MmRBcnJheSh3Lmxlbmd0aCxiLmxlbmd0aCkpO3ZhciBUPW4uaW5pdDJk QXJyYXkody5sZW5ndGgsYi5sZW5ndGgpO2ZvcihsPTA7bDxmO2wrKylpZihw W2xdIT09YSYmZFtsXSE9PWEpe3ZhciBNPW4uZmluZEJpbihwW2xdK3gubWlu RGlmZi8yLGIpLEE9bi5maW5kQmluKGRbbF0rXy5taW5EaWZmLzIsdyk7Zm9y KGM9MDtjPHMubGVuZ3RoO2MrKyl7dmFyIFM9dFtzW2NdXTtrW2NdW0FdW01d PVNbbF0sVFtBXVtNXT1sfXYmJih1W0FdW01dPWdbbF0pLHkmJihoW0FdW01d PW1bbF0pfWZvcih0WyJfIitpXT1iLHRbIl8iK29dPXcsYz0wO2M8cy5sZW5n dGg7YysrKXRbIl8iK3NbY11dPWtbY107diYmKHQuX3RleHQ9dSkseSYmKHQu X2hvdmVydGV4dD1oKSxlJiYiY2F0ZWdvcnkiPT09ZS50eXBlJiYodFsiXyIr aSsiQ2F0ZWdvcnlNYXAiXT1iLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZS5f Y2F0ZWdvcmllc1t0XX0pKSxyJiYiY2F0ZWdvcnkiPT09ci50eXBlJiYodFsi XyIrbysiQ2F0ZWdvcnlNYXAiXT13Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4g ci5fY2F0ZWdvcmllc1t0XX0pKSx0Ll9hZnRlcjJiZWZvcmU9VH19LHsiLi4v Li4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxN31d LDEwMDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vbGliIiksYT10KCIuL3h5el9kZWZhdWx0cyIpLGk9dCgiLi9zdHls ZV9kZWZhdWx0cyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxl L2RlZmF1bHRzIikscz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gYyhyLGEpe3JldHVybiBuLmNvZXJj ZSh0LGUscyxyLGEpfWEodCxlLGMsbCk/KGMoInRleHQiKSxjKCJob3ZlcnRl eHQiKSxjKCJob3ZlcnRlbXBsYXRlIiksaSh0LGUsYyxsKSxjKCJob3Zlcm9u Z2FwcyIpLGMoImNvbm5lY3RnYXBzIixuLmlzQXJyYXkxRChlLnopJiYhMSE9 PWUuenNtb290aCksbyh0LGUsbCxjLHtwcmVmaXg6IiIsY0xldHRlcjoieiJ9 KSk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUvZGVmYXVsdHMiOjYwMiwiLi4vLi4vbGliIjo3MTcsIi4vYXR0cmlidXRl cyI6MWUzLCIuL3N0eWxlX2RlZmF1bHRzIjoxMDEzLCIuL3h5el9kZWZhdWx0 cyI6MTAxNH1dLDEwMDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIikubWF4Um93TGVuZ3RoO2UuZXhwb3J0cz1m dW5jdGlvbih0KXt2YXIgZSxyLGEsaSxvLHMsbCxjLHU9W10saD17fSxmPVtd LHA9dFswXSxkPVtdLGc9WzAsMCwwXSx2PW4odCk7Zm9yKHI9MDtyPHQubGVu Z3RoO3IrKylmb3IoZT1kLGQ9cCxwPXRbcisxXXx8W10sYT0wO2E8djthKysp dm9pZCAwPT09ZFthXSYmKChzPSh2b2lkIDAhPT1kW2EtMV0/MTowKSsodm9p ZCAwIT09ZFthKzFdPzE6MCkrKHZvaWQgMCE9PWVbYV0/MTowKSsodm9pZCAw IT09cFthXT8xOjApKT8oMD09PXImJnMrKywwPT09YSYmcysrLHI9PT10Lmxl bmd0aC0xJiZzKyssYT09PWQubGVuZ3RoLTEmJnMrKyxzPDQmJihoW1tyLGFd XT1bcixhLHNdKSx1LnB1c2goW3IsYSxzXSkpOmYucHVzaChbcixhXSkpO2Zv cig7Zi5sZW5ndGg7KXtmb3IobD17fSxjPSExLG89Zi5sZW5ndGgtMTtvPj0w O28tLSkocz0oKGhbWyhyPShpPWZbb10pWzBdKS0xLGE9aVsxXV1dfHxnKVsy XSsoaFtbcisxLGFdXXx8ZylbMl0rKGhbW3IsYS0xXV18fGcpWzJdKyhoW1ty LGErMV1dfHxnKVsyXSkvMjApJiYobFtpXT1bcixhLHNdLGYuc3BsaWNlKG8s MSksYz0hMCk7aWYoIWMpdGhyb3ciZmluZEVtcHRpZXMgaXRlcmF0ZWQgd2l0 aCBubyBuZXcgbmVpZ2hib3JzIjtmb3IoaSBpbiBsKWhbaV09bFtpXSx1LnB1 c2gobFtpXSl9cmV0dXJuIHUuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBl WzJdLXRbMl19KX19LHsiLi4vLi4vbGliIjo3MTd9XSwxMDA3OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVu dHMvZngiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F4ZXMiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2Fs ZSIpLmV4dHJhY3RPcHRzO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzLGws Yyl7dmFyIHUsaCxmLHAsZD10LmNkWzBdLGc9ZC50cmFjZSx2PXQueGEsbT10 LnlhLHk9ZC54LHg9ZC55LGI9ZC56LF89ZC54Q2VudGVyLHc9ZC55Q2VudGVy LGs9ZC56bWFzayxUPWcuemhvdmVyZm9ybWF0LE09eSxBPXg7aWYoITEhPT10 LmluZGV4KXt0cnl7Zj1NYXRoLnJvdW5kKHQuaW5kZXhbMV0pLHA9TWF0aC5y b3VuZCh0LmluZGV4WzBdKX1jYXRjaChlKXtyZXR1cm4gdm9pZCBhLmVycm9y KCJFcnJvciBob3ZlcmluZyBvbiBoZWF0bWFwLCBwb2ludE51bWJlciBtdXN0 IGJlIFtyb3csY29sXSwgZm91bmQ6Iix0LmluZGV4KX1pZihmPDB8fGY+PWJb MF0ubGVuZ3RofHxwPDB8fHA+Yi5sZW5ndGgpcmV0dXJufWVsc2V7aWYobi5p bmJveChlLXlbMF0sZS15W3kubGVuZ3RoLTFdLDApPjB8fG4uaW5ib3goci14 WzBdLHIteFt4Lmxlbmd0aC0xXSwwKT4wKXJldHVybjtpZihjKXt2YXIgUztm b3IoTT1bMip5WzBdLXlbMV1dLFM9MTtTPHkubGVuZ3RoO1MrKylNLnB1c2go KHlbU10reVtTLTFdKS8yKTtmb3IoTS5wdXNoKFsyKnlbeS5sZW5ndGgtMV0t eVt5Lmxlbmd0aC0yXV0pLEE9WzIqeFswXS14WzFdXSxTPTE7Uzx4Lmxlbmd0 aDtTKyspQS5wdXNoKCh4W1NdK3hbUy0xXSkvMik7QS5wdXNoKFsyKnhbeC5s ZW5ndGgtMV0teFt4Lmxlbmd0aC0yXV0pfWY9TWF0aC5tYXgoMCxNYXRoLm1p bihNLmxlbmd0aC0yLGEuZmluZEJpbihlLE0pKSkscD1NYXRoLm1heCgwLE1h dGgubWluKEEubGVuZ3RoLTIsYS5maW5kQmluKHIsQSkpKX12YXIgRT12LmMy cCh5W2ZdKSxMPXYuYzJwKHlbZisxXSksQz1tLmMycCh4W3BdKSxQPW0uYzJw KHhbcCsxXSk7Yz8oTD1FLHU9eVtmXSxQPUMsaD14W3BdKToodT1fP19bZl06 KHlbZl0reVtmKzFdKS8yLGg9dz93W3BdOih4W3BdK3hbcCsxXSkvMix2JiYi Y2F0ZWdvcnkiPT09di50eXBlJiYodT15W2ZdKSxtJiYiY2F0ZWdvcnkiPT09 bS50eXBlJiYoaD14W3BdKSxnLnpzbW9vdGgmJihFPUw9di5jMnAodSksQz1Q PW0uYzJwKGgpKSk7dmFyIE89YltwXVtmXTtpZihrJiYha1twXVtmXSYmKE89 dm9pZCAwKSx2b2lkIDAhPT1PfHxnLmhvdmVyb25nYXBzKXt2YXIgejtBcnJh eS5pc0FycmF5KGQuaG92ZXJ0ZXh0KSYmQXJyYXkuaXNBcnJheShkLmhvdmVy dGV4dFtwXSk/ej1kLmhvdmVydGV4dFtwXVtmXTpBcnJheS5pc0FycmF5KGQu dGV4dCkmJkFycmF5LmlzQXJyYXkoZC50ZXh0W3BdKSYmKHo9ZC50ZXh0W3Bd W2ZdKTt2YXIgST1vKGcpLEQ9e3R5cGU6ImxpbmVhciIscmFuZ2U6W0kubWlu LEkubWF4XSxob3ZlcmZvcm1hdDpULF9zZXBhcmF0b3JzOnYuX3NlcGFyYXRv cnMsX251bUZvcm1hdDp2Ll9udW1Gb3JtYXR9LFI9aS50aWNrVGV4dChELE8s ImhvdmVyIikudGV4dDtyZXR1cm5bYS5leHRlbmRGbGF0KHQse2luZGV4Omcu X2FmdGVyMmJlZm9yZT9nLl9hZnRlcjJiZWZvcmVbcF1bZl06W3AsZl0sZGlz dGFuY2U6dC5tYXhIb3ZlckRpc3RhbmNlLHNwaWtlRGlzdGFuY2U6dC5tYXhT cGlrZURpc3RhbmNlLHgwOkUseDE6TCx5MDpDLHkxOlAseExhYmVsVmFsOnUs eUxhYmVsVmFsOmgsekxhYmVsVmFsOk8sekxhYmVsOlIsdGV4dDp6fSldfX19 LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4uL2Nv bXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIjo3NjV9XSwxMDA4OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJp YnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0 KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLGNvbG9yYmFyOnQoIi4vY29s b3JiYXIiKSxzdHlsZTp0KCIuL3N0eWxlIiksaG92ZXJQb2ludHM6dCgiLi9o b3ZlciIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJoZWF0bWFwIixiYXNl UGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29y aWVzOlsiY2FydGVzaWFuIiwic3ZnIiwiMmRNYXAiLCJzaG93TGVnZW5kIl0s bWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYsIi4vYXR0 cmlidXRlcyI6MWUzLCIuL2NhbGMiOjEwMDEsIi4vY29sb3JiYXIiOjEwMDMs Ii4vZGVmYXVsdHMiOjEwMDUsIi4vaG92ZXIiOjEwMDcsIi4vcGxvdCI6MTAx MSwiLi9zdHlsZSI6MTAxMn1dLDEwMDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT1bWy0xLDBdLFsxLDBd LFswLC0xXSxbMCwxXV07ZnVuY3Rpb24gaSh0KXtyZXR1cm4uNS0uMjUqTWF0 aC5taW4oMSwuNSp0KX1mdW5jdGlvbiBvKHQsZSxyKXt2YXIgbixpLG8scyxs LGMsdSxoLGYscCxkLGcsdixtPTA7Zm9yKHM9MDtzPGUubGVuZ3RoO3MrKyl7 Zm9yKGk9KG49ZVtzXSlbMF0sbz1uWzFdLGQ9dFtpXVtvXSxwPTAsZj0wLGw9 MDtsPDQ7bCsrKSh1PXRbaSsoYz1hW2xdKVswXV0pJiZ2b2lkIDAhPT0oaD11 W28rY1sxXV0pJiYoMD09PXA/Zz12PWg6KGc9TWF0aC5taW4oZyxoKSx2PU1h dGgubWF4KHYsaCkpLGYrKyxwKz1oKTtpZigwPT09Zil0aHJvdyJpdGVyYXRl SW50ZXJwMmQgb3JkZXIgaXMgd3Jvbmc6IG5vIGRlZmluZWQgbmVpZ2hib3Jz Ijt0W2ldW29dPXAvZix2b2lkIDA9PT1kP2Y8NCYmKG09MSk6KHRbaV1bb109 KDErcikqdFtpXVtvXS1yKmQsdj5nJiYobT1NYXRoLm1heChtLE1hdGguYWJz KHRbaV1bb10tZCkvKHYtZykpKSl9cmV0dXJuIG19ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7dmFyIHIsYT0xO2ZvcihvKHQsZSkscj0wO3I8ZS5sZW5ndGgm JiEoZVtyXVsyXTw0KTtyKyspO2ZvcihlPWUuc2xpY2Uocikscj0wO3I8MTAw JiZhPi4wMTtyKyspYT1vKHQsZSxpKGEpKTtyZXR1cm4gYT4uMDEmJm4ubG9n KCJpbnRlcnAyZCBkaWRuJ3QgY29udmVyZ2UgcXVpY2tseSIsYSksdH19LHsi Li4vLi4vbGliIjo3MTd9XSwxMDEwOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9s aWIiKS5pc0FycmF5T3JUeXBlZEFycmF5O2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixpLG8scyl7dmFyIGwsYyx1LGg9W10sZj1uLnRyYWNlSXModCwiY29u dG91ciIpLHA9bi50cmFjZUlzKHQsImhpc3RvZ3JhbSIpLGQ9bi50cmFjZUlz KHQsImdsMmQiKTtpZihhKGUpJiZlLmxlbmd0aD4xJiYhcCYmImNhdGVnb3J5 IiE9PXMudHlwZSl7dmFyIGc9ZS5sZW5ndGg7aWYoIShnPD1vKSlyZXR1cm4g Zj9lLnNsaWNlKDAsbyk6ZS5zbGljZSgwLG8rMSk7aWYoZnx8ZCloPWUuc2xp Y2UoMCxvKTtlbHNlIGlmKDE9PT1vKWg9W2VbMF0tLjUsZVswXSsuNV07ZWxz ZXtmb3IoaD1bMS41KmVbMF0tLjUqZVsxXV0sdT0xO3U8Zzt1KyspaC5wdXNo KC41KihlW3UtMV0rZVt1XSkpO2gucHVzaCgxLjUqZVtnLTFdLS41KmVbZy0y XSl9aWYoZzxvKXt2YXIgdj1oW2gubGVuZ3RoLTFdLG09di1oW2gubGVuZ3Ro LTJdO2Zvcih1PWc7dTxvO3UrKyl2Kz1tLGgucHVzaCh2KX19ZWxzZXt2YXIg eT10W3MuX2lkLmNoYXJBdCgwKSsiY2FsZW5kYXIiXTtpZihwKWw9cy5yMmMo ciwwLHkpO2Vsc2UgaWYoYShlKSYmMT09PWUubGVuZ3RoKWw9ZVswXTtlbHNl IGlmKHZvaWQgMD09PXIpbD0wO2Vsc2V7bD0oImxvZyI9PT1zLnR5cGU/cy5k MmM6cy5yMmMpKHIsMCx5KX1mb3IoYz1pfHwxLHU9Znx8ZD8wOi0uNTt1PG87 dSsrKWgucHVzaChsK2MqdSl9cmV0dXJuIGh9fSx7Ii4uLy4uL2xpYiI6NzE3 LCIuLi8uLi9yZWdpc3RyeSI6ODQ2fV0sMTAxMTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgidGlueWNvbG9yMiIp LGk9dCgiLi4vLi4vcmVnaXN0cnkiKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgi Li4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIikubWFrZUNvbG9yU2NhbGVG dW5jRnJvbVRyYWNlLGw9dCgiLi4vLi4vY29uc3RhbnRzL3htbG5zX25hbWVz cGFjZXMiKTtmdW5jdGlvbiBjKHQsZSl7dmFyIHI9ZS5sZW5ndGgtMixuPW8u Y29uc3RyYWluKG8uZmluZEJpbih0LGUpLDAsciksYT1lW25dLGk9ZVtuKzFd LHM9by5jb25zdHJhaW4obisodC1hKS8oaS1hKS0uNSwwLHIpLGw9TWF0aC5y b3VuZChzKSxjPU1hdGguYWJzKHMtbCk7cmV0dXJuIHMmJnMhPT1yJiZjP3ti aW4wOmwsZnJhYzpjLGJpbjE6TWF0aC5yb3VuZChsK2MvKHMtbCkpfTp7Ymlu MDpsLGJpbjE6bCxmcmFjOjB9fWZ1bmN0aW9uIHUodCxlKXt2YXIgcj1lLmxl bmd0aC0xLG49by5jb25zdHJhaW4oby5maW5kQmluKHQsZSksMCxyKSxhPWVb bl0saT0odC1hKS8oZVtuKzFdLWEpfHwwO3JldHVybiBpPD0wP3tiaW4wOm4s YmluMTpuLGZyYWM6MH06aTwuNT97YmluMDpuLGJpbjE6bisxLGZyYWM6aX06 e2JpbjA6bisxLGJpbjE6bixmcmFjOjEtaX19ZnVuY3Rpb24gaCh0LGUscil7 dFtlXT1yWzBdLHRbZSsxXT1yWzFdLHRbZSsyXT1yWzJdLHRbZSszXT1NYXRo LnJvdW5kKDI1NSpyWzNdKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsZil7 dmFyIHA9ZS54YXhpcyxkPWUueWF4aXM7by5tYWtlVHJhY2VHcm91cHMoZixy LCJobSIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIHIsZixnLHYsbSx5LHg9bi5z ZWxlY3QodGhpcyksYj1lWzBdLF89Yi50cmFjZSx3PWIueixrPWIueCxUPWIu eSxNPWIueENlbnRlcixBPWIueUNlbnRlcixTPWkudHJhY2VJcyhfLCJjb250 b3VyIiksRT1TPyJiZXN0IjpfLnpzbW9vdGgsTD13Lmxlbmd0aCxDPW8ubWF4 Um93TGVuZ3RoKHcpLFA9ITEsTz0hMTtmb3IoeT0wO3ZvaWQgMD09PXImJnk8 ay5sZW5ndGgtMTspcj1wLmMycChrW3ldKSx5Kys7Zm9yKHk9ay5sZW5ndGgt MTt2b2lkIDA9PT1mJiZ5PjA7KWY9cC5jMnAoa1t5XSkseS0tO2ZvcihmPHIm JihnPWYsZj1yLHI9ZyxQPSEwKSx5PTA7dm9pZCAwPT09diYmeTxULmxlbmd0 aC0xOyl2PWQuYzJwKFRbeV0pLHkrKztmb3IoeT1ULmxlbmd0aC0xO3ZvaWQg MD09PW0mJnk+MDspbT1kLmMycChUW3ldKSx5LS07aWYobTx2JiYoZz12LHY9 bSxtPWcsTz0hMCksUyYmKE09ayxBPVQsaz1iLnhmaWxsLFQ9Yi55ZmlsbCks ImZhc3QiIT09RSl7dmFyIHo9ImJlc3QiPT09RT8wOi41O3I9TWF0aC5tYXgo LXoqcC5fbGVuZ3RoLHIpLGY9TWF0aC5taW4oKDEreikqcC5fbGVuZ3RoLGYp LHY9TWF0aC5tYXgoLXoqZC5fbGVuZ3RoLHYpLG09TWF0aC5taW4oKDEreikq ZC5fbGVuZ3RoLG0pfXZhciBJPU1hdGgucm91bmQoZi1yKSxEPU1hdGgucm91 bmQobS12KTtpZihJPD0wfHxEPD0wKXt4LnNlbGVjdEFsbCgiaW1hZ2UiKS5k YXRhKFtdKS5leGl0KCkucmVtb3ZlKCl9ZWxzZXt2YXIgUixGOyJmYXN0Ij09 PUU/KFI9QyxGPUwpOihSPUksRj1EKTt2YXIgQj1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCJjYW52YXMiKTtCLndpZHRoPVIsQi5oZWlnaHQ9Rjt2YXIgTixq LFY9Qi5nZXRDb250ZXh0KCIyZCIpLFU9cyhfLHtub051bWVyaWNDaGVjazoh MCxyZXR1cm5BcnJheTohMH0pOyJmYXN0Ij09PUU/KE49UD9mdW5jdGlvbih0 KXtyZXR1cm4gQy0xLXR9Om8uaWRlbnRpdHksaj1PP2Z1bmN0aW9uKHQpe3Jl dHVybiBMLTEtdH06by5pZGVudGl0eSk6KE49ZnVuY3Rpb24odCl7cmV0dXJu IG8uY29uc3RyYWluKE1hdGgucm91bmQocC5jMnAoa1t0XSktciksMCxJKX0s aj1mdW5jdGlvbih0KXtyZXR1cm4gby5jb25zdHJhaW4oTWF0aC5yb3VuZChk LmMycChUW3RdKS12KSwwLEQpfSk7dmFyIHEsSCxHLFksVyxYPWooMCksWj1b WCxYXSxKPVA/MDoxLEs9Tz8wOjEsUT0wLCQ9MCx0dD0wLGV0PTA7aWYoRSl7 dmFyIHJ0LG50PTA7dHJ5e3J0PW5ldyBVaW50OEFycmF5KEkqRCo0KX1jYXRj aCh0KXtydD1uZXcgQXJyYXkoSSpEKjQpfWlmKCJiZXN0Ij09PUUpe3ZhciBh dCxpdCxvdCxzdD1NfHxrLGx0PUF8fFQsY3Q9bmV3IEFycmF5KHN0Lmxlbmd0 aCksdXQ9bmV3IEFycmF5KGx0Lmxlbmd0aCksaHQ9bmV3IEFycmF5KEkpLGZ0 PU0/dTpjLHB0PUE/dTpjO2Zvcih5PTA7eTxzdC5sZW5ndGg7eSsrKWN0W3ld PU1hdGgucm91bmQocC5jMnAoc3RbeV0pLXIpO2Zvcih5PTA7eTxsdC5sZW5n dGg7eSsrKXV0W3ldPU1hdGgucm91bmQoZC5jMnAobHRbeV0pLXYpO2Zvcih5 PTA7eTxJO3krKylodFt5XT1mdCh5LGN0KTtmb3IoSD0wO0g8RDtIKyspZm9y KGl0PXdbKGF0PXB0KEgsdXQpKS5iaW4wXSxvdD13W2F0LmJpbjFdLHk9MDt5 PEk7eSsrLG50Kz00KWgocnQsbnQsVz1UdChpdCxvdCxodFt5XSxhdCkpfWVs c2UgZm9yKEg9MDtIPEw7SCsrKWZvcihZPXdbSF0sWj1qKEgpLHk9MDt5PEk7 eSsrKVc9a3QoWVt5XSwxKSxoKHJ0LG50PTQqKFoqSStOKHkpKSxXKTt2YXIg ZHQ9Vi5jcmVhdGVJbWFnZURhdGEoSSxEKTt0cnl7ZHQuZGF0YS5zZXQocnQp fWNhdGNoKHQpe3ZhciBndD1kdC5kYXRhLHZ0PWd0Lmxlbmd0aDtmb3IoSD0w O0g8dnQ7SCsrKWd0W0hdPXJ0W0hdfVYucHV0SW1hZ2VEYXRhKGR0LDAsMCl9 ZWxzZXt2YXIgbXQ9Xy54Z2FwLHl0PV8ueWdhcCx4dD1NYXRoLmZsb29yKG10 LzIpLGJ0PU1hdGguZmxvb3IoeXQvMik7Zm9yKEg9MDtIPEw7SCsrKWlmKFk9 d1tIXSxaLnJldmVyc2UoKSxaW0tdPWooSCsxKSxaWzBdIT09WlsxXSYmdm9p ZCAwIT09WlswXSYmdm9pZCAwIT09WlsxXSlmb3IocT1bRz1OKDApLEddLHk9 MDt5PEM7eSsrKXEucmV2ZXJzZSgpLHFbSl09Tih5KzEpLHFbMF0hPT1xWzFd JiZ2b2lkIDAhPT1xWzBdJiZ2b2lkIDAhPT1xWzFdJiYoVz1rdChZW3ldLChx WzFdLXFbMF0pKihaWzFdLVpbMF0pKSxWLmZpbGxTdHlsZT0icmdiYSgiK1cu am9pbigiLCIpKyIpIixWLmZpbGxSZWN0KHFbMF0reHQsWlswXStidCxxWzFd LXFbMF0tbXQsWlsxXS1aWzBdLXl0KSl9JD1NYXRoLnJvdW5kKCQvUSksdHQ9 TWF0aC5yb3VuZCh0dC9RKSxldD1NYXRoLnJvdW5kKGV0L1EpO3ZhciBfdD1h KCJyZ2IoIiskKyIsIit0dCsiLCIrZXQrIikiKTt0Ll9obXBpeGNvdW50PSh0 Ll9obXBpeGNvdW50fHwwKStRLHQuX2htbHVtY291bnQ9KHQuX2htbHVtY291 bnR8fDApK1EqX3QuZ2V0THVtaW5hbmNlKCk7dmFyIHd0PXguc2VsZWN0QWxs KCJpbWFnZSIpLmRhdGEoZSk7d3QuZW50ZXIoKS5hcHBlbmQoInN2ZzppbWFn ZSIpLmF0dHIoe3htbG5zOmwuc3ZnLHByZXNlcnZlQXNwZWN0UmF0aW86Im5v bmUifSksd3QuYXR0cih7aGVpZ2h0OkQsd2lkdGg6SSx4OnIseTp2LCJ4bGlu azpocmVmIjpCLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIil9KX1mdW5jdGlvbiBr dCh0LGUpe2lmKHZvaWQgMCE9PXQpe3ZhciByPVUodCk7cmV0dXJuIHJbMF09 TWF0aC5yb3VuZChyWzBdKSxyWzFdPU1hdGgucm91bmQoclsxXSksclsyXT1N YXRoLnJvdW5kKHJbMl0pLFErPWUsJCs9clswXSplLHR0Kz1yWzFdKmUsZXQr PXJbMl0qZSxyfXJldHVyblswLDAsMCwwXX1mdW5jdGlvbiBUdCh0LGUscixu KXt2YXIgYT10W3IuYmluMF07aWYodm9pZCAwPT09YSlyZXR1cm4ga3Qodm9p ZCAwLDEpO3ZhciBpLG89dFtyLmJpbjFdLHM9ZVtyLmJpbjBdLGw9ZVtyLmJp bjFdLGM9by1hfHwwLHU9cy1hfHwwO3JldHVybiBpPXZvaWQgMD09PW8/dm9p ZCAwPT09bD8wOnZvaWQgMD09PXM/MioobC1hKToyKigyKmwtcy1hKS8zOnZv aWQgMD09PWw/dm9pZCAwPT09cz8wOjIqKDIqYS1vLXMpLzM6dm9pZCAwPT09 cz8yKigyKmwtby1hKS8zOmwrYS1vLXMsa3QoYStyLmZyYWMqYytuLmZyYWMq KHUrci5mcmFjKmkpKX19KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNj YWxlIjo2MDQsIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo2 OTQsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LGQzOjE2 NSx0aW55Y29sb3IyOjUzNn1dLDEwMTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiZDMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7 bi5zZWxlY3QodCkuc2VsZWN0QWxsKCIuaG0gaW1hZ2UiKS5zdHlsZSgib3Bh Y2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQudHJhY2Uub3BhY2l0eX0pfX0s e2QzOjE2NX1dLDEwMTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXshMT09PXIoInpzbW9vdGgiKSYm KHIoInhnYXAiKSxyKCJ5Z2FwIikpLHIoInpob3ZlcmZvcm1hdCIpfX0se31d LDEwMTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi ZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4v cmVnaXN0cnkiKTtmdW5jdGlvbiBvKHQsZSl7dmFyIHI9ZSh0KTtyZXR1cm4i c2NhbGVkIj09PShyP2UodCsidHlwZSIsImFycmF5Iik6InNjYWxlZCIpJiYo ZSh0KyIwIiksZSgiZCIrdCkpLHJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy LHMsbCxjKXt2YXIgdSxoLGY9cigieiIpO2lmKGw9bHx8IngiLGM9Y3x8Inki LHZvaWQgMD09PWZ8fCFmLmxlbmd0aClyZXR1cm4gMDtpZihhLmlzQXJyYXkx RCh0LnopKXt1PXIobCksaD1yKGMpO3ZhciBwPWEubWluUm93TGVuZ3RoKHUp LGQ9YS5taW5Sb3dMZW5ndGgoaCk7aWYoMD09PXB8fDA9PT1kKXJldHVybiAw O2UuX2xlbmd0aD1NYXRoLm1pbihwLGQsZi5sZW5ndGgpfWVsc2V7aWYodT1v KGwsciksaD1vKGMsciksIWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPSEwLGk9 ITEsbz0hMSxzPTA7czx0Lmxlbmd0aDtzKyspe2lmKGU9dFtzXSwhYS5pc0Fy cmF5T3JUeXBlZEFycmF5KGUpKXtyPSExO2JyZWFrfWUubGVuZ3RoPjAmJihp PSEwKTtmb3IodmFyIGw9MDtsPGUubGVuZ3RoO2wrKylpZihuKGVbbF0pKXtv PSEwO2JyZWFrfX1yZXR1cm4gciYmaSYmb30oZikpcmV0dXJuIDA7cigidHJh bnNwb3NlIiksZS5fbGVuZ3RoPW51bGx9cmV0dXJuIGkuZ2V0Q29tcG9uZW50 TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVUcmFjZURlZmF1bHRzIikodCxl LFtsLGNdLHMpLCEwfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcmVnaXN0 cnkiOjg0NiwiZmFzdC1pc251bWVyaWMiOjIyOH1dLDEwMTU6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7Zm9yKHZhciBuPXQoIi4uL2hlYXRtYXAv YXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxl L2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRG bGF0LG89dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRl QWxsLHM9WyJ6IiwieCIsIngwIiwiZHgiLCJ5IiwieTAiLCJkeSIsInRleHQi LCJ0cmFuc3Bvc2UiLCJ4dHlwZSIsInl0eXBlIl0sbD17fSxjPTA7YzxzLmxl bmd0aDtjKyspe3ZhciB1PXNbY107bFt1XT1uW3VdfWkobCxhKCIiLHtjTGV0 dGVyOiJ6IixhdXRvQ29sb3JEZmx0OiExfSkpLGUuZXhwb3J0cz1vKGwsImNh bGMiLCJuZXN0ZWQiKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUv YXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4u L3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vaGVhdG1hcC9hdHRyaWJ1 dGVzIjoxZTN9XSwxMDE2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoImdsLWhlYXRtYXAyZCIpLGE9dCgiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F4ZXMiKSxpPXQoIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiKTtm dW5jdGlvbiBvKHQsZSl7dGhpcy5zY2VuZT10LHRoaXMudWlkPWUsdGhpcy50 eXBlPSJoZWF0bWFwZ2wiLHRoaXMubmFtZT0iIix0aGlzLmhvdmVyaW5mbz0i YWxsIix0aGlzLnhEYXRhPVtdLHRoaXMueURhdGE9W10sdGhpcy56RGF0YT1b XSx0aGlzLnRleHRMYWJlbHM9W10sdGhpcy5pZFRvSW5kZXg9W10sdGhpcy5i b3VuZHM9WzAsMCwwLDBdLHRoaXMub3B0aW9ucz17ejpbXSx4OltdLHk6W10s c2hhcGU6WzAsMF0sY29sb3JMZXZlbHM6WzBdLGNvbG9yVmFsdWVzOlswLDAs MCwxXX0sdGhpcy5oZWF0bWFwPW4odC5nbHBsb3QsdGhpcy5vcHRpb25zKSx0 aGlzLmhlYXRtYXAuX3RyYWNlPXRoaXN9dmFyIHM9by5wcm90b3R5cGU7cy5o YW5kbGVQaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0aW9ucyxyPWUu c2hhcGUsbj10LnBvaW50SWQsYT1uJXJbMF0saT1NYXRoLmZsb29yKG4vclsw XSksbz1uO3JldHVybnt0cmFjZTp0aGlzLGRhdGFDb29yZDp0LmRhdGFDb29y ZCx0cmFjZUNvb3JkOltlLnhbYV0sZS55W2ldLGUueltvXV0sdGV4dExhYmVs OnRoaXMudGV4dExhYmVsc1tuXSxuYW1lOnRoaXMubmFtZSxwb2ludEluZGV4 OltpLGFdLGhvdmVyaW5mbzp0aGlzLmhvdmVyaW5mb319LHMudXBkYXRlPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTt0aGlzLmluZGV4PXQuaW5kZXgsdGhp cy5uYW1lPXQubmFtZSx0aGlzLmhvdmVyaW5mbz10LmhvdmVyaW5mbzt2YXIg bj1yLno7dGhpcy5vcHRpb25zLno9W10uY29uY2F0LmFwcGx5KFtdLG4pO3Zh ciBvPW5bMF0ubGVuZ3RoLHM9bi5sZW5ndGg7dGhpcy5vcHRpb25zLnNoYXBl PVtvLHNdLHRoaXMub3B0aW9ucy54PXIueCx0aGlzLm9wdGlvbnMueT1yLnk7 dmFyIGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY29sb3JzY2FsZSxyPXQu em1pbixuPXQuem1heCxhPWUubGVuZ3RoLG89bmV3IEFycmF5KGEpLHM9bmV3 IEFycmF5KDQqYSksbD0wO2w8YTtsKyspe3ZhciBjPWVbbF0sdT1pKGNbMV0p O29bbF09citjWzBdKihuLXIpO2Zvcih2YXIgaD0wO2g8NDtoKyspc1s0Kmwr aF09dVtoXX1yZXR1cm57Y29sb3JMZXZlbHM6byxjb2xvclZhbHVlczpzfX0o dCk7dGhpcy5vcHRpb25zLmNvbG9yTGV2ZWxzPWwuY29sb3JMZXZlbHMsdGhp cy5vcHRpb25zLmNvbG9yVmFsdWVzPWwuY29sb3JWYWx1ZXMsdGhpcy50ZXh0 TGFiZWxzPVtdLmNvbmNhdC5hcHBseShbXSx0LnRleHQpLHRoaXMuaGVhdG1h cC51cGRhdGUodGhpcy5vcHRpb25zKTt2YXIgYz10aGlzLnNjZW5lLnhheGlz LHU9dGhpcy5zY2VuZS55YXhpczt0Ll9leHRyZW1lc1tjLl9pZF09YS5maW5k RXh0cmVtZXMoYyxyLngpLHQuX2V4dHJlbWVzW3UuX2lkXT1hLmZpbmRFeHRy ZW1lcyh1LHIueSl9LHMuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuaGVhdG1h cC5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49 bmV3IG8odCxlLnVpZCk7cmV0dXJuIG4udXBkYXRlKGUsciksbn19LHsiLi4v Li4vbGliL3N0cjJyZ2JhcnJheSI6NzQwLCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyI6NzY1LCJnbC1oZWF0bWFwMmQiOjI1NH1dLDEwMTc6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVz OnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4uL2hlYXRt YXAvZGVmYXVsdHMiKSxjb2xvcmJhcjp0KCIuLi9oZWF0bWFwL2NvbG9yYmFy IiksY2FsYzp0KCIuLi9oZWF0bWFwL2NhbGMiKSxwbG90OnQoIi4vY29udmVy dCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJoZWF0bWFwZ2wiLGJhc2VQ bG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2dsMmQiKSxjYXRlZ29yaWVzOlsi Z2wiLCJnbDJkIiwiMmRNYXAiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9n bDJkIjo4MDMsIi4uL2hlYXRtYXAvY2FsYyI6MTAwMSwiLi4vaGVhdG1hcC9j b2xvcmJhciI6MTAwMywiLi4vaGVhdG1hcC9kZWZhdWx0cyI6MTAwNSwiLi9h dHRyaWJ1dGVzIjoxMDE1LCIuL2NvbnZlcnQiOjEwMTZ9XSwxMDE4OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Jhci9hdHRy aWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVz IikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi9iaW5fYXR0cmlidXRlcyIp LG89dCgiLi9jb25zdGFudHMiKSxzPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5l eHRlbmRGbGF0O2UuZXhwb3J0cz17eDp7dmFsVHlwZToiZGF0YV9hcnJheSIs ZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx5Ont2YWxUeXBlOiJk YXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHRl eHQ6cyh7fSxuLnRleHQse30pLGhvdmVydGV4dDpzKHt9LG4uaG92ZXJ0ZXh0 LHt9KSxvcmllbnRhdGlvbjpuLm9yaWVudGF0aW9uLGhpc3RmdW5jOnt2YWxU eXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjb3VudCIsInN1bSIsImF2ZyIs Im1pbiIsIm1heCJdLGRmbHQ6ImNvdW50IixlZGl0VHlwZToiY2FsYyJ9LGhp c3Rub3JtOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyIiLCJwZXJj ZW50IiwicHJvYmFiaWxpdHkiLCJkZW5zaXR5IiwicHJvYmFiaWxpdHkgZGVu c2l0eSJdLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxjdW11bGF0aXZlOntl bmFibGVkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJj YWxjIn0sZGlyZWN0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6 WyJpbmNyZWFzaW5nIiwiZGVjcmVhc2luZyJdLGRmbHQ6ImluY3JlYXNpbmci LGVkaXRUeXBlOiJjYWxjIn0sY3VycmVudGJpbjp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsiaW5jbHVkZSIsImV4Y2x1ZGUiLCJoYWxmIl0sZGZs dDoiaW5jbHVkZSIsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9 LG5iaW5zeDp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRU eXBlOiJjYWxjIn0seGJpbnM6aSgieCIsITApLG5iaW5zeTp7dmFsVHlwZToi aW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0seWJpbnM6 aSgieSIsITApLGF1dG9iaW54Ont2YWxUeXBlOiJib29sZWFuIixkZmx0Om51 bGwsZWRpdFR5cGU6ImNhbGMifSxhdXRvYmlueTp7dmFsVHlwZToiYm9vbGVh biIsZGZsdDpudWxsLGVkaXRUeXBlOiJjYWxjIn0sYmluZ3JvdXA6e3ZhbFR5 cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGVt cGxhdGU6YSh7fSx7a2V5czpvLmV2ZW50RGF0YUtleXN9KSxtYXJrZXI6bi5t YXJrZXIsb2Zmc2V0Z3JvdXA6bi5vZmZzZXRncm91cCxhbGlnbm1lbnRncm91 cDpuLmFsaWdubWVudGdyb3VwLHNlbGVjdGVkOm4uc2VsZWN0ZWQsdW5zZWxl Y3RlZDpuLnVuc2VsZWN0ZWQsX2RlcHJlY2F0ZWQ6e2JhcmRpcjpuLl9kZXBy ZWNhdGVkLmJhcmRpcn19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjcwOCwiLi4v Li4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9iYXIvYXR0 cmlidXRlcyI6ODU2LCIuL2Jpbl9hdHRyaWJ1dGVzIjoxMDIwLCIuL2NvbnN0 YW50cyI6MTAyNH1dLDEwMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3Ro LG49MCxhPTA7YTxyO2ErKyllW2FdPyh0W2FdLz1lW2FdLG4rPXRbYV0pOnRb YV09bnVsbDtyZXR1cm4gbn19LHt9XSwxMDIwOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntz dGFydDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LGVuZDp7dmFs VHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LHNpemU6e3ZhbFR5cGU6ImFu eSIsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDEw MjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFz dC1pc251bWVyaWMiKTtlLmV4cG9ydHM9e2NvdW50OmZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gclt0XSsrLDF9LHN1bTpmdW5jdGlvbih0LGUscixhKXt2YXIg aT1hW2VdO3JldHVybiBuKGkpPyhpPU51bWJlcihpKSxyW3RdKz1pLGkpOjB9 LGF2ZzpmdW5jdGlvbih0LGUscixhLGkpe3ZhciBvPWFbZV07cmV0dXJuIG4o bykmJihvPU51bWJlcihvKSxyW3RdKz1vLGlbdF0rKyksMH0sbWluOmZ1bmN0 aW9uKHQsZSxyLGEpe3ZhciBpPWFbZV07aWYobihpKSl7aWYoaT1OdW1iZXIo aSksIW4oclt0XSkpcmV0dXJuIHJbdF09aSxpO2lmKHJbdF0+aSl7dmFyIG89 aS1yW3RdO3JldHVybiByW3RdPWksb319cmV0dXJuIDB9LG1heDpmdW5jdGlv bih0LGUscixhKXt2YXIgaT1hW2VdO2lmKG4oaSkpe2lmKGk9TnVtYmVyKGkp LCFuKHJbdF0pKXJldHVybiByW3RdPWksaTtpZihyW3RdPGkpe3ZhciBvPWkt clt0XTtyZXR1cm4gclt0XT1pLG99fXJldHVybiAwfX19LHsiZmFzdC1pc251 bWVyaWMiOjIyOH1dLDEwMjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLGE9bi5P TkVBVkdZRUFSLGk9bi5PTkVBVkdNT05USCxvPW4uT05FREFZLHM9bi5PTkVI T1VSLGw9bi5PTkVNSU4sYz1uLk9ORVNFQyx1PXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIikudGlja0luY3JlbWVudDtmdW5jdGlvbiBoKHQsZSxy LG4pe2lmKHQqZTw9MClyZXR1cm4gMS8wO2Zvcih2YXIgYT1NYXRoLmFicyhl LXQpLGk9ImRhdGUiPT09ci50eXBlLG89ZihhLGkpLHM9MDtzPDEwO3MrKyl7 dmFyIGw9Zig4MCpvLGkpO2lmKG89PT1sKWJyZWFrO2lmKCFwKGwsdCxlLGks cixuKSlicmVhaztvPWx9cmV0dXJuIG99ZnVuY3Rpb24gZih0LGUpe3JldHVy biBlJiZ0PmM/dD5vP3Q+MS4xKmE/YTp0PjEuMSppP2k6bzp0PnM/czp0Pmw/ bDpjOk1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5M TjEwKSl9ZnVuY3Rpb24gcCh0LGUscixuLGkscyl7aWYobiYmdD5vKXt2YXIg bD1kKGUsaSxzKSxjPWQocixpLHMpLHU9dD09PWE/MDoxO3JldHVybiBsW3Vd IT09Y1t1XX1yZXR1cm4gTWF0aC5mbG9vcihyL3QpLU1hdGguZmxvb3IoZS90 KT4uMX1mdW5jdGlvbiBkKHQsZSxyKXt2YXIgbj1lLmMyZCh0LGEscikuc3Bs aXQoIi0iKTtyZXR1cm4iIj09PW5bMF0mJihuLnVuc2hpZnQoKSxuWzBdPSIt IituWzBdKSxufWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBz LGwsYz0tMS4xKmUsZj0tLjEqZSxwPXQtZixkPXJbMF0sZz1yWzFdLHY9TWF0 aC5taW4oaChkK2YsZCtwLG4saSksaChnK2YsZytwLG4saSkpLG09TWF0aC5t aW4oaChkK2MsZCtmLG4saSksaChnK2MsZytmLG4saSkpO2lmKHY+bSYmbTxN YXRoLmFicyhnLWQpLzRlMz8ocz12LGw9ITEpOihzPU1hdGgubWluKHYsbSks bD0hMCksImRhdGUiPT09bi50eXBlJiZzPm8pe3ZhciB5PXM9PT1hPzE6Nix4 PXM9PT1hPyJNMTIiOiJNMSI7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG89 bi5jMmQoZSxhLGkpLHM9by5pbmRleE9mKCItIix5KTtzPjAmJihvPW8uc3Vi c3RyKDAscykpO3ZhciBjPW4uZDJjKG8sMCxpKTtpZihjPGUpe3ZhciBoPXUo Yyx4LCExLGkpOyhjK2gpLzI8ZSt0JiYoYz1oKX1yZXR1cm4gciYmbD91KGMs eCwhMCxpKTpjfX1yZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgbj1zKk1hdGgu cm91bmQoZS9zKTtyZXR1cm4gbitzLzEwPGUmJm4rLjkqczxlK3QmJihuKz1z KSxyJiZsJiYobi09cyksbn19fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmlj YWwiOjY5MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NX1dLDEw MjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFz dC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcmVn aXN0cnkiKSxvPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikscz10 KCIuLi9iYXIvYXJyYXlzX3RvX2NhbGNkYXRhIiksbD10KCIuL2Jpbl9mdW5j dGlvbnMiKSxjPXQoIi4vbm9ybV9mdW5jdGlvbnMiKSx1PXQoIi4vYXZlcmFn ZSIpLGg9dCgiLi9iaW5fbGFiZWxfdmFscyIpO2Z1bmN0aW9uIGYodCxlLHIs cyxsKXt2YXIgYyx1LGgscCxkLGcsdixtPXMrImJpbnMiLHk9dC5fZnVsbExh eW91dCx4PWVbIl8iK3MrImJpbmdyb3VwIl0sYj15Ll9oaXN0b2dyYW1CaW5P cHRzW3hdLF89Im92ZXJsYXkiPT09eS5iYXJtb2RlLHc9ZnVuY3Rpb24odCl7 cmV0dXJuIHIucjJjKHQsMCxwKX0saz1mdW5jdGlvbih0KXtyZXR1cm4gci5j MnIodCwwLHApfSxUPSJkYXRlIj09PXIudHlwZT9mdW5jdGlvbih0KXtyZXR1 cm4gdHx8MD09PXQ/YS5jbGVhbkRhdGUodCxudWxsLHApOm51bGx9OmZ1bmN0 aW9uKHQpe3JldHVybiBuKHQpP051bWJlcih0KTpudWxsfTtmdW5jdGlvbiBN KHQsZSxyKXtlW3QrIkZvdW5kIl0/KGVbdF09VChlW3RdKSxudWxsPT09ZVt0 XSYmKGVbdF09clt0XSkpOihnW3RdPWVbdF09clt0XSxhLm5lc3RlZFByb3Bl cnR5KHVbMF0sbSsiLiIrdCkuc2V0KHJbdF0pKX1pZihlWyJfIitzKyJhdXRv QmluRmluaXNoZWQiXSlkZWxldGUgZVsiXyIrcysiYXV0b0JpbkZpbmlzaGVk Il07ZWxzZXt1PWIudHJhY2VzO3ZhciBBPVtdLFM9ITAsRT0hMSxMPSExO2Zv cihjPTA7Yzx1Lmxlbmd0aDtjKyspaWYoKGg9dVtjXSkudmlzaWJsZSl7dmFy IEM9Yi5kaXJzW2NdO2Q9aFsiXyIrQysicG9zMCJdPXIubWFrZUNhbGNkYXRh KGgsQyksQT1hLmNvbmNhdChBLGQpLGRlbGV0ZSBoWyJfIitzKyJhdXRvQmlu RmluaXNoZWQiXSwhMD09PWUudmlzaWJsZSYmKFM/Uz0hMTooZGVsZXRlIGgu X2F1dG9CaW4saFsiXyIrcysiYXV0b0JpbkZpbmlzaGVkIl09MSksaS50cmFj ZUlzKGgsIjJkTWFwIikmJihFPSEwKSwiaGlzdG9ncmFtMmRjb250b3VyIj09 PWgudHlwZSYmKEw9ITApKX1wPXVbMF1bcysiY2FsZW5kYXIiXTt2YXIgUD1v LmF1dG9CaW4oQSxyLGIubmJpbnMsRSxwLGIuc2l6ZUZvdW5kJiZiLnNpemUp LE89dVswXS5fYXV0b0Jpbj17fTtpZihnPU9bYi5kaXJzWzBdXT17fSxMJiYo Yi5zaXplfHwoUC5zdGFydD1rKG8udGlja0luY3JlbWVudCh3KFAuc3RhcnQp LFAuc2l6ZSwhMCxwKSkpLHZvaWQgMD09PWIuZW5kJiYoUC5lbmQ9ayhvLnRp Y2tJbmNyZW1lbnQodyhQLmVuZCksUC5zaXplLCExLHApKSkpLF8mJiFpLnRy YWNlSXMoZSwiMmRNYXAiKSYmMD09PVAuX2RhdGFTcGFuJiYiY2F0ZWdvcnki IT09ci50eXBlJiYibXVsdGljYXRlZ29yeSIhPT1yLnR5cGUpe2lmKGwpcmV0 dXJuW1AsZCwhMF07UD1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBvLHMsbCxj PXQuX2Z1bGxMYXlvdXQsdT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lLnhh eGlzLG49ZS55YXhpcyxhPWUub3JpZW50YXRpb24saT1bXSxvPXQuX2Z1bGxE YXRhLHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIGw9b1tzXTsiaGlzdG9ncmFt Ij09PWwudHlwZSYmITA9PT1sLnZpc2libGUmJmwub3JpZW50YXRpb249PT1h JiZsLnhheGlzPT09ciYmbC55YXhpcz09PW4mJmkucHVzaChsKX1yZXR1cm4g aX0odCxlKSxoPSExLHA9MS8wLGQ9W2VdO2ZvcihvPTA7bzx1Lmxlbmd0aDtv KyspaWYoKHM9dVtvXSk9PT1lKWg9ITA7ZWxzZSBpZihoKXt2YXIgZz1mKHQs cyxyLG4sITApLHY9Z1swXSxtPWdbMl07c1siXyIrbisiYXV0b0JpbkZpbmlz aGVkIl09MSxzWyJfIituKyJwb3MwIl09Z1sxXSxtP2QucHVzaChzKTpwPU1h dGgubWluKHAsdi5zaXplKX1lbHNlIGw9Yy5faGlzdG9ncmFtQmluT3B0c1tz WyJfIituKyJiaW5ncm91cCJdXSxwPU1hdGgubWluKHAsbC5zaXplfHxzW2ld LnNpemUpO3ZhciB5PW5ldyBBcnJheShkLmxlbmd0aCk7Zm9yKG89MDtvPGQu bGVuZ3RoO28rKylmb3IodmFyIHg9ZFtvXVsiXyIrbisicG9zMCJdLGI9MDti PHgubGVuZ3RoO2IrKylpZih2b2lkIDAhPT14W2JdKXt5W29dPXhbYl07YnJl YWt9aXNGaW5pdGUocCl8fChwPWEuZGlzdGluY3RWYWxzKHkpLm1pbkRpZmYp O2ZvcihvPTA7bzxkLmxlbmd0aDtvKyspe3ZhciBfPShzPWRbb10pW24rImNh bGVuZGFyIl0sdz17c3RhcnQ6ci5jMnIoeVtvXS1wLzIsMCxfKSxlbmQ6ci5j MnIoeVtvXStwLzIsMCxfKSxzaXplOnB9O3MuX2lucHV0W2ldPXNbaV09dywo bD1jLl9oaXN0b2dyYW1CaW5PcHRzW3NbIl8iK24rImJpbmdyb3VwIl1dKSYm YS5leHRlbmRGbGF0KGwsdyl9cmV0dXJuIGVbaV19KHQsZSxyLHMsbSl9KHY9 aC5jdW11bGF0aXZlfHx7fSkuZW5hYmxlZCYmImluY2x1ZGUiIT09di5jdXJy ZW50YmluJiYoImRlY3JlYXNpbmciPT09di5kaXJlY3Rpb24/UC5zdGFydD1r KG8udGlja0luY3JlbWVudCh3KFAuc3RhcnQpLFAuc2l6ZSwhMCxwKSk6UC5l bmQ9ayhvLnRpY2tJbmNyZW1lbnQodyhQLmVuZCksUC5zaXplLCExLHApKSks Yi5zaXplPVAuc2l6ZSxiLnNpemVGb3VuZHx8KGcuc2l6ZT1QLnNpemUsYS5u ZXN0ZWRQcm9wZXJ0eSh1WzBdLG0rIi5zaXplIikuc2V0KFAuc2l6ZSkpLE0o InN0YXJ0IixiLFApLE0oImVuZCIsYixQKX1kPWVbIl8iK3MrInBvczAiXSxk ZWxldGUgZVsiXyIrcysicG9zMCJdO3ZhciB6PWUuX2lucHV0W21dfHx7fSxJ PWEuZXh0ZW5kRmxhdCh7fSxiKSxEPWIuc3RhcnQsUj1yLnIybCh6LnN0YXJ0 KSxGPXZvaWQgMCE9PVI7aWYoKGIuc3RhcnRGb3VuZHx8RikmJlIhPT1yLnIy bChEKSl7dmFyIEI9Rj9SOmEuYWdnTnVtcyhNYXRoLm1pbixudWxsLGQpLE49 e3R5cGU6ImNhdGVnb3J5Ij09PXIudHlwZXx8Im11bHRpY2F0ZWdvcnkiPT09 ci50eXBlPyJsaW5lYXIiOnIudHlwZSxyMmw6ci5yMmwsZHRpY2s6Yi5zaXpl LHRpY2swOkQsY2FsZW5kYXI6cCxyYW5nZTpbQixvLnRpY2tJbmNyZW1lbnQo QixiLnNpemUsITEscCldLm1hcChyLmwycil9LGo9by50aWNrRmlyc3QoTik7 aj5yLnIybChCKSYmKGo9by50aWNrSW5jcmVtZW50KGosYi5zaXplLCEwLHAp KSxJLnN0YXJ0PXIubDJyKGopLEZ8fGEubmVzdGVkUHJvcGVydHkoZSxtKyIu c3RhcnQiKS5zZXQoSS5zdGFydCl9dmFyIFY9Yi5lbmQsVT1yLnIybCh6LmVu ZCkscT12b2lkIDAhPT1VO2lmKChiLmVuZEZvdW5kfHxxKSYmVSE9PXIucjJs KFYpKXt2YXIgSD1xP1U6YS5hZ2dOdW1zKE1hdGgubWF4LG51bGwsZCk7SS5l bmQ9ci5sMnIoSCkscXx8YS5uZXN0ZWRQcm9wZXJ0eShlLG0rIi5zdGFydCIp LnNldChJLmVuZCl9dmFyIEc9ImF1dG9iaW4iK3M7cmV0dXJuITE9PT1lLl9p bnB1dFtHXSYmKGUuX2lucHV0W21dPWEuZXh0ZW5kRmxhdCh7fSxlW21dfHx7 fSksZGVsZXRlIGUuX2lucHV0W0ddLGRlbGV0ZSBlW0ddKSxbSSxkXX1lLmV4 cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXt2YXIgcixpLHAsZCxnPVtdLHY9 W10sbT1vLmdldEZyb21JZCh0LCJoIj09PWUub3JpZW50YXRpb24/ZS55YXhp czplLnhheGlzKSx5PSJoIj09PWUub3JpZW50YXRpb24/InkiOiJ4Iix4PXt4 OiJ5Iix5OiJ4In1beV0sYj1lW3krImNhbGVuZGFyIl0sXz1lLmN1bXVsYXRp dmUsdz1mKHQsZSxtLHkpLGs9d1swXSxUPXdbMV0sTT0ic3RyaW5nIj09dHlw ZW9mIGsuc2l6ZSxBPVtdLFM9TT9BOmssRT1bXSxMPVtdLEM9W10sUD0wLE89 ZS5oaXN0bm9ybSx6PWUuaGlzdGZ1bmMsST0tMSE9PU8uaW5kZXhPZigiZGVu c2l0eSIpO18uZW5hYmxlZCYmSSYmKE89Ty5yZXBsYWNlKC8gP2RlbnNpdHkk LywiIiksST0hMSk7dmFyIEQsUj0ibWF4Ij09PXp8fCJtaW4iPT09ej9udWxs OjAsRj1sLmNvdW50LEI9Y1tPXSxOPSExLGo9ZnVuY3Rpb24odCl7cmV0dXJu IG0ucjJjKHQsMCxiKX07Zm9yKGEuaXNBcnJheU9yVHlwZWRBcnJheShlW3hd KSYmImNvdW50IiE9PXomJihEPWVbeF0sTj0iYXZnIj09PXosRj1sW3pdKSxy PWooay5zdGFydCkscD1qKGsuZW5kKSsoci1vLnRpY2tJbmNyZW1lbnQocixr LnNpemUsITEsYikpLzFlNjtyPHAmJmcubGVuZ3RoPDFlNiYmKGk9by50aWNr SW5jcmVtZW50KHIsay5zaXplLCExLGIpLGcucHVzaCgocitpKS8yKSx2LnB1 c2goUiksQy5wdXNoKFtdKSxBLnB1c2gociksSSYmRS5wdXNoKDEvKGktcikp LE4mJkwucHVzaCgwKSwhKGk8PXIpKTspcj1pO0EucHVzaChyKSxNfHwiZGF0 ZSIhPT1tLnR5cGV8fChTPXtzdGFydDpqKFMuc3RhcnQpLGVuZDpqKFMuZW5k KSxzaXplOlMuc2l6ZX0pO3ZhciBWLFU9di5sZW5ndGgscT0hMCxIPTEvMCxH PTEvMCxZPXt9O2ZvcihyPTA7cjxULmxlbmd0aDtyKyspe3ZhciBXPVRbcl07 KGQ9YS5maW5kQmluKFcsUykpPj0wJiZkPFUmJihQKz1GKGQscix2LEQsTCks cSYmQ1tkXS5sZW5ndGgmJlchPT1UW0NbZF1bMF1dJiYocT0hMSksQ1tkXS5w dXNoKHIpLFlbcl09ZCxIPU1hdGgubWluKEgsVy1BW2RdKSxHPU1hdGgubWlu KEcsQVtkKzFdLVcpKX1xfHwoVj1oKEgsRyxBLG0sYikpLE4mJihQPXUodixM KSksQiYmQih2LFAsRSksXy5lbmFibGVkJiZmdW5jdGlvbih0LGUscil7dmFy IG4sYSxpO2Z1bmN0aW9uIG8oZSl7aT10W2VdLHRbZV0vPTJ9ZnVuY3Rpb24g cyhlKXthPXRbZV0sdFtlXT1pK2EvMixpKz1hfWlmKCJoYWxmIj09PXIpaWYo ImluY3JlYXNpbmciPT09ZSlmb3IobygwKSxuPTE7bjx0Lmxlbmd0aDtuKysp cyhuKTtlbHNlIGZvcihvKHQubGVuZ3RoLTEpLG49dC5sZW5ndGgtMjtuPj0w O24tLSlzKG4pO2Vsc2UgaWYoImluY3JlYXNpbmciPT09ZSl7Zm9yKG49MTtu PHQubGVuZ3RoO24rKyl0W25dKz10W24tMV07ImV4Y2x1ZGUiPT09ciYmKHQu dW5zaGlmdCgwKSx0LnBvcCgpKX1lbHNle2ZvcihuPXQubGVuZ3RoLTI7bj49 MDtuLS0pdFtuXSs9dFtuKzFdOyJleGNsdWRlIj09PXImJih0LnB1c2goMCks dC5zaGlmdCgpKX19KHYsXy5kaXJlY3Rpb24sXy5jdXJyZW50YmluKTt2YXIg WD1NYXRoLm1pbihnLmxlbmd0aCx2Lmxlbmd0aCksWj1bXSxKPTAsSz1YLTE7 Zm9yKHI9MDtyPFg7cisrKWlmKHZbcl0pe0o9cjticmVha31mb3Iocj1YLTE7 cj49SjtyLS0paWYodltyXSl7Sz1yO2JyZWFrfWZvcihyPUo7cjw9SztyKysp aWYobihnW3JdKSYmbih2W3JdKSl7dmFyIFE9e3A6Z1tyXSxzOnZbcl0sYjow fTtfLmVuYWJsZWR8fChRLnB0cz1DW3JdLHE/US5waDA9US5waDE9Q1tyXS5s ZW5ndGg/VFtDW3JdWzBdXTpnW3JdOihRLnBoMD1WKEFbcl0pLFEucGgxPVYo QVtyKzFdLCEwKSkpLFoucHVzaChRKX1yZXR1cm4gMT09PVoubGVuZ3RoJiYo WlswXS53aWR0aDE9by50aWNrSW5jcmVtZW50KFpbMF0ucCxrLnNpemUsITEs YiktWlswXS5wKSxzKFosZSksYS5pc0FycmF5T3JUeXBlZEFycmF5KGUuc2Vs ZWN0ZWRwb2ludHMpJiZhLnRhZ1NlbGVjdGVkKFosZSxZKSxafSxjYWxjQWxs QXV0b0JpbnM6Zn19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL2Jh ci9hcnJheXNfdG9fY2FsY2RhdGEiOjg1NSwiLi9hdmVyYWdlIjoxMDE5LCIu L2Jpbl9mdW5jdGlvbnMiOjEwMjEsIi4vYmluX2xhYmVsX3ZhbHMiOjEwMjIs Ii4vbm9ybV9mdW5jdGlvbnMiOjEwMzAsImZhc3QtaXNudW1lcmljIjoyMjh9 XSwxMDI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz17ZXZlbnREYXRhS2V5czpbImJpbk51bWJlciJdfX0se31dLDEwMjU6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGli IiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxpPXQo Ii4uLy4uL3JlZ2lzdHJ5IikudHJhY2VJcyxvPXQoIi4uL2Jhci9kZWZhdWx0 cyIpLmhhbmRsZUdyb3VwaW5nRGVmYXVsdHMscz1uLm5lc3RlZFByb3BlcnR5 LGw9YS5nZXRBeGlzR3JvdXAsYz1be2FTdHI6e3g6InhiaW5zLnN0YXJ0Iix5 OiJ5Ymlucy5zdGFydCJ9LG5hbWU6InN0YXJ0In0se2FTdHI6e3g6InhiaW5z LmVuZCIseToieWJpbnMuZW5kIn0sbmFtZToiZW5kIn0se2FTdHI6e3g6Inhi aW5zLnNpemUiLHk6InliaW5zLnNpemUifSxuYW1lOiJzaXplIn0se2FTdHI6 e3g6Im5iaW5zeCIseToibmJpbnN5In0sbmFtZToibmJpbnMifV0sdT1bIngi LCJ5Il07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsaCxmLHAsZCxn LHYsbT1lLl9oaXN0b2dyYW1CaW5PcHRzPXt9LHk9W10seD17fSxiPVtdO2Z1 bmN0aW9uIF8odCxlKXtyZXR1cm4gbi5jb2VyY2Uoci5faW5wdXQscixyLl9t b2R1bGUuYXR0cmlidXRlcyx0LGUpfWZ1bmN0aW9uIHcodCl7cmV0dXJuInYi PT09dC5vcmllbnRhdGlvbj8ieCI6InkifWZ1bmN0aW9uIGsodCxyLGkpe3Zh ciBvPXQudWlkKyJfXyIraTtyfHwocj1vKTt2YXIgcz1mdW5jdGlvbih0LHIp e3JldHVybiBhLmdldEZyb21UcmFjZSh7X2Z1bGxMYXlvdXQ6ZX0sdCxyKS50 eXBlfSh0LGkpLGw9dFtpKyJjYWxlbmRhciJdfHwiIixjPW1bcl0sdT0hMDtj JiYocz09PWMuYXhUeXBlJiZsPT09Yy5jYWxlbmRhcj8odT0hMSxjLnRyYWNl cy5wdXNoKHQpLGMuZGlycy5wdXNoKGkpKToocj1vLHMhPT1jLmF4VHlwZSYm bi53YXJuKFsiQXR0ZW1wdGVkIHRvIGdyb3VwIHRoZSBiaW5zIG9mIHRyYWNl Iix0LmluZGV4LCJzZXQgb24gYSIsInR5cGU6IitzLCJheGlzIiwid2l0aCBi aW5zIG9uIiwidHlwZToiK2MuYXhUeXBlLCJheGlzLiJdLmpvaW4oIiAiKSks bCE9PWMuY2FsZW5kYXImJm4ud2FybihbIkF0dGVtcHRlZCB0byBncm91cCB0 aGUgYmlucyBvZiB0cmFjZSIsdC5pbmRleCwic2V0IHdpdGggYSIsbCwiY2Fs ZW5kYXIiLCJ3aXRoIGJpbnMiLGMuY2FsZW5kYXI/Im9uIGEgIitjLmNhbGVu ZGFyKyIgY2FsZW5kYXIiOiJ3L28gYSBzZXQgY2FsZW5kYXIiXS5qb2luKCIg IikpKSksdSYmKG1bcl09e3RyYWNlczpbdF0sZGlyczpbaV0sYXhUeXBlOnMs Y2FsZW5kYXI6dFtpKyJjYWxlbmRhciJdfHwiIn0pLHRbIl8iK2krImJpbmdy b3VwIl09cn1mb3IoZD0wO2Q8dC5sZW5ndGg7ZCsrKXI9dFtkXSxpKHIsImhp c3RvZ3JhbSIpJiYoeS5wdXNoKHIpLGRlbGV0ZSByLl94YXV0b0JpbkZpbmlz aGVkLGRlbGV0ZSByLl95YXV0b0JpbkZpbmlzaGVkLGkociwiMmRNYXAiKXx8 byhyLl9pbnB1dCxyLGUsXykpO3ZhciBUPWUuX2FsaWdubWVudE9wdHN8fHt9 O2ZvcihkPTA7ZDx5Lmxlbmd0aDtkKyspe2lmKHI9eVtkXSxmPSIiLCFpKHIs IjJkTWFwIikpe2lmKHA9dyhyKSwiZ3JvdXAiPT09ZS5iYXJtb2RlJiZyLmFs aWdubWVudGdyb3VwKXt2YXIgTT1yW3ArImF4aXMiXSxBPWwoZSxNKStyLm9y aWVudGF0aW9uOyhUW0FdfHx7fSlbci5hbGlnbm1lbnRncm91cF0mJihmPUEp fWZ8fCJvdmVybGF5Ij09PWUuYmFybW9kZXx8KGY9bChlLHIueGF4aXMpK2wo ZSxyLnlheGlzKSt3KHIpKX1mPyh4W2ZdfHwoeFtmXT1bXSkseFtmXS5wdXNo KHIpKTpiLnB1c2gocil9Zm9yKGYgaW4geClpZigxIT09KGg9eFtmXSkubGVu Z3RoKXt2YXIgUz0hMTtmb3IoZD0wO2Q8aC5sZW5ndGg7ZCsrKXtyPWhbZF0s Uz1fKCJiaW5ncm91cCIpO2JyZWFrfWZvcihmPVN8fGYsZD0wO2Q8aC5sZW5n dGg7ZCsrKXt2YXIgRT0ocj1oW2RdKS5faW5wdXQuYmluZ3JvdXA7RSYmRSE9 PWYmJm4ud2FybihbIlRyYWNlIixyLmluZGV4LCJtdXN0IG1hdGNoIiwid2l0 aGluIGJpbmdyb3VwIixmKyIuIiwiSWdub3JpbmcgaXRzIGJpbmdyb3VwOiIs RSwic2V0dGluZy4iXS5qb2luKCIgIikpLHIuYmluZ3JvdXA9ZixrKHIsZix3 KHIpKX19ZWxzZSBiLnB1c2goaFswXSk7Zm9yKGQ9MDtkPGIubGVuZ3RoO2Qr Kyl7cj1iW2RdO3ZhciBMPV8oImJpbmdyb3VwIik7aWYoaShyLCIyZE1hcCIp KWZvcih2PTA7djwyO3YrKyl7dmFyIEM9XygocD11W3ZdKSsiYmluZ3JvdXAi LEw/TCsiX18iK3A6bnVsbCk7ayhyLEMscCl9ZWxzZSBrKHIsTCx3KHIpKX1m b3IoZiBpbiBtKXt2YXIgUD1tW2ZdO2ZvcihoPVAudHJhY2VzLGc9MDtnPGMu bGVuZ3RoO2crKyl7dmFyIE8seixJPWNbZ10sRD1JLm5hbWU7aWYoIm5iaW5z IiE9PUR8fCFQLnNpemVGb3VuZCl7Zm9yKGQ9MDtkPGgubGVuZ3RoO2QrKyl7 aWYocj1oW2RdLHA9UC5kaXJzW2RdLE89SS5hU3RyW3BdLHZvaWQgMCE9PXMo ci5faW5wdXQsTykuZ2V0KCkpe1BbRF09XyhPKSxQW0QrIkZvdW5kIl09ITA7 YnJlYWt9KHo9KHIuX2F1dG9CaW58fHt9KVtwXXx8e30pW0RdJiZzKHIsTyku c2V0KHpbRF0pfWlmKCJzdGFydCI9PT1EfHwiZW5kIj09PUQpZm9yKDtkPGgu bGVuZ3RoO2QrKykocj1oW2RdKVsiXyIrcCsiYmluZ3JvdXAiXSYmXyhPLCh6 PShyLl9hdXRvQmlufHx7fSlbcF18fHt9KVtEXSk7Im5iaW5zIiE9PUR8fFAu c2l6ZUZvdW5kfHxQLm5iaW5zRm91bmR8fChyPWhbMF0sUFtEXT1fKE8pKX19 fX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9h eGlzX2lkcyI6NzY4LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9iYXIvZGVm YXVsdHMiOjg2MH1dLDEwMjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIp LGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLG89dCgiLi4vYmFyL3N0 eWxlX2RlZmF1bHRzIikscz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gYyhyLG4pe3JldHVybiBhLmNv ZXJjZSh0LGUscyxyLG4pfXZhciB1PWMoIngiKSxoPWMoInkiKTtjKCJjdW11 bGF0aXZlLmVuYWJsZWQiKSYmKGMoImN1bXVsYXRpdmUuZGlyZWN0aW9uIiks YygiY3VtdWxhdGl2ZS5jdXJyZW50YmluIikpLGMoInRleHQiKSxjKCJob3Zl cnRleHQiKSxjKCJob3ZlcnRlbXBsYXRlIik7dmFyIGY9Yygib3JpZW50YXRp b24iLGgmJiF1PyJoIjoidiIpLHA9InYiPT09Zj8ieCI6InkiLGQ9InYiPT09 Zj8ieSI6IngiLGc9dSYmaD9NYXRoLm1pbihhLm1pblJvd0xlbmd0aCh1KSYm YS5taW5Sb3dMZW5ndGgoaCkpOmEubWluUm93TGVuZ3RoKGVbcF18fFtdKTtp ZihnKXtlLl9sZW5ndGg9ZyxuLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5k YXJzIiwiaGFuZGxlVHJhY2VEZWZhdWx0cyIpKHQsZSxbIngiLCJ5Il0sbCks ZVtkXSYmYygiaGlzdGZ1bmMiKSxjKCJoaXN0bm9ybSIpLGMoImF1dG9iaW4i K3ApLG8odCxlLGMscixsKSxhLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNp dHkoZSxjKTt2YXIgdj0oZS5tYXJrZXIubGluZXx8e30pLmNvbG9yLG09bi5n ZXRDb21wb25lbnRNZXRob2QoImVycm9yYmFycyIsInN1cHBseURlZmF1bHRz Iik7bSh0LGUsdnx8aS5kZWZhdWx0TGluZSx7YXhpczoieSJ9KSxtKHQsZSx2 fHxpLmRlZmF1bHRMaW5lLHtheGlzOiJ4Iixpbmhlcml0OiJ5In0pfWVsc2Ug ZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIs Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9iYXIv c3R5bGVfZGVmYXVsdHMiOjg3MSwiLi9hdHRyaWJ1dGVzIjoxMDE4fV0sMTAy NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsbixhKXtpZih0Lng9InhWYWwiaW4gZT9lLnhWYWw6ZS54 LHQueT0ieVZhbCJpbiBlP2UueVZhbDplLnksInpMYWJlbFZhbCJpbiBlJiYo dC56PWUuekxhYmVsVmFsKSxlLnhhJiYodC54YXhpcz1lLnhhKSxlLnlhJiYo dC55YXhpcz1lLnlhKSwhKHIuY3VtdWxhdGl2ZXx8e30pLmVuYWJsZWQpe3Zh ciBpLG89QXJyYXkuaXNBcnJheShhKT9uWzBdLnB0c1thWzBdXVthWzFdXTpu W2FdLnB0cztpZih0LnBvaW50TnVtYmVycz1vLHQuYmluTnVtYmVyPXQucG9p bnROdW1iZXIsZGVsZXRlIHQucG9pbnROdW1iZXIsZGVsZXRlIHQucG9pbnRJ bmRleCxyLl9pbmRleFRvUG9pbnRzKXtpPVtdO2Zvcih2YXIgcz0wO3M8by5s ZW5ndGg7cysrKWk9aS5jb25jYXQoci5faW5kZXhUb1BvaW50c1tvW3NdXSl9 ZWxzZSBpPW87dC5wb2ludEluZGljZXM9aX1yZXR1cm4gdH19LHt9XSwxMDI4 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Jh ci9ob3ZlciIpLmhvdmVyUG9pbnRzLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2F4ZXMiKS5ob3ZlckxhYmVsVGV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIsaSl7dmFyIG89bih0LGUscixpKTtpZihvKXt2YXIgcz0odD1vWzBd KS5jZFt0LmluZGV4XSxsPXQuY2RbMF0udHJhY2U7aWYoIWwuY3VtdWxhdGl2 ZS5lbmFibGVkKXt2YXIgYz0iaCI9PT1sLm9yaWVudGF0aW9uPyJ5IjoieCI7 dFtjKyJMYWJlbCJdPWEodFtjKyJhIl0scy5waDAscy5waDEpfXJldHVybiBs LmhvdmVybXBsYXRlJiYodC5ob3ZlcnRlbXBsYXRlPWwuaG92ZXJ0ZW1wbGF0 ZSksb319fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4u L2Jhci9ob3ZlciI6ODYzfV0sMTAyOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVz IiksbGF5b3V0QXR0cmlidXRlczp0KCIuLi9iYXIvbGF5b3V0X2F0dHJpYnV0 ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY3Jvc3NUcmFj ZURlZmF1bHRzOnQoIi4vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiKSxzdXBwbHlM YXlvdXREZWZhdWx0czp0KCIuLi9iYXIvbGF5b3V0X2RlZmF1bHRzIiksY2Fs Yzp0KCIuL2NhbGMiKS5jYWxjLGNyb3NzVHJhY2VDYWxjOnQoIi4uL2Jhci9j cm9zc190cmFjZV9jYWxjIikuY3Jvc3NUcmFjZUNhbGMscGxvdDp0KCIuLi9i YXIvcGxvdCIpLnBsb3QsbGF5ZXJOYW1lOiJiYXJsYXllciIsc3R5bGU6dCgi Li4vYmFyL3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVjdDp0KCIuLi9iYXIv c3R5bGUiKS5zdHlsZU9uU2VsZWN0LGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIv bWFya2VyX2NvbG9yYmFyIiksaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLHNl bGVjdFBvaW50czp0KCIuLi9iYXIvc2VsZWN0IiksZXZlbnREYXRhOnQoIi4v ZXZlbnRfZGF0YSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJoaXN0b2dy YW0iLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIp LGNhdGVnb3JpZXM6WyJiYXItbGlrZSIsImNhcnRlc2lhbiIsInN2ZyIsImJh ciIsImhpc3RvZ3JhbSIsIm9yaWVudGVkIiwiZXJyb3JCYXJzT0siLCJzaG93 TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3 NzYsIi4uL2Jhci9jcm9zc190cmFjZV9jYWxjIjo4NTksIi4uL2Jhci9sYXlv dXRfYXR0cmlidXRlcyI6ODY1LCIuLi9iYXIvbGF5b3V0X2RlZmF1bHRzIjo4 NjYsIi4uL2Jhci9wbG90Ijo4NjcsIi4uL2Jhci9zZWxlY3QiOjg2OCwiLi4v YmFyL3N0eWxlIjo4NzAsIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjox MTM4LCIuL2F0dHJpYnV0ZXMiOjEwMTgsIi4vY2FsYyI6MTAyMywiLi9jcm9z c190cmFjZV9kZWZhdWx0cyI6MTAyNSwiLi9kZWZhdWx0cyI6MTAyNiwiLi9l dmVudF9kYXRhIjoxMDI3LCIuL2hvdmVyIjoxMDI4fV0sMTAzMDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3BlcmNlbnQ6ZnVu Y3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj0xMDAvZSxhPTA7YTxy O2ErKyl0W2FdKj1ufSxwcm9iYWJpbGl0eTpmdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj10Lmxlbmd0aCxuPTA7bjxyO24rKyl0W25dLz1lfSxkZW5zaXR5OmZ1 bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXQubGVuZ3RoO249bnx8MTtmb3IodmFy IGk9MDtpPGE7aSsrKXRbaV0qPXJbaV0qbn0sInByb2JhYmlsaXR5IGRlbnNp dHkiOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXQubGVuZ3RoO24mJihlLz1u KTtmb3IodmFyIGk9MDtpPGE7aSsrKXRbaV0qPXJbaV0vZX19fSx7fV0sMTAz MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9o aXN0b2dyYW0vYXR0cmlidXRlcyIpLGE9dCgiLi4vaGlzdG9ncmFtL2Jpbl9h dHRyaWJ1dGVzIiksaT10KCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiKSxvPXQo Ii4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL3Rl bXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbD10KCIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGM9dCgi Li4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPWMoe3g6 bi54LHk6bi55LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJj YWxjIn0sbWFya2VyOntjb2xvcjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LGhpc3Rub3JtOm4uaGlz dG5vcm0saGlzdGZ1bmM6bi5oaXN0ZnVuYyxuYmluc3g6bi5uYmluc3gseGJp bnM6YSgieCIpLG5iaW5zeTpuLm5iaW5zeSx5YmluczphKCJ5IiksYXV0b2Jp bng6bi5hdXRvYmlueCxhdXRvYmlueTpuLmF1dG9iaW55LGJpbmdyb3VwOmMo e30sbi5iaW5ncm91cCx7fSkseGJpbmdyb3VwOmMoe30sbi5iaW5ncm91cCx7 fSkseWJpbmdyb3VwOmMoe30sbi5iaW5ncm91cCx7fSkseGdhcDppLnhnYXAs eWdhcDppLnlnYXAsenNtb290aDppLnpzbW9vdGgsemhvdmVyZm9ybWF0Omku emhvdmVyZm9ybWF0LGhvdmVydGVtcGxhdGU6cyh7fSx7a2V5czoieiJ9KSxz aG93bGVnZW5kOmMoe30sby5zaG93bGVnZW5kLHtkZmx0OiExfSl9LGwoIiIs e2NMZXR0ZXI6InoiLGF1dG9Db2xvckRmbHQ6ITF9KSl9LHsiLi4vLi4vY29t cG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGli L2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4u Ly4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vaGVhdG1h cC9hdHRyaWJ1dGVzIjoxZTMsIi4uL2hpc3RvZ3JhbS9hdHRyaWJ1dGVzIjox MDE4LCIuLi9oaXN0b2dyYW0vYmluX2F0dHJpYnV0ZXMiOjEwMjB9XSwxMDMy OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQo Ii4uL2hpc3RvZ3JhbS9iaW5fZnVuY3Rpb25zIiksbz10KCIuLi9oaXN0b2dy YW0vbm9ybV9mdW5jdGlvbnMiKSxzPXQoIi4uL2hpc3RvZ3JhbS9hdmVyYWdl IiksbD10KCIuLi9oaXN0b2dyYW0vYmluX2xhYmVsX3ZhbHMiKSxjPXQoIi4u L2hpc3RvZ3JhbS9jYWxjIikuY2FsY0FsbEF1dG9CaW5zO2Z1bmN0aW9uIHUo dCxlLHIsbil7dmFyIGEsaT1uZXcgQXJyYXkodCk7aWYobilmb3IoYT0wO2E8 dDthKyspaVthXT0xLyhlW2ErMV0tZVthXSk7ZWxzZXt2YXIgbz0xL3I7Zm9y KGE9MDthPHQ7YSsrKWlbYV09b31yZXR1cm4gaX1mdW5jdGlvbiBoKHQsZSl7 cmV0dXJue3N0YXJ0OnQoZS5zdGFydCksZW5kOnQoZS5lbmQpLHNpemU6ZS5z aXplfX1mdW5jdGlvbiBmKHQsZSxyLG4sYSxpKXt2YXIgbyxzPXQubGVuZ3Ro LTEsYz1uZXcgQXJyYXkocyksdT1sKHIsbix0LGEsaSk7Zm9yKG89MDtvPHM7 bysrKXt2YXIgaD0oZXx8W10pW29dO2Nbb109dm9pZCAwPT09aD9bdSh0W29d KSx1KHRbbysxXSwhMCldOltoLGhdfXJldHVybiBjfWUuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3ZhciByLGwscCxkLGc9YS5nZXRGcm9tSWQodCxlLnhheGlz KSx2PWEuZ2V0RnJvbUlkKHQsZS55YXhpcyksbT1lLnhjYWxlbmRhcix5PWUu eWNhbGVuZGFyLHg9ZnVuY3Rpb24odCl7cmV0dXJuIGcucjJjKHQsMCxtKX0s Yj1mdW5jdGlvbih0KXtyZXR1cm4gdi5yMmModCwwLHkpfSxfPWModCxlLGcs IngiKSx3PV9bMF0saz1fWzFdLFQ9Yyh0LGUsdiwieSIpLE09VFswXSxBPVRb MV0sUz1lLl9sZW5ndGg7ay5sZW5ndGg+UyYmay5zcGxpY2UoUyxrLmxlbmd0 aC1TKSxBLmxlbmd0aD5TJiZBLnNwbGljZShTLEEubGVuZ3RoLVMpO3ZhciBF PVtdLEw9W10sQz1bXSxQPSJzdHJpbmciPT10eXBlb2Ygdy5zaXplLE89InN0 cmluZyI9PXR5cGVvZiBNLnNpemUsej1bXSxJPVtdLEQ9UD96OncsUj1PP0k6 TSxGPTAsQj1bXSxOPVtdLGo9ZS5oaXN0bm9ybSxWPWUuaGlzdGZ1bmMsVT0t MSE9PWouaW5kZXhPZigiZGVuc2l0eSIpLHE9Im1heCI9PT1WfHwibWluIj09 PVY/bnVsbDowLEg9aS5jb3VudCxHPW9bal0sWT0hMSxXPVtdLFg9W10sWj0i eiJpbiBlP2UuejoibWFya2VyImluIGUmJkFycmF5LmlzQXJyYXkoZS5tYXJr ZXIuY29sb3IpP2UubWFya2VyLmNvbG9yOiIiO1omJiJjb3VudCIhPT1WJiYo WT0iYXZnIj09PVYsSD1pW1ZdKTt2YXIgSj13LnNpemUsSz14KHcuc3RhcnQp LFE9eCh3LmVuZCkrKEstYS50aWNrSW5jcmVtZW50KEssSiwhMSxtKSkvMWU2 O2ZvcihyPUs7cjxRO3I9YS50aWNrSW5jcmVtZW50KHIsSiwhMSxtKSlMLnB1 c2gocSksei5wdXNoKHIpLFkmJkMucHVzaCgwKTt6LnB1c2gocik7dmFyICQs dHQ9TC5sZW5ndGgsZXQ9KHItSykvdHQscnQ9KCQ9SytldC8yLGcuYzJyKCQs MCxtKSksbnQ9TS5zaXplLGF0PWIoTS5zdGFydCksaXQ9YihNLmVuZCkrKGF0 LWEudGlja0luY3JlbWVudChhdCxudCwhMSx5KSkvMWU2O2ZvcihyPWF0O3I8 aXQ7cj1hLnRpY2tJbmNyZW1lbnQocixudCwhMSx5KSl7RS5wdXNoKEwuc2xp Y2UoKSksSS5wdXNoKHIpO3ZhciBvdD1uZXcgQXJyYXkodHQpO2ZvcihsPTA7 bDx0dDtsKyspb3RbbF09W107Ti5wdXNoKG90KSxZJiZCLnB1c2goQy5zbGlj ZSgpKX1JLnB1c2gocik7dmFyIHN0PUUubGVuZ3RoLGx0PShyLWF0KS9zdCxj dD1mdW5jdGlvbih0KXtyZXR1cm4gdi5jMnIodCwwLHkpfShhdCtsdC8yKTtV JiYoVz11KEwubGVuZ3RoLEQsZXQsUCksWD11KEUubGVuZ3RoLFIsbHQsTykp LFB8fCJkYXRlIiE9PWcudHlwZXx8KEQ9aCh4LEQpKSxPfHwiZGF0ZSIhPT12 LnR5cGV8fChSPWgoYixSKSk7dmFyIHV0PSEwLGh0PSEwLGZ0PW5ldyBBcnJh eSh0dCkscHQ9bmV3IEFycmF5KHN0KSxkdD0xLzAsZ3Q9MS8wLHZ0PTEvMCxt dD0xLzA7Zm9yKHI9MDtyPFM7cisrKXt2YXIgeXQ9a1tyXSx4dD1BW3JdO3A9 bi5maW5kQmluKHl0LEQpLGQ9bi5maW5kQmluKHh0LFIpLHA+PTAmJnA8dHQm JmQ+PTAmJmQ8c3QmJihGKz1IKHAscixFW2RdLFosQltkXSksTltkXVtwXS5w dXNoKHIpLHV0JiYodm9pZCAwPT09ZnRbcF0/ZnRbcF09eXQ6ZnRbcF0hPT15 dCYmKHV0PSExKSksaHQmJih2b2lkIDA9PT1wdFtkXT9wdFtkXT14dDpwdFtk XSE9PXh0JiYoaHQ9ITEpKSxkdD1NYXRoLm1pbihkdCx5dC16W3BdKSxndD1N YXRoLm1pbihndCx6W3ArMV0teXQpLHZ0PU1hdGgubWluKHZ0LHh0LUlbZF0p LG10PU1hdGgubWluKG10LElbZCsxXS14dCkpfWlmKFkpZm9yKGQ9MDtkPHN0 O2QrKylGKz1zKEVbZF0sQltkXSk7aWYoRylmb3IoZD0wO2Q8c3Q7ZCsrKUco RVtkXSxGLFcsWFtkXSk7cmV0dXJue3g6ayx4UmFuZ2VzOmYoeix1dCYmZnQs ZHQsZ3QsZyxtKSx4MDpydCxkeDpldCx5OkEseVJhbmdlczpmKEksaHQmJnB0 LHZ0LG10LHYseSkseTA6Y3QsZHk6bHQsejpFLHB0czpOfX19LHsiLi4vLi4v bGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4u L2hpc3RvZ3JhbS9hdmVyYWdlIjoxMDE5LCIuLi9oaXN0b2dyYW0vYmluX2Z1 bmN0aW9ucyI6MTAyMSwiLi4vaGlzdG9ncmFtL2Jpbl9sYWJlbF92YWxzIjox MDIyLCIuLi9oaXN0b2dyYW0vY2FsYyI6MTAyMywiLi4vaGlzdG9ncmFtL25v cm1fZnVuY3Rpb25zIjoxMDMwfV0sMTAzMzpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vc2FtcGxl X2RlZmF1bHRzIiksaT10KCIuLi9oZWF0bWFwL3N0eWxlX2RlZmF1bHRzIiks bz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxz PXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixs KXtmdW5jdGlvbiBjKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxzLHIsYSl9 YSh0LGUsYyxsKSwhMSE9PWUudmlzaWJsZSYmKGkodCxlLGMsbCksbyh0LGUs bCxjLHtwcmVmaXg6IiIsY0xldHRlcjoieiJ9KSxjKCJob3ZlcnRlbXBsYXRl IikpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMi OjYwMiwiLi4vLi4vbGliIjo3MTcsIi4uL2hlYXRtYXAvc3R5bGVfZGVmYXVs dHMiOjEwMTMsIi4vYXR0cmlidXRlcyI6MTAzMSwiLi9zYW1wbGVfZGVmYXVs dHMiOjEwMzZ9XSwxMDM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uL2hlYXRtYXAvaG92ZXIiKSxhPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIikuaG92ZXJMYWJlbFRleHQ7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyLGksbyxzKXt2YXIgbD1uKHQsZSxyLGksbyxzKTtpZihs KXt2YXIgYz0odD1sWzBdKS5pbmRleCx1PWNbMF0saD1jWzFdLGY9dC5jZFsw XSxwPWYueFJhbmdlc1toXSxkPWYueVJhbmdlc1t1XTtyZXR1cm4gdC54TGFi ZWw9YSh0LnhhLHBbMF0scFsxXSksdC55TGFiZWw9YSh0LnlhLGRbMF0sZFsx XSksbH19fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4u L2hlYXRtYXAvaG92ZXIiOjEwMDd9XSwxMDM1OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJp YnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY3Jvc3NU cmFjZURlZmF1bHRzOnQoIi4uL2hpc3RvZ3JhbS9jcm9zc190cmFjZV9kZWZh dWx0cyIpLGNhbGM6dCgiLi4vaGVhdG1hcC9jYWxjIikscGxvdDp0KCIuLi9o ZWF0bWFwL3Bsb3QiKSxsYXllck5hbWU6ImhlYXRtYXBsYXllciIsY29sb3Ji YXI6dCgiLi4vaGVhdG1hcC9jb2xvcmJhciIpLHN0eWxlOnQoIi4uL2hlYXRt YXAvc3R5bGUiKSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksZXZlbnREYXRh OnQoIi4uL2hpc3RvZ3JhbS9ldmVudF9kYXRhIiksbW9kdWxlVHlwZToidHJh Y2UiLG5hbWU6Imhpc3RvZ3JhbTJkIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwi c3ZnIiwiMmRNYXAiLCJoaXN0b2dyYW0iLCJzaG93TGVnZW5kIl0sbWV0YTp7 fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYsIi4uL2hlYXRtYXAv Y2FsYyI6MTAwMSwiLi4vaGVhdG1hcC9jb2xvcmJhciI6MTAwMywiLi4vaGVh dG1hcC9wbG90IjoxMDExLCIuLi9oZWF0bWFwL3N0eWxlIjoxMDEyLCIuLi9o aXN0b2dyYW0vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiOjEwMjUsIi4uL2hpc3Rv Z3JhbS9ldmVudF9kYXRhIjoxMDI3LCIuL2F0dHJpYnV0ZXMiOjEwMzEsIi4v ZGVmYXVsdHMiOjEwMzMsIi4vaG92ZXIiOjEwMzR9XSwxMDM2OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5 IiksYT10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIs aSl7dmFyIG89cigieCIpLHM9cigieSIpLGw9YS5taW5Sb3dMZW5ndGgobyks Yz1hLm1pblJvd0xlbmd0aChzKTtsJiZjPyhlLl9sZW5ndGg9TWF0aC5taW4o bCxjKSxuLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxl VHJhY2VEZWZhdWx0cyIpKHQsZSxbIngiLCJ5Il0saSksKHIoInoiKXx8cigi bWFya2VyLmNvbG9yIikpJiZyKCJoaXN0ZnVuYyIpLHIoImhpc3Rub3JtIiks cigiYXV0b2JpbngiKSxyKCJhdXRvYmlueSIpKTplLnZpc2libGU9ITF9fSx7 Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2fV0sMTAzNzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9oaXN0 b2dyYW0yZC9hdHRyaWJ1dGVzIiksYT10KCIuLi9jb250b3VyL2F0dHJpYnV0 ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1 dGVzIiksbz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4 cG9ydHM9byh7eDpuLngseTpuLnksejpuLnosbWFya2VyOm4ubWFya2VyLGhp c3Rub3JtOm4uaGlzdG5vcm0saGlzdGZ1bmM6bi5oaXN0ZnVuYyxuYmluc3g6 bi5uYmluc3gseGJpbnM6bi54YmlucyxuYmluc3k6bi5uYmluc3kseWJpbnM6 bi55YmlucyxhdXRvYmlueDpuLmF1dG9iaW54LGF1dG9iaW55Om4uYXV0b2Jp bnksYmluZ3JvdXA6bi5iaW5ncm91cCx4YmluZ3JvdXA6bi54YmluZ3JvdXAs eWJpbmdyb3VwOm4ueWJpbmdyb3VwLGF1dG9jb250b3VyOmEuYXV0b2NvbnRv dXIsbmNvbnRvdXJzOmEubmNvbnRvdXJzLGNvbnRvdXJzOmEuY29udG91cnMs bGluZTp7Y29sb3I6YS5saW5lLmNvbG9yLHdpZHRoOm8oe30sYS5saW5lLndp ZHRoLHtkZmx0Oi41fSksZGFzaDphLmxpbmUuZGFzaCxzbW9vdGhpbmc6YS5s aW5lLnNtb290aGluZyxlZGl0VHlwZToicGxvdCJ9LHpob3ZlcmZvcm1hdDpu Lnpob3ZlcmZvcm1hdCxob3ZlcnRlbXBsYXRlOm4uaG92ZXJ0ZW1wbGF0ZX0s aSgiIix7Y0xldHRlcjoieiIsZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSl9 LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5 OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi9jb250b3VyL2F0dHJpYnV0 ZXMiOjk0MywiLi4vaGlzdG9ncmFtMmQvYXR0cmlidXRlcyI6MTAzMX1dLDEw Mzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vbGliIiksYT10KCIuLi9oaXN0b2dyYW0yZC9zYW1wbGVfZGVmYXVsdHMi KSxpPXQoIi4uL2NvbnRvdXIvY29udG91cnNfZGVmYXVsdHMiKSxvPXQoIi4u L2NvbnRvdXIvc3R5bGVfZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRlcyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsKXtmdW5jdGlvbiBjKHIsYSl7 cmV0dXJuIG4uY29lcmNlKHQsZSxzLHIsYSl9YSh0LGUsYyxsKSwhMSE9PWUu dmlzaWJsZSYmKGkodCxlLGMsZnVuY3Rpb24ocil7cmV0dXJuIG4uY29lcmNl Mih0LGUscyxyKX0pLG8odCxlLGMsbCksYygiaG92ZXJ0ZW1wbGF0ZSIpKX19 LHsiLi4vLi4vbGliIjo3MTcsIi4uL2NvbnRvdXIvY29udG91cnNfZGVmYXVs dHMiOjk1MCwiLi4vY29udG91ci9zdHlsZV9kZWZhdWx0cyI6OTY0LCIuLi9o aXN0b2dyYW0yZC9zYW1wbGVfZGVmYXVsdHMiOjEwMzYsIi4vYXR0cmlidXRl cyI6MTAzN31dLDEwMzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBs eURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjcm9zc1RyYWNlRGVmYXVsdHM6 dCgiLi4vaGlzdG9ncmFtL2Nyb3NzX3RyYWNlX2RlZmF1bHRzIiksY2FsYzp0 KCIuLi9jb250b3VyL2NhbGMiKSxwbG90OnQoIi4uL2NvbnRvdXIvcGxvdCIp LnBsb3QsbGF5ZXJOYW1lOiJjb250b3VybGF5ZXIiLHN0eWxlOnQoIi4uL2Nv bnRvdXIvc3R5bGUiKSxjb2xvcmJhcjp0KCIuLi9jb250b3VyL2NvbG9yYmFy IiksaG92ZXJQb2ludHM6dCgiLi4vY29udG91ci9ob3ZlciIpLG1vZHVsZVR5 cGU6InRyYWNlIixuYW1lOiJoaXN0b2dyYW0yZGNvbnRvdXIiLGJhc2VQbG90 TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6 WyJjYXJ0ZXNpYW4iLCJzdmciLCIyZE1hcCIsImNvbnRvdXIiLCJoaXN0b2dy YW0iLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuIjo3NzYsIi4uL2NvbnRvdXIvY2FsYyI6OTQ0LCIuLi9jb250b3Vy L2NvbG9yYmFyIjo5NDYsIi4uL2NvbnRvdXIvaG92ZXIiOjk1NiwiLi4vY29u dG91ci9wbG90Ijo5NjEsIi4uL2NvbnRvdXIvc3R5bGUiOjk2MywiLi4vaGlz dG9ncmFtL2Nyb3NzX3RyYWNlX2RlZmF1bHRzIjoxMDI1LCIuL2F0dHJpYnV0 ZXMiOjEwMzcsIi4vZGVmYXVsdHMiOjEwMzh9XSwxMDQwOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2Zvcih2YXIgbj10KCIuLi8uLi9wbG90cy9h dHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1 dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vLi4vbGliL2V4dGVu ZCIpLmV4dGVuZEZsYXQsbz10KCIuL2NvbnN0YW50cyIpLmNvbG9ybW9kZWws cz1bInJnYiIsInJnYmEiLCJoc2wiLCJoc2xhIl0sbD1bXSxjPVtdLHU9MDt1 PHMubGVuZ3RoO3UrKylsLnB1c2goIkZvciB0aGUgYCIrc1t1XSsiYCBjb2xv cm1vZGVsLCBpdCBpcyBbIitvW3NbdV1dLm1pbi5qb2luKCIsICIpKyJdLiIp LGMucHVzaCgiRm9yIHRoZSBgIitzW3VdKyJgIGNvbG9ybW9kZWwsIGl0IGlz IFsiK29bc1t1XV0ubWF4LmpvaW4oIiwgIikrIl0uIik7ZS5leHBvcnRzPWko e3o6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sY29s b3Jtb2RlbDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOnMsZGZsdDoi cmdiIixlZGl0VHlwZToiY2FsYyJ9LHptaW46e3ZhbFR5cGU6ImluZm9fYXJy YXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9 LHt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn0se3ZhbFR5cGU6 Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifSx7dmFsVHlwZToibnVtYmVyIixl ZGl0VHlwZToiY2FsYyJ9XSxlZGl0VHlwZToiY2FsYyJ9LHptYXg6e3ZhbFR5 cGU6ImluZm9fYXJyYXkiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixlZGl0 VHlwZToiY2FsYyJ9LHt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxj In0se3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifSx7dmFsVHlw ZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9XSxlZGl0VHlwZToiY2FsYyJ9 LHgwOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYytjbGVh ckF4aXNUeXBlcyJ9LHkwOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlw ZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LGR4Ont2YWxUeXBlOiJudW1iZXIi LGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LGR5Ont2YWxUeXBlOiJudW1iZXIi LGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LHRleHQ6e3ZhbFR5cGU6ImRhdGFf YXJyYXkiLGVkaXRUeXBlOiJwbG90In0saG92ZXJ0ZXh0Ont2YWxUeXBlOiJk YXRhX2FycmF5IixlZGl0VHlwZToicGxvdCJ9LGhvdmVyaW5mbzppKHt9LG4u aG92ZXJpbmZvLHtmbGFnczpbIngiLCJ5IiwieiIsImNvbG9yIiwibmFtZSIs InRleHQiXSxkZmx0OiJ4K3kreit0ZXh0K25hbWUifSksaG92ZXJ0ZW1wbGF0 ZTphKHt9LHtrZXlzOlsieiIsImNvbG9yIiwiY29sb3Jtb2RlbCJdfSksdHJh bnNmb3Jtczp2b2lkIDB9KX0seyIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4u Ly4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvdGVtcGxh dGVfYXR0cmlidXRlcyI6ODQxLCIuL2NvbnN0YW50cyI6MTA0Mn1dLDEwNDE6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v bGliIiksYT10KCIuL2NvbnN0YW50cyIpLGk9dCgiZmFzdC1pc251bWVyaWMi KSxvPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikscz10KCIuLi8u Li9saWIiKS5tYXhSb3dMZW5ndGg7ZnVuY3Rpb24gbCh0LGUscixhKXtyZXR1 cm4gZnVuY3Rpb24oaSl7cmV0dXJuIG4uY29uc3RyYWluKChpLXQpKmUscixh KX19ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4g bi5jb25zdHJhaW4ocix0LGUpfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcixuPW8uZ2V0RnJvbUlkKHQsZS54YXhpc3x8IngiKSx1PW8uZ2V0RnJv bUlkKHQsZS55YXhpc3x8InkiKSxoPW4uZDJjKGUueDApLWUuZHgvMixmPXUu ZDJjKGUueTApLWUuZHkvMixwPWUuei5sZW5ndGgsZD1zKGUueiksZz1baCxo K2QqZS5keF0sdj1bZixmK3AqZS5keV07aWYobiYmImxvZyI9PT1uLnR5cGUp Zm9yKHI9MDtyPGQ7cisrKWcucHVzaChoK3IqZS5keCk7aWYodSYmImxvZyI9 PT11LnR5cGUpZm9yKHI9MDtyPHA7cisrKXYucHVzaChmK3IqZS5keSk7cmV0 dXJuIGUuX2V4dHJlbWVzW24uX2lkXT1vLmZpbmRFeHRyZW1lcyhuLGcpLGUu X2V4dHJlbWVzW3UuX2lkXT1vLmZpbmRFeHRyZW1lcyh1LHYpLGUuX3NjYWxl cj1mdW5jdGlvbih0KXt2YXIgZT10LmNvbG9ybW9kZWwscj1lLmxlbmd0aCxu PWEuY29sb3Jtb2RlbFtlXTt0Ll9zQXJyYXk9W107Zm9yKHZhciBvPTA7bzxy O28rKyluLm1pbltvXSE9PXQuem1pbltvXXx8bi5tYXhbb10hPT10LnptYXhb b10/dC5fc0FycmF5LnB1c2gobCh0LnptaW5bb10sKG4ubWF4W29dLW4ubWlu W29dKS8odC56bWF4W29dLXQuem1pbltvXSksbi5taW5bb10sbi5tYXhbb10p KTp0Ll9zQXJyYXkucHVzaChjKG4ubWluW29dLG4ubWF4W29dKSk7cmV0dXJu IGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1lLnNsaWNlKDAsciksYT0wO2E8cjth Kyspe3ZhciBvPW5bYV07aWYoIWkobykpcmV0dXJuITE7blthXT10Ll9zQXJy YXlbYV0obyl9cmV0dXJuIG59fShlKSxbe3gwOmgseTA6Zix6OmUueix3OmQs aDpwfV19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyI6NzY1LCIuL2NvbnN0YW50cyI6MTA0MiwiZmFzdC1pc251bWVy aWMiOjIyOH1dLDEwNDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXtjb2xvcm1vZGVsOntyZ2I6e21pbjpbMCwwLDBdLG1heDpb MjU1LDI1NSwyNTVdLGZtdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZSgw LDMpfSxzdWZmaXg6WyIiLCIiLCIiXX0scmdiYTp7bWluOlswLDAsMCwwXSxt YXg6WzI1NSwyNTUsMjU1LDFdLGZtdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5z bGljZSgwLDQpfSxzdWZmaXg6WyIiLCIiLCIiLCIiXX0saHNsOnttaW46WzAs MCwwXSxtYXg6WzM2MCwxMDAsMTAwXSxmbXQ6ZnVuY3Rpb24odCl7dmFyIGU9 dC5zbGljZSgwLDMpO3JldHVybiBlWzFdPWVbMV0rIiUiLGVbMl09ZVsyXSsi JSIsZX0sc3VmZml4OlsiXHhiMCIsIiUiLCIlIl19LGhzbGE6e21pbjpbMCww LDAsMF0sbWF4OlszNjAsMTAwLDEwMCwxXSxmbXQ6ZnVuY3Rpb24odCl7dmFy IGU9dC5zbGljZSgwLDQpO3JldHVybiBlWzFdPWVbMV0rIiUiLGVbMl09ZVsy XSsiJSIsZX0sc3VmZml4OlsiXHhiMCIsIiUiLCIlIiwiIl19fX19LHt9XSwx MDQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuL2NvbnN0YW50 cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIocixpKXty ZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgbz1yKCJ6Iik7aWYodm9p ZCAwIT09byYmby5sZW5ndGgmJm9bMF0mJm9bMF0ubGVuZ3RoKXtyKCJ4MCIp LHIoInkwIikscigiZHgiKSxyKCJkeSIpO3ZhciBzPXIoImNvbG9ybW9kZWwi KTtyKCJ6bWluIixpLmNvbG9ybW9kZWxbc10ubWluKSxyKCJ6bWF4IixpLmNv bG9ybW9kZWxbc10ubWF4KSxyKCJ0ZXh0IikscigiaG92ZXJ0ZXh0Iikscigi aG92ZXJ0ZW1wbGF0ZSIpLGUuX2xlbmd0aD1udWxsfWVsc2UgZS52aXNpYmxl PSExfX0seyIuLi8uLi9saWIiOjcxNywiLi9hdHRyaWJ1dGVzIjoxMDQwLCIu L2NvbnN0YW50cyI6MTA0Mn1dLDEwNDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuInhWYWwi aW4gZSYmKHQueD1lLnhWYWwpLCJ5VmFsImluIGUmJih0Lnk9ZS55VmFsKSxl LnhhJiYodC54YXhpcz1lLnhhKSxlLnlhJiYodC55YXhpcz1lLnlhKSx0LmNv bG9yPWUuY29sb3IsdC5jb2xvcm1vZGVsPWUudHJhY2UuY29sb3Jtb2RlbCx0 fX0se31dLDEwNDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLGE9dCgiLi4vLi4vbGliIiks aT10KCIuL2NvbnN0YW50cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7 dmFyIG89dC5jZFswXSxzPW8udHJhY2UsbD10LnhhLGM9dC55YTtpZighKG4u aW5ib3goZS1vLngwLGUtKG8ueDArby53KnMuZHgpLDApPjB8fG4uaW5ib3go ci1vLnkwLHItKG8ueTArby5oKnMuZHkpLDApPjApKXt2YXIgdT1NYXRoLmZs b29yKChlLW8ueDApL3MuZHgpLGg9TWF0aC5mbG9vcihNYXRoLmFicyhyLW8u eTApL3MuZHkpO2lmKG8ueltoXVt1XSl7dmFyIGYscD1vLmhpfHxzLmhvdmVy aW5mbztpZihwKXt2YXIgZD1wLnNwbGl0KCIrIik7LTEhPT1kLmluZGV4T2Yo ImFsbCIpJiYoZD1bImNvbG9yIl0pLC0xIT09ZC5pbmRleE9mKCJjb2xvciIp JiYoZj0hMCl9dmFyIGcsdj1zLmNvbG9ybW9kZWwsbT12Lmxlbmd0aCx5PXMu X3NjYWxlcihvLnpbaF1bdV0pLHg9aS5jb2xvcm1vZGVsW3ZdLnN1ZmZpeCxi PVtdOyhzLmhvdmVydGVtcGxhdGV8fGYpJiYoYi5wdXNoKCJbIitbeVswXSt4 WzBdLHlbMV0reFsxXSx5WzJdK3hbMl1dLmpvaW4oIiwgIikpLDQ9PT1tJiZi LnB1c2goIiwgIit5WzNdK3hbM10pLGIucHVzaCgiXSIpLGI9Yi5qb2luKCIi KSx0LmV4dHJhVGV4dD12LnRvVXBwZXJDYXNlKCkrIjogIitiKSxBcnJheS5p c0FycmF5KHMuaG92ZXJ0ZXh0KSYmQXJyYXkuaXNBcnJheShzLmhvdmVydGV4 dFtoXSk/Zz1zLmhvdmVydGV4dFtoXVt1XTpBcnJheS5pc0FycmF5KHMudGV4 dCkmJkFycmF5LmlzQXJyYXkocy50ZXh0W2hdKSYmKGc9cy50ZXh0W2hdW3Vd KTt2YXIgXz1jLmMycChvLnkwKyhoKy41KSpzLmR5KSx3PW8ueDArKHUrLjUp KnMuZHgsaz1vLnkwKyhoKy41KSpzLmR5LFQ9IlsiK28ueltoXVt1XS5zbGlj ZSgwLHMuY29sb3Jtb2RlbC5sZW5ndGgpLmpvaW4oIiwgIikrIl0iO3JldHVy blthLmV4dGVuZEZsYXQodCx7aW5kZXg6W2gsdV0seDA6bC5jMnAoby54MCt1 KnMuZHgpLHgxOmwuYzJwKG8ueDArKHUrMSkqcy5keCkseTA6Xyx5MTpfLGNv bG9yOnkseFZhbDp3LHhMYWJlbFZhbDp3LHlWYWw6ayx5TGFiZWxWYWw6ayx6 TGFiZWxWYWw6VCx0ZXh0OmcsaG92ZXJ0ZW1wbGF0ZUxhYmVsczp7ekxhYmVs OlQsY29sb3JMYWJlbDpiLCJjb2xvclswXUxhYmVsIjp5WzBdK3hbMF0sImNv bG9yWzFdTGFiZWwiOnlbMV0reFsxXSwiY29sb3JbMl1MYWJlbCI6eVsyXSt4 WzJdLCJjb2xvclszXUxhYmVsIjp5WzNdK3hbM119fSldfX19fSx7Ii4uLy4u L2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGliIjo3MTcsIi4vY29uc3Rh bnRzIjoxMDQyfV0sMTA0NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3Vw cGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNhbGM6dCgiLi9jYWxjIiks cGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0eWxlIiksaG92ZXJQb2lu dHM6dCgiLi9ob3ZlciIpLGV2ZW50RGF0YTp0KCIuL2V2ZW50X2RhdGEiKSxt b2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiaW1hZ2UiLGJhc2VQbG90TW9kdWxl OnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0 ZXNpYW4iLCJzdmciLCIyZE1hcCIsIm5vU29ydGluZ0J5VmFsdWUiXSxhbmlt YXRhYmxlOiExLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6 Nzc2LCIuL2F0dHJpYnV0ZXMiOjEwNDAsIi4vY2FsYyI6MTA0MSwiLi9kZWZh dWx0cyI6MTA0MywiLi9ldmVudF9kYXRhIjoxMDQ0LCIuL2hvdmVyIjoxMDQ1 LCIuL3Bsb3QiOjEwNDcsIi4vc3R5bGUiOjEwNDh9XSwxMDQ3OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8u Li9saWIiKSxpPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2Vz Iiksbz10KCIuL2NvbnN0YW50cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cixzKXt2YXIgbD1lLnhheGlzLGM9ZS55YXhpczthLm1ha2VUcmFjZUdyb3Vw cyhzLHIsImltIikuZWFjaChmdW5jdGlvbih0KXt2YXIgZSxyLHMsdSxoLGYs cD1uLnNlbGVjdCh0aGlzKSxkPXRbMF0sZz1kLnRyYWNlLHY9ZC56LG09ZC54 MCx5PWQueTAseD1kLncsYj1kLmgsXz1nLmR4LHc9Zy5keTtmb3IoZj0wO3Zv aWQgMD09PWUmJmY8eDspZT1sLmMycChtK2YqXyksZisrO2ZvcihmPXg7dm9p ZCAwPT09ciYmZj4wOylyPWwuYzJwKG0rZipfKSxmLS07Zm9yKGY9MDt2b2lk IDA9PT11JiZmPGI7KXU9Yy5jMnAoeStmKncpLGYrKztmb3IoZj1iO3ZvaWQg MD09PWgmJmY+MDspaD1jLmMycCh5K2YqdyksZi0tO3I8ZSYmKHM9cixyPWUs ZT1zKSxoPHUmJihzPXUsdT1oLGg9cyk7ZT1NYXRoLm1heCgtLjUqbC5fbGVu Z3RoLGUpLHI9TWF0aC5taW4oMS41KmwuX2xlbmd0aCxyKSx1PU1hdGgubWF4 KC0uNSpjLl9sZW5ndGgsdSksaD1NYXRoLm1pbigxLjUqYy5fbGVuZ3RoLGgp O3ZhciBrPU1hdGgucm91bmQoci1lKSxUPU1hdGgucm91bmQoaC11KTtpZihr PD0wfHxUPD0wKXtwLnNlbGVjdEFsbCgiaW1hZ2UiKS5kYXRhKFtdKS5leGl0 KCkucmVtb3ZlKCl9ZWxzZXt2YXIgTT1kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCJjYW52YXMiKTtNLndpZHRoPWssTS5oZWlnaHQ9VDt2YXIgQSxTPU0uZ2V0 Q29udGV4dCgiMmQiKSxFPWZ1bmN0aW9uKHQpe3JldHVybiBhLmNvbnN0cmFp bihNYXRoLnJvdW5kKGwuYzJwKG0rdCpfKS1lKSwwLGspfSxMPWZ1bmN0aW9u KHQpe3JldHVybiBhLmNvbnN0cmFpbihNYXRoLnJvdW5kKGMuYzJwKHkrdCp3 KS11KSwwLFQpfSxDPW8uY29sb3Jtb2RlbFtnLmNvbG9ybW9kZWxdLmZtdDtm b3IoZj0wO2Y8ZC53O2YrKyl7dmFyIFA9RShmKSxPPUUoZisxKTtpZihPIT09 UCYmIWlzTmFOKE8pJiYhaXNOYU4oUCkpZm9yKHZhciB6PTA7ejxkLmg7eisr KXt2YXIgST1MKHopLEQ9TCh6KzEpO0Q9PT1JfHxpc05hTihEKXx8aXNOYU4o SSl8fCF2W3pdW2ZdfHwoQT1nLl9zY2FsZXIodlt6XVtmXSksUy5maWxsU3R5 bGU9QT9nLmNvbG9ybW9kZWwrIigiK0MoQSkuam9pbigiLCIpKyIpIjoicmdi YSgwLDAsMCwwKSIsUy5maWxsUmVjdChQLEksTy1QLEQtSSkpfX12YXIgUj1w LnNlbGVjdEFsbCgiaW1hZ2UiKS5kYXRhKHQpO1IuZW50ZXIoKS5hcHBlbmQo InN2ZzppbWFnZSIpLmF0dHIoe3htbG5zOmkuc3ZnLHByZXNlcnZlQXNwZWN0 UmF0aW86Im5vbmUifSksUi5hdHRyKHtoZWlnaHQ6VCx3aWR0aDprLHg6ZSx5 OnUsInhsaW5rOmhyZWYiOk0udG9EYXRhVVJMKCJpbWFnZS9wbmciKX0pfX0p fX0seyIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyI6Njk0LCIu Li8uLi9saWIiOjcxNywiLi9jb25zdGFudHMiOjEwNDIsZDM6MTY1fV0sMTA0 ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtuLnNlbGVjdCh0KS5zZWxlY3RBbGwo Ii5pbSBpbWFnZSIpLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbih0KXtyZXR1 cm4gdC50cmFjZS5vcGFjaXR5fSl9fSx7ZDM6MTY1fV0sMTA0OTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIvZXh0 ZW5kIikuZXh0ZW5kRmxhdCxhPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRl bmREZWVwLGk9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJy aWRlQWxsLG89dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIikscz10 KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKSxsPXQoIi4u Ly4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsYz10KCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSx1PXQoIi4uLy4uL3Bs b3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheSxoPXQoIi4u Ly4uL2NvbnN0YW50cy9kZWx0YS5qcyIpLGY9KHQoIi4uLy4uL2NvbnN0YW50 cy9kb2NzIikuRk9STUFUX0xJTkssbyh7ZWRpdFR5cGU6InBsb3QiLGNvbG9y RWRpdFR5cGU6InBsb3QifSkpLHA9e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIs ZWRpdFR5cGU6InBsb3QifSxsaW5lOntjb2xvcjp7dmFsVHlwZToiY29sb3Ii LGRmbHQ6cy5kZWZhdWx0TGluZSxlZGl0VHlwZToicGxvdCJ9LHdpZHRoOnt2 YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9 LGVkaXRUeXBlOiJjYWxjIn0sdGhpY2tuZXNzOnt2YWxUeXBlOiJudW1iZXIi LG1pbjowLG1heDoxLGRmbHQ6MSxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBl OiJjYWxjIn0sZD17dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxU eXBlOiJudW1iZXIiLGVkaXRUeXBlOiJwbG90In0se3ZhbFR5cGU6Im51bWJl ciIsZWRpdFR5cGU6InBsb3QifV0sZWRpdFR5cGU6InBsb3QifSxnPXUoInN0 ZXAiLGEoe30scCx7cmFuZ2U6ZH0pKTtlLmV4cG9ydHM9e21vZGU6e3ZhbFR5 cGU6ImZsYWdsaXN0IixlZGl0VHlwZToiY2FsYyIsZmxhZ3M6WyJudW1iZXIi LCJkZWx0YSIsImdhdWdlIl0sZGZsdDoibnVtYmVyIn0sdmFsdWU6e3ZhbFR5 cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMiLGFuaW06ITB9LGFsaWduOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwi cmlnaHQiXSxlZGl0VHlwZToicGxvdCJ9LGRvbWFpbjpsKHtuYW1lOiJpbmRp Y2F0b3IiLHRyYWNlOiEwLGVkaXRUeXBlOiJjYWxjIn0pLHRpdGxlOnt0ZXh0 Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJwbG90In0sYWxpZ246e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxlZnQiLCJjZW50ZXIiLCJy aWdodCJdLGVkaXRUeXBlOiJwbG90In0sZm9udDpuKHt9LGYse30pLGVkaXRU eXBlOiJwbG90In0sbnVtYmVyOnt2YWx1ZWZvcm1hdDp7dmFsVHlwZToic3Ry aW5nIixkZmx0OiIiLGVkaXRUeXBlOiJwbG90In0sZm9udDpuKHt9LGYse30p LHByZWZpeDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJw bG90In0sc3VmZml4Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5 cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LGRlbHRhOntyZWZlcmVuY2U6 e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifSxwb3NpdGlvbjp7 dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidG9wIiwiYm90dG9tIiwi bGVmdCIsInJpZ2h0Il0sZGZsdDoiYm90dG9tIixlZGl0VHlwZToicGxvdCJ9 LHJlbGF0aXZlOnt2YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToicGxvdCIs ZGZsdDohMX0sdmFsdWVmb3JtYXQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5 cGU6InBsb3QifSxpbmNyZWFzaW5nOntzeW1ib2w6e3ZhbFR5cGU6InN0cmlu ZyIsZGZsdDpoLklOQ1JFQVNJTkcuU1lNQk9MLGVkaXRUeXBlOiJwbG90In0s Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmguSU5DUkVBU0lORy5DT0xP UixlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0sZGVjcmVhc2lu Zzp7c3ltYm9sOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6aC5ERUNSRUFTSU5H LlNZTUJPTCxlZGl0VHlwZToicGxvdCJ9LGNvbG9yOnt2YWxUeXBlOiJjb2xv ciIsZGZsdDpoLkRFQ1JFQVNJTkcuQ09MT1IsZWRpdFR5cGU6InBsb3QifSxl ZGl0VHlwZToicGxvdCJ9LGZvbnQ6bih7fSxmLHt9KSxlZGl0VHlwZToiY2Fs YyJ9LGdhdWdlOntzaGFwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsZWRpdFR5 cGU6InBsb3QiLGRmbHQ6ImFuZ3VsYXIiLHZhbHVlczpbImFuZ3VsYXIiLCJi dWxsZXQiXX0sYmFyOmEoe30scCx7Y29sb3I6e2RmbHQ6ImdyZWVuIn19KSxi Z2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InBsb3QifSxib3Jk ZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6cy5kZWZhdWx0TGluZSxl ZGl0VHlwZToicGxvdCJ9LGJvcmRlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIi LG1pbjowLGRmbHQ6MSxlZGl0VHlwZToicGxvdCJ9LGF4aXM6aSh7cmFuZ2U6 ZCx2aXNpYmxlOm4oe30sYy52aXNpYmxlLHtkZmx0OiEwfSksdGlja21vZGU6 Yy50aWNrbW9kZSxudGlja3M6Yy5udGlja3MsdGljazA6Yy50aWNrMCxkdGlj azpjLmR0aWNrLHRpY2t2YWxzOmMudGlja3ZhbHMsdGlja3RleHQ6Yy50aWNr dGV4dCx0aWNrczpuKHt9LGMudGlja3Mse2RmbHQ6Im91dHNpZGUifSksdGlj a2xlbjpjLnRpY2tsZW4sdGlja3dpZHRoOmMudGlja3dpZHRoLHRpY2tjb2xv cjpjLnRpY2tjb2xvcixzaG93dGlja2xhYmVsczpjLnNob3d0aWNrbGFiZWxz LHRpY2tmb250Om8oe30pLHRpY2thbmdsZTpjLnRpY2thbmdsZSx0aWNrZm9y bWF0OmMudGlja2Zvcm1hdCx0aWNrZm9ybWF0c3RvcHM6Yy50aWNrZm9ybWF0 c3RvcHMsdGlja3ByZWZpeDpjLnRpY2twcmVmaXgsc2hvd3RpY2twcmVmaXg6 Yy5zaG93dGlja3ByZWZpeCx0aWNrc3VmZml4OmMudGlja3N1ZmZpeCxzaG93 dGlja3N1ZmZpeDpjLnNob3d0aWNrc3VmZml4LHNlcGFyYXRldGhvdXNhbmRz OmMuc2VwYXJhdGV0aG91c2FuZHMsZXhwb25lbnRmb3JtYXQ6Yy5leHBvbmVu dGZvcm1hdCxzaG93ZXhwb25lbnQ6Yy5zaG93ZXhwb25lbnQsZWRpdFR5cGU6 InBsb3QifSwicGxvdCIpLHN0ZXBzOmcsdGhyZXNob2xkOntsaW5lOntjb2xv cjpuKHt9LHAubGluZS5jb2xvcix7fSksd2lkdGg6bih7fSxwLmxpbmUud2lk dGgse2RmbHQ6MX0pLGVkaXRUeXBlOiJwbG90In0sdGhpY2tuZXNzOm4oe30s cC50aGlja25lc3Mse2RmbHQ6Ljg1fSksdmFsdWU6e3ZhbFR5cGU6Im51bWJl ciIsZWRpdFR5cGU6ImNhbGMiLGRmbHQ6ITF9LGVkaXRUeXBlOiJwbG90In0s ZWRpdFR5cGU6InBsb3QifX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9h dHRyaWJ1dGVzIjo1OTEsIi4uLy4uL2NvbnN0YW50cy9kZWx0YS5qcyI6Njg3 LCIuLi8uLi9jb25zdGFudHMvZG9jcyI6Njg4LCIuLi8uLi9saWIvZXh0ZW5k Ijo3MDgsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4v cGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NzU1LCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi4vLi4vcGxvdHMvZG9t YWluIjo3OTAsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxfV0s MTA1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9wbG90cy9wbG90cyIpO3IubmFtZT0iaW5kaWNhdG9yIixyLnBsb3Q9 ZnVuY3Rpb24odCxlLGEsaSl7bi5wbG90QmFzZVBsb3Qoci5uYW1lLHQsZSxh LGkpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxhLGkpe24uY2xlYW5CYXNlUGxv dChyLm5hbWUsdCxlLGEsaSl9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo4MjZ9 XSwxMDUxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz17Y2FsYzpmdW5jdGlvbih0LGUpe3ZhciByPVtdLG49ZS52YWx1ZTsibnVt YmVyIiE9dHlwZW9mIGUuX2xhc3RWYWx1ZSYmKGUuX2xhc3RWYWx1ZT1lLnZh bHVlKTt2YXIgYT1lLl9sYXN0VmFsdWUsaT1hO3JldHVybiBlLl9oYXNEZWx0 YSYmIm51bWJlciI9PXR5cGVvZiBlLmRlbHRhLnJlZmVyZW5jZSYmKGk9ZS5k ZWx0YS5yZWZlcmVuY2UpLHJbMF09e3k6bixsYXN0WTphLGRlbHRhOm4taSxy ZWxhdGl2ZURlbHRhOihuLWkpL2l9LHJ9fX0se31dLDEwNTI6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtkZWZhdWx0TnVtYmVy Rm9udFNpemU6ODAsYnVsbGV0TnVtYmVyRG9tYWluU2l6ZTouMjUsYnVsbGV0 UGFkZGluZzouMDI1LGlubmVyUmFkaXVzOi43NSx2YWx1ZVRoaWNrbmVzczou NSx0aXRsZVBhZGRpbmc6NSxob3Jpem9udGFsUGFkZGluZzoxMH19LHt9XSwx MDUzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90 cy9kb21haW4iKS5kZWZhdWx0cyxvPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3Rf dGVtcGxhdGUiKSxzPXQoIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9k ZWZhdWx0cyIpLGw9dCgiLi9jb25zdGFudHMuanMiKSxjPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi90aWNrX3ZhbHVlX2RlZmF1bHRzIiksdT10KCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vdGlja19tYXJrX2RlZmF1bHRzIiksaD10KCIu Li8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja19sYWJlbF9kZWZhdWx0cyIpO2Z1 bmN0aW9uIGYodCxlKXtmdW5jdGlvbiByKHIsaSl7cmV0dXJuIG4uY29lcmNl KHQsZSxhLmdhdWdlLnN0ZXBzLHIsaSl9cigiY29sb3IiKSxyKCJsaW5lLmNv bG9yIikscigibGluZS53aWR0aCIpLHIoInJhbmdlIikscigidGhpY2tuZXNz Iil9ZS5leHBvcnRzPXtzdXBwbHlEZWZhdWx0czpmdW5jdGlvbih0LGUscixw KXtmdW5jdGlvbiBkKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9 aShlLHAsZCksZCgibW9kZSIpLGUuX2hhc051bWJlcj0tMSE9PWUubW9kZS5p bmRleE9mKCJudW1iZXIiKSxlLl9oYXNEZWx0YT0tMSE9PWUubW9kZS5pbmRl eE9mKCJkZWx0YSIpLGUuX2hhc0dhdWdlPS0xIT09ZS5tb2RlLmluZGV4T2Yo ImdhdWdlIik7dmFyIGc9ZCgidmFsdWUiKTtlLl9yYW5nZT1bMCwibnVtYmVy Ij09dHlwZW9mIGc/MS41Kmc6MV07dmFyIHYsbSx5LHgsYixfLHc9bmV3IEFy cmF5KDIpO2Z1bmN0aW9uIGsodCxlKXtyZXR1cm4gbi5jb2VyY2UoeSx4LGEu Z2F1Z2UsdCxlKX1mdW5jdGlvbiBUKHQsZSl7cmV0dXJuIG4uY29lcmNlKGIs XyxhLmdhdWdlLmF4aXMsdCxlKX1pZihlLl9oYXNOdW1iZXImJihkKCJudW1i ZXIudmFsdWVmb3JtYXQiKSxkKCJudW1iZXIuZm9udC5jb2xvciIscC5mb250 LmNvbG9yKSxkKCJudW1iZXIuZm9udC5mYW1pbHkiLHAuZm9udC5mYW1pbHkp LGQoIm51bWJlci5mb250LnNpemUiKSx2b2lkIDA9PT1lLm51bWJlci5mb250 LnNpemUmJihlLm51bWJlci5mb250LnNpemU9bC5kZWZhdWx0TnVtYmVyRm9u dFNpemUsd1swXT0hMCksZCgibnVtYmVyLnByZWZpeCIpLGQoIm51bWJlci5z dWZmaXgiKSx2PWUubnVtYmVyLmZvbnQuc2l6ZSksZS5faGFzRGVsdGEmJihk KCJkZWx0YS5mb250LmNvbG9yIixwLmZvbnQuY29sb3IpLGQoImRlbHRhLmZv bnQuZmFtaWx5IixwLmZvbnQuZmFtaWx5KSxkKCJkZWx0YS5mb250LnNpemUi KSx2b2lkIDA9PT1lLmRlbHRhLmZvbnQuc2l6ZSYmKGUuZGVsdGEuZm9udC5z aXplPShlLl9oYXNOdW1iZXI/LjU6MSkqKHZ8fGwuZGVmYXVsdE51bWJlckZv bnRTaXplKSx3WzFdPSEwKSxkKCJkZWx0YS5yZWZlcmVuY2UiLGUudmFsdWUp LGQoImRlbHRhLnJlbGF0aXZlIiksZCgiZGVsdGEudmFsdWVmb3JtYXQiLGUu ZGVsdGEucmVsYXRpdmU/IjIlIjoiIiksZCgiZGVsdGEuaW5jcmVhc2luZy5z eW1ib2wiKSxkKCJkZWx0YS5pbmNyZWFzaW5nLmNvbG9yIiksZCgiZGVsdGEu ZGVjcmVhc2luZy5zeW1ib2wiKSxkKCJkZWx0YS5kZWNyZWFzaW5nLmNvbG9y IiksZCgiZGVsdGEucG9zaXRpb24iKSxtPWUuZGVsdGEuZm9udC5zaXplKSxl Ll9zY2FsZU51bWJlcnM9KCFlLl9oYXNOdW1iZXJ8fHdbMF0pJiYoIWUuX2hh c0RlbHRhfHx3WzFdKXx8ITEsZCgidGl0bGUuZm9udC5jb2xvciIscC5mb250 LmNvbG9yKSxkKCJ0aXRsZS5mb250LmZhbWlseSIscC5mb250LmZhbWlseSks ZCgidGl0bGUuZm9udC5zaXplIiwuMjUqKHZ8fG18fGwuZGVmYXVsdE51bWJl ckZvbnRTaXplKSksZCgidGl0bGUudGV4dCIpLGUuX2hhc0dhdWdlKXsoeT10 LmdhdWdlKXx8KHk9e30pLHg9by5uZXdDb250YWluZXIoZSwiZ2F1Z2UiKSxr KCJzaGFwZSIpLChlLl9pc0J1bGxldD0iYnVsbGV0Ij09PWUuZ2F1Z2Uuc2hh cGUpfHxkKCJ0aXRsZS5hbGlnbiIsImNlbnRlciIpLChlLl9pc0FuZ3VsYXI9 ImFuZ3VsYXIiPT09ZS5nYXVnZS5zaGFwZSl8fGQoImFsaWduIiwiY2VudGVy IiksaygiYmdjb2xvciIscC5wYXBlcl9iZ2NvbG9yKSxrKCJib3JkZXJ3aWR0 aCIpLGsoImJvcmRlcmNvbG9yIiksaygiYmFyLmNvbG9yIiksaygiYmFyLmxp bmUuY29sb3IiKSxrKCJiYXIubGluZS53aWR0aCIpLGsoImJhci50aGlja25l c3MiLGwudmFsdWVUaGlja25lc3MqKCJidWxsZXQiPT09ZS5nYXVnZS5zaGFw ZT8uNToxKSkscyh5LHgse25hbWU6InN0ZXBzIixoYW5kbGVJdGVtRGVmYXVs dHM6Zn0pLGsoInRocmVzaG9sZC52YWx1ZSIpLGsoInRocmVzaG9sZC50aGlj a25lc3MiKSxrKCJ0aHJlc2hvbGQubGluZS53aWR0aCIpLGsoInRocmVzaG9s ZC5saW5lLmNvbG9yIiksYj17fSx5JiYoYj15LmF4aXN8fHt9KSxfPW8ubmV3 Q29udGFpbmVyKHgsImF4aXMiKSxUKCJ2aXNpYmxlIiksZS5fcmFuZ2U9VCgi cmFuZ2UiLGUuX3JhbmdlKTt2YXIgTT17b3V0ZXJUaWNrczohMH07YyhiLF8s VCwibGluZWFyIiksaChiLF8sVCwibGluZWFyIixNKSx1KGIsXyxULE0pfWVs c2UgZCgidGl0bGUuYWxpZ24iLCJjZW50ZXIiKSxkKCJhbGlnbiIsImNlbnRl ciIpLGUuX2lzQW5ndWxhcj1lLl9pc0J1bGxldD0hMTtlLl9sZW5ndGg9bnVs bH19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90X2FwaS9wbG90X3Rl bXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9kZWZh dWx0cyI6NzYxLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja19sYWJlbF9k ZWZhdWx0cyI6Nzg0LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vdGlja19tYXJr X2RlZmF1bHRzIjo3ODUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX3Zh bHVlX2RlZmF1bHRzIjo3ODYsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6NzkwLCIu L2F0dHJpYnV0ZXMiOjEwNDksIi4vY29uc3RhbnRzLmpzIjoxMDUyfV0sMTA1 NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21v ZHVsZVR5cGU6InRyYWNlIixuYW1lOiJpbmRpY2F0b3IiLGJhc2VQbG90TW9k dWxlOnQoIi4vYmFzZV9wbG90IiksY2F0ZWdvcmllczpbInN2ZyIsIm5vT3Bh Y2l0eSIsIm5vSG92ZXIiXSxhbmltYXRhYmxlOiEwLGF0dHJpYnV0ZXM6dCgi Li9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIp LnN1cHBseURlZmF1bHRzLGNhbGM6dCgiLi9jYWxjIikuY2FsYyxwbG90OnQo Ii4vcGxvdCIpLG1ldGE6e319fSx7Ii4vYXR0cmlidXRlcyI6MTA0OSwiLi9i YXNlX3Bsb3QiOjEwNTAsIi4vY2FsYyI6MTA1MSwiLi9kZWZhdWx0cyI6MTA1 MywiLi9wbG90IjoxMDU1fV0sMTA1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIiksaT1hLnJh ZDJkZWcsbz10KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50IikuTUlEX1NI SUZULHM9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbD10KCIuL2Nv bnN0YW50cyIpLGM9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksdT10 KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGg9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4aXNfZGVmYXVsdHMiKSxmPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9wb3NpdGlvbl9kZWZhdWx0cyIpLHA9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiksZD10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yIiksZz17bGVmdDoic3RhcnQiLGNlbnRlcjoibWlk ZGxlIixyaWdodDoiZW5kIn0sdj17bGVmdDowLGNlbnRlcjouNSxyaWdodDox fSxtPS9beXphZnBuXHhiNW1rTUdUUEVaWV0vO2Z1bmN0aW9uIHkodCl7cmV0 dXJuIHQmJnQuZHVyYXRpb24+MH1mdW5jdGlvbiB4KHQpe3QuZWFjaChmdW5j dGlvbih0KXtkLnN0cm9rZShuLnNlbGVjdCh0aGlzKSx0LmxpbmUuY29sb3Ip fSkuZWFjaChmdW5jdGlvbih0KXtkLmZpbGwobi5zZWxlY3QodGhpcyksdC5j b2xvcil9KS5zdHlsZSgic3Ryb2tlLXdpZHRoIixmdW5jdGlvbih0KXtyZXR1 cm4gdC5saW5lLndpZHRofSl9ZnVuY3Rpb24gYih0LGUscil7dmFyIG49dC5f ZnVsbExheW91dCxpPWEuZXh0ZW5kRmxhdCh7dHlwZToibGluZWFyIix0aWNr czoib3V0c2lkZSIscmFuZ2U6cixzaG93bGluZTohMH0sZSksbz17dHlwZToi bGluZWFyIixfaWQ6IngiK2UuX2lkfSxzPXtsZXR0ZXI6IngiLGZvbnQ6bi5m b250LG5vSG92ZXI6ITAsbm9UaWNrc29uOiEwfTtmdW5jdGlvbiBsKHQsZSl7 cmV0dXJuIGEuY29lcmNlKGksbyxwLHQsZSl9cmV0dXJuIGgoaSxvLGwscyxu KSxmKGksbyxsLHMpLG99ZnVuY3Rpb24gXyh0LGUpe3JldHVybiJ0cmFuc2xh dGUoIit0KyIsIitlKyIpIn1mdW5jdGlvbiB3KHQsZSxyKXtyZXR1cm5bTWF0 aC5taW4oZS90LndpZHRoLHIvdC5oZWlnaHQpLHQsZSsieCIrcl19ZnVuY3Rp b24gayh0LGUscixhKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwidGV4dCIpLG89bi5zZWxl Y3QoaSk7cmV0dXJuIG8udGV4dCh0KS5hdHRyKCJ4IiwwKS5hdHRyKCJ5Iiww KS5hdHRyKCJ0ZXh0LWFuY2hvciIscikuYXR0cigiZGF0YS11bmZvcm1hdHRl ZCIsdCkuY2FsbChjLmNvbnZlcnRUb1RzcGFucyxhKS5jYWxsKHMuZm9udCxl KSxzLmJCb3goby5ub2RlKCkpfWZ1bmN0aW9uIFQodCxlLHIsbixpLG8pe3Zh ciBzPSJfY2FjaGUiK2U7dFtzXSYmdFtzXS5rZXk9PT1pfHwodFtzXT17a2V5 OmksdmFsdWU6cn0pO3ZhciBsPWEuYWdnTnVtcyhvLG51bGwsW3Rbc10udmFs dWUsbl0sMik7cmV0dXJuIHRbc10udmFsdWU9bCxsfWUuZXhwb3J0cz1mdW5j dGlvbih0LGUscixoKXt2YXIgZixwPXQuX2Z1bGxMYXlvdXQ7eShyKSYmaCYm KGY9aCgpKSxhLm1ha2VUcmFjZUdyb3VwcyhwLl9pbmRpY2F0b3JsYXllcixl LCJ0cmFjZSIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIGgsTSxBLFMsRSxMPWVb MF0udHJhY2UsQz1uLnNlbGVjdCh0aGlzKSxQPUwuX2hhc0dhdWdlLE89TC5f aXNBbmd1bGFyLHo9TC5faXNCdWxsZXQsST1MLmRvbWFpbixEPXt3OnAuX3Np emUudyooSS54WzFdLUkueFswXSksaDpwLl9zaXplLmgqKEkueVsxXS1JLnlb MF0pLGw6cC5fc2l6ZS5sK3AuX3NpemUudypJLnhbMF0scjpwLl9zaXplLnIr cC5fc2l6ZS53KigxLUkueFsxXSksdDpwLl9zaXplLnQrcC5fc2l6ZS5oKigx LUkueVsxXSksYjpwLl9zaXplLmIrcC5fc2l6ZS5oKkkueVswXX0sUj1ELmwr RC53LzIsRj1ELnQrRC5oLzIsQj1NYXRoLm1pbihELncvMixELmgpLE49bC5p bm5lclJhZGl1cypCLGo9TC5hbGlnbnx8ImNlbnRlciI7aWYoTT1GLFApe2lm KE8mJihoPVIsTT1GK0IvMixBPWZ1bmN0aW9uKHQpe3JldHVybiBlPXQscj0u OSpOLG49TWF0aC5zcXJ0KGUud2lkdGgvMiooZS53aWR0aC8yKStlLmhlaWdo dCplLmhlaWdodCksW3IvbixlLHJdO3ZhciBlLHIsbn0pLHope3ZhciBWPWwu YnVsbGV0UGFkZGluZyxVPTEtbC5idWxsZXROdW1iZXJEb21haW5TaXplK1Y7 aD1ELmwrKFUrKDEtVSkqdltqXSkqRC53LEE9ZnVuY3Rpb24odCl7cmV0dXJu IHcodCwobC5idWxsZXROdW1iZXJEb21haW5TaXplLVYpKkQudyxELmgpfX19 ZWxzZSBoPUQubCt2W2pdKkQudyxBPWZ1bmN0aW9uKHQpe3JldHVybiB3KHQs RC53LEQuaCl9OyFmdW5jdGlvbih0LGUscixpKXt2YXIgbyxsLGgsZj1yWzBd LnRyYWNlLHA9aS5udW1iZXJzWCx4PWkubnVtYmVyc1ksdz1mLmFsaWdufHwi Y2VudGVyIixNPWdbd10sQT1pLnRyYW5zaXRpb25PcHRzLFM9aS5vbkNvbXBs ZXRlLEU9YS5lbnN1cmVTaW5nbGUoZSwiZyIsIm51bWJlcnMiKSxMPVtdO2Yu X2hhc051bWJlciYmTC5wdXNoKCJudW1iZXIiKTtmLl9oYXNEZWx0YSYmKEwu cHVzaCgiZGVsdGEiKSwibGVmdCI9PT1mLmRlbHRhLnBvc2l0aW9uJiZMLnJl dmVyc2UoKSk7dmFyIEM9RS5zZWxlY3RBbGwoInRleHQiKS5kYXRhKEwpO2Z1 bmN0aW9uIFAoZSxyLG4sYSl7aWYoIWUubWF0Y2goInMiKXx8bj49MD09YT49 MHx8cihuKS5zbGljZSgtMSkubWF0Y2gobSl8fHIoYSkuc2xpY2UoLTEpLm1h dGNoKG0pKXJldHVybiByO3ZhciBpPWUuc2xpY2UoKS5yZXBsYWNlKCJzIiwi ZiIpLnJlcGxhY2UoL1xkKy8sZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50 KHQpLTF9KSxvPWIodCx7dGlja2Zvcm1hdDppfSk7cmV0dXJuIGZ1bmN0aW9u KHQpe3JldHVybiBNYXRoLmFicyh0KTwxP3UudGlja1RleHQobyx0KS50ZXh0 OnIodCl9fUMuZW50ZXIoKS5hcHBlbmQoInRleHQiKSxDLmF0dHIoInRleHQt YW5jaG9yIixmdW5jdGlvbigpe3JldHVybiBNfSkuYXR0cigiY2xhc3MiLGZ1 bmN0aW9uKHQpe3JldHVybiB0fSkuYXR0cigieCIsbnVsbCkuYXR0cigieSIs bnVsbCkuYXR0cigiZHgiLG51bGwpLmF0dHIoImR5IixudWxsKSxDLmV4aXQo KS5yZW1vdmUoKTt2YXIgTyx6PWYubW9kZStmLmFsaWduO2YuX2hhc0RlbHRh JiYoTz1mdW5jdGlvbigpe3ZhciBlPWIodCx7dGlja2Zvcm1hdDpmLmRlbHRh LnZhbHVlZm9ybWF0fSxmLl9yYW5nZSk7ZS5zZXRTY2FsZSgpLHUucHJlcFRp Y2tzKGUpO3ZhciBhPWZ1bmN0aW9uKHQpe3JldHVybiB1LnRpY2tUZXh0KGUs dCkudGV4dH0saT1mdW5jdGlvbih0KXt2YXIgZT1mLmRlbHRhLnJlbGF0aXZl P3QucmVsYXRpdmVEZWx0YTp0LmRlbHRhO3JldHVybiBlfSxvPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIDA9PT10fHwibnVtYmVyIiE9dHlwZW9mIHR8fGlzTmFO KHQpPyItIjoodD4wP2YuZGVsdGEuaW5jcmVhc2luZy5zeW1ib2w6Zi5kZWx0 YS5kZWNyZWFzaW5nLnN5bWJvbCkrZSh0KX0saD1mdW5jdGlvbih0KXtyZXR1 cm4gdC5kZWx0YT49MD9mLmRlbHRhLmluY3JlYXNpbmcuY29sb3I6Zi5kZWx0 YS5kZWNyZWFzaW5nLmNvbG9yfTt2b2lkIDA9PT1mLl9kZWx0YUxhc3RWYWx1 ZSYmKGYuX2RlbHRhTGFzdFZhbHVlPWkoclswXSkpO3ZhciBwPUUuc2VsZWN0 KCJ0ZXh0LmRlbHRhIik7ZnVuY3Rpb24gZygpe3AudGV4dChvKGkoclswXSks YSkpLmNhbGwoZC5maWxsLGgoclswXSkpLmNhbGwoYy5jb252ZXJ0VG9Uc3Bh bnMsdCl9cC5jYWxsKHMuZm9udCxmLmRlbHRhLmZvbnQpLmNhbGwoZC5maWxs LGgoe2RlbHRhOmYuX2RlbHRhTGFzdFZhbHVlfSkpLHkoQSk/cC50cmFuc2l0 aW9uKCkuZHVyYXRpb24oQS5kdXJhdGlvbikuZWFzZShBLmVhc2luZykudHdl ZW4oInRleHQiLGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyksZT1p KHJbMF0pLHM9Zi5fZGVsdGFMYXN0VmFsdWUsbD1QKGYuZGVsdGEudmFsdWVm b3JtYXQsYSxzLGUpLGM9bi5pbnRlcnBvbGF0ZU51bWJlcihzLGUpO3JldHVy biBmLl9kZWx0YUxhc3RWYWx1ZT1lLGZ1bmN0aW9uKGUpe3QudGV4dChvKGMo ZSksbCkpLHQuY2FsbChkLmZpbGwsaCh7ZGVsdGE6YyhlKX0pKX19KS5lYWNo KCJlbmQiLGZ1bmN0aW9uKCl7ZygpLFMmJlMoKX0pLmVhY2goImludGVycnVw dCIsZnVuY3Rpb24oKXtnKCksUyYmUygpfSk6ZygpO3JldHVybiBsPWsobyhp KHJbMF0pLGEpLGYuZGVsdGEuZm9udCxNLHQpLHB9KCkseis9Zi5kZWx0YS5w b3NpdGlvbitmLmRlbHRhLmZvbnQuc2l6ZStmLmRlbHRhLmZvbnQuZmFtaWx5 K2YuZGVsdGEudmFsdWVmb3JtYXQseis9Zi5kZWx0YS5pbmNyZWFzaW5nLnN5 bWJvbCtmLmRlbHRhLmRlY3JlYXNpbmcuc3ltYm9sLGg9bCk7Zi5faGFzTnVt YmVyJiYoIWZ1bmN0aW9uKCl7dmFyIGU9Yih0LHt0aWNrZm9ybWF0OmYubnVt YmVyLnZhbHVlZm9ybWF0fSxmLl9yYW5nZSk7ZS5zZXRTY2FsZSgpLHUucHJl cFRpY2tzKGUpO3ZhciBhPWZ1bmN0aW9uKHQpe3JldHVybiB1LnRpY2tUZXh0 KGUsdCkudGV4dH0saT1mLm51bWJlci5zdWZmaXgsbD1mLm51bWJlci5wcmVm aXgsaD1FLnNlbGVjdCgidGV4dC5udW1iZXIiKTtmdW5jdGlvbiBwKCl7dmFy IGU9Im51bWJlciI9PXR5cGVvZiByWzBdLnk/bCthKHJbMF0ueSkraToiLSI7 aC50ZXh0KGUpLmNhbGwocy5mb250LGYubnVtYmVyLmZvbnQpLmNhbGwoYy5j b252ZXJ0VG9Uc3BhbnMsdCl9eShBKT9oLnRyYW5zaXRpb24oKS5kdXJhdGlv bihBLmR1cmF0aW9uKS5lYXNlKEEuZWFzaW5nKS5lYWNoKCJlbmQiLGZ1bmN0 aW9uKCl7cCgpLFMmJlMoKX0pLmVhY2goImludGVycnVwdCIsZnVuY3Rpb24o KXtwKCksUyYmUygpfSkuYXR0clR3ZWVuKCJ0ZXh0IixmdW5jdGlvbigpe3Zh ciB0PW4uc2VsZWN0KHRoaXMpLGU9bi5pbnRlcnBvbGF0ZU51bWJlcihyWzBd Lmxhc3RZLHJbMF0ueSk7Zi5fbGFzdFZhbHVlPXJbMF0ueTt2YXIgbz1QKGYu bnVtYmVyLnZhbHVlZm9ybWF0LGEsclswXS5sYXN0WSxyWzBdLnkpO3JldHVy biBmdW5jdGlvbihyKXt0LnRleHQobCtvKGUocikpK2kpfX0pOnAoKTtvPWso bCthKHJbMF0ueSkraSxmLm51bWJlci5mb250LE0sdCl9KCkseis9Zi5udW1i ZXIuZm9udC5zaXplK2YubnVtYmVyLmZvbnQuZmFtaWx5K2YubnVtYmVyLnZh bHVlZm9ybWF0K2YubnVtYmVyLnN1ZmZpeCtmLm51bWJlci5wcmVmaXgsaD1v KTtpZihmLl9oYXNEZWx0YSYmZi5faGFzTnVtYmVyKXt2YXIgSSxELFI9Wyhv LmxlZnQrby5yaWdodCkvMiwoby50b3Arby5ib3R0b20pLzJdLEY9WyhsLmxl ZnQrbC5yaWdodCkvMiwobC50b3ArbC5ib3R0b20pLzJdLEI9Ljc1KmYuZGVs dGEuZm9udC5zaXplOyJsZWZ0Ij09PWYuZGVsdGEucG9zaXRpb24mJihJPVQo ZiwiZGVsdGFQb3MiLDAsLTEqKG8ud2lkdGgqdltmLmFsaWduXStsLndpZHRo KigxLXZbZi5hbGlnbl0pK0IpLHosTWF0aC5taW4pLEQ9UlsxXS1GWzFdLGg9 e3dpZHRoOm8ud2lkdGgrbC53aWR0aCtCLGhlaWdodDpNYXRoLm1heChvLmhl aWdodCxsLmhlaWdodCksbGVmdDpsLmxlZnQrSSxyaWdodDpvLnJpZ2h0LHRv cDpNYXRoLm1pbihvLnRvcCxsLnRvcCtEKSxib3R0b206TWF0aC5tYXgoby5i b3R0b20sbC5ib3R0b20rRCl9KSwicmlnaHQiPT09Zi5kZWx0YS5wb3NpdGlv biYmKEk9VChmLCJkZWx0YVBvcyIsMCxvLndpZHRoKigxLXZbZi5hbGlnbl0p K2wud2lkdGgqdltmLmFsaWduXStCLHosTWF0aC5tYXgpLEQ9UlsxXS1GWzFd LGg9e3dpZHRoOm8ud2lkdGgrbC53aWR0aCtCLGhlaWdodDpNYXRoLm1heChv LmhlaWdodCxsLmhlaWdodCksbGVmdDpvLmxlZnQscmlnaHQ6bC5yaWdodCtJ LHRvcDpNYXRoLm1pbihvLnRvcCxsLnRvcCtEKSxib3R0b206TWF0aC5tYXgo by5ib3R0b20sbC5ib3R0b20rRCl9KSwiYm90dG9tIj09PWYuZGVsdGEucG9z aXRpb24mJihJPW51bGwsRD1sLmhlaWdodCxoPXt3aWR0aDpNYXRoLm1heChv LndpZHRoLGwud2lkdGgpLGhlaWdodDpvLmhlaWdodCtsLmhlaWdodCxsZWZ0 Ok1hdGgubWluKG8ubGVmdCxsLmxlZnQpLHJpZ2h0Ok1hdGgubWF4KG8ucmln aHQsbC5yaWdodCksdG9wOm8uYm90dG9tLW8uaGVpZ2h0LGJvdHRvbTpvLmJv dHRvbStsLmhlaWdodH0pLCJ0b3AiPT09Zi5kZWx0YS5wb3NpdGlvbiYmKEk9 bnVsbCxEPW8udG9wLGg9e3dpZHRoOk1hdGgubWF4KG8ud2lkdGgsbC53aWR0 aCksaGVpZ2h0Om8uaGVpZ2h0K2wuaGVpZ2h0LGxlZnQ6TWF0aC5taW4oby5s ZWZ0LGwubGVmdCkscmlnaHQ6TWF0aC5tYXgoby5yaWdodCxsLnJpZ2h0KSx0 b3A6by5ib3R0b20tby5oZWlnaHQtbC5oZWlnaHQsYm90dG9tOm8uYm90dG9t fSksTy5hdHRyKHtkeDpJLGR5OkR9KX0oZi5faGFzTnVtYmVyfHxmLl9oYXNE ZWx0YSkmJkUuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbigpe3ZhciB0PWku bnVtYmVyc1NjYWxlcihoKTt6Kz10WzJdO3ZhciBlLHI9VChmLCJudW1iZXJz U2NhbGUiLDEsdFswXSx6LE1hdGgubWluKTtmLl9zY2FsZU51bWJlcnN8fChy PTEpLGU9Zi5faXNBbmd1bGFyP3gtcipoLmJvdHRvbTp4LXIqKGgudG9wK2gu Ym90dG9tKS8yLGYuX251bWJlcnNUb3A9cipoLnRvcCtlO3ZhciBuPWhbd107 ImNlbnRlciI9PT13JiYobj0oaC5sZWZ0K2gucmlnaHQpLzIpO3ZhciBhPXAt cipuO3JldHVybiBfKGE9VChmLCJudW1iZXJzVHJhbnNsYXRlIiwwLGEseixN YXRoLm1heCksZSkrIiBzY2FsZSgiK3IrIikifSl9KHQsQyxlLHtudW1iZXJz WDpoLG51bWJlcnNZOk0sbnVtYmVyc1NjYWxlcjpBLHRyYW5zaXRpb25PcHRz OnIsb25Db21wbGV0ZTpmfSksUCYmKFM9e3JhbmdlOkwuZ2F1Z2UuYXhpcy5y YW5nZSxjb2xvcjpMLmdhdWdlLmJnY29sb3IsbGluZTp7Y29sb3I6TC5nYXVn ZS5ib3JkZXJjb2xvcix3aWR0aDowfSx0aGlja25lc3M6MX0sRT17cmFuZ2U6 TC5nYXVnZS5heGlzLnJhbmdlLGNvbG9yOiJyZ2JhKDAsIDAsIDAsIDApIixs aW5lOntjb2xvcjpMLmdhdWdlLmJvcmRlcmNvbG9yLHdpZHRoOkwuZ2F1Z2Uu Ym9yZGVyd2lkdGh9LHRoaWNrbmVzczoxfSk7dmFyIHE9Qy5zZWxlY3RBbGwo ImcuYW5ndWxhciIpLmRhdGEoTz9lOltdKTtxLmV4aXQoKS5yZW1vdmUoKTt2 YXIgSD1DLnNlbGVjdEFsbCgiZy5hbmd1bGFyYXhpcyIpLmRhdGEoTz9lOltd KTtILmV4aXQoKS5yZW1vdmUoKSxPJiZmdW5jdGlvbih0LGUscixhKXt2YXIg cyxsLGMsaCxmPXJbMF0udHJhY2UscD1hLnNpemUsZD1hLnJhZGl1cyxnPWEu aW5uZXJSYWRpdXMsdj1hLmdhdWdlQmcsbT1hLmdhdWdlT3V0bGluZSx3PVtw LmwrcC53LzIscC50K3AuaC8yK2QvMl0saz1hLmdhdWdlLFQ9YS5sYXllcixN PWEudHJhbnNpdGlvbk9wdHMsQT1hLm9uQ29tcGxldGUsUz1NYXRoLlBJLzI7 ZnVuY3Rpb24gRSh0KXt2YXIgZT1mLmdhdWdlLmF4aXMucmFuZ2VbMF0scj1m LmdhdWdlLmF4aXMucmFuZ2VbMV0sbj0odC1lKS8oci1lKSpNYXRoLlBJLVM7 cmV0dXJuIG48LVM/LVM6bj5TP1M6bn1mdW5jdGlvbiBMKHQpe3JldHVybiBu LnN2Zy5hcmMoKS5pbm5lclJhZGl1cygoZytkKS8yLXQvMiooZC1nKSkub3V0 ZXJSYWRpdXMoKGcrZCkvMit0LzIqKGQtZykpLnN0YXJ0QW5nbGUoLVMpfWZ1 bmN0aW9uIEModCl7dC5hdHRyKCJkIixmdW5jdGlvbih0KXtyZXR1cm4gTCh0 LnRoaWNrbmVzcykuc3RhcnRBbmdsZShFKHQucmFuZ2VbMF0pKS5lbmRBbmds ZShFKHQucmFuZ2VbMV0pKSgpfSl9ay5lbnRlcigpLmFwcGVuZCgiZyIpLmNs YXNzZWQoImFuZ3VsYXIiLCEwKSxrLmF0dHIoInRyYW5zZm9ybSIsXyh3WzBd LHdbMV0pKSxULmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ndWxh cmF4aXMiLCEwKS5jbGFzc2VkKCJjcmlzcCIsITApLFQuc2VsZWN0QWxsKCJn Lnhhbmd1bGFyYXhpc3RpY2sscGF0aCx0ZXh0IikucmVtb3ZlKCksKHM9Yih0 LGYuZ2F1Z2UuYXhpcykpLnR5cGU9ImxpbmVhciIscy5yYW5nZT1mLmdhdWdl LmF4aXMucmFuZ2Uscy5faWQ9Inhhbmd1bGFyYXhpcyIscy5zZXRTY2FsZSgp O3ZhciBQPWZ1bmN0aW9uKHQpe3JldHVybihzLnJhbmdlWzBdLXQueCkvKHMu cmFuZ2VbMV0tcy5yYW5nZVswXSkqTWF0aC5QSStNYXRoLlBJfSxPPXt9LHo9 dS5tYWtlTGFiZWxGbnMocywwKS5sYWJlbFN0YW5kb2ZmO08ueEZuPWZ1bmN0 aW9uKHQpe3ZhciBlPVAodCk7cmV0dXJuIE1hdGguY29zKGUpKnp9LE8ueUZu PWZ1bmN0aW9uKHQpe3ZhciBlPVAodCkscj1NYXRoLnNpbihlKT4wPy4yOjE7 cmV0dXJuLU1hdGguc2luKGUpKih6K3QuZm9udFNpemUqcikrTWF0aC5hYnMo TWF0aC5jb3MoZSkpKih0LmZvbnRTaXplKm8pfSxPLmFuY2hvckZuPWZ1bmN0 aW9uKHQpe3ZhciBlPVAodCkscj1NYXRoLmNvcyhlKTtyZXR1cm4gTWF0aC5h YnMocik8LjE/Im1pZGRsZSI6cj4wPyJzdGFydCI6ImVuZCJ9LE8uaGVpZ2h0 Rm49ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVAodCk7cmV0dXJuLS41KigxK01h dGguc2luKG4pKSpyfTt2YXIgST1mdW5jdGlvbih0KXtyZXR1cm4gXyh3WzBd K2QqTWF0aC5jb3ModCksd1sxXS1kKk1hdGguc2luKHQpKX07Yz1mdW5jdGlv bih0KXtyZXR1cm4gSShQKHQpKX07aWYobD11LmNhbGNUaWNrcyhzKSxoPXUu Z2V0VGlja1NpZ25zKHMpWzJdLHMudmlzaWJsZSl7aD0iaW5zaWRlIj09PXMu dGlja3M/LTE6MTt2YXIgRD0ocy5saW5ld2lkdGh8fDEpLzI7dS5kcmF3VGlj a3ModCxzLHt2YWxzOmwsbGF5ZXI6VCxwYXRoOiJNIitoKkQrIiwwaCIraCpz LnRpY2tsZW4sdHJhbnNGbjpmdW5jdGlvbih0KXt2YXIgZT1QKHQpO3JldHVy biBJKGUpKyJyb3RhdGUoIistaShlKSsiKSJ9fSksdS5kcmF3TGFiZWxzKHQs cyx7dmFsczpsLGxheWVyOlQsdHJhbnNGbjpjLGxhYmVsRm5zOk99KX12YXIg Uj1bdl0uY29uY2F0KGYuZ2F1Z2Uuc3RlcHMpLEY9ay5zZWxlY3RBbGwoImcu YmctYXJjIikuZGF0YShSKTtGLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3Nl ZCgiYmctYXJjIiwhMCkuYXBwZW5kKCJwYXRoIiksRi5zZWxlY3QoInBhdGgi KS5jYWxsKEMpLmNhbGwoeCksRi5leGl0KCkucmVtb3ZlKCk7dmFyIEI9TChm LmdhdWdlLmJhci50aGlja25lc3MpLE49ay5zZWxlY3RBbGwoImcudmFsdWUt YXJjIikuZGF0YShbZi5nYXVnZS5iYXJdKTtOLmVudGVyKCkuYXBwZW5kKCJn IikuY2xhc3NlZCgidmFsdWUtYXJjIiwhMCkuYXBwZW5kKCJwYXRoIik7dmFy IGo9Ti5zZWxlY3QoInBhdGgiKTt5KE0pPyhqLnRyYW5zaXRpb24oKS5kdXJh dGlvbihNLmR1cmF0aW9uKS5lYXNlKE0uZWFzaW5nKS5lYWNoKCJlbmQiLGZ1 bmN0aW9uKCl7QSYmQSgpfSkuZWFjaCgiaW50ZXJydXB0IixmdW5jdGlvbigp e0EmJkEoKX0pLmF0dHJUd2VlbigiZCIsKFY9QixVPUUoclswXS5sYXN0WSks cT1FKHJbMF0ueSksZnVuY3Rpb24oKXt2YXIgdD1uLmludGVycG9sYXRlKFUs cSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBWLmVuZEFuZ2xlKHQoZSkp KCl9fSkpLGYuX2xhc3RWYWx1ZT1yWzBdLnkpOmouYXR0cigiZCIsIm51bWJl ciI9PXR5cGVvZiByWzBdLnk/Qi5lbmRBbmdsZShFKHJbMF0ueSkpOiJNMCww WiIpO3ZhciBWLFUscTtqLmNhbGwoeCksTi5leGl0KCkucmVtb3ZlKCksUj1b XTt2YXIgSD1mLmdhdWdlLnRocmVzaG9sZC52YWx1ZTtIJiZSLnB1c2goe3Jh bmdlOltILEhdLGNvbG9yOmYuZ2F1Z2UudGhyZXNob2xkLmNvbG9yLGxpbmU6 e2NvbG9yOmYuZ2F1Z2UudGhyZXNob2xkLmxpbmUuY29sb3Isd2lkdGg6Zi5n YXVnZS50aHJlc2hvbGQubGluZS53aWR0aH0sdGhpY2tuZXNzOmYuZ2F1Z2Uu dGhyZXNob2xkLnRoaWNrbmVzc30pO3ZhciBHPWsuc2VsZWN0QWxsKCJnLnRo cmVzaG9sZC1hcmMiKS5kYXRhKFIpO0cuZW50ZXIoKS5hcHBlbmQoImciKS5j bGFzc2VkKCJ0aHJlc2hvbGQtYXJjIiwhMCkuYXBwZW5kKCJwYXRoIiksRy5z ZWxlY3QoInBhdGgiKS5jYWxsKEMpLmNhbGwoeCksRy5leGl0KCkucmVtb3Zl KCk7dmFyIFk9ay5zZWxlY3RBbGwoImcuZ2F1Z2Utb3V0bGluZSIpLmRhdGEo W21dKTtZLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiZ2F1Z2Utb3V0 bGluZSIsITApLmFwcGVuZCgicGF0aCIpLFkuc2VsZWN0KCJwYXRoIikuY2Fs bChDKS5jYWxsKHgpLFkuZXhpdCgpLnJlbW92ZSgpfSh0LDAsZSx7cmFkaXVz OkIsaW5uZXJSYWRpdXM6TixnYXVnZTpxLGxheWVyOkgsc2l6ZTpELGdhdWdl Qmc6UyxnYXVnZU91dGxpbmU6RSx0cmFuc2l0aW9uT3B0czpyLG9uQ29tcGxl dGU6Zn0pO3ZhciBHPUMuc2VsZWN0QWxsKCJnLmJ1bGxldCIpLmRhdGEoej9l OltdKTtHLmV4aXQoKS5yZW1vdmUoKTt2YXIgWT1DLnNlbGVjdEFsbCgiZy5i dWxsZXRheGlzIikuZGF0YSh6P2U6W10pO1kuZXhpdCgpLnJlbW92ZSgpLHom JmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLGksbyxzLGMsaD1yWzBdLnRyYWNl LGY9bi5nYXVnZSxwPW4ubGF5ZXIsZz1uLmdhdWdlQmcsdj1uLmdhdWdlT3V0 bGluZSxtPW4uc2l6ZSxfPWguZG9tYWluLHc9bi50cmFuc2l0aW9uT3B0cyxr PW4ub25Db21wbGV0ZTtmLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgi YnVsbGV0IiwhMCksZi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitt LmwrIiwgIittLnQrIikiKSxwLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3Nl ZCgiYnVsbGV0YXhpcyIsITApLmNsYXNzZWQoImNyaXNwIiwhMCkscC5zZWxl Y3RBbGwoImcueGJ1bGxldGF4aXN0aWNrLHBhdGgsdGV4dCIpLnJlbW92ZSgp O3ZhciBUPW0uaCxNPWguZ2F1Z2UuYmFyLnRoaWNrbmVzcypULEE9Xy54WzBd LFM9Xy54WzBdKyhfLnhbMV0tXy54WzBdKSooaC5faGFzTnVtYmVyfHxoLl9o YXNEZWx0YT8xLWwuYnVsbGV0TnVtYmVyRG9tYWluU2l6ZToxKTsoYT1iKHQs aC5nYXVnZS5heGlzKSkuX2lkPSJ4YnVsbGV0YXhpcyIsYS5kb21haW49W0Es U10sYS5zZXRTY2FsZSgpLGk9dS5jYWxjVGlja3MoYSksbz11Lm1ha2VUcmFu c0ZuKGEpLHM9dS5nZXRUaWNrU2lnbnMoYSlbMl0sYz1tLnQrbS5oLGEudmlz aWJsZSYmKHUuZHJhd1RpY2tzKHQsYSx7dmFsczoiaW5zaWRlIj09PWEudGlj a3M/dS5jbGlwRW5kcyhhLGkpOmksbGF5ZXI6cCxwYXRoOnUubWFrZVRpY2tQ YXRoKGEsYyxzKSx0cmFuc0ZuOm99KSx1LmRyYXdMYWJlbHModCxhLHt2YWxz OmksbGF5ZXI6cCx0cmFuc0ZuOm8sbGFiZWxGbnM6dS5tYWtlTGFiZWxGbnMo YSxjKX0pKTtmdW5jdGlvbiBFKHQpe3QuYXR0cigid2lkdGgiLGZ1bmN0aW9u KHQpe3JldHVybiBNYXRoLm1heCgwLGEuYzJwKHQucmFuZ2VbMV0pLWEuYzJw KHQucmFuZ2VbMF0pKX0pLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiBh LmMycCh0LnJhbmdlWzBdKX0pLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVy bi41KigxLXQudGhpY2tuZXNzKSpUfSkuYXR0cigiaGVpZ2h0IixmdW5jdGlv bih0KXtyZXR1cm4gdC50aGlja25lc3MqVH0pfXZhciBMPVtnXS5jb25jYXQo aC5nYXVnZS5zdGVwcyksQz1mLnNlbGVjdEFsbCgiZy5iZy1idWxsZXQiKS5k YXRhKEwpO0MuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJiZy1idWxs ZXQiLCEwKS5hcHBlbmQoInJlY3QiKSxDLnNlbGVjdCgicmVjdCIpLmNhbGwo RSkuY2FsbCh4KSxDLmV4aXQoKS5yZW1vdmUoKTt2YXIgUD1mLnNlbGVjdEFs bCgiZy52YWx1ZS1idWxsZXQiKS5kYXRhKFtoLmdhdWdlLmJhcl0pO1AuZW50 ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ2YWx1ZS1idWxsZXQiLCEwKS5h cHBlbmQoInJlY3QiKSxQLnNlbGVjdCgicmVjdCIpLmF0dHIoImhlaWdodCIs TSkuYXR0cigieSIsKFQtTSkvMikuY2FsbCh4KSx5KHcpP1Auc2VsZWN0KCJy ZWN0IikudHJhbnNpdGlvbigpLmR1cmF0aW9uKHcuZHVyYXRpb24pLmVhc2Uo dy5lYXNpbmcpLmVhY2goImVuZCIsZnVuY3Rpb24oKXtrJiZrKCl9KS5lYWNo KCJpbnRlcnJ1cHQiLGZ1bmN0aW9uKCl7ayYmaygpfSkuYXR0cigid2lkdGgi LE1hdGgubWF4KDAsYS5jMnAoTWF0aC5taW4oaC5nYXVnZS5heGlzLnJhbmdl WzFdLHJbMF0ueSkpKSk6UC5zZWxlY3QoInJlY3QiKS5hdHRyKCJ3aWR0aCIs Im51bWJlciI9PXR5cGVvZiByWzBdLnk/TWF0aC5tYXgoMCxhLmMycChNYXRo Lm1pbihoLmdhdWdlLmF4aXMucmFuZ2VbMV0sclswXS55KSkpOjApO1AuZXhp dCgpLnJlbW92ZSgpO3ZhciBPPXIuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJu IGguZ2F1Z2UudGhyZXNob2xkLnZhbHVlfSksej1mLnNlbGVjdEFsbCgiZy50 aHJlc2hvbGQtYnVsbGV0IikuZGF0YShPKTt6LmVudGVyKCkuYXBwZW5kKCJn IikuY2xhc3NlZCgidGhyZXNob2xkLWJ1bGxldCIsITApLmFwcGVuZCgibGlu ZSIpLHouc2VsZWN0KCJsaW5lIikuYXR0cigieDEiLGEuYzJwKGguZ2F1Z2Uu dGhyZXNob2xkLnZhbHVlKSkuYXR0cigieDIiLGEuYzJwKGguZ2F1Z2UudGhy ZXNob2xkLnZhbHVlKSkuYXR0cigieTEiLCgxLWguZ2F1Z2UudGhyZXNob2xk LnRoaWNrbmVzcykvMipUKS5hdHRyKCJ5MiIsKDEtKDEtaC5nYXVnZS50aHJl c2hvbGQudGhpY2tuZXNzKS8yKSpUKS5jYWxsKGQuc3Ryb2tlLGguZ2F1Z2Uu dGhyZXNob2xkLmxpbmUuY29sb3IpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGgu Z2F1Z2UudGhyZXNob2xkLmxpbmUud2lkdGgpLHouZXhpdCgpLnJlbW92ZSgp O3ZhciBJPWYuc2VsZWN0QWxsKCJnLmdhdWdlLW91dGxpbmUiKS5kYXRhKFt2 XSk7SS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImdhdWdlLW91dGxp bmUiLCEwKS5hcHBlbmQoInJlY3QiKSxJLnNlbGVjdCgicmVjdCIpLmNhbGwo RSkuY2FsbCh4KSxJLmV4aXQoKS5yZW1vdmUoKX0odCwwLGUse2dhdWdlOkcs bGF5ZXI6WSxzaXplOkQsZ2F1Z2VCZzpTLGdhdWdlT3V0bGluZTpFLHRyYW5z aXRpb25PcHRzOnIsb25Db21wbGV0ZTpmfSk7dmFyIFc9Qy5zZWxlY3RBbGwo InRleHQudGl0bGUiKS5kYXRhKGUpO1cuZXhpdCgpLnJlbW92ZSgpLFcuZW50 ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJ0aXRsZSIsITApLFcuYXR0 cigidGV4dC1hbmNob3IiLGZ1bmN0aW9uKCl7cmV0dXJuIHo/Zy5yaWdodDpn W0wudGl0bGUuYWxpZ25dfSkudGV4dChMLnRpdGxlLnRleHQpLmNhbGwocy5m b250LEwudGl0bGUuZm9udCkuY2FsbChjLmNvbnZlcnRUb1RzcGFucyx0KSxX LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oKXt2YXIgdCxlPUQubCtELncq dltMLnRpdGxlLmFsaWduXSxyPWwudGl0bGVQYWRkaW5nLG49cy5iQm94KFcu bm9kZSgpKTtpZihQKXtpZihPKWlmKEwuZ2F1Z2UuYXhpcy52aXNpYmxlKXQ9 cy5iQm94KEgubm9kZSgpKS50b3Atci1uLmJvdHRvbTtlbHNlIHQ9RC50K0Qu aC8yLUIvMi1uLmJvdHRvbS1yO3omJih0PU0tKG4udG9wK24uYm90dG9tKS8y LGU9RC5sLWwuYnVsbGV0UGFkZGluZypELncpfWVsc2UgdD1MLl9udW1iZXJz VG9wLXItbi5ib3R0b207cmV0dXJuIF8oZSx0KX0pfSl9fSx7Ii4uLy4uL2Nv bXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5n Ijo2MTMsIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjY4NiwiLi4vLi4v bGliIjo3MTcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhpc19kZWZhdWx0cyI6NzY3LCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjc3NywiLi4vLi4vcGxvdHMvY2FydGVz aWFuL3Bvc2l0aW9uX2RlZmF1bHRzIjo3ODAsIi4vY29uc3RhbnRzIjoxMDUy LGQzOjE2NX1dLDEwNTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0 ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5o b3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuLi9tZXNoM2QvYXR0cmlidXRlcyIp LG89dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vbGli L2V4dGVuZCIpLmV4dGVuZEZsYXQsbD10KCIuLi8uLi9wbG90X2FwaS9lZGl0 X3R5cGVzIikub3ZlcnJpZGVBbGw7dmFyIGM9ZS5leHBvcnRzPWwocyh7eDp7 dmFsVHlwZToiZGF0YV9hcnJheSJ9LHk6e3ZhbFR5cGU6ImRhdGFfYXJyYXki fSx6Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sdmFsdWU6e3ZhbFR5cGU6ImRh dGFfYXJyYXkifSxpc29taW46e3ZhbFR5cGU6Im51bWJlciJ9LGlzb21heDp7 dmFsVHlwZToibnVtYmVyIn0sc3VyZmFjZTp7c2hvdzp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMH0sY291bnQ6e3ZhbFR5cGU6ImludGVnZXIiLGRmbHQ6 MixtaW46MX0sZmlsbDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxk Zmx0OjF9LHBhdHRlcm46e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbIkEi LCJCIiwiQyIsIkQiLCJFIl0sZXh0cmFzOlsiYWxsIiwib2RkIiwiZXZlbiJd LGRmbHQ6ImFsbCJ9fSxzcGFjZWZyYW1lOntzaG93Ont2YWxUeXBlOiJib29s ZWFuIixkZmx0OiExfSxmaWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1h eDoxLGRmbHQ6LjE1fX0sc2xpY2VzOnt4OntzaG93Ont2YWxUeXBlOiJib29s ZWFuIixkZmx0OiExfSxsb2NhdGlvbnM6e3ZhbFR5cGU6ImRhdGFfYXJyYXki LGRmbHQ6W119LGZpbGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEs ZGZsdDoxfX0seTp7c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0s bG9jYXRpb25zOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxmaWxs Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX19LHo6e3No b3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGxvY2F0aW9uczp7dmFs VHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0sZmlsbDp7dmFsVHlwZToibnVt YmVyIixtaW46MCxtYXg6MSxkZmx0OjF9fX0sY2Fwczp7eDp7c2hvdzp7dmFs VHlwZToiYm9vbGVhbiIsZGZsdDohMH0sZmlsbDp7dmFsVHlwZToibnVtYmVy IixtaW46MCxtYXg6MSxkZmx0OjF9fSx5OntzaG93Ont2YWxUeXBlOiJib29s ZWFuIixkZmx0OiEwfSxmaWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1h eDoxLGRmbHQ6MX19LHo6e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6 ITB9LGZpbGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDox fX19LHRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixhcnJheU9rOiEw fSxob3ZlcnRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixhcnJheU9r OiEwfSxob3ZlcnRlbXBsYXRlOmEoKSxzaG93bGVnZW5kOnMoe30sby5zaG93 bGVnZW5kLHtkZmx0OiExfSl9LG4oIiIse2NvbG9yQXR0cjoiYHZhbHVlYCIs c2hvd1NjYWxlRGZsdDohMCxlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pLHtv cGFjaXR5Omkub3BhY2l0eSxsaWdodHBvc2l0aW9uOmkubGlnaHRwb3NpdGlv bixsaWdodGluZzppLmxpZ2h0aW5nLGZsYXRzaGFkaW5nOmkuZmxhdHNoYWRp bmcsY29udG91cjppLmNvbnRvdXIsaG92ZXJpbmZvOnMoe30sby5ob3Zlcmlu Zm8pfSksImNhbGMiLCJuZXN0ZWQiKTtjLmZsYXRzaGFkaW5nLmRmbHQ9ITAs Yy5saWdodGluZy5mYWNlbm9ybWFsc2Vwc2lsb24uZGZsdD0wLGMueC5lZGl0 VHlwZT1jLnkuZWRpdFR5cGU9Yy56LmVkaXRUeXBlPWMudmFsdWUuZWRpdFR5 cGU9ImNhbGMrY2xlYXJBeGlzVHlwZXMiLGMudHJhbnNmb3Jtcz12b2lkIDB9 LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5 OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90X2FwaS9lZGl0 X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4v Li4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9tZXNoM2Qv YXR0cmlidXRlcyI6MTA2MX1dLDEwNTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxl L2NhbGMiKSxhPXQoIi4uL3N0cmVhbXR1YmUvY2FsYyIpLnByb2Nlc3NHcmlk LGk9dCgiLi4vc3RyZWFtdHViZS9jYWxjIikuZmlsdGVyO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe2UuX2xlbj1NYXRoLm1pbihlLngubGVuZ3RoLGUueS5s ZW5ndGgsZS56Lmxlbmd0aCxlLnZhbHVlLmxlbmd0aCksZS5feD1pKGUueCxl Ll9sZW4pLGUuX3k9aShlLnksZS5fbGVuKSxlLl96PWkoZS56LGUuX2xlbiks ZS5fdmFsdWU9aShlLnZhbHVlLGUuX2xlbik7dmFyIHI9YShlKTtlLl9ncmlk RmlsbD1yLmZpbGwsZS5fWHM9ci5YcyxlLl9Zcz1yLllzLGUuX1pzPXIuWnMs ZS5fbGVuPXIubGVuO2Zvcih2YXIgbz0xLzAscz0tMS8wLGw9MDtsPGUuX2xl bjtsKyspe3ZhciBjPWUuX3ZhbHVlW2xdO289TWF0aC5taW4obyxjKSxzPU1h dGgubWF4KHMsYyl9ZS5fbWluVmFsdWVzPW8sZS5fbWF4VmFsdWVzPXMsZS5f dk1pbj12b2lkIDA9PT1lLmlzb21pbnx8bnVsbD09PWUuaXNvbWluP286ZS5p c29taW4sZS5fdk1heD12b2lkIDA9PT1lLmlzb21heHx8bnVsbD09PWUuaXNv bWluP3M6ZS5pc29tYXgsbih0LGUse3ZhbHM6W2UuX3ZNaW4sZS5fdk1heF0s Y29udGFpbmVyU3RyOiIiLGNMZXR0ZXI6ImMifSl9fSx7Ii4uLy4uL2NvbXBv bmVudHMvY29sb3JzY2FsZS9jYWxjIjo2MDAsIi4uL3N0cmVhbXR1YmUvY2Fs YyI6MTIyN31dLDEwNTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZ2wtbWVzaDNkIiksYT10KCIuLi8uLi9saWIvZ2xfZm9ybWF0 X2NvbG9yIikucGFyc2VDb2xvclNjYWxlLGk9dCgiLi4vLi4vbGliL3N0cjJy Z2JhcnJheSIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIiku ZXh0cmFjdE9wdHMscz10KCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiKSxsPWZ1 bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUubGVuZ3RoLTE7cj4wO3ItLSl7dmFy IG49TWF0aC5taW4oZVtyXSxlW3ItMV0pLGE9TWF0aC5tYXgoZVtyXSxlW3It MV0pO2lmKGE+biYmbjx0JiZ0PD1hKXJldHVybntpZDpyLGRpc3RSYXRpbzoo YS10KS8oYS1uKX19cmV0dXJue2lkOjAsZGlzdFJhdGlvOjB9fTtmdW5jdGlv biBjKHQsZSxyKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9cix0aGlzLm1lc2g9 ZSx0aGlzLm5hbWU9IiIsdGhpcy5kYXRhPW51bGwsdGhpcy5zaG93Q29udG91 cj0hMX12YXIgdT1jLnByb3RvdHlwZTt1LmhhbmRsZVBpY2s9ZnVuY3Rpb24o dCl7aWYodC5vYmplY3Q9PT10aGlzLm1lc2gpe3ZhciBlPXQuZGF0YS5pbmRl eCxyPXRoaXMuZGF0YS5fbWVzaFhbZV0sbj10aGlzLmRhdGEuX21lc2hZW2Vd LGE9dGhpcy5kYXRhLl9tZXNoWltlXSxpPXRoaXMuZGF0YS5fWXMubGVuZ3Ro LG89dGhpcy5kYXRhLl9acy5sZW5ndGgscz1sKHIsdGhpcy5kYXRhLl9Ycyku aWQsYz1sKG4sdGhpcy5kYXRhLl9ZcykuaWQsdT1sKGEsdGhpcy5kYXRhLl9a cykuaWQsaD10LmluZGV4PXUrbypjK28qaSpzO3QudHJhY2VDb29yZGluYXRl PVt0aGlzLmRhdGEuX21lc2hYW2hdLHRoaXMuZGF0YS5fbWVzaFlbaF0sdGhp cy5kYXRhLl9tZXNoWltoXSx0aGlzLmRhdGEuX3ZhbHVlW2hdXTt2YXIgZj10 aGlzLmRhdGEuaG92ZXJ0ZXh0fHx0aGlzLmRhdGEudGV4dDtyZXR1cm4gQXJy YXkuaXNBcnJheShmKSYmdm9pZCAwIT09ZltoXT90LnRleHRMYWJlbD1mW2hd OmYmJih0LnRleHRMYWJlbD1mKSwhMH19LHUudXBkYXRlPWZ1bmN0aW9uKHQp e3ZhciBlPXRoaXMuc2NlbmUscj1lLmZ1bGxTY2VuZUxheW91dDtmdW5jdGlv biBuKHQsZSxyLG4pe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g dC5kMmwoZSwwLG4pKnJ9KX10aGlzLmRhdGE9Zih0KTt2YXIgbD17cG9zaXRp b25zOnMobihyLnhheGlzLHQuX21lc2hYLGUuZGF0YVNjYWxlWzBdLHQueGNh bGVuZGFyKSxuKHIueWF4aXMsdC5fbWVzaFksZS5kYXRhU2NhbGVbMV0sdC55 Y2FsZW5kYXIpLG4oci56YXhpcyx0Ll9tZXNoWixlLmRhdGFTY2FsZVsyXSx0 LnpjYWxlbmRhcikpLGNlbGxzOnModC5fbWVzaEksdC5fbWVzaEosdC5fbWVz aEspLGxpZ2h0UG9zaXRpb246W3QubGlnaHRwb3NpdGlvbi54LHQubGlnaHRw b3NpdGlvbi55LHQubGlnaHRwb3NpdGlvbi56XSxhbWJpZW50OnQubGlnaHRp bmcuYW1iaWVudCxkaWZmdXNlOnQubGlnaHRpbmcuZGlmZnVzZSxzcGVjdWxh cjp0LmxpZ2h0aW5nLnNwZWN1bGFyLHJvdWdobmVzczp0LmxpZ2h0aW5nLnJv dWdobmVzcyxmcmVzbmVsOnQubGlnaHRpbmcuZnJlc25lbCx2ZXJ0ZXhOb3Jt YWxzRXBzaWxvbjp0LmxpZ2h0aW5nLnZlcnRleG5vcm1hbHNlcHNpbG9uLGZh Y2VOb3JtYWxzRXBzaWxvbjp0LmxpZ2h0aW5nLmZhY2Vub3JtYWxzZXBzaWxv bixvcGFjaXR5OnQub3BhY2l0eSxjb250b3VyRW5hYmxlOnQuY29udG91ci5z aG93LGNvbnRvdXJDb2xvcjppKHQuY29udG91ci5jb2xvcikuc2xpY2UoMCwz KSxjb250b3VyV2lkdGg6dC5jb250b3VyLndpZHRoLHVzZUZhY2V0Tm9ybWFs czp0LmZsYXRzaGFkaW5nfSxjPW8odCk7bC52ZXJ0ZXhJbnRlbnNpdHk9dC5f bWVzaEludGVuc2l0eSxsLnZlcnRleEludGVuc2l0eUJvdW5kcz1bYy5taW4s Yy5tYXhdLGwuY29sb3JtYXA9YSh0KSx0aGlzLm1lc2gudXBkYXRlKGwpfSx1 LmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUo dGhpcy5tZXNoKSx0aGlzLm1lc2guZGlzcG9zZSgpfTt2YXIgaD1bInh5eiIs Inh6eSIsInl4eiIsInl6eCIsInp4eSIsInp5eCJdO2Z1bmN0aW9uIGYodCl7 dC5fbWVzaEk9W10sdC5fbWVzaEo9W10sdC5fbWVzaEs9W107dmFyIGUscixu LGEsaSxvLHMsYz10LnN1cmZhY2Uuc2hvdyx1PXQuc3BhY2VmcmFtZS5zaG93 LGY9dC5zdXJmYWNlLmZpbGwscD10LnNwYWNlZnJhbWUuZmlsbCxkPSExLGc9 ITEsdj0wLG09dC5fWHMseT10Ll9Zcyx4PXQuX1pzLGI9bS5sZW5ndGgsXz15 Lmxlbmd0aCx3PXgubGVuZ3RoLGs9aC5pbmRleE9mKHQuX2dyaWRGaWxsLnJl cGxhY2UoLy0vZywiIikucmVwbGFjZSgvXCsvZywiIikpLFQ9ZnVuY3Rpb24o dCxlLHIpe3N3aXRjaChrKXtjYXNlIDU6cmV0dXJuIHIrdyplK3cqXyp0O2Nh c2UgNDpyZXR1cm4gcit3KnQrdypiKmU7Y2FzZSAzOnJldHVybiBlK18qcitf KncqdDtjYXNlIDI6cmV0dXJuIGUrXyp0K18qYipyO2Nhc2UgMTpyZXR1cm4g dCtiKnIrYip3KmU7ZGVmYXVsdDpyZXR1cm4gdCtiKmUrYipfKnJ9fSxNPXQu X21pblZhbHVlcyxBPXQuX21heFZhbHVlcyxTPXQuX3ZNaW4sRT10Ll92TWF4 O2Z1bmN0aW9uIEwodCxlLHMpe2Zvcih2YXIgbD1vLmxlbmd0aCxjPXI7Yzxs O2MrKylpZih0PT09bltjXSYmZT09PWFbY10mJnM9PT1pW2NdKXJldHVybiBj O3JldHVybi0xfWZ1bmN0aW9uIEMoKXtyPWV9ZnVuY3Rpb24gUCgpe249W10s YT1bXSxpPVtdLG89W10sZT0wLEMoKX1mdW5jdGlvbiBPKHQscixzLGwpe3Jl dHVybiBuLnB1c2godCksYS5wdXNoKHIpLGkucHVzaChzKSxvLnB1c2gobCks KytlLTF9ZnVuY3Rpb24geih0LGUscil7Zm9yKHZhciBuPVtdLGE9MDthPHQu bGVuZ3RoO2ErKyluW2FdPXRbYV0qKDEtcikrciplW2FdO3JldHVybiBufWZ1 bmN0aW9uIEkodCl7cz10fWZ1bmN0aW9uIEQodCxlKXtyZXR1cm4iYWxsIj09 PXR8fG51bGw9PT10fHx0LmluZGV4T2YoZSk+LTF9ZnVuY3Rpb24gUih0LGUp e3JldHVybiBudWxsPT09dD9lOnR9ZnVuY3Rpb24gRihlLHIsbil7QygpO3Zh ciBhLGksbyxsPVtyXSxjPVtuXTtpZihzPj0xKWw9W3JdLGM9W25dO2Vsc2Ug aWYocz4wKXt2YXIgdT1mdW5jdGlvbih0LGUpe3ZhciByPXRbMF0sbj10WzFd LGE9dFsyXSxpPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49W10sYT0wO2E8 dC5sZW5ndGg7YSsrKW5bYV09KHRbYV0rZVthXStyW2FdKS8zO3JldHVybiBu fShyLG4sYSksbz1NYXRoLnNxcnQoMS1zKSxsPXooaSxyLG8pLGM9eihpLG4s byksdT16KGksYSxvKSxoPWVbMF0sZj1lWzFdLHA9ZVsyXTtyZXR1cm57eHl6 djpbW3IsbixjXSxbYyxsLHJdLFtuLGEsdV0sW3UsYyxuXSxbYSxyLGxdLFts LHUsYV1dLGFiYzpbW2gsZiwtMV0sWy0xLC0xLGhdLFtmLHAsLTFdLFstMSwt MSxmXSxbcCxoLC0xXSxbLTEsLTEscF1dfX0ocixuKTtsPXUueHl6dixjPXUu YWJjfWZvcih2YXIgaD0wO2g8bC5sZW5ndGg7aCsrKXtyPWxbaF0sbj1jW2hd O2Zvcih2YXIgZj1bXSxwPTA7cDwzO3ArKyl7dmFyIGQ9cltwXVswXSxnPXJb cF1bMV0sbT1yW3BdWzJdLHk9cltwXVszXSx4PW5bcF0+LTE/bltwXTpMKGQs ZyxtKTtmW3BdPXg+LTE/eDpPKGQsZyxtLFIoZSx5KSl9YT1mWzBdLGk9Zlsx XSxvPWZbMl0sdC5fbWVzaEkucHVzaChhKSx0Ll9tZXNoSi5wdXNoKGkpLHQu X21lc2hLLnB1c2gobyksKyt2fX1mdW5jdGlvbiBCKHQsZSxyLG4pe3ZhciBh PXRbM107YTxyJiYoYT1yKSxhPm4mJihhPW4pO2Zvcih2YXIgaT0odFszXS1h KS8odFszXS1lWzNdKzFlLTkpLG89W10scz0wO3M8NDtzKyspb1tzXT0oMS1p KSp0W3NdK2kqZVtzXTtyZXR1cm4gb31mdW5jdGlvbiBOKHQsZSxyKXtyZXR1 cm4gdD49ZSYmdDw9cn1mdW5jdGlvbiBqKHQpe3ZhciBlPS4wMDEqKEUtUyk7 cmV0dXJuIHQ+PVMtZSYmdDw9RStlfWZ1bmN0aW9uIFYoZSl7Zm9yKHZhciBy PVtdLG49MDtuPDQ7bisrKXt2YXIgYT1lW25dO3IucHVzaChbdC5feFthXSx0 Ll95W2FdLHQuX3pbYV0sdC5fdmFsdWVbYV1dKX1yZXR1cm4gcn12YXIgVT0z O2Z1bmN0aW9uIHEodCxlLHIsbixhLGkpe2l8fChpPTEpLHI9Wy0xLC0xLC0x XTt2YXIgbz0hMSxzPVtOKGVbMF1bM10sbixhKSxOKGVbMV1bM10sbixhKSxO KGVbMl1bM10sbixhKV07aWYoIXNbMF0mJiFzWzFdJiYhc1syXSlyZXR1cm4h MTt2YXIgbD1mdW5jdGlvbih0LGUscil7cmV0dXJuIGooZVswXVszXSkmJmoo ZVsxXVszXSkmJmooZVsyXVszXSk/KEYodCxlLHIpLCEwKTppPFUmJnEodCxl LHIsUyxFLCsraSl9O2lmKHNbMF0mJnNbMV0mJnNbMl0pcmV0dXJuIGwodCxl LHIpfHxvO3ZhciBjPSExO3JldHVybltbMCwxLDJdLFsyLDAsMV0sWzEsMiww XV0uZm9yRWFjaChmdW5jdGlvbihpKXtpZihzW2lbMF1dJiZzW2lbMV1dJiYh c1tpWzJdXSl7dmFyIHU9ZVtpWzBdXSxoPWVbaVsxXV0sZj1lW2lbMl1dLHA9 QihmLHUsbixhKSxkPUIoZixoLG4sYSk7bz1sKHQsW2QscCx1XSxbLTEsLTEs cltpWzBdXV0pfHxvLG89bCh0LFt1LGgsZF0sW3JbaVswXV0scltpWzFdXSwt MV0pfHxvLGM9ITB9fSksYz9vOihbWzAsMSwyXSxbMSwyLDBdLFsyLDAsMV1d LmZvckVhY2goZnVuY3Rpb24oaSl7aWYoc1tpWzBdXSYmIXNbaVsxXV0mJiFz W2lbMl1dKXt2YXIgdT1lW2lbMF1dLGg9ZVtpWzFdXSxmPWVbaVsyXV0scD1C KGgsdSxuLGEpLGQ9QihmLHUsbixhKTtvPWwodCxbZCxwLHVdLFstMSwtMSxy W2lbMF1dXSl8fG8sYz0hMH19KSxvKX1mdW5jdGlvbiBIKHQsZSxyLG4pe3Zh ciBhPSExLGk9VihlKSxvPVtOKGlbMF1bM10scixuKSxOKGlbMV1bM10scixu KSxOKGlbMl1bM10scixuKSxOKGlbM11bM10scixuKV07aWYoIShvWzBdfHxv WzFdfHxvWzJdfHxvWzNdKSlyZXR1cm4gYTtpZihvWzBdJiZvWzFdJiZvWzJd JiZvWzNdKXJldHVybiBnJiYoYT1mdW5jdGlvbih0LGUscil7dmFyIG49ZnVu Y3Rpb24obixhLGkpe0YodCxbZVtuXSxlW2FdLGVbaV1dLFtyW25dLHJbYV0s cltpXV0pfTtuKDAsMSwyKSxuKDMsMCwxKSxuKDIsMywwKSxuKDEsMiwzKX0o dCxpLGUpfHxhKSxhO3ZhciBzPSExO3JldHVybltbMCwxLDIsM10sWzMsMCwx LDJdLFsyLDMsMCwxXSxbMSwyLDMsMF1dLmZvckVhY2goZnVuY3Rpb24obCl7 aWYob1tsWzBdXSYmb1tsWzFdXSYmb1tsWzJdXSYmIW9bbFszXV0pe3ZhciBj PWlbbFswXV0sdT1pW2xbMV1dLGg9aVtsWzJdXSxmPWlbbFszXV07aWYoZylh PUYodCxbYyx1LGhdLFtlW2xbMF1dLGVbbFsxXV0sZVtsWzJdXV0pfHxhO2Vs c2V7dmFyIHA9QihmLGMscixuKSxkPUIoZix1LHIsbiksdj1CKGYsaCxyLG4p O2E9RihudWxsLFtwLGQsdl0sWy0xLC0xLC0xXSl8fGF9cz0hMH19KSxzP2E6 KFtbMCwxLDIsM10sWzEsMiwzLDBdLFsyLDMsMCwxXSxbMywwLDEsMl0sWzAs MiwzLDFdLFsxLDMsMiwwXV0uZm9yRWFjaChmdW5jdGlvbihsKXtpZihvW2xb MF1dJiZvW2xbMV1dJiYhb1tsWzJdXSYmIW9bbFszXV0pe3ZhciBjPWlbbFsw XV0sdT1pW2xbMV1dLGg9aVtsWzJdXSxmPWlbbFszXV0scD1CKGgsYyxyLG4p LGQ9QihoLHUscixuKSx2PUIoZix1LHIsbiksbT1CKGYsYyxyLG4pO2c/KGE9 Rih0LFtjLG0scF0sW2VbbFswXV0sLTEsLTFdKXx8YSxhPUYodCxbdSxkLHZd LFtlW2xbMV1dLC0xLC0xXSl8fGEpOmE9ZnVuY3Rpb24odCxlLHIpe3ZhciBu PWZ1bmN0aW9uKG4sYSxpKXtGKHQsW2Vbbl0sZVthXSxlW2ldXSxbcltuXSxy W2FdLHJbaV1dKX07bigwLDEsMiksbigyLDMsMCl9KG51bGwsW3AsZCx2LG1d LFstMSwtMSwtMSwtMV0pfHxhLHM9ITB9fSkscz9hOihbWzAsMSwyLDNdLFsx LDIsMywwXSxbMiwzLDAsMV0sWzMsMCwxLDJdXS5mb3JFYWNoKGZ1bmN0aW9u KGwpe2lmKG9bbFswXV0mJiFvW2xbMV1dJiYhb1tsWzJdXSYmIW9bbFszXV0p e3ZhciBjPWlbbFswXV0sdT1pW2xbMV1dLGg9aVtsWzJdXSxmPWlbbFszXV0s cD1CKHUsYyxyLG4pLGQ9QihoLGMscixuKSx2PUIoZixjLHIsbik7Zz8oYT1G KHQsW2MscCxkXSxbZVtsWzBdXSwtMSwtMV0pfHxhLGE9Rih0LFtjLGQsdl0s W2VbbFswXV0sLTEsLTFdKXx8YSxhPUYodCxbYyx2LHBdLFtlW2xbMF1dLC0x LC0xXSl8fGEpOmE9RihudWxsLFtwLGQsdl0sWy0xLC0xLC0xXSl8fGEscz0h MH19KSxhKSl9ZnVuY3Rpb24gRyh0LGUscixuLGEsaSxvLHMsbCxjLHUpe3Zh ciBoPSExO3JldHVybiBkJiYoRCh0LCJBIikmJihoPUgobnVsbCxbZSxyLG4s aV0sYyx1KXx8aCksRCh0LCJCIikmJihoPUgobnVsbCxbcixuLGEsbF0sYyx1 KXx8aCksRCh0LCJDIikmJihoPUgobnVsbCxbcixpLG8sbF0sYyx1KXx8aCks RCh0LCJEIikmJihoPUgobnVsbCxbbixpLHMsbF0sYyx1KXx8aCksRCh0LCJF IikmJihoPUgobnVsbCxbcixuLGksbF0sYyx1KXx8aCkpLGcmJihoPUgodCxb cixuLGksbF0sYyx1KXx8aCksaH1mdW5jdGlvbiBZKHQsZSxyLG4sYSxpLG8s cyl7cmV0dXJuWyEwPT09c1swXXx8cSh0LFYoW2UscixuXSksW2UscixuXSxp LG8pLCEwPT09c1sxXXx8cSh0LFYoW24sYSxlXSksW24sYSxlXSxpLG8pXX1m dW5jdGlvbiBXKHQsZSxyLG4sYSxpLG8scyxsKXtyZXR1cm4gcz9ZKHQsZSxy LGEsbixpLG8sbCk6WSh0LHIsYSxuLGUsaSxvLGwpfWZ1bmN0aW9uIFgodCxl LHIsbixhLGksbyl7dmFyIHMsbCxjLHUsaD0hMSxmPWZ1bmN0aW9uKCl7aD1x KHQsW3MsbCxjXSxbLTEsLTEsLTFdLGEsaSl8fGgsaD1xKHQsW2MsdSxzXSxb LTEsLTEsLTFdLGEsaSl8fGh9LHA9b1swXSxkPW9bMV0sZz1vWzJdO3JldHVy biBwJiYocz16KFYoW1QoZSxyLTAsbi0wKV0pWzBdLFYoW1QoZS0xLHItMCxu LTApXSlbMF0scCksbD16KFYoW1QoZSxyLTAsbi0xKV0pWzBdLFYoW1QoZS0x LHItMCxuLTEpXSlbMF0scCksYz16KFYoW1QoZSxyLTEsbi0xKV0pWzBdLFYo W1QoZS0xLHItMSxuLTEpXSlbMF0scCksdT16KFYoW1QoZSxyLTEsbi0wKV0p WzBdLFYoW1QoZS0xLHItMSxuLTApXSlbMF0scCksZigpKSxkJiYocz16KFYo W1QoZS0wLHIsbi0wKV0pWzBdLFYoW1QoZS0wLHItMSxuLTApXSlbMF0sZCks bD16KFYoW1QoZS0wLHIsbi0xKV0pWzBdLFYoW1QoZS0wLHItMSxuLTEpXSlb MF0sZCksYz16KFYoW1QoZS0xLHIsbi0xKV0pWzBdLFYoW1QoZS0xLHItMSxu LTEpXSlbMF0sZCksdT16KFYoW1QoZS0xLHIsbi0wKV0pWzBdLFYoW1QoZS0x LHItMSxuLTApXSlbMF0sZCksZigpKSxnJiYocz16KFYoW1QoZS0wLHItMCxu KV0pWzBdLFYoW1QoZS0wLHItMCxuLTEpXSlbMF0sZyksbD16KFYoW1QoZS0w LHItMSxuKV0pWzBdLFYoW1QoZS0wLHItMSxuLTEpXSlbMF0sZyksYz16KFYo W1QoZS0xLHItMSxuKV0pWzBdLFYoW1QoZS0xLHItMSxuLTEpXSlbMF0sZyks dT16KFYoW1QoZS0xLHItMCxuKV0pWzBdLFYoW1QoZS0xLHItMCxuLTEpXSlb MF0sZyksZigpKSxofWZ1bmN0aW9uIFoodCxlLHIsbixhLGksbyxzLGwsYyx1 LGgpe3ZhciBmPXQ7cmV0dXJuIGg/KGQmJiJldmVuIj09PXQmJihmPW51bGwp LEcoZixlLHIsbixhLGksbyxzLGwsYyx1KSk6KGQmJiJvZGQiPT09dCYmKGY9 bnVsbCksRyhmLGwscyxvLGksYSxuLHIsZSxjLHUpKX1mdW5jdGlvbiBKKHQs ZSxyLG4sYSl7Zm9yKHZhciBpPVtdLG89MCxzPTA7czxlLmxlbmd0aDtzKysp Zm9yKHZhciBsPWVbc10sYz0xO2M8dztjKyspZm9yKHZhciB1PTE7dTxfO3Ur KylpLnB1c2goVyh0LFQobCx1LTEsYy0xKSxUKGwsdS0xLGMpLFQobCx1LGMt MSksVChsLHUsYykscixuLChsK3UrYyklMixhJiZhW29dP2Fbb106W10pKSxv Kys7cmV0dXJuIGl9ZnVuY3Rpb24gSyh0LGUscixuLGEpe2Zvcih2YXIgaT1b XSxvPTAscz0wO3M8ZS5sZW5ndGg7cysrKWZvcih2YXIgbD1lW3NdLGM9MTtj PGI7YysrKWZvcih2YXIgdT0xO3U8dzt1KyspaS5wdXNoKFcodCxUKGMtMSxs LHUtMSksVChjLGwsdS0xKSxUKGMtMSxsLHUpLFQoYyxsLHUpLHIsbiwoYyts K3UpJTIsYSYmYVtvXT9hW29dOltdKSksbysrO3JldHVybiBpfWZ1bmN0aW9u IFEodCxlLHIsbixhKXtmb3IodmFyIGk9W10sbz0wLHM9MDtzPGUubGVuZ3Ro O3MrKylmb3IodmFyIGw9ZVtzXSxjPTE7YzxfO2MrKylmb3IodmFyIHU9MTt1 PGI7dSsrKWkucHVzaChXKHQsVCh1LTEsYy0xLGwpLFQodS0xLGMsbCksVCh1 LGMtMSxsKSxUKHUsYyxsKSxyLG4sKHUrYytsKSUyLGEmJmFbb10/YVtvXTpb XSkpLG8rKztyZXR1cm4gaX1mdW5jdGlvbiAkKHQsZSxyKXtmb3IodmFyIG49 MTtuPHc7bisrKWZvcih2YXIgYT0xO2E8XzthKyspZm9yKHZhciBpPTE7aTxi O2krKylaKHQsVChpLTEsYS0xLG4tMSksVChpLTEsYS0xLG4pLFQoaS0xLGEs bi0xKSxUKGktMSxhLG4pLFQoaSxhLTEsbi0xKSxUKGksYS0xLG4pLFQoaSxh LG4tMSksVChpLGEsbiksZSxyLChpK2ErbiklMil9ZnVuY3Rpb24gdHQodCxl LHIpe2Q9ITAsJCh0LGUsciksZD0hMX1mdW5jdGlvbiBldCh0LGUscixuLGEs aSl7Zm9yKHZhciBvPVtdLHM9MCxsPTA7bDxlLmxlbmd0aDtsKyspZm9yKHZh ciBjPWVbbF0sdT0xO3U8dzt1KyspZm9yKHZhciBoPTE7aDxfO2grKylvLnB1 c2goWCh0LGMsaCx1LHIsbixhW2xdLGkmJmlbc10mJmlbc10pKSxzKys7cmV0 dXJuIG99ZnVuY3Rpb24gcnQodCxlLHIsbixhLGkpe2Zvcih2YXIgbz1bXSxz PTAsbD0wO2w8ZS5sZW5ndGg7bCsrKWZvcih2YXIgYz1lW2xdLHU9MTt1PGI7 dSsrKWZvcih2YXIgaD0xO2g8dztoKyspby5wdXNoKFgodCx1LGMsaCxyLG4s YVtsXSxpJiZpW3NdJiZpW3NdKSkscysrO3JldHVybiBvfWZ1bmN0aW9uIG50 KHQsZSxyLG4sYSxpKXtmb3IodmFyIG89W10scz0wLGw9MDtsPGUubGVuZ3Ro O2wrKylmb3IodmFyIGM9ZVtsXSx1PTE7dTxfO3UrKylmb3IodmFyIGg9MTto PGI7aCsrKW8ucHVzaChYKHQsaCx1LGMscixuLGFbbF0saSYmaVtzXSYmaVtz XSkpLHMrKztyZXR1cm4gb31mdW5jdGlvbiBhdCh0LGUpe2Zvcih2YXIgcj1b XSxuPXQ7bjxlO24rKylyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIGZ1bmN0 aW9uKCl7aWYoUCgpLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxiO2UrKylm b3IodmFyIHI9MDtyPF87cisrKWZvcih2YXIgbj0wO248dztuKyspe3ZhciBh PVQoZSxyLG4pO08odC5feFthXSx0Ll95W2FdLHQuX3pbYV0sdC5fdmFsdWVb YV0pfX0oKSx1JiZwJiYoSShwKSxnPSEwLCQobnVsbCxTLEUpLGc9ITEpLGMm JmYpe0koZik7Zm9yKHZhciBlPXQuc3VyZmFjZS5wYXR0ZXJuLHI9dC5zdXJm YWNlLmNvdW50LHM9MDtzPHI7cysrKXt2YXIgaD0xPT09cj8uNTpzLyhyLTEp LGQ9KDEtaCkqUytoKkUsaz1NYXRoLmFicyhkLU0pPk1hdGguYWJzKGQtQSk/ W00sZF06W2QsQV07dHQoZSxrWzBdLGtbMV0pfX12YXIgTD1bW01hdGgubWlu KFMsQSksTWF0aC5tYXgoUyxBKV0sW01hdGgubWluKE0sRSksTWF0aC5tYXgo TSxFKV1dO1sieCIsInkiLCJ6Il0uZm9yRWFjaChmdW5jdGlvbihlKXtmb3Io dmFyIHI9W10sbj0wO248TC5sZW5ndGg7bisrKXt2YXIgYT0wLGk9TFtuXVsw XSxvPUxbbl1bMV0scz10LnNsaWNlc1tlXTtpZihzLnNob3cmJnMuZmlsbCl7 SShzLmZpbGwpO3ZhciBjPVtdLHU9W10saD1bXTtpZihzLmxvY2F0aW9ucy5s ZW5ndGgpZm9yKHZhciBmPTA7ZjxzLmxvY2F0aW9ucy5sZW5ndGg7ZisrKXt2 YXIgcD1sKHMubG9jYXRpb25zW2ZdLCJ4Ij09PWU/bToieSI9PT1lP3k6eCk7 MD09PXAuZGlzdFJhdGlvP2MucHVzaChwLmlkKTpwLmlkPjAmJih1LnB1c2go cC5pZCksIngiPT09ZT9oLnB1c2goW3AuZGlzdFJhdGlvLDAsMF0pOiJ5Ij09 PWU/aC5wdXNoKFswLHAuZGlzdFJhdGlvLDBdKTpoLnB1c2goWzAsMCxwLmRp c3RSYXRpb10pKX1lbHNlIGM9YXQoMSwieCI9PT1lP2ItMToieSI9PT1lP18t MTp3LTEpO3UubGVuZ3RoPjAmJihyW2FdPSJ4Ij09PWU/ZXQobnVsbCx1LGks byxoLHJbYV0pOiJ5Ij09PWU/cnQobnVsbCx1LGksbyxoLHJbYV0pOm50KG51 bGwsdSxpLG8saCxyW2FdKSxhKyspLGMubGVuZ3RoPjAmJihyW2FdPSJ4Ij09 PWU/SihudWxsLGMsaSxvLHJbYV0pOiJ5Ij09PWU/SyhudWxsLGMsaSxvLHJb YV0pOlEobnVsbCxjLGksbyxyW2FdKSxhKyspfXZhciBkPXQuY2Fwc1tlXTtk LnNob3cmJmQuZmlsbCYmKEkoZC5maWxsKSxyW2FdPSJ4Ij09PWU/SihudWxs LFswLGItMV0saSxvLHJbYV0pOiJ5Ij09PWU/SyhudWxsLFswLF8tMV0saSxv LHJbYV0pOlEobnVsbCxbMCx3LTFdLGksbyxyW2FdKSxhKyspfX0pLDA9PT12 JiZQKCksdC5fbWVzaFg9bix0Ll9tZXNoWT1hLHQuX21lc2haPWksdC5fbWVz aEludGVuc2l0eT1vLHQuX1hzPW0sdC5fWXM9eSx0Ll9acz14fSgpLHR9ZS5l eHBvcnRzPXtmaW5kTmVhcmVzdE9uQXhpczpsLGdlbmVyYXRlSXNvTWVzaGVz OmYsY3JlYXRlSXNvc3VyZmFjZVRyYWNlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9 dC5nbHBsb3QuZ2wsYT1uKHtnbDpyfSksaT1uZXcgYyh0LGEsZS51aWQpO3Jl dHVybiBhLl90cmFjZT1pLGkudXBkYXRlKGUpLHQuZ2xwbG90LmFkZChhKSxp fX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4u L2xpYi9nbF9mb3JtYXRfY29sb3IiOjcxNCwiLi4vLi4vbGliL3N0cjJyZ2Jh cnJheSI6NzQwLCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiOjgxNiwiZ2wtbWVz aDNkIjoyODN9XSwxMDU5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxp PXQoIi4vYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xv cnNjYWxlL2RlZmF1bHRzIik7ZnVuY3Rpb24gcyh0LGUscixuLGkpe3ZhciBz PWkoImlzb21pbiIpLGw9aSgiaXNvbWF4Iik7bnVsbCE9bCYmbnVsbCE9cyYm cz5sJiYoZS5pc29taW49bnVsbCxlLmlzb21heD1udWxsKTt2YXIgYz1pKCJ4 IiksdT1pKCJ5IiksaD1pKCJ6IiksZj1pKCJ2YWx1ZSIpO2MmJmMubGVuZ3Ro JiZ1JiZ1Lmxlbmd0aCYmaCYmaC5sZW5ndGgmJmYmJmYubGVuZ3RoPyhhLmdl dENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlVHJhY2VEZWZh dWx0cyIpKHQsZSxbIngiLCJ5IiwieiJdLG4pLFsieCIsInkiLCJ6Il0uZm9y RWFjaChmdW5jdGlvbih0KXt2YXIgZT0iY2Fwcy4iK3Q7aShlKyIuc2hvdyIp JiZpKGUrIi5maWxsIik7dmFyIHI9InNsaWNlcy4iK3Q7aShyKyIuc2hvdyIp JiYoaShyKyIuZmlsbCIpLGkocisiLmxvY2F0aW9ucyIpKX0pLGkoInNwYWNl ZnJhbWUuc2hvdyIpJiZpKCJzcGFjZWZyYW1lLmZpbGwiKSxpKCJzdXJmYWNl LnNob3ciKSYmKGkoInN1cmZhY2UuY291bnQiKSxpKCJzdXJmYWNlLmZpbGwi KSxpKCJzdXJmYWNlLnBhdHRlcm4iKSksaSgiY29udG91ci5zaG93IikmJihp KCJjb250b3VyLmNvbG9yIiksaSgiY29udG91ci53aWR0aCIpKSxbInRleHQi LCJob3ZlcnRleHQiLCJob3ZlcnRlbXBsYXRlIiwibGlnaHRpbmcuYW1iaWVu dCIsImxpZ2h0aW5nLmRpZmZ1c2UiLCJsaWdodGluZy5zcGVjdWxhciIsImxp Z2h0aW5nLnJvdWdobmVzcyIsImxpZ2h0aW5nLmZyZXNuZWwiLCJsaWdodGlu Zy52ZXJ0ZXhub3JtYWxzZXBzaWxvbiIsImxpZ2h0aW5nLmZhY2Vub3JtYWxz ZXBzaWxvbiIsImxpZ2h0cG9zaXRpb24ueCIsImxpZ2h0cG9zaXRpb24ueSIs ImxpZ2h0cG9zaXRpb24ueiIsImZsYXRzaGFkaW5nIiwib3BhY2l0eSJdLmZv ckVhY2goZnVuY3Rpb24odCl7aSh0KX0pLG8odCxlLG4saSx7cHJlZml4OiIi LGNMZXR0ZXI6ImMifSksZS5fbGVuZ3RoPW51bGwpOmUudmlzaWJsZT0hMX1l LmV4cG9ydHM9e3N1cHBseURlZmF1bHRzOmZ1bmN0aW9uKHQsZSxyLGEpe3Mo dCxlLDAsYSxmdW5jdGlvbihyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsaSxy LGEpfSl9LHN1cHBseUlzb0RlZmF1bHRzOnN9fSx7Ii4uLy4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9saWIiOjcxNywi Li4vLi4vcmVnaXN0cnkiOjg0NiwiLi9hdHRyaWJ1dGVzIjoxMDU2fV0sMTA2 MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0 dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgi Li9kZWZhdWx0cyIpLnN1cHBseURlZmF1bHRzLGNhbGM6dCgiLi9jYWxjIiks Y29sb3JiYXI6e21pbjoiY21pbiIsbWF4OiJjbWF4In0scGxvdDp0KCIuL2Nv bnZlcnQiKS5jcmVhdGVJc29zdXJmYWNlVHJhY2UsbW9kdWxlVHlwZToidHJh Y2UiLG5hbWU6Imlzb3N1cmZhY2UiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4u L3Bsb3RzL2dsM2QiKSxjYXRlZ29yaWVzOlsiZ2wzZCIsInNob3dMZWdlbmQi XSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9nbDNkIjo4MDUsIi4vYXR0cmli dXRlcyI6MTA1NiwiLi9jYWxjIjoxMDU3LCIuL2NvbnZlcnQiOjEwNTgsIi4v ZGVmYXVsdHMiOjEwNTl9XSwxMDYxOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9h dHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1 dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vc3VyZmFjZS9hdHRy aWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIu Li8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9cyh7eDp7 dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlz VHlwZXMifSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2Fs YytjbGVhckF4aXNUeXBlcyJ9LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVk aXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0saTp7dmFsVHlwZToiZGF0 YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxqOnt2YWxUeXBlOiJkYXRhX2Fy cmF5IixlZGl0VHlwZToiY2FsYyJ9LGs6e3ZhbFR5cGU6ImRhdGFfYXJyYXki LGVkaXRUeXBlOiJjYWxjIn0sdGV4dDp7dmFsVHlwZToic3RyaW5nIixkZmx0 OiIiLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSxob3ZlcnRleHQ6e3Zh bFR5cGU6InN0cmluZyIsZGZsdDoiIixhcnJheU9rOiEwLGVkaXRUeXBlOiJj YWxjIn0saG92ZXJ0ZW1wbGF0ZTphKHtlZGl0VHlwZToiY2FsYyJ9KSxkZWxh dW5heWF4aXM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIngiLCJ5 IiwieiJdLGRmbHQ6InoiLGVkaXRUeXBlOiJjYWxjIn0sYWxwaGFodWxsOnt2 YWxUeXBlOiJudW1iZXIiLGRmbHQ6LTEsZWRpdFR5cGU6ImNhbGMifSxpbnRl bnNpdHk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0s aW50ZW5zaXR5bW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsi dmVydGV4IiwiY2VsbCJdLGRmbHQ6InZlcnRleCIsZWRpdFR5cGU6ImNhbGMi fSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJjYWxjIn0sdmVy dGV4Y29sb3I6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxj In0sZmFjZWNvbG9yOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToi Y2FsYyJ9LHRyYW5zZm9ybXM6dm9pZCAwfSxuKCIiLHtjb2xvckF0dHI6ImBp bnRlbnNpdHlgIixzaG93U2NhbGVEZmx0OiEwLGVkaXRUeXBlT3ZlcnJpZGU6 ImNhbGMifSkse29wYWNpdHk6aS5vcGFjaXR5LGZsYXRzaGFkaW5nOnt2YWxU eXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJjYWxjIn0sY29udG91 cjp7c2hvdzpzKHt9LGkuY29udG91cnMueC5zaG93LHt9KSxjb2xvcjppLmNv bnRvdXJzLnguY29sb3Isd2lkdGg6aS5jb250b3Vycy54LndpZHRoLGVkaXRU eXBlOiJjYWxjIn0sbGlnaHRwb3NpdGlvbjp7eDpzKHt9LGkubGlnaHRwb3Np dGlvbi54LHtkZmx0OjFlNX0pLHk6cyh7fSxpLmxpZ2h0cG9zaXRpb24ueSx7 ZGZsdDoxZTV9KSx6OnMoe30saS5saWdodHBvc2l0aW9uLnose2RmbHQ6MH0p LGVkaXRUeXBlOiJjYWxjIn0sbGlnaHRpbmc6cyh7dmVydGV4bm9ybWFsc2Vw c2lsb246e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxZS0x MixlZGl0VHlwZToiY2FsYyJ9LGZhY2Vub3JtYWxzZXBzaWxvbjp7dmFsVHlw ZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjFlLTYsZWRpdFR5cGU6ImNh bGMifSxlZGl0VHlwZToiY2FsYyJ9LGkubGlnaHRpbmcpLGhvdmVyaW5mbzpz KHt9LG8uaG92ZXJpbmZvLHtlZGl0VHlwZToiY2FsYyJ9KSxzaG93bGVnZW5k OnMoe30sby5zaG93bGVnZW5kLHtkZmx0OiExfSl9KX0seyIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIv ZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjc2MiwiLi4v Li4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9zdXJmYWNl L2F0dHJpYnV0ZXMiOjEyNDN9XSwxMDYyOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2Fs ZS9jYWxjIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZS5pbnRlbnNpdHkm Jm4odCxlLHt2YWxzOmUuaW50ZW5zaXR5LGNvbnRhaW5lclN0cjoiIixjTGV0 dGVyOiJjIn0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2Fs YyI6NjAwfV0sMTA2MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJnbC1tZXNoM2QiKSxhPXQoImRlbGF1bmF5LXRyaWFuZ3VsYXRl IiksaT10KCJhbHBoYS1zaGFwZSIpLG89dCgiY29udmV4LWh1bGwiKSxzPXQo Ii4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiKS5wYXJzZUNvbG9yU2NhbGUs bD10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5IiksYz10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUiKS5leHRyYWN0T3B0cyx1PXQoIi4uLy4uL3Bs b3RzL2dsM2QvemlwMyIpO2Z1bmN0aW9uIGgodCxlLHIpe3RoaXMuc2NlbmU9 dCx0aGlzLnVpZD1yLHRoaXMubWVzaD1lLHRoaXMubmFtZT0iIix0aGlzLmNv bG9yPSIjZmZmIix0aGlzLmRhdGE9bnVsbCx0aGlzLnNob3dDb250b3VyPSEx fXZhciBmPWgucHJvdG90eXBlO2Z1bmN0aW9uIHAodCl7Zm9yKHZhciBlPVtd LHI9dC5sZW5ndGgsbj0wO248cjtuKyspZVtuXT1sKHRbbl0pO3JldHVybiBl fWZ1bmN0aW9uIGQodCxlLHIsbil7Zm9yKHZhciBhPVtdLGk9ZS5sZW5ndGgs bz0wO288aTtvKyspYVtvXT10LmQybChlW29dLDAsbikqcjtyZXR1cm4gYX1m dW5jdGlvbiBnKHQpe2Zvcih2YXIgZT1bXSxyPXQubGVuZ3RoLG49MDtuPHI7 bisrKWVbbl09TWF0aC5yb3VuZCh0W25dKTtyZXR1cm4gZX1mdW5jdGlvbiB2 KHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49MDtuPHI7bisrKWlmKHRbbl08 PS0uNXx8dFtuXT49ZS0uNSlyZXR1cm4hMTtyZXR1cm4hMH1mLmhhbmRsZVBp Y2s9ZnVuY3Rpb24odCl7aWYodC5vYmplY3Q9PT10aGlzLm1lc2gpe3ZhciBl PXQuaW5kZXg9dC5kYXRhLmluZGV4O3QuZGF0YS5fY2VsbENlbnRlcj90LnRy YWNlQ29vcmRpbmF0ZT10LmRhdGEuZGF0YUNvb3JkaW5hdGU6dC50cmFjZUNv b3JkaW5hdGU9W3RoaXMuZGF0YS54W2VdLHRoaXMuZGF0YS55W2VdLHRoaXMu ZGF0YS56W2VdXTt2YXIgcj10aGlzLmRhdGEuaG92ZXJ0ZXh0fHx0aGlzLmRh dGEudGV4dDtyZXR1cm4gQXJyYXkuaXNBcnJheShyKSYmdm9pZCAwIT09cltl XT90LnRleHRMYWJlbD1yW2VdOnImJih0LnRleHRMYWJlbD1yKSwhMH19LGYu dXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2NlbmUscj1lLmZ1bGxT Y2VuZUxheW91dDt0aGlzLmRhdGE9dDt2YXIgbixoPXQueC5sZW5ndGgsZj11 KGQoci54YXhpcyx0LngsZS5kYXRhU2NhbGVbMF0sdC54Y2FsZW5kYXIpLGQo ci55YXhpcyx0LnksZS5kYXRhU2NhbGVbMV0sdC55Y2FsZW5kYXIpLGQoci56 YXhpcyx0LnosZS5kYXRhU2NhbGVbMl0sdC56Y2FsZW5kYXIpKTtpZih0Lmkm JnQuaiYmdC5rKXtpZih0LmkubGVuZ3RoIT09dC5qLmxlbmd0aHx8dC5qLmxl bmd0aCE9PXQuay5sZW5ndGh8fCF2KHQuaSxoKXx8IXYodC5qLGgpfHwhdih0 LmssaCkpcmV0dXJuO249dShnKHQuaSksZyh0LmopLGcodC5rKSl9ZWxzZSBu PTA9PT10LmFscGhhaHVsbD9vKGYpOnQuYWxwaGFodWxsPjA/aSh0LmFscGhh aHVsbCxmKTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bIngiLCJ5IiwieiJd LmluZGV4T2YodCksbj1bXSxpPWUubGVuZ3RoLG89MDtvPGk7bysrKW5bb109 W2Vbb11bKHIrMSklM10sZVtvXVsocisyKSUzXV07cmV0dXJuIGEobil9KHQu ZGVsYXVuYXlheGlzLGYpO3ZhciBtPXtwb3NpdGlvbnM6ZixjZWxsczpuLGxp Z2h0UG9zaXRpb246W3QubGlnaHRwb3NpdGlvbi54LHQubGlnaHRwb3NpdGlv bi55LHQubGlnaHRwb3NpdGlvbi56XSxhbWJpZW50OnQubGlnaHRpbmcuYW1i aWVudCxkaWZmdXNlOnQubGlnaHRpbmcuZGlmZnVzZSxzcGVjdWxhcjp0Lmxp Z2h0aW5nLnNwZWN1bGFyLHJvdWdobmVzczp0LmxpZ2h0aW5nLnJvdWdobmVz cyxmcmVzbmVsOnQubGlnaHRpbmcuZnJlc25lbCx2ZXJ0ZXhOb3JtYWxzRXBz aWxvbjp0LmxpZ2h0aW5nLnZlcnRleG5vcm1hbHNlcHNpbG9uLGZhY2VOb3Jt YWxzRXBzaWxvbjp0LmxpZ2h0aW5nLmZhY2Vub3JtYWxzZXBzaWxvbixvcGFj aXR5OnQub3BhY2l0eSxjb250b3VyRW5hYmxlOnQuY29udG91ci5zaG93LGNv bnRvdXJDb2xvcjpsKHQuY29udG91ci5jb2xvcikuc2xpY2UoMCwzKSxjb250 b3VyV2lkdGg6dC5jb250b3VyLndpZHRoLHVzZUZhY2V0Tm9ybWFsczp0LmZs YXRzaGFkaW5nfTtpZih0LmludGVuc2l0eSl7dmFyIHk9Yyh0KTt0aGlzLmNv bG9yPSIjZmZmIjt2YXIgeD10LmludGVuc2l0eW1vZGU7bVt4KyJJbnRlbnNp dHkiXT10LmludGVuc2l0eSxtW3grIkludGVuc2l0eUJvdW5kcyJdPVt5Lm1p bix5Lm1heF0sbS5jb2xvcm1hcD1zKHQpfWVsc2UgdC52ZXJ0ZXhjb2xvcj8o dGhpcy5jb2xvcj10LnZlcnRleGNvbG9yWzBdLG0udmVydGV4Q29sb3JzPXAo dC52ZXJ0ZXhjb2xvcikpOnQuZmFjZWNvbG9yPyh0aGlzLmNvbG9yPXQuZmFj ZWNvbG9yWzBdLG0uY2VsbENvbG9ycz1wKHQuZmFjZWNvbG9yKSk6KHRoaXMu Y29sb3I9dC5jb2xvcixtLm1lc2hDb2xvcj1sKHQuY29sb3IpKTt0aGlzLm1l c2gudXBkYXRlKG0pfSxmLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNjZW5l LmdscGxvdC5yZW1vdmUodGhpcy5tZXNoKSx0aGlzLm1lc2guZGlzcG9zZSgp fSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmdscGxvdC5nbCxh PW4oe2dsOnJ9KSxpPW5ldyBoKHQsYSxlLnVpZCk7cmV0dXJuIGEuX3RyYWNl PWksaS51cGRhdGUoZSksdC5nbHBsb3QuYWRkKGEpLGl9fSx7Ii4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZSI6NjA0LCIuLi8uLi9saWIvZ2xfZm9ybWF0 X2NvbG9yIjo3MTQsIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiOjc0MCwiLi4v Li4vcGxvdHMvZ2wzZC96aXAzIjo4MTYsImFscGhhLXNoYXBlIjo2NywiY29u dmV4LWh1bGwiOjEzMiwiZGVsYXVuYXktdHJpYW5ndWxhdGUiOjE2NywiZ2wt bWVzaDNkIjoyODN9XSwxMDY0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9saWIi KSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIp LG89dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy LHMpe2Z1bmN0aW9uIGwocixuKXtyZXR1cm4gYS5jb2VyY2UodCxlLG8scixu KX1mdW5jdGlvbiBjKHQpe3ZhciBlPXQubWFwKGZ1bmN0aW9uKHQpe3ZhciBl PWwodCk7cmV0dXJuIGUmJmEuaXNBcnJheU9yVHlwZWRBcnJheShlKT9lOm51 bGx9KTtyZXR1cm4gZS5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5s ZW5ndGg9PT1lWzBdLmxlbmd0aH0pJiZlfWMoWyJ4IiwieSIsInoiXSk/KGMo WyJpIiwiaiIsImsiXSksKCFlLml8fGUuaiYmZS5rKSYmKCFlLmp8fGUuayYm ZS5pKSYmKCFlLmt8fGUuaSYmZS5qKT8obi5nZXRDb21wb25lbnRNZXRob2Qo ImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUsWyJ4Iiwi eSIsInoiXSxzKSxbImxpZ2h0aW5nLmFtYmllbnQiLCJsaWdodGluZy5kaWZm dXNlIiwibGlnaHRpbmcuc3BlY3VsYXIiLCJsaWdodGluZy5yb3VnaG5lc3Mi LCJsaWdodGluZy5mcmVzbmVsIiwibGlnaHRpbmcudmVydGV4bm9ybWFsc2Vw c2lsb24iLCJsaWdodGluZy5mYWNlbm9ybWFsc2Vwc2lsb24iLCJsaWdodHBv c2l0aW9uLngiLCJsaWdodHBvc2l0aW9uLnkiLCJsaWdodHBvc2l0aW9uLnoi LCJmbGF0c2hhZGluZyIsImFscGhhaHVsbCIsImRlbGF1bmF5YXhpcyIsIm9w YWNpdHkiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2wodCl9KSxsKCJjb250b3Vy LnNob3ciKSYmKGwoImNvbnRvdXIuY29sb3IiKSxsKCJjb250b3VyLndpZHRo IikpLCJpbnRlbnNpdHkiaW4gdD8obCgiaW50ZW5zaXR5IiksbCgiaW50ZW5z aXR5bW9kZSIpLGkodCxlLHMsbCx7cHJlZml4OiIiLGNMZXR0ZXI6ImMifSkp OihlLnNob3dzY2FsZT0hMSwiZmFjZWNvbG9yImluIHQ/bCgiZmFjZWNvbG9y Iik6InZlcnRleGNvbG9yImluIHQ/bCgidmVydGV4Y29sb3IiKTpsKCJjb2xv ciIscikpLGwoInRleHQiKSxsKCJob3ZlcnRleHQiKSxsKCJob3ZlcnRlbXBs YXRlIiksZS5fbGVuZ3RoPW51bGwpOmUudmlzaWJsZT0hMSk6ZS52aXNpYmxl PSExfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMi OjYwMiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4v YXR0cmlidXRlcyI6MTA2MX1dLDEwNjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRl cyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4v Y2FsYyIpLGNvbG9yYmFyOnttaW46ImNtaW4iLG1heDoiY21heCJ9LHBsb3Q6 dCgiLi9jb252ZXJ0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6Im1lc2gz ZCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wzZCIpLGNhdGVn b3JpZXM6WyJnbDNkIiwic2hvd0xlZ2VuZCJdLG1ldGE6e319fSx7Ii4uLy4u L3Bsb3RzL2dsM2QiOjgwNSwiLi9hdHRyaWJ1dGVzIjoxMDYxLCIuL2NhbGMi OjEwNjIsIi4vY29udmVydCI6MTA2MywiLi9kZWZhdWx0cyI6MTA2NH1dLDEw NjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vbGliIikuZXh0ZW5kRmxhdCxhPXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRl cyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMi KS5kYXNoLG89dCgiLi4vLi4vY29tcG9uZW50cy9meC9hdHRyaWJ1dGVzIiks cz10KCIuLi8uLi9jb25zdGFudHMvZGVsdGEuanMiKSxsPXMuSU5DUkVBU0lO Ry5DT0xPUixjPXMuREVDUkVBU0lORy5DT0xPUix1PWEubGluZTtmdW5jdGlv biBoKHQpe3JldHVybntsaW5lOntjb2xvcjpuKHt9LHUuY29sb3Ise2RmbHQ6 dH0pLHdpZHRoOnUud2lkdGgsZGFzaDppLGVkaXRUeXBlOiJzdHlsZSJ9LGVk aXRUeXBlOiJzdHlsZSJ9fWUuZXhwb3J0cz17eDp7dmFsVHlwZToiZGF0YV9h cnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxvcGVuOnt2 YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGhpZ2g6e3Zh bFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sbG93Ont2YWxU eXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGNsb3NlOnt2YWxU eXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGxpbmU6e3dpZHRo Om4oe30sdS53aWR0aCx7fSksZGFzaDpuKHt9LGkse30pLGVkaXRUeXBlOiJz dHlsZSJ9LGluY3JlYXNpbmc6aChsKSxkZWNyZWFzaW5nOmgoYyksdGV4dDp7 dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITAsZWRpdFR5cGU6 ImNhbGMifSxob3ZlcnRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixh cnJheU9rOiEwLGVkaXRUeXBlOiJjYWxjIn0sdGlja3dpZHRoOnt2YWxUeXBl OiJudW1iZXIiLG1pbjowLG1heDouNSxkZmx0Oi4zLGVkaXRUeXBlOiJjYWxj In0saG92ZXJsYWJlbDpuKHt9LG8uaG92ZXJsYWJlbCx7c3BsaXQ6e3ZhbFR5 cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6InN0eWxlIn19KX19LHsi Li4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiOjYxMiwiLi4v Li4vY29tcG9uZW50cy9meC9hdHRyaWJ1dGVzIjo2MjIsIi4uLy4uL2NvbnN0 YW50cy9kZWx0YS5qcyI6Njg3LCIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRl ci9hdHRyaWJ1dGVzIjoxMTIwfV0sMTA2NzpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPW4uXyxpPXQoIi4u Ly4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuLi8uLi9jb25zdGFu dHMvbnVtZXJpY2FsIikuQkFETlVNO2Z1bmN0aW9uIHModCxlLHIsbil7cmV0 dXJue286dCxoOmUsbDpyLGM6bn19ZnVuY3Rpb24gbCh0LGUscixzLGwpe2Zv cih2YXIgYz1zLm1ha2VDYWxjZGF0YShlLCJvcGVuIiksdT1zLm1ha2VDYWxj ZGF0YShlLCJoaWdoIiksaD1zLm1ha2VDYWxjZGF0YShlLCJsb3ciKSxmPXMu bWFrZUNhbGNkYXRhKGUsImNsb3NlIikscD1BcnJheS5pc0FycmF5KGUudGV4 dCksZD1BcnJheS5pc0FycmF5KGUuaG92ZXJ0ZXh0KSxnPSEwLHY9bnVsbCxt PVtdLHk9MDt5PHIubGVuZ3RoO3krKyl7dmFyIHg9clt5XSxiPWNbeV0sXz11 W3ldLHc9aFt5XSxrPWZbeV07aWYoeCE9PW8mJmIhPT1vJiZfIT09byYmdyE9 PW8mJmshPT1vKXtrPT09Yj9udWxsIT09diYmayE9PXYmJihnPWs+dik6Zz1r PmIsdj1rO3ZhciBUPWwoYixfLHcsayk7VC5wb3M9eCxULnljPShiK2spLzIs VC5pPXksVC5kaXI9Zz8iaW5jcmVhc2luZyI6ImRlY3JlYXNpbmciLFQueD1U LnBvcyxULnk9W3csX10scCYmKFQudHg9ZS50ZXh0W3ldKSxkJiYoVC5odHg9 ZS5ob3ZlcnRleHRbeV0pLG0ucHVzaChUKX1lbHNlIG0ucHVzaCh7cG9zOngs ZW1wdHk6ITB9KX1yZXR1cm4gZS5fZXh0cmVtZXNbcy5faWRdPWkuZmluZEV4 dHJlbWVzKHMsbi5jb25jYXQoaCx1KSx7cGFkZGVkOiEwfSksbS5sZW5ndGgm JihtWzBdLnQ9e2xhYmVsczp7b3BlbjphKHQsIm9wZW46IikrIiAiLGhpZ2g6 YSh0LCJoaWdoOiIpKyIgIixsb3c6YSh0LCJsb3c6IikrIiAiLGNsb3NlOmEo dCwiY2xvc2U6IikrIiAifX0pLG19ZS5leHBvcnRzPXtjYWxjOmZ1bmN0aW9u KHQsZSl7dmFyIHI9aS5nZXRGcm9tSWQodCxlLnhheGlzKSxhPWkuZ2V0RnJv bUlkKHQsZS55YXhpcyksbz1mdW5jdGlvbih0LGUscil7dmFyIGE9ci5fbWlu RGlmZjtpZighYSl7dmFyIGksbz10Ll9mdWxsRGF0YSxzPVtdO2ZvcihhPTEv MCxpPTA7aTxvLmxlbmd0aDtpKyspe3ZhciBsPW9baV07aWYoIm9obGMiPT09 bC50eXBlJiYhMD09PWwudmlzaWJsZSYmbC54YXhpcz09PWUuX2lkKXtzLnB1 c2gobCk7dmFyIGM9ZS5tYWtlQ2FsY2RhdGEobCwieCIpO2wuX3hjYWxjPWM7 dmFyIHU9bi5kaXN0aW5jdFZhbHMoYykubWluRGlmZjt1JiZpc0Zpbml0ZSh1 KSYmKGE9TWF0aC5taW4oYSx1KSl9fWZvcihhPT09MS8wJiYoYT0xKSxpPTA7 aTxzLmxlbmd0aDtpKyspc1tpXS5fbWluRGlmZj1hfXJldHVybiBhKnIudGlj a3dpZHRofSh0LHIsZSksYz1lLl9taW5EaWZmO2UuX21pbkRpZmY9bnVsbDt2 YXIgdT1lLl94Y2FsYztlLl94Y2FsYz1udWxsO3ZhciBoPWwodCxlLHUsYSxz KTtyZXR1cm4gZS5fZXh0cmVtZXNbci5faWRdPWkuZmluZEV4dHJlbWVzKHIs dSx7dnBhZDpjLzJ9KSxoLmxlbmd0aD8obi5leHRlbmRGbGF0KGhbMF0udCx7 d0hvdmVyOmMvMix0aWNrTGVuOm99KSxoKTpbe3Q6e2VtcHR5OiEwfX1dfSxj YWxjQ29tbW9uOmx9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5 MywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVz Ijo3NjV9XSwxMDY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9vaGxjX2RlZmF1bHRzIiksaT10 KCIuL2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBvKHQsZSxyLG4pe3IobisiLmxp bmUuY29sb3IiKSxyKG4rIi5saW5lLndpZHRoIixlLmxpbmUud2lkdGgpLHIo bisiLmxpbmUuZGFzaCIsZS5saW5lLmRhc2gpfWUuZXhwb3J0cz1mdW5jdGlv bih0LGUscixzKXtmdW5jdGlvbiBsKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQs ZSxpLHIsYSl9YSh0LGUsbCxzKT8obCgibGluZS53aWR0aCIpLGwoImxpbmUu ZGFzaCIpLG8odCxlLGwsImluY3JlYXNpbmciKSxvKHQsZSxsLCJkZWNyZWFz aW5nIiksbCgidGV4dCIpLGwoImhvdmVydGV4dCIpLGwoInRpY2t3aWR0aCIp LHMuX3JlcXVlc3RSYW5nZXNsaWRlcltlLnhheGlzXT0hMCk6ZS52aXNpYmxl PSExfX0seyIuLi8uLi9saWIiOjcxNywiLi9hdHRyaWJ1dGVzIjoxMDY2LCIu L29obGNfZGVmYXVsdHMiOjEwNzF9XSwxMDY5OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9h eGVzIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMv ZngiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxzPXQoIi4uLy4u L2xpYiIpLmZpbGxUZXh0LGw9dCgiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpz IiksYz17aW5jcmVhc2luZzpsLklOQ1JFQVNJTkcuU1lNQk9MLGRlY3JlYXNp bmc6bC5ERUNSRUFTSU5HLlNZTUJPTH07ZnVuY3Rpb24gdSh0LGUscixuKXt2 YXIgYSxzLGw9dC5jZCxjPXQueGEsdT1sWzBdLnRyYWNlLGg9bFswXS50LGY9 dS50eXBlLHA9Im9obGMiPT09Zj8ibCI6Im1pbiIsZD0ib2hsYyI9PT1mPyJo IjoibWF4IixnPWguYlBvc3x8MCx2PWZ1bmN0aW9uKHQpe3JldHVybiB0LnBv cytnLWV9LG09aC5iZFBvc3x8aC50aWNrTGVuLHk9aC53SG92ZXIseD1NYXRo Lm1pbigxLG0vTWF0aC5hYnMoYy5yMmMoYy5yYW5nZVsxXSktYy5yMmMoYy5y YW5nZVswXSkpKTtmdW5jdGlvbiBiKHQpe3ZhciBlPXYodCk7cmV0dXJuIGku aW5ib3goZS15LGUreSxhKX1mdW5jdGlvbiBfKHQpe3ZhciBlPXRbcF0sbj10 W2RdO3JldHVybiBlPT09bnx8aS5pbmJveChlLXIsbi1yLGEpfWZ1bmN0aW9u IHcodCl7cmV0dXJuKGIodCkrXyh0KSkvMn1hPXQubWF4SG92ZXJEaXN0YW5j ZS14LHM9dC5tYXhTcGlrZURpc3RhbmNlLXg7dmFyIGs9aS5nZXREaXN0YW5j ZUZ1bmN0aW9uKG4sYixfLHcpO2lmKGkuZ2V0Q2xvc2VzdChsLGssdCksITE9 PT10LmluZGV4KXJldHVybiBudWxsO3ZhciBUPWxbdC5pbmRleF07aWYoVC5l bXB0eSlyZXR1cm4gbnVsbDt2YXIgTT11W1QuZGlyXSxBPU0ubGluZS5jb2xv cjtyZXR1cm4gby5vcGFjaXR5KEEpJiZNLmxpbmUud2lkdGg/dC5jb2xvcj1B OnQuY29sb3I9TS5maWxsY29sb3IsdC54MD1jLmMycChULnBvcytnLW0sITAp LHQueDE9Yy5jMnAoVC5wb3MrZyttLCEwKSx0LnhMYWJlbFZhbD1ULnBvcyx0 LnNwaWtlRGlzdGFuY2U9dyhUKSpzL2EsdC54U3Bpa2U9Yy5jMnAoVC5wb3Ms ITApLHR9ZnVuY3Rpb24gaCh0LGUscixpKXt2YXIgbz10LmNkLHM9dC55YSxs PW9bMF0udHJhY2UsYz1vWzBdLnQsaD1bXSxmPXUodCxlLHIsaSk7aWYoIWYp cmV0dXJuW107dmFyIHA9b1tmLmluZGV4XS5oaXx8bC5ob3ZlcmluZm8sZD1w LnNwbGl0KCIrIik7aWYoISgiYWxsIj09PXB8fC0xIT09ZC5pbmRleE9mKCJ5 IikpKXJldHVybltdO2Zvcih2YXIgZz1bImhpZ2giLCJvcGVuIiwiY2xvc2Ui LCJsb3ciXSx2PXt9LG09MDttPGcubGVuZ3RoO20rKyl7dmFyIHkseD1nW21d LGI9bFt4XVtmLmluZGV4XSxfPXMuYzJwKGIsITApO2IgaW4gdj8oeT12W2Jd KS55TGFiZWwrPSI8YnI+IitjLmxhYmVsc1t4XStuLmhvdmVyTGFiZWxUZXh0 KHMsYik6KCh5PWEuZXh0ZW5kRmxhdCh7fSxmKSkueTA9eS55MT1fLHkueUxh YmVsVmFsPWIseS55TGFiZWw9Yy5sYWJlbHNbeF0rbi5ob3ZlckxhYmVsVGV4 dChzLGIpLHkubmFtZT0iIixoLnB1c2goeSksdltiXT15KX1yZXR1cm4gaH1m dW5jdGlvbiBmKHQsZSxyLGEpe3ZhciBpPXQuY2Qsbz10LnlhLGw9aVswXS50 cmFjZSxoPWlbMF0udCxmPXUodCxlLHIsYSk7aWYoIWYpcmV0dXJuW107dmFy IHA9aVtmLmluZGV4XSxkPWYuaW5kZXg9cC5pLGc9cC5kaXI7ZnVuY3Rpb24g dih0KXtyZXR1cm4gaC5sYWJlbHNbdF0rbi5ob3ZlckxhYmVsVGV4dChvLGxb dF1bZF0pfXZhciBtPXAuaGl8fGwuaG92ZXJpbmZvLHk9bS5zcGxpdCgiKyIp LHg9ImFsbCI9PT1tLGI9eHx8LTEhPT15LmluZGV4T2YoInkiKSxfPXh8fC0x IT09eS5pbmRleE9mKCJ0ZXh0Iiksdz1iP1t2KCJvcGVuIiksdigiaGlnaCIp LHYoImxvdyIpLHYoImNsb3NlIikrIiAgIitjW2ddXTpbXTtyZXR1cm4gXyYm cyhwLGwsdyksZi5leHRyYVRleHQ9dy5qb2luKCI8YnI+IiksZi55MD1mLnkx PW8uYzJwKHAueWMsITApLFtmXX1lLmV4cG9ydHM9e2hvdmVyUG9pbnRzOmZ1 bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0LmNkWzBdLnRyYWNlLmhvdmVybGFi ZWwuc3BsaXQ/aCh0LGUscixuKTpmKHQsZSxyLG4pfSxob3ZlclNwbGl0Omgs aG92ZXJPblBvaW50czpmfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1 OTIsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vY29uc3RhbnRz L2RlbHRhLmpzIjo2ODcsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9j YXJ0ZXNpYW4vYXhlcyI6NzY1fV0sMTA3MDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1l OiJvaGxjIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwic3ZnIiwic2hvd0xlZ2Vu ZCJdLG1ldGE6e30sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBw bHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKS5j YWxjLHBsb3Q6dCgiLi9wbG90Iiksc3R5bGU6dCgiLi9zdHlsZSIpLGhvdmVy UG9pbnRzOnQoIi4vaG92ZXIiKS5ob3ZlclBvaW50cyxzZWxlY3RQb2ludHM6 dCgiLi9zZWxlY3QiKX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYs Ii4vYXR0cmlidXRlcyI6MTA2NiwiLi9jYWxjIjoxMDY3LCIuL2RlZmF1bHRz IjoxMDY4LCIuL2hvdmVyIjoxMDY5LCIuL3Bsb3QiOjEwNzIsIi4vc2VsZWN0 IjoxMDczLCIuL3N0eWxlIjoxMDc0fV0sMTA3MTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgi Li4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBv PXIoIngiKSxzPXIoIm9wZW4iKSxsPXIoImhpZ2giKSxjPXIoImxvdyIpLHU9 cigiY2xvc2UiKTtpZihyKCJob3ZlcmxhYmVsLnNwbGl0Iiksbi5nZXRDb21w b25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMi KSh0LGUsWyJ4Il0saSkscyYmbCYmYyYmdSl7dmFyIGg9TWF0aC5taW4ocy5s ZW5ndGgsbC5sZW5ndGgsYy5sZW5ndGgsdS5sZW5ndGgpO3JldHVybiBvJiYo aD1NYXRoLm1pbihoLGEubWluUm93TGVuZ3RoKG8pKSksZS5fbGVuZ3RoPWgs aH19fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2fV0s MTA3MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJk MyIpLGE9dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy LGkpe3ZhciBvPWUueGF4aXMscz1lLnlheGlzO2EubWFrZVRyYWNlR3JvdXBz KGksciwidHJhY2Ugb2hsYyIpLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9bi5z ZWxlY3QodGhpcykscj10WzBdLGk9ci50O2lmKCEwIT09ci50cmFjZS52aXNp YmxlfHxpLmVtcHR5KWUucmVtb3ZlKCk7ZWxzZXt2YXIgbD1pLnRpY2tMZW4s Yz1lLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEoYS5pZGVudGl0eSk7Yy5lbnRl cigpLmFwcGVuZCgicGF0aCIpLGMuZXhpdCgpLnJlbW92ZSgpLGMuYXR0cigi ZCIsZnVuY3Rpb24odCl7aWYodC5lbXB0eSlyZXR1cm4iTTAsMFoiO3ZhciBl PW8uYzJwKHQucG9zLCEwKSxyPW8uYzJwKHQucG9zLWwsITApLG49by5jMnAo dC5wb3MrbCwhMCk7cmV0dXJuIk0iK3IrIiwiK3MuYzJwKHQubywhMCkrIkgi K2UrIk0iK2UrIiwiK3MuYzJwKHQuaCwhMCkrIlYiK3MuYzJwKHQubCwhMCkr Ik0iK24rIiwiK3MuYzJwKHQuYywhMCkrIkgiK2V9KX19KX19LHsiLi4vLi4v bGliIjo3MTcsZDM6MTY1fV0sMTA3MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixuPXQuY2Qs YT10LnhheGlzLGk9dC55YXhpcyxvPVtdLHM9blswXS50LmJQb3N8fDA7aWYo ITE9PT1lKWZvcihyPTA7cjxuLmxlbmd0aDtyKyspbltyXS5zZWxlY3RlZD0w O2Vsc2UgZm9yKHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGw9bltyXTtlLmNv bnRhaW5zKFthLmMycChsLnBvcytzKSxpLmMycChsLnljKV0sbnVsbCxsLmks dCk/KG8ucHVzaCh7cG9pbnROdW1iZXI6bC5pLHg6YS5jMmQobC5wb3MpLHk6 aS5jMmQobC55Yyl9KSxsLnNlbGVjdGVkPTEpOmwuc2VsZWN0ZWQ9MH1yZXR1 cm4gb319LHt9XSwxMDc0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmci KSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIpe3ZhciBvPXJ8fG4uc2VsZWN0KHQpLnNlbGVjdEFsbCgi Zy5vaGxjbGF5ZXIiKS5zZWxlY3RBbGwoImcudHJhY2UiKTtvLnN0eWxlKCJv cGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFjZS5vcGFjaXR5 fSksby5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2U7bi5zZWxl Y3QodGhpcykuc2VsZWN0QWxsKCJwYXRoIikuZWFjaChmdW5jdGlvbih0KXtp ZighdC5lbXB0eSl7dmFyIHI9ZVt0LmRpcl0ubGluZTtuLnNlbGVjdCh0aGlz KS5zdHlsZSgiZmlsbCIsIm5vbmUiKS5jYWxsKGkuc3Ryb2tlLHIuY29sb3Ip LmNhbGwoYS5kYXNoTGluZSxyLmRhc2gsci53aWR0aCkuc3R5bGUoIm9wYWNp dHkiLGUuc2VsZWN0ZWRwb2ludHMmJiF0LnNlbGVjdGVkPy4zOjEpfX0pfSl9 fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9u ZW50cy9kcmF3aW5nIjo2MTMsZDM6MTY1fV0sMTA3NTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIvZXh0ZW5kIiku ZXh0ZW5kRmxhdCxhPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxpPXQo Ii4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vY29t cG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bs b3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMs bD10KCIuLi8uLi9wbG90cy9kb21haW4iKS5hdHRyaWJ1dGVzLGM9bih7ZWRp dFR5cGU6ImNhbGMifSxvKCJsaW5lIix7ZWRpdFR5cGVPdmVycmlkZToiY2Fs YyJ9KSx7c2hhcGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxp bmVhciIsImhzcGxpbmUiXSxkZmx0OiJsaW5lYXIiLGVkaXRUeXBlOiJwbG90 In0saG92ZXJ0ZW1wbGF0ZTpzKHtlZGl0VHlwZToicGxvdCIsYXJyYXlPazoh MX0se2tleXM6WyJjb3VudCIsInByb2JhYmlsaXR5Il19KX0pO2UuZXhwb3J0 cz17ZG9tYWluOmwoe25hbWU6InBhcmNhdHMiLHRyYWNlOiEwLGVkaXRUeXBl OiJjYWxjIn0pLGhvdmVyaW5mbzpuKHt9LGEuaG92ZXJpbmZvLHtmbGFnczpb ImNvdW50IiwicHJvYmFiaWxpdHkiXSxlZGl0VHlwZToicGxvdCIsYXJyYXlP azohMX0pLGhvdmVyb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpb ImNhdGVnb3J5IiwiY29sb3IiLCJkaW1lbnNpb24iXSxkZmx0OiJjYXRlZ29y eSIsZWRpdFR5cGU6InBsb3QifSxob3ZlcnRlbXBsYXRlOnMoe2VkaXRUeXBl OiJwbG90IixhcnJheU9rOiExfSx7a2V5czpbImNvdW50IiwicHJvYmFiaWxp dHkiLCJjYXRlZ29yeSIsImNhdGVnb3J5Y291bnQiLCJjb2xvcmNvdW50Iiwi YmFuZGNvbG9yY291bnQiXX0pLGFycmFuZ2VtZW50Ont2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyJwZXJwZW5kaWN1bGFyIiwiZnJlZWZvcm0iLCJm aXhlZCJdLGRmbHQ6InBlcnBlbmRpY3VsYXIiLGVkaXRUeXBlOiJwbG90In0s YnVuZGxlY29sb3JzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRU eXBlOiJwbG90In0sc29ydHBhdGhzOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJmb3J3YXJkIiwiYmFja3dhcmQiXSxkZmx0OiJmb3J3YXJkIixl ZGl0VHlwZToicGxvdCJ9LGxhYmVsZm9udDppKHtlZGl0VHlwZToiY2FsYyJ9 KSx0aWNrZm9udDppKHtlZGl0VHlwZToiY2FsYyJ9KSxkaW1lbnNpb25zOntf aXNMaW5rZWRUb0FycmF5OiJkaW1lbnNpb24iLGxhYmVsOnt2YWxUeXBlOiJz dHJpbmciLGVkaXRUeXBlOiJjYWxjIn0sY2F0ZWdvcnlvcmRlcjp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidHJhY2UiLCJjYXRlZ29yeSBhc2Nl bmRpbmciLCJjYXRlZ29yeSBkZXNjZW5kaW5nIiwiYXJyYXkiXSxkZmx0OiJ0 cmFjZSIsZWRpdFR5cGU6ImNhbGMifSxjYXRlZ29yeWFycmF5Ont2YWxUeXBl OiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHRpY2t0ZXh0Ont2YWxU eXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHZhbHVlczp7dmFs VHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXSxlZGl0VHlwZToiY2FsYyJ9LGRp c3BsYXlpbmRleDp7dmFsVHlwZToiaW50ZWdlciIsZWRpdFR5cGU6ImNhbGMi fSxlZGl0VHlwZToiY2FsYyIsdmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIs ZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9fSxsaW5lOmMsY291bnRzOnt2YWxU eXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MSxhcnJheU9rOiEwLGVkaXRUeXBl OiJjYWxjIn0sY3VzdG9tZGF0YTp2b2lkIDAsaG92ZXJsYWJlbDp2b2lkIDAs aWRzOnZvaWQgMCxsZWdlbmRncm91cDp2b2lkIDAsb3BhY2l0eTp2b2lkIDAs c2VsZWN0ZWRwb2ludHM6dm9pZCAwLHNob3dsZWdlbmQ6dm9pZCAwfX0seyIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIu Li8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMi Ojc2MiwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4uLy4uL3Bsb3RzL2Zv bnRfYXR0cmlidXRlcyI6NzkxLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRy aWJ1dGVzIjo4NDF9XSwxMDc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2dldF9kYXRhIikuZ2V0TW9kdWxl Q2FsY0RhdGEsYT10KCIuL3Bsb3QiKTtyLm5hbWU9InBhcmNhdHMiLHIucGxv dD1mdW5jdGlvbih0LGUscixpKXt2YXIgbz1uKHQuY2FsY2RhdGEsInBhcmNh dHMiKTtpZihvLmxlbmd0aCl7dmFyIHM9b1swXTthKHQscyxyLGkpfX0sci5j bGVhbj1mdW5jdGlvbih0LGUscixuKXt2YXIgYT1uLl9oYXMmJm4uX2hhcygi cGFyY2F0cyIpLGk9ZS5faGFzJiZlLl9oYXMoInBhcmNhdHMiKTthJiYhaSYm bi5fcGFwZXJkaXYuc2VsZWN0QWxsKCIucGFyY2F0cyIpLnJlbW92ZSgpfX0s eyIuLi8uLi9wbG90cy9nZXRfZGF0YSI6ODAwLCIuL3Bsb3QiOjEwODF9XSwx MDc3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYi9ndXAiKS53cmFwLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xv cnNjYWxlL2hlbHBlcnMiKS5oYXNDb2xvcnNjYWxlLGk9dCgiLi4vLi4vY29t cG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKSxvPXQoIi4uLy4uL2xpYi9maWx0 ZXJfdW5pcXVlLmpzIikscz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmci KSxsPXQoIi4uLy4uL2xpYiIpO2Z1bmN0aW9uIGModCxlLHIpe3QudmFsdWVJ bmRzLnB1c2goZSksdC5jb3VudCs9cn1mdW5jdGlvbiB1KHQsZSxyKXtyZXR1 cm57Y2F0ZWdvcnlJbmRzOnQsY29sb3I6ZSxyYXdDb2xvcjpyLHZhbHVlSW5k czpbXSxjb3VudDowfX1mdW5jdGlvbiBoKHQsZSxyKXt0LnZhbHVlSW5kcy5w dXNoKGUpLHQuY291bnQrPXJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFy IHI9bC5maWx0ZXJWaXNpYmxlKGUuZGltZW5zaW9ucyk7aWYoMD09PXIubGVu Z3RoKXJldHVybltdO3ZhciBmLHAsZCxnPXIubWFwKGZ1bmN0aW9uKHQpe3Zh ciBlO3JldHVybiJ0cmFjZSI9PT10LmNhdGVnb3J5b3JkZXI/ZT1udWxsOiJh cnJheSI9PT10LmNhdGVnb3J5b3JkZXI/ZT10LmNhdGVnb3J5YXJyYXk6KGU9 byh0LnZhbHVlcykuc29ydCgpLCJjYXRlZ29yeSBkZXNjZW5kaW5nIj09PXQu Y2F0ZWdvcnlvcmRlciYmKGU9ZS5yZXZlcnNlKCkpKSxmdW5jdGlvbih0LGUp e2U9bnVsbD09ZT9bXTplLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdH0pO3Zh ciByPXt9LG49e30sYT1bXTtlLmZvckVhY2goZnVuY3Rpb24odCxlKXtyW3Rd PTAsblt0XT1lfSk7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBv LHM9dFtpXTt2b2lkIDA9PT1yW3NdPyhyW3NdPTEsbz1lLnB1c2gocyktMSxu W3NdPW8pOihyW3NdKyssbz1uW3NdKSxhLnB1c2gobyl9dmFyIGw9ZS5tYXAo ZnVuY3Rpb24odCl7cmV0dXJuIHJbdF19KTtyZXR1cm57dW5pcXVlVmFsdWVz OmUsdW5pcXVlQ291bnRzOmwsaW5kczphfX0odC52YWx1ZXMsZSl9KTtmPWwu aXNBcnJheU9yVHlwZWRBcnJheShlLmNvdW50cyk/ZS5jb3VudHM6W2UuY291 bnRzXSxmdW5jdGlvbih0KXt2YXIgZTtpZihmdW5jdGlvbih0KXtmb3IodmFy IGU9bmV3IEFycmF5KHQubGVuZ3RoKSxyPTA7cjx0Lmxlbmd0aDtyKyspe2lm KHRbcl08MHx8dFtyXT49dC5sZW5ndGgpcmV0dXJuITE7aWYodm9pZCAwIT09 ZVt0W3JdXSlyZXR1cm4hMTtlW3Rbcl1dPSEwfXJldHVybiEwfSh0Lm1hcChm dW5jdGlvbih0KXtyZXR1cm4gdC5kaXNwbGF5aW5kZXh9KSkpZm9yKGU9MDtl PHQubGVuZ3RoO2UrKyl0W2VdLl9kaXNwbGF5aW5kZXg9dFtlXS5kaXNwbGF5 aW5kZXg7ZWxzZSBmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uX2Rpc3Bs YXlpbmRleD1lfShyKSxyLmZvckVhY2goZnVuY3Rpb24odCxlKXshZnVuY3Rp b24odCxlKXt0Ll9jYXRlZ29yeWFycmF5PWUudW5pcXVlVmFsdWVzLG51bGw9 PT10LnRpY2t0ZXh0fHx2b2lkIDA9PT10LnRpY2t0ZXh0P3QuX3RpY2t0ZXh0 PVtdOnQuX3RpY2t0ZXh0PXQudGlja3RleHQuc2xpY2UoKTtmb3IodmFyIHI9 dC5fdGlja3RleHQubGVuZ3RoO3I8ZS51bmlxdWVWYWx1ZXMubGVuZ3RoO3Ir Kyl0Ll90aWNrdGV4dC5wdXNoKGUudW5pcXVlVmFsdWVzW3JdKX0odCxnW2Vd KX0pO3ZhciB2LG09ZS5saW5lO20/KGEoZSwibGluZSIpJiZpKHQsZSx7dmFs czplLmxpbmUuY29sb3IsY29udGFpbmVyU3RyOiJsaW5lIixjTGV0dGVyOiJj In0pLHY9cy50cnlDb2xvcnNjYWxlKG0pKTp2PWwuaWRlbnRpdHk7dmFyIHks eCxiLF8sdyxrPXJbMF0udmFsdWVzLmxlbmd0aCxUPXt9LE09Zy5tYXAoZnVu Y3Rpb24odCl7cmV0dXJuIHQuaW5kc30pO2ZvcihkPTAseT0wO3k8azt5Kysp e3ZhciBBPVtdO2Zvcih4PTA7eDxNLmxlbmd0aDt4KyspQS5wdXNoKE1beF1b eV0pO3A9Zlt5JWYubGVuZ3RoXSxkKz1wO3ZhciBTPShiPXksXz12b2lkIDAs dz12b2lkIDAsbC5pc0FycmF5T3JUeXBlZEFycmF5KG0uY29sb3IpP3c9Xz1t LmNvbG9yW2IlbS5jb2xvci5sZW5ndGhdOl89bS5jb2xvcix7Y29sb3I6dihf KSxyYXdDb2xvcjp3fSksRT1BKyItIitTLnJhd0NvbG9yO3ZvaWQgMD09PVRb RV0mJihUW0VdPXUoQSxTLmNvbG9yLFMucmF3Q29sb3IpKSxoKFRbRV0seSxw KX12YXIgTCxDPXIubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHI9ZSxuPXQu X2luZGV4LGE9dC5fZGlzcGxheWluZGV4LGk9dC5sYWJlbCx7ZGltZW5zaW9u SW5kOnIsY29udGFpbmVySW5kOm4sZGlzcGxheUluZDphLGRpbWVuc2lvbkxh YmVsOmksY291bnQ6ZCxjYXRlZ29yaWVzOltdLGRyYWdYOm51bGx9O3ZhciBy LG4sYSxpfSk7Zm9yKHk9MDt5PGs7eSsrKWZvcihwPWZbeSVmLmxlbmd0aF0s eD0wO3g8Qy5sZW5ndGg7eCsrKXt2YXIgUD1DW3hdLmNvbnRhaW5lckluZCxP PWdbeF0uaW5kc1t5XSx6PUNbeF0uY2F0ZWdvcmllcztpZih2b2lkIDA9PT16 W09dKXt2YXIgST1lLmRpbWVuc2lvbnNbUF0uX2NhdGVnb3J5YXJyYXlbT10s RD1lLmRpbWVuc2lvbnNbUF0uX3RpY2t0ZXh0W09dO3pbT109e2RpbWVuc2lv bkluZDp4LGNhdGVnb3J5SW5kOkw9TyxjYXRlZ29yeVZhbHVlOkksZGlzcGxh eUluZDpMLGNhdGVnb3J5TGFiZWw6RCx2YWx1ZUluZHM6W10sY291bnQ6MCxk cmFnWTpudWxsfX1jKHpbT10seSxwKX1yZXR1cm4gbihmdW5jdGlvbih0LGUs cil7dmFyIG49dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2F0ZWdvcmll cy5sZW5ndGh9KS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5t YXgodCxlKX0pO3JldHVybntkaW1lbnNpb25zOnQscGF0aHM6ZSx0cmFjZTp2 b2lkIDAsbWF4Q2F0czpuLGNvdW50OnJ9fShDLFQsZCkpfX0seyIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6NjAwLCIuLi8uLi9jb21wb25l bnRzL2NvbG9yc2NhbGUvaGVscGVycyI6NjAzLCIuLi8uLi9jb21wb25lbnRz L2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9maWx0 ZXJfdW5pcXVlLmpzIjo3MDksIi4uLy4uL2xpYi9ndXAiOjcxNX1dLDEwNzg6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v bGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVy cyIpLmhhc0NvbG9yc2NhbGUsaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9y c2NhbGUvZGVmYXVsdHMiKSxvPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRl ZmF1bHRzLHM9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1 bHRzIiksbD10KCIuL2F0dHJpYnV0ZXMiKSxjPXQoIi4uL3BhcmNvb3Jkcy9t ZXJnZV9sZW5ndGgiKTtmdW5jdGlvbiB1KHQsZSl7ZnVuY3Rpb24gcihyLGEp e3JldHVybiBuLmNvZXJjZSh0LGUsbC5kaW1lbnNpb25zLHIsYSl9dmFyIGE9 cigidmFsdWVzIiksaT1yKCJ2aXNpYmxlIik7aWYoYSYmYS5sZW5ndGh8fChp PWUudmlzaWJsZT0hMSksaSl7cigibGFiZWwiKSxyKCJkaXNwbGF5aW5kZXgi LGUuX2luZGV4KTt2YXIgbyxzPXQuY2F0ZWdvcnlhcnJheSxjPUFycmF5Lmlz QXJyYXkocykmJnMubGVuZ3RoPjA7YyYmKG89ImFycmF5Iik7dmFyIHU9cigi Y2F0ZWdvcnlvcmRlciIsbyk7ImFycmF5Ij09PXU/KHIoImNhdGVnb3J5YXJy YXkiKSxyKCJ0aWNrdGV4dCIpKTooZGVsZXRlIHQuY2F0ZWdvcnlhcnJheSxk ZWxldGUgdC50aWNrdGV4dCksY3x8ImFycmF5IiE9PXV8fChlLmNhdGVnb3J5 b3JkZXI9InRyYWNlIil9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixoKXtm dW5jdGlvbiBmKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxsLHIsYSl9dmFy IHA9cyh0LGUse25hbWU6ImRpbWVuc2lvbnMiLGhhbmRsZUl0ZW1EZWZhdWx0 czp1fSksZD1mdW5jdGlvbih0LGUscixvLHMpe3MoImxpbmUuc2hhcGUiKSxz KCJsaW5lLmhvdmVydGVtcGxhdGUiKTt2YXIgbD1zKCJsaW5lLmNvbG9yIixv LmNvbG9yd2F5WzBdKTtpZihhKHQsImxpbmUiKSYmbi5pc0FycmF5T3JUeXBl ZEFycmF5KGwpKXtpZihsLmxlbmd0aClyZXR1cm4gcygibGluZS5jb2xvcnNj YWxlIiksaSh0LGUsbyxzLHtwcmVmaXg6ImxpbmUuIixjTGV0dGVyOiJjIn0p LGwubGVuZ3RoO2UubGluZS5jb2xvcj1yfXJldHVybiAxLzB9KHQsZSxyLGgs Zik7byhlLGgsZiksQXJyYXkuaXNBcnJheShwKSYmcC5sZW5ndGh8fChlLnZp c2libGU9ITEpLGMoZSxwLCJ2YWx1ZXMiLGQpLGYoImhvdmVyb24iKSxmKCJo b3ZlcnRlbXBsYXRlIiksZigiYXJyYW5nZW1lbnQiKSxmKCJidW5kbGVjb2xv cnMiKSxmKCJzb3J0cGF0aHMiKSxmKCJjb3VudHMiKTt2YXIgZz17ZmFtaWx5 OmguZm9udC5mYW1pbHksc2l6ZTpNYXRoLnJvdW5kKGguZm9udC5zaXplKSxj b2xvcjpoLmZvbnQuY29sb3J9O24uY29lcmNlRm9udChmLCJsYWJlbGZvbnQi LGcpO3ZhciB2PXtmYW1pbHk6aC5mb250LmZhbWlseSxzaXplOk1hdGgucm91 bmQoaC5mb250LnNpemUvMS4yKSxjb2xvcjpoLmZvbnQuY29sb3J9O24uY29l cmNlRm9udChmLCJ0aWNrZm9udCIsdil9fSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvaGVscGVycyI6NjAzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4v cGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4uLy4uL3Bs b3RzL2RvbWFpbiI6NzkwLCIuLi9wYXJjb29yZHMvbWVyZ2VfbGVuZ3RoIjox MDkxLCIuL2F0dHJpYnV0ZXMiOjEwNzV9XSwxMDc5OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0 dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2Fs Yzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLGNvbG9yYmFyOntjb250 YWluZXI6ImxpbmUiLG1pbjoiY21pbiIsbWF4OiJjbWF4In0sbW9kdWxlVHlw ZToidHJhY2UiLG5hbWU6InBhcmNhdHMiLGJhc2VQbG90TW9kdWxlOnQoIi4v YmFzZV9wbG90IiksY2F0ZWdvcmllczpbIm5vT3BhY2l0eSJdLG1ldGE6e319 fSx7Ii4vYXR0cmlidXRlcyI6MTA3NSwiLi9iYXNlX3Bsb3QiOjEwNzYsIi4v Y2FsYyI6MTA3NywiLi9kZWZhdWx0cyI6MTA3OCwiLi9wbG90IjoxMDgxfV0s MTA4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJk MyIpLGE9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF9hcGkiKSxpPXQoIi4uLy4u L2NvbXBvbmVudHMvZngiKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vLi4v Y29tcG9uZW50cy9kcmF3aW5nIiksbD10KCJ0aW55Y29sb3IyIiksYz10KCIu Li8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKTtmdW5jdGlvbiB1KHQsZSxyLGEp e3ZhciBpPXQubWFwKGZ1bmN0aW9uKHQsZSxyKXt2YXIgbixhPXJbMF0saT1l Lm1hcmdpbnx8e2w6ODAscjo4MCx0OjEwMCxiOjgwfSxvPWEudHJhY2Uscz1v LmRvbWFpbixsPWUud2lkdGgsYz1lLmhlaWdodCx1PU1hdGguZmxvb3IobCoo cy54WzFdLXMueFswXSkpLGg9TWF0aC5mbG9vcihjKihzLnlbMV0tcy55WzBd KSksZj1zLnhbMF0qbCtpLmwscD1lLmhlaWdodC1zLnlbMV0qZS5oZWlnaHQr aS50LGQ9by5saW5lLnNoYXBlO249ImFsbCI9PT1vLmhvdmVyaW5mbz9bImNv dW50IiwicHJvYmFiaWxpdHkiXTooby5ob3ZlcmluZm98fCIiKS5zcGxpdCgi KyIpO3ZhciBnPXt0cmFjZTpvLGtleTpvLnVpZCxtb2RlbDphLHg6Zix5OnAs d2lkdGg6dSxoZWlnaHQ6aCxob3Zlcm9uOm8uaG92ZXJvbixob3ZlcmluZm9J dGVtczpuLGFycmFuZ2VtZW50Om8uYXJyYW5nZW1lbnQsYnVuZGxlY29sb3Jz Om8uYnVuZGxlY29sb3JzLHNvcnRwYXRoczpvLnNvcnRwYXRocyxsYWJlbGZv bnQ6by5sYWJlbGZvbnQsY2F0ZWdvcnlsYWJlbGZvbnQ6by50aWNrZm9udCxw YXRoU2hhcGU6ZCxkcmFnRGltZW5zaW9uOm51bGwsbWFyZ2luOmkscGF0aHM6 W10sZGltZW5zaW9uczpbXSxncmFwaERpdjp0LHRyYWNlU2VsZWN0aW9uOm51 bGwscGF0aFNlbGVjdGlvbjpudWxsLGRpbWVuc2lvblNlbGVjdGlvbjpudWxs fTthLmRpbWVuc2lvbnMmJihGKGcpLFIoZykpO3JldHVybiBnfS5iaW5kKDAs ZSxyKSksbD1hLnNlbGVjdEFsbCgiZy5wYXJjYXRzbGF5ZXIiKS5kYXRhKFtu dWxsXSk7bC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwicGFy Y2F0c2xheWVyIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIik7dmFy IHU9bC5zZWxlY3RBbGwoImcudHJhY2UucGFyY2F0cyIpLmRhdGEoaSxoKSx2 PXUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRyYWNlIHBh cmNhdHMiKTt1LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJu InRyYW5zbGF0ZSgiK3QueCsiLCAiK3QueSsiKSJ9KSx2LmFwcGVuZCgiZyIp LmF0dHIoImNsYXNzIiwicGF0aHMiKTt2YXIgbT11LnNlbGVjdCgiZy5wYXRo cyIpLnNlbGVjdEFsbCgicGF0aC5wYXRoIikuZGF0YShmdW5jdGlvbih0KXty ZXR1cm4gdC5wYXRoc30saCk7bS5hdHRyKCJmaWxsIixmdW5jdGlvbih0KXty ZXR1cm4gdC5tb2RlbC5jb2xvcn0pO3ZhciBiPW0uZW50ZXIoKS5hcHBlbmQo InBhdGgiKS5hdHRyKCJjbGFzcyIsInBhdGgiKS5hdHRyKCJzdHJva2Utb3Bh Y2l0eSIsMCkuYXR0cigiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIHQubW9k ZWwuY29sb3J9KS5hdHRyKCJmaWxsLW9wYWNpdHkiLDApO3goYiksbS5hdHRy KCJkIixmdW5jdGlvbih0KXtyZXR1cm4gdC5zdmdEfSksYi5lbXB0eSgpfHxt LnNvcnQocCksbS5leGl0KCkucmVtb3ZlKCksbS5vbigibW91c2VvdmVyIixk KS5vbigibW91c2VvdXQiLGcpLm9uKCJjbGljayIseSksdi5hcHBlbmQoImci KS5hdHRyKCJjbGFzcyIsImRpbWVuc2lvbnMiKTt2YXIgaz11LnNlbGVjdCgi Zy5kaW1lbnNpb25zIikuc2VsZWN0QWxsKCJnLmRpbWVuc2lvbiIpLmRhdGEo ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGltZW5zaW9uc30saCk7ay5lbnRlcigp LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZGltZW5zaW9uIiksay5hdHRy KCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0 LngrIiwgMCkifSksay5leGl0KCkucmVtb3ZlKCk7dmFyIFQ9ay5zZWxlY3RB bGwoImcuY2F0ZWdvcnkiKS5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNh dGVnb3JpZXN9LGgpLE09VC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNs YXNzIiwiY2F0ZWdvcnkiKTtULmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24o dCl7cmV0dXJuInRyYW5zbGF0ZSgwLCAiK3QueSsiKSJ9KSxNLmFwcGVuZCgi cmVjdCIpLmF0dHIoImNsYXNzIiwiY2F0cmVjdCIpLmF0dHIoInBvaW50ZXIt ZXZlbnRzIiwibm9uZSIpLFQuc2VsZWN0KCJyZWN0LmNhdHJlY3QiKS5hdHRy KCJmaWxsIiwibm9uZSIpLmF0dHIoIndpZHRoIixmdW5jdGlvbih0KXtyZXR1 cm4gdC53aWR0aH0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJu IHQuaGVpZ2h0fSksXyhNKTt2YXIgQT1ULnNlbGVjdEFsbCgicmVjdC5iYW5k cmVjdCIpLmRhdGEoZnVuY3Rpb24odCl7cmV0dXJuIHQuYmFuZHN9LGgpO0Eu ZWFjaChmdW5jdGlvbigpe28ucmFpc2VUb1RvcCh0aGlzKX0pLEEuYXR0cigi ZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sb3J9KTt2YXIgTz1BLmVu dGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJiYW5kcmVjdCIp LmF0dHIoInN0cm9rZS1vcGFjaXR5IiwwKS5hdHRyKCJmaWxsIixmdW5jdGlv bih0KXtyZXR1cm4gdC5jb2xvcn0pLmF0dHIoImZpbGwtb3BhY2l0eSIsMCk7 QS5hdHRyKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2xvcn0pLmF0 dHIoIndpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4gdC53aWR0aH0pLmF0dHIo ImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkuYXR0cigi eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQueX0pLmF0dHIoImN1cnNvciIsZnVu Y3Rpb24odCl7cmV0dXJuImZpeGVkIj09PXQucGFyY2F0c1ZpZXdNb2RlbC5h cnJhbmdlbWVudD8iZGVmYXVsdCI6InBlcnBlbmRpY3VsYXIiPT09dC5wYXJj YXRzVmlld01vZGVsLmFycmFuZ2VtZW50PyJucy1yZXNpemUiOiJtb3ZlIn0p LHcoTyksQS5leGl0KCkucmVtb3ZlKCksTS5hcHBlbmQoInRleHQiKS5hdHRy KCJjbGFzcyIsImNhdGxhYmVsIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJu b25lIik7dmFyIHo9ZS5fZnVsbExheW91dC5wYXBlcl9iZ2NvbG9yO1Quc2Vs ZWN0KCJ0ZXh0LmNhdGxhYmVsIikuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0 aW9uKHQpe3JldHVybiBmKHQpPyJzdGFydCI6ImVuZCJ9KS5hdHRyKCJhbGln bm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5zdHlsZSgidGV4dC1zaGFkb3ci LHorIiAtMXB4ICAxcHggMnB4LCAiK3orIiAxcHggIDFweCAycHgsICIreisi ICAxcHggLTFweCAycHgsICIreisiIC0xcHggLTFweCAycHgiKS5zdHlsZSgi ZmlsbCIsInJnYigwLCAwLCAwKSIpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3Jl dHVybiBmKHQpP3Qud2lkdGgrNTotNX0pLmF0dHIoInkiLGZ1bmN0aW9uKHQp e3JldHVybiB0LmhlaWdodC8yfSkudGV4dChmdW5jdGlvbih0KXtyZXR1cm4g dC5tb2RlbC5jYXRlZ29yeUxhYmVsfSkuZWFjaChmdW5jdGlvbih0KXtzLmZv bnQobi5zZWxlY3QodGhpcyksdC5wYXJjYXRzVmlld01vZGVsLmNhdGVnb3J5 bGFiZWxmb250KSxjLmNvbnZlcnRUb1RzcGFucyhuLnNlbGVjdCh0aGlzKSxl KX0pLE0uYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJkaW1sYWJlbCIp LFQuc2VsZWN0KCJ0ZXh0LmRpbWxhYmVsIikuYXR0cigidGV4dC1hbmNob3Ii LCJtaWRkbGUiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJiYXNlbGlu ZSIpLmF0dHIoImN1cnNvciIsZnVuY3Rpb24odCl7cmV0dXJuImZpeGVkIj09 PXQucGFyY2F0c1ZpZXdNb2RlbC5hcnJhbmdlbWVudD8iZGVmYXVsdCI6ImV3 LXJlc2l6ZSJ9KS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4gdC53aWR0 aC8yfSkuYXR0cigieSIsLTUpLnRleHQoZnVuY3Rpb24odCxlKXtyZXR1cm4g MD09PWU/dC5wYXJjYXRzVmlld01vZGVsLm1vZGVsLmRpbWVuc2lvbnNbdC5t b2RlbC5kaW1lbnNpb25JbmRdLmRpbWVuc2lvbkxhYmVsOm51bGx9KS5lYWNo KGZ1bmN0aW9uKHQpe3MuZm9udChuLnNlbGVjdCh0aGlzKSx0LnBhcmNhdHNW aWV3TW9kZWwubGFiZWxmb250KX0pLFQuc2VsZWN0QWxsKCJyZWN0LmJhbmRy ZWN0Iikub24oIm1vdXNlb3ZlciIsUykub24oIm1vdXNlb3V0IixFKSxULmV4 aXQoKS5yZW1vdmUoKSxrLmNhbGwobi5iZWhhdmlvci5kcmFnKCkub3JpZ2lu KGZ1bmN0aW9uKHQpe3JldHVybnt4OnQueCx5OjB9fSkub24oImRyYWdzdGFy dCIsTCkub24oImRyYWciLEMpLm9uKCJkcmFnZW5kIixQKSksdS5lYWNoKGZ1 bmN0aW9uKHQpe3QudHJhY2VTZWxlY3Rpb249bi5zZWxlY3QodGhpcyksdC5w YXRoU2VsZWN0aW9uPW4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5wYXRo cyIpLnNlbGVjdEFsbCgicGF0aC5wYXRoIiksdC5kaW1lbnNpb25TZWxlY3Rp b249bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLmRpbWVuc2lvbnMiKS5z ZWxlY3RBbGwoImcuZGltZW5zaW9uIil9KSx1LmV4aXQoKS5yZW1vdmUoKX1m dW5jdGlvbiBoKHQpe3JldHVybiB0LmtleX1mdW5jdGlvbiBmKHQpe3ZhciBl PXQucGFyY2F0c1ZpZXdNb2RlbC5kaW1lbnNpb25zLmxlbmd0aCxyPXQucGFy Y2F0c1ZpZXdNb2RlbC5kaW1lbnNpb25zW2UtMV0ubW9kZWwuZGltZW5zaW9u SW5kO3JldHVybiB0Lm1vZGVsLmRpbWVuc2lvbkluZD09PXJ9ZnVuY3Rpb24g cCh0LGUpe3JldHVybiB0Lm1vZGVsLnJhd0NvbG9yPmUubW9kZWwucmF3Q29s b3I/MTp0Lm1vZGVsLnJhd0NvbG9yPGUubW9kZWwucmF3Q29sb3I/LTE6MH1m dW5jdGlvbiBkKHQpe2lmKCF0LnBhcmNhdHNWaWV3TW9kZWwuZHJhZ0RpbWVu c2lvbiYmLTE9PT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMu aW5kZXhPZigic2tpcCIpKXtvLnJhaXNlVG9Ub3AodGhpcyksYihuLnNlbGVj dCh0aGlzKSk7dmFyIGU9dih0KSxyPW0odCk7aWYodC5wYXJjYXRzVmlld01v ZGVsLmdyYXBoRGl2LmVtaXQoInBsb3RseV9ob3ZlciIse3BvaW50czplLGV2 ZW50Om4uZXZlbnQsY29uc3RyYWludHM6cn0pLC0xPT09dC5wYXJjYXRzVmll d01vZGVsLmhvdmVyaW5mb0l0ZW1zLmluZGV4T2YoIm5vbmUiKSl7dmFyIGEs cyxjLHU9bi5tb3VzZSh0aGlzKVswXSxoPXQucGFyY2F0c1ZpZXdNb2RlbC5n cmFwaERpdixmPXQucGFyY2F0c1ZpZXdNb2RlbC50cmFjZSxwPWguX2Z1bGxM YXlvdXQsZD1wLl9wYXBlcmRpdi5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRS ZWN0KCksZz10LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYuZ2V0Qm91bmRp bmdDbGllbnRSZWN0KCk7Zm9yKGM9MDtjPHQubGVmdFhzLmxlbmd0aC0xO2Mr KylpZih0LmxlZnRYc1tjXSt0LmRpbVdpZHRoc1tjXS0yPD11JiZ1PD10Lmxl ZnRYc1tjKzFdKzIpe3ZhciB5PXQucGFyY2F0c1ZpZXdNb2RlbC5kaW1lbnNp b25zW2NdLHg9dC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnNbYysxXTth PSh5LngreS53aWR0aCt4LngpLzIscz0odC50b3BZc1tjXSt0LnRvcFlzW2Mr MV0rdC5oZWlnaHQpLzI7YnJlYWt9dmFyIF89dC5wYXJjYXRzVmlld01vZGVs LngrYSx3PXQucGFyY2F0c1ZpZXdNb2RlbC55K3Msaz1sLm1vc3RSZWFkYWJs ZSh0Lm1vZGVsLmNvbG9yLFsiYmxhY2siLCJ3aGl0ZSJdKSxUPXQubW9kZWwu Y291bnQsTT1UL3QucGFyY2F0c1ZpZXdNb2RlbC5tb2RlbC5jb3VudCxBPXtj b3VudExhYmVsOlQscHJvYmFiaWxpdHlMYWJlbDpNLnRvRml4ZWQoMyl9LFM9 W107LTEhPT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMuaW5k ZXhPZigiY291bnQiKSYmUy5wdXNoKFsiQ291bnQ6IixBLmNvdW50TGFiZWxd LmpvaW4oIiAiKSksLTEhPT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZv SXRlbXMuaW5kZXhPZigicHJvYmFiaWxpdHkiKSYmUy5wdXNoKFsiUDoiLEEu cHJvYmFiaWxpdHlMYWJlbF0uam9pbigiICIpKTt2YXIgRT1TLmpvaW4oIjxi cj4iKSxMPW4ubW91c2UoaClbMF07aS5sb25lSG92ZXIoe3RyYWNlOmYseDpf LWQubGVmdCtnLmxlZnQseTp3LWQudG9wK2cudG9wLHRleHQ6RSxjb2xvcjp0 Lm1vZGVsLmNvbG9yLGJvcmRlckNvbG9yOiJibGFjayIsZm9udEZhbWlseTon TW9uYWNvLCAiQ291cmllciBOZXciLCBtb25vc3BhY2UnLGZvbnRTaXplOjEw LGZvbnRDb2xvcjprLGlkZWFsQWxpZ246TDxfPyJyaWdodCI6ImxlZnQiLGhv dmVydGVtcGxhdGU6KGYubGluZXx8e30pLmhvdmVydGVtcGxhdGUsaG92ZXJ0 ZW1wbGF0ZUxhYmVsczpBLGV2ZW50RGF0YTpbe2RhdGE6Zi5faW5wdXQsZnVs bERhdGE6Zixjb3VudDpULHByb2JhYmlsaXR5Ok19XX0se2NvbnRhaW5lcjpw Ll9ob3ZlcmxheWVyLm5vZGUoKSxvdXRlckNvbnRhaW5lcjpwLl9wYXBlci5u b2RlKCksZ2Q6aH0pfX19ZnVuY3Rpb24gZyh0KXtpZighdC5wYXJjYXRzVmll d01vZGVsLmRyYWdEaW1lbnNpb24mJih4KG4uc2VsZWN0KHRoaXMpKSxpLmxv bmVVbmhvdmVyKHQucGFyY2F0c1ZpZXdNb2RlbC5ncmFwaERpdi5fZnVsbExh eW91dC5faG92ZXJsYXllci5ub2RlKCkpLHQucGFyY2F0c1ZpZXdNb2RlbC5w YXRoU2VsZWN0aW9uLnNvcnQocCksLTE9PT10LnBhcmNhdHNWaWV3TW9kZWwu aG92ZXJpbmZvSXRlbXMuaW5kZXhPZigic2tpcCIpKSl7dmFyIGU9dih0KSxy PW0odCk7dC5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2LmVtaXQoInBsb3Rs eV91bmhvdmVyIix7cG9pbnRzOmUsZXZlbnQ6bi5ldmVudCxjb25zdHJhaW50 czpyfSl9fWZ1bmN0aW9uIHYodCl7Zm9yKHZhciBlPVtdLHI9Tyh0LnBhcmNh dHNWaWV3TW9kZWwpLG49MDtuPHQubW9kZWwudmFsdWVJbmRzLmxlbmd0aDtu Kyspe3ZhciBhPXQubW9kZWwudmFsdWVJbmRzW25dO2UucHVzaCh7Y3VydmVO dW1iZXI6cixwb2ludE51bWJlcjphfSl9cmV0dXJuIGV9ZnVuY3Rpb24gbSh0 KXtmb3IodmFyIGU9e30scj10LnBhcmNhdHNWaWV3TW9kZWwubW9kZWwuZGlt ZW5zaW9ucyxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBhPXJbbl0saT1hLmNh dGVnb3JpZXNbdC5tb2RlbC5jYXRlZ29yeUluZHNbbl1dO2VbYS5jb250YWlu ZXJJbmRdPWkuY2F0ZWdvcnlWYWx1ZX1yZXR1cm4gdm9pZCAwIT09dC5tb2Rl bC5yYXdDb2xvciYmKGUuY29sb3I9dC5tb2RlbC5yYXdDb2xvciksZX1mdW5j dGlvbiB5KHQpe2lmKC0xPT09dC5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5m b0l0ZW1zLmluZGV4T2YoInNraXAiKSl7dmFyIGU9dih0KSxyPW0odCk7dC5w YXJjYXRzVmlld01vZGVsLmdyYXBoRGl2LmVtaXQoInBsb3RseV9jbGljayIs e3BvaW50czplLGV2ZW50Om4uZXZlbnQsY29uc3RyYWludHM6cn0pfX1mdW5j dGlvbiB4KHQpe3QuYXR0cigiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIHQu bW9kZWwuY29sb3J9KS5hdHRyKCJmaWxsLW9wYWNpdHkiLC42KS5hdHRyKCJz dHJva2UiLCJsaWdodGdyYXkiKS5hdHRyKCJzdHJva2Utd2lkdGgiLC4yKS5h dHRyKCJzdHJva2Utb3BhY2l0eSIsMSl9ZnVuY3Rpb24gYih0KXt0LmF0dHIo ImZpbGwtb3BhY2l0eSIsLjgpLmF0dHIoInN0cm9rZSIsZnVuY3Rpb24odCl7 cmV0dXJuIGwubW9zdFJlYWRhYmxlKHQubW9kZWwuY29sb3IsWyJibGFjayIs IndoaXRlIl0pfSkuYXR0cigic3Ryb2tlLXdpZHRoIiwuMyl9ZnVuY3Rpb24g Xyh0KXt0LnNlbGVjdCgicmVjdC5jYXRyZWN0IikuYXR0cigic3Ryb2tlIiwi YmxhY2siKS5hdHRyKCJzdHJva2Utd2lkdGgiLDEpLmF0dHIoInN0cm9rZS1v cGFjaXR5IiwxKX1mdW5jdGlvbiB3KHQpe3QuYXR0cigic3Ryb2tlIiwiYmxh Y2siKS5hdHRyKCJzdHJva2Utd2lkdGgiLC4yKS5hdHRyKCJzdHJva2Utb3Bh Y2l0eSIsMSkuYXR0cigiZmlsbC1vcGFjaXR5IiwxKX1mdW5jdGlvbiBrKHQp e3ZhciBlPXQucGFyY2F0c1ZpZXdNb2RlbC5wYXRoU2VsZWN0aW9uLHI9dC5j YXRlZ29yeVZpZXdNb2RlbC5tb2RlbC5kaW1lbnNpb25JbmQsbj10LmNhdGVn b3J5Vmlld01vZGVsLm1vZGVsLmNhdGVnb3J5SW5kO3JldHVybiBlLmZpbHRl cihmdW5jdGlvbihlKXtyZXR1cm4gZS5tb2RlbC5jYXRlZ29yeUluZHNbcl09 PT1uJiZlLm1vZGVsLmNvbG9yPT09dC5jb2xvcn0pfWZ1bmN0aW9uIFQodCxl LHIpe3ZhciBhPW4uc2VsZWN0KHQpLmRhdHVtKCksaT1hLmNhdGVnb3J5Vmll d01vZGVsLm1vZGVsLG89YS5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2LHM9 bi5zZWxlY3QodC5wYXJlbnROb2RlKS5zZWxlY3RBbGwoInJlY3QuYmFuZHJl Y3QiKSxsPVtdO3MuZWFjaChmdW5jdGlvbih0KXtrKHQpLmVhY2goZnVuY3Rp b24odCl7QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobCx2KHQpKX0pfSk7 dmFyIGM9e307Y1tpLmRpbWVuc2lvbkluZF09aS5jYXRlZ29yeVZhbHVlLG8u ZW1pdChlLHtwb2ludHM6bCxldmVudDpyLGNvbnN0cmFpbnRzOmN9KX1mdW5j dGlvbiBNKHQsZSxyKXt2YXIgYT1uLnNlbGVjdCh0KS5kYXR1bSgpLGk9YS5j YXRlZ29yeVZpZXdNb2RlbC5tb2RlbCxvPWEucGFyY2F0c1ZpZXdNb2RlbC5n cmFwaERpdixzPWsoYSksbD1bXTtzLmVhY2goZnVuY3Rpb24odCl7QXJyYXku cHJvdG90eXBlLnB1c2guYXBwbHkobCx2KHQpKX0pO3ZhciBjPXt9O2NbaS5k aW1lbnNpb25JbmRdPWkuY2F0ZWdvcnlWYWx1ZSx2b2lkIDAhPT1hLnJhd0Nv bG9yJiYoYy5jb2xvcj1hLnJhd0NvbG9yKSxvLmVtaXQoZSx7cG9pbnRzOmws ZXZlbnQ6cixjb25zdHJhaW50czpjfSl9ZnVuY3Rpb24gQSh0LGUpe3ZhciBy LGEsaT1uLnNlbGVjdChlLnBhcmVudE5vZGUpLnNlbGVjdCgicmVjdC5jYXRy ZWN0Iiksbz1pLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPWku ZGF0dW0oKSxsPXMucGFyY2F0c1ZpZXdNb2RlbCxjPWwubW9kZWwuZGltZW5z aW9uc1tzLm1vZGVsLmRpbWVuc2lvbkluZF0sdT1sLnRyYWNlLGg9by50b3Ar by5oZWlnaHQvMjtsLmRpbWVuc2lvbnMubGVuZ3RoPjEmJmMuZGlzcGxheUlu ZD09PWwuZGltZW5zaW9ucy5sZW5ndGgtMT8ocj1vLmxlZnQsYT0ibGVmdCIp OihyPW8ubGVmdCtvLndpZHRoLGE9InJpZ2h0Iik7dmFyIGY9cy5tb2RlbC5j b3VudCxwPXMubW9kZWwuY2F0ZWdvcnlMYWJlbCxkPWYvcy5wYXJjYXRzVmll d01vZGVsLm1vZGVsLmNvdW50LGc9e2NvdW50TGFiZWw6ZixjYXRlZ29yeUxh YmVsOnAscHJvYmFiaWxpdHlMYWJlbDpkLnRvRml4ZWQoMyl9LHY9W107LTEh PT1zLnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMuaW5kZXhPZigi Y291bnQiKSYmdi5wdXNoKFsiQ291bnQ6IixnLmNvdW50TGFiZWxdLmpvaW4o IiAiKSksLTEhPT1zLnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMu aW5kZXhPZigicHJvYmFiaWxpdHkiKSYmdi5wdXNoKFsiUCgiK2cuY2F0ZWdv cnlMYWJlbCsiKToiLGcucHJvYmFiaWxpdHlMYWJlbF0uam9pbigiICIpKTt2 YXIgbT12LmpvaW4oIjxicj4iKTtyZXR1cm57dHJhY2U6dSx4OnItdC5sZWZ0 LHk6aC10LnRvcCx0ZXh0Om0sY29sb3I6ImxpZ2h0Z3JheSIsYm9yZGVyQ29s b3I6ImJsYWNrIixmb250RmFtaWx5OidNb25hY28sICJDb3VyaWVyIE5ldyIs IG1vbm9zcGFjZScsZm9udFNpemU6MTIsZm9udENvbG9yOiJibGFjayIsaWRl YWxBbGlnbjphLGhvdmVydGVtcGxhdGU6dS5ob3ZlcnRlbXBsYXRlLGhvdmVy dGVtcGxhdGVMYWJlbHM6ZyxldmVudERhdGE6W3tkYXRhOnUuX2lucHV0LGZ1 bGxEYXRhOnUsY291bnQ6ZixjYXRlZ29yeTpwLHByb2JhYmlsaXR5OmR9XX19 ZnVuY3Rpb24gUyh0KXtpZighdC5wYXJjYXRzVmlld01vZGVsLmRyYWdEaW1l bnNpb24mJi0xPT09dC5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5mb0l0ZW1z LmluZGV4T2YoInNraXAiKSl7aWYobi5tb3VzZSh0aGlzKVsxXTwtMSlyZXR1 cm47dmFyIGUscj10LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYsYT1yLl9m dWxsTGF5b3V0LHM9YS5fcGFwZXJkaXYubm9kZSgpLmdldEJvdW5kaW5nQ2xp ZW50UmVjdCgpLGM9dC5wYXJjYXRzVmlld01vZGVsLmhvdmVyb247aWYoImNv bG9yIj09PWM/KCFmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0KS5kYXR1 bSgpLHI9ayhlKTtiKHIpLHIuZWFjaChmdW5jdGlvbigpe28ucmFpc2VUb1Rv cCh0aGlzKX0pLG4uc2VsZWN0KHQucGFyZW50Tm9kZSkuc2VsZWN0QWxsKCJy ZWN0LmJhbmRyZWN0IikuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNv bG9yPT09ZS5jb2xvcn0pLmVhY2goZnVuY3Rpb24oKXtvLnJhaXNlVG9Ub3Ao dGhpcyksbi5zZWxlY3QodGhpcykuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5h dHRyKCJzdHJva2Utd2lkdGgiLDEuNSl9KX0odGhpcyksTSh0aGlzLCJwbG90 bHlfaG92ZXIiLG4uZXZlbnQpKTooIWZ1bmN0aW9uKHQpe24uc2VsZWN0KHQu cGFyZW50Tm9kZSkuc2VsZWN0QWxsKCJyZWN0LmJhbmRyZWN0IikuZWFjaChm dW5jdGlvbih0KXt2YXIgZT1rKHQpO2IoZSksZS5lYWNoKGZ1bmN0aW9uKCl7 by5yYWlzZVRvVG9wKHRoaXMpfSl9KSxuLnNlbGVjdCh0LnBhcmVudE5vZGUp LnNlbGVjdCgicmVjdC5jYXRyZWN0IikuYXR0cigic3Ryb2tlIiwiYmxhY2si KS5hdHRyKCJzdHJva2Utd2lkdGgiLDIuNSl9KHRoaXMpLFQodGhpcywicGxv dGx5X2hvdmVyIixuLmV2ZW50KSksLTE9PT10LnBhcmNhdHNWaWV3TW9kZWwu aG92ZXJpbmZvSXRlbXMuaW5kZXhPZigibm9uZSIpKSJjYXRlZ29yeSI9PT1j P2U9QShzLHRoaXMpOiJjb2xvciI9PT1jP2U9ZnVuY3Rpb24odCxlKXt2YXIg cixhLGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPW4uc2VsZWN0KGUp LmRhdHVtKCkscz1vLmNhdGVnb3J5Vmlld01vZGVsLGM9cy5wYXJjYXRzVmll d01vZGVsLHU9Yy5tb2RlbC5kaW1lbnNpb25zW3MubW9kZWwuZGltZW5zaW9u SW5kXSxoPWMudHJhY2UsZj1pLnkraS5oZWlnaHQvMjtjLmRpbWVuc2lvbnMu bGVuZ3RoPjEmJnUuZGlzcGxheUluZD09PWMuZGltZW5zaW9ucy5sZW5ndGgt MT8ocj1pLmxlZnQsYT0ibGVmdCIpOihyPWkubGVmdCtpLndpZHRoLGE9InJp Z2h0Iik7dmFyIHA9cy5tb2RlbC5jYXRlZ29yeUxhYmVsLGQ9by5wYXJjYXRz Vmlld01vZGVsLm1vZGVsLmNvdW50LGc9MDtvLmNhdGVnb3J5Vmlld01vZGVs LmJhbmRzLmZvckVhY2goZnVuY3Rpb24odCl7dC5jb2xvcj09PW8uY29sb3Im JihnKz10LmNvdW50KX0pO3ZhciB2PXMubW9kZWwuY291bnQsbT0wO2MucGF0 aFNlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKHQpe3QubW9kZWwuY29sb3I9PT1v LmNvbG9yJiYobSs9dC5tb2RlbC5jb3VudCl9KTt2YXIgeT1nL2QseD1nL20s Yj1nL3YsXz17Y291bnRMYWJlbDpkLGNhdGVnb3J5TGFiZWw6cCxwcm9iYWJp bGl0eUxhYmVsOnkudG9GaXhlZCgzKX0sdz1bXTstMSE9PXMucGFyY2F0c1Zp ZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJjb3VudCIpJiZ3LnB1 c2goWyJDb3VudDoiLF8uY291bnRMYWJlbF0uam9pbigiICIpKSwtMSE9PXMu cGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJwcm9i YWJpbGl0eSIpJiYody5wdXNoKCJQKGNvbG9yIFx1MjIyOSAiK3ArIik6ICIr Xy5wcm9iYWJpbGl0eUxhYmVsKSx3LnB1c2goIlAoIitwKyIgfCBjb2xvcik6 ICIreC50b0ZpeGVkKDMpKSx3LnB1c2goIlAoY29sb3IgfCAiK3ArIik6ICIr Yi50b0ZpeGVkKDMpKSk7dmFyIGs9dy5qb2luKCI8YnI+IiksVD1sLm1vc3RS ZWFkYWJsZShvLmNvbG9yLFsiYmxhY2siLCJ3aGl0ZSJdKTtyZXR1cm57dHJh Y2U6aCx4OnItdC5sZWZ0LHk6Zi10LnRvcCx0ZXh0OmssY29sb3I6by5jb2xv cixib3JkZXJDb2xvcjoiYmxhY2siLGZvbnRGYW1pbHk6J01vbmFjbywgIkNv dXJpZXIgTmV3IiwgbW9ub3NwYWNlJyxmb250Q29sb3I6VCxmb250U2l6ZTox MCxpZGVhbEFsaWduOmEsaG92ZXJ0ZW1wbGF0ZTpoLmhvdmVydGVtcGxhdGUs aG92ZXJ0ZW1wbGF0ZUxhYmVsczpfLGV2ZW50RGF0YTpbe2RhdGE6aC5faW5w dXQsZnVsbERhdGE6aCxjYXRlZ29yeTpwLGNvdW50OmQscHJvYmFiaWxpdHk6 eSxjYXRlZ29yeWNvdW50OnYsY29sb3Jjb3VudDptLGJhbmRjb2xvcmNvdW50 Omd9XX19KHMsdGhpcyk6ImRpbWVuc2lvbiI9PT1jJiYoZT1mdW5jdGlvbih0 LGUpe3ZhciByPVtdO3JldHVybiBuLnNlbGVjdChlLnBhcmVudE5vZGUucGFy ZW50Tm9kZSkuc2VsZWN0QWxsKCJnLmNhdGVnb3J5Iikuc2VsZWN0KCJyZWN0 LmNhdHJlY3QiKS5lYWNoKGZ1bmN0aW9uKCl7ci5wdXNoKEEodCx0aGlzKSl9 KSxyfShzLHRoaXMpKSxlJiZpLmxvbmVIb3ZlcihlLHtjb250YWluZXI6YS5f aG92ZXJsYXllci5ub2RlKCksb3V0ZXJDb250YWluZXI6YS5fcGFwZXIubm9k ZSgpLGdkOnJ9KX19ZnVuY3Rpb24gRSh0KXt2YXIgZT10LnBhcmNhdHNWaWV3 TW9kZWw7aWYoIWUuZHJhZ0RpbWVuc2lvbiYmKHgoZS5wYXRoU2VsZWN0aW9u KSxfKGUuZGltZW5zaW9uU2VsZWN0aW9uLnNlbGVjdEFsbCgiZy5jYXRlZ29y eSIpKSx3KGUuZGltZW5zaW9uU2VsZWN0aW9uLnNlbGVjdEFsbCgiZy5jYXRl Z29yeSIpLnNlbGVjdEFsbCgicmVjdC5iYW5kcmVjdCIpKSxpLmxvbmVVbmhv dmVyKGUuZ3JhcGhEaXYuX2Z1bGxMYXlvdXQuX2hvdmVybGF5ZXIubm9kZSgp KSxlLnBhdGhTZWxlY3Rpb24uc29ydChwKSwtMT09PWUuaG92ZXJpbmZvSXRl bXMuaW5kZXhPZigic2tpcCIpKSl7ImNvbG9yIj09PXQucGFyY2F0c1ZpZXdN b2RlbC5ob3Zlcm9uP00odGhpcywicGxvdGx5X3VuaG92ZXIiLG4uZXZlbnQp OlQodGhpcywicGxvdGx5X3VuaG92ZXIiLG4uZXZlbnQpfX1mdW5jdGlvbiBM KHQpeyJmaXhlZCIhPT10LnBhcmNhdHNWaWV3TW9kZWwuYXJyYW5nZW1lbnQm Jih0LmRyYWdEaW1lbnNpb25EaXNwbGF5SW5kPXQubW9kZWwuZGlzcGxheUlu ZCx0LmluaXRpYWxEcmFnRGltZW5zaW9uRGlzcGxheUluZHM9dC5wYXJjYXRz Vmlld01vZGVsLm1vZGVsLmRpbWVuc2lvbnMubWFwKGZ1bmN0aW9uKHQpe3Jl dHVybiB0LmRpc3BsYXlJbmR9KSx0LmRyYWdIYXNNb3ZlZD0hMSx0LmRyYWdD YXRlZ29yeURpc3BsYXlJbmQ9bnVsbCxuLnNlbGVjdCh0aGlzKS5zZWxlY3RB bGwoImcuY2F0ZWdvcnkiKS5zZWxlY3QoInJlY3QuY2F0cmVjdCIpLmVhY2go ZnVuY3Rpb24oZSl7dmFyIHI9bi5tb3VzZSh0aGlzKVswXSxhPW4ubW91c2Uo dGhpcylbMV07LTI8PXImJnI8PWUud2lkdGgrMiYmLTI8PWEmJmE8PWUuaGVp Z2h0KzImJih0LmRyYWdDYXRlZ29yeURpc3BsYXlJbmQ9ZS5tb2RlbC5kaXNw bGF5SW5kLHQuaW5pdGlhbERyYWdDYXRlZ29yeURpc3BsYXlJbmRzPXQubW9k ZWwuY2F0ZWdvcmllcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGlzcGxh eUluZH0pLGUubW9kZWwuZHJhZ1k9ZS55LG8ucmFpc2VUb1RvcCh0aGlzLnBh cmVudE5vZGUpLG4uc2VsZWN0KHRoaXMucGFyZW50Tm9kZSkuc2VsZWN0QWxs KCJyZWN0LmJhbmRyZWN0IikuZWFjaChmdW5jdGlvbihlKXtlLnk8YSYmYTw9 ZS55K2UuaGVpZ2h0JiYodC5wb3RlbnRpYWxDbGlja0JhbmQ9dGhpcyl9KSl9 KSx0LnBhcmNhdHNWaWV3TW9kZWwuZHJhZ0RpbWVuc2lvbj10LGkubG9uZVVu aG92ZXIodC5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2Ll9mdWxsTGF5b3V0 Ll9ob3ZlcmxheWVyLm5vZGUoKSkpfWZ1bmN0aW9uIEModCl7aWYoImZpeGVk IiE9PXQucGFyY2F0c1ZpZXdNb2RlbC5hcnJhbmdlbWVudCYmKHQuZHJhZ0hh c01vdmVkPSEwLG51bGwhPT10LmRyYWdEaW1lbnNpb25EaXNwbGF5SW5kKSl7 dmFyIGU9dC5kcmFnRGltZW5zaW9uRGlzcGxheUluZCxyPWUtMSxhPWUrMSxp PXQucGFyY2F0c1ZpZXdNb2RlbC5kaW1lbnNpb25zW2VdO2lmKG51bGwhPT10 LmRyYWdDYXRlZ29yeURpc3BsYXlJbmQpe3ZhciBvPWkuY2F0ZWdvcmllc1t0 LmRyYWdDYXRlZ29yeURpc3BsYXlJbmRdO28ubW9kZWwuZHJhZ1krPW4uZXZl bnQuZHk7dmFyIHM9by5tb2RlbC5kcmFnWSxsPW8ubW9kZWwuZGlzcGxheUlu ZCxjPWkuY2F0ZWdvcmllcyx1PWNbbC0xXSxoPWNbbCsxXTt2b2lkIDAhPT11 JiZzPHUueSt1LmhlaWdodC8yJiYoby5tb2RlbC5kaXNwbGF5SW5kPXUubW9k ZWwuZGlzcGxheUluZCx1Lm1vZGVsLmRpc3BsYXlJbmQ9bCksdm9pZCAwIT09 aCYmcytvLmhlaWdodD5oLnkraC5oZWlnaHQvMiYmKG8ubW9kZWwuZGlzcGxh eUluZD1oLm1vZGVsLmRpc3BsYXlJbmQsaC5tb2RlbC5kaXNwbGF5SW5kPWwp LHQuZHJhZ0NhdGVnb3J5RGlzcGxheUluZD1vLm1vZGVsLmRpc3BsYXlJbmR9 aWYobnVsbD09PXQuZHJhZ0NhdGVnb3J5RGlzcGxheUluZHx8ImZyZWVmb3Jt Ij09PXQucGFyY2F0c1ZpZXdNb2RlbC5hcnJhbmdlbWVudCl7aS5tb2RlbC5k cmFnWD1uLmV2ZW50Lng7dmFyIGY9dC5wYXJjYXRzVmlld01vZGVsLmRpbWVu c2lvbnNbcl0scD10LnBhcmNhdHNWaWV3TW9kZWwuZGltZW5zaW9uc1thXTt2 b2lkIDAhPT1mJiZpLm1vZGVsLmRyYWdYPGYueCtmLndpZHRoJiYoaS5tb2Rl bC5kaXNwbGF5SW5kPWYubW9kZWwuZGlzcGxheUluZCxmLm1vZGVsLmRpc3Bs YXlJbmQ9ZSksdm9pZCAwIT09cCYmaS5tb2RlbC5kcmFnWCtpLndpZHRoPnAu eCYmKGkubW9kZWwuZGlzcGxheUluZD1wLm1vZGVsLmRpc3BsYXlJbmQscC5t b2RlbC5kaXNwbGF5SW5kPXQuZHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmQpLHQu ZHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmQ9aS5tb2RlbC5kaXNwbGF5SW5kfUYo dC5wYXJjYXRzVmlld01vZGVsKSxSKHQucGFyY2F0c1ZpZXdNb2RlbCksSSh0 LnBhcmNhdHNWaWV3TW9kZWwpLHoodC5wYXJjYXRzVmlld01vZGVsKX19ZnVu Y3Rpb24gUCh0KXtpZigiZml4ZWQiIT09dC5wYXJjYXRzVmlld01vZGVsLmFy cmFuZ2VtZW50JiZudWxsIT09dC5kcmFnRGltZW5zaW9uRGlzcGxheUluZCl7 bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJ0ZXh0IikuYXR0cigiZm9udC13 ZWlnaHQiLCJub3JtYWwiKTt2YXIgZT17fSxyPU8odC5wYXJjYXRzVmlld01v ZGVsKSxpPXQucGFyY2F0c1ZpZXdNb2RlbC5tb2RlbC5kaW1lbnNpb25zLm1h cChmdW5jdGlvbih0KXtyZXR1cm4gdC5kaXNwbGF5SW5kfSksbz10LmluaXRp YWxEcmFnRGltZW5zaW9uRGlzcGxheUluZHMuc29tZShmdW5jdGlvbih0LGUp e3JldHVybiB0IT09aVtlXX0pO28mJmkuZm9yRWFjaChmdW5jdGlvbihyLG4p e3ZhciBhPXQucGFyY2F0c1ZpZXdNb2RlbC5tb2RlbC5kaW1lbnNpb25zW25d LmNvbnRhaW5lckluZDtlWyJkaW1lbnNpb25zWyIrYSsiXS5kaXNwbGF5aW5k ZXgiXT1yfSk7dmFyIHM9ITE7aWYobnVsbCE9PXQuZHJhZ0NhdGVnb3J5RGlz cGxheUluZCl7dmFyIGw9dC5tb2RlbC5jYXRlZ29yaWVzLm1hcChmdW5jdGlv bih0KXtyZXR1cm4gdC5kaXNwbGF5SW5kfSk7aWYocz10LmluaXRpYWxEcmFn Q2F0ZWdvcnlEaXNwbGF5SW5kcy5zb21lKGZ1bmN0aW9uKHQsZSl7cmV0dXJu IHQhPT1sW2VdfSkpe3ZhciBjPXQubW9kZWwuY2F0ZWdvcmllcy5zbGljZSgp LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kaXNwbGF5SW5kLWUuZGlz cGxheUluZH0pLHU9Yy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2F0ZWdv cnlWYWx1ZX0pLGg9Yy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2F0ZWdv cnlMYWJlbH0pO2VbImRpbWVuc2lvbnNbIit0Lm1vZGVsLmNvbnRhaW5lcklu ZCsiXS5jYXRlZ29yeWFycmF5Il09W3VdLGVbImRpbWVuc2lvbnNbIit0Lm1v ZGVsLmNvbnRhaW5lckluZCsiXS50aWNrdGV4dCJdPVtoXSxlWyJkaW1lbnNp b25zWyIrdC5tb2RlbC5jb250YWluZXJJbmQrIl0uY2F0ZWdvcnlvcmRlciJd PSJhcnJheSJ9fWlmKC0xPT09dC5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5m b0l0ZW1zLmluZGV4T2YoInNraXAiKSYmIXQuZHJhZ0hhc01vdmVkJiZ0LnBv dGVudGlhbENsaWNrQmFuZCYmKCJjb2xvciI9PT10LnBhcmNhdHNWaWV3TW9k ZWwuaG92ZXJvbj9NKHQucG90ZW50aWFsQ2xpY2tCYW5kLCJwbG90bHlfY2xp Y2siLG4uZXZlbnQuc291cmNlRXZlbnQpOlQodC5wb3RlbnRpYWxDbGlja0Jh bmQsInBsb3RseV9jbGljayIsbi5ldmVudC5zb3VyY2VFdmVudCkpLHQubW9k ZWwuZHJhZ1g9bnVsbCxudWxsIT09dC5kcmFnQ2F0ZWdvcnlEaXNwbGF5SW5k KXQucGFyY2F0c1ZpZXdNb2RlbC5kaW1lbnNpb25zW3QuZHJhZ0RpbWVuc2lv bkRpc3BsYXlJbmRdLmNhdGVnb3JpZXNbdC5kcmFnQ2F0ZWdvcnlEaXNwbGF5 SW5kXS5tb2RlbC5kcmFnWT1udWxsLHQuZHJhZ0NhdGVnb3J5RGlzcGxheUlu ZD1udWxsO3QuZHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmQ9bnVsbCx0LnBhcmNh dHNWaWV3TW9kZWwuZHJhZ0RpbWVuc2lvbj1udWxsLHQuZHJhZ0hhc01vdmVk PW51bGwsdC5wb3RlbnRpYWxDbGlja0JhbmQ9bnVsbCxGKHQucGFyY2F0c1Zp ZXdNb2RlbCksUih0LnBhcmNhdHNWaWV3TW9kZWwpLG4udHJhbnNpdGlvbigp LmR1cmF0aW9uKDMwMCkuZWFzZSgiY3ViaWMtaW4tb3V0IikuZWFjaChmdW5j dGlvbigpe0kodC5wYXJjYXRzVmlld01vZGVsLCEwKSx6KHQucGFyY2F0c1Zp ZXdNb2RlbCwhMCl9KS5lYWNoKCJlbmQiLGZ1bmN0aW9uKCl7KG98fHMpJiZh LnJlc3R5bGUodC5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2LGUsW3JdKX0p fX1mdW5jdGlvbiBPKHQpe2Zvcih2YXIgZSxyPXQuZ3JhcGhEaXYuX2Z1bGxE YXRhLG49MDtuPHIubGVuZ3RoO24rKylpZih0LmtleT09PXJbbl0udWlkKXtl PW47YnJlYWt9cmV0dXJuIGV9ZnVuY3Rpb24geih0LGUpe3ZhciByO3ZvaWQg MD09PWUmJihlPSExKSx0LnBhdGhTZWxlY3Rpb24uZGF0YShmdW5jdGlvbih0 KXtyZXR1cm4gdC5wYXRoc30saCksKHI9dC5wYXRoU2VsZWN0aW9uLGU/ci50 cmFuc2l0aW9uKCk6cikuYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIHQu c3ZnRH0pfWZ1bmN0aW9uIEkodCxlKXtmdW5jdGlvbiByKHQpe3JldHVybiBl P3QudHJhbnNpdGlvbigpOnR9dm9pZCAwPT09ZSYmKGU9ITEpLHQuZGltZW5z aW9uU2VsZWN0aW9uLmRhdGEoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGltZW5z aW9uc30saCk7dmFyIGE9dC5kaW1lbnNpb25TZWxlY3Rpb24uc2VsZWN0QWxs KCJnLmNhdGVnb3J5IikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5jYXRl Z29yaWVzfSxoKTtyKHQuZGltZW5zaW9uU2VsZWN0aW9uKS5hdHRyKCJ0cmFu c2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0LngrIiwg MCkifSkscihhKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVy biJ0cmFuc2xhdGUoMCwgIit0LnkrIikifSksYS5zZWxlY3QoIi5kaW1sYWJl bCIpLnRleHQoZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWU/dC5wYXJjYXRz Vmlld01vZGVsLm1vZGVsLmRpbWVuc2lvbnNbdC5tb2RlbC5kaW1lbnNpb25J bmRdLmRpbWVuc2lvbkxhYmVsOm51bGx9KSxhLnNlbGVjdCgiLmNhdGxhYmVs IikuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0aW9uKHQpe3JldHVybiBmKHQp PyJzdGFydCI6ImVuZCJ9KS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4g Zih0KT90LndpZHRoKzU6LTV9KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7 Zih0KT8oZT10LndpZHRoKzUscj0ic3RhcnQiKTooZT0tNSxyPSJlbmQiKSxu LnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInRzcGFuIikuYXR0cigieCIsZSku YXR0cigidGV4dC1hbmNob3IiLHIpfSk7dmFyIGk9YS5zZWxlY3RBbGwoInJl Y3QuYmFuZHJlY3QiKS5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJhbmRz fSxoKSxzPWkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIs ImJhbmRyZWN0IikuYXR0cigiY3Vyc29yIiwibW92ZSIpLmF0dHIoInN0cm9r ZS1vcGFjaXR5IiwwKS5hdHRyKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm4g dC5jb2xvcn0pLmF0dHIoImZpbGwtb3BhY2l0eSIsMCk7aS5hdHRyKCJmaWxs IixmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2xvcn0pLmF0dHIoIndpZHRoIixm dW5jdGlvbih0KXtyZXR1cm4gdC53aWR0aH0pLmF0dHIoImhlaWdodCIsZnVu Y3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkuYXR0cigieSIsZnVuY3Rpb24o dCl7cmV0dXJuIHQueX0pLHcocyksaS5lYWNoKGZ1bmN0aW9uKCl7by5yYWlz ZVRvVG9wKHRoaXMpfSksaS5leGl0KCkucmVtb3ZlKCl9ZnVuY3Rpb24gRCh0 LGUscixhLGkpe3ZhciBvLHMsbD1bXSxjPVtdO2ZvcihzPTA7czxyLmxlbmd0 aC0xO3MrKylvPW4uaW50ZXJwb2xhdGVOdW1iZXIocltzXSt0W3NdLHRbcysx XSksbC5wdXNoKG8oaSkpLGMucHVzaChvKDEtaSkpO3ZhciB1PSJNICIrdFsw XSsiLCIrZVswXTtmb3IodSs9ImwiK3JbMF0rIiwwICIscz0xO3M8ci5sZW5n dGg7cysrKXUrPSJDIitsW3MtMV0rIiwiK2Vbcy0xXSsiICIrY1tzLTFdKyIs IitlW3NdKyIgIit0W3NdKyIsIitlW3NdLHUrPSJsIityW3NdKyIsMCAiO2Zv cih1Kz0ibDAsIithKyIgIix1Kz0ibCAtIityW3IubGVuZ3RoLTFdKyIsMCAi LHM9ci5sZW5ndGgtMjtzPj0wO3MtLSl1Kz0iQyIrY1tzXSsiLCIrKGVbcysx XSthKSsiICIrbFtzXSsiLCIrKGVbc10rYSkrIiAiKyh0W3NdK3Jbc10pKyIs IisoZVtzXSthKSx1Kz0ibC0iK3Jbc10rIiwwICI7cmV0dXJuIHUrPSJaIn1m dW5jdGlvbiBSKHQpe3ZhciBlPXQuZGltZW5zaW9ucyxyPXQubW9kZWwsbj1l Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5jYXRlZ29yaWVzLm1hcChmdW5j dGlvbih0KXtyZXR1cm4gdC55fSl9KSxhPXQubW9kZWwuZGltZW5zaW9ucy5t YXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2F0ZWdvcmllcy5tYXAoZnVuY3Rp b24odCl7cmV0dXJuIHQuZGlzcGxheUluZH0pfSksaT10Lm1vZGVsLmRpbWVu c2lvbnMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpc3BsYXlJbmR9KSxv PXQuZGltZW5zaW9ucy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubW9kZWwu ZGltZW5zaW9uSW5kfSkscz1lLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC54 fSksbD1lLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC53aWR0aH0pLGM9W107 Zm9yKHZhciB1IGluIHIucGF0aHMpci5wYXRocy5oYXNPd25Qcm9wZXJ0eSh1 KSYmYy5wdXNoKHIucGF0aHNbdV0pO2Z1bmN0aW9uIGgodCl7dmFyIGU9dC5j YXRlZ29yeUluZHMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFbZV1bdF19 KTtyZXR1cm4gby5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KX1jLnNv cnQoZnVuY3Rpb24oZSxyKXt2YXIgbj1oKGUpLGE9aChyKTtyZXR1cm4iYmFj a3dhcmQiPT09dC5zb3J0cGF0aHMmJihuLnJldmVyc2UoKSxhLnJldmVyc2Uo KSksbi5wdXNoKGUudmFsdWVJbmRzWzBdKSxhLnB1c2goci52YWx1ZUluZHNb MF0pLHQuYnVuZGxlY29sb3JzJiYobi51bnNoaWZ0KGUucmF3Q29sb3IpLGEu dW5zaGlmdChyLnJhd0NvbG9yKSksbjxhPy0xOm4+YT8xOjB9KTtmb3IodmFy IGY9bmV3IEFycmF5KGMubGVuZ3RoKSxwPWVbMF0ubW9kZWwuY291bnQsZD1l WzBdLmNhdGVnb3JpZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmhlaWdo dH0pLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSxnPTA7Zzxj Lmxlbmd0aDtnKyspe3ZhciB2LG09Y1tnXTt2PXA+MD9kKihtLmNvdW50L3Ap OjA7Zm9yKHZhciB5LHg9bmV3IEFycmF5KG4ubGVuZ3RoKSxiPTA7YjxtLmNh dGVnb3J5SW5kcy5sZW5ndGg7YisrKXt2YXIgXz1tLmNhdGVnb3J5SW5kc1ti XSx3PWFbYl1bX10saz1pW2JdO3hba109bltrXVt3XSxuW2tdW3ddKz12O3Zh ciBUPXQuZGltZW5zaW9uc1trXS5jYXRlZ29yaWVzW3ddLE09VC5iYW5kcy5s ZW5ndGgsQT1ULmJhbmRzW00tMV07aWYodm9pZCAwPT09QXx8bS5yYXdDb2xv ciE9PUEucmF3Q29sb3Ipe3ZhciBTPXZvaWQgMD09PUE/MDpBLnkrQS5oZWln aHQ7VC5iYW5kcy5wdXNoKHtrZXk6Uyxjb2xvcjptLmNvbG9yLHJhd0NvbG9y Om0ucmF3Q29sb3IsaGVpZ2h0OnYsd2lkdGg6VC53aWR0aCxjb3VudDptLmNv dW50LHk6UyxjYXRlZ29yeVZpZXdNb2RlbDpULHBhcmNhdHNWaWV3TW9kZWw6 dH0pfWVsc2V7dmFyIEU9VC5iYW5kc1tNLTFdO0UuaGVpZ2h0Kz12LEUuY291 bnQrPW0uY291bnR9fXk9ImhzcGxpbmUiPT09dC5wYXRoU2hhcGU/RChzLHgs bCx2LC41KTpEKHMseCxsLHYsMCksZltnXT17a2V5Om0udmFsdWVJbmRzWzBd LG1vZGVsOm0saGVpZ2h0OnYsbGVmdFhzOnMsdG9wWXM6eCxkaW1XaWR0aHM6 bCxzdmdEOnkscGFyY2F0c1ZpZXdNb2RlbDp0fX10LnBhdGhzPWZ9ZnVuY3Rp b24gRih0KXt2YXIgZT10Lm1vZGVsLmRpbWVuc2lvbnMubWFwKGZ1bmN0aW9u KHQpe3JldHVybntkaXNwbGF5SW5kOnQuZGlzcGxheUluZCxkaW1lbnNpb25J bmQ6dC5kaW1lbnNpb25JbmR9fSk7ZS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHQuZGlzcGxheUluZC1lLmRpc3BsYXlJbmR9KTt2YXIgcj1bXTtmb3Io dmFyIG4gaW4gZSl7dmFyIGE9ZVtuXS5kaW1lbnNpb25JbmQsaT10Lm1vZGVs LmRpbWVuc2lvbnNbYV07ci5wdXNoKEIodCxpKSl9dC5kaW1lbnNpb25zPXJ9 ZnVuY3Rpb24gQih0LGUpe3ZhciByLG49dC5tb2RlbC5kaW1lbnNpb25zLmxl bmd0aCxhPWUuZGlzcGxheUluZDtyPTQwKyhuPjE/KHQud2lkdGgtODAtMTYp LyhuLTEpOjApKmE7dmFyIGksbyxzLGwsYyx1PVtdLGg9dC5tb2RlbC5tYXhD YXRzLGY9ZS5jYXRlZ29yaWVzLmxlbmd0aCxwPWUuY291bnQsZD10LmhlaWdo dC04KihoLTEpLGc9OCooaC1mKS8yLHY9ZS5jYXRlZ29yaWVzLm1hcChmdW5j dGlvbih0KXtyZXR1cm57ZGlzcGxheUluZDp0LmRpc3BsYXlJbmQsY2F0ZWdv cnlJbmQ6dC5jYXRlZ29yeUluZH19KTtmb3Iodi5zb3J0KGZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQuZGlzcGxheUluZC1lLmRpc3BsYXlJbmR9KSxjPTA7Yzxm O2MrKylsPXZbY10uY2F0ZWdvcnlJbmQsbz1lLmNhdGVnb3JpZXNbbF0saT1w PjA/by5jb3VudC9wKmQ6MCxzPXtrZXk6by52YWx1ZUluZHNbMF0sbW9kZWw6 byx3aWR0aDoxNixoZWlnaHQ6aSx5Om51bGwhPT1vLmRyYWdZP28uZHJhZ1k6 ZyxiYW5kczpbXSxwYXJjYXRzVmlld01vZGVsOnR9LGc9ZytpKzgsdS5wdXNo KHMpO3JldHVybntrZXk6ZS5kaW1lbnNpb25JbmQseDpudWxsIT09ZS5kcmFn WD9lLmRyYWdYOnIseTowLHdpZHRoOjE2LG1vZGVsOmUsY2F0ZWdvcmllczp1 LHBhcmNhdHNWaWV3TW9kZWw6dCxkcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kOm51 bGwsZHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmQ6bnVsbCxpbml0aWFsRHJhZ0Rp bWVuc2lvbkRpc3BsYXlJbmRzOm51bGwsaW5pdGlhbERyYWdDYXRlZ29yeURp c3BsYXlJbmRzOm51bGwsZHJhZ0hhc01vdmVkOm51bGwscG90ZW50aWFsQ2xp Y2tCYW5kOm51bGx9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXt1KHIs dCxuLGUpfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4v Li4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9saWIiOjcxNywiLi4vLi4v bGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3RfYXBpL3Bsb3Rf YXBpIjo3NTIsZDM6MTY1LHRpbnljb2xvcjI6NTM2fV0sMTA4MTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3BhcmNhdHMiKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIGk9dC5fZnVsbExheW91 dCxvPWkuX3BhcGVyLHM9aS5fc2l6ZTtuKHQsbyxlLHt3aWR0aDpzLncsaGVp Z2h0OnMuaCxtYXJnaW46e3Q6cy50LHI6cy5yLGI6cy5iLGw6cy5sfX0scixh KX19LHsiLi9wYXJjYXRzIjoxMDgwfV0sMTA4MjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9y c2NhbGUvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFu L2xheW91dF9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9mb250X2F0 dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0 ZXMscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxsPXQoIi4u Ly4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheTtl LmV4cG9ydHM9e2RvbWFpbjpvKHtuYW1lOiJwYXJjb29yZHMiLHRyYWNlOiEw LGVkaXRUeXBlOiJwbG90In0pLGxhYmVsYW5nbGU6e3ZhbFR5cGU6ImFuZ2xl IixkZmx0OjAsZWRpdFR5cGU6InBsb3QifSxsYWJlbHNpZGU6e3ZhbFR5cGU6 ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCIsImJvdHRvbSJdLGRmbHQ6InRv cCIsZWRpdFR5cGU6InBsb3QifSxsYWJlbGZvbnQ6aSh7ZWRpdFR5cGU6InBs b3QifSksdGlja2ZvbnQ6aSh7ZWRpdFR5cGU6InBsb3QifSkscmFuZ2Vmb250 Omkoe2VkaXRUeXBlOiJwbG90In0pLGRpbWVuc2lvbnM6bCgiZGltZW5zaW9u Iix7bGFiZWw6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6InBsb3QifSx0 aWNrdmFsczpzKHt9LGEudGlja3ZhbHMse2VkaXRUeXBlOiJwbG90In0pLHRp Y2t0ZXh0OnMoe30sYS50aWNrdGV4dCx7ZWRpdFR5cGU6InBsb3QifSksdGlj a2Zvcm1hdDpzKHt9LGEudGlja2Zvcm1hdCx7ZWRpdFR5cGU6InBsb3QifSks dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToi cGxvdCJ9LHJhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3Zh bFR5cGU6Im51bWJlciIsZWRpdFR5cGU6InBsb3QifSx7dmFsVHlwZToibnVt YmVyIixlZGl0VHlwZToicGxvdCJ9XSxlZGl0VHlwZToicGxvdCJ9LGNvbnN0 cmFpbnRyYW5nZTp7dmFsVHlwZToiaW5mb19hcnJheSIsZnJlZUxlbmd0aDoh MCxkaW1lbnNpb25zOiIxLTIiLGl0ZW1zOlt7dmFsVHlwZToibnVtYmVyIixl ZGl0VHlwZToicGxvdCJ9LHt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJw bG90In1dLGVkaXRUeXBlOiJwbG90In0sbXVsdGlzZWxlY3Q6e3ZhbFR5cGU6 ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBsb3QifSx2YWx1ZXM6e3Zh bFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6 ImNhbGMifSksbGluZTpzKHtlZGl0VHlwZToiY2FsYyJ9LG4oImxpbmUiLHtj b2xvcnNjYWxlRGZsdDoiVmlyaWRpcyIsYXV0b0NvbG9yRGZsdDohMSxlZGl0 VHlwZU92ZXJyaWRlOiJjYWxjIn0pKX19LHsiLi4vLi4vY29tcG9uZW50cy9j b2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6 NzA4LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6Nzc3LCIuLi8u Li9wbG90cy9kb21haW4iOjc5MCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1 dGVzIjo3OTF9XSwxMDgzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4vY29uc3RhbnRzIiksYT10KCJkMyIpLGk9dCgiLi4vLi4v bGliL2d1cCIpLmtleUZ1bixvPXQoIi4uLy4uL2xpYi9ndXAiKS5yZXBlYXQs cz10KCIuLi8uLi9saWIiKS5zb3J0ZXJBc2MsbD1uLmJhci5zbmFwUmF0aW87 ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB0KigxLWwpK2UqbH12YXIgdT1uLmJh ci5zbmFwQ2xvc2U7ZnVuY3Rpb24gaCh0LGUpe3JldHVybiB0KigxLXUpK2Uq dX1mdW5jdGlvbiBmKHQsZSxyLG4pe2lmKGZ1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPTA7cjxlLmxlbmd0aDtyKyspaWYodD49ZVtyXVswXSYmdDw9ZVtyXVsx XSlyZXR1cm4hMDtyZXR1cm4hMX0ocixuKSlyZXR1cm4gcjt2YXIgYT10Py0x OjEsaT0wLG89ZS5sZW5ndGgtMTtpZihhPDApe3ZhciBzPWk7aT1vLG89c31m b3IodmFyIGw9ZVtpXSx1PWwsZj1pO2EqZjxhKm87Zis9YSl7dmFyIHA9Zith LGQ9ZVtwXTtpZihhKnI8YSpoKGwsZCkpcmV0dXJuIGMobCx1KTtpZihhKnI8 YSpkfHxwPT09bylyZXR1cm4gYyhkLGwpO3U9bCxsPWR9fWZ1bmN0aW9uIHAo dCl7dC5hdHRyKCJ4Iiwtbi5iYXIuY2FwdHVyZVdpZHRoLzIpLmF0dHIoIndp ZHRoIixuLmJhci5jYXB0dXJlV2lkdGgpfWZ1bmN0aW9uIGQodCl7dC5hdHRy KCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpLnN0eWxlKCJ2aXNpYmlsaXR5Iiwi dmlzaWJsZSIpLmF0dHIoImZpbGwiLCJ5ZWxsb3ciKS5hdHRyKCJvcGFjaXR5 IiwwKX1mdW5jdGlvbiBnKHQpe2lmKCF0LmJydXNoLmZpbHRlclNwZWNpZmll ZClyZXR1cm4iMCwiK3QuaGVpZ2h0O2Zvcih2YXIgZSxyLG4sYT12KHQuYnJ1 c2guZmlsdGVyLmdldENvbnNvbGlkYXRlZCgpLHQuaGVpZ2h0KSxpPVswXSxv PWEubGVuZ3RoP2FbMF1bMF06bnVsbCxzPTA7czxhLmxlbmd0aDtzKyspcj0o ZT1hW3NdKVsxXS1lWzBdLGkucHVzaChvKSxpLnB1c2gociksKG49cysxKTxh Lmxlbmd0aCYmKG89YVtuXVswXS1lWzFdKTtyZXR1cm4gaS5wdXNoKHQuaGVp Z2h0KSxpfWZ1bmN0aW9uIHYodCxlKXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24o dCl7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCgw LHQqZSl9KS5zb3J0KHMpfSl9ZnVuY3Rpb24gbSgpe2Euc2VsZWN0KGRvY3Vt ZW50LmJvZHkpLnN0eWxlKCJjdXJzb3IiLG51bGwpfWZ1bmN0aW9uIHkodCl7 dC5hdHRyKCJzdHJva2UtZGFzaGFycmF5IixnKX1mdW5jdGlvbiB4KHQsZSl7 dmFyIHI9YS5zZWxlY3QodCkuc2VsZWN0QWxsKCIuaGlnaGxpZ2h0LCAuaGln aGxpZ2h0LXNoYWRvdyIpO3koZT9yLnRyYW5zaXRpb24oKS5kdXJhdGlvbihu LmJhci5zbmFwRHVyYXRpb24pLmVhY2goImVuZCIsZSk6cil9ZnVuY3Rpb24g Yih0LGUpe3ZhciByLGE9dC5icnVzaCxpPU5hTixvPXt9O2lmKGEuZmlsdGVy U3BlY2lmaWVkKXt2YXIgcz10LmhlaWdodCxsPWEuZmlsdGVyLmdldENvbnNv bGlkYXRlZCgpLGM9dihsLHMpLHU9TmFOLGg9TmFOLGY9TmFOO2ZvcihyPTA7 cjw9Yy5sZW5ndGg7cisrKXt2YXIgcD1jW3JdO2lmKHAmJnBbMF08PWUmJmU8 PXBbMV0pe3U9cjticmVha31pZihoPXI/ci0xOk5hTixwJiZwWzBdPmUpe2Y9 cjticmVha319aWYoaT11LGlzTmFOKGkpJiYoaT1pc05hTihoKXx8aXNOYU4o Zik/aXNOYU4oaCk/ZjpoOmUtY1toXVsxXTxjW2ZdWzBdLWU/aDpmKSwhaXNO YU4oaSkpe3ZhciBkPWNbaV0sZz1mdW5jdGlvbih0LGUpe3ZhciByPW4uYmFy LmhhbmRsZUhlaWdodDtpZighKGU+dFsxXStyfHxlPHRbMF0tcikpcmV0dXJu IGU+PS45KnRbMV0rLjEqdFswXT8ibiI6ZTw9LjkqdFswXSsuMSp0WzFdPyJz IjoibnMifShkLGUpO2cmJihvLmludGVydmFsPWxbaV0sby5pbnRlcnZhbFBp eD1kLG8ucmVnaW9uPWcpfX1pZih0Lm9yZGluYWwmJiFvLnJlZ2lvbil7dmFy IG09dC51bml0VGlja3ZhbHMseT10LnVuaXRUb1BhZGRlZFB4LmludmVydChl KTtmb3Iocj0wO3I8bS5sZW5ndGg7cisrKXt2YXIgeD1bLjI1Km1bTWF0aC5t YXgoci0xLDApXSsuNzUqbVtyXSwuMjUqbVtNYXRoLm1pbihyKzEsbS5sZW5n dGgtMSldKy43NSptW3JdXTtpZih5Pj14WzBdJiZ5PD14WzFdKXtvLmNsaWNr YWJsZU9yZGluYWxSYW5nZT14O2JyZWFrfX19cmV0dXJuIG99ZnVuY3Rpb24g Xyh0LGUpe2EuZXZlbnQuc291cmNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7 dmFyIHI9ZS5oZWlnaHQtYS5tb3VzZSh0KVsxXS0yKm4udmVydGljYWxQYWRk aW5nLGk9ZS5icnVzaC5zdmdCcnVzaDtpLndhc0RyYWdnZWQ9ITAsaS5fZHJh Z2dpbmc9ITAsaS5ncmFiYmluZ0Jhcj9pLm5ld0V4dGVudD1bci1pLmdyYWJQ b2ludCxyK2kuYmFyTGVuZ3RoLWkuZ3JhYlBvaW50XS5tYXAoZS51bml0VG9Q YWRkZWRQeC5pbnZlcnQpOmkubmV3RXh0ZW50PVtpLnN0YXJ0RXh0ZW50LGUu dW5pdFRvUGFkZGVkUHguaW52ZXJ0KHIpXS5zb3J0KHMpLGUuYnJ1c2guZmls dGVyU3BlY2lmaWVkPSEwLGkuZXh0ZW50PWkuc3RheWluZ0ludGVydmFscy5j b25jYXQoW2kubmV3RXh0ZW50XSksaS5icnVzaENhbGxiYWNrKGUpLHgodC5w YXJlbnROb2RlKX1mdW5jdGlvbiB3KHQsZSl7dmFyIHI9YihlLGUuaGVpZ2h0 LWEubW91c2UodClbMV0tMipuLnZlcnRpY2FsUGFkZGluZyksaT0iY3Jvc3No YWlyIjtyLmNsaWNrYWJsZU9yZGluYWxSYW5nZT9pPSJwb2ludGVyIjpyLnJl Z2lvbiYmKGk9ci5yZWdpb24rIi1yZXNpemUiKSxhLnNlbGVjdChkb2N1bWVu dC5ib2R5KS5zdHlsZSgiY3Vyc29yIixpKX1mdW5jdGlvbiBrKHQpe3Qub24o Im1vdXNlbW92ZSIsZnVuY3Rpb24odCl7YS5ldmVudC5wcmV2ZW50RGVmYXVs dCgpLHQucGFyZW50LmluQnJ1c2hEcmFnfHx3KHRoaXMsdCl9KS5vbigibW91 c2VsZWF2ZSIsZnVuY3Rpb24odCl7dC5wYXJlbnQuaW5CcnVzaERyYWd8fG0o KX0pLmNhbGwoYS5iZWhhdmlvci5kcmFnKCkub24oImRyYWdzdGFydCIsZnVu Y3Rpb24odCl7IWZ1bmN0aW9uKHQsZSl7YS5ldmVudC5zb3VyY2VFdmVudC5z dG9wUHJvcGFnYXRpb24oKTt2YXIgcj1lLmhlaWdodC1hLm1vdXNlKHQpWzFd LTIqbi52ZXJ0aWNhbFBhZGRpbmcsaT1lLnVuaXRUb1BhZGRlZFB4LmludmVy dChyKSxvPWUuYnJ1c2gscz1iKGUsciksbD1zLmludGVydmFsLGM9by5zdmdC cnVzaDtpZihjLndhc0RyYWdnZWQ9ITEsYy5ncmFiYmluZ0Jhcj0ibnMiPT09 cy5yZWdpb24sYy5ncmFiYmluZ0Jhcil7dmFyIHU9bC5tYXAoZS51bml0VG9Q YWRkZWRQeCk7Yy5ncmFiUG9pbnQ9ci11WzBdLW4udmVydGljYWxQYWRkaW5n LGMuYmFyTGVuZ3RoPXVbMV0tdVswXX1jLmNsaWNrYWJsZU9yZGluYWxSYW5n ZT1zLmNsaWNrYWJsZU9yZGluYWxSYW5nZSxjLnN0YXlpbmdJbnRlcnZhbHM9 ZS5tdWx0aXNlbGVjdCYmby5maWx0ZXJTcGVjaWZpZWQ/by5maWx0ZXIuZ2V0 Q29uc29saWRhdGVkKCk6W10sbCYmKGMuc3RheWluZ0ludGVydmFscz1jLnN0 YXlpbmdJbnRlcnZhbHMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBd IT09bFswXSYmdFsxXSE9PWxbMV19KSksYy5zdGFydEV4dGVudD1zLnJlZ2lv bj9sWyJzIj09PXMucmVnaW9uPzE6MF06aSxlLnBhcmVudC5pbkJydXNoRHJh Zz0hMCxjLmJydXNoU3RhcnRDYWxsYmFjaygpfSh0aGlzLHQpfSkub24oImRy YWciLGZ1bmN0aW9uKHQpe18odGhpcyx0KX0pLm9uKCJkcmFnZW5kIixmdW5j dGlvbih0KXshZnVuY3Rpb24odCxlKXt2YXIgcj1lLmJydXNoLG49ci5maWx0 ZXIsaT1yLnN2Z0JydXNoO2kuX2RyYWdnaW5nfHwodyh0LGUpLF8odCxlKSxl LmJydXNoLnN2Z0JydXNoLndhc0RyYWdnZWQ9ITEpLGkuX2RyYWdnaW5nPSEx LGEuZXZlbnQuc291cmNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIG89 aS5ncmFiYmluZ0JhcjtpZihpLmdyYWJiaW5nQmFyPSExLGkuZ3JhYkxvY2F0 aW9uPXZvaWQgMCxlLnBhcmVudC5pbkJydXNoRHJhZz0hMSxtKCksIWkud2Fz RHJhZ2dlZClyZXR1cm4gaS53YXNEcmFnZ2VkPXZvaWQgMCxpLmNsaWNrYWJs ZU9yZGluYWxSYW5nZT9yLmZpbHRlclNwZWNpZmllZCYmZS5tdWx0aXNlbGVj dD9pLmV4dGVudC5wdXNoKGkuY2xpY2thYmxlT3JkaW5hbFJhbmdlKTooaS5l eHRlbnQ9W2kuY2xpY2thYmxlT3JkaW5hbFJhbmdlXSxyLmZpbHRlclNwZWNp ZmllZD0hMCk6bz8oaS5leHRlbnQ9aS5zdGF5aW5nSW50ZXJ2YWxzLDA9PT1p LmV4dGVudC5sZW5ndGgmJk0ocikpOk0ociksaS5icnVzaENhbGxiYWNrKGUp LHgodC5wYXJlbnROb2RlKSx2b2lkIGkuYnJ1c2hFbmRDYWxsYmFjayhyLmZp bHRlclNwZWNpZmllZD9uLmdldENvbnNvbGlkYXRlZCgpOltdKTt2YXIgcz1m dW5jdGlvbigpe24uc2V0KG4uZ2V0Q29uc29saWRhdGVkKCkpfTtpZihlLm9y ZGluYWwpe3ZhciBsPWUudW5pdFRpY2t2YWxzO2xbbC5sZW5ndGgtMV08bFsw XSYmbC5yZXZlcnNlKCksaS5uZXdFeHRlbnQ9W2YoMCxsLGkubmV3RXh0ZW50 WzBdLGkuc3RheWluZ0ludGVydmFscyksZigxLGwsaS5uZXdFeHRlbnRbMV0s aS5zdGF5aW5nSW50ZXJ2YWxzKV07dmFyIGM9aS5uZXdFeHRlbnRbMV0+aS5u ZXdFeHRlbnRbMF07aS5leHRlbnQ9aS5zdGF5aW5nSW50ZXJ2YWxzLmNvbmNh dChjP1tpLm5ld0V4dGVudF06W10pLGkuZXh0ZW50Lmxlbmd0aHx8TShyKSxp LmJydXNoQ2FsbGJhY2soZSksYz94KHQucGFyZW50Tm9kZSxzKToocygpLHgo dC5wYXJlbnROb2RlKSl9ZWxzZSBzKCk7aS5icnVzaEVuZENhbGxiYWNrKHIu ZmlsdGVyU3BlY2lmaWVkP24uZ2V0Q29uc29saWRhdGVkKCk6W10pfSh0aGlz LHQpfSkpfWZ1bmN0aW9uIFQodCxlKXtyZXR1cm4gdFswXS1lWzBdfWZ1bmN0 aW9uIE0odCl7dC5maWx0ZXJTcGVjaWZpZWQ9ITEsdC5zdmdCcnVzaC5leHRl bnQ9W1stMS8wLDEvMF1dfWZ1bmN0aW9uIEEodCl7Zm9yKHZhciBlLHI9dC5z bGljZSgpLG49W10sYT1yLnNoaWZ0KCk7YTspe2ZvcihlPWEuc2xpY2UoKTso YT1yLnNoaWZ0KCkpJiZhWzBdPD1lWzFdOyllWzFdPU1hdGgubWF4KGVbMV0s YVsxXSk7bi5wdXNoKGUpfXJldHVybiBufWUuZXhwb3J0cz17bWFrZUJydXNo OmZ1bmN0aW9uKHQsZSxyLG4sYSxpKXt2YXIgbyxsPWZ1bmN0aW9uKCl7dmFy IHQsZSxyPVtdO3JldHVybntzZXQ6ZnVuY3Rpb24obil7MT09PShyPW4ubWFw KGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKCkuc29ydChzKX0pLnNvcnQo VCkpLmxlbmd0aCYmclswXVswXT09PS0xLzAmJnJbMF1bMV09PT0xLzAmJihy PVtbMCwtMV1dKSx0PUEociksZT1yLnJlZHVjZShmdW5jdGlvbih0LGUpe3Jl dHVybltNYXRoLm1pbih0WzBdLGVbMF0pLE1hdGgubWF4KHRbMV0sZVsxXSld fSxbMS8wLC0xLzBdKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2Uo KX0sZ2V0Q29uc29saWRhdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHR9LGdldEJv dW5kczpmdW5jdGlvbigpe3JldHVybiBlfX19KCk7cmV0dXJuIGwuc2V0KHIp LHtmaWx0ZXI6bCxmaWx0ZXJTcGVjaWZpZWQ6ZSxzdmdCcnVzaDp7ZXh0ZW50 OltdLGJydXNoU3RhcnRDYWxsYmFjazpuLGJydXNoQ2FsbGJhY2s6KG89YSxm dW5jdGlvbih0KXt2YXIgZT10LmJydXNoLHI9ZnVuY3Rpb24odCl7cmV0dXJu IHQuc3ZnQnJ1c2guZXh0ZW50Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5z bGljZSgpfSl9KGUpLnNsaWNlKCk7ZS5maWx0ZXIuc2V0KHIpLG8oKX0pLGJy dXNoRW5kQ2FsbGJhY2s6aX19fSxlbnN1cmVBeGlzQnJ1c2g6ZnVuY3Rpb24o dCl7dmFyIGU9dC5zZWxlY3RBbGwoIi4iK24uY24uYXhpc0JydXNoKS5kYXRh KG8saSk7ZS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi5heGlz QnJ1c2gsITApLGZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VsZWN0QWxsKCIuYmFj a2dyb3VuZCIpLmRhdGEobyk7ZS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmNs YXNzZWQoImJhY2tncm91bmQiLCEwKS5jYWxsKHApLmNhbGwoZCkuc3R5bGUo InBvaW50ZXItZXZlbnRzIiwiYXV0byIpLmF0dHIoInRyYW5zZm9ybSIsInRy YW5zbGF0ZSgwICIrbi52ZXJ0aWNhbFBhZGRpbmcrIikiKSxlLmNhbGwoayku YXR0cigiaGVpZ2h0IixmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHQtbi52 ZXJ0aWNhbFBhZGRpbmd9KTt2YXIgcj10LnNlbGVjdEFsbCgiLmhpZ2hsaWdo dC1zaGFkb3ciKS5kYXRhKG8pO3IuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5j bGFzc2VkKCJoaWdobGlnaHQtc2hhZG93IiwhMCkuYXR0cigieCIsLW4uYmFy LndpZHRoLzIpLmF0dHIoInN0cm9rZS13aWR0aCIsbi5iYXIud2lkdGgrbi5i YXIuc3Ryb2tlV2lkdGgpLmF0dHIoInN0cm9rZSIsbi5iYXIuc3Ryb2tlQ29s b3IpLmF0dHIoIm9wYWNpdHkiLG4uYmFyLnN0cm9rZU9wYWNpdHkpLmF0dHIo InN0cm9rZS1saW5lY2FwIiwiYnV0dCIpLHIuYXR0cigieTEiLGZ1bmN0aW9u KHQpe3JldHVybiB0LmhlaWdodH0pLmNhbGwoeSk7dmFyIGE9dC5zZWxlY3RB bGwoIi5oaWdobGlnaHQiKS5kYXRhKG8pO2EuZW50ZXIoKS5hcHBlbmQoImxp bmUiKS5jbGFzc2VkKCJoaWdobGlnaHQiLCEwKS5hdHRyKCJ4Iiwtbi5iYXIu d2lkdGgvMikuYXR0cigic3Ryb2tlLXdpZHRoIixuLmJhci53aWR0aC1uLmJh ci5zdHJva2VXaWR0aCkuYXR0cigic3Ryb2tlIixuLmJhci5maWxsQ29sb3Ip LmF0dHIoIm9wYWNpdHkiLG4uYmFyLmZpbGxPcGFjaXR5KS5hdHRyKCJzdHJv a2UtbGluZWNhcCIsImJ1dHQiKSxhLmF0dHIoInkxIixmdW5jdGlvbih0KXty ZXR1cm4gdC5oZWlnaHR9KS5jYWxsKHkpfShlKX0sY2xlYW5SYW5nZXM6ZnVu Y3Rpb24odCxlKXtpZihBcnJheS5pc0FycmF5KHRbMF0pPyh0PXQubWFwKGZ1 bmN0aW9uKHQpe3JldHVybiB0LnNvcnQocyl9KSx0PWUubXVsdGlzZWxlY3Q/ QSh0LnNvcnQoVCkpOlt0WzBdXSk6dD1bdC5zb3J0KHMpXSxlLnRpY2t2YWxz KXt2YXIgcj1lLnRpY2t2YWxzLnNsaWNlKCkuc29ydChzKTtpZighKHQ9dC5t YXAoZnVuY3Rpb24odCl7dmFyIGU9W2YoMCxyLHRbMF0sW10pLGYoMSxyLHRb MV0sW10pXTtpZihlWzFdPmVbMF0pcmV0dXJuIGV9KS5maWx0ZXIoZnVuY3Rp b24odCl7cmV0dXJuIHR9KSkubGVuZ3RoKXJldHVybn1yZXR1cm4gdC5sZW5n dGg+MT90OnRbMF19fX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2d1 cCI6NzE1LCIuL2NvbnN0YW50cyI6MTA4NixkMzoxNjV9XSwxMDg0OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIu Li8uLi9wbG90cy9nZXRfZGF0YSIpLmdldE1vZHVsZUNhbGNEYXRhLGk9dCgi Li9wbG90Iiksbz10KCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNl cyIpO3IubmFtZT0icGFyY29vcmRzIixyLnBsb3Q9ZnVuY3Rpb24odCl7dmFy IGU9YSh0LmNhbGNkYXRhLCJwYXJjb29yZHMiKVswXTtlLmxlbmd0aCYmaSh0 LGUpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPW4uX2hhcyYm bi5faGFzKCJwYXJjb29yZHMiKSxpPWUuX2hhcyYmZS5faGFzKCJwYXJjb29y ZHMiKTthJiYhaSYmKG4uX3BhcGVyZGl2LnNlbGVjdEFsbCgiLnBhcmNvb3Jk cyIpLnJlbW92ZSgpLG4uX2dsaW1hZ2VzLnNlbGVjdEFsbCgiKiIpLnJlbW92 ZSgpKX0sci50b1NWRz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0 Ll9nbGltYWdlcyxyPW4uc2VsZWN0KHQpLnNlbGVjdEFsbCgiLnN2Zy1jb250 YWluZXIiKTtyLmZpbHRlcihmdW5jdGlvbih0LGUpe3JldHVybiBlPT09ci5z aXplKCktMX0pLnNlbGVjdEFsbCgiLmdsLWNhbnZhcy1jb250ZXh0LCAuZ2wt Y2FudmFzLWZvY3VzIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PXRoaXMudG9E YXRhVVJMKCJpbWFnZS9wbmciKTtlLmFwcGVuZCgic3ZnOmltYWdlIikuYXR0 cih7eG1sbnM6by5zdmcsInhsaW5rOmhyZWYiOnQscHJlc2VydmVBc3BlY3RS YXRpbzoibm9uZSIseDowLHk6MCx3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0 aGlzLmhlaWdodH0pfSksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtu LnNlbGVjdEFsbCgiI2ZpbHRlckJhclBhdHRlcm4iKS5hdHRyKCJpZCIsImZp bHRlckJhclBhdHRlcm4iKX0sNjApfX0seyIuLi8uLi9jb25zdGFudHMveG1s bnNfbmFtZXNwYWNlcyI6Njk0LCIuLi8uLi9wbG90cy9nZXRfZGF0YSI6ODAw LCIuL3Bsb3QiOjEwOTMsZDM6MTY1fV0sMTA4NTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKS5pc0FycmF5T3JU eXBlZEFycmF5LGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIiks aT10KCIuLi8uLi9saWIvZ3VwIikud3JhcDtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXt2YXIgcixvO3JldHVybiBhLmhhc0NvbG9yc2NhbGUoZSwibGluZSIp JiZuKGUubGluZS5jb2xvcik/KHI9ZS5saW5lLmNvbG9yLG89YS5leHRyYWN0 T3B0cyhlLmxpbmUpLmNvbG9yc2NhbGUsYS5jYWxjKHQsZSx7dmFsczpyLGNv bnRhaW5lclN0cjoibGluZSIsY0xldHRlcjoiYyJ9KSk6KHI9ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyllW3JdPS41 O3JldHVybiBlfShlLl9sZW5ndGgpLG89W1swLGUubGluZS5jb2xvcl0sWzEs ZS5saW5lLmNvbG9yXV0pLGkoe2xpbmVDb2xvcjpyLGNzY2FsZTpvfSl9fSx7 Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6NjA0LCIuLi8uLi9saWIi OjcxNywiLi4vLi4vbGliL2d1cCI6NzE1fV0sMTA4NjpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21heERpbWVuc2lvbkNvdW50 OjYwLG92ZXJkcmFnOjQ1LHZlcnRpY2FsUGFkZGluZzoyLHRpY2tEaXN0YW5j ZTo1MCxjYW52YXNQaXhlbFJhdGlvOjEsYmxvY2tMaW5lQ291bnQ6NWUzLGxh eWVyczpbImNvbnRleHRMaW5lTGF5ZXIiLCJmb2N1c0xpbmVMYXllciIsInBp Y2tMaW5lTGF5ZXIiXSxheGlzVGl0bGVPZmZzZXQ6MjgsYXhpc0V4dGVudE9m ZnNldDoxMCxkZXNlbGVjdGVkTGluZUNvbG9yOiIjNzc3IixiYXI6e3dpZHRo OjQsY2FwdHVyZVdpZHRoOjEwLGZpbGxDb2xvcjoibWFnZW50YSIsZmlsbE9w YWNpdHk6MSxzbmFwRHVyYXRpb246MTUwLHNuYXBSYXRpbzouMjUsc25hcENs b3NlOi4wMSxzdHJva2VDb2xvcjoid2hpdGUiLHN0cm9rZU9wYWNpdHk6MSxz dHJva2VXaWR0aDoxLGhhbmRsZUhlaWdodDo4LGhhbmRsZU9wYWNpdHk6MSxo YW5kbGVPdmVybGFwOjB9LGNuOntheGlzRXh0ZW50VGV4dDoiYXhpcy1leHRl bnQtdGV4dCIscGFyY29vcmRzTGluZUxheWVyczoicGFyY29vcmRzLWxpbmUt bGF5ZXJzIixwYXJjb29yZHNMaW5lTGF5ZXI6InBhcmNvb3Jkcy1saW5lcyIs cGFyY29vcmRzOiJwYXJjb29yZHMiLHBhcmNvb3Jkc0NvbnRyb2xWaWV3OiJw YXJjb29yZHMtY29udHJvbC12aWV3Iix5QXhpczoieS1heGlzIixheGlzT3Zl cmxheXM6ImF4aXMtb3ZlcmxheXMiLGF4aXM6ImF4aXMiLGF4aXNIZWFkaW5n OiJheGlzLWhlYWRpbmciLGF4aXNUaXRsZToiYXhpcy10aXRsZSIsYXhpc0V4 dGVudDoiYXhpcy1leHRlbnQiLGF4aXNFeHRlbnRUb3A6ImF4aXMtZXh0ZW50 LXRvcCIsYXhpc0V4dGVudFRvcFRleHQ6ImF4aXMtZXh0ZW50LXRvcC10ZXh0 IixheGlzRXh0ZW50Qm90dG9tOiJheGlzLWV4dGVudC1ib3R0b20iLGF4aXNF eHRlbnRCb3R0b21UZXh0OiJheGlzLWV4dGVudC1ib3R0b20tdGV4dCIsYXhp c0JydXNoOiJheGlzLWJydXNoIn0saWQ6e2ZpbHRlckJhclBhdHRlcm46ImZp bHRlci1iYXItcGF0dGVybiJ9fX0se31dLDEwODc6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8u Li9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2Nh bGUsaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMi KSxvPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRlZmF1bHRzLHM9dCgiLi4v Li4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbD10KCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGM9dCgiLi9hdHRyaWJ1dGVzIiks dT10KCIuL2F4aXNicnVzaCIpLGg9dCgiLi9jb25zdGFudHMiKS5tYXhEaW1l bnNpb25Db3VudCxmPXQoIi4vbWVyZ2VfbGVuZ3RoIik7ZnVuY3Rpb24gcCh0 LGUscixhKXtmdW5jdGlvbiBpKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxj LmRpbWVuc2lvbnMscixhKX12YXIgbz1pKCJ2YWx1ZXMiKSxzPWkoInZpc2li bGUiKTtpZihvJiZvLmxlbmd0aHx8KHM9ZS52aXNpYmxlPSExKSxzKXtpKCJs YWJlbCIpLGkoInRpY2t2YWxzIiksaSgidGlja3RleHQiKSxpKCJ0aWNrZm9y bWF0Iik7dmFyIGg9aSgicmFuZ2UiKTtlLl9heD17X2lkOiJ5Iix0eXBlOiJs aW5lYXIiLHNob3dleHBvbmVudDoiYWxsIixleHBvbmVudGZvcm1hdDoiQiIs cmFuZ2U6aH0sbC5zZXRDb252ZXJ0KGUuX2F4LGEubGF5b3V0KSxpKCJtdWx0 aXNlbGVjdCIpO3ZhciBmPWkoImNvbnN0cmFpbnRyYW5nZSIpO2YmJihlLmNv bnN0cmFpbnRyYW5nZT11LmNsZWFuUmFuZ2VzKGYsZSkpfX1lLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gdShyLGEpe3JldHVybiBuLmNv ZXJjZSh0LGUsYyxyLGEpfXZhciBkPXQuZGltZW5zaW9ucztBcnJheS5pc0Fy cmF5KGQpJiZkLmxlbmd0aD5oJiYobi5sb2coInBhcmNvb3JkcyB0cmFjZXMg c3VwcG9ydCB1cCB0byAiK2grIiBkaW1lbnNpb25zIGF0IHRoZSBtb21lbnQi KSxkLnNwbGljZShoKSk7dmFyIGc9cyh0LGUse25hbWU6ImRpbWVuc2lvbnMi LGxheW91dDpsLGhhbmRsZUl0ZW1EZWZhdWx0czpwfSksdj1mdW5jdGlvbih0 LGUscixvLHMpe3ZhciBsPXMoImxpbmUuY29sb3IiLHIpO2lmKGEodCwibGlu ZSIpJiZuLmlzQXJyYXlPclR5cGVkQXJyYXkobCkpe2lmKGwubGVuZ3RoKXJl dHVybiBzKCJsaW5lLmNvbG9yc2NhbGUiKSxpKHQsZSxvLHMse3ByZWZpeDoi bGluZS4iLGNMZXR0ZXI6ImMifSksbC5sZW5ndGg7ZS5saW5lLmNvbG9yPXJ9 cmV0dXJuIDEvMH0odCxlLHIsbCx1KTtvKGUsbCx1KSxBcnJheS5pc0FycmF5 KGcpJiZnLmxlbmd0aHx8KGUudmlzaWJsZT0hMSksZihlLGcsInZhbHVlcyIs dik7dmFyIG09e2ZhbWlseTpsLmZvbnQuZmFtaWx5LHNpemU6TWF0aC5yb3Vu ZChsLmZvbnQuc2l6ZS8xLjIpLGNvbG9yOmwuZm9udC5jb2xvcn07bi5jb2Vy Y2VGb250KHUsImxhYmVsZm9udCIsbSksbi5jb2VyY2VGb250KHUsInRpY2tm b250IixtKSxuLmNvZXJjZUZvbnQodSwicmFuZ2Vmb250IixtKSx1KCJsYWJl bGFuZ2xlIiksdSgibGFiZWxzaWRlIil9fSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvaGVscGVycyI6NjAzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4v cGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6 NzkwLCIuL2F0dHJpYnV0ZXMiOjEwODIsIi4vYXhpc2JydXNoIjoxMDgzLCIu L2NvbnN0YW50cyI6MTA4NiwiLi9tZXJnZV9sZW5ndGgiOjEwOTF9XSwxMDg4 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLmlzVHlwZWRBcnJheTtyLmNvbnZlcnRUeXBlZEFycmF5PWZ1bmN0 aW9uKHQpe3JldHVybiBuKHQpP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs KHQpOnR9LHIuaXNPcmRpbmFsPWZ1bmN0aW9uKHQpe3JldHVybiEhdC50aWNr dmFsc30sci5pc1Zpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlzaWJs ZXx8ISgidmlzaWJsZSJpbiB0KX19LHsiLi4vLi4vbGliIjo3MTd9XSwxMDg5 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0 cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIu L2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIp LGNvbG9yYmFyOntjb250YWluZXI6ImxpbmUiLG1pbjoiY21pbiIsbWF4OiJj bWF4In0sbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InBhcmNvb3JkcyIsYmFz ZVBsb3RNb2R1bGU6dCgiLi9iYXNlX3Bsb3QiKSxjYXRlZ29yaWVzOlsiZ2wi LCJyZWdsIiwibm9PcGFjaXR5Iiwibm9Ib3ZlciJdLG1ldGE6e319fSx7Ii4v YXR0cmlidXRlcyI6MTA4MiwiLi9iYXNlX3Bsb3QiOjEwODQsIi4vY2FsYyI6 MTA4NSwiLi9kZWZhdWx0cyI6MTA4NywiLi9wbG90IjoxMDkzfV0sMTA5MDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbHNsaWZ5 IiksYT1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNM SUZZIDFcblxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxuYXR0cmlidXRl IHZlYzQgcDAxXzA0LCBwMDVfMDgsIHAwOV8xMiwgcDEzXzE2LFxuICAgICAg ICAgICAgICAgcDE3XzIwLCBwMjFfMjQsIHAyNV8yOCwgcDI5XzMyLFxuICAg ICAgICAgICAgICAgcDMzXzM2LCBwMzdfNDAsIHA0MV80NCwgcDQ1XzQ4LFxu ICAgICAgICAgICAgICAgcDQ5XzUyLCBwNTNfNTYsIHA1N182MCwgY29sb3Jz O1xuXG51bmlmb3JtIG1hdDQgZGltMEEsIGRpbTFBLCBkaW0wQiwgZGltMUIs IGRpbTBDLCBkaW0xQywgZGltMEQsIGRpbTFELFxuICAgICAgICAgICAgIGxv QSwgaGlBLCBsb0IsIGhpQiwgbG9DLCBoaUMsIGxvRCwgaGlEO1xuXG51bmlm b3JtIHZlYzIgcmVzb2x1dGlvbiwgdmlld0JveFBvcywgdmlld0JveFNpemU7 XG51bmlmb3JtIHNhbXBsZXIyRCBtYXNrLCBwYWxldHRlO1xudW5pZm9ybSBm bG9hdCBtYXNrSGVpZ2h0O1xudW5pZm9ybSBmbG9hdCBkcndMYXllcjsgLy8g MDogY29udGV4dCwgMTogZm9jdXMsIDI6IHBpY2tcbnVuaWZvcm0gdmVjNCBj b250ZXh0Q29sb3I7XG5cbmJvb2wgaXNQaWNrICAgID0gKGRyd0xheWVyID4g MS41KTtcbmJvb2wgaXNDb250ZXh0ID0gKGRyd0xheWVyIDwgMC41KTtcblxu Y29uc3QgdmVjNCBaRVJPUyA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTtc bmNvbnN0IHZlYzQgVU5JVFMgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7 XG5cbmZsb2F0IHZhbChtYXQ0IHAsIG1hdDQgdikge1xuICAgIHJldHVybiBk b3QobWF0cml4Q29tcE11bHQocCwgdikgKiBVTklUUywgVU5JVFMpO1xufVxu XG5mbG9hdCBheGlzWShmbG9hdCByYXRpbywgbWF0NCBBLCBtYXQ0IEIsIG1h dDQgQywgbWF0NCBEKSB7XG4gICAgZmxvYXQgeTEgPSB2YWwoQSwgZGltMEEp ICsgdmFsKEIsIGRpbTBCKSArIHZhbChDLCBkaW0wQykgKyB2YWwoRCwgZGlt MEQpO1xuICAgIGZsb2F0IHkyID0gdmFsKEEsIGRpbTFBKSArIHZhbChCLCBk aW0xQikgKyB2YWwoQywgZGltMUMpICsgdmFsKEQsIGRpbTFEKTtcbiAgICBy ZXR1cm4geTEgKiAoMS4wIC0gcmF0aW8pICsgeTIgKiByYXRpbztcbn1cblxu aW50IGlNb2QoaW50IGEsIGludCBiKSB7XG4gICAgcmV0dXJuIGEgLSBiICog KGEgLyBiKTtcbn1cblxuYm9vbCBmT3V0c2lkZShmbG9hdCBwLCBmbG9hdCBs bywgZmxvYXQgaGkpIHtcbiAgICByZXR1cm4gKGxvIDwgaGkpICYmIChsbyA+ IHAgfHwgcCA+IGhpKTtcbn1cblxuYm9vbCB2T3V0c2lkZSh2ZWM0IHAsIHZl YzQgbG8sIHZlYzQgaGkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBmT3V0 c2lkZShwWzBdLCBsb1swXSwgaGlbMF0pIHx8XG4gICAgICAgIGZPdXRzaWRl KHBbMV0sIGxvWzFdLCBoaVsxXSkgfHxcbiAgICAgICAgZk91dHNpZGUocFsy XSwgbG9bMl0sIGhpWzJdKSB8fFxuICAgICAgICBmT3V0c2lkZShwWzNdLCBs b1szXSwgaGlbM10pXG4gICAgKTtcbn1cblxuYm9vbCBtT3V0c2lkZShtYXQ0 IHAsIG1hdDQgbG8sIG1hdDQgaGkpIHtcbiAgICByZXR1cm4gKFxuICAgICAg ICB2T3V0c2lkZShwWzBdLCBsb1swXSwgaGlbMF0pIHx8XG4gICAgICAgIHZP dXRzaWRlKHBbMV0sIGxvWzFdLCBoaVsxXSkgfHxcbiAgICAgICAgdk91dHNp ZGUocFsyXSwgbG9bMl0sIGhpWzJdKSB8fFxuICAgICAgICB2T3V0c2lkZShw WzNdLCBsb1szXSwgaGlbM10pXG4gICAgKTtcbn1cblxuYm9vbCBvdXRzaWRl Qm91bmRpbmdCb3gobWF0NCBBLCBtYXQ0IEIsIG1hdDQgQywgbWF0NCBEKSB7 XG4gICAgcmV0dXJuIG1PdXRzaWRlKEEsIGxvQSwgaGlBKSB8fFxuICAgICAg ICAgICBtT3V0c2lkZShCLCBsb0IsIGhpQikgfHxcbiAgICAgICAgICAgbU91 dHNpZGUoQywgbG9DLCBoaUMpIHx8XG4gICAgICAgICAgIG1PdXRzaWRlKEQs IGxvRCwgaGlEKTtcbn1cblxuYm9vbCBvdXRzaWRlUmFzdGVyTWFzayhtYXQ0 IEEsIG1hdDQgQiwgbWF0NCBDLCBtYXQ0IEQpIHtcbiAgICBtYXQ0IHBudHNb NF07XG4gICAgcG50c1swXSA9IEE7XG4gICAgcG50c1sxXSA9IEI7XG4gICAg cG50c1syXSA9IEM7XG4gICAgcG50c1szXSA9IEQ7XG5cbiAgICBmb3IoaW50 IGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICAgIGZvcihpbnQgaiA9IDA7 IGogPCA0OyArK2opIHtcbiAgICAgICAgICAgIGZvcihpbnQgayA9IDA7IGsg PCA0OyArK2spIHtcbiAgICAgICAgICAgICAgICBpZigwID09IGlNb2QoXG4g ICAgICAgICAgICAgICAgICAgIGludCgyNTUuMCAqIHRleHR1cmUyRChtYXNr LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmVjMihcbiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZmxvYXQoaSAqIDIgKyBqIC8gMikgKyAwLjUp IC8gOC4wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbnRzW2ld W2pdW2tdICogKG1hc2tIZWlnaHQgLSAxLjApICsgMS4wKSAvIG1hc2tIZWln aHRcbiAgICAgICAgICAgICAgICAgICAgICAgICkpWzNdXG4gICAgICAgICAg ICAgICAgICAgICkgLyBpbnQocG93KDIuMCwgZmxvYXQoaU1vZChqICogNCAr IGssIDgpKSkpLFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAg ICAgICAgKSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAg IH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG52ZWM0IHBvc2l0 aW9uKGJvb2wgaXNDb250ZXh0LCBmbG9hdCB2LCBtYXQ0IEEsIG1hdDQgQiwg bWF0NCBDLCBtYXQ0IEQpIHtcbiAgICBmbG9hdCB4ID0gMC41ICogc2lnbih2 KSArIDAuNTtcbiAgICBmbG9hdCB5ID0gYXhpc1koeCwgQSwgQiwgQywgRCk7 XG4gICAgZmxvYXQgeiA9IDEuMCAtIGFicyh2KTtcblxuICAgIHogKz0gaXND b250ZXh0ID8gMC4wIDogMi4wICogZmxvYXQoXG4gICAgICAgIG91dHNpZGVC b3VuZGluZ0JveChBLCBCLCBDLCBEKSB8fFxuICAgICAgICBvdXRzaWRlUmFz dGVyTWFzayhBLCBCLCBDLCBEKVxuICAgICk7XG5cbiAgICByZXR1cm4gdmVj NChcbiAgICAgICAgMi4wICogKHZlYzIoeCwgeSkgKiB2aWV3Qm94U2l6ZSAr IHZpZXdCb3hQb3MpIC8gcmVzb2x1dGlvbiAtIDEuMCxcbiAgICAgICAgeixc biAgICAgICAgMS4wXG4gICAgKTtcbn1cblxudm9pZCBtYWluKCkge1xuICAg IG1hdDQgQSA9IG1hdDQocDAxXzA0LCBwMDVfMDgsIHAwOV8xMiwgcDEzXzE2 KTtcbiAgICBtYXQ0IEIgPSBtYXQ0KHAxN18yMCwgcDIxXzI0LCBwMjVfMjgs IHAyOV8zMik7XG4gICAgbWF0NCBDID0gbWF0NChwMzNfMzYsIHAzN180MCwg cDQxXzQ0LCBwNDVfNDgpO1xuICAgIG1hdDQgRCA9IG1hdDQocDQ5XzUyLCBw NTNfNTYsIHA1N182MCwgWkVST1MpO1xuXG4gICAgZmxvYXQgdiA9IGNvbG9y c1szXTtcblxuICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb24oaXNDb250ZXh0 LCB2LCBBLCBCLCBDLCBEKTtcblxuICAgIGZyYWdDb2xvciA9XG4gICAgICAg IGlzQ29udGV4dCA/IHZlYzQoY29udGV4dENvbG9yKSA6XG4gICAgICAgIGlz UGljayA/IHZlYzQoY29sb3JzLnJnYiwgMS4wKSA6IHRleHR1cmUyRChwYWxl dHRlLCB2ZWMyKGFicyh2KSwgMC41KSk7XG59XG4iXSksaT1uKFsicHJlY2lz aW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudmFyeWlu ZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICAgIGdsX0Zy YWdDb2xvciA9IGZyYWdDb2xvcjtcbn1cbiJdKSxvPXQoIi4vY29uc3RhbnRz IikubWF4RGltZW5zaW9uQ291bnQscz10KCIuLi8uLi9saWIiKSxsPTFlLTYs Yz0yMDQ4LHU9bmV3IFVpbnQ4QXJyYXkoNCksaD1uZXcgVWludDhBcnJheSg0 KSxmPXtzaGFwZTpbMjU2LDFdLGZvcm1hdDoicmdiYSIsdHlwZToidWludDgi LG1hZzoibmVhcmVzdCIsbWluOiJuZWFyZXN0In07ZnVuY3Rpb24gcCh0LGUs cixuLGEpe3ZhciBpPXQuX2dsO2kuZW5hYmxlKGkuU0NJU1NPUl9URVNUKSxp LnNjaXNzb3IoZSxyLG4sYSksdC5jbGVhcih7Y29sb3I6WzAsMCwwLDBdLGRl cHRoOjF9KX1mdW5jdGlvbiBkKHQsZSxyLG4sYSxpKXt2YXIgbz1pLmtleTty LmRyYXdDb21wbGV0ZWR8fCghZnVuY3Rpb24odCl7dC5yZWFkKHt4OjAseTow LHdpZHRoOjEsaGVpZ2h0OjEsZGF0YTp1fSl9KHQpLHIuZHJhd0NvbXBsZXRl ZD0hMCksZnVuY3Rpb24gcyhsKXt2YXIgYz1NYXRoLm1pbihuLGEtbCpuKTsw PT09bCYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShyLmN1cnJlbnRS YWZzW29dKSxkZWxldGUgci5jdXJyZW50UmFmc1tvXSxwKHQsaS5zY2lzc29y WCxpLnNjaXNzb3JZLGkuc2Npc3NvcldpZHRoLGkudmlld0JveFNpemVbMV0p KSxyLmNsZWFyT25seXx8KGkuY291bnQ9MipjLGkub2Zmc2V0PTIqbCpuLGUo aSksbCpuK2M8YSYmKHIuY3VycmVudFJhZnNbb109d2luZG93LnJlcXVlc3RB bmltYXRpb25GcmFtZShmdW5jdGlvbigpe3MobCsxKX0pKSxyLmRyYXdDb21w bGV0ZWQ9ITEpfSgwKX1mdW5jdGlvbiBnKHQsZSl7Zm9yKHZhciByPW5ldyBB cnJheSgyNTYpLG49MDtuPDI1NjtuKyspcltuXT10KG4vMjU1KS5jb25jYXQo ZSk7cmV0dXJuIHJ9ZnVuY3Rpb24gdih0LGUpe3JldHVybih0Pj4+OCplKSUy NTYvMjU1fWZ1bmN0aW9uIG0odCxlLHIpe2Zvcih2YXIgbj1uZXcgQXJyYXko OCplKSxhPTAsaT0wO2k8ZTtpKyspZm9yKHZhciBvPTA7bzwyO28rKylmb3Io dmFyIHM9MDtzPDQ7cysrKXt2YXIgbD00KnQrcyxjPXJbNjQqaStsXTs2Mz09 PWwmJjA9PT1vJiYoYyo9LTEpLG5bYSsrXT1jfXJldHVybiBufWZ1bmN0aW9u IHkodCl7dmFyIGU9IjAiK3Q7cmV0dXJuIGUuc3Vic3RyKGUubGVuZ3RoLTIp fWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQ8bz8icCIreSh0KzEpKyJfIit5KHQr NCk6ImNvbG9ycyJ9ZnVuY3Rpb24gYih0LGUscixuLGEsaSxvLGwsYyx1LGgs ZixwKXtmb3IodmFyIGQ9W1tdLFtdXSxnPTA7Zzw2NDtnKyspZFswXVtnXT1n PT09YT8xOjAsZFsxXVtnXT1nPT09aT8xOjA7dmFyIHY9dC5saW5lcy5jYW52 YXNPdmVyZHJhZyxtPXQuZG9tYWluLHk9dC5jYW52YXNXaWR0aCx4PXQuY2Fu dmFzSGVpZ2h0LGI9dC5kZXNlbGVjdGVkTGluZXMuY29sb3I7cmV0dXJuIHMu ZXh0ZW5kRmxhdCh7a2V5OmgscmVzb2x1dGlvbjpbeSx4XSx2aWV3Qm94UG9z OltvK3YsbF0sdmlld0JveFNpemU6W2MsdV0saTA6YSxpMTppLGRpbTBBOmRb MF0uc2xpY2UoMCwxNiksZGltMEI6ZFswXS5zbGljZSgxNiwzMiksZGltMEM6 ZFswXS5zbGljZSgzMiw0OCksZGltMEQ6ZFswXS5zbGljZSg0OCw2NCksZGlt MUE6ZFsxXS5zbGljZSgwLDE2KSxkaW0xQjpkWzFdLnNsaWNlKDE2LDMyKSxk aW0xQzpkWzFdLnNsaWNlKDMyLDQ4KSxkaW0xRDpkWzFdLnNsaWNlKDQ4LDY0 KSxkcndMYXllcjpmLGNvbnRleHRDb2xvcjpbYlswXS8yNTUsYlsxXS8yNTUs YlsyXS8yNTUsYlszXTwxP2JbM106TWF0aC5tYXgoMS8yNTUsTWF0aC5wb3co MS90LmxpbmVzLmNvbG9yLmxlbmd0aCwxLzMpKV0sc2Npc3Nvclg6KG49PT1l PzA6byt2KSsodC5wYWQubC12KSt0LmxheW91dFdpZHRoKm0ueFswXSxzY2lz c29yV2lkdGg6KG49PT1yP3ktbyt2OmMrLjUpKyhuPT09ZT9vK3Y6MCksc2Np c3Nvclk6bCt0LnBhZC5iK3QubGF5b3V0SGVpZ2h0Km0ueVswXSxzY2lzc29y SGVpZ2h0OnUsdmlld3BvcnRYOnQucGFkLmwtdit0LmxheW91dFdpZHRoKm0u eFswXSx2aWV3cG9ydFk6dC5wYWQuYit0LmxheW91dEhlaWdodCptLnlbMF0s dmlld3BvcnRXaWR0aDp5LHZpZXdwb3J0SGVpZ2h0Onh9LHApfWZ1bmN0aW9u IF8odCl7dmFyIGU9Yy0xLHI9TWF0aC5tYXgoMCxNYXRoLmZsb29yKHRbMF0q ZSksMCksbj1NYXRoLm1pbihlLE1hdGguY2VpbCh0WzFdKmUpLGUpO3JldHVy bltNYXRoLm1pbihyLG4pLE1hdGgubWF4KHIsbildfWUuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3ZhciByLG4sdSx5LHcsaz1lLmNvbnRleHQsVD1lLnBpY2ss TT1lLnJlZ2wsQT17Y3VycmVudFJhZnM6e30sZHJhd0NvbXBsZXRlZDohMCxj bGVhck9ubHk6ITF9LFM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXt9LHI9MDty PD1vO3IrPTQpZVt4KHIpXT10LmJ1ZmZlcih7dXNhZ2U6ImR5bmFtaWMiLHR5 cGU6ImZsb2F0IixkYXRhOm5ldyBVaW50OEFycmF5KDApfSk7cmV0dXJuIGV9 KE0pLEU9TS50ZXh0dXJlKGYpLEw9W107UChlKTt2YXIgQz1NKHtwcm9maWxl OiExLGJsZW5kOntlbmFibGU6ayxmdW5jOntzcmNSR0I6InNyYyBhbHBoYSIs ZHN0UkdCOiJvbmUgbWludXMgc3JjIGFscGhhIixzcmNBbHBoYToxLGRzdEFs cGhhOjF9LGVxdWF0aW9uOntyZ2I6ImFkZCIsYWxwaGE6ImFkZCJ9LGNvbG9y OlswLDAsMCwwXX0sZGVwdGg6e2VuYWJsZTohayxtYXNrOiEwLGZ1bmM6Imxl c3MiLHJhbmdlOlswLDFdfSxjdWxsOntlbmFibGU6ITAsZmFjZToiYmFjayJ9 LHNjaXNzb3I6e2VuYWJsZTohMCxib3g6e3g6TS5wcm9wKCJzY2lzc29yWCIp LHk6TS5wcm9wKCJzY2lzc29yWSIpLHdpZHRoOk0ucHJvcCgic2Npc3Nvcldp ZHRoIiksaGVpZ2h0Ok0ucHJvcCgic2Npc3NvckhlaWdodCIpfX0sdmlld3Bv cnQ6e3g6TS5wcm9wKCJ2aWV3cG9ydFgiKSx5Ok0ucHJvcCgidmlld3BvcnRZ Iiksd2lkdGg6TS5wcm9wKCJ2aWV3cG9ydFdpZHRoIiksaGVpZ2h0Ok0ucHJv cCgidmlld3BvcnRIZWlnaHQiKX0sZGl0aGVyOiExLHZlcnQ6YSxmcmFnOmks cHJpbWl0aXZlOiJsaW5lcyIsbGluZVdpZHRoOjEsYXR0cmlidXRlczpTLHVu aWZvcm1zOntyZXNvbHV0aW9uOk0ucHJvcCgicmVzb2x1dGlvbiIpLHZpZXdC b3hQb3M6TS5wcm9wKCJ2aWV3Qm94UG9zIiksdmlld0JveFNpemU6TS5wcm9w KCJ2aWV3Qm94U2l6ZSIpLGRpbTBBOk0ucHJvcCgiZGltMEEiKSxkaW0xQTpN LnByb3AoImRpbTFBIiksZGltMEI6TS5wcm9wKCJkaW0wQiIpLGRpbTFCOk0u cHJvcCgiZGltMUIiKSxkaW0wQzpNLnByb3AoImRpbTBDIiksZGltMUM6TS5w cm9wKCJkaW0xQyIpLGRpbTBEOk0ucHJvcCgiZGltMEQiKSxkaW0xRDpNLnBy b3AoImRpbTFEIiksbG9BOk0ucHJvcCgibG9BIiksaGlBOk0ucHJvcCgiaGlB IiksbG9COk0ucHJvcCgibG9CIiksaGlCOk0ucHJvcCgiaGlCIiksbG9DOk0u cHJvcCgibG9DIiksaGlDOk0ucHJvcCgiaGlDIiksbG9EOk0ucHJvcCgibG9E IiksaGlEOk0ucHJvcCgiaGlEIikscGFsZXR0ZTpFLGNvbnRleHRDb2xvcjpN LnByb3AoImNvbnRleHRDb2xvciIpLG1hc2s6TS5wcm9wKCJtYXNrVGV4dHVy ZSIpLGRyd0xheWVyOk0ucHJvcCgiZHJ3TGF5ZXIiKSxtYXNrSGVpZ2h0Ok0u cHJvcCgibWFza0hlaWdodCIpfSxvZmZzZXQ6TS5wcm9wKCJvZmZzZXQiKSxj b3VudDpNLnByb3AoImNvdW50Iil9KTtmdW5jdGlvbiBQKHQpe3I9dC5tb2Rl bCxuPXQudmlld01vZGVsLHU9bi5kaW1lbnNpb25zLnNsaWNlKCkseT11WzBd P3VbMF0udmFsdWVzLmxlbmd0aDowO3ZhciBlPXIubGluZXMsYT1UP2UuY29s b3IubWFwKGZ1bmN0aW9uKHQscil7cmV0dXJuIHIvZS5jb2xvci5sZW5ndGh9 KTplLmNvbG9yLGk9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbixhPW5ldyBB cnJheSh0KihvKzQpKSxpPTAscz0wO3M8dDtzKyspe2Zvcih2YXIgYz0wO2M8 bztjKyspYVtpKytdPWM8ZS5sZW5ndGg/ZVtjXS5wYWRkZWRVbml0VmFsdWVz W3NdOi41O2FbaSsrXT12KHMsMiksYVtpKytdPXYocywxKSxhW2krK109dihz LDApLGFbaSsrXT0obj1yW3NdLE1hdGgubWF4KGwsTWF0aC5taW4oMS1sLG4p KSl9cmV0dXJuIGF9KHksdSxhKTshZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIg bj0wO248PW87bis9NCl0W3gobildKG0obi80LGUscikpfShTLHksaSksa3x8 VHx8KEU9TS50ZXh0dXJlKHMuZXh0ZW5kRmxhdCh7ZGF0YTpnKHIudW5pdFRv Q29sb3IsMjU1KX0sZikpKX1yZXR1cm57cmVuZGVyOmZ1bmN0aW9uKHQsZSxu KXt2YXIgYSxpLG8scz10Lmxlbmd0aCxsPTEvMCxoPS0xLzA7Zm9yKGE9MDth PHM7YSsrKXRbYV0uZGltMC5jYW52YXNYPGwmJihsPXRbYV0uZGltMC5jYW52 YXNYLGk9YSksdFthXS5kaW0xLmNhbnZhc1g+aCYmKGg9dFthXS5kaW0xLmNh bnZhc1gsbz1hKTswPT09cyYmcChNLDAsMCxyLmNhbnZhc1dpZHRoLHIuY2Fu dmFzSGVpZ2h0KTt2YXIgZj1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYT1bW10s W11dO2ZvcihuPTA7bjw2NDtuKyspe3ZhciBpPSF0JiZuPHUubGVuZ3RoP3Vb bl0uYnJ1c2guZmlsdGVyLmdldEJvdW5kcygpOlstMS8wLDEvMF07YVswXVtu XT1pWzBdLGFbMV1bbl09aVsxXX12YXIgbz04KmMscz1uZXcgQXJyYXkobyk7 Zm9yKGU9MDtlPG87ZSsrKXNbZV09MjU1O2lmKCF0KWZvcihlPTA7ZTx1Lmxl bmd0aDtlKyspe3ZhciBsPWUlOCxoPShlLWwpLzgsZj1NYXRoLnBvdygyLGwp LHA9dVtlXS5icnVzaC5maWx0ZXIuZ2V0KCk7aWYoIShwLmxlbmd0aDwyKSl7 dmFyIGQ9XyhwWzBdKVsxXTtmb3Iocj0xO3I8cC5sZW5ndGg7cisrKXt2YXIg Zz1fKHBbcl0pO2ZvcihuPWQrMTtuPGdbMF07bisrKXNbOCpuK2hdJj1+Zjtk PU1hdGgubWF4KGQsZ1sxXSl9fX12YXIgdj17c2hhcGU6WzgsY10sZm9ybWF0 OiJhbHBoYSIsdHlwZToidWludDgiLG1hZzoibmVhcmVzdCIsbWluOiJuZWFy ZXN0IixkYXRhOnN9O3JldHVybiB3P3codik6dz1NLnRleHR1cmUodikse21h c2tUZXh0dXJlOncsbWFza0hlaWdodDpjLGxvQTphWzBdLnNsaWNlKDAsMTYp LGxvQjphWzBdLnNsaWNlKDE2LDMyKSxsb0M6YVswXS5zbGljZSgzMiw0OCks bG9EOmFbMF0uc2xpY2UoNDgsNjQpLGhpQTphWzFdLnNsaWNlKDAsMTYpLGhp QjphWzFdLnNsaWNlKDE2LDMyKSxoaUM6YVsxXS5zbGljZSgzMiw0OCksaGlE OmFbMV0uc2xpY2UoNDgsNjQpfX0oayk7Zm9yKGE9MDthPHM7YSsrKXt2YXIg Zz10W2FdLHY9Zy5kaW0wLmNyb3NzZmlsdGVyRGltZW5zaW9uSW5kZXgsbT1n LmRpbTEuY3Jvc3NmaWx0ZXJEaW1lbnNpb25JbmRleCx4PWcuY2FudmFzWCxT PWcuY2FudmFzWSxFPXgrZy5wYW5lbFNpemVYO2lmKGV8fCFMW3ZdfHxMW3Zd WzBdIT09eHx8TFt2XVsxXSE9PUUpe0xbdl09W3gsRV07dmFyIFA9YihyLGks byxhLHYsbSx4LFMsZy5wYW5lbFNpemVYLGcucGFuZWxTaXplWSxnLmRpbTAu Y3Jvc3NmaWx0ZXJEaW1lbnNpb25JbmRleCxrPzA6VD8yOjEsZik7QS5jbGVh ck9ubHk9bjt2YXIgTz1lP3IubGluZXMuYmxvY2tMaW5lQ291bnQ6eTtkKE0s QyxBLE8seSxQKX19fSxyZWFkUGl4ZWw6ZnVuY3Rpb24odCxlKXtyZXR1cm4g TS5yZWFkKHt4OnQseTplLHdpZHRoOjEsaGVpZ2h0OjEsZGF0YTpofSksaH0s cmVhZFBpeGVsczpmdW5jdGlvbih0LGUscixuKXt2YXIgYT1uZXcgVWludDhB cnJheSg0KnIqbik7cmV0dXJuIE0ucmVhZCh7eDp0LHk6ZSx3aWR0aDpyLGhl aWdodDpuLGRhdGE6YX0pLGF9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtmb3IodmFy IGUgaW4gdC5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0ibm9uZSIsRS5kZXN0 cm95KCksdyYmdy5kZXN0cm95KCksUylTW2VdLmRlc3Ryb3koKX0sdXBkYXRl OlB9fX0seyIuLi8uLi9saWIiOjcxNywiLi9jb25zdGFudHMiOjEwODYsZ2xz bGlmeTo0MTF9XSwxMDkxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXt2YXIgYSxpO2ZvcihufHwo bj0xLzApLGE9MDthPGUubGVuZ3RoO2ErKykoaT1lW2FdKS52aXNpYmxlJiYo bj1NYXRoLm1pbihuLGlbcl0ubGVuZ3RoKSk7Zm9yKG49PT0xLzAmJihuPTAp LHQuX2xlbmd0aD1uLGE9MDthPGUubGVuZ3RoO2ErKykoaT1lW2FdKS52aXNp YmxlJiYoaS5fbGVuZ3RoPW4pO3JldHVybiBufX0se31dLDEwOTI6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoImNv bG9yLXJnYmEiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiks bz10KCIuLi8uLi9saWIiKSxzPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGls cyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksYz10KCIuLi8u Li9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSx1PXQoIi4uLy4uL2xpYi9ndXAi KSxoPXUua2V5RnVuLGY9dS5yZXBlYXQscD11LnVud3JhcCxkPXQoIi4vaGVs cGVycyIpLGc9dCgiLi9jb25zdGFudHMiKSx2PXQoIi4vYXhpc2JydXNoIiks bT10KCIuL2xpbmVzIik7ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIG8uYWdn TnVtcyh0LG51bGwsZSxyKX1mdW5jdGlvbiB4KHQsZSl7cmV0dXJuIF8oeShN YXRoLm1pbix0LGUpLHkoTWF0aC5tYXgsdCxlKSl9ZnVuY3Rpb24gYih0KXt2 YXIgZT10LnJhbmdlO3JldHVybiBlP18oZVswXSxlWzFdKTp4KHQudmFsdWVz LHQuX2xlbmd0aCl9ZnVuY3Rpb24gXyh0LGUpe3JldHVybiFpc05hTih0KSYm aXNGaW5pdGUodCl8fCh0PTApLCFpc05hTihlKSYmaXNGaW5pdGUoZSl8fChl PTApLHQ9PT1lJiYoMD09PXQ/KHQtPTEsZSs9MSk6KHQqPS45LGUqPTEuMSkp LFt0LGVdfWZ1bmN0aW9uIHcodCxlLHIsYSxpKXt2YXIgbyxzLGw9YihyKTty ZXR1cm4gYT9uLnNjYWxlLm9yZGluYWwoKS5kb21haW4oYS5tYXAoKG89bi5m b3JtYXQoci50aWNrZm9ybWF0KSxzPWkscz9mdW5jdGlvbih0LGUpe3ZhciBy PXNbZV07cmV0dXJuIG51bGw9PXI/byh0KTpyfTpvKSkpLnJhbmdlKGEubWFw KGZ1bmN0aW9uKHIpe3ZhciBuPShyLWxbMF0pLyhsWzFdLWxbMF0pO3JldHVy biB0LWUrbiooMiplLXQpfSkpOm4uc2NhbGUubGluZWFyKCkuZG9tYWluKGwp LnJhbmdlKFt0LWUsZV0pfWZ1bmN0aW9uIGsodCl7aWYodC50aWNrdmFscyl7 dmFyIGU9Yih0KTtyZXR1cm4gbi5zY2FsZS5vcmRpbmFsKCkuZG9tYWluKHQu dGlja3ZhbHMpLnJhbmdlKHQudGlja3ZhbHMubWFwKGZ1bmN0aW9uKHQpe3Jl dHVybih0LWVbMF0pLyhlWzFdLWVbMF0pfSkpfX1mdW5jdGlvbiBUKHQpe3Zh ciBlPXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdfSkscj10Lm1hcChm dW5jdGlvbih0KXt2YXIgZT1hKHRbMV0pO3JldHVybiBuLnJnYigicmdiKCIr ZVswXSsiLCIrZVsxXSsiLCIrZVsyXSsiKSIpfSksaT0icmdiIi5zcGxpdCgi IikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuLnNjYWxlLmxpbmVhcigpLmNs YW1wKCEwKS5kb21haW4oZSkucmFuZ2Uoci5tYXAoKGE9dCxmdW5jdGlvbih0 KXtyZXR1cm4gdFthXX0pKSk7dmFyIGF9KTtyZXR1cm4gZnVuY3Rpb24odCl7 cmV0dXJuIGkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSl9fWZ1bmN0 aW9uIE0odCl7cmV0dXJuIHQuZGltZW5zaW9ucy5zb21lKGZ1bmN0aW9uKHQp e3JldHVybiB0LmJydXNoLmZpbHRlclNwZWNpZmllZH0pfWZ1bmN0aW9uIEEo dCxlLHIpe3ZhciBhPXIud2lkdGgsaT1yLmhlaWdodCxzPXIuZGltZW5zaW9u cyxsPXIuY2FudmFzUGl4ZWxSYXRpbyxjPWZ1bmN0aW9uKHQpe3JldHVybiBh KnQvTWF0aC5tYXgoMSxyLmNvbENvdW50LTEpfSx1PWcudmVydGljYWxQYWRk aW5nL2ksaD1mdW5jdGlvbih0LGUpe3JldHVybiBuLnNjYWxlLmxpbmVhcigp LnJhbmdlKFtlLHQtZV0pfShpLGcudmVydGljYWxQYWRkaW5nKSxmPXtrZXk6 ci5rZXkseFNjYWxlOmMsbW9kZWw6cixpbkJydXNoRHJhZzohMX0scD17fTty ZXR1cm4gZi5kaW1lbnNpb25zPXMuZmlsdGVyKGQuaXNWaXNpYmxlKS5tYXAo ZnVuY3Rpb24oYSxzKXt2YXIgbT1mdW5jdGlvbih0LGUpe3JldHVybiBuLnNj YWxlLmxpbmVhcigpLmRvbWFpbihiKHQpKS5yYW5nZShbZSwxLWVdKX0oYSx1 KSx5PXBbYS5sYWJlbF07cFthLmxhYmVsXT0oeXx8MCkrMTt2YXIgeD1hLmxh YmVsKyh5PyJfXyIreToiIiksXz1hLmNvbnN0cmFpbnRyYW5nZSxUPV8mJl8u bGVuZ3RoO1QmJiFBcnJheS5pc0FycmF5KF9bMF0pJiYoXz1bX10pO3ZhciBB PVQ/Xy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubWFwKG0pfSk6W1stMS8w LDEvMF1dLFM9YS52YWx1ZXM7Uy5sZW5ndGg+YS5fbGVuZ3RoJiYoUz1TLnNs aWNlKDAsYS5fbGVuZ3RoKSk7dmFyIEUsTD1hLnRpY2t2YWxzO2Z1bmN0aW9u IEModCxlKXtyZXR1cm57dmFsOnQsdGV4dDpFW2VdfX1mdW5jdGlvbiBQKHQs ZSl7cmV0dXJuIHQudmFsLWUudmFsfWlmKEFycmF5LmlzQXJyYXkoTCkmJkwu bGVuZ3RoKXtFPWEudGlja3RleHQsQXJyYXkuaXNBcnJheShFKSYmRS5sZW5n dGg/RS5sZW5ndGg+TC5sZW5ndGg/RT1FLnNsaWNlKDAsTC5sZW5ndGgpOkwu bGVuZ3RoPkUubGVuZ3RoJiYoTD1MLnNsaWNlKDAsRS5sZW5ndGgpKTpFPUwu bWFwKG4uZm9ybWF0KGEudGlja2Zvcm1hdCkpO2Zvcih2YXIgTz0xO088TC5s ZW5ndGg7TysrKWlmKExbT108TFtPLTFdKXtmb3IodmFyIHo9TC5tYXAoQyku c29ydChQKSxJPTA7STxMLmxlbmd0aDtJKyspTFtJXT16W0ldLnZhbCxFW0ld PXpbSV0udGV4dDticmVha319ZWxzZSBMPXZvaWQgMDtyZXR1cm4gUz1kLmNv bnZlcnRUeXBlZEFycmF5KFMpLHtrZXk6eCxsYWJlbDphLmxhYmVsLHRpY2tG b3JtYXQ6YS50aWNrZm9ybWF0LHRpY2t2YWxzOkwsdGlja3RleHQ6RSxvcmRp bmFsOmQuaXNPcmRpbmFsKGEpLG11bHRpc2VsZWN0OmEubXVsdGlzZWxlY3Qs eEluZGV4OnMsY3Jvc3NmaWx0ZXJEaW1lbnNpb25JbmRleDpzLHZpc2libGVJ bmRleDphLl9pbmRleCxoZWlnaHQ6aSx2YWx1ZXM6UyxwYWRkZWRVbml0VmFs dWVzOlMubWFwKG0pLHVuaXRUaWNrdmFsczpMJiZMLm1hcChtKSx4U2NhbGU6 Yyx4OmMocyksY2FudmFzWDpjKHMpKmwsdW5pdFRvUGFkZGVkUHg6aCxkb21h aW5TY2FsZTp3KGksZy52ZXJ0aWNhbFBhZGRpbmcsYSxMLEUpLG9yZGluYWxT Y2FsZTprKGEpLHBhcmVudDpmLG1vZGVsOnIsYnJ1c2g6di5tYWtlQnJ1c2go dCxULEEsZnVuY3Rpb24oKXt0LmxpbmVQaWNrQWN0aXZlKCExKX0sZnVuY3Rp b24oKXt2YXIgZT1mO2UuZm9jdXNMYXllciYmZS5mb2N1c0xheWVyLnJlbmRl cihlLnBhbmVscywhMCk7dmFyIHI9TShlKTshdC5jb250ZXh0U2hvd24oKSYm cj8oZS5jb250ZXh0TGF5ZXImJmUuY29udGV4dExheWVyLnJlbmRlcihlLnBh bmVscywhMCksdC5jb250ZXh0U2hvd24oITApKTp0LmNvbnRleHRTaG93bigp JiYhciYmKGUuY29udGV4dExheWVyJiZlLmNvbnRleHRMYXllci5yZW5kZXIo ZS5wYW5lbHMsITAsITApLHQuY29udGV4dFNob3duKCExKSl9LGZ1bmN0aW9u KHIpe2lmKGYuZm9jdXNMYXllci5yZW5kZXIoZi5wYW5lbHMsITApLGYucGlj a0xheWVyJiZmLnBpY2tMYXllci5yZW5kZXIoZi5wYW5lbHMsITApLHQubGlu ZVBpY2tBY3RpdmUoITApLGUmJmUuZmlsdGVyQ2hhbmdlZCl7dmFyIG49bS5p bnZlcnQsaT1yLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAobikuc29y dChvLnNvcnRlckFzYyl9KS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRb MF0tZVswXX0pO2UuZmlsdGVyQ2hhbmdlZChmLmtleSxhLl9pbmRleCxpKX19 KX19KSxmfWZ1bmN0aW9uIFModCl7dC5jbGFzc2VkKGcuY24uYXhpc0V4dGVu dFRleHQsITApLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuc3R5bGUo ImN1cnNvciIsImRlZmF1bHQiKS5zdHlsZSgidXNlci1zZWxlY3QiLCJub25l Iil9ZnVuY3Rpb24gRSh0LGUpe3ZhciByPSJ0b3AiPT09ZT8xOi0xLG49dCpN YXRoLlBJLzE4MDtyZXR1cm57ZGlyOnIsZHg6TWF0aC5zaW4obiksZHk6TWF0 aC5jb3MobiksZGVncmVlczp0fX1mdW5jdGlvbiBMKHQsZSl7Zm9yKHZhciBy PWUucGFuZWxzfHwoZS5wYW5lbHM9W10pLG49dC5kYXRhKCksYT0wO2E8bi5s ZW5ndGgtMTthKyspe3ZhciBpPXJbYV18fChyW2FdPXt9KSxvPW5bYV0scz1u W2ErMV07aS5kaW0wPW8saS5kaW0xPXMsaS5jYW52YXNYPW8uY2FudmFzWCxp LnBhbmVsU2l6ZVg9cy5jYW52YXNYLW8uY2FudmFzWCxpLnBhbmVsU2l6ZVk9 ZS5tb2RlbC5jYW52YXNIZWlnaHQsaS55PTAsaS5jYW52YXNZPTB9fWZ1bmN0 aW9uIEModCxlKXtyZXR1cm4gaS50aWNrVGV4dCh0Ll9heCxlLCExKS50ZXh0 fWZ1bmN0aW9uIFAodCxlKXtpZih0Lm9yZGluYWwpcmV0dXJuIiI7dmFyIHI9 dC5kb21haW5TY2FsZS5kb21haW4oKSxuPXJbZT9yLmxlbmd0aC0xOjBdO3Jl dHVybiBDKHQubW9kZWwuZGltZW5zaW9uc1t0LnZpc2libGVJbmRleF0sbil9 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHUpe3ZhciB5PXQuX2Z1bGxMYXlv dXQsdz15Ll90b3BwYXBlcixrPXkuX2dsY29udGFpbmVyOyFmdW5jdGlvbih0 KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylmb3IodmFyIHI9MDtyPHRb ZV0ubGVuZ3RoO3IrKylmb3IodmFyIG49dFtlXVtyXS50cmFjZSxhPW4uZGlt ZW5zaW9ucyxvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBzPWFbb10udmFsdWVz LGw9YVtvXS5fYXg7bCYmKGwucmFuZ2U/bC5yYW5nZT1fKGwucmFuZ2VbMF0s bC5yYW5nZVsxXSk6bC5yYW5nZT14KHMsbi5fbGVuZ3RoKSxsLmR0aWNrfHwo bC5kdGljaz0uMDEqKE1hdGguYWJzKGwucmFuZ2VbMV0tbC5yYW5nZVswXSl8 fDEpKSxsLnRpY2tmb3JtYXQ9YVtvXS50aWNrZm9ybWF0LGkuY2FsY1RpY2tz KGwpLGwuY2xlYW5SYW5nZSgpKX19KGUpO3ZhciBPLHosST0oTz0hMCx6PSEx LHtsaW5lUGlja0FjdGl2ZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD9PPSEhdDpPfSxjb250ZXh0U2hvd246ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/ej0hIXQ6en19KSxEPWUuZmlsdGVyKGZ1 bmN0aW9uKHQpe3JldHVybiBwKHQpLnRyYWNlLnZpc2libGV9KS5tYXAoZnVu Y3Rpb24odCxlLHIpe3ZhciBpPXAoZSkscz1pLnRyYWNlLGw9ZC5jb252ZXJ0 VHlwZWRBcnJheShpLmxpbmVDb2xvciksdT1zLmxpbmUsaD17Y29sb3I6YShn LmRlc2VsZWN0ZWRMaW5lQ29sb3IpfSxmPWMuZXh0cmFjdE9wdHModSksdj1m LnJldmVyc2VzY2FsZT9jLmZsaXBTY2FsZShpLmNzY2FsZSk6aS5jc2NhbGUs bT1zLmRvbWFpbix5PXMuZGltZW5zaW9ucyx4PXQud2lkdGgsXz1zLmxhYmVs YW5nbGUsdz1zLmxhYmVsc2lkZSxrPXMubGFiZWxmb250LE09cy50aWNrZm9u dCxBPXMucmFuZ2Vmb250LFM9by5leHRlbmREZWVwTm9BcnJheXMoe30sdSx7 Y29sb3I6bC5tYXAobi5zY2FsZS5saW5lYXIoKS5kb21haW4oYih7dmFsdWVz OmwscmFuZ2U6W2YubWluLGYubWF4XSxfbGVuZ3RoOnMuX2xlbmd0aH0pKSks YmxvY2tMaW5lQ291bnQ6Zy5ibG9ja0xpbmVDb3VudCxjYW52YXNPdmVyZHJh ZzpnLm92ZXJkcmFnKmcuY2FudmFzUGl4ZWxSYXRpb30pLEU9TWF0aC5mbG9v cih4KihtLnhbMV0tbS54WzBdKSksTD1NYXRoLmZsb29yKHQuaGVpZ2h0Kiht LnlbMV0tbS55WzBdKSksQz10Lm1hcmdpbnx8e2w6ODAscjo4MCx0OjEwMCxi OjgwfSxQPUUsTz1MO3JldHVybntrZXk6cixjb2xDb3VudDp5LmZpbHRlcihk LmlzVmlzaWJsZSkubGVuZ3RoLGRpbWVuc2lvbnM6eSx0aWNrRGlzdGFuY2U6 Zy50aWNrRGlzdGFuY2UsdW5pdFRvQ29sb3I6VCh2KSxsaW5lczpTLGRlc2Vs ZWN0ZWRMaW5lczpoLGxhYmVsQW5nbGU6XyxsYWJlbFNpZGU6dyxsYWJlbEZv bnQ6ayx0aWNrRm9udDpNLHJhbmdlRm9udDpBLGxheW91dFdpZHRoOngsbGF5 b3V0SGVpZ2h0OnQuaGVpZ2h0LGRvbWFpbjptLHRyYW5zbGF0ZVg6bS54WzBd KngsdHJhbnNsYXRlWTp0LmhlaWdodC1tLnlbMV0qdC5oZWlnaHQscGFkOkMs Y2FudmFzV2lkdGg6UCpnLmNhbnZhc1BpeGVsUmF0aW8rMipTLmNhbnZhc092 ZXJkcmFnLGNhbnZhc0hlaWdodDpPKmcuY2FudmFzUGl4ZWxSYXRpbyx3aWR0 aDpQLGhlaWdodDpPLGNhbnZhc1BpeGVsUmF0aW86Zy5jYW52YXNQaXhlbFJh dGlvfX0uYmluZCgwLHIpKS5tYXAoQS5iaW5kKDAsSSx1KSk7ay5lYWNoKGZ1 bmN0aW9uKHQsZSl7cmV0dXJuIG8uZXh0ZW5kRmxhdCh0LERbZV0pfSk7dmFy IFI9ay5zZWxlY3RBbGwoIi5nbC1jYW52YXMiKS5lYWNoKGZ1bmN0aW9uKHQp e3Qudmlld01vZGVsPURbMF0sdC5tb2RlbD10LnZpZXdNb2RlbD90LnZpZXdN b2RlbC5tb2RlbDpudWxsfSksRj1udWxsO1IuZmlsdGVyKGZ1bmN0aW9uKHQp e3JldHVybiB0LnBpY2t9KS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhdXRv Iikub24oIm1vdXNlbW92ZSIsZnVuY3Rpb24odCl7aWYoSS5saW5lUGlja0Fj dGl2ZSgpJiZ0LmxpbmVMYXllciYmdSYmdS5ob3Zlcil7dmFyIGU9bi5ldmVu dCxyPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxpPW4ubW91c2UodGhpcyks bz1pWzBdLHM9aVsxXTtpZihvPDB8fHM8MHx8bz49cnx8cz49YSlyZXR1cm47 dmFyIGw9dC5saW5lTGF5ZXIucmVhZFBpeGVsKG8sYS0xLXMpLGM9MCE9PWxb M10saD1jP2xbMl0rMjU2KihsWzFdKzI1NipsWzBdKTpudWxsLGY9e3g6byx5 OnMsY2xpZW50WDplLmNsaWVudFgsY2xpZW50WTplLmNsaWVudFksZGF0YUlu ZGV4OnQubW9kZWwua2V5LGN1cnZlTnVtYmVyOmh9O2ghPT1GJiYoYz91Lmhv dmVyKGYpOnUudW5ob3ZlciYmdS51bmhvdmVyKGYpLEY9aCl9fSksUi5zdHls ZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQucGljaz8wOjF9KSx3 LnN0eWxlKCJiYWNrZ3JvdW5kIiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIp O3ZhciBCPXcuc2VsZWN0QWxsKCIuIitnLmNuLnBhcmNvb3JkcykuZGF0YShE LGgpO0IuZXhpdCgpLnJlbW92ZSgpLEIuZW50ZXIoKS5hcHBlbmQoImciKS5j bGFzc2VkKGcuY24ucGFyY29vcmRzLCEwKS5zdHlsZSgic2hhcGUtcmVuZGVy aW5nIiwiY3Jpc3BFZGdlcyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5v bmUiKSxCLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRy YW5zbGF0ZSgiK3QubW9kZWwudHJhbnNsYXRlWCsiLCIrdC5tb2RlbC50cmFu c2xhdGVZKyIpIn0pO3ZhciBOPUIuc2VsZWN0QWxsKCIuIitnLmNuLnBhcmNv b3Jkc0NvbnRyb2xWaWV3KS5kYXRhKGYsaCk7Ti5lbnRlcigpLmFwcGVuZCgi ZyIpLmNsYXNzZWQoZy5jbi5wYXJjb29yZHNDb250cm9sVmlldywhMCksTi5h dHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUo Iit0Lm1vZGVsLnBhZC5sKyIsIit0Lm1vZGVsLnBhZC50KyIpIn0pO3ZhciBq PU4uc2VsZWN0QWxsKCIuIitnLmNuLnlBeGlzKS5kYXRhKGZ1bmN0aW9uKHQp e3JldHVybiB0LmRpbWVuc2lvbnN9LGgpO2ouZW50ZXIoKS5hcHBlbmQoImci KS5jbGFzc2VkKGcuY24ueUF4aXMsITApLE4uZWFjaChmdW5jdGlvbih0KXtM KGosdCl9KSxSLmVhY2goZnVuY3Rpb24odCl7aWYodC52aWV3TW9kZWwpeyF0 LmxpbmVMYXllcnx8dT90LmxpbmVMYXllcj1tKHRoaXMsdCk6dC5saW5lTGF5 ZXIudXBkYXRlKHQpLCh0LmtleXx8MD09PXQua2V5KSYmKHQudmlld01vZGVs W3Qua2V5XT10LmxpbmVMYXllcik7dmFyIGU9IXQuY29udGV4dHx8dTt0Lmxp bmVMYXllci5yZW5kZXIodC52aWV3TW9kZWwucGFuZWxzLGUpfX0pLGouYXR0 cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIr dC54U2NhbGUodC54SW5kZXgpKyIsIDApIn0pLGouY2FsbChuLmJlaGF2aW9y LmRyYWcoKS5vcmlnaW4oZnVuY3Rpb24odCl7cmV0dXJuIHR9KS5vbigiZHJh ZyIsZnVuY3Rpb24odCl7dmFyIGU9dC5wYXJlbnQ7SS5saW5lUGlja0FjdGl2 ZSghMSksdC54PU1hdGgubWF4KC1nLm92ZXJkcmFnLE1hdGgubWluKHQubW9k ZWwud2lkdGgrZy5vdmVyZHJhZyxuLmV2ZW50LngpKSx0LmNhbnZhc1g9dC54 KnQubW9kZWwuY2FudmFzUGl4ZWxSYXRpbyxqLnNvcnQoZnVuY3Rpb24odCxl KXtyZXR1cm4gdC54LWUueH0pLmVhY2goZnVuY3Rpb24oZSxyKXtlLnhJbmRl eD1yLGUueD10PT09ZT9lLng6ZS54U2NhbGUoZS54SW5kZXgpLGUuY2FudmFz WD1lLngqZS5tb2RlbC5jYW52YXNQaXhlbFJhdGlvfSksTChqLGUpLGouZmls dGVyKGZ1bmN0aW9uKGUpe3JldHVybiAwIT09TWF0aC5hYnModC54SW5kZXgt ZS54SW5kZXgpfSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1 cm4idHJhbnNsYXRlKCIrdC54U2NhbGUodC54SW5kZXgpKyIsIDApIn0pLG4u c2VsZWN0KHRoaXMpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3Qu eCsiLCAwKSIpLGouZWFjaChmdW5jdGlvbihyLG4sYSl7YT09PXQucGFyZW50 LmtleSYmKGUuZGltZW5zaW9uc1tuXT1yKX0pLGUuY29udGV4dExheWVyJiZl LmNvbnRleHRMYXllci5yZW5kZXIoZS5wYW5lbHMsITEsIU0oZSkpLGUuZm9j dXNMYXllci5yZW5kZXImJmUuZm9jdXNMYXllci5yZW5kZXIoZS5wYW5lbHMp fSkub24oImRyYWdlbmQiLGZ1bmN0aW9uKHQpe3ZhciBlPXQucGFyZW50O3Qu eD10LnhTY2FsZSh0LnhJbmRleCksdC5jYW52YXNYPXQueCp0Lm1vZGVsLmNh bnZhc1BpeGVsUmF0aW8sTChqLGUpLG4uc2VsZWN0KHRoaXMpLmF0dHIoInRy YW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3QueCsi LCAwKSJ9KSxlLmNvbnRleHRMYXllciYmZS5jb250ZXh0TGF5ZXIucmVuZGVy KGUucGFuZWxzLCExLCFNKGUpKSxlLmZvY3VzTGF5ZXImJmUuZm9jdXNMYXll ci5yZW5kZXIoZS5wYW5lbHMpLGUucGlja0xheWVyJiZlLnBpY2tMYXllci5y ZW5kZXIoZS5wYW5lbHMsITApLEkubGluZVBpY2tBY3RpdmUoITApLHUmJnUu YXhlc01vdmVkJiZ1LmF4ZXNNb3ZlZChlLmtleSxlLmRpbWVuc2lvbnMubWFw KGZ1bmN0aW9uKHQpe3JldHVybiB0LmNyb3NzZmlsdGVyRGltZW5zaW9uSW5k ZXh9KSl9KSksai5leGl0KCkucmVtb3ZlKCk7dmFyIFY9ai5zZWxlY3RBbGwo Ii4iK2cuY24uYXhpc092ZXJsYXlzKS5kYXRhKGYsaCk7Vi5lbnRlcigpLmFw cGVuZCgiZyIpLmNsYXNzZWQoZy5jbi5heGlzT3ZlcmxheXMsITApLFYuc2Vs ZWN0QWxsKCIuIitnLmNuLmF4aXMpLnJlbW92ZSgpO3ZhciBVPVYuc2VsZWN0 QWxsKCIuIitnLmNuLmF4aXMpLmRhdGEoZixoKTtVLmVudGVyKCkuYXBwZW5k KCJnIikuY2xhc3NlZChnLmNuLmF4aXMsITApLFUuZWFjaChmdW5jdGlvbih0 KXt2YXIgZT10Lm1vZGVsLmhlaWdodC90Lm1vZGVsLnRpY2tEaXN0YW5jZSxy PXQuZG9tYWluU2NhbGUsYT1yLmRvbWFpbigpO24uc2VsZWN0KHRoaXMpLmNh bGwobi5zdmcuYXhpcygpLm9yaWVudCgibGVmdCIpLnRpY2tTaXplKDQpLm91 dGVyVGlja1NpemUoMikudGlja3MoZSx0LnRpY2tGb3JtYXQpLnRpY2tWYWx1 ZXModC5vcmRpbmFsP2E6bnVsbCkudGlja0Zvcm1hdChmdW5jdGlvbihlKXty ZXR1cm4gZC5pc09yZGluYWwodCk/ZTpDKHQubW9kZWwuZGltZW5zaW9uc1t0 LnZpc2libGVJbmRleF0sZSl9KS5zY2FsZShyKSksbC5mb250KFUuc2VsZWN0 QWxsKCJ0ZXh0IiksdC5tb2RlbC50aWNrRm9udCl9KSxVLnNlbGVjdEFsbCgi LmRvbWFpbiwgLnRpY2s+bGluZSIpLmF0dHIoImZpbGwiLCJub25lIikuYXR0 cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJzdHJva2Utb3BhY2l0eSIsLjI1 KS5hdHRyKCJzdHJva2Utd2lkdGgiLCIxcHgiKSxVLnNlbGVjdEFsbCgidGV4 dCIpLnN0eWxlKCJ0ZXh0LXNoYWRvdyIsIjFweCAxcHggMXB4ICNmZmYsIC0x cHggLTFweCAxcHggI2ZmZiwgMXB4IC0xcHggMXB4ICNmZmYsIC0xcHggMXB4 IDFweCAjZmZmIikuc3R5bGUoImN1cnNvciIsImRlZmF1bHQiKS5zdHlsZSgi dXNlci1zZWxlY3QiLCJub25lIik7dmFyIHE9Vi5zZWxlY3RBbGwoIi4iK2cu Y24uYXhpc0hlYWRpbmcpLmRhdGEoZixoKTtxLmVudGVyKCkuYXBwZW5kKCJn IikuY2xhc3NlZChnLmNuLmF4aXNIZWFkaW5nLCEwKTt2YXIgSD1xLnNlbGVj dEFsbCgiLiIrZy5jbi5heGlzVGl0bGUpLmRhdGEoZixoKTtILmVudGVyKCku YXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChnLmNuLmF4aXNUaXRsZSwhMCkuYXR0 cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5zdHlsZSgiY3Vyc29yIiwiZXct cmVzaXplIikuc3R5bGUoInVzZXItc2VsZWN0Iiwibm9uZSIpLnN0eWxlKCJw b2ludGVyLWV2ZW50cyIsImF1dG8iKSxILnRleHQoZnVuY3Rpb24odCl7cmV0 dXJuIHQubGFiZWx9KS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0 KHRoaXMpO2wuZm9udChyLGUubW9kZWwubGFiZWxGb250KSxzLmNvbnZlcnRU b1RzcGFucyhyLHQpfSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXt2 YXIgZT1FKHQubW9kZWwubGFiZWxBbmdsZSx0Lm1vZGVsLmxhYmVsU2lkZSks cj1nLmF4aXNUaXRsZU9mZnNldDtyZXR1cm4oZS5kaXI+MD8iIjoidHJhbnNs YXRlKDAsIisoMipyK3QubW9kZWwuaGVpZ2h0KSsiKSIpKyJyb3RhdGUoIitl LmRlZ3JlZXMrIil0cmFuc2xhdGUoIistciplLmR4KyIsIistciplLmR5KyIp In0pLmF0dHIoInRleHQtYW5jaG9yIixmdW5jdGlvbih0KXt2YXIgZT1FKHQu bW9kZWwubGFiZWxBbmdsZSx0Lm1vZGVsLmxhYmVsU2lkZSk7cmV0dXJuIDIq TWF0aC5hYnMoZS5keCk+TWF0aC5hYnMoZS5keSk/ZS5kaXIqZS5keDwwPyJz dGFydCI6ImVuZCI6Im1pZGRsZSJ9KTt2YXIgRz1WLnNlbGVjdEFsbCgiLiIr Zy5jbi5heGlzRXh0ZW50KS5kYXRhKGYsaCk7Ry5lbnRlcigpLmFwcGVuZCgi ZyIpLmNsYXNzZWQoZy5jbi5heGlzRXh0ZW50LCEwKTt2YXIgWT1HLnNlbGVj dEFsbCgiLiIrZy5jbi5heGlzRXh0ZW50VG9wKS5kYXRhKGYsaCk7WS5lbnRl cigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZy5jbi5heGlzRXh0ZW50VG9wLCEw KSxZLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrLWcuYXhpc0V4 dGVudE9mZnNldCsiKSIpO3ZhciBXPVkuc2VsZWN0QWxsKCIuIitnLmNuLmF4 aXNFeHRlbnRUb3BUZXh0KS5kYXRhKGYsaCk7Vy5lbnRlcigpLmFwcGVuZCgi dGV4dCIpLmNsYXNzZWQoZy5jbi5heGlzRXh0ZW50VG9wVGV4dCwhMCkuY2Fs bChTKSxXLnRleHQoZnVuY3Rpb24odCl7cmV0dXJuIFAodCwhMCl9KS5lYWNo KGZ1bmN0aW9uKHQpe2wuZm9udChuLnNlbGVjdCh0aGlzKSx0Lm1vZGVsLnJh bmdlRm9udCl9KTt2YXIgWD1HLnNlbGVjdEFsbCgiLiIrZy5jbi5heGlzRXh0 ZW50Qm90dG9tKS5kYXRhKGYsaCk7WC5lbnRlcigpLmFwcGVuZCgiZyIpLmNs YXNzZWQoZy5jbi5heGlzRXh0ZW50Qm90dG9tLCEwKSxYLmF0dHIoInRyYW5z Zm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQubW9k ZWwuaGVpZ2h0K2cuYXhpc0V4dGVudE9mZnNldCkrIikifSk7dmFyIFo9WC5z ZWxlY3RBbGwoIi4iK2cuY24uYXhpc0V4dGVudEJvdHRvbVRleHQpLmRhdGEo ZixoKTtaLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChnLmNuLmF4 aXNFeHRlbnRCb3R0b21UZXh0LCEwKS5hdHRyKCJkeSIsIjAuNzVlbSIpLmNh bGwoUyksWi50ZXh0KGZ1bmN0aW9uKHQpe3JldHVybiBQKHQsITEpfSkuZWFj aChmdW5jdGlvbih0KXtsLmZvbnQobi5zZWxlY3QodGhpcyksdC5tb2RlbC5y YW5nZUZvbnQpfSksdi5lbnN1cmVBeGlzQnJ1c2goVil9fSx7Ii4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZSI6NjA0LCIuLi8uLi9jb21wb25lbnRzL2Ry YXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9ndXAiOjcx NSwiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo3NDEsIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIjo3NjUsIi4vYXhpc2JydXNoIjoxMDgzLCIuL2Nv bnN0YW50cyI6MTA4NiwiLi9oZWxwZXJzIjoxMDg4LCIuL2xpbmVzIjoxMDkw LCJjb2xvci1yZ2JhIjoxMjQsZDM6MTY1fV0sMTA5MzpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3BhcmNvb3JkcyIpLGE9dCgi Li4vLi4vbGliL3ByZXBhcmVfcmVnbCIpLGk9dCgiLi9oZWxwZXJzIikuaXNW aXNpYmxlO2Z1bmN0aW9uIG8odCxlLHIpe3ZhciBuPWUuaW5kZXhPZihyKSxh PXQuaW5kZXhPZihuKTtyZXR1cm4tMT09PWEmJihhKz1lLmxlbmd0aCksYX1l LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0O2lm KGEodCkpe3ZhciBzPXt9LGw9e30sYz17fSx1PXt9LGg9ci5fc2l6ZTtlLmZv ckVhY2goZnVuY3Rpb24oZSxyKXt2YXIgbj1lWzBdLnRyYWNlO2Nbcl09bi5p bmRleDt2YXIgYT11W3JdPW4uX2Z1bGxJbnB1dC5pbmRleDtzW3JdPXQuZGF0 YVthXS5kaW1lbnNpb25zLGxbcl09dC5kYXRhW2FdLmRpbWVuc2lvbnMuc2xp Y2UoKX0pO24odCxlLHt3aWR0aDpoLncsaGVpZ2h0OmguaCxtYXJnaW46e3Q6 aC50LHI6aC5yLGI6aC5iLGw6aC5sfX0se2ZpbHRlckNoYW5nZWQ6ZnVuY3Rp b24oZSxuLGEpe3ZhciBpPWxbZV1bbl0sbz1hLm1hcChmdW5jdGlvbih0KXty ZXR1cm4gdC5zbGljZSgpfSkscz0iZGltZW5zaW9uc1siK24rIl0uY29uc3Ry YWludHJhbmdlIixoPXIuX3RyYWNlUHJlR1VJW3QuX2Z1bGxEYXRhW2NbZV1d Ll9mdWxsSW5wdXQudWlkXTtpZih2b2lkIDA9PT1oW3NdKXt2YXIgZj1pLmNv bnN0cmFpbnRyYW5nZTtoW3NdPWZ8fG51bGx9dmFyIHA9dC5fZnVsbERhdGFb Y1tlXV0uZGltZW5zaW9uc1tuXTtvLmxlbmd0aD8oMT09PW8ubGVuZ3RoJiYo bz1vWzBdKSxpLmNvbnN0cmFpbnRyYW5nZT1vLHAuY29uc3RyYWludHJhbmdl PW8uc2xpY2UoKSxvPVtvXSk6KGRlbGV0ZSBpLmNvbnN0cmFpbnRyYW5nZSxk ZWxldGUgcC5jb25zdHJhaW50cmFuZ2Usbz1udWxsKTt2YXIgZD17fTtkW3Nd PW8sdC5lbWl0KCJwbG90bHlfcmVzdHlsZSIsW2QsW3VbZV1dXSl9LGhvdmVy OmZ1bmN0aW9uKGUpe3QuZW1pdCgicGxvdGx5X2hvdmVyIixlKX0sdW5ob3Zl cjpmdW5jdGlvbihlKXt0LmVtaXQoInBsb3RseV91bmhvdmVyIixlKX0sYXhl c01vdmVkOmZ1bmN0aW9uKGUscil7dmFyIG49ZnVuY3Rpb24odCxlKXtyZXR1 cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gbyh0LGUsciktbyh0LGUsbil9fShy LGxbZV0uZmlsdGVyKGkpKTtzW2VdLnNvcnQobiksbFtlXS5maWx0ZXIoZnVu Y3Rpb24odCl7cmV0dXJuIWkodCl9KS5zb3J0KGZ1bmN0aW9uKHQpe3JldHVy biBsW2VdLmluZGV4T2YodCl9KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3NbZV0u c3BsaWNlKHNbZV0uaW5kZXhPZih0KSwxKSxzW2VdLnNwbGljZShsW2VdLmlu ZGV4T2YodCksMCx0KX0pLHQuZW1pdCgicGxvdGx5X3Jlc3R5bGUiLFt7ZGlt ZW5zaW9uczpbc1tlXV19LFt1W2VdXV0pfX0pfX19LHsiLi4vLi4vbGliL3By ZXBhcmVfcmVnbCI6NzMwLCIuL2hlbHBlcnMiOjEwODgsIi4vcGFyY29vcmRz IjoxMDkyfV0sMTA5NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9w bG90cy9kb21haW4iKS5hdHRyaWJ1dGVzLGk9dCgiLi4vLi4vcGxvdHMvZm9u dF9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0 dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0 ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbD10KCIuLi8uLi9wbG90cy90ZW1w bGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMsYz10KCIuLi8u Li9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCx1PWkoe2VkaXRUeXBlOiJwbG90 IixhcnJheU9rOiEwLGNvbG9yRWRpdFR5cGU6InBsb3QifSk7ZS5leHBvcnRz PXtsYWJlbHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxj In0sbGFiZWwwOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MCxlZGl0VHlwZToi Y2FsYyJ9LGRsYWJlbDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRpdFR5 cGU6ImNhbGMifSx2YWx1ZXM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRU eXBlOiJjYWxjIn0sbWFya2VyOntjb2xvcnM6e3ZhbFR5cGU6ImRhdGFfYXJy YXkiLGVkaXRUeXBlOiJjYWxjIn0sbGluZTp7Y29sb3I6e3ZhbFR5cGU6ImNv bG9yIixkZmx0Om8uZGVmYXVsdExpbmUsYXJyYXlPazohMCxlZGl0VHlwZToi c3R5bGUifSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAs YXJyYXlPazohMCxlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToiY2FsYyJ9 LGVkaXRUeXBlOiJjYWxjIn0sdGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSIs ZWRpdFR5cGU6InBsb3QifSxob3ZlcnRleHQ6e3ZhbFR5cGU6InN0cmluZyIs ZGZsdDoiIixhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LHNjYWxlZ3Jv dXA6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9 LHRleHRpbmZvOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJsYWJlbCIs InRleHQiLCJ2YWx1ZSIsInBlcmNlbnQiXSxleHRyYXM6WyJub25lIl0sZWRp dFR5cGU6ImNhbGMifSxob3ZlcmluZm86Yyh7fSxuLmhvdmVyaW5mbyx7Zmxh Z3M6WyJsYWJlbCIsInRleHQiLCJ2YWx1ZSIsInBlcmNlbnQiLCJuYW1lIl19 KSxob3ZlcnRlbXBsYXRlOnMoe30se2tleXM6WyJsYWJlbCIsImNvbG9yIiwi dmFsdWUiLCJwZXJjZW50IiwidGV4dCJdfSksdGV4dHRlbXBsYXRlOmwoe2Vk aXRUeXBlOiJwbG90In0se2tleXM6WyJsYWJlbCIsImNvbG9yIiwidmFsdWUi LCJwZXJjZW50IiwidGV4dCJdfSksdGV4dHBvc2l0aW9uOnt2YWxUeXBlOiJl bnVtZXJhdGVkIix2YWx1ZXM6WyJpbnNpZGUiLCJvdXRzaWRlIiwiYXV0byIs Im5vbmUiXSxkZmx0OiJhdXRvIixhcnJheU9rOiEwLGVkaXRUeXBlOiJwbG90 In0sdGV4dGZvbnQ6Yyh7fSx1LHt9KSxpbnNpZGV0ZXh0b3JpZW50YXRpb246 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImhvcml6b250YWwiLCJy YWRpYWwiLCJ0YW5nZW50aWFsIiwiYXV0byJdLGRmbHQ6ImF1dG8iLGVkaXRU eXBlOiJwbG90In0saW5zaWRldGV4dGZvbnQ6Yyh7fSx1LHt9KSxvdXRzaWRl dGV4dGZvbnQ6Yyh7fSx1LHt9KSxhdXRvbWFyZ2luOnt2YWxUeXBlOiJib29s ZWFuIixkZmx0OiExLGVkaXRUeXBlOiJwbG90In0sdGl0bGU6e3RleHQ6e3Zh bFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToicGxvdCJ9LGZvbnQ6 Yyh7fSx1LHt9KSxwb3NpdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsidG9wIGxlZnQiLCJ0b3AgY2VudGVyIiwidG9wIHJpZ2h0IiwibWlk ZGxlIGNlbnRlciIsImJvdHRvbSBsZWZ0IiwiYm90dG9tIGNlbnRlciIsImJv dHRvbSByaWdodCJdLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3Qi fSxkb21haW46YSh7bmFtZToicGllIix0cmFjZTohMCxlZGl0VHlwZToiY2Fs YyJ9KSxob2xlOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6 MCxlZGl0VHlwZToiY2FsYyJ9LHNvcnQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRm bHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxkaXJlY3Rpb246e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpbImNsb2Nrd2lzZSIsImNvdW50ZXJjbG9ja3dp c2UiXSxkZmx0OiJjb3VudGVyY2xvY2t3aXNlIixlZGl0VHlwZToiY2FsYyJ9 LHJvdGF0aW9uOnt2YWxUeXBlOiJudW1iZXIiLG1pbjotMzYwLG1heDozNjAs ZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0scHVsbDp7dmFsVHlwZToibnVtYmVy IixtaW46MCxtYXg6MSxkZmx0OjAsYXJyYXlPazohMCxlZGl0VHlwZToiY2Fs YyJ9LF9kZXByZWNhdGVkOnt0aXRsZTp7dmFsVHlwZToic3RyaW5nIixkZmx0 OiIiLGVkaXRUeXBlOiJjYWxjIn0sdGl0bGVmb250OmMoe30sdSx7fSksdGl0 bGVwb3NpdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidG9w IGxlZnQiLCJ0b3AgY2VudGVyIiwidG9wIHJpZ2h0IiwibWlkZGxlIGNlbnRl ciIsImJvdHRvbSBsZWZ0IiwiYm90dG9tIGNlbnRlciIsImJvdHRvbSByaWdo dCJdLGVkaXRUeXBlOiJjYWxjIn19fX0seyIuLi8uLi9jb21wb25lbnRzL2Nv bG9yL2F0dHJpYnV0ZXMiOjU5MSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIu Li8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL2RvbWFp biI6NzkwLCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MSwiLi4v Li4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxfV0sMTA5NTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90 cy9wbG90cyIpO3IubmFtZT0icGllIixyLnBsb3Q9ZnVuY3Rpb24odCxlLGEs aSl7bi5wbG90QmFzZVBsb3Qoci5uYW1lLHQsZSxhLGkpfSxyLmNsZWFuPWZ1 bmN0aW9uKHQsZSxhLGkpe24uY2xlYW5CYXNlUGxvdChyLm5hbWUsdCxlLGEs aSl9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo4MjZ9XSwxMDk2OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmlj IiksYT10KCJ0aW55Y29sb3IyIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yIiksbz17fTtmdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbihlLHIp e3JldHVybiEhZSYmKCEhKGU9YShlKSkuaXNWYWxpZCgpJiYoZT1pLmFkZE9w YWNpdHkoZSxlLmdldEFscGhhKCkpLHRbcl18fCh0W3JdPWUpLGUpKX19ZnVu Y3Rpb24gbCh0LGUpe3ZhciByLG49SlNPTi5zdHJpbmdpZnkodCksaT1lW25d O2lmKCFpKXtmb3IoaT10LnNsaWNlKCkscj0wO3I8dC5sZW5ndGg7cisrKWku cHVzaChhKHRbcl0pLmxpZ2h0ZW4oMjApLnRvSGV4U3RyaW5nKCkpO2Zvcihy PTA7cjx0Lmxlbmd0aDtyKyspaS5wdXNoKGEodFtyXSkuZGFya2VuKDIwKS50 b0hleFN0cmluZygpKTtlW25dPWl9cmV0dXJuIGl9ZS5leHBvcnRzPXtjYWxj OmZ1bmN0aW9uKHQsZSl7dmFyIHIsYSxpPVtdLG89dC5fZnVsbExheW91dCxs PW8uaGlkZGVubGFiZWxzfHxbXSxjPWUubGFiZWxzLHU9ZS5tYXJrZXIuY29s b3JzfHxbXSxoPWUudmFsdWVzLGY9ZS5fbGVuZ3RoLHA9ZS5faGFzVmFsdWVz JiZmO2lmKGUuZGxhYmVsKWZvcihjPW5ldyBBcnJheShmKSxyPTA7cjxmO3Ir KyljW3JdPVN0cmluZyhlLmxhYmVsMCtyKmUuZGxhYmVsKTt2YXIgZD17fSxn PXMob1siXyIrZS50eXBlKyJjb2xvcm1hcCJdKSx2PTAsbT0hMTtmb3Iocj0w O3I8ZjtyKyspe3ZhciB5LHgsYjtpZihwKXtpZih5PWhbcl0sIW4oeSkpY29u dGludWU7aWYoKHk9K3kpPDApY29udGludWV9ZWxzZSB5PTE7dm9pZCAwIT09 KHg9Y1tyXSkmJiIiIT09eHx8KHg9cik7dmFyIF89ZFt4PVN0cmluZyh4KV07 dm9pZCAwPT09Xz8oZFt4XT1pLmxlbmd0aCwoYj0tMSE9PWwuaW5kZXhPZih4 KSl8fCh2Kz15KSxpLnB1c2goe3Y6eSxsYWJlbDp4LGNvbG9yOmcodVtyXSx4 KSxpOnIscHRzOltyXSxoaWRkZW46Yn0pKToobT0hMCwoYT1pW19dKS52Kz15 LGEucHRzLnB1c2gociksYS5oaWRkZW58fCh2Kz15KSwhMT09PWEuY29sb3Im JnVbcl0mJihhLmNvbG9yPWcodVtyXSx4KSkpfXJldHVybigiZnVubmVsYXJl YSI9PT1lLnR5cGU/bTplLnNvcnQpJiZpLnNvcnQoZnVuY3Rpb24odCxlKXty ZXR1cm4gZS52LXQudn0pLGlbMF0mJihpWzBdLnZUb3RhbD12KSxpfSxjcm9z c1RyYWNlQ2FsYzpmdW5jdGlvbih0LGUpe3ZhciByPShlfHx7fSkudHlwZTty fHwocj0icGllIik7dmFyIG49dC5fZnVsbExheW91dCxhPXQuY2FsY2RhdGEs aT1uW3IrImNvbG9yd2F5Il0scz1uWyJfIityKyJjb2xvcm1hcCJdO25bImV4 dGVuZCIrcisiY29sb3JzIl0mJihpPWwoaSxvKSk7Zm9yKHZhciBjPTAsdT0w O3U8YS5sZW5ndGg7dSsrKXt2YXIgaD1hW3VdO2lmKGhbMF0udHJhY2UudHlw ZT09PXIpZm9yKHZhciBmPTA7ZjxoLmxlbmd0aDtmKyspe3ZhciBwPWhbZl07 ITE9PT1wLmNvbG9yJiYoc1twLmxhYmVsXT9wLmNvbG9yPXNbcC5sYWJlbF06 KHNbcC5sYWJlbF09cC5jb2xvcj1pW2MlaS5sZW5ndGhdLGMrKykpfX19LG1h a2VQdWxsQ29sb3JGbjpzLGdlbmVyYXRlRXh0ZW5kZWRDb2xvcnM6bH19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCJmYXN0LWlzbnVtZXJpYyI6 MjI4LHRpbnljb2xvcjI6NTM2fV0sMTA5NzpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4v Li4vbGliIiksaT10KCIuL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3Rz L2RvbWFpbiIpLmRlZmF1bHRzLHM9dCgiLi4vYmFyL2RlZmF1bHRzIikuaGFu ZGxlVGV4dDtmdW5jdGlvbiBsKHQsZSl7dmFyIHI9QXJyYXkuaXNBcnJheSh0 KSxpPWEuaXNBcnJheU9yVHlwZWRBcnJheShlKSxvPU1hdGgubWluKHI/dC5s ZW5ndGg6MS8wLGk/ZS5sZW5ndGg6MS8wKTtpZihpc0Zpbml0ZShvKXx8KG89 MCksbyYmaSl7Zm9yKHZhciBzLGw9MDtsPG87bCsrKXt2YXIgYz1lW2xdO2lm KG4oYykmJmM+MCl7cz0hMDticmVha319c3x8KG89MCl9cmV0dXJue2hhc0xh YmVsczpyLGhhc1ZhbHVlczppLGxlbjpvfX1lLmV4cG9ydHM9e2hhbmRsZUxh YmVsc0FuZFZhbHVlczpsLHN1cHBseURlZmF1bHRzOmZ1bmN0aW9uKHQsZSxy LG4pe2Z1bmN0aW9uIGMocixuKXtyZXR1cm4gYS5jb2VyY2UodCxlLGkscixu KX12YXIgdT1sKGMoImxhYmVscyIpLGMoInZhbHVlcyIpKSxoPXUubGVuO2lm KGUuX2hhc0xhYmVscz11Lmhhc0xhYmVscyxlLl9oYXNWYWx1ZXM9dS5oYXNW YWx1ZXMsIWUuX2hhc0xhYmVscyYmZS5faGFzVmFsdWVzJiYoYygibGFiZWww IiksYygiZGxhYmVsIikpLGgpe2UuX2xlbmd0aD1oLGMoIm1hcmtlci5saW5l LndpZHRoIikmJmMoIm1hcmtlci5saW5lLmNvbG9yIiksYygibWFya2VyLmNv bG9ycyIpLGMoInNjYWxlZ3JvdXAiKTt2YXIgZixwPWMoInRleHQiKSxkPWMo InRleHR0ZW1wbGF0ZSIpO2lmKGR8fChmPWMoInRleHRpbmZvIixBcnJheS5p c0FycmF5KHApPyJ0ZXh0K3BlcmNlbnQiOiJwZXJjZW50IikpLGMoImhvdmVy dGV4dCIpLGMoImhvdmVydGVtcGxhdGUiKSxkfHxmJiYibm9uZSIhPT1mKXt2 YXIgZz1jKCJ0ZXh0cG9zaXRpb24iKTtzKHQsZSxuLGMsZyx7bW9kdWxlSGFz U2VsZWN0ZWQ6ITEsbW9kdWxlSGFzVW5zZWxlY3RlZDohMSxtb2R1bGVIYXND b25zdHJhaW46ITEsbW9kdWxlSGFzQ2xpcG9uYXhpczohMSxtb2R1bGVIYXNU ZXh0YW5nbGU6ITEsbW9kdWxlSGFzSW5zaWRlYW5jaG9yOiExfSksKEFycmF5 LmlzQXJyYXkoZyl8fCJhdXRvIj09PWd8fCJvdXRzaWRlIj09PWcpJiZjKCJh dXRvbWFyZ2luIiksKCJpbnNpZGUiPT09Z3x8ImF1dG8iPT09Z3x8QXJyYXku aXNBcnJheShnKSkmJmMoImluc2lkZXRleHRvcmllbnRhdGlvbiIpfW8oZSxu LGMpO3ZhciB2PWMoImhvbGUiKTtpZihjKCJ0aXRsZS50ZXh0Iikpe3ZhciBt PWMoInRpdGxlLnBvc2l0aW9uIix2PyJtaWRkbGUgY2VudGVyIjoidG9wIGNl bnRlciIpO3Z8fCJtaWRkbGUgY2VudGVyIiE9PW18fChlLnRpdGxlLnBvc2l0 aW9uPSJ0b3AgY2VudGVyIiksYS5jb2VyY2VGb250KGMsInRpdGxlLmZvbnQi LG4uZm9udCl9Yygic29ydCIpLGMoImRpcmVjdGlvbiIpLGMoInJvdGF0aW9u IiksYygicHVsbCIpfWVsc2UgZS52aXNpYmxlPSExfX19LHsiLi4vLi4vbGli Ijo3MTcsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6NzkwLCIuLi9iYXIvZGVmYXVs dHMiOjg2MCwiLi9hdHRyaWJ1dGVzIjoxMDk0LCJmYXN0LWlzbnVtZXJpYyI6 MjI4fV0sMTA5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiKS5hcHBlbmRBcnJh eU11bHRpUG9pbnRWYWx1ZXM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFy IHI9e2N1cnZlTnVtYmVyOmUuaW5kZXgscG9pbnROdW1iZXJzOnQucHRzLGRh dGE6ZS5faW5wdXQsZnVsbERhdGE6ZSxsYWJlbDp0LmxhYmVsLGNvbG9yOnQu Y29sb3IsdmFsdWU6dC52LHBlcmNlbnQ6dC5wZXJjZW50LHRleHQ6dC50ZXh0 LHY6dC52fTtyZXR1cm4gMT09PXQucHRzLmxlbmd0aCYmKHIucG9pbnROdW1i ZXI9ci5pPXQucHRzWzBdKSxuKHIsZSx0LnB0cyksImZ1bm5lbGFyZWEiPT09 ZS50eXBlJiYoZGVsZXRlIHIudixkZWxldGUgci5pKSxyfX0seyIuLi8uLi9j b21wb25lbnRzL2Z4L2hlbHBlcnMiOjYyN31dLDEwOTk6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ci5mb3Jt YXRQaWVQZXJjZW50PWZ1bmN0aW9uKHQsZSl7dmFyIHI9KDEwMCp0KS50b1By ZWNpc2lvbigzKTtyZXR1cm4tMSE9PXIubGFzdEluZGV4T2YoIi4iKSYmKHI9 ci5yZXBsYWNlKC9bLl0/MCskLywiIikpLG4ubnVtU2VwYXJhdGUocixlKSsi JSJ9LHIuZm9ybWF0UGllVmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnRv UHJlY2lzaW9uKDEwKTtyZXR1cm4tMSE9PXIubGFzdEluZGV4T2YoIi4iKSYm KHI9ci5yZXBsYWNlKC9bLl0/MCskLywiIikpLG4ubnVtU2VwYXJhdGUocixl KX0sci5nZXRGaXJzdEZpbGxlZD1mdW5jdGlvbih0LGUpe2lmKEFycmF5Lmlz QXJyYXkodCkpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXRb ZVtyXV07aWYobnx8MD09PW58fCIiPT09bilyZXR1cm4gbn19LHIuY2FzdE9w dGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Iu Z2V0Rmlyc3RGaWxsZWQodCxlKTp0fHx2b2lkIDB9fSx7Ii4uLy4uL2xpYiI6 NzE3fV0sMTEwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVm YXVsdHM6dCgiLi9kZWZhdWx0cyIpLnN1cHBseURlZmF1bHRzLHN1cHBseUxh eW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksbGF5b3V0QXR0 cmlidXRlczp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksY2FsYzp0KCIuL2Nh bGMiKS5jYWxjLGNyb3NzVHJhY2VDYWxjOnQoIi4vY2FsYyIpLmNyb3NzVHJh Y2VDYWxjLHBsb3Q6dCgiLi9wbG90IikucGxvdCxzdHlsZTp0KCIuL3N0eWxl Iiksc3R5bGVPbmU6dCgiLi9zdHlsZV9vbmUiKSxtb2R1bGVUeXBlOiJ0cmFj ZSIsbmFtZToicGllIixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jhc2VfcGxvdCIp LGNhdGVnb3JpZXM6WyJwaWUtbGlrZSIsInBpZSIsInNob3dMZWdlbmQiXSxt ZXRhOnt9fX0seyIuL2F0dHJpYnV0ZXMiOjEwOTQsIi4vYmFzZV9wbG90Ijox MDk1LCIuL2NhbGMiOjEwOTYsIi4vZGVmYXVsdHMiOjEwOTcsIi4vbGF5b3V0 X2F0dHJpYnV0ZXMiOjExMDEsIi4vbGF5b3V0X2RlZmF1bHRzIjoxMTAyLCIu L3Bsb3QiOjExMDMsIi4vc3R5bGUiOjExMDQsIi4vc3R5bGVfb25lIjoxMTA1 fV0sMTEwMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9e2hpZGRlbmxhYmVsczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5 cGU6ImNhbGMifSxwaWVjb2xvcndheTp7dmFsVHlwZToiY29sb3JsaXN0Iixl ZGl0VHlwZToiY2FsYyJ9LGV4dGVuZHBpZWNvbG9yczp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDExMDI6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGli IiksYT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUs YSxyLGkpfXIoImhpZGRlbmxhYmVscyIpLHIoInBpZWNvbG9yd2F5IixlLmNv bG9yd2F5KSxyKCJleHRlbmRwaWVjb2xvcnMiKX19LHsiLi4vLi4vbGliIjo3 MTcsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjExMDF9XSwxMTAzOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8u Li9wbG90cy9wbG90cyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLG89 dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLHM9dCgiLi4vLi4vY29tcG9u ZW50cy9kcmF3aW5nIiksbD10KCIuLi8uLi9saWIiKSxjPXQoIi4uLy4uL2xp Yi9zdmdfdGV4dF91dGlscyIpLHU9dCgiLi4vYmFyL3VuaWZvcm1fdGV4dCIp LGg9dS5yZWNvcmRNaW5UZXh0U2l6ZSxmPXUuY2xlYXJNaW5UZXh0U2l6ZSxw PXQoIi4vaGVscGVycyIpLGQ9dCgiLi9ldmVudF9kYXRhIiksZz10KCIuLi8u Li9saWIiKS5pc1ZhbGlkVGV4dFZhbHVlO2Z1bmN0aW9uIHYodCxlLHIpe3Zh ciBhPXJbMF0sbz1hLnRyYWNlLHM9YS5jeCxjPWEuY3k7Il9oYXNIb3Zlckxh YmVsImluIG98fChvLl9oYXNIb3ZlckxhYmVsPSExKSwiX2hhc0hvdmVyRXZl bnQiaW4gb3x8KG8uX2hhc0hvdmVyRXZlbnQ9ITEpLHQub24oIm1vdXNlb3Zl ciIsZnVuY3Rpb24odCl7dmFyIHI9ZS5fZnVsbExheW91dCx1PWUuX2Z1bGxE YXRhW28uaW5kZXhdO2lmKCFlLl9kcmFnZ2luZyYmITEhPT1yLmhvdmVybW9k ZSl7dmFyIGg9dS5ob3ZlcmluZm87aWYoQXJyYXkuaXNBcnJheShoKSYmKGg9 aS5jYXN0SG92ZXJpbmZvKHtob3ZlcmluZm86W3AuY2FzdE9wdGlvbihoLHQu cHRzKV0sX21vZHVsZTpvLl9tb2R1bGV9LHIsMCkpLCJhbGwiPT09aCYmKGg9 ImxhYmVsK3RleHQrdmFsdWUrcGVyY2VudCtuYW1lIiksdS5ob3ZlcnRlbXBs YXRlfHwibm9uZSIhPT1oJiYic2tpcCIhPT1oJiZoKXt2YXIgZj10LnJJbnNj cmliZWR8fDAsZz1zK3QucHhtaWRbMF0qKDEtZiksdj1jK3QucHhtaWRbMV0q KDEtZiksbT1yLnNlcGFyYXRvcnMseT1bXTtpZihoJiYtMSE9PWguaW5kZXhP ZigibGFiZWwiKSYmeS5wdXNoKHQubGFiZWwpLHQudGV4dD1wLmNhc3RPcHRp b24odS5ob3ZlcnRleHR8fHUudGV4dCx0LnB0cyksaCYmLTEhPT1oLmluZGV4 T2YoInRleHQiKSl7dmFyIHg9dC50ZXh0O2wuaXNWYWxpZFRleHRWYWx1ZSh4 KSYmeS5wdXNoKHgpfXQudmFsdWU9dC52LHQudmFsdWVMYWJlbD1wLmZvcm1h dFBpZVZhbHVlKHQudixtKSxoJiYtMSE9PWguaW5kZXhPZigidmFsdWUiKSYm eS5wdXNoKHQudmFsdWVMYWJlbCksdC5wZXJjZW50PXQudi9hLnZUb3RhbCx0 LnBlcmNlbnRMYWJlbD1wLmZvcm1hdFBpZVBlcmNlbnQodC5wZXJjZW50LG0p LGgmJi0xIT09aC5pbmRleE9mKCJwZXJjZW50IikmJnkucHVzaCh0LnBlcmNl bnRMYWJlbCk7dmFyIGI9dS5ob3ZlcmxhYmVsLF89Yi5mb250O2kubG9uZUhv dmVyKHt0cmFjZTpvLHgwOmctZiphLnIseDE6ZytmKmEucix5OnYsdGV4dDp5 LmpvaW4oIjxicj4iKSxuYW1lOnUuaG92ZXJ0ZW1wbGF0ZXx8LTEhPT1oLmlu ZGV4T2YoIm5hbWUiKT91Lm5hbWU6dm9pZCAwLGlkZWFsQWxpZ246dC5weG1p ZFswXTwwPyJsZWZ0IjoicmlnaHQiLGNvbG9yOnAuY2FzdE9wdGlvbihiLmJn Y29sb3IsdC5wdHMpfHx0LmNvbG9yLGJvcmRlckNvbG9yOnAuY2FzdE9wdGlv bihiLmJvcmRlcmNvbG9yLHQucHRzKSxmb250RmFtaWx5OnAuY2FzdE9wdGlv bihfLmZhbWlseSx0LnB0cyksZm9udFNpemU6cC5jYXN0T3B0aW9uKF8uc2l6 ZSx0LnB0cyksZm9udENvbG9yOnAuY2FzdE9wdGlvbihfLmNvbG9yLHQucHRz KSxuYW1lTGVuZ3RoOnAuY2FzdE9wdGlvbihiLm5hbWVsZW5ndGgsdC5wdHMp LHRleHRBbGlnbjpwLmNhc3RPcHRpb24oYi5hbGlnbix0LnB0cyksaG92ZXJ0 ZW1wbGF0ZTpwLmNhc3RPcHRpb24odS5ob3ZlcnRlbXBsYXRlLHQucHRzKSxo b3ZlcnRlbXBsYXRlTGFiZWxzOnQsZXZlbnREYXRhOltkKHQsdSldfSx7Y29u dGFpbmVyOnIuX2hvdmVybGF5ZXIubm9kZSgpLG91dGVyQ29udGFpbmVyOnIu X3BhcGVyLm5vZGUoKSxnZDplfSksby5faGFzSG92ZXJMYWJlbD0hMH1vLl9o YXNIb3ZlckV2ZW50PSEwLGUuZW1pdCgicGxvdGx5X2hvdmVyIix7cG9pbnRz OltkKHQsdSldLGV2ZW50Om4uZXZlbnR9KX19KSx0Lm9uKCJtb3VzZW91dCIs ZnVuY3Rpb24odCl7dmFyIHI9ZS5fZnVsbExheW91dCxhPWUuX2Z1bGxEYXRh W28uaW5kZXhdLHM9bi5zZWxlY3QodGhpcykuZGF0dW0oKTtvLl9oYXNIb3Zl ckV2ZW50JiYodC5vcmlnaW5hbEV2ZW50PW4uZXZlbnQsZS5lbWl0KCJwbG90 bHlfdW5ob3ZlciIse3BvaW50czpbZChzLGEpXSxldmVudDpuLmV2ZW50fSks by5faGFzSG92ZXJFdmVudD0hMSksby5faGFzSG92ZXJMYWJlbCYmKGkubG9u ZVVuaG92ZXIoci5faG92ZXJsYXllci5ub2RlKCkpLG8uX2hhc0hvdmVyTGFi ZWw9ITEpfSksdC5vbigiY2xpY2siLGZ1bmN0aW9uKHQpe3ZhciByPWUuX2Z1 bGxMYXlvdXQsYT1lLl9mdWxsRGF0YVtvLmluZGV4XTtlLl9kcmFnZ2luZ3x8 ITE9PT1yLmhvdmVybW9kZXx8KGUuX2hvdmVyZGF0YT1bZCh0LGEpXSxpLmNs aWNrKGUsbi5ldmVudCkpfSl9ZnVuY3Rpb24gbSh0LGUscil7dmFyIG49cC5j YXN0T3B0aW9uKHQuaW5zaWRldGV4dGZvbnQuY29sb3IsZS5wdHMpOyFuJiZ0 Ll9pbnB1dC50ZXh0Zm9udCYmKG49cC5jYXN0T3B0aW9uKHQuX2lucHV0LnRl eHRmb250LmNvbG9yLGUucHRzKSk7dmFyIGE9cC5jYXN0T3B0aW9uKHQuaW5z aWRldGV4dGZvbnQuZmFtaWx5LGUucHRzKXx8cC5jYXN0T3B0aW9uKHQudGV4 dGZvbnQuZmFtaWx5LGUucHRzKXx8ci5mYW1pbHksaT1wLmNhc3RPcHRpb24o dC5pbnNpZGV0ZXh0Zm9udC5zaXplLGUucHRzKXx8cC5jYXN0T3B0aW9uKHQu dGV4dGZvbnQuc2l6ZSxlLnB0cyl8fHIuc2l6ZTtyZXR1cm57Y29sb3I6bnx8 by5jb250cmFzdChlLmNvbG9yKSxmYW1pbHk6YSxzaXplOml9fWZ1bmN0aW9u IHkodCxlKXtmb3IodmFyIHIsbixhPTA7YTx0Lmxlbmd0aDthKyspaWYoKG49 KHI9dFthXVswXSkudHJhY2UpLnRpdGxlLnRleHQpe3ZhciBpPW4udGl0bGUu dGV4dDtuLl9tZXRhJiYoaT1sLnRlbXBsYXRlU3RyaW5nKGksbi5fbWV0YSkp O3ZhciBvPXMudGVzdGVyLmFwcGVuZCgidGV4dCIpLmF0dHIoImRhdGEtbm90 ZXgiLDEpLnRleHQoaSkuY2FsbChzLmZvbnQsbi50aXRsZS5mb250KS5jYWxs KGMuY29udmVydFRvVHNwYW5zLGUpLHU9cy5iQm94KG8ubm9kZSgpLCEwKTty LnRpdGxlQm94PXt3aWR0aDp1LndpZHRoLGhlaWdodDp1LmhlaWdodH0sby5y ZW1vdmUoKX19ZnVuY3Rpb24geCh0LGUscil7dmFyIG4sYT1NYXRoLnNxcnQo dC53aWR0aCp0LndpZHRoK3QuaGVpZ2h0KnQuaGVpZ2h0KSxpPWUuaGFsZmFu Z2xlLG89ZS5taWRhbmdsZSxzPWUucmluZyxsPWUuckluc2NyaWJlZCxjPXIu cnx8ZS5ycHgxLHU9ci50cmFjZS5pbnNpZGV0ZXh0b3JpZW50YXRpb24saD0i aG9yaXpvbnRhbCI9PT11LGY9InRhbmdlbnRpYWwiPT09dSxwPSJyYWRpYWwi PT09dSxkPSJhdXRvIj09PXUsZz0xPT09cyYmTWF0aC5hYnMoZS5zdGFydGFu Z2xlLWUuc3RvcGFuZ2xlKT09PTIqTWF0aC5QSSx2PVtdO2lmKCFkKXt2YXIg bSx5PWZ1bmN0aW9uKHIsYSl7aWYoZnVuY3Rpb24odCxlKXt2YXIgcj10LnN0 YXJ0YW5nbGUsbj10LnN0b3BhbmdsZTtyZXR1cm4gcj5lJiZlPm58fHI8ZSYm ZTxufShlLHIpKXt2YXIgaT1NYXRoLmFicyhyLWUuc3RhcnRhbmdsZSksbz1N YXRoLmFicyhyLWUuc3RvcGFuZ2xlKSxsPWk8bz9pOm87KG49InRhbiI9PT1h P18odCxjLHMsbCwwKTpiKHQsYyxzLGwsTWF0aC5QSS8yKSkudGV4dFBvc0Fu Z2xlPXIsdi5wdXNoKG4pfX07aWYoaHx8Zil7Zm9yKG09NDttPj0tNDttLT0y KXkoTWF0aC5QSSptLCJ0YW4iKTtmb3IobT00O20+PS00O20tPTIpeShNYXRo LlBJKihtKzEpLCJ0YW4iKX1pZihofHxwKXtmb3IobT00O20+PS00O20tPTIp eShNYXRoLlBJKihtKzEuNSksInJhZCIpO2ZvcihtPTQ7bT49LTQ7bS09Mil5 KE1hdGguUEkqKG0rLjUpLCJyYWQiKX19aWYoZ3x8ZHx8aCl7aWYoKG49e3Nj YWxlOmwqYyoyL2EsckNlbnRlcjoxLWwscm90YXRlOjB9KS50ZXh0UG9zQW5n bGU9KGUuc3RhcnRhbmdsZStlLnN0b3BhbmdsZSkvMixuLnNjYWxlPj0xKXJl dHVybiBuO3YucHVzaChuKX0oZHx8cCkmJigobj1iKHQsYyxzLGksbykpLnRl eHRQb3NBbmdsZT0oZS5zdGFydGFuZ2xlK2Uuc3RvcGFuZ2xlKS8yLHYucHVz aChuKSksKGR8fGYpJiYoKG49Xyh0LGMscyxpLG8pKS50ZXh0UG9zQW5nbGU9 KGUuc3RhcnRhbmdsZStlLnN0b3BhbmdsZSkvMix2LnB1c2gobikpO2Zvcih2 YXIgeD0wLHc9MCxrPTA7azx2Lmxlbmd0aDtrKyspe3ZhciBUPXZba10uc2Nh bGU7aWYodzxUJiYodz1ULHg9ayksIWQmJnc+PTEpYnJlYWt9cmV0dXJuIHZb eF19ZnVuY3Rpb24gYih0LGUscixuLGEpe3ZhciBpPXQud2lkdGgvdC5oZWln aHQsbz1UKGksbixlLHIpO3JldHVybntzY2FsZToyKm8vdC5oZWlnaHQsckNl bnRlcjp3KGksby9lKSxyb3RhdGU6ayhhKX19ZnVuY3Rpb24gXyh0LGUscixu LGEpe3ZhciBpPXQuaGVpZ2h0L3Qud2lkdGgsbz1UKGksbixlLHIpO3JldHVy bntzY2FsZToyKm8vdC53aWR0aCxyQ2VudGVyOncoaSxvL2UpLHJvdGF0ZTpr KGErTWF0aC5QSS8yKX19ZnVuY3Rpb24gdyh0LGUpe3JldHVybiBNYXRoLmNv cyhlKS10KmV9ZnVuY3Rpb24gayh0KXtyZXR1cm4oMTgwL01hdGguUEkqdCs3 MjApJTE4MC05MH1mdW5jdGlvbiBUKHQsZSxyLG4pe3ZhciBhPXQrMS8oMipN YXRoLnRhbihlKSk7cmV0dXJuIHIqTWF0aC5taW4oMS8oTWF0aC5zcXJ0KGEq YSsuNSkrYSksbi8oTWF0aC5zcXJ0KHQqdCtuLzIpK3QpKX1mdW5jdGlvbiBN KHQsZSl7cmV0dXJuIHQudiE9PWUudlRvdGFsfHxlLnRyYWNlLmhvbGU/TWF0 aC5taW4oMS8oMSsxL01hdGguc2luKHQuaGFsZmFuZ2xlKSksdC5yaW5nLzIp OjF9ZnVuY3Rpb24gQSh0LGUpe3ZhciByPWUucHhtaWRbMF0sbj1lLnB4bWlk WzFdLGE9dC53aWR0aC8yLGk9dC5oZWlnaHQvMjtyZXR1cm4gcjwwJiYoYSo9 LTEpLG48MCYmKGkqPS0xKSx7c2NhbGU6MSxyQ2VudGVyOjEscm90YXRlOjAs eDphK01hdGguYWJzKGkpKihhPjA/MTotMSkvMix5OmkvKDErcipyLyhuKm4p KSxvdXRzaWRlOiEwfX1mdW5jdGlvbiBTKHQsZSl7dmFyIHIsbixhLGk9dC50 cmFjZSxvPXt4OnQuY3gseTp0LmN5fSxzPXt0eDowLHR5OjB9O3MudHkrPWku dGl0bGUuZm9udC5zaXplLGE9TChpKSwtMSE9PWkudGl0bGUucG9zaXRpb24u aW5kZXhPZigidG9wIik/KG8ueS09KDErYSkqdC5yLHMudHktPXQudGl0bGVC b3guaGVpZ2h0KTotMSE9PWkudGl0bGUucG9zaXRpb24uaW5kZXhPZigiYm90 dG9tIikmJihvLnkrPSgxK2EpKnQucik7dmFyIGwsYyx1PShsPXQucixjPXQu dHJhY2UuYXNwZWN0cmF0aW8sbC8odm9pZCAwPT09Yz8xOmMpKSxoPWUudyoo aS5kb21haW4ueFsxXS1pLmRvbWFpbi54WzBdKS8yO3JldHVybi0xIT09aS50 aXRsZS5wb3NpdGlvbi5pbmRleE9mKCJsZWZ0Iik/KGgrPXUsby54LT0oMSth KSp1LHMudHgrPXQudGl0bGVCb3gud2lkdGgvMik6LTEhPT1pLnRpdGxlLnBv c2l0aW9uLmluZGV4T2YoImNlbnRlciIpP2gqPTI6LTEhPT1pLnRpdGxlLnBv c2l0aW9uLmluZGV4T2YoInJpZ2h0IikmJihoKz11LG8ueCs9KDErYSkqdSxz LnR4LT10LnRpdGxlQm94LndpZHRoLzIpLHI9aC90LnRpdGxlQm94LndpZHRo LG49RSh0LGUpL3QudGl0bGVCb3guaGVpZ2h0LHt4Om8ueCx5Om8ueSxzY2Fs ZTpNYXRoLm1pbihyLG4pLHR4OnMudHgsdHk6cy50eX19ZnVuY3Rpb24gRSh0 LGUpe3ZhciByPXQudHJhY2Usbj1lLmgqKHIuZG9tYWluLnlbMV0tci5kb21h aW4ueVswXSk7cmV0dXJuIE1hdGgubWluKHQudGl0bGVCb3guaGVpZ2h0LG4v Mil9ZnVuY3Rpb24gTCh0KXt2YXIgZSxyPXQucHVsbDtpZighcilyZXR1cm4g MDtpZihBcnJheS5pc0FycmF5KHIpKWZvcihyPTAsZT0wO2U8dC5wdWxsLmxl bmd0aDtlKyspdC5wdWxsW2VdPnImJihyPXQucHVsbFtlXSk7cmV0dXJuIHJ9 ZnVuY3Rpb24gQyh0LGUpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDtu Kyspe3ZhciBhPXRbbl1bMF0saT1hLnRyYWNlLG89aS5kb21haW4scz1lLncq KG8ueFsxXS1vLnhbMF0pLGw9ZS5oKihvLnlbMV0tby55WzBdKTtpLnRpdGxl LnRleHQmJiJtaWRkbGUgY2VudGVyIiE9PWkudGl0bGUucG9zaXRpb24mJihs LT1FKGEsZSkpO3ZhciBjPXMvMix1PWwvMjsiZnVubmVsYXJlYSIhPT1pLnR5 cGV8fGkuc2NhbGVncm91cHx8KHUvPWkuYXNwZWN0cmF0aW8pLGEucj1NYXRo Lm1pbihjLHUpLygxK0woaSkpLGEuY3g9ZS5sK2UudyooaS5kb21haW4ueFsx XStpLmRvbWFpbi54WzBdKS8yLGEuY3k9ZS50K2UuaCooMS1pLmRvbWFpbi55 WzBdKS1sLzIsaS50aXRsZS50ZXh0JiYtMSE9PWkudGl0bGUucG9zaXRpb24u aW5kZXhPZigiYm90dG9tIikmJihhLmN5LT1FKGEsZSkpLGkuc2NhbGVncm91 cCYmLTE9PT1yLmluZGV4T2YoaS5zY2FsZWdyb3VwKSYmci5wdXNoKGkuc2Nh bGVncm91cCl9IWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG4sYSxpPTA7aTxl Lmxlbmd0aDtpKyspe3ZhciBvPTEvMCxzPWVbaV07Zm9yKG49MDtuPHQubGVu Z3RoO24rKylpZihyPXRbbl1bMF0sKGE9ci50cmFjZSkuc2NhbGVncm91cD09 PXMpe3ZhciBsO2lmKCJwaWUiPT09YS50eXBlKWw9ci5yKnIucjtlbHNlIGlm KCJmdW5uZWxhcmVhIj09PWEudHlwZSl7dmFyIGMsdTthLmFzcGVjdHJhdGlv PjE/KGM9ci5yLHU9Yy9hLmFzcGVjdHJhdGlvKToodT1yLnIsYz11KmEuYXNw ZWN0cmF0aW8pLGMqPSgxK2EuYmFzZXJhdGlvKS8yLGw9Yyp1fW89TWF0aC5t aW4obyxsL3IudlRvdGFsKX1mb3Iobj0wO248dC5sZW5ndGg7bisrKWlmKHI9 dFtuXVswXSwoYT1yLnRyYWNlKS5zY2FsZWdyb3VwPT09cyl7dmFyIGg9bypy LnZUb3RhbDsiZnVubmVsYXJlYSI9PT1hLnR5cGUmJihoLz0oMSthLmJhc2Vy YXRpbykvMixoLz1hLmFzcGVjdHJhdGlvKSxyLnI9TWF0aC5zcXJ0KGgpfX19 KHQscil9ZnVuY3Rpb24gUCh0LGUpe3JldHVyblt0Kk1hdGguc2luKGUpLC10 Kk1hdGguY29zKGUpXX1mdW5jdGlvbiBPKHQsZSxyKXt2YXIgbj10Ll9mdWxs TGF5b3V0LGE9ci50cmFjZSxpPWEudGV4dHRlbXBsYXRlLG89YS50ZXh0aW5m bztpZighaSYmbyYmIm5vbmUiIT09byl7dmFyIHMsYz1vLnNwbGl0KCIrIiks dT1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PWMuaW5kZXhPZih0KX0saD11KCJs YWJlbCIpLGY9dSgidGV4dCIpLGQ9dSgidmFsdWUiKSx2PXUoInBlcmNlbnQi KSxtPW4uc2VwYXJhdG9ycztpZihzPWg/W2UubGFiZWxdOltdLGYpe3ZhciB5 PXAuZ2V0Rmlyc3RGaWxsZWQoYS50ZXh0LGUucHRzKTtnKHkpJiZzLnB1c2go eSl9ZCYmcy5wdXNoKHAuZm9ybWF0UGllVmFsdWUoZS52LG0pKSx2JiZzLnB1 c2gocC5mb3JtYXRQaWVQZXJjZW50KGUudi9yLnZUb3RhbCxtKSksZS50ZXh0 PXMuam9pbigiPGJyPiIpfWlmKGkpe3ZhciB4PWwuY2FzdE9wdGlvbihhLGUu aSwidGV4dHRlbXBsYXRlIik7aWYoeCl7dmFyIGI9ZnVuY3Rpb24odCl7cmV0 dXJue2xhYmVsOnQubGFiZWwsdmFsdWU6dC52LHZhbHVlTGFiZWw6cC5mb3Jt YXRQaWVWYWx1ZSh0LnYsbi5zZXBhcmF0b3JzKSxwZXJjZW50OnQudi9yLnZU b3RhbCxwZXJjZW50TGFiZWw6cC5mb3JtYXRQaWVQZXJjZW50KHQudi9yLnZU b3RhbCxuLnNlcGFyYXRvcnMpLGNvbG9yOnQuY29sb3IsdGV4dDp0LnRleHQs Y3VzdG9tZGF0YTpsLmNhc3RPcHRpb24oYSx0LmksImN1c3RvbWRhdGEiKX19 KGUpLF89cC5nZXRGaXJzdEZpbGxlZChhLnRleHQsZS5wdHMpOyhnKF8pfHwi Ij09PV8pJiYoYi50ZXh0PV8pLGUudGV4dD1sLnRleHR0ZW1wbGF0ZVN0cmlu Zyh4LGIsdC5fZnVsbExheW91dC5fZDNsb2NhbGUsYixhLl9tZXRhfHx7fSl9 ZWxzZSBlLnRleHQ9IiJ9fWZ1bmN0aW9uIHoodCxlKXt2YXIgcj10LnJvdGF0 ZSxuPXQuc2NhbGU7bj4xJiYobj0xKTt2YXIgYT1yKk1hdGguUEkvMTgwLGk9 TWF0aC5jb3MoYSksbz1NYXRoLnNpbihhKSxzPShlLmxlZnQrZS5yaWdodCkv MixsPShlLnRvcCtlLmJvdHRvbSkvMjt0LnRleHRYPXMqaS1sKm8sdC50ZXh0 WT1zKm8rbCppLHQubm9DZW50ZXI9ITB9ZS5leHBvcnRzPXtwbG90OmZ1bmN0 aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dCxpPXIuX3NpemU7ZigicGll IixyKSx5KGUsdCksQyhlLGkpO3ZhciB1PWwubWFrZVRyYWNlR3JvdXBzKHIu X3BpZWxheWVyLGUsInRyYWNlIikuZWFjaChmdW5jdGlvbihlKXt2YXIgdT1u LnNlbGVjdCh0aGlzKSxmPWVbMF0sZD1mLnRyYWNlOyFmdW5jdGlvbih0KXt2 YXIgZSxyLG4sYT10WzBdLGk9YS5yLG89YS50cmFjZSxzPW8ucm90YXRpb24q TWF0aC5QSS8xODAsbD0yKk1hdGguUEkvYS52VG90YWwsYz0icHgwIix1PSJw eDEiO2lmKCJjb3VudGVyY2xvY2t3aXNlIj09PW8uZGlyZWN0aW9uKXtmb3Io ZT0wO2U8dC5sZW5ndGgmJnRbZV0uaGlkZGVuO2UrKyk7aWYoZT09PXQubGVu Z3RoKXJldHVybjtzKz1sKnRbZV0udixsKj0tMSxjPSJweDEiLHU9InB4MCJ9 Zm9yKG49UChpLHMpLGU9MDtlPHQubGVuZ3RoO2UrKykocj10W2VdKS5oaWRk ZW58fChyW2NdPW4sci5zdGFydGFuZ2xlPXMscys9bCpyLnYvMixyLnB4bWlk PVAoaSxzKSxyLm1pZGFuZ2xlPXMscys9bCpyLnYvMixuPVAoaSxzKSxyLnN0 b3BhbmdsZT1zLHJbdV09bixyLmxhcmdlQXJjPXIudj5hLnZUb3RhbC8yPzE6 MCxyLmhhbGZhbmdsZT1NYXRoLlBJKk1hdGgubWluKHIudi9hLnZUb3RhbCwu NSksci5yaW5nPTEtby5ob2xlLHIuckluc2NyaWJlZD1NKHIsYSkpfShlKSx1 LmF0dHIoInN0cm9rZS1saW5lam9pbiIsInJvdW5kIiksdS5lYWNoKGZ1bmN0 aW9uKCl7dmFyIGc9bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLnNsaWNl IikuZGF0YShlKTtnLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2xp Y2UiLCEwKSxnLmV4aXQoKS5yZW1vdmUoKTt2YXIgeT1bW1tdLFtdXSxbW10s W11dXSxiPSExO2cuZWFjaChmdW5jdGlvbihhLGkpe2lmKGEuaGlkZGVuKW4u c2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aCxnIikucmVtb3ZlKCk7ZWxz ZXthLnBvaW50TnVtYmVyPWEuaSxhLmN1cnZlTnVtYmVyPWQuaW5kZXgseVth LnB4bWlkWzFdPDA/MDoxXVthLnB4bWlkWzBdPDA/MDoxXS5wdXNoKGEpO3Zh ciBvPWYuY3gsdT1mLmN5LGc9bi5zZWxlY3QodGhpcyksXz1nLnNlbGVjdEFs bCgicGF0aC5zdXJmYWNlIikuZGF0YShbYV0pO2lmKF8uZW50ZXIoKS5hcHBl bmQoInBhdGgiKS5jbGFzc2VkKCJzdXJmYWNlIiwhMCkuc3R5bGUoeyJwb2lu dGVyLWV2ZW50cyI6ImFsbCJ9KSxnLmNhbGwodix0LGUpLGQucHVsbCl7dmFy IHc9K3AuY2FzdE9wdGlvbihkLnB1bGwsYS5wdHMpfHwwO3c+MCYmKG8rPXcq YS5weG1pZFswXSx1Kz13KmEucHhtaWRbMV0pfWEuY3hGaW5hbD1vLGEuY3lG aW5hbD11O3ZhciBrPWQuaG9sZTtpZihhLnY9PT1mLnZUb3RhbCl7dmFyIFQ9 Ik0iKyhvK2EucHgwWzBdKSsiLCIrKHUrYS5weDBbMV0pK0MoYS5weDAsYS5w eG1pZCwhMCwxKStDKGEucHhtaWQsYS5weDAsITAsMSkrIloiO2s/Xy5hdHRy KCJkIiwiTSIrKG8rayphLnB4MFswXSkrIiwiKyh1K2sqYS5weDBbMV0pK0Mo YS5weDAsYS5weG1pZCwhMSxrKStDKGEucHhtaWQsYS5weDAsITEsaykrIloi K1QpOl8uYXR0cigiZCIsVCl9ZWxzZXt2YXIgTT1DKGEucHgwLGEucHgxLCEw LDEpO2lmKGspe3ZhciBTPTEtaztfLmF0dHIoImQiLCJNIisobytrKmEucHgx WzBdKSsiLCIrKHUrayphLnB4MVsxXSkrQyhhLnB4MSxhLnB4MCwhMSxrKSsi bCIrUyphLnB4MFswXSsiLCIrUyphLnB4MFsxXStNKyJaIil9ZWxzZSBfLmF0 dHIoImQiLCJNIitvKyIsIit1KyJsIithLnB4MFswXSsiLCIrYS5weDBbMV0r TSsiWiIpfU8odCxhLGYpO3ZhciBFPXAuY2FzdE9wdGlvbihkLnRleHRwb3Np dGlvbixhLnB0cyksTD1nLnNlbGVjdEFsbCgiZy5zbGljZXRleHQiKS5kYXRh KGEudGV4dCYmIm5vbmUiIT09RT9bMF06W10pO0wuZW50ZXIoKS5hcHBlbmQo ImciKS5jbGFzc2VkKCJzbGljZXRleHQiLCEwKSxMLmV4aXQoKS5yZW1vdmUo KSxMLmVhY2goZnVuY3Rpb24oKXt2YXIgZz1sLmVuc3VyZVNpbmdsZShuLnNl bGVjdCh0aGlzKSwidGV4dCIsIiIsZnVuY3Rpb24odCl7dC5hdHRyKCJkYXRh LW5vdGV4IiwxKX0pLHY9bC5lbnN1cmVVbmlmb3JtRm9udFNpemUodCwib3V0 c2lkZSI9PT1FP2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj1wLmNhc3RPcHRpb24o dC5vdXRzaWRldGV4dGZvbnQuY29sb3IsZS5wdHMpfHxwLmNhc3RPcHRpb24o dC50ZXh0Zm9udC5jb2xvcixlLnB0cyl8fHIuY29sb3IsYT1wLmNhc3RPcHRp b24odC5vdXRzaWRldGV4dGZvbnQuZmFtaWx5LGUucHRzKXx8cC5jYXN0T3B0 aW9uKHQudGV4dGZvbnQuZmFtaWx5LGUucHRzKXx8ci5mYW1pbHksaT1wLmNh c3RPcHRpb24odC5vdXRzaWRldGV4dGZvbnQuc2l6ZSxlLnB0cyl8fHAuY2Fz dE9wdGlvbih0LnRleHRmb250LnNpemUsZS5wdHMpfHxyLnNpemU7cmV0dXJu e2NvbG9yOm4sZmFtaWx5OmEsc2l6ZTppfX0oZCxhLHIuZm9udCk6bShkLGEs ci5mb250KSk7Zy50ZXh0KGEudGV4dCkuYXR0cih7Y2xhc3M6InNsaWNldGV4 dCIsdHJhbnNmb3JtOiIiLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9KS5jYWxs KHMuZm9udCx2KS5jYWxsKGMuY29udmVydFRvVHNwYW5zLHQpO3ZhciB5LF89 cy5iQm94KGcubm9kZSgpKTtpZigib3V0c2lkZSI9PT1FKXk9QShfLGEpO2Vs c2UgaWYoeT14KF8sYSxmKSwiYXV0byI9PT1FJiZ5LnNjYWxlPDEpe3ZhciB3 PWwuZW5zdXJlVW5pZm9ybUZvbnRTaXplKHQsZC5vdXRzaWRldGV4dGZvbnQp O2cuY2FsbChzLmZvbnQsdykseT1BKF89cy5iQm94KGcubm9kZSgpKSxhKX12 YXIgaz15LnRleHRQb3NBbmdsZSxUPXZvaWQgMD09PWs/YS5weG1pZDpQKGYu cixrKTtpZih5LnRhcmdldFg9bytUWzBdKnkuckNlbnRlcisoeS54fHwwKSx5 LnRhcmdldFk9dStUWzFdKnkuckNlbnRlcisoeS55fHwwKSx6KHksXykseS5v dXRzaWRlKXt2YXIgTT15LnRhcmdldFk7YS55TGFiZWxNaW49TS1fLmhlaWdo dC8yLGEueUxhYmVsTWlkPU0sYS55TGFiZWxNYXg9TStfLmhlaWdodC8yLGEu bGFiZWxFeHRyYVg9MCxhLmxhYmVsRXh0cmFZPTAsYj0hMH15LmZvbnRTaXpl PXYuc2l6ZSxoKGQudHlwZSx5LHIpLGVbaV0udHJhbnNmb3JtPXksZy5hdHRy KCJ0cmFuc2Zvcm0iLGwuZ2V0VGV4dFRyYW5zZm9ybSh5KSl9KX1mdW5jdGlv biBDKHQsZSxyLG4pe3ZhciBpPW4qKGVbMF0tdFswXSksbz1uKihlWzFdLXRb MV0pO3JldHVybiJhIituKmYucisiLCIrbipmLnIrIiAwICIrYS5sYXJnZUFy Yysocj8iIDEgIjoiIDAgIikraSsiLCIrb319KTt2YXIgXz1uLnNlbGVjdCh0 aGlzKS5zZWxlY3RBbGwoImcudGl0bGV0ZXh0IikuZGF0YShkLnRpdGxlLnRl eHQ/WzBdOltdKTtpZihfLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgi dGl0bGV0ZXh0IiwhMCksXy5leGl0KCkucmVtb3ZlKCksXy5lYWNoKGZ1bmN0 aW9uKCl7dmFyIGUscj1sLmVuc3VyZVNpbmdsZShuLnNlbGVjdCh0aGlzKSwi dGV4dCIsIiIsZnVuY3Rpb24odCl7dC5hdHRyKCJkYXRhLW5vdGV4IiwxKX0p LGE9ZC50aXRsZS50ZXh0O2QuX21ldGEmJihhPWwudGVtcGxhdGVTdHJpbmco YSxkLl9tZXRhKSksci50ZXh0KGEpLmF0dHIoe2NsYXNzOiJ0aXRsZXRleHQi LHRyYW5zZm9ybToiIiwidGV4dC1hbmNob3IiOiJtaWRkbGUifSkuY2FsbChz LmZvbnQsZC50aXRsZS5mb250KS5jYWxsKGMuY29udmVydFRvVHNwYW5zLHQp LGU9Im1pZGRsZSBjZW50ZXIiPT09ZC50aXRsZS5wb3NpdGlvbj9mdW5jdGlv bih0KXt2YXIgZT1NYXRoLnNxcnQodC50aXRsZUJveC53aWR0aCp0LnRpdGxl Qm94LndpZHRoK3QudGl0bGVCb3guaGVpZ2h0KnQudGl0bGVCb3guaGVpZ2h0 KTtyZXR1cm57eDp0LmN4LHk6dC5jeSxzY2FsZTp0LnRyYWNlLmhvbGUqdC5y KjIvZSx0eDowLHR5Oi10LnRpdGxlQm94LmhlaWdodC8yK3QudHJhY2UudGl0 bGUuZm9udC5zaXplfX0oZik6UyhmLGkpLHIuYXR0cigidHJhbnNmb3JtIiwi dHJhbnNsYXRlKCIrZS54KyIsIitlLnkrIikiKyhlLnNjYWxlPDE/InNjYWxl KCIrZS5zY2FsZSsiKSI6IiIpKyJ0cmFuc2xhdGUoIitlLnR4KyIsIitlLnR5 KyIpIil9KSxiJiZmdW5jdGlvbih0LGUpe3ZhciByLG4sYSxpLG8scyxsLGMs dSxoLGYsZCxnO2Z1bmN0aW9uIHYodCxlKXtyZXR1cm4gdC5weG1pZFsxXS1l LnB4bWlkWzFdfWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gZS5weG1pZFsxXS10 LnB4bWlkWzFdfWZ1bmN0aW9uIHkodCxyKXtyfHwocj17fSk7dmFyIGEsYyx1 LGYsZCxnLHY9ci5sYWJlbEV4dHJhWSsobj9yLnlMYWJlbE1heDpyLnlMYWJl bE1pbiksbT1uP3QueUxhYmVsTWluOnQueUxhYmVsTWF4LHk9bj90LnlMYWJl bE1heDp0LnlMYWJlbE1pbix4PXQuY3lGaW5hbCtvKHQucHgwWzFdLHQucHgx WzFdKSxiPXYtbTtpZihiKmw+MCYmKHQubGFiZWxFeHRyYVk9YiksQXJyYXku aXNBcnJheShlLnB1bGwpKWZvcihjPTA7YzxoLmxlbmd0aDtjKyspKHU9aFtj XSk9PT10fHwocC5jYXN0T3B0aW9uKGUucHVsbCx0LnB0cyl8fDApPj0ocC5j YXN0T3B0aW9uKGUucHVsbCx1LnB0cyl8fDApfHwoKHQucHhtaWRbMV0tdS5w eG1pZFsxXSkqbD4wPyhmPXUuY3lGaW5hbCtvKHUucHgwWzFdLHUucHgxWzFd KSwoYj1mLW0tdC5sYWJlbEV4dHJhWSkqbD4wJiYodC5sYWJlbEV4dHJhWSs9 YikpOih5K3QubGFiZWxFeHRyYVkteCkqbD4wJiYoYT0zKnMqTWF0aC5hYnMo Yy1oLmluZGV4T2YodCkpLGQ9dS5jeEZpbmFsK2kodS5weDBbMF0sdS5weDFb MF0pLChnPWQrYS0odC5jeEZpbmFsK3QucHhtaWRbMF0pLXQubGFiZWxFeHRy YVgpKnM+MCYmKHQubGFiZWxFeHRyYVgrPWcpKSl9Zm9yKG49MDtuPDI7bisr KWZvcihhPW4/djptLG89bj9NYXRoLm1heDpNYXRoLm1pbixsPW4/MTotMSxy PTA7cjwyO3IrKyl7Zm9yKGk9cj9NYXRoLm1heDpNYXRoLm1pbixzPXI/MTot MSwoYz10W25dW3JdKS5zb3J0KGEpLHU9dFsxLW5dW3JdLGg9dS5jb25jYXQo YyksZD1bXSxmPTA7ZjxjLmxlbmd0aDtmKyspdm9pZCAwIT09Y1tmXS55TGFi ZWxNaWQmJmQucHVzaChjW2ZdKTtmb3IoZz0hMSxmPTA7biYmZjx1Lmxlbmd0 aDtmKyspaWYodm9pZCAwIT09dVtmXS55TGFiZWxNaWQpe2c9dVtmXTticmVh a31mb3IoZj0wO2Y8ZC5sZW5ndGg7ZisrKXt2YXIgeD1mJiZkW2YtMV07ZyYm IWYmJih4PWcpLHkoZFtmXSx4KX19fSh5LGQpLGZ1bmN0aW9uKHQsZSl7dC5l YWNoKGZ1bmN0aW9uKHQpe3ZhciByPW4uc2VsZWN0KHRoaXMpO2lmKHQubGFi ZWxFeHRyYVh8fHQubGFiZWxFeHRyYVkpe3ZhciBhPXIuc2VsZWN0KCJnLnNs aWNldGV4dCB0ZXh0Iik7dC50cmFuc2Zvcm0udGFyZ2V0WCs9dC5sYWJlbEV4 dHJhWCx0LnRyYW5zZm9ybS50YXJnZXRZKz10LmxhYmVsRXh0cmFZLGEuYXR0 cigidHJhbnNmb3JtIixsLmdldFRleHRUcmFuc2Zvcm0odC50cmFuc2Zvcm0p KTt2YXIgaT10LmN4RmluYWwrdC5weG1pZFswXSxzPXQuY3lGaW5hbCt0LnB4 bWlkWzFdLGM9Ik0iK2krIiwiK3MsdT0odC55TGFiZWxNYXgtdC55TGFiZWxN aW4pKih0LnB4bWlkWzBdPDA/LTE6MSkvNDtpZih0LmxhYmVsRXh0cmFYKXt2 YXIgaD10LmxhYmVsRXh0cmFYKnQucHhtaWRbMV0vdC5weG1pZFswXSxmPXQu eUxhYmVsTWlkK3QubGFiZWxFeHRyYVktKHQuY3lGaW5hbCt0LnB4bWlkWzFd KTtNYXRoLmFicyhoKT5NYXRoLmFicyhmKT9jKz0ibCIrZip0LnB4bWlkWzBd L3QucHhtaWRbMV0rIiwiK2YrIkgiKyhpK3QubGFiZWxFeHRyYVgrdSk6Yys9 ImwiK3QubGFiZWxFeHRyYVgrIiwiK2grInYiKyhmLWgpKyJoIit1fWVsc2Ug Yys9IlYiKyh0LnlMYWJlbE1pZCt0LmxhYmVsRXh0cmFZKSsiaCIrdTtsLmVu c3VyZVNpbmdsZShyLCJwYXRoIiwidGV4dGxpbmUiKS5jYWxsKG8uc3Ryb2tl LGUub3V0c2lkZXRleHRmb250LmNvbG9yKS5hdHRyKHsic3Ryb2tlLXdpZHRo IjpNYXRoLm1pbigyLGUub3V0c2lkZXRleHRmb250LnNpemUvOCksZDpjLGZp bGw6Im5vbmUifSl9ZWxzZSByLnNlbGVjdCgicGF0aC50ZXh0bGluZSIpLnJl bW92ZSgpfSl9KGcsZCksYiYmZC5hdXRvbWFyZ2luKXt2YXIgdz1zLmJCb3go dS5ub2RlKCkpLGs9ZC5kb21haW4sVD1pLncqKGsueFsxXS1rLnhbMF0pLE09 aS5oKihrLnlbMV0tay55WzBdKSxFPSguNSpULWYucikvaS53LEw9KC41Kk0t Zi5yKS9pLmg7YS5hdXRvTWFyZ2luKHQsInBpZS4iK2QudWlkKyIuYXV0b21h cmdpbiIse3hsOmsueFswXS1FLHhyOmsueFsxXStFLHliOmsueVswXS1MLHl0 OmsueVsxXStMLGw6TWF0aC5tYXgoZi5jeC1mLnItdy5sZWZ0LDApLHI6TWF0 aC5tYXgody5yaWdodC0oZi5jeCtmLnIpLDApLGI6TWF0aC5tYXgody5ib3R0 b20tKGYuY3krZi5yKSwwKSx0Ok1hdGgubWF4KGYuY3ktZi5yLXcudG9wLDAp LHBhZDo1fSl9fSl9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dS5zZWxlY3RB bGwoInRzcGFuIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRo aXMpO3QuYXR0cigiZHkiKSYmdC5hdHRyKCJkeSIsdC5hdHRyKCJkeSIpKX0p fSwwKX0sZm9ybWF0U2xpY2VMYWJlbDpPLHRyYW5zZm9ybUluc2lkZVRleHQ6 eCxkZXRlcm1pbmVJbnNpZGVUZXh0Rm9udDptLHBvc2l0aW9uVGl0bGVPdXRz aWRlOlMscHJlcmVuZGVyVGl0bGVzOnksbGF5b3V0QXJlYXM6QyxhdHRhY2hG eEhhbmRsZXJzOnYsY29tcHV0ZVRyYW5zZm9ybTp6fX0seyIuLi8uLi9jb21w b25lbnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6 NjEzLCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2xpYiI6NzE3 LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjc0MSwiLi4vLi4vcGxvdHMv cGxvdHMiOjgyNiwiLi4vYmFyL3VuaWZvcm1fdGV4dCI6ODcyLCIuL2V2ZW50 X2RhdGEiOjEwOTgsIi4vaGVscGVycyI6MTA5OSxkMzoxNjV9XSwxMTA0Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10 KCIuL3N0eWxlX29uZSIpLGk9dCgiLi4vYmFyL3VuaWZvcm1fdGV4dCIpLnJl c2l6ZVRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxM YXlvdXQuX3BpZWxheWVyLnNlbGVjdEFsbCgiLnRyYWNlIik7aSh0LGUsInBp ZSIpLGUuZWFjaChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9bi5z ZWxlY3QodGhpcyk7ci5zdHlsZSh7b3BhY2l0eTplLm9wYWNpdHl9KSxyLnNl bGVjdEFsbCgicGF0aC5zdXJmYWNlIikuZWFjaChmdW5jdGlvbih0KXtuLnNl bGVjdCh0aGlzKS5jYWxsKGEsdCxlKX0pfSl9fSx7Ii4uL2Jhci91bmlmb3Jt X3RleHQiOjg3MiwiLi9zdHlsZV9vbmUiOjExMDUsZDM6MTY1fV0sMTEwNTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yIiksYT10KCIuL2hlbHBlcnMiKS5jYXN0T3B0aW9u O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9ci5tYXJrZXIubGlu ZSxvPWEoaS5jb2xvcixlLnB0cyl8fG4uZGVmYXVsdExpbmUscz1hKGkud2lk dGgsZS5wdHMpfHwwO3Quc3R5bGUoInN0cm9rZS13aWR0aCIscykuY2FsbChu LmZpbGwsZS5jb2xvcikuY2FsbChuLnN0cm9rZSxvKX19LHsiLi4vLi4vY29t cG9uZW50cy9jb2xvciI6NTkyLCIuL2hlbHBlcnMiOjEwOTl9XSwxMTA2Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0 ZXIvYXR0cmlidXRlcyIpO2UuZXhwb3J0cz17eDpuLngseTpuLnkseHk6e3Zh bFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0saW5kaWNlczp7 dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx4Ym91bmRz Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHlib3Vu ZHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdGV4 dDpuLnRleHQsbWFya2VyOntjb2xvcjp7dmFsVHlwZToiY29sb3IiLGFycmF5 T2s6ITEsZWRpdFR5cGU6ImNhbGMifSxvcGFjaXR5Ont2YWxUeXBlOiJudW1i ZXIiLG1pbjowLG1heDoxLGRmbHQ6MSxhcnJheU9rOiExLGVkaXRUeXBlOiJj YWxjIn0sYmxlbmQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6bnVsbCxlZGl0 VHlwZToiY2FsYyJ9LHNpemVtaW46e3ZhbFR5cGU6Im51bWJlciIsbWluOi4x LG1heDoyLGRmbHQ6LjUsZWRpdFR5cGU6ImNhbGMifSxzaXplbWF4Ont2YWxU eXBlOiJudW1iZXIiLG1pbjouMSxkZmx0OjIwLGVkaXRUeXBlOiJjYWxjIn0s Ym9yZGVyOntjb2xvcjp7dmFsVHlwZToiY29sb3IiLGFycmF5T2s6ITEsZWRp dFR5cGU6ImNhbGMifSxhcmVhcmF0aW86e3ZhbFR5cGU6Im51bWJlciIsbWlu OjAsbWF4OjEsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNh bGMifSxlZGl0VHlwZToiY2FsYyJ9LHRyYW5zZm9ybXM6dm9pZCAwfX0seyIu Li9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjB9XSwxMTA3OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsLXBvaW50Y2xvdWQyZCIp LGE9dCgiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSIpLGk9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F1dG9yYW5nZSIpLmZpbmRFeHRyZW1lcyxvPXQoIi4u L3NjYXR0ZXIvZ2V0X3RyYWNlX2NvbG9yIik7ZnVuY3Rpb24gcyh0LGUpe3Ro aXMuc2NlbmU9dCx0aGlzLnVpZD1lLHRoaXMudHlwZT0icG9pbnRjbG91ZCIs dGhpcy5waWNrWERhdGE9W10sdGhpcy5waWNrWURhdGE9W10sdGhpcy54RGF0 YT1bXSx0aGlzLnlEYXRhPVtdLHRoaXMudGV4dExhYmVscz1bXSx0aGlzLmNv bG9yPSJyZ2IoMCwgMCwgMCkiLHRoaXMubmFtZT0iIix0aGlzLmhvdmVyaW5m bz0iYWxsIix0aGlzLmlkVG9JbmRleD1uZXcgSW50MzJBcnJheSgwKSx0aGlz LmJvdW5kcz1bMCwwLDAsMF0sdGhpcy5wb2ludGNsb3VkT3B0aW9ucz17cG9z aXRpb25zOm5ldyBGbG9hdDMyQXJyYXkoMCksaWRUb0luZGV4OnRoaXMuaWRU b0luZGV4LHNpemVtaW46LjUsc2l6ZW1heDoxMixjb2xvcjpbMCwwLDAsMV0s YXJlYVJhdGlvOjEsYm9yZGVyQ29sb3I6WzAsMCwwLDFdfSx0aGlzLnBvaW50 Y2xvdWQ9bih0LmdscGxvdCx0aGlzLnBvaW50Y2xvdWRPcHRpb25zKSx0aGlz LnBvaW50Y2xvdWQuX3RyYWNlPXRoaXN9dmFyIGw9cy5wcm90b3R5cGU7bC5o YW5kbGVQaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaWRUb0luZGV4W3Qu cG9pbnRJZF07cmV0dXJue3RyYWNlOnRoaXMsZGF0YUNvb3JkOnQuZGF0YUNv b3JkLHRyYWNlQ29vcmQ6dGhpcy5waWNrWFlEYXRhP1t0aGlzLnBpY2tYWURh dGFbMiplXSx0aGlzLnBpY2tYWURhdGFbMiplKzFdXTpbdGhpcy5waWNrWERh dGFbZV0sdGhpcy5waWNrWURhdGFbZV1dLHRleHRMYWJlbDpBcnJheS5pc0Fy cmF5KHRoaXMudGV4dExhYmVscyk/dGhpcy50ZXh0TGFiZWxzW2VdOnRoaXMu dGV4dExhYmVscyxjb2xvcjp0aGlzLmNvbG9yLG5hbWU6dGhpcy5uYW1lLHBv aW50SW5kZXg6ZSxob3ZlcmluZm86dGhpcy5ob3ZlcmluZm99fSxsLnVwZGF0 ZT1mdW5jdGlvbih0KXt0aGlzLmluZGV4PXQuaW5kZXgsdGhpcy50ZXh0TGFi ZWxzPXQudGV4dCx0aGlzLm5hbWU9dC5uYW1lLHRoaXMuaG92ZXJpbmZvPXQu aG92ZXJpbmZvLHRoaXMuYm91bmRzPVsxLzAsMS8wLC0xLzAsLTEvMF0sdGhp cy51cGRhdGVGYXN0KHQpLHRoaXMuY29sb3I9byh0LHt9KX0sbC51cGRhdGVG YXN0PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixvLHMsbCxjPXRoaXMueERhdGE9 dGhpcy5waWNrWERhdGE9dC54LHU9dGhpcy55RGF0YT10aGlzLnBpY2tZRGF0 YT10LnksaD10aGlzLnBpY2tYWURhdGE9dC54eSxmPXQueGJvdW5kcyYmdC55 Ym91bmRzLHA9dC5pbmRpY2VzLGQ9dGhpcy5ib3VuZHM7aWYoaCl7aWYobj1o LGU9aC5sZW5ndGg+Pj4xLGYpZFswXT10Lnhib3VuZHNbMF0sZFsyXT10Lnhi b3VuZHNbMV0sZFsxXT10Lnlib3VuZHNbMF0sZFszXT10Lnlib3VuZHNbMV07 ZWxzZSBmb3IobD0wO2w8ZTtsKyspbz1uWzIqbF0scz1uWzIqbCsxXSxvPGRb MF0mJihkWzBdPW8pLG8+ZFsyXSYmKGRbMl09byksczxkWzFdJiYoZFsxXT1z KSxzPmRbM10mJihkWzNdPXMpO2lmKHApcj1wO2Vsc2UgZm9yKHI9bmV3IElu dDMyQXJyYXkoZSksbD0wO2w8ZTtsKyspcltsXT1sfWVsc2UgZm9yKGU9Yy5s ZW5ndGgsbj1uZXcgRmxvYXQzMkFycmF5KDIqZSkscj1uZXcgSW50MzJBcnJh eShlKSxsPTA7bDxlO2wrKylvPWNbbF0scz11W2xdLHJbbF09bCxuWzIqbF09 byxuWzIqbCsxXT1zLG88ZFswXSYmKGRbMF09byksbz5kWzJdJiYoZFsyXT1v KSxzPGRbMV0mJihkWzFdPXMpLHM+ZFszXSYmKGRbM109cyk7dGhpcy5pZFRv SW5kZXg9cix0aGlzLnBvaW50Y2xvdWRPcHRpb25zLmlkVG9JbmRleD1yLHRo aXMucG9pbnRjbG91ZE9wdGlvbnMucG9zaXRpb25zPW47dmFyIGc9YSh0Lm1h cmtlci5jb2xvciksdj1hKHQubWFya2VyLmJvcmRlci5jb2xvciksbT10Lm9w YWNpdHkqdC5tYXJrZXIub3BhY2l0eTtnWzNdKj1tLHRoaXMucG9pbnRjbG91 ZE9wdGlvbnMuY29sb3I9Zzt2YXIgeT10Lm1hcmtlci5ibGVuZDtpZihudWxs PT09eSl7eT1jLmxlbmd0aDwxMDB8fHUubGVuZ3RoPDEwMH10aGlzLnBvaW50 Y2xvdWRPcHRpb25zLmJsZW5kPXksdlszXSo9bSx0aGlzLnBvaW50Y2xvdWRP cHRpb25zLmJvcmRlckNvbG9yPXY7dmFyIHg9dC5tYXJrZXIuc2l6ZW1pbixi PU1hdGgubWF4KHQubWFya2VyLnNpemVtYXgsdC5tYXJrZXIuc2l6ZW1pbik7 dGhpcy5wb2ludGNsb3VkT3B0aW9ucy5zaXplTWluPXgsdGhpcy5wb2ludGNs b3VkT3B0aW9ucy5zaXplTWF4PWIsdGhpcy5wb2ludGNsb3VkT3B0aW9ucy5h cmVhUmF0aW89dC5tYXJrZXIuYm9yZGVyLmFyZWFyYXRpbyx0aGlzLnBvaW50 Y2xvdWQudXBkYXRlKHRoaXMucG9pbnRjbG91ZE9wdGlvbnMpO3ZhciBfPXRo aXMuc2NlbmUueGF4aXMsdz10aGlzLnNjZW5lLnlheGlzLGs9Yi8yfHwuNTt0 Ll9leHRyZW1lc1tfLl9pZF09aShfLFtkWzBdLGRbMl1dLHtwcGFkOmt9KSx0 Ll9leHRyZW1lc1t3Ll9pZF09aSh3LFtkWzFdLGRbM11dLHtwcGFkOmt9KX0s bC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5wb2ludGNsb3VkLmRpc3Bvc2Uo KX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IHModCxlLnVp ZCk7cmV0dXJuIHIudXBkYXRlKGUpLHJ9fSx7Ii4uLy4uL2xpYi9zdHIycmdi YXJyYXkiOjc0MCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSI6 NzY0LCIuLi9zY2F0dGVyL2dldF90cmFjZV9jb2xvciI6MTEzMCwiZ2wtcG9p bnRjbG91ZDJkIjoyOTV9XSwxMTA4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9hdHRyaWJ1dGVz Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBpKHIsaSl7 cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9aSgieCIpLGkoInkiKSxpKCJ4 Ym91bmRzIiksaSgieWJvdW5kcyIpLHQueHkmJnQueHkgaW5zdGFuY2VvZiBG bG9hdDMyQXJyYXkmJihlLnh5PXQueHkpLHQuaW5kaWNlcyYmdC5pbmRpY2Vz IGluc3RhbmNlb2YgSW50MzJBcnJheSYmKGUuaW5kaWNlcz10LmluZGljZXMp LGkoInRleHQiKSxpKCJtYXJrZXIuY29sb3IiLHIpLGkoIm1hcmtlci5vcGFj aXR5IiksaSgibWFya2VyLmJsZW5kIiksaSgibWFya2VyLnNpemVtaW4iKSxp KCJtYXJrZXIuc2l6ZW1heCIpLGkoIm1hcmtlci5ib3JkZXIuY29sb3IiLHIp LGkoIm1hcmtlci5ib3JkZXIuYXJlYXJhdGlvIiksZS5fbGVuZ3RoPW51bGx9 fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2F0dHJpYnV0ZXMiOjExMDZ9XSwxMTA5 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0 cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIu L2RlZmF1bHRzIiksY2FsYzp0KCIuLi9zY2F0dGVyM2QvY2FsYyIpLHBsb3Q6 dCgiLi9jb252ZXJ0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InBvaW50 Y2xvdWQiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2dsMmQiKSxj YXRlZ29yaWVzOlsiZ2wiLCJnbDJkIiwic2hvd0xlZ2VuZCJdLG1ldGE6e319 fSx7Ii4uLy4uL3Bsb3RzL2dsMmQiOjgwMywiLi4vc2NhdHRlcjNkL2NhbGMi OjExNDgsIi4vYXR0cmlidXRlcyI6MTEwNiwiLi9jb252ZXJ0IjoxMTA3LCIu L2RlZmF1bHRzIjoxMTA4fV0sMTExMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMi KSxhPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vY29tcG9u ZW50cy9meC9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy9kb21haW4i KS5hdHRyaWJ1dGVzLGw9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmli dXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxjPXQoIi4uLy4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksdT10KCIuLi8uLi9wbG90X2Fw aS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXksaD10KCIuLi8uLi9s aWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxmPXQoIi4uLy4uL3Bsb3RfYXBpL2Vk aXRfdHlwZXMiKS5vdmVycmlkZUFsbDt0KCIuLi8uLi9jb25zdGFudHMvZG9j cyIpLkZPUk1BVF9MSU5LOyhlLmV4cG9ydHM9Zih7aG92ZXJpbmZvOmgoe30s YS5ob3ZlcmluZm8se2ZsYWdzOltdLGFycmF5T2s6ITF9KSxob3ZlcmxhYmVs Om8uaG92ZXJsYWJlbCxkb21haW46cyh7bmFtZToic2Fua2V5Iix0cmFjZToh MH0pLG9yaWVudGF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6 WyJ2IiwiaCJdLGRmbHQ6ImgifSx2YWx1ZWZvcm1hdDp7dmFsVHlwZToic3Ry aW5nIixkZmx0OiIuM3MifSx2YWx1ZXN1ZmZpeDp7dmFsVHlwZToic3RyaW5n IixkZmx0OiIifSxhcnJhbmdlbWVudDp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsic25hcCIsInBlcnBlbmRpY3VsYXIiLCJmcmVlZm9ybSIsImZp eGVkIl0sZGZsdDoic25hcCJ9LHRleHRmb250Om4oe30pLG5vZGU6e2xhYmVs Ont2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxncm91cHM6e3ZhbFR5 cGU6ImluZm9fYXJyYXkiLGltcGxpZWRFZGl0czp7eDpbXSx5OltdfSxkaW1l bnNpb25zOjIsZnJlZUxlbmd0aDohMCxkZmx0OltdLGl0ZW1zOnt2YWxUeXBl OiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn19LHg6e3ZhbFR5cGU6ImRhdGFf YXJyYXkiLGRmbHQ6W119LHk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6 W119LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMH0sbGluZTp7 Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmkuZGVmYXVsdExpbmUsYXJy YXlPazohMH0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDou NSxhcnJheU9rOiEwfX0scGFkOnt2YWxUeXBlOiJudW1iZXIiLGFycmF5T2s6 ITEsbWluOjAsZGZsdDoyMH0sdGhpY2tuZXNzOnt2YWxUeXBlOiJudW1iZXIi LGFycmF5T2s6ITEsbWluOjEsZGZsdDoyMH0saG92ZXJpbmZvOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGwiLCJub25lIiwic2tpcCJdLGRm bHQ6ImFsbCJ9LGhvdmVybGFiZWw6by5ob3ZlcmxhYmVsLGhvdmVydGVtcGxh dGU6bCh7fSx7a2V5czpbInZhbHVlIiwibGFiZWwiXX0pfSxsaW5rOntsYWJl bDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0sY29sb3I6e3ZhbFR5 cGU6ImNvbG9yIixhcnJheU9rOiEwfSxsaW5lOntjb2xvcjp7dmFsVHlwZToi Y29sb3IiLGRmbHQ6aS5kZWZhdWx0TGluZSxhcnJheU9rOiEwfSx3aWR0aDp7 dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsYXJyYXlPazohMH19LHNv dXJjZTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0sdGFyZ2V0Ont2 YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSx2YWx1ZTp7dmFsVHlwZToi ZGF0YV9hcnJheSIsZGZsdDpbXX0saG92ZXJpbmZvOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyJhbGwiLCJub25lIiwic2tpcCJdLGRmbHQ6ImFs bCJ9LGhvdmVybGFiZWw6by5ob3ZlcmxhYmVsLGhvdmVydGVtcGxhdGU6bCh7 fSx7a2V5czpbInZhbHVlIiwibGFiZWwiXX0pLGNvbG9yc2NhbGVzOnUoImNv bmNlbnRyYXRpb25zY2FsZXMiLHtlZGl0VHlwZToiY2FsYyIsbGFiZWw6e3Zh bFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMiLGRmbHQ6IiJ9LGNtYXg6 e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMiLGRmbHQ6MX0sY21p bjp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyIsZGZsdDowfSxj b2xvcnNjYWxlOmgoYygpLmNvbG9yc2NhbGUse2RmbHQ6W1swLCJ3aGl0ZSJd LFsxLCJibGFjayJdXX0pfSl9fSwiY2FsYyIsIm5lc3RlZCIpKS50cmFuc2Zv cm1zPXZvaWQgMH0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0 ZXMiOjU5MSwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0 ZXMiOjU5OSwiLi4vLi4vY29tcG9uZW50cy9meC9hdHRyaWJ1dGVzIjo2MjIs Ii4uLy4uL2NvbnN0YW50cy9kb2NzIjo2ODgsIi4uLy4uL2xpYi9leHRlbmQi OjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9w bG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUsIi4uLy4uL3Bsb3RzL2F0dHJp YnV0ZXMiOjc2MiwiLi4vLi4vcGxvdHMvZG9tYWluIjo3OTAsIi4uLy4uL3Bs b3RzL2ZvbnRfYXR0cmlidXRlcyI6NzkxLCIuLi8uLi9wbG90cy90ZW1wbGF0 ZV9hdHRyaWJ1dGVzIjo4NDF9XSwxMTExOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMi KS5vdmVycmlkZUFsbCxhPXQoIi4uLy4uL3Bsb3RzL2dldF9kYXRhIikuZ2V0 TW9kdWxlQ2FsY0RhdGEsaT10KCIuL3Bsb3QiKSxvPXQoIi4uLy4uL2NvbXBv bmVudHMvZngvbGF5b3V0X2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL2xpYi9z ZXRjdXJzb3IiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQi KSxjPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9zZWxlY3QiKS5wcmVwU2Vs ZWN0LHU9dCgiLi4vLi4vbGliIiksaD10KCIuLi8uLi9yZWdpc3RyeSIpO2Z1 bmN0aW9uIGYodCxlKXt2YXIgcj10Ll9mdWxsRGF0YVtlXSxuPXQuX2Z1bGxM YXlvdXQsYT1uLmRyYWdtb2RlLGk9InBhbiI9PT1uLmRyYWdtb2RlPyJtb3Zl IjoiY3Jvc3NoYWlyIixvPXIuX2JnUmVjdDtpZigicGFuIiE9PWEmJiJ6b29t IiE9PWEpe3MobyxpKTt2YXIgZj17X2lkOiJ4IixjMnA6dS5pZGVudGl0eSxf b2Zmc2V0OnIuX3NhbmtleS50cmFuc2xhdGVYLF9sZW5ndGg6ci5fc2Fua2V5 LndpZHRofSxwPXtfaWQ6InkiLGMycDp1LmlkZW50aXR5LF9vZmZzZXQ6ci5f c2Fua2V5LnRyYW5zbGF0ZVksX2xlbmd0aDpyLl9zYW5rZXkuaGVpZ2h0fSxk PXtnZDp0LGVsZW1lbnQ6by5ub2RlKCkscGxvdGluZm86e2lkOmUseGF4aXM6 Zix5YXhpczpwLGZpbGxSYW5nZUl0ZW1zOnUubm9vcH0sc3VicGxvdDplLHhh eGVzOltmXSx5YXhlczpbcF0sZG9uZUZuQ29tcGxldGVkOmZ1bmN0aW9uKHIp e3ZhciBuLGE9dC5fZnVsbERhdGFbZV0saT1hLm5vZGUuZ3JvdXBzLnNsaWNl KCksbz1bXTtmdW5jdGlvbiBzKHQpe2Zvcih2YXIgZT1hLl9zYW5rZXkuZ3Jh cGgubm9kZXMscj0wO3I8ZS5sZW5ndGg7cisrKWlmKGVbcl0ucG9pbnROdW1i ZXI9PT10KXJldHVybiBlW3JdfWZvcih2YXIgbD0wO2w8ci5sZW5ndGg7bCsr KXt2YXIgYz1zKHJbbF0ucG9pbnROdW1iZXIpO2lmKGMpaWYoYy5ncm91cCl7 Zm9yKHZhciB1PTA7dTxjLmNoaWxkcmVuTm9kZXMubGVuZ3RoO3UrKylvLnB1 c2goYy5jaGlsZHJlbk5vZGVzW3VdLnBvaW50TnVtYmVyKTtpW2MucG9pbnRO dW1iZXItYS5ub2RlLl9jb3VudF09ITF9ZWxzZSBvLnB1c2goYy5wb2ludE51 bWJlcil9bj1pLmZpbHRlcihCb29sZWFuKS5jb25jYXQoW29dKSxoLmNhbGwo Il9ndWlSZXN0eWxlIix0LHsibm9kZS5ncm91cHMiOltuXX0sZSl9LHByZXBG bjpmdW5jdGlvbih0LGUscil7Yyh0LGUscixkLGEpfX07bC5pbml0KGQpfX1y Lm5hbWU9InNhbmtleSIsci5iYXNlTGF5b3V0QXR0ck92ZXJyaWRlcz1uKHto b3ZlcmxhYmVsOm8uaG92ZXJsYWJlbH0sInBsb3QiLCJuZXN0ZWQiKSxyLnBs b3Q9ZnVuY3Rpb24odCl7dmFyIGU9YSh0LmNhbGNkYXRhLCJzYW5rZXkiKVsw XTtpKHQsZSksci51cGRhdGVGeCh0KX0sci5jbGVhbj1mdW5jdGlvbih0LGUs cixuKXt2YXIgYT1uLl9oYXMmJm4uX2hhcygic2Fua2V5IiksaT1lLl9oYXMm JmUuX2hhcygic2Fua2V5Iik7YSYmIWkmJihuLl9wYXBlcmRpdi5zZWxlY3RB bGwoIi5zYW5rZXkiKS5yZW1vdmUoKSxuLl9wYXBlcmRpdi5zZWxlY3RBbGwo Ii5iZ3NhbmtleSIpLnJlbW92ZSgpKX0sci51cGRhdGVGeD1mdW5jdGlvbih0 KXtmb3IodmFyIGU9MDtlPHQuX2Z1bGxEYXRhLmxlbmd0aDtlKyspZih0LGUp fX0seyIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50Ijo2MTAsIi4uLy4u L2NvbXBvbmVudHMvZngvbGF5b3V0X2F0dHJpYnV0ZXMiOjYzMSwiLi4vLi4v bGliIjo3MTcsIi4uLy4uL2xpYi9zZXRjdXJzb3IiOjczNywiLi4vLi4vcGxv dF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v c2VsZWN0Ijo3ODIsIi4uLy4uL3Bsb3RzL2dldF9kYXRhIjo4MDAsIi4uLy4u L3JlZ2lzdHJ5Ijo4NDYsIi4vcGxvdCI6MTExNn1dLDExMTI6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgic3Ryb25nbHktY29ubmVj dGVkLWNvbXBvbmVudHMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4v bGliL2d1cCIpLndyYXAsbz1hLmlzQXJyYXlPclR5cGVkQXJyYXkscz1hLmlz SW5kZXgsbD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKTtmdW5j dGlvbiBjKHQpe3ZhciBlLHI9dC5ub2RlLGk9dC5saW5rLGM9W10sdT1vKGku Y29sb3IpLGg9e30sZj17fSxwPWkuY29sb3JzY2FsZXMubGVuZ3RoO2Zvcihl PTA7ZTxwO2UrKyl7dmFyIGQ9aS5jb2xvcnNjYWxlc1tlXSxnPWwuZXh0cmFj dFNjYWxlKGQse2NMZXR0ZXI6ImMifSksdj1sLm1ha2VDb2xvclNjYWxlRnVu YyhnKTtmW2QubGFiZWxdPXZ9dmFyIG09MDtmb3IoZT0wO2U8aS52YWx1ZS5s ZW5ndGg7ZSsrKWkuc291cmNlW2VdPm0mJihtPWkuc291cmNlW2VdKSxpLnRh cmdldFtlXT5tJiYobT1pLnRhcmdldFtlXSk7dmFyIHkseD1tKzE7dC5ub2Rl Ll9jb3VudD14O3ZhciBiPXQubm9kZS5ncm91cHMsXz17fTtmb3IoZT0wO2U8 Yi5sZW5ndGg7ZSsrKXt2YXIgdz1iW2VdO2Zvcih5PTA7eTx3Lmxlbmd0aDt5 Kyspe3ZhciBrPXdbeV0sVD14K2U7Xy5oYXNPd25Qcm9wZXJ0eShrKT9hLndh cm4oIk5vZGUgIitrKyIgaXMgYWxyZWFkeSBwYXJ0IG9mIGEgZ3JvdXAuIik6 X1trXT1UfX12YXIgTT17c291cmNlOltdLHRhcmdldDpbXX07Zm9yKGU9MDtl PGkudmFsdWUubGVuZ3RoO2UrKyl7dmFyIEE9aS52YWx1ZVtlXSxTPWkuc291 cmNlW2VdLEU9aS50YXJnZXRbZV07aWYoQT4wJiZzKFMseCkmJnMoRSx4KSYm KCFfLmhhc093blByb3BlcnR5KFMpfHwhXy5oYXNPd25Qcm9wZXJ0eShFKXx8 X1tTXSE9PV9bRV0pKXtfLmhhc093blByb3BlcnR5KEUpJiYoRT1fW0VdKSxf Lmhhc093blByb3BlcnR5KFMpJiYoUz1fW1NdKSxFPStFLGhbUz0rU109aFtF XT0hMDt2YXIgTD0iIjtpLmxhYmVsJiZpLmxhYmVsW2VdJiYoTD1pLmxhYmVs W2VdKTt2YXIgQz1udWxsO0wmJmYuaGFzT3duUHJvcGVydHkoTCkmJihDPWZb TF0pLGMucHVzaCh7cG9pbnROdW1iZXI6ZSxsYWJlbDpMLGNvbG9yOnU/aS5j b2xvcltlXTppLmNvbG9yLGNvbmNlbnRyYXRpb25zY2FsZTpDLHNvdXJjZTpT LHRhcmdldDpFLHZhbHVlOitBfSksTS5zb3VyY2UucHVzaChTKSxNLnRhcmdl dC5wdXNoKEUpfX12YXIgUD14K2IubGVuZ3RoLE89byhyLmNvbG9yKSx6PVtd O2ZvcihlPTA7ZTxQO2UrKylpZihoW2VdKXt2YXIgST1yLmxhYmVsW2VdO3ou cHVzaCh7Z3JvdXA6ZT54LTEsY2hpbGRyZW5Ob2RlczpbXSxwb2ludE51bWJl cjplLGxhYmVsOkksY29sb3I6Tz9yLmNvbG9yW2VdOnIuY29sb3J9KX12YXIg RD0hMTtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgaT1hLmluaXQy ZEFycmF5KHQsMCksbz0wO288TWF0aC5taW4oZS5sZW5ndGgsci5sZW5ndGgp O28rKylpZihhLmlzSW5kZXgoZVtvXSx0KSYmYS5pc0luZGV4KHJbb10sdCkp e2lmKGVbb109PT1yW29dKXJldHVybiEwO2lbZVtvXV0ucHVzaChyW29dKX1y ZXR1cm4gbihpKS5jb21wb25lbnRzLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJu IHQubGVuZ3RoPjF9KX0oUCxNLnNvdXJjZSxNLnRhcmdldCkmJihEPSEwKSx7 Y2lyY3VsYXI6RCxsaW5rczpjLG5vZGVzOnosZ3JvdXBzOmIsZ3JvdXBMb29r dXA6X319ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9YyhlKTtyZXR1 cm4gaSh7Y2lyY3VsYXI6ci5jaXJjdWxhcixfbm9kZXM6ci5ub2RlcyxfbGlu a3M6ci5saW5rcyxfZ3JvdXBzOnIuZ3JvdXBzLF9ncm91cExvb2t1cDpyLmdy b3VwTG9va3VwfSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6 NjA0LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2d1cCI6NzE1LCJzdHJv bmdseS1jb25uZWN0ZWQtY29tcG9uZW50cyI6NTI5fV0sMTExMzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e25vZGVUZXh0T2Zm c2V0SG9yaXpvbnRhbDo0LG5vZGVUZXh0T2Zmc2V0VmVydGljYWw6Myxub2Rl UGFkQWNyb3NzOjEwLHNhbmtleUl0ZXJhdGlvbnM6NTAsZm9yY2VJdGVyYXRp b25zOjUsZm9yY2VUaWNrc1BlckZyYW1lOjEwLGR1cmF0aW9uOjUwMCxlYXNl OiJsaW5lYXIiLGNuOntzYW5rZXk6InNhbmtleSIsc2Fua2V5TGlua3M6InNh bmtleS1saW5rcyIsc2Fua2V5TGluazoic2Fua2V5LWxpbmsiLHNhbmtleU5v ZGVTZXQ6InNhbmtleS1ub2RlLXNldCIsc2Fua2V5Tm9kZToic2Fua2V5LW5v ZGUiLG5vZGVSZWN0OiJub2RlLXJlY3QiLG5vZGVDYXB0dXJlOiJub2RlLWNh cHR1cmUiLG5vZGVDZW50ZXJlZDoibm9kZS1lbnRlcmVkIixub2RlTGFiZWxH dWlkZToibm9kZS1sYWJlbC1ndWlkZSIsbm9kZUxhYmVsOiJub2RlLWxhYmVs Iixub2RlTGFiZWxUZXh0UGF0aDoibm9kZS1sYWJlbC10ZXh0LXBhdGgifX19 LHt9XSwxMTE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksaT10KCIuLi8u Li9jb21wb25lbnRzL2NvbG9yIiksbz10KCJ0aW55Y29sb3IyIikscz10KCIu Li8uLi9wbG90cy9kb21haW4iKS5kZWZhdWx0cyxsPXQoIi4uLy4uL2NvbXBv bmVudHMvZngvaG92ZXJsYWJlbF9kZWZhdWx0cyIpLGM9dCgiLi4vLi4vcGxv dF9hcGkvcGxvdF90ZW1wbGF0ZSIpLHU9dCgiLi4vLi4vcGxvdHMvYXJyYXlf Y29udGFpbmVyX2RlZmF1bHRzIik7ZnVuY3Rpb24gaCh0LGUpe2Z1bmN0aW9u IHIocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEubGluay5jb2xvcnNjYWxl cyxyLGkpfXIoImxhYmVsIikscigiY21pbiIpLHIoImNtYXgiKSxyKCJjb2xv cnNjYWxlIil9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGYpe2Z1bmN0aW9u IHAocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgZD1uLmV4 dGVuZERlZXAoZi5ob3ZlcmxhYmVsLHQuaG92ZXJsYWJlbCksZz10Lm5vZGUs dj1jLm5ld0NvbnRhaW5lcihlLCJub2RlIik7ZnVuY3Rpb24gbSh0LGUpe3Jl dHVybiBuLmNvZXJjZShnLHYsYS5ub2RlLHQsZSl9bSgibGFiZWwiKSxtKCJn cm91cHMiKSxtKCJ4IiksbSgieSIpLG0oInBhZCIpLG0oInRoaWNrbmVzcyIp LG0oImxpbmUuY29sb3IiKSxtKCJsaW5lLndpZHRoIiksbSgiaG92ZXJpbmZv Iix0LmhvdmVyaW5mbyksbChnLHYsbSxkKSxtKCJob3ZlcnRlbXBsYXRlIik7 dmFyIHk9Zi5jb2xvcndheTttKCJjb2xvciIsdi5sYWJlbC5tYXAoZnVuY3Rp b24odCxlKXtyZXR1cm4gaS5hZGRPcGFjaXR5KGZ1bmN0aW9uKHQpe3JldHVy biB5W3QleS5sZW5ndGhdfShlKSwuOCl9KSk7dmFyIHg9dC5saW5rfHx7fSxi PWMubmV3Q29udGFpbmVyKGUsImxpbmsiKTtmdW5jdGlvbiBfKHQsZSl7cmV0 dXJuIG4uY29lcmNlKHgsYixhLmxpbmssdCxlKX1fKCJsYWJlbCIpLF8oInNv dXJjZSIpLF8oInRhcmdldCIpLF8oInZhbHVlIiksXygibGluZS5jb2xvciIp LF8oImxpbmUud2lkdGgiKSxfKCJob3ZlcmluZm8iLHQuaG92ZXJpbmZvKSxs KHgsYixfLGQpLF8oImhvdmVydGVtcGxhdGUiKTt2YXIgdyxrPW8oZi5wYXBl cl9iZ2NvbG9yKS5nZXRMdW1pbmFuY2UoKTwuMzMzPyJyZ2JhKDI1NSwgMjU1 LCAyNTUsIDAuNikiOiJyZ2JhKDAsIDAsIDAsIDAuMikiO18oImNvbG9yIixu LnJlcGVhdChrLGIudmFsdWUubGVuZ3RoKSksdSh4LGIse25hbWU6ImNvbG9y c2NhbGVzIixoYW5kbGVJdGVtRGVmYXVsdHM6aH0pLHMoZSxmLHApLHAoIm9y aWVudGF0aW9uIikscCgidmFsdWVmb3JtYXQiKSxwKCJ2YWx1ZXN1ZmZpeCIp LHYueC5sZW5ndGgmJnYueS5sZW5ndGgmJih3PSJmcmVlZm9ybSIpLHAoImFy cmFuZ2VtZW50Iix3KSxuLmNvZXJjZUZvbnQocCwidGV4dGZvbnQiLG4uZXh0 ZW5kRmxhdCh7fSxmLmZvbnQpKSxlLl9sZW5ndGg9bnVsbH19LHsiLi4vLi4v Y29tcG9uZW50cy9jb2xvciI6NTkyLCIuLi8uLi9jb21wb25lbnRzL2Z4L2hv dmVybGFiZWxfZGVmYXVsdHMiOjYyOSwiLi4vLi4vbGliIjo3MTcsIi4uLy4u L3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjc1NSwiLi4vLi4vcGxvdHMvYXJy YXlfY29udGFpbmVyX2RlZmF1bHRzIjo3NjEsIi4uLy4uL3Bsb3RzL2RvbWFp biI6NzkwLCIuL2F0dHJpYnV0ZXMiOjExMTAsdGlueWNvbG9yMjo1MzZ9XSwx MTE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17 YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0 KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxv dCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzYW5rZXkiLGJhc2VQbG90 TW9kdWxlOnQoIi4vYmFzZV9wbG90Iiksc2VsZWN0UG9pbnRzOnQoIi4vc2Vs ZWN0LmpzIiksY2F0ZWdvcmllczpbIm5vT3BhY2l0eSJdLG1ldGE6e319fSx7 Ii4vYXR0cmlidXRlcyI6MTExMCwiLi9iYXNlX3Bsb3QiOjExMTEsIi4vY2Fs YyI6MTExMiwiLi9kZWZhdWx0cyI6MTExNCwiLi9wbG90IjoxMTE2LCIuL3Nl bGVjdC5qcyI6MTExOH1dLDExMTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4vcmVuZGVyIiksaT10KCIuLi8u Li9jb21wb25lbnRzL2Z4Iiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9y Iikscz10KCIuLi8uLi9saWIiKSxsPXQoIi4vY29uc3RhbnRzIikuY24sYz1z Ll87ZnVuY3Rpb24gdSh0KXtyZXR1cm4iIiE9PXR9ZnVuY3Rpb24gaCh0LGUp e3JldHVybiB0LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXk9PT1l LnRyYWNlSWR9KX1mdW5jdGlvbiBmKHQsZSl7bi5zZWxlY3QodCkuc2VsZWN0 KCJwYXRoIikuc3R5bGUoImZpbGwtb3BhY2l0eSIsZSksbi5zZWxlY3QodCku c2VsZWN0KCJyZWN0Iikuc3R5bGUoImZpbGwtb3BhY2l0eSIsZSl9ZnVuY3Rp b24gcCh0KXtuLnNlbGVjdCh0KS5zZWxlY3QoInRleHQubmFtZSIpLnN0eWxl KCJmaWxsIiwiYmxhY2siKX1mdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlv bihlKXtyZXR1cm4tMSE9PXQubm9kZS5zb3VyY2VMaW5rcy5pbmRleE9mKGUu bGluayl8fC0xIT09dC5ub2RlLnRhcmdldExpbmtzLmluZGV4T2YoZS5saW5r KX19ZnVuY3Rpb24gZyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLTEh PT1lLm5vZGUuc291cmNlTGlua3MuaW5kZXhPZih0LmxpbmspfHwtMSE9PWUu bm9kZS50YXJnZXRMaW5rcy5pbmRleE9mKHQubGluayl9fWZ1bmN0aW9uIHYo dCxlLHIpe2UmJnImJmgocixlKS5zZWxlY3RBbGwoIi4iK2wuc2Fua2V5TGlu aykuZmlsdGVyKGQoZSkpLmNhbGwoeS5iaW5kKDAsZSxyLCExKSl9ZnVuY3Rp b24gbSh0LGUscil7ZSYmciYmaChyLGUpLnNlbGVjdEFsbCgiLiIrbC5zYW5r ZXlMaW5rKS5maWx0ZXIoZChlKSkuY2FsbCh4LmJpbmQoMCxlLHIsITEpKX1m dW5jdGlvbiB5KHQsZSxyLG4pe3ZhciBhPW4uZGF0dW0oKS5saW5rLmxhYmVs O24uc3R5bGUoImZpbGwtb3BhY2l0eSIsZnVuY3Rpb24odCl7aWYoIXQubGlu ay5jb25jZW50cmF0aW9uc2NhbGUpcmV0dXJuLjR9KSxhJiZoKGUsdCkuc2Vs ZWN0QWxsKCIuIitsLnNhbmtleUxpbmspLmZpbHRlcihmdW5jdGlvbih0KXty ZXR1cm4gdC5saW5rLmxhYmVsPT09YX0pLnN0eWxlKCJmaWxsLW9wYWNpdHki LGZ1bmN0aW9uKHQpe2lmKCF0LmxpbmsuY29uY2VudHJhdGlvbnNjYWxlKXJl dHVybi40fSksciYmaChlLHQpLnNlbGVjdEFsbCgiLiIrbC5zYW5rZXlOb2Rl KS5maWx0ZXIoZyh0KSkuY2FsbCh2KX1mdW5jdGlvbiB4KHQsZSxyLG4pe3Zh ciBhPW4uZGF0dW0oKS5saW5rLmxhYmVsO24uc3R5bGUoImZpbGwtb3BhY2l0 eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQudGlueUNvbG9yQWxwaGF9KSxhJiZo KGUsdCkuc2VsZWN0QWxsKCIuIitsLnNhbmtleUxpbmspLmZpbHRlcihmdW5j dGlvbih0KXtyZXR1cm4gdC5saW5rLmxhYmVsPT09YX0pLnN0eWxlKCJmaWxs LW9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0LnRpbnlDb2xvckFscGhh fSksciYmaChlLHQpLnNlbGVjdEFsbChsLnNhbmtleU5vZGUpLmZpbHRlcihn KHQpKS5jYWxsKG0pfWZ1bmN0aW9uIGIodCxlKXt2YXIgcj10LmhvdmVybGFi ZWx8fHt9LG49cy5uZXN0ZWRQcm9wZXJ0eShyLGUpLmdldCgpO3JldHVybiFB cnJheS5pc0FycmF5KG4pJiZufWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zv cih2YXIgcj10Ll9mdWxsTGF5b3V0LHM9ci5fcGFwZXIsaD1yLl9zaXplLGQ9 MDtkPHQuX2Z1bGxEYXRhLmxlbmd0aDtkKyspaWYodC5fZnVsbERhdGFbZF0u dmlzaWJsZSYmdC5fZnVsbERhdGFbZF0udHlwZT09PWwuc2Fua2V5JiYhdC5f ZnVsbERhdGFbZF0uX3ZpZXdJbml0aWFsKXt2YXIgZz10Ll9mdWxsRGF0YVtk XS5ub2RlO3QuX2Z1bGxEYXRhW2RdLl92aWV3SW5pdGlhbD17bm9kZTp7Z3Jv dXBzOmcuZ3JvdXBzLnNsaWNlKCkseDpnLnguc2xpY2UoKSx5OmcueS5zbGlj ZSgpfX19dmFyIF89Yyh0LCJzb3VyY2U6IikrIiAiLHc9Yyh0LCJ0YXJnZXQ6 IikrIiAiLGs9Yyh0LCJjb25jZW50cmF0aW9uOiIpKyIgIixUPWModCwiaW5j b21pbmcgZmxvdyBjb3VudDoiKSsiICIsTT1jKHQsIm91dGdvaW5nIGZsb3cg Y291bnQ6IikrIiAiO2EodCxzLGUse3dpZHRoOmgudyxoZWlnaHQ6aC5oLG1h cmdpbjp7dDpoLnQscjpoLnIsYjpoLmIsbDpoLmx9fSx7bGlua0V2ZW50czp7 aG92ZXI6ZnVuY3Rpb24oZSxyLGEpeyExIT09dC5fZnVsbExheW91dC5ob3Zl cm1vZGUmJihuLnNlbGVjdChlKS5jYWxsKHkuYmluZCgwLHIsYSwhMCkpLCJz a2lwIiE9PXIubGluay50cmFjZS5saW5rLmhvdmVyaW5mbyYmKHIubGluay5m dWxsRGF0YT1yLmxpbmsudHJhY2UsdC5lbWl0KCJwbG90bHlfaG92ZXIiLHtl dmVudDpuLmV2ZW50LHBvaW50czpbci5saW5rXX0pKSl9LGZvbGxvdzpmdW5j dGlvbihlLGEpe2lmKCExIT09dC5fZnVsbExheW91dC5ob3Zlcm1vZGUpe3Zh ciBzPWEubGluay50cmFjZS5saW5rO2lmKCJub25lIiE9PXMuaG92ZXJpbmZv JiYic2tpcCIhPT1zLmhvdmVyaW5mbyl7Zm9yKHZhciBsPVtdLGM9MCxoPTA7 aDxhLmZsb3cubGlua3MubGVuZ3RoO2grKyl7dmFyIGQ9YS5mbG93Lmxpbmtz W2hdO2lmKCJjbG9zZXN0IiE9PXQuX2Z1bGxMYXlvdXQuaG92ZXJtb2RlfHxh LmxpbmsucG9pbnROdW1iZXI9PT1kLnBvaW50TnVtYmVyKXthLmxpbmsucG9p bnROdW1iZXI9PT1kLnBvaW50TnVtYmVyJiYoYz1oKSxkLmZ1bGxEYXRhPWQu dHJhY2Uscz1hLmxpbmsudHJhY2UubGluazt2YXIgZz1tKGQpLHY9e3ZhbHVl TGFiZWw6bi5mb3JtYXQoYS52YWx1ZUZvcm1hdCkoZC52YWx1ZSkrYS52YWx1 ZVN1ZmZpeH07bC5wdXNoKHt4OmdbMF0seTpnWzFdLG5hbWU6di52YWx1ZUxh YmVsLHRleHQ6W2QubGFiZWx8fCIiLF8rZC5zb3VyY2UubGFiZWwsdytkLnRh cmdldC5sYWJlbCxkLmNvbmNlbnRyYXRpb25zY2FsZT9rK24uZm9ybWF0KCIl MC4yZiIpKGQuZmxvdy5sYWJlbENvbmNlbnRyYXRpb24pOiIiXS5maWx0ZXIo dSkuam9pbigiPGJyPiIpLGNvbG9yOmIocywiYmdjb2xvciIpfHxvLmFkZE9w YWNpdHkoZC5jb2xvciwxKSxib3JkZXJDb2xvcjpiKHMsImJvcmRlcmNvbG9y IiksZm9udEZhbWlseTpiKHMsImZvbnQuZmFtaWx5IiksZm9udFNpemU6Yihz LCJmb250LnNpemUiKSxmb250Q29sb3I6YihzLCJmb250LmNvbG9yIiksbmFt ZUxlbmd0aDpiKHMsIm5hbWVsZW5ndGgiKSx0ZXh0QWxpZ246YihzLCJhbGln biIpLGlkZWFsQWxpZ246bi5ldmVudC54PGdbMF0/InJpZ2h0IjoibGVmdCIs aG92ZXJ0ZW1wbGF0ZTpzLmhvdmVydGVtcGxhdGUsaG92ZXJ0ZW1wbGF0ZUxh YmVsczp2LGV2ZW50RGF0YTpbZF19KX19aS5sb25lSG92ZXIobCx7Y29udGFp bmVyOnIuX2hvdmVybGF5ZXIubm9kZSgpLG91dGVyQ29udGFpbmVyOnIuX3Bh cGVyLm5vZGUoKSxnZDp0LGFuY2hvckluZGV4OmN9KS5lYWNoKGZ1bmN0aW9u KCl7YS5saW5rLmNvbmNlbnRyYXRpb25zY2FsZXx8Zih0aGlzLC42NSkscCh0 aGlzKX0pfX1mdW5jdGlvbiBtKHQpe3ZhciBlLHI7dC5jaXJjdWxhcj8oZT0o dC5jaXJjdWxhclBhdGhEYXRhLmxlZnRJbm5lckV4dGVudCt0LmNpcmN1bGFy UGF0aERhdGEucmlnaHRJbm5lckV4dGVudCkvMixyPXQuY2lyY3VsYXJQYXRo RGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQpOihlPSh0LnNvdXJjZS54MSt0LnRh cmdldC54MCkvMixyPSh0LnkwK3QueTEpLzIpO3ZhciBuPVtlLHJdO3JldHVy biJ2Ij09PXQudHJhY2Uub3JpZW50YXRpb24mJm4ucmV2ZXJzZSgpLG5bMF0r PWEucGFyZW50LnRyYW5zbGF0ZVgsblsxXSs9YS5wYXJlbnQudHJhbnNsYXRl WSxufX0sdW5ob3ZlcjpmdW5jdGlvbihlLGEsbyl7ITEhPT10Ll9mdWxsTGF5 b3V0LmhvdmVybW9kZSYmKG4uc2VsZWN0KGUpLmNhbGwoeC5iaW5kKDAsYSxv LCEwKSksInNraXAiIT09YS5saW5rLnRyYWNlLmxpbmsuaG92ZXJpbmZvJiYo YS5saW5rLmZ1bGxEYXRhPWEubGluay50cmFjZSx0LmVtaXQoInBsb3RseV91 bmhvdmVyIix7ZXZlbnQ6bi5ldmVudCxwb2ludHM6W2EubGlua119KSksaS5s b25lVW5ob3ZlcihyLl9ob3ZlcmxheWVyLm5vZGUoKSkpfSxzZWxlY3Q6ZnVu Y3Rpb24oZSxyKXt2YXIgYT1yLmxpbms7YS5vcmlnaW5hbEV2ZW50PW4uZXZl bnQsdC5faG92ZXJkYXRhPVthXSxpLmNsaWNrKHQse3RhcmdldDohMH0pfX0s bm9kZUV2ZW50czp7aG92ZXI6ZnVuY3Rpb24oZSxyLGEpeyExIT09dC5fZnVs bExheW91dC5ob3Zlcm1vZGUmJihuLnNlbGVjdChlKS5jYWxsKHYscixhKSwi c2tpcCIhPT1yLm5vZGUudHJhY2Uubm9kZS5ob3ZlcmluZm8mJihyLm5vZGUu ZnVsbERhdGE9ci5ub2RlLnRyYWNlLHQuZW1pdCgicGxvdGx5X2hvdmVyIix7 ZXZlbnQ6bi5ldmVudCxwb2ludHM6W3Iubm9kZV19KSkpfSxmb2xsb3c6ZnVu Y3Rpb24oZSxhKXtpZighMSE9PXQuX2Z1bGxMYXlvdXQuaG92ZXJtb2RlKXt2 YXIgbz1hLm5vZGUudHJhY2Uubm9kZTtpZigibm9uZSIhPT1vLmhvdmVyaW5m byYmInNraXAiIT09by5ob3ZlcmluZm8pe3ZhciBzPW4uc2VsZWN0KGUpLnNl bGVjdCgiLiIrbC5ub2RlUmVjdCksYz10Ll9mdWxsTGF5b3V0Ll9wYXBlcmRp di5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaD1zLm5vZGUoKS5n ZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPWgubGVmdC0yLWMubGVmdCxnPWgu cmlnaHQrMi1jLmxlZnQsdj1oLnRvcCtoLmhlaWdodC80LWMudG9wLG09e3Zh bHVlTGFiZWw6bi5mb3JtYXQoYS52YWx1ZUZvcm1hdCkoYS5ub2RlLnZhbHVl KSthLnZhbHVlU3VmZml4fTthLm5vZGUuZnVsbERhdGE9YS5ub2RlLnRyYWNl O3ZhciB5PWkubG9uZUhvdmVyKHt4MDpkLHgxOmcseTp2LG5hbWU6bi5mb3Jt YXQoYS52YWx1ZUZvcm1hdCkoYS5ub2RlLnZhbHVlKSthLnZhbHVlU3VmZml4 LHRleHQ6W2Eubm9kZS5sYWJlbCxUK2Eubm9kZS50YXJnZXRMaW5rcy5sZW5n dGgsTSthLm5vZGUuc291cmNlTGlua3MubGVuZ3RoXS5maWx0ZXIodSkuam9p bigiPGJyPiIpLGNvbG9yOmIobywiYmdjb2xvciIpfHxhLnRpbnlDb2xvckh1 ZSxib3JkZXJDb2xvcjpiKG8sImJvcmRlcmNvbG9yIiksZm9udEZhbWlseTpi KG8sImZvbnQuZmFtaWx5IiksZm9udFNpemU6YihvLCJmb250LnNpemUiKSxm b250Q29sb3I6YihvLCJmb250LmNvbG9yIiksbmFtZUxlbmd0aDpiKG8sIm5h bWVsZW5ndGgiKSx0ZXh0QWxpZ246YihvLCJhbGlnbiIpLGlkZWFsQWxpZ246 ImxlZnQiLGhvdmVydGVtcGxhdGU6by5ob3ZlcnRlbXBsYXRlLGhvdmVydGVt cGxhdGVMYWJlbHM6bSxldmVudERhdGE6W2Eubm9kZV19LHtjb250YWluZXI6 ci5faG92ZXJsYXllci5ub2RlKCksb3V0ZXJDb250YWluZXI6ci5fcGFwZXIu bm9kZSgpLGdkOnR9KTtmKHksLjg1KSxwKHkpfX19LHVuaG92ZXI6ZnVuY3Rp b24oZSxhLG8peyExIT09dC5fZnVsbExheW91dC5ob3Zlcm1vZGUmJihuLnNl bGVjdChlKS5jYWxsKG0sYSxvKSwic2tpcCIhPT1hLm5vZGUudHJhY2Uubm9k ZS5ob3ZlcmluZm8mJihhLm5vZGUuZnVsbERhdGE9YS5ub2RlLnRyYWNlLHQu ZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtldmVudDpuLmV2ZW50LHBvaW50czpb YS5ub2RlXX0pKSxpLmxvbmVVbmhvdmVyKHIuX2hvdmVybGF5ZXIubm9kZSgp KSl9LHNlbGVjdDpmdW5jdGlvbihlLHIsYSl7dmFyIG89ci5ub2RlO28ub3Jp Z2luYWxFdmVudD1uLmV2ZW50LHQuX2hvdmVyZGF0YT1bb10sbi5zZWxlY3Qo ZSkuY2FsbChtLHIsYSksaS5jbGljayh0LHt0YXJnZXQ6ITB9KX19fSl9fSx7 Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50 cy9meCI6NjMwLCIuLi8uLi9saWIiOjcxNywiLi9jb25zdGFudHMiOjExMTMs Ii4vcmVuZGVyIjoxMTE3LGQzOjE2NX1dLDExMTc6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb25zdGFudHMiKSxhPXQoImQz IiksaT10KCJ0aW55Y29sb3IyIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yIikscz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxsPXQoIkBw bG90bHkvZDMtc2Fua2V5IiksYz10KCJAcGxvdGx5L2QzLXNhbmtleS1jaXJj dWxhciIpLHU9dCgiZDMtZm9yY2UiKSxoPXQoIi4uLy4uL2xpYiIpLGY9dCgi Li4vLi4vbGliL2d1cCIpLHA9Zi5rZXlGdW4sZD1mLnJlcGVhdCxnPWYudW53 cmFwLHY9dCgiZDMtaW50ZXJwb2xhdGUiKS5pbnRlcnBvbGF0ZU51bWJlcixt PXQoIi4uLy4uL3JlZ2lzdHJ5Iik7ZnVuY3Rpb24geSgpe3ZhciB0PS41O3Jl dHVybiBmdW5jdGlvbihlKXtpZihlLmxpbmsuY2lyY3VsYXIpcmV0dXJuIHI9 ZS5saW5rLG49ci53aWR0aC8yLGE9ci5jaXJjdWxhclBhdGhEYXRhLCJ0b3Ai PT09ci5jaXJjdWxhckxpbmtUeXBlPyJNICIrYS50YXJnZXRYKyIgIisoYS50 YXJnZXRZK24pKyIgTCIrYS5yaWdodElubmVyRXh0ZW50KyIgIisoYS50YXJn ZXRZK24pKyJBIisoYS5yaWdodExhcmdlQXJjUmFkaXVzK24pKyIgIisoYS5y aWdodFNtYWxsQXJjUmFkaXVzK24pKyIgMCAwIDEgIisoYS5yaWdodEZ1bGxF eHRlbnQtbikrIiAiKyhhLnRhcmdldFktYS5yaWdodFNtYWxsQXJjUmFkaXVz KSsiTCIrKGEucmlnaHRGdWxsRXh0ZW50LW4pKyIgIithLnZlcnRpY2FsUmln aHRJbm5lckV4dGVudCsiQSIrKGEucmlnaHRMYXJnZUFyY1JhZGl1cytuKSsi ICIrKGEucmlnaHRMYXJnZUFyY1JhZGl1cytuKSsiIDAgMCAxICIrYS5yaWdo dElubmVyRXh0ZW50KyIgIisoYS52ZXJ0aWNhbEZ1bGxFeHRlbnQtbikrIkwi K2EubGVmdElubmVyRXh0ZW50KyIgIisoYS52ZXJ0aWNhbEZ1bGxFeHRlbnQt bikrIkEiKyhhLmxlZnRMYXJnZUFyY1JhZGl1cytuKSsiICIrKGEubGVmdExh cmdlQXJjUmFkaXVzK24pKyIgMCAwIDEgIisoYS5sZWZ0RnVsbEV4dGVudCtu KSsiICIrYS52ZXJ0aWNhbExlZnRJbm5lckV4dGVudCsiTCIrKGEubGVmdEZ1 bGxFeHRlbnQrbikrIiAiKyhhLnNvdXJjZVktYS5sZWZ0U21hbGxBcmNSYWRp dXMpKyJBIisoYS5sZWZ0TGFyZ2VBcmNSYWRpdXMrbikrIiAiKyhhLmxlZnRT bWFsbEFyY1JhZGl1cytuKSsiIDAgMCAxICIrYS5sZWZ0SW5uZXJFeHRlbnQr IiAiKyhhLnNvdXJjZVkrbikrIkwiK2Euc291cmNlWCsiICIrKGEuc291cmNl WStuKSsiTCIrYS5zb3VyY2VYKyIgIisoYS5zb3VyY2VZLW4pKyJMIithLmxl ZnRJbm5lckV4dGVudCsiICIrKGEuc291cmNlWS1uKSsiQSIrKGEubGVmdExh cmdlQXJjUmFkaXVzLW4pKyIgIisoYS5sZWZ0U21hbGxBcmNSYWRpdXMtbikr IiAwIDAgMCAiKyhhLmxlZnRGdWxsRXh0ZW50LW4pKyIgIisoYS5zb3VyY2VZ LWEubGVmdFNtYWxsQXJjUmFkaXVzKSsiTCIrKGEubGVmdEZ1bGxFeHRlbnQt bikrIiAiK2EudmVydGljYWxMZWZ0SW5uZXJFeHRlbnQrIkEiKyhhLmxlZnRM YXJnZUFyY1JhZGl1cy1uKSsiICIrKGEubGVmdExhcmdlQXJjUmFkaXVzLW4p KyIgMCAwIDAgIithLmxlZnRJbm5lckV4dGVudCsiICIrKGEudmVydGljYWxG dWxsRXh0ZW50K24pKyJMIithLnJpZ2h0SW5uZXJFeHRlbnQrIiAiKyhhLnZl cnRpY2FsRnVsbEV4dGVudCtuKSsiQSIrKGEucmlnaHRMYXJnZUFyY1JhZGl1 cy1uKSsiICIrKGEucmlnaHRMYXJnZUFyY1JhZGl1cy1uKSsiIDAgMCAwICIr KGEucmlnaHRGdWxsRXh0ZW50K24pKyIgIithLnZlcnRpY2FsUmlnaHRJbm5l ckV4dGVudCsiTCIrKGEucmlnaHRGdWxsRXh0ZW50K24pKyIgIisoYS50YXJn ZXRZLWEucmlnaHRTbWFsbEFyY1JhZGl1cykrIkEiKyhhLnJpZ2h0TGFyZ2VB cmNSYWRpdXMtbikrIiAiKyhhLnJpZ2h0U21hbGxBcmNSYWRpdXMtbikrIiAw IDAgMCAiK2EucmlnaHRJbm5lckV4dGVudCsiICIrKGEudGFyZ2V0WS1uKSsi TCIrYS50YXJnZXRYKyIgIisoYS50YXJnZXRZLW4pKyJaIjoiTSAiK2EudGFy Z2V0WCsiICIrKGEudGFyZ2V0WS1uKSsiIEwiK2EucmlnaHRJbm5lckV4dGVu dCsiICIrKGEudGFyZ2V0WS1uKSsiQSIrKGEucmlnaHRMYXJnZUFyY1JhZGl1 cytuKSsiICIrKGEucmlnaHRTbWFsbEFyY1JhZGl1cytuKSsiIDAgMCAwICIr KGEucmlnaHRGdWxsRXh0ZW50LW4pKyIgIisoYS50YXJnZXRZK2EucmlnaHRT bWFsbEFyY1JhZGl1cykrIkwiKyhhLnJpZ2h0RnVsbEV4dGVudC1uKSsiICIr YS52ZXJ0aWNhbFJpZ2h0SW5uZXJFeHRlbnQrIkEiKyhhLnJpZ2h0TGFyZ2VB cmNSYWRpdXMrbikrIiAiKyhhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMrbikrIiAw IDAgMCAiK2EucmlnaHRJbm5lckV4dGVudCsiICIrKGEudmVydGljYWxGdWxs RXh0ZW50K24pKyJMIithLmxlZnRJbm5lckV4dGVudCsiICIrKGEudmVydGlj YWxGdWxsRXh0ZW50K24pKyJBIisoYS5sZWZ0TGFyZ2VBcmNSYWRpdXMrbikr IiAiKyhhLmxlZnRMYXJnZUFyY1JhZGl1cytuKSsiIDAgMCAwICIrKGEubGVm dEZ1bGxFeHRlbnQrbikrIiAiK2EudmVydGljYWxMZWZ0SW5uZXJFeHRlbnQr IkwiKyhhLmxlZnRGdWxsRXh0ZW50K24pKyIgIisoYS5zb3VyY2VZK2EubGVm dFNtYWxsQXJjUmFkaXVzKSsiQSIrKGEubGVmdExhcmdlQXJjUmFkaXVzK24p KyIgIisoYS5sZWZ0U21hbGxBcmNSYWRpdXMrbikrIiAwIDAgMCAiK2EubGVm dElubmVyRXh0ZW50KyIgIisoYS5zb3VyY2VZLW4pKyJMIithLnNvdXJjZVgr IiAiKyhhLnNvdXJjZVktbikrIkwiK2Euc291cmNlWCsiICIrKGEuc291cmNl WStuKSsiTCIrYS5sZWZ0SW5uZXJFeHRlbnQrIiAiKyhhLnNvdXJjZVkrbikr IkEiKyhhLmxlZnRMYXJnZUFyY1JhZGl1cy1uKSsiICIrKGEubGVmdFNtYWxs QXJjUmFkaXVzLW4pKyIgMCAwIDEgIisoYS5sZWZ0RnVsbEV4dGVudC1uKSsi ICIrKGEuc291cmNlWSthLmxlZnRTbWFsbEFyY1JhZGl1cykrIkwiKyhhLmxl ZnRGdWxsRXh0ZW50LW4pKyIgIithLnZlcnRpY2FsTGVmdElubmVyRXh0ZW50 KyJBIisoYS5sZWZ0TGFyZ2VBcmNSYWRpdXMtbikrIiAiKyhhLmxlZnRMYXJn ZUFyY1JhZGl1cy1uKSsiIDAgMCAxICIrYS5sZWZ0SW5uZXJFeHRlbnQrIiAi KyhhLnZlcnRpY2FsRnVsbEV4dGVudC1uKSsiTCIrYS5yaWdodElubmVyRXh0 ZW50KyIgIisoYS52ZXJ0aWNhbEZ1bGxFeHRlbnQtbikrIkEiKyhhLnJpZ2h0 TGFyZ2VBcmNSYWRpdXMtbikrIiAiKyhhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMt bikrIiAwIDAgMSAiKyhhLnJpZ2h0RnVsbEV4dGVudCtuKSsiICIrYS52ZXJ0 aWNhbFJpZ2h0SW5uZXJFeHRlbnQrIkwiKyhhLnJpZ2h0RnVsbEV4dGVudCtu KSsiICIrKGEudGFyZ2V0WSthLnJpZ2h0U21hbGxBcmNSYWRpdXMpKyJBIiso YS5yaWdodExhcmdlQXJjUmFkaXVzLW4pKyIgIisoYS5yaWdodFNtYWxsQXJj UmFkaXVzLW4pKyIgMCAwIDEgIithLnJpZ2h0SW5uZXJFeHRlbnQrIiAiKyhh LnRhcmdldFkrbikrIkwiK2EudGFyZ2V0WCsiICIrKGEudGFyZ2V0WStuKSsi WiI7dmFyIHIsbixhLGk9ZS5saW5rLnNvdXJjZS54MSxvPWUubGluay50YXJn ZXQueDAscz12KGksbyksbD1zKHQpLGM9cygxLXQpLHU9ZS5saW5rLnkwLWUu bGluay53aWR0aC8yLGg9ZS5saW5rLnkwK2UubGluay53aWR0aC8yLGY9ZS5s aW5rLnkxLWUubGluay53aWR0aC8yLHA9ZS5saW5rLnkxK2UubGluay53aWR0 aC8yO3JldHVybiJNIitpKyIsIit1KyJDIitsKyIsIit1KyIgIitjKyIsIitm KyIgIitvKyIsIitmKyJMIitvKyIsIitwKyJDIitjKyIsIitwKyIgIitsKyIs IitoKyIgIitpKyIsIitoKyJaIn19ZnVuY3Rpb24geCh0KXt0LmF0dHIoInRy YW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3Qubm9k ZS54MC50b0ZpeGVkKDMpKyIsICIrdC5ub2RlLnkwLnRvRml4ZWQoMykrIiki fSl9ZnVuY3Rpb24gYih0KXt0LmNhbGwoeCl9ZnVuY3Rpb24gXyh0LGUpe3Qu Y2FsbChiKSxlLmF0dHIoImQiLHkoKSl9ZnVuY3Rpb24gdyh0KXt0LmF0dHIo IndpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlLngxLXQubm9kZS54 MH0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuIHQudmlzaWJs ZUhlaWdodH0pfWZ1bmN0aW9uIGsodCl7cmV0dXJuIHQubGluay53aWR0aD4x fHx0LmxpbmtMaW5lV2lkdGg+MH1mdW5jdGlvbiBUKHQpe3JldHVybiJ0cmFu c2xhdGUoIit0LnRyYW5zbGF0ZVgrIiwiK3QudHJhbnNsYXRlWSsiKSIrKHQu aG9yaXpvbnRhbD8ibWF0cml4KDEgMCAwIDEgMCAwKSI6Im1hdHJpeCgwIDEg MSAwIDAgMCkiKX1mdW5jdGlvbiBNKHQpe3JldHVybiJ0cmFuc2xhdGUoIiso dC5ob3Jpem9udGFsPzA6dC5sYWJlbFkpKyIgIisodC5ob3Jpem9udGFsP3Qu bGFiZWxZOjApKyIpIn1mdW5jdGlvbiBBKHQpe3JldHVybiBhLnN2Zy5saW5l KCkoW1t0Lmhvcml6b250YWw/dC5sZWZ0Py10LnNpemVBY3Jvc3M6dC52aXNp YmxlV2lkdGgrbi5ub2RlVGV4dE9mZnNldEhvcml6b250YWw6bi5ub2RlVGV4 dE9mZnNldEhvcml6b250YWwsMF0sW3QuaG9yaXpvbnRhbD90LmxlZnQ/LW4u bm9kZVRleHRPZmZzZXRIb3Jpem9udGFsOnQuc2l6ZUFjcm9zczp0LnZpc2li bGVIZWlnaHQtbi5ub2RlVGV4dE9mZnNldEhvcml6b250YWwsMF1dKX1mdW5j dGlvbiBTKHQpe3JldHVybiB0Lmhvcml6b250YWw/Im1hdHJpeCgxIDAgMCAx IDAgMCkiOiJtYXRyaXgoMCAxIDEgMCAwIDApIn1mdW5jdGlvbiBFKHQpe3Jl dHVybiB0Lmhvcml6b250YWw/InNjYWxlKDEgMSkiOiJzY2FsZSgtMSAxKSJ9 ZnVuY3Rpb24gTCh0KXtyZXR1cm4gdC5kYXJrQmFja2dyb3VuZCYmIXQuaG9y aXpvbnRhbD8icmdiKDI1NSwyNTUsMjU1KSI6InJnYigwLDAsMCkifWZ1bmN0 aW9uIEModCl7cmV0dXJuIHQuaG9yaXpvbnRhbCYmdC5sZWZ0PyIxMDAlIjoi MCUifWZ1bmN0aW9uIFAodCxlLHIpe3Qub24oIi5iYXNpYyIsbnVsbCkub24o Im1vdXNlb3Zlci5iYXNpYyIsZnVuY3Rpb24odCl7dC5pbnRlcmFjdGlvblN0 YXRlLmRyYWdJblByb2dyZXNzfHx0LnBhcnRPZkdyb3VwfHwoci5ob3Zlcih0 aGlzLHQsZSksdC5pbnRlcmFjdGlvblN0YXRlLmhvdmVyZWQ9W3RoaXMsdF0p fSkub24oIm1vdXNlbW92ZS5iYXNpYyIsZnVuY3Rpb24odCl7dC5pbnRlcmFj dGlvblN0YXRlLmRyYWdJblByb2dyZXNzfHx0LnBhcnRPZkdyb3VwfHwoci5m b2xsb3codGhpcyx0KSx0LmludGVyYWN0aW9uU3RhdGUuaG92ZXJlZD1bdGhp cyx0XSl9KS5vbigibW91c2VvdXQuYmFzaWMiLGZ1bmN0aW9uKHQpe3QuaW50 ZXJhY3Rpb25TdGF0ZS5kcmFnSW5Qcm9ncmVzc3x8dC5wYXJ0T2ZHcm91cHx8 KHIudW5ob3Zlcih0aGlzLHQsZSksdC5pbnRlcmFjdGlvblN0YXRlLmhvdmVy ZWQ9ITEpfSkub24oImNsaWNrLmJhc2ljIixmdW5jdGlvbih0KXt0LmludGVy YWN0aW9uU3RhdGUuaG92ZXJlZCYmKHIudW5ob3Zlcih0aGlzLHQsZSksdC5p bnRlcmFjdGlvblN0YXRlLmhvdmVyZWQ9ITEpLHQuaW50ZXJhY3Rpb25TdGF0 ZS5kcmFnSW5Qcm9ncmVzc3x8dC5wYXJ0T2ZHcm91cHx8ci5zZWxlY3QodGhp cyx0LGUpfSl9ZnVuY3Rpb24gTyh0LGUscixpKXt2YXIgbz1hLmJlaGF2aW9y LmRyYWcoKS5vcmlnaW4oZnVuY3Rpb24odCl7cmV0dXJue3g6dC5ub2RlLngw K3QudmlzaWJsZVdpZHRoLzIseTp0Lm5vZGUueTArdC52aXNpYmxlSGVpZ2h0 LzJ9fSkub24oImRyYWdzdGFydCIsZnVuY3Rpb24oYSl7aWYoImZpeGVkIiE9 PWEuYXJyYW5nZW1lbnQmJihoLmVuc3VyZVNpbmdsZShpLl9mdWxsTGF5b3V0 Ll9pbmZvbGF5ZXIsImciLCJkcmFnY292ZXIiLGZ1bmN0aW9uKHQpe2kuX2Z1 bGxMYXlvdXQuX2RyYWdDb3Zlcj10fSksaC5yYWlzZVRvVG9wKHRoaXMpLGEu aW50ZXJhY3Rpb25TdGF0ZS5kcmFnSW5Qcm9ncmVzcz1hLm5vZGUsSShhLm5v ZGUpLGEuaW50ZXJhY3Rpb25TdGF0ZS5ob3ZlcmVkJiYoci5ub2RlRXZlbnRz LnVuaG92ZXIuYXBwbHkoMCxhLmludGVyYWN0aW9uU3RhdGUuaG92ZXJlZCks YS5pbnRlcmFjdGlvblN0YXRlLmhvdmVyZWQ9ITEpLCJzbmFwIj09PWEuYXJy YW5nZW1lbnQpKXt2YXIgbz1hLnRyYWNlSWQrInwiK2Eua2V5O2EuZm9yY2VM YXlvdXRzW29dP2EuZm9yY2VMYXlvdXRzW29dLmFscGhhKDEpOmZ1bmN0aW9u KHQsZSxyLGEpeyFmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3Ro O2UrKyl0W2VdLnk9KHRbZV0ueTArdFtlXS55MSkvMix0W2VdLng9KHRbZV0u eDArdFtlXS54MSkvMn0oci5ncmFwaC5ub2Rlcyk7dmFyIGk9ci5ncmFwaC5u b2Rlcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQub3JpZ2luYWxYPT09 ci5ub2RlLm9yaWdpbmFsWH0pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4h dC5wYXJ0T2ZHcm91cH0pO3IuZm9yY2VMYXlvdXRzW2VdPXUuZm9yY2VTaW11 bGF0aW9uKGkpLmFscGhhRGVjYXkoMCkuZm9yY2UoImNvbGxpZGUiLHUuZm9y Y2VDb2xsaWRlKCkucmFkaXVzKGZ1bmN0aW9uKHQpe3JldHVybiB0LmR5LzIr ci5ub2RlUGFkLzJ9KS5zdHJlbmd0aCgxKS5pdGVyYXRpb25zKG4uZm9yY2VJ dGVyYXRpb25zKSkuZm9yY2UoImNvbnN0cmFpbiIsZnVuY3Rpb24odCxlLHIs YSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsaT0wO2k8ci5sZW5n dGg7aSsrKXt2YXIgbz1yW2ldO289PT1hLmludGVyYWN0aW9uU3RhdGUuZHJh Z0luUHJvZ3Jlc3M/KG8ueD1vLmxhc3REcmFnZ2VkWCxvLnk9by5sYXN0RHJh Z2dlZFkpOihvLnZ4PShvLm9yaWdpbmFsWC1vLngpL24uZm9yY2VUaWNrc1Bl ckZyYW1lLG8ueT1NYXRoLm1pbihhLnNpemUtby5keS8yLE1hdGgubWF4KG8u ZHkvMixvLnkpKSksdD1NYXRoLm1heCh0LE1hdGguYWJzKG8udngpLE1hdGgu YWJzKG8udnkpKX0hYS5pbnRlcmFjdGlvblN0YXRlLmRyYWdJblByb2dyZXNz JiZ0PC4xJiZhLmZvcmNlTGF5b3V0c1tlXS5hbHBoYSgpPjAmJmEuZm9yY2VM YXlvdXRzW2VdLmFscGhhKDApfX0oMCxlLGkscikpLnN0b3AoKX0oMCxvLGEp LGZ1bmN0aW9uKHQsZSxyLGEsaSl7d2luZG93LnJlcXVlc3RBbmltYXRpb25G cmFtZShmdW5jdGlvbiBvKCl7dmFyIHM7Zm9yKHM9MDtzPG4uZm9yY2VUaWNr c1BlckZyYW1lO3MrKylyLmZvcmNlTGF5b3V0c1thXS50aWNrKCk7dmFyIGw9 ci5ncmFwaC5ub2RlcztpZihmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQu bGVuZ3RoO2UrKyl0W2VdLnkwPXRbZV0ueS10W2VdLmR5LzIsdFtlXS55MT10 W2VdLnkwK3RbZV0uZHksdFtlXS54MD10W2VdLngtdFtlXS5keC8yLHRbZV0u eDE9dFtlXS54MCt0W2VdLmR4fShsKSxyLnNhbmtleS51cGRhdGUoci5ncmFw aCksXyh0LmZpbHRlcihEKHIpKSxlKSxyLmZvcmNlTGF5b3V0c1thXS5hbHBo YSgpPjApd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShvKTtlbHNle3Zh ciBjPXIubm9kZS5vcmlnaW5hbFg7ci5ub2RlLngwPWMtci52aXNpYmxlV2lk dGgvMixyLm5vZGUueDE9YytyLnZpc2libGVXaWR0aC8yLHoocixpKX19KX0o dCxlLGEsbyxpKX19KS5vbigiZHJhZyIsZnVuY3Rpb24ocil7aWYoImZpeGVk IiE9PXIuYXJyYW5nZW1lbnQpe3ZhciBuPWEuZXZlbnQueCxpPWEuZXZlbnQu eTsic25hcCI9PT1yLmFycmFuZ2VtZW50PyhyLm5vZGUueDA9bi1yLnZpc2li bGVXaWR0aC8yLHIubm9kZS54MT1uK3IudmlzaWJsZVdpZHRoLzIsci5ub2Rl LnkwPWktci52aXNpYmxlSGVpZ2h0LzIsci5ub2RlLnkxPWkrci52aXNpYmxl SGVpZ2h0LzIpOigiZnJlZWZvcm0iPT09ci5hcnJhbmdlbWVudCYmKHIubm9k ZS54MD1uLXIudmlzaWJsZVdpZHRoLzIsci5ub2RlLngxPW4rci52aXNpYmxl V2lkdGgvMiksaT1NYXRoLm1heCgwLE1hdGgubWluKHIuc2l6ZS1yLnZpc2li bGVIZWlnaHQvMixpKSksci5ub2RlLnkwPWktci52aXNpYmxlSGVpZ2h0LzIs ci5ub2RlLnkxPWkrci52aXNpYmxlSGVpZ2h0LzIpLEkoci5ub2RlKSwic25h cCIhPT1yLmFycmFuZ2VtZW50JiYoci5zYW5rZXkudXBkYXRlKHIuZ3JhcGgp LF8odC5maWx0ZXIoRChyKSksZSkpfX0pLm9uKCJkcmFnZW5kIixmdW5jdGlv bih0KXtpZigiZml4ZWQiIT09dC5hcnJhbmdlbWVudCl7dC5pbnRlcmFjdGlv blN0YXRlLmRyYWdJblByb2dyZXNzPSExO2Zvcih2YXIgZT0wO2U8dC5ub2Rl LmNoaWxkcmVuTm9kZXMubGVuZ3RoO2UrKyl0Lm5vZGUuY2hpbGRyZW5Ob2Rl c1tlXS54PXQubm9kZS54LHQubm9kZS5jaGlsZHJlbk5vZGVzW2VdLnk9dC5u b2RlLnk7InNuYXAiIT09dC5hcnJhbmdlbWVudCYmeih0LGkpfX0pO3Qub24o Ii5kcmFnIixudWxsKS5jYWxsKG8pfWZ1bmN0aW9uIHoodCxlKXtmb3IodmFy IHI9W10sbj1bXSxhPTA7YTx0LmdyYXBoLm5vZGVzLmxlbmd0aDthKyspe3Zh ciBpPSh0LmdyYXBoLm5vZGVzW2FdLngwK3QuZ3JhcGgubm9kZXNbYV0ueDEp LzIsbz0odC5ncmFwaC5ub2Rlc1thXS55MCt0LmdyYXBoLm5vZGVzW2FdLnkx KS8yO3IucHVzaChpL3QuZmlndXJlLndpZHRoKSxuLnB1c2goby90LmZpZ3Vy ZS5oZWlnaHQpfW0uY2FsbCgiX2d1aVJlc3R5bGUiLGUseyJub2RlLngiOlty XSwibm9kZS55Ijpbbl19LHQudHJhY2UuaW5kZXgpLnRoZW4oZnVuY3Rpb24o KXtlLl9mdWxsTGF5b3V0Ll9kcmFnQ292ZXImJmUuX2Z1bGxMYXlvdXQuX2Ry YWdDb3Zlci5yZW1vdmUoKX0pfWZ1bmN0aW9uIEkodCl7dC5sYXN0RHJhZ2dl ZFg9dC54MCt0LmR4LzIsdC5sYXN0RHJhZ2dlZFk9dC55MCt0LmR5LzJ9ZnVu Y3Rpb24gRCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZS5v cmlnaW5hbFg9PT10Lm5vZGUub3JpZ2luYWxYfX1lLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIsdSxmKXt2YXIgdj0hMTtoLmVuc3VyZVNpbmdsZSh0Ll9mdWxs TGF5b3V0Ll9pbmZvbGF5ZXIsImciLCJmaXJzdC1yZW5kZXIiLGZ1bmN0aW9u KCl7dj0hMH0pO3ZhciBtPXQuX2Z1bGxMYXlvdXQuX2RyYWdDb3ZlcixiPXIu ZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBnKHQpLnRyYWNlLnZpc2libGV9 KS5tYXAoZnVuY3Rpb24odCxlLHIpe3ZhciBhLG89ZyhlKSxzPW8udHJhY2Us dT1zLmRvbWFpbixmPSJoIj09PXMub3JpZW50YXRpb24scD1zLm5vZGUucGFk LGQ9cy5ub2RlLnRoaWNrbmVzcyx2PXQud2lkdGgqKHUueFsxXS11LnhbMF0p LG09dC5oZWlnaHQqKHUueVsxXS11LnlbMF0pLHk9by5fbm9kZXMseD1vLl9s aW5rcyxiPW8uY2lyY3VsYXI7KGE9Yj9jLnNhbmtleUNpcmN1bGFyKCkuY2ly Y3VsYXJMaW5rR2FwKDApOmwuc2Fua2V5KCkpLml0ZXJhdGlvbnMobi5zYW5r ZXlJdGVyYXRpb25zKS5zaXplKGY/W3YsbV06W20sdl0pLm5vZGVXaWR0aChk KS5ub2RlUGFkZGluZyhwKS5ub2RlSWQoZnVuY3Rpb24odCl7cmV0dXJuIHQu cG9pbnROdW1iZXJ9KS5ub2Rlcyh5KS5saW5rcyh4KTt2YXIgXyx3LGssVD1h KCk7Zm9yKHZhciBNIGluIGEubm9kZVBhZGRpbmcoKTxwJiZoLndhcm4oIm5v ZGUucGFkIHdhcyByZWR1Y2VkIHRvICIsYS5ub2RlUGFkZGluZygpLCIgdG8g Zml0IHdpdGhpbiB0aGUgZmlndXJlLiIpLG8uX2dyb3VwTG9va3VwKXt2YXIg QSxTPXBhcnNlSW50KG8uX2dyb3VwTG9va3VwW01dKTtmb3IoXz0wO188VC5u b2Rlcy5sZW5ndGg7XysrKWlmKFQubm9kZXNbX10ucG9pbnROdW1iZXI9PT1T KXtBPVQubm9kZXNbX107YnJlYWt9aWYoQSl7dmFyIEU9e3BvaW50TnVtYmVy OnBhcnNlSW50KE0pLHgwOkEueDAseDE6QS54MSx5MDpBLnkwLHkxOkEueTEs cGFydE9mR3JvdXA6ITAsc291cmNlTGlua3M6W10sdGFyZ2V0TGlua3M6W119 O1Qubm9kZXMudW5zaGlmdChFKSxBLmNoaWxkcmVuTm9kZXMudW5zaGlmdChF KX19aWYoZnVuY3Rpb24oKXtmb3IoXz0wO188VC5ub2Rlcy5sZW5ndGg7Xysr KXt2YXIgdCxlLHI9VC5ub2Rlc1tfXSxuPXt9O2Zvcih3PTA7dzxyLnRhcmdl dExpbmtzLmxlbmd0aDt3KyspdD0oZT1yLnRhcmdldExpbmtzW3ddKS5zb3Vy Y2UucG9pbnROdW1iZXIrIjoiK2UudGFyZ2V0LnBvaW50TnVtYmVyLG4uaGFz T3duUHJvcGVydHkodCl8fChuW3RdPVtdKSxuW3RdLnB1c2goZSk7dmFyIGE9 T2JqZWN0LmtleXMobik7Zm9yKHc9MDt3PGEubGVuZ3RoO3crKyl7dmFyIG89 blt0PWFbd11dLHM9MCxsPXt9O2ZvcihrPTA7azxvLmxlbmd0aDtrKyspbFso ZT1vW2tdKS5sYWJlbF18fChsW2UubGFiZWxdPTApLGxbZS5sYWJlbF0rPWUu dmFsdWUscys9ZS52YWx1ZTtmb3Ioaz0wO2s8by5sZW5ndGg7aysrKShlPW9b a10pLmZsb3c9e3ZhbHVlOnMsbGFiZWxDb25jZW50cmF0aW9uOmxbZS5sYWJl bF0vcyxjb25jZW50cmF0aW9uOmUudmFsdWUvcyxsaW5rczpvfSxlLmNvbmNl bnRyYXRpb25zY2FsZSYmKGUuY29sb3I9aShlLmNvbmNlbnRyYXRpb25zY2Fs ZShlLmZsb3cubGFiZWxDb25jZW50cmF0aW9uKSkpfXZhciBjPTA7Zm9yKHc9 MDt3PHIuc291cmNlTGlua3MubGVuZ3RoO3crKyljKz1yLnNvdXJjZUxpbmtz W3ddLnZhbHVlO2Zvcih3PTA7dzxyLnNvdXJjZUxpbmtzLmxlbmd0aDt3Kysp KGU9ci5zb3VyY2VMaW5rc1t3XSkuY29uY2VudHJhdGlvbk91dD1lLnZhbHVl L2M7dmFyIHU9MDtmb3Iodz0wO3c8ci50YXJnZXRMaW5rcy5sZW5ndGg7dysr KXUrPXIudGFyZ2V0TGlua3Nbd10udmFsdWU7Zm9yKHc9MDt3PHIudGFyZ2V0 TGlua3MubGVuZ3RoO3crKykoZT1yLnRhcmdldExpbmtzW3ddKS5jb25jZW5y YXRpb25Jbj1lLnZhbHVlL3V9fSgpLHMubm9kZS54Lmxlbmd0aCYmcy5ub2Rl LnkubGVuZ3RoKXtmb3IoXz0wO188TWF0aC5taW4ocy5ub2RlLngubGVuZ3Ro LHMubm9kZS55Lmxlbmd0aCxULm5vZGVzLmxlbmd0aCk7XysrKWlmKHMubm9k ZS54W19dJiZzLm5vZGUueVtfXSl7dmFyIEw9W3Mubm9kZS54W19dKnYscy5u b2RlLnlbX10qbV07VC5ub2Rlc1tfXS54MD1MWzBdLWQvMixULm5vZGVzW19d LngxPUxbMF0rZC8yO3ZhciBDPVQubm9kZXNbX10ueTEtVC5ub2Rlc1tfXS55 MDtULm5vZGVzW19dLnkwPUxbMV0tQy8yLFQubm9kZXNbX10ueTE9TFsxXStD LzJ9InNuYXAiPT09cy5hcnJhbmdlbWVudCYmZnVuY3Rpb24odCl7dC5mb3JF YWNoKGZ1bmN0aW9uKHQpe3ZhciBlLHIsbixhPTAsaT10Lmxlbmd0aDtmb3Io dC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueTAtZS55MH0pLG49MDtu PGk7KytuKShlPXRbbl0pLnkwPj1hfHwocj1hLWUueTApPjFlLTYmJihlLnkw Kz1yLGUueTErPXIpLGE9ZS55MStwfSl9KGZ1bmN0aW9uKHQpe3ZhciBlLHIs bj10Lm1hcChmdW5jdGlvbih0LGUpe3JldHVybnt4MDp0LngwLGluZGV4OmV9 fSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LngwLWUueDB9KSxhPVtd LGk9LTEsbz0tMS8wO2ZvcihfPTA7XzxuLmxlbmd0aDtfKyspe3ZhciBzPXRb bltfXS5pbmRleF07cy54MD5vK2QmJihpKz0xLGU9cy54MCksbz1zLngwLGFb aV18fChhW2ldPVtdKSxhW2ldLnB1c2gocykscj1lLXMueDAscy54MCs9cixz LngxKz1yfXJldHVybiBhfSh5PVQubm9kZXMpKSxhLnVwZGF0ZShUKX1yZXR1 cm57Y2lyY3VsYXI6YixrZXk6cix0cmFjZTpzLGd1aWQ6aC5yYW5kc3RyKCks aG9yaXpvbnRhbDpmLHdpZHRoOnYsaGVpZ2h0Om0sbm9kZVBhZDpzLm5vZGUu cGFkLG5vZGVMaW5lQ29sb3I6cy5ub2RlLmxpbmUuY29sb3Isbm9kZUxpbmVX aWR0aDpzLm5vZGUubGluZS53aWR0aCxsaW5rTGluZUNvbG9yOnMubGluay5s aW5lLmNvbG9yLGxpbmtMaW5lV2lkdGg6cy5saW5rLmxpbmUud2lkdGgsdmFs dWVGb3JtYXQ6cy52YWx1ZWZvcm1hdCx2YWx1ZVN1ZmZpeDpzLnZhbHVlc3Vm Zml4LHRleHRGb250OnMudGV4dGZvbnQsdHJhbnNsYXRlWDp1LnhbMF0qdC53 aWR0aCt0Lm1hcmdpbi5sLHRyYW5zbGF0ZVk6dC5oZWlnaHQtdS55WzFdKnQu aGVpZ2h0K3QubWFyZ2luLnQsZHJhZ1BhcmFsbGVsOmY/bTp2LGRyYWdQZXJw ZW5kaWN1bGFyOmY/djptLGFycmFuZ2VtZW50OnMuYXJyYW5nZW1lbnQsc2Fu a2V5OmEsZ3JhcGg6VCxmb3JjZUxheW91dHM6e30saW50ZXJhY3Rpb25TdGF0 ZTp7ZHJhZ0luUHJvZ3Jlc3M6ITEsaG92ZXJlZDohMX19fS5iaW5kKG51bGws dSkpLF89ZS5zZWxlY3RBbGwoIi4iK24uY24uc2Fua2V5KS5kYXRhKGIscCk7 Xy5leGl0KCkucmVtb3ZlKCksXy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNz ZWQobi5jbi5zYW5rZXksITApLnN0eWxlKCJib3gtc2l6aW5nIiwiY29udGVu dC1ib3giKS5zdHlsZSgicG9zaXRpb24iLCJhYnNvbHV0ZSIpLnN0eWxlKCJs ZWZ0IiwwKS5zdHlsZSgic2hhcGUtcmVuZGVyaW5nIiwiZ2VvbWV0cmljUHJl Y2lzaW9uIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYXV0byIpLmF0dHIo InRyYW5zZm9ybSIsVCksXy5lYWNoKGZ1bmN0aW9uKGUscil7dC5fZnVsbERh dGFbcl0uX3NhbmtleT1lO3ZhciBuPSJiZ3NhbmtleS0iK2UudHJhY2UudWlk KyItIityO2guZW5zdXJlU2luZ2xlKHQuX2Z1bGxMYXlvdXQuX2RyYWdnZXJz LCJyZWN0IixuKSx0Ll9mdWxsRGF0YVtyXS5fYmdSZWN0PWEuc2VsZWN0KCIu IituKSx0Ll9mdWxsRGF0YVtyXS5fYmdSZWN0LnN0eWxlKCJwb2ludGVyLWV2 ZW50cyIsImFsbCIpLmF0dHIoIndpZHRoIixlLndpZHRoKS5hdHRyKCJoZWln aHQiLGUuaGVpZ2h0KS5hdHRyKCJ4IixlLnRyYW5zbGF0ZVgpLmF0dHIoInki LGUudHJhbnNsYXRlWSkuY2xhc3NlZCgiYmdzYW5rZXkiLCEwKS5zdHlsZSh7 ZmlsbDoidHJhbnNwYXJlbnQiLCJzdHJva2Utd2lkdGgiOjB9KX0pLF8udHJh bnNpdGlvbigpLmVhc2Uobi5lYXNlKS5kdXJhdGlvbihuLmR1cmF0aW9uKS5h dHRyKCJ0cmFuc2Zvcm0iLFQpO3ZhciB6PV8uc2VsZWN0QWxsKCIuIituLmNu LnNhbmtleUxpbmtzKS5kYXRhKGQscCk7ei5lbnRlcigpLmFwcGVuZCgiZyIp LmNsYXNzZWQobi5jbi5zYW5rZXlMaW5rcywhMCkuc3R5bGUoImZpbGwiLCJu b25lIik7dmFyIEk9ei5zZWxlY3RBbGwoIi4iK24uY24uc2Fua2V5TGluayku ZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gdC5ncmFwaC5saW5rcy5maWx0ZXIo ZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KS5tYXAoZnVuY3Rpb24odCxl LHIpe3ZhciBuPWkoZS5jb2xvciksYT1lLnNvdXJjZS5sYWJlbCsifCIrZS50 YXJnZXQubGFiZWwrIl9fIityO3JldHVybiBlLnRyYWNlPXQudHJhY2UsZS5j dXJ2ZU51bWJlcj10LnRyYWNlLmluZGV4LHtjaXJjdWxhcjp0LmNpcmN1bGFy LGtleTphLHRyYWNlSWQ6dC5rZXkscG9pbnROdW1iZXI6ZS5wb2ludE51bWJl cixsaW5rOmUsdGlueUNvbG9ySHVlOm8udGlueVJHQihuKSx0aW55Q29sb3JB bHBoYTpuLmdldEFscGhhKCksbGlua1BhdGg6eSxsaW5rTGluZUNvbG9yOnQu bGlua0xpbmVDb2xvcixsaW5rTGluZVdpZHRoOnQubGlua0xpbmVXaWR0aCx2 YWx1ZUZvcm1hdDp0LnZhbHVlRm9ybWF0LHZhbHVlU3VmZml4OnQudmFsdWVT dWZmaXgsc2Fua2V5OnQuc2Fua2V5LHBhcmVudDp0LGludGVyYWN0aW9uU3Rh dGU6dC5pbnRlcmFjdGlvblN0YXRlLGZsb3c6ZS5mbG93fX0uYmluZChudWxs LHQpKX0scCk7SS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQobi5j bi5zYW5rZXlMaW5rLCEwKS5jYWxsKFAsXyxmLmxpbmtFdmVudHMpLEkuc3R5 bGUoInN0cm9rZSIsZnVuY3Rpb24odCl7cmV0dXJuIGsodCk/by50aW55UkdC KGkodC5saW5rTGluZUNvbG9yKSk6dC50aW55Q29sb3JIdWV9KS5zdHlsZSgi c3Ryb2tlLW9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiBrKHQpP28ub3Bh Y2l0eSh0LmxpbmtMaW5lQ29sb3IpOnQudGlueUNvbG9yQWxwaGF9KS5zdHls ZSgiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIHQudGlueUNvbG9ySHVlfSku c3R5bGUoImZpbGwtb3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHQudGlu eUNvbG9yQWxwaGF9KS5zdHlsZSgic3Ryb2tlLXdpZHRoIixmdW5jdGlvbih0 KXtyZXR1cm4gayh0KT90LmxpbmtMaW5lV2lkdGg6MX0pLmF0dHIoImQiLHko KSksSS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24oKXtyZXR1cm4gdC5fY29u dGV4dC5zdGF0aWNQbG90fHx2fHxtPzE6MH0pLnRyYW5zaXRpb24oKS5lYXNl KG4uZWFzZSkuZHVyYXRpb24obi5kdXJhdGlvbikuc3R5bGUoIm9wYWNpdHki LDEpLEkuZXhpdCgpLnRyYW5zaXRpb24oKS5lYXNlKG4uZWFzZSkuZHVyYXRp b24obi5kdXJhdGlvbikuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpO3Zh ciBEPV8uc2VsZWN0QWxsKCIuIituLmNuLnNhbmtleU5vZGVTZXQpLmRhdGEo ZCxwKTtELmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLnNhbmtl eU5vZGVTZXQsITApLEQuc3R5bGUoImN1cnNvciIsZnVuY3Rpb24odCl7c3dp dGNoKHQuYXJyYW5nZW1lbnQpe2Nhc2UiZml4ZWQiOnJldHVybiJkZWZhdWx0 IjtjYXNlInBlcnBlbmRpY3VsYXIiOnJldHVybiJucy1yZXNpemUiO2RlZmF1 bHQ6cmV0dXJuIm1vdmUifX0pO3ZhciBSPUQuc2VsZWN0QWxsKCIuIituLmNu LnNhbmtleU5vZGUpLmRhdGEoZnVuY3Rpb24odCl7dmFyIGU9dC5ncmFwaC5u b2RlcztyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGUscj1bXTtmb3IoZT0wO2U8 dC5sZW5ndGg7ZSsrKXRbZV0ub3JpZ2luYWxYPSh0W2VdLngwK3RbZV0ueDEp LzIsdFtlXS5vcmlnaW5hbFk9KHRbZV0ueTArdFtlXS55MSkvMiwtMT09PXIu aW5kZXhPZih0W2VdLm9yaWdpbmFsWCkmJnIucHVzaCh0W2VdLm9yaWdpbmFs WCk7Zm9yKHIuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSxlPTA7 ZTx0Lmxlbmd0aDtlKyspdFtlXS5vcmlnaW5hbExheWVySW5kZXg9ci5pbmRl eE9mKHRbZV0ub3JpZ2luYWxYKSx0W2VdLm9yaWdpbmFsTGF5ZXI9dFtlXS5v cmlnaW5hbExheWVySW5kZXgvKHIubGVuZ3RoLTEpfShlKSxlLm1hcChmdW5j dGlvbih0LGUpe3ZhciByPWkoZS5jb2xvciksYT1uLm5vZGVQYWRBY3Jvc3Ms cz10Lm5vZGVQYWQvMjtlLmR4PWUueDEtZS54MCxlLmR5PWUueTEtZS55MDt2 YXIgbD1lLmR4LGM9TWF0aC5tYXgoLjUsZS5keSksdT0ibm9kZV8iK2UucG9p bnROdW1iZXI7cmV0dXJuIGUuZ3JvdXAmJih1PWgucmFuZHN0cigpKSxlLnRy YWNlPXQudHJhY2UsZS5jdXJ2ZU51bWJlcj10LnRyYWNlLmluZGV4LHtpbmRl eDplLnBvaW50TnVtYmVyLGtleTp1LHBhcnRPZkdyb3VwOmUucGFydE9mR3Jv dXB8fCExLGdyb3VwOmUuZ3JvdXAsdHJhY2VJZDp0LmtleSx0cmFjZTp0LnRy YWNlLG5vZGU6ZSxub2RlUGFkOnQubm9kZVBhZCxub2RlTGluZUNvbG9yOnQu bm9kZUxpbmVDb2xvcixub2RlTGluZVdpZHRoOnQubm9kZUxpbmVXaWR0aCx0 ZXh0Rm9udDp0LnRleHRGb250LHNpemU6dC5ob3Jpem9udGFsP3QuaGVpZ2h0 OnQud2lkdGgsdmlzaWJsZVdpZHRoOk1hdGguY2VpbChsKSx2aXNpYmxlSGVp Z2h0OmMsem9uZVg6LWEsem9uZVk6LXMsem9uZVdpZHRoOmwrMiphLHpvbmVI ZWlnaHQ6YysyKnMsbGFiZWxZOnQuaG9yaXpvbnRhbD9lLmR5LzIrMTplLmR4 LzIrMSxsZWZ0OjE9PT1lLm9yaWdpbmFsTGF5ZXIsc2l6ZUFjcm9zczp0Lndp ZHRoLGZvcmNlTGF5b3V0czp0LmZvcmNlTGF5b3V0cyxob3Jpem9udGFsOnQu aG9yaXpvbnRhbCxkYXJrQmFja2dyb3VuZDpyLmdldEJyaWdodG5lc3MoKTw9 MTI4LHRpbnlDb2xvckh1ZTpvLnRpbnlSR0IociksdGlueUNvbG9yQWxwaGE6 ci5nZXRBbHBoYSgpLHZhbHVlRm9ybWF0OnQudmFsdWVGb3JtYXQsdmFsdWVT dWZmaXg6dC52YWx1ZVN1ZmZpeCxzYW5rZXk6dC5zYW5rZXksZ3JhcGg6dC5n cmFwaCxhcnJhbmdlbWVudDp0LmFycmFuZ2VtZW50LHVuaXF1ZU5vZGVMYWJl bFBhdGhJZDpbdC5ndWlkLHQua2V5LHVdLmpvaW4oIl8iKSxpbnRlcmFjdGlv blN0YXRlOnQuaW50ZXJhY3Rpb25TdGF0ZSxmaWd1cmU6dH19LmJpbmQobnVs bCx0KSl9LHApO1IuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG4uY24u c2Fua2V5Tm9kZSwhMCkuY2FsbCh4KS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rp b24oZSl7cmV0dXJuIXQuX2NvbnRleHQuc3RhdGljUGxvdCYmIXZ8fGUucGFy dE9mR3JvdXA/MDoxfSksUi5jYWxsKFAsXyxmLm5vZGVFdmVudHMpLmNhbGwo TyxJLGYsdCksUi50cmFuc2l0aW9uKCkuZWFzZShuLmVhc2UpLmR1cmF0aW9u KG4uZHVyYXRpb24pLmNhbGwoeCkuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9u KHQpe3JldHVybiB0LnBhcnRPZkdyb3VwPzA6MX0pLFIuZXhpdCgpLnRyYW5z aXRpb24oKS5lYXNlKG4uZWFzZSkuZHVyYXRpb24obi5kdXJhdGlvbikuc3R5 bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpO3ZhciBGPVIuc2VsZWN0QWxsKCIu IituLmNuLm5vZGVSZWN0KS5kYXRhKGQpO0YuZW50ZXIoKS5hcHBlbmQoInJl Y3QiKS5jbGFzc2VkKG4uY24ubm9kZVJlY3QsITApLmNhbGwodyksRi5zdHls ZSgic3Ryb2tlLXdpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlTGlu ZVdpZHRofSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24odCl7cmV0dXJuIG8u dGlueVJHQihpKHQubm9kZUxpbmVDb2xvcikpfSkuc3R5bGUoInN0cm9rZS1v cGFjaXR5IixmdW5jdGlvbih0KXtyZXR1cm4gby5vcGFjaXR5KHQubm9kZUxp bmVDb2xvcil9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIHQu dGlueUNvbG9ySHVlfSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsZnVuY3Rpb24o dCl7cmV0dXJuIHQudGlueUNvbG9yQWxwaGF9KSxGLnRyYW5zaXRpb24oKS5l YXNlKG4uZWFzZSkuZHVyYXRpb24obi5kdXJhdGlvbikuY2FsbCh3KTt2YXIg Qj1SLnNlbGVjdEFsbCgiLiIrbi5jbi5ub2RlQ2FwdHVyZSkuZGF0YShkKTtC LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZChuLmNuLm5vZGVDYXB0 dXJlLCEwKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwwKSxCLmF0dHIoIngiLGZ1 bmN0aW9uKHQpe3JldHVybiB0LnpvbmVYfSkuYXR0cigieSIsZnVuY3Rpb24o dCl7cmV0dXJuIHQuem9uZVl9KS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7 cmV0dXJuIHQuem9uZVdpZHRofSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbih0 KXtyZXR1cm4gdC56b25lSGVpZ2h0fSk7dmFyIE49Ui5zZWxlY3RBbGwoIi4i K24uY24ubm9kZUNlbnRlcmVkKS5kYXRhKGQpO04uZW50ZXIoKS5hcHBlbmQo ImciKS5jbGFzc2VkKG4uY24ubm9kZUNlbnRlcmVkLCEwKS5hdHRyKCJ0cmFu c2Zvcm0iLE0pLE4udHJhbnNpdGlvbigpLmVhc2Uobi5lYXNlKS5kdXJhdGlv bihuLmR1cmF0aW9uKS5hdHRyKCJ0cmFuc2Zvcm0iLE0pO3ZhciBqPU4uc2Vs ZWN0QWxsKCIuIituLmNuLm5vZGVMYWJlbEd1aWRlKS5kYXRhKGQpO2ouZW50 ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKG4uY24ubm9kZUxhYmVsR3Vp ZGUsITApLmF0dHIoImlkIixmdW5jdGlvbih0KXtyZXR1cm4gdC51bmlxdWVO b2RlTGFiZWxQYXRoSWR9KS5hdHRyKCJkIixBKS5hdHRyKCJ0cmFuc2Zvcm0i LFMpLGoudHJhbnNpdGlvbigpLmVhc2Uobi5lYXNlKS5kdXJhdGlvbihuLmR1 cmF0aW9uKS5hdHRyKCJkIixBKS5hdHRyKCJ0cmFuc2Zvcm0iLFMpO3ZhciBW PU4uc2VsZWN0QWxsKCIuIituLmNuLm5vZGVMYWJlbCkuZGF0YShkKTtWLmVu dGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChuLmNuLm5vZGVMYWJlbCwh MCkuYXR0cigidHJhbnNmb3JtIixFKS5zdHlsZSgidXNlci1zZWxlY3QiLCJu b25lIikuc3R5bGUoImN1cnNvciIsImRlZmF1bHQiKS5zdHlsZSgiZmlsbCIs ImJsYWNrIiksVi5zdHlsZSgidGV4dC1zaGFkb3ciLGZ1bmN0aW9uKHQpe3Jl dHVybiB0Lmhvcml6b250YWw/Ii0xcHggMXB4IDFweCAjZmZmLCAxcHggMXB4 IDFweCAjZmZmLCAxcHggLTFweCAxcHggI2ZmZiwgLTFweCAtMXB4IDFweCAj ZmZmIjoibm9uZSJ9KS5lYWNoKGZ1bmN0aW9uKHQpe3MuZm9udChWLHQudGV4 dEZvbnQpfSksVi50cmFuc2l0aW9uKCkuZWFzZShuLmVhc2UpLmR1cmF0aW9u KG4uZHVyYXRpb24pLmF0dHIoInRyYW5zZm9ybSIsRSk7dmFyIFU9Vi5zZWxl Y3RBbGwoIi4iK24uY24ubm9kZUxhYmVsVGV4dFBhdGgpLmRhdGEoZCk7VS5l bnRlcigpLmFwcGVuZCgidGV4dFBhdGgiKS5jbGFzc2VkKG4uY24ubm9kZUxh YmVsVGV4dFBhdGgsITApLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1p ZGRsZSIpLmF0dHIoInhsaW5rOmhyZWYiLGZ1bmN0aW9uKHQpe3JldHVybiIj Iit0LnVuaXF1ZU5vZGVMYWJlbFBhdGhJZH0pLmF0dHIoInN0YXJ0T2Zmc2V0 IixDKS5zdHlsZSgiZmlsbCIsTCksVS50ZXh0KGZ1bmN0aW9uKHQpe3JldHVy biB0Lmhvcml6b250YWx8fHQubm9kZS5keT41P3Qubm9kZS5sYWJlbDoiIn0p LmF0dHIoInRleHQtYW5jaG9yIixmdW5jdGlvbih0KXtyZXR1cm4gdC5ob3Jp em9udGFsJiZ0LmxlZnQ/ImVuZCI6InN0YXJ0In0pLFUudHJhbnNpdGlvbigp LmVhc2Uobi5lYXNlKS5kdXJhdGlvbihuLmR1cmF0aW9uKS5hdHRyKCJzdGFy dE9mZnNldCIsQykuc3R5bGUoImZpbGwiLEwpfX0seyIuLi8uLi9jb21wb25l bnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEz LCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL2d1cCI6NzE1LCIuLi8uLi9y ZWdpc3RyeSI6ODQ2LCIuL2NvbnN0YW50cyI6MTExMywiQHBsb3RseS9kMy1z YW5rZXkiOjU2LCJAcGxvdGx5L2QzLXNhbmtleS1jaXJjdWxhciI6NTUsZDM6 MTY1LCJkMy1mb3JjZSI6MTU4LCJkMy1pbnRlcnBvbGF0ZSI6MTYwLHRpbnlj b2xvcjI6NTM2fV0sMTExODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10sbj10LmNk WzBdLnRyYWNlLGE9bi5fc2Fua2V5LmdyYXBoLm5vZGVzLGk9MDtpPGEubGVu Z3RoO2krKyl7dmFyIG89YVtpXTtpZighby5wYXJ0T2ZHcm91cCl7dmFyIHM9 WyhvLngwK28ueDEpLzIsKG8ueTArby55MSkvMl07InYiPT09bi5vcmllbnRh dGlvbiYmcy5yZXZlcnNlKCksZSYmZS5jb250YWlucyhzLCExLGksdCkmJnIu cHVzaCh7cG9pbnROdW1iZXI6by5wb2ludE51bWJlcn0pfX1yZXR1cm4gcn19 LHt9XSwxMTE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj0wO3I8dC5sZW5ndGg7cisrKXRbcl0uaT1yO24ubWVyZ2VBcnJheShl LnRleHQsdCwidHgiKSxuLm1lcmdlQXJyYXkoZS50ZXh0dGVtcGxhdGUsdCwi dHh0Iiksbi5tZXJnZUFycmF5KGUuaG92ZXJ0ZXh0LHQsImh0eCIpLG4ubWVy Z2VBcnJheShlLmN1c3RvbWRhdGEsdCwiZGF0YSIpLG4ubWVyZ2VBcnJheShl LnRleHRwb3NpdGlvbix0LCJ0cCIpLGUudGV4dGZvbnQmJihuLm1lcmdlQXJy YXlDYXN0UG9zaXRpdmUoZS50ZXh0Zm9udC5zaXplLHQsInRzIiksbi5tZXJn ZUFycmF5KGUudGV4dGZvbnQuY29sb3IsdCwidGMiKSxuLm1lcmdlQXJyYXko ZS50ZXh0Zm9udC5mYW1pbHksdCwidGYiKSk7dmFyIGE9ZS5tYXJrZXI7aWYo YSl7bi5tZXJnZUFycmF5Q2FzdFBvc2l0aXZlKGEuc2l6ZSx0LCJtcyIpLG4u bWVyZ2VBcnJheUNhc3RQb3NpdGl2ZShhLm9wYWNpdHksdCwibW8iKSxuLm1l cmdlQXJyYXkoYS5zeW1ib2wsdCwibXgiKSxuLm1lcmdlQXJyYXkoYS5jb2xv cix0LCJtYyIpO3ZhciBpPWEubGluZTthLmxpbmUmJihuLm1lcmdlQXJyYXko aS5jb2xvcix0LCJtbGMiKSxuLm1lcmdlQXJyYXlDYXN0UG9zaXRpdmUoaS53 aWR0aCx0LCJtbHciKSk7dmFyIG89YS5ncmFkaWVudDtvJiYibm9uZSIhPT1v LnR5cGUmJihuLm1lcmdlQXJyYXkoby50eXBlLHQsIm1ndCIpLG4ubWVyZ2VB cnJheShvLmNvbG9yLHQsIm1nYyIpKX19fSx7Ii4uLy4uL2xpYiI6NzE3fV0s MTEyMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRl QXR0cnMsYT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIiku aG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xv cnNjYWxlL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0 cmlidXRlcyIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJp YnV0ZXMiKS5kYXNoLGw9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiks Yz10KCIuL2NvbnN0YW50cyIpLHU9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4 dGVuZEZsYXQ7ZS5leHBvcnRzPXt4Ont2YWxUeXBlOiJkYXRhX2FycmF5Iixl ZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyIsYW5pbTohMH0seDA6e3Zh bFR5cGU6ImFueSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5 cGVzIixhbmltOiEwfSxkeDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRp dFR5cGU6ImNhbGMiLGFuaW06ITB9LHk6e3ZhbFR5cGU6ImRhdGFfYXJyYXki LGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIixhbmltOiEwfSx5MDp7 dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlz VHlwZXMiLGFuaW06ITB9LGR5Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxl ZGl0VHlwZToiY2FsYyIsYW5pbTohMH0sc3RhY2tncm91cDp7dmFsVHlwZToi c3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sb3JpZW50YXRpb246 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInYiLCJoIl0sZWRpdFR5 cGU6ImNhbGMifSxncm91cG5vcm06e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbIiIsImZyYWN0aW9uIiwicGVyY2VudCJdLGRmbHQ6IiIsZWRpdFR5 cGU6ImNhbGMifSxzdGFja2dhcHM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbImluZmVyIHplcm8iLCJpbnRlcnBvbGF0ZSJdLGRmbHQ6ImluZmVy IHplcm8iLGVkaXRUeXBlOiJjYWxjIn0sdGV4dDp7dmFsVHlwZToic3RyaW5n IixkZmx0OiIiLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSx0ZXh0dGVt cGxhdGU6bih7fSx7fSksaG92ZXJ0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRm bHQ6IiIsYXJyYXlPazohMCxlZGl0VHlwZToic3R5bGUifSxtb2RlOnt2YWxU eXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJsaW5lcyIsIm1hcmtlcnMiLCJ0ZXh0 Il0sZXh0cmFzOlsibm9uZSJdLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJvbjp7 dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsicG9pbnRzIiwiZmlsbHMiXSxl ZGl0VHlwZToic3R5bGUifSxob3ZlcnRlbXBsYXRlOmEoe30se2tleXM6Yy5l dmVudERhdGFLZXlzfSksbGluZTp7Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixl ZGl0VHlwZToic3R5bGUiLGFuaW06ITB9LHdpZHRoOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLGRmbHQ6MixlZGl0VHlwZToic3R5bGUiLGFuaW06ITB9LHNo YXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsaW5lYXIiLCJz cGxpbmUiLCJodiIsInZoIiwiaHZoIiwidmh2Il0sZGZsdDoibGluZWFyIixl ZGl0VHlwZToicGxvdCJ9LHNtb290aGluZzp7dmFsVHlwZToibnVtYmVyIixt aW46MCxtYXg6MS4zLGRmbHQ6MSxlZGl0VHlwZToicGxvdCJ9LGRhc2g6dSh7 fSxzLHtlZGl0VHlwZToic3R5bGUifSksc2ltcGxpZnk6e3ZhbFR5cGU6ImJv b2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxv dCJ9LGNvbm5lY3RnYXBzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVk aXRUeXBlOiJjYWxjIn0sY2xpcG9uYXhpczp7dmFsVHlwZToiYm9vbGVhbiIs ZGZsdDohMCxlZGl0VHlwZToicGxvdCJ9LGZpbGw6e3ZhbFR5cGU6ImVudW1l cmF0ZWQiLHZhbHVlczpbIm5vbmUiLCJ0b3plcm95IiwidG96ZXJveCIsInRv bmV4dHkiLCJ0b25leHR4IiwidG9zZWxmIiwidG9uZXh0Il0sZWRpdFR5cGU6 ImNhbGMifSxmaWxsY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToi c3R5bGUiLGFuaW06ITB9LG1hcmtlcjp1KHtzeW1ib2w6e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpsLnN5bWJvbExpc3QsZGZsdDoiY2lyY2xlIixh cnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LG9wYWNpdHk6e3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsbWF4OjEsYXJyYXlPazohMCxlZGl0VHlwZToic3R5 bGUiLGFuaW06ITB9LHNpemU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZs dDo2LGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMiLGFuaW06ITB9LG1heGRp c3BsYXllZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsZWRpdFR5 cGU6InBsb3QifSxzaXplcmVmOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxl ZGl0VHlwZToiY2FsYyJ9LHNpemVtaW46e3ZhbFR5cGU6Im51bWJlciIsbWlu OjAsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sc2l6ZW1vZGU6e3ZhbFR5cGU6 ImVudW1lcmF0ZWQiLHZhbHVlczpbImRpYW1ldGVyIiwiYXJlYSJdLGRmbHQ6 ImRpYW1ldGVyIixlZGl0VHlwZToiY2FsYyJ9LGxpbmU6dSh7d2lkdGg6e3Zh bFR5cGU6Im51bWJlciIsbWluOjAsYXJyYXlPazohMCxlZGl0VHlwZToic3R5 bGUiLGFuaW06ITB9LGVkaXRUeXBlOiJjYWxjIn0saSgibWFya2VyLmxpbmUi LHthbmltOiEwfSkpLGdyYWRpZW50Ont0eXBlOnt2YWxUeXBlOiJlbnVtZXJh dGVkIix2YWx1ZXM6WyJyYWRpYWwiLCJob3Jpem9udGFsIiwidmVydGljYWwi LCJub25lIl0sYXJyYXlPazohMCxkZmx0OiJub25lIixlZGl0VHlwZToiY2Fs YyJ9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMCxlZGl0VHlw ZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSxp KCJtYXJrZXIiLHthbmltOiEwfSkpLHNlbGVjdGVkOnttYXJrZXI6e29wYWNp dHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6InN0 eWxlIn0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToic3R5bGUi fSxzaXplOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJzdHls ZSJ9LGVkaXRUeXBlOiJzdHlsZSJ9LHRleHRmb250Ontjb2xvcjp7dmFsVHlw ZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJzdHlsZSJ9 LGVkaXRUeXBlOiJzdHlsZSJ9LHVuc2VsZWN0ZWQ6e21hcmtlcjp7b3BhY2l0 eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToic3R5 bGUifSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9 LHNpemU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InN0eWxl In0sZWRpdFR5cGU6InN0eWxlIn0sdGV4dGZvbnQ6e2NvbG9yOnt2YWxUeXBl OiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn0s ZWRpdFR5cGU6InN0eWxlIn0sdGV4dHBvc2l0aW9uOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyJ0b3AgbGVmdCIsInRvcCBjZW50ZXIiLCJ0b3Ag cmlnaHQiLCJtaWRkbGUgbGVmdCIsIm1pZGRsZSBjZW50ZXIiLCJtaWRkbGUg cmlnaHQiLCJib3R0b20gbGVmdCIsImJvdHRvbSBjZW50ZXIiLCJib3R0b20g cmlnaHQiXSxkZmx0OiJtaWRkbGUgY2VudGVyIixhcnJheU9rOiEwLGVkaXRU eXBlOiJjYWxjIn0sdGV4dGZvbnQ6byh7ZWRpdFR5cGU6ImNhbGMiLGNvbG9y RWRpdFR5cGU6InN0eWxlIixhcnJheU9rOiEwfSkscjp7dmFsVHlwZToiZGF0 YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx0Ont2YWxUeXBlOiJkYXRhX2Fy cmF5IixlZGl0VHlwZToiY2FsYyJ9fX0seyIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9jb21wb25lbnRzL2Ry YXdpbmciOjYxMywiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0 ZXMiOjYxMiwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9m b250X2F0dHJpYnV0ZXMiOjc5MSwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0 cmlidXRlcyI6ODQxLCIuL2NvbnN0YW50cyI6MTEyNH1dLDExMjE6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVy aWMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2F4ZXMiKSxvPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5C QUROVU0scz10KCIuL3N1YnR5cGVzIiksbD10KCIuL2NvbG9yc2NhbGVfY2Fs YyIpLGM9dCgiLi9hcnJheXNfdG9fY2FsY2RhdGEiKSx1PXQoIi4vY2FsY19z ZWxlY3Rpb24iKTtmdW5jdGlvbiBoKHQsZSxyLG4sYSxvLGwpe3ZhciBjPWUu X2xlbmd0aCx1PXQuX2Z1bGxMYXlvdXQsaD1yLl9pZCxmPW4uX2lkLHA9dS5f Zmlyc3RTY2F0dGVyW2QoZSldPT09ZS51aWQsdj0oZyhlLHUscixuKXx8e30p Lm9yaWVudGF0aW9uLG09ZS5maWxsO3IuX21pbkR0aWNrPTAsbi5fbWluRHRp Y2s9MDt2YXIgeT17cGFkZGVkOiEwfSx4PXtwYWRkZWQ6ITB9O2wmJih5LnBw YWQ9eC5wcGFkPWwpO3ZhciBiPWM8Mnx8YVswXSE9PWFbYy0xXXx8b1swXSE9 PW9bYy0xXTtiJiYoInRvemVyb3giPT09bXx8InRvbmV4dHgiPT09bSYmKHB8 fCJoIj09PXYpKT95LnRvemVybz0hMDooZS5lcnJvcl95fHx7fSkudmlzaWJs ZXx8InRvbmV4dHkiIT09bSYmInRvemVyb3kiIT09bSYmKHMuaGFzTWFya2Vy cyhlKXx8cy5oYXNUZXh0KGUpKXx8KHkucGFkZGVkPSExLHkucHBhZD0wKSxi JiYoInRvemVyb3kiPT09bXx8InRvbmV4dHkiPT09bSYmKHB8fCJ2Ij09PXYp KT94LnRvemVybz0hMDoidG9uZXh0eCIhPT1tJiYidG96ZXJveCIhPT1tfHwo eC5wYWRkZWQ9ITEpLGgmJihlLl9leHRyZW1lc1toXT1pLmZpbmRFeHRyZW1l cyhyLGEseSkpLGYmJihlLl9leHRyZW1lc1tmXT1pLmZpbmRFeHRyZW1lcyhu LG8seCkpfWZ1bmN0aW9uIGYodCxlKXtpZihzLmhhc01hcmtlcnModCkpe3Zh ciByLG49dC5tYXJrZXIsbz0xLjYqKHQubWFya2VyLnNpemVyZWZ8fDEpO2lm KHI9ImFyZWEiPT09dC5tYXJrZXIuc2l6ZW1vZGU/ZnVuY3Rpb24odCl7cmV0 dXJuIE1hdGgubWF4KE1hdGguc3FydCgodHx8MCkvbyksMyl9OmZ1bmN0aW9u KHQpe3JldHVybiBNYXRoLm1heCgodHx8MCkvbywzKX0sYS5pc0FycmF5T3JU eXBlZEFycmF5KG4uc2l6ZSkpe3ZhciBsPXt0eXBlOiJsaW5lYXIifTtpLnNl dENvbnZlcnQobCk7Zm9yKHZhciBjPWwubWFrZUNhbGNkYXRhKHQubWFya2Vy LCJzaXplIiksdT1uZXcgQXJyYXkoZSksaD0wO2g8ZTtoKyspdVtoXT1yKGNb aF0pO3JldHVybiB1fXJldHVybiByKG4uc2l6ZSl9fWZ1bmN0aW9uIHAodCxl KXt2YXIgcj1kKGUpLG49dC5fZmlyc3RTY2F0dGVyO25bcl18fChuW3JdPWUu dWlkKX1mdW5jdGlvbiBkKHQpe3ZhciBlPXQuc3RhY2tncm91cDtyZXR1cm4g dC54YXhpcyt0LnlheGlzK3QudHlwZSsoZT8iLSIrZToiIil9ZnVuY3Rpb24g Zyh0LGUscixuKXt2YXIgYT10LnN0YWNrZ3JvdXA7aWYoYSl7dmFyIGk9ZS5f c2NhdHRlclN0YWNrT3B0c1tyLl9pZCtuLl9pZF1bYV0sbz0idiI9PT1pLm9y aWVudGF0aW9uP246cjtyZXR1cm4ibGluZWFyIj09PW8udHlwZXx8ImxvZyI9 PT1vLnR5cGU/aTp2b2lkIDB9fWUuZXhwb3J0cz17Y2FsYzpmdW5jdGlvbih0 LGUpe3ZhciByLHMsZCx2LG0seSx4PXQuX2Z1bGxMYXlvdXQsYj1pLmdldEZy b21JZCh0LGUueGF4aXN8fCJ4IiksXz1pLmdldEZyb21JZCh0LGUueWF4aXN8 fCJ5Iiksdz1iLm1ha2VDYWxjZGF0YShlLCJ4Iiksaz1fLm1ha2VDYWxjZGF0 YShlLCJ5IiksVD1lLl9sZW5ndGgsTT1uZXcgQXJyYXkoVCksQT1lLmlkcyxT PWcoZSx4LGIsXyksRT0hMTtwKHgsZSk7dmFyIEwsQz0ieCIsUD0ieSI7Zm9y KFM/KGEucHVzaFVuaXF1ZShTLnRyYWNlSW5kaWNlcyxlLl9leHBhbmRlZElu ZGV4KSwocj0idiI9PT1TLm9yaWVudGF0aW9uKT8oUD0icyIsTD0ieCIpOihD PSJzIixMPSJ5IiksbT0iaW50ZXJwb2xhdGUiPT09Uy5zdGFja2dhcHMpOmgo dCxlLGIsXyx3LGssZihlLFQpKSxzPTA7czxUO3MrKyl7dmFyIE89TVtzXT17 fSx6PW4od1tzXSksST1uKGtbc10pO3omJkk/KE9bQ109d1tzXSxPW1BdPWtb c10pOlMmJihyP3o6SSk/KE9bTF09cj93W3NdOmtbc10sTy5nYXA9ITAsbT8o Ty5zPW8sRT0hMCk6Ty5zPTApOk9bQ109T1tQXT1vLEEmJihPLmlkPVN0cmlu ZyhBW3NdKSl9aWYoYyhNLGUpLGwodCxlKSx1KE0sZSksUyl7Zm9yKHM9MDtz PE0ubGVuZ3RoOylNW3NdW0xdPT09bz9NLnNwbGljZShzLDEpOnMrKztpZihh LnNvcnQoTSxmdW5jdGlvbih0LGUpe3JldHVybiB0W0xdLWVbTF18fHQuaS1l Lml9KSxFKXtmb3Iocz0wO3M8TS5sZW5ndGgtMSYmTVtzXS5nYXA7KXMrKztm b3IoKHk9TVtzXS5zKXx8KHk9TVtzXS5zPTApLGQ9MDtkPHM7ZCsrKU1bZF0u cz15O2Zvcih2PU0ubGVuZ3RoLTE7dj5zJiZNW3ZdLmdhcDspdi0tO2Zvcih5 PU1bdl0ucyxkPU0ubGVuZ3RoLTE7ZD52O2QtLSlNW2RdLnM9eTtmb3IoO3M8 djspaWYoTVsrK3NdLmdhcCl7Zm9yKGQ9cysxO01bZF0uZ2FwOylkKys7Zm9y KHZhciBEPU1bcy0xXVtMXSxSPU1bcy0xXS5zLEY9KE1bZF0ucy1SKS8oTVtk XVtMXS1EKTtzPGQ7KU1bc10ucz1SKyhNW3NdW0xdLUQpKkYscysrfX19cmV0 dXJuIE19LGNhbGNNYXJrZXJTaXplOmYsY2FsY0F4aXNFeHBhbnNpb246aCxz ZXRGaXJzdFNjYXR0ZXI6cCxnZXRTdGFja09wdHM6Z319LHsiLi4vLi4vY29u c3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi9hcnJheXNfdG9fY2FsY2Rh dGEiOjExMTksIi4vY2FsY19zZWxlY3Rpb24iOjExMjIsIi4vY29sb3JzY2Fs ZV9jYWxjIjoxMTIzLCIuL3N1YnR5cGVzIjoxMTQ0LCJmYXN0LWlzbnVtZXJp YyI6MjI4fV0sMTEyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtu LmlzQXJyYXlPclR5cGVkQXJyYXkoZS5zZWxlY3RlZHBvaW50cykmJm4udGFn U2VsZWN0ZWQodCxlKX19LHsiLi4vLi4vbGliIjo3MTd9XSwxMTIzOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBv bmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxhPXQo Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIiksaT10KCIuL3N1 YnR5cGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aS5oYXNMaW5lcyhl KSYmbihlLCJsaW5lIikmJmEodCxlLHt2YWxzOmUubGluZS5jb2xvcixjb250 YWluZXJTdHI6ImxpbmUiLGNMZXR0ZXI6ImMifSksaS5oYXNNYXJrZXJzKGUp JiYobihlLCJtYXJrZXIiKSYmYSh0LGUse3ZhbHM6ZS5tYXJrZXIuY29sb3Is Y29udGFpbmVyU3RyOiJtYXJrZXIiLGNMZXR0ZXI6ImMifSksbihlLCJtYXJr ZXIubGluZSIpJiZhKHQsZSx7dmFsczplLm1hcmtlci5saW5lLmNvbG9yLGNv bnRhaW5lclN0cjoibWFya2VyLmxpbmUiLGNMZXR0ZXI6ImMifSkpfX0seyIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6NjAwLCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyI6NjAzLCIuL3N1YnR5cGVz IjoxMTQ0fV0sMTEyNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtl LmV4cG9ydHM9e1BUU19MSU5FU09OTFk6MjAsbWluVG9sZXJhbmNlOi4yLHRv bGVyYW5jZUdyb3d0aDoxMCxtYXhTY3JlZW5zQXdheToyMCxldmVudERhdGFL ZXlzOltdfX0se31dLDExMjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi9jYWxjIik7ZnVuY3Rpb24gYSh0LGUscixuLGEsaSxv KXthW25dPSEwO3ZhciBzPXtpOm51bGwsZ2FwOiEwLHM6MH07aWYoc1tvXT1y LHQuc3BsaWNlKGUsMCxzKSxlJiZyPT09dFtlLTFdW29dKXt2YXIgbD10W2Ut MV07cy5zPWwucyxzLmk9bC5pLHMuZ2FwPWwuZ2FwfWVsc2UgaSYmKHMucz1m dW5jdGlvbih0LGUscixuKXt2YXIgYT10W2UtMV0saT10W2UrMV07cmV0dXJu IGk/YT9hLnMrKGkucy1hLnMpKihyLWFbbl0pLyhpW25dLWFbbl0pOmkuczph LnN9KHQsZSxyLG8pKTtlfHwodFswXS50PXRbMV0udCx0WzBdLnRyYWNlPXRb MV0udHJhY2UsZGVsZXRlIHRbMV0udCxkZWxldGUgdFsxXS50cmFjZSl9ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS54YXhpcyxpPWUueWF4aXMs bz1yLl9pZCtpLl9pZCxzPXQuX2Z1bGxMYXlvdXQuX3NjYXR0ZXJTdGFja09w dHNbb107aWYocyl7dmFyIGwsYyx1LGgsZixwLGQsZyx2LG0seSx4LGIsXyx3 LGs9dC5jYWxjZGF0YTtmb3IodmFyIFQgaW4gcyl7dmFyIE09KG09c1tUXSku dHJhY2VJbmRpY2VzO2lmKE0ubGVuZ3RoKXtmb3IoeT0iaW50ZXJwb2xhdGUi PT09bS5zdGFja2dhcHMseD1tLmdyb3Vwbm9ybSwidiI9PT1tLm9yaWVudGF0 aW9uPyhiPSJ4IixfPSJ5Iik6KGI9InkiLF89IngiKSx3PW5ldyBBcnJheShN Lmxlbmd0aCksbD0wO2w8dy5sZW5ndGg7bCsrKXdbbF09ITE7cD1rW01bMF1d O3ZhciBBPW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKGw9MDtsPHAubGVuZ3Ro O2wrKylBW2xdPXBbbF1bYl07Zm9yKGw9MTtsPE0ubGVuZ3RoO2wrKyl7Zm9y KGY9a1tNW2xdXSxjPXU9MDtjPGYubGVuZ3RoO2MrKyl7Zm9yKGQ9ZltjXVti XTtkPkFbdV0mJnU8QS5sZW5ndGg7dSsrKWEoZixjLEFbdV0sbCx3LHksYiks YysrO2lmKGQhPT1BW3VdKXtmb3IoaD0wO2g8bDtoKyspYShrW01baF1dLHUs ZCxoLHcseSxiKTtBLnNwbGljZSh1LDAsZCl9dSsrfWZvcig7dTxBLmxlbmd0 aDt1KyspYShmLGMsQVt1XSxsLHcseSxiKSxjKyt9dmFyIFM9QS5sZW5ndGg7 Zm9yKGM9MDtjPHAubGVuZ3RoO2MrKyl7Zm9yKGc9cFtjXVtfXT1wW2NdLnMs bD0xO2w8TS5sZW5ndGg7bCsrKShmPWtbTVtsXV0pWzBdLnRyYWNlLl9yYXdM ZW5ndGg9ZlswXS50cmFjZS5fbGVuZ3RoLGZbMF0udHJhY2UuX2xlbmd0aD1T LGcrPWZbY10ucyxmW2NdW19dPWc7aWYoeClmb3Iodj0oImZyYWN0aW9uIj09 PXg/ZzpnLzEwMCl8fDEsbD0wO2w8TS5sZW5ndGg7bCsrKXt2YXIgRT1rW01b bF1dW2NdO0VbX10vPXYsRS5zTm9ybT1FLnMvdn19Zm9yKGw9MDtsPE0ubGVu Z3RoO2wrKyl7dmFyIEw9KGY9a1tNW2xdXSlbMF0udHJhY2UsQz1uLmNhbGNN YXJrZXJTaXplKEwsTC5fcmF3TGVuZ3RoKSxQPUFycmF5LmlzQXJyYXkoQyk7 aWYoQyYmd1tsXXx8UCl7dmFyIE89Qztmb3IoQz1uZXcgQXJyYXkoUyksYz0w O2M8UztjKyspQ1tjXT1mW2NdLmdhcD8wOlA/T1tmW2NdLmldOk99dmFyIHo9 bmV3IEFycmF5KFMpLEk9bmV3IEFycmF5KFMpO2ZvcihjPTA7YzxTO2MrKyl6 W2NdPWZbY10ueCxJW2NdPWZbY10ueTtuLmNhbGNBeGlzRXhwYW5zaW9uKHQs TCxyLGkseixJLEMpLGZbMF0udC5vcmllbnRhdGlvbj1tLm9yaWVudGF0aW9u fX19fX19LHsiLi9jYWxjIjoxMTIxfV0sMTEyNjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBl PTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciByPXRbZV07aWYoInNjYXR0ZXIiPT09 ci50eXBlKXt2YXIgbj1yLmZpbGw7aWYoIm5vbmUiIT09biYmInRvc2VsZiIh PT1uJiYoci5vcGFjaXR5PXZvaWQgMCwidG9uZXh0eSI9PT1ufHwidG9uZXh0 eCI9PT1uKSlmb3IodmFyIGE9ZS0xO2E+PTA7YS0tKXt2YXIgaT10W2FdO2lm KCJzY2F0dGVyIj09PWkudHlwZSYmaS54YXhpcz09PXIueGF4aXMmJmkueWF4 aXM9PT1yLnlheGlzKXtpLm9wYWNpdHk9dm9pZCAwO2JyZWFrfX19fX19LHt9 XSwxMTI3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4vYXR0 cmlidXRlcyIpLG89dCgiLi9jb25zdGFudHMiKSxzPXQoIi4vc3VidHlwZXMi KSxsPXQoIi4veHlfZGVmYXVsdHMiKSxjPXQoIi4vc3RhY2tfZGVmYXVsdHMi KSx1PXQoIi4vbWFya2VyX2RlZmF1bHRzIiksaD10KCIuL2xpbmVfZGVmYXVs dHMiKSxmPXQoIi4vbGluZV9zaGFwZV9kZWZhdWx0cyIpLHA9dCgiLi90ZXh0 X2RlZmF1bHRzIiksZD10KCIuL2ZpbGxjb2xvcl9kZWZhdWx0cyIpO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUscixnKXtmdW5jdGlvbiB2KHIsYSl7cmV0dXJu IG4uY29lcmNlKHQsZSxpLHIsYSl9dmFyIG09bCh0LGUsZyx2KTtpZihtfHwo ZS52aXNpYmxlPSExKSxlLnZpc2libGUpe3ZhciB5PWModCxlLGcsdikseD0h eSYmbTxvLlBUU19MSU5FU09OTFk/ImxpbmVzK21hcmtlcnMiOiJsaW5lcyI7 digidGV4dCIpLHYoImhvdmVydGV4dCIpLHYoIm1vZGUiLHgpLHMuaGFzTGlu ZXMoZSkmJihoKHQsZSxyLGcsdiksZih0LGUsdiksdigiY29ubmVjdGdhcHMi KSx2KCJsaW5lLnNpbXBsaWZ5IikpLHMuaGFzTWFya2VycyhlKSYmdSh0LGUs cixnLHYse2dyYWRpZW50OiEwfSkscy5oYXNUZXh0KGUpJiYodigidGV4dHRl bXBsYXRlIikscCh0LGUsZyx2KSk7dmFyIGI9W107KHMuaGFzTWFya2Vycyhl KXx8cy5oYXNUZXh0KGUpKSYmKHYoImNsaXBvbmF4aXMiKSx2KCJtYXJrZXIu bWF4ZGlzcGxheWVkIiksYi5wdXNoKCJwb2ludHMiKSksdigiZmlsbCIseT95 LmZpbGxEZmx0OiJub25lIiksIm5vbmUiIT09ZS5maWxsJiYoZCh0LGUscix2 KSxzLmhhc0xpbmVzKGUpfHxmKHQsZSx2KSk7dmFyIF89KGUubGluZXx8e30p LmNvbG9yLHc9KGUubWFya2VyfHx7fSkuY29sb3I7InRvbmV4dCIhPT1lLmZp bGwmJiJ0b3NlbGYiIT09ZS5maWxsfHxiLnB1c2goImZpbGxzIiksdigiaG92 ZXJvbiIsYi5qb2luKCIrIil8fCJwb2ludHMiKSwiZmlsbHMiIT09ZS5ob3Zl cm9uJiZ2KCJob3ZlcnRlbXBsYXRlIik7dmFyIGs9YS5nZXRDb21wb25lbnRN ZXRob2QoImVycm9yYmFycyIsInN1cHBseURlZmF1bHRzIik7ayh0LGUsX3x8 d3x8cix7YXhpczoieSJ9KSxrKHQsZSxffHx3fHxyLHtheGlzOiJ4Iixpbmhl cml0OiJ5In0pLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLHYp fX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4v YXR0cmlidXRlcyI6MTEyMCwiLi9jb25zdGFudHMiOjExMjQsIi4vZmlsbGNv bG9yX2RlZmF1bHRzIjoxMTI4LCIuL2xpbmVfZGVmYXVsdHMiOjExMzMsIi4v bGluZV9zaGFwZV9kZWZhdWx0cyI6MTEzNSwiLi9tYXJrZXJfZGVmYXVsdHMi OjExMzksIi4vc3RhY2tfZGVmYXVsdHMiOjExNDIsIi4vc3VidHlwZXMiOjEx NDQsIi4vdGV4dF9kZWZhdWx0cyI6MTE0NSwiLi94eV9kZWZhdWx0cyI6MTE0 Nn1dLDExMjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgiLi4vLi4vbGliIiku aXNBcnJheU9yVHlwZWRBcnJheTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIs aSl7dmFyIG89ITE7aWYoZS5tYXJrZXIpe3ZhciBzPWUubWFya2VyLmNvbG9y LGw9KGUubWFya2VyLmxpbmV8fHt9KS5jb2xvcjtzJiYhYShzKT9vPXM6bCYm IWEobCkmJihvPWwpfWkoImZpbGxjb2xvciIsbi5hZGRPcGFjaXR5KChlLmxp bmV8fHt9KS5jb2xvcnx8b3x8ciwuNSkpfX0seyIuLi8uLi9jb21wb25lbnRz L2NvbG9yIjo1OTIsIi4uLy4uL2xpYiI6NzE3fV0sMTEyOTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGE9 e30saT17X2Z1bGxMYXlvdXQ6cn0sbz1uLmdldEZyb21UcmFjZShpLGUsIngi KSxzPW4uZ2V0RnJvbVRyYWNlKGksZSwieSIpO3JldHVybiBhLnhMYWJlbD1u LnRpY2tUZXh0KG8sdC54LCEwKS50ZXh0LGEueUxhYmVsPW4udGlja1RleHQo cyx0LnksITApLnRleHQsYX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4 ZXMiOjc2NX1dLDExMzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgiLi9zdWJ0 eXBlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGk7aWYoImxp bmVzIj09PXQubW9kZSlyZXR1cm4ocj10LmxpbmUuY29sb3IpJiZuLm9wYWNp dHkocik/cjp0LmZpbGxjb2xvcjtpZigibm9uZSI9PT10Lm1vZGUpcmV0dXJu IHQuZmlsbD90LmZpbGxjb2xvcjoiIjt2YXIgbz1lLm1jY3x8KHQubWFya2Vy fHx7fSkuY29sb3Iscz1lLm1sY2N8fCgodC5tYXJrZXJ8fHt9KS5saW5lfHx7 fSkuY29sb3I7cmV0dXJuKGk9byYmbi5vcGFjaXR5KG8pP286cyYmbi5vcGFj aXR5KHMpJiYoZS5tbHd8fCgodC5tYXJrZXJ8fHt9KS5saW5lfHx7fSkud2lk dGgpP3M6IiIpP24ub3BhY2l0eShpKTwuMz9uLmFkZE9wYWNpdHkoaSwuMyk6 aToocj0odC5saW5lfHx7fSkuY29sb3IpJiZuLm9wYWNpdHkocikmJmEuaGFz TGluZXModCkmJnQubGluZS53aWR0aD9yOnQuZmlsbGNvbG9yfX0seyIuLi8u Li9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4vc3VidHlwZXMiOjExNDR9XSwx MTMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLGk9dCgiLi4v Li4vcmVnaXN0cnkiKSxvPXQoIi4vZ2V0X3RyYWNlX2NvbG9yIikscz10KCIu Li8uLi9jb21wb25lbnRzL2NvbG9yIiksbD1uLmZpbGxUZXh0O2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixjKXt2YXIgdT10LmNkLGg9dVswXS50cmFjZSxm PXQueGEscD10LnlhLGQ9Zi5jMnAoZSksZz1wLmMycChyKSx2PVtkLGddLG09 aC5ob3Zlcm9ufHwiIix5PS0xIT09aC5tb2RlLmluZGV4T2YoIm1hcmtlcnMi KT8zOi41O2lmKC0xIT09bS5pbmRleE9mKCJwb2ludHMiKSl7dmFyIHg9ZnVu Y3Rpb24odCl7dmFyIGU9TWF0aC5tYXgoeSx0Lm1yY3x8MCkscj1mLmMycCh0 LngpLWQsbj1wLmMycCh0LnkpLWc7cmV0dXJuIE1hdGgubWF4KE1hdGguc3Fy dChyKnIrbipuKS1lLDEteS9lKX0sYj1hLmdldERpc3RhbmNlRnVuY3Rpb24o YyxmdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgzLHQubXJjfHwwKSxyPTEt MS9lLG49TWF0aC5hYnMoZi5jMnAodC54KS1kKTtyZXR1cm4gbjxlP3Iqbi9l Om4tZStyfSxmdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgzLHQubXJjfHww KSxyPTEtMS9lLG49TWF0aC5hYnMocC5jMnAodC55KS1nKTtyZXR1cm4gbjxl P3Iqbi9lOm4tZStyfSx4KTtpZihhLmdldENsb3Nlc3QodSxiLHQpLCExIT09 dC5pbmRleCl7dmFyIF89dVt0LmluZGV4XSx3PWYuYzJwKF8ueCwhMCksaz1w LmMycChfLnksITApLFQ9Xy5tcmN8fDE7dC5pbmRleD1fLmk7dmFyIE09dVsw XS50Lm9yaWVudGF0aW9uLEE9TSYmKF8uc05vcm18fF8ucyksUz0iaCI9PT1N P0E6Xy54LEU9InYiPT09TT9BOl8ueTtyZXR1cm4gbi5leHRlbmRGbGF0KHQs e2NvbG9yOm8oaCxfKSx4MDp3LVQseDE6dytULHhMYWJlbFZhbDpTLHkwOmst VCx5MTprK1QseUxhYmVsVmFsOkUsc3Bpa2VEaXN0YW5jZTp4KF8pLGhvdmVy dGVtcGxhdGU6aC5ob3ZlcnRlbXBsYXRlfSksbChfLGgsdCksaS5nZXRDb21w b25lbnRNZXRob2QoImVycm9yYmFycyIsImhvdmVySW5mbyIpKF8saCx0KSxb dF19fWlmKC0xIT09bS5pbmRleE9mKCJmaWxscyIpJiZoLl9wb2x5Z29ucyl7 dmFyIEwsQyxQLE8seixJLEQsUixGLEI9aC5fcG9seWdvbnMsTj1bXSxqPSEx LFY9MS8wLFU9LTEvMCxxPTEvMCxIPS0xLzA7Zm9yKEw9MDtMPEIubGVuZ3Ro O0wrKykoUD1CW0xdKS5jb250YWlucyh2KSYmKGo9IWosTi5wdXNoKFApLHE9 TWF0aC5taW4ocSxQLnltaW4pLEg9TWF0aC5tYXgoSCxQLnltYXgpKTtpZihq KXt2YXIgRz0oKHE9TWF0aC5tYXgocSwwKSkrKEg9TWF0aC5taW4oSCxwLl9s ZW5ndGgpKSkvMjtmb3IoTD0wO0w8Ti5sZW5ndGg7TCsrKWZvcihPPU5bTF0u cHRzLEM9MTtDPE8ubGVuZ3RoO0MrKykoUj1PW0MtMV1bMV0pPkchPShGPU9b Q11bMV0pPj1HJiYoST1PW0MtMV1bMF0sRD1PW0NdWzBdLEYtUiYmKHo9SSso RC1JKSooRy1SKS8oRi1SKSxWPU1hdGgubWluKFYseiksVT1NYXRoLm1heChV LHopKSk7Vj1NYXRoLm1heChWLDApLFU9TWF0aC5taW4oVSxmLl9sZW5ndGgp O3ZhciBZPXMuZGVmYXVsdExpbmU7cmV0dXJuIHMub3BhY2l0eShoLmZpbGxj b2xvcik/WT1oLmZpbGxjb2xvcjpzLm9wYWNpdHkoKGgubGluZXx8e30pLmNv bG9yKSYmKFk9aC5saW5lLmNvbG9yKSxuLmV4dGVuZEZsYXQodCx7ZGlzdGFu Y2U6dC5tYXhIb3ZlckRpc3RhbmNlLHgwOlYseDE6VSx5MDpHLHkxOkcsY29s b3I6WSxob3ZlcnRlbXBsYXRlOiExfSksZGVsZXRlIHQuaW5kZXgsaC50ZXh0 JiYhQXJyYXkuaXNBcnJheShoLnRleHQpP3QudGV4dD1TdHJpbmcoaC50ZXh0 KTp0LnRleHQ9aC5uYW1lLFt0XX19fX0seyIuLi8uLi9jb21wb25lbnRzL2Nv bG9yIjo1OTIsIi4uLy4uL2NvbXBvbmVudHMvZngiOjYzMCwiLi4vLi4vbGli Ijo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vZ2V0X3RyYWNlX2NvbG9y IjoxMTMwfV0sMTEzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuL3N1YnR5cGVzIik7ZS5leHBvcnRzPXtoYXNMaW5lczpuLmhh c0xpbmVzLGhhc01hcmtlcnM6bi5oYXNNYXJrZXJzLGhhc1RleHQ6bi5oYXNU ZXh0LGlzQnViYmxlOm4uaXNCdWJibGUsYXR0cmlidXRlczp0KCIuL2F0dHJp YnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY3Jvc3NU cmFjZURlZmF1bHRzOnQoIi4vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiKSxjYWxj OnQoIi4vY2FsYyIpLmNhbGMsY3Jvc3NUcmFjZUNhbGM6dCgiLi9jcm9zc190 cmFjZV9jYWxjIiksYXJyYXlzVG9DYWxjZGF0YTp0KCIuL2FycmF5c190b19j YWxjZGF0YSIpLHBsb3Q6dCgiLi9wbG90IiksY29sb3JiYXI6dCgiLi9tYXJr ZXJfY29sb3JiYXIiKSxmb3JtYXRMYWJlbHM6dCgiLi9mb3JtYXRfbGFiZWxz Iiksc3R5bGU6dCgiLi9zdHlsZSIpLnN0eWxlLHN0eWxlT25TZWxlY3Q6dCgi Li9zdHlsZSIpLnN0eWxlT25TZWxlY3QsaG92ZXJQb2ludHM6dCgiLi9ob3Zl ciIpLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLGFuaW1hdGFibGU6ITAs bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InNjYXR0ZXIiLGJhc2VQbG90TW9k dWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJj YXJ0ZXNpYW4iLCJzdmciLCJzeW1ib2xzIiwiZXJyb3JCYXJzT0siLCJzaG93 TGVnZW5kIiwic2NhdHRlci1saWtlIiwiem9vbVNjYWxlIl0sbWV0YTp7fX19 LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo3NzYsIi4vYXJyYXlzX3RvX2Nh bGNkYXRhIjoxMTE5LCIuL2F0dHJpYnV0ZXMiOjExMjAsIi4vY2FsYyI6MTEy MSwiLi9jcm9zc190cmFjZV9jYWxjIjoxMTI1LCIuL2Nyb3NzX3RyYWNlX2Rl ZmF1bHRzIjoxMTI2LCIuL2RlZmF1bHRzIjoxMTI3LCIuL2Zvcm1hdF9sYWJl bHMiOjExMjksIi4vaG92ZXIiOjExMzEsIi4vbWFya2VyX2NvbG9yYmFyIjox MTM4LCIuL3Bsb3QiOjExNDAsIi4vc2VsZWN0IjoxMTQxLCIuL3N0eWxlIjox MTQzLCIuL3N1YnR5cGVzIjoxMTQ0fV0sMTEzMzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKS5pc0FycmF5T3JU eXBlZEFycmF5LGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hl bHBlcnMiKS5oYXNDb2xvcnNjYWxlLGk9dCgiLi4vLi4vY29tcG9uZW50cy9j b2xvcnNjYWxlL2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy LG8scyxsKXt2YXIgYz0odC5tYXJrZXJ8fHt9KS5jb2xvcjsocygibGluZS5j b2xvciIsciksYSh0LCJsaW5lIikpP2kodCxlLG8scyx7cHJlZml4OiJsaW5l LiIsY0xldHRlcjoiYyJ9KTpzKCJsaW5lLmNvbG9yIiwhbihjKSYmY3x8cik7 cygibGluZS53aWR0aCIpLChsfHx7fSkubm9EYXNofHxzKCJsaW5lLmRhc2gi KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjo2 MDIsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIjo2MDMs Ii4uLy4uL2xpYiI6NzE3fV0sMTEzNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIiks YT1uLkJBRE5VTSxpPW4uTE9HX0NMSVAsbz1pKy41LHM9aS0uNSxsPXQoIi4u Ly4uL2xpYiIpLGM9bC5zZWdtZW50c0ludGVyc2VjdCx1PWwuY29uc3RyYWlu LGg9dCgiLi9jb25zdGFudHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcixuLGksZixwLGQsZyx2LG0seSx4LGIsXyx3LGssVCxNLEEsUz1lLnhh eGlzLEU9ZS55YXhpcyxMPSJsb2ciPT09Uy50eXBlLEM9ImxvZyI9PT1FLnR5 cGUsUD1TLl9sZW5ndGgsTz1FLl9sZW5ndGgsej1lLmNvbm5lY3RHYXBzLEk9 ZS5iYXNlVG9sZXJhbmNlLEQ9ZS5zaGFwZSxSPSJsaW5lYXIiPT09RCxGPWUu ZmlsbCYmIm5vbmUiIT09ZS5maWxsLEI9W10sTj1oLm1pblRvbGVyYW5jZSxq PXQubGVuZ3RoLFY9bmV3IEFycmF5KGopLFU9MDtmdW5jdGlvbiBxKHIpe3Zh ciBuPXRbcl07aWYoIW4pcmV0dXJuITE7dmFyIGk9ZS5saW5lYXJpemVkP1Mu bDJwKG4ueCk6Uy5jMnAobi54KSxsPWUubGluZWFyaXplZD9FLmwycChuLnkp OkUuYzJwKG4ueSk7aWYoaT09PWEpe2lmKEwmJihpPVMuYzJwKG4ueCwhMCkp LGk9PT1hKXJldHVybiExO0MmJmw9PT1hJiYoaSo9TWF0aC5hYnMoUy5fbSpP KihTLl9tPjA/bzpzKS8oRS5fbSpQKihFLl9tPjA/bzpzKSkpKSxpKj0xZTN9 aWYobD09PWEpe2lmKEMmJihsPUUuYzJwKG4ueSwhMCkpLGw9PT1hKXJldHVy biExO2wqPTFlM31yZXR1cm5baSxsXX1mdW5jdGlvbiBIKHQsZSxyLG4pe3Zh ciBhPXItdCxpPW4tZSxvPS41LXQscz0uNS1lLGw9YSphK2kqaSxjPWEqbytp KnM7aWYoYz4wJiZjPGwpe3ZhciB1PW8qaS1zKmE7aWYodSp1PGwpcmV0dXJu ITB9fWZ1bmN0aW9uIEcodCxlKXt2YXIgcj10WzBdL1Asbj10WzFdL08sYT1N YXRoLm1heCgwLC1yLHItMSwtbixuLTEpO3JldHVybiBhJiZ2b2lkIDAhPT1N JiZIKHIsbixNLEEpJiYoYT0wKSxhJiZlJiZIKHIsbixlWzBdL1AsZVsxXS9P KSYmKGE9MCksKDEraC50b2xlcmFuY2VHcm93dGgqYSkqSX1mdW5jdGlvbiBZ KHQsZSl7dmFyIHI9dFswXS1lWzBdLG49dFsxXS1lWzFdO3JldHVybiBNYXRo LnNxcnQocipyK24qbil9dmFyIFcsWCxaLEosSyxRLCQsdHQ9aC5tYXhTY3Jl ZW5zQXdheSxldD0tUCp0dCxydD1QKigxK3R0KSxudD0tTyp0dCxhdD1PKigx K3R0KSxpdD1bW2V0LG50LHJ0LG50XSxbcnQsbnQscnQsYXRdLFtydCxhdCxl dCxhdF0sW2V0LGF0LGV0LG50XV07ZnVuY3Rpb24gb3QodCl7aWYodFswXTxl dHx8dFswXT5ydHx8dFsxXTxudHx8dFsxXT5hdClyZXR1cm5bdSh0WzBdLGV0 LHJ0KSx1KHRbMV0sbnQsYXQpXX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiB0 WzBdPT09ZVswXSYmKHRbMF09PT1ldHx8dFswXT09PXJ0KXx8KHRbMV09PT1l WzFdJiYodFsxXT09PW50fHx0WzFdPT09YXQpfHx2b2lkIDApfWZ1bmN0aW9u IGx0KHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24obixhKXt2YXIgaT1vdChuKSxv PW90KGEpLHM9W107aWYoaSYmbyYmc3QoaSxvKSlyZXR1cm4gcztpJiZzLnB1 c2goaSksbyYmcy5wdXNoKG8pO3ZhciBjPTIqbC5jb25zdHJhaW4oKG5bdF0r YVt0XSkvMixlLHIpLSgoaXx8bilbdF0rKG98fGEpW3RdKTtjJiYoKGkmJm8/ Yz4wPT1pW3RdPm9bdF0/aTpvOml8fG8pW3RdKz1jKTtyZXR1cm4gc319ZnVu Y3Rpb24gY3QodCl7dmFyIGU9dFswXSxyPXRbMV0sbj1lPT09VltVLTFdWzBd LGE9cj09PVZbVS0xXVsxXTtpZighbnx8IWEpaWYoVT4xKXt2YXIgaT1lPT09 VltVLTJdWzBdLG89cj09PVZbVS0yXVsxXTtuJiYoZT09PWV0fHxlPT09cnQp JiZpP28/VS0tOlZbVS0xXT10OmEmJihyPT09bnR8fHI9PT1hdCkmJm8/aT9V LS06VltVLTFdPXQ6VltVKytdPXR9ZWxzZSBWW1UrK109dH1mdW5jdGlvbiB1 dCh0KXtWW1UtMV1bMF0hPT10WzBdJiZWW1UtMV1bMV0hPT10WzFdJiZjdChb WixKXSksY3QodCksSz1udWxsLFo9Sj0wfWZ1bmN0aW9uIGh0KHQpe2lmKE09 dFswXS9QLEE9dFsxXS9PLFc9dFswXTxldD9ldDp0WzBdPnJ0P3J0OjAsWD10 WzFdPG50P250OnRbMV0+YXQ/YXQ6MCxXfHxYKXtpZihVKWlmKEspe3ZhciBl PSQoSyx0KTtlLmxlbmd0aD4xJiYodXQoZVswXSksVltVKytdPWVbMV0pfWVs c2UgUT0kKFZbVS0xXSx0KVswXSxWW1UrK109UTtlbHNlIFZbVSsrXT1bV3x8 dFswXSxYfHx0WzFdXTt2YXIgcj1WW1UtMV07VyYmWCYmKHJbMF0hPT1XfHxy WzFdIT09WCk/KEsmJihaIT09VyYmSiE9PVg/Y3QoWiYmSj8obj1LLGk9KGE9 dClbMF0tblswXSxvPShhWzFdLW5bMV0pL2ksKG5bMV0qYVswXS1hWzFdKm5b MF0pL2k+MD9bbz4wP2V0OnJ0LGF0XTpbbz4wP3J0OmV0LG50XSk6W1p8fFcs Snx8WF0pOlomJkomJmN0KFtaLEpdKSksY3QoW1csWF0pKTpaLVcmJkotWCYm Y3QoW1d8fFosWHx8Sl0pLEs9dCxaPVcsSj1YfWVsc2UgSyYmdXQoJChLLHQp WzBdKSxWW1UrK109dDt2YXIgbixhLGksb31mb3IoImxpbmVhciI9PT1EfHwi c3BsaW5lIj09PUQ/JD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPTAs YT0wO2E8NDthKyspe3ZhciBpPWl0W2FdLG89Yyh0WzBdLHRbMV0sZVswXSxl WzFdLGlbMF0saVsxXSxpWzJdLGlbM10pO28mJighbnx8TWF0aC5hYnMoby54 LXJbMF1bMF0pPjF8fE1hdGguYWJzKG8ueS1yWzBdWzFdKT4xKSYmKG89W28u eCxvLnldLG4mJlkobyx0KTxZKHJbMF0sdCk/ci51bnNoaWZ0KG8pOnIucHVz aChvKSxuKyspfXJldHVybiByfToiaHYiPT09RHx8InZoIj09PUQ/JD1mdW5j dGlvbih0LGUpe3ZhciByPVtdLG49b3QodCksYT1vdChlKTtyZXR1cm4gbiYm YSYmc3QobixhKT9yOihuJiZyLnB1c2gobiksYSYmci5wdXNoKGEpLHIpfToi aHZoIj09PUQ/JD1sdCgwLGV0LHJ0KToidmh2Ij09PUQmJigkPWx0KDEsbnQs YXQpKSxyPTA7cjxqO3IrKylpZihuPXEocikpe2ZvcihVPTAsSz1udWxsLGh0 KG4pLHIrKztyPGo7cisrKXtpZighKGY9cShyKSkpe2lmKHopY29udGludWU7 YnJlYWt9aWYoUiYmZS5zaW1wbGlmeSl7dmFyIGZ0PXEocisxKTtpZih5PVko ZixuKSxGJiYoMD09PVV8fFU9PT1qLTEpfHwhKHk8RyhmLGZ0KSpOKSl7Zm9y KHY9WyhmWzBdLW5bMF0pL3ksKGZbMV0tblsxXSkveV0scD1uLHg9eSxiPXc9 az0wLGc9ITEsaT1mLHIrKztyPHQubGVuZ3RoO3IrKyl7aWYoZD1mdCxmdD1x KHIrMSksIWQpe2lmKHopY29udGludWU7YnJlYWt9aWYoVD0obT1bZFswXS1u WzBdLGRbMV0tblsxXV0pWzBdKnZbMV0tbVsxXSp2WzBdLHc9TWF0aC5taW4o dyxUKSwoaz1NYXRoLm1heChrLFQpKS13PkcoZCxmdCkpYnJlYWs7aT1kLChf PW1bMF0qdlswXSttWzFdKnZbMV0pPng/KHg9XyxmPWQsZz0hMSk6XzxiJiYo Yj1fLHA9ZCxnPSEwKX1pZihnPyhodChmKSxpIT09cCYmaHQocCkpOihwIT09 biYmaHQocCksaSE9PWYmJmh0KGYpKSxodChpKSxyPj10Lmxlbmd0aHx8IWQp YnJlYWs7aHQoZCksbj1kfX1lbHNlIGh0KGYpfUsmJmN0KFtafHxLWzBdLEp8 fEtbMV1dKSxCLnB1c2goVi5zbGljZSgwLFUpKX1yZXR1cm4gQn19LHsiLi4v Li4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywi Li9jb25zdGFudHMiOjExMjR9XSwxMTM1OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7InNwbGluZSI9 PT1yKCJsaW5lLnNoYXBlIikmJnIoImxpbmUuc21vb3RoaW5nIil9fSx7fV0s MTEzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17dG9u ZXh0eDoxLHRvbmV4dHk6MSx0b25leHQ6MX07ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyKXt2YXIgYSxpLG8scyxsLGM9e30sdT0hMSxoPS0xLGY9MCxwPS0x O2ZvcihpPTA7aTxyLmxlbmd0aDtpKyspKG89KGE9cltpXVswXS50cmFjZSku c3RhY2tncm91cHx8IiIpP28gaW4gYz9sPWNbb106KGw9Y1tvXT1mLGYrKyk6 YS5maWxsIGluIG4mJnA+PTA/bD1wOihsPXA9ZixmKyspLGw8aCYmKHU9ITAp LGEuX2dyb3VwSW5kZXg9aD1sO3ZhciBkPXIuc2xpY2UoKTt1JiZkLnNvcnQo ZnVuY3Rpb24odCxlKXt2YXIgcj10WzBdLnRyYWNlLG49ZVswXS50cmFjZTty ZXR1cm4gci5fZ3JvdXBJbmRleC1uLl9ncm91cEluZGV4fHxyLmluZGV4LW4u aW5kZXh9KTt2YXIgZz17fTtmb3IoaT0wO2k8ZC5sZW5ndGg7aSsrKW89KGE9 ZFtpXVswXS50cmFjZSkuc3RhY2tncm91cHx8IiIsITA9PT1hLnZpc2libGU/ KGEuX25leHR0cmFjZT1udWxsLGEuZmlsbCBpbiBuJiYocz1nW29dLGEuX3By ZXZ0cmFjZT1zfHxudWxsLHMmJihzLl9uZXh0dHJhY2U9YSkpLGEuX293bmZp bGw9YS5maWxsJiYoInRvemVybyI9PT1hLmZpbGwuc3Vic3RyKDAsNil8fCJ0 b3NlbGYiPT09YS5maWxsfHwidG8iPT09YS5maWxsLnN1YnN0cigwLDIpJiYh YS5fcHJldnRyYWNlKSxnW29dPWEpOmEuX3ByZXZ0cmFjZT1hLl9uZXh0dHJh Y2U9YS5fb3duZmlsbD1udWxsO3JldHVybiBkfX0se31dLDExMzc6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVy aWMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXJrZXIscj1l LnNpemVyZWZ8fDEsYT1lLnNpemVtaW58fDAsaT0iYXJlYSI9PT1lLnNpemVt b2RlP2Z1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQodC9yKX06ZnVuY3Rp b24odCl7cmV0dXJuIHQvcn07cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPWko dC8yKTtyZXR1cm4gbihlKSYmZT4wP01hdGgubWF4KGUsYSk6MH19fSx7ImZh c3QtaXNudW1lcmljIjoyMjh9XSwxMTM4OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz17Y29udGFpbmVyOiJtYXJrZXIiLG1pbjoi Y21pbiIsbWF4OiJjbWF4In19LHt9XSwxMTM5OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3Ii KSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIiku aGFzQ29sb3JzY2FsZSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2Fs ZS9kZWZhdWx0cyIpLG89dCgiLi9zdWJ0eXBlcyIpO2UuZXhwb3J0cz1mdW5j dGlvbih0LGUscixzLGwsYyl7dmFyIHU9by5pc0J1YmJsZSh0KSxoPSh0Lmxp bmV8fHt9KS5jb2xvcjsoYz1jfHx7fSxoJiYocj1oKSxsKCJtYXJrZXIuc3lt Ym9sIiksbCgibWFya2VyLm9wYWNpdHkiLHU/Ljc6MSksbCgibWFya2VyLnNp emUiKSxsKCJtYXJrZXIuY29sb3IiLHIpLGEodCwibWFya2VyIikmJmkodCxl LHMsbCx7cHJlZml4OiJtYXJrZXIuIixjTGV0dGVyOiJjIn0pLGMubm9TZWxl Y3R8fChsKCJzZWxlY3RlZC5tYXJrZXIuY29sb3IiKSxsKCJ1bnNlbGVjdGVk Lm1hcmtlci5jb2xvciIpLGwoInNlbGVjdGVkLm1hcmtlci5zaXplIiksbCgi dW5zZWxlY3RlZC5tYXJrZXIuc2l6ZSIpKSxjLm5vTGluZXx8KGwoIm1hcmtl ci5saW5lLmNvbG9yIixoJiYhQXJyYXkuaXNBcnJheShoKSYmZS5tYXJrZXIu Y29sb3IhPT1oP2g6dT9uLmJhY2tncm91bmQ6bi5kZWZhdWx0TGluZSksYSh0 LCJtYXJrZXIubGluZSIpJiZpKHQsZSxzLGwse3ByZWZpeDoibWFya2VyLmxp bmUuIixjTGV0dGVyOiJjIn0pLGwoIm1hcmtlci5saW5lLndpZHRoIix1PzE6 MCkpLHUmJihsKCJtYXJrZXIuc2l6ZXJlZiIpLGwoIm1hcmtlci5zaXplbWlu IiksbCgibWFya2VyLnNpemVtb2RlIikpLGMuZ3JhZGllbnQpJiYoIm5vbmUi IT09bCgibWFya2VyLmdyYWRpZW50LnR5cGUiKSYmbCgibWFya2VyLmdyYWRp ZW50LmNvbG9yIikpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIs Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6NjAyLCIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyI6NjAzLCIuL3N1 YnR5cGVzIjoxMTQ0fV0sMTE0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQo Ii4uLy4uL2xpYiIpLG89aS5lbnN1cmVTaW5nbGUscz1pLmlkZW50aXR5LGw9 dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksYz10KCIuL3N1YnR5cGVz IiksdT10KCIuL2xpbmVfcG9pbnRzIiksaD10KCIuL2xpbmtfdHJhY2VzIiks Zj10KCIuLi8uLi9saWIvcG9seWdvbiIpLnRlc3RlcjtmdW5jdGlvbiBwKHQs ZSxyLGgscCxkLGcpe3ZhciB2OyFmdW5jdGlvbih0LGUscixhLG8pe3ZhciBz PXIueGF4aXMsbD1yLnlheGlzLHU9bi5leHRlbnQoaS5zaW1wbGVNYXAocy5y YW5nZSxzLnIyYykpLGg9bi5leHRlbnQoaS5zaW1wbGVNYXAobC5yYW5nZSxs LnIyYykpLGY9YVswXS50cmFjZTtpZighYy5oYXNNYXJrZXJzKGYpKXJldHVy bjt2YXIgcD1mLm1hcmtlci5tYXhkaXNwbGF5ZWQ7aWYoMD09PXApcmV0dXJu O3ZhciBkPWEuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng+PXVbMF0m JnQueDw9dVsxXSYmdC55Pj1oWzBdJiZ0Lnk8PWhbMV19KSxnPU1hdGguY2Vp bChkLmxlbmd0aC9wKSx2PTA7by5mb3JFYWNoKGZ1bmN0aW9uKHQscil7dmFy IG49dFswXS50cmFjZTtjLmhhc01hcmtlcnMobikmJm4ubWFya2VyLm1heGRp c3BsYXllZD4wJiZyPGUmJnYrK30pO3ZhciBtPU1hdGgucm91bmQodipnLzMr TWF0aC5mbG9vcih2LzMpKmcvNy4xKTthLmZvckVhY2goZnVuY3Rpb24odCl7 ZGVsZXRlIHQudmlzfSksZC5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7MD09PU1h dGgucm91bmQoKGUrbSklZykmJih0LnZpcz0hMCl9KX0oMCxlLHIsaCxwKTt2 YXIgbT0hIWcmJmcuZHVyYXRpb24+MDtmdW5jdGlvbiB5KHQpe3JldHVybiBt P3QudHJhbnNpdGlvbigpOnR9dmFyIHg9ci54YXhpcyxiPXIueWF4aXMsXz1o WzBdLnRyYWNlLHc9Xy5saW5lLGs9bi5zZWxlY3QoZCksVD1vKGssImciLCJl cnJvcmJhcnMiKSxNPW8oaywiZyIsImxpbmVzIiksQT1vKGssImciLCJwb2lu dHMiKSxTPW8oaywiZyIsInRleHQiKTtpZihhLmdldENvbXBvbmVudE1ldGhv ZCgiZXJyb3JiYXJzIiwicGxvdCIpKHQsVCxyLGcpLCEwPT09Xy52aXNpYmxl KXt2YXIgRSxMO3koaykuc3R5bGUoIm9wYWNpdHkiLF8ub3BhY2l0eSk7dmFy IEM9Xy5maWxsLmNoYXJBdChfLmZpbGwubGVuZ3RoLTEpOyJ4IiE9PUMmJiJ5 IiE9PUMmJihDPSIiKSxoWzBdW3IuaXNSYW5nZVBsb3Q/Im5vZGVSYW5nZVBs b3QzIjoibm9kZTMiXT1rO3ZhciBQLE8sej0iIixJPVtdLEQ9Xy5fcHJldnRy YWNlO0QmJih6PUQuX3ByZXZSZXZwYXRofHwiIixMPUQuX25leHRGaWxsLEk9 RC5fcG9seWdvbnMpO3ZhciBSLEYsQixOLGosVixVLHE9IiIsSD0iIixHPVtd LFk9aS5ub29wO2lmKEU9Xy5fb3duRmlsbCxjLmhhc0xpbmVzKF8pfHwibm9u ZSIhPT1fLmZpbGwpe2ZvcihMJiZMLmRhdHVtKGgpLC0xIT09WyJodiIsInZo IiwiaHZoIiwidmh2Il0uaW5kZXhPZih3LnNoYXBlKT8oUj1sLnN0ZXBzKHcu c2hhcGUpLEY9bC5zdGVwcyh3LnNoYXBlLnNwbGl0KCIiKS5yZXZlcnNlKCku am9pbigiIikpKTpSPUY9InNwbGluZSI9PT13LnNoYXBlP2Z1bmN0aW9uKHQp e3ZhciBlPXRbdC5sZW5ndGgtMV07cmV0dXJuIHQubGVuZ3RoPjEmJnRbMF1b MF09PT1lWzBdJiZ0WzBdWzFdPT09ZVsxXT9sLnNtb290aGNsb3NlZCh0LnNs aWNlKDEpLHcuc21vb3RoaW5nKTpsLnNtb290aG9wZW4odCx3LnNtb290aGlu Zyl9OmZ1bmN0aW9uKHQpe3JldHVybiJNIit0LmpvaW4oIkwiKX0sQj1mdW5j dGlvbih0KXtyZXR1cm4gRih0LnJldmVyc2UoKSl9LEc9dShoLHt4YXhpczp4 LHlheGlzOmIsY29ubmVjdEdhcHM6Xy5jb25uZWN0Z2FwcyxiYXNlVG9sZXJh bmNlOk1hdGgubWF4KHcud2lkdGh8fDEsMykvNCxzaGFwZTp3LnNoYXBlLHNp bXBsaWZ5Oncuc2ltcGxpZnksZmlsbDpfLmZpbGx9KSxVPV8uX3BvbHlnb25z PW5ldyBBcnJheShHLmxlbmd0aCksdj0wO3Y8Ry5sZW5ndGg7disrKV8uX3Bv bHlnb25zW3ZdPWYoR1t2XSk7Ry5sZW5ndGgmJihOPUdbMF1bMF0sVj0oaj1H W0cubGVuZ3RoLTFdKVtqLmxlbmd0aC0xXSksWT1mdW5jdGlvbih0KXtyZXR1 cm4gZnVuY3Rpb24oZSl7aWYoUD1SKGUpLE89QihlKSxxP0M/KHErPSJMIitQ LnN1YnN0cigxKSxIPU8rIkwiK0guc3Vic3RyKDEpKToocSs9IloiK1AsSD1P KyJaIitIKToocT1QLEg9TyksYy5oYXNMaW5lcyhfKSYmZS5sZW5ndGg+MSl7 dmFyIHI9bi5zZWxlY3QodGhpcyk7aWYoci5kYXR1bShoKSx0KXkoci5zdHls ZSgib3BhY2l0eSIsMCkuYXR0cigiZCIsUCkuY2FsbChsLmxpbmVHcm91cFN0 eWxlKSkuc3R5bGUoIm9wYWNpdHkiLDEpO2Vsc2V7dmFyIGE9eShyKTthLmF0 dHIoImQiLFApLGwuc2luZ2xlTGluZVN0eWxlKGgsYSl9fX19fXZhciBXPU0u c2VsZWN0QWxsKCIuanMtbGluZSIpLmRhdGEoRyk7eShXLmV4aXQoKSkuc3R5 bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpLFcuZWFjaChZKCExKSksVy5lbnRl cigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImpzLWxpbmUiLCEwKS5zdHls ZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmNhbGwo bC5saW5lR3JvdXBTdHlsZSkuZWFjaChZKCEwKSksbC5zZXRDbGlwVXJsKFcs ci5sYXllckNsaXBJZCx0KSxHLmxlbmd0aD8oRT8oRS5kYXR1bShoKSxOJiZW JiYoQz8oInkiPT09Qz9OWzFdPVZbMV09Yi5jMnAoMCwhMCk6IngiPT09QyYm KE5bMF09VlswXT14LmMycCgwLCEwKSkseShFKS5hdHRyKCJkIiwiTSIrVisi TCIrTisiTCIrcS5zdWJzdHIoMSkpLmNhbGwobC5zaW5nbGVGaWxsU3R5bGUp KTp5KEUpLmF0dHIoImQiLHErIloiKS5jYWxsKGwuc2luZ2xlRmlsbFN0eWxl KSkpOkwmJigidG9uZXh0Ij09PV8uZmlsbC5zdWJzdHIoMCw2KSYmcSYmej8o InRvbmV4dCI9PT1fLmZpbGw/eShMKS5hdHRyKCJkIixxKyJaIit6KyJaIiku Y2FsbChsLnNpbmdsZUZpbGxTdHlsZSk6eShMKS5hdHRyKCJkIixxKyJMIit6 LnN1YnN0cigxKSsiWiIpLmNhbGwobC5zaW5nbGVGaWxsU3R5bGUpLF8uX3Bv bHlnb25zPV8uX3BvbHlnb25zLmNvbmNhdChJKSk6KFooTCksXy5fcG9seWdv bnM9bnVsbCkpLF8uX3ByZXZSZXZwYXRoPUgsXy5fcHJldlBvbHlnb25zPVUp OihFP1ooRSk6TCYmWihMKSxfLl9wb2x5Z29ucz1fLl9wcmV2UmV2cGF0aD1f Ll9wcmV2UG9seWdvbnM9bnVsbCksQS5kYXR1bShoKSxTLmRhdHVtKGgpLGZ1 bmN0aW9uKGUsYSxpKXt2YXIgbyx1PWlbMF0udHJhY2UsaD1jLmhhc01hcmtl cnModSksZj1jLmhhc1RleHQodSkscD10dCh1KSxkPWV0LGc9ZXQ7aWYoaHx8 Zil7dmFyIHY9cyxfPXUuc3RhY2tncm91cCx3PV8mJiJpbmZlciB6ZXJvIj09 PXQuX2Z1bGxMYXlvdXQuX3NjYXR0ZXJTdGFja09wdHNbeC5faWQrYi5faWRd W19dLnN0YWNrZ2Fwczt1Lm1hcmtlci5tYXhkaXNwbGF5ZWR8fHUuX25lZWRz Q3VsbD92PXc/SzpKOl8mJiF3JiYodj1RKSxoJiYoZD12KSxmJiYoZz12KX12 YXIgayxUPShvPWUuc2VsZWN0QWxsKCJwYXRoLnBvaW50IikuZGF0YShkLHAp KS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoInBvaW50IiwhMCk7 bSYmVC5jYWxsKGwucG9pbnRTdHlsZSx1LHQpLmNhbGwobC50cmFuc2xhdGVQ b2ludHMseCxiKS5zdHlsZSgib3BhY2l0eSIsMCkudHJhbnNpdGlvbigpLnN0 eWxlKCJvcGFjaXR5IiwxKSxvLm9yZGVyKCksaCYmKGs9bC5tYWtlUG9pbnRT dHlsZUZucyh1KSksby5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPW4uc2VsZWN0 KHRoaXMpLGk9eShhKTtsLnRyYW5zbGF0ZVBvaW50KGUsaSx4LGIpPyhsLnNp bmdsZVBvaW50U3R5bGUoZSxpLHUsayx0KSxyLmxheWVyQ2xpcElkJiZsLmhp ZGVPdXRzaWRlUmFuZ2VQb2ludChlLGkseCxiLHUueGNhbGVuZGFyLHUueWNh bGVuZGFyKSx1LmN1c3RvbWRhdGEmJmEuY2xhc3NlZCgicGxvdGx5LWN1c3Rv bWRhdGEiLG51bGwhPT1lLmRhdGEmJnZvaWQgMCE9PWUuZGF0YSkpOmkucmVt b3ZlKCl9KSxtP28uZXhpdCgpLnRyYW5zaXRpb24oKS5zdHlsZSgib3BhY2l0 eSIsMCkucmVtb3ZlKCk6by5leGl0KCkucmVtb3ZlKCksKG89YS5zZWxlY3RB bGwoImciKS5kYXRhKGcscCkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3Nl ZCgidGV4dHBvaW50IiwhMCkuYXBwZW5kKCJ0ZXh0Iiksby5vcmRlcigpLG8u ZWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKSxhPXkoZS5z ZWxlY3QoInRleHQiKSk7bC50cmFuc2xhdGVQb2ludCh0LGEseCxiKT9yLmxh eWVyQ2xpcElkJiZsLmhpZGVPdXRzaWRlUmFuZ2VQb2ludCh0LGUseCxiLHUu eGNhbGVuZGFyLHUueWNhbGVuZGFyKTplLnJlbW92ZSgpfSksby5zZWxlY3RB bGwoInRleHQiKS5jYWxsKGwudGV4dFBvaW50U3R5bGUsdSx0KS5lYWNoKGZ1 bmN0aW9uKHQpe3ZhciBlPXguYzJwKHQueCkscj1iLmMycCh0LnkpO24uc2Vs ZWN0KHRoaXMpLnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLmVhY2goZnVuY3Rp b24oKXt5KG4uc2VsZWN0KHRoaXMpKS5hdHRyKHt4OmUseTpyfSl9KX0pLG8u ZXhpdCgpLnJlbW92ZSgpfShBLFMsaCk7dmFyIFg9ITE9PT1fLmNsaXBvbmF4 aXM/bnVsbDpyLmxheWVyQ2xpcElkO2wuc2V0Q2xpcFVybChBLFgsdCksbC5z ZXRDbGlwVXJsKFMsWCx0KX1mdW5jdGlvbiBaKHQpe3kodCkuYXR0cigiZCIs Ik0wLDBaIil9ZnVuY3Rpb24gSih0KXtyZXR1cm4gdC5maWx0ZXIoZnVuY3Rp b24odCl7cmV0dXJuIXQuZ2FwJiZ0LnZpc30pfWZ1bmN0aW9uIEsodCl7cmV0 dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZpc30pfWZ1bmN0 aW9uIFEodCl7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiF0 LmdhcH0pfWZ1bmN0aW9uICQodCl7cmV0dXJuIHQuaWR9ZnVuY3Rpb24gdHQo dCl7aWYodC5pZHMpcmV0dXJuICR9ZnVuY3Rpb24gZXQoKXtyZXR1cm4hMX19 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEsaSxjKXt2YXIgdSxmLGQ9IWks Zz0hIWkmJmkuZHVyYXRpb24+MCx2PWgodCxlLHIpOygodT1hLnNlbGVjdEFs bCgiZy50cmFjZSIpLmRhdGEodixmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50 cmFjZS51aWR9KSkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs ZnVuY3Rpb24odCl7cmV0dXJuInRyYWNlIHNjYXR0ZXIgdHJhY2UiK3RbMF0u dHJhY2UudWlkfSkuc3R5bGUoInN0cm9rZS1taXRlcmxpbWl0IiwyKSx1Lm9y ZGVyKCksZnVuY3Rpb24odCxlLHIpe2UuZWFjaChmdW5jdGlvbihlKXt2YXIg YT1vKG4uc2VsZWN0KHRoaXMpLCJnIiwiZmlsbHMiKTtsLnNldENsaXBVcmwo YSxyLmxheWVyQ2xpcElkLHQpO3ZhciBpPWVbMF0udHJhY2UsYz1bXTtpLl9v d25maWxsJiZjLnB1c2goIl9vd25GaWxsIiksaS5fbmV4dHRyYWNlJiZjLnB1 c2goIl9uZXh0RmlsbCIpO3ZhciB1PWEuc2VsZWN0QWxsKCJnIikuZGF0YShj LHMpO3UuZW50ZXIoKS5hcHBlbmQoImciKSx1LmV4aXQoKS5lYWNoKGZ1bmN0 aW9uKHQpe2lbdF09bnVsbH0pLnJlbW92ZSgpLHUub3JkZXIoKS5lYWNoKGZ1 bmN0aW9uKHQpe2lbdF09byhuLnNlbGVjdCh0aGlzKSwicGF0aCIsImpzLWZp bGwiKX0pfSl9KHQsdSxlKSxnKT8oYyYmKGY9YygpKSxuLnRyYW5zaXRpb24o KS5kdXJhdGlvbihpLmR1cmF0aW9uKS5lYXNlKGkuZWFzaW5nKS5lYWNoKCJl bmQiLGZ1bmN0aW9uKCl7ZiYmZigpfSkuZWFjaCgiaW50ZXJydXB0IixmdW5j dGlvbigpe2YmJmYoKX0pLmVhY2goZnVuY3Rpb24oKXthLnNlbGVjdEFsbCgi Zy50cmFjZSIpLmVhY2goZnVuY3Rpb24ocixuKXtwKHQsbixlLHIsdix0aGlz LGkpfSl9KSk6dS5lYWNoKGZ1bmN0aW9uKHIsbil7cCh0LG4sZSxyLHYsdGhp cyxpKX0pO2QmJnUuZXhpdCgpLnJlbW92ZSgpLGEuc2VsZWN0QWxsKCJwYXRo Om5vdChbZF0pIikucmVtb3ZlKCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJh d2luZyI6NjEzLCIuLi8uLi9saWIiOjcxNywiLi4vLi4vbGliL3BvbHlnb24i OjcyOSwiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi9saW5lX3BvaW50cyI6MTEz NCwiLi9saW5rX3RyYWNlcyI6MTEzNiwiLi9zdWJ0eXBlcyI6MTE0NCxkMzox NjV9XSwxMTQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4vc3VidHlwZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cixhLGksbyxzPXQuY2QsbD10LnhheGlzLGM9dC55YXhpcyx1PVtdLGg9c1sw XS50cmFjZTtpZighbi5oYXNNYXJrZXJzKGgpJiYhbi5oYXNUZXh0KGgpKXJl dHVybltdO2lmKCExPT09ZSlmb3Iocj0wO3I8cy5sZW5ndGg7cisrKXNbcl0u c2VsZWN0ZWQ9MDtlbHNlIGZvcihyPTA7cjxzLmxlbmd0aDtyKyspYT1zW3Jd LGk9bC5jMnAoYS54KSxvPWMuYzJwKGEueSksbnVsbCE9PWEuaSYmZS5jb250 YWlucyhbaSxvXSwhMSxyLHQpPyh1LnB1c2goe3BvaW50TnVtYmVyOmEuaSx4 OmwuYzJkKGEueCkseTpjLmMyZChhLnkpfSksYS5zZWxlY3RlZD0xKTphLnNl bGVjdGVkPTA7cmV0dXJuIHV9fSx7Ii4vc3VidHlwZXMiOjExNDR9XSwxMTQy OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPVsib3JpZW50 YXRpb24iLCJncm91cG5vcm0iLCJzdGFja2dhcHMiXTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsYSl7dmFyIGk9ci5fc2NhdHRlclN0YWNrT3B0cyxvPWEo InN0YWNrZ3JvdXAiKTtpZihvKXt2YXIgcz1lLnhheGlzK2UueWF4aXMsbD1p W3NdO2x8fChsPWlbc109e30pO3ZhciBjPWxbb10sdT0hMTtjP2MudHJhY2Vz LnB1c2goZSk6KGM9bFtvXT17dHJhY2VJbmRpY2VzOltdLHRyYWNlczpbZV19 LHU9ITApO2Zvcih2YXIgaD17b3JpZW50YXRpb246ZS54JiYhZS55PyJoIjoi diJ9LGY9MDtmPG4ubGVuZ3RoO2YrKyl7dmFyIHA9bltmXSxkPXArIkZvdW5k IjtpZighY1tkXSl7dmFyIGc9dm9pZCAwIT09dFtwXSx2PSJvcmllbnRhdGlv biI9PT1wO2lmKChnfHx1KSYmKGNbcF09YShwLGhbcF0pLHYmJihjLmZpbGxE Zmx0PSJoIj09PWNbcF0/InRvbmV4dHgiOiJ0b25leHR5IiksZyYmKGNbZF09 ITAsIXUmJihkZWxldGUgYy50cmFjZXNbMF1bcF0sdikpKSlmb3IodmFyIG09 MDttPGMudHJhY2VzLmxlbmd0aC0xO20rKyl7dmFyIHk9Yy50cmFjZXNbbV07 eS5faW5wdXQuZmlsbCE9PXkuZmlsbCYmKHkuZmlsbD1jLmZpbGxEZmx0KX19 fXJldHVybiBjfX19LHt9XSwxMTQzOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Ry YXdpbmciKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5Iik7ZnVuY3Rpb24gbyh0LGUs cil7YS5wb2ludFN0eWxlKHQuc2VsZWN0QWxsKCJwYXRoLnBvaW50IiksZSxy KX1mdW5jdGlvbiBzKHQsZSxyKXthLnRleHRQb2ludFN0eWxlKHQuc2VsZWN0 QWxsKCJ0ZXh0IiksZSxyKX1lLmV4cG9ydHM9e3N0eWxlOmZ1bmN0aW9uKHQp e3ZhciBlPW4uc2VsZWN0KHQpLnNlbGVjdEFsbCgiZy50cmFjZS5zY2F0dGVy Iik7ZS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0u dHJhY2Uub3BhY2l0eX0pLGUuc2VsZWN0QWxsKCJnLnBvaW50cyIpLmVhY2go ZnVuY3Rpb24oZSl7byhuLnNlbGVjdCh0aGlzKSxlLnRyYWNlfHxlWzBdLnRy YWNlLHQpfSksZS5zZWxlY3RBbGwoImcudGV4dCIpLmVhY2goZnVuY3Rpb24o ZSl7cyhuLnNlbGVjdCh0aGlzKSxlLnRyYWNlfHxlWzBdLnRyYWNlLHQpfSks ZS5zZWxlY3RBbGwoImcudHJhY2UgcGF0aC5qcy1saW5lIikuY2FsbChhLmxp bmVHcm91cFN0eWxlKSxlLnNlbGVjdEFsbCgiZy50cmFjZSBwYXRoLmpzLWZp bGwiKS5jYWxsKGEuZmlsbEdyb3VwU3R5bGUpLGkuZ2V0Q29tcG9uZW50TWV0 aG9kKCJlcnJvcmJhcnMiLCJzdHlsZSIpKGUpfSxzdHlsZVBvaW50czpvLHN0 eWxlVGV4dDpzLHN0eWxlT25TZWxlY3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBu PWVbMF0udHJhY2U7bi5zZWxlY3RlZHBvaW50cz8oYS5zZWxlY3RlZFBvaW50 U3R5bGUoci5zZWxlY3RBbGwoInBhdGgucG9pbnQiKSxuKSxhLnNlbGVjdGVk VGV4dFN0eWxlKHIuc2VsZWN0QWxsKCJ0ZXh0IiksbikpOihvKHIsbix0KSxz KHIsbix0KSl9fX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywi Li4vLi4vcmVnaXN0cnkiOjg0NixkMzoxNjV9XSwxMTQ0OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhw b3J0cz17aGFzTGluZXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlzaWJsZSYm dC5tb2RlJiYtMSE9PXQubW9kZS5pbmRleE9mKCJsaW5lcyIpfSxoYXNNYXJr ZXJzOmZ1bmN0aW9uKHQpe3JldHVybiB0LnZpc2libGUmJih0Lm1vZGUmJi0x IT09dC5tb2RlLmluZGV4T2YoIm1hcmtlcnMiKXx8InNwbG9tIj09PXQudHlw ZSl9LGhhc1RleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlzaWJsZSYmdC5t b2RlJiYtMSE9PXQubW9kZS5pbmRleE9mKCJ0ZXh0Iil9LGlzQnViYmxlOmZ1 bmN0aW9uKHQpe3JldHVybiBuLmlzUGxhaW5PYmplY3QodC5tYXJrZXIpJiZu LmlzQXJyYXlPclR5cGVkQXJyYXkodC5tYXJrZXIuc2l6ZSl9fX0seyIuLi8u Li9saWIiOjcxN31dLDExNDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyLGEsaSl7aT1pfHx7fSxhKCJ0ZXh0cG9zaXRpb24iKSxuLmNvZXJjZUZv bnQoYSwidGV4dGZvbnQiLHIuZm9udCksaS5ub1NlbGVjdHx8KGEoInNlbGVj dGVkLnRleHRmb250LmNvbG9yIiksYSgidW5zZWxlY3RlZC50ZXh0Zm9udC5j b2xvciIpKX19LHsiLi4vLi4vbGliIjo3MTd9XSwxMTQ2OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgi Li4vLi4vcmVnaXN0cnkiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7 dmFyIG8scz1pKCJ4IiksbD1pKCJ5Iik7aWYoYS5nZXRDb21wb25lbnRNZXRo b2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUsWyJ4 IiwieSJdLHIpLHMpe3ZhciBjPW4ubWluUm93TGVuZ3RoKHMpO2w/bz1NYXRo Lm1pbihjLG4ubWluUm93TGVuZ3RoKGwpKToobz1jLGkoInkwIiksaSgiZHki KSl9ZWxzZXtpZighbClyZXR1cm4gMDtvPW4ubWluUm93TGVuZ3RoKGwpLGko IngwIiksaSgiZHgiKX1yZXR1cm4gZS5fbGVuZ3RoPW8sb319LHsiLi4vLi4v bGliIjo3MTcsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDZ9XSwxMTQ3OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvYXR0 cmlidXRlcyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0 dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0 ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbz10KCIuLi8uLi9wbG90cy90ZW1w bGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMscz10KCIuLi8u Li9wbG90cy9hdHRyaWJ1dGVzIiksbD10KCIuLi8uLi9jb25zdGFudHMvZ2wz ZF9kYXNoZXMiKSxjPXQoIi4uLy4uL2NvbnN0YW50cy9nbDNkX21hcmtlcnMi KSx1PXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGg9dCgiLi4v Li4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGY9bi5saW5l LHA9bi5tYXJrZXIsZD1wLmxpbmUsZz11KHt3aWR0aDpmLndpZHRoLGRhc2g6 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpPYmplY3Qua2V5cyhsKSxk Zmx0OiJzb2xpZCJ9fSxhKCJsaW5lIikpO3ZhciB2PWUuZXhwb3J0cz1oKHt4 Om4ueCx5Om4ueSx6Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sdGV4dDp1KHt9 LG4udGV4dCx7fSksdGV4dHRlbXBsYXRlOm8oe30se30pLGhvdmVydGV4dDp1 KHt9LG4uaG92ZXJ0ZXh0LHt9KSxob3ZlcnRlbXBsYXRlOmkoKSxtb2RlOnUo e30sbi5tb2RlLHtkZmx0OiJsaW5lcyttYXJrZXJzIn0pLHN1cmZhY2VheGlz Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6Wy0xLDAsMSwyXSxkZmx0 Oi0xfSxzdXJmYWNlY29sb3I6e3ZhbFR5cGU6ImNvbG9yIn0scHJvamVjdGlv bjp7eDp7c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sb3BhY2l0 eTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9LHNjYWxl Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxMCxkZmx0OjIvM319LHk6 e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LG9wYWNpdHk6e3Zh bFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxfSxzY2FsZTp7dmFs VHlwZToibnVtYmVyIixtaW46MCxtYXg6MTAsZGZsdDoyLzN9fSx6OntzaG93 Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxvcGFjaXR5Ont2YWxUeXBl OiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX0sc2NhbGU6e3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsbWF4OjEwLGRmbHQ6Mi8zfX19LGNvbm5lY3RnYXBz Om4uY29ubmVjdGdhcHMsbGluZTpnLG1hcmtlcjp1KHtzeW1ib2w6e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpPYmplY3Qua2V5cyhjKSxkZmx0OiJj aXJjbGUiLGFycmF5T2s6ITB9LHNpemU6dSh7fSxwLnNpemUse2RmbHQ6OH0p LHNpemVyZWY6cC5zaXplcmVmLHNpemVtaW46cC5zaXplbWluLHNpemVtb2Rl OnAuc2l6ZW1vZGUsb3BhY2l0eTp1KHt9LHAub3BhY2l0eSx7YXJyYXlPazoh MX0pLGNvbG9yYmFyOnAuY29sb3JiYXIsbGluZTp1KHt3aWR0aDp1KHt9LGQu d2lkdGgse2FycmF5T2s6ITF9KX0sYSgibWFya2VyLmxpbmUiKSl9LGEoIm1h cmtlciIpKSx0ZXh0cG9zaXRpb246dSh7fSxuLnRleHRwb3NpdGlvbix7ZGZs dDoidG9wIGNlbnRlciJ9KSx0ZXh0Zm9udDp7Y29sb3I6bi50ZXh0Zm9udC5j b2xvcixzaXplOm4udGV4dGZvbnQuc2l6ZSxmYW1pbHk6dSh7fSxuLnRleHRm b250LmZhbWlseSx7YXJyYXlPazohMX0pfSxob3ZlcmluZm86dSh7fSxzLmhv dmVyaW5mbyl9LCJjYWxjIiwibmVzdGVkIik7di54LmVkaXRUeXBlPXYueS5l ZGl0VHlwZT12LnouZWRpdFR5cGU9ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx7 Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTks Ii4uLy4uL2NvbnN0YW50cy9nbDNkX2Rhc2hlcyI6NjkwLCIuLi8uLi9jb25z dGFudHMvZ2wzZF9tYXJrZXJzIjo2OTEsIi4uLy4uL2xpYi9leHRlbmQiOjcw OCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90 cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJp YnV0ZXMiOjg0MSwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIwfV0sMTE0 ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9z Y2F0dGVyL2FycmF5c190b19jYWxjZGF0YSIpLGE9dCgiLi4vc2NhdHRlci9j b2xvcnNjYWxlX2NhbGMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cj1be3g6ITEseTohMSx0cmFjZTplLHQ6e319XTtyZXR1cm4gbihyLGUpLGEo dCxlKSxyfX0seyIuLi9zY2F0dGVyL2FycmF5c190b19jYWxjZGF0YSI6MTEx OSwiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjExMjN9XSwxMTQ5Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Jl Z2lzdHJ5Iik7ZnVuY3Rpb24gYSh0LGUscixhKXtpZighZXx8IWUudmlzaWJs ZSlyZXR1cm4gbnVsbDtmb3IodmFyIGk9bi5nZXRDb21wb25lbnRNZXRob2Qo ImVycm9yYmFycyIsIm1ha2VDb21wdXRlRXJyb3IiKShlKSxvPW5ldyBBcnJh eSh0Lmxlbmd0aCkscz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgbD1pKCt0W3Nd LHMpO2lmKCJsb2ciPT09YS50eXBlKXt2YXIgYz1hLmMybCh0W3NdKSx1PXRb c10tbFswXSxoPXRbc10rbFsxXTtpZihvW3NdPVsoYS5jMmwodSwhMCktYykq ciwoYS5jMmwoaCwhMCktYykqcl0sdT4wKXt2YXIgZj1hLmMybCh1KTthLl9s b3dlckxvZ0Vycm9yQm91bmR8fChhLl9sb3dlckxvZ0Vycm9yQm91bmQ9Ziks YS5fbG93ZXJFcnJvckJvdW5kPU1hdGgubWluKGEuX2xvd2VyTG9nRXJyb3JC b3VuZCxmKX19ZWxzZSBvW3NdPVstbFswXSpyLGxbMV0qcl19cmV0dXJuIG99 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1bYSh0LngsdC5lcnJv cl94LGVbMF0sci54YXhpcyksYSh0LnksdC5lcnJvcl95LGVbMV0sci55YXhp cyksYSh0LnosdC5lcnJvcl96LGVbMl0sci56YXhpcyldLGk9ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXSlyZXR1cm4g dFtlXS5sZW5ndGg7cmV0dXJuIDB9KG4pO2lmKDA9PT1pKXJldHVybiBudWxs O2Zvcih2YXIgbz1uZXcgQXJyYXkoaSkscz0wO3M8aTtzKyspe2Zvcih2YXIg bD1bWzAsMCwwXSxbMCwwLDBdXSxjPTA7YzwzO2MrKylpZihuW2NdKWZvcih2 YXIgdT0wO3U8Mjt1KyspbFt1XVtjXT1uW2NdW3NdW3VdO29bc109bH1yZXR1 cm4gb319LHsiLi4vLi4vcmVnaXN0cnkiOjg0Nn1dLDExNTA6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtbGluZTNkIiksYT10 KCJnbC1zY2F0dGVyM2QiKSxpPXQoImdsLWVycm9yM2QiKSxvPXQoImdsLW1l c2gzZCIpLHM9dCgiZGVsYXVuYXktdHJpYW5ndWxhdGUiKSxsPXQoIi4uLy4u L2xpYiIpLGM9dCgiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSIpLHU9dCgiLi4v Li4vbGliL2dsX2Zvcm1hdF9jb2xvciIpLmZvcm1hdENvbG9yLGg9dCgiLi4v c2NhdHRlci9tYWtlX2J1YmJsZV9zaXplX2Z1bmMiKSxmPXQoIi4uLy4uL2Nv bnN0YW50cy9nbDNkX2Rhc2hlcyIpLHA9dCgiLi4vLi4vY29uc3RhbnRzL2ds M2RfbWFya2VycyIpLGQ9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMi KSxnPXQoIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyIpLmFwcGVuZEFy cmF5UG9pbnRWYWx1ZSx2PXQoIi4vY2FsY19lcnJvcnMiKTtmdW5jdGlvbiBt KHQsZSl7dGhpcy5zY2VuZT10LHRoaXMudWlkPWUsdGhpcy5saW5lUGxvdD1u dWxsLHRoaXMuc2NhdHRlclBsb3Q9bnVsbCx0aGlzLmVycm9yQmFycz1udWxs LHRoaXMudGV4dE1hcmtlcnM9bnVsbCx0aGlzLmRlbGF1bmF5TWVzaD1udWxs LHRoaXMuY29sb3I9bnVsbCx0aGlzLm1vZGU9IiIsdGhpcy5kYXRhUG9pbnRz PVtdLHRoaXMuYXhlc0JvdW5kcz1bWy0xLzAsLTEvMCwtMS8wXSxbMS8wLDEv MCwxLzBdXSx0aGlzLnRleHRMYWJlbHM9bnVsbCx0aGlzLmRhdGE9bnVsbH12 YXIgeT1tLnByb3RvdHlwZTtmdW5jdGlvbiB4KHQpe3JldHVybiBudWxsPT10 PzA6dC5pbmRleE9mKCJsZWZ0Iik+LTE/LTE6dC5pbmRleE9mKCJyaWdodCIp Pi0xPzE6MH1mdW5jdGlvbiBiKHQpe3JldHVybiBudWxsPT10PzA6dC5pbmRl eE9mKCJ0b3AiKT4tMT8tMTp0LmluZGV4T2YoImJvdHRvbSIpPi0xPzE6MH1m dW5jdGlvbiBfKHQsZSl7cmV0dXJuIGUoNCp0KX1mdW5jdGlvbiB3KHQpe3Jl dHVybiBwW3RdfWZ1bmN0aW9uIGsodCxlLHIsbixhKXt2YXIgaT1udWxsO2lm KGwuaXNBcnJheU9yVHlwZWRBcnJheSh0KSl7aT1bXTtmb3IodmFyIG89MDtv PGU7bysrKXZvaWQgMD09PXRbb10/aVtvXT1uOmlbb109cih0W29dLGEpfWVs c2UgaT1yKHQsbC5pZGVudGl0eSk7cmV0dXJuIGl9ZnVuY3Rpb24gVCh0LGUp e3ZhciByLG4sYSxpLG8scyxmPVtdLHA9dC5mdWxsU2NlbmVMYXlvdXQsbT10 LmRhdGFTY2FsZSx5PXAueGF4aXMsVD1wLnlheGlzLE09cC56YXhpcyxBPWUu bWFya2VyLFM9ZS5saW5lLEU9ZS54fHxbXSxMPWUueXx8W10sQz1lLnp8fFtd LFA9RS5sZW5ndGgsTz1lLnhjYWxlbmRhcix6PWUueWNhbGVuZGFyLEk9ZS56 Y2FsZW5kYXI7Zm9yKG89MDtvPFA7bysrKXI9eS5kMmwoRVtvXSwwLE8pKm1b MF0sbj1ULmQybChMW29dLDAseikqbVsxXSxhPU0uZDJsKENbb10sMCxJKSpt WzJdLGZbb109W3IsbixhXTtpZihBcnJheS5pc0FycmF5KGUudGV4dCkpcz1l LnRleHQ7ZWxzZSBpZih2b2lkIDAhPT1lLnRleHQpZm9yKHM9bmV3IEFycmF5 KFApLG89MDtvPFA7bysrKXNbb109ZS50ZXh0O2Z1bmN0aW9uIEQodCxlKXt2 YXIgcj1wW3RdO3JldHVybiBkLnRpY2tUZXh0KHIsci5kMmwoZSksITApLnRl eHR9dmFyIFI9ZS50ZXh0dGVtcGxhdGU7aWYoUil7dmFyIEY9dC5mdWxsTGF5 b3V0Ll9kM2xvY2FsZSxCPUFycmF5LmlzQXJyYXkoUiksTj1CP01hdGgubWlu KFIubGVuZ3RoLFApOlAsaj1CP2Z1bmN0aW9uKHQpe3JldHVybiBSW3RdfTpm dW5jdGlvbigpe3JldHVybiBSfTtmb3Iocz1uZXcgQXJyYXkoTiksbz0wO288 TjtvKyspe3ZhciBWPXt4OkVbb10seTpMW29dLHo6Q1tvXX0sVT17eExhYmVs OkQoInhheGlzIixFW29dKSx5TGFiZWw6RCgieWF4aXMiLExbb10pLHpMYWJl bDpEKCJ6YXhpcyIsQ1tvXSl9LHE9e307ZyhxLGUsbyk7dmFyIEg9ZS5fbWV0 YXx8e307c1tvXT1sLnRleHR0ZW1wbGF0ZVN0cmluZyhqKG8pLFUsRixxLFYs SCl9fWlmKGk9e3Bvc2l0aW9uOmYsbW9kZTplLm1vZGUsdGV4dDpzfSwibGlu ZSJpbiBlJiYoaS5saW5lQ29sb3I9dShTLDEsUCksaS5saW5lV2lkdGg9Uy53 aWR0aCxpLmxpbmVEYXNoZXM9Uy5kYXNoKSwibWFya2VyImluIGUpe3ZhciBH PWgoZSk7aS5zY2F0dGVyQ29sb3I9dShBLDEsUCksaS5zY2F0dGVyU2l6ZT1r KEEuc2l6ZSxQLF8sMjAsRyksaS5zY2F0dGVyTWFya2VyPWsoQS5zeW1ib2ws UCx3LCJcdTI1Y2YiKSxpLnNjYXR0ZXJMaW5lV2lkdGg9QS5saW5lLndpZHRo LGkuc2NhdHRlckxpbmVDb2xvcj11KEEubGluZSwxLFApLGkuc2NhdHRlckFu Z2xlPTB9InRleHRwb3NpdGlvbiJpbiBlJiYoaS50ZXh0T2Zmc2V0PWZ1bmN0 aW9uKHQpe3ZhciBlPVswLDBdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZh ciByPTA7cjx0Lmxlbmd0aDtyKyspZVtyXT1bMCwwXSx0W3JdJiYoZVtyXVsw XT14KHRbcl0pLGVbcl1bMV09Yih0W3JdKSk7ZWxzZSBlWzBdPXgodCksZVsx XT1iKHQpO3JldHVybiBlfShlLnRleHRwb3NpdGlvbiksaS50ZXh0Q29sb3I9 dShlLnRleHRmb250LDEsUCksaS50ZXh0U2l6ZT1rKGUudGV4dGZvbnQuc2l6 ZSxQLGwuaWRlbnRpdHksMTIpLGkudGV4dEZvbnQ9ZS50ZXh0Zm9udC5mYW1p bHksaS50ZXh0QW5nbGU9MCk7dmFyIFk9WyJ4IiwieSIsInoiXTtmb3IoaS5w cm9qZWN0PVshMSwhMSwhMV0saS5wcm9qZWN0U2NhbGU9WzEsMSwxXSxpLnBy b2plY3RPcGFjaXR5PVsxLDEsMV0sbz0wO288MzsrK28pe3ZhciBXPWUucHJv amVjdGlvbltZW29dXTsoaS5wcm9qZWN0W29dPVcuc2hvdykmJihpLnByb2pl Y3RPcGFjaXR5W29dPVcub3BhY2l0eSxpLnByb2plY3RTY2FsZVtvXT1XLnNj YWxlKX1pLmVycm9yQm91bmRzPXYoZSxtLHApO3ZhciBYPWZ1bmN0aW9uKHQp e2Zvcih2YXIgZT1bMCwwLDBdLHI9W1swLDAsMF0sWzAsMCwwXSxbMCwwLDBd XSxuPVsxLDEsMV0sYT0wO2E8MzthKyspe3ZhciBpPXRbYV07aSYmITEhPT1p LmNvcHlfenN0eWxlJiYhMSE9PXRbMl0udmlzaWJsZSYmKGk9dFsyXSksaSYm aS52aXNpYmxlJiYoZVthXT1pLndpZHRoLzIsclthXT1jKGkuY29sb3IpLG5b YV09aS50aGlja25lc3MpfXJldHVybntjYXBTaXplOmUsY29sb3I6cixsaW5l V2lkdGg6bn19KFtlLmVycm9yX3gsZS5lcnJvcl95LGUuZXJyb3Jfel0pO3Jl dHVybiBpLmVycm9yQ29sb3I9WC5jb2xvcixpLmVycm9yTGluZVdpZHRoPVgu bGluZVdpZHRoLGkuZXJyb3JDYXBTaXplPVguY2FwU2l6ZSxpLmRlbGF1bmF5 QXhpcz1lLnN1cmZhY2VheGlzLGkuZGVsYXVuYXlDb2xvcj1jKGUuc3VyZmFj ZWNvbG9yKSxpfWZ1bmN0aW9uIE0odCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7 dmFyIGU9dFswXTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKHQ9ZSksInJn YigiK3Quc2xpY2UoMCwzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgu cm91bmQoMjU1KnQpfSkrIikifXJldHVybiBudWxsfXkuaGFuZGxlUGljaz1m dW5jdGlvbih0KXtpZih0Lm9iamVjdCYmKHQub2JqZWN0PT09dGhpcy5saW5l UGxvdHx8dC5vYmplY3Q9PT10aGlzLmRlbGF1bmF5TWVzaHx8dC5vYmplY3Q9 PT10aGlzLnRleHRNYXJrZXJzfHx0Lm9iamVjdD09PXRoaXMuc2NhdHRlclBs b3QpKXt2YXIgZT10LmluZGV4PXQuZGF0YS5pbmRleDtyZXR1cm4gdC5vYmpl Y3QuaGlnaGxpZ2h0JiZ0Lm9iamVjdC5oaWdobGlnaHQobnVsbCksdGhpcy5z Y2F0dGVyUGxvdCYmKHQub2JqZWN0PXRoaXMuc2NhdHRlclBsb3QsdGhpcy5z Y2F0dGVyUGxvdC5oaWdobGlnaHQodC5kYXRhKSksdC50ZXh0TGFiZWw9IiIs dGhpcy50ZXh0TGFiZWxzJiYoQXJyYXkuaXNBcnJheSh0aGlzLnRleHRMYWJl bHMpPyh0aGlzLnRleHRMYWJlbHNbZV18fDA9PT10aGlzLnRleHRMYWJlbHNb ZV0pJiYodC50ZXh0TGFiZWw9dGhpcy50ZXh0TGFiZWxzW2VdKTp0LnRleHRM YWJlbD10aGlzLnRleHRMYWJlbHMpLHQudHJhY2VDb29yZGluYXRlPVt0aGlz LmRhdGEueFtlXSx0aGlzLmRhdGEueVtlXSx0aGlzLmRhdGEueltlXV0sITB9 fSx5LnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZSxyLGwsYyx1PXRoaXMuc2Nl bmUuZ2xwbG90LmdsLGg9Zi5zb2xpZDt0aGlzLmRhdGE9dDt2YXIgcD1UKHRo aXMuc2NlbmUsdCk7Im1vZGUiaW4gcCYmKHRoaXMubW9kZT1wLm1vZGUpLCJs aW5lRGFzaGVzImluIHAmJnAubGluZURhc2hlcyBpbiBmJiYoaD1mW3AubGlu ZURhc2hlc10pLHRoaXMuY29sb3I9TShwLnNjYXR0ZXJDb2xvcil8fE0ocC5s aW5lQ29sb3IpLHRoaXMuZGF0YVBvaW50cz1wLnBvc2l0aW9uLGU9e2dsOnRo aXMuc2NlbmUuZ2xwbG90LmdsLHBvc2l0aW9uOnAucG9zaXRpb24sY29sb3I6 cC5saW5lQ29sb3IsbGluZVdpZHRoOnAubGluZVdpZHRofHwxLGRhc2hlczpo WzBdLGRhc2hTY2FsZTpoWzFdLG9wYWNpdHk6dC5vcGFjaXR5LGNvbm5lY3RH YXBzOnQuY29ubmVjdGdhcHN9LC0xIT09dGhpcy5tb2RlLmluZGV4T2YoImxp bmVzIik/dGhpcy5saW5lUGxvdD90aGlzLmxpbmVQbG90LnVwZGF0ZShlKToo dGhpcy5saW5lUGxvdD1uKGUpLHRoaXMubGluZVBsb3QuX3RyYWNlPXRoaXMs dGhpcy5zY2VuZS5nbHBsb3QuYWRkKHRoaXMubGluZVBsb3QpKTp0aGlzLmxp bmVQbG90JiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMubGluZVBs b3QpLHRoaXMubGluZVBsb3QuZGlzcG9zZSgpLHRoaXMubGluZVBsb3Q9bnVs bCk7dmFyIGQ9dC5vcGFjaXR5O2lmKHQubWFya2VyJiZ0Lm1hcmtlci5vcGFj aXR5JiYoZCo9dC5tYXJrZXIub3BhY2l0eSkscj17Z2w6dGhpcy5zY2VuZS5n bHBsb3QuZ2wscG9zaXRpb246cC5wb3NpdGlvbixjb2xvcjpwLnNjYXR0ZXJD b2xvcixzaXplOnAuc2NhdHRlclNpemUsZ2x5cGg6cC5zY2F0dGVyTWFya2Vy LG9wYWNpdHk6ZCxvcnRob2dyYXBoaWM6ITAsbGluZVdpZHRoOnAuc2NhdHRl ckxpbmVXaWR0aCxsaW5lQ29sb3I6cC5zY2F0dGVyTGluZUNvbG9yLHByb2pl Y3Q6cC5wcm9qZWN0LHByb2plY3RTY2FsZTpwLnByb2plY3RTY2FsZSxwcm9q ZWN0T3BhY2l0eTpwLnByb2plY3RPcGFjaXR5fSwtMSE9PXRoaXMubW9kZS5p bmRleE9mKCJtYXJrZXJzIik/dGhpcy5zY2F0dGVyUGxvdD90aGlzLnNjYXR0 ZXJQbG90LnVwZGF0ZShyKToodGhpcy5zY2F0dGVyUGxvdD1hKHIpLHRoaXMu c2NhdHRlclBsb3QuX3RyYWNlPXRoaXMsdGhpcy5zY2F0dGVyUGxvdC5oaWdo bGlnaHRTY2FsZT0xLHRoaXMuc2NlbmUuZ2xwbG90LmFkZCh0aGlzLnNjYXR0 ZXJQbG90KSk6dGhpcy5zY2F0dGVyUGxvdCYmKHRoaXMuc2NlbmUuZ2xwbG90 LnJlbW92ZSh0aGlzLnNjYXR0ZXJQbG90KSx0aGlzLnNjYXR0ZXJQbG90LmRp c3Bvc2UoKSx0aGlzLnNjYXR0ZXJQbG90PW51bGwpLGM9e2dsOnRoaXMuc2Nl bmUuZ2xwbG90LmdsLHBvc2l0aW9uOnAucG9zaXRpb24sZ2x5cGg6cC50ZXh0 LGNvbG9yOnAudGV4dENvbG9yLHNpemU6cC50ZXh0U2l6ZSxhbmdsZTpwLnRl eHRBbmdsZSxhbGlnbm1lbnQ6cC50ZXh0T2Zmc2V0LGZvbnQ6cC50ZXh0Rm9u dCxvcnRob2dyYXBoaWM6ITAsbGluZVdpZHRoOjAscHJvamVjdDohMSxvcGFj aXR5OnQub3BhY2l0eX0sdGhpcy50ZXh0TGFiZWxzPXQuaG92ZXJ0ZXh0fHx0 LnRleHQsLTEhPT10aGlzLm1vZGUuaW5kZXhPZigidGV4dCIpP3RoaXMudGV4 dE1hcmtlcnM/dGhpcy50ZXh0TWFya2Vycy51cGRhdGUoYyk6KHRoaXMudGV4 dE1hcmtlcnM9YShjKSx0aGlzLnRleHRNYXJrZXJzLl90cmFjZT10aGlzLHRo aXMudGV4dE1hcmtlcnMuaGlnaGxpZ2h0U2NhbGU9MSx0aGlzLnNjZW5lLmds cGxvdC5hZGQodGhpcy50ZXh0TWFya2VycykpOnRoaXMudGV4dE1hcmtlcnMm Jih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy50ZXh0TWFya2Vycyks dGhpcy50ZXh0TWFya2Vycy5kaXNwb3NlKCksdGhpcy50ZXh0TWFya2Vycz1u dWxsKSxsPXtnbDp0aGlzLnNjZW5lLmdscGxvdC5nbCxwb3NpdGlvbjpwLnBv c2l0aW9uLGNvbG9yOnAuZXJyb3JDb2xvcixlcnJvcjpwLmVycm9yQm91bmRz LGxpbmVXaWR0aDpwLmVycm9yTGluZVdpZHRoLGNhcFNpemU6cC5lcnJvckNh cFNpemUsb3BhY2l0eTp0Lm9wYWNpdHl9LHRoaXMuZXJyb3JCYXJzP3AuZXJy b3JCb3VuZHM/dGhpcy5lcnJvckJhcnMudXBkYXRlKGwpOih0aGlzLnNjZW5l LmdscGxvdC5yZW1vdmUodGhpcy5lcnJvckJhcnMpLHRoaXMuZXJyb3JCYXJz LmRpc3Bvc2UoKSx0aGlzLmVycm9yQmFycz1udWxsKTpwLmVycm9yQm91bmRz JiYodGhpcy5lcnJvckJhcnM9aShsKSx0aGlzLmVycm9yQmFycy5fdHJhY2U9 dGhpcyx0aGlzLnNjZW5lLmdscGxvdC5hZGQodGhpcy5lcnJvckJhcnMpKSxw LmRlbGF1bmF5QXhpcz49MCl7dmFyIGc9ZnVuY3Rpb24odCxlLHIpe3ZhciBu LGE9KHIrMSklMyxpPShyKzIpJTMsbz1bXSxsPVtdO2ZvcihuPTA7bjx0Lmxl bmd0aDsrK24pe3ZhciBjPXRbbl07IWlzTmFOKGNbYV0pJiZpc0Zpbml0ZShj W2FdKSYmIWlzTmFOKGNbaV0pJiZpc0Zpbml0ZShjW2ldKSYmKG8ucHVzaChb Y1thXSxjW2ldXSksbC5wdXNoKG4pKX12YXIgdT1zKG8pO2ZvcihuPTA7bjx1 Lmxlbmd0aDsrK24pZm9yKHZhciBoPXVbbl0sZj0wO2Y8aC5sZW5ndGg7Kytm KWhbZl09bFtoW2ZdXTtyZXR1cm57cG9zaXRpb25zOnQsY2VsbHM6dSxtZXNo Q29sb3I6ZX19KHAucG9zaXRpb24scC5kZWxhdW5heUNvbG9yLHAuZGVsYXVu YXlBeGlzKTtnLm9wYWNpdHk9dC5vcGFjaXR5LHRoaXMuZGVsYXVuYXlNZXNo P3RoaXMuZGVsYXVuYXlNZXNoLnVwZGF0ZShnKTooZy5nbD11LHRoaXMuZGVs YXVuYXlNZXNoPW8oZyksdGhpcy5kZWxhdW5heU1lc2guX3RyYWNlPXRoaXMs dGhpcy5zY2VuZS5nbHBsb3QuYWRkKHRoaXMuZGVsYXVuYXlNZXNoKSl9ZWxz ZSB0aGlzLmRlbGF1bmF5TWVzaCYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92 ZSh0aGlzLmRlbGF1bmF5TWVzaCksdGhpcy5kZWxhdW5heU1lc2guZGlzcG9z ZSgpLHRoaXMuZGVsYXVuYXlNZXNoPW51bGwpfSx5LmRpc3Bvc2U9ZnVuY3Rp b24oKXt0aGlzLmxpbmVQbG90JiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3Zl KHRoaXMubGluZVBsb3QpLHRoaXMubGluZVBsb3QuZGlzcG9zZSgpKSx0aGlz LnNjYXR0ZXJQbG90JiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMu c2NhdHRlclBsb3QpLHRoaXMuc2NhdHRlclBsb3QuZGlzcG9zZSgpKSx0aGlz LmVycm9yQmFycyYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLmVy cm9yQmFycyksdGhpcy5lcnJvckJhcnMuZGlzcG9zZSgpKSx0aGlzLnRleHRN YXJrZXJzJiYodGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMudGV4dE1h cmtlcnMpLHRoaXMudGV4dE1hcmtlcnMuZGlzcG9zZSgpKSx0aGlzLmRlbGF1 bmF5TWVzaCYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLmRlbGF1 bmF5TWVzaCksdGhpcy5kZWxhdW5heU1lc2guZGlzcG9zZSgpKX0sZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IG0odCxlLnVpZCk7cmV0dXJu IHIudXBkYXRlKGUpLHJ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVy cyI6NjI3LCIuLi8uLi9jb25zdGFudHMvZ2wzZF9kYXNoZXMiOjY5MCwiLi4v Li4vY29uc3RhbnRzL2dsM2RfbWFya2VycyI6NjkxLCIuLi8uLi9saWIiOjcx NywiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciI6NzE0LCIuLi8uLi9saWIv c3RyMnJnYmFycmF5Ijo3NDAsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVz Ijo3NjUsIi4uL3NjYXR0ZXIvbWFrZV9idWJibGVfc2l6ZV9mdW5jIjoxMTM3 LCIuL2NhbGNfZXJyb3JzIjoxMTQ5LCJkZWxhdW5heS10cmlhbmd1bGF0ZSI6 MTY3LCJnbC1lcnJvcjNkIjoyNTAsImdsLWxpbmUzZCI6MjU4LCJnbC1tZXNo M2QiOjI4MywiZ2wtc2NhdHRlcjNkIjozMDB9XSwxMTUxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5Iiks YT10KCIuLi8uLi9saWIiKSxpPXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxv PXQoIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIikscz10KCIuLi9zY2F0 dGVyL2xpbmVfZGVmYXVsdHMiKSxsPXQoIi4uL3NjYXR0ZXIvdGV4dF9kZWZh dWx0cyIpLGM9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyLHUpe2Z1bmN0aW9uIGgocixuKXtyZXR1cm4gYS5jb2VyY2UodCxl LGMscixuKX1pZihmdW5jdGlvbih0LGUscixhKXt2YXIgaT0wLG89cigieCIp LHM9cigieSIpLGw9cigieiIpO24uZ2V0Q29tcG9uZW50TWV0aG9kKCJjYWxl bmRhcnMiLCJoYW5kbGVUcmFjZURlZmF1bHRzIikodCxlLFsieCIsInkiLCJ6 Il0sYSksbyYmcyYmbCYmKGk9TWF0aC5taW4oby5sZW5ndGgscy5sZW5ndGgs bC5sZW5ndGgpLGUuX2xlbmd0aD1lLl94bGVuZ3RoPWUuX3lsZW5ndGg9ZS5f emxlbmd0aD1pKTtyZXR1cm4gaX0odCxlLGgsdSkpe2goInRleHQiKSxoKCJo b3ZlcnRleHQiKSxoKCJob3ZlcnRlbXBsYXRlIiksaCgibW9kZSIpLGkuaGFz TGluZXMoZSkmJihoKCJjb25uZWN0Z2FwcyIpLHModCxlLHIsdSxoKSksaS5o YXNNYXJrZXJzKGUpJiZvKHQsZSxyLHUsaCx7bm9TZWxlY3Q6ITB9KSxpLmhh c1RleHQoZSkmJihoKCJ0ZXh0dGVtcGxhdGUiKSxsKHQsZSx1LGgse25vU2Vs ZWN0OiEwfSkpO3ZhciBmPShlLmxpbmV8fHt9KS5jb2xvcixwPShlLm1hcmtl cnx8e30pLmNvbG9yO2goInN1cmZhY2VheGlzIik+PTAmJmgoInN1cmZhY2Vj b2xvciIsZnx8cCk7Zm9yKHZhciBkPVsieCIsInkiLCJ6Il0sZz0wO2c8Mzsr K2cpe3ZhciB2PSJwcm9qZWN0aW9uLiIrZFtnXTtoKHYrIi5zaG93IikmJiho KHYrIi5vcGFjaXR5IiksaCh2KyIuc2NhbGUiKSl9dmFyIG09bi5nZXRDb21w b25lbnRNZXRob2QoImVycm9yYmFycyIsInN1cHBseURlZmF1bHRzIik7bSh0 LGUsZnx8cHx8cix7YXhpczoieiJ9KSxtKHQsZSxmfHxwfHxyLHtheGlzOiJ5 Iixpbmhlcml0OiJ6In0pLG0odCxlLGZ8fHB8fHIse2F4aXM6IngiLGluaGVy aXQ6InoifSl9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NzE3 LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVs dHMiOjExMzMsIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIjoxMTM5LCIu Li9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0LCIuLi9zY2F0dGVyL3RleHRfZGVm YXVsdHMiOjExNDUsIi4vYXR0cmlidXRlcyI6MTE0N31dLDExNTI6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtwbG90OnQoIi4v Y29udmVydCIpLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbWFya2Vy U3ltYm9sczp0KCIuLi8uLi9jb25zdGFudHMvZ2wzZF9tYXJrZXJzIiksc3Vw cGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOlt7Y29udGFp bmVyOiJtYXJrZXIiLG1pbjoiY21pbiIsbWF4OiJjbWF4In0se2NvbnRhaW5l cjoibGluZSIsbWluOiJjbWluIixtYXg6ImNtYXgifV0sY2FsYzp0KCIuL2Nh bGMiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlcjNkIixiYXNl UGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nbDNkIiksY2F0ZWdvcmllczpb ImdsM2QiLCJzeW1ib2xzIiwic2hvd0xlZ2VuZCIsInNjYXR0ZXItbGlrZSJd LG1ldGE6e319fSx7Ii4uLy4uL2NvbnN0YW50cy9nbDNkX21hcmtlcnMiOjY5 MSwiLi4vLi4vcGxvdHMvZ2wzZCI6ODA1LCIuL2F0dHJpYnV0ZXMiOjExNDcs Ii4vY2FsYyI6MTE0OCwiLi9jb252ZXJ0IjoxMTUwLCIuL2RlZmF1bHRzIjox MTUxfV0sMTE1MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3Rz L2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJp YnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbz10KCIuLi8uLi9wbG90cy90 ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMscz10KCIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGw9dCgi Li4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsYz1uLm1hcmtlcix1PW4u bGluZSxoPWMubGluZTtlLmV4cG9ydHM9e2NhcnBldDp7dmFsVHlwZToic3Ry aW5nIixlZGl0VHlwZToiY2FsYyJ9LGE6e3ZhbFR5cGU6ImRhdGFfYXJyYXki LGVkaXRUeXBlOiJjYWxjIn0sYjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSxtb2RlOmwoe30sbi5tb2RlLHtkZmx0OiJtYXJrZXJz In0pLHRleHQ6bCh7fSxuLnRleHQse30pLHRleHR0ZW1wbGF0ZTpvKHtlZGl0 VHlwZToicGxvdCJ9LHtrZXlzOlsiYSIsImIiLCJ0ZXh0Il19KSxob3ZlcnRl eHQ6bCh7fSxuLmhvdmVydGV4dCx7fSksbGluZTp7Y29sb3I6dS5jb2xvcix3 aWR0aDp1LndpZHRoLGRhc2g6dS5kYXNoLHNoYXBlOmwoe30sdS5zaGFwZSx7 dmFsdWVzOlsibGluZWFyIiwic3BsaW5lIl19KSxzbW9vdGhpbmc6dS5zbW9v dGhpbmcsZWRpdFR5cGU6ImNhbGMifSxjb25uZWN0Z2FwczpuLmNvbm5lY3Rn YXBzLGZpbGw6bCh7fSxuLmZpbGwse3ZhbHVlczpbIm5vbmUiLCJ0b3NlbGYi LCJ0b25leHQiXSxkZmx0OiJub25lIn0pLGZpbGxjb2xvcjpuLmZpbGxjb2xv cixtYXJrZXI6bCh7c3ltYm9sOmMuc3ltYm9sLG9wYWNpdHk6Yy5vcGFjaXR5 LG1heGRpc3BsYXllZDpjLm1heGRpc3BsYXllZCxzaXplOmMuc2l6ZSxzaXpl cmVmOmMuc2l6ZXJlZixzaXplbWluOmMuc2l6ZW1pbixzaXplbW9kZTpjLnNp emVtb2RlLGxpbmU6bCh7d2lkdGg6aC53aWR0aCxlZGl0VHlwZToiY2FsYyJ9 LHMoIm1hcmtlci5saW5lIikpLGdyYWRpZW50OmMuZ3JhZGllbnQsZWRpdFR5 cGU6ImNhbGMifSxzKCJtYXJrZXIiKSksdGV4dGZvbnQ6bi50ZXh0Zm9udCx0 ZXh0cG9zaXRpb246bi50ZXh0cG9zaXRpb24sc2VsZWN0ZWQ6bi5zZWxlY3Rl ZCx1bnNlbGVjdGVkOm4udW5zZWxlY3RlZCxob3ZlcmluZm86bCh7fSxhLmhv dmVyaW5mbyx7ZmxhZ3M6WyJhIiwiYiIsInRleHQiLCJuYW1lIl19KSxob3Zl cm9uOm4uaG92ZXJvbixob3ZlcnRlbXBsYXRlOmkoKX19LHsiLi4vLi4vY29t cG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGli L2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4u Ly4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vc2NhdHRl ci9hdHRyaWJ1dGVzIjoxMTIwfV0sMTE1NDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4v c2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiKSxpPXQoIi4uL3NjYXR0ZXIvYXJy YXlzX3RvX2NhbGNkYXRhIiksbz10KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0 aW9uIikscz10KCIuLi9zY2F0dGVyL2NhbGMiKS5jYWxjTWFya2VyU2l6ZSxs PXQoIi4uL2NhcnBldC9sb29rdXBfY2FycGV0aWQiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXt2YXIgcj1lLl9jYXJwZXRUcmFjZT1sKHQsZSk7aWYociYm ci52aXNpYmxlJiYibGVnZW5kb25seSIhPT1yLnZpc2libGUpe3ZhciBjO2Uu eGF4aXM9ci54YXhpcyxlLnlheGlzPXIueWF4aXM7dmFyIHUsaCxmPWUuX2xl bmd0aCxwPW5ldyBBcnJheShmKSxkPSExO2ZvcihjPTA7YzxmO2MrKylpZih1 PWUuYVtjXSxoPWUuYltjXSxuKHUpJiZuKGgpKXt2YXIgZz1yLmFiMnh5KCt1 LCtoLCEwKSx2PXIuaXNWaXNpYmxlKCt1LCtoKTt2fHwoZD0hMCkscFtjXT17 eDpnWzBdLHk6Z1sxXSxhOnUsYjpoLHZpczp2fX1lbHNlIHBbY109e3g6ITEs eTohMX07cmV0dXJuIGUuX25lZWRzQ3VsbD1kLHBbMF0uY2FycGV0PXIscFsw XS50cmFjZT1lLHMoZSxmKSxhKHQsZSksaShwLGUpLG8ocCxlKSxwfX19LHsi Li4vY2FycGV0L2xvb2t1cF9jYXJwZXRpZCI6OTE2LCIuLi9zY2F0dGVyL2Fy cmF5c190b19jYWxjZGF0YSI6MTExOSwiLi4vc2NhdHRlci9jYWxjIjoxMTIx LCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjoxMTIyLCIuLi9zY2F0dGVy L2NvbG9yc2NhbGVfY2FsYyI6MTEyMywiZmFzdC1pc251bWVyaWMiOjIyOH1d LDExNTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL2NvbnN0YW50cyIpLGk9dCgi Li4vc2NhdHRlci9zdWJ0eXBlcyIpLG89dCgiLi4vc2NhdHRlci9tYXJrZXJf ZGVmYXVsdHMiKSxzPXQoIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLGw9 dCgiLi4vc2NhdHRlci9saW5lX3NoYXBlX2RlZmF1bHRzIiksYz10KCIuLi9z Y2F0dGVyL3RleHRfZGVmYXVsdHMiKSx1PXQoIi4uL3NjYXR0ZXIvZmlsbGNv bG9yX2RlZmF1bHRzIiksaD10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIsZil7ZnVuY3Rpb24gcChyLGEpe3JldHVybiBuLmNv ZXJjZSh0LGUsaCxyLGEpfXAoImNhcnBldCIpLGUueGF4aXM9IngiLGUueWF4 aXM9InkiO3ZhciBkPXAoImEiKSxnPXAoImIiKSx2PU1hdGgubWluKGQubGVu Z3RoLGcubGVuZ3RoKTtpZih2KXtlLl9sZW5ndGg9dixwKCJ0ZXh0IikscCgi dGV4dHRlbXBsYXRlIikscCgiaG92ZXJ0ZXh0IikscCgibW9kZSIsdjxhLlBU U19MSU5FU09OTFk/ImxpbmVzK21hcmtlcnMiOiJsaW5lcyIpLGkuaGFzTGlu ZXMoZSkmJihzKHQsZSxyLGYscCksbCh0LGUscCkscCgiY29ubmVjdGdhcHMi KSksaS5oYXNNYXJrZXJzKGUpJiZvKHQsZSxyLGYscCx7Z3JhZGllbnQ6ITB9 KSxpLmhhc1RleHQoZSkmJmModCxlLGYscCk7dmFyIG09W107KGkuaGFzTWFy a2VycyhlKXx8aS5oYXNUZXh0KGUpKSYmKHAoIm1hcmtlci5tYXhkaXNwbGF5 ZWQiKSxtLnB1c2goInBvaW50cyIpKSxwKCJmaWxsIiksIm5vbmUiIT09ZS5m aWxsJiYodSh0LGUscixwKSxpLmhhc0xpbmVzKGUpfHxsKHQsZSxwKSksInRv bmV4dCIhPT1lLmZpbGwmJiJ0b3NlbGYiIT09ZS5maWxsfHxtLnB1c2goImZp bGxzIiksImZpbGxzIiE9PXAoImhvdmVyb24iLG0uam9pbigiKyIpfHwicG9p bnRzIikmJnAoImhvdmVydGVtcGxhdGUiKSxuLmNvZXJjZVNlbGVjdGlvbk1h cmtlck9wYWNpdHkoZSxwKX1lbHNlIGUudmlzaWJsZT0hMX19LHsiLi4vLi4v bGliIjo3MTcsIi4uL3NjYXR0ZXIvY29uc3RhbnRzIjoxMTI0LCIuLi9zY2F0 dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyI6MTEyOCwiLi4vc2NhdHRlci9saW5l X2RlZmF1bHRzIjoxMTMzLCIuLi9zY2F0dGVyL2xpbmVfc2hhcGVfZGVmYXVs dHMiOjExMzUsIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIjoxMTM5LCIu Li9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0LCIuLi9zY2F0dGVyL3RleHRfZGVm YXVsdHMiOjExNDUsIi4vYXR0cmlidXRlcyI6MTE1M31dLDExNTY6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyLG4sYSl7dmFyIGk9blthXTtyZXR1cm4gdC5hPWkuYSx0LmI9aS5iLHQu eT1pLnksdH19LHt9XSwxMTU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXt9LG49ZS5fY2Fy cGV0LGE9bi5hYjJpaihbdC5hLHQuYl0pLGk9TWF0aC5mbG9vcihhWzBdKSxv PWFbMF0taSxzPU1hdGguZmxvb3IoYVsxXSksbD1hWzFdLXMsYz1uLmV2YWx4 eShbXSxpLHMsbyxsKTtyZXR1cm4gci55TGFiZWw9Y1sxXS50b0ZpeGVkKDMp LHJ9fSx7fV0sMTE1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi9zY2F0dGVyL2hvdmVyIiksYT10KCIuLi8uLi9saWIiKS5m aWxsVGV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89bih0 LGUscixpKTtpZihvJiYhMSE9PW9bMF0uaW5kZXgpe3ZhciBzPW9bMF07aWYo dm9pZCAwPT09cy5pbmRleCl7dmFyIGw9MS1zLnkwL3QueWEuX2xlbmd0aCxj PXQueGEuX2xlbmd0aCx1PWMqbC8yLGg9Yy11O3JldHVybiBzLngwPU1hdGgu bWF4KE1hdGgubWluKHMueDAsaCksdSkscy54MT1NYXRoLm1heChNYXRoLm1p bihzLngxLGgpLHUpLG99dmFyIGY9cy5jZFtzLmluZGV4XTtzLmE9Zi5hLHMu Yj1mLmIscy54TGFiZWxWYWw9dm9pZCAwLHMueUxhYmVsVmFsPXZvaWQgMDt2 YXIgcD1zLnRyYWNlLGQ9cC5fY2FycGV0LGc9cC5fbW9kdWxlLmZvcm1hdExh YmVscyhmLHApO3MueUxhYmVsPWcueUxhYmVsLGRlbGV0ZSBzLnRleHQ7dmFy IHY9W107aWYoIXAuaG92ZXJ0ZW1wbGF0ZSl7dmFyIG09KGYuaGl8fHAuaG92 ZXJpbmZvKS5zcGxpdCgiKyIpOy0xIT09bS5pbmRleE9mKCJhbGwiKSYmKG09 WyJhIiwiYiIsInRleHQiXSksLTEhPT1tLmluZGV4T2YoImEiKSYmeShkLmFh eGlzLGYuYSksLTEhPT1tLmluZGV4T2YoImIiKSYmeShkLmJheGlzLGYuYiks di5wdXNoKCJ5OiAiK3MueUxhYmVsKSwtMSE9PW0uaW5kZXhPZigidGV4dCIp JiZhKGYscCx2KSxzLmV4dHJhVGV4dD12LmpvaW4oIjxicj4iKX1yZXR1cm4g b31mdW5jdGlvbiB5KHQsZSl7dmFyIHI7cj10LmxhYmVscHJlZml4JiZ0Lmxh YmVscHJlZml4Lmxlbmd0aD4wP3QubGFiZWxwcmVmaXgucmVwbGFjZSgvID0g JC8sIiIpOnQuX2hvdmVydGl0bGUsdi5wdXNoKHIrIjogIitlLnRvRml4ZWQo MykrdC5sYWJlbHN1ZmZpeCl9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2Nh dHRlci9ob3ZlciI6MTEzMX1dLDExNTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRl cyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjb2xvcmJhcjp0 KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0 KCIuL2Zvcm1hdF9sYWJlbHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgi Li9wbG90Iiksc3R5bGU6dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlLHN0 eWxlT25TZWxlY3Q6dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlT25TZWxl Y3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLHNlbGVjdFBvaW50czp0KCIu Li9zY2F0dGVyL3NlbGVjdCIpLGV2ZW50RGF0YTp0KCIuL2V2ZW50X2RhdGEi KSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlcmNhcnBldCIsYmFz ZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdv cmllczpbInN2ZyIsImNhcnBldCIsInN5bWJvbHMiLCJzaG93TGVnZW5kIiwi Y2FycGV0RGVwZW5kZW50Iiwiem9vbVNjYWxlIl0sbWV0YTp7fX19LHsiLi4v Li4vcGxvdHMvY2FydGVzaWFuIjo3NzYsIi4uL3NjYXR0ZXIvbWFya2VyX2Nv bG9yYmFyIjoxMTM4LCIuLi9zY2F0dGVyL3NlbGVjdCI6MTE0MSwiLi4vc2Nh dHRlci9zdHlsZSI6MTE0MywiLi9hdHRyaWJ1dGVzIjoxMTUzLCIuL2NhbGMi OjExNTQsIi4vZGVmYXVsdHMiOjExNTUsIi4vZXZlbnRfZGF0YSI6MTE1Niwi Li9mb3JtYXRfbGFiZWxzIjoxMTU3LCIuL2hvdmVyIjoxMTU4LCIuL3Bsb3Qi OjExNjB9XSwxMTYwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uL3NjYXR0ZXIvcGxvdCIpLGE9dCgiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F4ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXt2YXIgcyxsLGMsdT1yWzBd WzBdLmNhcnBldCxoPXt4YXhpczphLmdldEZyb21JZCh0LHUueGF4aXN8fCJ4 IikseWF4aXM6YS5nZXRGcm9tSWQodCx1LnlheGlzfHwieSIpLHBsb3Q6ZS5w bG90fTtmb3Iobih0LGgscixvKSxzPTA7czxyLmxlbmd0aDtzKyspbD1yW3Nd WzBdLnRyYWNlLGM9by5zZWxlY3RBbGwoImcudHJhY2UiK2wudWlkKyIgLmpz LWxpbmUiKSxpLnNldENsaXBVcmwoYyxyW3NdWzBdLmNhcnBldC5fY2xpcFBh dGhJZCx0KX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4u Ly4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4uL3NjYXR0ZXIvcGxv dCI6MTE0MH1dLDExNjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhv dmVydGVtcGxhdGVBdHRycyxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0 dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxpPXQoIi4uL3NjYXR0ZXIv YXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLHM9 dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxs PXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZy9hdHRyaWJ1dGVzIikuZGFz aCxjPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHU9dCgiLi4v Li4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGg9aS5tYXJr ZXIsZj1pLmxpbmUscD1oLmxpbmU7ZS5leHBvcnRzPXUoe2xvbjp7dmFsVHlw ZToiZGF0YV9hcnJheSJ9LGxhdDp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGxv Y2F0aW9uczp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGxvY2F0aW9ubW9kZTp7 dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiSVNPLTMiLCJVU0Etc3Rh dGVzIiwiY291bnRyeSBuYW1lcyIsImdlb2pzb24taWQiXSxkZmx0OiJJU08t MyJ9LGdlb2pzb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifSxm ZWF0dXJlaWRrZXk6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMi LGRmbHQ6ImlkIn0sbW9kZTpjKHt9LGkubW9kZSx7ZGZsdDoibWFya2VycyJ9 KSx0ZXh0OmMoe30saS50ZXh0LHt9KSx0ZXh0dGVtcGxhdGU6YSh7ZWRpdFR5 cGU6InBsb3QifSx7a2V5czpbImxhdCIsImxvbiIsImxvY2F0aW9uIiwidGV4 dCJdfSksaG92ZXJ0ZXh0OmMoe30saS5ob3ZlcnRleHQse30pLHRleHRmb250 OmkudGV4dGZvbnQsdGV4dHBvc2l0aW9uOmkudGV4dHBvc2l0aW9uLGxpbmU6 e2NvbG9yOmYuY29sb3Isd2lkdGg6Zi53aWR0aCxkYXNoOmx9LGNvbm5lY3Rn YXBzOmkuY29ubmVjdGdhcHMsbWFya2VyOmMoe3N5bWJvbDpoLnN5bWJvbCxv cGFjaXR5Omgub3BhY2l0eSxzaXplOmguc2l6ZSxzaXplcmVmOmguc2l6ZXJl ZixzaXplbWluOmguc2l6ZW1pbixzaXplbW9kZTpoLnNpemVtb2RlLGNvbG9y YmFyOmguY29sb3JiYXIsbGluZTpjKHt3aWR0aDpwLndpZHRofSxzKCJtYXJr ZXIubGluZSIpKSxncmFkaWVudDpoLmdyYWRpZW50fSxzKCJtYXJrZXIiKSks ZmlsbDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibm9uZSIsInRv c2VsZiJdLGRmbHQ6Im5vbmUifSxmaWxsY29sb3I6aS5maWxsY29sb3Isc2Vs ZWN0ZWQ6aS5zZWxlY3RlZCx1bnNlbGVjdGVkOmkudW5zZWxlY3RlZCxob3Zl cmluZm86Yyh7fSxvLmhvdmVyaW5mbyx7ZmxhZ3M6WyJsb24iLCJsYXQiLCJs b2NhdGlvbiIsInRleHQiLCJuYW1lIl19KSxob3ZlcnRlbXBsYXRlOm4oKX0s ImNhbGMiLCJuZXN0ZWQiKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUvYXR0cmlidXRlcyI6NTk5LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcv YXR0cmlidXRlcyI6NjEyLCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4u L3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdHMvYXR0cmli dXRlcyI6NzYyLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4 NDEsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6MTEyMH1dLDExNjI6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVy aWMiKSxhPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0s aT10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLG89dCgiLi4vc2Nh dHRlci9hcnJheXNfdG9fY2FsY2RhdGEiKSxzPXQoIi4uL3NjYXR0ZXIvY2Fs Y19zZWxlY3Rpb24iKSxsPXQoIi4uLy4uL2xpYiIpLl87ZnVuY3Rpb24gYyh0 KXtyZXR1cm4gdCYmInN0cmluZyI9PXR5cGVvZiB0fWUuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3ZhciByLHU9QXJyYXkuaXNBcnJheShlLmxvY2F0aW9ucyks aD11P2UubG9jYXRpb25zLmxlbmd0aDplLl9sZW5ndGgsZj1uZXcgQXJyYXko aCk7cj1lLmdlb2pzb24/ZnVuY3Rpb24odCl7cmV0dXJuIGModCl8fG4odCl9 OmM7Zm9yKHZhciBwPTA7cDxoO3ArKyl7dmFyIGQ9ZltwXT17fTtpZih1KXt2 YXIgZz1lLmxvY2F0aW9uc1twXTtkLmxvYz1yKGcpP2c6bnVsbH1lbHNle3Zh ciB2PWUubG9uW3BdLG09ZS5sYXRbcF07bih2KSYmbihtKT9kLmxvbmxhdD1b K3YsK21dOmQubG9ubGF0PVthLGFdfX1yZXR1cm4gbyhmLGUpLGkodCxlKSxz KGYsZSksaCYmKGZbMF0udD17bGFiZWxzOntsYXQ6bCh0LCJsYXQ6IikrIiAi LGxvbjpsKHQsImxvbjoiKSsiICJ9fSksZn19LHsiLi4vLi4vY29uc3RhbnRz L251bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9h cnJheXNfdG9fY2FsY2RhdGEiOjExMTksIi4uL3NjYXR0ZXIvY2FsY19zZWxl Y3Rpb24iOjExMjIsIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIjoxMTIz LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0sMTE2MzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uL3Nj YXR0ZXIvc3VidHlwZXMiKSxpPXQoIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1 bHRzIiksbz10KCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiKSxzPXQoIi4u L3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyIpLGw9dCgiLi4vc2NhdHRlci9maWxs Y29sb3JfZGVmYXVsdHMiKSxjPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscix1KXtmdW5jdGlvbiBoKHIsYSl7cmV0dXJuIG4u Y29lcmNlKHQsZSxjLHIsYSl9dmFyIGYscD1oKCJsb2NhdGlvbnMiKTtpZihw JiZwLmxlbmd0aCl7dmFyIGQsZz1oKCJnZW9qc29uIik7KCJzdHJpbmciPT10 eXBlb2YgZyYmIiIhPT1nfHxuLmlzUGxhaW5PYmplY3QoZykpJiYoZD0iZ2Vv anNvbi1pZCIpLCJnZW9qc29uLWlkIj09PWgoImxvY2F0aW9ubW9kZSIsZCkm JmgoImZlYXR1cmVpZGtleSIpLGY9cC5sZW5ndGh9ZWxzZXt2YXIgdj1oKCJs b24iKXx8W10sbT1oKCJsYXQiKXx8W107Zj1NYXRoLm1pbih2Lmxlbmd0aCxt Lmxlbmd0aCl9Zj8oZS5fbGVuZ3RoPWYsaCgidGV4dCIpLGgoImhvdmVydGV4 dCIpLGgoImhvdmVydGVtcGxhdGUiKSxoKCJtb2RlIiksYS5oYXNMaW5lcyhl KSYmKG8odCxlLHIsdSxoKSxoKCJjb25uZWN0Z2FwcyIpKSxhLmhhc01hcmtl cnMoZSkmJmkodCxlLHIsdSxoLHtncmFkaWVudDohMH0pLGEuaGFzVGV4dChl KSYmKGgoInRleHR0ZW1wbGF0ZSIpLHModCxlLHUsaCkpLGgoImZpbGwiKSwi bm9uZSIhPT1lLmZpbGwmJmwodCxlLHIsaCksbi5jb2VyY2VTZWxlY3Rpb25N YXJrZXJPcGFjaXR5KGUsaCkpOmUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGli Ijo3MTcsIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIjoxMTI4LCIu Li9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiOjExMzMsIi4uL3NjYXR0ZXIvbWFy a2VyX2RlZmF1bHRzIjoxMTM5LCIuLi9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0 LCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiOjExNDUsIi4vYXR0cmlidXRl cyI6MTE2MX1dLDExNjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4sYSl7dC5sb249ZS5sb24sdC5s YXQ9ZS5sYXQsdC5sb2NhdGlvbj1lLmxvYz9lLmxvYzpudWxsO3ZhciBpPW5b YV07cmV0dXJuIGkuZkluJiZpLmZJbi5wcm9wZXJ0aWVzJiYodC5wcm9wZXJ0 aWVzPWkuZkluLnByb3BlcnRpZXMpLHR9fSx7fV0sMTE2NTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGE9 e30saT1yW2UuZ2VvXS5fc3VicGxvdC5tb2NrQXhpcyxvPXQubG9ubGF0O3Jl dHVybiBhLmxvbkxhYmVsPW4udGlja1RleHQoaSxpLmMybChvWzBdKSwhMCku dGV4dCxhLmxhdExhYmVsPW4udGlja1RleHQoaSxpLmMybChvWzFdKSwhMCku dGV4dCxhfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1fV0s MTE2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9jb21wb25lbnRzL2Z4IiksYT10KCIuLi8uLi9jb25zdGFudHMvbnVt ZXJpY2FsIikuQkFETlVNLGk9dCgiLi4vc2NhdHRlci9nZXRfdHJhY2VfY29s b3IiKSxvPXQoIi4uLy4uL2xpYiIpLmZpbGxUZXh0LHM9dCgiLi9hdHRyaWJ1 dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbD10LmNkLGM9 bFswXS50cmFjZSx1PXQueGEsaD10LnlhLGY9dC5zdWJwbG90LHA9Zi5wcm9q ZWN0aW9uLmlzTG9uTGF0T3ZlckVkZ2VzLGQ9Zi5wcm9qZWN0O2lmKG4uZ2V0 Q2xvc2VzdChsLGZ1bmN0aW9uKHQpe3ZhciBuPXQubG9ubGF0O2lmKG5bMF09 PT1hKXJldHVybiAxLzA7aWYocChuKSlyZXR1cm4gMS8wO3ZhciBpPWQobiks bz1kKFtlLHJdKSxzPU1hdGguYWJzKGlbMF0tb1swXSksbD1NYXRoLmFicyhp WzFdLW9bMV0pLGM9TWF0aC5tYXgoMyx0Lm1yY3x8MCk7cmV0dXJuIE1hdGgu bWF4KE1hdGguc3FydChzKnMrbCpsKS1jLDEtMy9jKX0sdCksITEhPT10Lmlu ZGV4KXt2YXIgZz1sW3QuaW5kZXhdLHY9Zy5sb25sYXQsbT1bdS5jMnAodiks aC5jMnAodildLHk9Zy5tcmN8fDE7dC54MD1tWzBdLXksdC54MT1tWzBdK3ks dC55MD1tWzFdLXksdC55MT1tWzFdK3ksdC5sb2M9Zy5sb2MsdC5sb249dlsw XSx0LmxhdD12WzFdO3ZhciB4PXt9O3hbYy5nZW9dPXtfc3VicGxvdDpmfTt2 YXIgYj1jLl9tb2R1bGUuZm9ybWF0TGFiZWxzKGcsYyx4KTtyZXR1cm4gdC5s b25MYWJlbD1iLmxvbkxhYmVsLHQubGF0TGFiZWw9Yi5sYXRMYWJlbCx0LmNv bG9yPWkoYyxnKSx0LmV4dHJhVGV4dD1mdW5jdGlvbih0LGUscixuKXtpZih0 LmhvdmVydGVtcGxhdGUpcmV0dXJuO3ZhciBhPWUuaGl8fHQuaG92ZXJpbmZv LGk9ImFsbCI9PT1hP3MuaG92ZXJpbmZvLmZsYWdzOmEuc3BsaXQoIisiKSxs PS0xIT09aS5pbmRleE9mKCJsb2NhdGlvbiIpJiZBcnJheS5pc0FycmF5KHQu bG9jYXRpb25zKSxjPS0xIT09aS5pbmRleE9mKCJsb24iKSx1PS0xIT09aS5p bmRleE9mKCJsYXQiKSxoPS0xIT09aS5pbmRleE9mKCJ0ZXh0IiksZj1bXTtm dW5jdGlvbiBwKHQpe3JldHVybiB0KyJceGIwIn1sP2YucHVzaChlLmxvYyk6 YyYmdT9mLnB1c2goIigiK3Aoci5sb25MYWJlbCkrIiwgIitwKHIubGF0TGFi ZWwpKyIpIik6Yz9mLnB1c2gobi5sb24rcChyLmxvbkxhYmVsKSk6dSYmZi5w dXNoKG4ubGF0K3Aoci5sYXRMYWJlbCkpO2gmJm8oZSx0LGYpO3JldHVybiBm LmpvaW4oIjxicj4iKX0oYyxnLHQsbFswXS50LmxhYmVscyksdC5ob3ZlcnRl bXBsYXRlPWMuaG92ZXJ0ZW1wbGF0ZSxbdF19fX0seyIuLi8uLi9jb21wb25l bnRzL2Z4Ijo2MzAsIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5Mywi Li4vLi4vbGliIjo3MTcsIi4uL3NjYXR0ZXIvZ2V0X3RyYWNlX2NvbG9yIjox MTMwLCIuL2F0dHJpYnV0ZXMiOjExNjF9XSwxMTY3OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0 dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29s b3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiKSxmb3JtYXRM YWJlbHM6dCgiLi9mb3JtYXRfbGFiZWxzIiksY2FsYzp0KCIuL2NhbGMiKSxj YWxjR2VvSlNPTjp0KCIuL3Bsb3QiKS5jYWxjR2VvSlNPTixwbG90OnQoIi4v cGxvdCIpLnBsb3Qsc3R5bGU6dCgiLi9zdHlsZSIpLHN0eWxlT25TZWxlY3Q6 dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlT25TZWxlY3QsaG92ZXJQb2lu dHM6dCgiLi9ob3ZlciIpLGV2ZW50RGF0YTp0KCIuL2V2ZW50X2RhdGEiKSxz ZWxlY3RQb2ludHM6dCgiLi9zZWxlY3QiKSxtb2R1bGVUeXBlOiJ0cmFjZSIs bmFtZToic2NhdHRlcmdlbyIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxv dHMvZ2VvIiksY2F0ZWdvcmllczpbImdlbyIsInN5bWJvbHMiLCJzaG93TGVn ZW5kIiwic2NhdHRlci1saWtlIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMv Z2VvIjo3OTUsIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjoxMTM4LCIu Li9zY2F0dGVyL3N0eWxlIjoxMTQzLCIuL2F0dHJpYnV0ZXMiOjExNjEsIi4v Y2FsYyI6MTE2MiwiLi9kZWZhdWx0cyI6MTE2MywiLi9ldmVudF9kYXRhIjox MTY0LCIuL2Zvcm1hdF9sYWJlbHMiOjExNjUsIi4vaG92ZXIiOjExNjYsIi4v cGxvdCI6MTE2OCwiLi9zZWxlY3QiOjExNjksIi4vc3R5bGUiOjExNzB9XSwx MTY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQz IiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2xpYi90b3BvanNvbl91 dGlscyIpLmdldFRvcG9qc29uRmVhdHVyZXMsbz10KCIuLi8uLi9saWIvZ2Vv anNvbl91dGlscyIpLHM9dCgiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGls cyIpLGw9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSIpLmZp bmRFeHRyZW1lcyxjPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5C QUROVU0sdT10KCIuLi9zY2F0dGVyL2NhbGMiKS5jYWxjTWFya2VyU2l6ZSxo PXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxmPXQoIi4vc3R5bGUiKTtlLmV4 cG9ydHM9e2NhbGNHZW9KU09OOmZ1bmN0aW9uKHQsZSl7dmFyIHIsbixhPXRb MF0udHJhY2Usbz1lW2EuZ2VvXSxoPW8uX3N1YnBsb3QsZj1hLl9sZW5ndGg7 aWYoQXJyYXkuaXNBcnJheShhLmxvY2F0aW9ucykpe3ZhciBwPWEubG9jYXRp b25tb2RlLGQ9Imdlb2pzb24taWQiPT09cD9zLmV4dHJhY3RUcmFjZUZlYXR1 cmUodCk6aShhLGgudG9wb2pzb24pO2ZvcihyPTA7cjxmO3IrKyl7bj10W3Jd O3ZhciBnPSJnZW9qc29uLWlkIj09PXA/bi5mT3V0OnMubG9jYXRpb25Ub0Zl YXR1cmUocCxuLmxvYyxkKTtuLmxvbmxhdD1nP2cucHJvcGVydGllcy5jdDpb YyxjXX19dmFyIHYsbSx5PXtwYWRkZWQ6ITB9O2lmKCJnZW9qc29uIj09PW8u Zml0Ym91bmRzJiYiZ2VvanNvbi1pZCI9PT1hLmxvY2F0aW9ubW9kZSl7dmFy IHg9cy5jb21wdXRlQmJveChzLmdldFRyYWNlR2VvanNvbihhKSk7dj1beFsw XSx4WzJdXSxtPVt4WzFdLHhbM11dfWVsc2V7Zm9yKHY9bmV3IEFycmF5KGYp LG09bmV3IEFycmF5KGYpLHI9MDtyPGY7cisrKW49dFtyXSx2W3JdPW4ubG9u bGF0WzBdLG1bcl09bi5sb25sYXRbMV07eS5wcGFkPXUoYSxmKX1hLl9leHRy ZW1lcy5sb249bChvLmxvbmF4aXMuX2F4LHYseSksYS5fZXh0cmVtZXMubGF0 PWwoby5sYXRheGlzLl9heCxtLHkpfSxwbG90OmZ1bmN0aW9uKHQsZSxyKXt2 YXIgaT1lLmxheWVycy5mcm9udHBsb3Quc2VsZWN0KCIuc2NhdHRlcmxheWVy Iikscz1hLm1ha2VUcmFjZUdyb3VwcyhpLHIsInRyYWNlIHNjYXR0ZXJnZW8i KTtmdW5jdGlvbiBsKHQsZSl7dC5sb25sYXRbMF09PT1jJiZuLnNlbGVjdChl KS5yZW1vdmUoKX1zLnNlbGVjdEFsbCgiKiIpLnJlbW92ZSgpLHMuZWFjaChm dW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxpPWVbMF0udHJhY2U7 aWYoaC5oYXNMaW5lcyhpKXx8Im5vbmUiIT09aS5maWxsKXt2YXIgcz1vLmNh bGNUcmFjZVRvTGluZUNvb3JkcyhlKSxjPSJub25lIiE9PWkuZmlsbD9vLm1h a2VQb2x5Z29uKHMpOm8ubWFrZUxpbmUocyk7ci5zZWxlY3RBbGwoInBhdGgu anMtbGluZSIpLmRhdGEoW3tnZW9qc29uOmMsdHJhY2U6aX1dKS5lbnRlcigp LmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImpzLWxpbmUiLCEwKS5zdHlsZSgi c3Ryb2tlLW1pdGVybGltaXQiLDIpfWguaGFzTWFya2VycyhpKSYmci5zZWxl Y3RBbGwoInBhdGgucG9pbnQiKS5kYXRhKGEuaWRlbnRpdHkpLmVudGVyKCku YXBwZW5kKCJwYXRoIikuY2xhc3NlZCgicG9pbnQiLCEwKS5lYWNoKGZ1bmN0 aW9uKHQpe2wodCx0aGlzKX0pLGguaGFzVGV4dChpKSYmci5zZWxlY3RBbGwo ImciKS5kYXRhKGEuaWRlbnRpdHkpLmVudGVyKCkuYXBwZW5kKCJnIikuYXBw ZW5kKCJ0ZXh0IikuZWFjaChmdW5jdGlvbih0KXtsKHQsdGhpcyl9KSxmKHQs ZSl9KX19fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4v Li4vbGliIjo3MTcsIi4uLy4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiOjcx MSwiLi4vLi4vbGliL2dlb2pzb25fdXRpbHMiOjcxMiwiLi4vLi4vbGliL3Rv cG9qc29uX3V0aWxzIjo3NDQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRv cmFuZ2UiOjc2NCwiLi4vc2NhdHRlci9jYWxjIjoxMTIxLCIuLi9zY2F0dGVy L3N1YnR5cGVzIjoxMTQ0LCIuL3N0eWxlIjoxMTcwLGQzOjE2NX1dLDExNjk6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2Nh dHRlci9zdWJ0eXBlcyIpLGE9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNh bCIpLkJBRE5VTTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixpLG8s cyxsLGM9dC5jZCx1PXQueGF4aXMsaD10LnlheGlzLGY9W10scD1jWzBdLnRy YWNlO2lmKCFuLmhhc01hcmtlcnMocCkmJiFuLmhhc1RleHQocCkpcmV0dXJu W107aWYoITE9PT1lKWZvcihsPTA7bDxjLmxlbmd0aDtsKyspY1tsXS5zZWxl Y3RlZD0wO2Vsc2UgZm9yKGw9MDtsPGMubGVuZ3RoO2wrKykoaT0ocj1jW2xd KS5sb25sYXQpWzBdIT09YSYmKG89dS5jMnAoaSkscz1oLmMycChpKSxlLmNv bnRhaW5zKFtvLHNdLG51bGwsbCx0KT8oZi5wdXNoKHtwb2ludE51bWJlcjps LGxvbjppWzBdLGxhdDppWzFdfSksci5zZWxlY3RlZD0xKTpyLnNlbGVjdGVk PTApO3JldHVybiBmfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2 OTMsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDR9XSwxMTcwOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi8u Li9jb21wb25lbnRzL2RyYXdpbmciKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMv Y29sb3IiKSxvPXQoIi4uL3NjYXR0ZXIvc3R5bGUiKSxzPW8uc3R5bGVQb2lu dHMsbD1vLnN0eWxlVGV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlJiZm dW5jdGlvbih0LGUpe3ZhciByPWVbMF0udHJhY2Usbz1lWzBdLm5vZGUzO28u c3R5bGUoIm9wYWNpdHkiLGVbMF0udHJhY2Uub3BhY2l0eSkscyhvLHIsdCks bChvLHIsdCksby5zZWxlY3RBbGwoInBhdGguanMtbGluZSIpLnN0eWxlKCJm aWxsIiwibm9uZSIpLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3Qo dGhpcykscj10LnRyYWNlLG89ci5saW5lfHx7fTtlLmNhbGwoaS5zdHJva2Us by5jb2xvcikuY2FsbChhLmRhc2hMaW5lLG8uZGFzaHx8IiIsby53aWR0aHx8 MCksIm5vbmUiIT09ci5maWxsJiZlLmNhbGwoaS5maWxsLHIuZmlsbGNvbG9y KX0pfSh0LGUpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4u Ly4uL2NvbXBvbmVudHMvZHJhd2luZyI6NjEzLCIuLi9zY2F0dGVyL3N0eWxl IjoxMTQzLGQzOjE2NX1dLDExNzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGE9dCgi Li4vc2NhdHRlci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRz L2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vbGliL2V4dGVu ZCIpLmV4dGVuZEZsYXQscz10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVz Iikub3ZlcnJpZGVBbGwsbD10KCIuL2NvbnN0YW50cyIpLkRBU0hFUyxjPWEu bGluZSx1PWEubWFya2VyLGg9dS5saW5lLGY9ZS5leHBvcnRzPXMoe3g6YS54 LHgwOmEueDAsZHg6YS5keCx5OmEueSx5MDphLnkwLGR5OmEuZHksdGV4dDph LnRleHQsaG92ZXJ0ZXh0OmEuaG92ZXJ0ZXh0LHRleHRwb3NpdGlvbjphLnRl eHRwb3NpdGlvbix0ZXh0Zm9udDphLnRleHRmb250LG1vZGU6e3ZhbFR5cGU6 ImZsYWdsaXN0IixmbGFnczpbImxpbmVzIiwibWFya2VycyIsInRleHQiXSxl eHRyYXM6WyJub25lIl19LGxpbmU6e2NvbG9yOmMuY29sb3Isd2lkdGg6Yy53 aWR0aCxzaGFwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGlu ZWFyIiwiaHYiLCJ2aCIsImh2aCIsInZodiJdLGRmbHQ6ImxpbmVhciIsZWRp dFR5cGU6InBsb3QifSxkYXNoOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1 ZXM6T2JqZWN0LmtleXMobCksZGZsdDoic29saWQifX0sbWFya2VyOm8oe30s aSgibWFya2VyIikse3N5bWJvbDp1LnN5bWJvbCxzaXplOnUuc2l6ZSxzaXpl cmVmOnUuc2l6ZXJlZixzaXplbWluOnUuc2l6ZW1pbixzaXplbW9kZTp1LnNp emVtb2RlLG9wYWNpdHk6dS5vcGFjaXR5LGNvbG9yYmFyOnUuY29sb3JiYXIs bGluZTpvKHt9LGkoIm1hcmtlci5saW5lIikse3dpZHRoOmgud2lkdGh9KX0p LGNvbm5lY3RnYXBzOmEuY29ubmVjdGdhcHMsZmlsbDpvKHt9LGEuZmlsbCx7 ZGZsdDoibm9uZSJ9KSxmaWxsY29sb3I6YS5maWxsY29sb3Isc2VsZWN0ZWQ6 e21hcmtlcjphLnNlbGVjdGVkLm1hcmtlcix0ZXh0Zm9udDphLnNlbGVjdGVk LnRleHRmb250fSx1bnNlbGVjdGVkOnttYXJrZXI6YS51bnNlbGVjdGVkLm1h cmtlcix0ZXh0Zm9udDphLnVuc2VsZWN0ZWQudGV4dGZvbnR9LG9wYWNpdHk6 bi5vcGFjaXR5fSwiY2FsYyIsIm5lc3RlZCIpO2YueC5lZGl0VHlwZT1mLnku ZWRpdFR5cGU9Zi54MC5lZGl0VHlwZT1mLnkwLmVkaXRUeXBlPSJjYWxjK2Ns ZWFyQXhpc1R5cGVzIixmLmhvdmVydGVtcGxhdGU9YS5ob3ZlcnRlbXBsYXRl LGYudGV4dHRlbXBsYXRlPWEudGV4dHRlbXBsYXRlfSx7Ii4uLy4uL2NvbXBv bmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9l eHRlbmQiOjcwOCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIu Li8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uL3NjYXR0ZXIvYXR0cmli dXRlcyI6MTEyMCwiLi9jb25zdGFudHMiOjExNzN9XSwxMTcyOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInBvaW50LWNsdXN0ZXIi KSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFu L2F4aXNfaWRzIiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXV0b3Jh bmdlIikuZmluZEV4dHJlbWVzLHM9dCgiLi4vc2NhdHRlci9jYWxjIiksbD1z LmNhbGNNYXJrZXJTaXplLGM9cy5jYWxjQXhpc0V4cGFuc2lvbix1PXMuc2V0 Rmlyc3RTY2F0dGVyLGg9dCgiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMi KSxmPXQoIi4vY29udmVydCIpLHA9dCgiLi9zY2VuZV91cGRhdGUiKSxkPXQo Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0sZz10KCIuL2Nv bnN0YW50cyIpLlRPT19NQU5ZX1BPSU5UUztmdW5jdGlvbiB2KHQsZSxyKXt2 YXIgbj10Ll9leHRyZW1lc1tlLl9pZF0sYT1vKGUsci5fYm5kcyx7cGFkZGVk OiEwfSk7bi5taW49bi5taW4uY29uY2F0KGEubWluKSxuLm1heD1uLm1heC5j b25jYXQoYS5tYXgpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG8s cyxtPXQuX2Z1bGxMYXlvdXQseT1pLmdldEZyb21JZCh0LGUueGF4aXMpLHg9 aS5nZXRGcm9tSWQodCxlLnlheGlzKSxiPW0uX3Bsb3RzW2UueGF4aXMrZS55 YXhpc10sXz1lLl9sZW5ndGgsdz1fPj1nLGs9MipfLFQ9e30sTT1lLl94PXku bWFrZUNhbGNkYXRhKGUsIngiKSxBPWUuX3k9eC5tYWtlQ2FsY2RhdGEoZSwi eSIpLFM9bmV3IEFycmF5KGspO2ZvcihyPTA7cjxfO3IrKylvPU1bcl0scz1B W3JdLFNbMipyXT1vPT09ZD9OYU46byxTWzIqcisxXT1zPT09ZD9OYU46cztp ZigibG9nIj09PXkudHlwZSlmb3Iocj0wO3I8aztyKz0yKVNbcl09eS5jMmwo U1tyXSk7aWYoImxvZyI9PT14LnR5cGUpZm9yKHI9MTtyPGs7cis9MilTW3Jd PXguYzJsKFNbcl0pO2lmKHcmJiJsb2ciIT09eS50eXBlJiYibG9nIiE9PXgu dHlwZSlULnRyZWU9bihTKTtlbHNle3ZhciBFPVQuaWRzPW5ldyBBcnJheShf KTtmb3Iocj0wO3I8XztyKyspRVtyXT1yfWgodCxlKTt2YXIgTCxDPWZ1bmN0 aW9uKHQsZSxyLG4saSxvKXt2YXIgcz1mLnN0eWxlKHQscik7cy5tYXJrZXIm JihzLm1hcmtlci5wb3NpdGlvbnM9bik7cy5saW5lJiZuLmxlbmd0aD4xJiZh LmV4dGVuZEZsYXQocy5saW5lLGYubGluZVBvc2l0aW9ucyh0LHIsbikpO2lm KHMuZXJyb3JYfHxzLmVycm9yWSl7dmFyIGw9Zi5lcnJvckJhclBvc2l0aW9u cyh0LHIsbixpLG8pO3MuZXJyb3JYJiZhLmV4dGVuZEZsYXQocy5lcnJvclgs bC54KSxzLmVycm9yWSYmYS5leHRlbmRGbGF0KHMuZXJyb3JZLGwueSl9cy50 ZXh0JiYoYS5leHRlbmRGbGF0KHMudGV4dCx7cG9zaXRpb25zOm59LGYudGV4 dFBvc2l0aW9uKHQscixzLnRleHQscy5tYXJrZXIpKSxhLmV4dGVuZEZsYXQo cy50ZXh0U2VsLHtwb3NpdGlvbnM6bn0sZi50ZXh0UG9zaXRpb24odCxyLHMu dGV4dCxzLm1hcmtlclNlbCkpLGEuZXh0ZW5kRmxhdChzLnRleHRVbnNlbCx7 cG9zaXRpb25zOm59LGYudGV4dFBvc2l0aW9uKHQscixzLnRleHQscy5tYXJr ZXJVbnNlbCkpKTtyZXR1cm4gc30odCwwLGUsUyxNLEEpLFA9cCh0LGIpO3Jl dHVybiB1KG0sZSksdz9DLm1hcmtlciYmKEw9MiooQy5tYXJrZXIuc2l6ZUF2 Z3x8TWF0aC5tYXgoQy5tYXJrZXIuc2l6ZSwzKSkpOkw9bChlLF8pLGModCxl LHkseCxNLEEsTCksQy5lcnJvclgmJnYoZSx5LEMuZXJyb3JYKSxDLmVycm9y WSYmdihlLHgsQy5lcnJvclkpLEMuZmlsbCYmIVAuZmlsbDJkJiYoUC5maWxs MmQ9ITApLEMubWFya2VyJiYhUC5zY2F0dGVyMmQmJihQLnNjYXR0ZXIyZD0h MCksQy5saW5lJiYhUC5saW5lMmQmJihQLmxpbmUyZD0hMCksIUMuZXJyb3JY JiYhQy5lcnJvcll8fFAuZXJyb3IyZHx8KFAuZXJyb3IyZD0hMCksQy50ZXh0 JiYhUC5nbFRleHQmJihQLmdsVGV4dD0hMCksQy5tYXJrZXImJihDLm1hcmtl ci5zbmFwPV8pLFAubGluZU9wdGlvbnMucHVzaChDLmxpbmUpLFAuZXJyb3JY T3B0aW9ucy5wdXNoKEMuZXJyb3JYKSxQLmVycm9yWU9wdGlvbnMucHVzaChD LmVycm9yWSksUC5maWxsT3B0aW9ucy5wdXNoKEMuZmlsbCksUC5tYXJrZXJP cHRpb25zLnB1c2goQy5tYXJrZXIpLFAubWFya2VyU2VsZWN0ZWRPcHRpb25z LnB1c2goQy5tYXJrZXJTZWwpLFAubWFya2VyVW5zZWxlY3RlZE9wdGlvbnMu cHVzaChDLm1hcmtlclVuc2VsKSxQLnRleHRPcHRpb25zLnB1c2goQy50ZXh0 KSxQLnRleHRTZWxlY3RlZE9wdGlvbnMucHVzaChDLnRleHRTZWwpLFAudGV4 dFVuc2VsZWN0ZWRPcHRpb25zLnB1c2goQy50ZXh0VW5zZWwpLFAuc2VsZWN0 QmF0Y2gucHVzaChbXSksUC51bnNlbGVjdEJhdGNoLnB1c2goW10pLFQuX3Nj ZW5lPVAsVC5pbmRleD1QLmNvdW50LFQueD1NLFQueT1BLFQucG9zaXRpb25z PVMsUC5jb3VudCsrLFt7eDohMSx5OiExLHQ6VCx0cmFjZTplfV19fSx7Ii4u Ly4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcs Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRvcmFuZ2UiOjc2NCwiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4uL3NjYXR0ZXIvY2Fs YyI6MTEyMSwiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjExMjMsIi4v Y29uc3RhbnRzIjoxMTczLCIuL2NvbnZlcnQiOjExNzQsIi4vc2NlbmVfdXBk YXRlIjoxMTgyLCJwb2ludC1jbHVzdGVyIjo0NzF9XSwxMTczOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17VE9PX01BTllfUE9J TlRTOjFlNSxTWU1CT0xfU0RGX1NJWkU6MjAwLFNZTUJPTF9TSVpFOjIwLFNZ TUJPTF9TVFJPS0U6MSxET1RfUkU6Ly1kb3QvLE9QRU5fUkU6Ly1vcGVuLyxE QVNIRVM6e3NvbGlkOlsxXSxkb3Q6WzEsMV0sZGFzaDpbNCwxXSxsb25nZGFz aDpbOCwxXSxkYXNoZG90Ols0LDEsMSwxXSxsb25nZGFzaGRvdDpbOCwxLDEs MV19fX0se31dLDExNzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoInN2Zy1wYXRoLXNkZiIp LGk9dCgiY29sb3Itbm9ybWFsaXplIiksbz10KCIuLi8uLi9yZWdpc3RyeSIp LHM9dCgiLi4vLi4vbGliIiksbD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdp bmciKSxjPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLHU9 dCgiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciIpLmZvcm1hdENvbG9yLGg9 dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGY9dCgiLi4vc2NhdHRlci9tYWtl X2J1YmJsZV9zaXplX2Z1bmMiKSxwPXQoIi4vaGVscGVycyIpLGQ9dCgiLi9j b25zdGFudHMiKSxnPXQoIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMi KS5ERVNFTEVDVERJTSx2PXtzdGFydDoxLGxlZnQ6MSxlbmQ6LTEscmlnaHQ6 LTEsbWlkZGxlOjAsY2VudGVyOjAsYm90dG9tOjEsdG9wOi0xfSxtPXQoIi4u Ly4uL2NvbXBvbmVudHMvZngvaGVscGVycyIpLmFwcGVuZEFycmF5UG9pbnRW YWx1ZTtmdW5jdGlvbiB5KHQsZSl7dmFyIHIsYT10Ll9mdWxsTGF5b3V0LGk9 ZS5fbGVuZ3RoLG89ZS50ZXh0Zm9udCxsPWUudGV4dHBvc2l0aW9uLGM9QXJy YXkuaXNBcnJheShsKT9sOltsXSx1PW8uY29sb3IsaD1vLnNpemUsZj1vLmZh bWlseSxwPXt9LGQ9ZS50ZXh0dGVtcGxhdGU7aWYoZCl7cC50ZXh0PVtdO3Zh ciBnPWEuX2QzbG9jYWxlLHY9QXJyYXkuaXNBcnJheShkKSx5PXY/TWF0aC5t aW4oZC5sZW5ndGgsaSk6aSx4PXY/ZnVuY3Rpb24odCl7cmV0dXJuIGRbdF19 OmZ1bmN0aW9uKCl7cmV0dXJuIGR9O2ZvcihyPTA7cjx5O3IrKyl7dmFyIGI9 e2k6cn0sXz1lLl9tb2R1bGUuZm9ybWF0TGFiZWxzKGIsZSxhKSx3PXt9O20o dyxlLHIpO3ZhciBrPWUuX21ldGF8fHt9O3AudGV4dC5wdXNoKHMudGV4dHRl bXBsYXRlU3RyaW5nKHgociksXyxnLHcsYixrKSl9fWVsc2UgQXJyYXkuaXNB cnJheShlLnRleHQpJiZlLnRleHQubGVuZ3RoPGk/cC50ZXh0PWUudGV4dC5z bGljZSgpOnAudGV4dD1lLnRleHQ7aWYoQXJyYXkuaXNBcnJheShwLnRleHQp KWZvcihyPXAudGV4dC5sZW5ndGg7cjxpO3IrKylwLnRleHRbcl09IiI7Zm9y KHAub3BhY2l0eT1lLm9wYWNpdHkscC5mb250PXt9LHAuYWxpZ249W10scC5i YXNlbGluZT1bXSxyPTA7cjxjLmxlbmd0aDtyKyspe3ZhciBUPWNbcl0uc3Bs aXQoL1xzKy8pO3N3aXRjaChUWzFdKXtjYXNlImxlZnQiOnAuYWxpZ24ucHVz aCgicmlnaHQiKTticmVhaztjYXNlInJpZ2h0IjpwLmFsaWduLnB1c2goImxl ZnQiKTticmVhaztkZWZhdWx0OnAuYWxpZ24ucHVzaChUWzFdKX1zd2l0Y2go VFswXSl7Y2FzZSJ0b3AiOnAuYmFzZWxpbmUucHVzaCgiYm90dG9tIik7YnJl YWs7Y2FzZSJib3R0b20iOnAuYmFzZWxpbmUucHVzaCgidG9wIik7YnJlYWs7 ZGVmYXVsdDpwLmJhc2VsaW5lLnB1c2goVFswXSl9fWlmKEFycmF5LmlzQXJy YXkodSkpZm9yKHAuY29sb3I9bmV3IEFycmF5KGkpLHI9MDtyPGk7cisrKXAu Y29sb3Jbcl09dVtyXTtlbHNlIHAuY29sb3I9dTtpZihzLmlzQXJyYXlPclR5 cGVkQXJyYXkoaCl8fEFycmF5LmlzQXJyYXkoZikpZm9yKHAuZm9udD1uZXcg QXJyYXkoaSkscj0wO3I8aTtyKyspe3ZhciBNPXAuZm9udFtyXT17fTtNLnNp emU9cy5pc1R5cGVkQXJyYXkoaCk/aFtyXTpBcnJheS5pc0FycmF5KGgpP24o aFtyXSk/aFtyXTowOmgsTS5mYW1pbHk9QXJyYXkuaXNBcnJheShmKT9mW3Jd OmZ9ZWxzZSBwLmZvbnQ9e3NpemU6aCxmYW1pbHk6Zn07cmV0dXJuIHB9ZnVu Y3Rpb24geCh0KXt2YXIgZSxyLG49dC5fbGVuZ3RoLGE9dC5tYXJrZXIsbz17 fSxsPXMuaXNBcnJheU9yVHlwZWRBcnJheShhLnN5bWJvbCksYz1zLmlzQXJy YXlPclR5cGVkQXJyYXkoYS5jb2xvciksaD1zLmlzQXJyYXlPclR5cGVkQXJy YXkoYS5saW5lLmNvbG9yKSxkPXMuaXNBcnJheU9yVHlwZWRBcnJheShhLm9w YWNpdHkpLGc9cy5pc0FycmF5T3JUeXBlZEFycmF5KGEuc2l6ZSksdj1zLmlz QXJyYXlPclR5cGVkQXJyYXkoYS5saW5lLndpZHRoKTtpZihsfHwocj1wLmlz T3BlblN5bWJvbChhLnN5bWJvbCkpLGx8fGN8fGh8fGQpe28uY29sb3JzPW5l dyBBcnJheShuKSxvLmJvcmRlckNvbG9ycz1uZXcgQXJyYXkobik7dmFyIG09 dShhLGEub3BhY2l0eSxuKSx5PXUoYS5saW5lLGEub3BhY2l0eSxuKTtpZigh QXJyYXkuaXNBcnJheSh5WzBdKSl7dmFyIHg9eTtmb3IoeT1BcnJheShuKSxl PTA7ZTxuO2UrKyl5W2VdPXh9aWYoIUFycmF5LmlzQXJyYXkobVswXSkpe3Zh ciBiPW07Zm9yKG09QXJyYXkobiksZT0wO2U8bjtlKyspbVtlXT1ifWZvcihv LmNvbG9ycz1tLG8uYm9yZGVyQ29sb3JzPXksZT0wO2U8bjtlKyspe2lmKGwp e3ZhciBfPWEuc3ltYm9sW2VdO3I9cC5pc09wZW5TeW1ib2woXyl9ciYmKHlb ZV09bVtlXS5zbGljZSgpLG1bZV09bVtlXS5zbGljZSgpLG1bZV1bM109MCl9 by5vcGFjaXR5PXQub3BhY2l0eX1lbHNlIHI/KG8uY29sb3I9aShhLmNvbG9y LCJ1aW50OCIpLG8uY29sb3JbM109MCxvLmJvcmRlckNvbG9yPWkoYS5jb2xv ciwidWludDgiKSk6KG8uY29sb3I9aShhLmNvbG9yLCJ1aW50OCIpLG8uYm9y ZGVyQ29sb3I9aShhLmxpbmUuY29sb3IsInVpbnQ4IikpLG8ub3BhY2l0eT10 Lm9wYWNpdHkqYS5vcGFjaXR5O2lmKGwpZm9yKG8ubWFya2Vycz1uZXcgQXJy YXkobiksZT0wO2U8bjtlKyspby5tYXJrZXJzW2VdPUUoYS5zeW1ib2xbZV0p O2Vsc2Ugby5tYXJrZXI9RShhLnN5bWJvbCk7dmFyIHcsaz1mKHQpO2lmKGd8 fHYpe3ZhciBULE09by5zaXplcz1uZXcgQXJyYXkobiksQT1vLmJvcmRlclNp emVzPW5ldyBBcnJheShuKSxTPTA7aWYoZyl7Zm9yKGU9MDtlPG47ZSsrKU1b ZV09ayhhLnNpemVbZV0pLFMrPU1bZV07VD1TL259ZWxzZSBmb3Iodz1rKGEu c2l6ZSksZT0wO2U8bjtlKyspTVtlXT13O2lmKHYpZm9yKGU9MDtlPG47ZSsr KUFbZV09YS5saW5lLndpZHRoW2VdLzI7ZWxzZSBmb3Iodz1hLmxpbmUud2lk dGgvMixlPTA7ZTxuO2UrKylBW2VdPXc7by5zaXplQXZnPVR9ZWxzZSBvLnNp emU9ayhhJiZhLnNpemV8fDEwKSxvLmJvcmRlclNpemVzPWsoYS5saW5lLndp ZHRoKTtyZXR1cm4gb31mdW5jdGlvbiBiKHQsZSl7dmFyIHI9dC5tYXJrZXIs bj17fTtyZXR1cm4gZT8oZS5tYXJrZXImJmUubWFya2VyLnN5bWJvbD9uPXgo cy5leHRlbmRGbGF0KHt9LHIsZS5tYXJrZXIpKTplLm1hcmtlciYmKGUubWFy a2VyLnNpemUmJihuLnNpemU9ZS5tYXJrZXIuc2l6ZS8yKSxlLm1hcmtlci5j b2xvciYmKG4uY29sb3JzPWUubWFya2VyLmNvbG9yKSx2b2lkIDAhPT1lLm1h cmtlci5vcGFjaXR5JiYobi5vcGFjaXR5PWUubWFya2VyLm9wYWNpdHkpKSxu KTpufWZ1bmN0aW9uIF8odCxlLHIpe3ZhciBuPXt9O2lmKCFyKXJldHVybiBu O2lmKHIudGV4dGZvbnQpe3ZhciBhPXtvcGFjaXR5OjEsdGV4dDplLnRleHQs dGV4dHRlbXBsYXRlOmUudGV4dHRlbXBsYXRlLHRleHRwb3NpdGlvbjplLnRl eHRwb3NpdGlvbix0ZXh0Zm9udDpzLmV4dGVuZEZsYXQoe30sZS50ZXh0Zm9u dCl9O3IudGV4dGZvbnQmJnMuZXh0ZW5kRmxhdChhLnRleHRmb250LHIudGV4 dGZvbnQpLG49eSh0LGEpfXJldHVybiBufWZ1bmN0aW9uIHcodCxlKXt2YXIg cj17Y2FwU2l6ZToyKmUud2lkdGgsbGluZVdpZHRoOmUudGhpY2tuZXNzLGNv bG9yOmUuY29sb3J9O3JldHVybiBlLmNvcHlfeXN0eWxlJiYocj10LmVycm9y X3kpLHJ9dmFyIGs9ZC5TWU1CT0xfU0RGX1NJWkUsVD1kLlNZTUJPTF9TSVpF LE09ZC5TWU1CT0xfU1RST0tFLEE9e30sUz1sLnN5bWJvbEZ1bmNzWzBdKC4w NSpUKTtmdW5jdGlvbiBFKHQpe2lmKCJjaXJjbGUiPT09dClyZXR1cm4gbnVs bDt2YXIgZSxyLG49bC5zeW1ib2xOdW1iZXIodCksaT1sLnN5bWJvbEZ1bmNz W24lMTAwXSxvPSEhbC5zeW1ib2xOb0RvdFtuJTEwMF0scz0hIWwuc3ltYm9s Tm9GaWxsW24lMTAwXSxjPXAuaXNEb3RTeW1ib2wodCk7cmV0dXJuIEFbdF0/ QVt0XTooZT1jJiYhbz9pKDEuMSpUKStTOmkoVCkscj1hKGUse3c6ayxoOmss dmlld0JveDpbLVQsLVQsVCxUXSxzdHJva2U6cz9NOi1NfSksQVt0XT1yLHJ8 fG51bGwpfWUuZXhwb3J0cz17c3R5bGU6ZnVuY3Rpb24odCxlKXt2YXIgcixu PXttYXJrZXI6dm9pZCAwLG1hcmtlclNlbDp2b2lkIDAsbWFya2VyVW5zZWw6 dm9pZCAwLGxpbmU6dm9pZCAwLGZpbGw6dm9pZCAwLGVycm9yWDp2b2lkIDAs ZXJyb3JZOnZvaWQgMCx0ZXh0OnZvaWQgMCx0ZXh0U2VsOnZvaWQgMCx0ZXh0 VW5zZWw6dm9pZCAwfTtpZighMCE9PWUudmlzaWJsZSlyZXR1cm4gbjtpZiho Lmhhc1RleHQoZSkmJihuLnRleHQ9eSh0LGUpLG4udGV4dFNlbD1fKHQsZSxl LnNlbGVjdGVkKSxuLnRleHRVbnNlbD1fKHQsZSxlLnVuc2VsZWN0ZWQpKSxo Lmhhc01hcmtlcnMoZSkmJihuLm1hcmtlcj14KGUpLG4ubWFya2VyU2VsPWIo ZSxlLnNlbGVjdGVkKSxuLm1hcmtlclVuc2VsPWIoZSxlLnVuc2VsZWN0ZWQp LCFlLnVuc2VsZWN0ZWQmJnMuaXNBcnJheU9yVHlwZWRBcnJheShlLm1hcmtl ci5vcGFjaXR5KSkpe3ZhciBhPWUubWFya2VyLm9wYWNpdHk7Zm9yKG4ubWFy a2VyVW5zZWwub3BhY2l0eT1uZXcgQXJyYXkoYS5sZW5ndGgpLHI9MDtyPGEu bGVuZ3RoO3IrKyluLm1hcmtlclVuc2VsLm9wYWNpdHlbcl09ZyphW3JdfWlm KGguaGFzTGluZXMoZSkpe24ubGluZT17b3ZlcmxheTohMCx0aGlja25lc3M6 ZS5saW5lLndpZHRoLGNvbG9yOmUubGluZS5jb2xvcixvcGFjaXR5OmUub3Bh Y2l0eX07dmFyIGk9KGQuREFTSEVTW2UubGluZS5kYXNoXXx8WzFdKS5zbGlj ZSgpO2ZvcihyPTA7cjxpLmxlbmd0aDsrK3IpaVtyXSo9ZS5saW5lLndpZHRo O24ubGluZS5kYXNoZXM9aX1yZXR1cm4gZS5lcnJvcl94JiZlLmVycm9yX3gu dmlzaWJsZSYmKG4uZXJyb3JYPXcoZSxlLmVycm9yX3gpKSxlLmVycm9yX3km JmUuZXJyb3JfeS52aXNpYmxlJiYobi5lcnJvclk9dyhlLGUuZXJyb3JfeSkp LGUuZmlsbCYmIm5vbmUiIT09ZS5maWxsJiYobi5maWxsPXtjbG9zZWQ6ITAs ZmlsbDplLmZpbGxjb2xvcix0aGlja25lc3M6MH0pLG59LG1hcmtlclN0eWxl OngsbWFya2VyU2VsZWN0aW9uOmIsbGluZVBvc2l0aW9uczpmdW5jdGlvbih0 LGUscil7dmFyIG4sYSxpPXIubGVuZ3RoLG89aS8yO2lmKGguaGFzTGluZXMo ZSkmJm8paWYoImh2Ij09PWUubGluZS5zaGFwZSl7Zm9yKG49W10sYT0wO2E8 by0xO2ErKylpc05hTihyWzIqYV0pfHxpc05hTihyWzIqYSsxXSk/bi5wdXNo KE5hTixOYU4sTmFOLE5hTik6KG4ucHVzaChyWzIqYV0sclsyKmErMV0pLGlz TmFOKHJbMiphKzJdKXx8aXNOYU4oclsyKmErM10pP24ucHVzaChOYU4sTmFO KTpuLnB1c2goclsyKmErMl0sclsyKmErMV0pKTtuLnB1c2gocltpLTJdLHJb aS0xXSl9ZWxzZSBpZigiaHZoIj09PWUubGluZS5zaGFwZSl7Zm9yKG49W10s YT0wO2E8by0xO2ErKylpZihpc05hTihyWzIqYV0pfHxpc05hTihyWzIqYSsx XSl8fGlzTmFOKHJbMiphKzJdKXx8aXNOYU4oclsyKmErM10pKWlzTmFOKHJb MiphXSl8fGlzTmFOKHJbMiphKzFdKT9uLnB1c2goTmFOLE5hTik6bi5wdXNo KHJbMiphXSxyWzIqYSsxXSksbi5wdXNoKE5hTixOYU4pO2Vsc2V7dmFyIHM9 KHJbMiphXStyWzIqYSsyXSkvMjtuLnB1c2goclsyKmFdLHJbMiphKzFdLHMs clsyKmErMV0scyxyWzIqYSszXSl9bi5wdXNoKHJbaS0yXSxyW2ktMV0pfWVs c2UgaWYoInZodiI9PT1lLmxpbmUuc2hhcGUpe2ZvcihuPVtdLGE9MDthPG8t MTthKyspaWYoaXNOYU4oclsyKmFdKXx8aXNOYU4oclsyKmErMV0pfHxpc05h TihyWzIqYSsyXSl8fGlzTmFOKHJbMiphKzNdKSlpc05hTihyWzIqYV0pfHxp c05hTihyWzIqYSsxXSk/bi5wdXNoKE5hTixOYU4pOm4ucHVzaChyWzIqYV0s clsyKmErMV0pLG4ucHVzaChOYU4sTmFOKTtlbHNle3ZhciBsPShyWzIqYSsx XStyWzIqYSszXSkvMjtuLnB1c2goclsyKmFdLHJbMiphKzFdLHJbMiphXSxs LHJbMiphKzJdLGwpfW4ucHVzaChyW2ktMl0scltpLTFdKX1lbHNlIGlmKCJ2 aCI9PT1lLmxpbmUuc2hhcGUpe2ZvcihuPVtdLGE9MDthPG8tMTthKyspaXNO YU4oclsyKmFdKXx8aXNOYU4oclsyKmErMV0pP24ucHVzaChOYU4sTmFOLE5h TixOYU4pOihuLnB1c2goclsyKmFdLHJbMiphKzFdKSxpc05hTihyWzIqYSsy XSl8fGlzTmFOKHJbMiphKzNdKT9uLnB1c2goTmFOLE5hTik6bi5wdXNoKHJb MiphXSxyWzIqYSszXSkpO24ucHVzaChyW2ktMl0scltpLTFdKX1lbHNlIG49 cjt2YXIgYz0hMTtmb3IoYT0wO2E8bi5sZW5ndGg7YSsrKWlmKGlzTmFOKG5b YV0pKXtjPSEwO2JyZWFrfXZhciB1PWN8fG4ubGVuZ3RoPmQuVE9PX01BTllf UE9JTlRTPyJyZWN0IjpoLmhhc01hcmtlcnMoZSk/InJlY3QiOiJyb3VuZCI7 aWYoYyYmZS5jb25uZWN0Z2Fwcyl7dmFyIGY9blswXSxwPW5bMV07Zm9yKGE9 MDthPG4ubGVuZ3RoO2ErPTIpaXNOYU4oblthXSl8fGlzTmFOKG5bYSsxXSk/ KG5bYV09ZixuW2ErMV09cCk6KGY9blthXSxwPW5bYSsxXSl9cmV0dXJue2pv aW46dSxwb3NpdGlvbnM6bn19LGVycm9yQmFyUG9zaXRpb25zOmZ1bmN0aW9u KHQsZSxyLGEsaSl7dmFyIHM9by5nZXRDb21wb25lbnRNZXRob2QoImVycm9y YmFycyIsIm1ha2VDb21wdXRlRXJyb3IiKSxsPWMuZ2V0RnJvbUlkKHQsZS54 YXhpcyksdT1jLmdldEZyb21JZCh0LGUueWF4aXMpLGg9ci5sZW5ndGgvMixm PXt9O2Z1bmN0aW9uIHAodCxhKXt2YXIgaT1hLl9pZC5jaGFyQXQoMCksbz1l WyJlcnJvcl8iK2ldO2lmKG8mJm8udmlzaWJsZSYmKCJsaW5lYXIiPT09YS50 eXBlfHwibG9nIj09PWEudHlwZSkpe2Zvcih2YXIgbD1zKG8pLGM9e3g6MCx5 OjF9W2ldLHU9e3g6WzAsMSwyLDNdLHk6WzIsMywwLDFdfVtpXSxwPW5ldyBG bG9hdDY0QXJyYXkoNCpoKSxkPTEvMCxnPS0xLzAsdj0wLG09MDt2PGg7disr LG0rPTQpe3ZhciB5PXRbdl07aWYobih5KSl7dmFyIHg9clsyKnYrY10sYj1s KHksdiksXz1iWzBdLHc9YlsxXTtpZihuKF8pJiZuKHcpKXt2YXIgaz15LV8s VD15K3c7cFttK3VbMF1dPXgtYS5jMmwoaykscFttK3VbMV1dPWEuYzJsKFQp LXgscFttK3VbMl1dPTAscFttK3VbM11dPTAsZD1NYXRoLm1pbihkLHktXyks Zz1NYXRoLm1heChnLHkrdyl9fX1mW2ldPXtwb3NpdGlvbnM6cixlcnJvcnM6 cCxfYm5kczpbZCxnXX19fXJldHVybiBwKGEsbCkscChpLHUpLGZ9LHRleHRQ b3NpdGlvbjpmdW5jdGlvbih0LGUscixuKXt2YXIgYSxpPWUuX2xlbmd0aCxv PXt9O2lmKGguaGFzTWFya2VycyhlKSl7dmFyIHM9ci5mb250LGw9ci5hbGln bixjPXIuYmFzZWxpbmU7Zm9yKG8ub2Zmc2V0PW5ldyBBcnJheShpKSxhPTA7 YTxpO2ErKyl7dmFyIHU9bi5zaXplcz9uLnNpemVzW2FdOm4uc2l6ZSxmPUFy cmF5LmlzQXJyYXkocyk/c1thXS5zaXplOnMuc2l6ZSxwPUFycmF5LmlzQXJy YXkobCk/bC5sZW5ndGg+MT9sW2FdOmxbMF06bCxkPUFycmF5LmlzQXJyYXko Yyk/Yy5sZW5ndGg+MT9jW2FdOmNbMF06YyxnPXZbcF0sbT12W2RdLHk9dT91 Ly44KzE6MCx4PS1tKnktLjUqbTtvLm9mZnNldFthXT1bZyp5L2YseC9mXX19 cmV0dXJuIG99fX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywi Li4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIjo2MjcsIi4uLy4uL2NvbnN0 YW50cy9pbnRlcmFjdGlvbnMiOjY5MiwiLi4vLi4vbGliIjo3MTcsIi4uLy4u L2xpYi9nbF9mb3JtYXRfY29sb3IiOjcxNCwiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2F4aXNfaWRzIjo3NjgsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4uL3Nj YXR0ZXIvbWFrZV9idWJibGVfc2l6ZV9mdW5jIjoxMTM3LCIuLi9zY2F0dGVy L3N1YnR5cGVzIjoxMTQ0LCIuL2NvbnN0YW50cyI6MTE3MywiLi9oZWxwZXJz IjoxMTc4LCJjb2xvci1ub3JtYWxpemUiOjEyMiwiZmFzdC1pc251bWVyaWMi OjIyOCwic3ZnLXBhdGgtc2RmIjo1MzR9XSwxMTc1OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4v Li4vcmVnaXN0cnkiKSxpPXQoIi4vaGVscGVycyIpLG89dCgiLi9hdHRyaWJ1 dGVzIikscz10KCIuLi9zY2F0dGVyL2NvbnN0YW50cyIpLGw9dCgiLi4vc2Nh dHRlci9zdWJ0eXBlcyIpLGM9dCgiLi4vc2NhdHRlci94eV9kZWZhdWx0cyIp LHU9dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxoPXQoIi4uL3Nj YXR0ZXIvbGluZV9kZWZhdWx0cyIpLGY9dCgiLi4vc2NhdHRlci9maWxsY29s b3JfZGVmYXVsdHMiKSxwPXQoIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixkKXtmdW5jdGlvbiBnKHIsYSl7 cmV0dXJuIG4uY29lcmNlKHQsZSxvLHIsYSl9dmFyIHY9ISF0Lm1hcmtlciYm aS5pc09wZW5TeW1ib2wodC5tYXJrZXIuc3ltYm9sKSxtPWwuaXNCdWJibGUo dCkseT1jKHQsZSxkLGcpO2lmKHkpe3ZhciB4PXk8cy5QVFNfTElORVNPTkxZ PyJsaW5lcyttYXJrZXJzIjoibGluZXMiO2coInRleHQiKSxnKCJob3ZlcnRl eHQiKSxnKCJob3ZlcnRlbXBsYXRlIiksZygibW9kZSIseCksbC5oYXNMaW5l cyhlKSYmKGcoImNvbm5lY3RnYXBzIiksaCh0LGUscixkLGcpLGcoImxpbmUu c2hhcGUiKSksbC5oYXNNYXJrZXJzKGUpJiYodSh0LGUscixkLGcpLGcoIm1h cmtlci5saW5lLndpZHRoIix2fHxtPzE6MCkpLGwuaGFzVGV4dChlKSYmKGco InRleHR0ZW1wbGF0ZSIpLHAodCxlLGQsZykpO3ZhciBiPShlLmxpbmV8fHt9 KS5jb2xvcixfPShlLm1hcmtlcnx8e30pLmNvbG9yO2coImZpbGwiKSwibm9u ZSIhPT1lLmZpbGwmJmYodCxlLHIsZyk7dmFyIHc9YS5nZXRDb21wb25lbnRN ZXRob2QoImVycm9yYmFycyIsInN1cHBseURlZmF1bHRzIik7dyh0LGUsYnx8 X3x8cix7YXhpczoieSJ9KSx3KHQsZSxifHxffHxyLHtheGlzOiJ4Iixpbmhl cml0OiJ5In0pLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLGcp fWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4v cmVnaXN0cnkiOjg0NiwiLi4vc2NhdHRlci9jb25zdGFudHMiOjExMjQsIi4u L3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIjoxMTI4LCIuLi9zY2F0dGVy L2xpbmVfZGVmYXVsdHMiOjExMzMsIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1 bHRzIjoxMTM5LCIuLi9zY2F0dGVyL3N1YnR5cGVzIjoxMTQ0LCIuLi9zY2F0 dGVyL3RleHRfZGVmYXVsdHMiOjExNDUsIi4uL3NjYXR0ZXIveHlfZGVmYXVs dHMiOjExNDYsIi4vYXR0cmlidXRlcyI6MTE3MSwiLi9oZWxwZXJzIjoxMTc4 fV0sMTE3NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxp PXQoIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiKS5ERVNFTEVDVERJ TTtlLmV4cG9ydHM9e3N0eWxlVGV4dFNlbGVjdGlvbjpmdW5jdGlvbih0KXt2 YXIgZSxyLG89dFswXSxzPW8udHJhY2UsbD1vLnQsYz1sLl9zY2VuZSx1PWwu aW5kZXgsaD1jLnNlbGVjdEJhdGNoW3VdLGY9Yy51bnNlbGVjdEJhdGNoW3Vd LHA9Yy50ZXh0T3B0aW9uc1t1XSxkPWMudGV4dFNlbGVjdGVkT3B0aW9uc1t1 XXx8e30sZz1jLnRleHRVbnNlbGVjdGVkT3B0aW9uc1t1XXx8e30sdj1uLmV4 dGVuZEZsYXQoe30scCk7aWYoaC5sZW5ndGh8fGYubGVuZ3RoKXt2YXIgbT1k LmNvbG9yLHk9Zy5jb2xvcix4PXAuY29sb3IsYj1BcnJheS5pc0FycmF5KHgp O2Zvcih2LmNvbG9yPW5ldyBBcnJheShzLl9sZW5ndGgpLGU9MDtlPGgubGVu Z3RoO2UrKylyPWhbZV0sdi5jb2xvcltyXT1tfHwoYj94W3JdOngpO2Zvcihl PTA7ZTxmLmxlbmd0aDtlKyspe3I9ZltlXTt2YXIgXz1iP3hbcl06eDt2LmNv bG9yW3JdPXl8fChtP186YS5hZGRPcGFjaXR5KF8saSkpfX1jLmdsVGV4dFt1 XS51cGRhdGUodil9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIs Ii4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiOjY5MiwiLi4vLi4vbGli Ijo3MTd9XSwxMTc3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uL3NjYXR0ZXIvZm9ybWF0X2xhYmVscyIpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscil7dmFyIGE9dC5pO3JldHVybiJ4ImluIHR8fCh0Lng9 ZS5feFthXSksInkiaW4gdHx8KHQueT1lLl95W2FdKSxuKHQsZSxyKX19LHsi Li4vc2NhdHRlci9mb3JtYXRfbGFiZWxzIjoxMTI5fV0sMTE3ODpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIp O3IuaXNPcGVuU3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10 eXBlb2YgdD9uLk9QRU5fUkUudGVzdCh0KTp0JTIwMD4xMDB9LHIuaXNEb3RT eW1ib2w9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P24u RE9UX1JFLnRlc3QodCk6dD4yMDB9fSx7Ii4vY29uc3RhbnRzIjoxMTczfV0s MTE3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi9zY2F0 dGVyL2dldF90cmFjZV9jb2xvciIpO2Z1bmN0aW9uIG8odCxlLHIsbyl7dmFy IHM9dC54YSxsPXQueWEsYz10LmRpc3RhbmNlLHU9dC5keHksaD10LmluZGV4 LGY9e3BvaW50TnVtYmVyOmgseDplW2hdLHk6cltoXX07Zi50eD1BcnJheS5p c0FycmF5KG8udGV4dCk/by50ZXh0W2hdOm8udGV4dCxmLmh0eD1BcnJheS5p c0FycmF5KG8uaG92ZXJ0ZXh0KT9vLmhvdmVydGV4dFtoXTpvLmhvdmVydGV4 dCxmLmRhdGE9QXJyYXkuaXNBcnJheShvLmN1c3RvbWRhdGEpP28uY3VzdG9t ZGF0YVtoXTpvLmN1c3RvbWRhdGEsZi50cD1BcnJheS5pc0FycmF5KG8udGV4 dHBvc2l0aW9uKT9vLnRleHRwb3NpdGlvbltoXTpvLnRleHRwb3NpdGlvbjt2 YXIgcD1vLnRleHRmb250O3AmJihmLnRzPWEuaXNBcnJheU9yVHlwZWRBcnJh eShwLnNpemUpP3Auc2l6ZVtoXTpwLnNpemUsZi50Yz1BcnJheS5pc0FycmF5 KHAuY29sb3IpP3AuY29sb3JbaF06cC5jb2xvcixmLnRmPUFycmF5LmlzQXJy YXkocC5mYW1pbHkpP3AuZmFtaWx5W2hdOnAuZmFtaWx5KTt2YXIgZD1vLm1h cmtlcjtkJiYoZi5tcz1hLmlzQXJyYXlPclR5cGVkQXJyYXkoZC5zaXplKT9k LnNpemVbaF06ZC5zaXplLGYubW89YS5pc0FycmF5T3JUeXBlZEFycmF5KGQu b3BhY2l0eSk/ZC5vcGFjaXR5W2hdOmQub3BhY2l0eSxmLm14PWEuaXNBcnJh eU9yVHlwZWRBcnJheShkLnN5bWJvbCk/ZC5zeW1ib2xbaF06ZC5zeW1ib2ws Zi5tYz1hLmlzQXJyYXlPclR5cGVkQXJyYXkoZC5jb2xvcik/ZC5jb2xvclto XTpkLmNvbG9yKTt2YXIgZz1kJiZkLmxpbmU7ZyYmKGYubWxjPUFycmF5Lmlz QXJyYXkoZy5jb2xvcik/Zy5jb2xvcltoXTpnLmNvbG9yLGYubWx3PWEuaXNB cnJheU9yVHlwZWRBcnJheShnLndpZHRoKT9nLndpZHRoW2hdOmcud2lkdGgp O3ZhciB2PWQmJmQuZ3JhZGllbnQ7diYmIm5vbmUiIT09di50eXBlJiYoZi5t Z3Q9QXJyYXkuaXNBcnJheSh2LnR5cGUpP3YudHlwZVtoXTp2LnR5cGUsZi5t Z2M9QXJyYXkuaXNBcnJheSh2LmNvbG9yKT92LmNvbG9yW2hdOnYuY29sb3Ip O3ZhciBtPXMuYzJwKGYueCwhMCkseT1sLmMycChmLnksITApLHg9Zi5tcmN8 fDEsYj1vLmhvdmVybGFiZWw7YiYmKGYuaGJnPUFycmF5LmlzQXJyYXkoYi5i Z2NvbG9yKT9iLmJnY29sb3JbaF06Yi5iZ2NvbG9yLGYuaGJjPUFycmF5Lmlz QXJyYXkoYi5ib3JkZXJjb2xvcik/Yi5ib3JkZXJjb2xvcltoXTpiLmJvcmRl cmNvbG9yLGYuaHRzPWEuaXNBcnJheU9yVHlwZWRBcnJheShiLmZvbnQuc2l6 ZSk/Yi5mb250LnNpemVbaF06Yi5mb250LnNpemUsZi5odGM9QXJyYXkuaXNB cnJheShiLmZvbnQuY29sb3IpP2IuZm9udC5jb2xvcltoXTpiLmZvbnQuY29s b3IsZi5odGY9QXJyYXkuaXNBcnJheShiLmZvbnQuZmFtaWx5KT9iLmZvbnQu ZmFtaWx5W2hdOmIuZm9udC5mYW1pbHksZi5obmw9YS5pc0FycmF5T3JUeXBl ZEFycmF5KGIubmFtZWxlbmd0aCk/Yi5uYW1lbGVuZ3RoW2hdOmIubmFtZWxl bmd0aCk7dmFyIF89by5ob3ZlcmluZm87XyYmKGYuaGk9QXJyYXkuaXNBcnJh eShfKT9fW2hdOl8pO3ZhciB3PW8uaG92ZXJ0ZW1wbGF0ZTt3JiYoZi5odD1B cnJheS5pc0FycmF5KHcpP3dbaF06dyk7dmFyIGs9e307a1t0LmluZGV4XT1m O3ZhciBUPWEuZXh0ZW5kRmxhdCh7fSx0LHtjb2xvcjppKG8sZikseDA6bS14 LHgxOm0reCx4TGFiZWxWYWw6Zi54LHkwOnkteCx5MTp5K3gseUxhYmVsVmFs OmYueSxjZDprLGRpc3RhbmNlOmMsc3Bpa2VEaXN0YW5jZTp1LGhvdmVydGVt cGxhdGU6Zi5odH0pO3JldHVybiBmLmh0eD9ULnRleHQ9Zi5odHg6Zi50eD9U LnRleHQ9Zi50eDpvLnRleHQmJihULnRleHQ9by50ZXh0KSxhLmZpbGxUZXh0 KGYsbyxUKSxuLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwiaG92 ZXJJbmZvIikoZixvLFQpLFR9ZS5leHBvcnRzPXtob3ZlclBvaW50czpmdW5j dGlvbih0LGUscixuKXt2YXIgYSxpLHMsbCxjLHUsaCxmLHAsZD10LmNkLGc9 ZFswXS50LHY9ZFswXS50cmFjZSxtPXQueGEseT10LnlhLHg9Zy54LGI9Zy55 LF89bS5jMnAoZSksdz15LmMycChyKSxrPXQuZGlzdGFuY2U7aWYoZy50cmVl KXt2YXIgVD1tLnAyYyhfLWspLE09bS5wMmMoXytrKSxBPXkucDJjKHctayks Uz15LnAyYyh3K2spO2E9IngiPT09bj9nLnRyZWUucmFuZ2UoTWF0aC5taW4o VCxNKSxNYXRoLm1pbih5Ll9ybFswXSx5Ll9ybFsxXSksTWF0aC5tYXgoVCxN KSxNYXRoLm1heCh5Ll9ybFswXSx5Ll9ybFsxXSkpOmcudHJlZS5yYW5nZShN YXRoLm1pbihULE0pLE1hdGgubWluKEEsUyksTWF0aC5tYXgoVCxNKSxNYXRo Lm1heChBLFMpKX1lbHNlIGE9Zy5pZHM7dmFyIEU9aztpZigieCI9PT1uKWZv cihjPTA7YzxhLmxlbmd0aDtjKyspcz14W2FbY11dLCh1PU1hdGguYWJzKG0u YzJwKHMpLV8pKTxFJiYoRT11LGg9eS5jMnAoYlthW2NdXSktdyxwPU1hdGgu c3FydCh1KnUraCpoKSxpPWFbY10pO2Vsc2UgZm9yKGM9YS5sZW5ndGgtMTtj Pi0xO2MtLSlzPXhbYVtjXV0sbD1iW2FbY11dLHU9bS5jMnAocyktXyxoPXku YzJwKGwpLXcsKGY9TWF0aC5zcXJ0KHUqdStoKmgpKTxFJiYoRT1wPWYsaT1h W2NdKTtyZXR1cm4gdC5pbmRleD1pLHQuZGlzdGFuY2U9RSx0LmR4eT1wLHZv aWQgMD09PWk/W3RdOltvKHQseCxiLHYpXX0sY2FsY0hvdmVyOm99fSx7Ii4u Ly4uL2xpYiI6NzE3LCIuLi8uLi9yZWdpc3RyeSI6ODQ2LCIuLi9zY2F0dGVy L2dldF90cmFjZV9jb2xvciI6MTEzMH1dLDExODA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9ob3ZlciIpO2UuZXhwb3J0cz17 bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InNjYXR0ZXJnbCIsYmFzZVBsb3RN b2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpb ImdsIiwicmVnbCIsImNhcnRlc2lhbiIsInN5bWJvbHMiLCJlcnJvckJhcnNP SyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiXSxhdHRyaWJ1dGVzOnQo Ii4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMi KSxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi4vc2NhdHRlci9jcm9zc190cmFj ZV9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2Nv bG9yYmFyIiksZm9ybWF0TGFiZWxzOnQoIi4vZm9ybWF0X2xhYmVscyIpLGNh bGM6dCgiLi9jYWxjIikscGxvdDp0KCIuL3Bsb3QiKSxob3ZlclBvaW50czpu LmhvdmVyUG9pbnRzLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLG1ldGE6 e319fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6Nzc2LCIuLi9zY2F0dGVy L2Nyb3NzX3RyYWNlX2RlZmF1bHRzIjoxMTI2LCIuLi9zY2F0dGVyL21hcmtl cl9jb2xvcmJhciI6MTEzOCwiLi9hdHRyaWJ1dGVzIjoxMTcxLCIuL2NhbGMi OjExNzIsIi4vZGVmYXVsdHMiOjExNzUsIi4vZm9ybWF0X2xhYmVscyI6MTE3 NywiLi9ob3ZlciI6MTE3OSwiLi9wbG90IjoxMTgxLCIuL3NlbGVjdCI6MTE4 M31dLDExODE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgicmVnbC1zY2F0dGVyMmQiKSxhPXQoInJlZ2wtbGluZTJkIiksaT10KCJy ZWdsLWVycm9yMmQiKSxvPXQoImdsLXRleHQiKSxzPXQoIi4uLy4uL2xpYiIp LGw9dCgiLi4vLi4vbGliL3ByZXBhcmVfcmVnbCIpLGM9dCgiLi4vc2NhdHRl ci9zdWJ0eXBlcyIpLHU9dCgiLi4vc2NhdHRlci9saW5rX3RyYWNlcyIpLGg9 dCgiLi9lZGl0X3N0eWxlIikuc3R5bGVUZXh0U2VsZWN0aW9uO2Z1bmN0aW9u IGYodCxlLHIpe3ZhciBuPXQuX3NpemUsYT10LndpZHRoLGk9dC5oZWlnaHQ7 cmV0dXJuW24ubCtlLmRvbWFpblswXSpuLncsbi5iK3IuZG9tYWluWzBdKm4u aCxhLW4uci0oMS1lLmRvbWFpblsxXSkqbi53LGktbi50LSgxLXIuZG9tYWlu WzFdKSpuLmhdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aWYoci5sZW5n dGgpe3ZhciBwLGQsZz10Ll9mdWxsTGF5b3V0LHY9ZS5fc2NlbmUsbT1lLnhh eGlzLHk9ZS55YXhpcztpZih2KWlmKGwodCxbIkFOR0xFX2luc3RhbmNlZF9h cnJheXMiLCJPRVNfZWxlbWVudF9pbmRleF91aW50Il0pKXt2YXIgeD12LmNv dW50LGI9Zy5fZ2xjYW52YXMuZGF0YSgpWzBdLnJlZ2w7aWYodSh0LGUsciks di5kaXJ0eSl7aWYoITA9PT12LmVycm9yMmQmJih2LmVycm9yMmQ9aShiKSks ITA9PT12LmxpbmUyZCYmKHYubGluZTJkPWEoYikpLCEwPT09di5zY2F0dGVy MmQmJih2LnNjYXR0ZXIyZD1uKGIpKSwhMD09PXYuZmlsbDJkJiYodi5maWxs MmQ9YShiKSksITA9PT12LmdsVGV4dClmb3Iodi5nbFRleHQ9bmV3IEFycmF5 KHgpLHA9MDtwPHg7cCsrKXYuZ2xUZXh0W3BdPW5ldyBvKGIpO2lmKHYuZ2xU ZXh0KXtpZih4PnYuZ2xUZXh0Lmxlbmd0aCl7dmFyIF89eC12LmdsVGV4dC5s ZW5ndGg7Zm9yKHA9MDtwPF87cCsrKXYuZ2xUZXh0LnB1c2gobmV3IG8oYikp fWVsc2UgaWYoeDx2LmdsVGV4dC5sZW5ndGgpe3ZhciB3PXYuZ2xUZXh0Lmxl bmd0aC14O3YuZ2xUZXh0LnNwbGljZSh4LHcpLmZvckVhY2goZnVuY3Rpb24o dCl7dC5kZXN0cm95KCl9KX1mb3IocD0wO3A8eDtwKyspdi5nbFRleHRbcF0u dXBkYXRlKHYudGV4dE9wdGlvbnNbcF0pfWlmKHYubGluZTJkJiYodi5saW5l MmQudXBkYXRlKHYubGluZU9wdGlvbnMpLHYubGluZU9wdGlvbnM9di5saW5l T3B0aW9ucy5tYXAoZnVuY3Rpb24odCl7aWYodCYmdC5wb3NpdGlvbnMpe2Zv cih2YXIgZT10LnBvc2l0aW9ucyxyPTA7cjxlLmxlbmd0aCYmKGlzTmFOKGVb cl0pfHxpc05hTihlW3IrMV0pKTspcis9Mjtmb3IodmFyIG49ZS5sZW5ndGgt MjtuPnImJihpc05hTihlW25dKXx8aXNOYU4oZVtuKzFdKSk7KW4tPTI7dC5w b3NpdGlvbnM9ZS5zbGljZShyLG4rMil9cmV0dXJuIHR9KSx2LmxpbmUyZC51 cGRhdGUodi5saW5lT3B0aW9ucykpLHYuZXJyb3IyZCl7dmFyIGs9KHYuZXJy b3JYT3B0aW9uc3x8W10pLmNvbmNhdCh2LmVycm9yWU9wdGlvbnN8fFtdKTt2 LmVycm9yMmQudXBkYXRlKGspfXYuc2NhdHRlcjJkJiZ2LnNjYXR0ZXIyZC51 cGRhdGUodi5tYXJrZXJPcHRpb25zKSx2LmZpbGxPcmRlcj1zLnJlcGVhdChu dWxsLHgpLHYuZmlsbDJkJiYodi5maWxsT3B0aW9ucz12LmZpbGxPcHRpb25z Lm1hcChmdW5jdGlvbih0LGUpe3ZhciBuPXJbZV07aWYodCYmbiYmblswXSYm blswXS50cmFjZSl7dmFyIGEsaSxvPW5bMF0scz1vLnRyYWNlLGw9by50LGM9 di5saW5lT3B0aW9uc1tlXSx1PVtdO3MuX293bmZpbGwmJnUucHVzaChlKSxz Ll9uZXh0dHJhY2UmJnUucHVzaChlKzEpLHUubGVuZ3RoJiYodi5maWxsT3Jk ZXJbZV09dSk7dmFyIGgsZixwPVtdLGQ9YyYmYy5wb3NpdGlvbnN8fGwucG9z aXRpb25zO2lmKCJ0b3plcm95Ij09PXMuZmlsbCl7Zm9yKGg9MDtoPGQubGVu Z3RoJiZpc05hTihkW2grMV0pOyloKz0yO2ZvcihmPWQubGVuZ3RoLTI7Zj5o JiZpc05hTihkW2YrMV0pOylmLT0yOzAhPT1kW2grMV0mJihwPVtkW2hdLDBd KSxwPXAuY29uY2F0KGQuc2xpY2UoaCxmKzIpKSwwIT09ZFtmKzFdJiYocD1w LmNvbmNhdChbZFtmXSwwXSkpfWVsc2UgaWYoInRvemVyb3giPT09cy5maWxs KXtmb3IoaD0wO2g8ZC5sZW5ndGgmJmlzTmFOKGRbaF0pOyloKz0yO2Zvcihm PWQubGVuZ3RoLTI7Zj5oJiZpc05hTihkW2ZdKTspZi09MjswIT09ZFtoXSYm KHA9WzAsZFtoKzFdXSkscD1wLmNvbmNhdChkLnNsaWNlKGgsZisyKSksMCE9 PWRbZl0mJihwPXAuY29uY2F0KFswLGRbZisxXV0pKX1lbHNlIGlmKCJ0b3Nl bGYiPT09cy5maWxsfHwidG9uZXh0Ij09PXMuZmlsbCl7Zm9yKHA9W10sYT0w LGk9MDtpPGQubGVuZ3RoO2krPTIpKGlzTmFOKGRbaV0pfHxpc05hTihkW2kr MV0pKSYmKChwPXAuY29uY2F0KGQuc2xpY2UoYSxpKSkpLnB1c2goZFthXSxk W2ErMV0pLGE9aSsyKTtwPXAuY29uY2F0KGQuc2xpY2UoYSkpLGEmJnAucHVz aChkW2FdLGRbYSsxXSl9ZWxzZXt2YXIgZz1zLl9uZXh0dHJhY2U7aWYoZyl7 dmFyIG09di5saW5lT3B0aW9uc1tlKzFdO2lmKG0pe3ZhciB5PW0ucG9zaXRp b25zO2lmKCJ0b25leHR5Ij09PXMuZmlsbCl7Zm9yKHA9ZC5zbGljZSgpLGU9 TWF0aC5mbG9vcih5Lmxlbmd0aC8yKTtlLS07KXt2YXIgeD15WzIqZV0sYj15 WzIqZSsxXTtpc05hTih4KXx8aXNOYU4oYil8fHAucHVzaCh4LGIpfXQuZmls bD1nLmZpbGxjb2xvcn19fX1pZihzLl9wcmV2dHJhY2UmJiJ0b25leHQiPT09 cy5fcHJldnRyYWNlLmZpbGwpe3ZhciBfPXYubGluZU9wdGlvbnNbZS0xXS5w b3NpdGlvbnMsdz1wLmxlbmd0aC8yLGs9W2E9d107Zm9yKGk9MDtpPF8ubGVu Z3RoO2krPTIpKGlzTmFOKF9baV0pfHxpc05hTihfW2krMV0pKSYmKGsucHVz aChpLzIrdysxKSxhPWkrMik7cD1wLmNvbmNhdChfKSx0LmhvbGU9a31yZXR1 cm4gdC5maWxsbW9kZT1zLmZpbGwsdC5vcGFjaXR5PXMub3BhY2l0eSx0LnBv c2l0aW9ucz1wLHR9fSksdi5maWxsMmQudXBkYXRlKHYuZmlsbE9wdGlvbnMp KX12YXIgVD1nLmRyYWdtb2RlLE09Imxhc3NvIj09PVR8fCJzZWxlY3QiPT09 VCxBPWcuY2xpY2ttb2RlLmluZGV4T2YoInNlbGVjdCIpPi0xO2ZvcihwPTA7 cDx4O3ArKyl7dmFyIFM9cltwXVswXSxFPVMudHJhY2UsTD1TLnQsQz1MLmlu ZGV4LFA9RS5fbGVuZ3RoLE89TC54LHo9TC55O2lmKEUuc2VsZWN0ZWRwb2lu dHN8fE18fEEpe2lmKE18fChNPSEwKSxFLnNlbGVjdGVkcG9pbnRzKXt2YXIg ST12LnNlbGVjdEJhdGNoW0NdPXMuc2VsSW5kaWNlczJzZWxQb2ludHMoRSks RD17fTtmb3IoZD0wO2Q8SS5sZW5ndGg7ZCsrKURbSVtkXV09MTt2YXIgUj1b XTtmb3IoZD0wO2Q8UDtkKyspRFtkXXx8Ui5wdXNoKGQpO3YudW5zZWxlY3RC YXRjaFtDXT1SfXZhciBGPUwueHB4PW5ldyBBcnJheShQKSxCPUwueXB4PW5l dyBBcnJheShQKTtmb3IoZD0wO2Q8UDtkKyspRltkXT1tLmMycChPW2RdKSxC W2RdPXkuYzJwKHpbZF0pfWVsc2UgTC54cHg9TC55cHg9bnVsbH1pZihNKXtp Zih2LnNlbGVjdDJkfHwodi5zZWxlY3QyZD1uKGcuX2dsY2FudmFzLmRhdGEo KVsxXS5yZWdsKSksdi5zY2F0dGVyMmQpe3ZhciBOPW5ldyBBcnJheSh4KTtm b3IocD0wO3A8eDtwKyspTltwXT12LnNlbGVjdEJhdGNoW3BdLmxlbmd0aHx8 di51bnNlbGVjdEJhdGNoW3BdLmxlbmd0aD92Lm1hcmtlclVuc2VsZWN0ZWRP cHRpb25zW3BdOnt9O3Yuc2NhdHRlcjJkLnVwZGF0ZShOKX12LnNlbGVjdDJk JiYodi5zZWxlY3QyZC51cGRhdGUodi5tYXJrZXJPcHRpb25zKSx2LnNlbGVj dDJkLnVwZGF0ZSh2Lm1hcmtlclNlbGVjdGVkT3B0aW9ucykpLHYuZ2xUZXh0 JiZyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9KCh0fHxbXSlbMF18fHt9 KS50cmFjZXx8e307Yy5oYXNUZXh0KGUpJiZoKHQpfSl9ZWxzZSB2LnNjYXR0 ZXIyZCYmdi5zY2F0dGVyMmQudXBkYXRlKHYubWFya2VyT3B0aW9ucyk7dmFy IGo9e3ZpZXdwb3J0OmYoZyxtLHkpLHJhbmdlOlsobS5fcmx8fG0ucmFuZ2Up WzBdLCh5Ll9ybHx8eS5yYW5nZSlbMF0sKG0uX3JsfHxtLnJhbmdlKVsxXSwo eS5fcmx8fHkucmFuZ2UpWzFdXX0sVj1zLnJlcGVhdChqLHYuY291bnQpO3Yu ZmlsbDJkJiZ2LmZpbGwyZC51cGRhdGUoViksdi5saW5lMmQmJnYubGluZTJk LnVwZGF0ZShWKSx2LmVycm9yMmQmJnYuZXJyb3IyZC51cGRhdGUoVi5jb25j YXQoVikpLHYuc2NhdHRlcjJkJiZ2LnNjYXR0ZXIyZC51cGRhdGUoViksdi5z ZWxlY3QyZCYmdi5zZWxlY3QyZC51cGRhdGUoViksdi5nbFRleHQmJnYuZ2xU ZXh0LmZvckVhY2goZnVuY3Rpb24odCl7dC51cGRhdGUoail9KX1lbHNlIHYu aW5pdCgpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9wcmVwYXJl X3JlZ2wiOjczMCwiLi4vc2NhdHRlci9saW5rX3RyYWNlcyI6MTEzNiwiLi4v c2NhdHRlci9zdWJ0eXBlcyI6MTE0NCwiLi9lZGl0X3N0eWxlIjoxMTc2LCJn bC10ZXh0IjozMTksInJlZ2wtZXJyb3IyZCI6NDkyLCJyZWdsLWxpbmUyZCI6 NDkzLCJyZWdsLXNjYXR0ZXIyZCI6NDk5fV0sMTE4MjpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLl9zY2VuZSxhPXtjb3VudDowLGRp cnR5OiEwLGxpbmVPcHRpb25zOltdLGZpbGxPcHRpb25zOltdLG1hcmtlck9w dGlvbnM6W10sbWFya2VyU2VsZWN0ZWRPcHRpb25zOltdLG1hcmtlclVuc2Vs ZWN0ZWRPcHRpb25zOltdLGVycm9yWE9wdGlvbnM6W10sZXJyb3JZT3B0aW9u czpbXSx0ZXh0T3B0aW9uczpbXSx0ZXh0U2VsZWN0ZWRPcHRpb25zOltdLHRl eHRVbnNlbGVjdGVkT3B0aW9uczpbXSxzZWxlY3RCYXRjaDpbXSx1bnNlbGVj dEJhdGNoOltdfSxpPXtmaWxsMmQ6ITEsc2NhdHRlcjJkOiExLGVycm9yMmQ6 ITEsbGluZTJkOiExLGdsVGV4dDohMSxzZWxlY3QyZDohMX07cmV0dXJuIGUu X3NjZW5lfHwoKHI9ZS5fc2NlbmU9e30pLmluaXQ9ZnVuY3Rpb24oKXtuLmV4 dGVuZEZsYXQocixpLGEpfSxyLmluaXQoKSxyLnVwZGF0ZT1mdW5jdGlvbih0 KXt2YXIgZT1uLnJlcGVhdCh0LHIuY291bnQpO2lmKHIuZmlsbDJkJiZyLmZp bGwyZC51cGRhdGUoZSksci5zY2F0dGVyMmQmJnIuc2NhdHRlcjJkLnVwZGF0 ZShlKSxyLmxpbmUyZCYmci5saW5lMmQudXBkYXRlKGUpLHIuZXJyb3IyZCYm ci5lcnJvcjJkLnVwZGF0ZShlLmNvbmNhdChlKSksci5zZWxlY3QyZCYmci5z ZWxlY3QyZC51cGRhdGUoZSksci5nbFRleHQpZm9yKHZhciBhPTA7YTxyLmNv dW50O2ErKylyLmdsVGV4dFthXS51cGRhdGUodCl9LHIuZHJhdz1mdW5jdGlv bigpe2Zvcih2YXIgdD1yLmNvdW50LGU9ci5maWxsMmQsYT1yLmVycm9yMmQs aT1yLmxpbmUyZCxvPXIuc2NhdHRlcjJkLHM9ci5nbFRleHQsbD1yLnNlbGVj dDJkLGM9ci5zZWxlY3RCYXRjaCx1PXIudW5zZWxlY3RCYXRjaCxoPTA7aDx0 O2grKyl7aWYoZSYmci5maWxsT3JkZXJbaF0mJmUuZHJhdyhyLmZpbGxPcmRl cltoXSksaSYmci5saW5lT3B0aW9uc1toXSYmaS5kcmF3KGgpLGEmJihyLmVy cm9yWE9wdGlvbnNbaF0mJmEuZHJhdyhoKSxyLmVycm9yWU9wdGlvbnNbaF0m JmEuZHJhdyhoK3QpKSxvJiZyLm1hcmtlck9wdGlvbnNbaF0paWYodVtoXS5s ZW5ndGgpe3ZhciBmPW4ucmVwZWF0KFtdLHIuY291bnQpO2ZbaF09dVtoXSxv LmRyYXcoZil9ZWxzZSBjW2hdLmxlbmd0aHx8by5kcmF3KGgpO3NbaF0mJnIu dGV4dE9wdGlvbnNbaF0mJnNbaF0ucmVuZGVyKCl9bCYmbC5kcmF3KGMpLHIu ZGlydHk9ITF9LHIuZGVzdHJveT1mdW5jdGlvbigpe3IuZmlsbDJkJiZyLmZp bGwyZC5kZXN0cm95JiZyLmZpbGwyZC5kZXN0cm95KCksci5zY2F0dGVyMmQm JnIuc2NhdHRlcjJkLmRlc3Ryb3kmJnIuc2NhdHRlcjJkLmRlc3Ryb3koKSxy LmVycm9yMmQmJnIuZXJyb3IyZC5kZXN0cm95JiZyLmVycm9yMmQuZGVzdHJv eSgpLHIubGluZTJkJiZyLmxpbmUyZC5kZXN0cm95JiZyLmxpbmUyZC5kZXN0 cm95KCksci5zZWxlY3QyZCYmci5zZWxlY3QyZC5kZXN0cm95JiZyLnNlbGVj dDJkLmRlc3Ryb3koKSxyLmdsVGV4dCYmci5nbFRleHQuZm9yRWFjaChmdW5j dGlvbih0KXt0LmRlc3Ryb3kmJnQuZGVzdHJveSgpfSksci5saW5lT3B0aW9u cz1udWxsLHIuZmlsbE9wdGlvbnM9bnVsbCxyLm1hcmtlck9wdGlvbnM9bnVs bCxyLm1hcmtlclNlbGVjdGVkT3B0aW9ucz1udWxsLHIubWFya2VyVW5zZWxl Y3RlZE9wdGlvbnM9bnVsbCxyLmVycm9yWE9wdGlvbnM9bnVsbCxyLmVycm9y WU9wdGlvbnM9bnVsbCxyLnRleHRPcHRpb25zPW51bGwsci50ZXh0U2VsZWN0 ZWRPcHRpb25zPW51bGwsci50ZXh0VW5zZWxlY3RlZE9wdGlvbnM9bnVsbCxy LnNlbGVjdEJhdGNoPW51bGwsci51bnNlbGVjdEJhdGNoPW51bGwsZS5fc2Nl bmU9bnVsbH0pLHIuZGlydHl8fG4uZXh0ZW5kRmxhdChyLGEpLHJ9fSx7Ii4u Ly4uL2xpYiI6NzE3fV0sMTE4MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksYT10KCIuL2Vk aXRfc3R5bGUiKS5zdHlsZVRleHRTZWxlY3Rpb247ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7dmFyIHI9dC5jZCxpPVtdLG89clswXS50cmFjZSxzPXJbMF0u dCxsPW8uX2xlbmd0aCxjPXMueCx1PXMueSxoPXMuX3NjZW5lLGY9cy5pbmRl eDtpZighaClyZXR1cm4gaTt2YXIgcD1uLmhhc1RleHQobyksZD1uLmhhc01h cmtlcnMobyksZz0hZCYmIXA7aWYoITAhPT1vLnZpc2libGV8fGcpcmV0dXJu IGk7dmFyIHY9W10sbT1bXTtpZighMSE9PWUmJiFlLmRlZ2VuZXJhdGUpZm9y KHZhciB5PTA7eTxsO3krKyllLmNvbnRhaW5zKFtzLnhweFt5XSxzLnlweFt5 XV0sITEseSx0KT8odi5wdXNoKHkpLGkucHVzaCh7cG9pbnROdW1iZXI6eSx4 OmNbeV0seTp1W3ldfSkpOm0ucHVzaCh5KTtpZihkKXt2YXIgeD1oLnNjYXR0 ZXIyZDtpZih2Lmxlbmd0aHx8bS5sZW5ndGgpe2lmKCFoLnNlbGVjdEJhdGNo W2ZdLmxlbmd0aCYmIWgudW5zZWxlY3RCYXRjaFtmXS5sZW5ndGgpe3ZhciBi PW5ldyBBcnJheShoLmNvdW50KTtiW2ZdPWgubWFya2VyVW5zZWxlY3RlZE9w dGlvbnNbZl0seC51cGRhdGUuYXBwbHkoeCxiKX19ZWxzZXt2YXIgXz1uZXcg QXJyYXkoaC5jb3VudCk7X1tmXT1oLm1hcmtlck9wdGlvbnNbZl0seC51cGRh dGUuYXBwbHkoeCxfKX19cmV0dXJuIGguc2VsZWN0QmF0Y2hbZl09dixoLnVu c2VsZWN0QmF0Y2hbZl09bSxwJiZhKHIpLGl9fSx7Ii4uL3NjYXR0ZXIvc3Vi dHlwZXMiOjExNDQsIi4vZWRpdF9zdHlsZSI6MTE3Nn1dLDExODQ6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMv dGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxhPXQo Ii4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxh dGVBdHRycyxpPXQoIi4uL3NjYXR0ZXJnZW8vYXR0cmlidXRlcyIpLG89dCgi Li4vc2NhdHRlci9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy9tYXBi b3gvbGF5b3V0X2F0dHJpYnV0ZXMiKSxsPXQoIi4uLy4uL3Bsb3RzL2F0dHJp YnV0ZXMiKSxjPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRy aWJ1dGVzIiksdT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxo PXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxm PWkubGluZSxwPWkubWFya2VyO2UuZXhwb3J0cz1oKHtsb246aS5sb24sbGF0 OmkubGF0LG1vZGU6dSh7fSxvLm1vZGUse2RmbHQ6Im1hcmtlcnMifSksdGV4 dDp1KHt9LG8udGV4dCx7fSksdGV4dHRlbXBsYXRlOmEoe2VkaXRUeXBlOiJw bG90In0se2tleXM6WyJsYXQiLCJsb24iLCJ0ZXh0Il19KSxob3ZlcnRleHQ6 dSh7fSxvLmhvdmVydGV4dCx7fSksbGluZTp7Y29sb3I6Zi5jb2xvcix3aWR0 aDpmLndpZHRofSxjb25uZWN0Z2FwczpvLmNvbm5lY3RnYXBzLG1hcmtlcjp1 KHtzeW1ib2w6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiY2lyY2xlIixhcnJh eU9rOiEwfSxvcGFjaXR5OnAub3BhY2l0eSxzaXplOnAuc2l6ZSxzaXplcmVm OnAuc2l6ZXJlZixzaXplbWluOnAuc2l6ZW1pbixzaXplbW9kZTpwLnNpemVt b2RlfSxjKCJtYXJrZXIiKSksZmlsbDppLmZpbGwsZmlsbGNvbG9yOm8uZmls bGNvbG9yLHRleHRmb250OnMubGF5ZXJzLnN5bWJvbC50ZXh0Zm9udCx0ZXh0 cG9zaXRpb246cy5sYXllcnMuc3ltYm9sLnRleHRwb3NpdGlvbixiZWxvdzp7 dmFsVHlwZToic3RyaW5nIn0sc2VsZWN0ZWQ6e21hcmtlcjpvLnNlbGVjdGVk Lm1hcmtlcn0sdW5zZWxlY3RlZDp7bWFya2VyOm8udW5zZWxlY3RlZC5tYXJr ZXJ9LGhvdmVyaW5mbzp1KHt9LGwuaG92ZXJpbmZvLHtmbGFnczpbImxvbiIs ImxhdCIsInRleHQiLCJuYW1lIl19KSxob3ZlcnRlbXBsYXRlOm4oKX0sImNh bGMiLCJuZXN0ZWQiKX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUv YXR0cmlidXRlcyI6NTk5LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4u L3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjc0OCwiLi4vLi4vcGxvdHMvYXR0cmli dXRlcyI6NzYyLCIuLi8uLi9wbG90cy9tYXBib3gvbGF5b3V0X2F0dHJpYnV0 ZXMiOjgyMiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQx LCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjExMjAsIi4uL3NjYXR0ZXJnZW8v YXR0cmlidXRlcyI6MTE2MX1dLDExODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4u L2xpYiIpLGk9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5V TSxvPXQoIi4uLy4uL2xpYi9nZW9qc29uX3V0aWxzIikscz10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMv ZHJhd2luZyIpLGM9dCgiLi4vc2NhdHRlci9tYWtlX2J1YmJsZV9zaXplX2Z1 bmMiKSx1PXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxoPXQoIi4uLy4uL3Bs b3RzL21hcGJveC9jb252ZXJ0X3RleHRfb3B0cyIpLGY9dCgiLi4vLi4vY29t cG9uZW50cy9meC9oZWxwZXJzIikuYXBwZW5kQXJyYXlQb2ludFZhbHVlLHA9 dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIikuTkVXTElORVMsZD10KCIu Li8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKS5CUl9UQUdfQUxMO2Z1bmN0aW9u IGcoKXtyZXR1cm57Z2VvanNvbjpvLm1ha2VCbGFuaygpLGxheW91dDp7dmlz aWJpbGl0eToibm9uZSJ9LHBhaW50Ont9fX1mdW5jdGlvbiB2KHQpe3JldHVy biBhLmlzQXJyYXlPclR5cGVkQXJyYXkodCk/ZnVuY3Rpb24odCl7cmV0dXJu IHR9OnQ/ZnVuY3Rpb24oKXtyZXR1cm4gdH06bX1mdW5jdGlvbiBtKCl7cmV0 dXJuIiJ9ZnVuY3Rpb24geSh0KXtyZXR1cm4gdFswXT09PWl9ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7dmFyIHIsaT1lWzBdLnRyYWNlLHg9ITA9PT1pLnZp c2libGUmJjAhPT1pLl9sZW5ndGgsYj0ibm9uZSIhPT1pLmZpbGwsXz11Lmhh c0xpbmVzKGkpLHc9dS5oYXNNYXJrZXJzKGkpLGs9dS5oYXNUZXh0KGkpLFQ9 dyYmImNpcmNsZSI9PT1pLm1hcmtlci5zeW1ib2wsTT13JiYiY2lyY2xlIiE9 PWkubWFya2VyLnN5bWJvbCxBPWcoKSxTPWcoKSxFPWcoKSxMPWcoKSxDPXtm aWxsOkEsbGluZTpTLGNpcmNsZTpFLHN5bWJvbDpMfTtpZigheClyZXR1cm4g QztpZigoYnx8XykmJihyPW8uY2FsY1RyYWNlVG9MaW5lQ29vcmRzKGUpKSxi JiYoQS5nZW9qc29uPW8ubWFrZVBvbHlnb24ociksQS5sYXlvdXQudmlzaWJp bGl0eT0idmlzaWJsZSIsYS5leHRlbmRGbGF0KEEucGFpbnQseyJmaWxsLWNv bG9yIjppLmZpbGxjb2xvcn0pKSxfJiYoUy5nZW9qc29uPW8ubWFrZUxpbmUo ciksUy5sYXlvdXQudmlzaWJpbGl0eT0idmlzaWJsZSIsYS5leHRlbmRGbGF0 KFMucGFpbnQseyJsaW5lLXdpZHRoIjppLmxpbmUud2lkdGgsImxpbmUtY29s b3IiOmkubGluZS5jb2xvciwibGluZS1vcGFjaXR5IjppLm9wYWNpdHl9KSks VCl7dmFyIFA9ZnVuY3Rpb24odCl7dmFyIGUscixpLG8sdT10WzBdLnRyYWNl LGg9dS5tYXJrZXIsZj11LnNlbGVjdGVkcG9pbnRzLHA9YS5pc0FycmF5T3JU eXBlZEFycmF5KGguY29sb3IpLGQ9YS5pc0FycmF5T3JUeXBlZEFycmF5KGgu c2l6ZSksZz1hLmlzQXJyYXlPclR5cGVkQXJyYXkoaC5vcGFjaXR5KTtmdW5j dGlvbiB2KHQpe3JldHVybiB1Lm9wYWNpdHkqdH1wJiYocj1zLmhhc0NvbG9y c2NhbGUodSwibWFya2VyIik/cy5tYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJh Y2UoaCk6YS5pZGVudGl0eSk7ZCYmKGk9Yyh1KSk7ZyYmKG89ZnVuY3Rpb24o dCl7dmFyIGU9bih0KT8rYS5jb25zdHJhaW4odCwwLDEpOjA7cmV0dXJuIHYo ZSl9KTt2YXIgbSx4PVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBi PXRbZV0sXz1iLmxvbmxhdDtpZigheShfKSl7dmFyIHc9e307ciYmKHcubWNj PWIubWNjPXIoYi5tYykpLGkmJih3Lm1yYz1iLm1yYz1pKGIubXMpKSxvJiYo dy5tbz1vKGIubW8pKSxmJiYody5zZWxlY3RlZD1iLnNlbGVjdGVkfHwwKSx4 LnB1c2goe3R5cGU6IkZlYXR1cmUiLGdlb21ldHJ5Ont0eXBlOiJQb2ludCIs Y29vcmRpbmF0ZXM6X30scHJvcGVydGllczp3fSl9fWlmKGYpZm9yKG09bC5t YWtlU2VsZWN0ZWRQb2ludFN0eWxlRm5zKHUpLGU9MDtlPHgubGVuZ3RoO2Ur Kyl7dmFyIGs9eFtlXS5wcm9wZXJ0aWVzO20uc2VsZWN0ZWRPcGFjaXR5Rm4m JihrLm1vPXYobS5zZWxlY3RlZE9wYWNpdHlGbihrKSkpLG0uc2VsZWN0ZWRD b2xvckZuJiYoay5tY2M9bS5zZWxlY3RlZENvbG9yRm4oaykpLG0uc2VsZWN0 ZWRTaXplRm4mJihrLm1yYz1tLnNlbGVjdGVkU2l6ZUZuKGspKX1yZXR1cm57 Z2VvanNvbjp7dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOnh9 LG1jYzpwfHxtJiZtLnNlbGVjdGVkQ29sb3JGbj97dHlwZToiaWRlbnRpdHki LHByb3BlcnR5OiJtY2MifTpoLmNvbG9yLG1yYzpkfHxtJiZtLnNlbGVjdGVk U2l6ZUZuP3t0eXBlOiJpZGVudGl0eSIscHJvcGVydHk6Im1yYyJ9OihUPWgu c2l6ZSxULzIpLG1vOmd8fG0mJm0uc2VsZWN0ZWRPcGFjaXR5Rm4/e3R5cGU6 ImlkZW50aXR5Iixwcm9wZXJ0eToibW8ifTp2KGgub3BhY2l0eSl9O3ZhciBU fShlKTtFLmdlb2pzb249UC5nZW9qc29uLEUubGF5b3V0LnZpc2liaWxpdHk9 InZpc2libGUiLGEuZXh0ZW5kRmxhdChFLnBhaW50LHsiY2lyY2xlLWNvbG9y IjpQLm1jYywiY2lyY2xlLXJhZGl1cyI6UC5tcmMsImNpcmNsZS1vcGFjaXR5 IjpQLm1vfSl9aWYoKE18fGspJiYoTC5nZW9qc29uPWZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByPWUuX2Z1bGxMYXlvdXQsbj10WzBdLnRyYWNlLGk9KG4ubWFy a2VyfHx7fSkuc3ltYm9sLG89ImNpcmNsZSIhPT1pP3YoaSk6bSxzPXUuaGFz VGV4dChuKT92KG4udGV4dCk6bSxsPVtdLGM9MDtjPHQubGVuZ3RoO2MrKyl7 dmFyIGg9dFtjXTtpZigheShoLmxvbmxhdCkpe3ZhciBnLHg9bi50ZXh0dGVt cGxhdGU7aWYoeCl7dmFyIGI9QXJyYXkuaXNBcnJheSh4KT94W2NdfHwiIjp4 LF89bi5fbW9kdWxlLmZvcm1hdExhYmVscyhoLG4sciksdz17fTtmKHcsbixo LmkpO3ZhciBrPW4uX21ldGF8fHt9O2c9YS50ZXh0dGVtcGxhdGVTdHJpbmco YixfLHIuX2QzbG9jYWxlLHcsaCxrKX1lbHNlIGc9cyhoLnR4KTtnJiYoZz1n LnJlcGxhY2UocCwiIikucmVwbGFjZShkLCJcbiIpKSxsLnB1c2goe3R5cGU6 IkZlYXR1cmUiLGdlb21ldHJ5Ont0eXBlOiJQb2ludCIsY29vcmRpbmF0ZXM6 aC5sb25sYXR9LHByb3BlcnRpZXM6e3N5bWJvbDpvKGgubXgpLHRleHQ6Z319 KX19cmV0dXJue3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczps fX0oZSx0KSxhLmV4dGVuZEZsYXQoTC5sYXlvdXQse3Zpc2liaWxpdHk6InZp c2libGUiLCJpY29uLWltYWdlIjoie3N5bWJvbH0tMTUiLCJ0ZXh0LWZpZWxk Ijoie3RleHR9In0pLE0mJihhLmV4dGVuZEZsYXQoTC5sYXlvdXQseyJpY29u LXNpemUiOmkubWFya2VyLnNpemUvMTB9KSxhLmV4dGVuZEZsYXQoTC5wYWlu dCx7Imljb24tb3BhY2l0eSI6aS5vcGFjaXR5KmkubWFya2VyLm9wYWNpdHks Imljb24tY29sb3IiOmkubWFya2VyLmNvbG9yfSkpLGspKXt2YXIgTz0oaS5t YXJrZXJ8fHt9KS5zaXplLHo9aChpLnRleHRwb3NpdGlvbixPKTthLmV4dGVu ZEZsYXQoTC5sYXlvdXQseyJ0ZXh0LXNpemUiOmkudGV4dGZvbnQuc2l6ZSwi dGV4dC1hbmNob3IiOnouYW5jaG9yLCJ0ZXh0LW9mZnNldCI6ei5vZmZzZXR9 KSxhLmV4dGVuZEZsYXQoTC5wYWludCx7InRleHQtY29sb3IiOmkudGV4dGZv bnQuY29sb3IsInRleHQtb3BhY2l0eSI6aS5vcGFjaXR5fSl9cmV0dXJuIEN9 fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6NjA0LCIuLi8uLi9j b21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vY29tcG9uZW50cy9meC9o ZWxwZXJzIjo2MjcsIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5Mywi Li4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9nZW9qc29uX3V0aWxzIjo3MTIs Ii4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi8uLi9wbG90cy9t YXBib3gvY29udmVydF90ZXh0X29wdHMiOjgxOSwiLi4vc2NhdHRlci9tYWtl X2J1YmJsZV9zaXplX2Z1bmMiOjExMzcsIi4uL3NjYXR0ZXIvc3VidHlwZXMi OjExNDQsImZhc3QtaXNudW1lcmljIjoyMjh9XSwxMTg2OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgi Li4vc2NhdHRlci9zdWJ0eXBlcyIpLGk9dCgiLi4vc2NhdHRlci9tYXJrZXJf ZGVmYXVsdHMiKSxvPXQoIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLHM9 dCgiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIiksbD10KCIuLi9zY2F0dGVy L2ZpbGxjb2xvcl9kZWZhdWx0cyIpLGM9dCgiLi9hdHRyaWJ1dGVzIik7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHUpe2Z1bmN0aW9uIGgocixhKXtyZXR1 cm4gbi5jb2VyY2UodCxlLGMscixhKX1pZihmdW5jdGlvbih0LGUscil7dmFy IG49cigibG9uIil8fFtdLGE9cigibGF0Iil8fFtdLGk9TWF0aC5taW4obi5s ZW5ndGgsYS5sZW5ndGgpO3JldHVybiBlLl9sZW5ndGg9aSxpfSgwLGUsaCkp e2lmKGgoInRleHQiKSxoKCJ0ZXh0dGVtcGxhdGUiKSxoKCJob3ZlcnRleHQi KSxoKCJob3ZlcnRlbXBsYXRlIiksaCgibW9kZSIpLGgoImJlbG93IiksYS5o YXNMaW5lcyhlKSYmKG8odCxlLHIsdSxoLHtub0Rhc2g6ITB9KSxoKCJjb25u ZWN0Z2FwcyIpKSxhLmhhc01hcmtlcnMoZSkpe2kodCxlLHIsdSxoLHtub0xp bmU6ITB9KTt2YXIgZj1lLm1hcmtlcjsiY2lyY2xlIiE9PWYuc3ltYm9sJiYo bi5pc0FycmF5T3JUeXBlZEFycmF5KGYuc2l6ZSkmJihmLnNpemU9Zi5zaXpl WzBdKSxuLmlzQXJyYXlPclR5cGVkQXJyYXkoZi5jb2xvcikmJihmLmNvbG9y PWYuY29sb3JbMF0pKX1hLmhhc1RleHQoZSkmJnModCxlLHUsaCx7bm9TZWxl Y3Q6ITB9KSxoKCJmaWxsIiksIm5vbmUiIT09ZS5maWxsJiZsKHQsZSxyLGgp LG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLGgpfWVsc2UgZS52 aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9maWxs Y29sb3JfZGVmYXVsdHMiOjExMjgsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0 cyI6MTEzMywiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiOjExMzksIi4u L3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4uL3NjYXR0ZXIvdGV4dF9kZWZh dWx0cyI6MTE0NSwiLi9hdHRyaWJ1dGVzIjoxMTg0fV0sMTE4NzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXtyZXR1cm4gdC5sb249ZS5sb24sdC5sYXQ9ZS5sYXQsdH19LHt9XSwxMTg4 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbi9heGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgYT17fSxpPXJbZS5zdWJwbG90XS5fc3VicGxvdC5tb2NrQXhp cyxvPXQubG9ubGF0O3JldHVybiBhLmxvbkxhYmVsPW4udGlja1RleHQoaSxp LmMybChvWzBdKSwhMCkudGV4dCxhLmxhdExhYmVsPW4udGlja1RleHQoaSxp LmMybChvWzFdKSwhMCkudGV4dCxhfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyI6NzY1fV0sMTE4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksYT10KCIuLi8u Li9saWIiKSxpPXQoIi4uL3NjYXR0ZXIvZ2V0X3RyYWNlX2NvbG9yIiksbz1h LmZpbGxUZXh0LHM9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJB RE5VTTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBsPXQuY2QsYz1s WzBdLnRyYWNlLHU9dC54YSxoPXQueWEsZj10LnN1YnBsb3QscD0zNjAqKGU+ PTA/TWF0aC5mbG9vcigoZSsxODApLzM2MCk6TWF0aC5jZWlsKChlLTE4MCkv MzYwKSksZD1lLXA7aWYobi5nZXRDbG9zZXN0KGwsZnVuY3Rpb24odCl7dmFy IGU9dC5sb25sYXQ7aWYoZVswXT09PXMpcmV0dXJuIDEvMDt2YXIgbj1hLm1v ZEhhbGYoZVswXSwzNjApLGk9ZVsxXSxvPWYucHJvamVjdChbbixpXSksbD1v LngtdS5jMnAoW2QsaV0pLGM9by55LWguYzJwKFtuLHJdKSxwPU1hdGgubWF4 KDMsdC5tcmN8fDApO3JldHVybiBNYXRoLm1heChNYXRoLnNxcnQobCpsK2Mq YyktcCwxLTMvcCl9LHQpLCExIT09dC5pbmRleCl7dmFyIGc9bFt0LmluZGV4 XSx2PWcubG9ubGF0LG09W2EubW9kSGFsZih2WzBdLDM2MCkrcCx2WzFdXSx5 PXUuYzJwKG0pLHg9aC5jMnAobSksYj1nLm1yY3x8MTt0LngwPXktYix0Lngx PXkrYix0LnkwPXgtYix0LnkxPXgrYjt2YXIgXz17fTtfW2Muc3VicGxvdF09 e19zdWJwbG90OmZ9O3ZhciB3PWMuX21vZHVsZS5mb3JtYXRMYWJlbHMoZyxj LF8pO3JldHVybiB0LmxvbkxhYmVsPXcubG9uTGFiZWwsdC5sYXRMYWJlbD13 LmxhdExhYmVsLHQuY29sb3I9aShjLGcpLHQuZXh0cmFUZXh0PWZ1bmN0aW9u KHQsZSxyKXtpZih0LmhvdmVydGVtcGxhdGUpcmV0dXJuO3ZhciBuPShlLmhp fHx0LmhvdmVyaW5mbykuc3BsaXQoIisiKSxhPS0xIT09bi5pbmRleE9mKCJh bGwiKSxpPS0xIT09bi5pbmRleE9mKCJsb24iKSxzPS0xIT09bi5pbmRleE9m KCJsYXQiKSxsPWUubG9ubGF0LGM9W107ZnVuY3Rpb24gdSh0KXtyZXR1cm4g dCsiXHhiMCJ9YXx8aSYmcz9jLnB1c2goIigiK3UobFswXSkrIiwgIit1KGxb MV0pKyIpIik6aT9jLnB1c2goci5sb24rdShsWzBdKSk6cyYmYy5wdXNoKHIu bGF0K3UobFsxXSkpOyhhfHwtMSE9PW4uaW5kZXhPZigidGV4dCIpKSYmbyhl LHQsYyk7cmV0dXJuIGMuam9pbigiPGJyPiIpfShjLGcsbFswXS50LmxhYmVs cyksdC5ob3ZlcnRlbXBsYXRlPWMuaG92ZXJ0ZW1wbGF0ZSxbdF19fX0seyIu Li8uLi9jb21wb25lbnRzL2Z4Ijo2MzAsIi4uLy4uL2NvbnN0YW50cy9udW1l cmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsIi4uL3NjYXR0ZXIvZ2V0X3Ry YWNlX2NvbG9yIjoxMTMwfV0sMTE5MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVz Iiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQo Ii4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiksZm9ybWF0TGFiZWxzOnQo Ii4vZm9ybWF0X2xhYmVscyIpLGNhbGM6dCgiLi4vc2NhdHRlcmdlby9jYWxj IikscGxvdDp0KCIuL3Bsb3QiKSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiks ZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLHNlbGVjdFBvaW50czp0KCIu L3NlbGVjdCIpLHN0eWxlT25TZWxlY3Q6ZnVuY3Rpb24odCxlKXtlJiZlWzBd LnRyYWNlLl9nbFRyYWNlLnVwZGF0ZShlKX0sbW9kdWxlVHlwZToidHJhY2Ui LG5hbWU6InNjYXR0ZXJtYXBib3giLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4u L3Bsb3RzL21hcGJveCIpLGNhdGVnb3JpZXM6WyJtYXBib3giLCJnbCIsInN5 bWJvbHMiLCJzaG93TGVnZW5kIiwic2NhdHRlci1saWtlIl0sbWV0YTp7fX19 LHsiLi4vLi4vcGxvdHMvbWFwYm94Ijo4MjAsIi4uL3NjYXR0ZXIvbWFya2Vy X2NvbG9yYmFyIjoxMTM4LCIuLi9zY2F0dGVyZ2VvL2NhbGMiOjExNjIsIi4v YXR0cmlidXRlcyI6MTE4NCwiLi9kZWZhdWx0cyI6MTE4NiwiLi9ldmVudF9k YXRhIjoxMTg3LCIuL2Zvcm1hdF9sYWJlbHMiOjExODgsIi4vaG92ZXIiOjEx ODksIi4vcGxvdCI6MTE5MSwiLi9zZWxlY3QiOjExOTJ9XSwxMTkxOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29udmVydCIp LGE9dCgiLi4vLi4vcGxvdHMvbWFwYm94L2NvbnN0YW50cyIpLnRyYWNlTGF5 ZXJQcmVmaXgsaT1bImZpbGwiLCJsaW5lIiwiY2lyY2xlIiwic3ltYm9sIl07 ZnVuY3Rpb24gbyh0LGUpe3RoaXMudHlwZT0ic2NhdHRlcm1hcGJveCIsdGhp cy5zdWJwbG90PXQsdGhpcy51aWQ9ZSx0aGlzLnNvdXJjZUlkcz17ZmlsbDoi c291cmNlLSIrZSsiLWZpbGwiLGxpbmU6InNvdXJjZS0iK2UrIi1saW5lIixj aXJjbGU6InNvdXJjZS0iK2UrIi1jaXJjbGUiLHN5bWJvbDoic291cmNlLSIr ZSsiLXN5bWJvbCJ9LHRoaXMubGF5ZXJJZHM9e2ZpbGw6YStlKyItZmlsbCIs bGluZTphK2UrIi1saW5lIixjaXJjbGU6YStlKyItY2lyY2xlIixzeW1ib2w6 YStlKyItc3ltYm9sIn0sdGhpcy5iZWxvdz1udWxsfXZhciBzPW8ucHJvdG90 eXBlO3MuYWRkU291cmNlPWZ1bmN0aW9uKHQsZSl7dGhpcy5zdWJwbG90Lm1h cC5hZGRTb3VyY2UodGhpcy5zb3VyY2VJZHNbdF0se3R5cGU6Imdlb2pzb24i LGRhdGE6ZS5nZW9qc29ufSl9LHMuc2V0U291cmNlRGF0YT1mdW5jdGlvbih0 LGUpe3RoaXMuc3VicGxvdC5tYXAuZ2V0U291cmNlKHRoaXMuc291cmNlSWRz W3RdKS5zZXREYXRhKGUuZ2VvanNvbil9LHMuYWRkTGF5ZXI9ZnVuY3Rpb24o dCxlLHIpe3RoaXMuc3VicGxvdC5hZGRMYXllcih7dHlwZTp0LGlkOnRoaXMu bGF5ZXJJZHNbdF0sc291cmNlOnRoaXMuc291cmNlSWRzW3RdLGxheW91dDpl LmxheW91dCxwYWludDplLnBhaW50fSxyKX0scy51cGRhdGU9ZnVuY3Rpb24o dCl7dmFyIGUscixhLG89dGhpcy5zdWJwbG90LHM9by5tYXAsbD1uKG8uZ2Qs dCksYz1vLmJlbG93TG9va3VwWyJ0cmFjZS0iK3RoaXMudWlkXTtpZihjIT09 dGhpcy5iZWxvdyl7Zm9yKGU9aS5sZW5ndGgtMTtlPj0wO2UtLSlyPWlbZV0s cy5yZW1vdmVMYXllcih0aGlzLmxheWVySWRzW3JdKTtmb3IoZT0wO2U8aS5s ZW5ndGg7ZSsrKWE9bFtyPWlbZV1dLHRoaXMuYWRkTGF5ZXIocixhLGMpO3Ro aXMuYmVsb3c9Y31mb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKWE9bFtyPWlbZV1d LG8uc2V0T3B0aW9ucyh0aGlzLmxheWVySWRzW3JdLCJzZXRMYXlvdXRQcm9w ZXJ0eSIsYS5sYXlvdXQpLCJ2aXNpYmxlIj09PWEubGF5b3V0LnZpc2liaWxp dHkmJih0aGlzLnNldFNvdXJjZURhdGEocixhKSxvLnNldE9wdGlvbnModGhp cy5sYXllcklkc1tyXSwic2V0UGFpbnRQcm9wZXJ0eSIsYS5wYWludCkpO3Rb MF0udHJhY2UuX2dsVHJhY2U9dGhpc30scy5kaXNwb3NlPWZ1bmN0aW9uKCl7 Zm9yKHZhciB0PXRoaXMuc3VicGxvdC5tYXAsZT1pLmxlbmd0aC0xO2U+PTA7 ZS0tKXt2YXIgcj1pW2VdO3QucmVtb3ZlTGF5ZXIodGhpcy5sYXllcklkc1ty XSksdC5yZW1vdmVTb3VyY2UodGhpcy5zb3VyY2VJZHNbcl0pfX0sZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWVbMF0udHJhY2UsYT1uZXcg byh0LHIudWlkKSxzPW4odC5nZCxlKSxsPWEuYmVsb3c9dC5iZWxvd0xvb2t1 cFsidHJhY2UtIityLnVpZF0sYz0wO2M8aS5sZW5ndGg7YysrKXt2YXIgdT1p W2NdLGg9c1t1XTthLmFkZFNvdXJjZSh1LGgpLGEuYWRkTGF5ZXIodSxoLGwp fXJldHVybiBlWzBdLnRyYWNlLl9nbFRyYWNlPWEsYX19LHsiLi4vLi4vcGxv dHMvbWFwYm94L2NvbnN0YW50cyI6ODE4LCIuL2NvbnZlcnQiOjExODV9XSwx MTkyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLGE9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGk9dCgiLi4v Li4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXt2YXIgcixvPXQuY2Qscz10LnhheGlzLGw9dC55YXhpcyxj PVtdLHU9b1swXS50cmFjZTtpZighYS5oYXNNYXJrZXJzKHUpKXJldHVybltd O2lmKCExPT09ZSlmb3Iocj0wO3I8by5sZW5ndGg7cisrKW9bcl0uc2VsZWN0 ZWQ9MDtlbHNlIGZvcihyPTA7cjxvLmxlbmd0aDtyKyspe3ZhciBoPW9bcl0s Zj1oLmxvbmxhdDtpZihmWzBdIT09aSl7dmFyIHA9W24ubW9kSGFsZihmWzBd LDM2MCksZlsxXV0sZD1bcy5jMnAocCksbC5jMnAocCldO2UuY29udGFpbnMo ZCxudWxsLHIsdCk/KGMucHVzaCh7cG9pbnROdW1iZXI6cixsb246ZlswXSxs YXQ6ZlsxXX0pLGguc2VsZWN0ZWQ9MSk6aC5zZWxlY3RlZD0wfX1yZXR1cm4g Y319LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi8uLi9s aWIiOjcxNywiLi4vc2NhdHRlci9zdWJ0eXBlcyI6MTE0NH1dLDExOTM6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxv dHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxh PXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVt cGxhdGVBdHRycyxpPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0 LG89dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90 cy9hdHRyaWJ1dGVzIiksbD1vLmxpbmU7ZS5leHBvcnRzPXttb2RlOm8ubW9k ZSxyOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVh ckF4aXNUeXBlcyJ9LHRoZXRhOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0 VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHIwOnt2YWxUeXBlOiJhbnki LGRmbHQ6MCxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LGRyOnt2 YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LHRoZXRh MDp7dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6ImNhbGMrY2xlYXJB eGlzVHlwZXMifSxkdGhldGE6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6 ImNhbGMifSx0aGV0YXVuaXQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVl czpbInJhZGlhbnMiLCJkZWdyZWVzIiwiZ3JhZGlhbnMiXSxkZmx0OiJkZWdy ZWVzIixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHRleHQ6by50 ZXh0LHRleHR0ZW1wbGF0ZTphKHtlZGl0VHlwZToicGxvdCJ9LHtrZXlzOlsi ciIsInRoZXRhIiwidGV4dCJdfSksaG92ZXJ0ZXh0Om8uaG92ZXJ0ZXh0LGxp bmU6e2NvbG9yOmwuY29sb3Isd2lkdGg6bC53aWR0aCxkYXNoOmwuZGFzaCxz aGFwZTppKHt9LGwuc2hhcGUse3ZhbHVlczpbImxpbmVhciIsInNwbGluZSJd fSksc21vb3RoaW5nOmwuc21vb3RoaW5nLGVkaXRUeXBlOiJjYWxjIn0sY29u bmVjdGdhcHM6by5jb25uZWN0Z2FwcyxtYXJrZXI6by5tYXJrZXIsY2xpcG9u YXhpczppKHt9LG8uY2xpcG9uYXhpcyx7ZGZsdDohMX0pLHRleHRwb3NpdGlv bjpvLnRleHRwb3NpdGlvbix0ZXh0Zm9udDpvLnRleHRmb250LGZpbGw6aSh7 fSxvLmZpbGwse3ZhbHVlczpbIm5vbmUiLCJ0b3NlbGYiLCJ0b25leHQiXSxk Zmx0OiJub25lIn0pLGZpbGxjb2xvcjpvLmZpbGxjb2xvcixob3ZlcmluZm86 aSh7fSxzLmhvdmVyaW5mbyx7ZmxhZ3M6WyJyIiwidGhldGEiLCJ0ZXh0Iiwi bmFtZSJdfSksaG92ZXJvbjpvLmhvdmVyb24saG92ZXJ0ZW1wbGF0ZTpuKCks c2VsZWN0ZWQ6by5zZWxlY3RlZCx1bnNlbGVjdGVkOm8udW5zZWxlY3RlZH19 LHsiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1 dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjg0 MSwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjoxMTIwfV0sMTE5NDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJp YyIpLGE9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSxp PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuLi9zY2F0 dGVyL2NvbG9yc2NhbGVfY2FsYyIpLHM9dCgiLi4vc2NhdHRlci9hcnJheXNf dG9fY2FsY2RhdGEiKSxsPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24i KSxjPXQoIi4uL3NjYXR0ZXIvY2FsYyIpLmNhbGNNYXJrZXJTaXplO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Ll9mdWxsTGF5b3V0LHU9 ZS5zdWJwbG90LGg9clt1XS5yYWRpYWxheGlzLGY9clt1XS5hbmd1bGFyYXhp cyxwPWgubWFrZUNhbGNkYXRhKGUsInIiKSxkPWYubWFrZUNhbGNkYXRhKGUs InRoZXRhIiksZz1lLl9sZW5ndGgsdj1uZXcgQXJyYXkoZyksbT0wO208Zztt Kyspe3ZhciB5PXBbbV0seD1kW21dLGI9dlttXT17fTtuKHkpJiZuKHgpPyhi LnI9eSxiLnRoZXRhPXgpOmIucj1hfXZhciBfPWMoZSxnKTtyZXR1cm4gZS5f ZXh0cmVtZXMueD1pLmZpbmRFeHRyZW1lcyhoLHAse3BwYWQ6X30pLG8odCxl KSxzKHYsZSksbCh2LGUpLHZ9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmlj YWwiOjY5MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4v c2NhdHRlci9hcnJheXNfdG9fY2FsY2RhdGEiOjExMTksIi4uL3NjYXR0ZXIv Y2FsYyI6MTEyMSwiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiI6MTEyMiwi Li4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjExMjMsImZhc3QtaXNudW1l cmljIjoyMjh9XSwxMTk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vc2NhdHRlci9zdWJ0eXBl cyIpLGk9dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxvPXQoIi4u L3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci9saW5l X3NoYXBlX2RlZmF1bHRzIiksbD10KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVs dHMiKSxjPXQoIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIiksdT10 KCIuLi9zY2F0dGVyL2NvbnN0YW50cyIpLlBUU19MSU5FU09OTFksaD10KCIu L2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBmKHQsZSxyLG4pe3ZhciBhLGk9bigi ciIpLG89bigidGhldGEiKTtpZihpKW8/YT1NYXRoLm1pbihpLmxlbmd0aCxv Lmxlbmd0aCk6KGE9aS5sZW5ndGgsbigidGhldGEwIiksbigiZHRoZXRhIikp O2Vsc2V7aWYoIW8pcmV0dXJuIDA7YT1lLnRoZXRhLmxlbmd0aCxuKCJyMCIp LG4oImRyIil9cmV0dXJuIGUuX2xlbmd0aD1hLGF9ZS5leHBvcnRzPXtoYW5k bGVSVGhldGFEZWZhdWx0czpmLHN1cHBseURlZmF1bHRzOmZ1bmN0aW9uKHQs ZSxyLHApe2Z1bmN0aW9uIGQocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGgs cixhKX12YXIgZz1mKDAsZSwwLGQpO2lmKGcpe2QoInRoZXRhdW5pdCIpLGQo Im1vZGUiLGc8dT8ibGluZXMrbWFya2VycyI6ImxpbmVzIiksZCgidGV4dCIp LGQoImhvdmVydGV4dCIpLCJmaWxscyIhPT1lLmhvdmVyb24mJmQoImhvdmVy dGVtcGxhdGUiKSxhLmhhc0xpbmVzKGUpJiYobyh0LGUscixwLGQpLHModCxl LGQpLGQoImNvbm5lY3RnYXBzIikpLGEuaGFzTWFya2VycyhlKSYmaSh0LGUs cixwLGQse2dyYWRpZW50OiEwfSksYS5oYXNUZXh0KGUpJiYoZCgidGV4dHRl bXBsYXRlIiksbCh0LGUscCxkKSk7dmFyIHY9W107KGEuaGFzTWFya2Vycyhl KXx8YS5oYXNUZXh0KGUpKSYmKGQoImNsaXBvbmF4aXMiKSxkKCJtYXJrZXIu bWF4ZGlzcGxheWVkIiksdi5wdXNoKCJwb2ludHMiKSksZCgiZmlsbCIpLCJu b25lIiE9PWUuZmlsbCYmKGModCxlLHIsZCksYS5oYXNMaW5lcyhlKXx8cyh0 LGUsZCkpLCJ0b25leHQiIT09ZS5maWxsJiYidG9zZWxmIiE9PWUuZmlsbHx8 di5wdXNoKCJmaWxscyIpLGQoImhvdmVyb24iLHYuam9pbigiKyIpfHwicG9p bnRzIiksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUsZCl9ZWxz ZSBlLnZpc2libGU9ITF9fX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRl ci9jb25zdGFudHMiOjExMjQsIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1 bHRzIjoxMTI4LCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiOjExMzMsIi4u L3NjYXR0ZXIvbGluZV9zaGFwZV9kZWZhdWx0cyI6MTEzNSwiLi4vc2NhdHRl ci9tYXJrZXJfZGVmYXVsdHMiOjExMzksIi4uL3NjYXR0ZXIvc3VidHlwZXMi OjExNDQsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6MTE0NSwiLi9hdHRy aWJ1dGVzIjoxMTkzfV0sMTE5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIg aSxvLHM9e30sbD1yW2Uuc3VicGxvdF0uX3N1YnBsb3Q7bD8oaT1sLnJhZGlh bEF4aXMsbz1sLmFuZ3VsYXJBeGlzKTooaT0obD1yW2Uuc3VicGxvdF0pLnJh ZGlhbGF4aXMsbz1sLmFuZ3VsYXJheGlzKTt2YXIgYz1pLmMybCh0LnIpO3Mu ckxhYmVsPWEudGlja1RleHQoaSxjLCEwKS50ZXh0O3ZhciB1PSJkZWdyZWVz Ij09PW8udGhldGF1bml0P24ucmFkMmRlZyh0LnRoZXRhKTp0LnRoZXRhO3Jl dHVybiBzLnRoZXRhTGFiZWw9YS50aWNrVGV4dChvLHUsITApLnRleHQsc319 LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVz Ijo3NjV9XSwxMTk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uL3NjYXR0ZXIvaG92ZXIiKTtmdW5jdGlvbiBhKHQsZSxyLG4p e3ZhciBhPXIucmFkaWFsQXhpcyxpPXIuYW5ndWxhckF4aXM7YS5faG92ZXJ0 aXRsZT0iciIsaS5faG92ZXJ0aXRsZT0iXHUwM2I4Ijt2YXIgbz17fTtvW2Uu c3VicGxvdF09e19zdWJwbG90OnJ9O3ZhciBzPWUuX21vZHVsZS5mb3JtYXRM YWJlbHModCxlLG8pO24uckxhYmVsPXMuckxhYmVsLG4udGhldGFMYWJlbD1z LnRoZXRhTGFiZWw7dmFyIGw9dC5oaXx8ZS5ob3ZlcmluZm8sYz1bXTtmdW5j dGlvbiB1KHQsZSl7Yy5wdXNoKHQuX2hvdmVydGl0bGUrIjogIitlKX1pZigh ZS5ob3ZlcnRlbXBsYXRlKXt2YXIgaD1sLnNwbGl0KCIrIik7LTEhPT1oLmlu ZGV4T2YoImFsbCIpJiYoaD1bInIiLCJ0aGV0YSIsInRleHQiXSksLTEhPT1o LmluZGV4T2YoInIiKSYmdShhLG4uckxhYmVsKSwtMSE9PWguaW5kZXhPZigi dGhldGEiKSYmdShpLG4udGhldGFMYWJlbCksLTEhPT1oLmluZGV4T2YoInRl eHQiKSYmbi50ZXh0JiYoYy5wdXNoKG4udGV4dCksZGVsZXRlIG4udGV4dCks bi5leHRyYVRleHQ9Yy5qb2luKCI8YnI+Iil9fWUuZXhwb3J0cz17aG92ZXJQ b2ludHM6ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89bih0LGUscixpKTtpZihv JiYhMSE9PW9bMF0uaW5kZXgpe3ZhciBzPW9bMF07aWYodm9pZCAwPT09cy5p bmRleClyZXR1cm4gbzt2YXIgbD10LnN1YnBsb3QsYz1zLmNkW3MuaW5kZXhd LHU9cy50cmFjZTtpZihsLmlzUHRJbnNpZGUoYykpcmV0dXJuIHMueExhYmVs VmFsPXZvaWQgMCxzLnlMYWJlbFZhbD12b2lkIDAsYShjLHUsbCxzKSxzLmhv dmVydGVtcGxhdGU9dS5ob3ZlcnRlbXBsYXRlLG99fSxtYWtlSG92ZXJQb2lu dFRleHQ6YX19LHsiLi4vc2NhdHRlci9ob3ZlciI6MTEzMX1dLDExOTg6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVU eXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlcnBvbGFyIixiYXNlUGxvdE1vZHVs ZTp0KCIuLi8uLi9wbG90cy9wb2xhciIpLGNhdGVnb3JpZXM6WyJwb2xhciIs InN5bWJvbHMiLCJzaG93TGVnZW5kIiwic2NhdHRlci1saWtlIl0sYXR0cmli dXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2Rl ZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsY29sb3JiYXI6dCgiLi4vc2NhdHRl ci9tYXJrZXJfY29sb3JiYXIiKSxmb3JtYXRMYWJlbHM6dCgiLi9mb3JtYXRf bGFiZWxzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLHN0 eWxlOnQoIi4uL3NjYXR0ZXIvc3R5bGUiKS5zdHlsZSxzdHlsZU9uU2VsZWN0 OnQoIi4uL3NjYXR0ZXIvc3R5bGUiKS5zdHlsZU9uU2VsZWN0LGhvdmVyUG9p bnRzOnQoIi4vaG92ZXIiKS5ob3ZlclBvaW50cyxzZWxlY3RQb2ludHM6dCgi Li4vc2NhdHRlci9zZWxlY3QiKSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9w b2xhciI6ODI5LCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciI6MTEzOCwi Li4vc2NhdHRlci9zZWxlY3QiOjExNDEsIi4uL3NjYXR0ZXIvc3R5bGUiOjEx NDMsIi4vYXR0cmlidXRlcyI6MTE5MywiLi9jYWxjIjoxMTk0LCIuL2RlZmF1 bHRzIjoxMTk1LCIuL2Zvcm1hdF9sYWJlbHMiOjExOTYsIi4vaG92ZXIiOjEx OTcsIi4vcGxvdCI6MTE5OX1dLDExOTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9wbG90IiksYT10KCIuLi8u Li9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2UuZXhwb3J0cz1mdW5j dGlvbih0LGUscil7Zm9yKHZhciBpPWUubGF5ZXJzLmZyb250cGxvdC5zZWxl Y3QoImcuc2NhdHRlcmxheWVyIiksbz17eGF4aXM6ZS54YXhpcyx5YXhpczpl LnlheGlzLHBsb3Q6ZS5mcmFtZXdvcmssbGF5ZXJDbGlwSWQ6ZS5faGFzQ2xp cE9uQXhpc0ZhbHNlP2UuY2xpcElkcy5mb3JUcmFjZXM6bnVsbH0scz1lLnJh ZGlhbEF4aXMsbD1lLmFuZ3VsYXJBeGlzLGM9MDtjPHIubGVuZ3RoO2MrKylm b3IodmFyIHU9cltjXSxoPTA7aDx1Lmxlbmd0aDtoKyspe3ZhciBmPXVbaF0s cD1mLnI7aWYocD09PWEpZi54PWYueT1hO2Vsc2V7dmFyIGQ9cy5jMmcocCks Zz1sLmMyZyhmLnRoZXRhKTtmLng9ZCpNYXRoLmNvcyhnKSxmLnk9ZCpNYXRo LnNpbihnKX19bih0LG8scixpKX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVy aWNhbCI6NjkzLCIuLi9zY2F0dGVyL3Bsb3QiOjExNDB9XSwxMjAwOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXJw b2xhci9hdHRyaWJ1dGVzIiksYT10KCIuLi9zY2F0dGVyZ2wvYXR0cmlidXRl cyIpLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRl eHR0ZW1wbGF0ZUF0dHJzO2UuZXhwb3J0cz17bW9kZTpuLm1vZGUscjpuLnIs dGhldGE6bi50aGV0YSxyMDpuLnIwLGRyOm4uZHIsdGhldGEwOm4udGhldGEw LGR0aGV0YTpuLmR0aGV0YSx0aGV0YXVuaXQ6bi50aGV0YXVuaXQsdGV4dDpu LnRleHQsdGV4dHRlbXBsYXRlOmkoe2VkaXRUeXBlOiJwbG90In0se2tleXM6 WyJyIiwidGhldGEiLCJ0ZXh0Il19KSxob3ZlcnRleHQ6bi5ob3ZlcnRleHQs aG92ZXJ0ZW1wbGF0ZTpuLmhvdmVydGVtcGxhdGUsbGluZTphLmxpbmUsY29u bmVjdGdhcHM6YS5jb25uZWN0Z2FwcyxtYXJrZXI6YS5tYXJrZXIsZmlsbDph LmZpbGwsZmlsbGNvbG9yOmEuZmlsbGNvbG9yLHRleHRwb3NpdGlvbjphLnRl eHRwb3NpdGlvbix0ZXh0Zm9udDphLnRleHRmb250LGhvdmVyaW5mbzpuLmhv dmVyaW5mbyxzZWxlY3RlZDpuLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6bi51bnNl bGVjdGVkfX0seyIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4 NDEsIi4uL3NjYXR0ZXJnbC9hdHRyaWJ1dGVzIjoxMTcxLCIuLi9zY2F0dGVy cG9sYXIvYXR0cmlidXRlcyI6MTE5M31dLDEyMDE6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9jb2xvcnNjYWxl X2NhbGMiKSxhPXQoIi4uL3NjYXR0ZXIvY2FsYyIpLmNhbGNNYXJrZXJTaXpl LGk9dCgiLi4vc2NhdHRlcmdsL2NvbnZlcnQiKSxvPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIikscz10KCIuLi9zY2F0dGVyZ2wvY29uc3RhbnRz IikuVE9PX01BTllfUE9JTlRTO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Zh ciByPXQuX2Z1bGxMYXlvdXQsbD1lLnN1YnBsb3QsYz1yW2xdLnJhZGlhbGF4 aXMsdT1yW2xdLmFuZ3VsYXJheGlzLGg9ZS5fcj1jLm1ha2VDYWxjZGF0YShl LCJyIiksZj1lLl90aGV0YT11Lm1ha2VDYWxjZGF0YShlLCJ0aGV0YSIpLHA9 ZS5fbGVuZ3RoLGQ9e307cDxoLmxlbmd0aCYmKGg9aC5zbGljZSgwLHApKSxw PGYubGVuZ3RoJiYoZj1mLnNsaWNlKDAscCkpLGQucj1oLGQudGhldGE9Zixu KHQsZSk7dmFyIGcsdj1kLm9wdHM9aS5zdHlsZSh0LGUpO3JldHVybiBwPHM/ Zz1hKGUscCk6di5tYXJrZXImJihnPTIqKHYubWFya2VyLnNpemVBdmd8fE1h dGgubWF4KHYubWFya2VyLnNpemUsMykpKSxlLl9leHRyZW1lcy54PW8uZmlu ZEV4dHJlbWVzKGMsaCx7cHBhZDpnfSksW3t4OiExLHk6ITEsdDpkLHRyYWNl OmV9XX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4v c2NhdHRlci9jYWxjIjoxMTIxLCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2Fs YyI6MTEyMywiLi4vc2NhdHRlcmdsL2NvbnN0YW50cyI6MTE3MywiLi4vc2Nh dHRlcmdsL2NvbnZlcnQiOjExNzR9XSwxMjAyOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vc2Nh dHRlci9zdWJ0eXBlcyIpLGk9dCgiLi4vc2NhdHRlcnBvbGFyL2RlZmF1bHRz IikuaGFuZGxlUlRoZXRhRGVmYXVsdHMsbz10KCIuLi9zY2F0dGVyL21hcmtl cl9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIiks bD10KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiKSxjPXQoIi4uL3NjYXR0 ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIiksdT10KCIuLi9zY2F0dGVyL2NvbnN0 YW50cyIpLlBUU19MSU5FU09OTFksaD10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIsZil7ZnVuY3Rpb24gcChyLGEpe3JldHVy biBuLmNvZXJjZSh0LGUsaCxyLGEpfXZhciBkPWkodCxlLGYscCk7ZD8ocCgi dGhldGF1bml0IikscCgibW9kZSIsZDx1PyJsaW5lcyttYXJrZXJzIjoibGlu ZXMiKSxwKCJ0ZXh0IikscCgiaG92ZXJ0ZXh0IiksImZpbGxzIiE9PWUuaG92 ZXJvbiYmcCgiaG92ZXJ0ZW1wbGF0ZSIpLGEuaGFzTGluZXMoZSkmJihzKHQs ZSxyLGYscCkscCgiY29ubmVjdGdhcHMiKSksYS5oYXNNYXJrZXJzKGUpJiZv KHQsZSxyLGYscCksYS5oYXNUZXh0KGUpJiYocCgidGV4dHRlbXBsYXRlIiks bCh0LGUsZixwKSkscCgiZmlsbCIpLCJub25lIiE9PWUuZmlsbCYmYyh0LGUs cixwKSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxwKSk6ZS52 aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjcxNywiLi4vc2NhdHRlci9jb25z dGFudHMiOjExMjQsIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIjox MTI4LCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiOjExMzMsIi4uL3NjYXR0 ZXIvbWFya2VyX2RlZmF1bHRzIjoxMTM5LCIuLi9zY2F0dGVyL3N1YnR5cGVz IjoxMTQ0LCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiOjExNDUsIi4uL3Nj YXR0ZXJwb2xhci9kZWZhdWx0cyI6MTE5NSwiLi9hdHRyaWJ1dGVzIjoxMjAw fV0sMTIwMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi9zY2F0dGVycG9sYXIvZm9ybWF0X2xhYmVscyIpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscil7dmFyIGE9dC5pO3JldHVybiJyImluIHR8fCh0LnI9 ZS5fclthXSksInRoZXRhImluIHR8fCh0LnRoZXRhPWUuX3RoZXRhW2FdKSxu KHQsZSxyKX19LHsiLi4vc2NhdHRlcnBvbGFyL2Zvcm1hdF9sYWJlbHMiOjEx OTZ9XSwxMjA0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uL3NjYXR0ZXJnbC9ob3ZlciIpLGE9dCgiLi4vc2NhdHRlcnBvbGFy L2hvdmVyIikubWFrZUhvdmVyUG9pbnRUZXh0O2UuZXhwb3J0cz17aG92ZXJQ b2ludHM6ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89dC5jZFswXS50LHM9by5y LGw9by50aGV0YSxjPW4uaG92ZXJQb2ludHModCxlLHIsaSk7aWYoYyYmITEh PT1jWzBdLmluZGV4KXt2YXIgdT1jWzBdO2lmKHZvaWQgMD09PXUuaW5kZXgp cmV0dXJuIGM7dmFyIGg9dC5zdWJwbG90LGY9dS5jZFt1LmluZGV4XSxwPXUu dHJhY2U7aWYoZi5yPXNbdS5pbmRleF0sZi50aGV0YT1sW3UuaW5kZXhdLGgu aXNQdEluc2lkZShmKSlyZXR1cm4gdS54TGFiZWxWYWw9dm9pZCAwLHUueUxh YmVsVmFsPXZvaWQgMCxhKGYscCxoLHUpLGN9fX19LHsiLi4vc2NhdHRlcmds L2hvdmVyIjoxMTc5LCIuLi9zY2F0dGVycG9sYXIvaG92ZXIiOjExOTd9XSwx MjA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17 bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InNjYXR0ZXJwb2xhcmdsIixiYXNl UGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9wb2xhciIpLGNhdGVnb3JpZXM6 WyJnbCIsInJlZ2wiLCJwb2xhciIsInN5bWJvbHMiLCJzaG93TGVnZW5kIiwi c2NhdHRlci1saWtlIl0sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxz dXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6dCgiLi4v c2NhdHRlci9tYXJrZXJfY29sb3JiYXIiKSxmb3JtYXRMYWJlbHM6dCgiLi9m b3JtYXRfbGFiZWxzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxv dCIpLGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKS5ob3ZlclBvaW50cyxzZWxl Y3RQb2ludHM6dCgiLi4vc2NhdHRlcmdsL3NlbGVjdCIpLG1ldGE6e319fSx7 Ii4uLy4uL3Bsb3RzL3BvbGFyIjo4MjksIi4uL3NjYXR0ZXIvbWFya2VyX2Nv bG9yYmFyIjoxMTM4LCIuLi9zY2F0dGVyZ2wvc2VsZWN0IjoxMTgzLCIuL2F0 dHJpYnV0ZXMiOjEyMDAsIi4vY2FsYyI6MTIwMSwiLi9kZWZhdWx0cyI6MTIw MiwiLi9mb3JtYXRfbGFiZWxzIjoxMjAzLCIuL2hvdmVyIjoxMjA0LCIuL3Bs b3QiOjEyMDZ9XSwxMjA2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoInBvaW50LWNsdXN0ZXIiKSxhPXQoImZhc3QtaXNudW1lcmlj IiksaT10KCIuLi9zY2F0dGVyZ2wvcGxvdCIpLG89dCgiLi4vc2NhdHRlcmds L3NjZW5lX3VwZGF0ZSIpLHM9dCgiLi4vc2NhdHRlcmdsL2NvbnZlcnQiKSxs PXQoIi4uLy4uL2xpYiIpLGM9dCgiLi4vc2NhdHRlcmdsL2NvbnN0YW50cyIp LlRPT19NQU5ZX1BPSU5UUztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2lm KHIubGVuZ3RoKXt2YXIgdT1lLnJhZGlhbEF4aXMsaD1lLmFuZ3VsYXJBeGlz LGY9byh0LGUpO3JldHVybiByLmZvckVhY2goZnVuY3Rpb24ocil7aWYociYm clswXSYmclswXS50cmFjZSl7dmFyIGksbz1yWzBdLHA9by50cmFjZSxkPW8u dCxnPXAuX2xlbmd0aCx2PWQucixtPWQudGhldGEseT1kLm9wdHMseD12LnNs aWNlKCksYj1tLnNsaWNlKCk7Zm9yKGk9MDtpPHYubGVuZ3RoO2krKyllLmlz UHRJbnNpZGUoe3I6dltpXSx0aGV0YTptW2ldfSl8fCh4W2ldPU5hTixiW2ld PU5hTik7dmFyIF89bmV3IEFycmF5KDIqZyksdz1BcnJheShnKSxrPUFycmF5 KGcpO2ZvcihpPTA7aTxnO2krKyl7dmFyIFQsTSxBPXhbaV07aWYoYShBKSl7 dmFyIFM9dS5jMmcoQSksRT1oLmMyZyhiW2ldLHAudGhldGF1bml0KTtUPVMq TWF0aC5jb3MoRSksTT1TKk1hdGguc2luKEUpfWVsc2UgVD1NPU5hTjt3W2ld PV9bMippXT1ULGtbaV09X1syKmkrMV09TX1kLnRyZWU9bihfKSx5Lm1hcmtl ciYmZz49YyYmKHkubWFya2VyLmNsdXN0ZXI9ZC50cmVlKSx5Lm1hcmtlciYm KHkubWFya2VyU2VsLnBvc2l0aW9ucz15Lm1hcmtlclVuc2VsLnBvc2l0aW9u cz15Lm1hcmtlci5wb3NpdGlvbnM9XykseS5saW5lJiZfLmxlbmd0aD4xJiZs LmV4dGVuZEZsYXQoeS5saW5lLHMubGluZVBvc2l0aW9ucyh0LHAsXykpLHku dGV4dCYmKGwuZXh0ZW5kRmxhdCh5LnRleHQse3Bvc2l0aW9uczpffSxzLnRl eHRQb3NpdGlvbih0LHAseS50ZXh0LHkubWFya2VyKSksbC5leHRlbmRGbGF0 KHkudGV4dFNlbCx7cG9zaXRpb25zOl99LHMudGV4dFBvc2l0aW9uKHQscCx5 LnRleHQseS5tYXJrZXJTZWwpKSxsLmV4dGVuZEZsYXQoeS50ZXh0VW5zZWws e3Bvc2l0aW9uczpffSxzLnRleHRQb3NpdGlvbih0LHAseS50ZXh0LHkubWFy a2VyVW5zZWwpKSkseS5maWxsJiYhZi5maWxsMmQmJihmLmZpbGwyZD0hMCks eS5tYXJrZXImJiFmLnNjYXR0ZXIyZCYmKGYuc2NhdHRlcjJkPSEwKSx5Lmxp bmUmJiFmLmxpbmUyZCYmKGYubGluZTJkPSEwKSx5LnRleHQmJiFmLmdsVGV4 dCYmKGYuZ2xUZXh0PSEwKSxmLmxpbmVPcHRpb25zLnB1c2goeS5saW5lKSxm LmZpbGxPcHRpb25zLnB1c2goeS5maWxsKSxmLm1hcmtlck9wdGlvbnMucHVz aCh5Lm1hcmtlciksZi5tYXJrZXJTZWxlY3RlZE9wdGlvbnMucHVzaCh5Lm1h cmtlclNlbCksZi5tYXJrZXJVbnNlbGVjdGVkT3B0aW9ucy5wdXNoKHkubWFy a2VyVW5zZWwpLGYudGV4dE9wdGlvbnMucHVzaCh5LnRleHQpLGYudGV4dFNl bGVjdGVkT3B0aW9ucy5wdXNoKHkudGV4dFNlbCksZi50ZXh0VW5zZWxlY3Rl ZE9wdGlvbnMucHVzaCh5LnRleHRVbnNlbCksZi5zZWxlY3RCYXRjaC5wdXNo KFtdKSxmLnVuc2VsZWN0QmF0Y2gucHVzaChbXSksZC54PXcsZC55PWssZC5y YXd4PXcsZC5yYXd5PWssZC5yPXYsZC50aGV0YT1tLGQucG9zaXRpb25zPV8s ZC5fc2NlbmU9ZixkLmluZGV4PWYuY291bnQsZi5jb3VudCsrfX0pLGkodCxl LHIpfX19LHsiLi4vLi4vbGliIjo3MTcsIi4uL3NjYXR0ZXJnbC9jb25zdGFu dHMiOjExNzMsIi4uL3NjYXR0ZXJnbC9jb252ZXJ0IjoxMTc0LCIuLi9zY2F0 dGVyZ2wvcGxvdCI6MTE4MSwiLi4vc2NhdHRlcmdsL3NjZW5lX3VwZGF0ZSI6 MTE4MiwiZmFzdC1pc251bWVyaWMiOjIyOCwicG9pbnQtY2x1c3RlciI6NDcx fV0sMTIwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1w bGF0ZUF0dHJzLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRl cyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vc2NhdHRlci9hdHRyaWJ1 dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8u Li9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGw9dCgiLi4v Li4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiKS5kYXNoLGM9dCgi Li4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsdT1pLm1hcmtlcixoPWku bGluZSxmPXUubGluZTtlLmV4cG9ydHM9e2E6e3ZhbFR5cGU6ImRhdGFfYXJy YXkiLGVkaXRUeXBlOiJjYWxjIn0sYjp7dmFsVHlwZToiZGF0YV9hcnJheSIs ZWRpdFR5cGU6ImNhbGMifSxjOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0 VHlwZToiY2FsYyJ9LHN1bTp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsbWlu OjAsZWRpdFR5cGU6ImNhbGMifSxtb2RlOmMoe30saS5tb2RlLHtkZmx0OiJt YXJrZXJzIn0pLHRleHQ6Yyh7fSxpLnRleHQse30pLHRleHR0ZW1wbGF0ZTph KHtlZGl0VHlwZToicGxvdCJ9LHtrZXlzOlsiYSIsImIiLCJjIiwidGV4dCJd fSksaG92ZXJ0ZXh0OmMoe30saS5ob3ZlcnRleHQse30pLGxpbmU6e2NvbG9y OmguY29sb3Isd2lkdGg6aC53aWR0aCxkYXNoOmwsc2hhcGU6Yyh7fSxoLnNo YXBlLHt2YWx1ZXM6WyJsaW5lYXIiLCJzcGxpbmUiXX0pLHNtb290aGluZzpo LnNtb290aGluZyxlZGl0VHlwZToiY2FsYyJ9LGNvbm5lY3RnYXBzOmkuY29u bmVjdGdhcHMsY2xpcG9uYXhpczppLmNsaXBvbmF4aXMsZmlsbDpjKHt9LGku ZmlsbCx7dmFsdWVzOlsibm9uZSIsInRvc2VsZiIsInRvbmV4dCJdLGRmbHQ6 Im5vbmUifSksZmlsbGNvbG9yOmkuZmlsbGNvbG9yLG1hcmtlcjpjKHtzeW1i b2w6dS5zeW1ib2wsb3BhY2l0eTp1Lm9wYWNpdHksbWF4ZGlzcGxheWVkOnUu bWF4ZGlzcGxheWVkLHNpemU6dS5zaXplLHNpemVyZWY6dS5zaXplcmVmLHNp emVtaW46dS5zaXplbWluLHNpemVtb2RlOnUuc2l6ZW1vZGUsbGluZTpjKHt3 aWR0aDpmLndpZHRoLGVkaXRUeXBlOiJjYWxjIn0scygibWFya2VyLmxpbmUi KSksZ3JhZGllbnQ6dS5ncmFkaWVudCxlZGl0VHlwZToiY2FsYyJ9LHMoIm1h cmtlciIpKSx0ZXh0Zm9udDppLnRleHRmb250LHRleHRwb3NpdGlvbjppLnRl eHRwb3NpdGlvbixzZWxlY3RlZDppLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6aS51 bnNlbGVjdGVkLGhvdmVyaW5mbzpjKHt9LG8uaG92ZXJpbmZvLHtmbGFnczpb ImEiLCJiIiwiYyIsInRleHQiLCJuYW1lIl19KSxob3Zlcm9uOmkuaG92ZXJv bixob3ZlcnRlbXBsYXRlOm4oKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xv cnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vY29tcG9uZW50cy9kcmF3 aW5nL2F0dHJpYnV0ZXMiOjYxMiwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIu Li8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3RzL3RlbXBs YXRlX2F0dHJpYnV0ZXMiOjg0MSwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjox MTIwfV0sMTIwODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vc2NhdHRlci9jb2xvcnNj YWxlX2NhbGMiKSxpPXQoIi4uL3NjYXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRh Iiksbz10KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIikscz10KCIuLi9z Y2F0dGVyL2NhbGMiKS5jYWxjTWFya2VyU2l6ZSxsPVsiYSIsImIiLCJjIl0s Yz17YTpbImIiLCJjIl0sYjpbImEiLCJjIl0sYzpbImEiLCJiIl19O2UuZXhw b3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLHUsaCxmLHAsZCxnPXQuX2Z1bGxM YXlvdXRbZS5zdWJwbG90XS5zdW0sdj1lLnN1bXx8ZyxtPXthOmUuYSxiOmUu YixjOmUuY307Zm9yKHI9MDtyPGwubGVuZ3RoO3IrKylpZighbVtoPWxbcl1d KXtmb3IocD1tW2NbaF1bMF1dLGQ9bVtjW2hdWzFdXSxmPW5ldyBBcnJheShw Lmxlbmd0aCksdT0wO3U8cC5sZW5ndGg7dSsrKWZbdV09di1wW3VdLWRbdV07 bVtoXT1mfXZhciB5LHgsYixfLHcsayxUPWUuX2xlbmd0aCxNPW5ldyBBcnJh eShUKTtmb3Iocj0wO3I8VDtyKyspeT1tLmFbcl0seD1tLmJbcl0sYj1tLmNb cl0sbih5KSYmbih4KSYmbihiKT8oMSE9PShfPWcvKCh5PSt5KSsoeD0reCkr KGI9K2IpKSkmJih5Kj1fLHgqPV8sYio9Xyksaz15LHc9Yi14LE1bcl09e3g6 dyx5OmssYTp5LGI6eCxjOmJ9KTpNW3JdPXt4OiExLHk6ITF9O3JldHVybiBz KGUsVCksYSh0LGUpLGkoTSxlKSxvKE0sZSksTX19LHsiLi4vc2NhdHRlci9h cnJheXNfdG9fY2FsY2RhdGEiOjExMTksIi4uL3NjYXR0ZXIvY2FsYyI6MTEy MSwiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiI6MTEyMiwiLi4vc2NhdHRl ci9jb2xvcnNjYWxlX2NhbGMiOjExMjMsImZhc3QtaXNudW1lcmljIjoyMjh9 XSwxMjA5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL2xpYiIpLGE9dCgiLi4vc2NhdHRlci9jb25zdGFudHMiKSxpPXQo Ii4uL3NjYXR0ZXIvc3VidHlwZXMiKSxvPXQoIi4uL3NjYXR0ZXIvbWFya2Vy X2RlZmF1bHRzIikscz10KCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiKSxs PXQoIi4uL3NjYXR0ZXIvbGluZV9zaGFwZV9kZWZhdWx0cyIpLGM9dCgiLi4v c2NhdHRlci90ZXh0X2RlZmF1bHRzIiksdT10KCIuLi9zY2F0dGVyL2ZpbGxj b2xvcl9kZWZhdWx0cyIpLGg9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyLGYpe2Z1bmN0aW9uIHAocixhKXtyZXR1cm4gbi5j b2VyY2UodCxlLGgscixhKX12YXIgZCxnPXAoImEiKSx2PXAoImIiKSxtPXAo ImMiKTtpZihnPyhkPWcubGVuZ3RoLHY/KGQ9TWF0aC5taW4oZCx2Lmxlbmd0 aCksbSYmKGQ9TWF0aC5taW4oZCxtLmxlbmd0aCkpKTpkPW0/TWF0aC5taW4o ZCxtLmxlbmd0aCk6MCk6diYmbSYmKGQ9TWF0aC5taW4odi5sZW5ndGgsbS5s ZW5ndGgpKSxkKXtlLl9sZW5ndGg9ZCxwKCJzdW0iKSxwKCJ0ZXh0IikscCgi aG92ZXJ0ZXh0IiksImZpbGxzIiE9PWUuaG92ZXJvbiYmcCgiaG92ZXJ0ZW1w bGF0ZSIpLHAoIm1vZGUiLGQ8YS5QVFNfTElORVNPTkxZPyJsaW5lcyttYXJr ZXJzIjoibGluZXMiKSxpLmhhc0xpbmVzKGUpJiYocyh0LGUscixmLHApLGwo dCxlLHApLHAoImNvbm5lY3RnYXBzIikpLGkuaGFzTWFya2VycyhlKSYmbyh0 LGUscixmLHAse2dyYWRpZW50OiEwfSksaS5oYXNUZXh0KGUpJiYocCgidGV4 dHRlbXBsYXRlIiksYyh0LGUsZixwKSk7dmFyIHk9W107KGkuaGFzTWFya2Vy cyhlKXx8aS5oYXNUZXh0KGUpKSYmKHAoImNsaXBvbmF4aXMiKSxwKCJtYXJr ZXIubWF4ZGlzcGxheWVkIikseS5wdXNoKCJwb2ludHMiKSkscCgiZmlsbCIp LCJub25lIiE9PWUuZmlsbCYmKHUodCxlLHIscCksaS5oYXNMaW5lcyhlKXx8 bCh0LGUscCkpLCJ0b25leHQiIT09ZS5maWxsJiYidG9zZWxmIiE9PWUuZmls bHx8eS5wdXNoKCJmaWxscyIpLHAoImhvdmVyb24iLHkuam9pbigiKyIpfHwi cG9pbnRzIiksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUscCl9 ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi9zY2F0 dGVyL2NvbnN0YW50cyI6MTEyNCwiLi4vc2NhdHRlci9maWxsY29sb3JfZGVm YXVsdHMiOjExMjgsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyI6MTEzMywi Li4vc2NhdHRlci9saW5lX3NoYXBlX2RlZmF1bHRzIjoxMTM1LCIuLi9zY2F0 dGVyL21hcmtlcl9kZWZhdWx0cyI6MTEzOSwiLi4vc2NhdHRlci9zdWJ0eXBl cyI6MTE0NCwiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIjoxMTQ1LCIuL2F0 dHJpYnV0ZXMiOjEyMDd9XSwxMjEwOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGEpe2lmKGUueGEm Jih0LnhheGlzPWUueGEpLGUueWEmJih0LnlheGlzPWUueWEpLG5bYV0pe3Zh ciBpPW5bYV07dC5hPWkuYSx0LmI9aS5iLHQuYz1pLmN9ZWxzZSB0LmE9ZS5h LHQuYj1lLmIsdC5jPWUuYztyZXR1cm4gdH19LHt9XSwxMjExOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIg YT17fSxpPXJbZS5zdWJwbG90XS5fc3VicGxvdDtyZXR1cm4gYS5hTGFiZWw9 bi50aWNrVGV4dChpLmFheGlzLHQuYSwhMCkudGV4dCxhLmJMYWJlbD1uLnRp Y2tUZXh0KGkuYmF4aXMsdC5iLCEwKS50ZXh0LGEuY0xhYmVsPW4udGlja1Rl eHQoaS5jYXhpcyx0LmMsITApLnRleHQsYX19LHsiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F4ZXMiOjc2NX1dLDEyMTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9ob3ZlciIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixhKXt2YXIgaT1uKHQsZSxyLGEpO2lmKGkmJiEx IT09aVswXS5pbmRleCl7dmFyIG89aVswXTtpZih2b2lkIDA9PT1vLmluZGV4 KXt2YXIgcz0xLW8ueTAvdC55YS5fbGVuZ3RoLGw9dC54YS5fbGVuZ3RoLGM9 bCpzLzIsdT1sLWM7cmV0dXJuIG8ueDA9TWF0aC5tYXgoTWF0aC5taW4oby54 MCx1KSxjKSxvLngxPU1hdGgubWF4KE1hdGgubWluKG8ueDEsdSksYyksaX12 YXIgaD1vLmNkW28uaW5kZXhdLGY9by50cmFjZSxwPW8uc3VicGxvdDtvLmE9 aC5hLG8uYj1oLmIsby5jPWguYyxvLnhMYWJlbFZhbD12b2lkIDAsby55TGFi ZWxWYWw9dm9pZCAwO3ZhciBkPXt9O2RbZi5zdWJwbG90XT17X3N1YnBsb3Q6 cH07dmFyIGc9Zi5fbW9kdWxlLmZvcm1hdExhYmVscyhoLGYsZCk7by5hTGFi ZWw9Zy5hTGFiZWwsby5iTGFiZWw9Zy5iTGFiZWwsby5jTGFiZWw9Zy5jTGFi ZWw7dmFyIHY9aC5oaXx8Zi5ob3ZlcmluZm8sbT1bXTtpZighZi5ob3ZlcnRl bXBsYXRlKXt2YXIgeT12LnNwbGl0KCIrIik7LTEhPT15LmluZGV4T2YoImFs bCIpJiYoeT1bImEiLCJiIiwiYyJdKSwtMSE9PXkuaW5kZXhPZigiYSIpJiZ4 KHAuYWF4aXMsby5hTGFiZWwpLC0xIT09eS5pbmRleE9mKCJiIikmJngocC5i YXhpcyxvLmJMYWJlbCksLTEhPT15LmluZGV4T2YoImMiKSYmeChwLmNheGlz LG8uY0xhYmVsKX1yZXR1cm4gby5leHRyYVRleHQ9bS5qb2luKCI8YnI+Iiks by5ob3ZlcnRlbXBsYXRlPWYuaG92ZXJ0ZW1wbGF0ZSxpfWZ1bmN0aW9uIHgo dCxlKXttLnB1c2godC5faG92ZXJ0aXRsZSsiOiAiK2UpfX19LHsiLi4vc2Nh dHRlci9ob3ZlciI6MTEzMX1dLDEyMTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRl cyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjb2xvcmJhcjp0 KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0 KCIuL2Zvcm1hdF9sYWJlbHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgi Li9wbG90Iiksc3R5bGU6dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlLHN0 eWxlT25TZWxlY3Q6dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlT25TZWxl Y3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLHNlbGVjdFBvaW50czp0KCIu Li9zY2F0dGVyL3NlbGVjdCIpLGV2ZW50RGF0YTp0KCIuL2V2ZW50X2RhdGEi KSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlcnRlcm5hcnkiLGJh c2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL3Rlcm5hcnkiKSxjYXRlZ29y aWVzOlsidGVybmFyeSIsInN5bWJvbHMiLCJzaG93TGVnZW5kIiwic2NhdHRl ci1saWtlIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvdGVybmFyeSI6ODQy LCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciI6MTEzOCwiLi4vc2NhdHRl ci9zZWxlY3QiOjExNDEsIi4uL3NjYXR0ZXIvc3R5bGUiOjExNDMsIi4vYXR0 cmlidXRlcyI6MTIwNywiLi9jYWxjIjoxMjA4LCIuL2RlZmF1bHRzIjoxMjA5 LCIuL2V2ZW50X2RhdGEiOjEyMTAsIi4vZm9ybWF0X2xhYmVscyI6MTIxMSwi Li9ob3ZlciI6MTIxMiwiLi9wbG90IjoxMjE0fV0sMTIxNDpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL3Bsb3Qi KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPWUucGxvdENvbnRh aW5lcjthLnNlbGVjdCgiLnNjYXR0ZXJsYXllciIpLnNlbGVjdEFsbCgiKiIp LnJlbW92ZSgpO3ZhciBpPXt4YXhpczplLnhheGlzLHlheGlzOmUueWF4aXMs cGxvdDphLGxheWVyQ2xpcElkOmUuX2hhc0NsaXBPbkF4aXNGYWxzZT9lLmNs aXBJZFJlbGF0aXZlOm51bGx9LG89ZS5sYXllcnMuZnJvbnRwbG90LnNlbGVj dCgiZy5zY2F0dGVybGF5ZXIiKTtuKHQsaSxyLG8pfX0seyIuLi9zY2F0dGVy L3Bsb3QiOjExNDB9XSwxMjE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGE9dCgiLi4v Li4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxpPXQoIi4u Ly4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRl QXR0cnMsbz10KCIuLi9zY2F0dGVyZ2wvYXR0cmlidXRlcyIpLHM9dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyIpLmlkUmVnZXgsbD10KCIu Li8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXks Yz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCx1PW4ubWFya2Vy LGg9dS5saW5lLGY9YyhhKCJtYXJrZXIubGluZSIse2VkaXRUeXBlT3ZlcnJp ZGU6ImNhbGMifSkse3dpZHRoOmMoe30saC53aWR0aCx7ZWRpdFR5cGU6ImNh bGMifSksZWRpdFR5cGU6ImNhbGMifSkscD1jKGEoIm1hcmtlciIpLHtzeW1i b2w6dS5zeW1ib2wsc2l6ZTpjKHt9LHUuc2l6ZSx7ZWRpdFR5cGU6Im1hcmtl clNpemUifSksc2l6ZXJlZjp1LnNpemVyZWYsc2l6ZW1pbjp1LnNpemVtaW4s c2l6ZW1vZGU6dS5zaXplbW9kZSxvcGFjaXR5OnUub3BhY2l0eSxjb2xvcmJh cjp1LmNvbG9yYmFyLGxpbmU6ZixlZGl0VHlwZToiY2FsYyJ9KTtmdW5jdGlv biBkKHQpe3JldHVybnt2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3Ro OiEwLGVkaXRUeXBlOiJjYWxjIixpdGVtczp7dmFsVHlwZToic3VicGxvdGlk IixyZWdleDpzW3RdLGVkaXRUeXBlOiJwbG90In19fXAuY29sb3IuZWRpdFR5 cGU9cC5jbWluLmVkaXRUeXBlPXAuY21heC5lZGl0VHlwZT0ic3R5bGUiLGUu ZXhwb3J0cz17ZGltZW5zaW9uczpsKCJkaW1lbnNpb24iLHt2aXNpYmxlOnt2 YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sbGFi ZWw6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMifSx2YWx1ZXM6 e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhp c1R5cGVzIn0sYXhpczp7dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsibGluZWFyIiwibG9nIiwiZGF0ZSIsImNhdGVnb3J5Il0sZWRpdFR5 cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxtYXRjaGVzOnt2YWxUeXBlOiJi b29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNh bGMrY2xlYXJBeGlzVHlwZXMifSxlZGl0VHlwZToiY2FsYytjbGVhckF4aXNU eXBlcyJ9KSx0ZXh0OmMoe30sby50ZXh0LHt9KSxob3ZlcnRleHQ6Yyh7fSxv LmhvdmVydGV4dCx7fSksaG92ZXJ0ZW1wbGF0ZTppKCksbWFya2VyOnAseGF4 ZXM6ZCgieCIpLHlheGVzOmQoInkiKSxkaWFnb25hbDp7dmlzaWJsZTp7dmFs VHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LGVkaXRU eXBlOiJjYWxjIn0sc2hvd3VwcGVyaGFsZjp7dmFsVHlwZToiYm9vbGVhbiIs ZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LHNob3dsb3dlcmhhbGY6e3ZhbFR5 cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxzZWxlY3Rl ZDp7bWFya2VyOm8uc2VsZWN0ZWQubWFya2VyLGVkaXRUeXBlOiJjYWxjIn0s dW5zZWxlY3RlZDp7bWFya2VyOm8udW5zZWxlY3RlZC5tYXJrZXIsZWRpdFR5 cGU6ImNhbGMifSxvcGFjaXR5Om8ub3BhY2l0eX19LHsiLi4vLi4vY29tcG9u ZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4 dGVuZCI6NzA4LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo3NTUs Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMiOjc3MSwiLi4vLi4v cGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIuLi9zY2F0dGVyL2F0 dHJpYnV0ZXMiOjExMjAsIi4uL3NjYXR0ZXJnbC9hdHRyaWJ1dGVzIjoxMTcx fV0sMTIxNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJyZWdsLWxpbmUyZCIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4u Ly4uL2xpYi9wcmVwYXJlX3JlZ2wiKSxvPXQoIi4uLy4uL3Bsb3RzL2dldF9k YXRhIikuZ2V0TW9kdWxlQ2FsY0RhdGEscz10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4iKSxsPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIp LmdldEZyb21JZCxjPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiku c2hvdWxkU2hvd1plcm9MaW5lLHU9InNwbG9tIjtmdW5jdGlvbiBoKHQsZSxy KXtmb3IodmFyIG49ci5tYXRyaXhPcHRpb25zLmRhdGEubGVuZ3RoLGE9ZS5f dmlzaWJsZURpbXMsaT1yLnZpZXdPcHRzLnJhbmdlcz1uZXcgQXJyYXkobiks bz0wO288YS5sZW5ndGg7bysrKXt2YXIgcz1hW29dLGM9aVtvXT1uZXcgQXJy YXkoNCksdT1sKHQsZS5fZGlhZ1tzXVswXSk7dSYmKGNbMF09dS5yMmwodS5y YW5nZVswXSksY1syXT11LnIybCh1LnJhbmdlWzFdKSk7dmFyIGg9bCh0LGUu X2RpYWdbc11bMV0pO2gmJihjWzFdPWgucjJsKGgucmFuZ2VbMF0pLGNbM109 aC5yMmwoaC5yYW5nZVsxXSkpfXIuc2VsZWN0QmF0Y2gubGVuZ3RofHxyLnVu c2VsZWN0QmF0Y2gubGVuZ3RoP3IubWF0cml4LnVwZGF0ZSh7cmFuZ2VzOml9 LHtyYW5nZXM6aX0pOnIubWF0cml4LnVwZGF0ZSh7cmFuZ2VzOml9KX1mdW5j dGlvbiBmKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9nbGNhbnZhcy5k YXRhKClbMF0ucmVnbCxhPWUuX3NwbG9tR3JpZDthfHwoYT1lLl9zcGxvbUdy aWQ9bihyKSksYS51cGRhdGUoZnVuY3Rpb24odCl7dmFyIGUscj10Ll9mdWxs TGF5b3V0LG49ci5fc2l6ZSxhPVswLDAsci53aWR0aCxyLmhlaWdodF0saT17 fTtmdW5jdGlvbiBvKHQsZSxyLG4sbyxzKXt2YXIgbD1lW3QrImNvbG9yIl0s Yz1lW3QrIndpZHRoIl0sdT1TdHJpbmcobCtjKTt1IGluIGk/aVt1XS5kYXRh LnB1c2goTmFOLE5hTixyLG4sbyxzKTppW3VdPXtkYXRhOltyLG4sbyxzXSxq b2luOiJyZWN0Iix0aGlja25lc3M6Yyxjb2xvcjpsLHZpZXdwb3J0OmEscmFu Z2U6YSxvdmVybGF5OiExfX1mb3IoZSBpbiByLl9zcGxvbVN1YnBsb3RzKXt2 YXIgcyxsLHU9ci5fcGxvdHNbZV0saD11LnhheGlzLGY9dS55YXhpcyxwPWgu X2dyaWRWYWxzLGQ9Zi5fZ3JpZFZhbHMsZz1uLmIrZi5kb21haW5bMF0qbi5o LHY9LWYuX20sbT0tdipmLnIybChmLnJhbmdlWzBdLGYuY2FsZW5kYXIpO2lm KGguc2hvd2dyaWQpZm9yKGU9MDtlPHAubGVuZ3RoO2UrKylzPWguX29mZnNl dCtoLmwycChwW2VdLngpLG8oImdyaWQiLGgscyxnLHMsZytmLl9sZW5ndGgp O2lmKGYuc2hvd2dyaWQpZm9yKGU9MDtlPGQubGVuZ3RoO2UrKylsPWcrbSt2 KmRbZV0ueCxvKCJncmlkIixmLGguX29mZnNldCxsLGguX29mZnNldCtoLl9s ZW5ndGgsbCk7Yyh0LGgsZikmJihzPWguX29mZnNldCtoLmwycCgwKSxvKCJ6 ZXJvbGluZSIsaCxzLGcscyxnK2YuX2xlbmd0aCkpLGModCxmLGgpJiYobD1n K20rMCxvKCJ6ZXJvbGluZSIsZixoLl9vZmZzZXQsbCxoLl9vZmZzZXQraC5f bGVuZ3RoLGwpKX12YXIgeT1bXTtmb3IoZSBpbiBpKXkucHVzaChpW2VdKTty ZXR1cm4geX0odCkpfWUuZXhwb3J0cz17bmFtZTp1LGF0dHI6cy5hdHRyLGF0 dHJSZWdleDpzLmF0dHJSZWdleCxsYXlvdXRBdHRyaWJ1dGVzOnMubGF5b3V0 QXR0cmlidXRlcyxzdXBwbHlMYXlvdXREZWZhdWx0czpzLnN1cHBseUxheW91 dERlZmF1bHRzLGRyYXdGcmFtZXdvcms6cy5kcmF3RnJhbWV3b3JrLHBsb3Q6 ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPWEuZ2V0TW9kdWxl KHUpLG49byh0LmNhbGNkYXRhLHIpWzBdO2kodCxbIkFOR0xFX2luc3RhbmNl ZF9hcnJheXMiLCJPRVNfZWxlbWVudF9pbmRleF91aW50Il0pJiYoZS5faGFz T25seUxhcmdlU3Bsb21zJiZmKHQpLHIucGxvdCh0LHt9LG4pKX0sZHJhZzpm dW5jdGlvbih0KXt2YXIgZT10LmNhbGNkYXRhLHI9dC5fZnVsbExheW91dDty Ll9oYXNPbmx5TGFyZ2VTcGxvbXMmJmYodCk7Zm9yKHZhciBuPTA7bjxlLmxl bmd0aDtuKyspe3ZhciBhPWVbbl1bMF0udHJhY2UsaT1yLl9zcGxvbVNjZW5l c1thLnVpZF07InNwbG9tIj09PWEudHlwZSYmaSYmaS5tYXRyaXgmJmgodCxh LGkpfX0sdXBkYXRlR3JpZDpmLGNsZWFuOmZ1bmN0aW9uKHQsZSxyLG4pe3Zh ciBhLGk9e307aWYobi5fc3Bsb21TY2VuZXMpe2ZvcihhPTA7YTx0Lmxlbmd0 aDthKyspe3ZhciBvPXRbYV07InNwbG9tIj09PW8udHlwZSYmKGlbby51aWRd PTEpfWZvcihhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBsPXJbYV07aWYoIWlb bC51aWRdKXt2YXIgYz1uLl9zcGxvbVNjZW5lc1tsLnVpZF07YyYmYy5kZXN0 cm95JiZjLmRlc3Ryb3koKSxuLl9zcGxvbVNjZW5lc1tsLnVpZF09bnVsbCxk ZWxldGUgbi5fc3Bsb21TY2VuZXNbbC51aWRdfX19MD09PU9iamVjdC5rZXlz KG4uX3NwbG9tU2NlbmVzfHx7fSkubGVuZ3RoJiZkZWxldGUgbi5fc3Bsb21T Y2VuZXMsbi5fc3Bsb21HcmlkJiYhZS5faGFzT25seUxhcmdlU3Bsb21zJiZu Ll9oYXNPbmx5TGFyZ2VTcGxvbXMmJihuLl9zcGxvbUdyaWQuZGVzdHJveSgp LG4uX3NwbG9tR3JpZD1udWxsLGRlbGV0ZSBuLl9zcGxvbUdyaWQpLHMuY2xl YW4odCxlLHIsbil9LHVwZGF0ZUZ4OnMudXBkYXRlRngsdG9TVkc6cy50b1NW R319LHsiLi4vLi4vbGliL3ByZXBhcmVfcmVnbCI6NzMwLCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4iOjc3NiwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMi Ojc2NSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo3NjgsIi4u Ly4uL3Bsb3RzL2dldF9kYXRhIjo4MDAsIi4uLy4uL3JlZ2lzdHJ5Ijo4NDYs InJlZ2wtbGluZTJkIjo0OTN9XSwxMjE3OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4aXNfaWRzIiksaT10KCIuLi9zY2F0dGVyL2NhbGMi KS5jYWxjTWFya2VyU2l6ZSxvPXQoIi4uL3NjYXR0ZXIvY2FsYyIpLmNhbGNB eGlzRXhwYW5zaW9uLHM9dCgiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMi KSxsPXQoIi4uL3NjYXR0ZXJnbC9jb252ZXJ0IikubWFya2VyU2VsZWN0aW9u LGM9dCgiLi4vc2NhdHRlcmdsL2NvbnZlcnQiKS5tYXJrZXJTdHlsZSx1PXQo Ii4vc2NlbmVfdXBkYXRlIiksaD10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJp Y2FsIikuQkFETlVNLGY9dCgiLi4vc2NhdHRlcmdsL2NvbnN0YW50cyIpLlRP T19NQU5ZX1BPSU5UUztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixw LGQsZyx2LG0seT1lLmRpbWVuc2lvbnMseD1lLl9sZW5ndGgsYj17fSxfPWIu Y2RhdGE9W10sdz1iLmRhdGE9W10saz1lLl92aXNpYmxlRGltcz1bXTtmdW5j dGlvbiBUKHQscil7Zm9yKHZhciBhPXQubWFrZUNhbGNkYXRhKHt2OnIudmFs dWVzLHZjYWxlbmRhcjplLmNhbGVuZGFyfSwidiIpLGk9MDtpPGEubGVuZ3Ro O2krKylhW2ldPWFbaV09PT1oP05hTjphW2ldO18ucHVzaChhKSx3LnB1c2go ImxvZyI9PT10LnR5cGU/bi5zaW1wbGVNYXAoYSx0LmMybCk6YSl9Zm9yKHI9 MDtyPHkubGVuZ3RoO3IrKylpZigoZD15W3JdKS52aXNpYmxlKXtpZihnPWEu Z2V0RnJvbUlkKHQsZS5fZGlhZ1tyXVswXSksdj1hLmdldEZyb21JZCh0LGUu X2RpYWdbcl1bMV0pLGcmJnYmJmcudHlwZSE9PXYudHlwZSl7bi5sb2coIlNr aXBwaW5nIHNwbG9tIGRpbWVuc2lvbiAiK3IrIiB3aXRoIGNvbmZsaWN0aW5n IGF4aXMgdHlwZXMiKTtjb250aW51ZX1nPyhUKGcsZCksdiYmImNhdGVnb3J5 Ij09PXYudHlwZSYmKHYuX2NhdGVnb3JpZXM9Zy5fY2F0ZWdvcmllcy5zbGlj ZSgpKSk6VCh2LGQpLGsucHVzaChyKX1mb3Iocyh0LGUpLG4uZXh0ZW5kRmxh dChiLGMoZSkpLG09Xy5sZW5ndGgqeD5mPzIqKGIuc2l6ZUF2Z3x8TWF0aC5t YXgoYi5zaXplLDMpKTppKGUseCkscD0wO3A8ay5sZW5ndGg7cCsrKWQ9eVty PWtbcF1dLGc9YS5nZXRGcm9tSWQodCxlLl9kaWFnW3JdWzBdKXx8e30sdj1h LmdldEZyb21JZCh0LGUuX2RpYWdbcl1bMV0pfHx7fSxvKHQsZSxnLHYsX1tw XSxfW3BdLG0pO3ZhciBNPXUodCxlKTtyZXR1cm4gTS5tYXRyaXh8fChNLm1h dHJpeD0hMCksTS5tYXRyaXhPcHRpb25zPWIsTS5zZWxlY3RlZE9wdGlvbnM9 bChlLGUuc2VsZWN0ZWQpLE0udW5zZWxlY3RlZE9wdGlvbnM9bChlLGUudW5z ZWxlY3RlZCksW3t4OiExLHk6ITEsdDp7fSx0cmFjZTplfV19fSx7Ii4uLy4u L2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4vbGliIjo3MTcsIi4u Ly4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCIuLi9zY2F0dGVy L2NhbGMiOjExMjEsIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIjoxMTIz LCIuLi9zY2F0dGVyZ2wvY29uc3RhbnRzIjoxMTczLCIuLi9zY2F0dGVyZ2wv Y29udmVydCI6MTE3NCwiLi9zY2VuZV91cGRhdGUiOjEyMjR9XSwxMjE4Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp YiIpLGE9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRz IiksaT10KCIuL2F0dHJpYnV0ZXMiKSxvPXQoIi4uL3NjYXR0ZXIvc3VidHlw ZXMiKSxzPXQoIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIiksbD10KCIu Li9wYXJjb29yZHMvbWVyZ2VfbGVuZ3RoIiksYz10KCIuLi9zY2F0dGVyZ2wv aGVscGVycyIpLmlzT3BlblN5bWJvbDtmdW5jdGlvbiB1KHQsZSl7ZnVuY3Rp b24gcihyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsaS5kaW1lbnNpb25zLHIs YSl9cigibGFiZWwiKTt2YXIgYT1yKCJ2YWx1ZXMiKTthJiZhLmxlbmd0aD9y KCJ2aXNpYmxlIik6ZS52aXNpYmxlPSExLHIoImF4aXMudHlwZSIpLHIoImF4 aXMubWF0Y2hlcyIpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixoKXtmdW5j dGlvbiBmKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9dmFyIHA9 YSh0LGUse25hbWU6ImRpbWVuc2lvbnMiLGhhbmRsZUl0ZW1EZWZhdWx0czp1 fSksZD1mKCJkaWFnb25hbC52aXNpYmxlIiksZz1mKCJzaG93dXBwZXJoYWxm Iiksdj1mKCJzaG93bG93ZXJoYWxmIik7aWYobChlLHAsInZhbHVlcyIpJiYo ZHx8Z3x8dikpe2YoInRleHQiKSxmKCJob3ZlcnRleHQiKSxmKCJob3ZlcnRl bXBsYXRlIikscyh0LGUscixoLGYpO3ZhciBtPWMoZS5tYXJrZXIuc3ltYm9s KSx5PW8uaXNCdWJibGUoZSk7ZigibWFya2VyLmxpbmUud2lkdGgiLG18fHk/ MTowKSxmdW5jdGlvbih0LGUscixuKXt2YXIgYSxpLG89ZS5kaW1lbnNpb25z LHM9by5sZW5ndGgsbD1lLnNob3d1cHBlcmhhbGYsYz1lLnNob3dsb3dlcmhh bGYsdT1lLmRpYWdvbmFsLnZpc2libGUsaD1uZXcgQXJyYXkocyksZj1uZXcg QXJyYXkocyk7Zm9yKGE9MDthPHM7YSsrKXt2YXIgcD1hP2ErMToiIjtoW2Fd PSJ4IitwLGZbYV09InkiK3B9dmFyIGQ9bigieGF4ZXMiLGgpLGc9bigieWF4 ZXMiLGYpLHY9ZS5fZGlhZz1uZXcgQXJyYXkocyk7ZS5feGF4ZXM9e30sZS5f eWF4ZXM9e307dmFyIG09W10seT1bXTtmdW5jdGlvbiB4KHQsbixhLGkpe2lm KHQpe3ZhciBvPXQuY2hhckF0KDApLHM9ci5fc3Bsb21BeGVzW29dO2lmKGVb Il8iK28rImF4ZXMiXVt0XT0xLGkucHVzaCh0KSwhKHQgaW4gcykpe3ZhciBs PXNbdF09e307YSYmKGwubGFiZWw9YS5sYWJlbHx8IiIsYS52aXNpYmxlJiZh LmF4aXMmJihhLmF4aXMudHlwZSYmKGwudHlwZT1hLmF4aXMudHlwZSksYS5h eGlzLm1hdGNoZXMmJihsLm1hdGNoZXM9bikpKX19fXZhciBiPSF1JiYhYyxf PSF1JiYhbDtmb3IoZS5fYXhlc0RpbT17fSxhPTA7YTxzO2ErKyl7dmFyIHc9 b1thXSxrPTA9PT1hLFQ9YT09PXMtMSxNPWsmJmJ8fFQmJl8/dm9pZCAwOmRb YV0sQT1rJiZffHxUJiZiP3ZvaWQgMDpnW2FdO3goTSxBLHcsbSkseChBLE0s dyx5KSx2W2FdPVtNLEFdLGUuX2F4ZXNEaW1bTV09YSxlLl9heGVzRGltW0Fd PWF9Zm9yKGE9MDthPG0ubGVuZ3RoO2ErKylmb3IoaT0wO2k8eS5sZW5ndGg7 aSsrKXt2YXIgUz1tW2FdK3lbaV07YT5pJiZsP3IuX3NwbG9tU3VicGxvdHNb U109MTphPGkmJmM/ci5fc3Bsb21TdWJwbG90c1tTXT0xOmEhPT1pfHwhdSYm YyYmbHx8KHIuX3NwbG9tU3VicGxvdHNbU109MSl9KCFjfHwhdSYmbCYmYykm JihyLl9zcGxvbUdyaWREZmx0LnhzaWRlPSJib3R0b20iLHIuX3NwbG9tR3Jp ZERmbHQueXNpZGU9ImxlZnQiKX0oMCxlLGgsZiksbi5jb2VyY2VTZWxlY3Rp b25NYXJrZXJPcGFjaXR5KGUsZil9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4u Ly4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVm YXVsdHMiOjc2MSwiLi4vcGFyY29vcmRzL21lcmdlX2xlbmd0aCI6MTA5MSwi Li4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiOjExMzksIi4uL3NjYXR0ZXIv c3VidHlwZXMiOjExNDQsIi4uL3NjYXR0ZXJnbC9oZWxwZXJzIjoxMTc4LCIu L2F0dHJpYnV0ZXMiOjEyMTV9XSwxMjE5OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vc2NhdHRl ci9jb2xvcnNjYWxlX2NhbGMiKSxpPXQoIi4uL3NjYXR0ZXJnbC9jb252ZXJ0 IikubWFya2VyU3R5bGU7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9 ZS50cmFjZSxvPXQuX2Z1bGxMYXlvdXQuX3NwbG9tU2NlbmVzW3IudWlkXTtp ZihvKXthKHQsciksbi5leHRlbmRGbGF0KG8ubWF0cml4T3B0aW9ucyxpKHIp KTt2YXIgcz1uLmV4dGVuZEZsYXQoe30sby5tYXRyaXhPcHRpb25zLG8udmll d09wdHMpO28ubWF0cml4LnVwZGF0ZShzLG51bGwpfX19LHsiLi4vLi4vbGli Ijo3MTcsIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIjoxMTIzLCIuLi9z Y2F0dGVyZ2wvY29udmVydCI6MTE3NH1dLDEyMjA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ci5nZXREaW1JbmRleD1mdW5jdGlvbih0LGUpe2Zv cih2YXIgcj1lLl9pZCxuPXt4OjAseToxfVtyLmNoYXJBdCgwKV0sYT10Ll92 aXNpYmxlRGltcyxpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciBvPWFbaV07aWYo dC5fZGlhZ1tvXVtuXT09PXIpcmV0dXJuIGl9cmV0dXJuITF9fSx7fV0sMTIy MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2hl bHBlcnMiKSxhPXQoIi4uL3NjYXR0ZXJnbC9ob3ZlciIpLmNhbGNIb3Zlcjtl LmV4cG9ydHM9e2hvdmVyUG9pbnRzOmZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10 LmNkWzBdLnRyYWNlLG89dC5zY2VuZS5tYXRyaXhPcHRpb25zLmNkYXRhLHM9 dC54YSxsPXQueWEsYz1zLmMycChlKSx1PWwuYzJwKHIpLGg9dC5kaXN0YW5j ZSxmPW4uZ2V0RGltSW5kZXgoaSxzKSxwPW4uZ2V0RGltSW5kZXgoaSxsKTtp ZighMT09PWZ8fCExPT09cClyZXR1cm5bdF07Zm9yKHZhciBkLGcsdj1vW2Zd LG09b1twXSx5PWgseD0wO3g8di5sZW5ndGg7eCsrKXt2YXIgYj12W3hdLF89 bVt4XSx3PXMuYzJwKGIpLWMsaz1sLmMycChfKS11LFQ9TWF0aC5zcXJ0KHcq dytrKmspO1Q8eSYmKHk9Zz1ULGQ9eCl9cmV0dXJuIHQuaW5kZXg9ZCx0LmRp c3RhbmNlPXksdC5keHk9Zyx2b2lkIDA9PT1kP1t0XTpbYSh0LHYsbSxpKV19 fX0seyIuLi9zY2F0dGVyZ2wvaG92ZXIiOjExNzksIi4vaGVscGVycyI6MTIy MH1dLDEyMjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZ3Jp ZCIpO2UuZXhwb3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InNwbG9t IixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jhc2VfcGxvdCIpLGNhdGVnb3JpZXM6 WyJnbCIsInJlZ2wiLCJjYXJ0ZXNpYW4iLCJzeW1ib2xzIiwic2hvd0xlZ2Vu ZCIsInNjYXR0ZXItbGlrZSJdLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVz Iiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQo Ii4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiksY2FsYzp0KCIuL2NhbGMi KSxwbG90OnQoIi4vcGxvdCIpLGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKS5o b3ZlclBvaW50cyxzZWxlY3RQb2ludHM6dCgiLi9zZWxlY3QiKSxlZGl0U3R5 bGU6dCgiLi9lZGl0X3N0eWxlIiksbWV0YTp7fX0sbi5yZWdpc3RlcihhKX0s eyIuLi8uLi9jb21wb25lbnRzL2dyaWQiOjYzNCwiLi4vLi4vcmVnaXN0cnki Ojg0NiwiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjExMzgsIi4vYXR0 cmlidXRlcyI6MTIxNSwiLi9iYXNlX3Bsb3QiOjEyMTYsIi4vY2FsYyI6MTIx NywiLi9kZWZhdWx0cyI6MTIxOCwiLi9lZGl0X3N0eWxlIjoxMjE5LCIuL2hv dmVyIjoxMjIxLCIuL3Bsb3QiOjEyMjMsIi4vc2VsZWN0IjoxMjI1fV0sMTIy MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJyZWds LXNwbG9tIiksYT10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGlzX2lkcyIpO2Z1bmN0aW9uIG8odCxlKXt2YXIgcixvLHMs bCxjLHU9dC5fZnVsbExheW91dCxoPXUuX3NpemUsZj1lLnRyYWNlLHA9ZS50 LGQ9dS5fc3Bsb21TY2VuZXNbZi51aWRdLGc9ZC5tYXRyaXhPcHRpb25zLHY9 Zy5jZGF0YSxtPXUuX2dsY2FudmFzLmRhdGEoKVswXS5yZWdsLHk9dS5kcmFn bW9kZTtpZigwIT09di5sZW5ndGgpe2cubG93ZXI9Zi5zaG93dXBwZXJoYWxm LGcudXBwZXI9Zi5zaG93bG93ZXJoYWxmLGcuZGlhZ29uYWw9Zi5kaWFnb25h bC52aXNpYmxlO3ZhciB4PWYuX3Zpc2libGVEaW1zLGI9di5sZW5ndGgsXz1k LnZpZXdPcHRzPXt9O2ZvcihfLnJhbmdlcz1uZXcgQXJyYXkoYiksXy5kb21h aW5zPW5ldyBBcnJheShiKSxjPTA7Yzx4Lmxlbmd0aDtjKyspe3M9eFtjXTt2 YXIgdz1fLnJhbmdlc1tjXT1uZXcgQXJyYXkoNCksaz1fLmRvbWFpbnNbY109 bmV3IEFycmF5KDQpOyhyPWkuZ2V0RnJvbUlkKHQsZi5fZGlhZ1tzXVswXSkp JiYod1swXT1yLl9ybFswXSx3WzJdPXIuX3JsWzFdLGtbMF09ci5kb21haW5b MF0sa1syXT1yLmRvbWFpblsxXSksKG89aS5nZXRGcm9tSWQodCxmLl9kaWFn W3NdWzFdKSkmJih3WzFdPW8uX3JsWzBdLHdbM109by5fcmxbMV0sa1sxXT1v LmRvbWFpblswXSxrWzNdPW8uZG9tYWluWzFdKX1fLnZpZXdwb3J0PVtoLmws aC5iLGgudytoLmwsaC5oK2guYl0sITA9PT1kLm1hdHJpeCYmKGQubWF0cml4 PW4obSkpO3ZhciBUPXUuY2xpY2ttb2RlLmluZGV4T2YoInNlbGVjdCIpPi0x LE09ITA7aWYoImxhc3NvIj09PXl8fCJzZWxlY3QiPT09eXx8ISFmLnNlbGVj dGVkcG9pbnRzfHxUKXt2YXIgQT1mLl9sZW5ndGg7aWYoZi5zZWxlY3RlZHBv aW50cyl7ZC5zZWxlY3RCYXRjaD1mLnNlbGVjdGVkcG9pbnRzO3ZhciBTPWYu c2VsZWN0ZWRwb2ludHMsRT17fTtmb3Iocz0wO3M8Uy5sZW5ndGg7cysrKUVb U1tzXV09ITA7dmFyIEw9W107Zm9yKHM9MDtzPEE7cysrKUVbc118fEwucHVz aChzKTtkLnVuc2VsZWN0QmF0Y2g9TH12YXIgQz1wLnhweD1uZXcgQXJyYXko YiksUD1wLnlweD1uZXcgQXJyYXkoYik7Zm9yKGM9MDtjPHgubGVuZ3RoO2Mr Kyl7aWYocz14W2NdLHI9aS5nZXRGcm9tSWQodCxmLl9kaWFnW3NdWzBdKSlm b3IoQ1tjXT1uZXcgQXJyYXkoQSksbD0wO2w8QTtsKyspQ1tjXVtsXT1yLmMy cCh2W2NdW2xdKTtpZihvPWkuZ2V0RnJvbUlkKHQsZi5fZGlhZ1tzXVsxXSkp Zm9yKFBbY109bmV3IEFycmF5KEEpLGw9MDtsPEE7bCsrKVBbY11bbF09by5j MnAodltjXVtsXSl9aWYoZC5zZWxlY3RCYXRjaC5sZW5ndGh8fGQudW5zZWxl Y3RCYXRjaC5sZW5ndGgpe3ZhciBPPWEuZXh0ZW5kRmxhdCh7fSxnLGQudW5z ZWxlY3RlZE9wdGlvbnMsXyksej1hLmV4dGVuZEZsYXQoe30sZyxkLnNlbGVj dGVkT3B0aW9ucyxfKTtkLm1hdHJpeC51cGRhdGUoTyx6KSxNPSExfX1lbHNl IHAueHB4PXAueXB4PW51bGw7aWYoTSl7dmFyIEk9YS5leHRlbmRGbGF0KHt9 LGcsXyk7ZC5tYXRyaXgudXBkYXRlKEksbnVsbCl9fX1lLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIpe2lmKHIubGVuZ3RoKWZvcih2YXIgbj0wO248ci5sZW5n dGg7bisrKW8odCxyW25dWzBdKX19LHsiLi4vLi4vbGliIjo3MTcsIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NzY4LCJyZWdsLXNwbG9tIjo1 MDB9XSwxMjI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBy PXQuX2Z1bGxMYXlvdXQsYT1lLnVpZCxpPXIuX3NwbG9tU2NlbmVzO2l8fChp PXIuX3NwbG9tU2NlbmVzPXt9KTt2YXIgbz17ZGlydHk6ITB9LHM9aVtlLnVp ZF07cmV0dXJuIHN8fCgocz1pW2FdPW4uZXh0ZW5kRmxhdCh7fSxvLHttYXRy aXg6ITEsc2VsZWN0QmF0Y2g6W10sdW5zZWxlY3RCYXRjaDpbXX0pKS5kcmF3 PWZ1bmN0aW9uKCl7cy5tYXRyaXgmJnMubWF0cml4LmRyYXcmJihzLnNlbGVj dEJhdGNoLmxlbmd0aHx8cy51bnNlbGVjdEJhdGNoLmxlbmd0aD9zLm1hdHJp eC5kcmF3KHMudW5zZWxlY3RCYXRjaCxzLnNlbGVjdEJhdGNoKTpzLm1hdHJp eC5kcmF3KCkpLHMuZGlydHk9ITF9LHMuZGVzdHJveT1mdW5jdGlvbigpe3Mu bWF0cml4JiZzLm1hdHJpeC5kZXN0cm95JiZzLm1hdHJpeC5kZXN0cm95KCks cy5tYXRyaXhPcHRpb25zPW51bGwscy5zZWxlY3RCYXRjaD1udWxsLHMudW5z ZWxlY3RCYXRjaD1udWxsLHM9bnVsbH0pLHMuZGlydHl8fG4uZXh0ZW5kRmxh dChzLG8pLHN9fSx7Ii4uLy4uL2xpYiI6NzE3fV0sMTIyNTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQo Ii4uL3NjYXR0ZXIvc3VidHlwZXMiKSxpPXQoIi4vaGVscGVycyIpO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuY2Qsbz1yWzBdLnRyYWNlLHM9 clswXS50LGw9dC5zY2VuZSxjPWwubWF0cml4T3B0aW9ucy5jZGF0YSx1PXQu eGF4aXMsaD10LnlheGlzLGY9W107aWYoIWwpcmV0dXJuIGY7dmFyIHA9IWEu aGFzTWFya2VycyhvKSYmIWEuaGFzVGV4dChvKTtpZighMCE9PW8udmlzaWJs ZXx8cClyZXR1cm4gZjt2YXIgZD1pLmdldERpbUluZGV4KG8sdSksZz1pLmdl dERpbUluZGV4KG8saCk7aWYoITE9PT1kfHwhMT09PWcpcmV0dXJuIGY7dmFy IHY9cy54cHhbZF0sbT1zLnlweFtnXSx5PWNbZF0seD1jW2ddLGI9W10sXz1b XTtpZighMSE9PWUmJiFlLmRlZ2VuZXJhdGUpZm9yKHZhciB3PTA7dzx5Lmxl bmd0aDt3KyspZS5jb250YWlucyhbdlt3XSxtW3ddXSxudWxsLHcsdCk/KGIu cHVzaCh3KSxmLnB1c2goe3BvaW50TnVtYmVyOncseDp5W3ddLHk6eFt3XX0p KTpfLnB1c2godyk7dmFyIGs9bC5tYXRyaXhPcHRpb25zO3JldHVybiBiLmxl bmd0aHx8Xy5sZW5ndGg/bC5zZWxlY3RCYXRjaC5sZW5ndGh8fGwudW5zZWxl Y3RCYXRjaC5sZW5ndGh8fGwubWF0cml4LnVwZGF0ZShsLnVuc2VsZWN0ZWRP cHRpb25zLG4uZXh0ZW5kRmxhdCh7fSxrLGwuc2VsZWN0ZWRPcHRpb25zLGwu dmlld09wdHMpKTpsLm1hdHJpeC51cGRhdGUoayxudWxsKSxsLnNlbGVjdEJh dGNoPWIsbC51bnNlbGVjdEJhdGNoPV8sZn19LHsiLi4vLi4vbGliIjo3MTcs Ii4uL3NjYXR0ZXIvc3VidHlwZXMiOjExNDQsIi4vaGVscGVycyI6MTIyMH1d LDEyMjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxhPXQo Ii4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBs YXRlQXR0cnMsaT10KCIuLi9tZXNoM2QvYXR0cmlidXRlcyIpLG89dCgiLi4v Li4vcGxvdHMvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vbGliL2V4dGVuZCIp LmV4dGVuZEZsYXQsbD17eDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5 cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx5Ont2YWxUeXBlOiJkYXRhX2Fy cmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHo6e3ZhbFR5 cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVz In0sdTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx2 Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHc6e3Zh bFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sc3RhcnRzOnt4 Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHk6e3Zh bFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sejp7dmFsVHlw ZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2Fs YyJ9LG1heGRpc3BsYXllZDp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZs dDoxZTMsZWRpdFR5cGU6ImNhbGMifSxzaXplcmVmOnt2YWxUeXBlOiJudW1i ZXIiLGVkaXRUeXBlOiJjYWxjIixtaW46MCxkZmx0OjF9LHRleHQ6e3ZhbFR5 cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGV4 dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0s aG92ZXJ0ZW1wbGF0ZTphKHtlZGl0VHlwZToiY2FsYyJ9LHtrZXlzOlsidHVi ZXgiLCJ0dWJleSIsInR1YmV6IiwidHViZXUiLCJ0dWJldiIsInR1YmV3Iiwi bm9ybSIsImRpdmVyZ2VuY2UiXX0pLHNob3dsZWdlbmQ6cyh7fSxvLnNob3ds ZWdlbmQse2RmbHQ6ITF9KX07cyhsLG4oIiIse2NvbG9yQXR0cjoidS92L3cg bm9ybSIsc2hvd1NjYWxlRGZsdDohMCxlZGl0VHlwZU92ZXJyaWRlOiJjYWxj In0pKTtbIm9wYWNpdHkiLCJsaWdodHBvc2l0aW9uIiwibGlnaHRpbmciXS5m b3JFYWNoKGZ1bmN0aW9uKHQpe2xbdF09aVt0XX0pLGwuaG92ZXJpbmZvPXMo e30sby5ob3ZlcmluZm8se2VkaXRUeXBlOiJjYWxjIixmbGFnczpbIngiLCJ5 IiwieiIsInUiLCJ2IiwidyIsIm5vcm0iLCJkaXZlcmdlbmNlIiwidGV4dCIs Im5hbWUiXSxkZmx0OiJ4K3kreitub3JtK3RleHQrbmFtZSJ9KSxsLnRyYW5z Zm9ybXM9dm9pZCAwLGUuZXhwb3J0cz1sfSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQi OjcwOCwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NzYyLCIuLi8uLi9wbG90 cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4uL21lc2gzZC9hdHRyaWJ1 dGVzIjoxMDYxfV0sMTIyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9jYWxjIik7ZnVuY3Rpb24gaSh0KXt2YXIgZSxyLGEsaSxz LGwsYyx1LGgsZixwLGQsZz10Ll94LHY9dC5feSxtPXQuX3oseT10Ll9sZW4s eD0tMS8wLGI9MS8wLF89LTEvMCx3PTEvMCxrPS0xLzAsVD0xLzAsTT0iIjtm b3IoeSYmKGM9Z1swXSxoPXZbMF0scD1tWzBdKSx5PjEmJih1PWdbeS0xXSxm PXZbeS0xXSxkPW1beS0xXSksZT0wO2U8eTtlKyspeD1NYXRoLm1heCh4LGdb ZV0pLGI9TWF0aC5taW4oYixnW2VdKSxfPU1hdGgubWF4KF8sdltlXSksdz1N YXRoLm1pbih3LHZbZV0pLGs9TWF0aC5tYXgoayxtW2VdKSxUPU1hdGgubWlu KFQsbVtlXSksaXx8Z1tlXT09PWN8fChpPSEwLE0rPSJ4Iiksc3x8dltlXT09 PWh8fChzPSEwLE0rPSJ5IiksbHx8bVtlXT09PXB8fChsPSEwLE0rPSJ6Iik7 aXx8KE0rPSJ4Iiksc3x8KE0rPSJ5IiksbHx8KE0rPSJ6Iik7dmFyIEE9byh0 Ll94KSxTPW8odC5feSksRT1vKHQuX3opO009KE09KE09TS5yZXBsYWNlKCJ4 IiwoYz51PyItIjoiKyIpKyJ4IikpLnJlcGxhY2UoInkiLChoPmY/Ii0iOiIr IikrInkiKSkucmVwbGFjZSgieiIsKHA+ZD8iLSI6IisiKSsieiIpO3ZhciBM PWZ1bmN0aW9uKCl7eT0wLEE9W10sUz1bXSxFPVtdfTsoIXl8fHk8QS5sZW5n dGgqUy5sZW5ndGgqRS5sZW5ndGgpJiZMKCk7dmFyIEM9ZnVuY3Rpb24odCl7 cmV0dXJuIngiPT09dD9nOiJ5Ij09PXQ/djptfSxQPWZ1bmN0aW9uKHQpe3Jl dHVybiJ4Ij09PXQ/QToieSI9PT10P1M6RX0sTz1mdW5jdGlvbih0KXtyZXR1 cm4gdFt5LTFdPHRbMF0/LTE6MX0sej1DKE1bMV0pLEk9QyhNWzNdKSxEPUMo TVs1XSksUj1QKE1bMV0pLmxlbmd0aCxGPVAoTVszXSkubGVuZ3RoLEI9UChN WzVdKS5sZW5ndGgsTj0hMSxqPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gUioo Rip0K2UpK3J9LFY9TyhDKE1bMV0pKSxVPU8oQyhNWzNdKSkscT1PKEMoTVs1 XSkpO2ZvcihlPTA7ZTxCLTE7ZSsrKXtmb3Iocj0wO3I8Ri0xO3IrKyl7Zm9y KGE9MDthPFItMTthKyspe3ZhciBIPWooZSxyLGEpLEc9aihlLHIsYSsxKSxZ PWooZSxyKzEsYSksVz1qKGUrMSxyLGEpO2lmKHpbSF0qVjx6W0ddKlYmJklb SF0qVTxJW1ldKlUmJkRbSF0qcTxEW1ddKnF8fChOPSEwKSxOKWJyZWFrfWlm KE4pYnJlYWt9aWYoTilicmVha31yZXR1cm4gTiYmKG4ud2FybigiRW5jb3Vu dGVyZWQgYXJiaXRyYXJ5IGNvb3JkaW5hdGVzISBVbmFibGUgdG8gaW5wdXQg ZGF0YSBncmlkLiIpLEwoKSkse3hNaW46Yix5TWluOncsek1pbjpULHhNYXg6 eCx5TWF4Ol8sek1heDprLFhzOkEsWXM6UyxaczpFLGxlbjp5LGZpbGw6TX19 ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbi5kaXN0aW5jdFZhbHModCkudmFsc31m dW5jdGlvbiBzKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9dC5sZW5ndGgpLG4u aXNUeXBlZEFycmF5KHQpKXJldHVybiB0LnN1YmFycmF5KDAsZSk7Zm9yKHZh ciByPVtdLGE9MDthPGU7YSsrKXJbYV09K3RbYV07cmV0dXJuIHJ9ZS5leHBv cnRzPXtjYWxjOmZ1bmN0aW9uKHQsZSl7ZS5fbGVuPU1hdGgubWluKGUudS5s ZW5ndGgsZS52Lmxlbmd0aCxlLncubGVuZ3RoLGUueC5sZW5ndGgsZS55Lmxl bmd0aCxlLnoubGVuZ3RoKSxlLl91PXMoZS51LGUuX2xlbiksZS5fdj1zKGUu dixlLl9sZW4pLGUuX3c9cyhlLncsZS5fbGVuKSxlLl94PXMoZS54LGUuX2xl biksZS5feT1zKGUueSxlLl9sZW4pLGUuX3o9cyhlLnosZS5fbGVuKTt2YXIg cj1pKGUpO2UuX2dyaWRGaWxsPXIuZmlsbCxlLl9Ycz1yLlhzLGUuX1lzPXIu WXMsZS5fWnM9ci5acyxlLl9sZW49ci5sZW47dmFyIG4sbyxsLGM9MDtlLnN0 YXJ0cyYmKG49cyhlLnN0YXJ0cy54fHxbXSksbz1zKGUuc3RhcnRzLnl8fFtd KSxsPXMoZS5zdGFydHMuenx8W10pLGM9TWF0aC5taW4obi5sZW5ndGgsby5s ZW5ndGgsbC5sZW5ndGgpKSxlLl9zdGFydHNYPW58fFtdLGUuX3N0YXJ0c1k9 b3x8W10sZS5fc3RhcnRzWj1sfHxbXTt2YXIgdSxoPTAsZj0xLzA7Zm9yKHU9 MDt1PGUuX2xlbjt1Kyspe3ZhciBwPWUuX3VbdV0sZD1lLl92W3VdLGc9ZS5f d1t1XSx2PU1hdGguc3FydChwKnArZCpkK2cqZyk7aD1NYXRoLm1heChoLHYp LGY9TWF0aC5taW4oZix2KX1mb3IoYSh0LGUse3ZhbHM6W2YsaF0sY29udGFp bmVyU3RyOiIiLGNMZXR0ZXI6ImMifSksdT0wO3U8Yzt1Kyspe3ZhciBtPW5b dV07ci54TWF4PU1hdGgubWF4KHIueE1heCxtKSxyLnhNaW49TWF0aC5taW4o ci54TWluLG0pO3ZhciB5PW9bdV07ci55TWF4PU1hdGgubWF4KHIueU1heCx5 KSxyLnlNaW49TWF0aC5taW4oci55TWluLHkpO3ZhciB4PWxbdV07ci56TWF4 PU1hdGgubWF4KHIuek1heCx4KSxyLnpNaW49TWF0aC5taW4oci56TWluLHgp fWUuX3NsZW49YyxlLl9ub3JtTWF4PWgsZS5feGJuZHM9W3IueE1pbixyLnhN YXhdLGUuX3libmRzPVtyLnlNaW4sci55TWF4XSxlLl96Ym5kcz1bci56TWlu LHIuek1heF19LGZpbHRlcjpzLHByb2Nlc3NHcmlkOml9fSx7Ii4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjo2MDAsIi4uLy4uL2xpYiI6NzE3 fV0sMTIyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJnbC1zdHJlYW10dWJlM2QiKSxhPW4uY3JlYXRlVHViZU1lc2gsaT10KCIu Li8uLi9saWIiKSxvPXQoIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiKS5w YXJzZUNvbG9yU2NhbGUscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUiKS5leHRyYWN0T3B0cyxsPXQoIi4uLy4uL3Bsb3RzL2dsM2QvemlwMyIp LGM9e3hheGlzOjAseWF4aXM6MSx6YXhpczoyfTtmdW5jdGlvbiB1KHQsZSl7 dGhpcy5zY2VuZT10LHRoaXMudWlkPWUsdGhpcy5tZXNoPW51bGwsdGhpcy5k YXRhPW51bGx9dmFyIGg9dS5wcm90b3R5cGU7ZnVuY3Rpb24gZih0KXt2YXIg ZT10Lmxlbmd0aDtyZXR1cm4gZT4yP3Quc2xpY2UoMSxlLTEpOjI9PT1lP1so dFswXSt0WzFdKS8yXTp0fWZ1bmN0aW9uIHAodCl7dmFyIGU9dC5sZW5ndGg7 cmV0dXJuIDE9PT1lP1suNSwuNV06W3RbMV0tdFswXSx0W2UtMV0tdFtlLTJd XX1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9dC5mdWxsU2NlbmVMYXlvdXQsYT10 LmRhdGFTY2FsZSx1PWUuX2xlbixoPXt9O2Z1bmN0aW9uIGQodCxlKXt2YXIg bj1yW2VdLG89YVtjW2VdXTtyZXR1cm4gaS5zaW1wbGVNYXAodCxmdW5jdGlv bih0KXtyZXR1cm4gbi5kMmwodCkqb30pfWlmKGgudmVjdG9ycz1sKGQoZS5f dSwieGF4aXMiKSxkKGUuX3YsInlheGlzIiksZChlLl93LCJ6YXhpcyIpLHUp LCF1KXJldHVybntwb3NpdGlvbnM6W10sY2VsbHM6W119O3ZhciBnPWQoZS5f WHMsInhheGlzIiksdj1kKGUuX1lzLCJ5YXhpcyIpLG09ZChlLl9acywiemF4 aXMiKTtpZihoLm1lc2hncmlkPVtnLHYsbV0saC5ncmlkRmlsbD1lLl9ncmlk RmlsbCxlLl9zbGVuKWguc3RhcnRpbmdQb3NpdGlvbnM9bChkKGUuX3N0YXJ0 c1gsInhheGlzIiksZChlLl9zdGFydHNZLCJ5YXhpcyIpLGQoZS5fc3RhcnRz WiwiemF4aXMiKSk7ZWxzZXtmb3IodmFyIHk9dlswXSx4PWYoZyksYj1mKG0p LF89bmV3IEFycmF5KHgubGVuZ3RoKmIubGVuZ3RoKSx3PTAsaz0wO2s8eC5s ZW5ndGg7aysrKWZvcih2YXIgVD0wO1Q8Yi5sZW5ndGg7VCsrKV9bdysrXT1b eFtrXSx5LGJbVF1dO2guc3RhcnRpbmdQb3NpdGlvbnM9X31oLmNvbG9ybWFw PW8oZSksaC50dWJlU2l6ZT1lLnNpemVyZWYsaC5tYXhMZW5ndGg9ZS5tYXhk aXNwbGF5ZWQ7dmFyIE09ZChlLl94Ym5kcywieGF4aXMiKSxBPWQoZS5feWJu ZHMsInlheGlzIiksUz1kKGUuX3pibmRzLCJ6YXhpcyIpLEU9cChnKSxMPXAo diksQz1wKG0pLFA9W1tNWzBdLUVbMF0sQVswXS1MWzBdLFNbMF0tQ1swXV0s W01bMV0rRVsxXSxBWzFdK0xbMV0sU1sxXStDWzFdXV0sTz1uKGgsUCksej1z KGUpO08udmVydGV4SW50ZW5zaXR5Qm91bmRzPVt6Lm1pbi9lLl9ub3JtTWF4 LHoubWF4L2UuX25vcm1NYXhdO3ZhciBJPWUubGlnaHRwb3NpdGlvbjtyZXR1 cm4gTy5saWdodFBvc2l0aW9uPVtJLngsSS55LEkuel0sTy5hbWJpZW50PWUu bGlnaHRpbmcuYW1iaWVudCxPLmRpZmZ1c2U9ZS5saWdodGluZy5kaWZmdXNl LE8uc3BlY3VsYXI9ZS5saWdodGluZy5zcGVjdWxhcixPLnJvdWdobmVzcz1l LmxpZ2h0aW5nLnJvdWdobmVzcyxPLmZyZXNuZWw9ZS5saWdodGluZy5mcmVz bmVsLE8ub3BhY2l0eT1lLm9wYWNpdHksZS5fcGFkPU8udHViZVNjYWxlKmUu c2l6ZXJlZioyLE99aC5oYW5kbGVQaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRo aXMuc2NlbmUuZnVsbFNjZW5lTGF5b3V0LHI9dGhpcy5zY2VuZS5kYXRhU2Nh bGU7ZnVuY3Rpb24gbih0LG4pe3ZhciBhPWVbbl0saT1yW2Nbbl1dO3JldHVy biBhLmwyYyh0KS9pfWlmKHQub2JqZWN0PT09dGhpcy5tZXNoKXt2YXIgYT10 LmRhdGEucG9zaXRpb24saT10LmRhdGEudmVsb2NpdHk7cmV0dXJuIHQudHJh Y2VDb29yZGluYXRlPVtuKGFbMF0sInhheGlzIiksbihhWzFdLCJ5YXhpcyIp LG4oYVsyXSwiemF4aXMiKSxuKGlbMF0sInhheGlzIiksbihpWzFdLCJ5YXhp cyIpLG4oaVsyXSwiemF4aXMiKSx0LmRhdGEuaW50ZW5zaXR5KnRoaXMuZGF0 YS5fbm9ybU1heCx0LmRhdGEuZGl2ZXJnZW5jZV0sdC50ZXh0TGFiZWw9dGhp cy5kYXRhLmhvdmVydGV4dHx8dGhpcy5kYXRhLnRleHQsITB9fSxoLnVwZGF0 ZT1mdW5jdGlvbih0KXt0aGlzLmRhdGE9dDt2YXIgZT1kKHRoaXMuc2NlbmUs dCk7dGhpcy5tZXNoLnVwZGF0ZShlKX0saC5kaXNwb3NlPWZ1bmN0aW9uKCl7 dGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMubWVzaCksdGhpcy5tZXNo LmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5n bHBsb3QuZ2wsbj1kKHQsZSksaT1hKHIsbiksbz1uZXcgdSh0LGUudWlkKTty ZXR1cm4gby5tZXNoPWksby5kYXRhPWUsaS5fdHJhY2U9byx0LmdscGxvdC5h ZGQoaSksb319LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQs Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIjo3 MTQsIi4uLy4uL3Bsb3RzL2dsM2QvemlwMyI6ODE2LCJnbC1zdHJlYW10dWJl M2QiOjMxNX1dLDEyMjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvZGVmYXVsdHMiKSxpPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUscixvKXtmdW5jdGlvbiBzKHIsYSl7cmV0dXJu IG4uY29lcmNlKHQsZSxpLHIsYSl9dmFyIGw9cygidSIpLGM9cygidiIpLHU9 cygidyIpLGg9cygieCIpLGY9cygieSIpLHA9cygieiIpO2wmJmwubGVuZ3Ro JiZjJiZjLmxlbmd0aCYmdSYmdS5sZW5ndGgmJmgmJmgubGVuZ3RoJiZmJiZm Lmxlbmd0aCYmcCYmcC5sZW5ndGg/KHMoInN0YXJ0cy54Iikscygic3RhcnRz LnkiKSxzKCJzdGFydHMueiIpLHMoIm1heGRpc3BsYXllZCIpLHMoInNpemVy ZWYiKSxzKCJsaWdodGluZy5hbWJpZW50IikscygibGlnaHRpbmcuZGlmZnVz ZSIpLHMoImxpZ2h0aW5nLnNwZWN1bGFyIikscygibGlnaHRpbmcucm91Z2hu ZXNzIikscygibGlnaHRpbmcuZnJlc25lbCIpLHMoImxpZ2h0cG9zaXRpb24u eCIpLHMoImxpZ2h0cG9zaXRpb24ueSIpLHMoImxpZ2h0cG9zaXRpb24ueiIp LGEodCxlLG8scyx7cHJlZml4OiIiLGNMZXR0ZXI6ImMifSkscygidGV4dCIp LHMoImhvdmVydGV4dCIpLHMoImhvdmVydGVtcGxhdGUiKSxlLl9sZW5ndGg9 bnVsbCk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9y c2NhbGUvZGVmYXVsdHMiOjYwMiwiLi4vLi4vbGliIjo3MTcsIi4vYXR0cmli dXRlcyI6MTIyNn1dLDEyMzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic3RyZWFt dHViZSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wzZCIpLGNh dGVnb3JpZXM6WyJnbDNkIiwic2hvd0xlZ2VuZCJdLGF0dHJpYnV0ZXM6dCgi Li9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIp LGNvbG9yYmFyOnttaW46ImNtaW4iLG1heDoiY21heCJ9LGNhbGM6dCgiLi9j YWxjIikuY2FsYyxwbG90OnQoIi4vY29udmVydCIpLGV2ZW50RGF0YTpmdW5j dGlvbih0LGUpe3JldHVybiB0LnR1YmV4PXQueCx0LnR1YmV5PXQueSx0LnR1 YmV6PXQueix0LnR1YmV1PWUudHJhY2VDb29yZGluYXRlWzNdLHQudHViZXY9 ZS50cmFjZUNvb3JkaW5hdGVbNF0sdC50dWJldz1lLnRyYWNlQ29vcmRpbmF0 ZVs1XSx0Lm5vcm09ZS50cmFjZUNvb3JkaW5hdGVbNl0sdC5kaXZlcmdlbmNl PWUudHJhY2VDb29yZGluYXRlWzddLGRlbGV0ZSB0LngsZGVsZXRlIHQueSxk ZWxldGUgdC56LHR9LG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dsM2QiOjgw NSwiLi9hdHRyaWJ1dGVzIjoxMjI2LCIuL2NhbGMiOjEyMjcsIi4vY29udmVy dCI6MTIyOCwiLi9kZWZhdWx0cyI6MTIyOX1dLDEyMzE6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvYXR0cmli dXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIp LmhvdmVydGVtcGxhdGVBdHRycyxpPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRl X2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxvPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9w bG90cy9kb21haW4iKS5hdHRyaWJ1dGVzLGw9dCgiLi4vcGllL2F0dHJpYnV0 ZXMiKSxjPXQoIi4vY29uc3RhbnRzIiksdT10KCIuLi8uLi9saWIvZXh0ZW5k IikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e2xhYmVsczp7dmFsVHlwZToiZGF0 YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxwYXJlbnRzOnt2YWxUeXBlOiJk YXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHZhbHVlczp7dmFsVHlwZToi ZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxicmFuY2h2YWx1ZXM6e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInJlbWFpbmRlciIsInRvdGFs Il0sZGZsdDoicmVtYWluZGVyIixlZGl0VHlwZToiY2FsYyJ9LGNvdW50Ont2 YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJicmFuY2hlcyIsImxlYXZlcyJd LGRmbHQ6ImxlYXZlcyIsZWRpdFR5cGU6ImNhbGMifSxsZXZlbDp7dmFsVHlw ZToiYW55IixlZGl0VHlwZToicGxvdCIsYW5pbTohMH0sbWF4ZGVwdGg6e3Zh bFR5cGU6ImludGVnZXIiLGVkaXRUeXBlOiJwbG90IixkZmx0Oi0xfSxtYXJr ZXI6dSh7Y29sb3JzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToi Y2FsYyJ9LGxpbmU6e2NvbG9yOnUoe30sbC5tYXJrZXIubGluZS5jb2xvcix7 ZGZsdDpudWxsfSksd2lkdGg6dSh7fSxsLm1hcmtlci5saW5lLndpZHRoLHtk Zmx0OjF9KSxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sbygi bWFya2VyIix7Y29sb3JBdHRyOiJjb2xvcnMiLGFuaW06ITF9KSksbGVhZjp7 b3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToic3R5bGUiLG1p bjowLG1heDoxfSxlZGl0VHlwZToicGxvdCJ9LHRleHQ6bC50ZXh0LHRleHRp bmZvOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJsYWJlbCIsInRleHQi LCJ2YWx1ZSIsImN1cnJlbnQgcGF0aCIsInBlcmNlbnQgcm9vdCIsInBlcmNl bnQgZW50cnkiLCJwZXJjZW50IHBhcmVudCJdLGV4dHJhczpbIm5vbmUiXSxl ZGl0VHlwZToicGxvdCJ9LHRleHR0ZW1wbGF0ZTppKHtlZGl0VHlwZToicGxv dCJ9LHtrZXlzOmMuZXZlbnREYXRhS2V5cy5jb25jYXQoWyJsYWJlbCIsInZh bHVlIl0pfSksaG92ZXJ0ZXh0OmwuaG92ZXJ0ZXh0LGhvdmVyaW5mbzp1KHt9 LG4uaG92ZXJpbmZvLHtmbGFnczpbImxhYmVsIiwidGV4dCIsInZhbHVlIiwi bmFtZSIsImN1cnJlbnQgcGF0aCIsInBlcmNlbnQgcm9vdCIsInBlcmNlbnQg ZW50cnkiLCJwZXJjZW50IHBhcmVudCJdLGRmbHQ6ImxhYmVsK3RleHQrdmFs dWUrbmFtZSJ9KSxob3ZlcnRlbXBsYXRlOmEoe30se2tleXM6Yy5ldmVudERh dGFLZXlzfSksdGV4dGZvbnQ6bC50ZXh0Zm9udCxpbnNpZGV0ZXh0b3JpZW50 YXRpb246bC5pbnNpZGV0ZXh0b3JpZW50YXRpb24saW5zaWRldGV4dGZvbnQ6 bC5pbnNpZGV0ZXh0Zm9udCxvdXRzaWRldGV4dGZvbnQ6dSh7fSxsLm91dHNp ZGV0ZXh0Zm9udCx7fSksZG9tYWluOnMoe25hbWU6InN1bmJ1cnN0Iix0cmFj ZTohMCxlZGl0VHlwZToiY2FsYyJ9KX19LHsiLi4vLi4vY29tcG9uZW50cy9j b2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6 NzA4LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo3NjIsIi4uLy4uL3Bsb3Rz L2RvbWFpbiI6NzkwLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVz Ijo4NDEsIi4uL3BpZS9hdHRyaWJ1dGVzIjoxMDk0LCIuL2NvbnN0YW50cyI6 MTIzNH1dLDEyMzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vcGxvdHMvcGxvdHMiKTtyLm5hbWU9InN1bmJ1cnN0Iixy LnBsb3Q9ZnVuY3Rpb24odCxlLGEsaSl7bi5wbG90QmFzZVBsb3Qoci5uYW1l LHQsZSxhLGkpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxhLGkpe24uY2xlYW5C YXNlUGxvdChyLm5hbWUsdCxlLGEsaSl9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3Rz Ijo4MjZ9XSwxMjMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoImQzLWhpZXJhcmNoeSIpLGE9dCgiZmFzdC1pc251bWVyaWMiKSxp PXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNj YWxlIikubWFrZUNvbG9yU2NhbGVGdW5jRnJvbVRyYWNlLHM9dCgiLi4vcGll L2NhbGMiKS5tYWtlUHVsbENvbG9yRm4sbD10KCIuLi9waWUvY2FsYyIpLmdl bmVyYXRlRXh0ZW5kZWRDb2xvcnMsYz10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUiKS5jYWxjLHU9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNh bCIpLkFMTU9TVF9FUVVBTCxoPXt9LGY9e307ci5jYWxjPWZ1bmN0aW9uKHQs ZSl7dmFyIHIsbCxoLGYscCxkLGc9dC5fZnVsbExheW91dCx2PWUuaWRzLG09 aS5pc0FycmF5T3JUeXBlZEFycmF5KHYpLHk9ZS5sYWJlbHMseD1lLnBhcmVu dHMsYj1lLnZhbHVlcyxfPWkuaXNBcnJheU9yVHlwZWRBcnJheShiKSx3PVtd LGs9e30sVD17fSxNPWZ1bmN0aW9uKHQpe3JldHVybiB0fHwibnVtYmVyIj09 dHlwZW9mIHR9LEE9ZnVuY3Rpb24odCl7cmV0dXJuIV98fGEoYlt0XSkmJmJb dF0+PTB9O20/KHI9TWF0aC5taW4odi5sZW5ndGgseC5sZW5ndGgpLGw9ZnVu Y3Rpb24odCl7cmV0dXJuIE0odlt0XSkmJkEodCl9LGg9ZnVuY3Rpb24odCl7 cmV0dXJuIFN0cmluZyh2W3RdKX0pOihyPU1hdGgubWluKHkubGVuZ3RoLHgu bGVuZ3RoKSxsPWZ1bmN0aW9uKHQpe3JldHVybiBNKHlbdF0pJiZBKHQpfSxo PWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcoeVt0XSl9KSxfJiYocj1NYXRo Lm1pbihyLGIubGVuZ3RoKSk7Zm9yKHZhciBTPTA7UzxyO1MrKylpZihsKFMp KXt2YXIgRT1oKFMpLEw9TSh4W1NdKT9TdHJpbmcoeFtTXSk6IiIsQz17aTpT LGlkOkUscGlkOkwsbGFiZWw6TSh5W1NdKT9TdHJpbmcoeVtTXSk6IiJ9O18m JihDLnY9K2JbU10pLHcucHVzaChDKSxwPUUsa1tmPUxdP2tbZl0ucHVzaChw KTprW2ZdPVtwXSxUW3BdPTF9aWYoa1siIl0pe2lmKGtbIiJdLmxlbmd0aD4x KXtmb3IodmFyIFA9aS5yYW5kc3RyKCksTz0wO088dy5sZW5ndGg7TysrKSIi PT09d1tPXS5waWQmJih3W09dLnBpZD1QKTt3LnVuc2hpZnQoe2hhc011bHRp cGxlUm9vdHM6ITAsaWQ6UCxwaWQ6IiIsbGFiZWw6IiJ9KX19ZWxzZXt2YXIg eixJPVtdO2Zvcih6IGluIGspVFt6XXx8SS5wdXNoKHopO2lmKDEhPT1JLmxl bmd0aClyZXR1cm4gaS53YXJuKCJNdWx0aXBsZSBpbXBsaWVkIHJvb3RzLCBj YW5ub3QgYnVpbGQgIitlLnR5cGUrIiBoaWVyYXJjaHkuIik7ej1JWzBdLHcu dW5zaGlmdCh7aGFzSW1wbGllZFJvb3Q6ITAsaWQ6eixwaWQ6IiIsbGFiZWw6 en0pfXRyeXtkPW4uc3RyYXRpZnkoKS5pZChmdW5jdGlvbih0KXtyZXR1cm4g dC5pZH0pLnBhcmVudElkKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBpZH0pKHcp fWNhdGNoKHQpe3JldHVybiBpLndhcm4oIkZhaWxlZCB0byBidWlsZCAiK2Uu dHlwZSsiIGhpZXJhcmNoeS4gRXJyb3I6ICIrdC5tZXNzYWdlKX12YXIgRD1u LmhpZXJhcmNoeShkKSxSPSExO2lmKF8pc3dpdGNoKGUuYnJhbmNodmFsdWVz KXtjYXNlInJlbWFpbmRlciI6RC5zdW0oZnVuY3Rpb24odCl7cmV0dXJuIHQu ZGF0YS52fSk7YnJlYWs7Y2FzZSJ0b3RhbCI6RC5lYWNoKGZ1bmN0aW9uKHQp e3ZhciBlPXQuZGF0YS5kYXRhLHI9ZS52O2lmKHQuY2hpbGRyZW4pe3ZhciBu PXQuY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5k YXRhLmRhdGEudn0sMCk7aWYoKGUuaGFzSW1wbGllZFJvb3R8fGUuaGFzTXVs dGlwbGVSb290cykmJihyPW4pLHI8bip1KXJldHVybiBSPSEwLGkud2Fybihb IlRvdGFsIHZhbHVlIGZvciBub2RlIix0LmRhdGEuZGF0YS5pZCwiaXMgc21h bGxlciB0aGFuIHRoZSBzdW0gb2YgaXRzIGNoaWxkcmVuLiIsIlxucGFyZW50 IHZhbHVlID0iLHIsIlxuY2hpbGRyZW4gc3VtID0iLG5dLmpvaW4oIiAiKSl9 dC52YWx1ZT1yfSl9ZWxzZSFmdW5jdGlvbiB0KGUscixuKXt2YXIgYT0wO3Zh ciBpPWUuY2hpbGRyZW47aWYoaSl7Zm9yKHZhciBvPWkubGVuZ3RoLHM9MDtz PG87cysrKWErPXQoaVtzXSxyLG4pO24uYnJhbmNoZXMmJmErK31lbHNlIG4u bGVhdmVzJiZhKys7ZS52YWx1ZT1lLmRhdGEuZGF0YS52YWx1ZT1hO3IuX3Zh bHVlc3x8KHIuX3ZhbHVlcz1bXSk7ci5fdmFsdWVzW2UuZGF0YS5kYXRhLmld PWE7cmV0dXJuIGF9KEQsZSx7YnJhbmNoZXM6LTEhPT1lLmNvdW50LmluZGV4 T2YoImJyYW5jaGVzIiksbGVhdmVzOi0xIT09ZS5jb3VudC5pbmRleE9mKCJs ZWF2ZXMiKX0pO2lmKCFSKXt2YXIgRixCO0Quc29ydChmdW5jdGlvbih0LGUp e3JldHVybiBlLnZhbHVlLXQudmFsdWV9KTt2YXIgTj1lLm1hcmtlci5jb2xv cnN8fFtdLGo9ISFOLmxlbmd0aDtyZXR1cm4gZS5faGFzQ29sb3JzY2FsZT8o anx8KE49Xz9lLnZhbHVlczplLl92YWx1ZXMpLGModCxlLHt2YWxzOk4sY29u dGFpbmVyU3RyOiJtYXJrZXIiLGNMZXR0ZXI6ImMifSksQj1vKGUubWFya2Vy KSk6Rj1zKGdbIl8iK2UudHlwZSsiY29sb3JtYXAiXSksRC5lYWNoKGZ1bmN0 aW9uKHQpe3ZhciByPXQuZGF0YS5kYXRhO3IuY29sb3I9ZS5faGFzQ29sb3Jz Y2FsZT9CKE5bci5pXSk6RihOW3IuaV0sci5pZCl9KSx3WzBdLmhpZXJhcmNo eT1ELHd9fSxyLl9ydW5Dcm9zc1RyYWNlQ2FsYz1mdW5jdGlvbih0LGUpe3Zh ciByPWUuX2Z1bGxMYXlvdXQsbj1lLmNhbGNkYXRhLGE9clt0KyJjb2xvcndh eSJdLGk9clsiXyIrdCsiY29sb3JtYXAiXTtyWyJleHRlbmQiK3QrImNvbG9y cyJdJiYoYT1sKGEsInRyZWVtYXAiPT09dD9mOmgpKTt2YXIgbz0wO2Z1bmN0 aW9uIHModCl7dmFyIGU9dC5kYXRhLmRhdGEscj1lLmlkOyExPT09ZS5jb2xv ciYmKGlbcl0/ZS5jb2xvcj1pW3JdOnQucGFyZW50P3QucGFyZW50LnBhcmVu dD9lLmNvbG9yPXQucGFyZW50LmRhdGEuZGF0YS5jb2xvcjooaVtyXT1lLmNv bG9yPWFbbyVhLmxlbmd0aF0sbysrKTplLmNvbG9yPSJyZ2JhKDAsMCwwLDAp Iil9Zm9yKHZhciBjPTA7YzxuLmxlbmd0aDtjKyspe3ZhciB1PW5bY11bMF07 dS50cmFjZS50eXBlPT09dCYmdS5oaWVyYXJjaHkmJnUuaGllcmFyY2h5LmVh Y2gocyl9fSxyLmNyb3NzVHJhY2VDYWxjPWZ1bmN0aW9uKHQpe3JldHVybiBy Ll9ydW5Dcm9zc1RyYWNlQ2FsYygic3VuYnVyc3QiLHQpfX0seyIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUiOjYwNCwiLi4vLi4vY29uc3RhbnRzL251 bWVyaWNhbCI6NjkzLCIuLi8uLi9saWIiOjcxNywiLi4vcGllL2NhbGMiOjEw OTYsImQzLWhpZXJhcmNoeSI6MTU5LCJmYXN0LWlzbnVtZXJpYyI6MjI4fV0s MTIzNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 e0NMSUNLX1RSQU5TSVRJT05fVElNRTo3NTAsQ0xJQ0tfVFJBTlNJVElPTl9F QVNJTkc6ImxpbmVhciIsZXZlbnREYXRhS2V5czpbImN1cnJlbnRQYXRoIiwi cm9vdCIsImVudHJ5IiwicGVyY2VudFJvb3QiLCJwZXJjZW50RW50cnkiLCJw ZXJjZW50UGFyZW50Il19fSx7fV0sMTIzNTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQoIi4vYXR0cmli dXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuZGVmYXVsdHMsbz10 KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVUZXh0LHM9dCgiLi4vLi4vY29t cG9uZW50cy9jb2xvcnNjYWxlIiksbD1zLmhhc0NvbG9yc2NhbGUsYz1zLmhh bmRsZURlZmF1bHRzO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtmdW5j dGlvbiB1KHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9dmFyIGg9 dSgibGFiZWxzIiksZj11KCJwYXJlbnRzIik7aWYoaCYmaC5sZW5ndGgmJmYm JmYubGVuZ3RoKXt2YXIgcD11KCJ2YWx1ZXMiKTtwJiZwLmxlbmd0aD91KCJi cmFuY2h2YWx1ZXMiKTp1KCJjb3VudCIpLHUoImxldmVsIiksdSgibWF4ZGVw dGgiKSx1KCJtYXJrZXIubGluZS53aWR0aCIpJiZ1KCJtYXJrZXIubGluZS5j b2xvciIscy5wYXBlcl9iZ2NvbG9yKSx1KCJtYXJrZXIuY29sb3JzIik7dmFy IGQ9ZS5faGFzQ29sb3JzY2FsZT1sKHQsIm1hcmtlciIsImNvbG9ycyIpfHwo dC5tYXJrZXJ8fHt9KS5jb2xvcmF4aXM7ZCYmYyh0LGUscyx1LHtwcmVmaXg6 Im1hcmtlci4iLGNMZXR0ZXI6ImMifSksdSgibGVhZi5vcGFjaXR5IixkPzE6 LjcpO3ZhciBnPXUoInRleHQiKTt1KCJ0ZXh0dGVtcGxhdGUiKSxlLnRleHR0 ZW1wbGF0ZXx8dSgidGV4dGluZm8iLEFycmF5LmlzQXJyYXkoZyk/InRleHQr bGFiZWwiOiJsYWJlbCIpLHUoImhvdmVydGV4dCIpLHUoImhvdmVydGVtcGxh dGUiKTtvKHQsZSxzLHUsImF1dG8iLHttb2R1bGVIYXNTZWxlY3RlZDohMSxt b2R1bGVIYXNVbnNlbGVjdGVkOiExLG1vZHVsZUhhc0NvbnN0cmFpbjohMSxt b2R1bGVIYXNDbGlwb25heGlzOiExLG1vZHVsZUhhc1RleHRhbmdsZTohMSxt b2R1bGVIYXNJbnNpZGVhbmNob3I6ITF9KSx1KCJpbnNpZGV0ZXh0b3JpZW50 YXRpb24iKSxpKGUscyx1KSxlLl9sZW5ndGg9bnVsbH1lbHNlIGUudmlzaWJs ZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4u Ly4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9kb21haW4iOjc5MCwiLi4vYmFy L2RlZmF1bHRzIjo4NjAsIi4vYXR0cmlidXRlcyI6MTIzMX1dLDEyMzY6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQo Ii4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2hl bHBlcnMiKS5hcHBlbmRBcnJheVBvaW50VmFsdWUsbz10KCIuLi8uLi9jb21w b25lbnRzL2Z4Iikscz10KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2xpYi9l dmVudHMiKSxjPXQoIi4vaGVscGVycyIpLHU9dCgiLi4vcGllL2hlbHBlcnMi KS5mb3JtYXRQaWVWYWx1ZTtmdW5jdGlvbiBoKHQsZSxyKXtmb3IodmFyIG49 dC5kYXRhLmRhdGEsYT17Y3VydmVOdW1iZXI6ZS5pbmRleCxwb2ludE51bWJl cjpuLmksZGF0YTplLl9pbnB1dCxmdWxsRGF0YTplfSxvPTA7bzxyLmxlbmd0 aDtvKyspe3ZhciBzPXJbb107cyBpbiB0JiYoYVtzXT10W3NdKX1yZXR1cm4i cGFyZW50U3RyaW5nImluIHQmJiFjLmlzSGllcmFyY2h5Um9vdCh0KSYmKGEu cGFyZW50PXQucGFyZW50U3RyaW5nKSxpKGEsZSxuLmkpLGF9ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyLGksZil7dmFyIHA9aVswXSxkPXAudHJhY2UsZz1w LmhpZXJhcmNoeSx2PSJzdW5idXJzdCI9PT1kLnR5cGUsbT0idHJlZW1hcCI9 PT1kLnR5cGU7Il9oYXNIb3ZlckxhYmVsImluIGR8fChkLl9oYXNIb3Zlckxh YmVsPSExKSwiX2hhc0hvdmVyRXZlbnQiaW4gZHx8KGQuX2hhc0hvdmVyRXZl bnQ9ITEpO3Qub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oYSl7dmFyIGk9ci5f ZnVsbExheW91dDtpZighci5fZHJhZ2dpbmcmJiExIT09aS5ob3Zlcm1vZGUp e3ZhciBsPXIuX2Z1bGxEYXRhW2QuaW5kZXhdLHk9YS5kYXRhLmRhdGEseD15 LmksYj1jLmlzSGllcmFyY2h5Um9vdChhKSxfPWMuZ2V0UGFyZW50KGcsYSks dz1jLmdldFZhbHVlKGEpLGs9ZnVuY3Rpb24odCl7cmV0dXJuIHMuY2FzdE9w dGlvbihsLHgsdCl9LFQ9aygiaG92ZXJ0ZW1wbGF0ZSIpLE09by5jYXN0SG92 ZXJpbmZvKGwsaSx4KSxBPWkuc2VwYXJhdG9ycztpZihUfHxNJiYibm9uZSIh PT1NJiYic2tpcCIhPT1NKXt2YXIgUyxFO3YmJihTPXAuY3grYS5weG1pZFsw XSooMS1hLnJJbnNjcmliZWQpLEU9cC5jeSthLnB4bWlkWzFdKigxLWEucklu c2NyaWJlZCkpLG0mJihTPWEuX2hvdmVyWCxFPWEuX2hvdmVyWSk7dmFyIEws Qz17fSxQPVtdLE89W10sej1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PVAuaW5k ZXhPZih0KX07TSYmKFA9ImFsbCI9PT1NP2wuX21vZHVsZS5hdHRyaWJ1dGVz LmhvdmVyaW5mby5mbGFnczpNLnNwbGl0KCIrIikpLEMubGFiZWw9eS5sYWJl bCx6KCJsYWJlbCIpJiZDLmxhYmVsJiZPLnB1c2goQy5sYWJlbCkseS5oYXNP d25Qcm9wZXJ0eSgidiIpJiYoQy52YWx1ZT15LnYsQy52YWx1ZUxhYmVsPXUo Qy52YWx1ZSxBKSx6KCJ2YWx1ZSIpJiZPLnB1c2goQy52YWx1ZUxhYmVsKSks Qy5jdXJyZW50UGF0aD1hLmN1cnJlbnRQYXRoPWMuZ2V0UGF0aChhLmRhdGEp LHooImN1cnJlbnQgcGF0aCIpJiYhYiYmTy5wdXNoKEMuY3VycmVudFBhdGgp O3ZhciBJPVtdLEQ9ZnVuY3Rpb24oKXstMT09PUkuaW5kZXhPZihMKSYmKE8u cHVzaChMKSxJLnB1c2goTCkpfTtDLnBlcmNlbnRQYXJlbnQ9YS5wZXJjZW50 UGFyZW50PXcvYy5nZXRWYWx1ZShfKSxDLnBhcmVudD1hLnBhcmVudFN0cmlu Zz1jLmdldFB0TGFiZWwoXykseigicGVyY2VudCBwYXJlbnQiKSYmKEw9Yy5m b3JtYXRQZXJjZW50KEMucGVyY2VudFBhcmVudCxBKSsiIG9mICIrQy5wYXJl bnQsRCgpKSxDLnBlcmNlbnRFbnRyeT1hLnBlcmNlbnRFbnRyeT13L2MuZ2V0 VmFsdWUoZSksQy5lbnRyeT1hLmVudHJ5PWMuZ2V0UHRMYWJlbChlKSwheigi cGVyY2VudCBlbnRyeSIpfHxifHxhLm9uUGF0aGJhcnx8KEw9Yy5mb3JtYXRQ ZXJjZW50KEMucGVyY2VudEVudHJ5LEEpKyIgb2YgIitDLmVudHJ5LEQoKSks Qy5wZXJjZW50Um9vdD1hLnBlcmNlbnRSb290PXcvYy5nZXRWYWx1ZShnKSxD LnJvb3Q9YS5yb290PWMuZ2V0UHRMYWJlbChnKSx6KCJwZXJjZW50IHJvb3Qi KSYmIWImJihMPWMuZm9ybWF0UGVyY2VudChDLnBlcmNlbnRSb290LEEpKyIg b2YgIitDLnJvb3QsRCgpKSxDLnRleHQ9aygiaG92ZXJ0ZXh0Iil8fGsoInRl eHQiKSx6KCJ0ZXh0IikmJihMPUMudGV4dCxzLmlzVmFsaWRUZXh0VmFsdWUo TCkmJk8ucHVzaChMKSk7dmFyIFI9e3RyYWNlOmwseTpFLHRleHQ6Ty5qb2lu KCI8YnI+IiksbmFtZTpUfHx6KCJuYW1lIik/bC5uYW1lOnZvaWQgMCxjb2xv cjprKCJob3ZlcmxhYmVsLmJnY29sb3IiKXx8eS5jb2xvcixib3JkZXJDb2xv cjprKCJob3ZlcmxhYmVsLmJvcmRlcmNvbG9yIiksZm9udEZhbWlseTprKCJo b3ZlcmxhYmVsLmZvbnQuZmFtaWx5IiksZm9udFNpemU6aygiaG92ZXJsYWJl bC5mb250LnNpemUiKSxmb250Q29sb3I6aygiaG92ZXJsYWJlbC5mb250LmNv bG9yIiksbmFtZUxlbmd0aDprKCJob3ZlcmxhYmVsLm5hbWVsZW5ndGgiKSx0 ZXh0QWxpZ246aygiaG92ZXJsYWJlbC5hbGlnbiIpLGhvdmVydGVtcGxhdGU6 VCxob3ZlcnRlbXBsYXRlTGFiZWxzOkMsZXZlbnREYXRhOltoKGEsbCxmLmV2 ZW50RGF0YUtleXMpXX07diYmKFIueDA9Uy1hLnJJbnNjcmliZWQqYS5ycHgx LFIueDE9UythLnJJbnNjcmliZWQqYS5ycHgxLFIuaWRlYWxBbGlnbj1hLnB4 bWlkWzBdPDA/ImxlZnQiOiJyaWdodCIpLG0mJihSLng9UyxSLmlkZWFsQWxp Z249UzwwPyJsZWZ0IjoicmlnaHQiKSxvLmxvbmVIb3ZlcihSLHtjb250YWlu ZXI6aS5faG92ZXJsYXllci5ub2RlKCksb3V0ZXJDb250YWluZXI6aS5fcGFw ZXIubm9kZSgpLGdkOnJ9KSxkLl9oYXNIb3ZlckxhYmVsPSEwfWlmKG0pe3Zh ciBGPXQuc2VsZWN0KCJwYXRoLnN1cmZhY2UiKTtmLnN0eWxlT25lKEYsYSxs LHtob3ZlcmVkOiEwfSl9ZC5faGFzSG92ZXJFdmVudD0hMCxyLmVtaXQoInBs b3RseV9ob3ZlciIse3BvaW50czpbaChhLGwsZi5ldmVudERhdGFLZXlzKV0s ZXZlbnQ6bi5ldmVudH0pfX0pLHQub24oIm1vdXNlb3V0IixmdW5jdGlvbihl KXt2YXIgYT1yLl9mdWxsTGF5b3V0LGk9ci5fZnVsbERhdGFbZC5pbmRleF0s cz1uLnNlbGVjdCh0aGlzKS5kYXR1bSgpO2lmKGQuX2hhc0hvdmVyRXZlbnQm JihlLm9yaWdpbmFsRXZlbnQ9bi5ldmVudCxyLmVtaXQoInBsb3RseV91bmhv dmVyIix7cG9pbnRzOltoKHMsaSxmLmV2ZW50RGF0YUtleXMpXSxldmVudDpu LmV2ZW50fSksZC5faGFzSG92ZXJFdmVudD0hMSksZC5faGFzSG92ZXJMYWJl bCYmKG8ubG9uZVVuaG92ZXIoYS5faG92ZXJsYXllci5ub2RlKCkpLGQuX2hh c0hvdmVyTGFiZWw9ITEpLG0pe3ZhciBsPXQuc2VsZWN0KCJwYXRoLnN1cmZh Y2UiKTtmLnN0eWxlT25lKGwscyxpLHtob3ZlcmVkOiExfSl9fSksdC5vbigi Y2xpY2siLGZ1bmN0aW9uKHQpe3ZhciBlPXIuX2Z1bGxMYXlvdXQsaT1yLl9m dWxsRGF0YVtkLmluZGV4XSxzPXYmJihjLmlzSGllcmFyY2h5Um9vdCh0KXx8 Yy5pc0xlYWYodCkpLHU9Yy5nZXRQdElkKHQpLHA9Yy5pc0VudHJ5KHQpP2Mu ZmluZEVudHJ5V2l0aENoaWxkKGcsdSk6Yy5maW5kRW50cnlXaXRoTGV2ZWwo Zyx1KSxtPWMuZ2V0UHRJZChwKSx5PXtwb2ludHM6W2godCxpLGYuZXZlbnRE YXRhS2V5cyldLGV2ZW50Om4uZXZlbnR9O3N8fCh5Lm5leHRMZXZlbD1tKTt2 YXIgeD1sLnRyaWdnZXJIYW5kbGVyKHIsInBsb3RseV8iK2QudHlwZSsiY2xp Y2siLHkpO2lmKCExIT09eCYmZS5ob3Zlcm1vZGUmJihyLl9ob3ZlcmRhdGE9 W2godCxpLGYuZXZlbnREYXRhS2V5cyldLG8uY2xpY2socixuLmV2ZW50KSks IXMmJiExIT09eCYmIXIuX2RyYWdnaW5nJiYhci5fdHJhbnNpdGlvbmluZyl7 YS5jYWxsKCJfc3RvcmVEaXJlY3RHVUlFZGl0IixpLGUuX3RyYWNlUHJlR1VJ W2kudWlkXSx7bGV2ZWw6aS5sZXZlbH0pO3ZhciBiPXtkYXRhOlt7bGV2ZWw6 bX1dLHRyYWNlczpbZC5pbmRleF19LF89e2ZyYW1lOntyZWRyYXc6ITEsZHVy YXRpb246Zi50cmFuc2l0aW9uVGltZX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246 Zi50cmFuc2l0aW9uVGltZSxlYXNpbmc6Zi50cmFuc2l0aW9uRWFzaW5nfSxt b2RlOiJpbW1lZGlhdGUiLGZyb21jdXJyZW50OiEwfTtvLmxvbmVVbmhvdmVy KGUuX2hvdmVybGF5ZXIubm9kZSgpKSxhLmNhbGwoImFuaW1hdGUiLHIsYixf KX19KX19LHsiLi4vLi4vY29tcG9uZW50cy9meCI6NjMwLCIuLi8uLi9jb21w b25lbnRzL2Z4L2hlbHBlcnMiOjYyNywiLi4vLi4vbGliIjo3MTcsIi4uLy4u L2xpYi9ldmVudHMiOjcwNywiLi4vLi4vcmVnaXN0cnkiOjg0NiwiLi4vcGll L2hlbHBlcnMiOjEwOTksIi4vaGVscGVycyI6MTIzNyxkMzoxNjV9XSwxMjM3 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGk9dCgiLi4v Li4vbGliL3NldGN1cnNvciIpLG89dCgiLi4vcGllL2hlbHBlcnMiKTtmdW5j dGlvbiBzKHQpe3JldHVybiB0LmRhdGEuZGF0YS5waWR9ci5maW5kRW50cnlX aXRoTGV2ZWw9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gZSYmdC5lYWNo QWZ0ZXIoZnVuY3Rpb24odCl7aWYoci5nZXRQdElkKHQpPT09ZSlyZXR1cm4g bj10LmNvcHkoKX0pLG58fHR9LHIuZmluZEVudHJ5V2l0aENoaWxkPWZ1bmN0 aW9uKHQsZSl7dmFyIG47cmV0dXJuIHQuZWFjaEFmdGVyKGZ1bmN0aW9uKHQp e2Zvcih2YXIgYT10LmNoaWxkcmVufHxbXSxpPTA7aTxhLmxlbmd0aDtpKysp e3ZhciBvPWFbaV07aWYoci5nZXRQdElkKG8pPT09ZSlyZXR1cm4gbj10LmNv cHkoKX19KSxufHx0fSxyLmlzRW50cnk9ZnVuY3Rpb24odCl7cmV0dXJuIXQu cGFyZW50fSxyLmlzTGVhZj1mdW5jdGlvbih0KXtyZXR1cm4hdC5jaGlsZHJl bn0sci5nZXRQdElkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGEuZGF0YS5p ZH0sci5nZXRQdExhYmVsPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGEuZGF0 YS5sYWJlbH0sci5nZXRWYWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1 ZX0sci5pc0hpZXJhcmNoeVJvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIiI9PT1z KHQpfSxyLnNldFNsaWNlQ3Vyc29yPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1u LmlzVHJhbnNpdGlvbmluZztpZighYSl7dmFyIG89dC5kYXR1bSgpO2E9bi5o aWRlT25Sb290JiZyLmlzSGllcmFyY2h5Um9vdChvKXx8bi5oaWRlT25MZWF2 ZXMmJnIuaXNMZWFmKG8pfWkodCxhP251bGw6InBvaW50ZXIiKX0sci5nZXRJ bnNpZGVUZXh0Rm9udEtleT1mdW5jdGlvbih0LGUscixhLGkpe3ZhciBvPShp fHx7fSkub25QYXRoYmFyPyJwYXRoYmFyLnRleHRmb250IjoiaW5zaWRldGV4 dGZvbnQiLHM9ci5kYXRhLmRhdGEuaTtyZXR1cm4gbi5jYXN0T3B0aW9uKGUs cyxvKyIuIit0KXx8bi5jYXN0T3B0aW9uKGUscywidGV4dGZvbnQuIit0KXx8 YS5zaXplfSxyLmdldE91dHNpZGVUZXh0Rm9udEtleT1mdW5jdGlvbih0LGUs cixhKXt2YXIgaT1yLmRhdGEuZGF0YS5pO3JldHVybiBuLmNhc3RPcHRpb24o ZSxpLCJvdXRzaWRldGV4dGZvbnQuIit0KXx8bi5jYXN0T3B0aW9uKGUsaSwi dGV4dGZvbnQuIit0KXx8YS5zaXplfSxyLmlzT3V0c2lkZVRleHQ9ZnVuY3Rp b24odCxlKXtyZXR1cm4hdC5faGFzQ29sb3JzY2FsZSYmci5pc0hpZXJhcmNo eVJvb3QoZSl9LHIuZGV0ZXJtaW5lVGV4dEZvbnQ9ZnVuY3Rpb24odCxlLGks byl7cmV0dXJuIHIuaXNPdXRzaWRlVGV4dCh0LGUpP2Z1bmN0aW9uKHQsZSxu KXtyZXR1cm57Y29sb3I6ci5nZXRPdXRzaWRlVGV4dEZvbnRLZXkoImNvbG9y Iix0LGUsbiksZmFtaWx5OnIuZ2V0T3V0c2lkZVRleHRGb250S2V5KCJmYW1p bHkiLHQsZSxuKSxzaXplOnIuZ2V0T3V0c2lkZVRleHRGb250S2V5KCJzaXpl Iix0LGUsbil9fSh0LGUsaSk6ZnVuY3Rpb24odCxlLGksbyl7dmFyIHM9KG98 fHt9KS5vblBhdGhiYXIsbD1lLmRhdGEuZGF0YSxjPWwuaSx1PW4uY2FzdE9w dGlvbih0LGMsKHM/InBhdGhiYXIudGV4dGZvbnQiOiJpbnNpZGV0ZXh0Zm9u dCIpKyIuY29sb3IiKTtyZXR1cm4hdSYmdC5faW5wdXQudGV4dGZvbnQmJih1 PW4uY2FzdE9wdGlvbih0Ll9pbnB1dCxjLCJ0ZXh0Zm9udC5jb2xvciIpKSx7 Y29sb3I6dXx8YS5jb250cmFzdChsLmNvbG9yKSxmYW1pbHk6ci5nZXRJbnNp ZGVUZXh0Rm9udEtleSgiZmFtaWx5Iix0LGUsaSxvKSxzaXplOnIuZ2V0SW5z aWRlVGV4dEZvbnRLZXkoInNpemUiLHQsZSxpLG8pfX0odCxlLGksbyl9LHIu aGFzVHJhbnNpdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4hISh0JiZ0LmR1cmF0 aW9uPjApfSxyLmdldE1heERlcHRoPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1h eGRlcHRoPj0wP3QubWF4ZGVwdGg6MS8wfSxyLmlzSGVhZGVyPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIShyLmlzTGVhZih0KXx8dC5kZXB0aD09PWUuX21heERl cHRoLTEpfSxyLmdldFBhcmVudD1mdW5jdGlvbih0LGUpe3JldHVybiByLmZp bmRFbnRyeVdpdGhMZXZlbCh0LHMoZSkpfSxyLmxpc3RQYXRoPWZ1bmN0aW9u KHQsZSl7dmFyIG49dC5wYXJlbnQ7aWYoIW4pcmV0dXJuW107dmFyIGE9ZT9b bi5kYXRhW2VdXTpbbl07cmV0dXJuIHIubGlzdFBhdGgobixlKS5jb25jYXQo YSl9LHIuZ2V0UGF0aD1mdW5jdGlvbih0KXtyZXR1cm4gci5saXN0UGF0aCh0 LCJsYWJlbCIpLmpvaW4oIi8iKSsiLyJ9LHIuZm9ybWF0VmFsdWU9by5mb3Jt YXRQaWVWYWx1ZSxyLmZvcm1hdFBlcmNlbnQ9ZnVuY3Rpb24odCxlKXt2YXIg cj1uLmZvcm1hdFBlcmNlbnQodCwwKTtyZXR1cm4iMCUiPT09ciYmKHI9by5m b3JtYXRQaWVQZXJjZW50KHQsZSkpLHJ9fSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3IiOjU5MiwiLi4vLi4vbGliIjo3MTcsIi4uLy4uL2xpYi9zZXRjdXJz b3IiOjczNywiLi4vcGllL2hlbHBlcnMiOjEwOTl9XSwxMjM4OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToi dHJhY2UiLG5hbWU6InN1bmJ1cnN0IixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jh c2VfcGxvdCIpLGNhdGVnb3JpZXM6W10sYW5pbWF0YWJsZTohMCxhdHRyaWJ1 dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9s YXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVs dHMiKSxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0 cyIpLGNhbGM6dCgiLi9jYWxjIikuY2FsYyxjcm9zc1RyYWNlQ2FsYzp0KCIu L2NhbGMiKS5jcm9zc1RyYWNlQ2FsYyxwbG90OnQoIi4vcGxvdCIpLnBsb3Qs c3R5bGU6dCgiLi9zdHlsZSIpLnN0eWxlLGNvbG9yYmFyOnQoIi4uL3NjYXR0 ZXIvbWFya2VyX2NvbG9yYmFyIiksbWV0YTp7fX19LHsiLi4vc2NhdHRlci9t YXJrZXJfY29sb3JiYXIiOjExMzgsIi4vYXR0cmlidXRlcyI6MTIzMSwiLi9i YXNlX3Bsb3QiOjEyMzIsIi4vY2FsYyI6MTIzMywiLi9kZWZhdWx0cyI6MTIz NSwiLi9sYXlvdXRfYXR0cmlidXRlcyI6MTIzOSwiLi9sYXlvdXRfZGVmYXVs dHMiOjEyNDAsIi4vcGxvdCI6MTI0MSwiLi9zdHlsZSI6MTI0Mn1dLDEyMzk6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtzdW5i dXJzdGNvbG9yd2F5Ont2YWxUeXBlOiJjb2xvcmxpc3QiLGVkaXRUeXBlOiJj YWxjIn0sZXh0ZW5kc3VuYnVyc3Rjb2xvcnM6e3ZhbFR5cGU6ImJvb2xlYW4i LGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifX19LHt9XSwxMjQwOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9 dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe2Z1bmN0aW9uIHIocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixp KX1yKCJzdW5idXJzdGNvbG9yd2F5IixlLmNvbG9yd2F5KSxyKCJleHRlbmRz dW5idXJzdGNvbG9ycyIpfX0seyIuLi8uLi9saWIiOjcxNywiLi9sYXlvdXRf YXR0cmlidXRlcyI6MTIzOX1dLDEyNDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoImQzLWhpZXJhcmNoeSIpLGk9 dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi8uLi9saWIi KSxzPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGw9dCgiLi4vYmFy L3VuaWZvcm1fdGV4dCIpLGM9bC5yZWNvcmRNaW5UZXh0U2l6ZSx1PWwuY2xl YXJNaW5UZXh0U2l6ZSxoPXQoIi4uL3BpZS9wbG90IiksZj1oLmNvbXB1dGVU cmFuc2Zvcm0scD1oLnRyYW5zZm9ybUluc2lkZVRleHQsZD10KCIuL3N0eWxl Iikuc3R5bGVPbmUsZz10KCIuLi9iYXIvc3R5bGUiKS5yZXNpemVUZXh0LHY9 dCgiLi9meCIpLG09dCgiLi9jb25zdGFudHMiKSx5PXQoIi4vaGVscGVycyIp O2Z1bmN0aW9uIHgodCxlLGwsdSl7dmFyIGg9dC5fZnVsbExheW91dCxnPSFo LnVuaWZvcm10ZXh0Lm1vZGUmJnkuaGFzVHJhbnNpdGlvbih1KSx4PW4uc2Vs ZWN0KGwpLnNlbGVjdEFsbCgiZy5zbGljZSIpLF89ZVswXSx3PV8udHJhY2Us az1fLmhpZXJhcmNoeSxUPXkuZmluZEVudHJ5V2l0aExldmVsKGssdy5sZXZl bCksTT15LmdldE1heERlcHRoKHcpLEE9aC5fc2l6ZSxTPXcuZG9tYWluLEU9 QS53KihTLnhbMV0tUy54WzBdKSxMPUEuaCooUy55WzFdLVMueVswXSksQz0u NSpNYXRoLm1pbihFLEwpLFA9Xy5jeD1BLmwrQS53KihTLnhbMV0rUy54WzBd KS8yLE89Xy5jeT1BLnQrQS5oKigxLVMueVswXSktTC8yO2lmKCFUKXJldHVy biB4LnJlbW92ZSgpO3ZhciB6PW51bGwsST17fTtnJiZ4LmVhY2goZnVuY3Rp b24odCl7SVt5LmdldFB0SWQodCldPXtycHgwOnQucnB4MCxycHgxOnQucnB4 MSx4MDp0LngwLHgxOnQueDEsdHJhbnNmb3JtOnQudHJhbnNmb3JtfSwheiYm eS5pc0VudHJ5KHQpJiYoej10KX0pO3ZhciBEPWZ1bmN0aW9uKHQpe3JldHVy biBhLnBhcnRpdGlvbigpLnNpemUoWzIqTWF0aC5QSSx0LmhlaWdodCsxXSko dCl9KFQpLmRlc2NlbmRhbnRzKCksUj1ULmhlaWdodCsxLEY9MCxCPU07Xy5o YXNNdWx0aXBsZVJvb3RzJiZ5LmlzSGllcmFyY2h5Um9vdChUKSYmKEQ9RC5z bGljZSgxKSxSLT0xLEY9MSxCKz0xKSxEPUQuZmlsdGVyKGZ1bmN0aW9uKHQp e3JldHVybiB0LnkxPD1CfSk7dmFyIE49TWF0aC5taW4oUixNKSxqPWZ1bmN0 aW9uKHQpe3JldHVybih0LUYpL04qQ30sVj1mdW5jdGlvbih0LGUpe3JldHVy blt0Kk1hdGguY29zKGUpLC10Kk1hdGguc2luKGUpXX0sVT1mdW5jdGlvbih0 KXtyZXR1cm4gby5wYXRoQW5udWx1cyh0LnJweDAsdC5ycHgxLHQueDAsdC54 MSxQLE8pfSxxPWZ1bmN0aW9uKHQpe3JldHVybiBQK2IodClbMF0qKHQudHJh bnNmb3JtLnJDZW50ZXJ8fDApKyh0LnRyYW5zZm9ybS54fHwwKX0sSD1mdW5j dGlvbih0KXtyZXR1cm4gTytiKHQpWzFdKih0LnRyYW5zZm9ybS5yQ2VudGVy fHwwKSsodC50cmFuc2Zvcm0ueXx8MCl9Oyh4PXguZGF0YShELHkuZ2V0UHRJ ZCkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2xpY2UiLCEwKSxn P3guZXhpdCgpLnRyYW5zaXRpb24oKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9 bi5zZWxlY3QodGhpcyk7dC5zZWxlY3QoInBhdGguc3VyZmFjZSIpLnRyYW5z aXRpb24oKS5hdHRyVHdlZW4oImQiLGZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0 aW9uKHQpe3ZhciBlLHI9eS5nZXRQdElkKHQpLGE9SVtyXSxpPUlbeS5nZXRQ dElkKFQpXTtpZihpKXt2YXIgbz10LngxPmkueDE/MipNYXRoLlBJOjA7ZT10 LnJweDE8aS5ycHgxP3tycHgwOjAscnB4MTowfTp7eDA6byx4MTpvfX1lbHNl e3ZhciBzLGw9eS5nZXRQdElkKHQucGFyZW50KTt4LmVhY2goZnVuY3Rpb24o dCl7aWYoeS5nZXRQdElkKHQpPT09bClyZXR1cm4gcz10fSk7dmFyIGMsdT1z LmNoaWxkcmVuO3UuZm9yRWFjaChmdW5jdGlvbih0LGUpe2lmKHkuZ2V0UHRJ ZCh0KT09PXIpcmV0dXJuIGM9ZX0pO3ZhciBoPXUubGVuZ3RoLGY9bi5pbnRl cnBvbGF0ZShzLngwLHMueDEpO2U9e3JweDA6QyxycHgxOkMseDA6ZihjL2gp LHgxOmYoKGMrMSkvaCl9fXJldHVybiBuLmludGVycG9sYXRlKGEsZSl9KHQp O3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gVShlKHQpKX19KSx0LnNlbGVj dCgiZy5zbGljZXRleHQiKS5hdHRyKCJvcGFjaXR5IiwwKX0pLnJlbW92ZSgp OnguZXhpdCgpLnJlbW92ZSgpLHgub3JkZXIoKTt2YXIgRz1udWxsO2lmKGcm Jnope3ZhciBZPXkuZ2V0UHRJZCh6KTt4LmVhY2goZnVuY3Rpb24odCl7bnVs bD09PUcmJnkuZ2V0UHRJZCh0KT09PVkmJihHPXQueDEpfSl9dmFyIFc9eDtm dW5jdGlvbiBYKHQpe3ZhciBlPXQucGFyZW50LHI9SVt5LmdldFB0SWQoZSld LGE9e307aWYocil7dmFyIGk9ZS5jaGlsZHJlbixvPWkuaW5kZXhPZih0KSxz PWkubGVuZ3RoLGw9bi5pbnRlcnBvbGF0ZShyLngwLHIueDEpO2EueDA9bChv L3MpLGEueDE9bChvL3MpfWVsc2UgYS54MD1hLngxPTA7cmV0dXJuIGF9ZyYm KFc9Vy50cmFuc2l0aW9uKCkuZWFjaCgiZW5kIixmdW5jdGlvbigpe3ZhciBl PW4uc2VsZWN0KHRoaXMpO3kuc2V0U2xpY2VDdXJzb3IoZSx0LHtoaWRlT25S b290OiEwLGhpZGVPbkxlYXZlczohMCxpc1RyYW5zaXRpb25pbmc6ITF9KX0p KSxXLmVhY2goZnVuY3Rpb24oYSl7dmFyIGw9bi5zZWxlY3QodGhpcyksdT1v LmVuc3VyZVNpbmdsZShsLCJwYXRoIiwic3VyZmFjZSIsZnVuY3Rpb24odCl7 dC5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKX0pO2EucnB4MD1qKGEu eTApLGEucnB4MT1qKGEueTEpLGEueG1pZD0oYS54MCthLngxKS8yLGEucHht aWQ9VihhLnJweDEsYS54bWlkKSxhLm1pZGFuZ2xlPS0oYS54bWlkLU1hdGgu UEkvMiksYS5zdGFydGFuZ2xlPS0oYS54MC1NYXRoLlBJLzIpLGEuc3RvcGFu Z2xlPS0oYS54MS1NYXRoLlBJLzIpLGEuaGFsZmFuZ2xlPS41Kk1hdGgubWlu KG8uYW5nbGVEZWx0YShhLngwLGEueDEpfHxNYXRoLlBJLE1hdGguUEkpLGEu cmluZz0xLWEucnB4MC9hLnJweDEsYS5ySW5zY3JpYmVkPWZ1bmN0aW9uKHQp e3JldHVybiAwPT09dC5ycHgwJiZvLmlzRnVsbENpcmNsZShbdC54MCx0Lngx XSk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEvKDErMS9NYXRoLnNpbih0Lmhh bGZhbmdsZSkpLHQucmluZy8yKSl9KGEpLGc/dS50cmFuc2l0aW9uKCkuYXR0 clR3ZWVuKCJkIixmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIg ZSxyPUlbeS5nZXRQdElkKHQpXSxhPXt4MDp0LngwLHgxOnQueDEscnB4MDp0 LnJweDAscnB4MTp0LnJweDF9O2lmKHIpZT1yO2Vsc2UgaWYoeilpZih0LnBh cmVudClpZihHKXt2YXIgaT10LngxPkc/MipNYXRoLlBJOjA7ZT17eDA6aSx4 MTppfX1lbHNlIGU9e3JweDA6QyxycHgxOkN9LG8uZXh0ZW5kRmxhdChlLFgo dCkpO2Vsc2UgZT17cnB4MDowLHJweDE6MH07ZWxzZSBlPXt4MDowLHgxOjB9 O3JldHVybiBuLmludGVycG9sYXRlKGUsYSl9KHQpO3JldHVybiBmdW5jdGlv bih0KXtyZXR1cm4gVShlKHQpKX19KTp1LmF0dHIoImQiLFUpLGwuY2FsbCh2 LFQsdCxlLHtldmVudERhdGFLZXlzOm0uZXZlbnREYXRhS2V5cyx0cmFuc2l0 aW9uVGltZTptLkNMSUNLX1RSQU5TSVRJT05fVElNRSx0cmFuc2l0aW9uRWFz aW5nOm0uQ0xJQ0tfVFJBTlNJVElPTl9FQVNJTkd9KS5jYWxsKHkuc2V0U2xp Y2VDdXJzb3IsdCx7aGlkZU9uUm9vdDohMCxoaWRlT25MZWF2ZXM6ITAsaXNU cmFuc2l0aW9uaW5nOnQuX3RyYW5zaXRpb25pbmd9KSx1LmNhbGwoZCxhLHcp O3ZhciB4PW8uZW5zdXJlU2luZ2xlKGwsImciLCJzbGljZXRleHQiKSxiPW8u ZW5zdXJlU2luZ2xlKHgsInRleHQiLCIiLGZ1bmN0aW9uKHQpe3QuYXR0cigi ZGF0YS1ub3RleCIsMSl9KSxrPW8uZW5zdXJlVW5pZm9ybUZvbnRTaXplKHQs eS5kZXRlcm1pbmVUZXh0Rm9udCh3LGEsaC5mb250KSk7Yi50ZXh0KHIuZm9y bWF0U2xpY2VMYWJlbChhLFQsdyxlLGgpKS5jbGFzc2VkKCJzbGljZXRleHQi LCEwKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmNhbGwoaS5mb250 LGspLmNhbGwocy5jb252ZXJ0VG9Uc3BhbnMsdCk7dmFyIE09aS5iQm94KGIu bm9kZSgpKTthLnRyYW5zZm9ybT1wKE0sYSxfKSxhLnRyYW5zZm9ybS50YXJn ZXRYPXEoYSksYS50cmFuc2Zvcm0udGFyZ2V0WT1IKGEpO3ZhciBBPWZ1bmN0 aW9uKHQsZSl7dmFyIHI9dC50cmFuc2Zvcm07cmV0dXJuIGYocixlKSxyLmZv bnRTaXplPWsuc2l6ZSxjKHcudHlwZSxyLGgpLG8uZ2V0VGV4dFRyYW5zZm9y bShyKX07Zz9iLnRyYW5zaXRpb24oKS5hdHRyVHdlZW4oInRyYW5zZm9ybSIs ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGUscj1JW3kuZ2V0 UHRJZCh0KV0sYT10LnRyYW5zZm9ybTtpZihyKWU9cjtlbHNlIGlmKGU9e3Jw eDE6dC5ycHgxLHRyYW5zZm9ybTp7dGV4dFBvc0FuZ2xlOmEudGV4dFBvc0Fu Z2xlLHNjYWxlOjAscm90YXRlOmEucm90YXRlLHJDZW50ZXI6YS5yQ2VudGVy LHg6YS54LHk6YS55fX0seilpZih0LnBhcmVudClpZihHKXt2YXIgaT10Lngx Pkc/MipNYXRoLlBJOjA7ZS54MD1lLngxPWl9ZWxzZSBvLmV4dGVuZEZsYXQo ZSxYKHQpKTtlbHNlIGUueDA9ZS54MT0wO2Vsc2UgZS54MD1lLngxPTA7dmFy IHM9bi5pbnRlcnBvbGF0ZShlLnRyYW5zZm9ybS50ZXh0UG9zQW5nbGUsdC50 cmFuc2Zvcm0udGV4dFBvc0FuZ2xlKSxsPW4uaW50ZXJwb2xhdGUoZS5ycHgx LHQucnB4MSksdT1uLmludGVycG9sYXRlKGUueDAsdC54MCksZj1uLmludGVy cG9sYXRlKGUueDEsdC54MSkscD1uLmludGVycG9sYXRlKGUudHJhbnNmb3Jt LnNjYWxlLGEuc2NhbGUpLGQ9bi5pbnRlcnBvbGF0ZShlLnRyYW5zZm9ybS5y b3RhdGUsYS5yb3RhdGUpLGc9MD09PWEuckNlbnRlcj8zOjA9PT1lLnRyYW5z Zm9ybS5yQ2VudGVyPzEvMzoxLHY9bi5pbnRlcnBvbGF0ZShlLnRyYW5zZm9y bS5yQ2VudGVyLGEuckNlbnRlcik7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBl PWwodCkscj11KHQpLG49Zih0KSxpPWZ1bmN0aW9uKHQpe3JldHVybiB2KE1h dGgucG93KHQsZykpfSh0KSxvPVYoZSwocituKS8yKSxtPXModCkseT17cHht aWQ6byxycHgxOmUsdHJhbnNmb3JtOnt0ZXh0UG9zQW5nbGU6bSxyQ2VudGVy OmkseDphLngseTphLnl9fTtyZXR1cm4gYyh3LnR5cGUsYSxoKSx7dHJhbnNm b3JtOnt0YXJnZXRYOnEoeSksdGFyZ2V0WTpIKHkpLHNjYWxlOnAodCkscm90 YXRlOmQodCksckNlbnRlcjppfX19fSh0KTtyZXR1cm4gZnVuY3Rpb24odCl7 cmV0dXJuIEEoZSh0KSxNKX19KTpiLmF0dHIoInRyYW5zZm9ybSIsQShhLE0p KX0pfWZ1bmN0aW9uIGIodCl7cmV0dXJuIGU9dC5ycHgxLHI9dC50cmFuc2Zv cm0udGV4dFBvc0FuZ2xlLFtlKk1hdGguc2luKHIpLC1lKk1hdGguY29zKHIp XTt2YXIgZSxyfXIucGxvdD1mdW5jdGlvbih0LGUscixhKXt2YXIgaSxvLHM9 dC5fZnVsbExheW91dCxsPXMuX3N1bmJ1cnN0bGF5ZXIsYz0hcixoPSFzLnVu aWZvcm10ZXh0Lm1vZGUmJnkuaGFzVHJhbnNpdGlvbihyKTsodSgic3VuYnVy c3QiLHMpLChpPWwuc2VsZWN0QWxsKCJnLnRyYWNlLnN1bmJ1cnN0IikuZGF0 YShlLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRyYWNlLnVpZH0pKS5lbnRl cigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInRyYWNlIiwhMCkuY2xhc3NlZCgi c3VuYnVyc3QiLCEwKS5hdHRyKCJzdHJva2UtbGluZWpvaW4iLCJyb3VuZCIp LGkub3JkZXIoKSxoKT8oYSYmKG89YSgpKSxuLnRyYW5zaXRpb24oKS5kdXJh dGlvbihyLmR1cmF0aW9uKS5lYXNlKHIuZWFzaW5nKS5lYWNoKCJlbmQiLGZ1 bmN0aW9uKCl7byYmbygpfSkuZWFjaCgiaW50ZXJydXB0IixmdW5jdGlvbigp e28mJm8oKX0pLmVhY2goZnVuY3Rpb24oKXtsLnNlbGVjdEFsbCgiZy50cmFj ZSIpLmVhY2goZnVuY3Rpb24oZSl7eCh0LGUsdGhpcyxyKX0pfSkpOihpLmVh Y2goZnVuY3Rpb24oZSl7eCh0LGUsdGhpcyxyKX0pLHMudW5pZm9ybXRleHQu bW9kZSYmZyh0LHMuX3N1bmJ1cnN0bGF5ZXIuc2VsZWN0QWxsKCIudHJhY2Ui KSwic3VuYnVyc3QiKSk7YyYmaS5leGl0KCkucmVtb3ZlKCl9LHIuZm9ybWF0 U2xpY2VMYWJlbD1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBpPXIudGV4dHRl bXBsYXRlLHM9ci50ZXh0aW5mbztpZighKGl8fHMmJiJub25lIiE9PXMpKXJl dHVybiIiO3ZhciBsPWEuc2VwYXJhdG9ycyxjPW5bMF0sdT10LmRhdGEuZGF0 YSxoPWMuaGllcmFyY2h5LGY9eS5pc0hpZXJhcmNoeVJvb3QodCkscD15Lmdl dFBhcmVudChoLHQpLGQ9eS5nZXRWYWx1ZSh0KTtpZighaSl7dmFyIGcsdj1z LnNwbGl0KCIrIiksbT1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PXYuaW5kZXhP Zih0KX0seD1bXTtpZihtKCJsYWJlbCIpJiZ1LmxhYmVsJiZ4LnB1c2godS5s YWJlbCksdS5oYXNPd25Qcm9wZXJ0eSgidiIpJiZtKCJ2YWx1ZSIpJiZ4LnB1 c2goeS5mb3JtYXRWYWx1ZSh1LnYsbCkpLCFmKXttKCJjdXJyZW50IHBhdGgi KSYmeC5wdXNoKHkuZ2V0UGF0aCh0LmRhdGEpKTt2YXIgYj0wO20oInBlcmNl bnQgcGFyZW50IikmJmIrKyxtKCJwZXJjZW50IGVudHJ5IikmJmIrKyxtKCJw ZXJjZW50IHJvb3QiKSYmYisrO3ZhciBfPWI+MTtpZihiKXt2YXIgdyxrPWZ1 bmN0aW9uKHQpe2c9eS5mb3JtYXRQZXJjZW50KHcsbCksXyYmKGcrPSIgb2Yg Iit0KSx4LnB1c2goZyl9O20oInBlcmNlbnQgcGFyZW50IikmJiFmJiYodz1k L3kuZ2V0VmFsdWUocCksaygicGFyZW50IikpLG0oInBlcmNlbnQgZW50cnki KSYmKHc9ZC95LmdldFZhbHVlKGUpLGsoImVudHJ5IikpLG0oInBlcmNlbnQg cm9vdCIpJiYodz1kL3kuZ2V0VmFsdWUoaCksaygicm9vdCIpKX19cmV0dXJu IG0oInRleHQiKSYmKGc9by5jYXN0T3B0aW9uKHIsdS5pLCJ0ZXh0Iiksby5p c1ZhbGlkVGV4dFZhbHVlKGcpJiZ4LnB1c2goZykpLHguam9pbigiPGJyPiIp fXZhciBUPW8uY2FzdE9wdGlvbihyLHUuaSwidGV4dHRlbXBsYXRlIik7aWYo IVQpcmV0dXJuIiI7dmFyIE09e307dS5sYWJlbCYmKE0ubGFiZWw9dS5sYWJl bCksdS5oYXNPd25Qcm9wZXJ0eSgidiIpJiYoTS52YWx1ZT11LnYsTS52YWx1 ZUxhYmVsPXkuZm9ybWF0VmFsdWUodS52LGwpKSxNLmN1cnJlbnRQYXRoPXku Z2V0UGF0aCh0LmRhdGEpLGZ8fChNLnBlcmNlbnRQYXJlbnQ9ZC95LmdldFZh bHVlKHApLE0ucGVyY2VudFBhcmVudExhYmVsPXkuZm9ybWF0UGVyY2VudChN LnBlcmNlbnRQYXJlbnQsbCksTS5wYXJlbnQ9eS5nZXRQdExhYmVsKHApKSxN LnBlcmNlbnRFbnRyeT1kL3kuZ2V0VmFsdWUoZSksTS5wZXJjZW50RW50cnlM YWJlbD15LmZvcm1hdFBlcmNlbnQoTS5wZXJjZW50RW50cnksbCksTS5lbnRy eT15LmdldFB0TGFiZWwoZSksTS5wZXJjZW50Um9vdD1kL3kuZ2V0VmFsdWUo aCksTS5wZXJjZW50Um9vdExhYmVsPXkuZm9ybWF0UGVyY2VudChNLnBlcmNl bnRSb290LGwpLE0ucm9vdD15LmdldFB0TGFiZWwoaCksdS5oYXNPd25Qcm9w ZXJ0eSgiY29sb3IiKSYmKE0uY29sb3I9dS5jb2xvcik7dmFyIEE9by5jYXN0 T3B0aW9uKHIsdS5pLCJ0ZXh0Iik7cmV0dXJuKG8uaXNWYWxpZFRleHRWYWx1 ZShBKXx8IiI9PT1BKSYmKE0udGV4dD1BKSxNLmN1c3RvbWRhdGE9by5jYXN0 T3B0aW9uKHIsdS5pLCJjdXN0b21kYXRhIiksby50ZXh0dGVtcGxhdGVTdHJp bmcoVCxNLGEuX2QzbG9jYWxlLE0sci5fbWV0YXx8e30pfX0seyIuLi8uLi9j b21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uLy4u L2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi9iYXIvc3R5bGUiOjg3MCwi Li4vYmFyL3VuaWZvcm1fdGV4dCI6ODcyLCIuLi9waWUvcGxvdCI6MTEwMywi Li9jb25zdGFudHMiOjEyMzQsIi4vZngiOjEyMzYsIi4vaGVscGVycyI6MTIz NywiLi9zdHlsZSI6MTI0MixkMzoxNjUsImQzLWhpZXJhcmNoeSI6MTU5fV0s MTI0MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJk MyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGk9dCgiLi4vLi4v bGliIiksbz10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IikucmVzaXplVGV4dDtm dW5jdGlvbiBzKHQsZSxyKXt2YXIgbj1lLmRhdGEuZGF0YSxvPSFlLmNoaWxk cmVuLHM9bi5pLGw9aS5jYXN0T3B0aW9uKHIscywibWFya2VyLmxpbmUuY29s b3IiKXx8YS5kZWZhdWx0TGluZSxjPWkuY2FzdE9wdGlvbihyLHMsIm1hcmtl ci5saW5lLndpZHRoIil8fDA7dC5zdHlsZSgic3Ryb2tlLXdpZHRoIixjKS5j YWxsKGEuZmlsbCxuLmNvbG9yKS5jYWxsKGEuc3Ryb2tlLGwpLnN0eWxlKCJv cGFjaXR5IixvP3IubGVhZi5vcGFjaXR5Om51bGwpfWUuZXhwb3J0cz17c3R5 bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5fc3VuYnVyc3Rs YXllci5zZWxlY3RBbGwoIi50cmFjZSIpO28odCxlLCJzdW5idXJzdCIpLGUu ZWFjaChmdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0aGlzKSxyPXRbMF0u dHJhY2U7ZS5zdHlsZSgib3BhY2l0eSIsci5vcGFjaXR5KSxlLnNlbGVjdEFs bCgicGF0aC5zdXJmYWNlIikuZWFjaChmdW5jdGlvbih0KXtuLnNlbGVjdCh0 aGlzKS5jYWxsKHMsdCxyKX0pfSl9LHN0eWxlT25lOnN9fSx7Ii4uLy4uL2Nv bXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vbGliIjo3MTcsIi4uL2Jhci91 bmlmb3JtX3RleHQiOjg3MixkMzoxNjV9XSwxMjQzOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29s b3IiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1 dGVzIiksaT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIiku aG92ZXJ0ZW1wbGF0ZUF0dHJzLG89dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRl cyIpLHM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsbD10KCIu Li8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGw7ZnVuY3Rp b24gYyh0KXtyZXR1cm57c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDoh MX0sc3RhcnQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGVkaXRUeXBl OiJwbG90In0sZW5kOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxlZGl0 VHlwZToicGxvdCJ9LHNpemU6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxs LG1pbjowLGVkaXRUeXBlOiJwbG90In0scHJvamVjdDp7eDp7dmFsVHlwZToi Ym9vbGVhbiIsZGZsdDohMX0seTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDoh MX0sejp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX19LGNvbG9yOnt2YWxU eXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSx1c2Vjb2xvcm1hcDp7 dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sd2lkdGg6e3ZhbFR5cGU6Im51 bWJlciIsbWluOjEsbWF4OjE2LGRmbHQ6Mn0saGlnaGxpZ2h0Ont2YWxUeXBl OiJib29sZWFuIixkZmx0OiEwfSxoaWdobGlnaHRjb2xvcjp7dmFsVHlwZToi Y29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0saGlnaGxpZ2h0d2lkdGg6e3Zh bFR5cGU6Im51bWJlciIsbWluOjEsbWF4OjE2LGRmbHQ6Mn19fXZhciB1PWUu ZXhwb3J0cz1sKHMoe3o6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx4Ont2YWxU eXBlOiJkYXRhX2FycmF5In0seTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHRl eHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixhcnJheU9rOiEwfSxob3Zl cnRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixhcnJheU9rOiEwfSxo b3ZlcnRlbXBsYXRlOmkoKSxjb25uZWN0Z2Fwczp7dmFsVHlwZToiYm9vbGVh biIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9LHN1cmZhY2Vjb2xvcjp7dmFs VHlwZToiZGF0YV9hcnJheSJ9fSxhKCIiLHtjb2xvckF0dHI6Inogb3Igc3Vy ZmFjZWNvbG9yIixzaG93U2NhbGVEZmx0OiEwLGF1dG9Db2xvckRmbHQ6ITEs ZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSx7Y29udG91cnM6e3g6YygpLHk6 YygpLHo6YygpfSxoaWRlc3VyZmFjZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZs dDohMX0sbGlnaHRwb3NpdGlvbjp7eDp7dmFsVHlwZToibnVtYmVyIixtaW46 LTFlNSxtYXg6MWU1LGRmbHQ6MTB9LHk6e3ZhbFR5cGU6Im51bWJlciIsbWlu Oi0xZTUsbWF4OjFlNSxkZmx0OjFlNH0sejp7dmFsVHlwZToibnVtYmVyIixt aW46LTFlNSxtYXg6MWU1LGRmbHQ6MH19LGxpZ2h0aW5nOnthbWJpZW50Ont2 YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6Ljh9LGRpZmZ1c2U6 e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouOH0sc3BlY3Vs YXI6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjIsZGZsdDouMDV9LHJv dWdobmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi41 fSxmcmVzbmVsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDo1LGRmbHQ6 LjJ9fSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRm bHQ6MX0sX2RlcHJlY2F0ZWQ6e3phdXRvOnMoe30sYS56YXV0byx7fSksem1p bjpzKHt9LGEuem1pbix7fSksem1heDpzKHt9LGEuem1heCx7fSl9LGhvdmVy aW5mbzpzKHt9LG8uaG92ZXJpbmZvKSxzaG93bGVnZW5kOnMoe30sby5zaG93 bGVnZW5kLHtkZmx0OiExfSl9KSwiY2FsYyIsIm5lc3RlZCIpO3UueC5lZGl0 VHlwZT11LnkuZWRpdFR5cGU9dS56LmVkaXRUeXBlPSJjYWxjK2NsZWFyQXhp c1R5cGVzIix1LnRyYW5zZm9ybXM9dm9pZCAwfSx7Ii4uLy4uL2NvbXBvbmVu dHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0 dHJpYnV0ZXMiOjU5OSwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9w bG90X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0 ZXMiOjc2MiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQx fV0sMTI0NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe2Uuc3VyZmFjZWNvbG9yP24odCxlLHt2YWxzOmUu c3VyZmFjZWNvbG9yLGNvbnRhaW5lclN0cjoiIixjTGV0dGVyOiJjIn0pOm4o dCxlLHt2YWxzOmUueixjb250YWluZXJTdHI6IiIsY0xldHRlcjoiYyJ9KX19 LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjYwMH1dLDEy NDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wt c3VyZmFjZTNkIiksYT10KCJuZGFycmF5IiksaT10KCJuZGFycmF5LWhvbW9n cmFwaHkiKSxvPXQoIm5kYXJyYXktZmlsbCIpLHM9dCgiLi4vLi4vbGliIiku aXNBcnJheU9yVHlwZWRBcnJheSxsPXQoIi4uLy4uL2xpYi9nbF9mb3JtYXRf Y29sb3IiKS5wYXJzZUNvbG9yU2NhbGUsYz10KCIuLi8uLi9saWIvc3RyMnJn YmFycmF5IiksdT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKS5l eHRyYWN0T3B0cyxoPXQoIi4uL2hlYXRtYXAvaW50ZXJwMmQiKSxmPXQoIi4u L2hlYXRtYXAvZmluZF9lbXB0aWVzIik7ZnVuY3Rpb24gcCh0LGUscil7dGhp cy5zY2VuZT10LHRoaXMudWlkPXIsdGhpcy5zdXJmYWNlPWUsdGhpcy5kYXRh PW51bGwsdGhpcy5zaG93Q29udG91cj1bITEsITEsITFdLHRoaXMuY29udG91 clN0YXJ0PVtudWxsLG51bGwsbnVsbF0sdGhpcy5jb250b3VyRW5kPVtudWxs LG51bGwsbnVsbF0sdGhpcy5jb250b3VyU2l6ZT1bMCwwLDBdLHRoaXMubWlu VmFsdWVzPVsxLzAsMS8wLDEvMF0sdGhpcy5tYXhWYWx1ZXM9Wy0xLzAsLTEv MCwtMS8wXSx0aGlzLmRhdGFTY2FsZVg9MSx0aGlzLmRhdGFTY2FsZVk9MSx0 aGlzLnJlZmluZURhdGE9ITAsdGhpcy5vYmplY3RPZmZzZXQ9WzAsMCwwXX12 YXIgZD1wLnByb3RvdHlwZTtkLmdldFhhdD1mdW5jdGlvbih0LGUscixuKXt2 YXIgYT1zKHRoaXMuZGF0YS54KT9zKHRoaXMuZGF0YS54WzBdKT90aGlzLmRh dGEueFtlXVt0XTp0aGlzLmRhdGEueFt0XTp0O3JldHVybiB2b2lkIDA9PT1y P2E6bi5kMmwoYSwwLHIpfSxkLmdldFlhdD1mdW5jdGlvbih0LGUscixuKXt2 YXIgYT1zKHRoaXMuZGF0YS55KT9zKHRoaXMuZGF0YS55WzBdKT90aGlzLmRh dGEueVtlXVt0XTp0aGlzLmRhdGEueVtlXTplO3JldHVybiB2b2lkIDA9PT1y P2E6bi5kMmwoYSwwLHIpfSxkLmdldFphdD1mdW5jdGlvbih0LGUscixuKXt2 YXIgYT10aGlzLmRhdGEueltlXVt0XTtyZXR1cm4gbnVsbD09PWEmJnRoaXMu ZGF0YS5jb25uZWN0Z2FwcyYmdGhpcy5kYXRhLl9pbnRlcnBvbGF0ZWRaJiYo YT10aGlzLmRhdGEuX2ludGVycG9sYXRlZFpbZV1bdF0pLHZvaWQgMD09PXI/ YTpuLmQybChhLDAscil9LGQuaGFuZGxlUGljaz1mdW5jdGlvbih0KXtpZih0 Lm9iamVjdD09PXRoaXMuc3VyZmFjZSl7dmFyIGU9KHQuZGF0YS5pbmRleFsw XS0xKS90aGlzLmRhdGFTY2FsZVgtMSxyPSh0LmRhdGEuaW5kZXhbMV0tMSkv dGhpcy5kYXRhU2NhbGVZLTEsbj1NYXRoLm1heChNYXRoLm1pbihNYXRoLnJv dW5kKGUpLHRoaXMuZGF0YS56WzBdLmxlbmd0aC0xKSwwKSxhPU1hdGgubWF4 KE1hdGgubWluKE1hdGgucm91bmQociksdGhpcy5kYXRhLl95bGVuZ3RoLTEp LDApO3QuaW5kZXg9W24sYV0sdC50cmFjZUNvb3JkaW5hdGU9W3RoaXMuZ2V0 WGF0KG4sYSksdGhpcy5nZXRZYXQobixhKSx0aGlzLmdldFphdChuLGEpXSx0 LmRhdGFDb29yZGluYXRlPVt0aGlzLmdldFhhdChuLGEsdGhpcy5kYXRhLnhj YWxlbmRhcix0aGlzLnNjZW5lLmZ1bGxTY2VuZUxheW91dC54YXhpcyksdGhp cy5nZXRZYXQobixhLHRoaXMuZGF0YS55Y2FsZW5kYXIsdGhpcy5zY2VuZS5m dWxsU2NlbmVMYXlvdXQueWF4aXMpLHRoaXMuZ2V0WmF0KG4sYSx0aGlzLmRh dGEuemNhbGVuZGFyLHRoaXMuc2NlbmUuZnVsbFNjZW5lTGF5b3V0LnpheGlz KV07Zm9yKHZhciBpPTA7aTwzO2krKyl7dmFyIG89dC5kYXRhQ29vcmRpbmF0 ZVtpXTtudWxsIT1vJiYodC5kYXRhQ29vcmRpbmF0ZVtpXSo9dGhpcy5zY2Vu ZS5kYXRhU2NhbGVbaV0pfXZhciBzPXRoaXMuZGF0YS5ob3ZlcnRleHR8fHRo aXMuZGF0YS50ZXh0O3JldHVybiBBcnJheS5pc0FycmF5KHMpJiZzW2FdJiZ2 b2lkIDAhPT1zW2FdW25dP3QudGV4dExhYmVsPXNbYV1bbl06dC50ZXh0TGFi ZWw9c3x8IiIsdC5kYXRhLmRhdGFDb29yZGluYXRlPXQuZGF0YUNvb3JkaW5h dGUuc2xpY2UoKSx0aGlzLnN1cmZhY2UuaGlnaGxpZ2h0KHQuZGF0YSksdGhp cy5zY2VuZS5nbHBsb3Quc3Bpa2VzLnBvc2l0aW9uPXQuZGF0YUNvb3JkaW5h dGUsITB9fTt2YXIgZz1bMiwzLDUsNywxMSwxMywxNywxOSwyMywyOSwzMSwz Nyw0MSw0Myw0Nyw1Myw1OSw2MSw2Nyw3MSw3Myw3OSw4Myw4OSw5NywxMDEs MTAzLDEwNywxMDksMTEzLDEyNywxMzEsMTM3LDEzOSwxNDksMTUxLDE1Nywx NjMsMTY3LDE3MywxNzksMTgxLDE5MSwxOTMsMTk3LDE5OSwyMTEsMjIzLDIy NywyMjksMjMzLDIzOSwyNDEsMjUxLDI1NywyNjMsMjY5LDI3MSwyNzcsMjgx LDI4MywyOTMsMzA3LDMxMSwzMTMsMzE3LDMzMSwzMzcsMzQ3LDM0OSwzNTMs MzU5LDM2NywzNzMsMzc5LDM4MywzODksMzk3LDQwMSw0MDksNDE5LDQyMSw0 MzEsNDMzLDQzOSw0NDMsNDQ5LDQ1Nyw0NjEsNDYzLDQ2Nyw0NzksNDg3LDQ5 MSw0OTksNTAzLDUwOSw1MjEsNTIzLDU0MSw1NDcsNTU3LDU2Myw1NjksNTcx LDU3Nyw1ODcsNTkzLDU5OSw2MDEsNjA3LDYxMyw2MTcsNjE5LDYzMSw2NDEs NjQzLDY0Nyw2NTMsNjU5LDY2MSw2NzMsNjc3LDY4Myw2OTEsNzAxLDcwOSw3 MTksNzI3LDczMyw3MzksNzQzLDc1MSw3NTcsNzYxLDc2OSw3NzMsNzg3LDc5 Nyw4MDksODExLDgyMSw4MjMsODI3LDgyOSw4MzksODUzLDg1Nyw4NTksODYz LDg3Nyw4ODEsODgzLDg4Nyw5MDcsOTExLDkxOSw5MjksOTM3LDk0MSw5NDcs OTUzLDk2Nyw5NzEsOTc3LDk4Myw5OTEsOTk3LDEwMDksMTAxMywxMDE5LDEw MjEsMTAzMSwxMDMzLDEwMzksMTA0OSwxMDUxLDEwNjEsMTA2MywxMDY5LDEw ODcsMTA5MSwxMDkzLDEwOTcsMTEwMywxMTA5LDExMTcsMTEyMywxMTI5LDEx NTEsMTE1MywxMTYzLDExNzEsMTE4MSwxMTg3LDExOTMsMTIwMSwxMjEzLDEy MTcsMTIyMywxMjI5LDEyMzEsMTIzNywxMjQ5LDEyNTksMTI3NywxMjc5LDEy ODMsMTI4OSwxMjkxLDEyOTcsMTMwMSwxMzAzLDEzMDcsMTMxOSwxMzIxLDEz MjcsMTM2MSwxMzY3LDEzNzMsMTM4MSwxMzk5LDE0MDksMTQyMywxNDI3LDE0 MjksMTQzMywxNDM5LDE0NDcsMTQ1MSwxNDUzLDE0NTksMTQ3MSwxNDgxLDE0 ODMsMTQ4NywxNDg5LDE0OTMsMTQ5OSwxNTExLDE1MjMsMTUzMSwxNTQzLDE1 NDksMTU1MywxNTU5LDE1NjcsMTU3MSwxNTc5LDE1ODMsMTU5NywxNjAxLDE2 MDcsMTYwOSwxNjEzLDE2MTksMTYyMSwxNjI3LDE2MzcsMTY1NywxNjYzLDE2 NjcsMTY2OSwxNjkzLDE2OTcsMTY5OSwxNzA5LDE3MjEsMTcyMywxNzMzLDE3 NDEsMTc0NywxNzUzLDE3NTksMTc3NywxNzgzLDE3ODcsMTc4OSwxODAxLDE4 MTEsMTgyMywxODMxLDE4NDcsMTg2MSwxODY3LDE4NzEsMTg3MywxODc3LDE4 NzksMTg4OSwxOTAxLDE5MDcsMTkxMywxOTMxLDE5MzMsMTk0OSwxOTUxLDE5 NzMsMTk3OSwxOTg3LDE5OTMsMTk5NywxOTk5LDIwMDMsMjAxMSwyMDE3LDIw MjcsMjAyOSwyMDM5LDIwNTMsMjA2MywyMDY5LDIwODEsMjA4MywyMDg3LDIw ODksMjA5OSwyMTExLDIxMTMsMjEyOSwyMTMxLDIxMzcsMjE0MSwyMTQzLDIx NTMsMjE2MSwyMTc5LDIyMDMsMjIwNywyMjEzLDIyMjEsMjIzNywyMjM5LDIy NDMsMjI1MSwyMjY3LDIyNjksMjI3MywyMjgxLDIyODcsMjI5MywyMjk3LDIz MDksMjMxMSwyMzMzLDIzMzksMjM0MSwyMzQ3LDIzNTEsMjM1NywyMzcxLDIz NzcsMjM4MSwyMzgzLDIzODksMjM5MywyMzk5LDI0MTEsMjQxNywyNDIzLDI0 MzcsMjQ0MSwyNDQ3LDI0NTksMjQ2NywyNDczLDI0NzcsMjUwMywyNTIxLDI1 MzEsMjUzOSwyNTQzLDI1NDksMjU1MSwyNTU3LDI1NzksMjU5MSwyNTkzLDI2 MDksMjYxNywyNjIxLDI2MzMsMjY0NywyNjU3LDI2NTksMjY2MywyNjcxLDI2 NzcsMjY4MywyNjg3LDI2ODksMjY5MywyNjk5LDI3MDcsMjcxMSwyNzEzLDI3 MTksMjcyOSwyNzMxLDI3NDEsMjc0OSwyNzUzLDI3NjcsMjc3NywyNzg5LDI3 OTEsMjc5NywyODAxLDI4MDMsMjgxOSwyODMzLDI4MzcsMjg0MywyODUxLDI4 NTcsMjg2MSwyODc5LDI4ODcsMjg5NywyOTAzLDI5MDksMjkxNywyOTI3LDI5 MzksMjk1MywyOTU3LDI5NjMsMjk2OSwyOTcxLDI5OTldO2Z1bmN0aW9uIHYo dCxlKXtpZih0PGUpcmV0dXJuIDA7Zm9yKHZhciByPTA7MD09PU1hdGguZmxv b3IodCVlKTspdC89ZSxyKys7cmV0dXJuIHJ9ZnVuY3Rpb24gbSh0KXtmb3Io dmFyIGU9W10scj0wO3I8Zy5sZW5ndGg7cisrKXt2YXIgbj1nW3JdO2UucHVz aCh2KHQsbikpfXJldHVybiBlfWZ1bmN0aW9uIHkodCl7Zm9yKHZhciBlPW0o dCkscj10LG49MDtuPGcubGVuZ3RoO24rKylpZihlW25dPjApe3I9Z1tuXTti cmVha31yZXR1cm4gcn1mdW5jdGlvbiB4KHQsZSl7aWYoISh0PDF8fGU8MSkp e2Zvcih2YXIgcj1tKHQpLG49bShlKSxhPTEsaT0wO2k8Zy5sZW5ndGg7aSsr KWEqPU1hdGgucG93KGdbaV0sTWF0aC5tYXgocltpXSxuW2ldKSk7cmV0dXJu IGF9fWQuY2FsY1hudW1zPWZ1bmN0aW9uKHQpe3ZhciBlLHI9W107Zm9yKGU9 MTtlPHQ7ZSsrKXt2YXIgbj10aGlzLmdldFhhdChlLTEsMCksYT10aGlzLmdl dFhhdChlLDApO3JbZS0xXT1hIT09biYmbnVsbCE9biYmbnVsbCE9YT9NYXRo LmFicyhhLW4pOjB9dmFyIGk9MDtmb3IoZT0xO2U8dDtlKyspaSs9cltlLTFd O2ZvcihlPTE7ZTx0O2UrKykwPT09cltlLTFdP3JbZS0xXT0xOnJbZS0xXT1N YXRoLnJvdW5kKGkvcltlLTFdKTtyZXR1cm4gcn0sZC5jYWxjWW51bXM9ZnVu Y3Rpb24odCl7dmFyIGUscj1bXTtmb3IoZT0xO2U8dDtlKyspe3ZhciBuPXRo aXMuZ2V0WWF0KDAsZS0xKSxhPXRoaXMuZ2V0WWF0KDAsZSk7cltlLTFdPWEh PT1uJiZudWxsIT1uJiZudWxsIT1hP01hdGguYWJzKGEtbik6MH12YXIgaT0w O2ZvcihlPTE7ZTx0O2UrKylpKz1yW2UtMV07Zm9yKGU9MTtlPHQ7ZSsrKTA9 PT1yW2UtMV0/cltlLTFdPTE6cltlLTFdPU1hdGgucm91bmQoaS9yW2UtMV0p O3JldHVybiByfTt2YXIgYj1bMSwyLDQsNiwxMiwyNCwzNiw0OCw2MCwxMjAs MTgwLDI0MCwzNjAsNzIwLDg0MCwxMjYwXSxfPWJbOV0sdz1iWzEzXTtmdW5j dGlvbiBrKHQsZSl7Zm9yKHZhciByPSExLG49MDtuPHQubGVuZ3RoO24rKylp ZihlPT09dFtuXSl7cj0hMDticmVha30hMT09PXImJnQucHVzaChlKX1kLmVz dGltYXRlU2NhbGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MStmdW5jdGlv bih0KXtpZigwIT09dC5sZW5ndGgpe2Zvcih2YXIgZT0xLHI9MDtyPHQubGVu Z3RoO3IrKyllPXgoZSx0W3JdKTtyZXR1cm4gZX19KDA9PT1lP3RoaXMuY2Fs Y1hudW1zKHQpOnRoaXMuY2FsY1ludW1zKHQpKTtyPF87KXIqPTI7Zm9yKDty Pnc7KXItLSxyLz15KHIpLCsrcjxfJiYocj13KTt2YXIgbj1NYXRoLnJvdW5k KHIvdCk7cmV0dXJuIG4+MT9uOjF9LGQucmVmaW5lQ29vcmRzPWZ1bmN0aW9u KHQpe2Zvcih2YXIgZT10aGlzLmRhdGFTY2FsZVgscj10aGlzLmRhdGFTY2Fs ZVksbj10WzBdLnNoYXBlWzBdLG89dFswXS5zaGFwZVsxXSxzPTB8TWF0aC5m bG9vcih0WzBdLnNoYXBlWzBdKmUrMSksbD0wfE1hdGguZmxvb3IodFswXS5z aGFwZVsxXSpyKzEpLGM9MStuKzEsdT0xK28rMSxoPWEobmV3IEZsb2F0MzJB cnJheShjKnUpLFtjLHVdKSxmPTA7Zjx0Lmxlbmd0aDsrK2Ype3RoaXMuc3Vy ZmFjZS5wYWRGaWVsZChoLHRbZl0pO3ZhciBwPWEobmV3IEZsb2F0MzJBcnJh eShzKmwpLFtzLGxdKTtpKHAsaCxbZSwwLDAsMCxyLDAsMCwwLDFdKSx0W2Zd PXB9fSxkLnNldENvbnRvdXJMZXZlbHM9ZnVuY3Rpb24oKXt2YXIgdCxlLHIs bj1bW10sW10sW11dLGE9WyExLCExLCExXSxpPSExO2Zvcih0PTA7dDwzOysr dClpZih0aGlzLnNob3dDb250b3VyW3RdJiYoaT0hMCx0aGlzLmNvbnRvdXJT aXplW3RdPjAmJm51bGwhPT10aGlzLmNvbnRvdXJTdGFydFt0XSYmbnVsbCE9 PXRoaXMuY29udG91ckVuZFt0XSYmdGhpcy5jb250b3VyRW5kW3RdPnRoaXMu Y29udG91clN0YXJ0W3RdKSlmb3IoYVt0XT0hMCxlPXRoaXMuY29udG91clN0 YXJ0W3RdO2U8dGhpcy5jb250b3VyRW5kW3RdO2UrPXRoaXMuY29udG91clNp emVbdF0pcj1lKnRoaXMuc2NlbmUuZGF0YVNjYWxlW3RdLGsoblt0XSxyKTtp ZihpKXt2YXIgbz1bW10sW10sW11dO2Zvcih0PTA7dDwzOysrdCl0aGlzLnNo b3dDb250b3VyW3RdJiYob1t0XT1hW3RdP25bdF06dGhpcy5zY2VuZS5jb250 b3VyTGV2ZWxzW3RdKTt0aGlzLnN1cmZhY2UudXBkYXRlKHtsZXZlbHM6b30p fX0sZC51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGUscixuLGkscz10aGlzLnNj ZW5lLHA9cy5mdWxsU2NlbmVMYXlvdXQsZD10aGlzLnN1cmZhY2UsZz10Lm9w YWNpdHksdj1sKHQsZyksbT1zLmRhdGFTY2FsZSx5PXQuelswXS5sZW5ndGgs eD10Ll95bGVuZ3RoLGI9cy5jb250b3VyTGV2ZWxzO3RoaXMuZGF0YT10O3Zh ciBfPVtdO2ZvcihlPTA7ZTwzO2UrKylmb3IoX1tlXT1bXSxyPTA7cjx5O3Ir KylfW2VdW3JdPVtdO2ZvcihyPTA7cjx5O3IrKylmb3Iobj0wO248eDtuKysp X1swXVtyXVtuXT10aGlzLmdldFhhdChyLG4sdC54Y2FsZW5kYXIscC54YXhp cyksX1sxXVtyXVtuXT10aGlzLmdldFlhdChyLG4sdC55Y2FsZW5kYXIscC55 YXhpcyksX1syXVtyXVtuXT10aGlzLmdldFphdChyLG4sdC56Y2FsZW5kYXIs cC56YXhpcyk7aWYodC5jb25uZWN0Z2Fwcylmb3IodC5fZW1wdHlwb2ludHM9 ZihfWzJdKSxoKF9bMl0sdC5fZW1wdHlwb2ludHMpLHQuX2ludGVycG9sYXRl ZFo9W10scj0wO3I8eTtyKyspZm9yKHQuX2ludGVycG9sYXRlZFpbcl09W10s bj0wO248eDtuKyspdC5faW50ZXJwb2xhdGVkWltyXVtuXT1fWzJdW3JdW25d O2ZvcihlPTA7ZTwzO2UrKylmb3Iocj0wO3I8eTtyKyspZm9yKG49MDtuPHg7 bisrKW51bGw9PShpPV9bZV1bcl1bbl0pP19bZV1bcl1bbl09TmFOOmk9X1tl XVtyXVtuXSo9bVtlXTtmb3IoZT0wO2U8MztlKyspZm9yKHI9MDtyPHk7cisr KWZvcihuPTA7bjx4O24rKyludWxsIT0oaT1fW2VdW3JdW25dKSYmKHRoaXMu bWluVmFsdWVzW2VdPmkmJih0aGlzLm1pblZhbHVlc1tlXT1pKSx0aGlzLm1h eFZhbHVlc1tlXTxpJiYodGhpcy5tYXhWYWx1ZXNbZV09aSkpO2ZvcihlPTA7 ZTwzO2UrKyl0aGlzLm9iamVjdE9mZnNldFtlXT0uNSoodGhpcy5taW5WYWx1 ZXNbZV0rdGhpcy5tYXhWYWx1ZXNbZV0pO2ZvcihlPTA7ZTwzO2UrKylmb3Io cj0wO3I8eTtyKyspZm9yKG49MDtuPHg7bisrKW51bGwhPShpPV9bZV1bcl1b bl0pJiYoX1tlXVtyXVtuXS09dGhpcy5vYmplY3RPZmZzZXRbZV0pO3ZhciBr PVthKG5ldyBGbG9hdDMyQXJyYXkoeSp4KSxbeSx4XSksYShuZXcgRmxvYXQz MkFycmF5KHkqeCksW3kseF0pLGEobmV3IEZsb2F0MzJBcnJheSh5KngpLFt5 LHhdKV07byhrWzBdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIF9bMF1bdF1bZV19 KSxvKGtbMV0sZnVuY3Rpb24odCxlKXtyZXR1cm4gX1sxXVt0XVtlXX0pLG8o a1syXSxmdW5jdGlvbih0LGUpe3JldHVybiBfWzJdW3RdW2VdfSksXz1bXTt2 YXIgVD17Y29sb3JtYXA6dixsZXZlbHM6W1tdLFtdLFtdXSxzaG93Q29udG91 cjpbITAsITAsITBdLHNob3dTdXJmYWNlOiF0LmhpZGVzdXJmYWNlLGNvbnRv dXJQcm9qZWN0OltbITEsITEsITFdLFshMSwhMSwhMV0sWyExLCExLCExXV0s Y29udG91cldpZHRoOlsxLDEsMV0sY29udG91ckNvbG9yOltbMSwxLDEsMV0s WzEsMSwxLDFdLFsxLDEsMSwxXV0sY29udG91clRpbnQ6WzEsMSwxXSxkeW5h bWljQ29sb3I6W1sxLDEsMSwxXSxbMSwxLDEsMV0sWzEsMSwxLDFdXSxkeW5h bWljV2lkdGg6WzEsMSwxXSxkeW5hbWljVGludDpbMSwxLDFdLG9wYWNpdHk6 dC5vcGFjaXR5fSxNPXUodCk7aWYoVC5pbnRlbnNpdHlCb3VuZHM9W00ubWlu LE0ubWF4XSx0LnN1cmZhY2Vjb2xvcil7dmFyIEE9YShuZXcgRmxvYXQzMkFy cmF5KHkqeCksW3kseF0pO28oQSxmdW5jdGlvbihlLHIpe3JldHVybiB0LnN1 cmZhY2Vjb2xvcltyXVtlXX0pLGsucHVzaChBKX1lbHNlIFQuaW50ZW5zaXR5 Qm91bmRzWzBdKj1tWzJdLFQuaW50ZW5zaXR5Qm91bmRzWzFdKj1tWzJdOyh3 PGtbMF0uc2hhcGVbMF18fHc8a1swXS5zaGFwZVsxXSkmJih0aGlzLnJlZmlu ZURhdGE9ITEpLCEwPT09dGhpcy5yZWZpbmVEYXRhJiYodGhpcy5kYXRhU2Nh bGVYPXRoaXMuZXN0aW1hdGVTY2FsZShrWzBdLnNoYXBlWzBdLDApLHRoaXMu ZGF0YVNjYWxlWT10aGlzLmVzdGltYXRlU2NhbGUoa1swXS5zaGFwZVsxXSwx KSwxPT09dGhpcy5kYXRhU2NhbGVYJiYxPT09dGhpcy5kYXRhU2NhbGVZfHx0 aGlzLnJlZmluZUNvb3JkcyhrKSksdC5zdXJmYWNlY29sb3ImJihULmludGVu c2l0eT1rLnBvcCgpKTt2YXIgUz1bITAsITAsITBdLEU9WyJ4IiwieSIsInoi XTtmb3IoZT0wO2U8MzsrK2Upe3ZhciBMPXQuY29udG91cnNbRVtlXV07U1tl XT1MLmhpZ2hsaWdodCxULnNob3dDb250b3VyW2VdPUwuc2hvd3x8TC5oaWdo bGlnaHQsVC5zaG93Q29udG91cltlXSYmKFQuY29udG91clByb2plY3RbZV09 W0wucHJvamVjdC54LEwucHJvamVjdC55LEwucHJvamVjdC56XSxMLnNob3c/ KHRoaXMuc2hvd0NvbnRvdXJbZV09ITAsVC5sZXZlbHNbZV09YltlXSxkLmhp Z2hsaWdodENvbG9yW2VdPVQuY29udG91ckNvbG9yW2VdPWMoTC5jb2xvciks TC51c2Vjb2xvcm1hcD9kLmhpZ2hsaWdodFRpbnRbZV09VC5jb250b3VyVGlu dFtlXT0wOmQuaGlnaGxpZ2h0VGludFtlXT1ULmNvbnRvdXJUaW50W2VdPTEs VC5jb250b3VyV2lkdGhbZV09TC53aWR0aCx0aGlzLmNvbnRvdXJTdGFydFtl XT1MLnN0YXJ0LHRoaXMuY29udG91ckVuZFtlXT1MLmVuZCx0aGlzLmNvbnRv dXJTaXplW2VdPUwuc2l6ZSk6KHRoaXMuc2hvd0NvbnRvdXJbZV09ITEsdGhp cy5jb250b3VyU3RhcnRbZV09bnVsbCx0aGlzLmNvbnRvdXJFbmRbZV09bnVs bCx0aGlzLmNvbnRvdXJTaXplW2VdPTApLEwuaGlnaGxpZ2h0JiYoVC5keW5h bWljQ29sb3JbZV09YyhMLmhpZ2hsaWdodGNvbG9yKSxULmR5bmFtaWNXaWR0 aFtlXT1MLmhpZ2hsaWdodHdpZHRoKSl9KGZ1bmN0aW9uKHQpe3ZhciBlPXRb MF0ucmdiLHI9dFt0Lmxlbmd0aC0xXS5yZ2I7cmV0dXJuIGVbMF09PT1yWzBd JiZlWzFdPT09clsxXSYmZVsyXT09PXJbMl0mJmVbM109PT1yWzNdfSkodikm JihULnZlcnRleENvbG9yPSEwKSxULm9iamVjdE9mZnNldD10aGlzLm9iamVj dE9mZnNldCxULmNvb3Jkcz1rLGQudXBkYXRlKFQpLGQudmlzaWJsZT10LnZp c2libGUsZC5lbmFibGVEeW5hbWljPVMsZC5lbmFibGVIaWdobGlnaHQ9Uyxk LnNuYXBUb0RhdGE9ITAsImxpZ2h0aW5nImluIHQmJihkLmFtYmllbnRMaWdo dD10LmxpZ2h0aW5nLmFtYmllbnQsZC5kaWZmdXNlTGlnaHQ9dC5saWdodGlu Zy5kaWZmdXNlLGQuc3BlY3VsYXJMaWdodD10LmxpZ2h0aW5nLnNwZWN1bGFy LGQucm91Z2huZXNzPXQubGlnaHRpbmcucm91Z2huZXNzLGQuZnJlc25lbD10 LmxpZ2h0aW5nLmZyZXNuZWwpLCJsaWdodHBvc2l0aW9uImluIHQmJihkLmxp Z2h0UG9zaXRpb249W3QubGlnaHRwb3NpdGlvbi54LHQubGlnaHRwb3NpdGlv bi55LHQubGlnaHRwb3NpdGlvbi56XSksZyYmZzwxJiYoZC5zdXBwb3J0c1Ry YW5zcGFyZW5jeT0hMCl9LGQuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2Nl bmUuZ2xwbG90LnJlbW92ZSh0aGlzLnN1cmZhY2UpLHRoaXMuc3VyZmFjZS5k aXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuZ2xw bG90LmdsLGE9bih7Z2w6cn0pLGk9bmV3IHAodCxhLGUudWlkKTtyZXR1cm4g YS5fdHJhY2U9aSxpLnVwZGF0ZShlKSx0LmdscGxvdC5hZGQoYSksaX19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4uL2xpYiI6 NzE3LCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIjo3MTQsIi4uLy4uL2xp Yi9zdHIycmdiYXJyYXkiOjc0MCwiLi4vaGVhdG1hcC9maW5kX2VtcHRpZXMi OjEwMDYsIi4uL2hlYXRtYXAvaW50ZXJwMmQiOjEwMDksImdsLXN1cmZhY2Uz ZCI6MzE4LG5kYXJyYXk6NDUyLCJuZGFycmF5LWZpbGwiOjQ0MiwibmRhcnJh eS1ob21vZ3JhcGh5Ijo0NDR9XSwxMjQ2OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8u Li9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZh dWx0cyIpLG89dCgiLi9hdHRyaWJ1dGVzIik7ZnVuY3Rpb24gcyh0LGUscil7 ZSBpbiB0JiYhKHIgaW4gdCkmJih0W3JdPXRbZV0pfWUuZXhwb3J0cz1mdW5j dGlvbih0LGUscixsKXt2YXIgYyx1O2Z1bmN0aW9uIGgocixuKXtyZXR1cm4g YS5jb2VyY2UodCxlLG8scixuKX12YXIgZj1oKCJ4IikscD1oKCJ5IiksZD1o KCJ6Iik7aWYoIWR8fCFkLmxlbmd0aHx8ZiYmZi5sZW5ndGg8MXx8cCYmcC5s ZW5ndGg8MSllLnZpc2libGU9ITE7ZWxzZXtlLl94bGVuZ3RoPUFycmF5Lmlz QXJyYXkoZikmJmEuaXNBcnJheU9yVHlwZWRBcnJheShmWzBdKT9kLmxlbmd0 aDpkWzBdLmxlbmd0aCxlLl95bGVuZ3RoPWQubGVuZ3RoLG4uZ2V0Q29tcG9u ZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVUcmFjZURlZmF1bHRzIiko dCxlLFsieCIsInkiLCJ6Il0sbCksaCgidGV4dCIpLGgoImhvdmVydGV4dCIp LGgoImhvdmVydGVtcGxhdGUiKSxbImxpZ2h0aW5nLmFtYmllbnQiLCJsaWdo dGluZy5kaWZmdXNlIiwibGlnaHRpbmcuc3BlY3VsYXIiLCJsaWdodGluZy5y b3VnaG5lc3MiLCJsaWdodGluZy5mcmVzbmVsIiwibGlnaHRwb3NpdGlvbi54 IiwibGlnaHRwb3NpdGlvbi55IiwibGlnaHRwb3NpdGlvbi56IiwiaGlkZXN1 cmZhY2UiLCJjb25uZWN0Z2FwcyIsIm9wYWNpdHkiXS5mb3JFYWNoKGZ1bmN0 aW9uKHQpe2godCl9KTt2YXIgZz1oKCJzdXJmYWNlY29sb3IiKSx2PVsieCIs InkiLCJ6Il07Zm9yKGM9MDtjPDM7KytjKXt2YXIgbT0iY29udG91cnMuIit2 W2NdLHk9aChtKyIuc2hvdyIpLHg9aChtKyIuaGlnaGxpZ2h0Iik7aWYoeXx8 eClmb3IodT0wO3U8MzsrK3UpaChtKyIucHJvamVjdC4iK3ZbdV0pO3kmJiho KG0rIi5jb2xvciIpLGgobSsiLndpZHRoIiksaChtKyIudXNlY29sb3JtYXAi KSkseCYmKGgobSsiLmhpZ2hsaWdodGNvbG9yIiksaChtKyIuaGlnaGxpZ2h0 d2lkdGgiKSksaChtKyIuc3RhcnQiKSxoKG0rIi5lbmQiKSxoKG0rIi5zaXpl Iil9Z3x8KHModCwiem1pbiIsImNtaW4iKSxzKHQsInptYXgiLCJjbWF4Iiks cyh0LCJ6YXV0byIsImNhdXRvIikpLGkodCxlLGwsaCx7cHJlZml4OiIiLGNM ZXR0ZXI6ImMifSksZS5fbGVuZ3RoPW51bGx9fX0seyIuLi8uLi9jb21wb25l bnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiOjYwMiwiLi4vLi4vbGliIjo3MTcs Ii4uLy4uL3JlZ2lzdHJ5Ijo4NDYsIi4vYXR0cmlidXRlcyI6MTI0M31dLDEy NDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXth dHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQo Ii4vZGVmYXVsdHMiKSxjb2xvcmJhcjp7bWluOiJjbWluIixtYXg6ImNtYXgi fSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9jb252ZXJ0IiksbW9kdWxl VHlwZToidHJhY2UiLG5hbWU6InN1cmZhY2UiLGJhc2VQbG90TW9kdWxlOnQo Ii4uLy4uL3Bsb3RzL2dsM2QiKSxjYXRlZ29yaWVzOlsiZ2wzZCIsIjJkTWFw Iiwic2hvd0xlZ2VuZCJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dsM2Qi OjgwNSwiLi9hdHRyaWJ1dGVzIjoxMjQzLCIuL2NhbGMiOjEyNDQsIi4vY29u dmVydCI6MTI0NSwiLi9kZWZhdWx0cyI6MTI0Nn1dLDEyNDg6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50 cy9hbm5vdGF0aW9ucy9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9saWIvZXh0 ZW5kIikuZXh0ZW5kRmxhdCxpPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlw ZXMiKS5vdmVycmlkZUFsbCxvPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmli dXRlcyIpLHM9dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuYXR0cmlidXRlczt0 KCIuLi8uLi9jb25zdGFudHMvZG9jcyIpLkZPUk1BVF9MSU5LOyhlLmV4cG9y dHM9aSh7ZG9tYWluOnMoe25hbWU6InRhYmxlIix0cmFjZTohMH0pLGNvbHVt bndpZHRoOnt2YWxUeXBlOiJudW1iZXIiLGFycmF5T2s6ITAsZGZsdDpudWxs fSxjb2x1bW5vcmRlcjp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGhlYWRlcjp7 dmFsdWVzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxmb3JtYXQ6 e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W119LHByZWZpeDp7dmFsVHlw ZToic3RyaW5nIixhcnJheU9rOiEwLGRmbHQ6bnVsbH0sc3VmZml4Ont2YWxU eXBlOiJzdHJpbmciLGFycmF5T2s6ITAsZGZsdDpudWxsfSxoZWlnaHQ6e3Zh bFR5cGU6Im51bWJlciIsZGZsdDoyOH0sYWxpZ246YSh7fSxuLmFsaWduLHth cnJheU9rOiEwfSksbGluZTp7d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsYXJy YXlPazohMCxkZmx0OjF9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlP azohMCxkZmx0OiJncmV5In19LGZpbGw6e2NvbG9yOnt2YWxUeXBlOiJjb2xv ciIsYXJyYXlPazohMCxkZmx0OiJ3aGl0ZSJ9fSxmb250OmEoe30sbyh7YXJy YXlPazohMH0pKX0sY2VsbHM6e3ZhbHVlczp7dmFsVHlwZToiZGF0YV9hcnJh eSIsZGZsdDpbXX0sZm9ybWF0Ont2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0 OltdfSxwcmVmaXg6e3ZhbFR5cGU6InN0cmluZyIsYXJyYXlPazohMCxkZmx0 Om51bGx9LHN1ZmZpeDp7dmFsVHlwZToic3RyaW5nIixhcnJheU9rOiEwLGRm bHQ6bnVsbH0saGVpZ2h0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MjB9LGFs aWduOmEoe30sbi5hbGlnbix7YXJyYXlPazohMH0pLGxpbmU6e3dpZHRoOnt2 YWxUeXBlOiJudW1iZXIiLGFycmF5T2s6ITAsZGZsdDoxfSxjb2xvcjp7dmFs VHlwZToiY29sb3IiLGFycmF5T2s6ITAsZGZsdDoiZ3JleSJ9fSxmaWxsOntj b2xvcjp7dmFsVHlwZToiY29sb3IiLGFycmF5T2s6ITAsZGZsdDoid2hpdGUi fX0sZm9udDphKHt9LG8oe2FycmF5T2s6ITB9KSl9fSwiY2FsYyIsImZyb20t cm9vdCIpKS50cmFuc2Zvcm1zPXZvaWQgMH0seyIuLi8uLi9jb21wb25lbnRz L2Fubm90YXRpb25zL2F0dHJpYnV0ZXMiOjU3NSwiLi4vLi4vY29uc3RhbnRz L2RvY3MiOjY4OCwiLi4vLi4vbGliL2V4dGVuZCI6NzA4LCIuLi8uLi9wbG90 X2FwaS9lZGl0X3R5cGVzIjo3NDgsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6Nzkw LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjc5MX1dLDEyNDk6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxv dHMvZ2V0X2RhdGEiKS5nZXRNb2R1bGVDYWxjRGF0YSxhPXQoIi4vcGxvdCIp O3IubmFtZT0idGFibGUiLHIucGxvdD1mdW5jdGlvbih0KXt2YXIgZT1uKHQu Y2FsY2RhdGEsInRhYmxlIilbMF07ZS5sZW5ndGgmJmEodCxlKX0sci5jbGVh bj1mdW5jdGlvbih0LGUscixuKXt2YXIgYT1uLl9oYXMmJm4uX2hhcygidGFi bGUiKSxpPWUuX2hhcyYmZS5faGFzKCJ0YWJsZSIpO2EmJiFpJiZuLl9wYXBl cmRpdi5zZWxlY3RBbGwoIi50YWJsZSIpLnJlbW92ZSgpfX0seyIuLi8uLi9w bG90cy9nZXRfZGF0YSI6ODAwLCIuL3Bsb3QiOjEyNTZ9XSwxMjUwOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9n dXAiKS53cmFwO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBuKHt9KX19 LHsiLi4vLi4vbGliL2d1cCI6NzE1fV0sMTI1MTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2NlbGxQYWQ6OCxjb2x1bW5FeHRl bnRPZmZzZXQ6MTAsY29sdW1uVGl0bGVPZmZzZXQ6MjgsZW1wdHlIZWFkZXJI ZWlnaHQ6MTYsbGF0ZXhDaGVjazovXlwkLipcJCQvLGdvbGRlblJhdGlvOjEu NjE4LGxpbmVCcmVha2VyOiI8YnI+IixtYXhEaW1lbnNpb25Db3VudDo2MCxv dmVyZHJhZzo0NSxyZWxlYXNlVHJhbnNpdGlvbkR1cmF0aW9uOjEyMCxyZWxl YXNlVHJhbnNpdGlvbkVhc2U6ImN1YmljLW91dCIsc2Nyb2xsYmFyQ2FwdHVy ZVdpZHRoOjE4LHNjcm9sbGJhckhpZGVEZWxheToxZTMsc2Nyb2xsYmFySGlk ZUR1cmF0aW9uOjFlMyxzY3JvbGxiYXJPZmZzZXQ6NSxzY3JvbGxiYXJXaWR0 aDo4LHRyYW5zaXRpb25EdXJhdGlvbjoxMDAsdHJhbnNpdGlvbkVhc2U6ImN1 YmljLW91dCIsdXBsaWZ0OjUsd3JhcFNwYWNlcjoiICIsd3JhcFNwbGl0Q2hh cmFjdGVyOiIgIixjbjp7dGFibGU6InRhYmxlIix0YWJsZUNvbnRyb2xWaWV3 OiJ0YWJsZS1jb250cm9sLXZpZXciLHNjcm9sbEJhY2tncm91bmQ6InNjcm9s bC1iYWNrZ3JvdW5kIix5Q29sdW1uOiJ5LWNvbHVtbiIsY29sdW1uQmxvY2s6 ImNvbHVtbi1ibG9jayIsc2Nyb2xsQXJlYUNsaXA6InNjcm9sbC1hcmVhLWNs aXAiLHNjcm9sbEFyZWFDbGlwUmVjdDoic2Nyb2xsLWFyZWEtY2xpcC1yZWN0 Iixjb2x1bW5Cb3VuZGFyeToiY29sdW1uLWJvdW5kYXJ5Iixjb2x1bW5Cb3Vu ZGFyeUNsaXBwYXRoOiJjb2x1bW4tYm91bmRhcnktY2xpcHBhdGgiLGNvbHVt bkJvdW5kYXJ5UmVjdDoiY29sdW1uLWJvdW5kYXJ5LXJlY3QiLGNvbHVtbkNl bGxzOiJjb2x1bW4tY2VsbHMiLGNvbHVtbkNlbGw6ImNvbHVtbi1jZWxsIixj ZWxsUmVjdDoiY2VsbC1yZWN0IixjZWxsVGV4dDoiY2VsbC10ZXh0IixjZWxs VGV4dEhvbGRlcjoiY2VsbC10ZXh0LWhvbGRlciIsc2Nyb2xsYmFyS2l0OiJz Y3JvbGxiYXIta2l0IixzY3JvbGxiYXI6InNjcm9sbGJhciIsc2Nyb2xsYmFy U2xpZGVyOiJzY3JvbGxiYXItc2xpZGVyIixzY3JvbGxiYXJHbHlwaDoic2Ny b2xsYmFyLWdseXBoIixzY3JvbGxiYXJDYXB0dXJlWm9uZToic2Nyb2xsYmFy LWNhcHR1cmUtem9uZSJ9fX0se31dLDEyNTI6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb25zdGFudHMiKSxhPXQoIi4uLy4u L2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGk9dCgiZmFzdC1pc251bWVyaWMi KTtmdW5jdGlvbiBvKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIg ZT0wLHI9MDtyPHQubGVuZ3RoO3IrKyllPU1hdGgubWF4KGUsbyh0W3JdKSk7 cmV0dXJuIGV9cmV0dXJuIHR9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiB0K2V9 ZnVuY3Rpb24gbCh0KXt2YXIgZSxyPXQuc2xpY2UoKSxuPTEvMCxhPTA7Zm9y KGU9MDtlPHIubGVuZ3RoO2UrKylBcnJheS5pc0FycmF5KHJbZV0pfHwocltl XT1bcltlXV0pLG49TWF0aC5taW4obixyW2VdLmxlbmd0aCksYT1NYXRoLm1h eChhLHJbZV0ubGVuZ3RoKTtpZihuIT09YSlmb3IoZT0wO2U8ci5sZW5ndGg7 ZSsrKXt2YXIgaT1hLXJbZV0ubGVuZ3RoO2kmJihyW2VdPXJbZV0uY29uY2F0 KGMoaSkpKX1yZXR1cm4gcn1mdW5jdGlvbiBjKHQpe2Zvcih2YXIgZT1uZXcg QXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT0iIjtyZXR1cm4gZX1mdW5jdGlv biB1KHQpe3JldHVybiB0LmNhbGNkYXRhLmNvbHVtbnMucmVkdWNlKGZ1bmN0 aW9uKGUscil7cmV0dXJuIHIueEluZGV4PHQueEluZGV4P2Urci5jb2x1bW5X aWR0aDplfSwwKX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIE9iamVjdC5rZXlz KHQpLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gYSh7fSx0W3JdLHthdXhpbGlh cnlCbG9ja3M6ZX0pfSl9ZnVuY3Rpb24gZih0LGUpe2Zvcih2YXIgcixuPXt9 LGE9MCxpPTAsbz17Zmlyc3RSb3dJbmRleDpudWxsLGxhc3RSb3dJbmRleDpu dWxsLHJvd3M6W119LHM9MCxsPTAsYz0wO2M8dC5sZW5ndGg7YysrKXI9dFtj XSxvLnJvd3MucHVzaCh7cm93SW5kZXg6Yyxyb3dIZWlnaHQ6cn0pLCgoaSs9 cik+PWV8fGM9PT10Lmxlbmd0aC0xKSYmKG5bYV09byxvLmtleT1sKyssby5m aXJzdFJvd0luZGV4PXMsby5sYXN0Um93SW5kZXg9YyxvPXtmaXJzdFJvd0lu ZGV4Om51bGwsbGFzdFJvd0luZGV4Om51bGwscm93czpbXX0sYSs9aSxzPWMr MSxpPTApO3JldHVybiBufWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBy PWwoZS5jZWxscy52YWx1ZXMpLHA9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xp Y2UoZS5oZWFkZXIudmFsdWVzLmxlbmd0aCx0Lmxlbmd0aCl9LGQ9bChlLmhl YWRlci52YWx1ZXMpO2QubGVuZ3RoJiYhZFswXS5sZW5ndGgmJihkWzBdPVsi Il0sZD1sKGQpKTt2YXIgZz1kLmNvbmNhdChwKHIpLm1hcChmdW5jdGlvbigp e3JldHVybiBjKChkWzBdfHxbIiJdKS5sZW5ndGgpfSkpLHY9ZS5kb21haW4s bT1NYXRoLmZsb29yKHQuX2Z1bGxMYXlvdXQuX3NpemUudyoodi54WzFdLXYu eFswXSkpLHk9TWF0aC5mbG9vcih0Ll9mdWxsTGF5b3V0Ll9zaXplLmgqKHYu eVsxXS12LnlbMF0pKSx4PWUuaGVhZGVyLnZhbHVlcy5sZW5ndGg/Z1swXS5t YXAoZnVuY3Rpb24oKXtyZXR1cm4gZS5oZWFkZXIuaGVpZ2h0fSk6W24uZW1w dHlIZWFkZXJIZWlnaHRdLGI9ci5sZW5ndGg/clswXS5tYXAoZnVuY3Rpb24o KXtyZXR1cm4gZS5jZWxscy5oZWlnaHR9KTpbXSxfPXgucmVkdWNlKHMsMCks dz1mKGIseS1fK24udXBsaWZ0KSxrPWgoZih4LF8pLFtdKSxUPWgodyxrKSxN PXt9LEE9ZS5fZnVsbElucHV0LmNvbHVtbm9yZGVyLmNvbmNhdChwKHIubWFw KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSkpLFM9Zy5tYXAoZnVuY3Rpb24o dCxyKXt2YXIgbj1BcnJheS5pc0FycmF5KGUuY29sdW1ud2lkdGgpP2UuY29s dW1ud2lkdGhbTWF0aC5taW4ocixlLmNvbHVtbndpZHRoLmxlbmd0aC0xKV06 ZS5jb2x1bW53aWR0aDtyZXR1cm4gaShuKT9OdW1iZXIobik6MX0pLEU9Uy5y ZWR1Y2UocywwKTtTPVMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0L0UqbX0p O3ZhciBMPU1hdGgubWF4KG8oZS5oZWFkZXIubGluZS53aWR0aCksbyhlLmNl bGxzLmxpbmUud2lkdGgpKSxDPXtrZXk6ZS51aWQrdC5fY29udGV4dC5zdGF0 aWNQbG90LHRyYW5zbGF0ZVg6di54WzBdKnQuX2Z1bGxMYXlvdXQuX3NpemUu dyx0cmFuc2xhdGVZOnQuX2Z1bGxMYXlvdXQuX3NpemUuaCooMS12LnlbMV0p LHNpemU6dC5fZnVsbExheW91dC5fc2l6ZSx3aWR0aDptLG1heExpbmVXaWR0 aDpMLGhlaWdodDp5LGNvbHVtbk9yZGVyOkEsZ3JvdXBIZWlnaHQ6eSxyb3dC bG9ja3M6VCxoZWFkZXJSb3dCbG9ja3M6ayxzY3JvbGxZOjAsY2VsbHM6YSh7 fSxlLmNlbGxzLHt2YWx1ZXM6cn0pLGhlYWRlckNlbGxzOmEoe30sZS5oZWFk ZXIse3ZhbHVlczpnfSksZ2RDb2x1bW5zOmcubWFwKGZ1bmN0aW9uKHQpe3Jl dHVybiB0WzBdfSksZ2RDb2x1bW5zT3JpZ2luYWxPcmRlcjpnLm1hcChmdW5j dGlvbih0KXtyZXR1cm4gdFswXX0pLHByZXZQYWdlczpbMCwwXSxzY3JvbGxi YXJTdGF0ZTp7c2Nyb2xsYmFyU2Nyb2xsSW5Qcm9ncmVzczohMX0sY29sdW1u czpnLm1hcChmdW5jdGlvbih0LGUpe3ZhciByPU1bdF07cmV0dXJuIE1bdF09 KHJ8fDApKzEse2tleTp0KyJfXyIrTVt0XSxsYWJlbDp0LHNwZWNJbmRleDpl LHhJbmRleDpBW2VdLHhTY2FsZTp1LHg6dm9pZCAwLGNhbGNkYXRhOnZvaWQg MCxjb2x1bW5XaWR0aDpTW2VdfX0pfTtyZXR1cm4gQy5jb2x1bW5zLmZvckVh Y2goZnVuY3Rpb24odCl7dC5jYWxjZGF0YT1DLHQueD11KHQpfSksQ319LHsi Li4vLi4vbGliL2V4dGVuZCI6NzA4LCIuL2NvbnN0YW50cyI6MTI1MSwiZmFz dC1pc251bWVyaWMiOjIyOH1dLDEyNTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZs YXQ7ci5zcGxpdFRvUGFuZWxzPWZ1bmN0aW9uKHQpe3ZhciBlPVswLDBdLHI9 bih7fSx0LHtrZXk6ImhlYWRlciIsdHlwZToiaGVhZGVyIixwYWdlOjAscHJl dlBhZ2VzOmUsY3VycmVudFJlcGFpbnQ6W251bGwsbnVsbF0sZHJhZ0hhbmRs ZTohMCx2YWx1ZXM6dC5jYWxjZGF0YS5oZWFkZXJDZWxscy52YWx1ZXNbdC5z cGVjSW5kZXhdLHJvd0Jsb2Nrczp0LmNhbGNkYXRhLmhlYWRlclJvd0Jsb2Nr cyxjYWxjZGF0YTpuKHt9LHQuY2FsY2RhdGEse2NlbGxzOnQuY2FsY2RhdGEu aGVhZGVyQ2VsbHN9KX0pO3JldHVybltuKHt9LHQse2tleToiY2VsbHMxIix0 eXBlOiJjZWxscyIscGFnZTowLHByZXZQYWdlczplLGN1cnJlbnRSZXBhaW50 OltudWxsLG51bGxdLGRyYWdIYW5kbGU6ITEsdmFsdWVzOnQuY2FsY2RhdGEu Y2VsbHMudmFsdWVzW3Quc3BlY0luZGV4XSxyb3dCbG9ja3M6dC5jYWxjZGF0 YS5yb3dCbG9ja3N9KSxuKHt9LHQse2tleToiY2VsbHMyIix0eXBlOiJjZWxs cyIscGFnZToxLHByZXZQYWdlczplLGN1cnJlbnRSZXBhaW50OltudWxsLG51 bGxdLGRyYWdIYW5kbGU6ITEsdmFsdWVzOnQuY2FsY2RhdGEuY2VsbHMudmFs dWVzW3Quc3BlY0luZGV4XSxyb3dCbG9ja3M6dC5jYWxjZGF0YS5yb3dCbG9j a3N9KSxyXX0sci5zcGxpdFRvQ2VsbHM9ZnVuY3Rpb24odCl7dmFyIGU9ZnVu Y3Rpb24odCl7dmFyIGU9dC5yb3dCbG9ja3NbdC5wYWdlXSxyPWU/ZS5yb3dz WzBdLnJvd0luZGV4OjAsbj1lP3IrZS5yb3dzLmxlbmd0aDowO3JldHVyblty LG5dfSh0KTtyZXR1cm4odC52YWx1ZXN8fFtdKS5zbGljZShlWzBdLGVbMV0p Lm1hcChmdW5jdGlvbihyLG4pe3JldHVybntrZXlXaXRoaW5CbG9jazpuKygi c3RyaW5nIj09dHlwZW9mIHImJnIubWF0Y2goL1s8JCY+IF0vKT8iX2tleWJ1 c3Rlcl8iK01hdGgucmFuZG9tKCk6IiIpLGtleTplWzBdK24sY29sdW1uOnQs Y2FsY2RhdGE6dC5jYWxjZGF0YSxwYWdlOnQucGFnZSxyb3dCbG9ja3M6dC5y b3dCbG9ja3MsdmFsdWU6cn19KX19LHsiLi4vLi4vbGliL2V4dGVuZCI6NzA4 fV0sMTI1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9saWIiKSxhPXQoIi4vYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4v cGxvdHMvZG9tYWluIikuZGVmYXVsdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyLG8pe2Z1bmN0aW9uIHMocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEs cixpKX1pKGUsbyxzKSxzKCJjb2x1bW53aWR0aCIpLHMoImhlYWRlci52YWx1 ZXMiKSxzKCJoZWFkZXIuZm9ybWF0IikscygiaGVhZGVyLmFsaWduIikscygi aGVhZGVyLnByZWZpeCIpLHMoImhlYWRlci5zdWZmaXgiKSxzKCJoZWFkZXIu aGVpZ2h0IikscygiaGVhZGVyLmxpbmUud2lkdGgiKSxzKCJoZWFkZXIubGlu ZS5jb2xvciIpLHMoImhlYWRlci5maWxsLmNvbG9yIiksbi5jb2VyY2VGb250 KHMsImhlYWRlci5mb250IixuLmV4dGVuZEZsYXQoe30sby5mb250KSksZnVu Y3Rpb24odCxlKXtmb3IodmFyIHI9dC5jb2x1bW5vcmRlcnx8W10sbj10Lmhl YWRlci52YWx1ZXMubGVuZ3RoLGE9ci5zbGljZSgwLG4pLGk9YS5zbGljZSgp LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSksbz1hLm1hcChmdW5j dGlvbih0KXtyZXR1cm4gaS5pbmRleE9mKHQpfSkscz1vLmxlbmd0aDtzPG47 cysrKW8ucHVzaChzKTtlKCJjb2x1bW5vcmRlciIsbyl9KGUscykscygiY2Vs bHMudmFsdWVzIikscygiY2VsbHMuZm9ybWF0IikscygiY2VsbHMuYWxpZ24i KSxzKCJjZWxscy5wcmVmaXgiKSxzKCJjZWxscy5zdWZmaXgiKSxzKCJjZWxs cy5oZWlnaHQiKSxzKCJjZWxscy5saW5lLndpZHRoIikscygiY2VsbHMubGlu ZS5jb2xvciIpLHMoImNlbGxzLmZpbGwuY29sb3IiKSxuLmNvZXJjZUZvbnQo cywiY2VsbHMuZm9udCIsbi5leHRlbmRGbGF0KHt9LG8uZm9udCkpLGUuX2xl bmd0aD1udWxsfX0seyIuLi8uLi9saWIiOjcxNywiLi4vLi4vcGxvdHMvZG9t YWluIjo3OTAsIi4vYXR0cmlidXRlcyI6MTI0OH1dLDEyNTU6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQo Ii4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMi KSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksbW9kdWxlVHlw ZToidHJhY2UiLG5hbWU6InRhYmxlIixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jh c2VfcGxvdCIpLGNhdGVnb3JpZXM6WyJub09wYWNpdHkiXSxtZXRhOnt9fX0s eyIuL2F0dHJpYnV0ZXMiOjEyNDgsIi4vYmFzZV9wbG90IjoxMjQ5LCIuL2Nh bGMiOjEyNTAsIi4vZGVmYXVsdHMiOjEyNTQsIi4vcGxvdCI6MTI1Nn1dLDEy NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9j b25zdGFudHMiKSxhPXQoImQzIiksaT10KCIuLi8uLi9saWIvZ3VwIiksbz10 KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxzPXQoIi4uLy4uL2xpYi9z dmdfdGV4dF91dGlscyIpLGw9dCgiLi4vLi4vbGliIikucmFpc2VUb1RvcCxj PXQoIi4uLy4uL2xpYiIpLmNhbmNlbFRyYW5zaXRpb24sdT10KCIuL2RhdGFf cHJlcGFyYXRpb25faGVscGVyIiksaD10KCIuL2RhdGFfc3BsaXRfaGVscGVy cyIpLGY9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpO2Z1bmN0aW9uIHAo dCl7cmV0dXJuIE1hdGguY2VpbCh0LmNhbGNkYXRhLm1heExpbmVXaWR0aC8y KX1mdW5jdGlvbiBkKHQsZSl7cmV0dXJuImNsaXAiK3QuX2Z1bGxMYXlvdXQu X3VpZCsiX3Njcm9sbEFyZWFCb3R0b21DbGlwXyIrZS5rZXl9ZnVuY3Rpb24g Zyh0LGUpe3JldHVybiJjbGlwIit0Ll9mdWxsTGF5b3V0Ll91aWQrIl9jb2x1 bW5Cb3VuZGFyeUNsaXBwYXRoXyIrZS5jYWxjZGF0YS5rZXkrIl8iK2Uuc3Bl Y0luZGV4fWZ1bmN0aW9uIHYodCl7cmV0dXJuW10uY29uY2F0LmFwcGx5KFtd LHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLm1hcChmdW5jdGlvbih0 KXtyZXR1cm4gdC5fX2RhdGFfX30pfWZ1bmN0aW9uIG0odCxlLHIpe3ZhciBv PXQuc2VsZWN0QWxsKCIuIituLmNuLnNjcm9sbGJhcktpdCkuZGF0YShpLnJl cGVhdCxpLmtleUZ1bik7by5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQo bi5jbi5zY3JvbGxiYXJLaXQsITApLnN0eWxlKCJzaGFwZS1yZW5kZXJpbmci LCJnZW9tZXRyaWNQcmVjaXNpb24iKSxvLmVhY2goZnVuY3Rpb24odCl7dmFy IGU9dC5zY3JvbGxiYXJTdGF0ZTtlLnRvdGFsSGVpZ2h0PWZ1bmN0aW9uKHQp e3ZhciBlPXQucm93QmxvY2tzO3JldHVybiB6KGUsZS5sZW5ndGgtMSkrKGUu bGVuZ3RoP0koZVtlLmxlbmd0aC0xXSwxLzApOjEpfSh0KSxlLnNjcm9sbGFi bGVBcmVhSGVpZ2h0PXQuZ3JvdXBIZWlnaHQtTSh0KSxlLmN1cnJlbnRseVZp c2libGVIZWlnaHQ9TWF0aC5taW4oZS50b3RhbEhlaWdodCxlLnNjcm9sbGFi bGVBcmVhSGVpZ2h0KSxlLnJhdGlvPWUuY3VycmVudGx5VmlzaWJsZUhlaWdo dC9lLnRvdGFsSGVpZ2h0LGUuYmFyTGVuZ3RoPU1hdGgubWF4KGUucmF0aW8q ZS5jdXJyZW50bHlWaXNpYmxlSGVpZ2h0LG4uZ29sZGVuUmF0aW8qbi5zY3Jv bGxiYXJXaWR0aCksZS5iYXJXaWdnbGVSb29tPWUuY3VycmVudGx5VmlzaWJs ZUhlaWdodC1lLmJhckxlbmd0aCxlLndpZ2dsZVJvb209TWF0aC5tYXgoMCxl LnRvdGFsSGVpZ2h0LWUuc2Nyb2xsYWJsZUFyZWFIZWlnaHQpLGUudG9wWT0w PT09ZS5iYXJXaWdnbGVSb29tPzA6dC5zY3JvbGxZL2Uud2lnZ2xlUm9vbSpl LmJhcldpZ2dsZVJvb20sZS5ib3R0b21ZPWUudG9wWStlLmJhckxlbmd0aCxl LmRyYWdNdWx0aXBsaWVyPWUud2lnZ2xlUm9vbS9lLmJhcldpZ2dsZVJvb219 KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xh dGUoIisodC53aWR0aCtuLnNjcm9sbGJhcldpZHRoLzIrbi5zY3JvbGxiYXJP ZmZzZXQpKyIgIitNKHQpKyIpIn0pO3ZhciBzPW8uc2VsZWN0QWxsKCIuIitu LmNuLnNjcm9sbGJhcikuZGF0YShpLnJlcGVhdCxpLmtleUZ1bik7cy5lbnRl cigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi5zY3JvbGxiYXIsITApO3Zh ciBsPXMuc2VsZWN0QWxsKCIuIituLmNuLnNjcm9sbGJhclNsaWRlcikuZGF0 YShpLnJlcGVhdCxpLmtleUZ1bik7bC5lbnRlcigpLmFwcGVuZCgiZyIpLmNs YXNzZWQobi5jbi5zY3JvbGxiYXJTbGlkZXIsITApLGwuYXR0cigidHJhbnNm b3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKDAgIisodC5zY3Jv bGxiYXJTdGF0ZS50b3BZfHwwKSsiKSJ9KTt2YXIgYz1sLnNlbGVjdEFsbCgi LiIrbi5jbi5zY3JvbGxiYXJHbHlwaCkuZGF0YShpLnJlcGVhdCxpLmtleUZ1 bik7Yy5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobi5jbi5zY3Jv bGxiYXJHbHlwaCwhMCkuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJz dHJva2Utd2lkdGgiLG4uc2Nyb2xsYmFyV2lkdGgpLmF0dHIoInN0cm9rZS1s aW5lY2FwIiwicm91bmQiKS5hdHRyKCJ5MSIsbi5zY3JvbGxiYXJXaWR0aC8y KSxjLmF0dHIoInkyIixmdW5jdGlvbih0KXtyZXR1cm4gdC5zY3JvbGxiYXJT dGF0ZS5iYXJMZW5ndGgtbi5zY3JvbGxiYXJXaWR0aC8yfSkuYXR0cigic3Ry b2tlLW9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbHVtbkRyYWdJ blByb2dyZXNzfHwhdC5zY3JvbGxiYXJTdGF0ZS5iYXJXaWdnbGVSb29tfHxy PzA6LjR9KSxjLnRyYW5zaXRpb24oKS5kZWxheSgwKS5kdXJhdGlvbigwKSxj LnRyYW5zaXRpb24oKS5kZWxheShuLnNjcm9sbGJhckhpZGVEZWxheSkuZHVy YXRpb24obi5zY3JvbGxiYXJIaWRlRHVyYXRpb24pLmF0dHIoInN0cm9rZS1v cGFjaXR5IiwwKTt2YXIgdT1zLnNlbGVjdEFsbCgiLiIrbi5jbi5zY3JvbGxi YXJDYXB0dXJlWm9uZSkuZGF0YShpLnJlcGVhdCxpLmtleUZ1bik7dS5lbnRl cigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobi5jbi5zY3JvbGxiYXJDYXB0 dXJlWm9uZSwhMCkuYXR0cigic3Ryb2tlIiwid2hpdGUiKS5hdHRyKCJzdHJv a2Utb3BhY2l0eSIsLjAxKS5hdHRyKCJzdHJva2Utd2lkdGgiLG4uc2Nyb2xs YmFyQ2FwdHVyZVdpZHRoKS5hdHRyKCJzdHJva2UtbGluZWNhcCIsImJ1dHQi KS5hdHRyKCJ5MSIsMCkub24oIm1vdXNlZG93biIsZnVuY3Rpb24ocil7dmFy IG49YS5ldmVudC55LGk9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxv PXIuc2Nyb2xsYmFyU3RhdGUscz1uLWkudG9wLGw9YS5zY2FsZS5saW5lYXIo KS5kb21haW4oWzAsby5zY3JvbGxhYmxlQXJlYUhlaWdodF0pLnJhbmdlKFsw LG8udG90YWxIZWlnaHRdKS5jbGFtcCghMCk7by50b3BZPD1zJiZzPD1vLmJv dHRvbVl8fFMoZSx0LG51bGwsbChzLW8uYmFyTGVuZ3RoLzIpKShyKX0pLmNh bGwoYS5iZWhhdmlvci5kcmFnKCkub3JpZ2luKGZ1bmN0aW9uKHQpe3JldHVy biBhLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpLHQuc2Nyb2xsYmFyU3RhdGUu c2Nyb2xsYmFyU2Nyb2xsSW5Qcm9ncmVzcz0hMCx0fSkub24oImRyYWciLFMo ZSx0KSkub24oImRyYWdlbmQiLGZ1bmN0aW9uKCl7fSkpLHUuYXR0cigieTIi LGZ1bmN0aW9uKHQpe3JldHVybiB0LnNjcm9sbGJhclN0YXRlLnNjcm9sbGFi bGVBcmVhSGVpZ2h0fSksZS5fY29udGV4dC5zdGF0aWNQbG90JiYoYy5yZW1v dmUoKSx1LnJlbW92ZSgpKX1mdW5jdGlvbiB5KHQsZSxyLHMpe3ZhciBsPWZ1 bmN0aW9uKHQpe3ZhciBlPXQuc2VsZWN0QWxsKCIuIituLmNuLmNvbHVtbkNl bGwpLmRhdGEoaC5zcGxpdFRvQ2VsbHMsZnVuY3Rpb24odCl7cmV0dXJuIHQu a2V5V2l0aGluQmxvY2t9KTtyZXR1cm4gZS5lbnRlcigpLmFwcGVuZCgiZyIp LmNsYXNzZWQobi5jbi5jb2x1bW5DZWxsLCEwKSxlLmV4aXQoKS5yZW1vdmUo KSxlfShmdW5jdGlvbih0KXt2YXIgZT10LnNlbGVjdEFsbCgiLiIrbi5jbi5j b2x1bW5DZWxscykuZGF0YShpLnJlcGVhdCxpLmtleUZ1bik7cmV0dXJuIGUu ZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG4uY24uY29sdW1uQ2VsbHMs ITApLGUuZXhpdCgpLnJlbW92ZSgpLGV9KHIpKTshZnVuY3Rpb24odCl7dC5l YWNoKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5jYWxjZGF0YS5jZWxscy5mb250 LG49dC5jb2x1bW4uc3BlY0luZGV4LGE9e3NpemU6XyhyLnNpemUsbixlKSxj b2xvcjpfKHIuY29sb3IsbixlKSxmYW1pbHk6XyhyLmZhbWlseSxuLGUpfTt0 LnJvd051bWJlcj10LmtleSx0LmFsaWduPV8odC5jYWxjZGF0YS5jZWxscy5h bGlnbixuLGUpLHQuY2VsbEJvcmRlcldpZHRoPV8odC5jYWxjZGF0YS5jZWxs cy5saW5lLndpZHRoLG4sZSksdC5mb250PWF9KX0obCksZnVuY3Rpb24odCl7 dC5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sdW1uLmNv bHVtbldpZHRofSkuYXR0cigic3Ryb2tlLXdpZHRoIixmdW5jdGlvbih0KXty ZXR1cm4gdC5jZWxsQm9yZGVyV2lkdGh9KS5lYWNoKGZ1bmN0aW9uKHQpe3Zh ciBlPWEuc2VsZWN0KHRoaXMpO2Yuc3Ryb2tlKGUsXyh0LmNhbGNkYXRhLmNl bGxzLmxpbmUuY29sb3IsdC5jb2x1bW4uc3BlY0luZGV4LHQucm93TnVtYmVy KSksZi5maWxsKGUsXyh0LmNhbGNkYXRhLmNlbGxzLmZpbGwuY29sb3IsdC5j b2x1bW4uc3BlY0luZGV4LHQucm93TnVtYmVyKSl9KX0oZnVuY3Rpb24odCl7 dmFyIGU9dC5zZWxlY3RBbGwoIi4iK24uY24uY2VsbFJlY3QpLmRhdGEoaS5y ZXBlYXQsZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5V2l0aGluQmxvY2t9KTty ZXR1cm4gZS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQobi5jbi5j ZWxsUmVjdCwhMCksZX0obCkpO3ZhciBjPWZ1bmN0aW9uKHQpe3ZhciBlPXQu c2VsZWN0QWxsKCIuIituLmNuLmNlbGxUZXh0KS5kYXRhKGkucmVwZWF0LGZ1 bmN0aW9uKHQpe3JldHVybiB0LmtleVdpdGhpbkJsb2NrfSk7cmV0dXJuIGUu ZW50ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKG4uY24uY2VsbFRleHQs ITApLnN0eWxlKCJjdXJzb3IiLGZ1bmN0aW9uKCl7cmV0dXJuImF1dG8ifSku b24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXthLmV2ZW50LnN0b3BQcm9wYWdh dGlvbigpfSksZX0oZnVuY3Rpb24odCl7dmFyIGU9dC5zZWxlY3RBbGwoIi4i K24uY24uY2VsbFRleHRIb2xkZXIpLmRhdGEoaS5yZXBlYXQsZnVuY3Rpb24o dCl7cmV0dXJuIHQua2V5V2l0aGluQmxvY2t9KTtyZXR1cm4gZS5lbnRlcigp LmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi5jZWxsVGV4dEhvbGRlciwhMCku c3R5bGUoInNoYXBlLXJlbmRlcmluZyIsImdlb21ldHJpY1ByZWNpc2lvbiIp LGV9KGwpKTshZnVuY3Rpb24odCl7dC5lYWNoKGZ1bmN0aW9uKHQpe28uZm9u dChhLnNlbGVjdCh0aGlzKSx0LmZvbnQpfSl9KGMpLHgoYyxlLHMsdCksTyhs KX1mdW5jdGlvbiB4KHQsZSxyLGkpe3QudGV4dChmdW5jdGlvbih0KXt2YXIg ZT10LmNvbHVtbi5zcGVjSW5kZXgscj10LnJvd051bWJlcixpPXQudmFsdWUs bz0ic3RyaW5nIj09dHlwZW9mIGkscz1vJiZpLm1hdGNoKC88YnI+L2kpLGw9 IW98fHM7dC5tYXlIYXZlTWFya3VwPW8mJmkubWF0Y2goL1s8Jj5dLyk7dmFy IGMsdT0ic3RyaW5nIj09dHlwZW9mKGM9aSkmJmMubWF0Y2gobi5sYXRleENo ZWNrKTt0LmxhdGV4PXU7dmFyIGgsZixwPXU/IiI6Xyh0LmNhbGNkYXRhLmNl bGxzLnByZWZpeCxlLHIpfHwiIixkPXU/IiI6Xyh0LmNhbGNkYXRhLmNlbGxz LnN1ZmZpeCxlLHIpfHwiIixnPXU/bnVsbDpfKHQuY2FsY2RhdGEuY2VsbHMu Zm9ybWF0LGUscil8fG51bGwsdj1wKyhnP2EuZm9ybWF0KGcpKHQudmFsdWUp OnQudmFsdWUpK2Q7aWYodC53cmFwcGluZ05lZWRlZD0hdC53cmFwcGVkJiYh bCYmIXUmJihoPWIodikpLHQuY2VsbEhlaWdodE1heUluY3JlYXNlPXN8fHV8 fHQubWF5SGF2ZU1hcmt1cHx8KHZvaWQgMD09PWg/Yih2KTpoKSx0Lm5lZWRz Q29udmVydFRvVHNwYW5zPXQubWF5SGF2ZU1hcmt1cHx8dC53cmFwcGluZ05l ZWRlZHx8dC5sYXRleCx0LndyYXBwaW5nTmVlZGVkKXt2YXIgbT0oIiAiPT09 bi53cmFwU3BsaXRDaGFyYWN0ZXI/di5yZXBsYWNlKC88YSBocmVmPS9naSwi PGFfaHJlZj0iKTp2KS5zcGxpdChuLndyYXBTcGxpdENoYXJhY3RlcikseT0i ICI9PT1uLndyYXBTcGxpdENoYXJhY3Rlcj9tLm1hcChmdW5jdGlvbih0KXty ZXR1cm4gdC5yZXBsYWNlKC88YV9ocmVmPS9naSwiPGEgaHJlZj0iKX0pOm07 dC5mcmFnbWVudHM9eS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3RleHQ6dCx3 aWR0aDpudWxsfX0pLHQuZnJhZ21lbnRzLnB1c2goe2ZyYWdtZW50Om4ud3Jh cFNwYWNlcix3aWR0aDpudWxsfSksZj15LmpvaW4obi5saW5lQnJlYWtlcikr bi5saW5lQnJlYWtlcituLndyYXBTcGFjZXJ9ZWxzZSBkZWxldGUgdC5mcmFn bWVudHMsZj12O3JldHVybiBmfSkuYXR0cigiZHkiLGZ1bmN0aW9uKHQpe3Jl dHVybiB0Lm5lZWRzQ29udmVydFRvVHNwYW5zPzA6IjAuNzVlbSJ9KS5lYWNo KGZ1bmN0aW9uKHQpe3ZhciBvPWEuc2VsZWN0KHRoaXMpLGw9dC53cmFwcGlu Z05lZWRlZD9MOkM7dC5uZWVkc0NvbnZlcnRUb1RzcGFucz9zLmNvbnZlcnRU b1RzcGFucyhvLGksbChyLHRoaXMsZSxpLHQpKTphLnNlbGVjdCh0aGlzLnBh cmVudE5vZGUpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJu InRyYW5zbGF0ZSgiK1AodCkrIiAiK24uY2VsbFBhZCsiKSJ9KS5hdHRyKCJ0 ZXh0LWFuY2hvciIsZnVuY3Rpb24odCl7cmV0dXJue2xlZnQ6InN0YXJ0Iixj ZW50ZXI6Im1pZGRsZSIscmlnaHQ6ImVuZCJ9W3QuYWxpZ25dfSl9KX1mdW5j dGlvbiBiKHQpe3JldHVybi0xIT09dC5pbmRleE9mKG4ud3JhcFNwbGl0Q2hh cmFjdGVyKX1mdW5jdGlvbiBfKHQsZSxyKXtpZihBcnJheS5pc0FycmF5KHQp KXt2YXIgbj10W01hdGgubWluKGUsdC5sZW5ndGgtMSldO3JldHVybiBBcnJh eS5pc0FycmF5KG4pP25bTWF0aC5taW4ocixuLmxlbmd0aC0xKV06bn1yZXR1 cm4gdH1mdW5jdGlvbiB3KHQsZSxyKXt0LnRyYW5zaXRpb24oKS5lYXNlKG4u cmVsZWFzZVRyYW5zaXRpb25FYXNlKS5kdXJhdGlvbihuLnJlbGVhc2VUcmFu c2l0aW9uRHVyYXRpb24pLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgi K2UueCsiICIrcisiKSIpfWZ1bmN0aW9uIGsodCl7cmV0dXJuImNlbGxzIj09 PXQudHlwZX1mdW5jdGlvbiBUKHQpe3JldHVybiJoZWFkZXIiPT09dC50eXBl fWZ1bmN0aW9uIE0odCl7cmV0dXJuKHQucm93QmxvY2tzLmxlbmd0aD90LnJv d0Jsb2Nrc1swXS5hdXhpbGlhcnlCbG9ja3M6W10pLnJlZHVjZShmdW5jdGlv bih0LGUpe3JldHVybiB0K0koZSwxLzApfSwwKX1mdW5jdGlvbiBBKHQsZSxy KXt2YXIgbj12KGUpWzBdO2lmKHZvaWQgMCE9PW4pe3ZhciBhPW4ucm93Qmxv Y2tzLGk9bi5jYWxjZGF0YSxvPXooYSxhLmxlbmd0aCkscz1uLmNhbGNkYXRh Lmdyb3VwSGVpZ2h0LU0obiksbD1pLnNjcm9sbFk9TWF0aC5tYXgoMCxNYXRo Lm1pbihvLXMsaS5zY3JvbGxZKSksYz1mdW5jdGlvbih0LGUscil7Zm9yKHZh ciBuPVtdLGE9MCxpPTA7aTx0Lmxlbmd0aDtpKyspe2Zvcih2YXIgbz10W2ld LHM9by5yb3dzLGw9MCxjPTA7YzxzLmxlbmd0aDtjKyspbCs9c1tjXS5yb3dI ZWlnaHQ7by5hbGxSb3dzSGVpZ2h0PWwsZTxhK2wmJmUrcj5hJiZuLnB1c2go aSksYSs9bH1yZXR1cm4gbn0oYSxsLHMpOzE9PT1jLmxlbmd0aCYmKGNbMF09 PT1hLmxlbmd0aC0xP2MudW5zaGlmdChjWzBdLTEpOmMucHVzaChjWzBdKzEp KSxjWzBdJTImJmMucmV2ZXJzZSgpLGUuZWFjaChmdW5jdGlvbih0LGUpe3Qu cGFnZT1jW2VdLHQuc2Nyb2xsWT1sfSksZS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1 bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoMCAiKyh6KHQucm93QmxvY2tz LHQucGFnZSktdC5zY3JvbGxZKSsiKSJ9KSx0JiYoRSh0LHIsZSxjLG4ucHJl dlBhZ2VzLG4sMCksRSh0LHIsZSxjLG4ucHJldlBhZ2VzLG4sMSksbShyLHQp KX19ZnVuY3Rpb24gUyh0LGUscixpKXtyZXR1cm4gZnVuY3Rpb24obyl7dmFy IHM9by5jYWxjZGF0YT9vLmNhbGNkYXRhOm8sbD1lLmZpbHRlcihmdW5jdGlv bih0KXtyZXR1cm4gcy5rZXk9PT10LmtleX0pLGM9cnx8cy5zY3JvbGxiYXJT dGF0ZS5kcmFnTXVsdGlwbGllcix1PXMuc2Nyb2xsWTtzLnNjcm9sbFk9dm9p ZCAwPT09aT9zLnNjcm9sbFkrYyphLmV2ZW50LmR5Omk7dmFyIGg9bC5zZWxl Y3RBbGwoIi4iK24uY24ueUNvbHVtbikuc2VsZWN0QWxsKCIuIituLmNuLmNv bHVtbkJsb2NrKS5maWx0ZXIoayk7cmV0dXJuIEEodCxoLGwpLHMuc2Nyb2xs WT09PXV9fWZ1bmN0aW9uIEUodCxlLHIsbixhLGksbyl7bltvXSE9PWFbb10m JihjbGVhclRpbWVvdXQoaS5jdXJyZW50UmVwYWludFtvXSksaS5jdXJyZW50 UmVwYWludFtvXT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGk9ci5maWx0 ZXIoZnVuY3Rpb24odCxlKXtyZXR1cm4gZT09PW8mJm5bZV0hPT1hW2VdfSk7 eSh0LGUsaSxyKSxhW29dPW5bb119KSl9ZnVuY3Rpb24gTCh0LGUscixpKXty ZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1hLnNlbGVjdChlLnBhcmVudE5vZGUp O28uZWFjaChmdW5jdGlvbih0KXt2YXIgZT10LmZyYWdtZW50cztvLnNlbGVj dEFsbCgidHNwYW4ubGluZSIpLmVhY2goZnVuY3Rpb24odCxyKXtlW3JdLndp ZHRoPXRoaXMuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCl9KTt2YXIgcixhLGk9 ZVtlLmxlbmd0aC0xXS53aWR0aCxzPWUuc2xpY2UoMCwtMSksbD1bXSxjPTAs dT10LmNvbHVtbi5jb2x1bW5XaWR0aC0yKm4uY2VsbFBhZDtmb3IodC52YWx1 ZT0iIjtzLmxlbmd0aDspYysoYT0ocj1zLnNoaWZ0KCkpLndpZHRoK2kpPnUm Jih0LnZhbHVlKz1sLmpvaW4obi53cmFwU3BhY2VyKStuLmxpbmVCcmVha2Vy LGw9W10sYz0wKSxsLnB1c2goci50ZXh0KSxjKz1hO2MmJih0LnZhbHVlKz1s LmpvaW4obi53cmFwU3BhY2VyKSksdC53cmFwcGVkPSEwfSksby5zZWxlY3RB bGwoInRzcGFuLmxpbmUiKS5yZW1vdmUoKSx4KG8uc2VsZWN0KCIuIituLmNu LmNlbGxUZXh0KSxyLHQsaSksYS5zZWxlY3QoZS5wYXJlbnROb2RlLnBhcmVu dE5vZGUpLmNhbGwoTyl9fWZ1bmN0aW9uIEModCxlLHIsaSxvKXtyZXR1cm4g ZnVuY3Rpb24oKXtpZighby5zZXR0bGVkWSl7dmFyIHM9YS5zZWxlY3QoZS5w YXJlbnROb2RlKSxsPVIobyksYz1vLmtleS1sLmZpcnN0Um93SW5kZXgsdT1s LnJvd3NbY10ucm93SGVpZ2h0LGg9by5jZWxsSGVpZ2h0TWF5SW5jcmVhc2U/ ZS5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCsy Km4uY2VsbFBhZDp1LGY9TWF0aC5tYXgoaCx1KTtmLWwucm93c1tjXS5yb3dI ZWlnaHQmJihsLnJvd3NbY10ucm93SGVpZ2h0PWYsdC5zZWxlY3RBbGwoIi4i K24uY24uY29sdW1uQ2VsbCkuY2FsbChPKSxBKG51bGwsdC5maWx0ZXIoayks MCksbShyLGksITApKSxzLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oKXt2 YXIgdD10aGlzLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCks ZT1hLnNlbGVjdCh0aGlzLnBhcmVudE5vZGUpLnNlbGVjdCgiLiIrbi5jbi5j ZWxsUmVjdCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9dGhp cy50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLGk9ZS50b3AtdC50 b3ArKHI/ci5tYXRyaXguZjpuLmNlbGxQYWQpO3JldHVybiJ0cmFuc2xhdGUo IitQKG8sYS5zZWxlY3QodGhpcy5wYXJlbnROb2RlKS5zZWxlY3QoIi4iK24u Y24uY2VsbFRleHRIb2xkZXIpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJl Y3QoKS53aWR0aCkrIiAiK2krIikifSksby5zZXR0bGVkWT0hMH19fWZ1bmN0 aW9uIFAodCxlKXtzd2l0Y2godC5hbGlnbil7Y2FzZSJsZWZ0IjpyZXR1cm4g bi5jZWxsUGFkO2Nhc2UicmlnaHQiOnJldHVybiB0LmNvbHVtbi5jb2x1bW5X aWR0aC0oZXx8MCktbi5jZWxsUGFkO2Nhc2UiY2VudGVyIjpyZXR1cm4odC5j b2x1bW4uY29sdW1uV2lkdGgtKGV8fDApKS8yO2RlZmF1bHQ6cmV0dXJuIG4u Y2VsbFBhZH19ZnVuY3Rpb24gTyh0KXt0LmF0dHIoInRyYW5zZm9ybSIsZnVu Y3Rpb24odCl7dmFyIGU9dC5yb3dCbG9ja3NbMF0uYXV4aWxpYXJ5QmxvY2tz LnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiB0K0koZSwxLzApfSwwKTty ZXR1cm4idHJhbnNsYXRlKDAgIisoSShSKHQpLHQua2V5KStlKSsiKSJ9KS5z ZWxlY3RBbGwoIi4iK24uY24uY2VsbFJlY3QpLmF0dHIoImhlaWdodCIsZnVu Y3Rpb24odCl7cmV0dXJuKGU9Uih0KSxyPXQua2V5LGUucm93c1tyLWUuZmly c3RSb3dJbmRleF0pLnJvd0hlaWdodDt2YXIgZSxyfSl9ZnVuY3Rpb24geih0 LGUpe2Zvcih2YXIgcj0wLG49ZS0xO24+PTA7bi0tKXIrPUQodFtuXSk7cmV0 dXJuIHJ9ZnVuY3Rpb24gSSh0LGUpe2Zvcih2YXIgcj0wLG49MDtuPHQucm93 cy5sZW5ndGgmJnQucm93c1tuXS5yb3dJbmRleDxlO24rKylyKz10LnJvd3Nb bl0ucm93SGVpZ2h0O3JldHVybiByfWZ1bmN0aW9uIEQodCl7dmFyIGU9dC5h bGxSb3dzSGVpZ2h0O2lmKHZvaWQgMCE9PWUpcmV0dXJuIGU7Zm9yKHZhciBy PTAsbj0wO248dC5yb3dzLmxlbmd0aDtuKyspcis9dC5yb3dzW25dLnJvd0hl aWdodDtyZXR1cm4gdC5hbGxSb3dzSGVpZ2h0PXIscn1mdW5jdGlvbiBSKHQp e3JldHVybiB0LnJvd0Jsb2Nrc1t0LnBhZ2VdfWUuZXhwb3J0cz1mdW5jdGlv bih0LGUpe3ZhciByPSF0Ll9jb250ZXh0LnN0YXRpY1Bsb3Qscz10Ll9mdWxs TGF5b3V0Ll9wYXBlci5zZWxlY3RBbGwoIi4iK24uY24udGFibGUpLmRhdGEo ZS5tYXAoZnVuY3Rpb24oZSl7dmFyIHI9aS51bndyYXAoZSkudHJhY2U7cmV0 dXJuIHUodCxyKX0pLGkua2V5RnVuKTtzLmV4aXQoKS5yZW1vdmUoKSxzLmVu dGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChuLmNuLnRhYmxlLCEwKS5hdHRy KCJvdmVyZmxvdyIsInZpc2libGUiKS5zdHlsZSgiYm94LXNpemluZyIsImNv bnRlbnQtYm94Iikuc3R5bGUoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5zdHls ZSgibGVmdCIsMCkuc3R5bGUoIm92ZXJmbG93IiwidmlzaWJsZSIpLnN0eWxl KCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIikuc3R5bGUoInBvaW50 ZXItZXZlbnRzIiwiYWxsIikscy5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7 cmV0dXJuIHQud2lkdGgrdC5zaXplLmwrdC5zaXplLnJ9KS5hdHRyKCJoZWln aHQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmhlaWdodCt0LnNpemUudCt0LnNp emUuYn0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInRy YW5zbGF0ZSgiK3QudHJhbnNsYXRlWCsiLCIrdC50cmFuc2xhdGVZKyIpIn0p O3ZhciBmPXMuc2VsZWN0QWxsKCIuIituLmNuLnRhYmxlQ29udHJvbFZpZXcp LmRhdGEoaS5yZXBlYXQsaS5rZXlGdW4pLHg9Zi5lbnRlcigpLmFwcGVuZCgi ZyIpLmNsYXNzZWQobi5jbi50YWJsZUNvbnRyb2xWaWV3LCEwKS5zdHlsZSgi Ym94LXNpemluZyIsImNvbnRlbnQtYm94Iik7ciYmeC5vbigibW91c2Vtb3Zl IixmdW5jdGlvbihlKXtmLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gZT09 PXR9KS5jYWxsKG0sdCl9KS5vbigibW91c2V3aGVlbCIsZnVuY3Rpb24oZSl7 aWYoIWUuc2Nyb2xsYmFyU3RhdGUud2hlZWxpbmcpe2Uuc2Nyb2xsYmFyU3Rh dGUud2hlZWxpbmc9ITA7dmFyIHI9ZS5zY3JvbGxZK2EuZXZlbnQuZGVsdGFZ O1ModCxmLG51bGwscikoZSl8fChhLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigp LGEuZXZlbnQucHJldmVudERlZmF1bHQoKSksZS5zY3JvbGxiYXJTdGF0ZS53 aGVlbGluZz0hMX19KS5jYWxsKG0sdCwhMCksZi5hdHRyKCJ0cmFuc2Zvcm0i LGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0LnNpemUubCsiICIr dC5zaXplLnQrIikifSk7dmFyIGI9Zi5zZWxlY3RBbGwoIi4iK24uY24uc2Ny b2xsQmFja2dyb3VuZCkuZGF0YShpLnJlcGVhdCxpLmtleUZ1bik7Yi5lbnRl cigpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQobi5jbi5zY3JvbGxCYWNrZ3Jv dW5kLCEwKS5hdHRyKCJmaWxsIiwibm9uZSIpLGIuYXR0cigid2lkdGgiLGZ1 bmN0aW9uKHQpe3JldHVybiB0LndpZHRofSkuYXR0cigiaGVpZ2h0IixmdW5j dGlvbih0KXtyZXR1cm4gdC5oZWlnaHR9KSxmLmVhY2goZnVuY3Rpb24oZSl7 by5zZXRDbGlwVXJsKGEuc2VsZWN0KHRoaXMpLGQodCxlKSx0KX0pO3ZhciBf PWYuc2VsZWN0QWxsKCIuIituLmNuLnlDb2x1bW4pLmRhdGEoZnVuY3Rpb24o dCl7cmV0dXJuIHQuY29sdW1uc30saS5rZXlGdW4pO18uZW50ZXIoKS5hcHBl bmQoImciKS5jbGFzc2VkKG4uY24ueUNvbHVtbiwhMCksXy5leGl0KCkucmVt b3ZlKCksXy5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiJ0 cmFuc2xhdGUoIit0LngrIiAwKSJ9KSxyJiZfLmNhbGwoYS5iZWhhdmlvci5k cmFnKCkub3JpZ2luKGZ1bmN0aW9uKGUpe3JldHVybiB3KGEuc2VsZWN0KHRo aXMpLGUsLW4udXBsaWZ0KSxsKHRoaXMpLGUuY2FsY2RhdGEuY29sdW1uRHJh Z0luUHJvZ3Jlc3M9ITAsbShmLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4g ZS5jYWxjZGF0YS5rZXk9PT10LmtleX0pLHQpLGV9KS5vbigiZHJhZyIsZnVu Y3Rpb24odCl7dmFyIGU9YS5zZWxlY3QodGhpcykscj1mdW5jdGlvbihlKXty ZXR1cm4odD09PWU/YS5ldmVudC54OmUueCkrZS5jb2x1bW5XaWR0aC8yfTt0 Lng9TWF0aC5tYXgoLW4ub3ZlcmRyYWcsTWF0aC5taW4odC5jYWxjZGF0YS53 aWR0aCtuLm92ZXJkcmFnLXQuY29sdW1uV2lkdGgsYS5ldmVudC54KSksdihf KS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2FsY2RhdGEua2V5PT09 dC5jYWxjZGF0YS5rZXl9KS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIo dCktcihlKX0pLmZvckVhY2goZnVuY3Rpb24oZSxyKXtlLnhJbmRleD1yLGUu eD10PT09ZT9lLng6ZS54U2NhbGUoZSl9KSxfLmZpbHRlcihmdW5jdGlvbihl KXtyZXR1cm4gdCE9PWV9KS50cmFuc2l0aW9uKCkuZWFzZShuLnRyYW5zaXRp b25FYXNlKS5kdXJhdGlvbihuLnRyYW5zaXRpb25EdXJhdGlvbikuYXR0cigi dHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrdC54 KyIgMCkifSksZS5jYWxsKGMpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0 ZSgiK3QueCsiIC0iK24udXBsaWZ0KyIgKSIpfSkub24oImRyYWdlbmQiLGZ1 bmN0aW9uKGUpe3ZhciByPWEuc2VsZWN0KHRoaXMpLG49ZS5jYWxjZGF0YTtl Lng9ZS54U2NhbGUoZSksZS5jYWxjZGF0YS5jb2x1bW5EcmFnSW5Qcm9ncmVz cz0hMSx3KHIsZSwwKSxmdW5jdGlvbih0LGUscil7dmFyIG49ZS5nZENvbHVt bnNPcmlnaW5hbE9yZGVyO2UuZ2RDb2x1bW5zLnNvcnQoZnVuY3Rpb24odCxl KXtyZXR1cm4gcltuLmluZGV4T2YodCldLXJbbi5pbmRleE9mKGUpXX0pLGUu Y29sdW1ub3JkZXI9cix0LmVtaXQoInBsb3RseV9yZXN0eWxlIil9KHQsbixu LmNvbHVtbnMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnhJbmRleH0pKX0p KSxfLmVhY2goZnVuY3Rpb24oZSl7by5zZXRDbGlwVXJsKGEuc2VsZWN0KHRo aXMpLGcodCxlKSx0KX0pO3ZhciBNPV8uc2VsZWN0QWxsKCIuIituLmNuLmNv bHVtbkJsb2NrKS5kYXRhKGguc3BsaXRUb1BhbmVscyxpLmtleUZ1bik7TS5l bnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi5jb2x1bW5CbG9jaywh MCkuYXR0cigiaWQiLGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleX0pLE0uc3R5 bGUoImN1cnNvciIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZHJhZ0hhbmRsZT8i ZXctcmVzaXplIjp0LmNhbGNkYXRhLnNjcm9sbGJhclN0YXRlLmJhcldpZ2ds ZVJvb20/Im5zLXJlc2l6ZSI6ImRlZmF1bHQifSk7dmFyIEU9TS5maWx0ZXIo VCksTD1NLmZpbHRlcihrKTtyJiZMLmNhbGwoYS5iZWhhdmlvci5kcmFnKCku b3JpZ2luKGZ1bmN0aW9uKHQpe3JldHVybiBhLmV2ZW50LnN0b3BQcm9wYWdh dGlvbigpLHR9KS5vbigiZHJhZyIsUyh0LGYsLTEpKS5vbigiZHJhZ2VuZCIs ZnVuY3Rpb24oKXt9KSkseSh0LGYsRSxNKSx5KHQsZixMLE0pO3ZhciBDPWYu c2VsZWN0QWxsKCIuIituLmNuLnNjcm9sbEFyZWFDbGlwKS5kYXRhKGkucmVw ZWF0LGkua2V5RnVuKTtDLmVudGVyKCkuYXBwZW5kKCJjbGlwUGF0aCIpLmNs YXNzZWQobi5jbi5zY3JvbGxBcmVhQ2xpcCwhMCkuYXR0cigiaWQiLGZ1bmN0 aW9uKGUpe3JldHVybiBkKHQsZSl9KTt2YXIgUD1DLnNlbGVjdEFsbCgiLiIr bi5jbi5zY3JvbGxBcmVhQ2xpcFJlY3QpLmRhdGEoaS5yZXBlYXQsaS5rZXlG dW4pO1AuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKG4uY24uc2Ny b2xsQXJlYUNsaXBSZWN0LCEwKS5hdHRyKCJ4Iiwtbi5vdmVyZHJhZykuYXR0 cigieSIsLW4udXBsaWZ0KS5hdHRyKCJmaWxsIiwibm9uZSIpLFAuYXR0cigi d2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiB0LndpZHRoKzIqbi5vdmVyZHJh Z30pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0 K24udXBsaWZ0fSksXy5zZWxlY3RBbGwoIi4iK24uY24uY29sdW1uQm91bmRh cnkpLmRhdGEoaS5yZXBlYXQsaS5rZXlGdW4pLmVudGVyKCkuYXBwZW5kKCJn IikuY2xhc3NlZChuLmNuLmNvbHVtbkJvdW5kYXJ5LCEwKTt2YXIgTz1fLnNl bGVjdEFsbCgiLiIrbi5jbi5jb2x1bW5Cb3VuZGFyeUNsaXBwYXRoKS5kYXRh KGkucmVwZWF0LGkua2V5RnVuKTtPLmVudGVyKCkuYXBwZW5kKCJjbGlwUGF0 aCIpLmNsYXNzZWQobi5jbi5jb2x1bW5Cb3VuZGFyeUNsaXBwYXRoLCEwKSxP LmF0dHIoImlkIixmdW5jdGlvbihlKXtyZXR1cm4gZyh0LGUpfSk7dmFyIHo9 Ty5zZWxlY3RBbGwoIi4iK24uY24uY29sdW1uQm91bmRhcnlSZWN0KS5kYXRh KGkucmVwZWF0LGkua2V5RnVuKTt6LmVudGVyKCkuYXBwZW5kKCJyZWN0Iiku Y2xhc3NlZChuLmNuLmNvbHVtbkJvdW5kYXJ5UmVjdCwhMCkuYXR0cigiZmls bCIsIm5vbmUiKSx6LmF0dHIoIndpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4g dC5jb2x1bW5XaWR0aCsyKnAodCl9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9u KHQpe3JldHVybiB0LmNhbGNkYXRhLmhlaWdodCsyKnAodCkrbi51cGxpZnR9 KS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4tcCh0KX0pLmF0dHIoInki LGZ1bmN0aW9uKHQpe3JldHVybi1wKHQpfSksQShudWxsLEwsZil9fSx7Ii4u Ly4uL2NvbXBvbmVudHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9k cmF3aW5nIjo2MTMsIi4uLy4uL2xpYiI6NzE3LCIuLi8uLi9saWIvZ3VwIjo3 MTUsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuL2NvbnN0YW50 cyI6MTI1MSwiLi9kYXRhX3ByZXBhcmF0aW9uX2hlbHBlciI6MTI1MiwiLi9k YXRhX3NwbGl0X2hlbHBlcnMiOjEyNTMsZDM6MTY1fV0sMTI1NzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy90 ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGE9dCgi Li4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0 ZUF0dHJzLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJp YnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMs cz10KCIuLi9waWUvYXR0cmlidXRlcyIpLGw9dCgiLi4vc3VuYnVyc3QvYXR0 cmlidXRlcyIpLGM9dCgiLi9jb25zdGFudHMiKSx1PXQoIi4uLy4uL2xpYi9l eHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz17bGFiZWxzOmwubGFiZWxz LHBhcmVudHM6bC5wYXJlbnRzLHZhbHVlczpsLnZhbHVlcyxicmFuY2h2YWx1 ZXM6bC5icmFuY2h2YWx1ZXMsY291bnQ6bC5jb3VudCxsZXZlbDpsLmxldmVs LG1heGRlcHRoOmwubWF4ZGVwdGgsdGlsaW5nOntwYWNraW5nOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJzcXVhcmlmeSIsImJpbmFyeSIsImRp Y2UiLCJzbGljZSIsInNsaWNlLWRpY2UiLCJkaWNlLXNsaWNlIl0sZGZsdDoi c3F1YXJpZnkiLGVkaXRUeXBlOiJwbG90In0sc3F1YXJpZnlyYXRpbzp7dmFs VHlwZToibnVtYmVyIixtaW46MSxkZmx0OjEsZWRpdFR5cGU6InBsb3QifSxm bGlwOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJ4IiwieSJdLGRmbHQ6 IiIsZWRpdFR5cGU6InBsb3QifSxwYWQ6e3ZhbFR5cGU6Im51bWJlciIsbWlu OjAsZGZsdDozLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6ImNhbGMifSxt YXJrZXI6dSh7cGFkOnt0Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRU eXBlOiJwbG90In0sbDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlw ZToicGxvdCJ9LHI6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6 InBsb3QifSxiOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJw bG90In0sZWRpdFR5cGU6ImNhbGMifSxjb2xvcnM6bC5tYXJrZXIuY29sb3Jz LGRlcHRoZmFkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlshMCwh MSwicmV2ZXJzZWQiXSxlZGl0VHlwZToic3R5bGUifSxsaW5lOmwubWFya2Vy LmxpbmUsZWRpdFR5cGU6ImNhbGMifSxpKCJtYXJrZXIiLHtjb2xvckF0dHI6 ImNvbG9ycyIsYW5pbTohMX0pKSxwYXRoYmFyOnt2aXNpYmxlOnt2YWxUeXBl OiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJwbG90In0sc2lkZTp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidG9wIiwiYm90dG9tIl0sZGZs dDoidG9wIixlZGl0VHlwZToicGxvdCJ9LGVkZ2VzaGFwZTp7dmFsVHlwZToi ZW51bWVyYXRlZCIsdmFsdWVzOlsiPiIsIjwiLCJ8IiwiLyIsIlxcIl0sZGZs dDoiPiIsZWRpdFR5cGU6InBsb3QifSx0aGlja25lc3M6e3ZhbFR5cGU6Im51 bWJlciIsbWluOjEyLGVkaXRUeXBlOiJwbG90In0sdGV4dGZvbnQ6dSh7fSxz LnRleHRmb250LHt9KSxlZGl0VHlwZToiY2FsYyJ9LHRleHQ6cy50ZXh0LHRl eHRpbmZvOmwudGV4dGluZm8sdGV4dHRlbXBsYXRlOmEoe2VkaXRUeXBlOiJw bG90In0se2tleXM6Yy5ldmVudERhdGFLZXlzLmNvbmNhdChbImxhYmVsIiwi dmFsdWUiXSl9KSxob3ZlcnRleHQ6cy5ob3ZlcnRleHQsaG92ZXJpbmZvOmwu aG92ZXJpbmZvLGhvdmVydGVtcGxhdGU6bih7fSx7a2V5czpjLmV2ZW50RGF0 YUtleXN9KSx0ZXh0Zm9udDpzLnRleHRmb250LGluc2lkZXRleHRmb250OnMu aW5zaWRldGV4dGZvbnQsb3V0c2lkZXRleHRmb250OnUoe30scy5vdXRzaWRl dGV4dGZvbnQse30pLHRleHRwb3NpdGlvbjp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsidG9wIGxlZnQiLCJ0b3AgY2VudGVyIiwidG9wIHJpZ2h0 IiwibWlkZGxlIGxlZnQiLCJtaWRkbGUgY2VudGVyIiwibWlkZGxlIHJpZ2h0 IiwiYm90dG9tIGxlZnQiLCJib3R0b20gY2VudGVyIiwiYm90dG9tIHJpZ2h0 Il0sZGZsdDoidG9wIGxlZnQiLGVkaXRUeXBlOiJwbG90In0sZG9tYWluOm8o e25hbWU6InRyZWVtYXAiLHRyYWNlOiEwLGVkaXRUeXBlOiJjYWxjIn0pfX0s eyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6NTk5 LCIuLi8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6 NzkwLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo4NDEsIi4u L3BpZS9hdHRyaWJ1dGVzIjoxMDk0LCIuLi9zdW5idXJzdC9hdHRyaWJ1dGVz IjoxMjMxLCIuL2NvbnN0YW50cyI6MTI2MH1dLDEyNTg6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvcGxvdHMi KTtyLm5hbWU9InRyZWVtYXAiLHIucGxvdD1mdW5jdGlvbih0LGUsYSxpKXtu LnBsb3RCYXNlUGxvdChyLm5hbWUsdCxlLGEsaSl9LHIuY2xlYW49ZnVuY3Rp b24odCxlLGEsaSl7bi5jbGVhbkJhc2VQbG90KHIubmFtZSx0LGUsYSxpKX19 LHsiLi4vLi4vcGxvdHMvcGxvdHMiOjgyNn1dLDEyNTk6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc3VuYnVyc3QvY2FsYyIp O3IuY2FsYz1mdW5jdGlvbih0LGUpe3JldHVybiBuLmNhbGModCxlKX0sci5j cm9zc1RyYWNlQ2FsYz1mdW5jdGlvbih0KXtyZXR1cm4gbi5fcnVuQ3Jvc3NU cmFjZUNhbGMoInRyZWVtYXAiLHQpfX0seyIuLi9zdW5idXJzdC9jYWxjIjox MjMzfV0sMTI2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9e0NMSUNLX1RSQU5TSVRJT05fVElNRTo3NTAsQ0xJQ0tfVFJBTlNJ VElPTl9FQVNJTkc6InBvbHkiLGV2ZW50RGF0YUtleXM6WyJjdXJyZW50UGF0 aCIsInJvb3QiLCJlbnRyeSIsInBlcmNlbnRSb290IiwicGVyY2VudEVudHJ5 IiwicGVyY2VudFBhcmVudCJdLGdhcFdpdGhQYXRoYmFyOjF9fSx7fV0sMTI2 MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKSxhPXQoIi4vYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vY29tcG9u ZW50cy9jb2xvciIpLG89dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuZGVmYXVs dHMscz10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVUZXh0LGw9dCgiLi4v YmFyL2NvbnN0YW50cyIpLlRFWFRQQUQsYz10KCIuLi8uLi9jb21wb25lbnRz L2NvbG9yc2NhbGUiKSx1PWMuaGFzQ29sb3JzY2FsZSxoPWMuaGFuZGxlRGVm YXVsdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGMpe2Z1bmN0aW9uIGYo cixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgcD1mKCJsYWJl bHMiKSxkPWYoInBhcmVudHMiKTtpZihwJiZwLmxlbmd0aCYmZCYmZC5sZW5n dGgpe3ZhciBnPWYoInZhbHVlcyIpO2cmJmcubGVuZ3RoP2YoImJyYW5jaHZh bHVlcyIpOmYoImNvdW50IiksZigibGV2ZWwiKSxmKCJtYXhkZXB0aCIpLCJz cXVhcmlmeSI9PT1mKCJ0aWxpbmcucGFja2luZyIpJiZmKCJ0aWxpbmcuc3F1 YXJpZnlyYXRpbyIpLGYoInRpbGluZy5mbGlwIiksZigidGlsaW5nLnBhZCIp O3ZhciB2PWYoInRleHQiKTtmKCJ0ZXh0dGVtcGxhdGUiKSxlLnRleHR0ZW1w bGF0ZXx8ZigidGV4dGluZm8iLEFycmF5LmlzQXJyYXkodik/InRleHQrbGFi ZWwiOiJsYWJlbCIpLGYoImhvdmVydGV4dCIpLGYoImhvdmVydGVtcGxhdGUi KTt2YXIgbT1mKCJwYXRoYmFyLnZpc2libGUiKTtzKHQsZSxjLGYsImF1dG8i LHtoYXNQYXRoYmFyOm0sbW9kdWxlSGFzU2VsZWN0ZWQ6ITEsbW9kdWxlSGFz VW5zZWxlY3RlZDohMSxtb2R1bGVIYXNDb25zdHJhaW46ITEsbW9kdWxlSGFz Q2xpcG9uYXhpczohMSxtb2R1bGVIYXNUZXh0YW5nbGU6ITEsbW9kdWxlSGFz SW5zaWRlYW5jaG9yOiExfSksZigidGV4dHBvc2l0aW9uIik7dmFyIHk9LTEh PT1lLnRleHRwb3NpdGlvbi5pbmRleE9mKCJib3R0b20iKTtmKCJtYXJrZXIu bGluZS53aWR0aCIpJiZmKCJtYXJrZXIubGluZS5jb2xvciIsYy5wYXBlcl9i Z2NvbG9yKTt2YXIgeD1mKCJtYXJrZXIuY29sb3JzIiksYj1lLl9oYXNDb2xv cnNjYWxlPXUodCwibWFya2VyIiwiY29sb3JzIil8fCh0Lm1hcmtlcnx8e30p LmNvbG9yYXhpcztiP2godCxlLGMsZix7cHJlZml4OiJtYXJrZXIuIixjTGV0 dGVyOiJjIn0pOmYoIm1hcmtlci5kZXB0aGZhZGUiLCEoeHx8W10pLmxlbmd0 aCk7dmFyIF89MiplLnRleHRmb250LnNpemU7ZigibWFya2VyLnBhZC50Iix5 P18vNDpfKSxmKCJtYXJrZXIucGFkLmwiLF8vNCksZigibWFya2VyLnBhZC5y IixfLzQpLGYoIm1hcmtlci5wYWQuYiIseT9fOl8vNCksYiYmaCh0LGUsYyxm LHtwcmVmaXg6Im1hcmtlci4iLGNMZXR0ZXI6ImMifSksZS5faG92ZXJlZD17 bWFya2VyOntsaW5lOnt3aWR0aDoyLGNvbG9yOmkuY29udHJhc3QoYy5wYXBl cl9iZ2NvbG9yKX19fSxtJiYoZigicGF0aGJhci50aGlja25lc3MiLGUucGF0 aGJhci50ZXh0Zm9udC5zaXplKzIqbCksZigicGF0aGJhci5zaWRlIiksZigi cGF0aGJhci5lZGdlc2hhcGUiKSksbyhlLGMsZiksZS5fbGVuZ3RoPW51bGx9 ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3Ii OjU5MiwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4uLy4u L2xpYiI6NzE3LCIuLi8uLi9wbG90cy9kb21haW4iOjc5MCwiLi4vYmFyL2Nv bnN0YW50cyI6ODU4LCIuLi9iYXIvZGVmYXVsdHMiOjg2MCwiLi9hdHRyaWJ1 dGVzIjoxMjU3fV0sMTI2MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9j b21wb25lbnRzL2RyYXdpbmciKSxvPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91 dGlscyIpLHM9dCgiLi9wYXJ0aXRpb24iKSxsPXQoIi4vc3R5bGUiKS5zdHls ZU9uZSxjPXQoIi4vY29uc3RhbnRzIiksdT10KCIuLi9zdW5idXJzdC9oZWxw ZXJzIiksaD10KCIuLi9zdW5idXJzdC9meCIpO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscixmLHApe3ZhciBkPXAuYmFyRGlmWSxnPXAud2lkdGgsdj1wLmhl aWdodCxtPXAudmlld1gseT1wLnZpZXdZLHg9cC5wYXRoU2xpY2UsYj1wLnRv TW92ZUluc2lkZVNsaWNlLF89cC5zdHJUcmFuc2Zvcm0sdz1wLmhhc1RyYW5z aXRpb24saz1wLmhhbmRsZVNsaWNlc0V4aXQsVD1wLm1ha2VVcGRhdGVTbGlj ZUludGVycG9sYXRvcixNPXAubWFrZVVwZGF0ZVRleHRJbnRlcnBvbGF0b3Is QT17fSxTPXQuX2Z1bGxMYXlvdXQsRT1lWzBdLEw9RS50cmFjZSxDPUUuaGll cmFyY2h5LFA9Zy9MLl9lbnRyeURlcHRoLE89dS5saXN0UGF0aChyLmRhdGEs ImlkIiksej1zKEMuY29weSgpLFtnLHZdLHtwYWNraW5nOiJkaWNlIixwYWQ6 e2lubmVyOjAsdG9wOjAsbGVmdDowLHJpZ2h0OjAsYm90dG9tOjB9fSkuZGVz Y2VuZGFudHMoKTsoej16LmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT1PLmlu ZGV4T2YodC5kYXRhLmlkKTtyZXR1cm4tMSE9PWUmJih0LngwPVAqZSx0Lngx PVAqKGUrMSksdC55MD1kLHQueTE9ZCt2LHQub25QYXRoYmFyPSEwLCEwKX0p KS5yZXZlcnNlKCksKGY9Zi5kYXRhKHosdS5nZXRQdElkKSkuZW50ZXIoKS5h cHBlbmQoImciKS5jbGFzc2VkKCJwYXRoYmFyIiwhMCksayhmLCEwLEEsW2cs dl0seCksZi5vcmRlcigpO3ZhciBJPWY7dyYmKEk9SS50cmFuc2l0aW9uKCku ZWFjaCgiZW5kIixmdW5jdGlvbigpe3ZhciBlPW4uc2VsZWN0KHRoaXMpO3Uu c2V0U2xpY2VDdXJzb3IoZSx0LHtoaWRlT25Sb290OiExLGhpZGVPbkxlYXZl czohMSxpc1RyYW5zaXRpb25pbmc6ITF9KX0pKSxJLmVhY2goZnVuY3Rpb24o cyl7cy5faG92ZXJYPW0ocy54MS1NYXRoLm1pbihnLHYpLzIpLHMuX2hvdmVy WT15KHMueTEtdi8yKTt2YXIgZj1uLnNlbGVjdCh0aGlzKSxwPWEuZW5zdXJl U2luZ2xlKGYsInBhdGgiLCJzdXJmYWNlIixmdW5jdGlvbih0KXt0LnN0eWxl KCJwb2ludGVyLWV2ZW50cyIsImFsbCIpfSk7dz9wLnRyYW5zaXRpb24oKS5h dHRyVHdlZW4oImQiLGZ1bmN0aW9uKHQpe3ZhciBlPVQodCwhMCxBLFtnLHZd KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHgoZSh0KSl9fSk6cC5hdHRy KCJkIix4KSxmLmNhbGwoaCxyLHQsZSx7c3R5bGVPbmU6bCxldmVudERhdGFL ZXlzOmMuZXZlbnREYXRhS2V5cyx0cmFuc2l0aW9uVGltZTpjLkNMSUNLX1RS QU5TSVRJT05fVElNRSx0cmFuc2l0aW9uRWFzaW5nOmMuQ0xJQ0tfVFJBTlNJ VElPTl9FQVNJTkd9KS5jYWxsKHUuc2V0U2xpY2VDdXJzb3IsdCx7aGlkZU9u Um9vdDohMSxoaWRlT25MZWF2ZXM6ITEsaXNUcmFuc2l0aW9uaW5nOnQuX3Ry YW5zaXRpb25pbmd9KSxwLmNhbGwobCxzLEwse2hvdmVyZWQ6ITF9KSxzLl90 ZXh0PSh1LmdldFB0TGFiZWwocyl8fCIiKS5zcGxpdCgiPGJyPiIpLmpvaW4o IiAiKXx8IiI7dmFyIGQ9YS5lbnN1cmVTaW5nbGUoZiwiZyIsInNsaWNldGV4 dCIpLGs9YS5lbnN1cmVTaW5nbGUoZCwidGV4dCIsIiIsZnVuY3Rpb24odCl7 dC5hdHRyKCJkYXRhLW5vdGV4IiwxKX0pLEU9YS5lbnN1cmVVbmlmb3JtRm9u dFNpemUodCx1LmRldGVybWluZVRleHRGb250KEwscyxTLmZvbnQse29uUGF0 aGJhcjohMH0pKTtrLnRleHQocy5fdGV4dHx8IiAiKS5jbGFzc2VkKCJzbGlj ZXRleHQiLCEwKS5hdHRyKCJ0ZXh0LWFuY2hvciIsInN0YXJ0IikuY2FsbChp LmZvbnQsRSkuY2FsbChvLmNvbnZlcnRUb1RzcGFucyx0KSxzLnRleHRCQj1p LmJCb3goay5ub2RlKCkpLHMudHJhbnNmb3JtPWIocyx7Zm9udFNpemU6RS5z aXplLG9uUGF0aGJhcjohMH0pLHMudHJhbnNmb3JtLmZvbnRTaXplPUUuc2l6 ZSx3P2sudHJhbnNpdGlvbigpLmF0dHJUd2VlbigidHJhbnNmb3JtIixmdW5j dGlvbih0KXt2YXIgZT1NKHQsITAsQSxbZyx2XSk7cmV0dXJuIGZ1bmN0aW9u KHQpe3JldHVybiBfKGUodCkpfX0pOmsuYXR0cigidHJhbnNmb3JtIixfKHMp KX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4v bGliIjo3MTcsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi9z dW5idXJzdC9meCI6MTIzNiwiLi4vc3VuYnVyc3QvaGVscGVycyI6MTIzNywi Li9jb25zdGFudHMiOjEyNjAsIi4vcGFydGl0aW9uIjoxMjY3LCIuL3N0eWxl IjoxMjY5LGQzOjE2NX1dLDEyNjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4v Li4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi8uLi9saWIvc3ZnX3Rl eHRfdXRpbHMiKSxzPXQoIi4vcGFydGl0aW9uIiksbD10KCIuL3N0eWxlIiku c3R5bGVPbmUsYz10KCIuL2NvbnN0YW50cyIpLHU9dCgiLi4vc3VuYnVyc3Qv aGVscGVycyIpLGg9dCgiLi4vc3VuYnVyc3QvZngiKSxmPXQoIi4uL3N1bmJ1 cnN0L3Bsb3QiKS5mb3JtYXRTbGljZUxhYmVsO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscixwLGQpe3ZhciBnPWQud2lkdGgsdj1kLmhlaWdodCxtPWQudmll d1gseT1kLnZpZXdZLHg9ZC5wYXRoU2xpY2UsYj1kLnRvTW92ZUluc2lkZVNs aWNlLF89ZC5zdHJUcmFuc2Zvcm0sdz1kLmhhc1RyYW5zaXRpb24saz1kLmhh bmRsZVNsaWNlc0V4aXQsVD1kLm1ha2VVcGRhdGVTbGljZUludGVycG9sYXRv cixNPWQubWFrZVVwZGF0ZVRleHRJbnRlcnBvbGF0b3IsQT1kLnByZXZFbnRy eSxTPXQuX2Z1bGxMYXlvdXQsRT1lWzBdLnRyYWNlLEw9LTEhPT1FLnRleHRw b3NpdGlvbi5pbmRleE9mKCJsZWZ0IiksQz0tMSE9PUUudGV4dHBvc2l0aW9u LmluZGV4T2YoInJpZ2h0IiksUD0tMSE9PUUudGV4dHBvc2l0aW9uLmluZGV4 T2YoImJvdHRvbSIpLE89IVAmJiFFLm1hcmtlci5wYWQudHx8UCYmIUUubWFy a2VyLnBhZC5iLHo9cyhyLFtnLHZdLHtwYWNraW5nOkUudGlsaW5nLnBhY2tp bmcsc3F1YXJpZnlyYXRpbzpFLnRpbGluZy5zcXVhcmlmeXJhdGlvLGZsaXBY OkUudGlsaW5nLmZsaXAuaW5kZXhPZigieCIpPi0xLGZsaXBZOkUudGlsaW5n LmZsaXAuaW5kZXhPZigieSIpPi0xLHBhZDp7aW5uZXI6RS50aWxpbmcucGFk LHRvcDpFLm1hcmtlci5wYWQudCxsZWZ0OkUubWFya2VyLnBhZC5sLHJpZ2h0 OkUubWFya2VyLnBhZC5yLGJvdHRvbTpFLm1hcmtlci5wYWQuYn19KS5kZXNj ZW5kYW50cygpLEk9MS8wLEQ9LTEvMDt6LmZvckVhY2goZnVuY3Rpb24odCl7 dmFyIGU9dC5kZXB0aDtlPj1FLl9tYXhEZXB0aD8odC54MD10LngxPSh0Lngw K3QueDEpLzIsdC55MD10LnkxPSh0LnkwK3QueTEpLzIpOihJPU1hdGgubWlu KEksZSksRD1NYXRoLm1heChELGUpKX0pLHA9cC5kYXRhKHosdS5nZXRQdElk KSxFLl9tYXhWaXNpYmxlTGF5ZXJzPWlzRmluaXRlKEQpP0QtSSsxOjAscC5l bnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNsaWNlIiwhMCksayhwLCEx LHt9LFtnLHZdLHgpLHAub3JkZXIoKTt2YXIgUj1udWxsO2lmKHcmJkEpe3Zh ciBGPXUuZ2V0UHRJZChBKTtwLmVhY2goZnVuY3Rpb24odCl7bnVsbD09PVIm JnUuZ2V0UHRJZCh0KT09PUYmJihSPXt4MDp0LngwLHgxOnQueDEseTA6dC55 MCx5MTp0LnkxfSl9KX12YXIgQj1mdW5jdGlvbigpe3JldHVybiBSfHx7eDA6 MCx4MTpnLHkwOjAseTE6dn19LE49cDtyZXR1cm4gdyYmKE49Ti50cmFuc2l0 aW9uKCkuZWFjaCgiZW5kIixmdW5jdGlvbigpe3ZhciBlPW4uc2VsZWN0KHRo aXMpO3Uuc2V0U2xpY2VDdXJzb3IoZSx0LHtoaWRlT25Sb290OiEwLGhpZGVP bkxlYXZlczohMSxpc1RyYW5zaXRpb25pbmc6ITF9KX0pKSxOLmVhY2goZnVu Y3Rpb24ocyl7dmFyIHA9dS5pc0hlYWRlcihzLEUpO3MuX2hvdmVyWD1tKHMu eDEtRS5tYXJrZXIucGFkLnIpLHMuX2hvdmVyWT15KFA/cy55MS1FLm1hcmtl ci5wYWQuYi8yOnMueTArRS5tYXJrZXIucGFkLnQvMik7dmFyIGQ9bi5zZWxl Y3QodGhpcyksaz1hLmVuc3VyZVNpbmdsZShkLCJwYXRoIiwic3VyZmFjZSIs ZnVuY3Rpb24odCl7dC5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKX0p O3c/ay50cmFuc2l0aW9uKCkuYXR0clR3ZWVuKCJkIixmdW5jdGlvbih0KXt2 YXIgZT1UKHQsITEsQigpLFtnLHZdKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0 dXJuIHgoZSh0KSl9fSk6ay5hdHRyKCJkIix4KSxkLmNhbGwoaCxyLHQsZSx7 c3R5bGVPbmU6bCxldmVudERhdGFLZXlzOmMuZXZlbnREYXRhS2V5cyx0cmFu c2l0aW9uVGltZTpjLkNMSUNLX1RSQU5TSVRJT05fVElNRSx0cmFuc2l0aW9u RWFzaW5nOmMuQ0xJQ0tfVFJBTlNJVElPTl9FQVNJTkd9KS5jYWxsKHUuc2V0 U2xpY2VDdXJzb3IsdCx7aXNUcmFuc2l0aW9uaW5nOnQuX3RyYW5zaXRpb25p bmd9KSxrLmNhbGwobCxzLEUse2hvdmVyZWQ6ITF9KSxzLngwPT09cy54MXx8 cy55MD09PXMueTE/cy5fdGV4dD0iIjpzLl90ZXh0PXA/Tz8iIjp1LmdldFB0 TGFiZWwocyl8fCIiOmYocyxyLEUsZSxTKXx8IiI7dmFyIEE9YS5lbnN1cmVT aW5nbGUoZCwiZyIsInNsaWNldGV4dCIpLHo9YS5lbnN1cmVTaW5nbGUoQSwi dGV4dCIsIiIsZnVuY3Rpb24odCl7dC5hdHRyKCJkYXRhLW5vdGV4IiwxKX0p LEk9YS5lbnN1cmVVbmlmb3JtRm9udFNpemUodCx1LmRldGVybWluZVRleHRG b250KEUscyxTLmZvbnQpKTt6LnRleHQocy5fdGV4dHx8IiAiKS5jbGFzc2Vk KCJzbGljZXRleHQiLCEwKS5hdHRyKCJ0ZXh0LWFuY2hvciIsQz8iZW5kIjpM fHxwPyJzdGFydCI6Im1pZGRsZSIpLmNhbGwoaS5mb250LEkpLmNhbGwoby5j b252ZXJ0VG9Uc3BhbnMsdCkscy50ZXh0QkI9aS5iQm94KHoubm9kZSgpKSxz LnRyYW5zZm9ybT1iKHMse2ZvbnRTaXplOkkuc2l6ZSxpc0hlYWRlcjpwfSks cy50cmFuc2Zvcm0uZm9udFNpemU9SS5zaXplLHc/ei50cmFuc2l0aW9uKCku YXR0clR3ZWVuKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3ZhciBlPU0odCwh MSxCKCksW2csdl0pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gXyhlKHQp KX19KTp6LmF0dHIoInRyYW5zZm9ybSIsXyhzKSl9KSxSfX0seyIuLi8uLi9j b21wb25lbnRzL2RyYXdpbmciOjYxMywiLi4vLi4vbGliIjo3MTcsIi4uLy4u L2xpYi9zdmdfdGV4dF91dGlscyI6NzQxLCIuLi9zdW5idXJzdC9meCI6MTIz NiwiLi4vc3VuYnVyc3QvaGVscGVycyI6MTIzNywiLi4vc3VuYnVyc3QvcGxv dCI6MTI0MSwiLi9jb25zdGFudHMiOjEyNjAsIi4vcGFydGl0aW9uIjoxMjY3 LCIuL3N0eWxlIjoxMjY5LGQzOjE2NX1dLDEyNjQ6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIs bmFtZToidHJlZW1hcCIsYmFzZVBsb3RNb2R1bGU6dCgiLi9iYXNlX3Bsb3Qi KSxjYXRlZ29yaWVzOltdLGFuaW1hdGFibGU6ITAsYXR0cmlidXRlczp0KCIu L2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0 dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksc3Vw cGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxj OnQoIi4vY2FsYyIpLmNhbGMsY3Jvc3NUcmFjZUNhbGM6dCgiLi9jYWxjIiku Y3Jvc3NUcmFjZUNhbGMscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0 eWxlIikuc3R5bGUsY29sb3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29s b3JiYXIiKSxtZXRhOnt9fX0seyIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJh ciI6MTEzOCwiLi9hdHRyaWJ1dGVzIjoxMjU3LCIuL2Jhc2VfcGxvdCI6MTI1 OCwiLi9jYWxjIjoxMjU5LCIuL2RlZmF1bHRzIjoxMjYxLCIuL2xheW91dF9h dHRyaWJ1dGVzIjoxMjY1LCIuL2xheW91dF9kZWZhdWx0cyI6MTI2NiwiLi9w bG90IjoxMjY4LCIuL3N0eWxlIjoxMjY5fV0sMTI2NTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3RyZWVtYXBjb2xvcndheTp7 dmFsVHlwZToiY29sb3JsaXN0IixlZGl0VHlwZToiY2FsYyJ9LGV4dGVuZHRy ZWVtYXBjb2xvcnM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5 cGU6ImNhbGMifX19LHt9XSwxMjY2OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9sYXlvdXRfYXR0 cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIo cixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX1yKCJ0cmVlbWFwY29s b3J3YXkiLGUuY29sb3J3YXkpLHIoImV4dGVuZHRyZWVtYXBjb2xvcnMiKX19 LHsiLi4vLi4vbGliIjo3MTcsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjEyNjV9 XSwxMjY3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo ImQzLWhpZXJhcmNoeSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFy IGEsaT1yLmZsaXBYLG89ci5mbGlwWSxzPSJkaWNlLXNsaWNlIj09PXIucGFj a2luZyxsPXIucGFkW28/ImJvdHRvbSI6InRvcCJdLGM9ci5wYWRbaT8icmln aHQiOiJsZWZ0Il0sdT1yLnBhZFtpPyJsZWZ0IjoicmlnaHQiXSxoPXIucGFk W28/InRvcCI6ImJvdHRvbSJdO3MmJihhPWMsYz1sLGw9YSxhPXUsdT1oLGg9 YSk7dmFyIGY9bi50cmVlbWFwKCkudGlsZShmdW5jdGlvbih0LGUpe3N3aXRj aCh0KXtjYXNlInNxdWFyaWZ5IjpyZXR1cm4gbi50cmVlbWFwU3F1YXJpZnku cmF0aW8oZSk7Y2FzZSJiaW5hcnkiOnJldHVybiBuLnRyZWVtYXBCaW5hcnk7 Y2FzZSJkaWNlIjpyZXR1cm4gbi50cmVlbWFwRGljZTtjYXNlInNsaWNlIjpy ZXR1cm4gbi50cmVlbWFwU2xpY2U7ZGVmYXVsdDpyZXR1cm4gbi50cmVlbWFw U2xpY2VEaWNlfX0oci5wYWNraW5nLHIuc3F1YXJpZnlyYXRpbykpLnBhZGRp bmdJbm5lcihyLnBhZC5pbm5lcikucGFkZGluZ0xlZnQoYykucGFkZGluZ1Jp Z2h0KHUpLnBhZGRpbmdUb3AobCkucGFkZGluZ0JvdHRvbShoKS5zaXplKHM/ W2VbMV0sZVswXV06ZSkodCk7cmV0dXJuKHN8fGl8fG8pJiZmdW5jdGlvbiB0 KGUscixuKXt2YXIgYTtuLnN3YXBYWSYmKGE9ZS54MCxlLngwPWUueTAsZS55 MD1hLGE9ZS54MSxlLngxPWUueTEsZS55MT1hKTtuLmZsaXBYJiYoYT1lLngw LGUueDA9clswXS1lLngxLGUueDE9clswXS1hKTtuLmZsaXBZJiYoYT1lLnkw LGUueTA9clsxXS1lLnkxLGUueTE9clsxXS1hKTt2YXIgaT1lLmNoaWxkcmVu O2lmKGkpZm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspdChpW29dLHIsbil9 KGYsZSx7c3dhcFhZOnMsZmxpcFg6aSxmbGlwWTpvfSksZn19LHsiZDMtaGll cmFyY2h5IjoxNTl9XSwxMjY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoImQzIiksYT10KCIuLi9zdW5idXJzdC9oZWxwZXJzIiks aT10KCIuLi8uLi9saWIiKSxvPXQoIi4uL2Jhci9jb25zdGFudHMiKS5URVhU UEFELHM9dCgiLi4vYmFyL3Bsb3QiKS50b01vdmVJbnNpZGVCYXIsbD10KCIu Li9iYXIvdW5pZm9ybV90ZXh0IiksYz1sLnJlY29yZE1pblRleHRTaXplLHU9 bC5jbGVhck1pblRleHRTaXplLGg9dCgiLi4vYmFyL3N0eWxlIikucmVzaXpl VGV4dCxmPXQoIi4vY29uc3RhbnRzIikscD10KCIuL2RyYXdfZGVzY2VuZGFu dHMiKSxkPXQoIi4vZHJhd19hbmNlc3RvcnMiKTtmdW5jdGlvbiBnKHQpe3Jl dHVybiBhLmlzSGllcmFyY2h5Um9vdCh0KT8iIjphLmdldFB0SWQodCl9ZnVu Y3Rpb24gdih0LGUscixsKXt2YXIgdT10Ll9mdWxsTGF5b3V0LGg9ZVswXSx2 PWgudHJhY2UsbT1oLmhpZXJhcmNoeSx5PWEuZmluZEVudHJ5V2l0aExldmVs KG0sdi5sZXZlbCkseD1uLnNlbGVjdChyKSxiPXguc2VsZWN0QWxsKCJnLnBh dGhiYXIiKSxfPXguc2VsZWN0QWxsKCJnLnNsaWNlIik7aWYoIXkpcmV0dXJu IGIucmVtb3ZlKCksdm9pZCBfLnJlbW92ZSgpO3ZhciB3PWEuaXNIaWVyYXJj aHlSb290KHkpLGs9IXUudW5pZm9ybXRleHQubW9kZSYmYS5oYXNUcmFuc2l0 aW9uKGwpLFQ9YS5nZXRNYXhEZXB0aCh2KSxNPXUuX3NpemUsQT12LmRvbWFp bixTPU0udyooQS54WzFdLUEueFswXSksRT1NLmgqKEEueVsxXS1BLnlbMF0p LEw9UyxDPXYucGF0aGJhci50aGlja25lc3MsUD12Lm1hcmtlci5saW5lLndp ZHRoK2YuZ2FwV2l0aFBhdGhiYXIsTz12LnBhdGhiYXIudmlzaWJsZT92LnBh dGhiYXIuc2lkZS5pbmRleE9mKCJib3R0b20iKT4tMT9FK1A6LShDK1ApOjAs ej17eDA6TCx4MTpMLHkwOk8seTE6TytDfSxJPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj12LnRpbGluZy5wYWQsYT1mdW5jdGlvbih0KXtyZXR1cm4gdC1uPD1l LngwfSxpPWZ1bmN0aW9uKHQpe3JldHVybiB0K24+PWUueDF9LG89ZnVuY3Rp b24odCl7cmV0dXJuIHQtbjw9ZS55MH0scz1mdW5jdGlvbih0KXtyZXR1cm4g dCtuPj1lLnkxfTtyZXR1cm57eDA6YSh0LngwLW4pPzA6aSh0LngwLW4pP3Jb MF06dC54MCx4MTphKHQueDErbik/MDppKHQueDErbik/clswXTp0LngxLHkw Om8odC55MC1uKT8wOnModC55MC1uKT9yWzFdOnQueTAseTE6byh0LnkxK24p PzA6cyh0LnkxK24pP3JbMV06dC55MX19LEQ9bnVsbCxSPXt9LEY9e30sQj1u dWxsLE49ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT9SW2codCldOkZbZyh0KV19 LGo9ZnVuY3Rpb24odCxlLHIsbil7aWYoZSlyZXR1cm4gUltnKG0pXXx8ejt2 YXIgYT1GW3YubGV2ZWxdfHxyO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4g dC5kYXRhLmRlcHRoLXkuZGF0YS5kZXB0aDxUfSh0KT9JKHQsYSxuKTp7fX07 aC5oYXNNdWx0aXBsZVJvb3RzJiZ3JiZUKyssdi5fbWF4RGVwdGg9VCx2Ll9i YWNrZ3JvdW5kQ29sb3I9dS5wYXBlcl9iZ2NvbG9yLHYuX2VudHJ5RGVwdGg9 eS5kYXRhLmRlcHRoLHYuX2F0Um9vdExldmVsPXc7dmFyIFY9LVMvMitNLmwr TS53KihBLnhbMV0rQS54WzBdKS8yLFU9LUUvMitNLnQrTS5oKigxLShBLnlb MV0rQS55WzBdKS8yKSxxPWZ1bmN0aW9uKHQpe3JldHVybiBWK3R9LEg9ZnVu Y3Rpb24odCl7cmV0dXJuIFUrdH0sRz1IKDApLFk9cSgwKSxXPWZ1bmN0aW9u KHQpe3JldHVybiBZK3R9LFg9ZnVuY3Rpb24odCl7cmV0dXJuIEcrdH07ZnVu Y3Rpb24gWih0LGUpe3JldHVybiB0KyIsIitlfXZhciBKPVcoMCksSz1mdW5j dGlvbih0KXt0Lng9TWF0aC5tYXgoSix0LngpfSxRPXYucGF0aGJhci5lZGdl c2hhcGUsJD1mdW5jdGlvbih0LGUpe3ZhciByPXQueDAsbj10LngxLGE9dC55 MCxpPXQueTEsbD10LnRleHRCQixoPWZ1bmN0aW9uKHQpe3JldHVybi0xIT09 di50ZXh0cG9zaXRpb24uaW5kZXhPZih0KX0sZj1oKCJib3R0b20iKSxwPWgo InRvcCIpfHxlLmlzSGVhZGVyJiYhZj8ic3RhcnQiOmY/ImVuZCI6Im1pZGRs ZSIsZD1oKCJyaWdodCIpLGc9aCgibGVmdCIpfHxlLm9uUGF0aGJhcj8tMTpk PzE6MCxtPXYubWFya2VyLnBhZDtpZihlLmlzSGVhZGVyKXtpZigocis9bS5s LW8pPj0obi09bS5yLW8pKXt2YXIgeT0ocituKS8yO3I9eSxuPXl9dmFyIHg7 Zj9hPCh4PWktbS5iKSYmeDxpJiYoYT14KTphPCh4PWErbS50KSYmeDxpJiYo aT14KX12YXIgYj1zKHIsbixhLGksbCx7aXNIb3Jpem9udGFsOiExLGNvbnN0 cmFpbmVkOiEwLGFuZ2xlOjAsYW5jaG9yOnAsbGVmdFRvUmlnaHQ6Z30pO3Jl dHVybiBiLmZvbnRTaXplPWUuZm9udFNpemUsYi50YXJnZXRYPXEoYi50YXJn ZXRYKSxiLnRhcmdldFk9SChiLnRhcmdldFkpLGlzTmFOKGIudGFyZ2V0WCl8 fGlzTmFOKGIudGFyZ2V0WSk/e306KHIhPT1uJiZhIT09aSYmYyh2LnR5cGUs Yix1KSx7c2NhbGU6Yi5zY2FsZSxyb3RhdGU6Yi5yb3RhdGUsdGV4dFg6Yi50 ZXh0WCx0ZXh0WTpiLnRleHRZLGFuY2hvclg6Yi5hbmNob3JYLGFuY2hvclk6 Yi5hbmNob3JZLHRhcmdldFg6Yi50YXJnZXRYLHRhcmdldFk6Yi50YXJnZXRZ fSl9LHR0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49MCxhPXQ7IXImJm48 VDspbisrLChhPWEucGFyZW50KT9yPU4oYSxlKTpuPVQ7cmV0dXJuIHJ8fHt9 fSxldD1mdW5jdGlvbih0LGUscixhKXt2YXIgbyxzPU4odCxlKTtpZihzKW89 cztlbHNlIGlmKGUpbz16O2Vsc2UgaWYoRClpZih0LnBhcmVudCl7dmFyIGw9 Qnx8cjtsJiYhZT9vPUkodCxsLGEpOihvPXt9LGkuZXh0ZW5kRmxhdChvLHR0 KHQsZSkpKX1lbHNlIG89dDtlbHNlIG89e307cmV0dXJuIG4uaW50ZXJwb2xh dGUobyx7eDA6dC54MCx4MTp0LngxLHkwOnQueTAseTE6dC55MX0pfSxydD1m dW5jdGlvbih0LGUscixvKXt2YXIgcz1OKHQsZSksbD17fSxoPWoodCxlLHIs byk7aS5leHRlbmRGbGF0KGwse3RyYW5zZm9ybTokKHt4MDpoLngwLHgxOmgu eDEseTA6aC55MCx5MTpoLnkxLHRleHRCQjp0LnRleHRCQixfdGV4dDp0Ll90 ZXh0fSx7aXNIZWFkZXI6YS5pc0hlYWRlcih0LHYpfSl9KSxzP2w9czp0LnBh cmVudCYmaS5leHRlbmRGbGF0KGwsdHQodCxlKSk7dmFyIGY9dC50cmFuc2Zv cm07cmV0dXJuIHQueDAhPT10LngxJiZ0LnkwIT09dC55MSYmYyh2LnR5cGUs Zix1KSxuLmludGVycG9sYXRlKGwse3RyYW5zZm9ybTp7c2NhbGU6Zi5zY2Fs ZSxyb3RhdGU6Zi5yb3RhdGUsdGV4dFg6Zi50ZXh0WCx0ZXh0WTpmLnRleHRZ LGFuY2hvclg6Zi5hbmNob3JYLGFuY2hvclk6Zi5hbmNob3JZLHRhcmdldFg6 Zi50YXJnZXRYLHRhcmdldFk6Zi50YXJnZXRZfX0pfSxudD1mdW5jdGlvbih0 LGUscixhLGkpe3ZhciBvPWFbMF0scz1hWzFdO2s/dC5leGl0KCkudHJhbnNp dGlvbigpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKTt0 LnNlbGVjdCgicGF0aC5zdXJmYWNlIikudHJhbnNpdGlvbigpLmF0dHJUd2Vl bigiZCIsZnVuY3Rpb24odCl7dmFyIHI9ZnVuY3Rpb24odCxlLHIsYSl7dmFy IGksbz1OKHQsZSk7aWYoZSlpPXo7ZWxzZXt2YXIgcz1OKHksZSk7aT1zP0ko dCxzLGEpOnt9fXJldHVybiBuLmludGVycG9sYXRlKG8saSl9KHQsZSwwLFtv LHNdKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkocih0KSl9fSksdC5z ZWxlY3QoImcuc2xpY2V0ZXh0IikuYXR0cigib3BhY2l0eSIsMCl9KS5yZW1v dmUoKTp0LmV4aXQoKS5yZW1vdmUoKX0sYXQ9ZnVuY3Rpb24odCl7dmFyIGU9 dC50cmFuc2Zvcm07cmV0dXJuIHQueDAhPT10LngxJiZ0LnkwIT09dC55MSYm Yyh2LnR5cGUsZSx1KSxpLmdldFRleHRUcmFuc2Zvcm0oe3RleHRYOmUudGV4 dFgsdGV4dFk6ZS50ZXh0WSxhbmNob3JYOmUuYW5jaG9yWCxhbmNob3JZOmUu YW5jaG9yWSx0YXJnZXRYOmUudGFyZ2V0WCx0YXJnZXRZOmUudGFyZ2V0WSxz Y2FsZTplLnNjYWxlLHJvdGF0ZTplLnJvdGF0ZX0pfTtrJiYoYi5lYWNoKGZ1 bmN0aW9uKHQpe1JbZyh0KV09e3gwOnQueDAseDE6dC54MSx5MDp0LnkwLHkx OnQueTF9LHQudHJhbnNmb3JtJiYoUltnKHQpXS50cmFuc2Zvcm09e3RleHRY OnQudHJhbnNmb3JtLnRleHRYLHRleHRZOnQudHJhbnNmb3JtLnRleHRZLGFu Y2hvclg6dC50cmFuc2Zvcm0uYW5jaG9yWCxhbmNob3JZOnQudHJhbnNmb3Jt LmFuY2hvclksdGFyZ2V0WDp0LnRyYW5zZm9ybS50YXJnZXRYLHRhcmdldFk6 dC50cmFuc2Zvcm0udGFyZ2V0WSxzY2FsZTp0LnRyYW5zZm9ybS5zY2FsZSxy b3RhdGU6dC50cmFuc2Zvcm0ucm90YXRlfSl9KSxfLmVhY2goZnVuY3Rpb24o dCl7RltnKHQpXT17eDA6dC54MCx4MTp0LngxLHkwOnQueTAseTE6dC55MX0s dC50cmFuc2Zvcm0mJihGW2codCldLnRyYW5zZm9ybT17dGV4dFg6dC50cmFu c2Zvcm0udGV4dFgsdGV4dFk6dC50cmFuc2Zvcm0udGV4dFksYW5jaG9yWDp0 LnRyYW5zZm9ybS5hbmNob3JYLGFuY2hvclk6dC50cmFuc2Zvcm0uYW5jaG9y WSx0YXJnZXRYOnQudHJhbnNmb3JtLnRhcmdldFgsdGFyZ2V0WTp0LnRyYW5z Zm9ybS50YXJnZXRZLHNjYWxlOnQudHJhbnNmb3JtLnNjYWxlLHJvdGF0ZTp0 LnRyYW5zZm9ybS5yb3RhdGV9KSwhRCYmYS5pc0VudHJ5KHQpJiYoRD10KX0p KSxCPXAodCxlLHksXyx7d2lkdGg6UyxoZWlnaHQ6RSx2aWV3WDpxLHZpZXdZ OkgscGF0aFNsaWNlOmZ1bmN0aW9uKHQpe3ZhciBlPXEodC54MCkscj1xKHQu eDEpLG49SCh0LnkwKSxhPUgodC55MSksaT1yLWUsbz1hLW47aWYoIWl8fCFv KXJldHVybiIiO3JldHVybiJNIitaKGUsbiswKSsiTCIrWihyLTAsbikrIkwi K1oocixhLTApKyJMIitaKGUrMCxhKSsiWiJ9LHRvTW92ZUluc2lkZVNsaWNl OiQscHJldkVudHJ5OkQsbWFrZVVwZGF0ZVNsaWNlSW50ZXJwb2xhdG9yOmV0 LG1ha2VVcGRhdGVUZXh0SW50ZXJwb2xhdG9yOnJ0LGhhbmRsZVNsaWNlc0V4 aXQ6bnQsaGFzVHJhbnNpdGlvbjprLHN0clRyYW5zZm9ybTphdH0pLHYucGF0 aGJhci52aXNpYmxlP2QodCxlLHksYix7YmFyRGlmWTpPLHdpZHRoOkwsaGVp Z2h0OkMsdmlld1g6Vyx2aWV3WTpYLHBhdGhTbGljZTpmdW5jdGlvbih0KXt2 YXIgZT1XKE1hdGgubWF4KE1hdGgubWluKHQueDAsdC54MCksMCkpLHI9VyhN YXRoLm1pbihNYXRoLm1heCh0LngxLHQueDEpLEwpKSxuPVgodC55MCksYT1Y KHQueTEpLGk9Qy8yLG89e30scz17fTtvLng9ZSxzLng9cixvLnk9cy55PShu K2EpLzI7dmFyIGw9e3g6ZSx5Om59LGM9e3g6cix5Om59LHU9e3g6cix5OmF9 LGg9e3g6ZSx5OmF9O3JldHVybiI+Ij09PVE/KGwueC09aSxjLngtPWksdS54 LT1pLGgueC09aSk6Ii8iPT09UT8odS54LT1pLGgueC09aSxvLngtPWkvMixz LngtPWkvMik6IlxcIj09PVE/KGwueC09aSxjLngtPWksby54LT1pLzIscy54 LT1pLzIpOiI8Ij09PVEmJihvLngtPWkscy54LT1pKSxLKGwpLEsoaCksSyhv KSxLKGMpLEsodSksSyhzKSwiTSIrWihsLngsbC55KSsiTCIrWihjLngsYy55 KSsiTCIrWihzLngscy55KSsiTCIrWih1LngsdS55KSsiTCIrWihoLngsaC55 KSsiTCIrWihvLngsby55KSsiWiJ9LHRvTW92ZUluc2lkZVNsaWNlOiQsbWFr ZVVwZGF0ZVNsaWNlSW50ZXJwb2xhdG9yOmV0LG1ha2VVcGRhdGVUZXh0SW50 ZXJwb2xhdG9yOnJ0LGhhbmRsZVNsaWNlc0V4aXQ6bnQsaGFzVHJhbnNpdGlv bjprLHN0clRyYW5zZm9ybTphdH0pOmIucmVtb3ZlKCl9ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyLGkpe3ZhciBvLHMsbD10Ll9mdWxsTGF5b3V0LGM9bC5f dHJlZW1hcGxheWVyLGY9IXI7KHUoInRyZWVtYXAiLGwpLChvPWMuc2VsZWN0 QWxsKCJnLnRyYWNlLnRyZWVtYXAiKS5kYXRhKGUsZnVuY3Rpb24odCl7cmV0 dXJuIHRbMF0udHJhY2UudWlkfSkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xh c3NlZCgidHJhY2UiLCEwKS5jbGFzc2VkKCJ0cmVlbWFwIiwhMCksby5vcmRl cigpLCFsLnVuaWZvcm10ZXh0Lm1vZGUmJmEuaGFzVHJhbnNpdGlvbihyKSk/ KGkmJihzPWkoKSksbi50cmFuc2l0aW9uKCkuZHVyYXRpb24oci5kdXJhdGlv bikuZWFzZShyLmVhc2luZykuZWFjaCgiZW5kIixmdW5jdGlvbigpe3MmJnMo KX0pLmVhY2goImludGVycnVwdCIsZnVuY3Rpb24oKXtzJiZzKCl9KS5lYWNo KGZ1bmN0aW9uKCl7Yy5zZWxlY3RBbGwoImcudHJhY2UiKS5lYWNoKGZ1bmN0 aW9uKGUpe3YodCxlLHRoaXMscil9KX0pKTooby5lYWNoKGZ1bmN0aW9uKGUp e3YodCxlLHRoaXMscil9KSxsLnVuaWZvcm10ZXh0Lm1vZGUmJmgodCxsLl90 cmVlbWFwbGF5ZXIuc2VsZWN0QWxsKCIudHJhY2UiKSwidHJlZW1hcCIpKTtm JiZvLmV4aXQoKS5yZW1vdmUoKX19LHsiLi4vLi4vbGliIjo3MTcsIi4uL2Jh ci9jb25zdGFudHMiOjg1OCwiLi4vYmFyL3Bsb3QiOjg2NywiLi4vYmFyL3N0 eWxlIjo4NzAsIi4uL2Jhci91bmlmb3JtX3RleHQiOjg3MiwiLi4vc3VuYnVy c3QvaGVscGVycyI6MTIzNywiLi9jb25zdGFudHMiOjEyNjAsIi4vZHJhd19h bmNlc3RvcnMiOjEyNjIsIi4vZHJhd19kZXNjZW5kYW50cyI6MTI2MyxkMzox NjV9XSwxMjY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoImQzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIu Li8uLi9saWIiKSxvPXQoIi4uL3N1bmJ1cnN0L2hlbHBlcnMiKSxzPXQoIi4u L2Jhci91bmlmb3JtX3RleHQiKS5yZXNpemVUZXh0O2Z1bmN0aW9uIGwodCxl LHIsbil7dmFyIHMsbCxjPShufHx7fSkuaG92ZXJlZCx1PWUuZGF0YS5kYXRh LGg9dS5pLGY9dS5jb2xvcixwPW8uaXNIaWVyYXJjaHlSb290KGUpLGQ9MTtp ZihjKXM9ci5faG92ZXJlZC5tYXJrZXIubGluZS5jb2xvcixsPXIuX2hvdmVy ZWQubWFya2VyLmxpbmUud2lkdGg7ZWxzZSBpZihwJiYicmdiYSgwLDAsMCww KSI9PT1mKWQ9MCxzPSJyZ2JhKDAsMCwwLDApIixsPTA7ZWxzZSBpZihzPWku Y2FzdE9wdGlvbihyLGgsIm1hcmtlci5saW5lLmNvbG9yIil8fGEuZGVmYXVs dExpbmUsbD1pLmNhc3RPcHRpb24ocixoLCJtYXJrZXIubGluZS53aWR0aCIp fHwwLCFyLl9oYXNDb2xvcnNjYWxlJiYhZS5vblBhdGhiYXIpe3ZhciBnPXIu bWFya2VyLmRlcHRoZmFkZTtpZihnKXt2YXIgdixtPWEuY29tYmluZShhLmFk ZE9wYWNpdHkoci5fYmFja2dyb3VuZENvbG9yLC43NSksZik7aWYoITA9PT1n KXt2YXIgeT1vLmdldE1heERlcHRoKHIpO3Y9aXNGaW5pdGUoeSk/by5pc0xl YWYoZSk/MDpyLl9tYXhWaXNpYmxlTGF5ZXJzLShlLmRhdGEuZGVwdGgtci5f ZW50cnlEZXB0aCk6ZS5kYXRhLmhlaWdodCsxfWVsc2Ugdj1lLmRhdGEuZGVw dGgtci5fZW50cnlEZXB0aCxyLl9hdFJvb3RMZXZlbHx8disrO2lmKHY+MClm b3IodmFyIHg9MDt4PHY7eCsrKXt2YXIgYj0uNSp4L3Y7Zj1hLmNvbWJpbmUo YS5hZGRPcGFjaXR5KG0sYiksZil9fX10LnN0eWxlKCJzdHJva2Utd2lkdGgi LGwpLmNhbGwoYS5maWxsLGYpLmNhbGwoYS5zdHJva2Uscykuc3R5bGUoIm9w YWNpdHkiLGQpfWUuZXhwb3J0cz17c3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9 dC5fZnVsbExheW91dC5fdHJlZW1hcGxheWVyLnNlbGVjdEFsbCgiLnRyYWNl Iik7cyh0LGUsInRyZWVtYXAiKSxlLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9 bi5zZWxlY3QodGhpcykscj10WzBdLnRyYWNlO2Uuc3R5bGUoIm9wYWNpdHki LHIub3BhY2l0eSksZS5zZWxlY3RBbGwoInBhdGguc3VyZmFjZSIpLmVhY2go ZnVuY3Rpb24odCl7bi5zZWxlY3QodGhpcykuY2FsbChsLHQscix7aG92ZXJl ZDohMX0pfSl9KX0sc3R5bGVPbmU6bH19LHsiLi4vLi4vY29tcG9uZW50cy9j b2xvciI6NTkyLCIuLi8uLi9saWIiOjcxNywiLi4vYmFyL3VuaWZvcm1fdGV4 dCI6ODcyLCIuLi9zdW5idXJzdC9oZWxwZXJzIjoxMjM3LGQzOjE2NX1dLDEy NzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Ym94L2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRl bmRGbGF0O2UuZXhwb3J0cz17eTpuLnkseDpuLngseDA6bi54MCx5MDpuLnkw LG5hbWU6YSh7fSxuLm5hbWUse30pLG9yaWVudGF0aW9uOmEoe30sbi5vcmll bnRhdGlvbix7fSksYmFuZHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjow LGVkaXRUeXBlOiJjYWxjIn0sc2NhbGVncm91cDp7dmFsVHlwZToic3RyaW5n IixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sc2NhbGVtb2RlOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ3aWR0aCIsImNvdW50Il0sZGZsdDoi d2lkdGgiLGVkaXRUeXBlOiJjYWxjIn0sc3Bhbm1vZGU6e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpbInNvZnQiLCJoYXJkIiwibWFudWFsIl0sZGZs dDoic29mdCIsZWRpdFR5cGU6ImNhbGMifSxzcGFuOnt2YWxUeXBlOiJpbmZv X2FycmF5IixpdGVtczpbe3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMi fSx7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9XSxlZGl0VHlwZToi Y2FsYyJ9LGxpbmU6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6 InN0eWxlIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoy LGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJwbG90In0sZmlsbGNvbG9y Om4uZmlsbGNvbG9yLHBvaW50czphKHt9LG4uYm94cG9pbnRzLHt9KSxqaXR0 ZXI6YSh7fSxuLmppdHRlcix7fSkscG9pbnRwb3M6YSh7fSxuLnBvaW50cG9z LHt9KSx3aWR0aDphKHt9LG4ud2lkdGgse30pLG1hcmtlcjpuLm1hcmtlcix0 ZXh0Om4udGV4dCxob3ZlcnRleHQ6bi5ob3ZlcnRleHQsaG92ZXJ0ZW1wbGF0 ZTpuLmhvdmVydGVtcGxhdGUsYm94Ont2aXNpYmxlOnt2YWxUeXBlOiJib29s ZWFuIixkZmx0OiExLGVkaXRUeXBlOiJwbG90In0sd2lkdGg6e3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouMjUsZWRpdFR5cGU6InBsb3Qi fSxmaWxsY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToic3R5bGUi fSxsaW5lOntjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHls ZSJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJz dHlsZSJ9LGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJwbG90In0sbWVh bmxpbmU6e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRp dFR5cGU6InBsb3QifSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBl OiJzdHlsZSJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRU eXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJwbG90In0sc2lkZTp7dmFsVHlwZToi ZW51bWVyYXRlZCIsdmFsdWVzOlsiYm90aCIsInBvc2l0aXZlIiwibmVnYXRp dmUiXSxkZmx0OiJib3RoIixlZGl0VHlwZToiY2FsYyJ9LG9mZnNldGdyb3Vw Om4ub2Zmc2V0Z3JvdXAsYWxpZ25tZW50Z3JvdXA6bi5hbGlnbm1lbnRncm91 cCxzZWxlY3RlZDpuLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6bi51bnNlbGVjdGVk LGhvdmVyb246e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbInZpb2xpbnMi LCJwb2ludHMiLCJrZGUiXSxkZmx0OiJ2aW9saW5zK3BvaW50cytrZGUiLGV4 dHJhczpbImFsbCJdLGVkaXRUeXBlOiJzdHlsZSJ9fX0seyIuLi8uLi9saWIv ZXh0ZW5kIjo3MDgsIi4uL2JveC9hdHRyaWJ1dGVzIjo4ODF9XSwxMjcxOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp YiIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4u L2JveC9jYWxjIiksbz10KCIuL2hlbHBlcnMiKSxzPXQoIi4uLy4uL2NvbnN0 YW50cy9udW1lcmljYWwiKS5CQUROVU07ZnVuY3Rpb24gbCh0LGUscil7dmFy IGE9ZS5tYXgtZS5taW47aWYoIWEpcmV0dXJuIHQuYmFuZHdpZHRoP3QuYmFu ZHdpZHRoOjA7aWYodC5iYW5kd2lkdGgpcmV0dXJuIE1hdGgubWF4KHQuYmFu ZHdpZHRoLGEvMWU0KTt2YXIgaT1yLmxlbmd0aCxvPW4uc3RkZXYocixpLTEs ZS5tZWFuKTtyZXR1cm4gTWF0aC5tYXgoZnVuY3Rpb24odCxlLHIpe3JldHVy biAxLjA1OSpNYXRoLm1pbihlLHIvMS4zNDkpKk1hdGgucG93KHQsLS4yKX0o aSxvLGUucTMtZS5xMSksYS8xMDApfWZ1bmN0aW9uIGModCxlLHIsbil7dmFy IGksbz10LnNwYW5tb2RlLGw9dC5zcGFufHxbXSxjPVtlLm1pbixlLm1heF0s dT1bZS5taW4tMipuLGUubWF4KzIqbl07ZnVuY3Rpb24gaChuKXt2YXIgYT1s W25dLGk9Im11bHRpY2F0ZWdvcnkiPT09ci50eXBlP3IucjJjKGEpOnIuZDJj KGEsMCx0W2UudmFsTGV0dGVyKyJjYWxlbmRhciJdKTtyZXR1cm4gaT09PXM/ dVtuXTppfXZhciBmPXt0eXBlOiJsaW5lYXIiLHJhbmdlOmk9InNvZnQiPT09 bz91OiJoYXJkIj09PW8/YzpbaCgwKSxoKDEpXX07cmV0dXJuIGEuc2V0Q29u dmVydChmKSxmLmNsZWFuUmFuZ2UoKSxpfWUuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe3ZhciByPWkodCxlKTtpZihyWzBdLnQuZW1wdHkpcmV0dXJuIHI7Zm9y KHZhciBzPXQuX2Z1bGxMYXlvdXQsdT1hLmdldEZyb21JZCh0LGVbImgiPT09 ZS5vcmllbnRhdGlvbj8ieGF4aXMiOiJ5YXhpcyJdKSxoPTEvMCxmPS0xLzAs cD0wLGQ9MCxnPTA7ZzxyLmxlbmd0aDtnKyspe3ZhciB2PXJbZ10sbT12LnB0 cy5tYXAoby5leHRyYWN0VmFsKSx5PXYuYmFuZHdpZHRoPWwoZSx2LG0pLHg9 di5zcGFuPWMoZSx2LHUseSk7aWYodi5taW49PT12Lm1heCYmMD09PXkpeD12 LnNwYW49W3YubWluLHYubWF4XSx2LmRlbnNpdHk9W3t2OjEsdDp4WzBdfV0s di5iYW5kd2lkdGg9eSxwPU1hdGgubWF4KHAsMSk7ZWxzZXt2YXIgYj14WzFd LXhbMF0sXz1NYXRoLmNlaWwoYi8oeS8zKSksdz1iL187aWYoIWlzRmluaXRl KHcpfHwhaXNGaW5pdGUoXykpcmV0dXJuIG4uZXJyb3IoIlNvbWV0aGluZyB3 ZW50IHdyb25nIHdpdGggY29tcHV0aW5nIHRoZSB2aW9saW4gc3BhbiIpLHJb MF0udC5lbXB0eT0hMCxyO3ZhciBrPW8ubWFrZUtERSh2LGUsbSk7di5kZW5z aXR5PW5ldyBBcnJheShfKTtmb3IodmFyIFQ9MCxNPXhbMF07TTx4WzFdK3cv MjtUKyssTSs9dyl7dmFyIEE9ayhNKTt2LmRlbnNpdHlbVF09e3Y6QSx0Ok19 LHA9TWF0aC5tYXgocCxBKX19ZD1NYXRoLm1heChkLG0ubGVuZ3RoKSxoPU1h dGgubWluKGgseFswXSksZj1NYXRoLm1heChmLHhbMV0pfXZhciBTPWEuZmlu ZEV4dHJlbWVzKHUsW2gsZl0se3BhZGRlZDohMH0pO2lmKGUuX2V4dHJlbWVz W3UuX2lkXT1TLGUud2lkdGgpclswXS50Lm1heEtERT1wO2Vsc2V7dmFyIEU9 cy5fdmlvbGluU2NhbGVHcm91cFN0YXRzLEw9ZS5zY2FsZWdyb3VwLEM9RVtM XTtDPyhDLm1heEtERT1NYXRoLm1heChDLm1heEtERSxwKSxDLm1heENvdW50 PU1hdGgubWF4KEMubWF4Q291bnQsZCkpOkVbTF09e21heEtERTpwLG1heENv dW50OmR9fXJldHVybiByWzBdLnQubGFiZWxzLmtkZT1uLl8odCwia2RlOiIp LHJ9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjY5MywiLi4vLi4v bGliIjo3MTcsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo3NjUsIi4u L2JveC9jYWxjIjo4ODIsIi4vaGVscGVycyI6MTI3NH1dLDEyNzI6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYm94L2Nyb3Nz X3RyYWNlX2NhbGMiKS5zZXRQb3NpdGlvbk9mZnNldCxhPVsidiIsImgiXTtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5jYWxjZGF0YSxp PWUueGF4aXMsbz1lLnlheGlzLHM9MDtzPGEubGVuZ3RoO3MrKyl7Zm9yKHZh ciBsPWFbc10sYz0iaCI9PT1sP286aSx1PVtdLGg9MDtoPHIubGVuZ3RoO2gr Kyl7dmFyIGY9cltoXSxwPWZbMF0udCxkPWZbMF0udHJhY2U7ITAhPT1kLnZp c2libGV8fCJ2aW9saW4iIT09ZC50eXBlfHxwLmVtcHR5fHxkLm9yaWVudGF0 aW9uIT09bHx8ZC54YXhpcyE9PWkuX2lkfHxkLnlheGlzIT09by5faWR8fHUu cHVzaChoKX1uKCJ2aW9saW4iLHQsdSxjKX19fSx7Ii4uL2JveC9jcm9zc190 cmFjZV9jYWxjIjo4ODN9XSwxMjczOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9u ZW50cy9jb2xvciIpLGk9dCgiLi4vYm94L2RlZmF1bHRzIiksbz10KCIuL2F0 dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscyl7ZnVuY3Rp b24gbChyLGEpe3JldHVybiBuLmNvZXJjZSh0LGUsbyxyLGEpfWZ1bmN0aW9u IGMocixhKXtyZXR1cm4gbi5jb2VyY2UyKHQsZSxvLHIsYSl9aWYoaS5oYW5k bGVTYW1wbGVEZWZhdWx0cyh0LGUsbCxzKSwhMSE9PWUudmlzaWJsZSl7bCgi YmFuZHdpZHRoIiksbCgic2lkZSIpLGwoIndpZHRoIil8fChsKCJzY2FsZWdy b3VwIixlLm5hbWUpLGwoInNjYWxlbW9kZSIpKTt2YXIgdSxoPWwoInNwYW4i KTtBcnJheS5pc0FycmF5KGgpJiYodT0ibWFudWFsIiksbCgic3Bhbm1vZGUi LHUpO3ZhciBmPWwoImxpbmUuY29sb3IiLCh0Lm1hcmtlcnx8e30pLmNvbG9y fHxyKSxwPWwoImxpbmUud2lkdGgiKSxkPWwoImZpbGxjb2xvciIsYS5hZGRP cGFjaXR5KGUubGluZS5jb2xvciwuNSkpO2kuaGFuZGxlUG9pbnRzRGVmYXVs dHModCxlLGwse3ByZWZpeDoiIn0pO3ZhciBnPWMoImJveC53aWR0aCIpLHY9 YygiYm94LmZpbGxjb2xvciIsZCksbT1jKCJib3gubGluZS5jb2xvciIsZiks eT1jKCJib3gubGluZS53aWR0aCIscCk7bCgiYm94LnZpc2libGUiLEJvb2xl YW4oZ3x8dnx8bXx8eSkpfHwoZS5ib3g9e3Zpc2libGU6ITF9KTt2YXIgeD1j KCJtZWFubGluZS5jb2xvciIsZiksYj1jKCJtZWFubGluZS53aWR0aCIscCk7 bCgibWVhbmxpbmUudmlzaWJsZSIsQm9vbGVhbih4fHxiKSl8fChlLm1lYW5s aW5lPXt2aXNpYmxlOiExfSl9fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9y Ijo1OTIsIi4uLy4uL2xpYiI6NzE3LCIuLi9ib3gvZGVmYXVsdHMiOjg4NCwi Li9hdHRyaWJ1dGVzIjoxMjcwfV0sMTI3NDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPWZ1bmN0aW9uKHQp e3JldHVybiAxL01hdGguc3FydCgyKk1hdGguUEkpKk1hdGguZXhwKC0uNSp0 KnQpfTtyLm1ha2VLREU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIubGVuZ3Ro LGk9YSxvPXQuYmFuZHdpZHRoLHM9MS8obipvKTtyZXR1cm4gZnVuY3Rpb24o dCl7Zm9yKHZhciBlPTAsYT0wO2E8bjthKyspZSs9aSgodC1yW2FdKS9vKTty ZXR1cm4gcyplfX0sci5nZXRQb3NpdGlvbk9uS2RlUGF0aD1mdW5jdGlvbih0 LGUscil7dmFyIGEsaTsiaCI9PT1lLm9yaWVudGF0aW9uPyhhPSJ5IixpPSJ4 Iik6KGE9IngiLGk9InkiKTt2YXIgbz1uLmZpbmRQb2ludE9uUGF0aCh0LnBh dGgscixpLHtwYXRoTGVuZ3RoOnQucGF0aExlbmd0aH0pLHM9dC5wb3NDZW50 ZXJQeCxsPW9bYV07cmV0dXJuW2wsImJvdGgiPT09ZS5zaWRlPzIqcy1sOnNd fSxyLmdldEtkZVZhbHVlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT10LnB0cy5t YXAoci5leHRyYWN0VmFsKTtyZXR1cm4gci5tYWtlS0RFKHQsZSxhKShuKS90 LnBvc0RlbnNpdHlTY2FsZX0sci5leHRyYWN0VmFsPWZ1bmN0aW9uKHQpe3Jl dHVybiB0LnZ9fSx7Ii4uLy4uL2xpYiI6NzE3fV0sMTI3NTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxhPXQo Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi9ib3gvaG92 ZXIiKSxvPXQoIi4vaGVscGVycyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cixzLGwpe3ZhciBjLHUsaD10LmNkLGY9aFswXS50cmFjZSxwPWYuaG92ZXJv bixkPS0xIT09cC5pbmRleE9mKCJ2aW9saW5zIiksZz0tMSE9PXAuaW5kZXhP Zigia2RlIiksdj1bXTtpZihkfHxnKXt2YXIgbT1pLmhvdmVyT25Cb3hlcyh0 LGUscixzKTtpZihnJiZtLmxlbmd0aD4wKXt2YXIgeSx4LGIsXyx3LGs9dC54 YSxUPXQueWE7ImgiPT09Zi5vcmllbnRhdGlvbj8odz1lLHk9InkiLGI9VCx4 PSJ4IixfPWspOih3PXIseT0ieCIsYj1rLHg9InkiLF89VCk7dmFyIE09aFt0 LmluZGV4XTtpZih3Pj1NLnNwYW5bMF0mJnc8PU0uc3BhblsxXSl7dmFyIEE9 bi5leHRlbmRGbGF0KHt9LHQpLFM9Xy5jMnAodywhMCksRT1vLmdldEtkZVZh bHVlKE0sZix3KSxMPW8uZ2V0UG9zaXRpb25PbktkZVBhdGgoTSxmLFMpLEM9 Yi5fb2Zmc2V0LFA9Yi5fbGVuZ3RoO0FbeSsiMCJdPUxbMF0sQVt5KyIxIl09 TFsxXSxBW3grIjAiXT1BW3grIjEiXT1TLEFbeCsiTGFiZWwiXT14KyI6ICIr YS5ob3ZlckxhYmVsVGV4dChfLHcpKyIsICIraFswXS50LmxhYmVscy5rZGUr IiAiK0UudG9GaXhlZCgzKSxBLnNwaWtlRGlzdGFuY2U9bVswXS5zcGlrZURp c3RhbmNlO3ZhciBPPXkrIlNwaWtlIjtBW09dPW1bMF1bT10sbVswXS5zcGlr ZURpc3RhbmNlPXZvaWQgMCxtWzBdW09dPXZvaWQgMCxBLmhvdmVydGVtcGxh dGU9ITEsdi5wdXNoKEEpLCh1PXtzdHJva2U6dC5jb2xvcn0pW3krIjEiXT1u LmNvbnN0cmFpbihDK0xbMF0sQyxDK1ApLHVbeSsiMiJdPW4uY29uc3RyYWlu KEMrTFsxXSxDLEMrUCksdVt4KyIxIl09dVt4KyIyIl09Xy5fb2Zmc2V0K1N9 fWQmJih2PXYuY29uY2F0KG0pKX0tMSE9PXAuaW5kZXhPZigicG9pbnRzIikm JihjPWkuaG92ZXJPblBvaW50cyh0LGUscikpO3ZhciB6PWwuc2VsZWN0QWxs KCIudmlvbGlubGluZS0iK2YudWlkKS5kYXRhKHU/WzBdOltdKTtyZXR1cm4g ei5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoInZpb2xpbmxpbmUt IitmLnVpZCwhMCkuYXR0cigic3Ryb2tlLXdpZHRoIiwxLjUpLHouZXhpdCgp LnJlbW92ZSgpLHouYXR0cih1KSwiY2xvc2VzdCI9PT1zP2M/W2NdOnY6Yz8o di5wdXNoKGMpLHYpOnZ9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9ib3gvaG92ZXIiOjg4NiwiLi9o ZWxwZXJzIjoxMjc0fV0sMTI3NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiks bGF5b3V0QXR0cmlidXRlczp0KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksc3Vw cGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNyb3NzVHJhY2VEZWZhdWx0 czp0KCIuLi9ib3gvZGVmYXVsdHMiKS5jcm9zc1RyYWNlRGVmYXVsdHMsc3Vw cGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxj OnQoIi4vY2FsYyIpLGNyb3NzVHJhY2VDYWxjOnQoIi4vY3Jvc3NfdHJhY2Vf Y2FsYyIpLHBsb3Q6dCgiLi9wbG90Iiksc3R5bGU6dCgiLi9zdHlsZSIpLHN0 eWxlT25TZWxlY3Q6dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlT25TZWxl Y3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLHNlbGVjdFBvaW50czp0KCIu Li9ib3gvc2VsZWN0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InZpb2xp biIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiks Y2F0ZWdvcmllczpbImNhcnRlc2lhbiIsInN2ZyIsInN5bWJvbHMiLCJvcmll bnRlZCIsImJveC12aW9saW4iLCJzaG93TGVnZW5kIiwidmlvbGluTGF5b3V0 Iiwiem9vbVNjYWxlIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVz aWFuIjo3NzYsIi4uL2JveC9kZWZhdWx0cyI6ODg0LCIuLi9ib3gvc2VsZWN0 Ijo4OTEsIi4uL3NjYXR0ZXIvc3R5bGUiOjExNDMsIi4vYXR0cmlidXRlcyI6 MTI3MCwiLi9jYWxjIjoxMjcxLCIuL2Nyb3NzX3RyYWNlX2NhbGMiOjEyNzIs Ii4vZGVmYXVsdHMiOjEyNzMsIi4vaG92ZXIiOjEyNzUsIi4vbGF5b3V0X2F0 dHJpYnV0ZXMiOjEyNzcsIi4vbGF5b3V0X2RlZmF1bHRzIjoxMjc4LCIuL3Bs b3QiOjEyNzksIi4vc3R5bGUiOjEyODB9XSwxMjc3OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2JveC9sYXlvdXRfYXR0cmli dXRlcyIpLGE9dCgiLi4vLi4vbGliIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9 e3Zpb2xpbm1vZGU6YSh7fSxuLmJveG1vZGUse30pLHZpb2xpbmdhcDphKHt9 LG4uYm94Z2FwLHt9KSx2aW9saW5ncm91cGdhcDphKHt9LG4uYm94Z3JvdXBn YXAse30pfX0seyIuLi8uLi9saWIiOjcxNywiLi4vYm94L2xheW91dF9hdHRy aWJ1dGVzIjo4ODh9XSwxMjc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9sYXlvdXRfYXR0cmli dXRlcyIpLGk9dCgiLi4vYm94L2xheW91dF9kZWZhdWx0cyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscil7aS5fc3VwcGx5KHQsZSxyLGZ1bmN0aW9uKHIs aSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9LCJ2aW9saW4iKX19LHsi Li4vLi4vbGliIjo3MTcsIi4uL2JveC9sYXlvdXRfZGVmYXVsdHMiOjg4OSwi Li9sYXlvdXRfYXR0cmlidXRlcyI6MTI3N31dLDEyNzk6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMiKSxhPXQoIi4uLy4uL2xp YiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi9i b3gvcGxvdCIpLHM9dCgiLi4vc2NhdHRlci9saW5lX3BvaW50cyIpLGw9dCgi Li9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGMpe3ZhciB1 PXQuX2Z1bGxMYXlvdXQsaD1lLnhheGlzLGY9ZS55YXhpcztmdW5jdGlvbiBw KHQpe3ZhciBlPXModCx7eGF4aXM6aCx5YXhpczpmLGNvbm5lY3RHYXBzOiEw LGJhc2VUb2xlcmFuY2U6Ljc1LHNoYXBlOiJzcGxpbmUiLHNpbXBsaWZ5OiEw LGxpbmVhcml6ZWQ6ITB9KTtyZXR1cm4gaS5zbW9vdGhvcGVuKGVbMF0sMSl9 YS5tYWtlVHJhY2VHcm91cHMoYyxyLCJ0cmFjZSB2aW9saW5zIikuZWFjaChm dW5jdGlvbih0KXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxpPXRbMF0scz1pLnQs Yz1pLnRyYWNlO2lmKCEwIT09Yy52aXNpYmxlfHxzLmVtcHR5KXIucmVtb3Zl KCk7ZWxzZXt2YXIgZD1zLmJQb3MsZz1zLmJkUG9zLHY9ZVtzLnZhbExldHRl cisiYXhpcyJdLG09ZVtzLnBvc0xldHRlcisiYXhpcyJdLHk9ImJvdGgiPT09 Yy5zaWRlLHg9eXx8InBvc2l0aXZlIj09PWMuc2lkZSxiPXl8fCJuZWdhdGl2 ZSI9PT1jLnNpZGUsXz1yLnNlbGVjdEFsbCgicGF0aC52aW9saW4iKS5kYXRh KGEuaWRlbnRpdHkpO18uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5zdHlsZSgi dmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmF0dHIoImNs YXNzIiwidmlvbGluIiksXy5leGl0KCkucmVtb3ZlKCksXy5lYWNoKGZ1bmN0 aW9uKHQpe3ZhciBlLHIsYSxpLG8sbCxoLGYsXz1uLnNlbGVjdCh0aGlzKSx3 PXQuZGVuc2l0eSxrPXcubGVuZ3RoLFQ9bS5jMmwodC5wb3MrZCwhMCksTT1t LmwycChUKTtpZihjLndpZHRoKWU9cy5tYXhLREUvZztlbHNle3ZhciBBPXUu X3Zpb2xpblNjYWxlR3JvdXBTdGF0c1tjLnNjYWxlZ3JvdXBdO2U9ImNvdW50 Ij09PWMuc2NhbGVtb2RlP0EubWF4S0RFL2cqKEEubWF4Q291bnQvdC5wdHMu bGVuZ3RoKTpBLm1heEtERS9nfWlmKHgpe2ZvcihoPW5ldyBBcnJheShrKSxv PTA7bzxrO28rKykoZj1oW29dPXt9KVtzLnBvc0xldHRlcl09VCt3W29dLnYv ZSxmW3MudmFsTGV0dGVyXT12LmMybCh3W29dLnQsITApO3I9cChoKX1pZihi KXtmb3IoaD1uZXcgQXJyYXkoayksbD0wLG89ay0xO2w8aztsKyssby0tKShm PWhbbF09e30pW3MucG9zTGV0dGVyXT1ULXdbb10udi9lLGZbcy52YWxMZXR0 ZXJdPXYuYzJsKHdbb10udCwhMCk7YT1wKGgpfWlmKHkpaT1yKyJMIithLnN1 YnN0cigxKSsiWiI7ZWxzZXt2YXIgUz1bTSx2LmMycCh3WzBdLnQpXSxFPVtN LHYuYzJwKHdbay0xXS50KV07ImgiPT09Yy5vcmllbnRhdGlvbiYmKFMucmV2 ZXJzZSgpLEUucmV2ZXJzZSgpKSxpPXg/Ik0iK1MrIkwiK3Iuc3Vic3RyKDEp KyJMIitFOiJNIitFKyJMIithLnN1YnN0cigxKSsiTCIrU31fLmF0dHIoImQi LGkpLHQucG9zQ2VudGVyUHg9TSx0LnBvc0RlbnNpdHlTY2FsZT1lKmcsdC5w YXRoPV8ubm9kZSgpLHQucGF0aExlbmd0aD10LnBhdGguZ2V0VG90YWxMZW5n dGgoKS8oeT8yOjEpfSk7dmFyIHcsayxULE09Yy5ib3gsQT1NLndpZHRoLFM9 KE0ubGluZXx8e30pLndpZHRoO3k/KHc9ZypBLGs9MCk6eD8odz1bMCxnKkEv Ml0saz1TKnt4OjEseTotMX1bcy5wb3NMZXR0ZXJdKToodz1bZypBLzIsMF0s az1TKnt4Oi0xLHk6MX1bcy5wb3NMZXR0ZXJdKSxvLnBsb3RCb3hBbmRXaGlz a2VycyhyLHtwb3M6bSx2YWw6dn0sYyx7YlBvczpkLGJkUG9zOncsYlBvc1B4 T2Zmc2V0Omt9KSxvLnBsb3RCb3hNZWFuKHIse3BvczptLHZhbDp2fSxjLHti UG9zOmQsYmRQb3M6dyxiUG9zUHhPZmZzZXQ6a30pLCFjLmJveC52aXNpYmxl JiZjLm1lYW5saW5lLnZpc2libGUmJihUPWEuaWRlbnRpdHkpO3ZhciBFPXIu c2VsZWN0QWxsKCJwYXRoLm1lYW5saW5lIikuZGF0YShUfHxbXSk7RS5lbnRl cigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibWVhbmxpbmUiKS5z dHlsZSgiZmlsbCIsIm5vbmUiKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIsIm5v bi1zY2FsaW5nLXN0cm9rZSIpLEUuZXhpdCgpLnJlbW92ZSgpLEUuZWFjaChm dW5jdGlvbih0KXt2YXIgZT12LmMycCh0Lm1lYW4sITApLHI9bC5nZXRQb3Np dGlvbk9uS2RlUGF0aCh0LGMsZSk7bi5zZWxlY3QodGhpcykuYXR0cigiZCIs ImgiPT09Yy5vcmllbnRhdGlvbj8iTSIrZSsiLCIrclswXSsiViIrclsxXToi TSIrclswXSsiLCIrZSsiSCIrclsxXSl9KSxvLnBsb3RQb2ludHMocix7eDpo LHk6Zn0sYyxzKX19KX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2 MTMsIi4uLy4uL2xpYiI6NzE3LCIuLi9ib3gvcGxvdCI6ODkwLCIuLi9zY2F0 dGVyL2xpbmVfcG9pbnRzIjoxMTM0LCIuL2hlbHBlcnMiOjEyNzQsZDM6MTY1 fV0sMTI4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJkMyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGk9dCgiLi4v c2NhdHRlci9zdHlsZSIpLnN0eWxlUG9pbnRzO2UuZXhwb3J0cz1mdW5jdGlv bih0KXt2YXIgZT1uLnNlbGVjdCh0KS5zZWxlY3RBbGwoImcudHJhY2Uudmlv bGlucyIpO2Uuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKHQpe3JldHVybiB0 WzBdLnRyYWNlLm9wYWNpdHl9KSxlLmVhY2goZnVuY3Rpb24oZSl7dmFyIHI9 ZVswXS50cmFjZSxvPW4uc2VsZWN0KHRoaXMpLHM9ci5ib3h8fHt9LGw9cy5s aW5lfHx7fSxjPXIubWVhbmxpbmV8fHt9LHU9Yy53aWR0aDtvLnNlbGVjdEFs bCgicGF0aC52aW9saW4iKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixyLmxpbmUu d2lkdGgrInB4IikuY2FsbChhLnN0cm9rZSxyLmxpbmUuY29sb3IpLmNhbGwo YS5maWxsLHIuZmlsbGNvbG9yKSxvLnNlbGVjdEFsbCgicGF0aC5ib3giKS5z dHlsZSgic3Ryb2tlLXdpZHRoIixsLndpZHRoKyJweCIpLmNhbGwoYS5zdHJv a2UsbC5jb2xvcikuY2FsbChhLmZpbGwscy5maWxsY29sb3IpO3ZhciBoPXsi c3Ryb2tlLXdpZHRoIjp1KyJweCIsInN0cm9rZS1kYXNoYXJyYXkiOjIqdSsi cHgsIit1KyJweCJ9O28uc2VsZWN0QWxsKCJwYXRoLm1lYW4iKS5zdHlsZSho KS5jYWxsKGEuc3Ryb2tlLGMuY29sb3IpLG8uc2VsZWN0QWxsKCJwYXRoLm1l YW5saW5lIikuc3R5bGUoaCkuY2FsbChhLnN0cm9rZSxjLmNvbG9yKSxpKG8s cix0KX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjo1OTIsIi4uL3Nj YXR0ZXIvc3R5bGUiOjExNDMsZDM6MTY1fV0sMTI4MTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvYXR0cmlidXRlcyIpLGE9dCgiLi4vaXNvc3VyZmFjZS9hdHRy aWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIiksbz10KCIu Li8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxzPXQoIi4uLy4uL3Bsb3Rf YXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxsPWUuZXhwb3J0cz1zKG8o e3g6YS54LHk6YS55LHo6YS56LHZhbHVlOmEudmFsdWUsaXNvbWluOmEuaXNv bWluLGlzb21heDphLmlzb21heCxzdXJmYWNlOmEuc3VyZmFjZSxzcGFjZWZy YW1lOntzaG93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxmaWxsOnt2 YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX19LHNsaWNlczph LnNsaWNlcyxjYXBzOmEuY2Fwcyx0ZXh0OmEudGV4dCxob3ZlcnRleHQ6YS5o b3ZlcnRleHQsaG92ZXJ0ZW1wbGF0ZTphLmhvdmVydGVtcGxhdGV9LG4oIiIs e2NvbG9yQXR0cjoiYHZhbHVlYCIsc2hvd1NjYWxlRGZsdDohMCxlZGl0VHlw ZU92ZXJyaWRlOiJjYWxjIn0pLHtjb2xvcmJhcjphLmNvbG9yYmFyLG9wYWNp dHk6YS5vcGFjaXR5LG9wYWNpdHlzY2FsZTp7dmFsVHlwZToiYW55IixlZGl0 VHlwZToiY2FsYyJ9LGxpZ2h0cG9zaXRpb246YS5saWdodHBvc2l0aW9uLGxp Z2h0aW5nOmEubGlnaHRpbmcsZmxhdHNoYWRpbmc6YS5mbGF0c2hhZGluZyxj b250b3VyOmEuY29udG91cixob3ZlcmluZm86byh7fSxpLmhvdmVyaW5mbyks c2hvd2xlZ2VuZDpvKHt9LGkuc2hvd2xlZ2VuZCx7ZGZsdDohMX0pfSksImNh bGMiLCJuZXN0ZWQiKTtsLnguZWRpdFR5cGU9bC55LmVkaXRUeXBlPWwuei5l ZGl0VHlwZT1sLnZhbHVlLmVkaXRUeXBlPSJjYWxjK2NsZWFyQXhpc1R5cGVz IixsLnRyYW5zZm9ybXM9dm9pZCAwfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29s b3JzY2FsZS9hdHRyaWJ1dGVzIjo1OTksIi4uLy4uL2xpYi9leHRlbmQiOjcw OCwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NzQ4LCIuLi8uLi9wbG90 cy9hdHRyaWJ1dGVzIjo3NjIsIi4uL2lzb3N1cmZhY2UvYXR0cmlidXRlcyI6 MTA1Nn1dLDEyODI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiZ2wtbWVzaDNkIiksYT10KCIuLi8uLi9saWIvZ2xfZm9ybWF0X2Nv bG9yIikucGFyc2VDb2xvclNjYWxlLGk9dCgiLi4vLi4vbGliL3N0cjJyZ2Jh cnJheSIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIikuZXh0 cmFjdE9wdHMscz10KCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiKSxsPXQoIi4u L2lzb3N1cmZhY2UvY29udmVydCIpLmZpbmROZWFyZXN0T25BeGlzLGM9dCgi Li4vaXNvc3VyZmFjZS9jb252ZXJ0IikuZ2VuZXJhdGVJc29NZXNoZXM7ZnVu Y3Rpb24gdSh0LGUscil7dGhpcy5zY2VuZT10LHRoaXMudWlkPXIsdGhpcy5t ZXNoPWUsdGhpcy5uYW1lPSIiLHRoaXMuZGF0YT1udWxsLHRoaXMuc2hvd0Nv bnRvdXI9ITF9dmFyIGg9dS5wcm90b3R5cGU7aC5oYW5kbGVQaWNrPWZ1bmN0 aW9uKHQpe2lmKHQub2JqZWN0PT09dGhpcy5tZXNoKXt2YXIgZT10LmRhdGEu aW5kZXgscj10aGlzLmRhdGEuX21lc2hYW2VdLG49dGhpcy5kYXRhLl9tZXNo WVtlXSxhPXRoaXMuZGF0YS5fbWVzaFpbZV0saT10aGlzLmRhdGEuX1lzLmxl bmd0aCxvPXRoaXMuZGF0YS5fWnMubGVuZ3RoLHM9bChyLHRoaXMuZGF0YS5f WHMpLmlkLGM9bChuLHRoaXMuZGF0YS5fWXMpLmlkLHU9bChhLHRoaXMuZGF0 YS5fWnMpLmlkLGg9dC5pbmRleD11K28qYytvKmkqczt0LnRyYWNlQ29vcmRp bmF0ZT1bdGhpcy5kYXRhLl9tZXNoWFtoXSx0aGlzLmRhdGEuX21lc2hZW2hd LHRoaXMuZGF0YS5fbWVzaFpbaF0sdGhpcy5kYXRhLl92YWx1ZVtoXV07dmFy IGY9dGhpcy5kYXRhLmhvdmVydGV4dHx8dGhpcy5kYXRhLnRleHQ7cmV0dXJu IEFycmF5LmlzQXJyYXkoZikmJnZvaWQgMCE9PWZbaF0/dC50ZXh0TGFiZWw9 ZltoXTpmJiYodC50ZXh0TGFiZWw9ZiksITB9fSxoLnVwZGF0ZT1mdW5jdGlv bih0KXt2YXIgZT10aGlzLnNjZW5lLHI9ZS5mdWxsU2NlbmVMYXlvdXQ7ZnVu Y3Rpb24gbih0LGUscixuKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0 dXJuIHQuZDJsKGUsMCxuKSpyfSl9dGhpcy5kYXRhPWModCk7dmFyIGw9e3Bv c2l0aW9uczpzKG4oci54YXhpcyx0Ll9tZXNoWCxlLmRhdGFTY2FsZVswXSx0 LnhjYWxlbmRhciksbihyLnlheGlzLHQuX21lc2hZLGUuZGF0YVNjYWxlWzFd LHQueWNhbGVuZGFyKSxuKHIuemF4aXMsdC5fbWVzaFosZS5kYXRhU2NhbGVb Ml0sdC56Y2FsZW5kYXIpKSxjZWxsczpzKHQuX21lc2hJLHQuX21lc2hKLHQu X21lc2hLKSxsaWdodFBvc2l0aW9uOlt0LmxpZ2h0cG9zaXRpb24ueCx0Lmxp Z2h0cG9zaXRpb24ueSx0LmxpZ2h0cG9zaXRpb24uel0sYW1iaWVudDp0Lmxp Z2h0aW5nLmFtYmllbnQsZGlmZnVzZTp0LmxpZ2h0aW5nLmRpZmZ1c2Usc3Bl Y3VsYXI6dC5saWdodGluZy5zcGVjdWxhcixyb3VnaG5lc3M6dC5saWdodGlu Zy5yb3VnaG5lc3MsZnJlc25lbDp0LmxpZ2h0aW5nLmZyZXNuZWwsdmVydGV4 Tm9ybWFsc0Vwc2lsb246dC5saWdodGluZy52ZXJ0ZXhub3JtYWxzZXBzaWxv bixmYWNlTm9ybWFsc0Vwc2lsb246dC5saWdodGluZy5mYWNlbm9ybWFsc2Vw c2lsb24sb3BhY2l0eTp0Lm9wYWNpdHksb3BhY2l0eXNjYWxlOnQub3BhY2l0 eXNjYWxlLGNvbnRvdXJFbmFibGU6dC5jb250b3VyLnNob3csY29udG91ckNv bG9yOmkodC5jb250b3VyLmNvbG9yKS5zbGljZSgwLDMpLGNvbnRvdXJXaWR0 aDp0LmNvbnRvdXIud2lkdGgsdXNlRmFjZXROb3JtYWxzOnQuZmxhdHNoYWRp bmd9LHU9byh0KTtsLnZlcnRleEludGVuc2l0eT10Ll9tZXNoSW50ZW5zaXR5 LGwudmVydGV4SW50ZW5zaXR5Qm91bmRzPVt1Lm1pbix1Lm1heF0sbC5jb2xv cm1hcD1hKHQpLHRoaXMubWVzaC51cGRhdGUobCl9LGguZGlzcG9zZT1mdW5j dGlvbigpe3RoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLm1lc2gpLHRo aXMubWVzaC5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Zh ciByPXQuZ2xwbG90LmdsLGE9bih7Z2w6cn0pLGk9bmV3IHUodCxhLGUudWlk KTtyZXR1cm4gYS5fdHJhY2U9aSxpLnVwZGF0ZShlKSx0LmdscGxvdC5hZGQo YSksaX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjo2MDQsIi4u Ly4uL2xpYi9nbF9mb3JtYXRfY29sb3IiOjcxNCwiLi4vLi4vbGliL3N0cjJy Z2JhcnJheSI6NzQwLCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiOjgxNiwiLi4v aXNvc3VyZmFjZS9jb252ZXJ0IjoxMDU4LCJnbC1tZXNoM2QiOjI4M31dLDEy ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vbGliIiksYT10KCIuL2F0dHJpYnV0ZXMiKSxpPXQoIi4uL2lzb3N1cmZh Y2UvZGVmYXVsdHMiKS5zdXBwbHlJc29EZWZhdWx0cztlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsbyl7ZnVuY3Rpb24gcyhyLGkpe3JldHVybiBuLmNvZXJj ZSh0LGUsYSxyLGkpfWkodCxlLHIsbyxzKTt2YXIgbD1zKCJvcGFjaXR5c2Nh bGUiKTsibWF4Ij09PWw/ZS5vcGFjaXR5c2NhbGU9W1swLC4xXSxbMSwxXV06 Im1pbiI9PT1sP2Uub3BhY2l0eXNjYWxlPVtbMCwxXSxbMSwuMV1dOiJleHRy ZW1lcyI9PT1sP2Uub3BhY2l0eXNjYWxlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPVtdLG49MDtuPDMyO24rKyl7dmFyIGE9bi8zMSxpPWUrKDEtZSkqKDEt TWF0aC5wb3coTWF0aC5zaW4odCphKk1hdGguUEkpLDIpKTtyLnB1c2goW2Es TWF0aC5tYXgoMSxNYXRoLm1pbigwLGkpKV0pfXJldHVybiByfSgxLC4xKTpm dW5jdGlvbih0KXt2YXIgZT0wO2lmKCFBcnJheS5pc0FycmF5KHQpfHx0Lmxl bmd0aDwyKXJldHVybiExO2lmKCF0WzBdfHwhdFt0Lmxlbmd0aC0xXSlyZXR1 cm4hMTtpZigwIT0rdFswXVswXXx8MSE9K3RbdC5sZW5ndGgtMV1bMF0pcmV0 dXJuITE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07 aWYoMiE9PW4ubGVuZ3RofHwrblswXTxlKXJldHVybiExO2U9K25bMF19cmV0 dXJuITB9KGwpfHwoZS5vcGFjaXR5c2NhbGU9dm9pZCAwKX19LHsiLi4vLi4v bGliIjo3MTcsIi4uL2lzb3N1cmZhY2UvZGVmYXVsdHMiOjEwNTksIi4vYXR0 cmlidXRlcyI6MTI4MX1dLDEyODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIp LHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4uL2lz b3N1cmZhY2UvY2FsYyIpLGNvbG9yYmFyOnttaW46ImNtaW4iLG1heDoiY21h eCJ9LHBsb3Q6dCgiLi9jb252ZXJ0IiksbW9kdWxlVHlwZToidHJhY2UiLG5h bWU6InZvbHVtZSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wz ZCIpLGNhdGVnb3JpZXM6WyJnbDNkIiwic2hvd0xlZ2VuZCJdLG1ldGE6e319 fSx7Ii4uLy4uL3Bsb3RzL2dsM2QiOjgwNSwiLi4vaXNvc3VyZmFjZS9jYWxj IjoxMDU3LCIuL2F0dHJpYnV0ZXMiOjEyODEsIi4vY29udmVydCI6MTI4Miwi Li9kZWZhdWx0cyI6MTI4M31dLDEyODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vYmFyL2F0dHJpYnV0ZXMiKSxhPXQoIi4u L3NjYXR0ZXIvYXR0cmlidXRlcyIpLmxpbmUsaT10KCIuLi8uLi9wbG90cy9h dHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1 dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLHM9dCgiLi4vLi4vcGxvdHMvdGVt cGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGw9dCgiLi9j b25zdGFudHMiKSxjPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0 LHU9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpO2Z1bmN0aW9uIGgodCl7 cmV0dXJue21hcmtlcjp7Y29sb3I6Yyh7fSxuLm1hcmtlci5jb2xvcix7YXJy YXlPazohMSxlZGl0VHlwZToic3R5bGUifSksbGluZTp7Y29sb3I6Yyh7fSxu Lm1hcmtlci5saW5lLmNvbG9yLHthcnJheU9rOiExLGVkaXRUeXBlOiJzdHls ZSJ9KSx3aWR0aDpjKHt9LG4ubWFya2VyLmxpbmUud2lkdGgse2FycmF5T2s6 ITEsZWRpdFR5cGU6InN0eWxlIn0pLGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRU eXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJzdHlsZSJ9fWUuZXhwb3J0cz17bWVh c3VyZTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXSxlZGl0VHlwZToi Y2FsYyJ9LGJhc2U6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGFycmF5 T2s6ITEsZWRpdFR5cGU6ImNhbGMifSx4Om4ueCx4MDpuLngwLGR4Om4uZHgs eTpuLnkseTA6bi55MCxkeTpuLmR5LGhvdmVydGV4dDpuLmhvdmVydGV4dCxo b3ZlcnRlbXBsYXRlOm8oe30se2tleXM6bC5ldmVudERhdGFLZXlzfSksaG92 ZXJpbmZvOmMoe30saS5ob3ZlcmluZm8se2ZsYWdzOlsibmFtZSIsIngiLCJ5 IiwidGV4dCIsImluaXRpYWwiLCJkZWx0YSIsImZpbmFsIl19KSx0ZXh0aW5m bzp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsibGFiZWwiLCJ0ZXh0Iiwi aW5pdGlhbCIsImRlbHRhIiwiZmluYWwiXSxleHRyYXM6WyJub25lIl0sZWRp dFR5cGU6InBsb3QiLGFycmF5T2s6ITF9LHRleHR0ZW1wbGF0ZTpzKHtlZGl0 VHlwZToicGxvdCJ9LHtrZXlzOmwuZXZlbnREYXRhS2V5cy5jb25jYXQoWyJs YWJlbCJdKX0pLHRleHQ6bi50ZXh0LHRleHRwb3NpdGlvbjpuLnRleHRwb3Np dGlvbixpbnNpZGV0ZXh0YW5jaG9yOm4uaW5zaWRldGV4dGFuY2hvcix0ZXh0 YW5nbGU6bi50ZXh0YW5nbGUsdGV4dGZvbnQ6bi50ZXh0Zm9udCxpbnNpZGV0 ZXh0Zm9udDpuLmluc2lkZXRleHRmb250LG91dHNpZGV0ZXh0Zm9udDpuLm91 dHNpZGV0ZXh0Zm9udCxjb25zdHJhaW50ZXh0Om4uY29uc3RyYWludGV4dCxj bGlwb25heGlzOm4uY2xpcG9uYXhpcyxvcmllbnRhdGlvbjpuLm9yaWVudGF0 aW9uLG9mZnNldDpuLm9mZnNldCx3aWR0aDpuLndpZHRoLGluY3JlYXNpbmc6 aCgpLGRlY3JlYXNpbmc6aCgpLHRvdGFsczpoKCksY29ubmVjdG9yOntsaW5l Ontjb2xvcjpjKHt9LGEuY29sb3Ise2RmbHQ6dS5kZWZhdWx0TGluZX0pLHdp ZHRoOmMoe30sYS53aWR0aCx7ZWRpdFR5cGU6InBsb3QifSksZGFzaDphLmRh c2gsZWRpdFR5cGU6InBsb3QifSxtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6WyJzcGFubmluZyIsImJldHdlZW4iXSxkZmx0OiJiZXR3ZWVu IixlZGl0VHlwZToicGxvdCJ9LHZpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4i LGRmbHQ6ITAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LG9m ZnNldGdyb3VwOm4ub2Zmc2V0Z3JvdXAsYWxpZ25tZW50Z3JvdXA6bi5hbGln bm1lbnRncm91cH19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTkyLCIu Li8uLi9saWIvZXh0ZW5kIjo3MDgsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMi Ojc2MiwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6ODQxLCIu Li9iYXIvYXR0cmlidXRlcyI6ODU2LCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMi OjExMjAsIi4vY29uc3RhbnRzIjoxMjg3fV0sMTI4NjpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyIpLGE9dCgiLi4vLi4vbGliIikubWVyZ2VBcnJheSxpPXQoIi4u L3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKSxvPXQoIi4uLy4uL2NvbnN0YW50 cy9udW1lcmljYWwiKS5CQUROVU07ZnVuY3Rpb24gcyh0KXtyZXR1cm4iYSI9 PT10fHwiYWJzb2x1dGUiPT09dH1mdW5jdGlvbiBsKHQpe3JldHVybiJ0Ij09 PXR8fCJ0b3RhbCI9PT10fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBy LGMsdT1uLmdldEZyb21JZCh0LGUueGF4aXN8fCJ4IiksaD1uLmdldEZyb21J ZCh0LGUueWF4aXN8fCJ5Iik7ImgiPT09ZS5vcmllbnRhdGlvbj8ocj11Lm1h a2VDYWxjZGF0YShlLCJ4IiksYz1oLm1ha2VDYWxjZGF0YShlLCJ5IikpOihy PWgubWFrZUNhbGNkYXRhKGUsInkiKSxjPXUubWFrZUNhbGNkYXRhKGUsIngi KSk7Zm9yKHZhciBmLHA9TWF0aC5taW4oYy5sZW5ndGgsci5sZW5ndGgpLGQ9 bmV3IEFycmF5KHApLGc9MCx2PSExLG09MDttPHA7bSsrKXt2YXIgeT1yW21d fHwwLHg9ITE7KHJbbV0hPT1vfHxsKGUubWVhc3VyZVttXSl8fHMoZS5tZWFz dXJlW21dKSkmJm0rMTxwJiYoclttKzFdIT09b3x8bChlLm1lYXN1cmVbbSsx XSl8fHMoZS5tZWFzdXJlW20rMV0pKSYmKHg9ITApO3ZhciBiPWRbbV09e2k6 bSxwOmNbbV0sczp5LHJhd1M6eSxjTmV4dDp4fTtzKGUubWVhc3VyZVttXSk/ KGc9Yi5zLGIuaXNTdW09ITAsYi5kaXI9InRvdGFscyIsYi5zPWcpOmwoZS5t ZWFzdXJlW21dKT8oYi5pc1N1bT0hMCxiLmRpcj0idG90YWxzIixiLnM9Zyk6 KGIuaXNTdW09ITEsYi5kaXI9Yi5yYXdTPDA/ImRlY3JlYXNpbmciOiJpbmNy ZWFzaW5nIixmPWIucyxiLnM9ZytmLGcrPWYpLCJ0b3RhbHMiPT09Yi5kaXIm Jih2PSEwKSxlLmlkcyYmKGIuaWQ9U3RyaW5nKGUuaWRzW21dKSksYi52PShl LmJhc2V8fDApK2d9cmV0dXJuIGQubGVuZ3RoJiYoZFswXS5oYXNUb3RhbHM9 diksYShlLnRleHQsZCwidHgiKSxhKGUuaG92ZXJ0ZXh0LGQsImh0eCIpLGko ZCxlKSxkfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo2OTMsIi4u Ly4uL2xpYiI6NzE3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1 LCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjoxMTIyfV0sMTI4NzpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2V2ZW50RGF0 YUtleXM6WyJpbml0aWFsIiwiZGVsdGEiLCJmaW5hbCJdfX0se31dLDEyODg6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYmFy L2Nyb3NzX3RyYWNlX2NhbGMiKS5zZXRHcm91cFBvc2l0aW9ucztlLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXt2YXIgcixhLGk9dC5fZnVsbExheW91dCxvPXQu X2Z1bGxEYXRhLHM9dC5jYWxjZGF0YSxsPWUueGF4aXMsYz1lLnlheGlzLHU9 W10saD1bXSxmPVtdO2ZvcihhPTA7YTxvLmxlbmd0aDthKyspe3ZhciBwPW9b YV07ITA9PT1wLnZpc2libGUmJnAueGF4aXM9PT1sLl9pZCYmcC55YXhpcz09 PWMuX2lkJiYid2F0ZXJmYWxsIj09PXAudHlwZSYmKHI9c1thXSwiaCI9PT1w Lm9yaWVudGF0aW9uP2YucHVzaChyKTpoLnB1c2gociksdS5wdXNoKHIpKX12 YXIgZD17bW9kZTppLndhdGVyZmFsbG1vZGUsbm9ybTppLndhdGVyZmFsbG5v cm0sZ2FwOmkud2F0ZXJmYWxsZ2FwLGdyb3VwZ2FwOmkud2F0ZXJmYWxsZ3Jv dXBnYXB9O2ZvcihuKHQsbCxjLGgsZCksbih0LGMsbCxmLGQpLGE9MDthPHUu bGVuZ3RoO2ErKyl7cj11W2FdO2Zvcih2YXIgZz0wO2c8ci5sZW5ndGg7Zysr KXt2YXIgdj1yW2ddOyExPT09di5pc1N1bSYmKHYuczArPTA9PT1nPzA6cltn LTFdLnMpLGcrMTxyLmxlbmd0aCYmKHJbZ10ubmV4dFAwPXJbZysxXS5wMCxy W2ddLm5leHRTMD1yW2crMV0uczApfX19fSx7Ii4uL2Jhci9jcm9zc190cmFj ZV9jYWxjIjo4NTl9XSwxMjg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vYmFyL2RlZmF1bHRz IikuaGFuZGxlR3JvdXBpbmdEZWZhdWx0cyxpPXQoIi4uL2Jhci9kZWZhdWx0 cyIpLmhhbmRsZVRleHQsbz10KCIuLi9zY2F0dGVyL3h5X2RlZmF1bHRzIiks cz10KCIuL2F0dHJpYnV0ZXMiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvY29s b3IiKSxjPXQoIi4uLy4uL2NvbnN0YW50cy9kZWx0YS5qcyIpLHU9Yy5JTkNS RUFTSU5HLkNPTE9SLGg9Yy5ERUNSRUFTSU5HLkNPTE9SLGY9IiM0NDk5RkYi O2Z1bmN0aW9uIHAodCxlLHIpe3QoZSsiLm1hcmtlci5jb2xvciIsciksdChl KyIubWFya2VyLmxpbmUuY29sb3IiLGwuZGVmYXVsdExpbmUpLHQoZSsiLm1h cmtlci5saW5lLndpZHRoIil9ZS5leHBvcnRzPXtzdXBwbHlEZWZhdWx0czpm dW5jdGlvbih0LGUscixhKXtmdW5jdGlvbiBsKHIsYSl7cmV0dXJuIG4uY29l cmNlKHQsZSxzLHIsYSl9aWYobyh0LGUsYSxsKSl7bCgibWVhc3VyZSIpLGwo Im9yaWVudGF0aW9uIixlLngmJiFlLnk/ImgiOiJ2IiksbCgiYmFzZSIpLGwo Im9mZnNldCIpLGwoIndpZHRoIiksbCgidGV4dCIpLGwoImhvdmVydGV4dCIp LGwoImhvdmVydGVtcGxhdGUiKTt2YXIgYz1sKCJ0ZXh0cG9zaXRpb24iKTtp KHQsZSxhLGwsYyx7bW9kdWxlSGFzU2VsZWN0ZWQ6ITEsbW9kdWxlSGFzVW5z ZWxlY3RlZDohMSxtb2R1bGVIYXNDb25zdHJhaW46ITAsbW9kdWxlSGFzQ2xp cG9uYXhpczohMCxtb2R1bGVIYXNUZXh0YW5nbGU6ITAsbW9kdWxlSGFzSW5z aWRlYW5jaG9yOiEwfSksIm5vbmUiIT09ZS50ZXh0cG9zaXRpb24mJihsKCJ0 ZXh0dGVtcGxhdGUiKSxlLnRleHR0ZW1wbGF0ZXx8bCgidGV4dGluZm8iKSks cChsLCJpbmNyZWFzaW5nIix1KSxwKGwsImRlY3JlYXNpbmciLGgpLHAobCwi dG90YWxzIixmKSxsKCJjb25uZWN0b3IudmlzaWJsZSIpJiYobCgiY29ubmVj dG9yLm1vZGUiKSxsKCJjb25uZWN0b3IubGluZS53aWR0aCIpJiYobCgiY29u bmVjdG9yLmxpbmUuY29sb3IiKSxsKCJjb25uZWN0b3IubGluZS5kYXNoIikp KX1lbHNlIGUudmlzaWJsZT0hMX0sY3Jvc3NUcmFjZURlZmF1bHRzOmZ1bmN0 aW9uKHQsZSl7dmFyIHIsaTtmdW5jdGlvbiBvKHQpe3JldHVybiBuLmNvZXJj ZShpLl9pbnB1dCxpLHMsdCl9aWYoImdyb3VwIj09PWUud2F0ZXJmYWxsbW9k ZSlmb3IodmFyIGw9MDtsPHQubGVuZ3RoO2wrKylyPShpPXRbbF0pLl9pbnB1 dCxhKHIsaSxlLG8pfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6NTky LCIuLi8uLi9jb25zdGFudHMvZGVsdGEuanMiOjY4NywiLi4vLi4vbGliIjo3 MTcsIi4uL2Jhci9kZWZhdWx0cyI6ODYwLCIuLi9zY2F0dGVyL3h5X2RlZmF1 bHRzIjoxMTQ2LCIuL2F0dHJpYnV0ZXMiOjEyODV9XSwxMjkwOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e3JldHVybiB0Lng9InhWYWwiaW4gZT9lLnhWYWw6ZS54LHQueT0ieVZhbCJp biBlP2UueVZhbDplLnksImluaXRpYWwiaW4gZSYmKHQuaW5pdGlhbD1lLmlu aXRpYWwpLCJkZWx0YSJpbiBlJiYodC5kZWx0YT1lLmRlbHRhKSwiZmluYWwi aW4gZSYmKHQuZmluYWw9ZS5maW5hbCksZS54YSYmKHQueGF4aXM9ZS54YSks ZS55YSYmKHQueWF4aXM9ZS55YSksdH19LHt9XSwxMjkxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRl c2lhbi9heGVzIikuaG92ZXJMYWJlbFRleHQsYT10KCIuLi8uLi9jb21wb25l bnRzL2NvbG9yIikub3BhY2l0eSxpPXQoIi4uL2Jhci9ob3ZlciIpLmhvdmVy T25CYXJzLG89dCgiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpzIikscz1vLklO Q1JFQVNJTkcuU1lNQk9MLGw9by5ERUNSRUFTSU5HLlNZTUJPTDtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIGM9aSh0LGUscixvKTtpZihjKXt2 YXIgdT1jLmNkLGg9dVswXS50cmFjZSxmPSJoIj09PWgub3JpZW50YXRpb24s cD1mP3QueGE6dC55YSxkPXVbYy5pbmRleF0sZz1kLmlzU3VtP2QuYitkLnM6 ZC5yYXdTO2lmKCFkLmlzU3VtKXtjLmluaXRpYWw9ZC5iK2Qucy1nLGMuZGVs dGE9ZyxjLmZpbmFsPWMuaW5pdGlhbCtjLmRlbHRhO3ZhciB2PXcoTWF0aC5h YnMoYy5kZWx0YSkpO2MuZGVsdGFMYWJlbD1nPDA/IigiK3YrIikiOnYsYy5m aW5hbExhYmVsPXcoYy5maW5hbCksYy5pbml0aWFsTGFiZWw9dyhjLmluaXRp YWwpfXZhciBtPWQuaGl8fGguaG92ZXJpbmZvLHk9W107aWYobSYmIm5vbmUi IT09bSYmInNraXAiIT09bSl7dmFyIHg9ImFsbCI9PT1tLGI9bS5zcGxpdCgi KyIpLF89ZnVuY3Rpb24odCl7cmV0dXJuIHh8fC0xIT09Yi5pbmRleE9mKHQp fTtkLmlzU3VtfHwoIV8oImZpbmFsIil8fF8oZj8ieCI6InkiKXx8eS5wdXNo KGMuZmluYWxMYWJlbCksXygiZGVsdGEiKSYmKGc8MD95LnB1c2goYy5kZWx0 YUxhYmVsKyIgIitsKTp5LnB1c2goYy5kZWx0YUxhYmVsKyIgIitzKSksXygi aW5pdGlhbCIpJiZ5LnB1c2goIkluaXRpYWw6ICIrYy5pbml0aWFsTGFiZWwp KX1yZXR1cm4geS5sZW5ndGgmJihjLmV4dHJhVGV4dD15LmpvaW4oIjxicj4i KSksYy5jb2xvcj1mdW5jdGlvbih0LGUpe3ZhciByPXRbZS5kaXJdLm1hcmtl cixuPXIuY29sb3IsaT1yLmxpbmUuY29sb3Isbz1yLmxpbmUud2lkdGg7aWYo YShuKSlyZXR1cm4gbjtpZihhKGkpJiZvKXJldHVybiBpfShoLGQpLFtjXX1m dW5jdGlvbiB3KHQpe3JldHVybiBuKHAsdCl9fX0seyIuLi8uLi9jb21wb25l bnRzL2NvbG9yIjo1OTIsIi4uLy4uL2NvbnN0YW50cy9kZWx0YS5qcyI6Njg3 LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NzY1LCIuLi9iYXIvaG92 ZXIiOjg2M31dLDEyOTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91 dEF0dHJpYnV0ZXM6dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseURl ZmF1bHRzOnQoIi4vZGVmYXVsdHMiKS5zdXBwbHlEZWZhdWx0cyxjcm9zc1Ry YWNlRGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLmNyb3NzVHJhY2VEZWZhdWx0 cyxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIp LGNhbGM6dCgiLi9jYWxjIiksY3Jvc3NUcmFjZUNhbGM6dCgiLi9jcm9zc190 cmFjZV9jYWxjIikscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0eWxl Iikuc3R5bGUsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLGV2ZW50RGF0YTp0 KCIuL2V2ZW50X2RhdGEiKSxzZWxlY3RQb2ludHM6dCgiLi4vYmFyL3NlbGVj dCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJ3YXRlcmZhbGwiLGJhc2VQ bG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3Jp ZXM6WyJiYXItbGlrZSIsImNhcnRlc2lhbiIsInN2ZyIsIm9yaWVudGVkIiwi c2hvd0xlZ2VuZCIsInpvb21TY2FsZSJdLG1ldGE6e319fSx7Ii4uLy4uL3Bs b3RzL2NhcnRlc2lhbiI6Nzc2LCIuLi9iYXIvc2VsZWN0Ijo4NjgsIi4vYXR0 cmlidXRlcyI6MTI4NSwiLi9jYWxjIjoxMjg2LCIuL2Nyb3NzX3RyYWNlX2Nh bGMiOjEyODgsIi4vZGVmYXVsdHMiOjEyODksIi4vZXZlbnRfZGF0YSI6MTI5 MCwiLi9ob3ZlciI6MTI5MSwiLi9sYXlvdXRfYXR0cmlidXRlcyI6MTI5Mywi Li9sYXlvdXRfZGVmYXVsdHMiOjEyOTQsIi4vcGxvdCI6MTI5NSwiLi9zdHls ZSI6MTI5Nn1dLDEyOTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXt3YXRlcmZhbGxtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6WyJncm91cCIsIm92ZXJsYXkiXSxkZmx0OiJncm91cCIsZWRp dFR5cGU6ImNhbGMifSx3YXRlcmZhbGxnYXA6e3ZhbFR5cGU6Im51bWJlciIs bWluOjAsbWF4OjEsZWRpdFR5cGU6ImNhbGMifSx3YXRlcmZhbGxncm91cGdh cDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjAsZWRpdFR5 cGU6ImNhbGMifX19LHt9XSwxMjk0OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9sYXlvdXRfYXR0 cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9ITE7 ZnVuY3Rpb24gbyhyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfWZv cih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgbD1yW3NdO2lmKGwudmlz aWJsZSYmIndhdGVyZmFsbCI9PT1sLnR5cGUpe2k9ITA7YnJlYWt9fWkmJihv KCJ3YXRlcmZhbGxtb2RlIiksbygid2F0ZXJmYWxsZ2FwIiwuMiksbygid2F0 ZXJmYWxsZ3JvdXBnYXAiKSl9fSx7Ii4uLy4uL2xpYiI6NzE3LCIuL2xheW91 dF9hdHRyaWJ1dGVzIjoxMjkzfV0sMTI5NTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vbGliIiksaT10 KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxvPXQoIi4uL2Jhci9wbG90 Iikscz10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IikuY2xlYXJNaW5UZXh0U2l6 ZTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCl7dmFyIGM9dC5fZnVsbExh eW91dDtzKCJ3YXRlcmZhbGwiLGMpLG8ucGxvdCh0LGUscixsLHttb2RlOmMu d2F0ZXJmYWxsbW9kZSxub3JtOmMud2F0ZXJmYWxsbW9kZSxnYXA6Yy53YXRl cmZhbGxnYXAsZ3JvdXBnYXA6Yy53YXRlcmZhbGxncm91cGdhcH0pLGZ1bmN0 aW9uKHQsZSxyLG8pe3ZhciBzPWUueGF4aXMsbD1lLnlheGlzO2EubWFrZVRy YWNlR3JvdXBzKG8sciwidHJhY2UgYmFycyIpLmVhY2goZnVuY3Rpb24ocil7 dmFyIG89bi5zZWxlY3QodGhpcyksYz1yWzBdLnRyYWNlLHU9YS5lbnN1cmVT aW5nbGUobywiZyIsImxpbmVzIik7aWYoYy5jb25uZWN0b3ImJmMuY29ubmVj dG9yLnZpc2libGUpe3ZhciBoPSJoIj09PWMub3JpZW50YXRpb24sZj1jLmNv bm5lY3Rvci5tb2RlLHA9dS5zZWxlY3RBbGwoImcubGluZSIpLmRhdGEoYS5p ZGVudGl0eSk7cC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxpbmUi LCEwKSxwLmV4aXQoKS5yZW1vdmUoKTt2YXIgZD1wLnNpemUoKTtwLmVhY2go ZnVuY3Rpb24ocixvKXtpZihvPT09ZC0xfHxyLmNOZXh0KXt2YXIgYz1mdW5j dGlvbih0LGUscixuKXt2YXIgYT1bXSxpPVtdLG89bj9lOnIscz1uP3I6ZTty ZXR1cm4gYVswXT1vLmMycCh0LnMwLCEwKSxpWzBdPXMuYzJwKHQucDAsITAp LGFbMV09by5jMnAodC5zMSwhMCksaVsxXT1zLmMycCh0LnAxLCEwKSxhWzJd PW8uYzJwKHQubmV4dFMwLCEwKSxpWzJdPXMuYzJwKHQubmV4dFAwLCEwKSxu P1thLGldOltpLGFdfShyLHMsbCxoKSx1PWNbMF0scD1jWzFdLGc9IiI7InNw YW5uaW5nIj09PWYmJiFyLmlzU3VtJiZvPjAmJihnKz1oPyJNIit1WzBdKyIs IitwWzFdKyJWIitwWzBdOiJNIit1WzFdKyIsIitwWzBdKyJIIit1WzBdKSwi YmV0d2VlbiIhPT1mJiYoci5pc1N1bXx8bzxkLTEpJiYoZys9aD8iTSIrdVsx XSsiLCIrcFswXSsiViIrcFsxXToiTSIrdVswXSsiLCIrcFsxXSsiSCIrdVsx XSksdm9pZCAwIT09dVsyXSYmdm9pZCAwIT09cFsyXSYmKGcrPWg/Ik0iK3Vb MV0rIiwiK3BbMV0rIlYiK3BbMl06Ik0iK3VbMV0rIiwiK3BbMV0rIkgiK3Vb Ml0pLCIiPT09ZyYmKGc9Ik0wLDBaIiksYS5lbnN1cmVTaW5nbGUobi5zZWxl Y3QodGhpcyksInBhdGgiKS5hdHRyKCJkIixnKS5jYWxsKGkuc2V0Q2xpcFVy bCxlLmxheWVyQ2xpcElkLHQpfX0pfWVsc2UgdS5yZW1vdmUoKX0pfSh0LGUs cixsKX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMsIi4uLy4u L2xpYiI6NzE3LCIuLi9iYXIvcGxvdCI6ODY3LCIuLi9iYXIvdW5pZm9ybV90 ZXh0Ijo4NzIsZDM6MTY1fV0sMTI5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCJkMyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9k cmF3aW5nIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIu Li8uLi9jb25zdGFudHMvaW50ZXJhY3Rpb25zIikuREVTRUxFQ1RESU0scz10 KCIuLi9iYXIvc3R5bGUiKSxsPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKS5y ZXNpemVUZXh0LGM9cy5zdHlsZVRleHRQb2ludHM7ZS5leHBvcnRzPXtzdHls ZTpmdW5jdGlvbih0LGUscil7dmFyIHM9cnx8bi5zZWxlY3QodCkuc2VsZWN0 QWxsKCJnLndhdGVyZmFsbGxheWVyIikuc2VsZWN0QWxsKCJnLnRyYWNlIik7 bCh0LHMsIndhdGVyZmFsbCIpLHMuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9u KHQpe3JldHVybiB0WzBdLnRyYWNlLm9wYWNpdHl9KSxzLmVhY2goZnVuY3Rp b24oZSl7dmFyIHI9bi5zZWxlY3QodGhpcykscz1lWzBdLnRyYWNlO3Iuc2Vs ZWN0QWxsKCIucG9pbnQgPiBwYXRoIikuZWFjaChmdW5jdGlvbih0KXtpZigh dC5pc0JsYW5rKXt2YXIgZT1zW3QuZGlyXS5tYXJrZXI7bi5zZWxlY3QodGhp cykuY2FsbChpLmZpbGwsZS5jb2xvcikuY2FsbChpLnN0cm9rZSxlLmxpbmUu Y29sb3IpLmNhbGwoYS5kYXNoTGluZSxlLmxpbmUuZGFzaCxlLmxpbmUud2lk dGgpLnN0eWxlKCJvcGFjaXR5IixzLnNlbGVjdGVkcG9pbnRzJiYhdC5zZWxl Y3RlZD9vOjEpfX0pLGMocixzLHQpLHIuc2VsZWN0QWxsKCIubGluZXMiKS5l YWNoKGZ1bmN0aW9uKCl7dmFyIHQ9cy5jb25uZWN0b3IubGluZTthLmxpbmVH cm91cFN0eWxlKG4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgicGF0aCIpLHQu d2lkdGgsdC5jb2xvcix0LmRhc2gpfSl9KX19fSx7Ii4uLy4uL2NvbXBvbmVu dHMvY29sb3IiOjU5MiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjo2MTMs Ii4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiOjY5MiwiLi4vYmFyL3N0 eWxlIjo4NzAsIi4uL2Jhci91bmlmb3JtX3RleHQiOjg3MixkMzoxNjV9XSwx Mjk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u L3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi9saWIiKSxpPXQoIi4u L3Bsb3RfYXBpL3Bsb3Rfc2NoZW1hIiksbz10KCIuL2hlbHBlcnMiKS5wb2lu dHNBY2Nlc3NvckZ1bmN0aW9uLHM9dCgiLi4vY29uc3RhbnRzL251bWVyaWNh bCIpLkJBRE5VTTtyLm1vZHVsZVR5cGU9InRyYW5zZm9ybSIsci5uYW1lPSJh Z2dyZWdhdGUiO3ZhciBsPXIuYXR0cmlidXRlcz17ZW5hYmxlZDp7dmFsVHlw ZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LGdyb3Vwczp7 dmFsVHlwZToic3RyaW5nIixzdHJpY3Q6ITAsbm9CbGFuazohMCxhcnJheU9r OiEwLGRmbHQ6IngiLGVkaXRUeXBlOiJjYWxjIn0sYWdncmVnYXRpb25zOntf aXNMaW5rZWRUb0FycmF5OiJhZ2dyZWdhdGlvbiIsdGFyZ2V0Ont2YWxUeXBl OiJzdHJpbmciLGVkaXRUeXBlOiJjYWxjIn0sZnVuYzp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOlsiY291bnQiLCJzdW0iLCJhdmciLCJtZWRpYW4i LCJtb2RlIiwicm1zIiwic3RkZGV2IiwibWluIiwibWF4IiwiZmlyc3QiLCJs YXN0IiwiY2hhbmdlIiwicmFuZ2UiXSxkZmx0OiJmaXJzdCIsZWRpdFR5cGU6 ImNhbGMifSxmdW5jbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVz Olsic2FtcGxlIiwicG9wdWxhdGlvbiJdLGRmbHQ6InNhbXBsZSIsZWRpdFR5 cGU6ImNhbGMifSxlbmFibGVkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEw LGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToi Y2FsYyJ9LGM9bC5hZ2dyZWdhdGlvbnM7ZnVuY3Rpb24gdSh0LGUscixpKXtp ZihpLmVuYWJsZWQpe2Zvcih2YXIgbz1pLnRhcmdldCxsPWEubmVzdGVkUHJv cGVydHkoZSxvKSxjPWwuZ2V0KCksdT1mdW5jdGlvbih0LGUpe3ZhciByPXQu ZnVuYyxuPWUuZDJjLGE9ZS5jMmQ7c3dpdGNoKHIpe2Nhc2UiY291bnQiOnJl dHVybiBoO2Nhc2UiZmlyc3QiOnJldHVybiBmO2Nhc2UibGFzdCI6cmV0dXJu IHA7Y2FzZSJzdW0iOnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0w LGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89bih0W2VbaV1dKTtvIT09cyYm KHIrPW8pfXJldHVybiBhKHIpfTtjYXNlImF2ZyI6cmV0dXJuIGZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByPTAsaT0wLG89MDtvPGUubGVuZ3RoO28rKyl7dmFy IGw9bih0W2Vbb11dKTtsIT09cyYmKHIrPWwsaSsrKX1yZXR1cm4gaT9hKHIv aSk6c307Y2FzZSJtaW4iOnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIg cj0xLzAsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1uKHRbZVtpXV0pO28h PT1zJiYocj1NYXRoLm1pbihyLG8pKX1yZXR1cm4gcj09PTEvMD9zOmEocil9 O2Nhc2UibWF4IjpyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEv MCxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPW4odFtlW2ldXSk7byE9PXMm JihyPU1hdGgubWF4KHIsbykpfXJldHVybiByPT09LTEvMD9zOmEocil9O2Nh c2UicmFuZ2UiOnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0xLzAs aT0tMS8wLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIGw9bih0W2Vbb11dKTts IT09cyYmKHI9TWF0aC5taW4ocixsKSxpPU1hdGgubWF4KGksbCkpfXJldHVy biBpPT09LTEvMHx8cj09PTEvMD9zOmEoaS1yKX07Y2FzZSJjaGFuZ2UiOnJl dHVybiBmdW5jdGlvbih0LGUpe3ZhciByPW4odFtlWzBdXSksaT1uKHRbZVtl Lmxlbmd0aC0xXV0pO3JldHVybiByPT09c3x8aT09PXM/czphKGktcil9O2Nh c2UibWVkaWFuIjpyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10s aT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1uKHRbZVtpXV0pO28hPT1zJiZy LnB1c2gobyl9aWYoIXIubGVuZ3RoKXJldHVybiBzO3Iuc29ydCgpO3ZhciBs PShyLmxlbmd0aC0xKS8yO3JldHVybiBhKChyW01hdGguZmxvb3IobCldK3Jb TWF0aC5jZWlsKGwpXSkvMil9O2Nhc2UibW9kZSI6cmV0dXJuIGZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByPXt9LGk9MCxvPXMsbD0wO2w8ZS5sZW5ndGg7bCsr KXt2YXIgYz1uKHRbZVtsXV0pO2lmKGMhPT1zKXt2YXIgdT1yW2NdPShyW2Nd fHwwKSsxO3U+aSYmKGk9dSxvPWMpfX1yZXR1cm4gaT9hKG8pOnN9O2Nhc2Ui cm1zIjpyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxpPTAsbz0w O288ZS5sZW5ndGg7bysrKXt2YXIgbD1uKHRbZVtvXV0pO2whPT1zJiYocis9 bCpsLGkrKyl9cmV0dXJuIGk/YShNYXRoLnNxcnQoci9pKSk6c307Y2FzZSJz dGRkZXYiOnJldHVybiBmdW5jdGlvbihlLHIpe3ZhciBhLGk9MCxvPTAsbD0x LGM9cztmb3IoYT0wO2E8ci5sZW5ndGgmJmM9PT1zO2ErKyljPW4oZVtyW2Fd XSk7aWYoYz09PXMpcmV0dXJuIHM7Zm9yKDthPHIubGVuZ3RoO2ErKyl7dmFy IHU9bihlW3JbYV1dKTtpZih1IT09cyl7dmFyIGg9dS1jO2krPWgsbys9aCpo LGwrK319dmFyIGY9InNhbXBsZSI9PT10LmZ1bmNtb2RlP2wtMTpsO3JldHVy biBmP01hdGguc3FydCgoby1pKmkvbCkvZik6MH19fShpLG4uZ2V0RGF0YUNv bnZlcnNpb25zKHQsZSxvLGMpKSxkPW5ldyBBcnJheShyLmxlbmd0aCksZz0w O2c8ci5sZW5ndGg7ZysrKWRbZ109dShjLHJbZ10pO2wuc2V0KGQpLCJjb3Vu dCI9PT1pLmZ1bmMmJmEucHVzaFVuaXF1ZShlLl9hcnJheUF0dHJzLG8pfX1m dW5jdGlvbiBoKHQsZSl7cmV0dXJuIGUubGVuZ3RofWZ1bmN0aW9uIGYodCxl KXtyZXR1cm4gdFtlWzBdXX1mdW5jdGlvbiBwKHQsZSl7cmV0dXJuIHRbZVtl Lmxlbmd0aC0xXV19ci5zdXBwbHlEZWZhdWx0cz1mdW5jdGlvbih0LGUpe3Zh ciByLG49e307ZnVuY3Rpb24gbyhlLHIpe3JldHVybiBhLmNvZXJjZSh0LG4s bCxlLHIpfWlmKCFvKCJlbmFibGVkIikpcmV0dXJuIG47dmFyIHM9aS5maW5k QXJyYXlBdHRyaWJ1dGVzKGUpLHU9e307Zm9yKHI9MDtyPHMubGVuZ3RoO3Ir Kyl1W3Nbcl1dPTE7dmFyIGg9bygiZ3JvdXBzIik7aWYoIUFycmF5LmlzQXJy YXkoaCkpe2lmKCF1W2hdKXJldHVybiBuLmVuYWJsZWQ9ITEsbjt1W2hdPTB9 dmFyIGYscD10LmFnZ3JlZ2F0aW9uc3x8W10sZD1uLmFnZ3JlZ2F0aW9ucz1u ZXcgQXJyYXkocC5sZW5ndGgpO2Z1bmN0aW9uIGcodCxlKXtyZXR1cm4gYS5j b2VyY2UocFtyXSxmLGMsdCxlKX1mb3Iocj0wO3I8cC5sZW5ndGg7cisrKXtm PXtfaW5kZXg6cn07dmFyIHY9ZygidGFyZ2V0IiksbT1nKCJmdW5jIik7Zygi ZW5hYmxlZCIpJiZ2JiYodVt2XXx8ImNvdW50Ij09PW0mJnZvaWQgMD09PXVb dl0pPygic3RkZGV2Ij09PW0mJmcoImZ1bmNtb2RlIiksdVt2XT0wLGRbcl09 Zik6ZFtyXT17ZW5hYmxlZDohMSxfaW5kZXg6cn19Zm9yKHI9MDtyPHMubGVu Z3RoO3IrKyl1W3Nbcl1dJiZkLnB1c2goe3RhcmdldDpzW3JdLGZ1bmM6Yy5m dW5jLmRmbHQsZW5hYmxlZDohMCxfaW5kZXg6LTF9KTtyZXR1cm4gbn0sci5j YWxjVHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyKXtpZihyLmVuYWJsZWQpe3Zh ciBuPXIuZ3JvdXBzLGk9YS5nZXRUYXJnZXRBcnJheShlLHt0YXJnZXQ6bn0p O2lmKGkpe3ZhciBzLGwsYyxoLGY9e30scD17fSxkPVtdLGc9byhlLnRyYW5z Zm9ybXMsciksdj1pLmxlbmd0aDtmb3IoZS5fbGVuZ3RoJiYodj1NYXRoLm1p bih2LGUuX2xlbmd0aCkpLHM9MDtzPHY7cysrKXZvaWQgMD09PShjPWZbbD1p W3NdXSk/KGZbbF09ZC5sZW5ndGgsaD1bc10sZC5wdXNoKGgpLHBbZltsXV09 ZyhzKSk6KGRbY10ucHVzaChzKSxwW2ZbbF1dPShwW2ZbbF1dfHxbXSkuY29u Y2F0KGcocykpKTtyLl9pbmRleFRvUG9pbnRzPXA7dmFyIG09ci5hZ2dyZWdh dGlvbnM7Zm9yKHM9MDtzPG0ubGVuZ3RoO3MrKyl1KHQsZSxkLG1bc10pOyJz dHJpbmciPT10eXBlb2YgbiYmdSh0LGUsZCx7dGFyZ2V0Om4sZnVuYzoiZmly c3QiLGVuYWJsZWQ6ITB9KSxlLl9sZW5ndGg9ZC5sZW5ndGh9fX19LHsiLi4v Y29uc3RhbnRzL251bWVyaWNhbCI6NjkzLCIuLi9saWIiOjcxNywiLi4vcGxv dF9hcGkvcGxvdF9zY2hlbWEiOjc1NCwiLi4vcGxvdHMvY2FydGVzaWFuL2F4 ZXMiOjc2NSwiLi9oZWxwZXJzIjoxMzAwfV0sMTI5ODpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxhPXQoIi4uL3Jl Z2lzdHJ5IiksaT10KCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgi Li9oZWxwZXJzIikucG9pbnRzQWNjZXNzb3JGdW5jdGlvbixzPXQoIi4uL2Nv bnN0YW50cy9maWx0ZXJfb3BzIiksbD1zLkNPTVBBUklTT05fT1BTLGM9cy5J TlRFUlZBTF9PUFMsdT1zLlNFVF9PUFM7ci5tb2R1bGVUeXBlPSJ0cmFuc2Zv cm0iLHIubmFtZT0iZmlsdGVyIixyLmF0dHJpYnV0ZXM9e2VuYWJsZWQ6e3Zh bFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSx0YXJn ZXQ6e3ZhbFR5cGU6InN0cmluZyIsc3RyaWN0OiEwLG5vQmxhbms6ITAsYXJy YXlPazohMCxkZmx0OiJ4IixlZGl0VHlwZToiY2FsYyJ9LG9wZXJhdGlvbjp7 dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOltdLmNvbmNhdChsKS5jb25j YXQoYykuY29uY2F0KHUpLGRmbHQ6Ij0iLGVkaXRUeXBlOiJjYWxjIn0sdmFs dWU6e3ZhbFR5cGU6ImFueSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0scHJl c2VydmVnYXBzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBl OiJjYWxjIn0sZWRpdFR5cGU6ImNhbGMifSxyLnN1cHBseURlZmF1bHRzPWZ1 bmN0aW9uKHQpe3ZhciBlPXt9O2Z1bmN0aW9uIGkoYSxpKXtyZXR1cm4gbi5j b2VyY2UodCxlLHIuYXR0cmlidXRlcyxhLGkpfWlmKGkoImVuYWJsZWQiKSl7 dmFyIG89aSgidGFyZ2V0Iik7aWYobi5pc0FycmF5T3JUeXBlZEFycmF5KG8p JiYwPT09by5sZW5ndGgpcmV0dXJuIGUuZW5hYmxlZD0hMSxlO2koInByZXNl cnZlZ2FwcyIpLGkoIm9wZXJhdGlvbiIpLGkoInZhbHVlIik7dmFyIHM9YS5n ZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZURlZmF1bHRz Iik7cyh0LGUsInZhbHVlY2FsZW5kYXIiLG51bGwpLHModCxlLCJ0YXJnZXRj YWxlbmRhciIsbnVsbCl9cmV0dXJuIGV9LHIuY2FsY1RyYW5zZm9ybT1mdW5j dGlvbih0LGUscil7aWYoci5lbmFibGVkKXt2YXIgYT1uLmdldFRhcmdldEFy cmF5KGUscik7aWYoYSl7dmFyIHM9ci50YXJnZXQsaD1hLmxlbmd0aDtlLl9s ZW5ndGgmJihoPU1hdGgubWluKGgsZS5fbGVuZ3RoKSk7dmFyIGY9ci50YXJn ZXRjYWxlbmRhcixwPWUuX2FycmF5QXR0cnMsZD1yLnByZXNlcnZlZ2Fwcztp Zigic3RyaW5nIj09dHlwZW9mIHMpe3ZhciBnPW4ubmVzdGVkUHJvcGVydHko ZSxzKyJjYWxlbmRhciIpLmdldCgpO2cmJihmPWcpfXZhciB2LG0seT1mdW5j dGlvbih0LGUscil7dmFyIG49dC5vcGVyYXRpb24sYT10LnZhbHVlLGk9QXJy YXkuaXNBcnJheShhKTtmdW5jdGlvbiBvKHQpe3JldHVybi0xIT09dC5pbmRl eE9mKG4pfXZhciBzLGg9ZnVuY3Rpb24ocil7cmV0dXJuIGUociwwLHQudmFs dWVjYWxlbmRhcil9LGY9ZnVuY3Rpb24odCl7cmV0dXJuIGUodCwwLHIpfTtv KGwpP3M9aChpP2FbMF06YSk6byhjKT9zPWk/W2goYVswXSksaChhWzFdKV06 W2goYSksaChhKV06byh1KSYmKHM9aT9hLm1hcChoKTpbaChhKV0pO3N3aXRj aChuKXtjYXNlIj0iOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZih0KT09 PXN9O2Nhc2UiIT0iOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZih0KSE9 PXN9O2Nhc2UiPCI6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmKHQpPHN9 O2Nhc2UiPD0iOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZih0KTw9c307 Y2FzZSI+IjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGYodCk+c307Y2Fz ZSI+PSI6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmKHQpPj1zfTtjYXNl IltdIjpyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9Zih0KTtyZXR1cm4gZT49 c1swXSYmZTw9c1sxXX07Y2FzZSIoKSI6cmV0dXJuIGZ1bmN0aW9uKHQpe3Zh ciBlPWYodCk7cmV0dXJuIGU+c1swXSYmZTxzWzFdfTtjYXNlIlspIjpyZXR1 cm4gZnVuY3Rpb24odCl7dmFyIGU9Zih0KTtyZXR1cm4gZT49c1swXSYmZTxz WzFdfTtjYXNlIihdIjpyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9Zih0KTty ZXR1cm4gZT5zWzBdJiZlPD1zWzFdfTtjYXNlIl1bIjpyZXR1cm4gZnVuY3Rp b24odCl7dmFyIGU9Zih0KTtyZXR1cm4gZTw9c1swXXx8ZT49c1sxXX07Y2Fz ZSIpKCI6cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPWYodCk7cmV0dXJuIGU8 c1swXXx8ZT5zWzFdfTtjYXNlIl0oIjpyZXR1cm4gZnVuY3Rpb24odCl7dmFy IGU9Zih0KTtyZXR1cm4gZTw9c1swXXx8ZT5zWzFdfTtjYXNlIilbIjpyZXR1 cm4gZnVuY3Rpb24odCl7dmFyIGU9Zih0KTtyZXR1cm4gZTxzWzBdfHxlPj1z WzFdfTtjYXNlInt9IjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1z LmluZGV4T2YoZih0KSl9O2Nhc2UifXsiOnJldHVybiBmdW5jdGlvbih0KXty ZXR1cm4tMT09PXMuaW5kZXhPZihmKHQpKX19fShyLGkuZ2V0RGF0YVRvQ29v cmRGdW5jKHQsZSxzLGEpLGYpLHg9e30sYj17fSxfPTA7ZD8odj1mdW5jdGlv bih0KXt4W3QuYXN0cl09bi5leHRlbmREZWVwKFtdLHQuZ2V0KCkpLHQuc2V0 KG5ldyBBcnJheShoKSl9LG09ZnVuY3Rpb24odCxlKXt2YXIgcj14W3QuYXN0 cl1bZV07dC5nZXQoKVtlXT1yfSk6KHY9ZnVuY3Rpb24odCl7eFt0LmFzdHJd PW4uZXh0ZW5kRGVlcChbXSx0LmdldCgpKSx0LnNldChbXSl9LG09ZnVuY3Rp b24odCxlKXt2YXIgcj14W3QuYXN0cl1bZV07dC5nZXQoKS5wdXNoKHIpfSks VCh2KTtmb3IodmFyIHc9byhlLnRyYW5zZm9ybXMsciksaz0wO2s8aDtrKysp e3koYVtrXSk/KFQobSxrKSxiW18rK109dyhrKSk6ZCYmXysrfXIuX2luZGV4 VG9Qb2ludHM9YixlLl9sZW5ndGg9X319ZnVuY3Rpb24gVCh0LHIpe2Zvcih2 YXIgYT0wO2E8cC5sZW5ndGg7YSsrKXt0KG4ubmVzdGVkUHJvcGVydHkoZSxw W2FdKSxyKX19fX0seyIuLi9jb25zdGFudHMvZmlsdGVyX29wcyI6Njg5LCIu Li9saWIiOjcxNywiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwiLi4v cmVnaXN0cnkiOjg0NiwiLi9oZWxwZXJzIjoxMzAwfV0sMTI5OTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxhPXQo Ii4uL3Bsb3RfYXBpL3Bsb3Rfc2NoZW1hIiksaT10KCIuLi9wbG90cy9wbG90 cyIpLG89dCgiLi9oZWxwZXJzIikucG9pbnRzQWNjZXNzb3JGdW5jdGlvbjtm dW5jdGlvbiBzKHQsZSl7dmFyIHIscyxsLGMsdSxoLGYscCxkLGcsdj1lLnRy YW5zZm9ybSxtPWUudHJhbnNmb3JtSW5kZXgseT10LnRyYW5zZm9ybXNbbV0u Z3JvdXBzLHg9byh0LnRyYW5zZm9ybXMsdik7aWYoIW4uaXNBcnJheU9yVHlw ZWRBcnJheSh5KXx8MD09PXkubGVuZ3RoKXJldHVyblt0XTt2YXIgYj1uLmZp bHRlclVuaXF1ZSh5KSxfPW5ldyBBcnJheShiLmxlbmd0aCksdz15Lmxlbmd0 aCxrPWEuZmluZEFycmF5QXR0cmlidXRlcyh0KSxUPXYuc3R5bGVzfHxbXSxN PXt9O2ZvcihyPTA7cjxULmxlbmd0aDtyKyspTVtUW3JdLnRhcmdldF09VFty XS52YWx1ZTt2LnN0eWxlcyYmKGc9bi5rZXllZENvbnRhaW5lcih2LCJzdHls ZXMiLCJ0YXJnZXQiLCJ2YWx1ZS5uYW1lIikpO3ZhciBBPXt9LFM9e307Zm9y KHI9MDtyPGIubGVuZ3RoO3IrKyl7QVtoPWJbcl1dPXIsU1toXT0wLChmPV9b cl09bi5leHRlbmREZWVwTm9BcnJheXMoe30sdCkpLl9ncm91cD1oLGYudHJh bnNmb3Jtc1ttXS5faW5kZXhUb1BvaW50cz17fTt2YXIgRT1udWxsO2Zvcihn JiYoRT1nLmdldChoKSksZi5uYW1lPUV8fCIiPT09RT9FOm4udGVtcGxhdGVT dHJpbmcodi5uYW1lZm9ybWF0LHt0cmFjZTp0Lm5hbWUsZ3JvdXA6aH0pLHA9 Zi50cmFuc2Zvcm1zLGYudHJhbnNmb3Jtcz1bXSxzPTA7czxwLmxlbmd0aDtz KyspZi50cmFuc2Zvcm1zW3NdPW4uZXh0ZW5kRGVlcE5vQXJyYXlzKHt9LHBb c10pO2ZvcihzPTA7czxrLmxlbmd0aDtzKyspbi5uZXN0ZWRQcm9wZXJ0eShm LGtbc10pLnNldChbXSl9Zm9yKGw9MDtsPGsubGVuZ3RoO2wrKyl7Zm9yKGM9 a1tsXSxzPTAsZD1bXTtzPGIubGVuZ3RoO3MrKylkW3NdPW4ubmVzdGVkUHJv cGVydHkoX1tzXSxjKS5nZXQoKTtmb3IodT1uLm5lc3RlZFByb3BlcnR5KHQs YykuZ2V0KCkscz0wO3M8dztzKyspZFtBW3lbc11dXS5wdXNoKHVbc10pfWZv cihzPTA7czx3O3MrKyl7KGY9X1tBW3lbc11dXSkudHJhbnNmb3Jtc1ttXS5f aW5kZXhUb1BvaW50c1tTW3lbc11dXT14KHMpLFNbeVtzXV0rK31mb3Iocj0w O3I8Yi5sZW5ndGg7cisrKWg9YltyXSxmPV9bcl0saS5jbGVhckV4cGFuZGVk VHJhY2VEZWZhdWx0Q29sb3JzKGYpLGY9bi5leHRlbmREZWVwTm9BcnJheXMo ZixNW2hdfHx7fSk7cmV0dXJuIF99ci5tb2R1bGVUeXBlPSJ0cmFuc2Zvcm0i LHIubmFtZT0iZ3JvdXBieSIsci5hdHRyaWJ1dGVzPXtlbmFibGVkOnt2YWxU eXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sZ3JvdXBz Ont2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdLGVkaXRUeXBlOiJjYWxj In0sbmFtZWZvcm1hdDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2Fs YyJ9LHN0eWxlczp7X2lzTGlua2VkVG9BcnJheToic3R5bGUiLHRhcmdldDp7 dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyJ9LHZhbHVlOnt2YWxU eXBlOiJhbnkiLGRmbHQ6e30sZWRpdFR5cGU6ImNhbGMiLF9jb21wYXJlQXNK U09OOiEwfSxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sci5z dXBwbHlEZWZhdWx0cz1mdW5jdGlvbih0LGUsYSl7dmFyIGksbz17fTtmdW5j dGlvbiBzKGUsYSl7cmV0dXJuIG4uY29lcmNlKHQsbyxyLmF0dHJpYnV0ZXMs ZSxhKX1pZighcygiZW5hYmxlZCIpKXJldHVybiBvO3MoImdyb3VwcyIpLHMo Im5hbWVmb3JtYXQiLGEuX2RhdGFMZW5ndGg+MT8iJXtncm91cH0gKCV7dHJh Y2V9KSI6IiV7Z3JvdXB9Iik7dmFyIGw9dC5zdHlsZXMsYz1vLnN0eWxlcz1b XTtpZihsKWZvcihpPTA7aTxsLmxlbmd0aDtpKyspe3ZhciB1PWNbaV09e307 bi5jb2VyY2UobFtpXSxjW2ldLHIuYXR0cmlidXRlcy5zdHlsZXMsInRhcmdl dCIpO3ZhciBoPW4uY29lcmNlKGxbaV0sY1tpXSxyLmF0dHJpYnV0ZXMuc3R5 bGVzLCJ2YWx1ZSIpO24uaXNQbGFpbk9iamVjdChoKT91LnZhbHVlPW4uZXh0 ZW5kRGVlcCh7fSxoKTpoJiZkZWxldGUgdS52YWx1ZX1yZXR1cm4gb30sci50 cmFuc2Zvcm09ZnVuY3Rpb24odCxlKXt2YXIgcixuLGEsaT1bXTtmb3Iobj0w O248dC5sZW5ndGg7bisrKWZvcihyPXModFtuXSxlKSxhPTA7YTxyLmxlbmd0 aDthKyspaS5wdXNoKHJbYV0pO3JldHVybiBpfX0seyIuLi9saWIiOjcxNywi Li4vcGxvdF9hcGkvcGxvdF9zY2hlbWEiOjc1NCwiLi4vcGxvdHMvcGxvdHMi OjgyNiwiLi9oZWxwZXJzIjoxMzAwfV0sMTMwMDpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtyLnBvaW50c0FjY2Vzc29yRnVuY3Rpb249ZnVuY3Rp b24odCxlKXtmb3IodmFyIHIsbixhPTA7YTx0Lmxlbmd0aCYmKHI9dFthXSkh PT1lO2ErKylyLl9pbmRleFRvUG9pbnRzJiYhMSE9PXIuZW5hYmxlZCYmKG49 ci5faW5kZXhUb1BvaW50cyk7cmV0dXJuIG4/ZnVuY3Rpb24odCl7cmV0dXJu IG5bdF19OmZ1bmN0aW9uKHQpe3JldHVyblt0XX19fSx7fV0sMTMwMTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIiKSxh PXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuL2hlbHBlcnMi KS5wb2ludHNBY2Nlc3NvckZ1bmN0aW9uO3IubW9kdWxlVHlwZT0idHJhbnNm b3JtIixyLm5hbWU9InNvcnQiLHIuYXR0cmlidXRlcz17ZW5hYmxlZDp7dmFs VHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LHRhcmdl dDp7dmFsVHlwZToic3RyaW5nIixzdHJpY3Q6ITAsbm9CbGFuazohMCxhcnJh eU9rOiEwLGRmbHQ6IngiLGVkaXRUeXBlOiJjYWxjIn0sb3JkZXI6e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFzY2VuZGluZyIsImRlc2NlbmRp bmciXSxkZmx0OiJhc2NlbmRpbmciLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5 cGU6ImNhbGMifSxyLnN1cHBseURlZmF1bHRzPWZ1bmN0aW9uKHQpe3ZhciBl PXt9O2Z1bmN0aW9uIGEoYSxpKXtyZXR1cm4gbi5jb2VyY2UodCxlLHIuYXR0 cmlidXRlcyxhLGkpfXJldHVybiBhKCJlbmFibGVkIikmJihhKCJ0YXJnZXQi KSxhKCJvcmRlciIpKSxlfSxyLmNhbGNUcmFuc2Zvcm09ZnVuY3Rpb24odCxl LHIpe2lmKHIuZW5hYmxlZCl7dmFyIG89bi5nZXRUYXJnZXRBcnJheShlLHIp O2lmKG8pe3ZhciBzPXIudGFyZ2V0LGw9by5sZW5ndGg7ZS5fbGVuZ3RoJiYo bD1NYXRoLm1pbihsLGUuX2xlbmd0aCkpO3ZhciBjLHUsaD1lLl9hcnJheUF0 dHJzLGY9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGEsaT1uZXcgQXJyYXkobiks bz1uZXcgQXJyYXkobik7Zm9yKGE9MDthPG47YSsrKWlbYV09e3Y6ZVthXSxp OmF9O2ZvcihpLnNvcnQoZnVuY3Rpb24odCxlKXtzd2l0Y2godC5vcmRlcil7 Y2FzZSJhc2NlbmRpbmciOnJldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBl KHQudiktZShyLnYpfTtjYXNlImRlc2NlbmRpbmciOnJldHVybiBmdW5jdGlv bih0LHIpe3JldHVybiBlKHIudiktZSh0LnYpfX19KHQscikpLGE9MDthPG47 YSsrKW9bYV09aVthXS5pO3JldHVybiBvfShyLG8sYS5nZXREYXRhVG9Db29y ZEZ1bmModCxlLHMsbyksbCkscD1pKGUudHJhbnNmb3JtcyxyKSxkPXt9O2Zv cihjPTA7YzxoLmxlbmd0aDtjKyspe3ZhciBnPW4ubmVzdGVkUHJvcGVydHko ZSxoW2NdKSx2PWcuZ2V0KCksbT1uZXcgQXJyYXkobCk7Zm9yKHU9MDt1PGw7 dSsrKW1bdV09dltmW3VdXTtnLnNldChtKX1mb3IodT0wO3U8bDt1KyspZFt1 XT1wKGZbdV0pO3IuX2luZGV4VG9Qb2ludHM9ZCxlLl9sZW5ndGg9bH19fX0s eyIuLi9saWIiOjcxNywiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjc2NSwi Li9oZWxwZXJzIjoxMzAwfV19LHt9LFsyNl0pKDI2KX0pOzwvc2NyaXB0PiAg ICAKICAgICAgICAgICAgPGRpdiBpZD0iMzQyOTQ4ODUtNmVjNi00YWRlLWE2 OGItYzE2YjcyNTlhMmQxIiBjbGFzcz0icGxvdGx5LWdyYXBoLWRpdiIgc3R5 bGU9ImhlaWdodDo4MDBweDsgd2lkdGg6MTAwMHB4OyI+PC9kaXY+CiAgICAg ICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5QTE9UTFlF TlY9d2luZG93LlBMT1RMWUVOViB8fCB7fTsKICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgiMzQyOTQ4ODUtNmVjNi00YWRlLWE2OGItYzE2YjcyNTlhMmQxIikpIHsK ICAgICAgICAgICAgICAgICAgICBQbG90bHkubmV3UGxvdCgKICAgICAgICAg ICAgICAgICAgICAgICAgJzM0Mjk0ODg1LTZlYzYtNGFkZS1hNjhiLWMxNmI3 MjU5YTJkMScsCiAgICAgICAgICAgICAgICAgICAgICAgIFt7Im5hbWUiOiAi RmlsZSBoYXNoIiwgInR5cGUiOiAiYmFyIiwgIngiOiBbIkNWRS0yMDE5LTk2 NzAiLCAiQ1ZFLTIwMTktMTI3MjUiLCAiQ1ZFLTIwMTktMTEzMiIsICJDVkUt MjAxOS05MDgxIiwgIkNWRS0yMDE5LTE2NTMiLCAiQ1ZFLTIwMjAtODUxNSIs ICJDVkUtMjAxOS0xNjUyIiwgIkNWRS0yMDE5LTA3NTIiLCAiQ1ZFLTIwMjAt MTAxNzMiLCAiQ1ZFLTIwMTktMTQ1OCIsICJDVkUtMjAyMC0xMDE4OSIsICJD VkUtMjAxOS0wNzA4IiwgIkNWRS0yMDIwLTEwOTg3IiwgIkNWRS0yMDIwLTUw OTIiLCAiQ1ZFLTIwMTktMTYyNzgiLCAiQ1ZFLTIwMTktMTY5MjAiLCAiQ1ZF LTIwMjAtNzIwOSIsICJDVkUtMjAyMC0xOTU2IiwgIkNWRS0yMDIwLTcxMTUi LCAiQ1ZFLTIwMTktMTY3NTkiLCAiQ1ZFLTIwMTktMzM5NiIsICJDVkUtMjAy MC0wOTY4IiwgIkNWRS0yMDE5LTExNTEwIiwgIkNWRS0yMDIwLTE3NDk2Iiwg IkNWRS0yMDIwLTE5MzciLCAiQ1ZFLTIwMTktMDg1OSIsICJDVkUtMjAxOS0x MDY5IiwgIkNWRS0yMDIwLTA3ODciLCAiQ1ZFLTIwMjAtNTkwMiIsICJDVkUt MjAxOS0xOTc4MSIsICJDVkUtMjAyMC0wOTg2IiwgIkNWRS0yMDIwLTEzODAi LCAiQ1ZFLTIwMjAtMDY4OCJdLCAieSI6IFs3NTA1LCA3NTA0LCAxMTc2LCA4 NzIsIDY2OSwgMjM3LCA2NDgsIDU4OCwgNTMyLCA0NTYsIDI4MywgMzA3LCAy OTQsIDIzMCwgMCwgMCwgMjI3LCAyMjcsIDIyNywgOTEsIDM4LCA1MSwgMTEs IDU4LCA1OCwgMjcsIDI3LCAyNywgMjgsIDEyLCAxMSwgOCwgMF19LCB7Im5h bWUiOiAiRG9tYWluL2hvc3RuYW1lIiwgInR5cGUiOiAiYmFyIiwgIngiOiBb IkNWRS0yMDE5LTk2NzAiLCAiQ1ZFLTIwMTktMTI3MjUiLCAiQ1ZFLTIwMTkt MTEzMiIsICJDVkUtMjAxOS05MDgxIiwgIkNWRS0yMDE5LTE2NTMiLCAiQ1ZF LTIwMjAtODUxNSIsICJDVkUtMjAxOS0xNjUyIiwgIkNWRS0yMDE5LTA3NTIi LCAiQ1ZFLTIwMjAtMTAxNzMiLCAiQ1ZFLTIwMTktMTQ1OCIsICJDVkUtMjAy MC0xMDE4OSIsICJDVkUtMjAxOS0wNzA4IiwgIkNWRS0yMDIwLTEwOTg3Iiwg IkNWRS0yMDIwLTUwOTIiLCAiQ1ZFLTIwMTktMTYyNzgiLCAiQ1ZFLTIwMTkt MTY5MjAiLCAiQ1ZFLTIwMjAtNzIwOSIsICJDVkUtMjAyMC0xOTU2IiwgIkNW RS0yMDIwLTcxMTUiLCAiQ1ZFLTIwMTktMTY3NTkiLCAiQ1ZFLTIwMTktMzM5 NiIsICJDVkUtMjAyMC0wOTY4IiwgIkNWRS0yMDE5LTExNTEwIiwgIkNWRS0y MDIwLTE3NDk2IiwgIkNWRS0yMDIwLTE5MzciLCAiQ1ZFLTIwMTktMDg1OSIs ICJDVkUtMjAxOS0xMDY5IiwgIkNWRS0yMDIwLTA3ODciLCAiQ1ZFLTIwMjAt NTkwMiIsICJDVkUtMjAxOS0xOTc4MSIsICJDVkUtMjAyMC0wOTg2IiwgIkNW RS0yMDIwLTEzODAiLCAiQ1ZFLTIwMjAtMDY4OCJdLCAieSI6IFszNjEsIDM2 MCwgMzk3LCA3NjUsIDMzMCwgMTAwOCwgMzE4LCAyMDcsIDIxOCwgMTcsIDc5 LCA2MiwgMTUsIDExLCA4NiwgODYsIDExLCAxMSwgMTEsIDMxLCA5LCAzMCwg MjIsIDAsIDAsIDEsIDAsIDAsIDIsIDMsIDIsIDIsIDBdfSwgeyJuYW1lIjog IklQIiwgInR5cGUiOiAiYmFyIiwgIngiOiBbIkNWRS0yMDE5LTk2NzAiLCAi Q1ZFLTIwMTktMTI3MjUiLCAiQ1ZFLTIwMTktMTEzMiIsICJDVkUtMjAxOS05 MDgxIiwgIkNWRS0yMDE5LTE2NTMiLCAiQ1ZFLTIwMjAtODUxNSIsICJDVkUt MjAxOS0xNjUyIiwgIkNWRS0yMDE5LTA3NTIiLCAiQ1ZFLTIwMjAtMTAxNzMi LCAiQ1ZFLTIwMTktMTQ1OCIsICJDVkUtMjAyMC0xMDE4OSIsICJDVkUtMjAx OS0wNzA4IiwgIkNWRS0yMDIwLTEwOTg3IiwgIkNWRS0yMDIwLTUwOTIiLCAi Q1ZFLTIwMTktMTYyNzgiLCAiQ1ZFLTIwMTktMTY5MjAiLCAiQ1ZFLTIwMjAt NzIwOSIsICJDVkUtMjAyMC0xOTU2IiwgIkNWRS0yMDIwLTcxMTUiLCAiQ1ZF LTIwMTktMTY3NTkiLCAiQ1ZFLTIwMTktMzM5NiIsICJDVkUtMjAyMC0wOTY4 IiwgIkNWRS0yMDE5LTExNTEwIiwgIkNWRS0yMDIwLTE3NDk2IiwgIkNWRS0y MDIwLTE5MzciLCAiQ1ZFLTIwMTktMDg1OSIsICJDVkUtMjAxOS0xMDY5Iiwg IkNWRS0yMDIwLTA3ODciLCAiQ1ZFLTIwMjAtNTkwMiIsICJDVkUtMjAxOS0x OTc4MSIsICJDVkUtMjAyMC0wOTg2IiwgIkNWRS0yMDIwLTEzODAiLCAiQ1ZF LTIwMjAtMDY4OCJdLCAieSI6IFsxLCAxLCA0NiwgMCwgNTIsIDAsIDUyLCAy NCwgMCwgMSwgMCwgMiwgOSwgMTAsIDUyLCA1MiwgMCwgMCwgMCwgMCwgMSwg MywgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF19LCB7Im5hbWUi OiAiVVJMIiwgInR5cGUiOiAiYmFyIiwgIngiOiBbIkNWRS0yMDE5LTk2NzAi LCAiQ1ZFLTIwMTktMTI3MjUiLCAiQ1ZFLTIwMTktMTEzMiIsICJDVkUtMjAx OS05MDgxIiwgIkNWRS0yMDE5LTE2NTMiLCAiQ1ZFLTIwMjAtODUxNSIsICJD VkUtMjAxOS0xNjUyIiwgIkNWRS0yMDE5LTA3NTIiLCAiQ1ZFLTIwMjAtMTAx NzMiLCAiQ1ZFLTIwMTktMTQ1OCIsICJDVkUtMjAyMC0xMDE4OSIsICJDVkUt MjAxOS0wNzA4IiwgIkNWRS0yMDIwLTEwOTg3IiwgIkNWRS0yMDIwLTUwOTIi LCAiQ1ZFLTIwMTktMTYyNzgiLCAiQ1ZFLTIwMTktMTY5MjAiLCAiQ1ZFLTIw MjAtNzIwOSIsICJDVkUtMjAyMC0xOTU2IiwgIkNWRS0yMDIwLTcxMTUiLCAi Q1ZFLTIwMTktMTY3NTkiLCAiQ1ZFLTIwMTktMzM5NiIsICJDVkUtMjAyMC0w OTY4IiwgIkNWRS0yMDE5LTExNTEwIiwgIkNWRS0yMDIwLTE3NDk2IiwgIkNW RS0yMDIwLTE5MzciLCAiQ1ZFLTIwMTktMDg1OSIsICJDVkUtMjAxOS0xMDY5 IiwgIkNWRS0yMDIwLTA3ODciLCAiQ1ZFLTIwMjAtNTkwMiIsICJDVkUtMjAx OS0xOTc4MSIsICJDVkUtMjAyMC0wOTg2IiwgIkNWRS0yMDIwLTEzODAiLCAi Q1ZFLTIwMjAtMDY4OCJdLCAieSI6IFs2NjQsIDY2MCwgMzYzLCAzNywgMTAw LCAxMywgOTYsIDEwMCwgNDUsIDQ3LCAzMSwgMSwgMzcsIDIyLCAwLCAwLCAy MiwgMjIsIDIyLCAzOCwgNDUsIDAsIDI1LCAyLCAyLCAwLCAwLCAwLCA3LCAx MSwgMSwgMSwgMF19LCB7Im5hbWUiOiAiRW1haWwiLCAidHlwZSI6ICJiYXIi LCAieCI6IFsiQ1ZFLTIwMTktOTY3MCIsICJDVkUtMjAxOS0xMjcyNSIsICJD VkUtMjAxOS0xMTMyIiwgIkNWRS0yMDE5LTkwODEiLCAiQ1ZFLTIwMTktMTY1 MyIsICJDVkUtMjAyMC04NTE1IiwgIkNWRS0yMDE5LTE2NTIiLCAiQ1ZFLTIw MTktMDc1MiIsICJDVkUtMjAyMC0xMDE3MyIsICJDVkUtMjAxOS0xNDU4Iiwg IkNWRS0yMDIwLTEwMTg5IiwgIkNWRS0yMDE5LTA3MDgiLCAiQ1ZFLTIwMjAt MTA5ODciLCAiQ1ZFLTIwMjAtNTA5MiIsICJDVkUtMjAxOS0xNjI3OCIsICJD VkUtMjAxOS0xNjkyMCIsICJDVkUtMjAyMC03MjA5IiwgIkNWRS0yMDIwLTE5 NTYiLCAiQ1ZFLTIwMjAtNzExNSIsICJDVkUtMjAxOS0xNjc1OSIsICJDVkUt MjAxOS0zMzk2IiwgIkNWRS0yMDIwLTA5NjgiLCAiQ1ZFLTIwMTktMTE1MTAi LCAiQ1ZFLTIwMjAtMTc0OTYiLCAiQ1ZFLTIwMjAtMTkzNyIsICJDVkUtMjAx OS0wODU5IiwgIkNWRS0yMDE5LTEwNjkiLCAiQ1ZFLTIwMjAtMDc4NyIsICJD VkUtMjAyMC01OTAyIiwgIkNWRS0yMDE5LTE5NzgxIiwgIkNWRS0yMDIwLTA5 ODYiLCAiQ1ZFLTIwMjAtMTM4MCIsICJDVkUtMjAyMC0wNjg4Il0sICJ5Ijog WzEyLCAxMiwgNCwgNywgMTI4LCAwLCAxMjgsIDQsIDE0LCAyNCwgOSwgMCwg NSwgNSwgMTI1LCAxMjUsIDUsIDUsIDUsIDIsIDAsIDAsIDUsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDBdfSwgeyJuYW1lIjogIllBUkEgUnVsZSIs ICJ0eXBlIjogImJhciIsICJ4IjogWyJDVkUtMjAxOS05NjcwIiwgIkNWRS0y MDE5LTEyNzI1IiwgIkNWRS0yMDE5LTExMzIiLCAiQ1ZFLTIwMTktOTA4MSIs ICJDVkUtMjAxOS0xNjUzIiwgIkNWRS0yMDIwLTg1MTUiLCAiQ1ZFLTIwMTkt MTY1MiIsICJDVkUtMjAxOS0wNzUyIiwgIkNWRS0yMDIwLTEwMTczIiwgIkNW RS0yMDE5LTE0NTgiLCAiQ1ZFLTIwMjAtMTAxODkiLCAiQ1ZFLTIwMTktMDcw OCIsICJDVkUtMjAyMC0xMDk4NyIsICJDVkUtMjAyMC01MDkyIiwgIkNWRS0y MDE5LTE2Mjc4IiwgIkNWRS0yMDE5LTE2OTIwIiwgIkNWRS0yMDIwLTcyMDki LCAiQ1ZFLTIwMjAtMTk1NiIsICJDVkUtMjAyMC03MTE1IiwgIkNWRS0yMDE5 LTE2NzU5IiwgIkNWRS0yMDE5LTMzOTYiLCAiQ1ZFLTIwMjAtMDk2OCIsICJD VkUtMjAxOS0xMTUxMCIsICJDVkUtMjAyMC0xNzQ5NiIsICJDVkUtMjAyMC0x OTM3IiwgIkNWRS0yMDE5LTA4NTkiLCAiQ1ZFLTIwMTktMTA2OSIsICJDVkUt MjAyMC0wNzg3IiwgIkNWRS0yMDIwLTU5MDIiLCAiQ1ZFLTIwMTktMTk3ODEi LCAiQ1ZFLTIwMjAtMDk4NiIsICJDVkUtMjAyMC0xMzgwIiwgIkNWRS0yMDIw LTA2ODgiXSwgInkiOiBbMTksIDAsIDAsIDAsIDcsIDAsIDYsIDAsIDAsIDAs IDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDEsIDAsIDAsIDBdfV0sCiAgICAgICAgICAgICAgICAg ICAgICAgIHsiYmFybW9kZSI6ICJzdGFjayIsICJoZWlnaHQiOiA4MDAsICJs ZWdlbmQiOiB7IngiOiAwLjYsICJ5IjogMC42fSwgInRlbXBsYXRlIjogeyJk YXRhIjogeyJiYXIiOiBbeyJlcnJvcl94IjogeyJjb2xvciI6ICIjMmEzZjVm In0sICJlcnJvcl95IjogeyJjb2xvciI6ICIjMmEzZjVmIn0sICJtYXJrZXIi OiB7ImxpbmUiOiB7ImNvbG9yIjogIiNFNUVDRjYiLCAid2lkdGgiOiAwLjV9 fSwgInR5cGUiOiAiYmFyIn1dLCAiYmFycG9sYXIiOiBbeyJtYXJrZXIiOiB7 ImxpbmUiOiB7ImNvbG9yIjogIiNFNUVDRjYiLCAid2lkdGgiOiAwLjV9fSwg InR5cGUiOiAiYmFycG9sYXIifV0sICJjYXJwZXQiOiBbeyJhYXhpcyI6IHsi ZW5kbGluZWNvbG9yIjogIiMyYTNmNWYiLCAiZ3JpZGNvbG9yIjogIndoaXRl IiwgImxpbmVjb2xvciI6ICJ3aGl0ZSIsICJtaW5vcmdyaWRjb2xvciI6ICJ3 aGl0ZSIsICJzdGFydGxpbmVjb2xvciI6ICIjMmEzZjVmIn0sICJiYXhpcyI6 IHsiZW5kbGluZWNvbG9yIjogIiMyYTNmNWYiLCAiZ3JpZGNvbG9yIjogIndo aXRlIiwgImxpbmVjb2xvciI6ICJ3aGl0ZSIsICJtaW5vcmdyaWRjb2xvciI6 ICJ3aGl0ZSIsICJzdGFydGxpbmVjb2xvciI6ICIjMmEzZjVmIn0sICJ0eXBl IjogImNhcnBldCJ9XSwgImNob3JvcGxldGgiOiBbeyJjb2xvcmJhciI6IHsi b3V0bGluZXdpZHRoIjogMCwgInRpY2tzIjogIiJ9LCAidHlwZSI6ICJjaG9y b3BsZXRoIn1dLCAiY29udG91ciI6IFt7ImNvbG9yYmFyIjogeyJvdXRsaW5l d2lkdGgiOiAwLCAidGlja3MiOiAiIn0sICJjb2xvcnNjYWxlIjogW1swLjAs ICIjMGQwODg3Il0sIFswLjExMTExMTExMTExMTExMTEsICIjNDYwMzlmIl0s IFswLjIyMjIyMjIyMjIyMjIyMjIsICIjNzIwMWE4Il0sIFswLjMzMzMzMzMz MzMzMzMzMzMsICIjOWMxNzllIl0sIFswLjQ0NDQ0NDQ0NDQ0NDQ0NDQsICIj YmQzNzg2Il0sIFswLjU1NTU1NTU1NTU1NTU1NTYsICIjZDg1NzZiIl0sIFsw LjY2NjY2NjY2NjY2NjY2NjYsICIjZWQ3OTUzIl0sIFswLjc3Nzc3Nzc3Nzc3 Nzc3NzgsICIjZmI5ZjNhIl0sIFswLjg4ODg4ODg4ODg4ODg4ODgsICIjZmRj YTI2Il0sIFsxLjAsICIjZjBmOTIxIl1dLCAidHlwZSI6ICJjb250b3VyIn1d LCAiY29udG91cmNhcnBldCI6IFt7ImNvbG9yYmFyIjogeyJvdXRsaW5ld2lk dGgiOiAwLCAidGlja3MiOiAiIn0sICJ0eXBlIjogImNvbnRvdXJjYXJwZXQi fV0sICJoZWF0bWFwIjogW3siY29sb3JiYXIiOiB7Im91dGxpbmV3aWR0aCI6 IDAsICJ0aWNrcyI6ICIifSwgImNvbG9yc2NhbGUiOiBbWzAuMCwgIiMwZDA4 ODciXSwgWzAuMTExMTExMTExMTExMTExMSwgIiM0NjAzOWYiXSwgWzAuMjIy MjIyMjIyMjIyMjIyMiwgIiM3MjAxYTgiXSwgWzAuMzMzMzMzMzMzMzMzMzMz MywgIiM5YzE3OWUiXSwgWzAuNDQ0NDQ0NDQ0NDQ0NDQ0NCwgIiNiZDM3ODYi XSwgWzAuNTU1NTU1NTU1NTU1NTU1NiwgIiNkODU3NmIiXSwgWzAuNjY2NjY2 NjY2NjY2NjY2NiwgIiNlZDc5NTMiXSwgWzAuNzc3Nzc3Nzc3Nzc3Nzc3OCwg IiNmYjlmM2EiXSwgWzAuODg4ODg4ODg4ODg4ODg4OCwgIiNmZGNhMjYiXSwg WzEuMCwgIiNmMGY5MjEiXV0sICJ0eXBlIjogImhlYXRtYXAifV0sICJoZWF0 bWFwZ2wiOiBbeyJjb2xvcmJhciI6IHsib3V0bGluZXdpZHRoIjogMCwgInRp Y2tzIjogIiJ9LCAiY29sb3JzY2FsZSI6IFtbMC4wLCAiIzBkMDg4NyJdLCBb MC4xMTExMTExMTExMTExMTExLCAiIzQ2MDM5ZiJdLCBbMC4yMjIyMjIyMjIy MjIyMjIyLCAiIzcyMDFhOCJdLCBbMC4zMzMzMzMzMzMzMzMzMzMzLCAiIzlj MTc5ZSJdLCBbMC40NDQ0NDQ0NDQ0NDQ0NDQ0LCAiI2JkMzc4NiJdLCBbMC41 NTU1NTU1NTU1NTU1NTU2LCAiI2Q4NTc2YiJdLCBbMC42NjY2NjY2NjY2NjY2 NjY2LCAiI2VkNzk1MyJdLCBbMC43Nzc3Nzc3Nzc3Nzc3Nzc4LCAiI2ZiOWYz YSJdLCBbMC44ODg4ODg4ODg4ODg4ODg4LCAiI2ZkY2EyNiJdLCBbMS4wLCAi I2YwZjkyMSJdXSwgInR5cGUiOiAiaGVhdG1hcGdsIn1dLCAiaGlzdG9ncmFt IjogW3sibWFya2VyIjogeyJjb2xvcmJhciI6IHsib3V0bGluZXdpZHRoIjog MCwgInRpY2tzIjogIiJ9fSwgInR5cGUiOiAiaGlzdG9ncmFtIn1dLCAiaGlz dG9ncmFtMmQiOiBbeyJjb2xvcmJhciI6IHsib3V0bGluZXdpZHRoIjogMCwg InRpY2tzIjogIiJ9LCAiY29sb3JzY2FsZSI6IFtbMC4wLCAiIzBkMDg4NyJd LCBbMC4xMTExMTExMTExMTExMTExLCAiIzQ2MDM5ZiJdLCBbMC4yMjIyMjIy MjIyMjIyMjIyLCAiIzcyMDFhOCJdLCBbMC4zMzMzMzMzMzMzMzMzMzMzLCAi IzljMTc5ZSJdLCBbMC40NDQ0NDQ0NDQ0NDQ0NDQ0LCAiI2JkMzc4NiJdLCBb MC41NTU1NTU1NTU1NTU1NTU2LCAiI2Q4NTc2YiJdLCBbMC42NjY2NjY2NjY2 NjY2NjY2LCAiI2VkNzk1MyJdLCBbMC43Nzc3Nzc3Nzc3Nzc3Nzc4LCAiI2Zi OWYzYSJdLCBbMC44ODg4ODg4ODg4ODg4ODg4LCAiI2ZkY2EyNiJdLCBbMS4w LCAiI2YwZjkyMSJdXSwgInR5cGUiOiAiaGlzdG9ncmFtMmQifV0sICJoaXN0 b2dyYW0yZGNvbnRvdXIiOiBbeyJjb2xvcmJhciI6IHsib3V0bGluZXdpZHRo IjogMCwgInRpY2tzIjogIiJ9LCAiY29sb3JzY2FsZSI6IFtbMC4wLCAiIzBk MDg4NyJdLCBbMC4xMTExMTExMTExMTExMTExLCAiIzQ2MDM5ZiJdLCBbMC4y MjIyMjIyMjIyMjIyMjIyLCAiIzcyMDFhOCJdLCBbMC4zMzMzMzMzMzMzMzMz MzMzLCAiIzljMTc5ZSJdLCBbMC40NDQ0NDQ0NDQ0NDQ0NDQ0LCAiI2JkMzc4 NiJdLCBbMC41NTU1NTU1NTU1NTU1NTU2LCAiI2Q4NTc2YiJdLCBbMC42NjY2 NjY2NjY2NjY2NjY2LCAiI2VkNzk1MyJdLCBbMC43Nzc3Nzc3Nzc3Nzc3Nzc4 LCAiI2ZiOWYzYSJdLCBbMC44ODg4ODg4ODg4ODg4ODg4LCAiI2ZkY2EyNiJd LCBbMS4wLCAiI2YwZjkyMSJdXSwgInR5cGUiOiAiaGlzdG9ncmFtMmRjb250 b3VyIn1dLCAibWVzaDNkIjogW3siY29sb3JiYXIiOiB7Im91dGxpbmV3aWR0 aCI6IDAsICJ0aWNrcyI6ICIifSwgInR5cGUiOiAibWVzaDNkIn1dLCAicGFy Y29vcmRzIjogW3sibGluZSI6IHsiY29sb3JiYXIiOiB7Im91dGxpbmV3aWR0 aCI6IDAsICJ0aWNrcyI6ICIifX0sICJ0eXBlIjogInBhcmNvb3JkcyJ9XSwg InBpZSI6IFt7ImF1dG9tYXJnaW4iOiB0cnVlLCAidHlwZSI6ICJwaWUifV0s ICJzY2F0dGVyIjogW3sibWFya2VyIjogeyJjb2xvcmJhciI6IHsib3V0bGlu ZXdpZHRoIjogMCwgInRpY2tzIjogIiJ9fSwgInR5cGUiOiAic2NhdHRlciJ9 XSwgInNjYXR0ZXIzZCI6IFt7ImxpbmUiOiB7ImNvbG9yYmFyIjogeyJvdXRs aW5ld2lkdGgiOiAwLCAidGlja3MiOiAiIn19LCAibWFya2VyIjogeyJjb2xv cmJhciI6IHsib3V0bGluZXdpZHRoIjogMCwgInRpY2tzIjogIiJ9fSwgInR5 cGUiOiAic2NhdHRlcjNkIn1dLCAic2NhdHRlcmNhcnBldCI6IFt7Im1hcmtl ciI6IHsiY29sb3JiYXIiOiB7Im91dGxpbmV3aWR0aCI6IDAsICJ0aWNrcyI6 ICIifX0sICJ0eXBlIjogInNjYXR0ZXJjYXJwZXQifV0sICJzY2F0dGVyZ2Vv IjogW3sibWFya2VyIjogeyJjb2xvcmJhciI6IHsib3V0bGluZXdpZHRoIjog MCwgInRpY2tzIjogIiJ9fSwgInR5cGUiOiAic2NhdHRlcmdlbyJ9XSwgInNj YXR0ZXJnbCI6IFt7Im1hcmtlciI6IHsiY29sb3JiYXIiOiB7Im91dGxpbmV3 aWR0aCI6IDAsICJ0aWNrcyI6ICIifX0sICJ0eXBlIjogInNjYXR0ZXJnbCJ9 XSwgInNjYXR0ZXJtYXBib3giOiBbeyJtYXJrZXIiOiB7ImNvbG9yYmFyIjog eyJvdXRsaW5ld2lkdGgiOiAwLCAidGlja3MiOiAiIn19LCAidHlwZSI6ICJz Y2F0dGVybWFwYm94In1dLCAic2NhdHRlcnBvbGFyIjogW3sibWFya2VyIjog eyJjb2xvcmJhciI6IHsib3V0bGluZXdpZHRoIjogMCwgInRpY2tzIjogIiJ9 fSwgInR5cGUiOiAic2NhdHRlcnBvbGFyIn1dLCAic2NhdHRlcnBvbGFyZ2wi OiBbeyJtYXJrZXIiOiB7ImNvbG9yYmFyIjogeyJvdXRsaW5ld2lkdGgiOiAw LCAidGlja3MiOiAiIn19LCAidHlwZSI6ICJzY2F0dGVycG9sYXJnbCJ9XSwg InNjYXR0ZXJ0ZXJuYXJ5IjogW3sibWFya2VyIjogeyJjb2xvcmJhciI6IHsi b3V0bGluZXdpZHRoIjogMCwgInRpY2tzIjogIiJ9fSwgInR5cGUiOiAic2Nh dHRlcnRlcm5hcnkifV0sICJzdXJmYWNlIjogW3siY29sb3JiYXIiOiB7Im91 dGxpbmV3aWR0aCI6IDAsICJ0aWNrcyI6ICIifSwgImNvbG9yc2NhbGUiOiBb WzAuMCwgIiMwZDA4ODciXSwgWzAuMTExMTExMTExMTExMTExMSwgIiM0NjAz OWYiXSwgWzAuMjIyMjIyMjIyMjIyMjIyMiwgIiM3MjAxYTgiXSwgWzAuMzMz MzMzMzMzMzMzMzMzMywgIiM5YzE3OWUiXSwgWzAuNDQ0NDQ0NDQ0NDQ0NDQ0 NCwgIiNiZDM3ODYiXSwgWzAuNTU1NTU1NTU1NTU1NTU1NiwgIiNkODU3NmIi XSwgWzAuNjY2NjY2NjY2NjY2NjY2NiwgIiNlZDc5NTMiXSwgWzAuNzc3Nzc3 Nzc3Nzc3Nzc3OCwgIiNmYjlmM2EiXSwgWzAuODg4ODg4ODg4ODg4ODg4OCwg IiNmZGNhMjYiXSwgWzEuMCwgIiNmMGY5MjEiXV0sICJ0eXBlIjogInN1cmZh Y2UifV0sICJ0YWJsZSI6IFt7ImNlbGxzIjogeyJmaWxsIjogeyJjb2xvciI6 ICIjRUJGMEY4In0sICJsaW5lIjogeyJjb2xvciI6ICJ3aGl0ZSJ9fSwgImhl YWRlciI6IHsiZmlsbCI6IHsiY29sb3IiOiAiI0M4RDRFMyJ9LCAibGluZSI6 IHsiY29sb3IiOiAid2hpdGUifX0sICJ0eXBlIjogInRhYmxlIn1dfSwgImxh eW91dCI6IHsiYW5ub3RhdGlvbmRlZmF1bHRzIjogeyJhcnJvd2NvbG9yIjog IiMyYTNmNWYiLCAiYXJyb3doZWFkIjogMCwgImFycm93d2lkdGgiOiAxfSwg ImNvbG9yYXhpcyI6IHsiY29sb3JiYXIiOiB7Im91dGxpbmV3aWR0aCI6IDAs ICJ0aWNrcyI6ICIifX0sICJjb2xvcnNjYWxlIjogeyJkaXZlcmdpbmciOiBb WzAsICIjOGUwMTUyIl0sIFswLjEsICIjYzUxYjdkIl0sIFswLjIsICIjZGU3 N2FlIl0sIFswLjMsICIjZjFiNmRhIl0sIFswLjQsICIjZmRlMGVmIl0sIFsw LjUsICIjZjdmN2Y3Il0sIFswLjYsICIjZTZmNWQwIl0sIFswLjcsICIjYjhl MTg2Il0sIFswLjgsICIjN2ZiYzQxIl0sIFswLjksICIjNGQ5MjIxIl0sIFsx LCAiIzI3NjQxOSJdXSwgInNlcXVlbnRpYWwiOiBbWzAuMCwgIiMwZDA4ODci XSwgWzAuMTExMTExMTExMTExMTExMSwgIiM0NjAzOWYiXSwgWzAuMjIyMjIy MjIyMjIyMjIyMiwgIiM3MjAxYTgiXSwgWzAuMzMzMzMzMzMzMzMzMzMzMywg IiM5YzE3OWUiXSwgWzAuNDQ0NDQ0NDQ0NDQ0NDQ0NCwgIiNiZDM3ODYiXSwg WzAuNTU1NTU1NTU1NTU1NTU1NiwgIiNkODU3NmIiXSwgWzAuNjY2NjY2NjY2 NjY2NjY2NiwgIiNlZDc5NTMiXSwgWzAuNzc3Nzc3Nzc3Nzc3Nzc3OCwgIiNm YjlmM2EiXSwgWzAuODg4ODg4ODg4ODg4ODg4OCwgIiNmZGNhMjYiXSwgWzEu MCwgIiNmMGY5MjEiXV0sICJzZXF1ZW50aWFsbWludXMiOiBbWzAuMCwgIiMw ZDA4ODciXSwgWzAuMTExMTExMTExMTExMTExMSwgIiM0NjAzOWYiXSwgWzAu MjIyMjIyMjIyMjIyMjIyMiwgIiM3MjAxYTgiXSwgWzAuMzMzMzMzMzMzMzMz MzMzMywgIiM5YzE3OWUiXSwgWzAuNDQ0NDQ0NDQ0NDQ0NDQ0NCwgIiNiZDM3 ODYiXSwgWzAuNTU1NTU1NTU1NTU1NTU1NiwgIiNkODU3NmIiXSwgWzAuNjY2 NjY2NjY2NjY2NjY2NiwgIiNlZDc5NTMiXSwgWzAuNzc3Nzc3Nzc3Nzc3Nzc3 OCwgIiNmYjlmM2EiXSwgWzAuODg4ODg4ODg4ODg4ODg4OCwgIiNmZGNhMjYi XSwgWzEuMCwgIiNmMGY5MjEiXV19LCAiY29sb3J3YXkiOiBbIiM2MzZlZmEi LCAiI0VGNTUzQiIsICIjMDBjYzk2IiwgIiNhYjYzZmEiLCAiI0ZGQTE1QSIs ICIjMTlkM2YzIiwgIiNGRjY2OTIiLCAiI0I2RTg4MCIsICIjRkY5N0ZGIiwg IiNGRUNCNTIiXSwgImZvbnQiOiB7ImNvbG9yIjogIiMyYTNmNWYifSwgImdl byI6IHsiYmdjb2xvciI6ICJ3aGl0ZSIsICJsYWtlY29sb3IiOiAid2hpdGUi LCAibGFuZGNvbG9yIjogIiNFNUVDRjYiLCAic2hvd2xha2VzIjogdHJ1ZSwg InNob3dsYW5kIjogdHJ1ZSwgInN1YnVuaXRjb2xvciI6ICJ3aGl0ZSJ9LCAi aG92ZXJsYWJlbCI6IHsiYWxpZ24iOiAibGVmdCJ9LCAiaG92ZXJtb2RlIjog ImNsb3Nlc3QiLCAibWFwYm94IjogeyJzdHlsZSI6ICJsaWdodCJ9LCAicGFw ZXJfYmdjb2xvciI6ICJ3aGl0ZSIsICJwbG90X2JnY29sb3IiOiAiI0U1RUNG NiIsICJwb2xhciI6IHsiYW5ndWxhcmF4aXMiOiB7ImdyaWRjb2xvciI6ICJ3 aGl0ZSIsICJsaW5lY29sb3IiOiAid2hpdGUiLCAidGlja3MiOiAiIn0sICJi Z2NvbG9yIjogIiNFNUVDRjYiLCAicmFkaWFsYXhpcyI6IHsiZ3JpZGNvbG9y IjogIndoaXRlIiwgImxpbmVjb2xvciI6ICJ3aGl0ZSIsICJ0aWNrcyI6ICIi fX0sICJzY2VuZSI6IHsieGF4aXMiOiB7ImJhY2tncm91bmRjb2xvciI6ICIj RTVFQ0Y2IiwgImdyaWRjb2xvciI6ICJ3aGl0ZSIsICJncmlkd2lkdGgiOiAy LCAibGluZWNvbG9yIjogIndoaXRlIiwgInNob3diYWNrZ3JvdW5kIjogdHJ1 ZSwgInRpY2tzIjogIiIsICJ6ZXJvbGluZWNvbG9yIjogIndoaXRlIn0sICJ5 YXhpcyI6IHsiYmFja2dyb3VuZGNvbG9yIjogIiNFNUVDRjYiLCAiZ3JpZGNv bG9yIjogIndoaXRlIiwgImdyaWR3aWR0aCI6IDIsICJsaW5lY29sb3IiOiAi d2hpdGUiLCAic2hvd2JhY2tncm91bmQiOiB0cnVlLCAidGlja3MiOiAiIiwg Inplcm9saW5lY29sb3IiOiAid2hpdGUifSwgInpheGlzIjogeyJiYWNrZ3Jv dW5kY29sb3IiOiAiI0U1RUNGNiIsICJncmlkY29sb3IiOiAid2hpdGUiLCAi Z3JpZHdpZHRoIjogMiwgImxpbmVjb2xvciI6ICJ3aGl0ZSIsICJzaG93YmFj a2dyb3VuZCI6IHRydWUsICJ0aWNrcyI6ICIiLCAiemVyb2xpbmVjb2xvciI6 ICJ3aGl0ZSJ9fSwgInNoYXBlZGVmYXVsdHMiOiB7ImxpbmUiOiB7ImNvbG9y IjogIiMyYTNmNWYifX0sICJ0ZXJuYXJ5IjogeyJhYXhpcyI6IHsiZ3JpZGNv bG9yIjogIndoaXRlIiwgImxpbmVjb2xvciI6ICJ3aGl0ZSIsICJ0aWNrcyI6 ICIifSwgImJheGlzIjogeyJncmlkY29sb3IiOiAid2hpdGUiLCAibGluZWNv bG9yIjogIndoaXRlIiwgInRpY2tzIjogIiJ9LCAiYmdjb2xvciI6ICIjRTVF Q0Y2IiwgImNheGlzIjogeyJncmlkY29sb3IiOiAid2hpdGUiLCAibGluZWNv bG9yIjogIndoaXRlIiwgInRpY2tzIjogIiJ9fSwgInRpdGxlIjogeyJ4Ijog MC4wNX0sICJ4YXhpcyI6IHsiYXV0b21hcmdpbiI6IHRydWUsICJncmlkY29s b3IiOiAid2hpdGUiLCAibGluZWNvbG9yIjogIndoaXRlIiwgInRpY2tzIjog IiIsICJ0aXRsZSI6IHsic3RhbmRvZmYiOiAxNX0sICJ6ZXJvbGluZWNvbG9y IjogIndoaXRlIiwgInplcm9saW5ld2lkdGgiOiAyfSwgInlheGlzIjogeyJh dXRvbWFyZ2luIjogdHJ1ZSwgImdyaWRjb2xvciI6ICJ3aGl0ZSIsICJsaW5l Y29sb3IiOiAid2hpdGUiLCAidGlja3MiOiAiIiwgInRpdGxlIjogeyJzdGFu ZG9mZiI6IDE1fSwgInplcm9saW5lY29sb3IiOiAid2hpdGUiLCAiemVyb2xp bmV3aWR0aCI6IDJ9fX0sICJ0aXRsZSI6IHsidGV4dCI6ICJBbGllbnZhdWx0 IE9UWCAtIFRPUCBDVkVzIGJ5IHVuaXF1ZSBJT0NzLCBsYXN0IDkwIGRheXMi LCAieCI6IDAuNSwgInhhbmNob3IiOiAiY2VudGVyIiwgInkiOiAwLjksICJ5 YW5jaG9yIjogInRvcCJ9LCAid2lkdGgiOiAxMDAwLCAieGF4aXMiOiB7InRp dGxlIjogeyJ0ZXh0IjogIkNWRSJ9fSwgInlheGlzIjogeyJ0aXRsZSI6IHsi dGV4dCI6ICJDb3VudCBvZiB1bmlxdWUgbGlua2VkIElPQyJ9fX0sCiAgICAg ICAgICAgICAgICAgICAgICAgIHsicmVzcG9uc2l2ZSI6IHRydWV9CiAgICAg ICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAg ICAgICAgIAogICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICA8L2Rpdj4K PHRhYmxlIHN0eWxlID0gIndpZHRoOjgwJTsgYm9yZGVyOiAxcHggc29saWQg YmxhY2s7Ij4gPHRyPiA8dGQ+IDxiPiBDVkUgSUQgPC9iPiA8L3RkPiA8dGQ+ IDxiPiBDVkUgU3VtbWFyeSA8L2I+IDwvdGQ+Cjx0cj48dGQgc3R5bGUgPSAi Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5DVkUt MjAxOS05NjcwPC90ZD48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQg YmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5tYWlsYm94ZCBjb21wb25lbnQgaW4g U3luYWNvciBaaW1icmEgQ29sbGFib3JhdGlvbiBTdWl0ZSA4LjcueCBiZWZv cmUgOC43LjExcDEwIGhhcyBhbiBYTUwgRXh0ZXJuYWwgRW50aXR5IGluamVj dGlvbiAoWFhFKSB2dWxuZXJhYmlsaXR5LjwvdGQ+PC90cj48dHI+PHRkIHN0 eWxlID0gImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4 OyI+Q1ZFLTIwMTktMTI3MjU8L3RkPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFw eCBzb2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPlplcm9zaGVsbCAzLjku MCBpcyBwcm9uZSB0byBhIHJlbW90ZSBjb21tYW5kIGV4ZWN1dGlvbiB2dWxu ZXJhYmlsaXR5LiBTcGVjaWZpY2FsbHksIHRoaXMgaXNzdWUgb2NjdXJzIGJl Y2F1c2UgdGhlIHdlYiBhcHBsaWNhdGlvbiBtaXNoYW5kbGVzIGEgZmV3IEhU VFAgcGFyYW1ldGVycy4gQW4gdW5hdXRoZW50aWNhdGVkIGF0dGFja2VyIGNh biBleHBsb2l0IHRoaXMgaXNzdWUgYnkgaW5qZWN0aW5nIE9TIGNvbW1hbmRz IGluc2lkZSB0aGUgdnVsbmVyYWJsZSBwYXJhbWV0ZXJzLjwvdGQ+PC90cj48 dHI+PHRkIHN0eWxlID0gImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRk aW5nOiAxMHB4OyI+Q1ZFLTIwMTktMTEzMjwvdGQ+PHRkIHN0eWxlID0gImJv cmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+QW4gZWxl dmF0aW9uIG9mIHByaXZpbGVnZSB2dWxuZXJhYmlsaXR5IGV4aXN0cyBpbiBX aW5kb3dzIHdoZW4gdGhlIFdpbjMyayBjb21wb25lbnQgZmFpbHMgdG8gcHJv cGVybHkgaGFuZGxlIG9iamVjdHMgaW4gbWVtb3J5LCBha2EgJ1dpbjMyayBF bGV2YXRpb24gb2YgUHJpdmlsZWdlIFZ1bG5lcmFiaWxpdHknLjwvdGQ+PC90 cj48dHI+PHRkIHN0eWxlID0gImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBw YWRkaW5nOiAxMHB4OyI+Q1ZFLTIwMTktOTA4MTwvdGQ+PHRkIHN0eWxlID0g ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+VGhl IElsbHVtaW5hdGUgY29tcG9uZW50IG9mIExhcmF2ZWwgRnJhbWV3b3JrIDUu Ny54IGhhcyBhIGRlc2VyaWFsaXphdGlvbiB2dWxuZXJhYmlsaXR5IHRoYXQg Y2FuIGxlYWQgdG8gcmVtb3RlIGNvZGUgZXhlY3V0aW9uIGlmIHRoZSBjb250 ZW50IGlzIGNvbnRyb2xsYWJsZSwgcmVsYXRlZCB0byB0aGUgX19kZXN0cnVj dCBtZXRob2Qgb2YgdGhlIFBlbmRpbmdDb21tYW5kIGNsYXNzIGluIFBlbmRp bmdDb21tYW5kLnBocC48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZSA9ICJib3Jk ZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPkNWRS0yMDE5 LTE2NTM8L3RkPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFj azsgcGFkZGluZzogMTBweDsiPkEgdnVsbmVyYWJpbGl0eSBpbiB0aGUgd2Vi LWJhc2VkIG1hbmFnZW1lbnQgaW50ZXJmYWNlIG9mIENpc2NvIFNtYWxsIEJ1 c2luZXNzIFJWMzIwIGFuZCBSVjMyNSBEdWFsIEdpZ2FiaXQgV0FOIFZQTiBS b3V0ZXJzIGNvdWxkIGFsbG93IGFuIHVuYXV0aGVudGljYXRlZCwgcmVtb3Rl IGF0dGFja2VyIHRvIHJldHJpZXZlIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi4g VGhlIHZ1bG5lcmFiaWxpdHkgaXMgZHVlIHRvIGltcHJvcGVyIGFjY2VzcyBj b250cm9scyBmb3IgVVJMcy4gQW4gYXR0YWNrZXIgY291bGQgZXhwbG9pdCB0 aGlzIHZ1bG5lcmFiaWxpdHkgYnkgY29ubmVjdGluZyB0byBhbiBhZmZlY3Rl ZCBkZXZpY2UgdmlhIEhUVFAgb3IgSFRUUFMgYW5kIHJlcXVlc3Rpbmcgc3Bl Y2lmaWMgVVJMcy4gQSBzdWNjZXNzZnVsIGV4cGxvaXQgY291bGQgYWxsb3cg dGhlIGF0dGFja2VyIHRvIGRvd25sb2FkIHRoZSByb3V0ZXIgY29uZmlndXJh dGlvbiBvciBkZXRhaWxlZCBkaWFnbm9zdGljIGluZm9ybWF0aW9uLiBDaXNj byBoYXMgcmVsZWFzZWQgZmlybXdhcmUgdXBkYXRlcyB0aGF0IGFkZHJlc3Mg dGhpcyB2dWxuZXJhYmlsaXR5LjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlID0g ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+Q1ZF LTIwMjAtODUxNTwvdGQ+PHRkIHN0eWxlID0gImJvcmRlcjogMXB4IHNvbGlk IGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+RHJheVRlayBWaWdvcjI5NjAgMS4z LjFfQmV0YSwgVmlnb3IzOTAwIDEuNC40X0JldGEsIGFuZCBWaWdvcjMwMEIg MS4zLjNfQmV0YSwgMS40LjIuMV9CZXRhLCBhbmQgMS40LjRfQmV0YSBkZXZp Y2VzIGFsbG93IHJlbW90ZSBjb2RlIGV4ZWN1dGlvbiBhcyByb290ICh3aXRo b3V0IGF1dGhlbnRpY2F0aW9uKSB2aWEgc2hlbGwgbWV0YWNoYXJhY3RlcnMg dG8gdGhlIGNnaS1iaW4vbWFpbmZ1bmN0aW9uLmNnaSBVUkkuIFRoaXMgaXNz dWUgaGFzIGJlZW4gZml4ZWQgaW4gVmlnb3IzOTAwLzI5NjAvMzAwQiB2MS41 LjEuPC90ZD48L3RyPjx0cj48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29s aWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5DVkUtMjAxOS0xNjUyPC90ZD48 dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6 IDEwcHg7Ij5BIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHdlYi1iYXNlZCBtYW5h Z2VtZW50IGludGVyZmFjZSBvZiBDaXNjbyBTbWFsbCBCdXNpbmVzcyBSVjMy MCBhbmQgUlYzMjUgRHVhbCBHaWdhYml0IFdBTiBWUE4gUm91dGVycyBjb3Vs ZCBhbGxvdyBhbiBhdXRoZW50aWNhdGVkLCByZW1vdGUgYXR0YWNrZXIgd2l0 aCBhZG1pbmlzdHJhdGl2ZSBwcml2aWxlZ2VzIG9uIGFuIGFmZmVjdGVkIGRl dmljZSB0byBleGVjdXRlIGFyYml0cmFyeSBjb21tYW5kcy4gVGhlIHZ1bG5l cmFiaWxpdHkgaXMgZHVlIHRvIGltcHJvcGVyIHZhbGlkYXRpb24gb2YgdXNl ci1zdXBwbGllZCBpbnB1dC4gQW4gYXR0YWNrZXIgY291bGQgZXhwbG9pdCB0 aGlzIHZ1bG5lcmFiaWxpdHkgYnkgc2VuZGluZyBtYWxpY2lvdXMgSFRUUCBQ T1NUIHJlcXVlc3RzIHRvIHRoZSB3ZWItYmFzZWQgbWFuYWdlbWVudCBpbnRl cmZhY2Ugb2YgYW4gYWZmZWN0ZWQgZGV2aWNlLiBBIHN1Y2Nlc3NmdWwgZXhw bG9pdCBjb3VsZCBhbGxvdyB0aGUgYXR0YWNrZXIgdG8gZXhlY3V0ZSBhcmJp dHJhcnkgY29tbWFuZHMgb24gdGhlIHVuZGVybHlpbmcgTGludXggc2hlbGwg YXMgcm9vdC4gQ2lzY28gaGFzIHJlbGVhc2VkIGZpcm13YXJlIHVwZGF0ZXMg dGhhdCBhZGRyZXNzIHRoaXMgdnVsbmVyYWJpbGl0eS48L3RkPjwvdHI+PHRy Pjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGlu ZzogMTBweDsiPkNWRS0yMDE5LTA3NTI8L3RkPjx0ZCBzdHlsZSA9ICJib3Jk ZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPkEgcmVtb3Rl IGNvZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIGluIHRoZSB3 YXkgdGhhdCB0aGUgc2NyaXB0aW5nIGVuZ2luZSBoYW5kbGVzIG9iamVjdHMg aW4gbWVtb3J5IGluIEludGVybmV0IEV4cGxvcmVyLCBha2EgJ1NjcmlwdGlu ZyBFbmdpbmUgTWVtb3J5IENvcnJ1cHRpb24gVnVsbmVyYWJpbGl0eScuIFRo aXMgQ1ZFIElEIGlzIHVuaXF1ZSBmcm9tIENWRS0yMDE5LTA3MzksIENWRS0y MDE5LTA3NTMsIENWRS0yMDE5LTA4NjIuPC90ZD48L3RyPjx0cj48dGQgc3R5 bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7 Ij5DVkUtMjAyMC0xMDE3MzwvdGQ+PHRkIHN0eWxlID0gImJvcmRlcjogMXB4 IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+Q29tdHJlbmQgVlItMzAz MyBERTExLTQxNlNTRy1DMDFfUjAyLkEycHZJMDQyajEuZDI2bSBkZXZpY2Vz IGhhdmUgTXVsdGlwbGUgQXV0aGVudGljYXRlZCBDb21tYW5kIEluamVjdGlv biB2dWxuZXJhYmlsaXRpZXMgdmlhIHRoZSBwaW5nIGFuZCB0cmFjZXJvdXRl IGRpYWdub3N0aWMgcGFnZXMsIGFzIGRlbW9uc3RyYXRlZCBieSBzaGVsbCBt ZXRhY2hhcmFjdGVycyBpbiB0aGUgcGluZ0lwQWRkcmVzcyBwYXJhbWV0ZXIg dG8gcGluZy5jZ2kuPC90ZD48L3RyPjx0cj48dGQgc3R5bGUgPSAiYm9yZGVy OiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5DVkUtMjAxOS0x NDU4PC90ZD48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7 IHBhZGRpbmc6IDEwcHg7Ij5BbiBlbGV2YXRpb24gb2YgcHJpdmlsZWdlIHZ1 bG5lcmFiaWxpdHkgZXhpc3RzIGluIFdpbmRvd3Mgd2hlbiB0aGUgV2luMzJr IGNvbXBvbmVudCBmYWlscyB0byBwcm9wZXJseSBoYW5kbGUgb2JqZWN0cyBp biBtZW1vcnksIGFrYSAnV2luMzJrIEVsZXZhdGlvbiBvZiBQcml2aWxlZ2Ug VnVsbmVyYWJpbGl0eScuPC90ZD48L3RyPjx0cj48dGQgc3R5bGUgPSAiYm9y ZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5DVkUtMjAy MC0xMDE4OTwvdGQ+PHRkIHN0eWxlID0gImJvcmRlcjogMXB4IHNvbGlkIGJs YWNrOyBwYWRkaW5nOiAxMHB4OyI+Wm9obyBNYW5hZ2VFbmdpbmUgRGVza3Rv cCBDZW50cmFsIGJlZm9yZSAxMC4wLjQ3NCBhbGxvd3MgcmVtb3RlIGNvZGUg ZXhlY3V0aW9uIGJlY2F1c2Ugb2YgZGVzZXJpYWxpemF0aW9uIG9mIHVudHJ1 c3RlZCBkYXRhIGluIGdldENoYXJ0SW1hZ2UgaW4gdGhlIEZpbGVTdG9yYWdl IGNsYXNzLiBUaGlzIGlzIHJlbGF0ZWQgdG8gdGhlIENld29sZlNlcnZsZXQg YW5kIE1ETUxvZ1VwbG9hZGVyU2VydmxldCBzZXJ2bGV0cy48L3RkPjwvdHI+ PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFk ZGluZzogMTBweDsiPkNWRS0yMDE5LTA3MDg8L3RkPjx0ZCBzdHlsZSA9ICJi b3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPkEgcmVt b3RlIGNvZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIGluIFJl bW90ZSBEZXNrdG9wIFNlcnZpY2VzIGZvcm1lcmx5IGtub3duIGFzIFRlcm1p bmFsIFNlcnZpY2VzIHdoZW4gYW4gdW5hdXRoZW50aWNhdGVkIGF0dGFja2Vy IGNvbm5lY3RzIHRvIHRoZSB0YXJnZXQgc3lzdGVtIHVzaW5nIFJEUCBhbmQg c2VuZHMgc3BlY2lhbGx5IGNyYWZ0ZWQgcmVxdWVzdHMsIGFrYSAnUmVtb3Rl IERlc2t0b3AgU2VydmljZXMgUmVtb3RlIENvZGUgRXhlY3V0aW9uIFZ1bG5l cmFiaWxpdHknLjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlID0gImJvcmRlcjog MXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+Q1ZFLTIwMjAtMTA5 ODc8L3RkPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsg cGFkZGluZzogMTBweDsiPlRoZSBnb2Zvcm0vc2V0VXNiVW5sb2FkIGVuZHBv aW50IG9mIFRlbmRhIEFDMTUgQUMxOTAwIHZlcnNpb24gMTUuMDMuMDUuMTkg YWxsb3dzIHJlbW90ZSBhdHRhY2tlcnMgdG8gZXhlY3V0ZSBhcmJpdHJhcnkg c3lzdGVtIGNvbW1hbmRzIHZpYSB0aGUgZGV2aWNlTmFtZSBQT1NUIHBhcmFt ZXRlci48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBz b2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPkNWRS0yMDIwLTUwOTI8L3Rk Pjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGlu ZzogMTBweDsiPjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlID0gImJvcmRlcjog MXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+Q1ZFLTIwMTktMTYy Nzg8L3RkPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsg cGFkZGluZzogMTBweDsiPkRpcmVjdG9yeSBUcmF2ZXJzYWwgaW4gdGhlIGZ1 bmN0aW9uIGh0dHBfdmVyaWZ5IGluIG5vc3Ryb21vIG5odHRwZCB0aHJvdWdo IDEuOS42IGFsbG93cyBhbiBhdHRhY2tlciB0byBhY2hpZXZlIHJlbW90ZSBj b2RlIGV4ZWN1dGlvbiB2aWEgYSBjcmFmdGVkIEhUVFAgcmVxdWVzdC48L3Rk PjwvdHI+PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFj azsgcGFkZGluZzogMTBweDsiPkNWRS0yMDE5LTE2OTIwPC90ZD48dGQgc3R5 bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7 Ij5VbmF1dGhlbnRpY2F0ZWQgcmVtb3RlIGNvZGUgZXhlY3V0aW9uIG9jY3Vy cyBpbiBELUxpbmsgcHJvZHVjdHMgc3VjaCBhcyBESVItNjU1QywgRElSLTg2 NkwsIERJUi02NTIsIGFuZCBESFAtMTU2NS4gVGhlIGlzc3VlIG9jY3VycyB3 aGVuIHRoZSBhdHRhY2tlciBzZW5kcyBhbiBhcmJpdHJhcnkgaW5wdXQgdG8g YSAiUGluZ1Rlc3QiIGRldmljZSBjb21tb24gZ2F0ZXdheSBpbnRlcmZhY2Ug dGhhdCBjb3VsZCBsZWFkIHRvIGNvbW1vbiBpbmplY3Rpb24uIEFuIGF0dGFj a2VyIHdobyBzdWNjZXNzZnVsbHkgdHJpZ2dlcnMgdGhlIGNvbW1hbmQgaW5q ZWN0aW9uIGNvdWxkIGFjaGlldmUgZnVsbCBzeXN0ZW0gY29tcHJvbWlzZS4g TGF0ZXIsIGl0IHdhcyBpbmRlcGVuZGVudGx5IGZvdW5kIHRoYXQgdGhlc2Ug YXJlIGFsc28gYWZmZWN0ZWQ6IERJUi04NTVMLCBEQVAtMTUzMywgRElSLTg2 MkwsIERJUi02MTUsIERJUi04MzUsIGFuZCBESVItODI1LjwvdGQ+PC90cj48 dHI+PHRkIHN0eWxlID0gImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRk aW5nOiAxMHB4OyI+Q1ZFLTIwMjAtNzIwOTwvdGQ+PHRkIHN0eWxlID0gImJv cmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+TGludXhL SSB2Ni4wLTEgYW5kIGVhcmxpZXIgaXMgdnVsbmVyYWJsZSB0byBhbiByZW1v dGUgY29kZSBleGVjdXRpb24gd2hpY2ggaXMgcmVzb2x2ZWQgaW4gcmVsZWFz ZSA2LjAtMi48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFw eCBzb2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPkNWRS0yMDIwLTE5NTY8 L3RkPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFk ZGluZzogMTBweDsiPkFwYWNoZSBLeWxpbiAyLjMuMCwgYW5kIHJlbGVhc2Vz IHVwIHRvIDIuNi41IGFuZCAzLjAuMSBoYXMgc29tZSByZXN0ZnVsIGFwaXMg d2hpY2ggd2lsbCBjb25jYXRlbmF0ZSBvcyBjb21tYW5kIHdpdGggdGhlIHVz ZXIgaW5wdXQgc3RyaW5nLCBhIHVzZXIgaXMgbGlrZWx5IHRvIGJlIGFibGUg dG8gZXhlY3V0ZSBhbnkgb3MgY29tbWFuZCB3aXRob3V0IGFueSBwcm90ZWN0 aW9uIG9yIHZhbGlkYXRpb24uPC90ZD48L3RyPjx0cj48dGQgc3R5bGUgPSAi Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5DVkUt MjAyMC03MTE1PC90ZD48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQg YmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5UaGUgQ2xlYXJQYXNzIFBvbGljeSBN YW5hZ2VyIHdlYiBpbnRlcmZhY2UgaXMgYWZmZWN0ZWQgYnkgYSB2dWxuZXJh YmlsaXR5IHRoYXQgbGVhZHMgdG8gYXV0aGVudGljYXRpb24gYnlwYXNzLiBV cG9uIHN1Y2Nlc3NmdWwgYnlwYXNzIGFuIGF0dGFja2VyIGNvdWxkIHRoZW4g ZXhlY3V0ZSBhbiBleHBsb2l0IHRoYXQgd291bGQgYWxsb3cgdG8gcmVtb3Rl IGNvbW1hbmQgZXhlY3V0aW9uIGluIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGlu ZyBzeXN0ZW0uIFJlc29sdXRpb246IEZpeGVkIGluIDYuNy4xMy1IRiwgNi44 LjUtSEYsIDYuOC42LCA2LjkuMSBhbmQgaGlnaGVyLjwvdGQ+PC90cj48dHI+ PHRkIHN0eWxlID0gImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5n OiAxMHB4OyI+Q1ZFLTIwMTktMTY3NTk8L3RkPjx0ZCBzdHlsZSA9ICJib3Jk ZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPnZCdWxsZXRp biA1LnggdGhyb3VnaCA1LjUuNCBhbGxvd3MgcmVtb3RlIGNvbW1hbmQgZXhl Y3V0aW9uIHZpYSB0aGUgd2lkZ2V0Q29uZmlnW2NvZGVdIHBhcmFtZXRlciBp biBhbiBhamF4L3JlbmRlci93aWRnZXRfcGhwIHJvdXRlc3RyaW5nIHJlcXVl c3QuPC90ZD48L3RyPjx0cj48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29s aWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5DVkUtMjAxOS0zMzk2PC90ZD48 dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6 IDEwcHg7Ij5UaGUgV2lkZ2V0IENvbm5lY3RvciBtYWNybyBpbiBBdGxhc3Np YW4gQ29uZmx1ZW5jZSBTZXJ2ZXIgYmVmb3JlIHZlcnNpb24gNi42LjEyICh0 aGUgZml4ZWQgdmVyc2lvbiBmb3IgNi42LngpLCBmcm9tIHZlcnNpb24gNi43 LjAgYmVmb3JlIDYuMTIuMyAodGhlIGZpeGVkIHZlcnNpb24gZm9yIDYuMTIu eCksIGZyb20gdmVyc2lvbiA2LjEzLjAgYmVmb3JlIDYuMTMuMyAodGhlIGZp eGVkIHZlcnNpb24gZm9yIDYuMTMueCksIGFuZCBmcm9tIHZlcnNpb24gNi4x NC4wIGJlZm9yZSA2LjE0LjIgKHRoZSBmaXhlZCB2ZXJzaW9uIGZvciA2LjE0 LngpLCBhbGxvd3MgcmVtb3RlIGF0dGFja2VycyB0byBhY2hpZXZlIHBhdGgg dHJhdmVyc2FsIGFuZCByZW1vdGUgY29kZSBleGVjdXRpb24gb24gYSBDb25m bHVlbmNlIFNlcnZlciBvciBEYXRhIENlbnRlciBpbnN0YW5jZSB2aWEgc2Vy dmVyLXNpZGUgdGVtcGxhdGUgaW5qZWN0aW9uLjwvdGQ+PC90cj48dHI+PHRk IHN0eWxlID0gImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAx MHB4OyI+Q1ZFLTIwMjAtMDk2ODwvdGQ+PHRkIHN0eWxlID0gImJvcmRlcjog MXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+QSByZW1vdGUgY29k ZSBleGVjdXRpb24gdnVsbmVyYWJpbGl0eSBleGlzdHMgaW4gdGhlIHdheSB0 aGF0IHRoZSBzY3JpcHRpbmcgZW5naW5lIGhhbmRsZXMgb2JqZWN0cyBpbiBt ZW1vcnkgaW4gSW50ZXJuZXQgRXhwbG9yZXIsIGFrYSAnU2NyaXB0aW5nIEVu Z2luZSBNZW1vcnkgQ29ycnVwdGlvbiBWdWxuZXJhYmlsaXR5Jy4gVGhpcyBD VkUgSUQgaXMgdW5pcXVlIGZyb20gQ1ZFLTIwMjAtMDk3MC48L3RkPjwvdHI+ PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFk ZGluZzogMTBweDsiPkNWRS0yMDE5LTExNTEwPC90ZD48dGQgc3R5bGUgPSAi Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5JbiBQ dWxzZSBTZWN1cmUgUHVsc2UgQ29ubmVjdCBTZWN1cmUgKFBDUykgOC4yIGJl Zm9yZSA4LjJSMTIuMSwgOC4zIGJlZm9yZSA4LjNSNy4xLCBhbmQgOS4wIGJl Zm9yZSA5LjBSMy40LCBhbiB1bmF1dGhlbnRpY2F0ZWQgcmVtb3RlIGF0dGFj a2VyIGNhbiBzZW5kIGEgc3BlY2lhbGx5IGNyYWZ0ZWQgVVJJIHRvIHBlcmZv cm0gYW4gYXJiaXRyYXJ5IGZpbGUgcmVhZGluZyB2dWxuZXJhYmlsaXR5IC48 L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBi bGFjazsgcGFkZGluZzogMTBweDsiPkNWRS0yMDIwLTE3NDk2PC90ZD48dGQg c3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEw cHg7Ij52QnVsbGV0aW4gNS41LjQgdGhyb3VnaCA1LjYuMiBhbGxvd3MgcmVt b3RlIGNvbW1hbmQgZXhlY3V0aW9uIHZpYSBjcmFmdGVkIHN1YldpZGdldHMg ZGF0YSBpbiBhbiBhamF4L3JlbmRlci93aWRnZXRfdGFiYmVkY29udGFpbmVy X3RhYl9wYW5lbCByZXF1ZXN0LiBOT1RFOiB0aGlzIGlzc3VlIGV4aXN0cyBi ZWNhdXNlIG9mIGFuIGluY29tcGxldGUgZml4IGZvciBDVkUtMjAxOS0xNjc1 OS48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xp ZCBibGFjazsgcGFkZGluZzogMTBweDsiPkNWRS0yMDIwLTE5Mzc8L3RkPjx0 ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzog MTBweDsiPkt5bGluIGhhcyBzb21lIHJlc3RmdWwgYXBpcyB3aGljaCB3aWxs IGNvbmNhdGVuYXRlIFNRTHMgd2l0aCB0aGUgdXNlciBpbnB1dCBzdHJpbmcs IGEgdXNlciBpcyBsaWtlbHkgdG8gYmUgYWJsZSB0byBydW4gbWFsaWNpb3Vz IGRhdGFiYXNlIHF1ZXJpZXMuPC90ZD48L3RyPjx0cj48dGQgc3R5bGUgPSAi Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5DVkUt MjAxOS0wODU5PC90ZD48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQg YmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5BbiBlbGV2YXRpb24gb2YgcHJpdmls ZWdlIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIGluIFdpbmRvd3Mgd2hlbiB0aGUg V2luMzJrIGNvbXBvbmVudCBmYWlscyB0byBwcm9wZXJseSBoYW5kbGUgb2Jq ZWN0cyBpbiBtZW1vcnksIGFrYSAnV2luMzJrIEVsZXZhdGlvbiBvZiBQcml2 aWxlZ2UgVnVsbmVyYWJpbGl0eScuIFRoaXMgQ1ZFIElEIGlzIHVuaXF1ZSBm cm9tIENWRS0yMDE5LTA2ODUsIENWRS0yMDE5LTA4MDMuPC90ZD48L3RyPjx0 cj48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRp bmc6IDEwcHg7Ij5DVkUtMjAxOS0xMDY5PC90ZD48dGQgc3R5bGUgPSAiYm9y ZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5BbiBlbGV2 YXRpb24gb2YgcHJpdmlsZWdlIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIGluIHRo ZSB3YXkgdGhlIFRhc2sgU2NoZWR1bGVyIFNlcnZpY2UgdmFsaWRhdGVzIGNl cnRhaW4gZmlsZSBvcGVyYXRpb25zLCBha2EgJ1Rhc2sgU2NoZWR1bGVyIEVs ZXZhdGlvbiBvZiBQcml2aWxlZ2UgVnVsbmVyYWJpbGl0eScuPC90ZD48L3Ry Pjx0cj48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBh ZGRpbmc6IDEwcHg7Ij5DVkUtMjAyMC0wNzg3PC90ZD48dGQgc3R5bGUgPSAi Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5BbiBl bGV2YXRpb24gb2YgcHJpdmlsZWdlIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIHdo ZW4gdGhlIFdpbmRvd3MgQmFja2dyb3VuZCBJbnRlbGxpZ2VudCBUcmFuc2Zl ciBTZXJ2aWNlIChCSVRTKSBpbXByb3Blcmx5IGhhbmRsZXMgc3ltYm9saWMg bGlua3MsIGFrYSAnV2luZG93cyBCYWNrZ3JvdW5kIEludGVsbGlnZW50IFRy YW5zZmVyIFNlcnZpY2UgRWxldmF0aW9uIG9mIFByaXZpbGVnZSBWdWxuZXJh YmlsaXR5Jy48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFw eCBzb2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPkNWRS0yMDIwLTU5MDI8 L3RkPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFk ZGluZzogMTBweDsiPkluIEJJRy1JUCB2ZXJzaW9ucyAxNS4wLjAtMTUuMS4w LjMsIDE0LjEuMC0xNC4xLjIuNSwgMTMuMS4wLTEzLjEuMy4zLCAxMi4xLjAt MTIuMS41LjEsIGFuZCAxMS42LjEtMTEuNi41LjEsIHRoZSBUcmFmZmljIE1h bmFnZW1lbnQgVXNlciBJbnRlcmZhY2UgKFRNVUkpLCBhbHNvIHJlZmVycmVk IHRvIGFzIHRoZSBDb25maWd1cmF0aW9uIHV0aWxpdHksIGhhcyBhIFJlbW90 ZSBDb2RlIEV4ZWN1dGlvbiAoUkNFKSB2dWxuZXJhYmlsaXR5IGluIHVuZGlz Y2xvc2VkIHBhZ2VzLjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlID0gImJvcmRl cjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+Q1ZFLTIwMTkt MTk3ODE8L3RkPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFj azsgcGFkZGluZzogMTBweDsiPkFuIGlzc3VlIHdhcyBkaXNjb3ZlcmVkIGlu IENpdHJpeCBBcHBsaWNhdGlvbiBEZWxpdmVyeSBDb250cm9sbGVyIChBREMp IGFuZCBHYXRld2F5IDEwLjUsIDExLjEsIDEyLjAsIDEyLjEsIGFuZCAxMy4w LiBUaGV5IGFsbG93IERpcmVjdG9yeSBUcmF2ZXJzYWwuPC90ZD48L3RyPjx0 cj48dGQgc3R5bGUgPSAiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRp bmc6IDEwcHg7Ij5DVkUtMjAyMC0wOTg2PC90ZD48dGQgc3R5bGUgPSAiYm9y ZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDEwcHg7Ij5BbiBlbGV2 YXRpb24gb2YgcHJpdmlsZWdlIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIHdoZW4g dGhlIFdpbmRvd3Mga2VybmVsIGZhaWxzIHRvIHByb3Blcmx5IGhhbmRsZSBv YmplY3RzIGluIG1lbW9yeSwgYWthICdXaW5kb3dzIEtlcm5lbCBFbGV2YXRp b24gb2YgUHJpdmlsZWdlIFZ1bG5lcmFiaWxpdHknLiBUaGlzIENWRSBJRCBp cyB1bmlxdWUgZnJvbSBDVkUtMjAyMC0xMjM3LCBDVkUtMjAyMC0xMjQ2LCBD VkUtMjAyMC0xMjYyLCBDVkUtMjAyMC0xMjY0LCBDVkUtMjAyMC0xMjY2LCBD VkUtMjAyMC0xMjY5LCBDVkUtMjAyMC0xMjczLCBDVkUtMjAyMC0xMjc0LCBD VkUtMjAyMC0xMjc1LCBDVkUtMjAyMC0xMjc2LCBDVkUtMjAyMC0xMzA3LCBD VkUtMjAyMC0xMzE2LjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlID0gImJvcmRl cjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAxMHB4OyI+Q1ZFLTIwMjAt MTM4MDwvdGQ+PHRkIHN0eWxlID0gImJvcmRlcjogMXB4IHNvbGlkIGJsYWNr OyBwYWRkaW5nOiAxMHB4OyI+QSByZW1vdGUgY29kZSBleGVjdXRpb24gdnVs bmVyYWJpbGl0eSBleGlzdHMgaW4gdGhlIHdheSB0aGF0IHRoZSBzY3JpcHRp bmcgZW5naW5lIGhhbmRsZXMgb2JqZWN0cyBpbiBtZW1vcnkgaW4gSW50ZXJu ZXQgRXhwbG9yZXIsIGFrYSAnU2NyaXB0aW5nIEVuZ2luZSBNZW1vcnkgQ29y cnVwdGlvbiBWdWxuZXJhYmlsaXR5Jy4gVGhpcyBDVkUgSUQgaXMgdW5pcXVl IGZyb20gQ1ZFLTIwMjAtMTU1NSwgQ1ZFLTIwMjAtMTU3MC48L3RkPjwvdHI+ PHRyPjx0ZCBzdHlsZSA9ICJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFk ZGluZzogMTBweDsiPkNWRS0yMDIwLTA2ODg8L3RkPjx0ZCBzdHlsZSA9ICJi b3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMTBweDsiPkEgcmVt b3RlIGNvZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgZXhpc3RzIGluIE1p Y3Jvc29mdCBFeGNoYW5nZSBzb2Z0d2FyZSB3aGVuIHRoZSBzb2Z0d2FyZSBm YWlscyB0byBwcm9wZXJseSBoYW5kbGUgb2JqZWN0cyBpbiBtZW1vcnksIGFr YSAnTWljcm9zb2Z0IEV4Y2hhbmdlIE1lbW9yeSBDb3JydXB0aW9uIFZ1bG5l cmFiaWxpdHknLjwvdGQ+PC90cj48L3RhYmxlPjwvYm9keT4gPC9odG1sPg==